@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
JavaScript
;
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