"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
NoteFlow gRPC Service Definition
Provides real-time ASR streaming and meeting management
"""

import abc
import collections.abc
import typing

import grpc
import grpc.aio

import noteflow_pb2

_T = typing.TypeVar("_T")

class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ...

class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext):  # type: ignore[misc, type-arg]
    ...

GRPC_GENERATED_VERSION: str
GRPC_VERSION: str

class NoteFlowServiceStub:
    """=============================================================================
    Core Service
    =============================================================================
    """

    @typing.overload
    def __new__(cls, channel: grpc.Channel) -> NoteFlowServiceStub: ...
    @typing.overload
    def __new__(cls, channel: grpc.aio.Channel) -> NoteFlowServiceAsyncStub: ...
    StreamTranscription: grpc.StreamStreamMultiCallable[noteflow_pb2.AudioChunk, noteflow_pb2.TranscriptUpdate]
    """Bidirectional streaming: client sends audio chunks, server returns transcripts"""
    CreateMeeting: grpc.UnaryUnaryMultiCallable[noteflow_pb2.CreateMeetingRequest, noteflow_pb2.Meeting]
    """Meeting lifecycle management"""
    StopMeeting: grpc.UnaryUnaryMultiCallable[noteflow_pb2.StopMeetingRequest, noteflow_pb2.Meeting]
    ListMeetings: grpc.UnaryUnaryMultiCallable[noteflow_pb2.ListMeetingsRequest, noteflow_pb2.ListMeetingsResponse]
    GetMeeting: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetMeetingRequest, noteflow_pb2.Meeting]
    DeleteMeeting: grpc.UnaryUnaryMultiCallable[noteflow_pb2.DeleteMeetingRequest, noteflow_pb2.DeleteMeetingResponse]
    GenerateSummary: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GenerateSummaryRequest, noteflow_pb2.Summary]
    """Summary generation"""
    AddAnnotation: grpc.UnaryUnaryMultiCallable[noteflow_pb2.AddAnnotationRequest, noteflow_pb2.Annotation]
    """Annotation management"""
    GetAnnotation: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetAnnotationRequest, noteflow_pb2.Annotation]
    ListAnnotations: grpc.UnaryUnaryMultiCallable[noteflow_pb2.ListAnnotationsRequest, noteflow_pb2.ListAnnotationsResponse]
    UpdateAnnotation: grpc.UnaryUnaryMultiCallable[noteflow_pb2.UpdateAnnotationRequest, noteflow_pb2.Annotation]
    DeleteAnnotation: grpc.UnaryUnaryMultiCallable[noteflow_pb2.DeleteAnnotationRequest, noteflow_pb2.DeleteAnnotationResponse]
    ExportTranscript: grpc.UnaryUnaryMultiCallable[noteflow_pb2.ExportTranscriptRequest, noteflow_pb2.ExportTranscriptResponse]
    """Export functionality"""
    RefineSpeakerDiarization: grpc.UnaryUnaryMultiCallable[noteflow_pb2.RefineSpeakerDiarizationRequest, noteflow_pb2.RefineSpeakerDiarizationResponse]
    """Speaker diarization"""
    RenameSpeaker: grpc.UnaryUnaryMultiCallable[noteflow_pb2.RenameSpeakerRequest, noteflow_pb2.RenameSpeakerResponse]
    GetDiarizationJobStatus: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetDiarizationJobStatusRequest, noteflow_pb2.DiarizationJobStatus]
    CancelDiarizationJob: grpc.UnaryUnaryMultiCallable[noteflow_pb2.CancelDiarizationJobRequest, noteflow_pb2.CancelDiarizationJobResponse]
    GetActiveDiarizationJobs: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetActiveDiarizationJobsRequest, noteflow_pb2.GetActiveDiarizationJobsResponse]
    GetServerInfo: grpc.UnaryUnaryMultiCallable[noteflow_pb2.ServerInfoRequest, noteflow_pb2.ServerInfo]
    """Server health and capabilities"""
    ExtractEntities: grpc.UnaryUnaryMultiCallable[noteflow_pb2.ExtractEntitiesRequest, noteflow_pb2.ExtractEntitiesResponse]
    """Named entity extraction (Sprint 4) + mutations (Sprint 8)"""
    UpdateEntity: grpc.UnaryUnaryMultiCallable[noteflow_pb2.UpdateEntityRequest, noteflow_pb2.UpdateEntityResponse]
    DeleteEntity: grpc.UnaryUnaryMultiCallable[noteflow_pb2.DeleteEntityRequest, noteflow_pb2.DeleteEntityResponse]
    ListCalendarEvents: grpc.UnaryUnaryMultiCallable[noteflow_pb2.ListCalendarEventsRequest, noteflow_pb2.ListCalendarEventsResponse]
    """Calendar integration (Sprint 5)"""
    GetCalendarProviders: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetCalendarProvidersRequest, noteflow_pb2.GetCalendarProvidersResponse]
    InitiateOAuth: grpc.UnaryUnaryMultiCallable[noteflow_pb2.InitiateOAuthRequest, noteflow_pb2.InitiateOAuthResponse]
    """OAuth integration (generic for calendar, email, PKM, etc.)"""
    CompleteOAuth: grpc.UnaryUnaryMultiCallable[noteflow_pb2.CompleteOAuthRequest, noteflow_pb2.CompleteOAuthResponse]
    GetOAuthConnectionStatus: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetOAuthConnectionStatusRequest, noteflow_pb2.GetOAuthConnectionStatusResponse]
    DisconnectOAuth: grpc.UnaryUnaryMultiCallable[noteflow_pb2.DisconnectOAuthRequest, noteflow_pb2.DisconnectOAuthResponse]
    RegisterWebhook: grpc.UnaryUnaryMultiCallable[noteflow_pb2.RegisterWebhookRequest, noteflow_pb2.WebhookConfigProto]
    """Webhook management (Sprint 6)"""
    ListWebhooks: grpc.UnaryUnaryMultiCallable[noteflow_pb2.ListWebhooksRequest, noteflow_pb2.ListWebhooksResponse]
    UpdateWebhook: grpc.UnaryUnaryMultiCallable[noteflow_pb2.UpdateWebhookRequest, noteflow_pb2.WebhookConfigProto]
    DeleteWebhook: grpc.UnaryUnaryMultiCallable[noteflow_pb2.DeleteWebhookRequest, noteflow_pb2.DeleteWebhookResponse]
    GetWebhookDeliveries: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetWebhookDeliveriesRequest, noteflow_pb2.GetWebhookDeliveriesResponse]
    GrantCloudConsent: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GrantCloudConsentRequest, noteflow_pb2.GrantCloudConsentResponse]
    """Cloud consent management (Sprint 7)"""
    RevokeCloudConsent: grpc.UnaryUnaryMultiCallable[noteflow_pb2.RevokeCloudConsentRequest, noteflow_pb2.RevokeCloudConsentResponse]
    GetCloudConsentStatus: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetCloudConsentStatusRequest, noteflow_pb2.GetCloudConsentStatusResponse]
    GetPreferences: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetPreferencesRequest, noteflow_pb2.GetPreferencesResponse]
    """User preferences sync (Sprint 14)"""
    SetPreferences: grpc.UnaryUnaryMultiCallable[noteflow_pb2.SetPreferencesRequest, noteflow_pb2.SetPreferencesResponse]
    StartIntegrationSync: grpc.UnaryUnaryMultiCallable[noteflow_pb2.StartIntegrationSyncRequest, noteflow_pb2.StartIntegrationSyncResponse]
    """Integration sync orchestration (Sprint 9)"""
    GetSyncStatus: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetSyncStatusRequest, noteflow_pb2.GetSyncStatusResponse]
    ListSyncHistory: grpc.UnaryUnaryMultiCallable[noteflow_pb2.ListSyncHistoryRequest, noteflow_pb2.ListSyncHistoryResponse]
    GetUserIntegrations: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetUserIntegrationsRequest, noteflow_pb2.GetUserIntegrationsResponse]
    """Integration cache validation (Sprint 18.1)"""
    GetRecentLogs: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetRecentLogsRequest, noteflow_pb2.GetRecentLogsResponse]
    """Observability (Sprint 9)"""
    GetPerformanceMetrics: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetPerformanceMetricsRequest, noteflow_pb2.GetPerformanceMetricsResponse]
    RegisterOidcProvider: grpc.UnaryUnaryMultiCallable[noteflow_pb2.RegisterOidcProviderRequest, noteflow_pb2.OidcProviderProto]
    """OIDC Provider Management (Sprint 17)"""
    ListOidcProviders: grpc.UnaryUnaryMultiCallable[noteflow_pb2.ListOidcProvidersRequest, noteflow_pb2.ListOidcProvidersResponse]
    GetOidcProvider: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetOidcProviderRequest, noteflow_pb2.OidcProviderProto]
    UpdateOidcProvider: grpc.UnaryUnaryMultiCallable[noteflow_pb2.UpdateOidcProviderRequest, noteflow_pb2.OidcProviderProto]
    DeleteOidcProvider: grpc.UnaryUnaryMultiCallable[noteflow_pb2.DeleteOidcProviderRequest, noteflow_pb2.DeleteOidcProviderResponse]
    RefreshOidcDiscovery: grpc.UnaryUnaryMultiCallable[noteflow_pb2.RefreshOidcDiscoveryRequest, noteflow_pb2.RefreshOidcDiscoveryResponse]
    ListOidcPresets: grpc.UnaryUnaryMultiCallable[noteflow_pb2.ListOidcPresetsRequest, noteflow_pb2.ListOidcPresetsResponse]
    CreateProject: grpc.UnaryUnaryMultiCallable[noteflow_pb2.CreateProjectRequest, noteflow_pb2.ProjectProto]
    """Project management (Sprint 18)"""
    GetProject: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetProjectRequest, noteflow_pb2.ProjectProto]
    GetProjectBySlug: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetProjectBySlugRequest, noteflow_pb2.ProjectProto]
    ListProjects: grpc.UnaryUnaryMultiCallable[noteflow_pb2.ListProjectsRequest, noteflow_pb2.ListProjectsResponse]
    UpdateProject: grpc.UnaryUnaryMultiCallable[noteflow_pb2.UpdateProjectRequest, noteflow_pb2.ProjectProto]
    ArchiveProject: grpc.UnaryUnaryMultiCallable[noteflow_pb2.ArchiveProjectRequest, noteflow_pb2.ProjectProto]
    RestoreProject: grpc.UnaryUnaryMultiCallable[noteflow_pb2.RestoreProjectRequest, noteflow_pb2.ProjectProto]
    DeleteProject: grpc.UnaryUnaryMultiCallable[noteflow_pb2.DeleteProjectRequest, noteflow_pb2.DeleteProjectResponse]
    SetActiveProject: grpc.UnaryUnaryMultiCallable[noteflow_pb2.SetActiveProjectRequest, noteflow_pb2.SetActiveProjectResponse]
    """Active project (Sprint 18)"""
    GetActiveProject: grpc.UnaryUnaryMultiCallable[noteflow_pb2.GetActiveProjectRequest, noteflow_pb2.GetActiveProjectResponse]
    AddProjectMember: grpc.UnaryUnaryMultiCallable[noteflow_pb2.AddProjectMemberRequest, noteflow_pb2.ProjectMembershipProto]
    """Project membership management (Sprint 18)"""
    UpdateProjectMemberRole: grpc.UnaryUnaryMultiCallable[noteflow_pb2.UpdateProjectMemberRoleRequest, noteflow_pb2.ProjectMembershipProto]
    RemoveProjectMember: grpc.UnaryUnaryMultiCallable[noteflow_pb2.RemoveProjectMemberRequest, noteflow_pb2.RemoveProjectMemberResponse]
    ListProjectMembers: grpc.UnaryUnaryMultiCallable[noteflow_pb2.ListProjectMembersRequest, noteflow_pb2.ListProjectMembersResponse]

@typing.type_check_only
class NoteFlowServiceAsyncStub(NoteFlowServiceStub):
    """=============================================================================
    Core Service
    =============================================================================
    """

    def __init__(self, channel: grpc.aio.Channel) -> None: ...
    StreamTranscription: grpc.aio.StreamStreamMultiCallable[noteflow_pb2.AudioChunk, noteflow_pb2.TranscriptUpdate]  # type: ignore[assignment]
    """Bidirectional streaming: client sends audio chunks, server returns transcripts"""
    CreateMeeting: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.CreateMeetingRequest, noteflow_pb2.Meeting]  # type: ignore[assignment]
    """Meeting lifecycle management"""
    StopMeeting: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.StopMeetingRequest, noteflow_pb2.Meeting]  # type: ignore[assignment]
    ListMeetings: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.ListMeetingsRequest, noteflow_pb2.ListMeetingsResponse]  # type: ignore[assignment]
    GetMeeting: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetMeetingRequest, noteflow_pb2.Meeting]  # type: ignore[assignment]
    DeleteMeeting: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.DeleteMeetingRequest, noteflow_pb2.DeleteMeetingResponse]  # type: ignore[assignment]
    GenerateSummary: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GenerateSummaryRequest, noteflow_pb2.Summary]  # type: ignore[assignment]
    """Summary generation"""
    AddAnnotation: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.AddAnnotationRequest, noteflow_pb2.Annotation]  # type: ignore[assignment]
    """Annotation management"""
    GetAnnotation: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetAnnotationRequest, noteflow_pb2.Annotation]  # type: ignore[assignment]
    ListAnnotations: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.ListAnnotationsRequest, noteflow_pb2.ListAnnotationsResponse]  # type: ignore[assignment]
    UpdateAnnotation: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.UpdateAnnotationRequest, noteflow_pb2.Annotation]  # type: ignore[assignment]
    DeleteAnnotation: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.DeleteAnnotationRequest, noteflow_pb2.DeleteAnnotationResponse]  # type: ignore[assignment]
    ExportTranscript: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.ExportTranscriptRequest, noteflow_pb2.ExportTranscriptResponse]  # type: ignore[assignment]
    """Export functionality"""
    RefineSpeakerDiarization: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.RefineSpeakerDiarizationRequest, noteflow_pb2.RefineSpeakerDiarizationResponse]  # type: ignore[assignment]
    """Speaker diarization"""
    RenameSpeaker: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.RenameSpeakerRequest, noteflow_pb2.RenameSpeakerResponse]  # type: ignore[assignment]
    GetDiarizationJobStatus: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetDiarizationJobStatusRequest, noteflow_pb2.DiarizationJobStatus]  # type: ignore[assignment]
    CancelDiarizationJob: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.CancelDiarizationJobRequest, noteflow_pb2.CancelDiarizationJobResponse]  # type: ignore[assignment]
    GetActiveDiarizationJobs: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetActiveDiarizationJobsRequest, noteflow_pb2.GetActiveDiarizationJobsResponse]  # type: ignore[assignment]
    GetServerInfo: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.ServerInfoRequest, noteflow_pb2.ServerInfo]  # type: ignore[assignment]
    """Server health and capabilities"""
    ExtractEntities: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.ExtractEntitiesRequest, noteflow_pb2.ExtractEntitiesResponse]  # type: ignore[assignment]
    """Named entity extraction (Sprint 4) + mutations (Sprint 8)"""
    UpdateEntity: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.UpdateEntityRequest, noteflow_pb2.UpdateEntityResponse]  # type: ignore[assignment]
    DeleteEntity: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.DeleteEntityRequest, noteflow_pb2.DeleteEntityResponse]  # type: ignore[assignment]
    ListCalendarEvents: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.ListCalendarEventsRequest, noteflow_pb2.ListCalendarEventsResponse]  # type: ignore[assignment]
    """Calendar integration (Sprint 5)"""
    GetCalendarProviders: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetCalendarProvidersRequest, noteflow_pb2.GetCalendarProvidersResponse]  # type: ignore[assignment]
    InitiateOAuth: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.InitiateOAuthRequest, noteflow_pb2.InitiateOAuthResponse]  # type: ignore[assignment]
    """OAuth integration (generic for calendar, email, PKM, etc.)"""
    CompleteOAuth: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.CompleteOAuthRequest, noteflow_pb2.CompleteOAuthResponse]  # type: ignore[assignment]
    GetOAuthConnectionStatus: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetOAuthConnectionStatusRequest, noteflow_pb2.GetOAuthConnectionStatusResponse]  # type: ignore[assignment]
    DisconnectOAuth: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.DisconnectOAuthRequest, noteflow_pb2.DisconnectOAuthResponse]  # type: ignore[assignment]
    RegisterWebhook: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.RegisterWebhookRequest, noteflow_pb2.WebhookConfigProto]  # type: ignore[assignment]
    """Webhook management (Sprint 6)"""
    ListWebhooks: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.ListWebhooksRequest, noteflow_pb2.ListWebhooksResponse]  # type: ignore[assignment]
    UpdateWebhook: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.UpdateWebhookRequest, noteflow_pb2.WebhookConfigProto]  # type: ignore[assignment]
    DeleteWebhook: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.DeleteWebhookRequest, noteflow_pb2.DeleteWebhookResponse]  # type: ignore[assignment]
    GetWebhookDeliveries: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetWebhookDeliveriesRequest, noteflow_pb2.GetWebhookDeliveriesResponse]  # type: ignore[assignment]
    GrantCloudConsent: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GrantCloudConsentRequest, noteflow_pb2.GrantCloudConsentResponse]  # type: ignore[assignment]
    """Cloud consent management (Sprint 7)"""
    RevokeCloudConsent: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.RevokeCloudConsentRequest, noteflow_pb2.RevokeCloudConsentResponse]  # type: ignore[assignment]
    GetCloudConsentStatus: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetCloudConsentStatusRequest, noteflow_pb2.GetCloudConsentStatusResponse]  # type: ignore[assignment]
    GetPreferences: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetPreferencesRequest, noteflow_pb2.GetPreferencesResponse]  # type: ignore[assignment]
    """User preferences sync (Sprint 14)"""
    SetPreferences: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.SetPreferencesRequest, noteflow_pb2.SetPreferencesResponse]  # type: ignore[assignment]
    StartIntegrationSync: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.StartIntegrationSyncRequest, noteflow_pb2.StartIntegrationSyncResponse]  # type: ignore[assignment]
    """Integration sync orchestration (Sprint 9)"""
    GetSyncStatus: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetSyncStatusRequest, noteflow_pb2.GetSyncStatusResponse]  # type: ignore[assignment]
    ListSyncHistory: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.ListSyncHistoryRequest, noteflow_pb2.ListSyncHistoryResponse]  # type: ignore[assignment]
    GetUserIntegrations: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetUserIntegrationsRequest, noteflow_pb2.GetUserIntegrationsResponse]  # type: ignore[assignment]
    """Integration cache validation (Sprint 18.1)"""
    GetRecentLogs: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetRecentLogsRequest, noteflow_pb2.GetRecentLogsResponse]  # type: ignore[assignment]
    """Observability (Sprint 9)"""
    GetPerformanceMetrics: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetPerformanceMetricsRequest, noteflow_pb2.GetPerformanceMetricsResponse]  # type: ignore[assignment]
    RegisterOidcProvider: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.RegisterOidcProviderRequest, noteflow_pb2.OidcProviderProto]  # type: ignore[assignment]
    """OIDC Provider Management (Sprint 17)"""
    ListOidcProviders: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.ListOidcProvidersRequest, noteflow_pb2.ListOidcProvidersResponse]  # type: ignore[assignment]
    GetOidcProvider: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetOidcProviderRequest, noteflow_pb2.OidcProviderProto]  # type: ignore[assignment]
    UpdateOidcProvider: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.UpdateOidcProviderRequest, noteflow_pb2.OidcProviderProto]  # type: ignore[assignment]
    DeleteOidcProvider: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.DeleteOidcProviderRequest, noteflow_pb2.DeleteOidcProviderResponse]  # type: ignore[assignment]
    RefreshOidcDiscovery: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.RefreshOidcDiscoveryRequest, noteflow_pb2.RefreshOidcDiscoveryResponse]  # type: ignore[assignment]
    ListOidcPresets: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.ListOidcPresetsRequest, noteflow_pb2.ListOidcPresetsResponse]  # type: ignore[assignment]
    CreateProject: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.CreateProjectRequest, noteflow_pb2.ProjectProto]  # type: ignore[assignment]
    """Project management (Sprint 18)"""
    GetProject: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetProjectRequest, noteflow_pb2.ProjectProto]  # type: ignore[assignment]
    GetProjectBySlug: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetProjectBySlugRequest, noteflow_pb2.ProjectProto]  # type: ignore[assignment]
    ListProjects: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.ListProjectsRequest, noteflow_pb2.ListProjectsResponse]  # type: ignore[assignment]
    UpdateProject: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.UpdateProjectRequest, noteflow_pb2.ProjectProto]  # type: ignore[assignment]
    ArchiveProject: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.ArchiveProjectRequest, noteflow_pb2.ProjectProto]  # type: ignore[assignment]
    RestoreProject: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.RestoreProjectRequest, noteflow_pb2.ProjectProto]  # type: ignore[assignment]
    DeleteProject: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.DeleteProjectRequest, noteflow_pb2.DeleteProjectResponse]  # type: ignore[assignment]
    SetActiveProject: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.SetActiveProjectRequest, noteflow_pb2.SetActiveProjectResponse]  # type: ignore[assignment]
    """Active project (Sprint 18)"""
    GetActiveProject: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.GetActiveProjectRequest, noteflow_pb2.GetActiveProjectResponse]  # type: ignore[assignment]
    AddProjectMember: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.AddProjectMemberRequest, noteflow_pb2.ProjectMembershipProto]  # type: ignore[assignment]
    """Project membership management (Sprint 18)"""
    UpdateProjectMemberRole: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.UpdateProjectMemberRoleRequest, noteflow_pb2.ProjectMembershipProto]  # type: ignore[assignment]
    RemoveProjectMember: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.RemoveProjectMemberRequest, noteflow_pb2.RemoveProjectMemberResponse]  # type: ignore[assignment]
    ListProjectMembers: grpc.aio.UnaryUnaryMultiCallable[noteflow_pb2.ListProjectMembersRequest, noteflow_pb2.ListProjectMembersResponse]  # type: ignore[assignment]

class NoteFlowServiceServicer(metaclass=abc.ABCMeta):
    """=============================================================================
    Core Service
    =============================================================================
    """

    @abc.abstractmethod
    def StreamTranscription(
        self,
        request_iterator: _MaybeAsyncIterator[noteflow_pb2.AudioChunk],
        context: _ServicerContext,
    ) -> collections.abc.Iterator[noteflow_pb2.TranscriptUpdate] | collections.abc.AsyncIterator[noteflow_pb2.TranscriptUpdate]:
        """Bidirectional streaming: client sends audio chunks, server returns transcripts"""

    @abc.abstractmethod
    def CreateMeeting(
        self,
        request: noteflow_pb2.CreateMeetingRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.Meeting | collections.abc.Awaitable[noteflow_pb2.Meeting]:
        """Meeting lifecycle management"""

    @abc.abstractmethod
    def StopMeeting(
        self,
        request: noteflow_pb2.StopMeetingRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.Meeting | collections.abc.Awaitable[noteflow_pb2.Meeting]: ...

    @abc.abstractmethod
    def ListMeetings(
        self,
        request: noteflow_pb2.ListMeetingsRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ListMeetingsResponse | collections.abc.Awaitable[noteflow_pb2.ListMeetingsResponse]: ...

    @abc.abstractmethod
    def GetMeeting(
        self,
        request: noteflow_pb2.GetMeetingRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.Meeting | collections.abc.Awaitable[noteflow_pb2.Meeting]: ...

    @abc.abstractmethod
    def DeleteMeeting(
        self,
        request: noteflow_pb2.DeleteMeetingRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.DeleteMeetingResponse | collections.abc.Awaitable[noteflow_pb2.DeleteMeetingResponse]: ...

    @abc.abstractmethod
    def GenerateSummary(
        self,
        request: noteflow_pb2.GenerateSummaryRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.Summary | collections.abc.Awaitable[noteflow_pb2.Summary]:
        """Summary generation"""

    @abc.abstractmethod
    def AddAnnotation(
        self,
        request: noteflow_pb2.AddAnnotationRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.Annotation | collections.abc.Awaitable[noteflow_pb2.Annotation]:
        """Annotation management"""

    @abc.abstractmethod
    def GetAnnotation(
        self,
        request: noteflow_pb2.GetAnnotationRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.Annotation | collections.abc.Awaitable[noteflow_pb2.Annotation]: ...

    @abc.abstractmethod
    def ListAnnotations(
        self,
        request: noteflow_pb2.ListAnnotationsRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ListAnnotationsResponse | collections.abc.Awaitable[noteflow_pb2.ListAnnotationsResponse]: ...

    @abc.abstractmethod
    def UpdateAnnotation(
        self,
        request: noteflow_pb2.UpdateAnnotationRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.Annotation | collections.abc.Awaitable[noteflow_pb2.Annotation]: ...

    @abc.abstractmethod
    def DeleteAnnotation(
        self,
        request: noteflow_pb2.DeleteAnnotationRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.DeleteAnnotationResponse | collections.abc.Awaitable[noteflow_pb2.DeleteAnnotationResponse]: ...

    @abc.abstractmethod
    def ExportTranscript(
        self,
        request: noteflow_pb2.ExportTranscriptRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ExportTranscriptResponse | collections.abc.Awaitable[noteflow_pb2.ExportTranscriptResponse]:
        """Export functionality"""

    @abc.abstractmethod
    def RefineSpeakerDiarization(
        self,
        request: noteflow_pb2.RefineSpeakerDiarizationRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.RefineSpeakerDiarizationResponse | collections.abc.Awaitable[noteflow_pb2.RefineSpeakerDiarizationResponse]:
        """Speaker diarization"""

    @abc.abstractmethod
    def RenameSpeaker(
        self,
        request: noteflow_pb2.RenameSpeakerRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.RenameSpeakerResponse | collections.abc.Awaitable[noteflow_pb2.RenameSpeakerResponse]: ...

    @abc.abstractmethod
    def GetDiarizationJobStatus(
        self,
        request: noteflow_pb2.GetDiarizationJobStatusRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.DiarizationJobStatus | collections.abc.Awaitable[noteflow_pb2.DiarizationJobStatus]: ...

    @abc.abstractmethod
    def CancelDiarizationJob(
        self,
        request: noteflow_pb2.CancelDiarizationJobRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.CancelDiarizationJobResponse | collections.abc.Awaitable[noteflow_pb2.CancelDiarizationJobResponse]: ...

    @abc.abstractmethod
    def GetActiveDiarizationJobs(
        self,
        request: noteflow_pb2.GetActiveDiarizationJobsRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.GetActiveDiarizationJobsResponse | collections.abc.Awaitable[noteflow_pb2.GetActiveDiarizationJobsResponse]: ...

    @abc.abstractmethod
    def GetServerInfo(
        self,
        request: noteflow_pb2.ServerInfoRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ServerInfo | collections.abc.Awaitable[noteflow_pb2.ServerInfo]:
        """Server health and capabilities"""

    @abc.abstractmethod
    def ExtractEntities(
        self,
        request: noteflow_pb2.ExtractEntitiesRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ExtractEntitiesResponse | collections.abc.Awaitable[noteflow_pb2.ExtractEntitiesResponse]:
        """Named entity extraction (Sprint 4) + mutations (Sprint 8)"""

    @abc.abstractmethod
    def UpdateEntity(
        self,
        request: noteflow_pb2.UpdateEntityRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.UpdateEntityResponse | collections.abc.Awaitable[noteflow_pb2.UpdateEntityResponse]: ...

    @abc.abstractmethod
    def DeleteEntity(
        self,
        request: noteflow_pb2.DeleteEntityRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.DeleteEntityResponse | collections.abc.Awaitable[noteflow_pb2.DeleteEntityResponse]: ...

    @abc.abstractmethod
    def ListCalendarEvents(
        self,
        request: noteflow_pb2.ListCalendarEventsRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ListCalendarEventsResponse | collections.abc.Awaitable[noteflow_pb2.ListCalendarEventsResponse]:
        """Calendar integration (Sprint 5)"""

    @abc.abstractmethod
    def GetCalendarProviders(
        self,
        request: noteflow_pb2.GetCalendarProvidersRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.GetCalendarProvidersResponse | collections.abc.Awaitable[noteflow_pb2.GetCalendarProvidersResponse]: ...

    @abc.abstractmethod
    def InitiateOAuth(
        self,
        request: noteflow_pb2.InitiateOAuthRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.InitiateOAuthResponse | collections.abc.Awaitable[noteflow_pb2.InitiateOAuthResponse]:
        """OAuth integration (generic for calendar, email, PKM, etc.)"""

    @abc.abstractmethod
    def CompleteOAuth(
        self,
        request: noteflow_pb2.CompleteOAuthRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.CompleteOAuthResponse | collections.abc.Awaitable[noteflow_pb2.CompleteOAuthResponse]: ...

    @abc.abstractmethod
    def GetOAuthConnectionStatus(
        self,
        request: noteflow_pb2.GetOAuthConnectionStatusRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.GetOAuthConnectionStatusResponse | collections.abc.Awaitable[noteflow_pb2.GetOAuthConnectionStatusResponse]: ...

    @abc.abstractmethod
    def DisconnectOAuth(
        self,
        request: noteflow_pb2.DisconnectOAuthRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.DisconnectOAuthResponse | collections.abc.Awaitable[noteflow_pb2.DisconnectOAuthResponse]: ...

    @abc.abstractmethod
    def RegisterWebhook(
        self,
        request: noteflow_pb2.RegisterWebhookRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.WebhookConfigProto | collections.abc.Awaitable[noteflow_pb2.WebhookConfigProto]:
        """Webhook management (Sprint 6)"""

    @abc.abstractmethod
    def ListWebhooks(
        self,
        request: noteflow_pb2.ListWebhooksRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ListWebhooksResponse | collections.abc.Awaitable[noteflow_pb2.ListWebhooksResponse]: ...

    @abc.abstractmethod
    def UpdateWebhook(
        self,
        request: noteflow_pb2.UpdateWebhookRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.WebhookConfigProto | collections.abc.Awaitable[noteflow_pb2.WebhookConfigProto]: ...

    @abc.abstractmethod
    def DeleteWebhook(
        self,
        request: noteflow_pb2.DeleteWebhookRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.DeleteWebhookResponse | collections.abc.Awaitable[noteflow_pb2.DeleteWebhookResponse]: ...

    @abc.abstractmethod
    def GetWebhookDeliveries(
        self,
        request: noteflow_pb2.GetWebhookDeliveriesRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.GetWebhookDeliveriesResponse | collections.abc.Awaitable[noteflow_pb2.GetWebhookDeliveriesResponse]: ...

    @abc.abstractmethod
    def GrantCloudConsent(
        self,
        request: noteflow_pb2.GrantCloudConsentRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.GrantCloudConsentResponse | collections.abc.Awaitable[noteflow_pb2.GrantCloudConsentResponse]:
        """Cloud consent management (Sprint 7)"""

    @abc.abstractmethod
    def RevokeCloudConsent(
        self,
        request: noteflow_pb2.RevokeCloudConsentRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.RevokeCloudConsentResponse | collections.abc.Awaitable[noteflow_pb2.RevokeCloudConsentResponse]: ...

    @abc.abstractmethod
    def GetCloudConsentStatus(
        self,
        request: noteflow_pb2.GetCloudConsentStatusRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.GetCloudConsentStatusResponse | collections.abc.Awaitable[noteflow_pb2.GetCloudConsentStatusResponse]: ...

    @abc.abstractmethod
    def GetPreferences(
        self,
        request: noteflow_pb2.GetPreferencesRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.GetPreferencesResponse | collections.abc.Awaitable[noteflow_pb2.GetPreferencesResponse]:
        """User preferences sync (Sprint 14)"""

    @abc.abstractmethod
    def SetPreferences(
        self,
        request: noteflow_pb2.SetPreferencesRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.SetPreferencesResponse | collections.abc.Awaitable[noteflow_pb2.SetPreferencesResponse]: ...

    @abc.abstractmethod
    def StartIntegrationSync(
        self,
        request: noteflow_pb2.StartIntegrationSyncRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.StartIntegrationSyncResponse | collections.abc.Awaitable[noteflow_pb2.StartIntegrationSyncResponse]:
        """Integration sync orchestration (Sprint 9)"""

    @abc.abstractmethod
    def GetSyncStatus(
        self,
        request: noteflow_pb2.GetSyncStatusRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.GetSyncStatusResponse | collections.abc.Awaitable[noteflow_pb2.GetSyncStatusResponse]: ...

    @abc.abstractmethod
    def ListSyncHistory(
        self,
        request: noteflow_pb2.ListSyncHistoryRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ListSyncHistoryResponse | collections.abc.Awaitable[noteflow_pb2.ListSyncHistoryResponse]: ...

    @abc.abstractmethod
    def GetUserIntegrations(
        self,
        request: noteflow_pb2.GetUserIntegrationsRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.GetUserIntegrationsResponse | collections.abc.Awaitable[noteflow_pb2.GetUserIntegrationsResponse]:
        """Integration cache validation (Sprint 18.1)"""

    @abc.abstractmethod
    def GetRecentLogs(
        self,
        request: noteflow_pb2.GetRecentLogsRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.GetRecentLogsResponse | collections.abc.Awaitable[noteflow_pb2.GetRecentLogsResponse]:
        """Observability (Sprint 9)"""

    @abc.abstractmethod
    def GetPerformanceMetrics(
        self,
        request: noteflow_pb2.GetPerformanceMetricsRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.GetPerformanceMetricsResponse | collections.abc.Awaitable[noteflow_pb2.GetPerformanceMetricsResponse]: ...

    @abc.abstractmethod
    def RegisterOidcProvider(
        self,
        request: noteflow_pb2.RegisterOidcProviderRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.OidcProviderProto | collections.abc.Awaitable[noteflow_pb2.OidcProviderProto]:
        """OIDC Provider Management (Sprint 17)"""

    @abc.abstractmethod
    def ListOidcProviders(
        self,
        request: noteflow_pb2.ListOidcProvidersRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ListOidcProvidersResponse | collections.abc.Awaitable[noteflow_pb2.ListOidcProvidersResponse]: ...

    @abc.abstractmethod
    def GetOidcProvider(
        self,
        request: noteflow_pb2.GetOidcProviderRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.OidcProviderProto | collections.abc.Awaitable[noteflow_pb2.OidcProviderProto]: ...

    @abc.abstractmethod
    def UpdateOidcProvider(
        self,
        request: noteflow_pb2.UpdateOidcProviderRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.OidcProviderProto | collections.abc.Awaitable[noteflow_pb2.OidcProviderProto]: ...

    @abc.abstractmethod
    def DeleteOidcProvider(
        self,
        request: noteflow_pb2.DeleteOidcProviderRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.DeleteOidcProviderResponse | collections.abc.Awaitable[noteflow_pb2.DeleteOidcProviderResponse]: ...

    @abc.abstractmethod
    def RefreshOidcDiscovery(
        self,
        request: noteflow_pb2.RefreshOidcDiscoveryRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.RefreshOidcDiscoveryResponse | collections.abc.Awaitable[noteflow_pb2.RefreshOidcDiscoveryResponse]: ...

    @abc.abstractmethod
    def ListOidcPresets(
        self,
        request: noteflow_pb2.ListOidcPresetsRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ListOidcPresetsResponse | collections.abc.Awaitable[noteflow_pb2.ListOidcPresetsResponse]: ...

    @abc.abstractmethod
    def CreateProject(
        self,
        request: noteflow_pb2.CreateProjectRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ProjectProto | collections.abc.Awaitable[noteflow_pb2.ProjectProto]:
        """Project management (Sprint 18)"""

    @abc.abstractmethod
    def GetProject(
        self,
        request: noteflow_pb2.GetProjectRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ProjectProto | collections.abc.Awaitable[noteflow_pb2.ProjectProto]: ...

    @abc.abstractmethod
    def GetProjectBySlug(
        self,
        request: noteflow_pb2.GetProjectBySlugRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ProjectProto | collections.abc.Awaitable[noteflow_pb2.ProjectProto]: ...

    @abc.abstractmethod
    def ListProjects(
        self,
        request: noteflow_pb2.ListProjectsRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ListProjectsResponse | collections.abc.Awaitable[noteflow_pb2.ListProjectsResponse]: ...

    @abc.abstractmethod
    def UpdateProject(
        self,
        request: noteflow_pb2.UpdateProjectRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ProjectProto | collections.abc.Awaitable[noteflow_pb2.ProjectProto]: ...

    @abc.abstractmethod
    def ArchiveProject(
        self,
        request: noteflow_pb2.ArchiveProjectRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ProjectProto | collections.abc.Awaitable[noteflow_pb2.ProjectProto]: ...

    @abc.abstractmethod
    def RestoreProject(
        self,
        request: noteflow_pb2.RestoreProjectRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ProjectProto | collections.abc.Awaitable[noteflow_pb2.ProjectProto]: ...

    @abc.abstractmethod
    def DeleteProject(
        self,
        request: noteflow_pb2.DeleteProjectRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.DeleteProjectResponse | collections.abc.Awaitable[noteflow_pb2.DeleteProjectResponse]: ...

    @abc.abstractmethod
    def SetActiveProject(
        self,
        request: noteflow_pb2.SetActiveProjectRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.SetActiveProjectResponse | collections.abc.Awaitable[noteflow_pb2.SetActiveProjectResponse]:
        """Active project (Sprint 18)"""

    @abc.abstractmethod
    def GetActiveProject(
        self,
        request: noteflow_pb2.GetActiveProjectRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.GetActiveProjectResponse | collections.abc.Awaitable[noteflow_pb2.GetActiveProjectResponse]: ...

    @abc.abstractmethod
    def AddProjectMember(
        self,
        request: noteflow_pb2.AddProjectMemberRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ProjectMembershipProto | collections.abc.Awaitable[noteflow_pb2.ProjectMembershipProto]:
        """Project membership management (Sprint 18)"""

    @abc.abstractmethod
    def UpdateProjectMemberRole(
        self,
        request: noteflow_pb2.UpdateProjectMemberRoleRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ProjectMembershipProto | collections.abc.Awaitable[noteflow_pb2.ProjectMembershipProto]: ...

    @abc.abstractmethod
    def RemoveProjectMember(
        self,
        request: noteflow_pb2.RemoveProjectMemberRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.RemoveProjectMemberResponse | collections.abc.Awaitable[noteflow_pb2.RemoveProjectMemberResponse]: ...

    @abc.abstractmethod
    def ListProjectMembers(
        self,
        request: noteflow_pb2.ListProjectMembersRequest,
        context: _ServicerContext,
    ) -> noteflow_pb2.ListProjectMembersResponse | collections.abc.Awaitable[noteflow_pb2.ListProjectMembersResponse]: ...

def add_NoteFlowServiceServicer_to_server(servicer: NoteFlowServiceServicer, server: grpc.Server | grpc.aio.Server) -> None: ...
