@chopsuilab/sui-v1-sdk
v1.0.7
Published
SDK for use any functions of ChopSUI v1 Protocol
Downloads
19
Readme
ChopSUILab Sui v1 Protocol SDK
The typescript SDK for ChopSUILab Sui v1 protocol.
Installation
yarn add "@chopsuilab/sui-v1-sdk"
Usage Example
Init SDK
import SDK, { NetworkType } from "@chopsuilab/sui-v1-sdk";
const sdk = new SDK(NetworkType.Testnet);
Is pair exist
(async () => {
const SUI = "0x2::sui::SUI";
const BTC =
"0x16fe2df00ea7dde4a63409201f7f4e536bde7bb7335526a35d05111e68aa322c::TestCoinsV1::BTC";
const output = await sdk.swap.isPairExist(SUI, BTC);
})();
Add liquidity rate calculation and txb.
If pair not exists, tx will create pair first
(async () => {
const SUI = '0x2::sui::SUI'
const BTC = '0x16fe2df00ea7dde4a63409201f7f4e536bde7bb7335526a35d05111e68aa322c::TestCoinsV1::BTC'
const walletAddress = '0xdeadbeef'
const isPairExist = await sdk.swap.isPairExist(SUI, BTC)
if (isPairExist) {
// Add liqudity with a given rate
const amountIn = 1e8
const output = await sdk.swap.addLiquidityRates({
coinX: SUI,
coinY: BTC,
fixedCoin: 'X', // 'X' | 'Y'
amount: amountIn, // fixedCoin amount
})
/**
output type:
{
amount: Decimal
coinXDivCoinY: Decimal
coinYDivCoinX: Decimal
shareOfPool: Decimal
}
*/
const txb = sdk.swap.addLiquidityPayload({
address::walletAddress
coinX: SUI,
coinY: BTC,
amountX: amountIn,
amountY: output.amount,
slippage: 0.05, // 5%
})
/**
output type: txb
*/
} else {
// Create pair and add initial liquidity
const txb = sdk.swap.addLiquidityPayload({
address::walletAddress
coinX: SUI,
coinY: BTC,
amountX: 1e8, // any amount you want
amountY: 1e7, // any amount you want
slippage: 0.05, // 5%
})
/**
output type: txb
*/
}
})()
Remove liquidity rate calculation and txb for existed pairs
(async () => {
const SUI = "0x2::sui::SUI";
const BTC =
"0x16fe2df00ea7dde4a63409201f7f4e536bde7bb7335526a35d05111e68aa322c::TestCoinsV1::BTC";
const walletAddress = "0xdeadbeef";
const lpAmount = 1e6;
const output = await sdk.swap.removeLiquidityRates({
coinX: SUI,
coinY: BTC,
amount: lpAmount, // lp amount
});
/**
output type:
{
amountX: Decimal
amountY: Decimal
}
*/
const txPayload = sdk.swap.removeLiquidityPayload({
address: walletAddress,
coinX: SUI,
coinY: BTC,
amount: lpAmount,
amountXDesired: output.amountX,
amountYDesired: output.amountY,
slippage: 0.05, // 5%
deadline: 30, // 30 seconds
});
/**
output type: txb
*/
})();
Swap (exact in) rate calculation and txb.
Swap exact coin to coin mode
(async () => {
const SUI = "0x2::sui::SUI";
const BTC =
"0x16fe2df00ea7dde4a63409201f7f4e536bde7bb7335526a35d05111e68aa322c::TestCoinsV1::BTC";
const walletAddress = "0xdeadbeef";
const aptosAmount = 1e6;
const trades = await sdk.route.getRouteSwapExactCoinForCoin({
fromCoin: SUI,
toCoin: BTC,
amount: aptosAmount,
});
if (trades.length == 0) throw "No route error";
const bestTrade = trades[0];
/**
bestTrade type:
{
coinPairList: LiquidityPoolResource[]
amountList: string[]
coinTypeList: string[]
priceImpact: Decimal
}
*/
const output = sdk.route.swapExactCoinForCoinPayload({
address: walletAddress,
trade: bestTrade,
slippage: 0.05, // 5%
});
/**
output type: txb
*/
})();
Swap (exact out) rate calculation and txb.
Swap coin to exact coin mode
(async () => {
const SUI = "0x2::sui::SUI";
const BTC =
"0x16fe2df00ea7dde4a63409201f7f4e536bde7bb7335526a35d05111e68aa322c::TestCoinsV1::BTC";
const walletAddress = "0xdeadbeef";
const btcAmount = 1e6;
const trades = await sdk.route.getRouteSwapCoinForExactCoin({
fromCoin: SUI,
toCoin: BTC,
amount: btcAmount,
});
if (trades.length == 0) throw "No route error";
const bestTrade = trades[0];
/**
bestTrade type:
{
coinPairList: LiquidityPoolResource[]
amountList: string[]
coinTypeList: string[]
priceImpact: Decimal
}
*/
const output = sdk.route.swapCoinForExactCoinPayload({
address: walletAddress,
trade: bestTrade,
slippage: 0.05, // 5%
});
/**
output type: txb
*/
})();
Get all LPCoin by address
(async () => {
const queryAddress = "0xA11ce";
const output = await sdk.swap.getAllLPCoinResourcesByAddress(queryAddress);
/**
output type:
[{
coinX: AptosResourceType
coinY: AptosResourceType
lpCoin: AptosResourceType
value: string
}]
*/
})();
Get LPCoin amount
(async () => {
const SUI = "0x2::sui::SUI";
const BTC =
"0x16fe2df00ea7dde4a63409201f7f4e536bde7bb7335526a35d05111e68aa322c::TestCoinsV1::BTC";
const queryAddress = "0xA11ce";
const output = await sdk.swap.getLPCoinAmount({
address: queryAddress,
coinX: SUI,
coinY: BTC,
});
/**
output type:
{
coinX: AptosResourceType
coinY: AptosResourceType
lpCoin: AptosResourceType
value: string
}
*/
})();