Turbos
  • 📖About Turbos
    • Getting Started
    • About Turbos Finance
    • Why Sui Network
  • 📽️Products
    • Concentrated Liquidity AMM
      • Fee Tier for Token Pairs
      • Oracle
    • Automated Rebalance Vault
      • Step-by-Step Guide
      • Referral Program
    • TurboStar
    • TurbosBoost
  • 💡Protocol Concepts
    • About Concentrated Liquidity
    • Fee Tiers
    • Glossary
  • 🪙Tokenomics
    • TURBOS
    • Token Utility
    • Emission Distribution
  • ⚙️Others
    • Roadmap
    • Audits
    • Brand kit
    • Risks
    • Token Address
  • Developer Docs
    • Dev Overview
    • via SDK
      • Get Started
      • Initialize SDK
      • Clmm
        • getConfig
        • getFeesConfig
        • getPools
        • getPool
        • createPool
        • createAndAddLiquidity
        • increaseLiquidity
        • decreaseLiquidity
        • removeLiquidityAndBurn
        • preSwap
        • swap
        • collect Fees
        • collect Rewards
        • Fee
        • Liquidity and coin amounts calculation
        • APR calculation
      • Vault
        • createAndDepositVault
        • depositVault
        • withdrawVault
        • withdrawAllVault
        • collectClmmRewardDirectReturnVault
        • closeVault
        • computeTokenWithdrawVaultSwapResult
        • getVaultBalanceAmount
        • getMyVaults
  • Turbos Fun
    • Base
    • Create Pool
    • Calculate Token Amount
    • Buy
    • Sell
  • 📱Socials
    • Official website
    • Twitter
    • Discord
    • Medium
    • Zealy
  • Tutorials
    • Supported Wallets
      • SafePal Wallet
    • Move tutorial
    • Sui tutorial
Powered by GitBook
On this page
  • Signature
  • Params
  • Examples
  1. Developer Docs
  2. via SDK
  3. Clmm

collect Fees

Adding liquidity within a valid price range allows for the distribution of transaction fees based on each position's proportional share of effective liquidity in that range. To harvest transaction fees separately, please follow the method outlined below.

Signature

async collectFee(options: Pool.CollectFeeOptions): Promise

Params

export interface CollectFeeOptions extends Pick<Pool.MintParams, 'pool' | 'txb' | 'address' | 'deadline'> {
    /**
     * Position NFT ID
     */
    nft: string;
    collectAmountA: string | number;
    collectAmountB: string | number;
  }

collectAmountA & collectAmountB

The maximum value of u64 can be passed in, so the contract will automatically handle extracting all fees.

Examples

Get unclaimed fee amounts

const turbosSdk = new TurbosSdk(Network.testnet, {
  url: 'https://fullnode.testnet.sui.io',
});
//const signer = turbosSdk.account.getKeypairFromMnemonics("your mnemonic");
const signer = services.turbosBaseService.signer;
const poolId = '0xb32fb8ec0b447a833066496bd7251d3a2ee57a0a97c54bf4cc945a986235582a';
const positionId =
  '0xb7efa54832e000dcb8879e586f74cec55623105920c96f5f1ebe78a60f9cbd3b';
const txb = await turbosSdk.pool.collectFee({
  pool: poolId,
  nft: positionId,
  collectAmountA: MAX_UINT_64.toString(),
  collectAmountB: MAX_UINT_64.toString(),
  address: signer.toSuiAddress(),
});
const result = await turbosSdk.provider.devInspectTransactionBlock({
  transactionBlock: txb,
  sender: signer.toSuiAddress(),
});
const collectEvent = result.events.filter((event) =>
  event.type.endsWith('::pool::CollectEvent'),
);
const amountA = collectEvent[0]!.parsedJson!.amount_a!;
const amountB = collectEvent[0]!.parsedJson!.amount_b!;
console.log(amountA, amountB);

Collect fees

const turbosSdk = new TurbosSdk(Network.testnet, {
  url: 'https://fullnode.testnet.sui.io',
});
//const signer = turbosSdk.account.getKeypairFromMnemonics("your mnemonic");
const signer = services.turbosBaseService.signer;
const poolId = '0xb32fb8ec0b447a833066496bd7251d3a2ee57a0a97c54bf4cc945a986235582a';
const positionId = '0xb7efa54832e000dcb8879e586f74cec55623105920c96f5f1ebe78a60f9cbd3b';
const txb = await turbosSdk.pool.collectFee({
  pool: poolId,
  nft: positionId,
  collectAmountA: MAX_UINT_64.toString(),
  collectAmountB: MAX_UINT_64.toString(),
  address: signer.toSuiAddress(),
});
const result = await turbosSdk.provider.signAndExecuteTransaction({
  transaction: txb,
  signer,
});
console.log(result);
PreviousswapNextcollect Rewards

Last updated 1 day ago