import contextlib from collections.abc import Sequence from typing import Any, Protocol from email_campaigns.adapters.db import Model, PgModel class BuildModel(Protocol): def __call__[T](self, model: type[T], **kwargs: Any) -> T: ... class BuildModelBatch(Protocol): def __call__[T](self, model: type[T], *, size: int, **kwargs: Any) -> list[T]: ... class CreatePgModel(Protocol): def __call__[T: PgModel](self, model: type[T], **kwargs: Any) -> T: ... class CreatePgModelBatch(Protocol): def __call__[T: PgModel]( self, model: type[T], *, size: int, **kwargs: Any ) -> list[T]: ... class CreateModel(Protocol): def __call__[T: Model](self, model: type[T], **kwargs: Any) -> T: ... class CreateModelBatch(Protocol): def __call__[T: Model]( self, model: type[T], *, size: int, **kwargs: Any ) -> list[T]: ... class EnableFeatures(Protocol): def __call__( self, feature_flag_names: Sequence[str] ) -> contextlib.AbstractContextManager[None]: ...