0.2.0 • Published 1 year ago

@routerprotocol/router-js-sdk v0.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

RouterProtocol JS SDK

node npm downloads

Getting started

initialize

    import {RouterProtocol} from "@routerprotocol/router-js-sdk"

    const routerprotocol=new RouterProtocol("24","137",provider)
    await routerprotocol.initialize()

Fetch Bridge Fee

      const fees = await routerprotocol.getBridgeFee("56");

Response Type

    {
        address: string, // address of fee token
        transferFee: BigNumber, // transfer fee amount
        exchangeFee: BigNumber // exchange fee amount
    }[]

Response Example(polygon to harmony)

   [
      {
        address: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',
        transferFee: BigNumber { _hex: '0x30d400', _isBigNumber: true },
        exchangeFee: BigNumber { _hex: '0x30d400', _isBigNumber: true }
      },
      {
        address: '0x4c28f48448720e9000907BC2611F73022fdcE1fA',
        transferFee: BigNumber { _hex: '0x2c68af0bb1400000', _isBigNumber: true },
        exchangeFee: BigNumber { _hex: '0x2c68af0bb1400000', _isBigNumber: true }
      },
      {
        address: '0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4',
        transferFee: BigNumber { _hex: '0x0b1a2bc2ec500000', _isBigNumber: true },
        exchangeFee: BigNumber { _hex: '0x0b1a2bc2ec500000', _isBigNumber: true }
      },
      {
        address: '0xC168E40227E4ebD8C1caE80F7a55a4F0e6D66C97',
        transferFee: BigNumber { _hex: '0x03e733628714200000', _isBigNumber: true },
        exchangeFee: BigNumber { _hex: '0x03e733628714200000', _isBigNumber: true }
      }
    ]

Getting Allowance

Source Token Allowance (one to be swapped)
    const allowanceBefore:BigNumber =await routerprotocol.getSourceTokenAllowance(POLYGON_USDC,"56",userAddress)
Fee Token Allowance (bridge fee to be paid)
    const feeAllowanceBefore:BigNumber =await routerprotocol.getFeeTokenAllowance(feeTokenAddress,"56",userAddress)

Getting Approved

Getting Source Token Approved (one to be swapped)
    routerprotocol.approveSourceToken(POLYGON_USDC,userAddress,MAX,"10",srcsigner)
Getting fee Token Approved (bridge fee to be paid)
    routerprotocol.approveFeeToken(feeTokenAddress,userAddress,MAX,srcsigner)

Getting Quote

    const quote =await routerprotocol.getQuote("100","56",POLYGON_USDC,BSC_USDC,userAddress,feeTokenAddress,slippageTolerance)

Response Type

interface Quote{ 
    source: {
    asset: {
      decimals: number,
      symbol: string,
      name: string,
      chainId: number,
      address: string,
      resourceID: string,
      isMintable: boolean,
      isWrappedAsset: boolean,
      tokenInstance: {
        decimals: number,
        symbol: string,
        name: string,
        chainId: number,
        address: string
      }
    },
    stableReserveAsset: {
      decimals: number,
      symbol: string,
      name: string,
      chainId: number,
      address: string,
      resourceID: string,
      isMintable: boolean,
      isWrappedAsset: boolean
    },
    tokenAmount: string,
    stableReserveAmount: string,
    path: any[],
    flags: string[],
    priceImpact: string,
    bridgeFee: {
      token: string,
      symbol: string,
      amount: string
    },
    tokenPath: string
  },
  destination: {
    asset: {
      decimals: number,
      symbolstring:string,
      name: string,
      chainId: number
      address: string,
      resourceID: string,
      isMintable: boolean,
      isWrappedAsset: boolean,
      tokenInstance: {
        decimals: number,
        symbolstring:string,
        name: string,
        chainId: number
        address: string
      }
    },
    stableReserveAsset: {
      decimals: number,
      symbol: string,
      name: string,
      chainId: number
      address: string,
      resourceID: string,
      isMintable: boolean,
      isWrappedAsset: boolean
    },
    tokenAmount: string,
    stableReserveAmount: string,
    priceImpact: string,
    tokenPath: string
  },
  txn: {
    feeToken: string,
    execution: {
      from: string,
      to: string,
      data: string
    }
  }
}

Response Example(polygon to bsc)

  {
  "isWrappedToken": false,
  "source": {
    "asset": {
      "decimals": 18,
      "symbol": "ROUTE",
      "name": "Route",
      "chainId": 137,
      "address": "0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4",
      "resourceID": "0x000000000000000000000016eccfdbb4ee1a85a33f3a9b21175cd7ae753db400",
      "isMintable": false,
      "isWrappedAsset": false,
      "isReserveAsset": false,
      "tokenInstance": {
        "decimals": 18,
        "symbol": "ROUTE",
        "name": "Route",
        "chainId": 137,
        "address": "0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4"
      }
    },
    "stableReserveAsset": {
      "decimals": 18,
      "symbol": "ROUTE",
      "name": "Route",
      "chainId": 137,
      "address": "0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4",
      "resourceID": "0x000000000000000000000016eccfdbb4ee1a85a33f3a9b21175cd7ae753db400",
      "isMintable": false,
      "isWrappedAsset": false,
      "isReserveAsset": false
    },
    "tokenAmount": "1000000",
    "stableReserveAmount": "1000000",
    "path": [

    ],
    "flags": [

    ],
    "priceImpact": "0",
    "bridgeFee": {
      "token": "0x0000000000000000000000000000000000001010",
      "symbol": "WMATIC",
      "amount": "400000000000000000"
    },
    "tokenPath": "",
    "dataTx": [
      "0x00"
    ]
  },
  "destination": {
    "asset": {
      "decimals": 18,
      "symbol": "ROUTE",
      "name": "ROUTE",
      "chainId": 56,
      "address": "0xfD2700c51812753215754De9EC51Cdd42Bf725B9",
      "resourceID": "0x000000000000000000000016eccfdbb4ee1a85a33f3a9b21175cd7ae753db400",
      "isMintable": true,
      "isWrappedAsset": false,
      "isReserveAsset": false,
      "tokenInstance": {
        "decimals": 18,
        "symbol": "ROUTE",
        "name": "ROUTE",
        "chainId": 56,
        "address": "0xfD2700c51812753215754De9EC51Cdd42Bf725B9"
      }
    },
    "stableReserveAsset": {
      "decimals": 18,
      "symbol": "ROUTE",
      "name": "ROUTE",
      "chainId": 56,
      "address": "0xfD2700c51812753215754De9EC51Cdd42Bf725B9",
      "resourceID": "0x000000000000000000000016eccfdbb4ee1a85a33f3a9b21175cd7ae753db400",
      "isMintable": true,
      "isWrappedAsset": false,
      "isReserveAsset": false
    },
    "tokenAmount": "1000000",
    "stableReserveAmount": "1000000",
    "priceImpact": "0.00",
    "tokenPath": "ROUTE",
    "dataTx": [
      "0x00"
    ]
  },
  "txn": {
    "feeToken": "0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4",
    "execution": {
      "from": "0xD253eDAF1B53a2E0e5E1B8021ba4937D21806dd3",
      "to": "0xf18aCC02628009231d7BAAF9a7a24C0860Dda6cb",
      "data": "0x43cee7190000000000000000000000000000000000000000000000000000000000000002000000000000000000000016eccfdbb4ee1a85a33f3a9b21175cd7ae753db40000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000016eccfdbb4ee1a85a33f3a9b21175cd7ae753db4000000000000000000000000000000000000000000000000000000000000017000000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000d253edaf1b53a2e0e5e1b8021ba4937d21806dd316eccfdbb4ee1a85a33f3a9b21175cd7ae753db4fd2700c51812753215754de9ec51cdd42bf725b9fd2700c51812753215754de9ec51cdd42bf725b900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000",
      "gasLimit": "736386",
      "gasPrice": "241163008999"
    }
  }
}

Swap

    const tx = await routerprotocol.swap(quote,srcsigner)

Get transaction status

    const txStatus=await routerprotocol.getTransactionStatus("0xde12f05b718b3407633d00fb5834ae48fb6ec5970b3252d3a6eb5e18222f33ee")

Response Type

interface TransactionStatus{"tx_status":string,
"tx_status_code":number,
"src_chain_id":string,
"dest_chain_id":string,
"src_tx_hash":string,
"dest_tx_hash":string}

Response Example

{"tx_status":"Completed","tx_status_code":1,"src_chain_id":"1","dest_chain_id":"4","src_tx_hash":"0xde12f05b718b3407633d00fb5834ae48fb6ec5970b3252d3a6eb5e18222f33ee","dest_tx_hash":"0x437124f52c6efa61dccd8c1fa34206bdb7a079e64e368db6eda4bb6999843b23"}