Factory
struct LaunchParams {
string name;
string symbol;
string metadataURI; // JSON: description, image, website, x, telegram
address pair; // zero for HYPE (WHYPE)
uint256 minPairOut; // minimum pair amount for the dev-buy conversion
uint8 capPreset; // index into capPresets()
Genes genes;
StageParam[] stages; // empty for a Liqio launch
}
struct Genes {
uint8 feeMode; // 0 flat (Liqio)
uint16 feeBps; // 10..300
uint16 snipeBps; // 0, or feeBps+1..3000
uint32 snipeBlocks; // 0, or 5..7200
uint16 buybackShareBps; // 0, or 1..5000 (with divShareBps at most 8000 together)
uint16 divShareBps; // holder rewards, 0..5000
uint16 maxWalletBps; // 0, or 50..2000
uint32 maxWalletSecs; // 0, or 600..2592000
uint128 buybackThreshold; // 0, or at least 1000 pair base units
}Launched(token, creator, pair, poolId, pairUsdPrice), DevBought(token, creator, ethIn, pairIn, coinOut) (ethIn is the HYPE sent), CreatorMetadataSet(token, uri), CreatorTransferStarted(token, from, to), CreatorTransferred(token, from, to), CreatorActive(token, creator), TakeoverProposed(token, proposer, newCreator), TakeoverCancelled(token, by), TakeoverExecuted(token, from, to), and, once each in the deployment sequence, ConverterSet(converter) and OwnershipRenounced(). There are no operator events. Errors: InvalidParams, BadGenes, ZeroAddress, NotCreator, TakeoverClosed.
Hook
Hook events:
PoolRegistered(token, pair, id, creator), FeeTaken(token, fee, bps), CreatorPaid(token, to, amount), PlatformPaid(token, to, amount), DividendsPushed(token, amount), BuybackBurned(token, pairIn, coinsBurned), RewardsCredited(token, trader, cashback, referrer, referral), RewardsClaimed(user, pair, amount), ReferrerBound(trader, referrer), CreatorChanged(token, from, to), and, once each at deployment, RouterSet(router) and FactorySet(factory). Errors: LaunchBlockClosed, BuyCapExceeded, NotThisPool, NothingToPush, NoHolders, BadGenes, InvalidParams, NotFactory, NotDeployer, AlreadySet, ZeroAddress. The hook also carries the Evolved event and the dynamic and MEV-tax fee modes, which Liqio launches do not use.
Router
Route format:
abi.encode(Hop[]) with struct Hop { uint8 dex; address pool; PoolKey key; }. dex is 1 for a Uniswap v2 pair (by pool address), 2 for a Uniswap v3 pool or a v3 fork such as PRJX (by pool address), 3 for a Uniswap v4 pool (by key; a zero currency0 means native HYPE) and 4 for an Algebra pool such as KittenSwap (by pool address). At most four hops. A buy walks the hops from WHYPE to the pair; a sell walks them backwards. The route must start at WHYPE and end at the pair or the call reverts BadRoute. Events: Bought(coin, buyer, ethIn, pairIn, coinOut), Sold(coin, seller, coinIn, pairOut, ethOut), where ethIn and ethOut are HYPE amounts, zero for a trade in the pair itself. Errors: NotListed, Slippage, ZeroAmount, BadRoute, ZeroAddress; QuoteResult(amount) is the result of a quote, not a failure.
Token deployer
Token deployer events:
FactorySet(factory), CoinCreated(coin, salt, dividends). Errors: NotFactory, AlreadySet, ZeroAddress, NoSalt, NoPeers.
Coin
The rewards variant (
LiqioDivToken) adds:
Coin events:
Transfer, Approval; the rewards variant adds DividendsDistributed(amount) and DividendsClaimed(holder, amount). Errors: NotHook, NoShares, InvalidParams, WrongInit.
Price oracle
The precompile takes
abi.encode(uint32 marketIndex) and returns a uint64 with 6 − szDecimals decimals; the oracle scales it to 18 decimals per 1e18 base units, applies the multiplier and, for a wrapped xStock, the wrapper's convertToAssets(1e18) ratio. The oracle has no owner and emits no events after deployment. A token not in its list cannot be launched against (NoPrice); adding a pair token means a new Liqio version with its own factory and oracle. Errors: NoPrice, InvalidParams.