# `CliSubprocessCore.ModelRegistry.Selection`
[🔗](https://github.com/nshkrdotcom/cli_subprocess_core/blob/v0.1.0/lib/cli_subprocess_core/model_registry/selection.ex#L1)

Resolved model selection returned by `CliSubprocessCore.ModelRegistry`.

# `model_source`

```elixir
@type model_source() :: :catalog | :external
```

# `resolution_source`

```elixir
@type resolution_source() :: :explicit | :env | :default | :remote
```

# `t`

```elixir
@type t() :: %CliSubprocessCore.ModelRegistry.Selection{
  backend_metadata: map(),
  catalog_version: String.t() | nil,
  env_overrides: map(),
  errors: [term()],
  extra: map(),
  model_family: String.t() | nil,
  model_source: model_source(),
  normalized_reasoning_effort: number() | nil,
  provider: atom(),
  provider_backend: atom() | nil,
  reasoning: String.t() | nil,
  reasoning_effort: number() | nil,
  requested_model: String.t() | nil,
  resolution_source: resolution_source() | nil,
  resolved_model: String.t() | nil,
  settings_patch: map(),
  visibility: :public | :private | :internal | :restricted
}
```

# `new`

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

# `parse`

```elixir
@spec parse(keyword() | map() | t()) ::
  {:ok, t()}
  | {:error, {:invalid_selection, CliSubprocessCore.Schema.error_detail()}}
```

# `parse!`

```elixir
@spec parse!(keyword() | map() | t()) :: t()
```

# `schema`

```elixir
@spec schema() :: Zoi.schema()
```

# `to_map`

```elixir
@spec to_map(t()) :: map()
```

---

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