UNPKG

@keypo/typescript-sdk

Version:

A TypeScript SDK for using Keypo

83 lines (82 loc) 3.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getKernelClient = getKernelClient; const viem_1 = require("viem"); const ecdsa_validator_1 = require("@zerodev/ecdsa-validator"); const sdk_1 = require("@zerodev/sdk"); const constants_1 = require("@zerodev/sdk/constants"); // Helper to create a kernel client from a userSigner async function getKernelClient(userSigner, chain, bundlerRpcUrl, authorization, debug) { if (debug) { console.log("[DEBUG] getKernelClient called with:", { userSigner, chain, bundlerRpcUrl, authorization }); } try { const publicClient = (0, viem_1.createPublicClient)({ transport: (0, viem_1.http)(bundlerRpcUrl), chain, }); if (debug) { console.log("[DEBUG] publicClient:", publicClient); } const account = await (0, ecdsa_validator_1.create7702KernelAccount)(publicClient, { signer: userSigner, entryPoint: (0, constants_1.getEntryPoint)("0.7"), kernelVersion: constants_1.KERNEL_V3_3, eip7702Auth: authorization }); if (debug) { console.log("[DEBUG] kernelAccount:", account); } const paymasterClient = (0, sdk_1.createZeroDevPaymasterClient)({ chain, transport: (0, viem_1.http)(bundlerRpcUrl), }); if (debug) { console.log("[DEBUG] paymasterClient:", paymasterClient); } const kernelClient = (0, ecdsa_validator_1.create7702KernelAccountClient)({ account, chain, bundlerTransport: (0, viem_1.http)(bundlerRpcUrl), paymaster: paymasterClient, client: publicClient, userOperation: { estimateFeesPerGas: async ({ bundlerClient }) => { try { return await (0, sdk_1.getUserOperationGasPrice)(bundlerClient); } catch (error) { if (debug) { console.warn("[DEBUG] Gas price estimation failed, using fallback:", error.message); } // Fallback gas price estimation return { maxFeePerGas: BigInt(2000000000), // 2 gwei maxPriorityFeePerGas: BigInt(1000000000), // 1 gwei }; } } } }); if (debug) { console.log("[DEBUG] kernelClient:", kernelClient); } return kernelClient; } catch (error) { console.error("Error creating kernel client:", error); if (debug) { console.error("Error details:", { message: error.message, cause: error.cause, stack: error.stack }); } throw error; } }