# `Orchid.Step.ID`
[🔗](https://github.com/SynapticStrings/Orchid/blob/main/lib/orchid/step/id.ex#L1)

Create identifier/fingerprint via Step's input, output or mapper in option.

# `t`
[🔗](https://github.com/SynapticStrings/Orchid/blob/main/lib/orchid/step/id.ex#L7)

```elixir
@type t() ::
  {MapSet.t(Orchid.Step.input_keys()), MapSet.t(Orchid.Step.output_keys())}
  | {Orchid.Step.implementation(), MapSet.t(Orchid.Step.input_keys()),
     MapSet.t(Orchid.Step.output_keys())}
  | :root
```

# `finger_print`
[🔗](https://github.com/SynapticStrings/Orchid/blob/main/lib/orchid/step/id.ex#L13)

```elixir
@spec finger_print(Orchid.Step.t(), headless? :: boolean()) :: t()
```

# `normalize_keys_to_set`
[🔗](https://github.com/SynapticStrings/Orchid/blob/main/lib/orchid/step/id.ex#L41)

```elixir
@spec normalize_keys_to_set(nil | atom() | list() | tuple() | MapSet.t()) ::
  MapSet.t()
```

normalize step's io key into MapSet.

# `same?`
[🔗](https://github.com/SynapticStrings/Orchid/blob/main/lib/orchid/step/id.ex#L30)

```elixir
@spec same?(Orchid.Step.t(), Orchid.Step.t()) :: boolean()
```

Check if two steps have the same input and output keys.

---

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