abcdefasdasddasadsdas
TypeScript icon, indicating that this package has built-in type declarations

0.0.1 • Public • Published

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
    }
   */
})()

Package Sidebar

Install

npm i abcdefasdasddasadsdas

Weekly Downloads

0

Version

0.0.1

License

GPL-3.0-or-later

Unpacked Size

74.2 kB

Total Files

22

Last publish

Collaborators

  • matthewbyun