Launch Settings
Every field in the factory's DeployParams struct, what it does, and what constrains it.
Identity
| Field | Type | Notes |
|---|---|---|
name | string | Token name. No on-chain length limit. |
symbol | string | Token symbol. No on-chain length limit. |
ipfsHash | string | The projectCid from /api/launch/prepare. |
Market
| Field | Type | Notes |
|---|---|---|
pairedToken | address | What the token trades against. address(0) defaults to WETH. Must be in the factory's allowed-pairs list. |
tokenType | uint8 | 0 = meme, 1 = utility. See Token Types. |
fee | uint24 | Pool fee tier, e.g. 10000 = 1%. Must be a member of getAllowedFees(tokenType). |
startingTick | uint24 | Starting price, expressed as a positive tick value. Must be a member of getValidTicks(pairedToken, tokenType). |
Reading valid ticks and fees: don't hardcode these, they're queryable and can change:
const validTicks = await factory.getValidTicks(pairedToken, tokenType);
const allowedFees = await factory.getAllowedFees(tokenType);startingTick sets the pool's initial price ratio between the token and its paired asset. Because a tick is just a price ratio, the same tick value means the same relative starting valuation regardless of which paired token's decimals are involved. The official app curates these into human-readable "starting market cap" presets (e.g. "$1k", "$4k", "$8k") on top of the raw tick values.
Dev buy (optional)
An immediate buy executed atomically inside the same transaction as launch, before anyone else can trade.
| Field | Type | Notes |
|---|---|---|
devBuyAmountIn | uint256 | Amount of the paired token to spend on an immediate buy. For non-WETH pairs; requires an ERC20 approve() to the factory beforehand. |
For WETH pairs, skip devBuyAmountIn and instead send extra ETH as msg.value on top of the deploymentFee. The factory wraps it and buys with it directly.
Sniper protection (optional)
| Field | Type | Notes |
|---|---|---|
sniperProtected | bool | Enables stepped max-wallet limits for the first 10 minutes after launch. See Sniper Protection. |
Holder rewards (optional)
| Field | Type | Notes |
|---|---|---|
hasRewards | bool | Enables routing a cut of LP fees to token holders. |
rewardToken | address | Must already be whitelisted on the locker, check with isRewardTokenAllowed(). Ignored if hasRewards is false. |
distributorFeePercentage | uint8 | 0–100. % of post-platform LP fees routed to the distributor. Ignored if hasRewards is false. |
See Fees & Holder Rewards for the full mechanics and payout math.
Agent NFT voucher
| Field | Type | Notes |
|---|---|---|
agentCid | string | Same value as ipfsHash / projectCid. |
agentSignature | bytes | The voucher from /api/launch/prepare, signed over agentCid. |
Fee recipients (optional)
By default, 100% of the creator's fee share goes to whoever holds the Agent NFT. You can instead split it across up to 5 wallets at launch time:
| Field | Type | Notes |
|---|---|---|
feeRecipientWallets | address[] | Up to 5 wallets. Empty = all fees to the Agent NFT owner. |
feeRecipientBps | uint16[] | Basis points per wallet (10000 = 100%), same length as feeRecipientWallets. |
This split can also be configured after launch via the locker, see the Agent NFT page.
Fixed invariants (not configurable)
A few things are the same for every launch, by design:
- Supply: 1,000,000,000 tokens, always.
- Decimals: 18, always.
- LP composition: 100% of the token supply, one-sided. No paired-token liquidity is deposited at launch.
- Lock duration: 750 days, non-negotiable. See Liquidity Locking.
