# `Parrhesia.Storage.Events`

Storage callbacks for event persistence and query operations.

# `context`

```elixir
@type context() :: map()
```

# `count_result`

```elixir
@type count_result() :: non_neg_integer() | %{optional(atom()) =&gt; term()}
```

# `event`

```elixir
@type event() :: map()
```

# `event_id`

```elixir
@type event_id() :: binary()
```

# `event_ref`

```elixir
@type event_ref() :: %{created_at: non_neg_integer(), id: binary()}
```

# `filter`

```elixir
@type filter() :: map()
```

# `query_opts`

```elixir
@type query_opts() :: keyword()
```

# `reason`

```elixir
@type reason() :: term()
```

# `count`

```elixir
@callback count(context(), [filter()], query_opts()) ::
  {:ok, count_result()} | {:error, reason()}
```

# `delete_by_request`

```elixir
@callback delete_by_request(context(), event()) ::
  {:ok, non_neg_integer()} | {:error, reason()}
```

# `get_event`

```elixir
@callback get_event(context(), event_id()) :: {:ok, event() | nil} | {:error, reason()}
```

# `purge_expired`

```elixir
@callback purge_expired(query_opts()) :: {:ok, non_neg_integer()} | {:error, reason()}
```

# `put_event`

```elixir
@callback put_event(context(), event()) :: {:ok, event()} | {:error, reason()}
```

# `query`

```elixir
@callback query(context(), [filter()], query_opts()) ::
  {:ok, [event()]} | {:error, reason()}
```

# `query_event_refs`

```elixir
@callback query_event_refs(context(), [filter()], query_opts()) ::
  {:ok, [event_ref()]} | {:error, reason()}
```

# `vanish`

```elixir
@callback vanish(context(), event()) :: {:ok, non_neg_integer()} | {:error, reason()}
```

---

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