UNPKG

rubic-sdk

Version:
56 lines 2.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RangoOnChainTrade = void 0; const errors_1 = require("../../../../../../common/errors"); const tokens_1 = require("../../../../../../common/tokens"); const rango_parser_1 = require("../../../../../common/providers/rango/services/rango-parser"); const rubic_proxy_contract_address_1 = require("../../../../../cross-chain/calculation-manager/providers/common/constants/rubic-proxy-contract-address"); const on_chain_trade_type_1 = require("../../common/models/on-chain-trade-type"); const aggregator_evm_on_chain_trade_abstract_1 = require("../../common/on-chain-aggregator/aggregator-evm-on-chain-trade-abstract"); const rango_on_chain_disabled_providers_1 = require("./models/rango-on-chain-disabled-providers"); const rango_on_chain_api_service_1 = require("./services/rango-on-chain-api-service"); class RangoOnChainTrade extends aggregator_evm_on_chain_trade_abstract_1.AggregatorEvmOnChainTrade { get toTokenAmountMin() { return this._toTokenAmountMin; } get spenderAddress() { return this.useProxy ? rubic_proxy_contract_address_1.rubicProxyContractAddress[this.from.blockchain].gateway : this.providerGateway; } get dexContractAddress() { throw new errors_1.RubicSdkError('Dex address is unknown before swap is started'); } constructor(tradeStruct, providerAddress, providerGateway) { super(tradeStruct, providerAddress); this.type = on_chain_trade_type_1.ON_CHAIN_TRADE_TYPE.RANGO; this._toTokenAmountMin = new tokens_1.PriceTokenAmount({ ...this.to.asStruct, weiAmount: tradeStruct.toTokenWeiAmountMin }); this.providerGateway = providerGateway; } async getTransactionConfigAndAmount(options) { const params = await rango_parser_1.RangoCommonParser.getSwapQueryParams(this.fromWithoutFee, this.to, { slippageTolerance: this.slippageTolerance, receiverAddress: options.receiverAddress || this.walletAddress, swapperGroups: rango_on_chain_disabled_providers_1.RANGO_ON_CHAIN_DISABLED_PROVIDERS, fromAddress: this.walletAddress }); const { tx: transaction, route } = await rango_on_chain_api_service_1.RangoOnChainApiService.getSwapTransaction(params, true); const { txData, txTo, value, gasLimit, gasPrice } = transaction; const { outputAmount: toAmount } = route; return { tx: { data: txData, to: txTo, value: value || '0', gas: gasLimit ?? undefined, gasPrice: gasPrice ?? undefined }, toAmount }; } } exports.RangoOnChainTrade = RangoOnChainTrade; //# sourceMappingURL=rango-on-chain-trade.js.map