# `Selecto.Domain.Choices.OptionsResult`

Choice-source option-list answer shape.

Core Selecto can resolve the option-list metadata, but it cannot fetch options
until a caller supplies a resolver. The `:unknown` status is the safe default.

# `option`

```elixir
@type option() :: map()
```

# `status`

```elixir
@type status() :: :resolved | :unknown | :error
```

# `t`

```elixir
@type t() :: %Selecto.Domain.Choices.OptionsResult{
  metadata: map(),
  next_cursor: term(),
  options: [option()],
  reason_code: atom() | String.t() | nil,
  request: Selecto.Domain.Choices.OptionsRequest.t() | nil,
  status: status(),
  total_count: non_neg_integer() | nil,
  user_message: String.t() | nil
}
```

# `error`

```elixir
@spec error(atom() | String.t(), map() | keyword()) :: t()
```

Builds an error option-list result.

# `new`

```elixir
@spec new(map() | keyword()) :: t()
```

Builds an options result from atom-keyed or string-keyed map/keyword attrs.

# `resolved`

```elixir
@spec resolved([option()], map() | keyword()) :: t()
```

Builds a resolved option-list result.

# `unknown`

```elixir
@spec unknown(atom() | String.t(), map() | keyword()) :: t()
```

Builds an unknown option-list result.

---

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