@openocean.finance/widget-sdk
Version:
OpenOcean Any-to-Any Cross-Chain-Swap SDK
26 lines • 1.29 kB
JavaScript
import { waitForCallsStatus } from 'viem/experimental';
import { getAction } from 'viem/utils';
import { OpenOceanErrorCode } from '../../errors/constants.js';
import { TransactionError } from '../../errors/errors.js';
export const waitForBatchTransactionReceipt = async (client, batchHash) => {
const { receipts, status, statusCode } = await getAction(client, waitForCallsStatus, 'waitForCallsStatus')({
id: batchHash,
timeout: 300_000,
});
if (status === 'success' ||
// @ts-expect-error: for backwards compatibility
status === 'CONFIRMED') {
if (!receipts?.length ||
!receipts.every((receipt) => receipt.transactionHash) ||
receipts.some((receipt) => receipt.status === 'reverted')) {
throw new TransactionError(OpenOceanErrorCode.TransactionFailed, 'Transaction was reverted.');
}
const transactionReceipt = receipts.at(-1);
return transactionReceipt;
}
if (statusCode >= 400 && statusCode < 500) {
throw new TransactionError(OpenOceanErrorCode.TransactionCanceled, 'Transaction was canceled.');
}
throw new TransactionError(OpenOceanErrorCode.TransactionFailed, 'Transaction failed.');
};
//# sourceMappingURL=waitForBatchTransactionReceipt.js.map