Liquidity and coin amounts calculation

Liquidity, coin amount, price and tick.

1. Liquidity to CoinAmount

use ClmmPoolUtil.getCoinAmountFromLiquidity method.

Example

this is an example shows how to calculate coin amounts about one position.

import BN from 'bn.js'
import { TickMath, ClmmPoolUtil } from '@cetusprotocol/cetus-sui-clmm-sdk'

const pool = await sdk.Pool.getPool(poolAddress)
const position = await sdk.Position.getSimplePosition(positionAddress)\
const lowerSqrtPrice = TickMath.tickIndexToSqrtPriceX64(position.tick_lower_index)
const upperSqrtPrice = TickMath.tickIndexToSqrtPriceX64(position.tick_upper_index)

const liquidity = new BN(position.liquidity)
const curSqrtPrice = new BN(pool.current_sqrt_price)

const lowerSqrtPrice = TickMath.tickIndexToSqrtPriceX64(position.tick_lower_index)
const upperSqrtPrice = TickMath.tickIndexToSqrtPriceX64(position.tick_upper_index)
const amounts = ClmmPoolUtil.getCoinAmountFromLiquidity(
  liquidity,
  curSqrtPrice,
  lowerSqrtPrice,
  upperSqrtPrice,
  false
)

const {coinA, coinB} = amounts

Last updated