1.2.2 • Published 11 months ago

aptostestdex v1.2.2

Weekly downloads
-
License
GPL-3.0-or-later
Repository
github
Last release
11 months ago

AnimeSwap v1 Protocol SDK

Lint and Test npm version npm bundle size downloads

The typescript SDK for AnimeSwap v1 protocol.

Installation

yarn add "@animeswap.org/v1-sdk"

Usage Example

Init SDK

import { SDK } from '@animeswap.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
    }
   */
})()
1.2.2

11 months ago