| Mode | collectFeeMode | Price Range | Single-Sided | Fee Behaviour |
|---|---|---|---|---|
| BothToken | 0 | Concentrated or full | ✅ | Fees claimable in both tokens |
| OnlyB | 1 | Concentrated or full | ✅ | Fees claimable in quote token only |
| Compounding | 2 | Full range only | ❌ | Portion of fees auto-compounds back into liquidity |
Concentrated Liquidity Pools
Concentrated liquidity pools allow LPs to focus capital within a chosen price range, earning more fees per dollar deposited when the market price stays within range. These usecollectFeeMode 0 (BothToken) or 1 (OnlyB).
Key characteristics:
- Custom price range — Set
minPrice/maxPriceto concentrate liquidity. UseMIN_SQRT_PRICE/MAX_SQRT_PRICEfor full-range. - Single-sided supported — Deposit only token A (one-sided) or both tokens (balanced).
- Fees claimable — LPs claim accumulated fees separately from their position.
TypeScript SDK
Compounding Fee Pools
Compounding fee pools use a constant-product full-range (x·y=k) model where a configurable percentage of trading fees are automatically reinvested back into pool liquidity as token B. The remaining fees are claimable by LPs. Key characteristics:- Full-range only — Uses the full price range.
minPrice/maxPriceconfig values are ignored. - Balanced pools only — Both tokens required at creation. Single-sided deposits are not supported due to DEAD_LIQUIDITY.
collectFeeMode: 2—CollectFeeMode.Compounding.compoundingFeeBps— Controls the fee split (0–10000 bps). E.g.5000= 50% compounds back, 50% claimable.- Fee fields — Swap results expose
claimingFee+compoundingFeeinstead of a singletradingFee.
Compounding pools work best for long-term LPs who want fee income to grow their position size automatically.

