# `SquidMesh.Runtime.StepInput`
[🔗](https://github.com/ccarvalho-eng/squid_mesh/blob/main/lib/squid_mesh/runtime/step_input.ex#L1)

Step-execution input normalization for the runtime.

This module keeps payload/context merging and identifier normalization out of
the main executor flow.

# `expected_step`

```elixir
@type expected_step() :: atom() | String.t() | nil
```

# `input_mapping`

```elixir
@type input_mapping() :: [atom()] | nil
```

# `build_dependency_step_input`

```elixir
@spec build_dependency_step_input(module(), SquidMesh.Run.t(), input_mapping()) ::
  map()
```

# `build_step_input`

```elixir
@spec build_step_input(SquidMesh.Run.t(), input_mapping()) :: map()
```

# `deserialize_expected_step`

```elixir
@spec deserialize_expected_step(expected_step()) ::
  {:ok, atom() | nil} | {:error, {:invalid_step, String.t()}}
```

# `deserialize_expected_step`

```elixir
@spec deserialize_expected_step(expected_step(), map()) ::
  {:ok, atom() | nil} | {:error, {:invalid_step, String.t()}}
```

# `normalize_map_keys`

```elixir
@spec normalize_map_keys(map()) :: map()
```

---

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