# `HTTP.HTTP2.WireProfile`
[🔗](https://github.com/gsmlg-dev/http_fetch/blob/v0.21.16/apps/http_core/lib/http/http2/wire_profile.ex#L1)

Versioned, finite HTTP/2 wire configuration.

A profile keeps wire-order-sensitive values as lists. `compile/1` is the only
boundary at which external maps are accepted; unknown keys and unsupported
combinations are rejected instead of being silently ignored.

# `t`

```elixir
@type t() :: %HTTP.HTTP2.WireProfile{
  connection_initial_window: term(),
  default_user_agent: term(),
  evidence: term(),
  hpack: term(),
  id: term(),
  max_data_frame: term(),
  max_header_fragment: term(),
  padding: term(),
  priority: term(),
  pseudo_headers: term(),
  push: term(),
  receive_window_increment: term(),
  receive_window_target: term(),
  receive_window_threshold: term(),
  regular_headers: :input | :lexicographic | :reverse_input,
  revision: term(),
  settings: term(),
  source: term(),
  stream_initial_window: term()
}
```

# `compile`

```elixir
@spec compile(t() | map() | atom() | binary()) :: {:ok, t()} | {:error, term()}
```

# `digest`

```elixir
@spec digest(t() | map()) :: {:ok, binary()} | {:error, term()}
```

# `initial_window_increment`

```elixir
@spec initial_window_increment(t() | map()) ::
  {:ok, non_neg_integer()} | {:error, term()}
```

# `native_v1`

```elixir
@spec native_v1() :: t()
```

# `order_headers`

```elixir
@spec order_headers(
  t(),
  [{String.t(), String.t()}],
  [{String.t(), String.t()}],
  :request | :extended_connect
) :: [{String.t(), String.t()}]
```

# `settings_defaults`

# `settings_payload`

```elixir
@spec settings_payload(t() | map()) :: {:ok, binary()} | {:error, term()}
```

# `synthetic_test_v1`

```elixir
@spec synthetic_test_v1() :: t()
```

# `synthetic_test_v2`

```elixir
@spec synthetic_test_v2() :: t()
```

# `validate`

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

---

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