const turbosSdk = new TurbosSdk(Network.testnet, {
url: 'https://fullnode.testnet.sui.io',
});
const signer = turbosSdk.account.getKeypairFromMnemonics("your mnemonic");
const poolId = '0x328572f9d3c99bdb0a2da46fa61ef7917e1d35e67ec9472d412aa82b4a5222b2';
const pool = await turbosSdk.pool.getPool(poolId);
const positionId =
'0x0d367b3a64002124e8021293983be069bfcf81c6f1b905a0ebff693809f526a3';
const position = await turbosSdk.nft.getPositionFields(positionId);
// decrease 50% of the liquidity
const decreaseLiquidity = (Number(position.liquidity) * 0.5).toFixed(0);
const amounts = turbosSdk.pool.getTokenAmountsFromLiquidity({
currentSqrtPrice: new BN(pool.sqrt_price),
lowerSqrtPrice: turbosSdk.math.tickIndexToSqrtPriceX64(
turbosSdk.math.bitsToNumber(position.tick_lower_index.fields.bits),
),
upperSqrtPrice: turbosSdk.math.tickIndexToSqrtPriceX64(
turbosSdk.math.bitsToNumber(position.tick_upper_index.fields.bits),
),
liquidity: new BN(decreaseLiquidity),
});
console.log(amounts);
const txb = await turbosSdk.pool.decreaseLiquidity({
pool: poolId,
nft: positionId,
decreaseLiquidity,
amountA: amounts[0].toString(),
amountB: amounts[1].toString(),
address: signer.toSuiAddress(),
slippage: 10, //10% slippage
});
const result = await turbosSdk.provider.signAndExecuteTransaction({
transaction: txb,
signer,
});
console.log(result);