rubic-sdk
Version:
Simplify dApp creation
37 lines • 2.07 kB
JavaScript
;
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