Skip to main content

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.

Track DBC releases here.
dynamic-bonding-curve 0.2.0
Transfer Hook Support and Restricted Mint Authority
Mainnet deployment for Release 0.2.0 is planned for June 16, 2026, at 11:00 AM UTC+8 (Monday).

Release summary

ComponentVersionPR
Program0.2.0dynamic-bonding-curve #193
TypeScript SDK1.5.8dynamic-bonding-curve-sdk #103

What We Shipped

  • Transfer Hook Support
  • Restricted Mint Authority

What To Do

IntegratorsWhat ChangedWhat To Do
Swap Routers
  • Token-2022 transfer-hook pool support
  • New transfer-hook swap endpoint: swap2_with_transfer_hook
  • Use swap2_with_transfer_hook for transfer-hook pools and pass the required transfer_hook_accounts_info: TransferHookAccountsInfo remaining-account metadata.
  • Keep using the original swap endpoints for non-transfer-hook pools.
  • Update any direct pool account readers to handle the transfer-hook pool account and nested pool-state layout.
Trading Terminals
  • New transfer-hook event variants
  • Restricted mint-authority behavior for non-transfer-hook pools
  • Update event parsing for EvtInitializePoolWithTransferHook, EvtSwap2WithTransferHook, EvtCurveCompleteWithTransferHook, and EvtCreateConfigV2WithTransferHook.
  • Display transfer-hook pools separately from non-transfer-hook pools where users need to understand additional token-transfer requirements.
  • Do not assume creator or partner mint authority is available for non-transfer-hook pools. For those pools, base_mint mint authority is always revoked at initialization.
Partners
  • New transfer-hook config and pool-creation flow
  • Protocol-fee claim endpoint update
  • Restricted mint-authority config options
  • Bump your SDK version to @meteora-ag/dynamic-bonding-curve-sdk@1.5.8.
  • For Token-2022 transfer-hook launches, create configs with create_config_with_transfer_hook and initialize pools with initialize_virtual_pool_with_token2022_transfer_hook.
  • Only use CreatorUpdateAndMintAuthority or PartnerUpdateAndMintAuthority with transfer-hook configs. create_config, initialize_virtual_pool_with_spl_token, and initialize_virtual_pool_with_token2022 now reject those options.

Program: dynamic-bonding-curve 0.2.0

Program ID (mainnet and devnet): dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqNProgram PR #193

Added

  • Added an endpoint claim_protocol_fee2 that requires protocol_fee_authority as the signer instead of an operator. Only one of the pool tokens can be claimed per instruction call.
  • Added endpoint create_config_with_transfer_hook that creates a ConfigWithTransferHook account storing the transfer hook program alongside the pool config. Only valid for token_type: Token2022. The transfer hook program must be executable and cannot be the program itself.
  • Added endpoint initialize_virtual_pool_with_token2022_transfer_hook for creating virtual pools with token-2022 base mints that have transfer hooks. The transfer hook program is sourced from the ConfigWithTransferHook account and the transfer hook authority is set to the pool_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_fee2 and claim_creator_trading_fee2. These accept a transfer_hook_accounts_info: TransferHookAccountsInfo parameter for passing transfer hook extra accounts via remaining accounts. The original endpoints are unchanged for backwards compatibility with non-transfer-hook pools.
  • Added WithTransferHook event 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::CreatorUpdateAndMintAuthority and TokenAuthorityOption::PartnerUpdateAndMintAuthority for 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_fee and zap_protocol_fee endpoints in favour of using claim_protocol_fee2 through the protocol_fee wrapper program.
  • Deprecated TokenAuthorityOption::CreatorUpdateAndMintAuthority and TokenAuthorityOption::PartnerUpdateAndMintAuthority for non-transfer-hook configs.

Removed

  • Removed unused events: EvtPartnerWithdrawMigrationFee and EvtClaimProtocolLiquidityMigrationFee

Breaking Changes

  • create_config endpoint now rejects the configs with the following token_update_authority: CreatorUpdateAndMintAuthority and PartnerUpdateAndMintAuthority
  • initialize_virtual_pool_with_spl_token and initialize_virtual_pool_with_token2022 endpoints now reject configs whose token_update_authority is CreatorUpdateAndMintAuthority or PartnerUpdateAndMintAuthority. Existing configs on-chain that used these variants can no longer initialize new pools.
  • For non-transfer-hook pools, base_mint mint 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 #103

Added

  • Added Token-2022 transfer-hook support for DBC pool configs and pools:
    • client.partner.createConfigWithTransferHook
    • client.partner.createConfigAndPoolWithTransferHook
    • client.partner.createConfigAndPoolWithFirstBuyWithTransferHook
    • client.creator.createPoolWithTransferHook
    • client.creator.createPoolWithFirstBuyWithTransferHook
    • client.creator.createPoolWithPartnerAndCreatorFirstBuyWithTransferHook
  • Added transfer-hook swap and fee claim endpoints:
    • client.pool.swap2WithTransferHook
    • client.partner.claimPartnerTradingFee2
    • client.creator.claimCreatorTradingFee2
  • Added transfer-hook account helper types:
    • TransferHookAccountsInfo
    • TransferHookRemainingAccounts
    • FirstBuyWithTransferHookParams
    • PartnerFirstBuyWithTransferHookParams
    • CreatorFirstBuyWithTransferHookParams
    • AccountsType
  • Added account types for transfer-hook program accounts:
    • ConfigWithTransferHook
    • TransferHookPool
  • Added CreateVirtualPoolMetadataParameters as an exported IDL-derived type.
  • Added client.partner.createConfigAndPool and client.partner.createConfigAndPoolWithFirstBuy so partner-owned config-and-pool flows live under the partner service.
  • Added client.creator.createPool, client.creator.createPoolWithFirstBuy, and client.creator.createPoolWithPartnerAndCreatorFirstBuy so creator-owned pool initialization flows live under the creator service.
  • Added client.partner.claimPartnerTradingFeeToReceiver and client.creator.claimCreatorTradingFeeToReceiver for the non-transfer-hook fee claim flows that do not require tempWSolAcc.
  • Added test coverage for transfer-hook config creation, pool creation, swaps, first buys, and fee claims using the new transfer_hook_counter test 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 DynamicBondingCurveClient so all services share one StateService instance.
  • Updated StateService.getPoolConfig to fetch both regular poolConfig accounts and transfer-hook config accounts.
  • Updated StateService.getPool to fetch both regular virtualPool accounts and transfer-hook pool accounts.
  • Updated swap quote math and state helpers to read virtual pool fields from the new nested poolState layout.
  • Updated buildCurve* helpers to accept token.tokenAuthorityOption and map it to the on-chain tokenUpdateAuthority field.
  • Renamed createVaultProgram to createDynamicVaultProgram to match the Dynamic Vault IDL naming.
  • Renamed internal/public DAMM V1 and Dynamic Vault generated IDL program types from DammV1 and DynamicVault to Amm and Vault.
  • Updated validator and CI setup to use the mercurial_vault.so fixture and include the transfer_hook_counter.so fixture.
  • Reworked docs.md with the current SDK service layout and transfer-hook function documentation.
  • Updated getMigratedPoolMarketCapFeeSchedulerParams and MigratedPoolMarketCapFeeSchedulerParams to use priceMultiple directly.

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 virtualPool to pool across SDK request types. Update call sites for:
    • CreateLockerParams
    • WithdrawLeftoverParams
    • MigrateToDammV1Params
    • MigrateToDammV2Params
    • DammLpTokenParams
    • PartnerWithdrawSurplusParams
    • CreatorWithdrawSurplusParams
    • TransferPoolCreatorParams
    • WithdrawMigrationFeeParams
    • ClaimPartnerPoolCreationFeeParams
  • Virtual pool account data now uses the nested poolState layout. Code that directly reads VirtualPool fields must migrate from flat fields like pool.config, pool.baseMint, pool.quoteReserve, pool.sqrtPrice, and pool.metrics to pool.poolState.config, pool.poolState.baseMint, pool.poolState.quoteReserve, pool.poolState.sqrtPrice, and pool.poolState.metrics.
  • **TokenType.SPL was renamed to TokenType.SPLToken.** The enum value remains 0, but TypeScript callers must update the enum member name.
  • **TokenUpdateAuthorityOption was renamed to TokenAuthorityOption.** Update imports and references.
  • **TokenConfig.tokenUpdateAuthority was renamed to tokenAuthorityOption for all buildCurve* helpers.** The helper still maps this value to the on-chain tokenUpdateAuthority config field.
  • **PreCreatePoolParams was renamed to CreatePoolBaseParams.** Update imports and any explicit type annotations.
  • The old no-tempWSolAcc trading fee claim types were renamed.
    • ClaimTradingFeeParams -> ClaimPartnerTradingFeeParams
    • ClaimTradingFee2Params -> ClaimPartnerTradingFeeToReceiverParams
    • ClaimCreatorTradingFee2Params -> ClaimCreatorTradingFeeToReceiverParams
  • The old claimPartnerTradingFee2 and claimCreatorTradingFee2 non-transfer-hook behavior moved to claimPartnerTradingFeeToReceiver and claimCreatorTradingFeeToReceiver. In 1.5.8, claimPartnerTradingFee2 and claimCreatorTradingFee2 build transfer-hook fee claim instructions and should be used only for transfer-hook pools.
  • **createVaultProgram was renamed to createDynamicVaultProgram.** Update helper imports.
  • **StateService.getDammV1LockEscrow was removed.** Consumers that need lock escrow data must fetch it through the relevant generated program client.
  • **LockEscrow now 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. Replace marketCapFeeSchedulerParams.startingMarketCap and marketCapFeeSchedulerParams.endingMarketCap with marketCapFeeSchedulerParams.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.
dynamic-bonding-curve 0.1.10
Migrate to DAMM v2 Inner Positions + DAMM v2 Compounding Fee
Mainnet deployment for Release 0.1.10 is planned for March 16, 2026, at 11:00 AM UTC+8 (Monday).

Release summary

ComponentVersionPR
Program0.1.10dynamic-bonding-curve #174
TypeScript SDK1.5.7dynamic-bonding-curve-sdk #101

What We Shipped

  • Migrate to DAMM v2 Inner Positions
  • Migrate to DAMM v2 Compounding Fee Pool

What To Do

IntegratorsWhat ChangedWhat To Do
Trading Terminals
  • EvtPartnerClaimPoolCreationFee event parsing
  • The EvtPartnerClaimPoolCreationFee event now includes a fee_receiver field. Partners parsing/indexing this event must update their deserialization.
Partners
  • Bonding Curve Configuration Updates
  • Bump your SDK version to @meteora-ag/dynamic-bonding-curve-sdk@1.5.5-rc.0 to start testing.
  • Optionally update your bonding curve configuration to enable compounding fee mode by passing migrated_pool_fee.collect_fee_mode: 2 and compounding_fee_bps: 1-10_000 field in ConfigParameters

Program: dynamic-bonding-curve 0.1.10

Program ID (mainnet and devnet): dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqNProgram PR #174

Added

  • Add new endpoint create_operator_account and close_operator_account that allows admin to manage different operator accounts.
  • Add new account Operator, that would stores whitelisted_address as well as their operational permissions
  • Add new endpoint zap_protocol_fee that 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 the create_config endpoint by passing migrated_pool_fee.collect_fee_mode: 2 and compounding_fee_bps: 1-10_000 field in ConfigParameters

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_operator endpoint in favor of create_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 #98

Added

  • Added MigratedCollectFeeMode enum with Compounding (2) support for migrated DAMM v2 pool configuration.
  • Added compoundingFeeBps support in MigratedPoolFeeConfig and propagated it through all buildCurve* helpers.

Changed

  • Updated migrated pool fee validation to require compoundingFeeBps > 0 only when collectFeeMode = MigratedCollectFeeMode.Compounding, and 0 otherwise.
  • Updated migration flow for DAMM v2 to remove position vesting accounts from migrateDammV2 remaining accounts.
  • Removed deriveDammV2PositionVestingAccount PDA helper.