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

Bounded authenticated path selection and explicit-time validation.

# `id`

```elixir
@type id() :: :default | pos_integer()
```

# `t`

```elixir
@type t() :: %Quic.Paths{
  active: term(),
  candidate: term(),
  largest_non_probing: term(),
  local: term(),
  next_id: term(),
  paths: term(),
  previous: term(),
  retiring: term(),
  role: term()
}
```

# `drop`

```elixir
@spec drop(t(), id()) :: {:ok, t()} | {:error, :active_path}
```

# `due`

```elixir
@spec due(t(), integer()) :: [id()]
```

# `lookup`

```elixir
@spec lookup(t(), term()) :: {:ok, id()} | :error
```

# `new`

```elixir
@spec new(:client | :server, term(), term(), boolean()) :: t()
```

# `next_deadline`

```elixir
@spec next_deadline(t()) :: integer() | nil
```

# `note_cid`

```elixir
@spec note_cid(t(), id(), binary(), non_neg_integer()) :: t()
```

Remember the latest authenticated incoming CID without accepting reordered changes.

# `observe`

```elixir
@spec observe(t(), term(), non_neg_integer(), boolean(), integer(), pos_integer()) ::
  {:ok, t(), id(), boolean()} | {:blocked, atom()}
```

# `on_time`

```elixir
@spec on_time(t(), integer(), :all | [id()]) ::
  {:ok, t(), id() | nil} | {:error, :no_validated_path}
```

# `probe`

```elixir
@spec probe(t(), id(), binary(), boolean(), integer(), pos_integer()) ::
  {:ok, t()} | {:error, atom()}
```

# `response`

```elixir
@spec response(t(), binary(), integer()) :: {:ok, t(), id()} | :ignore
```

# `validate`

```elixir
@spec validate(t(), id()) :: t()
```

---

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