Understand DBC dynamic_bonding_curve events emitted by config, transfer-hook, pool, swap, fee claim, migration, metadata, and operator flows.
The dynamic-bonding-curve program emits most Anchor events through event CPI. Use this page when building indexers, analytics pipelines, charting systems, or low-level clients that need to map transactions back to DBC pool activity.
Quote reserve after the swap. Use this for progress charts.
migration_threshold
Configured quote threshold for migration readiness.
Do not reconstruct DBC price from token transfer logs. Use EvtSwap2 or EvtSwap3, quote helpers, and account state so trading fees, transfer fees, partial fills, and next_sqrt_price are handled correctly.
included_transfer_fee_amount_in is the amount the user pays. excluded_transfer_fee_amount_in is what the pool receives after the input mint’s transfer fee, and it matches swap_result.included_fee_input_amount. included_transfer_fee_amount_out matches swap_result.output_amount. excluded_transfer_fee_amount_out is what the user receives after the output mint’s transfer fee.EvtSwap.params.amount_in equals included_transfer_fee_amount_in in every swap mode. EvtSwap.params.minimum_amount_out equals excluded_transfer_fee_amount_out for exact-out and partial-fill. For exact-in it is the user’s minimum_amount_out, not the amount received.
Treat EvtSwap2.quote_reserve_amount / EvtSwap2.migration_threshold as the event-side progress signal. Read user-facing amounts from EvtSwap3.included_transfer_fee_amount_in and EvtSwap3.excluded_transfer_fee_amount_out. EvtSwap.params.amount_in includes the transfer fee.
Consume EvtCreateConfig3 for configs from create_config and create_config2. EvtCreateConfig is no longer emitted. create_config_with_transfer_hook still emits only EvtCreateConfigV2WithTransferHook.
Reconcile event-derived progress with VirtualPool.quote_reserve from account state.
Index both EvtInitializePool and EvtInitializePoolWithTransferHook, plus pool accounts, so pools created before your indexer starts are still discoverable.
Store raw swap_result values for analytics; rounded UI values can lose fee and partial-fill detail.
For migrated pools, use DBC events to identify completion and destination AMM state to track post-migration trading.
Was this page helpful?
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Meteora Documentation","colors":{"primary":"#F54B00","light":"#F54B00","dark":"#F54B00"},"logo":{"light":"https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/assets/nav/meteora-docs-light.png?fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=9b7afa272c2adebd183c6e55b45c9326","dark":"https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/assets/nav/meteora-docs-dark.png?fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=cc1569cccf60c9058cc0be9f61743fc7"},"favicon":"https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/assets/logo/meteora.png?fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=5ae3f2a17133bed15a6360c41694c4d7","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","typescript","bash","rust"]}},"appearance":{"default":"dark"},"background":{"decoration":"gradient"},"navbar":{"links":[{"icon":"comet","href":"https://app.meteora.ag/","label":"App"},{"icon":"medium","href":"https://blog.meteora.ag","label":"Blog"},{"icon":"discord","href":"https://discord.com/invite/meteora","label":"Support"}]},"footer":{"socials":{"discord":"https://discord.gg/meteora","x":"https://x.com/MeteoraAG","youtube":"https://www.youtube.com/@meteora-ag","medium":"https://blog.meteora.ag/","github":"https://github.com/MeteoraAg","linkedin":"https://www.linkedin.com/company/meteora-ag"},"links":[{"header":"Meteora","items":[{"label":"Meteora","href":"https://app.meteora.ag"},{"label":"Terms of Service","href":"https://docs.meteora.ag/resources/legal/terms-of-service"}]}]},"fonts":{"family":"Inter"},"styling":{"codeblocks":"system","latex":true},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"meteora","hasAudioNarration":false,"actualSubdomain":"meteora","customDomains":["docs.meteora.ag"],"gitSource":{"type":"github","owner":"meteoraag","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae968e0715034d486e241ba","collectionId":"93647572-50f9-4b90-b388-8d55bf85ed84","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae968e0715034d486e241ba"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"DISABLED"},"CONTEXTUAL_FEEDBACK":{"status":"DISABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae968e0715034d486e241ba","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"Developer Guides","count":161},{"language":"default","tag":"Get Started","count":67},{"language":"default","tag":"API Reference","count":51},{"language":"default","tag":"API Endpoints","count":46},{"language":"default","tag":"Program","count":39},{"language":"default","tag":"DLMM","count":38},{"language":"default","tag":"DAMM v1","count":32},{"language":"default","tag":"DAMM v2","count":31},{"language":"default","tag":"TypeScript SDK","count":31},{"language":"default","tag":"Core Products","count":28}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"developer-guides/dbc/program/events","slug":"/developer-guides/dbc/program/events","pageMetadata":{"title":"DBC Program Events","sidebarTitle":"Events","description":"Understand DBC dynamic_bonding_curve events emitted by config, transfer-hook, pool, swap, fee claim, migration, metadata, and operator flows.","llmsDescription":"DBC program event reference for dynamic-bonding-curve 0.2.2. Covers Anchor event-CPI delivery, EvtCreateConfig3 from create_config and create_config2, removal of EvtCreateConfig, deprecated EvtCreateConfigV2, EvtCreateConfigV2WithTransferHook, EvtSwap2, EvtSwap3 included_transfer_fee_amount_in and excluded_transfer_fee_amount_out, EvtSwap3WithTransferHook, pool, fee, migration, surplus, leftover, and operator events.","href":"/developer-guides/dbc/program/events"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Understand DBC dynamic_bonding_curve events emitted by config, transfer-hook, pool, swap, fee claim, migration, metadata, and operator flows.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,ol:`ol`,p:`p`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Table,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`dynamic-bonding-curve`}),` program emits most Anchor events through event CPI. Use this page when building indexers, analytics pipelines, charting systems, or low-level clients that need to map transactions back to DBC pool activity.`]}),`\n`,_jsx(Heading,{level:`2`,id:`event-cpi`,children:`Event CPI`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Item`}),_jsx(_components.th,{children:`Value`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Event authority seed`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`__event_authority`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`SDK helper`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`deriveDbcEventAuthority()`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Primary standard swap event`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`EvtSwap2`}),` for curve progress. `,_jsx(_components.code,{children:`EvtSwap3`}),` for transfer-fee amounts.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Primary transfer-hook swap event`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`EvtSwap2WithTransferHook`}),` for curve progress. `,_jsx(_components.code,{children:`EvtSwap3WithTransferHook`}),` for transfer-fee amounts.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Config creation`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`create_config`}),` and `,_jsx(_components.code,{children:`create_config2`}),` emit `,_jsx(_components.code,{children:`EvtCreateConfig3`}),` and `,_jsx(_components.code,{children:`EvtCreateConfigV2`}),`. Prefer `,_jsx(_components.code,{children:`EvtCreateConfig3`}),`. `,_jsx(_components.code,{children:`EvtCreateConfig`}),` is no longer emitted.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Log-event exception`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`EvtClaimProtocolFee2`}),` is emitted with `,_jsx(_components.code,{children:`emit!`}),`, not event CPI.`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`config-and-metadata-events`,children:`Config And Metadata Events`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Event`}),_jsx(_components.th,{children:`Emitted by`}),_jsx(_components.th,{children:`Important fields`}),_jsx(_components.th,{children:`Use`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtCreateConfig3`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`create_config`}),`, `,_jsx(_components.code,{children:`create_config2`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`config`}),`, `,_jsx(_components.code,{children:`quote_mint`}),`, `,_jsx(_components.code,{children:`fee_claimer`}),`, `,_jsx(_components.code,{children:`leftover_receiver`}),`, `,_jsx(_components.code,{children:`config_parameters`}),`, `,_jsx(_components.code,{children:`transfer_fee_parameters`})]}),_jsxs(_components.td,{children:[`Config payload for both config instructions. `,_jsx(_components.code,{children:`transfer_fee_parameters`}),` is set only by `,_jsx(_components.code,{children:`create_config2`}),`. Prefer this event.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtCreateConfigV2`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`create_config`}),`, `,_jsx(_components.code,{children:`create_config2`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`config`}),`, `,_jsx(_components.code,{children:`quote_mint`}),`, `,_jsx(_components.code,{children:`fee_claimer`}),`, `,_jsx(_components.code,{children:`leftover_receiver`}),`, `,_jsx(_components.code,{children:`config_parameters`})]}),_jsxs(_components.td,{children:[`Still emitted with `,_jsx(_components.code,{children:`EvtCreateConfig3`}),`. Deprecated in favour of `,_jsx(_components.code,{children:`EvtCreateConfig3`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtCreateConfigV2WithTransferHook`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`create_config_with_transfer_hook`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`config`}),`, `,_jsx(_components.code,{children:`quote_mint`}),`, `,_jsx(_components.code,{children:`fee_claimer`}),`, `,_jsx(_components.code,{children:`leftover_receiver`}),`, `,_jsx(_components.code,{children:`config_parameters`}),`, `,_jsx(_components.code,{children:`transfer_hook_program`})]}),_jsx(_components.td,{children:`The only config event from the transfer-hook config instruction.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtPartnerMetadata`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`create_partner_metadata`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`partner_metadata`}),`, `,_jsx(_components.code,{children:`fee_claimer`})]}),_jsx(_components.td,{children:`Link partner metadata to a fee claimer.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtVirtualPoolMetadata`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`create_virtual_pool_metadata`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`virtual_pool_metadata`}),`, `,_jsx(_components.code,{children:`virtual_pool`})]}),_jsx(_components.td,{children:`Link pool metadata to a virtual pool.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtInitializePool`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`initialize_virtual_pool_with_spl_token`}),`, `,_jsx(_components.code,{children:`initialize_virtual_pool_with_token2022`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`config`}),`, `,_jsx(_components.code,{children:`creator`}),`, `,_jsx(_components.code,{children:`base_mint`}),`, `,_jsx(_components.code,{children:`pool_type`}),`, `,_jsx(_components.code,{children:`activation_point`})]}),_jsx(_components.td,{children:`Index new DBC pools.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtInitializePoolWithTransferHook`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`initialize_virtual_pool_with_token2022_transfer_hook`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`config`}),`, `,_jsx(_components.code,{children:`creator`}),`, `,_jsx(_components.code,{children:`base_mint`}),`, `,_jsx(_components.code,{children:`pool_type`}),`, `,_jsx(_components.code,{children:`activation_point`})]}),_jsx(_components.td,{children:`Index new transfer-hook DBC pools.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtUpdatePoolCreator`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`transfer_pool_creator`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`creator`}),`, `,_jsx(_components.code,{children:`new_creator`})]}),_jsx(_components.td,{children:`Track creator authority transfer.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtCreateTokenBadge`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`create_token_badge`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`token_mint`})}),_jsx(_components.td,{children:`Index a newly allowlisted quote mint.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtCloseTokenBadge`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`close_token_badge`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`token_mint`})}),_jsx(_components.td,{children:`Index token badge closure.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`swap-events`,children:`Swap Events`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Event`}),_jsx(_components.th,{children:`Emitted by`}),_jsx(_components.th,{children:`Important fields`}),_jsx(_components.th,{children:`Use`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtSwap`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`swap`}),`, `,_jsx(_components.code,{children:`swap2`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`config`}),`, `,_jsx(_components.code,{children:`trade_direction`}),`, `,_jsx(_components.code,{children:`has_referral`}),`, `,_jsx(_components.code,{children:`params`}),`, `,_jsx(_components.code,{children:`swap_result`}),`, `,_jsx(_components.code,{children:`amount_in`}),`, `,_jsx(_components.code,{children:`current_timestamp`})]}),_jsx(_components.td,{children:`Legacy/simple swap payload.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtSwap2`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`swap`}),`, `,_jsx(_components.code,{children:`swap2`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`config`}),`, `,_jsx(_components.code,{children:`trade_direction`}),`, `,_jsx(_components.code,{children:`has_referral`}),`, `,_jsx(_components.code,{children:`swap_parameters`}),`, `,_jsx(_components.code,{children:`swap_result`}),`, `,_jsx(_components.code,{children:`quote_reserve_amount`}),`, `,_jsx(_components.code,{children:`migration_threshold`}),`, `,_jsx(_components.code,{children:`current_timestamp`})]}),_jsx(_components.td,{children:`Preferred swap payload for charting, progress, fees, and exact-out or partial-fill support.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtCurveComplete`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`swap`}),`, `,_jsx(_components.code,{children:`swap2`}),` when the threshold is reached`]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`config`}),`, `,_jsx(_components.code,{children:`base_reserve`}),`, `,_jsx(_components.code,{children:`quote_reserve`})]}),_jsx(_components.td,{children:`Mark bonding curve completion and migration readiness.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtSwap2WithTransferHook`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`swap2_with_transfer_hook`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`config`}),`, `,_jsx(_components.code,{children:`trade_direction`}),`, `,_jsx(_components.code,{children:`has_referral`}),`, `,_jsx(_components.code,{children:`swap_parameters`}),`, `,_jsx(_components.code,{children:`swap_result`}),`, `,_jsx(_components.code,{children:`quote_reserve_amount`}),`, `,_jsx(_components.code,{children:`migration_threshold`}),`, `,_jsx(_components.code,{children:`current_timestamp`})]}),_jsx(_components.td,{children:`Preferred transfer-hook swap payload.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtSwap3`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`swap`}),`, `,_jsx(_components.code,{children:`swap2`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`swap_mode`}),`, `,_jsx(_components.code,{children:`included_transfer_fee_amount_in`}),`, `,_jsx(_components.code,{children:`excluded_transfer_fee_amount_in`}),`, `,_jsx(_components.code,{children:`included_transfer_fee_amount_out`}),`, `,_jsx(_components.code,{children:`excluded_transfer_fee_amount_out`}),`, `,_jsx(_components.code,{children:`next_sqrt_price`}),`, `,_jsx(_components.code,{children:`quote_reserve`})]}),_jsxs(_components.td,{children:[`Transfer-fee amounts for a standard swap. It does not embed `,_jsx(_components.code,{children:`EvtSwap2`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtSwap3WithTransferHook`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`swap2_with_transfer_hook`})}),_jsxs(_components.td,{children:[`Same transfer-fee fields as `,_jsx(_components.code,{children:`EvtSwap3`})]}),_jsx(_components.td,{children:`Transfer-fee amounts for a transfer-hook swap.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtCurveCompleteWithTransferHook`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`swap2_with_transfer_hook`}),` when the threshold is reached`]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`config`}),`, `,_jsx(_components.code,{children:`base_reserve`}),`, `,_jsx(_components.code,{children:`quote_reserve`})]}),_jsx(_components.td,{children:`Mark transfer-hook bonding curve completion and hook revocation.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`evtswap2-payload`,children:`EvtSwap2 Payload`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`trade_direction`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`0`}),` base to quote, `,_jsx(_components.code,{children:`1`}),` quote to base.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`has_referral`})}),_jsx(_components.td,{children:`Whether referral fee was included in the fee split.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`swap_parameters.amount_0`})}),_jsx(_components.td,{children:`Input for exact-in and partial-fill, or requested output for exact-out.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`swap_parameters.amount_1`})}),_jsx(_components.td,{children:`Minimum output for exact-in and partial-fill, or maximum input for exact-out.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`swap_parameters.swap_mode`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`0`}),` exact in, `,_jsx(_components.code,{children:`1`}),` partial fill, `,_jsx(_components.code,{children:`2`}),` exact out.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`swap_result.included_fee_input_amount`})}),_jsx(_components.td,{children:`Input amount before excluded-fee adjustment.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`swap_result.excluded_fee_input_amount`})}),_jsx(_components.td,{children:`Amount that moved the curve after fee handling.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`swap_result.amount_left`})}),_jsx(_components.td,{children:`Unused amount in partial-fill mode.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`swap_result.output_amount`})}),_jsx(_components.td,{children:`Output token amount.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`swap_result.next_sqrt_price`})}),_jsx(_components.td,{children:`Post-swap sqrt price.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`swap_result.trading_fee`}),`, `,_jsx(_components.code,{children:`protocol_fee`}),`, `,_jsx(_components.code,{children:`referral_fee`})]}),_jsx(_components.td,{children:`Fee split for the swap.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`quote_reserve_amount`})}),_jsx(_components.td,{children:`Quote reserve after the swap. Use this for progress charts.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`migration_threshold`})}),_jsx(_components.td,{children:`Configured quote threshold for migration readiness.`})]})]})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Do not reconstruct DBC price from token transfer logs. Use `,_jsx(_components.code,{children:`EvtSwap2`}),` or `,_jsx(_components.code,{children:`EvtSwap3`}),`, quote helpers, and account state so trading fees, transfer fees, partial fills, and `,_jsx(_components.code,{children:`next_sqrt_price`}),` are handled correctly.`]})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`included_transfer_fee_amount_in`}),` is the amount the user pays. `,_jsx(_components.code,{children:`excluded_transfer_fee_amount_in`}),` is what the pool receives after the input mint’s transfer fee, and it matches `,_jsx(_components.code,{children:`swap_result.included_fee_input_amount`}),`. `,_jsx(_components.code,{children:`included_transfer_fee_amount_out`}),` matches `,_jsx(_components.code,{children:`swap_result.output_amount`}),`. `,_jsx(_components.code,{children:`excluded_transfer_fee_amount_out`}),` is what the user receives after the output mint’s transfer fee.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`EvtSwap.params.amount_in`}),` equals `,_jsx(_components.code,{children:`included_transfer_fee_amount_in`}),` in every swap mode. `,_jsx(_components.code,{children:`EvtSwap.params.minimum_amount_out`}),` equals `,_jsx(_components.code,{children:`excluded_transfer_fee_amount_out`}),` for exact-out and partial-fill. For exact-in it is the user’s `,_jsx(_components.code,{children:`minimum_amount_out`}),`, not the amount received.`]}),`\n`,_jsx(Heading,{level:`2`,id:`fee-and-claim-events`,children:`Fee And Claim Events`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Event`}),_jsx(_components.th,{children:`Emitted by`}),_jsx(_components.th,{children:`Important fields`}),_jsx(_components.th,{children:`Use`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtClaimTradingFee`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`claim_trading_fee`}),`, `,_jsx(_components.code,{children:`claim_trading_fee2`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`token_base_amount`}),`, `,_jsx(_components.code,{children:`token_quote_amount`})]}),_jsx(_components.td,{children:`Partner trading fee claim.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtClaimCreatorTradingFee`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`claim_creator_trading_fee`}),`, `,_jsx(_components.code,{children:`claim_creator_trading_fee2`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`token_base_amount`}),`, `,_jsx(_components.code,{children:`token_quote_amount`})]}),_jsx(_components.td,{children:`Creator trading fee claim.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtClaimProtocolFee`})}),_jsxs(_components.td,{children:[`Removed `,_jsx(_components.code,{children:`claim_protocol_fee`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`token_base_amount`}),`, `,_jsx(_components.code,{children:`token_quote_amount`})]}),_jsxs(_components.td,{children:[`Historical protocol trading fee claim. New claims use `,_jsx(_components.code,{children:`EvtClaimProtocolFee2`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtClaimProtocolFee2`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`claim_protocol_fee2`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`receiver_token_account`}),`, `,_jsx(_components.code,{children:`token_mint`}),`, `,_jsx(_components.code,{children:`amount`})]}),_jsx(_components.td,{children:`Protocol fee claim through the newer single-mint claim path.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtClaimPoolCreationFee`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`claim_protocol_pool_creation_fee`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`receiver`}),`, `,_jsx(_components.code,{children:`creation_fee`})]}),_jsx(_components.td,{children:`Protocol share of pool creation fee.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtPartnerClaimPoolCreationFee`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`claim_partner_pool_creation_fee`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`partner`}),`, `,_jsx(_components.code,{children:`creation_fee`}),`, `,_jsx(_components.code,{children:`fee_receiver`})]}),_jsx(_components.td,{children:`Partner share of pool creation fee.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`migration-and-withdrawal-events`,children:`Migration And Withdrawal Events`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Event`}),_jsx(_components.th,{children:`Emitted by`}),_jsx(_components.th,{children:`Important fields`}),_jsx(_components.th,{children:`Use`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtCreateMeteoraMigrationMetadata`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`migration_meteora_damm_create_metadata`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`virtual_pool`})}),_jsx(_components.td,{children:`DAMM v1 migration metadata creation.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtPartnerWithdrawSurplus`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`partner_withdraw_surplus`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`surplus_amount`})]}),_jsx(_components.td,{children:`Partner surplus withdrawal.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtCreatorWithdrawSurplus`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`creator_withdraw_surplus`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`surplus_amount`})]}),_jsx(_components.td,{children:`Creator surplus withdrawal.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtWithdrawLeftover`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`withdraw_leftover`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`leftover_receiver`}),`, `,_jsx(_components.code,{children:`leftover_amount`})]}),_jsx(_components.td,{children:`Leftover base-token withdrawal.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtWithdrawMigrationFee`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`withdraw_migration_fee`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pool`}),`, `,_jsx(_components.code,{children:`fee`}),`, `,_jsx(_components.code,{children:`flag`})]}),_jsx(_components.td,{children:`Migration fee withdrawal with role flag.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`operator-events`,children:`Operator Events`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Event`}),_jsx(_components.th,{children:`Emitted by`}),_jsx(_components.th,{children:`Important fields`}),_jsx(_components.th,{children:`Use`})]})}),_jsx(_components.tbody,{children:_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`EvtCloseClaimFeeOperator`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`close_claim_protocol_fee_operator`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`claim_fee_operator`}),`, `,_jsx(_components.code,{children:`operator`})]}),_jsx(_components.td,{children:`Track protocol fee operator closure.`})]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`indexing-notes`,children:`Indexing Notes`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Treat `,_jsx(_components.code,{children:`EvtSwap2.quote_reserve_amount / EvtSwap2.migration_threshold`}),` as the event-side progress signal. Read user-facing amounts from `,_jsx(_components.code,{children:`EvtSwap3.included_transfer_fee_amount_in`}),` and `,_jsx(_components.code,{children:`EvtSwap3.excluded_transfer_fee_amount_out`}),`. `,_jsx(_components.code,{children:`EvtSwap.params.amount_in`}),` includes the transfer fee.`]}),`\n`,_jsxs(_components.li,{children:[`Consume `,_jsx(_components.code,{children:`EvtCreateConfig3`}),` for configs from `,_jsx(_components.code,{children:`create_config`}),` and `,_jsx(_components.code,{children:`create_config2`}),`. `,_jsx(_components.code,{children:`EvtCreateConfig`}),` is no longer emitted. `,_jsx(_components.code,{children:`create_config_with_transfer_hook`}),` still emits only `,_jsx(_components.code,{children:`EvtCreateConfigV2WithTransferHook`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Reconcile event-derived progress with `,_jsx(_components.code,{children:`VirtualPool.quote_reserve`}),` from account state.`]}),`\n`,_jsxs(_components.li,{children:[`Index both `,_jsx(_components.code,{children:`EvtInitializePool`}),` and `,_jsx(_components.code,{children:`EvtInitializePoolWithTransferHook`}),`, plus pool accounts, so pools created before your indexer starts are still discoverable.`]}),`\n`,_jsxs(_components.li,{children:[`Store raw `,_jsx(_components.code,{children:`swap_result`}),` values for analytics; rounded UI values can lose fee and partial-fill detail.`]}),`\n`,_jsx(_components.li,{children:`For migrated pools, use DBC events to identify completion and destination AMM state to track post-migration trading.`}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"DBC Program Events","sidebarTitle":"Events","description":"Understand DBC dynamic_bonding_curve events emitted by config, transfer-hook, pool, swap, fee claim, migration, metadata, and operator flows.","llmsDescription":"DBC program event reference for dynamic-bonding-curve 0.2.2. Covers Anchor event-CPI delivery, EvtCreateConfig3 from create_config and create_config2, removal of EvtCreateConfig, deprecated EvtCreateConfigV2, EvtCreateConfigV2WithTransferHook, EvtSwap2, EvtSwap3 included_transfer_fee_amount_in and excluded_transfer_fee_amount_out, EvtSwap3WithTransferHook, pool, fee, migration, surplus, leftover, and operator events.","href":"/developer-guides/dbc/program/events"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Event CPI","slug":"event-cpi","depth":2,"children":[]},{"title":"Config And Metadata Events","slug":"config-and-metadata-events","depth":2,"children":[]},{"title":"Swap Events","slug":"swap-events","depth":2,"children":[{"title":"EvtSwap2 Payload","slug":"evtswap2-payload","depth":3,"children":[]}]},{"title":"Fee And Claim Events","slug":"fee-and-claim-events","depth":2,"children":[]},{"title":"Migration And Withdrawal Events","slug":"migration-and-withdrawal-events","depth":2,"children":[]},{"title":"Operator Events","slug":"operator-events","depth":2,"children":[]},{"title":"Indexing Notes","slug":"indexing-notes","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"meteora","siteName":"Meteora Documentation","title":"DBC Program Events - Meteora Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-16T07:42:11.958Z","originalFileLocation":"developer-guides/dbc/program/events.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Understand DBC dynamic_bonding_curve events emitted by config, transfer-hook, pool, swap, fee claim, migration, metadata, and operator flows.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Meteora Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"DBC Program Events - Meteora Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Understand DBC dynamic_bonding_curve events emitted by config, transfer-hook, pool, swap, fee claim, migration, metadata, and operator flows.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Meteora Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.meteora.ag/developer-guides/dbc/program/events\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://meteora.mintlify.app/_mintlify/api/og/v2?division=Program\u0026amp;title=DBC+Program+Events\u0026amp;description=Understand+DBC+dynamic_bonding_curve+events+emitted+by+config%2C+transfer-hook%2C+pool%2C+swap%2C+fee+claim%2C+migration%2C+metadata%2C+and+operator+flows.\u0026amp;theme=eb18b52cbb4394f91f6c5646\u0026amp;signature=69a57c57834294e0494265c3419c709aef3257c4d47e3de5cfea48718412aac0\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"DBC Program Events - Meteora Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Understand DBC dynamic_bonding_curve events emitted by config, transfer-hook, pool, swap, fee claim, migration, metadata, and operator flows.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://meteora.mintlify.app/_mintlify/api/og/v2?division=Program\u0026amp;title=DBC+Program+Events\u0026amp;description=Understand+DBC+dynamic_bonding_curve+events+emitted+by+config%2C+transfer-hook%2C+pool%2C+swap%2C+fee+claim%2C+migration%2C+metadata%2C+and+operator+flows.\u0026amp;theme=eb18b52cbb4394f91f6c5646\u0026amp;signature=69a57c57834294e0494265c3419c709aef3257c4d47e3de5cfea48718412aac0\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Meteora Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#F54B00\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.meteora.ag/developer-guides/dbc/program/events\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/developer-guides/dbc/program/events.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.meteora.ag/#organization\",\"name\":\"Meteora Documentation\",\"url\":\"https://docs.meteora.ag\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/assets/nav/meteora-docs-light.png?fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=9b7afa272c2adebd183c6e55b45c9326\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.meteora.ag#website\",\"name\":\"Meteora Documentation\",\"url\":\"https://docs.meteora.ag\",\"publisher\":{\"@id\":\"https://docs.meteora.ag/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.meteora.ag/developer-guides/dbc/program/events#webpage\",\"url\":\"https://docs.meteora.ag/developer-guides/dbc/program/events\",\"name\":\"DBC Program Events\",\"description\":\"Understand DBC dynamic_bonding_curve events emitted by config, transfer-hook, pool, swap, fee claim, migration, metadata, and operator flows.\",\"dateModified\":\"2026-10-16T07:42:11.958Z\",\"isPartOf\":{\"@id\":\"https://docs.meteora.ag#website\"},\"breadcrumb\":{\"@id\":\"https://docs.meteora.ag/developer-guides/dbc/program/events#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.meteora.ag/developer-guides/dbc/program/events#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Program\",\"item\":\"https://docs.meteora.ag/developer-guides/dbc/program/accounts\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DBC Program Events\",\"item\":\"https://docs.meteora.ag/developer-guides/dbc/program/events\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.meteora.ag/developer-guides/dbc/program/events#article\",\"headline\":\"DBC Program Events\",\"name\":\"DBC Program Events\",\"description\":\"Understand DBC dynamic_bonding_curve events emitted by config, transfer-hook, pool, swap, fee claim, migration, metadata, and operator flows.\",\"url\":\"https://docs.meteora.ag/developer-guides/dbc/program/events\",\"mainEntityOfPage\":{\"@id\":\"https://docs.meteora.ag/developer-guides/dbc/program/events#webpage\"},\"dateModified\":\"2026-10-16T07:42:11.958Z\",\"publisher\":{\"@id\":\"https://docs.meteora.ag/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.meteora.ag#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Meteora Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Meteora Documentation","nav":{"global":null,"tabs":[{"tab":"Get Started","pages":[{"title":"Get Started","href":"/get-started"}]},{"tab":"Developer Guides","menu":[{"item":"DLMM","icon":"arrows-to-circle","pages":[{"title":"DLMM","href":"/developer-guides/dlmm"}]},{"item":"DAMM v2","icon":"calculator-simple","pages":[{"title":"DAMM v2","href":"/developer-guides/damm-v2"}]},{"item":"DBC","icon":"chart-simple","groups":[{"group":" ","pages":[{"title":"DBC Developer Guide","sidebarTitle":"Overview","href":"/developer-guides/dbc"},{"title":"DBC Changelog","sidebarTitle":"Changelog","href":"/developer-guides/dbc/changelog"}]},{"group":"Program","pages":[{"title":"DBC Program Accounts","sidebarTitle":"Accounts","href":"/developer-guides/dbc/program/accounts"},{"title":"DBC Program Instructions","sidebarTitle":"Instructions","description":"Explore DBC dynamic_bonding_curve instructions for partners, creators, transfer-hook pools, swaps, migration, fee claims, operators, and state transitions.","href":"/developer-guides/dbc/program/instructions"},{"title":"DBC Program Events","sidebarTitle":"Events","href":"/developer-guides/dbc/program/events"},{"title":"DBC Program Errors","sidebarTitle":"Errors","description":"Understand DBC dynamic_bonding_curve error codes, messages, SDK validation checks, transfer-hook errors, and common causes for integration debugging.","href":"/developer-guides/dbc/program/errors"}]},{"group":"TypeScript SDK","pages":[{"title":"DBC TS SDK Getting Started","sidebarTitle":"Getting Started","href":"/developer-guides/dbc/typescript-sdk/getting-started"},{"title":"DBC TS SDK Examples","sidebarTitle":"Examples","href":"/developer-guides/dbc/typescript-sdk/examples"},{"title":"DBC TS SDK Transfer Hooks","sidebarTitle":"Transfer Hooks","href":"/developer-guides/dbc/typescript-sdk/transfer-hooks"},{"title":"DBC TS SDK Reference","sidebarTitle":"Reference","href":"/developer-guides/dbc/typescript-sdk/reference"}]},{"group":"Rust Integration","pages":[{"title":"DBC Rust Integration Library","sidebarTitle":"Library","href":"/developer-guides/dbc/rust-integration/library"},{"title":"DBC Rust Integration CPI","sidebarTitle":"CPI","href":"/developer-guides/dbc/rust-integration/cpi"}]},{"group":"Go Integration","pages":[{"title":"DBC Go SDK Integration Reference","sidebarTitle":"Reference","href":"/developer-guides/dbc/go-integration/reference"}]}]},{"item":"Presale Vault","icon":"gavel","pages":[{"title":"Presale Vault","href":"/developer-guides/presale-vault"}]},{"item":"Alpha Vault","icon":"box","pages":[{"title":"Alpha Vault","href":"/developer-guides/alpha-vault"}]},{"item":"Dynamic Fee Sharing","icon":"money-bill-wave","pages":[{"title":"Dynamic Fee Sharing","href":"/developer-guides/dynamic-fee-sharing"}]},{"item":"Zap","icon":"bolt-lightning","pages":[{"title":"Zap","href":"/developer-guides/zap"}]},{"item":"DAMM v1","icon":"calculator","pages":[{"title":"DAMM v1","href":"/developer-guides/damm-v1"}]},{"item":"Dynamic Vault","icon":"vault","pages":[{"title":"Dynamic Vault","href":"/developer-guides/dynamic-vault"}]},{"item":"Stake2Earn","icon":"steak","pages":[{"title":"Stake2Earn","href":"/developer-guides/stake2earn"}]}]},{"tab":"Invent","pages":[{"title":"Invent","href":"/invent/actions"}]},{"tab":"Agents","pages":[{"title":"Agents","href":"/agents/overview"}]},{"tab":"Protocol","pages":[{"title":"Protocol","href":"/protocol/protocol-revenues"}]},{"tab":"Resources","pages":[{"title":"Resources","href":"/resources/audits/overview"}]}]},"basePath":"","title":"DBC Program Events - Meteora Documentation","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":[],"chunks":[]}