Tracked vault LP supply
Release summary
What We Shipped
- Version 1 vaults price LP shares with
vault.total_lp_supply - SDK 2.0.0 quotes pool LP with
pool.lpMintSupply(program 0.5.6) and vault LP withvault.totalLpSupply(program 0.5.7)
Program: meteora-dynamic-amm 0.5.7
Program ID (mainnet and devnet): Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaBFixed
- Version 1 vaults price LP shares with
vault.total_lp_supply. The pool readsvault.total_lp_supplyfor version 1 vaults andlp_mint.supplyfor legacy (version 0) vaults.
Changed
libs/mercurial-vaultuses the new vault layout: the last strategy slot (MAX_STRATEGY30 → 29) now holdsversion,total_lp_supplyand_padding0. Account size and the offsets of later fields are unchanged.swap,add_balance_liquidity,add_imbalance_liquidity,remove_liquidity_single_side,lock,claim_fee,bootstrap_liquidity,get_pool_infoand permissionless pool initialization read the vault LP supply withVaultUtils::get_vault_lp_supplyinstead of*_vault_lp_mint.supply(program 0.5.6).
Added
- New error
InvalidVaultLpSupplyAccounting, returned when a version 1 vault hastotal_lp_supplylower than its LP mint supply.
TypeScript SDK: @meteora-ag/dynamic-amm-sdk 2.0.0
SDK PR #229This SDK release includes program 0.5.6 and program 0.5.7 changes.Added
getVaultLpSupplyto get the vault LP supply used for share pricing
Changed
- Sync IDL with DAMM v1 program 0.5.7
- Bump
@coral-xyz/anchorand@coral-xyz/borshto 0.31.1 - Quotes price pool LP with
pool.lpMintSupply(program 0.5.6) and vault LP withvault.totalLpSupplyfor version 1 vaults (program 0.5.7) getLpSupplyandpoolState.lpSupplyreturnpool.lpMintSupply(program 0.5.6)
Removed
moveLockedLP, the program has nomove_locked_lpendpoint
Fixed
- Stable pool single side
withdrawpasses the requested out amount asminimum_out_amountinstead of 0 - Swap quotes charge a minimum trading and protocol fee of 1 token, as the program does
- Balanced deposit quotes round token amounts up, as the program does
Breaking Changes
AmmIdlis the Anchor 0.30+ IDL JSON andAmmis its type. Load it with@coral-xyz/anchor0.30 or later:new Program({ ...AmmIdl, address }, provider)calculateSwapQuoteandcalculatePoolInfocallers must passvaultALpSupplyandvaultBLpSupplyfromgetVaultLpSupplycalculatePoolInfo,StableSwap.computeImbalanceDeposit, andStableSwap.computeWithdrawOnetake poollpSupplyfrompool.lpMintSupply(getLpSupply/poolState.lpSupply)
Rust quote: dynamic-amm-quote 0.0.6
SDK PR #229Changed
compute_quoteprices vault LP withVault::get_lp_supply(program 0.5.7)Vaultstate uses the 0.5.7 layout withversionandtotal_lp_supply,Poolstate addslp_mint_supplyrust-clientdeposit and pool info use the same LP supplies as the programPoolErrorincludes the program errors up toInvalidVaultLpSupplyAccounting(6065)
Tracked pool LP supply
Release summary
What We Shipped
- Pools price LP shares with
pool.lp_mint_supply - Withdrawals reject LP accounts that the user does not own
What To Do
| Integrators | What Changed | What To Do |
|---|---|---|
| Trading Terminals |
|
|
| Swap Routers |
|
|
| Partners |
|
|
Program: meteora-dynamic-amm 0.5.6
Program ID (mainnet and devnet): Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaBFixed
- LP shares are priced with
pool.lp_mint_supply, which changes only when the program mints or burns LP. remove_balance_liquidityandremove_liquidity_single_siderequireuser_pool_lp.owner == userbefore burning LP.
Changed
add_balance_liquidity,add_imbalance_liquidity,remove_balance_liquidity,remove_liquidity_single_side,lock,claim_feeandget_pool_infousepool.lp_mint_supplyinstead oflp_mint.supply.- Pool initialization,
bootstrap_liquidity, add liquidity, remove liquidity andclaim_feeupdatepool.lp_mint_supplyby the amount of LP minted or burned. bootstrap_liquidityadditionally requirespool.lp_mint_supply == 0, so a pool whose LP was burned to zero outside the program can not be re-bootstrapped.
Added
- New error
LpMintSupplyAccountingNotPatched, returned whenpool.lp_mint_supplyis lower thanlp_mint.supply. - New error
InvalidLpOwner, returned whenuser_pool_lpis not owned byuserinremove_balance_liquidityorremove_liquidity_single_side.
Breaking Changes
- Every existing pool must have
pool.lp_mint_supplyset before this version is deployed. Liquidity operations on a pool wherepool.lp_mint_supply < lp_mint.supplyfail withLpMintSupplyAccountingNotPatched. remove_balance_liquidityandremove_liquidity_single_sideno longer accept an LP account thatuseronly controls as a delegate; the LP account owner must sign asuser.- Off-chain integrations that compute LP value or quote add/remove liquidity must read
pool.lp_mint_supplyinstead of the LP mint supply.
Zap Protocol Fee Support
Mainnet deployment for Release 0.5.3 is planned for February 10, 2026, at 11:00 AM UTC+8 (Tuesday).
Release summary
What We Shipped
- Zap Protocol Fee Support
Program: meteora-dynamic-amm 0.5.3
Program ID (mainnet and devnet): Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaBChanged
- Upgrade to anchor 0.31.1
- Add new endpoint
create_operator_accountandclose_operator_accountthat allows admin to manage different operator accounts - Add new account
Operator, that would storeswhitelisted_addressas well as their operational permissions - Add new endpoint
zap_protocol_feethat allow operator to claim protocol fees and zap out to SOL/USDC or other token in pool and send to treasury address
Breaking Changes
withdraw_protocol_feescan only be performed by an operator. The endpoint now requiresmax_amount_aandmax_amount_bas arguments. The accounts passed in have also been changed.
Fixed
- Fixed initialization of stable swap error with
AmountNotPegdue to the precision loss of the underlying vault exchange rate.

