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