UNPKG

@f5i23q999d/cow-sdk

Version:

<p align="center"> <img width="400" src="https://github.com/cowprotocol/cow-sdk/raw/main/docs/images/CoW.png" /> </p>

50 lines 2.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getEthFlowTransaction = void 0; const calculateUniqueOrderId_1 = require("./calculateUniqueOrderId.js"); const getOrderToSign_1 = require("./getOrderToSign.js"); const generated_1 = require("../common/generated/index.js"); const common_1 = require("../common/index.js"); const consts_1 = require("./consts.js"); const utils_1 = require("./utils.js"); async function getEthFlowTransaction(signer, appDataKeccak256, _params, chainId, additionalParams = {}) { const { networkCostsAmount = '0', checkEthFlowOrderExists } = additionalParams; const from = await signer.getAddress(); const params = { ..._params, ...(0, utils_1.adjustEthFlowOrderParams)(chainId, _params), }; const { quoteId } = params; const contract = getEthFlowContract(signer, params.env); const orderToSign = (0, getOrderToSign_1.getOrderToSign)({ from, networkCostsAmount }, params, appDataKeccak256); const orderId = await (0, calculateUniqueOrderId_1.calculateUniqueOrderId)(chainId, orderToSign, checkEthFlowOrderExists, params.env); const ethOrderParams = { ...orderToSign, quoteId, appData: appDataKeccak256, validTo: orderToSign.validTo.toString(), }; const estimatedGas = await contract.estimateGas .createOrder(ethOrderParams, { value: orderToSign.sellAmount }) .then((res) => BigInt(res.toHexString())) .catch((error) => { console.error(error); return consts_1.GAS_LIMIT_DEFAULT; }); const data = contract.interface.encodeFunctionData('createOrder', [ethOrderParams]); return { orderId, orderToSign, transaction: { data, gasLimit: '0x' + (0, utils_1.calculateGasMargin)(estimatedGas).toString(16), to: contract.address, value: '0x' + BigInt(orderToSign.sellAmount).toString(16), }, }; } exports.getEthFlowTransaction = getEthFlowTransaction; function getEthFlowContract(signer, env) { return generated_1.EthFlow__factory.connect(env === 'staging' ? common_1.BARN_ETH_FLOW_ADDRESS : common_1.ETH_FLOW_ADDRESS, signer); } //# sourceMappingURL=getEthFlowTransaction.js.map