UNPKG

@locker-labs/sdk

Version:

A utility library for enhancing your ERC-4337 experience

92 lines 2.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.adaptLockerChain2AlchemyChain = exports.waitForTransaction = void 0; const infra_1 = require("@account-kit/infra"); const tokens_js_1 = require("./tokens.js"); const getUserOperationByHash = async (userOpHash, alchemyRpcUrl) => { const headers = { accept: "application/json", "content-type": "application/json", }; const body = JSON.stringify({ id: 1, jsonrpc: "2.0", method: "eth_getUserOperationByHash", params: [userOpHash], }); try { const response = await fetch(alchemyRpcUrl, { method: "POST", headers: headers, body: body, }); const data = await response.json(); return data?.result?.transactionHash; } catch (e) { console.error(e); } }; async function getTransactionReceipt(txHash, alchemyRpcUrl) { const headers = { accept: "application/json", "content-type": "application/json", }; const body = JSON.stringify({ id: 1, jsonrpc: "2.0", method: "eth_getTransactionReceipt", params: [txHash], }); try { const response = await fetch(alchemyRpcUrl, { method: "POST", headers: headers, body: body, }); const data = await response.json(); return data?.result; } catch (error) { console.error("Error:", error); } } const waitForTransaction = async (userOpHash, alchemyRpcUrl) => { console.log("Waiting for userOp confirmation..."); let txHash; while (!txHash) { txHash = await getUserOperationByHash(userOpHash, alchemyRpcUrl); if (txHash) { console.log("txHash:", txHash); break; } await new Promise((resolve) => setTimeout(resolve, 3000)); } let txReceipt; console.log("Waiting for tx confirmation..."); while (!txReceipt) { txReceipt = await getTransactionReceipt(txHash, alchemyRpcUrl); if (txReceipt) { console.log("Receipt:", txReceipt); break; } await new Promise((resolve) => setTimeout(resolve, 1000)); } }; exports.waitForTransaction = waitForTransaction; const adaptLockerChain2AlchemyChain = (lockerChain) => { switch (lockerChain) { case tokens_js_1.EChain.BASE: return infra_1.base; case tokens_js_1.EChain.BASE_SEPOLIA: return infra_1.baseSepolia; case tokens_js_1.EChain.SEPOLIA: return infra_1.sepolia; case tokens_js_1.EChain.SOLANA: case tokens_js_1.EChain.SOLANA_DEVNET: default: throw new Error(`Unsupported chain: ${lockerChain}`); } }; exports.adaptLockerChain2AlchemyChain = adaptLockerChain2AlchemyChain; //# sourceMappingURL=helpers.js.map