# AccountOperation

Offchain configurable account transaction and key authorization operation utilities.

Derives operation hashes, selects owner approvals, serializes transactions,
validates operation state, and converts JSON-RPC representations.

## Functions

| Name                | Description                         |
| ------------------- | ----------------------------------- |
| [`AccountOperation.from`](/tempo/reference/AccountOperation/from) | Validates and normalizes an account operation. |
| [`AccountOperation.fromRpc`](/tempo/reference/AccountOperation/fromRpc) | Converts a JSON-RPC account operation to its domain representation. |
| [`AccountOperation.getHash`](/tempo/reference/AccountOperation/getHash) | Derives the deterministic hash for an account operation. |
| [`AccountOperation.selectApprovals`](/tempo/reference/AccountOperation/selectApprovals) | Validates, deduplicates, and selects owner approvals for an operation. |
| [`AccountOperation.serializeKeyAuthorization`](/tempo/reference/AccountOperation/serializeKeyAuthorization) | Serializes a key authorization with selected owner approvals. |
| [`AccountOperation.serializeTransaction`](/tempo/reference/AccountOperation/serializeTransaction) | Serializes an account transaction operation with selected owner approvals. |
| [`AccountOperation.toRpc`](/tempo/reference/AccountOperation/toRpc) | Converts an account operation to its JSON-RPC representation. |

## Errors

| Name                | Description                         |
| ------------------- | ----------------------------------- |
| [`AccountOperation.InvalidApprovalError`](/tempo/reference/AccountOperation/errors#accountoperationinvalidapprovalerror) | Thrown when an account operation owner approval is invalid. |
| [`AccountOperation.InvalidOperationError`](/tempo/reference/AccountOperation/errors#accountoperationinvalidoperationerror) | Thrown when an account operation is malformed or internally inconsistent. |

## Types

| Name                | Description                         |
| ------------------- | ----------------------------------- |
| [`AccountOperation.Base`](/tempo/reference/AccountOperation/types#accountoperationbase) | Fields shared by every account operation. |
| [`AccountOperation.KeyAuthorizationOperation`](/tempo/reference/AccountOperation/types#accountoperationkeyauthorizationoperation) | Account key authorization approval operation. |
| [`AccountOperation.KeyAuthorizationRpc`](/tempo/reference/AccountOperation/types#accountoperationkeyauthorizationrpc) | JSON-RPC account key authorization operation. |
| [`AccountOperation.Operation`](/tempo/reference/AccountOperation/types#accountoperationoperation) | Transaction or key authorization account operation. |
| [`AccountOperation.Rpc`](/tempo/reference/AccountOperation/types#accountoperationrpc) | JSON-RPC account operation. |
| [`AccountOperation.TransactionOperation`](/tempo/reference/AccountOperation/types#accountoperationtransactionoperation) | Account transaction approval operation. |
| [`AccountOperation.TransactionRpc`](/tempo/reference/AccountOperation/types#accountoperationtransactionrpc) | JSON-RPC account transaction operation. |
