GLAMIDL Reference

system_transfer

Transfers SOL or wraps SOL from the vault under GLAM authorization and destination policy.

Handler narrative

  1. Load the GLAM state or program account required by the instruction and verify the signer.
  2. Apply the requested state, policy, pricing, or system action after enforcing owner/delegate checks.
  3. Transfers SOL from the vault to another account. Token program ID is required as a remaining account when wrapping SOL (i.e., transfer to wSOL token account).

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.
  • Owner-level actions must be signed by the state owner unless the instruction is explicitly an integration callback, mint-authority callback, delegate action, or emergency access update.
  • Asset, amount, and destination restrictions must satisfy the configured transfer or destination policy when that policy is present.

Accounts

AccountRoleDescription
glam_stateread-onlyState account owned by the GLAM Protocol program; it records vault configuration, policies, and pricing records.
glam_vaultwritableVault account controlled by the GLAM Protocol program; conceptually derived from the state account and used as the vault authority.
glam_signersigner, writableCalling authority. It must be the owner or a delegate with the explicit permission required by this instruction.
cpi_programread-onlyExternal program invoked by this instruction.
towritableToken account read or written by the instruction.

Arguments

ArgumentTypeNotes
lamportsu64Amount of SOL, in lamports, moved from the vault authority path.

Policy & permissions

  • Enable native System Program access on GLAM Protocol when delegated system movement is required. Protocol bitflag: 0b00000001.
  • Delegate permission: System Transfer; wrapping SOL also uses System WSOL permission context.
  • Destination and asset restrictions must satisfy the configured transfer or destination policy when one is set.

TypeScript SDK usage

await glamClient.vault.systemTransfer(
  1_000_000_000,
  recipient,
);

Cross-instruction constraints

  • No additional cross-instruction constraint is documented beyond account initialization, authority checks, and policy validation.