# `MingaEditor.State.Picker.ActivationOffer`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_editor/state/picker/activation_offer.ex#L1)

Owns the bounded, opaque identities offered by the current picker snapshot.

Native frontends return the generation and activation id exactly as rendered.
The editor resolves that pair back to the item or source action captured here.

# `action_entry`

```elixir
@type action_entry() ::
  {activation_id(), MingaEditor.UI.Picker.Source.action_entry(),
   MingaEditor.UI.Picker.Item.t()}
```

# `activation_id`

```elixir
@type activation_id() :: pos_integer()
```

# `generation`

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

# `item_entry`

```elixir
@type item_entry() ::
  {activation_id(), non_neg_integer(), MingaEditor.UI.Picker.Item.t()}
```

# `t`

```elixir
@type t() :: %MingaEditor.State.Picker.ActivationOffer{
  actions: [action_entry()],
  generation: generation(),
  items: [item_entry()],
  next_activation_id: activation_id()
}
```

# `action_activation_ids`

```elixir
@spec action_activation_ids(t()) :: [activation_id()]
```

Returns the activation ids for source actions in their rendered order.

# `offered_actions`

```elixir
@spec offered_actions(t()) :: [action_entry()]
```

Returns the exact bounded action window represented by this offer.

# `offered_items`

```elixir
@spec offered_items(t()) :: [item_entry()]
```

Returns the exact bounded item window represented by this offer.

# `refresh`

```elixir
@spec refresh(
  t(),
  MingaEditor.UI.Picker.t() | nil,
  MingaEditor.State.Picker.action_menu(),
  generation()
) :: t()
```

Reconciles a picker offer while preserving opaque ids for retained semantic items.

# `resolve_action`

```elixir
@spec resolve_action(t(), non_neg_integer(), non_neg_integer()) ::
  {:ok, MingaEditor.UI.Picker.Source.action_entry(),
   MingaEditor.UI.Picker.Item.t()}
  | :error
```

Resolves a source action only when both opaque identity components match this offer.

# `resolve_item`

```elixir
@spec resolve_item(t(), non_neg_integer(), non_neg_integer()) ::
  {:ok, non_neg_integer(), MingaEditor.UI.Picker.Item.t()} | :error
```

Resolves an item only when both opaque identity components match this offer.

---

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