# `TypeSafeSDK.Question.Noul`
[🔗](https://github.com/nshkrdotcom/typesafe_sdk/blob/v0.4.1/lib/typesafe_sdk/question/noul.ex#L1)

Strict semantic yes/no question. `new/2` returns a tuple; `new!/2` raises.

    iex> {:ok, q} = TypeSafeSDK.Question.Noul.new("Urgent?", true: "Time-sensitive")
    iex> q.criteria
    [{true, "Time-sensitive"}]

Options: `:true`, `:false`, or explicit `:criteria`; plus protected `:extra`.
Do not combine explicit criteria with the true/false shorthand.

# `t`

```elixir
@type t() :: %TypeSafeSDK.Question.Noul{
  criteria: list() | nil,
  extra: map(),
  instructions: term()
}
```

# `new`

```elixir
@spec new(term(), keyword()) :: {:ok, t()} | {:error, TypeSafeSDK.Error.t()}
```

# `new!`

```elixir
@spec new!(term(), keyword()) :: t()
```

---

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