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.
Copy export interface CollectFeeOptions extends Pick<Pool.MintParams, 'pool' | 'txb' | 'address' | 'deadline'> {
/**
* Position NFT ID
*/
nft: string;
collectAmountA: string | number;
collectAmountB: string | number;
}
The maximum value of u64 can be passed in, so the contract will automatically handle extracting all fees.
Copy 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);
Copy 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);