import contextlib from typing import Any, Protocol from fansifter_common.identifiers.types import ( DoubleOptInIdentifier, DoubleOptInToken, ProfileIdentifier, ProfileToken, ) from preference_center.adapters.db import Model class BuildModel(Protocol): def __call__[T](self, model: type[T], **kwargs: Any) -> T: ... class CreateModel(Protocol): def __call__[T: Model](self, model: type[T], **kwargs: Any) -> T: ... class CreateProfileToken(Protocol): def __call__(self, identifier: ProfileIdentifier) -> ProfileToken: ... class CreateDoubleOptInToken(Protocol): def __call__(self, identifier: DoubleOptInIdentifier) -> DoubleOptInToken: ... class OverrideSettings(Protocol): def __call__(self, **kwargs: Any) -> contextlib.AbstractContextManager[None]: ...