UNPKG

@owlprotocol/contracts-account-abstraction

Version:

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

66 lines (65 loc) 2.54 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 VerifyingPaymaster_exports = {}; __export(VerifyingPaymaster_exports, { getVerifyingPaymasterHash: () => getVerifyingPaymasterHash }); module.exports = __toCommonJS(VerifyingPaymaster_exports); var import_viem = require("viem"); function getVerifyingPaymasterHash(params) { const { chainId, userOperation } = params; const abi = [ { type: "address", name: "sender" }, { type: "uint256", name: "nonce" }, { type: "bytes32", name: "initCodeHash" }, { type: "bytes32", name: "callDataHash" }, { type: "bytes32", name: "accountGasLimits" }, { type: "uint256", name: "paymasterAndData" }, { type: "uint256", name: "preVerificationGas" }, { type: "bytes32", name: "gasFees" }, { type: "uint256", name: "chainId" }, { type: "address", name: "paymaster" }, { type: "uint48", name: "validUntil" }, { type: "uint48", name: "validAfter" } ]; const [validUntil, validAfter] = (0, import_viem.decodeAbiParameters)( [ { name: "validUntil", type: "uint48" }, { name: "validAfter", type: "uint48" } ], (0, import_viem.sliceHex)(userOperation.paymasterAndData, 52) ); return (0, import_viem.keccak256)( (0, import_viem.encodeAbiParameters)(abi, [ userOperation.sender, userOperation.nonce, (0, import_viem.keccak256)(userOperation.initCode), (0, import_viem.keccak256)(userOperation.callData), userOperation.accountGasLimits, (0, import_viem.sliceHex)(userOperation.paymasterAndData, 20, 52), //paymaster gas userOperation.preVerificationGas, userOperation.gasFees, chainId, (0, import_viem.sliceHex)(userOperation.paymasterAndData, 0, 20), // paymaster address validUntil, validAfter ]) ); }