UNPKG

rubic-sdk

Version:
55 lines 2.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CelerOneinchTrade = void 0; const errors_1 = require("../../../../../../../../common/errors"); const evm_web3_pure_1 = require("../../../../../../../../core/blockchain/web3-pure/typed-web3-pure/evm-web3-pure/evm-web3-pure"); const wrapped_native_1 = require("../../../constants/wrapped-native"); const constants_1 = require("../../../../../../../on-chain/calculation-manager/providers/dexes/common/oneinch-abstract/constants"); class CelerOneinchTrade { constructor(oneinchTrade) { this.oneinchTrade = oneinchTrade; this.defaultDeadline = 999999999999999; } getFirstPath() { if (!this.oneinchTrade.path?.[0]) { throw new errors_1.RubicSdkError('On-chain trade path has to be defined'); } return this.oneinchTrade.path[0].address; } getSecondPath() { return this.oneinchTrade.wrappedPath.map(token => evm_web3_pure_1.EvmWeb3Pure.addressToBytes32(token.address)); } async modifyArgumentsForProvider(methodArguments, walletAddress) { const { data } = await this.oneinchTrade.encodeDirect({ fromAddress: walletAddress }); if (!methodArguments?.[0]) { throw new errors_1.RubicSdkError('Method arguments array must not be empty'); } methodArguments[0].push(data); } getCelerSourceObject() { if (!this.oneinchTrade.transactionData) { throw new errors_1.RubicSdkError(`Can't estimate 1inch trade`); } const dex = this.oneinchTrade.dexContractAddress; const [tokenIn, ...restPath] = this.oneinchTrade.path.map(token => token.address); const isOneInchNative = constants_1.oneinchApiParams.nativeAddress === tokenIn || tokenIn === evm_web3_pure_1.EvmWeb3Pure.EMPTY_ADDRESS; const fromBlockchain = this.oneinchTrade.from .blockchain; const firstToken = isOneInchNative ? wrapped_native_1.wrappedNative[fromBlockchain] : tokenIn; if (!firstToken) { throw new errors_1.RubicSdkError('First token has to be defined'); } const secondToken = restPath?.pop(); if (!secondToken) { throw new errors_1.RubicSdkError('Second token has to be defined'); } const path = [firstToken, secondToken]; const amountOutMinimum = this.oneinchTrade.toTokenAmountMin.stringWeiAmount; return { dex, path, data: this.oneinchTrade.transactionData, amountOutMinimum }; } getCelerDestinationObject() { throw Error('[RUBIC SDK] 1Inch is not supported as target provider yet.'); } } exports.CelerOneinchTrade = CelerOneinchTrade; //# sourceMappingURL=celer-oneinch-trade.js.map