# FrameSignature

Utilities for constructing, validating, and encoding [EIP-8141](https://eips.ethereum.org/EIPS/eip-8141) signature entries.

Supports [`FrameSignature.Arbitrary`](/api/FrameSignature/types#arbitrary), [`FrameSignature.Secp256k1`](/api/FrameSignature/types#secp256k1),
and [`FrameSignature.P256`](/api/FrameSignature/types#p256) entries. An empty payload selects the canonical
transaction signing hash.

## Examples

### Creating Signature Entries

Use [`FrameSignature.from`](/api/FrameSignature/from) to wrap arbitrary witness bytes.

```ts twoslash
import { FrameSignature } from 'ox'

const entry = FrameSignature.from('0xaabb')
// @log: { payload: '0x', scheme: 'arbitrary', signature: '0xaabb' }
```

## Functions

| Name                | Description                         |
| ------------------- | ----------------------------------- |
| [`FrameSignature.assert`](/api/FrameSignature/assert) | Asserts that a [`FrameSignature.FrameSignature`](/api/FrameSignature/types#framesignature) is structurally valid. |
| [`FrameSignature.from`](/api/FrameSignature/from) | Coerces a value into a [`FrameSignature.FrameSignature`](/api/FrameSignature/types#framesignature). |
| [`FrameSignature.fromRpc`](/api/FrameSignature/fromRpc) | Converts an RPC signature entry to a structured frame signature. |
| [`FrameSignature.fromTuple`](/api/FrameSignature/fromTuple) | Converts a [`FrameSignature.Tuple`](/api/FrameSignature/types#tuple) to a structured [`FrameSignature.FrameSignature`](/api/FrameSignature/types#framesignature). |
| [`FrameSignature.toRpc`](/api/FrameSignature/toRpc) | Converts a structured frame signature to its RPC representation. |
| [`FrameSignature.toTuple`](/api/FrameSignature/toTuple) | Converts a [`FrameSignature.FrameSignature`](/api/FrameSignature/types#framesignature) to its RLP-ready [`FrameSignature.Tuple`](/api/FrameSignature/types#tuple). |
| [`FrameSignature.validate`](/api/FrameSignature/validate) | Returns whether a [`FrameSignature.FrameSignature`](/api/FrameSignature/types#framesignature) is structurally valid. |

## Errors

| Name                | Description                         |
| ------------------- | ----------------------------------- |
| [`FrameSignature.InvalidError`](/api/FrameSignature/errors#framesignatureinvaliderror) | Thrown when frame signature metadata or encoding is invalid. |

## Types

| Name                | Description                         |
| ------------------- | ----------------------------------- |
| [`FrameSignature.Arbitrary`](/api/FrameSignature/types#framesignaturearbitrary) | Contract-defined signature bytes. |
| [`FrameSignature.FrameSignature`](/api/FrameSignature/types#framesignatureframesignature) | An EIP-8141 signature entry. Empty payload selects the transaction signing hash. |
| [`FrameSignature.P256`](/api/FrameSignature/types#framesignaturep256) | A structured P-256 signature entry. |
| [`FrameSignature.Rpc`](/api/FrameSignature/types#framesignaturerpc) | JSON-RPC representation of a frame signature. |
| [`FrameSignature.Scheme`](/api/FrameSignature/types#framesignaturescheme) | A supported numeric or named frame signature scheme. |
| [`FrameSignature.Secp256k1`](/api/FrameSignature/types#framesignaturesecp256k1) | A structured secp256k1 signature entry. |
| [`FrameSignature.Tuple`](/api/FrameSignature/types#framesignaturetuple) | RLP-ready signature entry. The payload occupies the specification's `msg` field. |
