Events
Every event emitted by the protocol, by contract. Indexed parameters are marked — those are the ones you can filter on.
Factory
| Event | Parameters | When |
PairDeployed | token (indexed), curve (indexed), deployer (indexed), name, symbol, packed_socials | A user token pair is deployed |
ProtocolPairDeployed | token (indexed), curve (indexed), deployer (indexed), name, symbol | The one-shot protocol pair is deployed |
TokenTemplate
| Event | Parameters | When |
Transfer | sender (indexed), receiver (indexed), value | Standard ERC-20. Mints show a zero sender, burns a zero receiver. |
Approval | owner (indexed), spender (indexed), value | Standard ERC-20 |
TradingEnabled | timestamp | Transfers unlock at graduation |
BondingCurveTemplate
| Event | Parameters | When |
Buy | buyer (indexed), lots, native_sent, base_price, tax | Every curve buy |
Sell | seller (indexed), lots, native_returned, base_price, tax | Every curve sell |
Graduated | token (indexed), deployer (indexed) | Supply reaches 800,000 lots |
RefundInitiated | refund_per_lot | Refund mode opens |
RefundClaimed | user (indexed), lots, native_received | A holder claims |
RefundsSwept | unclaimed_amount, swept_at | Remainder swept after the claim window |
PrimaryHook
| Event | Parameters | When |
TokenRegistered | token (indexed), deployer (indexed), positionId | Graduation completes and the pool exists |
SecondaryReserved | token (indexed), deployer (indexed) | The 10% envelope is pushed to the SecondaryHook. Watch this to know a secondary pool can be created. |
FeesDistributed | token (indexed), total, reinvested | distributeFees splits fees |
Reinvested | token (indexed), nativeAmount, tokensAdded, liquidityAdded | Reinvest branch taken |
BuyAndBurn | token (indexed), nativeSpent | Burn branch taken |
DeployerWithdrawal | token (indexed), deployer (indexed), amount | Deployer withdraws |
DeployerUpdated | token (indexed), oldDeployer, newDeployer, paidOut | CTO finalizes. paidOut is 0 if the payout to the old deployer failed and rolled back. |
CTOVoteInitiated | token (indexed), vote_contract (indexed), initiator | A vote is created |
SecondaryHook
| Event | Parameters | When |
SecondaryFunded | token (indexed), nativeAmount | The PrimaryHook earmarks native during graduation |
SecondaryCreated | token (indexed), poolId, protocolTokenAmount, tokenAmount, positionId, tokenIsCurrency0 | The token↔$LP24 pool is created |
SecondaryTokenBurn | token (indexed), amount | Every taxed swap on a secondary pool |
GraduationManager Gnosis
| Event | Parameters | When |
PoolPreInitialized | token, pool, sqrtPriceX96 | V3 pool initialized inside deploy_pair |
TokenRegistered | token (indexed), deployer (indexed), positionId | Graduation completes |
FeesCollected | token (indexed), nativeAmount | V3 fees pulled from the position |
FeesDistributed | token (indexed), … | Native fees split |
TokensBurned | token (indexed), amount | Token-side fees burned |
TokenFeesLPed | token (indexed), … | Token-side fees paired into liquidity (THIN path) |
Reinvested / BuyAndBurn | as PrimaryHook | THIN / DEEP path respectively |
DeployerWithdrawal / DeployerUpdated / CTOVoteInitiated | as PrimaryHook | Same semantics |
CTOVoteTemplate
| Event | Parameters | When |
CTOInitialized | token (indexed), initiator (indexed), initiator_stake | Vote contract is cloned and set up |
VoteCast | voter (indexed), amount, support | Every vote and add_votes. The initiator's stake also emits one at initialization. |
VoteEnded | yes_votes, no_votes, passed | Voting closes. passed is the frozen outcome. |
VoteFinalized | new_deployer | A passed vote is executed |
TokensWithdrawn | voter (indexed), amount | A voter reclaims their deposit |
TokenSocials & TokenVesting
| Event | Parameters | When |
SocialsUpdated | token (indexed), packed | Metadata record written |
OwnerTransferred | token (indexed), old_owner (indexed), new_owner (indexed) | Metadata ownership moves, including on CTO |
TokensReleased | amount, total_released, timestamp | Vested tokens released to the beneficiary |
Indexing notes
Tracking a token end to end
PairDeployed gives you the token and curve together. Graduated and TokenRegistered fire in the same transaction as the final Buy, along with TradingEnabled and — for non-protocol tokens on V4 chains — SecondaryReserved. A graduation is therefore one receipt containing five or six events across four contracts.
Both branches never fire together
FeesDistributed always accompanies a successful distribution, followed by exactly one of Reinvested or BuyAndBurn. If you are aggregating "value returned to holders", counting both would double-count — they are alternatives, not stages.
Supply reconstruction
Burns land as Transfer to 0x…dEaD, which covers dust cleanup that emits no dedicated event. Combining BuyAndBurn, SecondaryTokenBurn and dead-address transfers gives complete destruction accounting — or simply read totalSupply(), which only falls after graduation.