@lifi/sdk
Version:
LI.FI Any-to-Any Cross-Chain-Swap SDK
40 lines • 1.83 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.waitForTransactionReceipt = waitForTransactionReceipt;
const actions_1 = require("viem/actions");
const constants_js_1 = require("../../errors/constants.js");
const errors_js_1 = require("../../errors/errors.js");
const publicClient_js_1 = require("./publicClient.js");
async function waitForTransactionReceipt({ client, chainId, txHash, onReplaced, }) {
let { transactionReceipt, replacementReason } = await waitForReceipt(client, txHash, onReplaced);
if (!transactionReceipt?.status) {
const publicClient = await (0, publicClient_js_1.getPublicClient)(chainId);
const result = await waitForReceipt(publicClient, txHash, onReplaced);
transactionReceipt = result.transactionReceipt;
replacementReason = result.replacementReason;
}
if (transactionReceipt?.status === 'reverted') {
throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionFailed, 'Transaction was reverted.');
}
if (replacementReason === 'cancelled' || replacementReason === 'replaced') {
throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionCanceled, 'Transaction was canceled or replaced.');
}
return transactionReceipt;
}
async function waitForReceipt(client, txHash, onReplaced) {
let replacementReason;
let transactionReceipt;
try {
transactionReceipt = await (0, actions_1.waitForTransactionReceipt)(client, {
hash: txHash,
onReplaced: (response) => {
replacementReason = response.reason;
onReplaced?.(response);
},
});
}
catch {
}
return { transactionReceipt, replacementReason };
}
//# sourceMappingURL=waitForTransactionReceipt.js.map
;