# `MingaEditor.Shell.Traditional.Notice`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_editor/shell/traditional/notice.ex#L1)

Pure lifecycle owner for the traditional shell's ordinary status notice.

The monotonic identity survives dismissal so a stale timeout can never
dismiss a later notice. The timer handle is bookkeeping only and is not the
notice identity.

# `id`

```elixir
@type id() :: non_neg_integer()
```

# `t`

```elixir
@type t() :: %MingaEditor.Shell.Traditional.Notice{
  id: id(),
  message: String.t() | nil,
  timer: reference() | nil
}
```

# `acknowledge`

```elixir
@spec acknowledge(t()) :: t()
```

Acknowledges the current notice before keyboard command dispatch.

# `dismiss`

```elixir
@spec dismiss(t()) :: t()
```

Dismisses the current notice explicitly.

# `present?`

```elixir
@spec present?(t()) :: boolean()
```

Returns whether an ordinary notice is currently present.

# `publish`

```elixir
@spec publish(t(), String.t()) :: t()
```

Publishes a latest-wins notice and advances its semantic identity.

# `record_timer`

```elixir
@spec record_timer(t(), id(), reference()) :: t()
```

Records the timer handle only when it belongs to the current identity.

# `timeout`

```elixir
@spec timeout(t(), id()) :: t()
```

Expires the notice only when the delivered semantic identity matches.

---

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