# `Mint.Types`
[🔗](https://github.com/elixir-mint/mint/blob/v1.9.3/lib/mint/types.ex#L1)

HTTP-related types.

# `address`

```elixir
@type address() :: :inet.socket_address() | String.t()
```

A hostname, IP address, Unix domain socket path, `:loopback`, or any
other term representing an internet address.

# `error`

```elixir
@type error() :: Mint.TransportError.t() | Mint.HTTPError.t()
```

An error reason.

# `headers`

```elixir
@type headers() :: [{header_name :: String.t(), header_value :: String.t()}]
```

HTTP headers.

Headers are sent and received as lists of two-element tuples containing two strings,
the header name and header value.

# `http2_response`

```elixir
@type http2_response() ::
  {:pong, request_ref()}
  | {:push_promise, request_ref(), promised_request_ref :: request_ref(),
     headers()}
```

An HTTP/2-specific response to a request.

This type of response is only returned on HTTP/2 connections. See `t:response/0` for
more response types.

# `request_ref`

```elixir
@type request_ref() :: reference()
```

A request reference that uniquely identifies a request.

Responses for a request are always tagged with a request reference so that you
can connect each response to the right request. Also see `Mint.HTTP.request/5`.

# `response`

```elixir
@type response() ::
  {:status, request_ref(), status()}
  | {:headers, request_ref(), headers()}
  | {:data, request_ref(), body_chunk :: binary()}
  | {:done, request_ref()}
  | {:error, request_ref(), reason :: term()}
  | http2_response()
```

A response to a request.

Terms of this type are returned as responses to requests. See `Mint.HTTP.stream/2`
for more information.

# `scheme`

```elixir
@type scheme() :: :http | :https
```

The scheme to use when connecting to an HTTP server.

# `socket`

```elixir
@type socket() :: term()
```

The connection socket.

# `status`

```elixir
@type status() :: non_neg_integer()
```

An HTTP status code.

The type for an HTTP is a generic non-negative integer since we don't formally check that
the response code is in the "common" range (`200..599`).

---

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