abcdefasdasddasadsdas
v0.0.1
Published
SDK for use any functions of forbitswap v1 Protocol
Downloads
1
Maintainers
Readme
forbitswap v1 Protocol SDK
Installation
yarn add "@forbitswapamm/sdk"
Usage Example
Init SDK
import { SDK } from "@forbitswapamm/sdk"
const sdk = new SDK("https://fullnode.devnet.aptoslabs.com", NetworkType.Devnet)
Is pair exist
;(async () => {
const APTOS = "0x1::aptos_coin::AptosCoin"
const BTC = "0xa3b854a301bf4d44b6bbeb3354e50c94ab1b5cc82dd1e03a325cbd06a24e94b9::SpaceCoin::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 = "0xa3b854a301bf4d44b6bbeb3354e50c94ab1b5cc82dd1e03a325cbd06a24e94b9::SpaceCoin::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 = "0xa3b854a301bf4d44b6bbeb3354e50c94ab1b5cc82dd1e03a325cbd06a24e94b9::SpaceCoin::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 = "0xa3b854a301bf4d44b6bbeb3354e50c94ab1b5cc82dd1e03a325cbd06a24e94b9::SpaceCoin::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 = "0xa3b854a301bf4d44b6bbeb3354e50c94ab1b5cc82dd1e03a325cbd06a24e94b9::SpaceCoin::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 = "0xfo11b11"
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 = "0xa3b854a301bf4d44b6bbeb3354e50c94ab1b5cc82dd1e03a325cbd06a24e94b9::SpaceCoin::BTC"
const queryAddress = "0xfo11b11"
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 = "0xa3b854a301bf4d44b6bbeb3354e50c94ab1b5cc82dd1e03a325cbd06a24e94b9::SpaceCoin::BTC"
const output = await sdk.swap.getLPCoinAPY({
coinX: APTOS,
coinY: BTC,
})
/**
output type:
{
apr: Decimal
windowSeconds: Decimal
}
*/
})()