UNPKG

@biconomy/abstractjs

Version:

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

81 lines 3.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSupertransactionReceipt = getSupertransactionReceipt; const viem_1 = require("viem"); 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"); const createHttpClient_1 = require("../../createHttpClient.js"); const createMeeClient_1 = require("../../createMeeClient.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 metaStatus = await (0, parseTransactionStatus_1.parseTransactionStatus)(explorerResponse.userOps); switch (metaStatus.status) { case "FAILED": { console.log({ metaStatus, explorerResponse, hash: params.hash }); throw new Error((0, parseErrorMessage_1.parseErrorMessage)(metaStatus.message)); } case "MINED_FAIL": { console.log({ metaStatus, explorerResponse, hash: params.hash }); throw new Error((0, parseErrorMessage_1.parseErrorMessage)(metaStatus.message)); } case "PENDING": { break; } case "MINING": { break; } case "MINED_SUCCESS": { if (waitForReceipts) { const isSponsoredSupertransaction = explorerResponse.paymentInfo.sponsored; const sponsorshipUrl = explorerResponse.paymentInfo.sponsorshipUrl || createMeeClient_1.DEFAULT_PATHFINDER_URL; receipts = await Promise.all(explorerResponse.userOps .filter((userOp) => { if (userOp.isCleanUpUserOp && userOp.executionStatus !== "MINED_SUCCESS") { return false; } return true; }) .map(async ({ chainId, executionData }, index) => { if (isSponsoredSupertransaction && index === 0) { const sponsorshipClient = (0, createHttpClient_1.createHttpClient)(sponsorshipUrl); const receipt = await sponsorshipClient.request({ path: `sponsorship/receipt/${chainId}/${executionData}`, method: "GET" }); return (0, viem_1.formatTransactionReceipt)(receipt); } 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 = explorerResponse.userOps.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, explorerLinks, receipts, transactionStatus: metaStatus.status }; } exports.default = getSupertransactionReceipt; //# sourceMappingURL=getSupertransactionReceipt.js.map