# `Mobus.Stepwise.Result`
[🔗](https://github.com/fosferon/mobus_stepwise/blob/main/lib/mobus/stepwise/result.ex#L1)

Normalized outcome helpers for engine return values.

The engine returns one of three tuple shapes:

  * `{:ok, runtime}`
  * `{:wait, runtime, wait_cfg}`
  * `{:error, reason, runtime}`

These helpers destructure any of those shapes uniformly,
so orchestration code never hand-parses tuples.

# `engine_result`

```elixir
@type engine_result() ::
  {:ok, map()}
  | {:wait, map(), map()}
  | {:error, term(), map()}
  | {:error, term()}
```

# `error?`

```elixir
@spec error?(engine_result()) :: boolean()
```

Returns `true` if the result is an error.

# `error_reason`

```elixir
@spec error_reason(engine_result()) :: term() | nil
```

Returns the error reason, or `nil`.

# `ok?`

```elixir
@spec ok?(engine_result()) :: boolean()
```

Returns `true` if the result is ok.

# `runtime`

```elixir
@spec runtime(engine_result()) :: map() | nil
```

Extracts the runtime from any engine result shape.

# `status`

```elixir
@spec status(engine_result()) :: :ok | :wait | :error
```

Returns the status atom: `:ok`, `:wait`, or `:error`.

# `wait?`

```elixir
@spec wait?(engine_result()) :: boolean()
```

Returns `true` if the result is a wait.

# `wait_config`

```elixir
@spec wait_config(engine_result()) :: term() | nil
```

Returns the wait configuration, or `nil`.

---

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