UNPKG

@quantara/sdk

Version:

JavaScript/TypeScript SDK for interacting with Quantara Protocol on Neura Testnet

43 lines (42 loc) 1.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createShiftTxn = void 0; const viem_1 = require("viem"); const abis_1 = require("../../../abis"); const contracts_1 = require("../../../configs/contracts"); const trade_1 = require("../../../utils/trade"); async function createShiftTxn(sdk, params) { const chainId = sdk.chainId; const exchangeRouter = (0, contracts_1.getContract)(chainId, "ExchangeRouter"); const shiftVaultAddress = (0, contracts_1.getContract)(chainId, "ShiftVault"); const minToMarketTokenAmount = (0, trade_1.applySlippageToMinOut)(params.allowedSlippage, params.minToMarketTokenAmount); const multicall = [ { method: "sendWnt", params: [shiftVaultAddress, params.executionFee] }, { method: "sendTokens", params: [params.fromMarketTokenAddress, shiftVaultAddress, params.fromMarketTokenAmount] }, { method: "createShift", params: [ { receiver: params.account, callbackContract: viem_1.zeroAddress, uiFeeReceiver: sdk.config.settings?.uiFeeReceiverAccount ?? viem_1.zeroAddress, fromMarket: params.fromMarketTokenAddress, toMarket: params.toMarketTokenAddress, minMarketTokens: minToMarketTokenAmount, executionFee: params.executionFee, callbackGasLimit: 0n, }, ], }, ]; const encodedPayload = multicall.map((call) => (0, viem_1.encodeFunctionData)({ abi: abis_1.abis.ExchangeRouter, functionName: call.method, args: call.params, })); // Call the contract await sdk.callContract(exchangeRouter, abis_1.abis.ExchangeRouter, "multicall", [encodedPayload], { value: params.executionFee, }); } exports.createShiftTxn = createShiftTxn;