# `Selecto.Domain.Choices.Result`

Choice-source membership answer shape.

Core Selecto can resolve the domain metadata for a choice-source membership
question, but it cannot prove external membership until a caller supplies a
resolver. The `:unknown` status represents that deliberate safe default.

# `status`

```elixir
@type status() :: :valid | :invalid | :unknown
```

# `t`

```elixir
@type t() :: %Selecto.Domain.Choices.Result{
  metadata: map(),
  reason_code: atom() | String.t() | nil,
  request: Selecto.Domain.Choices.Request.t() | nil,
  status: status(),
  user_message: String.t() | nil
}
```

# `invalid`

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

Builds an invalid membership result.

# `new`

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

Builds a result from atom-keyed or string-keyed map/keyword attributes.

# `unknown`

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

Builds an unknown membership result.

# `valid`

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

Builds a valid membership result.

---

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