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