GLAM ProtocolProduction
jupiter_swap
Executes a Jupiter swap for vault-held assets under GLAM policies and delegate permissions.
Handler narrative
- Load the GLAM state or program account required by the instruction and verify the signer.
- Validate swap policy, requested route, slippage, and allowed assets, then execute the Jupiter route instructions under GLAM authorization.
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.
Accounts
| Account | Role | Description |
|---|---|---|
| glam_state | writable | 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. |
| input_stake_pool | optional | Instruction-specific account supplied by the caller or SDK. |
| output_stake_pool | optional | Instruction-specific account supplied by the caller or SDK. |
Arguments
| Argument | Type | Notes |
|---|---|---|
| data | bytes | Serialized Jupiter route instruction data forwarded to Jupiter after GLAM swap policy and permission checks. |
Policy & permissions
- Enable native
JupiterSwapaccess on GLAM Protocol. Protocol bitflag:0b00000100. - Delegate permission depends on route intent:
SwapAny,SwapLST, orSwapAllowlisted.
TypeScript SDK usage
import { GlamClient, WSOL } from "@glamsystems/glam-sdk";
const glamClient = new GlamClient({ jupiterApiKey: "YOUR_API_KEY" });
await glamClient.jupiterSwap.swap({
quoteParams: {
inputMint: WSOL.toBase58(),
outputMint: usdcMint.toBase58(),
amount: 1_000_000_000,
slippageBps: 50,
},
});Cross-instruction constraints
- No additional cross-instruction constraint is documented beyond account initialization, authority checks, and policy validation.