UNPKG

@owlprotocol/contracts-account-abstraction

Version:

ERC4337 Account Abstraction support for deploying relevant smart contracts and interacting with UserOps.

108 lines (107 loc) 4.86 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var createPaymasterEIP1193_exports = {}; __export(createPaymasterEIP1193_exports, { createBackendPaymasterEIP1193: () => createBackendPaymasterEIP1193, isPaymasterRpcMethod: () => isPaymasterRpcMethod, paymasterRpcMethods: () => paymasterRpcMethods }); module.exports = __toCommonJS(createPaymasterEIP1193_exports); var import_viem = require("viem"); var import_utils = require("viem/utils"); var import_actions = require("../actions/index.js"); var import_UserOperation = require("../models/UserOperation.js"); const paymasterRpcMethods = [ "pimlico_getUserOperationGasPrice", "pm_getPaymasterStubData", "pm_getPaymasterData" ]; function isPaymasterRpcMethod(method) { return paymasterRpcMethods.includes(method); } function createBackendPaymasterEIP1193(client) { return async function(args) { try { if (args.method === "pimlico_getUserOperationGasPrice") { const gasPrice = await (0, import_utils.getAction)(client, import_actions.getUserOperationGasPrice, "getUserOperationGasPrice")({}); return { slow: { maxFeePerGas: (0, import_viem.numberToHex)(gasPrice.slow.maxFeePerGas), maxPriorityFeePerGas: (0, import_viem.numberToHex)(gasPrice.slow.maxPriorityFeePerGas) }, standard: { maxFeePerGas: (0, import_viem.numberToHex)(gasPrice.slow.maxFeePerGas), maxPriorityFeePerGas: (0, import_viem.numberToHex)(gasPrice.slow.maxPriorityFeePerGas) }, fast: { maxFeePerGas: (0, import_viem.numberToHex)(gasPrice.slow.maxFeePerGas), maxPriorityFeePerGas: (0, import_viem.numberToHex)(gasPrice.slow.maxPriorityFeePerGas) } }; } else if (args.method === "pm_getPaymasterStubData") { const [userOperationHex, entryPointAddress, chainIdHex] = args.params; const userOperation = (0, import_UserOperation.decodeUserOp)(userOperationHex); const { paymaster, paymasterData, paymasterVerificationGasLimit, paymasterPostOpGasLimit, sponsor, isFinal } = await (0, import_utils.getAction)( client, import_actions.getPaymasterStubData, "getPaymasterStubData" )({ ...userOperation, entryPointAddress, chainId: (0, import_viem.hexToNumber)(chainIdHex) }); const result = { paymaster, paymasterData, //Interfaces don't match between official viem action & RPC. Default to 0 paymasterVerificationGasLimit: paymasterVerificationGasLimit ? (0, import_viem.numberToHex)(paymasterVerificationGasLimit) : "0x", paymasterPostOpGasLimit: (0, import_viem.numberToHex)(paymasterPostOpGasLimit) }; if (sponsor) { result.sponsor = sponsor; } if (isFinal != void 0) { result.isFinal = isFinal; } return result; } else if (args.method === "pm_getPaymasterData") { const [userOperationHex, entryPointAddress, chainIdHex] = args.params; const userOperation = (0, import_UserOperation.decodeUserOp)(userOperationHex); const { paymaster, paymasterData, paymasterVerificationGasLimit, paymasterPostOpGasLimit } = await (0, import_utils.getAction)( client, import_actions.getPaymasterData, "getPaymasterData" )({ ...userOperation, entryPointAddress, chainId: (0, import_viem.hexToNumber)(chainIdHex) }); const result = { paymaster, paymasterData, //Interfaces don't match between official viem action & RPC. Default to 0 paymasterVerificationGasLimit: paymasterVerificationGasLimit ? (0, import_viem.numberToHex)(paymasterVerificationGasLimit) : "0x", //Interfaces don't match between official viem action & RPC. Default to 0 paymasterPostOpGasLimit: paymasterPostOpGasLimit ? (0, import_viem.numberToHex)(paymasterPostOpGasLimit) : "0x" }; return result; } } catch (error) { return null; } }; }