Quote

Here is a detailed explanation of the parameters for the quote API:

Cross-chain

Query

example:

const result = await axios.get(`https://api2.chainge.finance/v1/getBridgeQuote?amount=100000000&symbol=USDT&fromChain=FSN&toChain=BNB`)
console.log(result)
//{
//    "code": 0,
//    "msg": "success",
//    "data": {
//        "price": "1",
//        "outAmount": "100000000000000000000",
//        "outAmountUsd": "100.000000000000000000",
//        "serviceFee": "50000000000000000",
//        "gasFee": "300000000000000000"
//    }
//}
const { outAmount, outAmountUsd, serviceFee, gasFee } = result.data
const outAmountBI = BigInt(outAmount)
const serviceFeeBI = BigInt(serviceFee)
const gasFeeBI = BigInt(gasFee)
const gasBI = serviceFeeBI + gasFeeBI
const receiveAmountBI = outAmountBI - totalGasBI
if(receiveAmountBI <= BigInt(0)) {
    // Unable to cover the transaction fee. The transaction should be terminated.
} else {
    // The actual value displayed to the user.
    console.log(formatUnits(receiveAmountBI, toToken?.decimals)) // 99.65
    console.log(formatUnits(gasBI, toToken?.decimals)) // 0.35 
    // Here, the extra parameter for submitOrder can be preprocessed.
    // submitOrder body params.extra
    const extra = `1_${receiveAmountBI.toString()}`
}

To provide higher flexibility, our return results need to be processed before displaying on the interface:

  • price: The current price of the cross-chain currency for calculating its value.

  • outAmount: The total amount received across chains, including gasFee and serviceFee. You need to subtract gasFee and serviceFee to get the actual amount received by the user.

  • outAmountUsd: Estimated value in USDT.

  • serviceFee: Official service fee, five per ten thousand (0.05%).

  • gasFee: Gas fee for cross-chain transfers.

Transaction

example:

const result = await axios.get(`https://api2.chainge.finance/v1/getAggregateQuote?fromAmount=100000000&fromTokenAddress=0x8a20c13b42d7fe418f10f922f2cee06246c24269&fromDecimal=6&fromChain=FSN&toTokenAddress=0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d&toDecimal=18&toChain=BNB`)
console.log(result)
//{
//    "code": 0,
//    "msg": "success",
//    "data": {
//        "chain": "42161",
//        "chainDecimal": 6,
//        "aggregator": "Kyber",
//        "outAmount": "100061783",
//        "outAmountUsd": "99.20181999",
//        "minOutAmount": "",
//        "serviceFee": "50030",
//        "gasFee": "800079",
//        "priceImpact": "0.26",
//        "routeSummary": "H4sIAAAAAAAA/5ySUWvbMBSF/8t99ookW7KstxZWCGxslO0p5EG6vnJMHDlYcpsS8t+HHS/pVhisftP1Eeec++kEqd9RWAUwwI6+Zlo5LLGWWGheI1aoJTkqSm05Mqcqj85VkIHd92NI8z3Olu/N+GesL38g++3w1Q47St+HFun+2baddR2B8baLtGi+jWmOYb3WNVOSyhI1ohB5lYsSJdUut0UuhNIkdc6vfpeLUw7FS52/nV+D3AnFK6akUnCz+2emxkYwIORSrbFxFv7VuLHx4sHumGalZIwLrQolimoKSMc02EciMCfwRPdzrkkNGeDWDg09Ej28ggHIoI2r8HCI1wSe6ImQ2mcaJsE5g6EfE4FZr09w6PtuXhdOyDQnwXyVi5xx4RUVQrjaSym8Z8pZhTW/ofhf2B+l07X7Nj1RGofwR/H4Yg/Xwfvn8x4nHXFrQzPt/qXfO5sgm/t/odCkLZjicvzxerhJPu1tGxbd54kCmDB23YIEzOl83mxuJ8DtGHZxFXwPZr05n38FAAD//y+XPE8bAwAA"
//    }
//}
const { chain, chainDecimal, aggregator, outAmount, outAmountUsd, minOutAmount, serviceFee, gasFee, priceImpact, routeSummary } = result.data
const outAmountBI = BigInt(outAmount)
const serviceFeeBI = BigInt(serviceFee)
const gasFeeBI = BigInt(gasFee)
const gasBI = serviceFeeBI + gasFeeBI
const receiveAmountBI = outAmountBI - totalGasBI
if(receiveAmountBI <= BigInt(0)) {
    // Unable to cover the transaction fee. The transaction should be terminated.
} else {
    // The actual value displayed to the user.
    console.log(formatUnits(receiveAmountBI, chainDecimal)) // 99.211674
    console.log(formatUnits(gasBI, chainDecimal)) // 0.850109
    // Here, the extra parameter for submitOrder can be preprocessed.
    // submitOrder body params.extra
    let extraToAmountBI = receiveAmountBI
    if(toChain.network !== chain) {
        const tempExtraToAmountStr = formatUnits(extraToAmountBI, chainDecimal)
        extraToAmountBI = parseUnits(tempExtraToAmountStr, toToken.decimals)
    }
    const extra = `1_${extraToAmountBI.toString()}`
     if(fromChain.network !== chain && toChain.network !== chain) {
        // The subsequent process proceeds with the submitOrder function.
    } else {
       if(fromChain.network === toChain.network) {
            // The subsequent process proceeds with the getAggregateSwap function.
       } else {
           // The subsequent process proceeds with the submitOrder function.
       }
    }
}

These are all results returned by the "Supported Chains & Tokens" interface.s

To provide greater flexibility, our return results need to be processed again before they can be displayed on the interface:

  • chain: The chain ID on which the transaction is executed.

  • chainDecimal: The decimal of the current currency on the chain where the transaction is executed.

  • aggregator: The intermediary responsible for executing the transaction.

  • outAmount: The total amount received after cross-chain transfer, including gasFee and serviceFee. Therefore, you need to deduct gasFee and serviceFee to get the actual amount received by the user.

  • outAmountUsd: The estimated value in USDT.

  • minOutAmount: Reserved field.

  • serviceFee: More detailed documentation will be provided.

  • gasFee: The gas fee for cross-chain transfer.

  • priceImpact: Price impact.

  • routeSummary: Transaction routing information.

Last updated