Manage Liquidity Programmatically
Auto LP
Providing and Withdrawing Liquidity via API
1
2
import { createPublicClient, createWalletClient, http, Hex } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { TurbineClient, getRandomSalt } from "turbine-sdk";
const account = privateKeyToAccount(PRIVATE_KEY);
const walletClient = createWalletClient({
account: account,
chain: mainnet,
transport: http(RPC_URL),
});
const publicClient = createPublicClient({
chain: mainnet,
transport: http(RPC_URL),
});
const turbineClient = await TurbineClient.create(
walletClient,
publicClient,
TURBINE_API_URL
);3
4
const pools = await turbineClient.getPools();[
{
metadata: {
token0: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
token1: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
fee: 3000,
lpToken: '0xB03aC5cabFc98DB26C0D9eA232E1e900724d91F3'
},
state: { reserve0: 0n, reserve1: 0n, liquidity: 0n },
stats: { weeklySellVolumeToken0: 0n, weeklySellVolumeToken1: 0n }
},
{
metadata: {
token0: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
token1: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
fee: 10000,
lpToken: '0x2bcF0170103930dc12d748c8b54205a36B7351dA'
},
state: { reserve0: 10000000000n, reserve1: 500000000000000000n, liquidity: 250000005000000000n },
stats: { weeklySellVolumeToken0: 0n, weeklySellVolumeToken1: 0n }
}
]5
const liquidityIntent: AddLiquidityIntent = {
owner: account.address,
token0: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" as Hex,
token1: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" as Hex,
fee: 10000,
token0Amount: 1000000000n,
token1Amount: 100000000000000000n,
exact: true,
salt: getRandomSalt(),
};const liquidityIntent: RemoveLiquidityIntent = {
owner: account.address,
token0: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" as Hex,
token1: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" as Hex,
fee: 10000,
lpToken: "0x2bcF0170103930dc12d748c8b54205a36B7351dA" as Hex,
lpTokenAmount: 100000002000000000n,
salt: getRandomSalt(),
};6
const intentHash = await turbineClient.addLiquidity(liquidityIntent);const intentHash = await turbineClient.removeLiquidity(liquidityIntent);7
const intentState = (await turbineClient.getLiquidityIntents([intentHash]))[0];
console.log(intentState.status);Directly Withdrawing Liquidity Onchain
1
2
3
See also
Last updated
Was this helpful?