UNPKG

rubic-sdk

Version:
63 lines 3.1 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DedustOnChainProvider = void 0; const bignumber_js_1 = __importDefault(require("bignumber.js")); const tokens_1 = require("../../../../../../common/tokens"); const native_tokens_1 = require("../../../../../../common/tokens/constants/native-tokens"); const blockchain_name_1 = require("../../../../../../core/blockchain/models/blockchain-name"); const web3_pure_1 = require("../../../../../../core/blockchain/web3-pure/web3-pure"); 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 get_ton_multistep_data_1 = require("../common/utils/get-ton-multistep-data"); const dedust_consts_1 = require("./constants/dedust-consts"); const dedust_on_chain_trade_1 = require("./dedust-on-chain-trade"); const dedust_swap_service_1 = require("./services/dedust-swap-service"); class DedustOnChainProvider extends aggregator_on_chain_provider_abstract_1.AggregatorOnChainProvider { constructor() { super(...arguments); this.tradeType = on_chain_trade_type_1.ON_CHAIN_TRADE_TYPE.DEDUST; } isSupportedBlockchain(blockchain) { return blockchain === blockchain_name_1.BLOCKCHAIN_NAME.TON; } async calculate(from, toToken, options) { try { const dedustSwapService = new dedust_swap_service_1.DedustSwapService(); const toStringWeiAmount = await dedustSwapService.calcOutputAmount(from, toToken); const to = new tokens_1.PriceTokenAmount({ ...toToken.asStruct, weiAmount: new bignumber_js_1.default(toStringWeiAmount) }); const routingPath = await dedustSwapService.getRoutePath(); const { isChangedSlippage, slippage } = (0, get_ton_multistep_data_1.getMultistepData)(routingPath, options.slippageTolerance); return new dedust_on_chain_trade_1.DedustOnChainTrade({ from, to, gasFeeInfo: await this.getGasFeeInfo(), slippageTolerance: slippage, useProxy: false, withDeflation: options.withDeflation, routingPath, usedForCrossChain: false, isChangedSlippage }, options.providerAddress); } catch (err) { return { type: this.tradeType, error: err }; } } getGasFeeInfo() { const totalGas = new bignumber_js_1.default(web3_pure_1.Web3Pure.toWei(dedust_consts_1.DEDUST_GAS_NON_WEI, native_tokens_1.nativeTokensList.TON.decimals)); return Promise.resolve({ totalGas }); } } exports.DedustOnChainProvider = DedustOnChainProvider; //# sourceMappingURL=dedust-on-chain-provider.js.map