# z.tempo.SignatureEnvelope.Keychain

Keychain signature envelope schema.

## Imports

```ts
import { z } from 'ox/zod'

z.tempo.SignatureEnvelope.Keychain
```

## Definition

```ts
export const Keychain = z
  .object({
    // `inner` is recursive; type the getter concretely to break the cycle.
    inner: z.lazy(
      (): z.ZodMiniType<core_SignatureEnvelope.SignatureEnvelope> =>
        Domain as never,
    ),
    keyId: z.optional(z_Address.Address),
    type: z.literal('keychain'),
    userAddress: z_Address.Address,
    version: z.optional(KeychainVersion),
  })
  .check(
    z.refine(
      (value) => core_SignatureEnvelope.validate(value),
      'multisig access keys require keychain V2',
    ),
  )
```

**Source:** [src/zod/tempo/SignatureEnvelope.ts](https://github.com/wevm/ox/blob/main/src/zod/tempo/SignatureEnvelope.ts)
