# `Orchid.Runner.Hook`
[🔗](https://github.com/SynapticStrings/Orchid/blob/main/lib/orchid/runner.ex#L87)

Behaviour for runner hooks.

# `hook_result`
[🔗](https://github.com/SynapticStrings/Orchid/blob/main/lib/orchid/runner.ex#L97)

```elixir
@type hook_result() :: orchid_core_result() | special_result()
```

# `next_fn`
[🔗](https://github.com/SynapticStrings/Orchid/blob/main/lib/orchid/runner.ex#L99)

```elixir
@type next_fn() :: (Orchid.Runner.Context.t() -&gt; hook_result())
```

# `orchid_core_result`
[🔗](https://github.com/SynapticStrings/Orchid/blob/main/lib/orchid/runner.ex#L95)

```elixir
@type orchid_core_result() :: {:ok, Orchid.Step.output()} | {:error, term()}
```

# `special_result`
[🔗](https://github.com/SynapticStrings/Orchid/blob/main/lib/orchid/runner.ex#L93)

```elixir
@type special_result() :: {:special, any()}
```

# `call`
[🔗](https://github.com/SynapticStrings/Orchid/blob/main/lib/orchid/runner.ex#L104)

```elixir
@callback call(ctx :: Orchid.Runner.Context.t(), next_fn()) :: hook_result()
```

Callback to execute the hook.

---

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