Strategy Vaults can also be created through the Strategy Vault manager frontend, which simplifies setup by offering a guided interface for configuring vault metadata, policies, roles, and other core vault parameters.
Exponent SDK Installation
Strategy Vault Setup
Vault Creation
Strategy Vaults are created by the vault manager usingExponentVault.ixInitializeVault. This sets up the vault PDA, mints initial LP tokens, and creates the Squads smart account for policy-gated execution. See Initialize Vault for the full parameter reference.
Loading a Vault
Configuring Policies
Before the vault can execute any strategy operations, the manager must add policies that authorize specific interactions. Each policy defines which programs, instructions, and accounts the vault is permitted to interact with. Policies are added usingvault.ixWrapperAddPolicy. This instruction enforces that the vault has zero AUM — policies must be configured before any deposits are accepted.
Available Policy Builders
The SDK provides policy builders for each supported integration:| Builder | Integration | Description |
|---|---|---|
createCorePolicy | Exponent Core | Strip and merge base tokens into PT + YT |
createOrderbookPolicy | Exponent Orderbook | Post offers, market orders, remove offers, withdraw funds |
createClmmPolicy | Exponent CLMM | Provide liquidity, trade PT/YT, claim farm emissions |
createKaminoPolicy | Kamino Lending | Deposit, withdraw, borrow, and repay on Kamino reserves |
createTitanSwapPolicy | Titan | Swap tokens through the Titan DEX aggregator |
Executing Strategy Operations
Strategy operations use a two-step pattern:- Build instruction descriptors using a protocol-specific action builder (
kaminoAction,orderbookAction,coreAction,clmmAction,titanAction). Each builder returns a lightweight descriptor — it does not execute anything on its own. - Wrap in a sync transaction by passing the descriptors to
createVaultSyncTransaction, which resolves all required accounts, builds the Squads sync transaction, and returns the final instructions to send.
Action Builders
Each integration has its own action builder namespace:| Action Builder | Integration | Example |
|---|---|---|
coreAction | Exponent Core | coreAction.strip({ vault, amountBase }) |
orderbookAction | Exponent Orderbook | orderbookAction.postOffer({ orderbook, direction, priceApy, amount, offerIdx }) |
clmmAction | Exponent CLMM | clmmAction.buyPt({ market, amountSy, outConstraint }) |
kaminoAction | Kamino Lending | kaminoAction.deposit(KaminoMarket.MAIN, "USDC", new BN(100_000_000)) |
titanAction | Titan | titanAction.swap({ instruction }) |
For Titan swaps, the instruction descriptor wraps a pre-built
TransactionInstruction obtained from getTitanQuote. See Titan Instructions for the full flow.Policy Builders
Start here to define what your vault is allowed to do.
Core Instructions
Strip and merge tokens through Exponent Core.
Kamino Lend Instructions
Deposit, withdraw, borrow, and repay on Kamino Lend.
Order Book Instructions
Trade PT and YT on Exponent Orderbook, place limit orders.
CLMM Instructions
Provide liquidity and trade on the Exponent CLMM.
Titan Instructions
Swap tokens through the Titan DEX aggregator.
Managing Withdrawals
When depositors queue withdrawals, the vault manager fills them from available liquidity:- Queue — A depositor calls
ixQueueWithdrawalto lock LP tokens and create a withdrawal request. - Fill — The vault manager calls
fillWithdrawalto associate underlying tokens with the pending request. LP tokens are burned at this step. - Execute — The depositor calls
ixExecuteWithdrawalto receive their underlying tokens.