@locker-labs/sdk
Version:
A utility library for enhancing your ERC-4337 experience
92 lines • 2.91 kB
JavaScript
;
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