# `Immich.Sync.EventStream`

Behaviour for fetching sync events and acknowledging processed chunks.

# `opts`

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

Options passed through to  `c:sync_stream/3` and `c:sync_ack/3`.

# `t`

```elixir
@type t() :: module()
```

# `sync_ack`

```elixir
@callback sync_ack(Immich.API.Session.t(), [String.t()], opts()) ::
  {:ok, map() | term()} | {:error, term()}
```

Acknowledges event `ack` tokens after successful processing.

# `sync_stream`

```elixir
@callback sync_stream(Immich.API.Session.t(), [String.t()], opts()) ::
  {:ok, Enumerable.t(map())} | {:error, term()}
```

Returns a stream of raw event payload maps for the requested event types.

---

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