# `QuintConnect.Driver`
[🔗](https://github.com/marquesds/quint-connect/blob/v0.1.0/lib/quint_connect/driver.ex#L1)

Behaviour for replaying a Quint trace step on your implementation.

A driver is an imperative shell around your implementation. `step/2` receives
a decoded `QuintConnect.Step` and returns the next implementation state.

# `step`

```elixir
@type step() :: QuintConnect.Step.t()
```

# `config`
*optional* 

```elixir
@callback config() :: QuintConnect.Config.t()
```

Optional default config for this driver.

# `init`
*optional* 

```elixir
@callback init(opts :: keyword()) :: {:ok, impl_state :: term()} | {:error, term()}
```

Optional one-time setup before first `step/2`.

# `step`

```elixir
@callback step(impl_state :: term(), step :: step()) :: {:ok, term()} | {:error, term()}
```

Apply one specification step to the implementation.

---

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