# `ExecutionPlane.Runtime.Client`
[🔗](https://github.com/nshkrdotcom/execution_plane/blob/v0.3.0/core/execution_plane/lib/execution_plane/boundary.ex#L773)

Consumer-to-node admitted interactive lifecycle.

`start/2` owns admission and returns only opaque execution/session identity.
Implementations must not expose provider or transport process identifiers.

# `cancel`

```elixir
@callback cancel(
  ExecutionPlane.ExecutionRef.t(),
  keyword()
) :: :ok | {:error, term()}
```

# `end_input`

```elixir
@callback end_input(
  ExecutionPlane.ExecutionRef.t(),
  keyword()
) :: :ok | {:error, term()}
```

# `send_input`

```elixir
@callback send_input(ExecutionPlane.ExecutionRef.t(), iodata() | map(), keyword()) ::
  :ok | {:error, term()}
```

# `start`

```elixir
@callback start(
  ExecutionPlane.Admission.Request.t(),
  keyword()
) :: {:ok, ExecutionPlane.ActiveExecution.t()} | {:error, term()}
```

# `status`

```elixir
@callback status(
  ExecutionPlane.ExecutionRef.t(),
  keyword()
) :: {:ok, ExecutionPlane.Runtime.Status.t()} | {:error, term()}
```

# `subscribe`

```elixir
@callback subscribe(ExecutionPlane.ExecutionRef.t(), pid(), keyword()) ::
  :ok | {:error, term()}
```

---

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