@lifi/sdk
Version:
LI.FI Any-to-Any Cross-Chain-Swap SDK
39 lines • 2.12 kB
JavaScript
;
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