> ## 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.

# DAMM v1 Program Events

> Understand DAMM v1 dynamic AMM events emitted by pool creation, swaps, liquidity, locks, configs, fees, activation, and admin flows.

DAMM v1 events are emitted as Anchor log events through `emit!`. Use this page when building indexers, trading terminals, analytics pipelines, or dashboards that need to classify DAMM v1 transactions.

<Note>
  DAMM v1 does not use the event-CPI pattern used by newer Meteora programs. Parse Anchor logs from the DAMM v1 program ID instead of expecting an `__event_authority` account.
</Note>

## Event Delivery

| Item | Value |
| - | - |
| Program ID | `Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB` |
| Delivery | Anchor `emit!` log events |
| Source files | `programs/amm/src/event.rs` and instruction handlers that call `emit!` |
| SDK compatibility | The bundled SDK IDL also includes events used by older client snapshots, including `MoveLockedLp`. |

## Pool Events

| Event | Emitted by | Payload |
| - | - | - |
| `PoolCreated` | `initialize_permissioned_pool`, `initialize_permissionless_pool`, `initialize_permissionless_pool_with_fee_tier`, config/customizable initialization paths through the shared initializer | LP mint, token A mint, token B mint, pool type, and pool address. |
| `PoolEnabled` | `enable_or_disable_pool` | Pool address and enabled flag. |
| `PoolInfo` | `get_pool_info` | Token A amount, token B amount, virtual price, and current timestamp. |
| `BootstrapLiquidity` | `bootstrap_liquidity` | LP amount minted, token A amount, token B amount, and pool address. |

`PoolCreated` is the main pool-discovery event. Indexers should still read the current pool account and Dynamic Vault accounts because pool fees, activation state, lock totals, partner fees, and vault balances can change after creation.

## Liquidity Events

| Event | Emitted by | Payload |
| - | - | - |
| `AddLiquidity` | `add_balance_liquidity`, `add_imbalance_liquidity` | LP amount minted, token A amount deposited, and token B amount deposited. |
| `RemoveLiquidity` | `remove_balance_liquidity`, `remove_liquidity_single_side` | LP amount burned, token A amount withdrawn, and token B amount withdrawn. |

For single-sided stable withdrawals, one output side can be zero. For balanced withdrawals, both output sides are populated.

## Swap Events

| Event | Emitted by | Payload |
| - | - | - |
| `Swap` | `swap` | Input amount, output amount, LP trade fee, protocol fee, and host fee. |

`Swap` does not include token mint fields. To determine direction, indexers must inspect the transaction accounts or reconcile against pool state and token transfers.

| Field | Meaning |
| - | - |
| `in_amount` | Source token amount sent into the swap path. |
| `out_amount` | Destination token amount sent to the user. |
| `trade_fee` | LP fee component after protocol fee is separated. |
| `protocol_fee` | Protocol fee component. |
| `host_fee` | Referral host fee component when a host account is supplied. |

## Config And Fee Events

| Event | Emitted by | Payload |
| - | - | - |
| `CreateConfig` | `create_config` | Trade fee numerator, protocol trade fee numerator, and config address. |
| `CloseConfig` | `close_config` | Config address. |
| `SetPoolFees` | `set_pool_fees` | New trade fee numerator/denominator, new protocol fee numerator/denominator, and pool address. |
| `OverrideCurveParam` | `override_curve_param` | New stable amp value, update timestamp, and pool address. |
| `WithdrawProtocolFees` | `withdraw_protocol_fees` | Pool address, protocol token A/B amounts withdrawn, and protocol fee token account owners. |
| `PartnerClaimFees` | `partner_claim_fee` | Pool address, token A/B fee amounts, and partner authority. |

Fee numerators use `FEE_DENOMINATOR = 100_000`. Do not interpret event fee numerators directly as basis points without conversion.

## Lock Events

| Event | Emitted by | Payload |
| - | - | - |
| `CreateLockEscrow` | `create_lock_escrow` | Pool address and escrow owner. |
| `Lock` | `lock` | Pool address, escrow owner, and LP amount locked. |
| `ClaimFee` | `claim_fee` | Pool address, escrow owner, LP amount claimed as fee, token A fee amount, and token B fee amount. |
| `MoveLockedLp` | `move_locked_lp` in the SDK IDL/program crate | Pool address, source lock escrow, destination lock escrow, and moved LP amount. |

The current `meteora-dynamic-amm/programs/amm` source snapshot emits the first three lock events. The public SDK IDL includes `MoveLockedLp` for SDK compatibility.

## Legacy Event Types

| Event | Notes |
| - | - |
| `TransferAdmin` | Present in the event type definitions for older permissioned-pool admin flows. It is not emitted by the current source paths inspected for this guide. |
| `MigrateFeeAccount` | Present in the event type definitions for older fee-account migration flows. It is not emitted by the current source paths inspected for this guide. |

## Indexing Notes

| Task | Recommendation |
| - | - |
| Pool discovery | Use `PoolCreated`, then fetch the pool, config if present, LP mint, and Dynamic Vault state. |
| Swap analytics | Combine `Swap` logs with account ordering and SPL token transfers to infer token direction and mint identity. |
| LP accounting | Use `AddLiquidity` and `RemoveLiquidity` events for activity, but compute current LP value from pool and vault state. |
| Lock dashboards | Use lock events for activity and read `LockEscrow` for current claimable fee state. |
| Fee dashboards | Track `SetPoolFees`, `CreateConfig`, `PartnerClaimFees`, and `WithdrawProtocolFees`, then reconcile against protocol fee token accounts. |
| Source compatibility | Treat event type presence and actual emission separately. Some IDL events exist for older flows that are not emitted by the current source handlers. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.