Interface for EntryPoint v0.7.0 simulation methods.

interface IEntryPointV7Simulations {
    address: `0x${string}`;
    encodeHandleOpsFunctionData: (
        userOperation: {
            callData: `0x${string}`;
            callGasLimit: bigint;
            factory: `0x${string}`;
            factoryData: `0x${string}`;
            maxFeePerGas: bigint;
            maxPriorityFeePerGas: bigint;
            nonce: bigint;
            paymaster: `0x${string}`;
            paymasterData: `0x${string}`;
            paymasterPostOpGasLimit?: bigint;
            paymasterVerificationGasLimit?: bigint;
            preVerificationGas: bigint;
            sender: `0x${string}`;
            signature: `0x${string}`;
            verificationGasLimit: bigint;
        },
        beneficiary: `0x${string}`,
    ) => `0x${string}`;
    simulateHandleOp: (
        params: SimulateHandleOpParams,
    ) => Promise<
        {
            accountValidationData: bigint;
            paid: bigint;
            paymasterValidationData: bigint;
            preOpGas: bigint;
            targetResult: `0x${string}`;
            targetSuccess: boolean;
        },
    >;
}

Properties

address: `0x${string}`

Contract address

encodeHandleOpsFunctionData: (
    userOperation: {
        callData: `0x${string}`;
        callGasLimit: bigint;
        factory: `0x${string}`;
        factoryData: `0x${string}`;
        maxFeePerGas: bigint;
        maxPriorityFeePerGas: bigint;
        nonce: bigint;
        paymaster: `0x${string}`;
        paymasterData: `0x${string}`;
        paymasterPostOpGasLimit?: bigint;
        paymasterVerificationGasLimit?: bigint;
        preVerificationGas: bigint;
        sender: `0x${string}`;
        signature: `0x${string}`;
        verificationGasLimit: bigint;
    },
    beneficiary: `0x${string}`,
) => `0x${string}`

Encodes function data for handleOps

Type declaration

    • (
          userOperation: {
              callData: `0x${string}`;
              callGasLimit: bigint;
              factory: `0x${string}`;
              factoryData: `0x${string}`;
              maxFeePerGas: bigint;
              maxPriorityFeePerGas: bigint;
              nonce: bigint;
              paymaster: `0x${string}`;
              paymasterData: `0x${string}`;
              paymasterPostOpGasLimit?: bigint;
              paymasterVerificationGasLimit?: bigint;
              preVerificationGas: bigint;
              sender: `0x${string}`;
              signature: `0x${string}`;
              verificationGasLimit: bigint;
          },
          beneficiary: `0x${string}`,
      ): `0x${string}`
    • Encodes the function data for handling multiple user operations.

      Parameters

      • userOperation: {
            callData: `0x${string}`;
            callGasLimit: bigint;
            factory: `0x${string}`;
            factoryData: `0x${string}`;
            maxFeePerGas: bigint;
            maxPriorityFeePerGas: bigint;
            nonce: bigint;
            paymaster: `0x${string}`;
            paymasterData: `0x${string}`;
            paymasterPostOpGasLimit?: bigint;
            paymasterVerificationGasLimit?: bigint;
            preVerificationGas: bigint;
            sender: `0x${string}`;
            signature: `0x${string}`;
            verificationGasLimit: bigint;
        }

        The user operation to encode

        • callData: `0x${string}`
        • callGasLimit: bigint

          Gas limit for the main execution call

        • factory: `0x${string}`
        • factoryData: `0x${string}`
        • maxFeePerGas: bigint

          Maximum total fee per gas unit

        • maxPriorityFeePerGas: bigint

          Maximum priority fee per gas unit

        • nonce: bigint

          Account nonce

        • paymaster: `0x${string}`
        • paymasterData: `0x${string}`
        • OptionalpaymasterPostOpGasLimit?: bigint

          Gas limit for paymaster post-operation execution

        • OptionalpaymasterVerificationGasLimit?: bigint

          Gas limit for paymaster verification

        • preVerificationGas: bigint

          Gas overhead for pre-verification operations

        • sender: `0x${string}`
        • signature: `0x${string}`
        • verificationGasLimit: bigint

          Gas limit for the verification phase

      • beneficiary: `0x${string}`

        The address that will receive the gas refund

      Returns `0x${string}`

      The encoded function data as a hex string

      const encodedData = simulator.encodeHandleOpsFunctionData(
      userOperation,
      '0x123...' // beneficiary address
      );
simulateHandleOp: (
    params: SimulateHandleOpParams,
) => Promise<
    {
        accountValidationData: bigint;
        paid: bigint;
        paymasterValidationData: bigint;
        preOpGas: bigint;
        targetResult: `0x${string}`;
        targetSuccess: boolean;
    },
>

Simulates handling a user operation

Type declaration

    • (
          params: SimulateHandleOpParams,
      ): Promise<
          {
              accountValidationData: bigint;
              paid: bigint;
              paymasterValidationData: bigint;
              preOpGas: bigint;
              targetResult: `0x${string}`;
              targetSuccess: boolean;
          },
      >
    • Simulates the execution of a user operation. This method always reverts by design, and the execution result is parsed from the revert data.

      Parameters

      • params: SimulateHandleOpParams

        The simulation parameters

        • OptionalstateOverrides?: StateOverrideSet
        • targetAddress: `0x${string}`
        • targetCallData: `0x${string}`
        • userOperation: {
              callData: `0x${string}`;
              callGasLimit: bigint;
              factory: `0x${string}`;
              factoryData: `0x${string}`;
              maxFeePerGas: bigint;
              maxPriorityFeePerGas: bigint;
              nonce: bigint;
              paymaster: `0x${string}`;
              paymasterData: `0x${string}`;
              paymasterPostOpGasLimit?: bigint;
              paymasterVerificationGasLimit?: bigint;
              preVerificationGas: bigint;
              sender: `0x${string}`;
              signature: `0x${string}`;
              verificationGasLimit: bigint;
          }
          • callData: `0x${string}`
          • callGasLimit: bigint

            Gas limit for the main execution call

          • factory: `0x${string}`
          • factoryData: `0x${string}`
          • maxFeePerGas: bigint

            Maximum total fee per gas unit

          • maxPriorityFeePerGas: bigint

            Maximum priority fee per gas unit

          • nonce: bigint

            Account nonce

          • paymaster: `0x${string}`
          • paymasterData: `0x${string}`
          • OptionalpaymasterPostOpGasLimit?: bigint

            Gas limit for paymaster post-operation execution

          • OptionalpaymasterVerificationGasLimit?: bigint

            Gas limit for paymaster verification

          • preVerificationGas: bigint

            Gas overhead for pre-verification operations

          • sender: `0x${string}`
          • signature: `0x${string}`
          • verificationGasLimit: bigint

            Gas limit for the verification phase

      Returns Promise<
          {
              accountValidationData: bigint;
              paid: bigint;
              paymasterValidationData: bigint;
              preOpGas: bigint;
              targetResult: `0x${string}`;
              targetSuccess: boolean;
          },
      >

      The execution result containing validation and execution details

      ParseError if the error data cannot be parsed

      Error if the simulation fails with an error

      const result = await simulator.simulateHandleOp({
      userOperation: {
      sender: '0x123...',
      nonce: '0x1',
      // ... other UserOperation fields
      },
      targetAddress: '0x456...',
      targetCallData: '0x789...',
      stateOverrides: {
      // Optional state modifications
      }
      });