rubic-sdk
Version:
Simplify dApp creation
64 lines • 3.06 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ToncoOnChainProvider = 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 tonco_sdk_facade_1 = require("./services/tonco-sdk-facade");
const tonco_on_chain_trade_1 = require("./tonco-on-chain-trade");
class ToncoOnChainProvider extends aggregator_on_chain_provider_abstract_1.AggregatorOnChainProvider {
constructor() {
super(...arguments);
this.tradeType = on_chain_trade_type_1.ON_CHAIN_TRADE_TYPE.TONCO_DEX;
}
isSupportedBlockchain(blockchain) {
return blockchain === blockchain_name_1.BLOCKCHAIN_NAME.TON;
}
async calculate(from, toToken, options) {
try {
const params = await tonco_sdk_facade_1.ToncoSdkFacade.fetchCommonParams(from, toToken);
const amountOutWei = await tonco_sdk_facade_1.ToncoSdkFacade.calculateAmountOut(params, from);
const to = new tokens_1.PriceTokenAmount({
...toToken.asStruct,
weiAmount: amountOutWei
});
const totalGasNonWei = await tonco_sdk_facade_1.ToncoSdkFacade.estimateGas(params, from.weiAmount, to.weiAmountMinusSlippage(options.slippageTolerance));
const totalGas = new bignumber_js_1.default(web3_pure_1.Web3Pure.toWei(totalGasNonWei, native_tokens_1.nativeTokensList.TON.decimals));
const routingPath = [
{
type: 'on-chain',
provider: this.tradeType,
path: [from, to]
}
];
const tradeStruct = {
from,
to,
gasFeeInfo: { totalGas },
slippageTolerance: options.slippageTolerance,
useProxy: false,
withDeflation: options.withDeflation,
usedForCrossChain: false,
routingPath,
isChangedSlippage: false,
params
};
return new tonco_on_chain_trade_1.ToncoOnChainTrade(tradeStruct, options.providerAddress);
}
catch (err) {
return {
type: this.tradeType,
error: err
};
}
}
}
exports.ToncoOnChainProvider = ToncoOnChainProvider;
//# sourceMappingURL=tonco-on-chain-provider.js.map