system_transfer
Transfers SOL or wraps SOL from the vault under GLAM authorization and destination policy.
Handler narrative
- Load the GLAM state or program account required by the instruction and verify the signer.
- Apply the requested state, policy, pricing, or system action after enforcing owner/delegate checks.
- 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
| Account | Role | Description |
|---|---|---|
| glam_state | read-only | State account owned by the GLAM Protocol program; it records vault configuration, policies, and pricing records. |
| glam_vault | writable | Vault account controlled by the GLAM Protocol program; conceptually derived from the state account and used as the vault authority. |
| glam_signer | signer, writable | Calling authority. It must be the owner or a delegate with the explicit permission required by this instruction. |
| cpi_program | read-only | External program invoked by this instruction. |
| to | writable | Token account read or written by the instruction. |
Arguments
| Argument | Type | Notes |
|---|---|---|
| lamports | u64 | Amount 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 SystemWSOLpermission 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.