Choose a market path
Create a token independently, then choose a direct CLMM or a virtual-reserve curve.
Token issuance and market creation are separate decisions. You can bring an existing supported token or use the token factory. Neither route automatically creates every possible token pair or supplies liquidity.
flowchart LR Token[Create or bring token] --> Direct[Initialize CLMM / fund positions] Token --> Curve[Initialize virtual-reserve curve] Curve --> Target[Reach net quote target] Target --> Graduate[Separate atomic graduation] Direct --> CLMM[CLMM swaps and LP lifecycle] Graduate --> CLMM
Direct CLMM
Choose initial square-root price, tick spacing, fee shares, and an optional hook. Open and fund positions around that price. Full-range and concentrated positions use the same accounting. An out-of-range position can be single-sided; a zap can convert part of one asset into an in-range deposit.
This path makes sense when the creator can choose an initial price and provide both sides or a deliberate inventory range. A market still needs real quote liquidity before it can pay sellers.
Virtual-reserve curve
Choose real base inventory, virtual A/B reserves, a protected bootstrap allocation, and a target in net quote atoms. The pool prices buys and sells under those parameters, but virtual reserves cannot fund redemptions. See bonding curve accounting.
After the target is reached, graduate_curve uses real principal and retained LP-share fees to fund a creator-owned full-range CLMM position. Protocol and beneficiary fee debts stay reserved. The pool, vaults, mints, and hook binding remain the same. The Q64.64 marginal price is preserved; matching price does not imply matching depth or future slippage.
Decide before initialization
| Decision | Why it matters |
|---|---|
| Quote asset | Defines the units of price and the curve target; WSOL is not a USD oracle |
| Initial supply and authority | Defines issuance, not automatic liquidity or circulating supply |
| Tick spacing | Defines valid CLMM range boundaries and graduation's full range |
| Input fees and beneficiaries | Define costs and liabilities in the input token |
| Optional hook and permissions | Define callbacks, custom policy, and allowed external effects |
| Curve bootstrap floor and target | Constrain reachability and graduation backing |
The hook configuration is bound to the pool. A curve's graduation preserves it rather than silently creating an unrestricted destination pool. Policy behavior can still depend on pool_mode, so inspect the hook implementation.
Use protocol capabilities to check the supported operations and interface versions for either path.