# GuardInput

A Guard or an object that supplies one. Guard combinators accept either form.

## Signatures

```ts
export type GuardInput<I, O, E = never, R = never> = Guard<I, O, E, R> | AsGuard<I, O, E, R>;
```

## Why

A single input contract lets every combinator accept direct functions and domain adapters consistently.

## Ownership and lifetime

This union acquires no resources; normalization does not extend the lifetime of either alternative.

## Examples

```ts
import type { GuardInput } from "@typed/guard"
import { liftPredicate } from "@typed/guard"
const input: GuardInput<unknown, string> = liftPredicate((value: unknown): value is string => typeof value === "string")
```
