Skip to main content
The MarketThree.computeFeeInsideForRange() static method computes the fee growth that has occurred inside a specified tick range. This is essential for calculating fees earned by liquidity positions.

Usage

import { MarketThree } from "@exponent-labs/exponent-sdk";

// Compute fee growth inside a tick range
const { insideSy, insidePt } = MarketThree.computeFeeInsideForRange({
  currentTickPrice: market.state.financials.currentSpotPrice,
  lowerTickPrice: 1.05,  // Lower bound: 5% APY
  upperTickPrice: 1.10,   // Upper bound: 10% APY
  feeGrowthIndexGlobalPt: market.state.financials.feeGrowthIndexGlobalPt,
  feeGrowthIndexGlobalSy: market.state.financials.feeGrowthIndexGlobalSy,
  lowerTickOutsidePt: lowerTick.feeGrowthOutsidePt,
  lowerTickOutsideSy: lowerTick.feeGrowthOutsideSy,
  upperTickOutsidePt: upperTick.feeGrowthOutsidePt,
  upperTickOutsideSy: upperTick.feeGrowthOutsideSy,
});

console.log("SY fee growth inside range:", insideSy);
console.log("PT fee growth inside range:", insidePt);

Parameters

ParameterTypeRequiredDescription
currentTickPricenumberYesCurrent market price in format of 1 + percentage / 100
lowerTickPricenumberYesLower tick boundary price in format of 1 + percentage / 100
upperTickPricenumberYesUpper tick boundary price in format of 1 + percentage / 100
feeGrowthIndexGlobalPtbigintYesGlobal PT fee growth index
feeGrowthIndexGlobalSybigintYesGlobal SY fee growth index
lowerTickOutsidePtbigintYesPT fee growth outside the lower tick
lowerTickOutsideSybigintYesSY fee growth outside the lower tick
upperTickOutsidePtbigintYesPT fee growth outside the upper tick
upperTickOutsideSybigintYesSY fee growth outside the upper tick

Returns

Returns an object with:
{
  insideSy: bigint;
  insidePt: bigint;
}
PropertyTypeDescription
insideSybigintSY fee growth that occurred inside the tick range
insidePtbigintPT fee growth that occurred inside the tick range

Calculation Logic

The method implements the Uniswap V3 formula for computing fee growth inside a range:
  • If current price < lower price: inside = outside(lower) - outside(upper)
  • If current price >= upper price: inside = outside(upper) - outside(lower)
  • If current price is inside range: inside = global - outside(lower) - outside(upper)
This allows tracking of fees earned specifically within the position’s active range.