UNPKG

@lifi/sdk

Version:

LI.FI Any-to-Any Cross-Chain-Swap SDK

39 lines 2.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.waitForBatchTransactionReceipt = void 0; const experimental_1 = require("viem/experimental"); const utils_1 = require("viem/utils"); const constants_js_1 = require("../../errors/constants.js"); const errors_js_1 = require("../../errors/errors.js"); const waitForResult_js_1 = require("../../utils/waitForResult.js"); const waitForBatchTransactionReceipt = async (client, batchHash) => { return (0, waitForResult_js_1.waitForResult)(async () => { const callsDetails = await (0, utils_1.getAction)(client, experimental_1.getCallsStatus, 'getCallsStatus')({ id: batchHash, }); if (callsDetails.status === 'PENDING' || callsDetails.status === 100) { return undefined; } if (callsDetails.status === 'CONFIRMED' || callsDetails.status === 200) { if (!callsDetails.receipts?.length || !callsDetails.receipts.every((receipt) => receipt.transactionHash) || callsDetails.receipts.some((receipt) => receipt.status === 'reverted')) { throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionFailed, 'Transaction was reverted.'); } const transactionReceipt = callsDetails.receipts.at(-1); return transactionReceipt; } if (callsDetails.status === 400) { throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionCanceled, 'Transaction was canceled.'); } if (callsDetails.status === 500) { throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionFailed, 'Transaction failed.'); } throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionNotFound, 'Transaction not found.'); }, 5000, 3, (_, error) => { return !(error instanceof errors_js_1.TransactionError); }); }; exports.waitForBatchTransactionReceipt = waitForBatchTransactionReceipt; //# sourceMappingURL=waitForBatchTransactionReceipt.js.map