# `Scrypath.Composition.Result`
[🔗](https://github.com/szTheory/scrypath/blob/v0.3.7/lib/scrypath/composition/result.ex#L1)

Typed helpers for the public composition result envelope.

The result stays plain data so host apps can inspect or log what composition
applied before they hand the final `{text, keyword_opts}` into
`Scrypath.search/3`.

# `t`

```elixir
@type t() :: %{
  :text =&gt; String.t(),
  :filter =&gt; keyword(),
  :sort =&gt; keyword(),
  :page =&gt; keyword(),
  :facets =&gt; [atom()],
  :facet_filter =&gt; keyword(),
  :per_query =&gt; map(),
  :applied =&gt; visibility(),
  :defaulted =&gt; visibility(),
  :fixed =&gt; visibility(),
  optional(:sources) =&gt; map(),
  optional(:warnings) =&gt; map()
}
```

Stable public plain-data result returned by `Scrypath.Composition.compose/2`.

# `visibility`

```elixir
@type visibility() :: %{
  optional(:text) =&gt; String.t(),
  optional(:filter) =&gt; keyword(),
  optional(:sort) =&gt; keyword(),
  optional(:page) =&gt; keyword(),
  optional(:facets) =&gt; [atom()],
  optional(:facet_filter) =&gt; keyword(),
  optional(:per_query) =&gt; map()
}
```

Criteria vocabulary keyed the same way as `Scrypath.search/3` options.

# `compact_visibility`

```elixir
@spec compact_visibility(map()) :: visibility()
```

# `criteria_keys`

```elixir
@spec criteria_keys() :: [atom()]
```

# `empty_criteria`

```elixir
@spec empty_criteria() :: visibility()
```

# `new`

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

---

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