diff --git a/docs/diagrams/user_operation_signing.puml b/docs/diagrams/user_operation_signing.puml index 9987446cf..cad269575 100644 --- a/docs/diagrams/user_operation_signing.puml +++ b/docs/diagrams/user_operation_signing.puml @@ -77,6 +77,9 @@ MetaMask -> Snap ++: ""patchUserOperation({""\n\ Snap --> MetaMask --: ""{""\n\ "" paymasterAndData?,""\n\ +"" callGasLimit?,""\n\ +"" verificationGasLimit?,""\n\ +"" preVerificationGas?,""\n\ ""}"" MetaMask -> MetaMask: Update ""paymasterAndData"" and\n\ diff --git a/docs/evm_methods_userOp.md b/docs/evm_methods_userOp.md index 5f766d891..9219336b1 100644 --- a/docs/evm_methods_userOp.md +++ b/docs/evm_methods_userOp.md @@ -150,6 +150,15 @@ Patch _some_ allowed properties of an UserOperation. - `paymasterAndData` - Type: `string` - Pattern: `^0x[0-9a-f]*$` + - `callGasLimit` (optional) + - Type: `string` + - Pattern: `^0x([1-9a-f][0-9a-f]*|0)$` + - `preVerificationGas` (optional) + - Type: `string` + - Pattern: `^0x([1-9a-f][0-9a-f]*|0)$` + - `verificationGasLimit` (optional) + - Type: `string` + - Pattern: `^0x([1-9a-f][0-9a-f]*|0)$` ### Example @@ -180,7 +189,10 @@ Patch _some_ allowed properties of an UserOperation. ```json { - "paymasterAndData": "0x952514d7cBCB495EACeB86e02154921401dB0Cd9dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000779b3fbb00000000000000006565b267000000000000000000000000000000000000000029195b31a9b1c6ccdeff53e359ebbcd5f075a93c1aaed93302e5fde5faf8047028b296b8a3fa4e22b063af5069ae9f656736ffda0ee090c0311155722b905f781b" + "paymasterAndData": "0x952514d7cBCB495EACeB86e02154921401dB0Cd9dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000779b3fbb00000000000000006565b267000000000000000000000000000000000000000029195b31a9b1c6ccdeff53e359ebbcd5f075a93c1aaed93302e5fde5faf8047028b296b8a3fa4e22b063af5069ae9f656736ffda0ee090c0311155722b905f781b", + "callGasLimit": "0x58a83", + "verificationGasLimit": "0xe8c4", + "preVerificationGas": "0xc57c" } ``` diff --git a/src/eth/erc4337/types.ts b/src/eth/erc4337/types.ts index 4bd3f3c59..75afdc037 100644 --- a/src/eth/erc4337/types.ts +++ b/src/eth/erc4337/types.ts @@ -66,6 +66,9 @@ export type EthBaseUserOperation = Infer; export const EthUserOperationPatchStruct = object({ paymasterAndData: EthBytesStruct, + callGasLimit: exactOptional(EthUint256Struct), + verificationGasLimit: exactOptional(EthUint256Struct), + preVerificationGas: exactOptional(EthUint256Struct), }); export type EthUserOperationPatch = Infer;