Behaviour for idempotency stores.
@callback mark_seen(String.t()) :: :ok
@callback seen?(String.t()) :: boolean()