Provide Liquidity (V3)
V3 allows LPs to concentrate liquidity within a specific price range for higher capital efficiency. Each position is an NFT with unique parameters.
Create a Position
1. Choose Pool Parameters
- Token pair: The two tokens
- Fee tier: 0.01%, 0.05%, 0.3%, or 1% (see Fee Tiers)
- Price range:
[tickLower, tickUpper] (see Ticks and Ranges)
2. Get Current Pool State
3. Calculate Tick Range
Align your desired price range to the pool’s tick spacing:
4. Approve Tokens
5. Mint Position
token0 must have a lower address than token1. Sort them before calling.
With Native KAS
If one token is KAS, send it as value instead of approving WKAS:
Increase Liquidity
Add more tokens to an existing position (same tick range):
Collect Fees
Claim accumulated trading fees:
Remove Liquidity
1. Decrease Liquidity
2. Collect the Tokens
After decreasing, tokens are held by the Position Manager. Call collect() to withdraw:
3. Burn the NFT (Optional)
After removing all liquidity and collecting all tokens/fees:
Single-Sided Positions
You can create positions entirely above or below the current price:
Key Points
- Each position is an NFT — track
tokenId for future operations
- Fees must be explicitly collected (they don’t auto-compound)
- Out-of-range positions earn no fees until price re-enters the range
- Narrower ranges = higher capital efficiency but more active management needed
- Use
multicall() on the Position Manager to batch decrease + collect in one transaction