Documentation Index
Fetch the complete documentation index at: https://docs.meteora.ag/llms.txt
Use this file to discover all available pages before exploring further.
Mainnet deployment for Release 0.2.0 is planned for June 16, 2026, at 11:00 AM UTC+8 (Monday).
Release summary
| Component | Version | PR |
|---|---|---|
| Program | 0.2.0 | dynamic-bonding-curve #193 |
| TypeScript SDK | 1.5.8 | dynamic-bonding-curve-sdk #103 |
What We Shipped
- Transfer Hook Support
- Restricted Mint Authority
What To Do
| Integrators | What Changed | What To Do |
|---|---|---|
| Swap Routers |
|
|
| Trading Terminals |
|
|
| Partners |
|
|
Program: dynamic-bonding-curve 0.2.0
Program ID (mainnet and devnet): dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqNProgram PR #193Added
- Added an endpoint
claim_protocol_fee2that requiresprotocol_fee_authorityas the signer instead of an operator. Only one of the pool tokens can be claimed per instruction call. - Added endpoint
create_config_with_transfer_hookthat creates aConfigWithTransferHookaccount storing the transfer hook program alongside the pool config. Only valid fortoken_type: Token2022. The transfer hook program must be executable and cannot be the program itself. - Added endpoint
initialize_virtual_pool_with_token2022_transfer_hookfor creating virtual pools with token-2022 base mints that have transfer hooks. The transfer hook program is sourced from theConfigWithTransferHookaccount and the transfer hook authority is set to thepool_authority. The transfer hook program and authority is revoked after the last swap when the curve completes. - Added endpoints with transfer hook support:
swap2_with_transfer_hook,claim_trading_fee2andclaim_creator_trading_fee2. These accept atransfer_hook_accounts_info: TransferHookAccountsInfoparameter for passing transfer hook extra accounts via remaining accounts. The original endpoints are unchanged for backwards compatibility with non-transfer-hook pools. - Added
WithTransferHookevent variants for events consumed by external indexers to differentiate between transfer-hook and non-transfer-hook pool operations:EvtInitializePoolWithTransferHook,EvtSwap2WithTransferHook,EvtCurveCompleteWithTransferHook,EvtCreateConfigV2WithTransferHook. - Re-enabled
TokenAuthorityOption::CreatorUpdateAndMintAuthorityandTokenAuthorityOption::PartnerUpdateAndMintAuthorityfor transfer-hook configs only. The mint authority is assigned to the creator or partner at pool initialization.
Changed
- Update anchor to 1.0.2
Deprecated
- Deprecated
claim_protocol_feeandzap_protocol_feeendpoints in favour of usingclaim_protocol_fee2through theprotocol_feewrapper program. - Deprecated
TokenAuthorityOption::CreatorUpdateAndMintAuthorityandTokenAuthorityOption::PartnerUpdateAndMintAuthorityfor non-transfer-hook configs.
Removed
- Removed unused events:
EvtPartnerWithdrawMigrationFeeandEvtClaimProtocolLiquidityMigrationFee
Breaking Changes
create_configendpoint now rejects the configs with the followingtoken_update_authority:CreatorUpdateAndMintAuthorityandPartnerUpdateAndMintAuthorityinitialize_virtual_pool_with_spl_tokenandinitialize_virtual_pool_with_token2022endpoints now reject configs whosetoken_update_authorityisCreatorUpdateAndMintAuthorityorPartnerUpdateAndMintAuthority. Existing configs on-chain that used these variants can no longer initialize new pools.- For non-transfer-hook pools,
base_mintmint authority can no longer be assigned to the creator or partner. It is always revoked at pool initialization. Transfer-hook pools may still assign mint authority to creator/partner.
TypeScript SDK: @meteora-ag/dynamic-bonding-curve-sdk 1.5.8
SDK PR #103Added
- Added Token-2022 transfer-hook support for DBC pool configs and pools:
client.partner.createConfigWithTransferHookclient.partner.createConfigAndPoolWithTransferHookclient.partner.createConfigAndPoolWithFirstBuyWithTransferHookclient.creator.createPoolWithTransferHookclient.creator.createPoolWithFirstBuyWithTransferHookclient.creator.createPoolWithPartnerAndCreatorFirstBuyWithTransferHook
- Added transfer-hook swap and fee claim endpoints:
client.pool.swap2WithTransferHookclient.partner.claimPartnerTradingFee2client.creator.claimCreatorTradingFee2
- Added transfer-hook account helper types:
TransferHookAccountsInfoTransferHookRemainingAccountsFirstBuyWithTransferHookParamsPartnerFirstBuyWithTransferHookParamsCreatorFirstBuyWithTransferHookParamsAccountsType
- Added account types for transfer-hook program accounts:
ConfigWithTransferHookTransferHookPool
- Added
CreateVirtualPoolMetadataParametersas an exported IDL-derived type. - Added
client.partner.createConfigAndPoolandclient.partner.createConfigAndPoolWithFirstBuyso partner-owned config-and-pool flows live under the partner service. - Added
client.creator.createPool,client.creator.createPoolWithFirstBuy, andclient.creator.createPoolWithPartnerAndCreatorFirstBuyso creator-owned pool initialization flows live under the creator service. - Added
client.partner.claimPartnerTradingFeeToReceiverandclient.creator.claimCreatorTradingFeeToReceiverfor the non-transfer-hook fee claim flows that do not requiretempWSolAcc. - Added test coverage for transfer-hook config creation, pool creation, swaps, first buys, and fee claims using the new
transfer_hook_countertest program.
Changed
- Updated the DBC IDL and generated types to include transfer-hook instructions and account layouts.
- Updated DAMM V1, DAMM V2, and Dynamic Vault IDLs and generated types.
- Updated
DynamicBondingCurveClientso all services share oneStateServiceinstance. - Updated
StateService.getPoolConfigto fetch both regularpoolConfigaccounts and transfer-hook config accounts. - Updated
StateService.getPoolto fetch both regularvirtualPoolaccounts and transfer-hook pool accounts. - Updated swap quote math and state helpers to read virtual pool fields from the new nested
poolStatelayout. - Updated
buildCurve*helpers to accepttoken.tokenAuthorityOptionand map it to the on-chaintokenUpdateAuthorityfield. - Renamed
createVaultProgramtocreateDynamicVaultProgramto match the Dynamic Vault IDL naming. - Renamed internal/public DAMM V1 and Dynamic Vault generated IDL program types from
DammV1andDynamicVaulttoAmmandVault. - Updated validator and CI setup to use the
mercurial_vault.sofixture and include thetransfer_hook_counter.sofixture. - Reworked
docs.mdwith the current SDK service layout and transfer-hook function documentation. - Updated
getMigratedPoolMarketCapFeeSchedulerParamsandMigratedPoolMarketCapFeeSchedulerParamsto usepriceMultipledirectly.
Breaking Changes
- Pool creation methods moved service namespaces. Existing callers must update:
client.pool.createPool(...)->client.creator.createPool(...)client.pool.createPoolWithFirstBuy(...)->client.creator.createPoolWithFirstBuy(...)client.pool.createPoolWithPartnerAndCreatorFirstBuy(...)->client.creator.createPoolWithPartnerAndCreatorFirstBuy(...)client.pool.createConfigAndPool(...)->client.partner.createConfigAndPool(...)client.pool.createConfigAndPoolWithFirstBuy(...)->client.partner.createConfigAndPoolWithFirstBuy(...)
- Pool address params were renamed from
virtualPooltopoolacross SDK request types. Update call sites for:CreateLockerParamsWithdrawLeftoverParamsMigrateToDammV1ParamsMigrateToDammV2ParamsDammLpTokenParamsPartnerWithdrawSurplusParamsCreatorWithdrawSurplusParamsTransferPoolCreatorParamsWithdrawMigrationFeeParamsClaimPartnerPoolCreationFeeParams
- Virtual pool account data now uses the nested
poolStatelayout. Code that directly readsVirtualPoolfields must migrate from flat fields likepool.config,pool.baseMint,pool.quoteReserve,pool.sqrtPrice, andpool.metricstopool.poolState.config,pool.poolState.baseMint,pool.poolState.quoteReserve,pool.poolState.sqrtPrice, andpool.poolState.metrics. **TokenType.SPLwas renamed toTokenType.SPLToken.** The enum value remains0, but TypeScript callers must update the enum member name.**TokenUpdateAuthorityOptionwas renamed toTokenAuthorityOption.** Update imports and references.**TokenConfig.tokenUpdateAuthoritywas renamed totokenAuthorityOptionfor allbuildCurve* helpers.** The helper still maps this value to the on-chaintokenUpdateAuthorityconfig field.**PreCreatePoolParamswas renamed toCreatePoolBaseParams.** Update imports and any explicit type annotations.- The old no-
tempWSolAcctrading fee claim types were renamed.ClaimTradingFeeParams->ClaimPartnerTradingFeeParamsClaimTradingFee2Params->ClaimPartnerTradingFeeToReceiverParamsClaimCreatorTradingFee2Params->ClaimCreatorTradingFeeToReceiverParams
- The old
claimPartnerTradingFee2andclaimCreatorTradingFee2non-transfer-hook behavior moved toclaimPartnerTradingFeeToReceiverandclaimCreatorTradingFeeToReceiver. In1.5.8,claimPartnerTradingFee2andclaimCreatorTradingFee2build transfer-hook fee claim instructions and should be used only for transfer-hook pools. **createVaultProgramwas renamed tocreateDynamicVaultProgram.** Update helper imports.**StateService.getDammV1LockEscrowwas removed.** Consumers that need lock escrow data must fetch it through the relevant generated program client.**LockEscrownow comes from IDL types instead of IDL accounts.** Update assumptions if you were treating it as an Anchor account object.- Raw IDL instruction indexes changed. Code using
DynamicBondingCurve['instructions'][index]directly must be updated because transfer-hook instructions shifted the generated instruction order. - Market cap fee scheduler config now uses
priceMultiple. ReplacemarketCapFeeSchedulerParams.startingMarketCapandmarketCapFeeSchedulerParams.endingMarketCapwithmarketCapFeeSchedulerParams.priceMultiple.
Fixed
- Fixed state and quote helpers to work with the new nested virtual pool account layout.
- Fixed transfer-hook pool state reads so
getPoolConfig,getPool, fee metrics, fee breakdowns, and curve progress helpers work with both regular and transfer-hook pools. - Fixed SOL quote handling in transfer-hook fee claim flows by preserving the wrapped SOL post-instructions where needed.
Mainnet deployment for Release 0.1.10 is planned for March 16, 2026, at 11:00 AM UTC+8 (Monday).
Release summary
| Component | Version | PR |
|---|---|---|
| Program | 0.1.10 | dynamic-bonding-curve #174 |
| TypeScript SDK | 1.5.7 | dynamic-bonding-curve-sdk #101 |
What We Shipped
- Migrate to DAMM v2 Inner Positions
- Migrate to DAMM v2 Compounding Fee Pool
What To Do
| Integrators | What Changed | What To Do |
|---|---|---|
| Trading Terminals |
|
|
| Partners |
|
|
Program: dynamic-bonding-curve 0.1.10
Program ID (mainnet and devnet): dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqNProgram PR #174Added
- 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 - Add support for damm-v2 Compounding
collect_fee_mode. This can be enabled through thecreate_configendpoint by passingmigrated_pool_fee.collect_fee_mode: 2andcompounding_fee_bps: 1-10_000field inConfigParameters
Changed
- When migrate to damm-v2, instead of using external accounts for vesting, now we will use position itself, that would save 2 accounts for damm-v2 migration instruction.
Removed
- Removed the
create_claim_protocol_fee_operatorendpoint in favor ofcreate_operator_account, which can create an operator account configured with permissions, including claiming protocol fees.
TypeScript SDK: @meteora-ag/dynamic-bonding-curve-sdk 1.5.6
SDK PR #98Added
- Added
MigratedCollectFeeModeenum withCompounding(2) support for migrated DAMM v2 pool configuration. - Added
compoundingFeeBpssupport inMigratedPoolFeeConfigand propagated it through allbuildCurve*helpers.
Changed
- Updated migrated pool fee validation to require
compoundingFeeBps > 0only whencollectFeeMode = MigratedCollectFeeMode.Compounding, and0otherwise. - Updated migration flow for DAMM v2 to remove position vesting accounts from
migrateDammV2remaining accounts. - Removed
deriveDammV2PositionVestingAccountPDA helper.

