# `Plover.Connection`
[🔗](https://github.com/codonnell/plover/blob/main/lib/plover/connection.ex#L1)

GenServer managing a single IMAP connection.

Handles socket I/O, command dispatch, response accumulation,
and connection state machine transitions.

# `capabilities`

```elixir
@spec capabilities(GenServer.server()) :: [String.t()]
```

Returns the server's advertised capabilities as a list of strings.

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `mailbox_info`

```elixir
@spec mailbox_info(GenServer.server()) :: map() | nil
```

Returns mailbox metadata from the most recent SELECT or EXAMINE.

The returned map may include keys like `:exists`, `:flags`, `:uid_validity`,
and `:uid_next`. Returns `nil` if no mailbox is selected.

# `state`

```elixir
@spec state(GenServer.server()) ::
  :not_authenticated | :authenticated | :selected | :logout
```

Returns the current IMAP connection state.

Possible values: `:not_authenticated`, `:authenticated`, `:selected`, `:logout`.

---

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