GLAM MintProduction
fulfill
Fulfills pending subscription or redemption requests after required pricing and settlement conditions.
Handler narrative
- Load the GLAM state or program account required by the instruction and verify the signer.
- Read the request queue, enforce timing and policy checks, then move the request through redeem, fulfill, claim, or cancel state.
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.
- Mint actions must satisfy the linked GLAM state, Token-2022 mint configuration, mint policy, and any request queue or escrow state involved in the flow.
- The vault must have fresh pricing records for the operation; fee or fulfillment math depends on NAV values written by the pricing flow.
- The request queue or escrow account must contain the expected request state for the signer, request type, timing window, and amount being processed.
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_mint | writable | Token-2022 mint associated with the GLAM mint or tokenized vault. |
| glam_escrow | read-only | Program-derived account used by this instruction; clients should prefer SDK helpers when available. |
| request_queue | writable | Program-derived queue associated with the mint for queued subscriptions and redemptions. |
| signer | signer, writable | Calling authority. It must be the owner or a delegate with the explicit permission required by this instruction. |
| escrow_mint_ata | writable | Token mint account used by the instruction. |
| asset | read-only | Instruction-specific account supplied by the caller or SDK. |
| vault_asset_ata | writable | Token account read or written by the instruction. |
| escrow_asset_ata | writable | Token account read or written by the instruction. |
| system_program | read-only | Standard Solana program account required by the instruction. |
| deposit_token_program | read-only | Instruction-specific account supplied by the caller or SDK. |
| token_2022_program | read-only | Standard Solana program account required by the instruction. |
| associated_token_program | read-only | Standard Solana program account required by the instruction. |
| glam_protocol_program | read-only | GLAM Protocol program account used for authorization or CPI. |
Arguments
| Argument | Type | Notes |
|---|---|---|
| limit | option<u32> | Optional maximum number of queued requests to process; omit it to let the transaction process as many as account and compute limits allow. |
Policy & permissions
- No external integration enablement is required beyond the program-level functionality involved in this instruction.
- Manager or protocol authority is required according to the mint and fee configuration.
TypeScript SDK usage
const preInstructions = await glamClient.price.priceVaultIxs();
await glamClient.invest.fulfill(null, {
preInstructions,
lookupTables: glamClient.price.lookupTables,
simulate: true,
});Cross-instruction constraints
- Requires fresh pricing for the vault. The pricing operation itself must be atomic in a single transaction.