UNPKG

rubic-sdk

Version:
37 lines 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateRates = void 0; const blockchain_id_1 = require("../../../../../../core/blockchain/utils/blockchains-info/constants/blockchain-id"); const web3_pure_1 = require("../../../../../../core/blockchain/web3-pure/web3-pure"); const eddy_bridge_api_service_1 = require("../services/eddy-bridge-api-service"); const eddy_bridge_contract_service_1 = require("../services/eddy-bridge-contract-service"); const eddy_quoter_controller_factory_1 = require("./eddy-quoter-controller-factory"); const find_api_token_address_1 = require("./find-api-token-address"); const calculateRates = async (from, toToken, slippage) => { try { const zrcFrom = (0, find_api_token_address_1.findApiTokenAddress)(from); const zrcTo = (0, find_api_token_address_1.findApiTokenAddress)(toToken); const fromChainId = blockchain_id_1.blockchainId[from.blockchain]; const toChainId = blockchain_id_1.blockchainId[toToken.blockchain]; const quoteParams = { fromAmount: from.stringWeiAmount, fromChainId: fromChainId, fromToken: zrcFrom, toChainId: toChainId, toToken: zrcTo }; const rates = await eddy_bridge_api_service_1.EddyBridgeApiService.fetchRates(quoteParams); return rates.outputAmount; } catch { const [eddyFee, gasFeeInSrcTokenUnits] = await Promise.all([ eddy_bridge_contract_service_1.EddyBridgeContractService.getPlatformFee(), eddy_bridge_contract_service_1.EddyBridgeContractService.getGasFeeInDestChain(from, toToken) ]); const ratioToAmount = 1 - eddyFee; const toAmount = await eddy_quoter_controller_factory_1.EddyQuoterControllerFactory.createController(from, toToken, ratioToAmount, gasFeeInSrcTokenUnits, slippage).calculateToAmount(); return web3_pure_1.Web3Pure.toWei(toAmount, toToken.decimals); } }; exports.calculateRates = calculateRates; //# sourceMappingURL=calculate-rates.js.map