"""Repository protocol interfaces for persistence.

This package provides Protocol interfaces for all repository operations,
organized by domain concern:

- transcript: Meeting, Segment, Summary, Annotation
- background: DiarizationJob, Preferences
- external: Entity (NER), Integration, Webhook
- identity: User, Workspace
"""

from noteflow.domain.ports.repositories.asset import AssetRepository
from noteflow.domain.ports.repositories.background import (
    DiarizationJobRepository,
    PreferencesRepository,
)
from noteflow.domain.ports.repositories.external import (
    EntityRepository,
    IntegrationRepository,
    UsageEventRepository,
    WebhookRepository,
)
from noteflow.domain.ports.repositories.identity import (
    ProjectMembershipRepository,
    ProjectRepository,
    UserRepository,
    WorkspaceRepository,
)
from noteflow.domain.ports.repositories.transcript import (
    AnnotationRepository,
    MeetingRepository,
    SegmentRepository,
    SummaryRepository,
)

__all__ = [
    "AnnotationRepository",
    "AssetRepository",
    "DiarizationJobRepository",
    "EntityRepository",
    "IntegrationRepository",
    "MeetingRepository",
    "PreferencesRepository",
    "ProjectMembershipRepository",
    "ProjectRepository",
    "SegmentRepository",
    "SummaryRepository",
    "UsageEventRepository",
    "UserRepository",
    "WebhookRepository",
    "WorkspaceRepository",
]
