@lifi/sdk
Version:
LI.FI Any-to-Any Cross-Chain-Swap SDK
27 lines • 1.3 kB
JavaScript
import { waitForCallsStatus } from 'viem/actions';
import { getAction } from 'viem/utils';
import { LiFiErrorCode } from '../../errors/constants.js';
import { TransactionError } from '../../errors/errors.js';
export const waitForBatchTransactionReceipt = async (client, batchHash, onFailed) => {
const result = await getAction(client, waitForCallsStatus, 'waitForCallsStatus')({
id: batchHash,
timeout: 3_600_000 * 24,
});
if (result.status === 'success') {
if (!result.receipts?.length ||
!result.receipts.every((receipt) => receipt.transactionHash) ||
result.receipts.some((receipt) => receipt.status === 'reverted')) {
onFailed?.(result);
throw new TransactionError(LiFiErrorCode.TransactionFailed, 'Transaction was reverted.');
}
const transactionReceipt = result.receipts.at(-1);
return transactionReceipt;
}
if (result.statusCode >= 400 && result.statusCode < 500) {
onFailed?.(result);
throw new TransactionError(LiFiErrorCode.TransactionCanceled, 'Transaction was canceled.');
}
onFailed?.(result);
throw new TransactionError(LiFiErrorCode.TransactionFailed, 'Transaction failed.');
};
//# sourceMappingURL=waitForBatchTransactionReceipt.js.map