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