# LNCHR

Packs of tokenized stocks, as a pair asset for any launchpad.

Chain 4663 (Robinhood Chain). Machine-readable manifest: https://lnchr.io/.well-known/lnchr.json
Full documentation for agents: https://lnchr.io/llms-full.txt

## Contracts
- PackRegistry 0x4A8068513f0ada1c8E78Da3D2E3E5D589FA38CDC
- PackHook 0x0225a740822094d0d8c21b20A9a0f6d254E36888
- PackLens 0x95f46AC3b3d1694A769E70dcB51Ba6335524D5Cf
- PackRouter 0xf870ADAA57A5cFB359B6b4A5eE8AaF8156DB480E

## Rules
1. Use the deployed registry. Do not redeploy PackRegistry, PackVault or PackHook. A pack must have one address per chain, or holders, charts and every integration built on it fragment.
2. A pack is identified by its ordered stock list. The same stocks in a different order are a different pack. Ask the registry with predict() before assuming a pack exists.
3. Registration is permissionless and costs network gas only. Any address can register a pack and every launchpad sees it immediately.
4. Read pack state through PackLens. It returns composition, holdings, supply and NAV in one call, so you never have to touch registry internals.
5. Route pack trades through PackRouter. Driving the v4 PoolManager unlock yourself is the one part of this that is genuinely hard to get right.
6. Pack pools hold no reserves and accept no liquidity. Do not try to add liquidity, quote them through a generic aggregator, or read a reserve balance to price them. Price comes from PackLens.navUsdg or from the underlying stock markets.

## If you are pairing a launchpad against packs
Accept any quote asset for which `PackRegistry.isPack(quote)` returns true, price the opening market cap
from `GET https://lnchr.io/api/nav?pack=0x...`, and route buys as `ETH -> PACK -> TOKEN` with hop one on the
pack pool. Start from https://lnchr.io/integrate. Install `@lnchr/sdk`.
