UNPKG

rubic-sdk

Version:
66 lines 3.52 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RangoOnChainProvider = void 0; const bignumber_js_1 = __importDefault(require("bignumber.js")); const tokens_1 = require("../../../../../../common/tokens"); const rango_contract_address_1 = require("../../../../../common/providers/rango/constants/rango-contract-address"); const rango_supported_blockchains_1 = require("../../../../../common/providers/rango/models/rango-supported-blockchains"); const rango_parser_1 = require("../../../../../common/providers/rango/services/rango-parser"); const on_chain_trade_type_1 = require("../../common/models/on-chain-trade-type"); const aggregator_on_chain_provider_abstract_1 = require("../../common/on-chain-aggregator/aggregator-on-chain-provider-abstract"); const rango_on_chain_disabled_providers_1 = require("./models/rango-on-chain-disabled-providers"); const rango_on_chain_trade_1 = require("./rango-on-chain-trade"); const rango_on_chain_api_service_1 = require("./services/rango-on-chain-api-service"); class RangoOnChainProvider extends aggregator_on_chain_provider_abstract_1.AggregatorOnChainProvider { constructor() { super(...arguments); this.tradeType = on_chain_trade_type_1.ON_CHAIN_TRADE_TYPE.RANGO; } isSupportedBlockchain(blockchainName) { return rango_supported_blockchains_1.rangoSupportedBlockchains.some(chain => chain === blockchainName); } async calculate(from, toToken, options) { try { const { fromWithoutFee, proxyFeeInfo } = await this.handleProxyContract(from, options); const path = this.getRoutePath(from, toToken); const swapParams = await rango_parser_1.RangoCommonParser.getSwapQueryParams(fromWithoutFee, toToken, { ...options, swapperGroups: rango_on_chain_disabled_providers_1.RANGO_ON_CHAIN_DISABLED_PROVIDERS }); const { route, tx } = await rango_on_chain_api_service_1.RangoOnChainApiService.getSwapTransaction(swapParams, false); const { outputAmountMin, outputAmount } = route; const { txTo } = tx; const providerGateway = txTo || rango_contract_address_1.rangoContractAddresses[from.blockchain].providerGateway; const to = new tokens_1.PriceTokenAmount({ ...toToken.asStruct, weiAmount: new bignumber_js_1.default(outputAmount) }); const toTokenWeiAmountMin = new bignumber_js_1.default(outputAmountMin); const tradeStruct = { from, to, fromWithoutFee, proxyFeeInfo, toTokenWeiAmountMin, gasFeeInfo: await this.getGasFeeInfo(), slippageTolerance: options.slippageTolerance, useProxy: options.useProxy, withDeflation: options.withDeflation, path }; return new rango_on_chain_trade_1.RangoOnChainTrade(tradeStruct, options.providerAddress, providerGateway); } catch (err) { return { type: on_chain_trade_type_1.ON_CHAIN_TRADE_TYPE.RANGO, error: err }; } } } exports.RangoOnChainProvider = RangoOnChainProvider; //# sourceMappingURL=rango-on-chain-provider.js.map