UNPKG

@biconomy/abstractjs

Version:

SDK for Biconomy integration with support for account abstraction, smart accounts, ERC-4337.

88 lines 3.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSupertransactionReceipt = getSupertransactionReceipt; const actions_1 = require("viem/actions"); const explorer_1 = require("../../../account/utils/explorer.js"); const parseErrorMessage_1 = require("../../../account/utils/parseErrorMessage.js"); const parseTransactionStatus_1 = require("../../../account/utils/parseTransactionStatus.js"); async function getSupertransactionReceipt(client, parameters) { const { confirmations = 2, waitForReceipts = true, ...params } = parameters; const account = parameters.account ?? client.account; let receipts = null; const explorerResponse = await client.request({ path: `explorer/${params.hash}`, method: "GET" }); const userOpsWithoutPayment = explorerResponse.userOps.slice(1); const transactionStatus = await (0, parseTransactionStatus_1.parseTransactionStatus)(userOpsWithoutPayment, parameters.mode); switch (transactionStatus.status) { case "FAILED": { const errorMessage = (0, parseErrorMessage_1.parseErrorMessage)(transactionStatus.message); if (client.info.isDebugMode) { console.error({ transactionStatus, hash: params.hash, errorMessage, explorerResponse }); } throw new Error(errorMessage); } case "MINED_FAIL": { const errorMessage = (0, parseErrorMessage_1.parseErrorMessage)(transactionStatus.message); if (client.info.isDebugMode) { console.error({ transactionStatus, hash: params.hash, errorMessage, explorerResponse }); } throw new Error(errorMessage); } case "PENDING": { break; } case "MINING": { break; } case "MINED_SUCCESS": { if (waitForReceipts) { receipts = await Promise.all(userOpsWithoutPayment .filter((userOp) => { if (userOp.isCleanUpUserOp && userOp.executionStatus !== "MINED_SUCCESS") { return false; } return true; }) .map(async ({ chainId, executionData }) => { return (0, actions_1.getTransactionReceipt)(account.deploymentOn(Number(chainId), true).publicClient, { confirmations, ...parameters, hash: executionData }); })); } break; } default: { throw new Error("Unknown transaction status"); } } const explorerLinks = userOpsWithoutPayment.reduce((acc, userOp) => { acc.push((0, explorer_1.getExplorerTxLink)(userOp.executionData, userOp.chainId), (0, explorer_1.getJiffyScanLink)(userOp.userOpHash)); return acc; }, [(0, explorer_1.getMeeScanLink)(params.hash)]); return { ...explorerResponse, userOps: userOpsWithoutPayment, explorerLinks, receipts, transactionStatus: transactionStatus.status, isFinalised: transactionStatus.isFinalised, message: transactionStatus.message }; } exports.default = getSupertransactionReceipt; //# sourceMappingURL=getSupertransactionReceipt.js.map