# `Quic.TLSDriver`
[🔗](https://github.com/gsmlg-dev/http_fetch/blob/v1.0.0-rc.9/apps/elixir_quic/lib/quic/tls_driver.ex#L1)

Serialized adapter around the public `SSL.QUIC` action protocol.

The driver owns CRYPTO offsets and sparse reassembly.  A TLS adapter is
injectable for deterministic tests; production defaults to `SSL.QUIC`.

# `t`

```elixir
@type t() :: %Quic.TLSDriver{
  adapter: term(),
  emitted_bytes: term(),
  facts: term(),
  future_bytes: term(),
  levels: term(),
  max_emitted_bytes: term(),
  max_future_bytes: term(),
  role: term(),
  terminal: term(),
  tls: term()
}
```

# `abort`

# `facts`

# `feed`

```elixir
@spec feed(t(), atom(), non_neg_integer(), binary()) ::
  {:ok, t(), list()} | {:error, term(), t(), list()}
```

# `feed_crypto`

# `info`

# `mark_address_validated`

# `mark_quic_confirmed`

# `new`

```elixir
@spec new(:client | :server, keyword()) :: {:ok, t(), list()} | {:error, term()}
```

# `retire_level`

```elixir
@spec retire_level(t(), :initial | :handshake) :: t()
```

Release QUIC-owned CRYPTO buffers without changing the provider's private state.

# `retransmit`

```elixir
@spec retransmit(t(), atom(), non_neg_integer(), non_neg_integer()) ::
  {:ok, binary()} | {:error, atom()}
```

---

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