# Transaction

Utilities for converting between RPC and structured transaction formats.

Tempo Transactions (type `0x76`) are a new EIP-2718 transaction type with native support
for passkeys, call batching, fee sponsorship, parallelizable nonces, and scheduled execution.

[Tempo Transactions](https://docs.tempo.xyz/protocol/transactions)

## Examples

```ts twoslash
// @noErrors
import { Transaction } from 'ox/tempo'

const transaction = Transaction.fromRpc({
  hash: '0x353fdfc38a2f26115daadee9f5b8392ce62b84f410957967e2ed56b35338cdd0',
  nonce: '0x357',
  blockHash:
    '0xc350d807505fb835650f0013632c5515592987ba169bbc6626d9fc54d91f0f0b',
  blockNumber: '0x12f296f',
  calls: [
    {
      input: '0xdeadbeef',
      to: '0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad',
      value: '0x9b6e64a8ec60000'
    }
  ],
  feeToken: '0x20c0000000000000000000000000000000000000',
  transactionIndex: '0x2',
  from: '0x814e5e0e31016b9a7f138c76b7e7b2bb5c1ab6a6',
  value: '0x9b6e64a8ec60000',
  gas: '0x43f5d',
  maxFeePerGas: '0x2ca6ae494',
  maxPriorityFeePerGas: '0x41cc3c0',
  input:
    '0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000006643504700000000000000000000000000000000000000000000000000000000000000040b080604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000009b6e64a8ec600000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000009b6e64a8ec60000000000000000000000000000000000000000000000000000019124bb5ae978c000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b80000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b8000000000000000000000000000000fee13a103a10d593b9ae06b3e05f2e7e1c00000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000190240001b9872b',
  signature: {
    r: '0x635dc2033e60185bb36709c29c75d64ea51dfbd91c32ef4be198e4ceb169fb4d',
    s: '0x50c2667ac4c771072746acfdcf1f1483336dcca8bd2df47cd83175dbe60f0540',
    type: 'secp256k1',
    yParity: '0x0'
  },
  chainId: '0x1',
  accessList: [],
  type: '0x76'
})
```

## Functions

| Name                | Description                         |
| ------------------- | ----------------------------------- |
| [`Transaction.fromRpc`](/tempo/reference/Transaction/fromRpc) | Converts an [`Transaction.Rpc`](/tempo/reference/Transaction/types#rpc) to an [`Transaction.Transaction`](/tempo/reference/Transaction/types#transaction). |
| [`Transaction.toRpc`](/tempo/reference/Transaction/toRpc) | Converts an [`Transaction.Transaction`](/tempo/reference/Transaction/types#transaction) to an [`Transaction.Rpc`](/tempo/reference/Transaction/types#rpc). |

## Types

| Name                | Description                         |
| ------------------- | ----------------------------------- |
| [`Transaction.FromRpcType`](/tempo/reference/Transaction/types#transactionfromrpctype) | RPC Type to Type mapping. |
| [`Transaction.Rpc`](/tempo/reference/Transaction/types#transactionrpc) | An RPC Transaction as defined in the [Execution API specification](https://github.com/ethereum/execution-apis/blob/main/src/schemas/transaction.yaml). |
| [`Transaction.Tempo`](/tempo/reference/Transaction/types#transactiontempo) | Native account abstraction transaction (type `0x76`). |
| [`Transaction.TempoRpc`](/tempo/reference/Transaction/types#transactiontemporpc) | Native account abstraction transaction in RPC format. |
| [`Transaction.ToRpcType`](/tempo/reference/Transaction/types#transactiontorpctype) | Type to RPC Type mapping. |
| [`Transaction.Transaction`](/tempo/reference/Transaction/types#transactiontransaction) | A Transaction as defined in the [Execution API specification](https://github.com/ethereum/execution-apis/blob/main/src/schemas/transaction.yaml). |
