# UserOperation

Utility functions and types for working with [ERC-4337 User Operations](https://eips.ethereum.org/EIPS/eip-4337).

## Functions

| Name                | Description                         |
| ------------------- | ----------------------------------- |
| [`UserOperation.from`](/ercs/erc4337/UserOperation/from) | Instantiates a [`UserOperation.UserOperation`](/ercs/erc4337/UserOperation/types#useroperation) from a provided input. |
| [`UserOperation.fromPacked`](/ercs/erc4337/UserOperation/fromPacked) | Transforms a "packed" User Operation into a structured [`UserOperation.UserOperation`](/ercs/erc4337/UserOperation/types#useroperation). |
| [`UserOperation.fromRpc`](/ercs/erc4337/UserOperation/fromRpc) | Converts an [`UserOperation.Rpc`](/ercs/erc4337/UserOperation/types#rpc) to an [`UserOperation.UserOperation`](/ercs/erc4337/UserOperation/types#useroperation). |
| [`UserOperation.getSignPayload`](/ercs/erc4337/UserOperation/getSignPayload) | Obtains the signing payload for a [`UserOperation.UserOperation`](/ercs/erc4337/UserOperation/types#useroperation). |
| [`UserOperation.hash`](/ercs/erc4337/UserOperation/hash) | Hashes a [`UserOperation.UserOperation`](/ercs/erc4337/UserOperation/types#useroperation). This is the "user operation hash". |
| [`UserOperation.toInitCode`](/ercs/erc4337/UserOperation/toInitCode) | Converts a [`UserOperation.UserOperation`](/ercs/erc4337/UserOperation/types#useroperation) to `initCode`. |
| [`UserOperation.toPacked`](/ercs/erc4337/UserOperation/toPacked) | Transforms a User Operation into "packed" format. |
| [`UserOperation.toRpc`](/ercs/erc4337/UserOperation/toRpc) | Converts a [`UserOperation.UserOperation`](/ercs/erc4337/UserOperation/types#useroperation) to a [`UserOperation.Rpc`](/ercs/erc4337/UserOperation/types#rpc). |
| [`UserOperation.toTypedData`](/ercs/erc4337/UserOperation/toTypedData) | Converts a signed [`UserOperation.UserOperation`](/ercs/erc4337/UserOperation/types#useroperation) to a [`TypedData.Definition`](/api/TypedData/types#definition). |

## Types

| Name                | Description                         |
| ------------------- | ----------------------------------- |
| [`UserOperation.Packed`](/ercs/erc4337/UserOperation/types#useroperationpacked) | Packed User Operation. |
| [`UserOperation.Rpc`](/ercs/erc4337/UserOperation/types#useroperationrpc) | RPC User Operation type. |
| [`UserOperation.RpcTransactionInfo`](/ercs/erc4337/UserOperation/types#useroperationrpctransactioninfo) | RPC Transaction Info. |
| [`UserOperation.RpcV06`](/ercs/erc4337/UserOperation/types#useroperationrpcv06) | RPC User Operation on EntryPoint 0.6 |
| [`UserOperation.RpcV07`](/ercs/erc4337/UserOperation/types#useroperationrpcv07) | RPC User Operation on EntryPoint 0.7 |
| [`UserOperation.RpcV08`](/ercs/erc4337/UserOperation/types#useroperationrpcv08) | RPC User Operation on EntryPoint 0.8 |
| [`UserOperation.RpcV09`](/ercs/erc4337/UserOperation/types#useroperationrpcv09) | RPC User Operation on EntryPoint 0.9 |
| [`UserOperation.TransactionInfo`](/ercs/erc4337/UserOperation/types#useroperationtransactioninfo) | Transaction Info. |
| [`UserOperation.UserOperation`](/ercs/erc4337/UserOperation/types#useroperationuseroperation) | User Operation. |
| [`UserOperation.V06`](/ercs/erc4337/UserOperation/types#useroperationv06) | Type for User Operation on EntryPoint 0.6 |
| [`UserOperation.V07`](/ercs/erc4337/UserOperation/types#useroperationv07) | Type for User Operation on EntryPoint 0.7 |
| [`UserOperation.V08`](/ercs/erc4337/UserOperation/types#useroperationv08) | Type for User Operation on EntryPoint 0.8 |
| [`UserOperation.V09`](/ercs/erc4337/UserOperation/types#useroperationv09) | Type for User Operation on EntryPoint 0.9 |
