> Bull Launch docs. Every page is available as Markdown by adding `.md` to its URL; the index is https://bulllaunch.fun/llms.txt. This page on the web: https://bulllaunch.fun/docs/events

# Onchain events

The events to index, with their signatures and topic0 hashes.

For a trust-minimized integration, index `LauncherFactory` for new coins and the hook for curve activity and graduation. The pool id is stable from launch, so you can register a coin's pool once and index PoolManager swaps for it from then on.

| Event | Emitted by | Signature | topic0 |
| --- | --- | --- | --- |
| Coin created | LauncherFactory | `TokenCreated(address)` | `0x2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e` |
| Coin launched | LauncherFactory, carries the full launch config | `TokenLaunched(address,address,address,address,uint256,uint256,bytes32,uint256,uint256,string,string,uint256,uint128,uint16,uint8)` | `0x4bc3e1c7563116fd43fe920faebc0e711cddc122034360e8c8e1b4c81c5267a5` |
| Pool registered | Hook, maps poolId to coin, base and creator | `PoolRegistered(bytes32,address,address,address)` | `0x01bf263a1db1652580721573296e1a1fa70b3d4c87f61d02a69c4e1109d2d573` |
| Buy on the curve | Hook, last field is progressBps | `CurveBuy(address,address,uint256,uint256,uint256,uint256,bytes32,address,uint16)` | `0xc1742a443d639e06cae611e6969aa3e066a8edf9ca632e4d45b9167f487d1785` |
| Sell on the curve | Hook | `CurveSell(address,address,uint256,uint256,uint256,uint256,bytes32,address,uint16)` | `0xcf93b133041e0c9edcb77b3088a72ce25e769d56f3df661c1b0db04a3fe7fa0d` |
| Graduated | Hook, emitted inside the crossing swap | `PoolGraduated(address,uint256,uint256,uint256)` | `0x0a44ef75df69c534f43cd6c1aa3ef8983065fe5fe79ef9e79f6494e6f258c259` |
| Swap | Uniswap v4 PoolManager | `Swap(bytes32,address,int128,int128,uint160,uint128,int24,uint24)` | `0x40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f` |

Every topic0 above is computed from the ABIs this app trades through.
