shayha
v0.0.2
Published
SDK for use any functions of Forbitswap v1 Protocol
Downloads
2
Readme
Forbitswap v1 Protocol SDK
The typescript SDK for Forbitswap v1 protocol.
Installation
yarn add "@Forbitswap.org/v1-sdk"
Usage Example
Init SDK
import { SDK } from '@Forbitswap.org/v1-sdk';
const sdk = new SDK('https://fullnode.devnet.aptoslabs.com', NetworkType.Devnet)
Is pair exist
(async () => {
const APTOS = '0x1::aptos_coin::AptosCoin'
const BTC = '0x16fe2df00ea7dde4a63409201f7f4e536bde7bb7335526a35d05111e68aa322c::TestCoinsV1::BTC'
const output = await sdk.swap.isPairExist(APTOS, BTC)
})()
Add liquidity rate calculation and tx payload.
If pair not exists, tx will create pair first
(async () => {
const APTOS = '0x1::aptos_coin::AptosCoin'
const BTC = '0x16fe2df00ea7dde4a63409201f7f4e536bde7bb7335526a35d05111e68aa322c::TestCoinsV1::BTC'
const isPairExist = await sdk.swap.isPairExist(APTOS, BTC)
if (isPairExist) {
// Add liqudity with a given rate
const amountIn = 1e8
const output = await sdk.swap.addLiquidityRates({
coinX: APTOS,
coinY: BTC,
fixedCoin: 'X', // 'X' | 'Y'
amount: amountIn, // fixedCoin amount
})
/**
output type:
{
amount: Decimal
coinXDivCoinY: Decimal
coinYDivCoinX: Decimal
shareOfPool: Decimal
}
*/
const txPayload = sdk.swap.addLiquidityPayload({
coinX: APTOS,
coinY: BTC,
amountX: amountIn,
amountY: output.amount,
slippage: 0.05, // 5%
})
/**
output type: tx payload
*/
} else {
// Create pair and add initial liquidity
const txPayload = sdk.swap.addLiquidityPayload({
coinX: APTOS,
coinY: BTC,
amountX: 1e8, // any amount you want
amountY: 1e7, // any amount you want
slippage: 0.05, // 5%
})
/**
output type: tx payload
*/
}
})()
Remove liquidity rate calculation and tx payload for existed pairs
(async () => {
const APTOS = '0x1::aptos_coin::AptosCoin'
const BTC = '0x16fe2df00ea7dde4a63409201f7f4e536bde7bb7335526a35d05111e68aa322c::TestCoinsV1::BTC'
const lpAmount = 1e6
const output = await sdk.swap.removeLiquidityRates({
coinX: APTOS,
coinY: BTC,
amount: lpAmount, // lp amount
});
/**
output type:
{
amountX: Decimal
amountY: Decimal
}
*/
const txPayload = sdk.swap.removeLiquidityPayload({
coinX: APTOS,
coinY: BTC,
amount: lpAmount,
amountXDesired: output.amountX,
amountYDesired: output.amountY,
slippage: 0.05, // 5%
deadline: 30, // 30 seconds
})
/**
output type: tx payload
*/
})()
Swap (exact in) rate calculation and tx payload.
Swap exact coin to coin mode
(async () => {
const APTOS = '0x1::aptos_coin::AptosCoin'
const BTC = '0x16fe2df00ea7dde4a63409201f7f4e536bde7bb7335526a35d05111e68aa322c::TestCoinsV1::BTC'
const aptosAmount = 1e6
const trades = await sdk.route.getRouteSwapExactCoinForCoin({
fromCoin: APTOS,
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({
trade: bestTrade,
slippage: 0.05, // 5%
})
/**
output type: tx payload
*/
})()
Swap (exact out) rate calculation and tx payload.
Swap coin to exact coin mode
(async () => {
const APTOS = '0x1::aptos_coin::AptosCoin'
const BTC = '0x16fe2df00ea7dde4a63409201f7f4e536bde7bb7335526a35d05111e68aa322c::TestCoinsV1::BTC'
const btcAmount = 1e6
const trades = await sdk.route.getRouteSwapCoinForExactCoin({
fromCoin: APTOS,
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({
trade: bestTrade,
slippage: 0.05, // 5%
})
/**
output type: tx payload
*/
})()
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 APTOS = '0x1::aptos_coin::AptosCoin'
const BTC = '0x16fe2df00ea7dde4a63409201f7f4e536bde7bb7335526a35d05111e68aa322c::TestCoinsV1::BTC'
const queryAddress = '0xA11ce'
const output = await sdk.swap.getLPCoinAmount({
address: queryAddress,
coinX: APTOS,
coinY: BTC,
})
/**
output type:
{
coinX: AptosResourceType
coinY: AptosResourceType
lpCoin: AptosResourceType
value: string
}
*/
})()
Get LPCoin apr
(async () => {
const APTOS = '0x1::aptos_coin::AptosCoin'
const BTC = '0x16fe2df00ea7dde4a63409201f7f4e536bde7bb7335526a35d05111e68aa322c::TestCoinsV1::BTC'
const output = await sdk.swap.getLPCoinAPY({
coinX: APTOS,
coinY: BTC,
})
/**
output type:
{
apr: Decimal
windowSeconds: Decimal
}
*/
})()