@routerprotocol/router-js-sdk
v0.2.0
Published
🛠 An SDK for building applications on top of router.
Downloads
12
Readme
RouterProtocol JS SDK
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"}