# `Dsxir.Signature.Runtime`

Stable introspection surface for signature modules. Callers depend on this
module rather than on the Spark `Info` generator output.

# `signature`

```elixir
@type signature() :: module() | Dsxir.Signature.Compiled.t()
```

# `fields`

```elixir
@spec fields(signature()) :: [Dsxir.Signature.Field.t()]
```

Return all declared fields for the signature, in source order.

# `inputs`

```elixir
@spec inputs(signature()) :: [Dsxir.Signature.Field.t()]
```

Return the input fields for the signature.

# `instruction`

```elixir
@spec instruction(signature()) :: nil | String.t()
```

Return the user-supplied instruction string, or `nil` if none was set.

# `outputs`

```elixir
@spec outputs(signature()) :: [Dsxir.Signature.Field.t()]
```

Return the output fields for the signature.

# `zoi_for`

```elixir
@spec zoi_for(signature(), atom()) :: {:ok, Zoi.schema()} | :error
```

Look up the Zoi schema for the field named `name`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
