UNPKG

rubic-sdk

Version:
66 lines 2.89 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.StonfiOnChainProvider = void 0; const bignumber_js_1 = __importDefault(require("bignumber.js")); const tokens_1 = require("../../../../../../common/tokens"); const blockchain_name_1 = require("../../../../../../core/blockchain/models/blockchain-name"); 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 stonfi_api_service_1 = require("./services/stonfi-api-service"); const stonfi_on_chain_trade_1 = require("./stonfi-on-chain-trade"); const get_stonfi_gas_1 = require("./utils/get-stonfi-gas"); class StonfiOnChainProvider extends aggregator_on_chain_provider_abstract_1.AggregatorOnChainProvider { constructor() { super(...arguments); this.tradeType = on_chain_trade_type_1.ON_CHAIN_TRADE_TYPE.STONFI; } isSupportedBlockchain(blockchain) { return blockchain === blockchain_name_1.BLOCKCHAIN_NAME.TON; } async calculate(from, toToken, options) { try { const { amountOutWei } = await stonfi_api_service_1.StonfiApiService.makeQuoteRequest(from, toToken, options.slippageTolerance); const to = new tokens_1.PriceTokenAmount({ ...toToken.asStruct, weiAmount: new bignumber_js_1.default(amountOutWei) }); const routingPath = [ { type: 'on-chain', provider: this.tradeType, path: [from, to] } ]; const tradeStruct = { from, to, gasFeeInfo: null, slippageTolerance: options.slippageTolerance, useProxy: false, withDeflation: options.withDeflation, usedForCrossChain: false, routingPath, isChangedSlippage: false }; tradeStruct.gasFeeInfo = await this.getGasFeeInfo(tradeStruct); return new stonfi_on_chain_trade_1.StonfiOnChainTrade(tradeStruct, options.providerAddress); } catch (err) { return { type: this.tradeType, error: err }; } } getGasFeeInfo(tradeStruct) { const totalGas = (0, get_stonfi_gas_1.getStonfiTotalGas)(tradeStruct.from, tradeStruct.to); return Promise.resolve({ totalGas: new bignumber_js_1.default(totalGas) }); } } exports.StonfiOnChainProvider = StonfiOnChainProvider; //# sourceMappingURL=stonfi-on-chain-provider.js.map