close_user_bundle_account
Close an empty Neutral user bundle account and remove it from GLAM external positions.
Handler narrative
- Load the GLAM state or program account required by the instruction and verify the signer.
- Verify that the integration is enabled on the vault and that the caller has the required delegate permission or owner authority.
- Validate the instruction-specific policy, then invoke the external protocol with the vault authority where required.
- Close an empty Neutral user bundle account and remove it from GLAM external positions. - Permission requirement:
CloseUserBundleAccount. - Policy:bundle_accountmust be present inNeutralPolicy::bundles_allowlist.
Required conditions
- The submitted accounts must match the declared account list, signer requirements, writable requirements, fixed program addresses, and account relationships shown below.
- The GLAM state account is the source of truth for owner, enabled integrations, delegate permissions, policies, assets, borrowable assets, timelock settings, mint linkage, and pricing records.
- The vault account must be the PDA controlled by the core protocol program and derived conceptually from the state account; instructions use it as the vault authority for SOL, token accounts, and external positions.
- The vault integration ACL must enable this integration before the instruction is accepted; that enablement is defined on the GLAM state account.
- If the signer is not the owner, the delegate ACL on the GLAM state must contain the exact protocol permission required by this instruction; registering a delegate alone is insufficient.
- Instruction-specific destination accounts must satisfy the external protocol's own account model; GLAM validates the accounts it needs for authorization and policy enforcement, then passes the remaining protocol accounts through CPI.
- The target account must be writable and controlled by the program or authority expected by the instruction.
- The rent refund destination or signer account must be writable because closing returns lamports to that account.
- Any protocol-specific empty-state requirement, such as zero balance, zero supply, no pending request, or no active position, must be satisfied before closure.
- The instruction metadata names
CloseUserBundleAccountas the delegate permission for this instruction. - Additional policy conditions documented for this instruction: Policy:
bundle_accountmust be present inNeutralPolicy::bundles_allowlist.
Accounts
Uses the standard Big Seven account pattern, plus the instruction-specific accounts below.
| Account | Role | Description |
|---|---|---|
| user_bundle_account | writable | Instruction-specific account supplied by the caller or SDK. |
| bundle_account | read-only | Instruction-specific account supplied by the caller or SDK. |
Arguments
No arguments.
Policy & permissions
- Enable the Neutral integration program on the vault integration ACL before Neutral bundle actions.
- Delegate permission:
CloseUserBundleAccount.
Cross-instruction constraints
- The Neutral bundle depositor account must be initialized and the bundle must remain allowlisted.