Skip to main content

Common Accounts

Many vault instructions share common account patterns. This page documents the reusable account groups referenced by individual instruction pages.

Vault Core Accounts

Used by most vault instructions that read or modify vault state.
NameSignerWritableDescription
vaultNoYesThe ExponentStrategyVault PDA. Seeds: ["vault", seedId]
exponentPricesNoVariesThe global ExponentPrices PDA for AUM calculations. Seeds: ["exponent_prices"]

Squads Policy Accounts

Used by policy management instructions (add, remove, update).
NameSignerWritableDescription
squadsSettingsNoYesSquads Settings account for the vault
squadsSettingsTransactionNoYesSquads transaction PDA. Seeds: ["transaction", settings, transactionIndex]
squadsProposalNoYesSquads proposal PDA. Seeds: ["proposal", settings, transactionIndex]
squadsPolicyNoYesSquads policy PDA. Seeds: ["policy", settings, policySeed]
squadsProgramNoNoSquads v4 program ID

LP Token Accounts

Used by deposit, withdrawal, and voting instructions that move LP tokens.
NameSignerWritableDescription
mintLpNoVariesThe vault’s LP token SPL mint
tokenLpEscrowNoYesVault’s LP token escrow account. Seeds: ["token_lp_escrow", vault]
tokenProgramNoNoSPL Token program

Withdrawal Accounts

Used by queue, fill, execute, and cancel withdrawal instructions.
NameSignerWritableDescription
withdrawalAccountVariesYesThe depositor’s withdrawal request account

PDA Derivation

All vault PDAs are derived from the program ID HycecAnELpjL1pMp435nEKWkcr7aNZ2QGQGXpzK1VEdV:
import { ExponentVaultsPDA } from "@exponent-labs/exponent-vaults-pda";

const pda = new ExponentVaultsPDA(programId);

// Vault PDA
const [vault] = pda.vault({ seedId });

// LP mint PDA
const [mintLp] = pda.mintLp({ vault });

// LP escrow PDA
const [tokenLpEscrow] = pda.tokenLpEscrow({ vault });

// ExponentPrices PDA
const [exponentPrices] = pda.exponentPrices();