# `Runic.Workflow.InputBinding`
[🔗](https://github.com/zblanco/runic/blob/main/lib/workflow/input_binding.ex#L1)

Internal, serializable lowering node for named component-port connections.

An input binding projects safe paths from ordinary domain values and assembles
the target's declared input shape. It is an invokable compiler artifact, not
a registered user-authored component.

# `binding`

```elixir
@type binding() :: %{
  id: Runic.Workflow.Connection.connection_id(),
  source_hash: term(),
  source_port: atom(),
  source_port_index: non_neg_integer(),
  source_port_count: pos_integer(),
  target_port: atom(),
  selector: list(),
  target_path: list()
}
```

# `t`

```elixir
@type t() :: %Runic.Workflow.InputBinding{
  bindings: [binding()],
  hash: Runic.Identity.t(),
  input_ports: keyword(),
  source_order: [term()],
  target_component_hash: term()
}
```

# `bind`

```elixir
@spec bind(t(), term()) :: term()
```

# `new`

```elixir
@spec new(keyword()) :: t()
```

---

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