> ## Documentation Index
> Fetch the complete documentation index at: https://docs.o1.exchange/llms.txt
> Use this file to discover all available pages before exploring further.

# Functions and events

> Public functions, important reads, and events for the current o1 Launchpad contracts.

This developer reference summarizes the public contract surface. Use the verified explorer ABI for exact transaction encoding.

## Launch factories

Base crypto launches use `B20LaunchpadFactory`. Robinhood crypto launches use `ERC20LaunchpadFactory`, while Robinhood stock launches use `RWAERC20LaunchpadFactory`. A Base `RWAB20LaunchpadFactory` deployment exists for a future stock route. It becomes available after its shared quote catalog and live registration and enablement state are ready. The factory types share the same core launch flow.

| Surface                  | Important members                                                                                                                             |
| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| Create                   | `createLaunch(LaunchParams)` creates the token, distributes allocations, registers vesting, opens the pool, and seeds permanent liquidity     |
| Configuration reads      | `quotes`, `feeDefaults`, `launchSupply`, `tickSpacing`, `bands`, `announcementRegistry`, and `vestingVault`                                   |
| Transaction-safety reads | `configVersion` and `usedLaunchSalts`                                                                                                         |
| Contract limits          | `MIN_SUPPLY`, `MAX_SUPPLY`, `MAX_ALLOCATIONS`, `MAX_VESTED_ALLOCATIONS`, `MIN_VESTING_DURATION`, `MAX_VEST_STEPS`, and `MAX_TOTAL_VEST_STEPS` |
| Future-launch governance | Quote, opening setting, creation fee, supply, liquidity, fee, treasury, announcement, and ownership updates                                   |

### Stock factory extensions

| Surface              | Important members                                                                                                                 |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| Route state          | `launchCreationEnabled`, `nativeLaunchFee`, and `priceUpdater`                                                                    |
| Quote state          | `quoteRevision(quote)` plus the common `quotes(quote)` record                                                                     |
| Quote batches        | `batchRegisterQuotes`, `batchSetQuoteStartTicks`, and `batchUnregisterQuotes`, with at most 64 entries                            |
| Token address        | `TOKEN_ADDRESS_SUFFIX()` returns `1`; the factory rejects any stock-paired launch token that does not end in `01`                 |
| Robinhood prediction | `launchTokenBytecodeHash(LaunchParams, creator)` exposes the final bytecode hash used to prepare the deterministic ERC-20 address |

The available Robinhood stock route currently reports a zero `nativeLaunchFee`. Standard crypto quotes also currently report a zero creation fee. A deployed factory or zero fee does not by itself make a route available; catalog, quote registration, and launch-enabled state must also agree.

### Launch events

| Event                                               | Meaning                                                                                                        |
| --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `Launched`                                          | Token, pool ID, creator, quote, supply, and liquidity spacing                                                  |
| `LaunchFeePaid`                                     | Creation-fee payer, currency, fee receiver, and amount; it is emitted only when the configured fee is non-zero |
| `QuoteRegistered` / `QuoteUnregistered`             | Supported quote changes                                                                                        |
| `QuoteCreationFeeUpdated`                           | Creation-fee change for a quote                                                                                |
| `BandTemplateUpdated`                               | Future liquidity-range change                                                                                  |
| `FeeDefaultsUpdated`                                | Future fee split, anti-snipe, or treasury change                                                               |
| `LaunchSupplyUpdated` / `TickSpacingUpdated`        | Future supply or range-alignment change                                                                        |
| `OwnershipTransferStarted` / `OwnershipTransferred` | Governance ownership change                                                                                    |

Stock factories additionally emit `QuoteRevisionUpdated`, `PriceUpdaterUpdated`, `NativeLaunchFeeUpdated`, and `LaunchCreationEnabledUpdated`.

## LaunchHook

The hook exposes `poolConfig` for each launch pool. The factory registers and seeds a pool; ordinary trading then occurs through Uniswap v4.

| Event            | Meaning                                                                                                                  |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `PoolRegistered` | The pool's frozen creator, platform fee receiver, and fee settings                                                       |
| `Seeded`         | Token amount placed into the permanent position                                                                          |
| `Trade`          | Executor, referrer, fee currency, fee amount, and optional comment; swap direction comes from the matching Uniswap event |

`Trade.executor` is the router or callback sender and is not guaranteed to be the trader's wallet. Indexers should derive direction and trader attribution from the complete transaction receipt, including the matching Uniswap swap and router execution context.

## FeeEscrow

| Function                     | Who can call  | Result                                          |
| ---------------------------- | ------------- | ----------------------------------------------- |
| `owed(recipient, currency)`  | Anyone        | Returns the raw claimable fee balance           |
| `claim(recipient, currency)` | Anyone        | Pays the full balance to the recorded recipient |
| `claimTo(currency, to)`      | Balance owner | Pays the caller's balance to a chosen address   |

Events: `Credited` and `Claimed`.

## VestingVault

| Function                          | Who can call | Result                                                   |
| --------------------------------- | ------------ | -------------------------------------------------------- |
| `claimable(token, beneficiary)`   | Anyone       | Returns tokens currently available to claim              |
| `getSchedule(token, beneficiary)` | Anyone       | Returns the allocation, claimed amount, and unlock steps |
| `claim(token, beneficiary)`       | Anyone       | Sends available tokens to the recorded beneficiary       |

Events: `Registered` and `Claimed`.

## AnnouncementRegistry

| Function                            | Who can call     | Result                                                |
| ----------------------------------- | ---------------- | ----------------------------------------------------- |
| `creatorOf(token)`                  | Anyone           | Returns the creator allowed to announce for the token |
| `usedId(token, id)`                 | Anyone           | Checks whether an announcement ID was used            |
| `post(token, id, description, uri)` | Recorded creator | Publishes a unique announcement                       |

Events: `CreatorRegistered` and `Announcement`.

## Robinhood launch tokens

Robinhood tokens expose standard ERC-20 reads and transfers. When profile editing was enabled at launch, the metadata authority can call `updateName`, `updateSymbol`, `updateContractURI`, and `updateExtraMetadata`. No mint, burn, pause, owner, upgrade, or recovery function exists.

Robinhood stock-paired tokens use the same `LaunchToken` implementation but are created through the separate stock factory and must end in `01`.

## Common launch errors

| Error                                | Meaning                                                             |
| ------------------------------------ | ------------------------------------------------------------------- |
| `StaleConfig`                        | Refresh the current factory settings and rebuild the transaction    |
| `LaunchExpired`                      | Use a fresh deadline                                                |
| `QuoteNotRegistered`                 | The selected quote is unavailable                                   |
| `LaunchCreationDisabled`             | New stock-paired launches are currently switched off                |
| `StaleQuoteRevision`                 | A stock opening-price update used an outdated quote revision        |
| `InvalidTokenAddressSuffix`          | The prepared stock-paired token address does not end in `01`        |
| `LaunchSaltUsed`                     | Use a new launch identifier                                         |
| `InvalidLaunchFeePayment`            | The creation-fee payment was not exact                              |
| `OutOfBounds` / `InvalidConfig`      | A hard limit or related-field rule failed                           |
| `NotImmutable`                       | The created token failed its fixed-authority checks                 |
| `NotSingleSided`                     | Opening liquidity would require the paired asset                    |
| `LiquidityLocked`                    | The requested liquidity change is not allowed                       |
| `ExactOutputDisabledDuringAntiSnipe` | Use an input-amount trade or wait until the normal fee begins       |
| `PartialFillUnsupported`             | The requested quote-specified amount could not be filled completely |
