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

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import sys
import typing

if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _UpdateType:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _UpdateTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_UpdateType.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    UPDATE_TYPE_UNSPECIFIED: _UpdateType.ValueType  # 0
    UPDATE_TYPE_PARTIAL: _UpdateType.ValueType  # 1
    """Tentative, may change"""
    UPDATE_TYPE_FINAL: _UpdateType.ValueType  # 2
    """Confirmed segment"""
    UPDATE_TYPE_VAD_START: _UpdateType.ValueType  # 3
    """Voice activity started"""
    UPDATE_TYPE_VAD_END: _UpdateType.ValueType  # 4
    """Voice activity ended"""

class UpdateType(_UpdateType, metaclass=_UpdateTypeEnumTypeWrapper): ...

UPDATE_TYPE_UNSPECIFIED: UpdateType.ValueType  # 0
UPDATE_TYPE_PARTIAL: UpdateType.ValueType  # 1
"""Tentative, may change"""
UPDATE_TYPE_FINAL: UpdateType.ValueType  # 2
"""Confirmed segment"""
UPDATE_TYPE_VAD_START: UpdateType.ValueType  # 3
"""Voice activity started"""
UPDATE_TYPE_VAD_END: UpdateType.ValueType  # 4
"""Voice activity ended"""
Global___UpdateType: typing_extensions.TypeAlias = UpdateType

class _MeetingState:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _MeetingStateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MeetingState.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    MEETING_STATE_UNSPECIFIED: _MeetingState.ValueType  # 0
    MEETING_STATE_CREATED: _MeetingState.ValueType  # 1
    """Created but not started"""
    MEETING_STATE_RECORDING: _MeetingState.ValueType  # 2
    """Actively recording"""
    MEETING_STATE_STOPPED: _MeetingState.ValueType  # 3
    """Recording stopped, processing may continue"""
    MEETING_STATE_COMPLETED: _MeetingState.ValueType  # 4
    """All processing complete"""
    MEETING_STATE_ERROR: _MeetingState.ValueType  # 5
    """Error occurred"""

class MeetingState(_MeetingState, metaclass=_MeetingStateEnumTypeWrapper): ...

MEETING_STATE_UNSPECIFIED: MeetingState.ValueType  # 0
MEETING_STATE_CREATED: MeetingState.ValueType  # 1
"""Created but not started"""
MEETING_STATE_RECORDING: MeetingState.ValueType  # 2
"""Actively recording"""
MEETING_STATE_STOPPED: MeetingState.ValueType  # 3
"""Recording stopped, processing may continue"""
MEETING_STATE_COMPLETED: MeetingState.ValueType  # 4
"""All processing complete"""
MEETING_STATE_ERROR: MeetingState.ValueType  # 5
"""Error occurred"""
Global___MeetingState: typing_extensions.TypeAlias = MeetingState

class _SortOrder:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _SortOrderEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SortOrder.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    SORT_ORDER_UNSPECIFIED: _SortOrder.ValueType  # 0
    SORT_ORDER_CREATED_DESC: _SortOrder.ValueType  # 1
    """Newest first (default)"""
    SORT_ORDER_CREATED_ASC: _SortOrder.ValueType  # 2
    """Oldest first"""

class SortOrder(_SortOrder, metaclass=_SortOrderEnumTypeWrapper): ...

SORT_ORDER_UNSPECIFIED: SortOrder.ValueType  # 0
SORT_ORDER_CREATED_DESC: SortOrder.ValueType  # 1
"""Newest first (default)"""
SORT_ORDER_CREATED_ASC: SortOrder.ValueType  # 2
"""Oldest first"""
Global___SortOrder: typing_extensions.TypeAlias = SortOrder

class _Priority:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _PriorityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Priority.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    PRIORITY_UNSPECIFIED: _Priority.ValueType  # 0
    PRIORITY_LOW: _Priority.ValueType  # 1
    PRIORITY_MEDIUM: _Priority.ValueType  # 2
    PRIORITY_HIGH: _Priority.ValueType  # 3

class Priority(_Priority, metaclass=_PriorityEnumTypeWrapper): ...

PRIORITY_UNSPECIFIED: Priority.ValueType  # 0
PRIORITY_LOW: Priority.ValueType  # 1
PRIORITY_MEDIUM: Priority.ValueType  # 2
PRIORITY_HIGH: Priority.ValueType  # 3
Global___Priority: typing_extensions.TypeAlias = Priority

class _AnnotationType:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _AnnotationTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AnnotationType.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    ANNOTATION_TYPE_UNSPECIFIED: _AnnotationType.ValueType  # 0
    ANNOTATION_TYPE_ACTION_ITEM: _AnnotationType.ValueType  # 1
    ANNOTATION_TYPE_DECISION: _AnnotationType.ValueType  # 2
    ANNOTATION_TYPE_NOTE: _AnnotationType.ValueType  # 3
    ANNOTATION_TYPE_RISK: _AnnotationType.ValueType  # 4

class AnnotationType(_AnnotationType, metaclass=_AnnotationTypeEnumTypeWrapper):
    """=============================================================================
    Annotation Messages
    =============================================================================
    """

ANNOTATION_TYPE_UNSPECIFIED: AnnotationType.ValueType  # 0
ANNOTATION_TYPE_ACTION_ITEM: AnnotationType.ValueType  # 1
ANNOTATION_TYPE_DECISION: AnnotationType.ValueType  # 2
ANNOTATION_TYPE_NOTE: AnnotationType.ValueType  # 3
ANNOTATION_TYPE_RISK: AnnotationType.ValueType  # 4
Global___AnnotationType: typing_extensions.TypeAlias = AnnotationType

class _ExportFormat:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _ExportFormatEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ExportFormat.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    EXPORT_FORMAT_UNSPECIFIED: _ExportFormat.ValueType  # 0
    EXPORT_FORMAT_MARKDOWN: _ExportFormat.ValueType  # 1
    EXPORT_FORMAT_HTML: _ExportFormat.ValueType  # 2
    EXPORT_FORMAT_PDF: _ExportFormat.ValueType  # 3
    """PDF export (Sprint 3)"""

class ExportFormat(_ExportFormat, metaclass=_ExportFormatEnumTypeWrapper):
    """=============================================================================
    Export Messages
    =============================================================================
    """

EXPORT_FORMAT_UNSPECIFIED: ExportFormat.ValueType  # 0
EXPORT_FORMAT_MARKDOWN: ExportFormat.ValueType  # 1
EXPORT_FORMAT_HTML: ExportFormat.ValueType  # 2
EXPORT_FORMAT_PDF: ExportFormat.ValueType  # 3
"""PDF export (Sprint 3)"""
Global___ExportFormat: typing_extensions.TypeAlias = ExportFormat

class _JobStatus:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _JobStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_JobStatus.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    JOB_STATUS_UNSPECIFIED: _JobStatus.ValueType  # 0
    JOB_STATUS_QUEUED: _JobStatus.ValueType  # 1
    JOB_STATUS_RUNNING: _JobStatus.ValueType  # 2
    JOB_STATUS_COMPLETED: _JobStatus.ValueType  # 3
    JOB_STATUS_FAILED: _JobStatus.ValueType  # 4
    JOB_STATUS_CANCELLED: _JobStatus.ValueType  # 5

class JobStatus(_JobStatus, metaclass=_JobStatusEnumTypeWrapper): ...

JOB_STATUS_UNSPECIFIED: JobStatus.ValueType  # 0
JOB_STATUS_QUEUED: JobStatus.ValueType  # 1
JOB_STATUS_RUNNING: JobStatus.ValueType  # 2
JOB_STATUS_COMPLETED: JobStatus.ValueType  # 3
JOB_STATUS_FAILED: JobStatus.ValueType  # 4
JOB_STATUS_CANCELLED: JobStatus.ValueType  # 5
Global___JobStatus: typing_extensions.TypeAlias = JobStatus

class _ProjectRoleProto:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _ProjectRoleProtoEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ProjectRoleProto.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    PROJECT_ROLE_UNSPECIFIED: _ProjectRoleProto.ValueType  # 0
    PROJECT_ROLE_VIEWER: _ProjectRoleProto.ValueType  # 1
    """Read meetings, artifacts, run Q&A"""
    PROJECT_ROLE_EDITOR: _ProjectRoleProto.ValueType  # 2
    """+ Create/edit meetings, upload artifacts"""
    PROJECT_ROLE_ADMIN: _ProjectRoleProto.ValueType  # 3
    """+ Manage members, settings, rules"""

class ProjectRoleProto(_ProjectRoleProto, metaclass=_ProjectRoleProtoEnumTypeWrapper):
    """=============================================================================
    Project Management Messages (Sprint 18)
    =============================================================================

    Project role within a project (access control)
    """

PROJECT_ROLE_UNSPECIFIED: ProjectRoleProto.ValueType  # 0
PROJECT_ROLE_VIEWER: ProjectRoleProto.ValueType  # 1
"""Read meetings, artifacts, run Q&A"""
PROJECT_ROLE_EDITOR: ProjectRoleProto.ValueType  # 2
"""+ Create/edit meetings, upload artifacts"""
PROJECT_ROLE_ADMIN: ProjectRoleProto.ValueType  # 3
"""+ Manage members, settings, rules"""
Global___ProjectRoleProto: typing_extensions.TypeAlias = ProjectRoleProto

@typing.final
class AudioChunk(google.protobuf.message.Message):
    """=============================================================================
    Audio Streaming Messages
    =============================================================================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETING_ID_FIELD_NUMBER: builtins.int
    AUDIO_DATA_FIELD_NUMBER: builtins.int
    TIMESTAMP_FIELD_NUMBER: builtins.int
    SAMPLE_RATE_FIELD_NUMBER: builtins.int
    CHANNELS_FIELD_NUMBER: builtins.int
    CHUNK_SEQUENCE_FIELD_NUMBER: builtins.int
    meeting_id: builtins.str
    """Meeting ID this audio belongs to"""
    audio_data: builtins.bytes
    """Raw audio data (float32, mono, 16kHz expected)"""
    timestamp: builtins.float
    """Timestamp when audio was captured (monotonic, seconds)"""
    sample_rate: builtins.int
    """Sample rate in Hz (default 16000)"""
    channels: builtins.int
    """Number of channels (default 1 for mono)"""
    chunk_sequence: builtins.int
    """Sequence number for acknowledgment tracking (monotonically increasing per stream)"""
    def __init__(
        self,
        *,
        meeting_id: builtins.str = ...,
        audio_data: builtins.bytes = ...,
        timestamp: builtins.float = ...,
        sample_rate: builtins.int = ...,
        channels: builtins.int = ...,
        chunk_sequence: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["audio_data", b"audio_data", "channels", b"channels", "chunk_sequence", b"chunk_sequence", "meeting_id", b"meeting_id", "sample_rate", b"sample_rate", "timestamp", b"timestamp"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___AudioChunk: typing_extensions.TypeAlias = AudioChunk

@typing.final
class CongestionInfo(google.protobuf.message.Message):
    """Congestion information for backpressure signaling (Phase 3)"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROCESSING_DELAY_MS_FIELD_NUMBER: builtins.int
    QUEUE_DEPTH_FIELD_NUMBER: builtins.int
    THROTTLE_RECOMMENDED_FIELD_NUMBER: builtins.int
    processing_delay_ms: builtins.int
    """Time from chunk receipt to transcription processing (milliseconds)"""
    queue_depth: builtins.int
    """Number of chunks waiting to be processed"""
    throttle_recommended: builtins.bool
    """Signal that client should reduce sending rate"""
    def __init__(
        self,
        *,
        processing_delay_ms: builtins.int = ...,
        queue_depth: builtins.int = ...,
        throttle_recommended: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["processing_delay_ms", b"processing_delay_ms", "queue_depth", b"queue_depth", "throttle_recommended", b"throttle_recommended"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___CongestionInfo: typing_extensions.TypeAlias = CongestionInfo

@typing.final
class TranscriptUpdate(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETING_ID_FIELD_NUMBER: builtins.int
    UPDATE_TYPE_FIELD_NUMBER: builtins.int
    PARTIAL_TEXT_FIELD_NUMBER: builtins.int
    SEGMENT_FIELD_NUMBER: builtins.int
    SERVER_TIMESTAMP_FIELD_NUMBER: builtins.int
    ACK_SEQUENCE_FIELD_NUMBER: builtins.int
    CONGESTION_FIELD_NUMBER: builtins.int
    meeting_id: builtins.str
    """Meeting ID this transcript belongs to"""
    update_type: Global___UpdateType.ValueType
    """Type of update"""
    partial_text: builtins.str
    """For partial updates - tentative transcript text"""
    server_timestamp: builtins.float
    """Server-side processing timestamp"""
    ack_sequence: builtins.int
    """Acknowledgment: highest contiguous chunk sequence received (optional)"""
    @property
    def segment(self) -> Global___FinalSegment:
        """For final segments - confirmed transcript"""

    @property
    def congestion(self) -> Global___CongestionInfo:
        """Congestion info for backpressure signaling (optional)"""

    def __init__(
        self,
        *,
        meeting_id: builtins.str = ...,
        update_type: Global___UpdateType.ValueType = ...,
        partial_text: builtins.str = ...,
        segment: Global___FinalSegment | None = ...,
        server_timestamp: builtins.float = ...,
        ack_sequence: builtins.int | None = ...,
        congestion: Global___CongestionInfo | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_ack_sequence", b"_ack_sequence", "_congestion", b"_congestion", "ack_sequence", b"ack_sequence", "congestion", b"congestion", "segment", b"segment"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_ack_sequence", b"_ack_sequence", "_congestion", b"_congestion", "ack_sequence", b"ack_sequence", "congestion", b"congestion", "meeting_id", b"meeting_id", "partial_text", b"partial_text", "segment", b"segment", "server_timestamp", b"server_timestamp", "update_type", b"update_type"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__ack_sequence: typing_extensions.TypeAlias = typing.Literal["ack_sequence"]
    _WhichOneofArgType__ack_sequence: typing_extensions.TypeAlias = typing.Literal["_ack_sequence", b"_ack_sequence"]
    _WhichOneofReturnType__congestion: typing_extensions.TypeAlias = typing.Literal["congestion"]
    _WhichOneofArgType__congestion: typing_extensions.TypeAlias = typing.Literal["_congestion", b"_congestion"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__ack_sequence) -> _WhichOneofReturnType__ack_sequence | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__congestion) -> _WhichOneofReturnType__congestion | None: ...

Global___TranscriptUpdate: typing_extensions.TypeAlias = TranscriptUpdate

@typing.final
class FinalSegment(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SEGMENT_ID_FIELD_NUMBER: builtins.int
    TEXT_FIELD_NUMBER: builtins.int
    START_TIME_FIELD_NUMBER: builtins.int
    END_TIME_FIELD_NUMBER: builtins.int
    WORDS_FIELD_NUMBER: builtins.int
    LANGUAGE_FIELD_NUMBER: builtins.int
    LANGUAGE_CONFIDENCE_FIELD_NUMBER: builtins.int
    AVG_LOGPROB_FIELD_NUMBER: builtins.int
    NO_SPEECH_PROB_FIELD_NUMBER: builtins.int
    SPEAKER_ID_FIELD_NUMBER: builtins.int
    SPEAKER_CONFIDENCE_FIELD_NUMBER: builtins.int
    segment_id: builtins.int
    """Segment ID (sequential within meeting)"""
    text: builtins.str
    """Transcript text"""
    start_time: builtins.float
    """Start time relative to meeting start (seconds)"""
    end_time: builtins.float
    """End time relative to meeting start (seconds)"""
    language: builtins.str
    """Detected language"""
    language_confidence: builtins.float
    """Language detection confidence (0.0-1.0)"""
    avg_logprob: builtins.float
    """Average log probability (quality indicator)"""
    no_speech_prob: builtins.float
    """Probability that segment contains no speech"""
    speaker_id: builtins.str
    """Speaker identification (from diarization)"""
    speaker_confidence: builtins.float
    """Speaker assignment confidence (0.0-1.0)"""
    @property
    def words(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___WordTiming]:
        """Word-level timestamps"""

    def __init__(
        self,
        *,
        segment_id: builtins.int = ...,
        text: builtins.str = ...,
        start_time: builtins.float = ...,
        end_time: builtins.float = ...,
        words: collections.abc.Iterable[Global___WordTiming] | None = ...,
        language: builtins.str = ...,
        language_confidence: builtins.float = ...,
        avg_logprob: builtins.float = ...,
        no_speech_prob: builtins.float = ...,
        speaker_id: builtins.str = ...,
        speaker_confidence: builtins.float = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["avg_logprob", b"avg_logprob", "end_time", b"end_time", "language", b"language", "language_confidence", b"language_confidence", "no_speech_prob", b"no_speech_prob", "segment_id", b"segment_id", "speaker_confidence", b"speaker_confidence", "speaker_id", b"speaker_id", "start_time", b"start_time", "text", b"text", "words", b"words"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___FinalSegment: typing_extensions.TypeAlias = FinalSegment

@typing.final
class WordTiming(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    WORD_FIELD_NUMBER: builtins.int
    START_TIME_FIELD_NUMBER: builtins.int
    END_TIME_FIELD_NUMBER: builtins.int
    PROBABILITY_FIELD_NUMBER: builtins.int
    word: builtins.str
    start_time: builtins.float
    end_time: builtins.float
    probability: builtins.float
    def __init__(
        self,
        *,
        word: builtins.str = ...,
        start_time: builtins.float = ...,
        end_time: builtins.float = ...,
        probability: builtins.float = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["end_time", b"end_time", "probability", b"probability", "start_time", b"start_time", "word", b"word"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___WordTiming: typing_extensions.TypeAlias = WordTiming

@typing.final
class Meeting(google.protobuf.message.Message):
    """=============================================================================
    Meeting Management Messages
    =============================================================================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class MetadataEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["key", b"key", "value", b"value"]
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    ID_FIELD_NUMBER: builtins.int
    TITLE_FIELD_NUMBER: builtins.int
    STATE_FIELD_NUMBER: builtins.int
    CREATED_AT_FIELD_NUMBER: builtins.int
    STARTED_AT_FIELD_NUMBER: builtins.int
    ENDED_AT_FIELD_NUMBER: builtins.int
    DURATION_SECONDS_FIELD_NUMBER: builtins.int
    SEGMENTS_FIELD_NUMBER: builtins.int
    SUMMARY_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    PROJECT_ID_FIELD_NUMBER: builtins.int
    id: builtins.str
    """Unique meeting identifier"""
    title: builtins.str
    """User-provided title"""
    state: Global___MeetingState.ValueType
    """Meeting state"""
    created_at: builtins.float
    """Creation timestamp (Unix epoch seconds)"""
    started_at: builtins.float
    """Start timestamp (when recording began)"""
    ended_at: builtins.float
    """End timestamp (when recording stopped)"""
    duration_seconds: builtins.float
    """Duration in seconds"""
    project_id: builtins.str
    """Optional project scope"""
    @property
    def segments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___FinalSegment]:
        """Full transcript segments"""

    @property
    def summary(self) -> Global___Summary:
        """Generated summary (if available)"""

    @property
    def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """Metadata"""

    def __init__(
        self,
        *,
        id: builtins.str = ...,
        title: builtins.str = ...,
        state: Global___MeetingState.ValueType = ...,
        created_at: builtins.float = ...,
        started_at: builtins.float = ...,
        ended_at: builtins.float = ...,
        duration_seconds: builtins.float = ...,
        segments: collections.abc.Iterable[Global___FinalSegment] | None = ...,
        summary: Global___Summary | None = ...,
        metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        project_id: builtins.str | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_project_id", b"_project_id", "project_id", b"project_id", "summary", b"summary"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_project_id", b"_project_id", "created_at", b"created_at", "duration_seconds", b"duration_seconds", "ended_at", b"ended_at", "id", b"id", "metadata", b"metadata", "project_id", b"project_id", "segments", b"segments", "started_at", b"started_at", "state", b"state", "summary", b"summary", "title", b"title"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__project_id: typing_extensions.TypeAlias = typing.Literal["project_id"]
    _WhichOneofArgType__project_id: typing_extensions.TypeAlias = typing.Literal["_project_id", b"_project_id"]
    def WhichOneof(self, oneof_group: _WhichOneofArgType__project_id) -> _WhichOneofReturnType__project_id | None: ...

Global___Meeting: typing_extensions.TypeAlias = Meeting

@typing.final
class CreateMeetingRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class MetadataEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["key", b"key", "value", b"value"]
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    TITLE_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    PROJECT_ID_FIELD_NUMBER: builtins.int
    title: builtins.str
    """Optional title (generated if not provided)"""
    project_id: builtins.str
    """Optional project scope (defaults to active project)"""
    @property
    def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """Optional metadata"""

    def __init__(
        self,
        *,
        title: builtins.str = ...,
        metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        project_id: builtins.str | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_project_id", b"_project_id", "project_id", b"project_id"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_project_id", b"_project_id", "metadata", b"metadata", "project_id", b"project_id", "title", b"title"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__project_id: typing_extensions.TypeAlias = typing.Literal["project_id"]
    _WhichOneofArgType__project_id: typing_extensions.TypeAlias = typing.Literal["_project_id", b"_project_id"]
    def WhichOneof(self, oneof_group: _WhichOneofArgType__project_id) -> _WhichOneofReturnType__project_id | None: ...

Global___CreateMeetingRequest: typing_extensions.TypeAlias = CreateMeetingRequest

@typing.final
class StopMeetingRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETING_ID_FIELD_NUMBER: builtins.int
    meeting_id: builtins.str
    def __init__(
        self,
        *,
        meeting_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["meeting_id", b"meeting_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___StopMeetingRequest: typing_extensions.TypeAlias = StopMeetingRequest

@typing.final
class ListMeetingsRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    STATES_FIELD_NUMBER: builtins.int
    LIMIT_FIELD_NUMBER: builtins.int
    OFFSET_FIELD_NUMBER: builtins.int
    SORT_ORDER_FIELD_NUMBER: builtins.int
    PROJECT_ID_FIELD_NUMBER: builtins.int
    limit: builtins.int
    """Pagination"""
    offset: builtins.int
    sort_order: Global___SortOrder.ValueType
    """Sort order"""
    project_id: builtins.str
    """Optional project filter (defaults to active project if omitted)"""
    @property
    def states(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[Global___MeetingState.ValueType]:
        """Optional filter by state"""

    def __init__(
        self,
        *,
        states: collections.abc.Iterable[Global___MeetingState.ValueType] | None = ...,
        limit: builtins.int = ...,
        offset: builtins.int = ...,
        sort_order: Global___SortOrder.ValueType = ...,
        project_id: builtins.str | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_project_id", b"_project_id", "project_id", b"project_id"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_project_id", b"_project_id", "limit", b"limit", "offset", b"offset", "project_id", b"project_id", "sort_order", b"sort_order", "states", b"states"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__project_id: typing_extensions.TypeAlias = typing.Literal["project_id"]
    _WhichOneofArgType__project_id: typing_extensions.TypeAlias = typing.Literal["_project_id", b"_project_id"]
    def WhichOneof(self, oneof_group: _WhichOneofArgType__project_id) -> _WhichOneofReturnType__project_id | None: ...

Global___ListMeetingsRequest: typing_extensions.TypeAlias = ListMeetingsRequest

@typing.final
class ListMeetingsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETINGS_FIELD_NUMBER: builtins.int
    TOTAL_COUNT_FIELD_NUMBER: builtins.int
    total_count: builtins.int
    @property
    def meetings(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___Meeting]: ...
    def __init__(
        self,
        *,
        meetings: collections.abc.Iterable[Global___Meeting] | None = ...,
        total_count: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["meetings", b"meetings", "total_count", b"total_count"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListMeetingsResponse: typing_extensions.TypeAlias = ListMeetingsResponse

@typing.final
class GetMeetingRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETING_ID_FIELD_NUMBER: builtins.int
    INCLUDE_SEGMENTS_FIELD_NUMBER: builtins.int
    INCLUDE_SUMMARY_FIELD_NUMBER: builtins.int
    meeting_id: builtins.str
    include_segments: builtins.bool
    """Whether to include full transcript segments"""
    include_summary: builtins.bool
    """Whether to include summary"""
    def __init__(
        self,
        *,
        meeting_id: builtins.str = ...,
        include_segments: builtins.bool = ...,
        include_summary: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["include_segments", b"include_segments", "include_summary", b"include_summary", "meeting_id", b"meeting_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetMeetingRequest: typing_extensions.TypeAlias = GetMeetingRequest

@typing.final
class DeleteMeetingRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETING_ID_FIELD_NUMBER: builtins.int
    meeting_id: builtins.str
    def __init__(
        self,
        *,
        meeting_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["meeting_id", b"meeting_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DeleteMeetingRequest: typing_extensions.TypeAlias = DeleteMeetingRequest

@typing.final
class DeleteMeetingResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SUCCESS_FIELD_NUMBER: builtins.int
    success: builtins.bool
    def __init__(
        self,
        *,
        success: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["success", b"success"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DeleteMeetingResponse: typing_extensions.TypeAlias = DeleteMeetingResponse

@typing.final
class Summary(google.protobuf.message.Message):
    """=============================================================================
    Summary Messages
    =============================================================================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETING_ID_FIELD_NUMBER: builtins.int
    EXECUTIVE_SUMMARY_FIELD_NUMBER: builtins.int
    KEY_POINTS_FIELD_NUMBER: builtins.int
    ACTION_ITEMS_FIELD_NUMBER: builtins.int
    GENERATED_AT_FIELD_NUMBER: builtins.int
    MODEL_VERSION_FIELD_NUMBER: builtins.int
    meeting_id: builtins.str
    """Meeting this summary belongs to"""
    executive_summary: builtins.str
    """Executive summary (2-3 sentences)"""
    generated_at: builtins.float
    """Generated timestamp"""
    model_version: builtins.str
    """Model/version used for generation"""
    @property
    def key_points(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___KeyPoint]:
        """Key points / highlights"""

    @property
    def action_items(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___ActionItem]:
        """Action items extracted"""

    def __init__(
        self,
        *,
        meeting_id: builtins.str = ...,
        executive_summary: builtins.str = ...,
        key_points: collections.abc.Iterable[Global___KeyPoint] | None = ...,
        action_items: collections.abc.Iterable[Global___ActionItem] | None = ...,
        generated_at: builtins.float = ...,
        model_version: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["action_items", b"action_items", "executive_summary", b"executive_summary", "generated_at", b"generated_at", "key_points", b"key_points", "meeting_id", b"meeting_id", "model_version", b"model_version"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___Summary: typing_extensions.TypeAlias = Summary

@typing.final
class KeyPoint(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TEXT_FIELD_NUMBER: builtins.int
    SEGMENT_IDS_FIELD_NUMBER: builtins.int
    START_TIME_FIELD_NUMBER: builtins.int
    END_TIME_FIELD_NUMBER: builtins.int
    text: builtins.str
    """The key point text"""
    start_time: builtins.float
    """Timestamp range this point covers"""
    end_time: builtins.float
    @property
    def segment_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """Segment IDs that support this point (evidence linking)"""

    def __init__(
        self,
        *,
        text: builtins.str = ...,
        segment_ids: collections.abc.Iterable[builtins.int] | None = ...,
        start_time: builtins.float = ...,
        end_time: builtins.float = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["end_time", b"end_time", "segment_ids", b"segment_ids", "start_time", b"start_time", "text", b"text"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___KeyPoint: typing_extensions.TypeAlias = KeyPoint

@typing.final
class ActionItem(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TEXT_FIELD_NUMBER: builtins.int
    ASSIGNEE_FIELD_NUMBER: builtins.int
    DUE_DATE_FIELD_NUMBER: builtins.int
    PRIORITY_FIELD_NUMBER: builtins.int
    SEGMENT_IDS_FIELD_NUMBER: builtins.int
    text: builtins.str
    """Action item text"""
    assignee: builtins.str
    """Assigned to (if mentioned)"""
    due_date: builtins.float
    """Due date (if mentioned, Unix epoch)"""
    priority: Global___Priority.ValueType
    """Priority level"""
    @property
    def segment_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """Segment IDs that mention this action"""

    def __init__(
        self,
        *,
        text: builtins.str = ...,
        assignee: builtins.str = ...,
        due_date: builtins.float = ...,
        priority: Global___Priority.ValueType = ...,
        segment_ids: collections.abc.Iterable[builtins.int] | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["assignee", b"assignee", "due_date", b"due_date", "priority", b"priority", "segment_ids", b"segment_ids", "text", b"text"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ActionItem: typing_extensions.TypeAlias = ActionItem

@typing.final
class SummarizationOptions(google.protobuf.message.Message):
    """Summarization style options (Sprint 1)"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TONE_FIELD_NUMBER: builtins.int
    FORMAT_FIELD_NUMBER: builtins.int
    VERBOSITY_FIELD_NUMBER: builtins.int
    tone: builtins.str
    """Tone: professional, casual, technical, friendly"""
    format: builtins.str
    """Format: bullet_points, narrative, structured, concise"""
    verbosity: builtins.str
    """Verbosity: minimal, balanced, detailed, comprehensive"""
    def __init__(
        self,
        *,
        tone: builtins.str = ...,
        format: builtins.str = ...,
        verbosity: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["format", b"format", "tone", b"tone", "verbosity", b"verbosity"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___SummarizationOptions: typing_extensions.TypeAlias = SummarizationOptions

@typing.final
class GenerateSummaryRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETING_ID_FIELD_NUMBER: builtins.int
    FORCE_REGENERATE_FIELD_NUMBER: builtins.int
    OPTIONS_FIELD_NUMBER: builtins.int
    meeting_id: builtins.str
    force_regenerate: builtins.bool
    """Force regeneration even if summary exists"""
    @property
    def options(self) -> Global___SummarizationOptions:
        """Advanced summarization options (Sprint 1)"""

    def __init__(
        self,
        *,
        meeting_id: builtins.str = ...,
        force_regenerate: builtins.bool = ...,
        options: Global___SummarizationOptions | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["options", b"options"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["force_regenerate", b"force_regenerate", "meeting_id", b"meeting_id", "options", b"options"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GenerateSummaryRequest: typing_extensions.TypeAlias = GenerateSummaryRequest

@typing.final
class ServerInfoRequest(google.protobuf.message.Message):
    """=============================================================================
    Server Info Messages
    =============================================================================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

Global___ServerInfoRequest: typing_extensions.TypeAlias = ServerInfoRequest

@typing.final
class ServerInfo(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    VERSION_FIELD_NUMBER: builtins.int
    ASR_MODEL_FIELD_NUMBER: builtins.int
    ASR_READY_FIELD_NUMBER: builtins.int
    SUPPORTED_SAMPLE_RATES_FIELD_NUMBER: builtins.int
    MAX_CHUNK_SIZE_FIELD_NUMBER: builtins.int
    UPTIME_SECONDS_FIELD_NUMBER: builtins.int
    ACTIVE_MEETINGS_FIELD_NUMBER: builtins.int
    DIARIZATION_ENABLED_FIELD_NUMBER: builtins.int
    DIARIZATION_READY_FIELD_NUMBER: builtins.int
    STATE_VERSION_FIELD_NUMBER: builtins.int
    version: builtins.str
    """Server version"""
    asr_model: builtins.str
    """ASR model loaded"""
    asr_ready: builtins.bool
    """Whether ASR is ready"""
    max_chunk_size: builtins.int
    """Maximum audio chunk size in bytes"""
    uptime_seconds: builtins.float
    """Server uptime in seconds"""
    active_meetings: builtins.int
    """Number of active meetings"""
    diarization_enabled: builtins.bool
    """Whether diarization is enabled"""
    diarization_ready: builtins.bool
    """Whether diarization models are ready"""
    state_version: builtins.int
    """Server state version for cache invalidation (Sprint GAP-002)
    Increment when breaking state changes require client cache invalidation
    """
    @property
    def supported_sample_rates(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """Supported sample rates"""

    def __init__(
        self,
        *,
        version: builtins.str = ...,
        asr_model: builtins.str = ...,
        asr_ready: builtins.bool = ...,
        supported_sample_rates: collections.abc.Iterable[builtins.int] | None = ...,
        max_chunk_size: builtins.int = ...,
        uptime_seconds: builtins.float = ...,
        active_meetings: builtins.int = ...,
        diarization_enabled: builtins.bool = ...,
        diarization_ready: builtins.bool = ...,
        state_version: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["active_meetings", b"active_meetings", "asr_model", b"asr_model", "asr_ready", b"asr_ready", "diarization_enabled", b"diarization_enabled", "diarization_ready", b"diarization_ready", "max_chunk_size", b"max_chunk_size", "state_version", b"state_version", "supported_sample_rates", b"supported_sample_rates", "uptime_seconds", b"uptime_seconds", "version", b"version"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ServerInfo: typing_extensions.TypeAlias = ServerInfo

@typing.final
class Annotation(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    MEETING_ID_FIELD_NUMBER: builtins.int
    ANNOTATION_TYPE_FIELD_NUMBER: builtins.int
    TEXT_FIELD_NUMBER: builtins.int
    START_TIME_FIELD_NUMBER: builtins.int
    END_TIME_FIELD_NUMBER: builtins.int
    SEGMENT_IDS_FIELD_NUMBER: builtins.int
    CREATED_AT_FIELD_NUMBER: builtins.int
    id: builtins.str
    """Unique annotation identifier"""
    meeting_id: builtins.str
    """Meeting this annotation belongs to"""
    annotation_type: Global___AnnotationType.ValueType
    """Type of annotation"""
    text: builtins.str
    """Annotation text"""
    start_time: builtins.float
    """Start time relative to meeting start (seconds)"""
    end_time: builtins.float
    """End time relative to meeting start (seconds)"""
    created_at: builtins.float
    """Creation timestamp (Unix epoch seconds)"""
    @property
    def segment_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """Linked segment IDs (evidence linking)"""

    def __init__(
        self,
        *,
        id: builtins.str = ...,
        meeting_id: builtins.str = ...,
        annotation_type: Global___AnnotationType.ValueType = ...,
        text: builtins.str = ...,
        start_time: builtins.float = ...,
        end_time: builtins.float = ...,
        segment_ids: collections.abc.Iterable[builtins.int] | None = ...,
        created_at: builtins.float = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["annotation_type", b"annotation_type", "created_at", b"created_at", "end_time", b"end_time", "id", b"id", "meeting_id", b"meeting_id", "segment_ids", b"segment_ids", "start_time", b"start_time", "text", b"text"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___Annotation: typing_extensions.TypeAlias = Annotation

@typing.final
class AddAnnotationRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETING_ID_FIELD_NUMBER: builtins.int
    ANNOTATION_TYPE_FIELD_NUMBER: builtins.int
    TEXT_FIELD_NUMBER: builtins.int
    START_TIME_FIELD_NUMBER: builtins.int
    END_TIME_FIELD_NUMBER: builtins.int
    SEGMENT_IDS_FIELD_NUMBER: builtins.int
    meeting_id: builtins.str
    """Meeting ID to add annotation to"""
    annotation_type: Global___AnnotationType.ValueType
    """Type of annotation"""
    text: builtins.str
    """Annotation text"""
    start_time: builtins.float
    """Start time relative to meeting start (seconds)"""
    end_time: builtins.float
    """End time relative to meeting start (seconds)"""
    @property
    def segment_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """Optional linked segment IDs"""

    def __init__(
        self,
        *,
        meeting_id: builtins.str = ...,
        annotation_type: Global___AnnotationType.ValueType = ...,
        text: builtins.str = ...,
        start_time: builtins.float = ...,
        end_time: builtins.float = ...,
        segment_ids: collections.abc.Iterable[builtins.int] | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["annotation_type", b"annotation_type", "end_time", b"end_time", "meeting_id", b"meeting_id", "segment_ids", b"segment_ids", "start_time", b"start_time", "text", b"text"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___AddAnnotationRequest: typing_extensions.TypeAlias = AddAnnotationRequest

@typing.final
class GetAnnotationRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ANNOTATION_ID_FIELD_NUMBER: builtins.int
    annotation_id: builtins.str
    def __init__(
        self,
        *,
        annotation_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["annotation_id", b"annotation_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetAnnotationRequest: typing_extensions.TypeAlias = GetAnnotationRequest

@typing.final
class ListAnnotationsRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETING_ID_FIELD_NUMBER: builtins.int
    START_TIME_FIELD_NUMBER: builtins.int
    END_TIME_FIELD_NUMBER: builtins.int
    meeting_id: builtins.str
    """Meeting ID to list annotations for"""
    start_time: builtins.float
    """Optional time range filter"""
    end_time: builtins.float
    def __init__(
        self,
        *,
        meeting_id: builtins.str = ...,
        start_time: builtins.float = ...,
        end_time: builtins.float = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["end_time", b"end_time", "meeting_id", b"meeting_id", "start_time", b"start_time"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListAnnotationsRequest: typing_extensions.TypeAlias = ListAnnotationsRequest

@typing.final
class ListAnnotationsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ANNOTATIONS_FIELD_NUMBER: builtins.int
    @property
    def annotations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___Annotation]: ...
    def __init__(
        self,
        *,
        annotations: collections.abc.Iterable[Global___Annotation] | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["annotations", b"annotations"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListAnnotationsResponse: typing_extensions.TypeAlias = ListAnnotationsResponse

@typing.final
class UpdateAnnotationRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ANNOTATION_ID_FIELD_NUMBER: builtins.int
    ANNOTATION_TYPE_FIELD_NUMBER: builtins.int
    TEXT_FIELD_NUMBER: builtins.int
    START_TIME_FIELD_NUMBER: builtins.int
    END_TIME_FIELD_NUMBER: builtins.int
    SEGMENT_IDS_FIELD_NUMBER: builtins.int
    annotation_id: builtins.str
    """Annotation ID to update"""
    annotation_type: Global___AnnotationType.ValueType
    """Updated type (optional, keeps existing if not set)"""
    text: builtins.str
    """Updated text (optional, keeps existing if empty)"""
    start_time: builtins.float
    """Updated start time (optional, keeps existing if 0)"""
    end_time: builtins.float
    """Updated end time (optional, keeps existing if 0)"""
    @property
    def segment_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """Updated segment IDs (replaces existing)"""

    def __init__(
        self,
        *,
        annotation_id: builtins.str = ...,
        annotation_type: Global___AnnotationType.ValueType = ...,
        text: builtins.str = ...,
        start_time: builtins.float = ...,
        end_time: builtins.float = ...,
        segment_ids: collections.abc.Iterable[builtins.int] | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["annotation_id", b"annotation_id", "annotation_type", b"annotation_type", "end_time", b"end_time", "segment_ids", b"segment_ids", "start_time", b"start_time", "text", b"text"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___UpdateAnnotationRequest: typing_extensions.TypeAlias = UpdateAnnotationRequest

@typing.final
class DeleteAnnotationRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ANNOTATION_ID_FIELD_NUMBER: builtins.int
    annotation_id: builtins.str
    def __init__(
        self,
        *,
        annotation_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["annotation_id", b"annotation_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DeleteAnnotationRequest: typing_extensions.TypeAlias = DeleteAnnotationRequest

@typing.final
class DeleteAnnotationResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SUCCESS_FIELD_NUMBER: builtins.int
    success: builtins.bool
    def __init__(
        self,
        *,
        success: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["success", b"success"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DeleteAnnotationResponse: typing_extensions.TypeAlias = DeleteAnnotationResponse

@typing.final
class ExportTranscriptRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETING_ID_FIELD_NUMBER: builtins.int
    FORMAT_FIELD_NUMBER: builtins.int
    meeting_id: builtins.str
    """Meeting ID to export"""
    format: Global___ExportFormat.ValueType
    """Export format"""
    def __init__(
        self,
        *,
        meeting_id: builtins.str = ...,
        format: Global___ExportFormat.ValueType = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["format", b"format", "meeting_id", b"meeting_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ExportTranscriptRequest: typing_extensions.TypeAlias = ExportTranscriptRequest

@typing.final
class ExportTranscriptResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CONTENT_FIELD_NUMBER: builtins.int
    FORMAT_NAME_FIELD_NUMBER: builtins.int
    FILE_EXTENSION_FIELD_NUMBER: builtins.int
    content: builtins.str
    """Exported content"""
    format_name: builtins.str
    """Format name"""
    file_extension: builtins.str
    """Suggested file extension"""
    def __init__(
        self,
        *,
        content: builtins.str = ...,
        format_name: builtins.str = ...,
        file_extension: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["content", b"content", "file_extension", b"file_extension", "format_name", b"format_name"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ExportTranscriptResponse: typing_extensions.TypeAlias = ExportTranscriptResponse

@typing.final
class RefineSpeakerDiarizationRequest(google.protobuf.message.Message):
    """=============================================================================
    Speaker Diarization Messages
    =============================================================================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETING_ID_FIELD_NUMBER: builtins.int
    NUM_SPEAKERS_FIELD_NUMBER: builtins.int
    meeting_id: builtins.str
    """Meeting ID to run diarization on"""
    num_speakers: builtins.int
    """Optional known number of speakers (auto-detect if not set or 0)"""
    def __init__(
        self,
        *,
        meeting_id: builtins.str = ...,
        num_speakers: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["meeting_id", b"meeting_id", "num_speakers", b"num_speakers"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___RefineSpeakerDiarizationRequest: typing_extensions.TypeAlias = RefineSpeakerDiarizationRequest

@typing.final
class RefineSpeakerDiarizationResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SEGMENTS_UPDATED_FIELD_NUMBER: builtins.int
    SPEAKER_IDS_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    JOB_ID_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    segments_updated: builtins.int
    """Number of segments updated with speaker labels"""
    error_message: builtins.str
    """Error message if diarization failed"""
    job_id: builtins.str
    """Background job identifier (empty if request failed)"""
    status: Global___JobStatus.ValueType
    """Current job status"""
    @property
    def speaker_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Distinct speaker IDs found"""

    def __init__(
        self,
        *,
        segments_updated: builtins.int = ...,
        speaker_ids: collections.abc.Iterable[builtins.str] | None = ...,
        error_message: builtins.str = ...,
        job_id: builtins.str = ...,
        status: Global___JobStatus.ValueType = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["error_message", b"error_message", "job_id", b"job_id", "segments_updated", b"segments_updated", "speaker_ids", b"speaker_ids", "status", b"status"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___RefineSpeakerDiarizationResponse: typing_extensions.TypeAlias = RefineSpeakerDiarizationResponse

@typing.final
class RenameSpeakerRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETING_ID_FIELD_NUMBER: builtins.int
    OLD_SPEAKER_ID_FIELD_NUMBER: builtins.int
    NEW_SPEAKER_NAME_FIELD_NUMBER: builtins.int
    meeting_id: builtins.str
    """Meeting ID"""
    old_speaker_id: builtins.str
    """Original speaker ID (e.g., "SPEAKER_00")"""
    new_speaker_name: builtins.str
    """New speaker name (e.g., "Alice")"""
    def __init__(
        self,
        *,
        meeting_id: builtins.str = ...,
        old_speaker_id: builtins.str = ...,
        new_speaker_name: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["meeting_id", b"meeting_id", "new_speaker_name", b"new_speaker_name", "old_speaker_id", b"old_speaker_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___RenameSpeakerRequest: typing_extensions.TypeAlias = RenameSpeakerRequest

@typing.final
class RenameSpeakerResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SEGMENTS_UPDATED_FIELD_NUMBER: builtins.int
    SUCCESS_FIELD_NUMBER: builtins.int
    segments_updated: builtins.int
    """Number of segments updated"""
    success: builtins.bool
    """Success flag"""
    def __init__(
        self,
        *,
        segments_updated: builtins.int = ...,
        success: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["segments_updated", b"segments_updated", "success", b"success"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___RenameSpeakerResponse: typing_extensions.TypeAlias = RenameSpeakerResponse

@typing.final
class GetDiarizationJobStatusRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    JOB_ID_FIELD_NUMBER: builtins.int
    job_id: builtins.str
    """Job ID returned by RefineSpeakerDiarization"""
    def __init__(
        self,
        *,
        job_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["job_id", b"job_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetDiarizationJobStatusRequest: typing_extensions.TypeAlias = GetDiarizationJobStatusRequest

@typing.final
class DiarizationJobStatus(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    JOB_ID_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    SEGMENTS_UPDATED_FIELD_NUMBER: builtins.int
    SPEAKER_IDS_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    PROGRESS_PERCENT_FIELD_NUMBER: builtins.int
    job_id: builtins.str
    """Job ID"""
    status: Global___JobStatus.ValueType
    """Current status"""
    segments_updated: builtins.int
    """Number of segments updated (when completed)"""
    error_message: builtins.str
    """Error message if failed"""
    progress_percent: builtins.float
    """Progress percentage (0.0-100.0)"""
    @property
    def speaker_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Distinct speaker IDs found (when completed)"""

    def __init__(
        self,
        *,
        job_id: builtins.str = ...,
        status: Global___JobStatus.ValueType = ...,
        segments_updated: builtins.int = ...,
        speaker_ids: collections.abc.Iterable[builtins.str] | None = ...,
        error_message: builtins.str = ...,
        progress_percent: builtins.float = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["error_message", b"error_message", "job_id", b"job_id", "progress_percent", b"progress_percent", "segments_updated", b"segments_updated", "speaker_ids", b"speaker_ids", "status", b"status"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DiarizationJobStatus: typing_extensions.TypeAlias = DiarizationJobStatus

@typing.final
class CancelDiarizationJobRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    JOB_ID_FIELD_NUMBER: builtins.int
    job_id: builtins.str
    """Job ID to cancel"""
    def __init__(
        self,
        *,
        job_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["job_id", b"job_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___CancelDiarizationJobRequest: typing_extensions.TypeAlias = CancelDiarizationJobRequest

@typing.final
class CancelDiarizationJobResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SUCCESS_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    success: builtins.bool
    """Whether cancellation succeeded"""
    error_message: builtins.str
    """Error message if failed"""
    status: Global___JobStatus.ValueType
    """Final job status"""
    def __init__(
        self,
        *,
        success: builtins.bool = ...,
        error_message: builtins.str = ...,
        status: Global___JobStatus.ValueType = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["error_message", b"error_message", "status", b"status", "success", b"success"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___CancelDiarizationJobResponse: typing_extensions.TypeAlias = CancelDiarizationJobResponse

@typing.final
class GetActiveDiarizationJobsRequest(google.protobuf.message.Message):
    """Empty - returns all active jobs for the current user/session"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

Global___GetActiveDiarizationJobsRequest: typing_extensions.TypeAlias = GetActiveDiarizationJobsRequest

@typing.final
class GetActiveDiarizationJobsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    JOBS_FIELD_NUMBER: builtins.int
    @property
    def jobs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___DiarizationJobStatus]:
        """List of active (QUEUED or RUNNING) diarization jobs"""

    def __init__(
        self,
        *,
        jobs: collections.abc.Iterable[Global___DiarizationJobStatus] | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["jobs", b"jobs"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetActiveDiarizationJobsResponse: typing_extensions.TypeAlias = GetActiveDiarizationJobsResponse

@typing.final
class ExtractEntitiesRequest(google.protobuf.message.Message):
    """=============================================================================
    Named Entity Extraction Messages (Sprint 4)
    =============================================================================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETING_ID_FIELD_NUMBER: builtins.int
    FORCE_REFRESH_FIELD_NUMBER: builtins.int
    meeting_id: builtins.str
    """Meeting ID to extract entities from"""
    force_refresh: builtins.bool
    """Force re-extraction even if entities exist"""
    def __init__(
        self,
        *,
        meeting_id: builtins.str = ...,
        force_refresh: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["force_refresh", b"force_refresh", "meeting_id", b"meeting_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ExtractEntitiesRequest: typing_extensions.TypeAlias = ExtractEntitiesRequest

@typing.final
class ExtractedEntity(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    TEXT_FIELD_NUMBER: builtins.int
    CATEGORY_FIELD_NUMBER: builtins.int
    SEGMENT_IDS_FIELD_NUMBER: builtins.int
    CONFIDENCE_FIELD_NUMBER: builtins.int
    IS_PINNED_FIELD_NUMBER: builtins.int
    id: builtins.str
    """Unique entity identifier"""
    text: builtins.str
    """Entity text as it appears in transcript"""
    category: builtins.str
    """Category: person, company, product, technical, acronym, location, date, other"""
    confidence: builtins.float
    """Extraction confidence (0.0-1.0)"""
    is_pinned: builtins.bool
    """User-confirmed (pinned) entity"""
    @property
    def segment_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """Segment IDs where this entity appears"""

    def __init__(
        self,
        *,
        id: builtins.str = ...,
        text: builtins.str = ...,
        category: builtins.str = ...,
        segment_ids: collections.abc.Iterable[builtins.int] | None = ...,
        confidence: builtins.float = ...,
        is_pinned: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["category", b"category", "confidence", b"confidence", "id", b"id", "is_pinned", b"is_pinned", "segment_ids", b"segment_ids", "text", b"text"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ExtractedEntity: typing_extensions.TypeAlias = ExtractedEntity

@typing.final
class ExtractEntitiesResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ENTITIES_FIELD_NUMBER: builtins.int
    TOTAL_COUNT_FIELD_NUMBER: builtins.int
    CACHED_FIELD_NUMBER: builtins.int
    total_count: builtins.int
    """Total entity count"""
    cached: builtins.bool
    """True if returning cached results"""
    @property
    def entities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___ExtractedEntity]:
        """Extracted entities"""

    def __init__(
        self,
        *,
        entities: collections.abc.Iterable[Global___ExtractedEntity] | None = ...,
        total_count: builtins.int = ...,
        cached: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["cached", b"cached", "entities", b"entities", "total_count", b"total_count"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ExtractEntitiesResponse: typing_extensions.TypeAlias = ExtractEntitiesResponse

@typing.final
class UpdateEntityRequest(google.protobuf.message.Message):
    """Entity mutation messages (Sprint 8)"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETING_ID_FIELD_NUMBER: builtins.int
    ENTITY_ID_FIELD_NUMBER: builtins.int
    TEXT_FIELD_NUMBER: builtins.int
    CATEGORY_FIELD_NUMBER: builtins.int
    meeting_id: builtins.str
    """Meeting ID containing the entity"""
    entity_id: builtins.str
    """Entity ID to update"""
    text: builtins.str
    """New text value (optional, empty = no change)"""
    category: builtins.str
    """New category value (optional, empty = no change)"""
    def __init__(
        self,
        *,
        meeting_id: builtins.str = ...,
        entity_id: builtins.str = ...,
        text: builtins.str = ...,
        category: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["category", b"category", "entity_id", b"entity_id", "meeting_id", b"meeting_id", "text", b"text"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___UpdateEntityRequest: typing_extensions.TypeAlias = UpdateEntityRequest

@typing.final
class UpdateEntityResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ENTITY_FIELD_NUMBER: builtins.int
    @property
    def entity(self) -> Global___ExtractedEntity:
        """Updated entity"""

    def __init__(
        self,
        *,
        entity: Global___ExtractedEntity | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["entity", b"entity"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["entity", b"entity"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___UpdateEntityResponse: typing_extensions.TypeAlias = UpdateEntityResponse

@typing.final
class DeleteEntityRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEETING_ID_FIELD_NUMBER: builtins.int
    ENTITY_ID_FIELD_NUMBER: builtins.int
    meeting_id: builtins.str
    """Meeting ID containing the entity"""
    entity_id: builtins.str
    """Entity ID to delete"""
    def __init__(
        self,
        *,
        meeting_id: builtins.str = ...,
        entity_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["entity_id", b"entity_id", "meeting_id", b"meeting_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DeleteEntityRequest: typing_extensions.TypeAlias = DeleteEntityRequest

@typing.final
class DeleteEntityResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SUCCESS_FIELD_NUMBER: builtins.int
    success: builtins.bool
    """True if entity was deleted"""
    def __init__(
        self,
        *,
        success: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["success", b"success"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DeleteEntityResponse: typing_extensions.TypeAlias = DeleteEntityResponse

@typing.final
class CalendarEvent(google.protobuf.message.Message):
    """=============================================================================
    Calendar Integration Messages (Sprint 5)
    =============================================================================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    TITLE_FIELD_NUMBER: builtins.int
    START_TIME_FIELD_NUMBER: builtins.int
    END_TIME_FIELD_NUMBER: builtins.int
    ATTENDEES_FIELD_NUMBER: builtins.int
    LOCATION_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    MEETING_URL_FIELD_NUMBER: builtins.int
    IS_RECURRING_FIELD_NUMBER: builtins.int
    PROVIDER_FIELD_NUMBER: builtins.int
    id: builtins.str
    """Calendar event identifier"""
    title: builtins.str
    """Event title"""
    start_time: builtins.int
    """Start time (Unix timestamp seconds)"""
    end_time: builtins.int
    """End time (Unix timestamp seconds)"""
    location: builtins.str
    """Event location"""
    description: builtins.str
    """Event description"""
    meeting_url: builtins.str
    """Meeting URL (Zoom, Meet, Teams, etc.)"""
    is_recurring: builtins.bool
    """Whether event is recurring"""
    provider: builtins.str
    """Calendar provider: google, outlook"""
    @property
    def attendees(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Attendee email addresses"""

    def __init__(
        self,
        *,
        id: builtins.str = ...,
        title: builtins.str = ...,
        start_time: builtins.int = ...,
        end_time: builtins.int = ...,
        attendees: collections.abc.Iterable[builtins.str] | None = ...,
        location: builtins.str = ...,
        description: builtins.str = ...,
        meeting_url: builtins.str = ...,
        is_recurring: builtins.bool = ...,
        provider: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["attendees", b"attendees", "description", b"description", "end_time", b"end_time", "id", b"id", "is_recurring", b"is_recurring", "location", b"location", "meeting_url", b"meeting_url", "provider", b"provider", "start_time", b"start_time", "title", b"title"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___CalendarEvent: typing_extensions.TypeAlias = CalendarEvent

@typing.final
class ListCalendarEventsRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    HOURS_AHEAD_FIELD_NUMBER: builtins.int
    LIMIT_FIELD_NUMBER: builtins.int
    PROVIDER_FIELD_NUMBER: builtins.int
    hours_ahead: builtins.int
    """How far ahead to look in hours (default: 24)"""
    limit: builtins.int
    """Maximum events to return (default: 10)"""
    provider: builtins.str
    """Optional: specific provider name"""
    def __init__(
        self,
        *,
        hours_ahead: builtins.int = ...,
        limit: builtins.int = ...,
        provider: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["hours_ahead", b"hours_ahead", "limit", b"limit", "provider", b"provider"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListCalendarEventsRequest: typing_extensions.TypeAlias = ListCalendarEventsRequest

@typing.final
class ListCalendarEventsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    EVENTS_FIELD_NUMBER: builtins.int
    TOTAL_COUNT_FIELD_NUMBER: builtins.int
    total_count: builtins.int
    """Total event count"""
    @property
    def events(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___CalendarEvent]:
        """Upcoming calendar events"""

    def __init__(
        self,
        *,
        events: collections.abc.Iterable[Global___CalendarEvent] | None = ...,
        total_count: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["events", b"events", "total_count", b"total_count"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListCalendarEventsResponse: typing_extensions.TypeAlias = ListCalendarEventsResponse

@typing.final
class GetCalendarProvidersRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

Global___GetCalendarProvidersRequest: typing_extensions.TypeAlias = GetCalendarProvidersRequest

@typing.final
class CalendarProvider(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NAME_FIELD_NUMBER: builtins.int
    IS_AUTHENTICATED_FIELD_NUMBER: builtins.int
    DISPLAY_NAME_FIELD_NUMBER: builtins.int
    name: builtins.str
    """Provider name: google, outlook"""
    is_authenticated: builtins.bool
    """Whether provider is authenticated"""
    display_name: builtins.str
    """Display name: "Google Calendar", "Microsoft Outlook" """
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        is_authenticated: builtins.bool = ...,
        display_name: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["display_name", b"display_name", "is_authenticated", b"is_authenticated", "name", b"name"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___CalendarProvider: typing_extensions.TypeAlias = CalendarProvider

@typing.final
class GetCalendarProvidersResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROVIDERS_FIELD_NUMBER: builtins.int
    @property
    def providers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___CalendarProvider]:
        """Available calendar providers"""

    def __init__(
        self,
        *,
        providers: collections.abc.Iterable[Global___CalendarProvider] | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["providers", b"providers"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetCalendarProvidersResponse: typing_extensions.TypeAlias = GetCalendarProvidersResponse

@typing.final
class InitiateOAuthRequest(google.protobuf.message.Message):
    """=============================================================================
    OAuth Integration Messages (generic for calendar, email, PKM, etc.)
    =============================================================================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROVIDER_FIELD_NUMBER: builtins.int
    REDIRECT_URI_FIELD_NUMBER: builtins.int
    INTEGRATION_TYPE_FIELD_NUMBER: builtins.int
    provider: builtins.str
    """Provider to authenticate: google, outlook, notion, etc."""
    redirect_uri: builtins.str
    """Redirect URI for OAuth callback"""
    integration_type: builtins.str
    """Integration type: calendar, email, pkm, custom"""
    def __init__(
        self,
        *,
        provider: builtins.str = ...,
        redirect_uri: builtins.str = ...,
        integration_type: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["integration_type", b"integration_type", "provider", b"provider", "redirect_uri", b"redirect_uri"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___InitiateOAuthRequest: typing_extensions.TypeAlias = InitiateOAuthRequest

@typing.final
class InitiateOAuthResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    AUTH_URL_FIELD_NUMBER: builtins.int
    STATE_FIELD_NUMBER: builtins.int
    auth_url: builtins.str
    """Authorization URL to redirect user to"""
    state: builtins.str
    """CSRF state token for verification"""
    def __init__(
        self,
        *,
        auth_url: builtins.str = ...,
        state: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["auth_url", b"auth_url", "state", b"state"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___InitiateOAuthResponse: typing_extensions.TypeAlias = InitiateOAuthResponse

@typing.final
class CompleteOAuthRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROVIDER_FIELD_NUMBER: builtins.int
    CODE_FIELD_NUMBER: builtins.int
    STATE_FIELD_NUMBER: builtins.int
    provider: builtins.str
    """Provider being authenticated"""
    code: builtins.str
    """Authorization code from OAuth callback"""
    state: builtins.str
    """CSRF state token for verification"""
    def __init__(
        self,
        *,
        provider: builtins.str = ...,
        code: builtins.str = ...,
        state: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["code", b"code", "provider", b"provider", "state", b"state"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___CompleteOAuthRequest: typing_extensions.TypeAlias = CompleteOAuthRequest

@typing.final
class CompleteOAuthResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SUCCESS_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    PROVIDER_EMAIL_FIELD_NUMBER: builtins.int
    success: builtins.bool
    """Whether authentication succeeded"""
    error_message: builtins.str
    """Error message if failed"""
    provider_email: builtins.str
    """Email of authenticated account"""
    def __init__(
        self,
        *,
        success: builtins.bool = ...,
        error_message: builtins.str = ...,
        provider_email: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["error_message", b"error_message", "provider_email", b"provider_email", "success", b"success"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___CompleteOAuthResponse: typing_extensions.TypeAlias = CompleteOAuthResponse

@typing.final
class OAuthConnection(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROVIDER_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    EMAIL_FIELD_NUMBER: builtins.int
    EXPIRES_AT_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    INTEGRATION_TYPE_FIELD_NUMBER: builtins.int
    provider: builtins.str
    """Provider name: google, outlook, notion"""
    status: builtins.str
    """Connection status: disconnected, connected, error"""
    email: builtins.str
    """Email of authenticated account"""
    expires_at: builtins.int
    """Token expiration timestamp (Unix epoch seconds)"""
    error_message: builtins.str
    """Error message if status is error"""
    integration_type: builtins.str
    """Integration type: calendar, email, pkm, custom"""
    def __init__(
        self,
        *,
        provider: builtins.str = ...,
        status: builtins.str = ...,
        email: builtins.str = ...,
        expires_at: builtins.int = ...,
        error_message: builtins.str = ...,
        integration_type: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["email", b"email", "error_message", b"error_message", "expires_at", b"expires_at", "integration_type", b"integration_type", "provider", b"provider", "status", b"status"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___OAuthConnection: typing_extensions.TypeAlias = OAuthConnection

@typing.final
class GetOAuthConnectionStatusRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROVIDER_FIELD_NUMBER: builtins.int
    INTEGRATION_TYPE_FIELD_NUMBER: builtins.int
    provider: builtins.str
    """Provider to check: google, outlook, notion"""
    integration_type: builtins.str
    """Optional integration type filter"""
    def __init__(
        self,
        *,
        provider: builtins.str = ...,
        integration_type: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["integration_type", b"integration_type", "provider", b"provider"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetOAuthConnectionStatusRequest: typing_extensions.TypeAlias = GetOAuthConnectionStatusRequest

@typing.final
class GetOAuthConnectionStatusResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CONNECTION_FIELD_NUMBER: builtins.int
    @property
    def connection(self) -> Global___OAuthConnection:
        """Connection details"""

    def __init__(
        self,
        *,
        connection: Global___OAuthConnection | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["connection", b"connection"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["connection", b"connection"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetOAuthConnectionStatusResponse: typing_extensions.TypeAlias = GetOAuthConnectionStatusResponse

@typing.final
class DisconnectOAuthRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROVIDER_FIELD_NUMBER: builtins.int
    INTEGRATION_TYPE_FIELD_NUMBER: builtins.int
    provider: builtins.str
    """Provider to disconnect"""
    integration_type: builtins.str
    """Optional integration type"""
    def __init__(
        self,
        *,
        provider: builtins.str = ...,
        integration_type: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["integration_type", b"integration_type", "provider", b"provider"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DisconnectOAuthRequest: typing_extensions.TypeAlias = DisconnectOAuthRequest

@typing.final
class DisconnectOAuthResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SUCCESS_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    success: builtins.bool
    """Whether disconnection succeeded"""
    error_message: builtins.str
    """Error message if failed"""
    def __init__(
        self,
        *,
        success: builtins.bool = ...,
        error_message: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["error_message", b"error_message", "success", b"success"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DisconnectOAuthResponse: typing_extensions.TypeAlias = DisconnectOAuthResponse

@typing.final
class RegisterWebhookRequest(google.protobuf.message.Message):
    """=============================================================================
    Webhook Management Messages (Sprint 6)
    =============================================================================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    WORKSPACE_ID_FIELD_NUMBER: builtins.int
    URL_FIELD_NUMBER: builtins.int
    EVENTS_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    SECRET_FIELD_NUMBER: builtins.int
    TIMEOUT_MS_FIELD_NUMBER: builtins.int
    MAX_RETRIES_FIELD_NUMBER: builtins.int
    workspace_id: builtins.str
    """Workspace this webhook belongs to"""
    url: builtins.str
    """Target URL for webhook delivery"""
    name: builtins.str
    """Human-readable webhook name"""
    secret: builtins.str
    """Optional HMAC signing secret"""
    timeout_ms: builtins.int
    """Request timeout in milliseconds (default: 10000)"""
    max_retries: builtins.int
    """Maximum retry attempts (default: 3)"""
    @property
    def events(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Events to subscribe to: meeting.completed, summary.generated, recording.started, recording.stopped"""

    def __init__(
        self,
        *,
        workspace_id: builtins.str = ...,
        url: builtins.str = ...,
        events: collections.abc.Iterable[builtins.str] | None = ...,
        name: builtins.str = ...,
        secret: builtins.str = ...,
        timeout_ms: builtins.int = ...,
        max_retries: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["events", b"events", "max_retries", b"max_retries", "name", b"name", "secret", b"secret", "timeout_ms", b"timeout_ms", "url", b"url", "workspace_id", b"workspace_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___RegisterWebhookRequest: typing_extensions.TypeAlias = RegisterWebhookRequest

@typing.final
class WebhookConfigProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    WORKSPACE_ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    URL_FIELD_NUMBER: builtins.int
    EVENTS_FIELD_NUMBER: builtins.int
    ENABLED_FIELD_NUMBER: builtins.int
    TIMEOUT_MS_FIELD_NUMBER: builtins.int
    MAX_RETRIES_FIELD_NUMBER: builtins.int
    CREATED_AT_FIELD_NUMBER: builtins.int
    UPDATED_AT_FIELD_NUMBER: builtins.int
    id: builtins.str
    """Unique webhook identifier"""
    workspace_id: builtins.str
    """Workspace this webhook belongs to"""
    name: builtins.str
    """Human-readable webhook name"""
    url: builtins.str
    """Target URL for webhook delivery"""
    enabled: builtins.bool
    """Whether webhook is enabled"""
    timeout_ms: builtins.int
    """Request timeout in milliseconds"""
    max_retries: builtins.int
    """Maximum retry attempts"""
    created_at: builtins.int
    """Creation timestamp (Unix epoch seconds)"""
    updated_at: builtins.int
    """Last update timestamp (Unix epoch seconds)"""
    @property
    def events(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Subscribed event types"""

    def __init__(
        self,
        *,
        id: builtins.str = ...,
        workspace_id: builtins.str = ...,
        name: builtins.str = ...,
        url: builtins.str = ...,
        events: collections.abc.Iterable[builtins.str] | None = ...,
        enabled: builtins.bool = ...,
        timeout_ms: builtins.int = ...,
        max_retries: builtins.int = ...,
        created_at: builtins.int = ...,
        updated_at: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["created_at", b"created_at", "enabled", b"enabled", "events", b"events", "id", b"id", "max_retries", b"max_retries", "name", b"name", "timeout_ms", b"timeout_ms", "updated_at", b"updated_at", "url", b"url", "workspace_id", b"workspace_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___WebhookConfigProto: typing_extensions.TypeAlias = WebhookConfigProto

@typing.final
class ListWebhooksRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ENABLED_ONLY_FIELD_NUMBER: builtins.int
    enabled_only: builtins.bool
    """Filter to only enabled webhooks"""
    def __init__(
        self,
        *,
        enabled_only: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["enabled_only", b"enabled_only"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListWebhooksRequest: typing_extensions.TypeAlias = ListWebhooksRequest

@typing.final
class ListWebhooksResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    WEBHOOKS_FIELD_NUMBER: builtins.int
    TOTAL_COUNT_FIELD_NUMBER: builtins.int
    total_count: builtins.int
    """Total webhook count"""
    @property
    def webhooks(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___WebhookConfigProto]:
        """Registered webhooks"""

    def __init__(
        self,
        *,
        webhooks: collections.abc.Iterable[Global___WebhookConfigProto] | None = ...,
        total_count: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["total_count", b"total_count", "webhooks", b"webhooks"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListWebhooksResponse: typing_extensions.TypeAlias = ListWebhooksResponse

@typing.final
class UpdateWebhookRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    WEBHOOK_ID_FIELD_NUMBER: builtins.int
    URL_FIELD_NUMBER: builtins.int
    EVENTS_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    SECRET_FIELD_NUMBER: builtins.int
    ENABLED_FIELD_NUMBER: builtins.int
    TIMEOUT_MS_FIELD_NUMBER: builtins.int
    MAX_RETRIES_FIELD_NUMBER: builtins.int
    webhook_id: builtins.str
    """Webhook ID to update"""
    url: builtins.str
    """Updated URL (optional)"""
    name: builtins.str
    """Updated name (optional)"""
    secret: builtins.str
    """Updated secret (optional)"""
    enabled: builtins.bool
    """Updated enabled status (optional)"""
    timeout_ms: builtins.int
    """Updated timeout in milliseconds (optional)"""
    max_retries: builtins.int
    """Updated max retries (optional)"""
    @property
    def events(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Updated events (replaces existing)"""

    def __init__(
        self,
        *,
        webhook_id: builtins.str = ...,
        url: builtins.str | None = ...,
        events: collections.abc.Iterable[builtins.str] | None = ...,
        name: builtins.str | None = ...,
        secret: builtins.str | None = ...,
        enabled: builtins.bool | None = ...,
        timeout_ms: builtins.int | None = ...,
        max_retries: builtins.int | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_enabled", b"_enabled", "_max_retries", b"_max_retries", "_name", b"_name", "_secret", b"_secret", "_timeout_ms", b"_timeout_ms", "_url", b"_url", "enabled", b"enabled", "max_retries", b"max_retries", "name", b"name", "secret", b"secret", "timeout_ms", b"timeout_ms", "url", b"url"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_enabled", b"_enabled", "_max_retries", b"_max_retries", "_name", b"_name", "_secret", b"_secret", "_timeout_ms", b"_timeout_ms", "_url", b"_url", "enabled", b"enabled", "events", b"events", "max_retries", b"max_retries", "name", b"name", "secret", b"secret", "timeout_ms", b"timeout_ms", "url", b"url", "webhook_id", b"webhook_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__enabled: typing_extensions.TypeAlias = typing.Literal["enabled"]
    _WhichOneofArgType__enabled: typing_extensions.TypeAlias = typing.Literal["_enabled", b"_enabled"]
    _WhichOneofReturnType__max_retries: typing_extensions.TypeAlias = typing.Literal["max_retries"]
    _WhichOneofArgType__max_retries: typing_extensions.TypeAlias = typing.Literal["_max_retries", b"_max_retries"]
    _WhichOneofReturnType__name: typing_extensions.TypeAlias = typing.Literal["name"]
    _WhichOneofArgType__name: typing_extensions.TypeAlias = typing.Literal["_name", b"_name"]
    _WhichOneofReturnType__secret: typing_extensions.TypeAlias = typing.Literal["secret"]
    _WhichOneofArgType__secret: typing_extensions.TypeAlias = typing.Literal["_secret", b"_secret"]
    _WhichOneofReturnType__timeout_ms: typing_extensions.TypeAlias = typing.Literal["timeout_ms"]
    _WhichOneofArgType__timeout_ms: typing_extensions.TypeAlias = typing.Literal["_timeout_ms", b"_timeout_ms"]
    _WhichOneofReturnType__url: typing_extensions.TypeAlias = typing.Literal["url"]
    _WhichOneofArgType__url: typing_extensions.TypeAlias = typing.Literal["_url", b"_url"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__enabled) -> _WhichOneofReturnType__enabled | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__max_retries) -> _WhichOneofReturnType__max_retries | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__name) -> _WhichOneofReturnType__name | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__secret) -> _WhichOneofReturnType__secret | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__timeout_ms) -> _WhichOneofReturnType__timeout_ms | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__url) -> _WhichOneofReturnType__url | None: ...

Global___UpdateWebhookRequest: typing_extensions.TypeAlias = UpdateWebhookRequest

@typing.final
class DeleteWebhookRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    WEBHOOK_ID_FIELD_NUMBER: builtins.int
    webhook_id: builtins.str
    """Webhook ID to delete"""
    def __init__(
        self,
        *,
        webhook_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["webhook_id", b"webhook_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DeleteWebhookRequest: typing_extensions.TypeAlias = DeleteWebhookRequest

@typing.final
class DeleteWebhookResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SUCCESS_FIELD_NUMBER: builtins.int
    success: builtins.bool
    """Whether deletion succeeded"""
    def __init__(
        self,
        *,
        success: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["success", b"success"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DeleteWebhookResponse: typing_extensions.TypeAlias = DeleteWebhookResponse

@typing.final
class WebhookDeliveryProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    WEBHOOK_ID_FIELD_NUMBER: builtins.int
    EVENT_TYPE_FIELD_NUMBER: builtins.int
    STATUS_CODE_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    ATTEMPT_COUNT_FIELD_NUMBER: builtins.int
    DURATION_MS_FIELD_NUMBER: builtins.int
    DELIVERED_AT_FIELD_NUMBER: builtins.int
    SUCCEEDED_FIELD_NUMBER: builtins.int
    id: builtins.str
    """Unique delivery identifier"""
    webhook_id: builtins.str
    """Webhook ID this delivery belongs to"""
    event_type: builtins.str
    """Event type that triggered this delivery"""
    status_code: builtins.int
    """HTTP status code (0 if no response)"""
    error_message: builtins.str
    """Error message if delivery failed"""
    attempt_count: builtins.int
    """Number of delivery attempts"""
    duration_ms: builtins.int
    """Request duration in milliseconds"""
    delivered_at: builtins.int
    """Delivery timestamp (Unix epoch seconds)"""
    succeeded: builtins.bool
    """Whether delivery succeeded"""
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        webhook_id: builtins.str = ...,
        event_type: builtins.str = ...,
        status_code: builtins.int = ...,
        error_message: builtins.str = ...,
        attempt_count: builtins.int = ...,
        duration_ms: builtins.int = ...,
        delivered_at: builtins.int = ...,
        succeeded: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["attempt_count", b"attempt_count", "delivered_at", b"delivered_at", "duration_ms", b"duration_ms", "error_message", b"error_message", "event_type", b"event_type", "id", b"id", "status_code", b"status_code", "succeeded", b"succeeded", "webhook_id", b"webhook_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___WebhookDeliveryProto: typing_extensions.TypeAlias = WebhookDeliveryProto

@typing.final
class GetWebhookDeliveriesRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    WEBHOOK_ID_FIELD_NUMBER: builtins.int
    LIMIT_FIELD_NUMBER: builtins.int
    webhook_id: builtins.str
    """Webhook ID to get deliveries for"""
    limit: builtins.int
    """Maximum deliveries to return (default: 50, max: 500)"""
    def __init__(
        self,
        *,
        webhook_id: builtins.str = ...,
        limit: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["limit", b"limit", "webhook_id", b"webhook_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetWebhookDeliveriesRequest: typing_extensions.TypeAlias = GetWebhookDeliveriesRequest

@typing.final
class GetWebhookDeliveriesResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DELIVERIES_FIELD_NUMBER: builtins.int
    TOTAL_COUNT_FIELD_NUMBER: builtins.int
    total_count: builtins.int
    """Total delivery count"""
    @property
    def deliveries(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___WebhookDeliveryProto]:
        """Recent webhook deliveries"""

    def __init__(
        self,
        *,
        deliveries: collections.abc.Iterable[Global___WebhookDeliveryProto] | None = ...,
        total_count: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["deliveries", b"deliveries", "total_count", b"total_count"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetWebhookDeliveriesResponse: typing_extensions.TypeAlias = GetWebhookDeliveriesResponse

@typing.final
class GrantCloudConsentRequest(google.protobuf.message.Message):
    """=============================================================================
    Cloud Consent Messages (Sprint 7)
    =============================================================================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

Global___GrantCloudConsentRequest: typing_extensions.TypeAlias = GrantCloudConsentRequest

@typing.final
class GrantCloudConsentResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

Global___GrantCloudConsentResponse: typing_extensions.TypeAlias = GrantCloudConsentResponse

@typing.final
class RevokeCloudConsentRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

Global___RevokeCloudConsentRequest: typing_extensions.TypeAlias = RevokeCloudConsentRequest

@typing.final
class RevokeCloudConsentResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

Global___RevokeCloudConsentResponse: typing_extensions.TypeAlias = RevokeCloudConsentResponse

@typing.final
class GetCloudConsentStatusRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

Global___GetCloudConsentStatusRequest: typing_extensions.TypeAlias = GetCloudConsentStatusRequest

@typing.final
class GetCloudConsentStatusResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CONSENT_GRANTED_FIELD_NUMBER: builtins.int
    consent_granted: builtins.bool
    """Whether cloud consent is currently granted"""
    def __init__(
        self,
        *,
        consent_granted: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["consent_granted", b"consent_granted"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetCloudConsentStatusResponse: typing_extensions.TypeAlias = GetCloudConsentStatusResponse

@typing.final
class GetPreferencesRequest(google.protobuf.message.Message):
    """=============================================================================
    User Preferences Sync Messages (Sprint 14)
    =============================================================================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    KEYS_FIELD_NUMBER: builtins.int
    @property
    def keys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Optional: filter to specific keys (empty = all)"""

    def __init__(
        self,
        *,
        keys: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["keys", b"keys"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetPreferencesRequest: typing_extensions.TypeAlias = GetPreferencesRequest

@typing.final
class GetPreferencesResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class PreferencesEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["key", b"key", "value", b"value"]
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    PREFERENCES_FIELD_NUMBER: builtins.int
    UPDATED_AT_FIELD_NUMBER: builtins.int
    ETAG_FIELD_NUMBER: builtins.int
    updated_at: builtins.float
    """Server-side last update timestamp (Unix epoch seconds)"""
    etag: builtins.str
    """ETag for optimistic concurrency control"""
    @property
    def preferences(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """All preference key-value pairs as JSON strings
        Key: preference key, Value: JSON-encoded value
        """

    def __init__(
        self,
        *,
        preferences: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        updated_at: builtins.float = ...,
        etag: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["etag", b"etag", "preferences", b"preferences", "updated_at", b"updated_at"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetPreferencesResponse: typing_extensions.TypeAlias = GetPreferencesResponse

@typing.final
class SetPreferencesRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class PreferencesEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["key", b"key", "value", b"value"]
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    PREFERENCES_FIELD_NUMBER: builtins.int
    IF_MATCH_FIELD_NUMBER: builtins.int
    CLIENT_UPDATED_AT_FIELD_NUMBER: builtins.int
    MERGE_FIELD_NUMBER: builtins.int
    if_match: builtins.str
    """Optional ETag for conflict detection (if-match)"""
    client_updated_at: builtins.float
    """Client-side last update timestamp for conflict resolution"""
    merge: builtins.bool
    """Merge mode: if true, only updates provided keys; if false, replaces all"""
    @property
    def preferences(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """Preferences to update as JSON strings
        Key: preference key, Value: JSON-encoded value
        """

    def __init__(
        self,
        *,
        preferences: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        if_match: builtins.str = ...,
        client_updated_at: builtins.float = ...,
        merge: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["client_updated_at", b"client_updated_at", "if_match", b"if_match", "merge", b"merge", "preferences", b"preferences"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___SetPreferencesRequest: typing_extensions.TypeAlias = SetPreferencesRequest

@typing.final
class SetPreferencesResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class ServerPreferencesEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["key", b"key", "value", b"value"]
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    SUCCESS_FIELD_NUMBER: builtins.int
    CONFLICT_FIELD_NUMBER: builtins.int
    SERVER_PREFERENCES_FIELD_NUMBER: builtins.int
    SERVER_UPDATED_AT_FIELD_NUMBER: builtins.int
    ETAG_FIELD_NUMBER: builtins.int
    CONFLICT_MESSAGE_FIELD_NUMBER: builtins.int
    success: builtins.bool
    """Whether the update succeeded"""
    conflict: builtins.bool
    """Whether a conflict was detected (client data was stale)"""
    server_updated_at: builtins.float
    """Server-side timestamp after update"""
    etag: builtins.str
    """New ETag after update"""
    conflict_message: builtins.str
    """Conflict details if conflict = true"""
    @property
    def server_preferences(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """Server preferences after update (or current state if conflict)"""

    def __init__(
        self,
        *,
        success: builtins.bool = ...,
        conflict: builtins.bool = ...,
        server_preferences: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        server_updated_at: builtins.float = ...,
        etag: builtins.str = ...,
        conflict_message: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["conflict", b"conflict", "conflict_message", b"conflict_message", "etag", b"etag", "server_preferences", b"server_preferences", "server_updated_at", b"server_updated_at", "success", b"success"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___SetPreferencesResponse: typing_extensions.TypeAlias = SetPreferencesResponse

@typing.final
class StartIntegrationSyncRequest(google.protobuf.message.Message):
    """=============================================================================
    Integration Sync Orchestration Messages (Sprint 9)
    =============================================================================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    INTEGRATION_ID_FIELD_NUMBER: builtins.int
    integration_id: builtins.str
    """Integration ID to sync"""
    def __init__(
        self,
        *,
        integration_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["integration_id", b"integration_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___StartIntegrationSyncRequest: typing_extensions.TypeAlias = StartIntegrationSyncRequest

@typing.final
class StartIntegrationSyncResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SYNC_RUN_ID_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    sync_run_id: builtins.str
    """Unique sync run identifier"""
    status: builtins.str
    """Initial status (always "running")"""
    def __init__(
        self,
        *,
        sync_run_id: builtins.str = ...,
        status: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["status", b"status", "sync_run_id", b"sync_run_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___StartIntegrationSyncResponse: typing_extensions.TypeAlias = StartIntegrationSyncResponse

@typing.final
class GetSyncStatusRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SYNC_RUN_ID_FIELD_NUMBER: builtins.int
    sync_run_id: builtins.str
    """Sync run ID to check"""
    def __init__(
        self,
        *,
        sync_run_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["sync_run_id", b"sync_run_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetSyncStatusRequest: typing_extensions.TypeAlias = GetSyncStatusRequest

@typing.final
class GetSyncStatusResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    STATUS_FIELD_NUMBER: builtins.int
    ITEMS_SYNCED_FIELD_NUMBER: builtins.int
    ITEMS_TOTAL_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    DURATION_MS_FIELD_NUMBER: builtins.int
    EXPIRES_AT_FIELD_NUMBER: builtins.int
    NOT_FOUND_REASON_FIELD_NUMBER: builtins.int
    status: builtins.str
    """Current status: "running", "success", "error" """
    items_synced: builtins.int
    """Number of items synced (so far or total)"""
    items_total: builtins.int
    """Total items to sync (if known)"""
    error_message: builtins.str
    """Error message if status is "error" """
    duration_ms: builtins.int
    """Duration in milliseconds (when completed)"""
    expires_at: builtins.str
    """When this sync run expires from cache (ISO 8601 timestamp)
    (Sprint GAP-002: State Synchronization)
    """
    not_found_reason: builtins.str
    """Reason for NOT_FOUND: "expired" or "never_existed"
    (Sprint GAP-002: State Synchronization)
    """
    def __init__(
        self,
        *,
        status: builtins.str = ...,
        items_synced: builtins.int = ...,
        items_total: builtins.int = ...,
        error_message: builtins.str = ...,
        duration_ms: builtins.int = ...,
        expires_at: builtins.str | None = ...,
        not_found_reason: builtins.str | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_expires_at", b"_expires_at", "_not_found_reason", b"_not_found_reason", "expires_at", b"expires_at", "not_found_reason", b"not_found_reason"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_expires_at", b"_expires_at", "_not_found_reason", b"_not_found_reason", "duration_ms", b"duration_ms", "error_message", b"error_message", "expires_at", b"expires_at", "items_synced", b"items_synced", "items_total", b"items_total", "not_found_reason", b"not_found_reason", "status", b"status"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__expires_at: typing_extensions.TypeAlias = typing.Literal["expires_at"]
    _WhichOneofArgType__expires_at: typing_extensions.TypeAlias = typing.Literal["_expires_at", b"_expires_at"]
    _WhichOneofReturnType__not_found_reason: typing_extensions.TypeAlias = typing.Literal["not_found_reason"]
    _WhichOneofArgType__not_found_reason: typing_extensions.TypeAlias = typing.Literal["_not_found_reason", b"_not_found_reason"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__expires_at) -> _WhichOneofReturnType__expires_at | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__not_found_reason) -> _WhichOneofReturnType__not_found_reason | None: ...

Global___GetSyncStatusResponse: typing_extensions.TypeAlias = GetSyncStatusResponse

@typing.final
class ListSyncHistoryRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    INTEGRATION_ID_FIELD_NUMBER: builtins.int
    LIMIT_FIELD_NUMBER: builtins.int
    OFFSET_FIELD_NUMBER: builtins.int
    integration_id: builtins.str
    """Integration ID to list history for"""
    limit: builtins.int
    """Maximum runs to return (default: 20, max: 100)"""
    offset: builtins.int
    """Pagination offset"""
    def __init__(
        self,
        *,
        integration_id: builtins.str = ...,
        limit: builtins.int = ...,
        offset: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["integration_id", b"integration_id", "limit", b"limit", "offset", b"offset"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListSyncHistoryRequest: typing_extensions.TypeAlias = ListSyncHistoryRequest

@typing.final
class ListSyncHistoryResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    RUNS_FIELD_NUMBER: builtins.int
    TOTAL_COUNT_FIELD_NUMBER: builtins.int
    total_count: builtins.int
    """Total count of sync runs"""
    @property
    def runs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___SyncRunProto]:
        """Sync runs (newest first)"""

    def __init__(
        self,
        *,
        runs: collections.abc.Iterable[Global___SyncRunProto] | None = ...,
        total_count: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["runs", b"runs", "total_count", b"total_count"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListSyncHistoryResponse: typing_extensions.TypeAlias = ListSyncHistoryResponse

@typing.final
class SyncRunProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    INTEGRATION_ID_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    ITEMS_SYNCED_FIELD_NUMBER: builtins.int
    ERROR_MESSAGE_FIELD_NUMBER: builtins.int
    DURATION_MS_FIELD_NUMBER: builtins.int
    STARTED_AT_FIELD_NUMBER: builtins.int
    COMPLETED_AT_FIELD_NUMBER: builtins.int
    id: builtins.str
    """Unique sync run identifier"""
    integration_id: builtins.str
    """Integration ID"""
    status: builtins.str
    """Status: "running", "success", "error" """
    items_synced: builtins.int
    """Number of items synced"""
    error_message: builtins.str
    """Error message if failed"""
    duration_ms: builtins.int
    """Duration in milliseconds"""
    started_at: builtins.str
    """Start timestamp (ISO 8601)"""
    completed_at: builtins.str
    """Completion timestamp (ISO 8601, empty if running)"""
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        integration_id: builtins.str = ...,
        status: builtins.str = ...,
        items_synced: builtins.int = ...,
        error_message: builtins.str = ...,
        duration_ms: builtins.int = ...,
        started_at: builtins.str = ...,
        completed_at: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["completed_at", b"completed_at", "duration_ms", b"duration_ms", "error_message", b"error_message", "id", b"id", "integration_id", b"integration_id", "items_synced", b"items_synced", "started_at", b"started_at", "status", b"status"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___SyncRunProto: typing_extensions.TypeAlias = SyncRunProto

@typing.final
class GetUserIntegrationsRequest(google.protobuf.message.Message):
    """=============================================================================
    Integration Cache Validation Messages (Sprint 18.1)
    =============================================================================

    Empty - uses identity context for user/workspace filtering
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

Global___GetUserIntegrationsRequest: typing_extensions.TypeAlias = GetUserIntegrationsRequest

@typing.final
class IntegrationInfo(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    WORKSPACE_ID_FIELD_NUMBER: builtins.int
    id: builtins.str
    """Unique integration identifier"""
    name: builtins.str
    """Display name (e.g., "Google Calendar")"""
    type: builtins.str
    """Integration type: "calendar", "pkm", "custom" """
    status: builtins.str
    """Connection status: "connected", "disconnected", "error", "pending" """
    workspace_id: builtins.str
    """Workspace ID that owns this integration"""
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        name: builtins.str = ...,
        type: builtins.str = ...,
        status: builtins.str = ...,
        workspace_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["id", b"id", "name", b"name", "status", b"status", "type", b"type", "workspace_id", b"workspace_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___IntegrationInfo: typing_extensions.TypeAlias = IntegrationInfo

@typing.final
class GetUserIntegrationsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    INTEGRATIONS_FIELD_NUMBER: builtins.int
    @property
    def integrations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___IntegrationInfo]:
        """List of integrations for the current user/workspace"""

    def __init__(
        self,
        *,
        integrations: collections.abc.Iterable[Global___IntegrationInfo] | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["integrations", b"integrations"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetUserIntegrationsResponse: typing_extensions.TypeAlias = GetUserIntegrationsResponse

@typing.final
class GetRecentLogsRequest(google.protobuf.message.Message):
    """=============================================================================
    Observability Messages (Sprint 9)
    =============================================================================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    LIMIT_FIELD_NUMBER: builtins.int
    LEVEL_FIELD_NUMBER: builtins.int
    SOURCE_FIELD_NUMBER: builtins.int
    limit: builtins.int
    """Maximum logs to return (default: 100, max: 1000)"""
    level: builtins.str
    """Filter by log level: debug, info, warning, error"""
    source: builtins.str
    """Filter by source: app, api, sync, auth, system"""
    def __init__(
        self,
        *,
        limit: builtins.int = ...,
        level: builtins.str = ...,
        source: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["level", b"level", "limit", b"limit", "source", b"source"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetRecentLogsRequest: typing_extensions.TypeAlias = GetRecentLogsRequest

@typing.final
class GetRecentLogsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    LOGS_FIELD_NUMBER: builtins.int
    @property
    def logs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___LogEntryProto]:
        """Recent log entries"""

    def __init__(
        self,
        *,
        logs: collections.abc.Iterable[Global___LogEntryProto] | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["logs", b"logs"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetRecentLogsResponse: typing_extensions.TypeAlias = GetRecentLogsResponse

@typing.final
class LogEntryProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class DetailsEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["key", b"key", "value", b"value"]
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    TIMESTAMP_FIELD_NUMBER: builtins.int
    LEVEL_FIELD_NUMBER: builtins.int
    SOURCE_FIELD_NUMBER: builtins.int
    MESSAGE_FIELD_NUMBER: builtins.int
    DETAILS_FIELD_NUMBER: builtins.int
    timestamp: builtins.str
    """Timestamp (ISO 8601)"""
    level: builtins.str
    """Log level: debug, info, warning, error"""
    source: builtins.str
    """Source component: app, api, sync, auth, system"""
    message: builtins.str
    """Log message"""
    @property
    def details(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """Additional details (key-value pairs)"""

    def __init__(
        self,
        *,
        timestamp: builtins.str = ...,
        level: builtins.str = ...,
        source: builtins.str = ...,
        message: builtins.str = ...,
        details: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["details", b"details", "level", b"level", "message", b"message", "source", b"source", "timestamp", b"timestamp"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___LogEntryProto: typing_extensions.TypeAlias = LogEntryProto

@typing.final
class GetPerformanceMetricsRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    HISTORY_LIMIT_FIELD_NUMBER: builtins.int
    history_limit: builtins.int
    """Number of historical data points (default: 60)"""
    def __init__(
        self,
        *,
        history_limit: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["history_limit", b"history_limit"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetPerformanceMetricsRequest: typing_extensions.TypeAlias = GetPerformanceMetricsRequest

@typing.final
class GetPerformanceMetricsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CURRENT_FIELD_NUMBER: builtins.int
    HISTORY_FIELD_NUMBER: builtins.int
    @property
    def current(self) -> Global___PerformanceMetricsPoint:
        """Current metrics"""

    @property
    def history(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___PerformanceMetricsPoint]:
        """Historical metrics (oldest to newest)"""

    def __init__(
        self,
        *,
        current: Global___PerformanceMetricsPoint | None = ...,
        history: collections.abc.Iterable[Global___PerformanceMetricsPoint] | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["current", b"current"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["current", b"current", "history", b"history"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetPerformanceMetricsResponse: typing_extensions.TypeAlias = GetPerformanceMetricsResponse

@typing.final
class PerformanceMetricsPoint(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TIMESTAMP_FIELD_NUMBER: builtins.int
    CPU_PERCENT_FIELD_NUMBER: builtins.int
    MEMORY_PERCENT_FIELD_NUMBER: builtins.int
    MEMORY_MB_FIELD_NUMBER: builtins.int
    DISK_PERCENT_FIELD_NUMBER: builtins.int
    NETWORK_BYTES_SENT_FIELD_NUMBER: builtins.int
    NETWORK_BYTES_RECV_FIELD_NUMBER: builtins.int
    PROCESS_MEMORY_MB_FIELD_NUMBER: builtins.int
    ACTIVE_CONNECTIONS_FIELD_NUMBER: builtins.int
    timestamp: builtins.float
    """Unix timestamp"""
    cpu_percent: builtins.float
    """CPU usage percentage (0-100)"""
    memory_percent: builtins.float
    """Memory usage percentage (0-100)"""
    memory_mb: builtins.float
    """Memory used in megabytes"""
    disk_percent: builtins.float
    """Disk usage percentage (0-100)"""
    network_bytes_sent: builtins.int
    """Network bytes sent since last measurement"""
    network_bytes_recv: builtins.int
    """Network bytes received since last measurement"""
    process_memory_mb: builtins.float
    """NoteFlow process memory in megabytes"""
    active_connections: builtins.int
    """Active network connections"""
    def __init__(
        self,
        *,
        timestamp: builtins.float = ...,
        cpu_percent: builtins.float = ...,
        memory_percent: builtins.float = ...,
        memory_mb: builtins.float = ...,
        disk_percent: builtins.float = ...,
        network_bytes_sent: builtins.int = ...,
        network_bytes_recv: builtins.int = ...,
        process_memory_mb: builtins.float = ...,
        active_connections: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["active_connections", b"active_connections", "cpu_percent", b"cpu_percent", "disk_percent", b"disk_percent", "memory_mb", b"memory_mb", "memory_percent", b"memory_percent", "network_bytes_recv", b"network_bytes_recv", "network_bytes_sent", b"network_bytes_sent", "process_memory_mb", b"process_memory_mb", "timestamp", b"timestamp"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___PerformanceMetricsPoint: typing_extensions.TypeAlias = PerformanceMetricsPoint

@typing.final
class ClaimMappingProto(google.protobuf.message.Message):
    """=============================================================================
    OIDC Provider Management Messages (Sprint 17)
    =============================================================================
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SUBJECT_CLAIM_FIELD_NUMBER: builtins.int
    EMAIL_CLAIM_FIELD_NUMBER: builtins.int
    EMAIL_VERIFIED_CLAIM_FIELD_NUMBER: builtins.int
    NAME_CLAIM_FIELD_NUMBER: builtins.int
    PREFERRED_USERNAME_CLAIM_FIELD_NUMBER: builtins.int
    GROUPS_CLAIM_FIELD_NUMBER: builtins.int
    PICTURE_CLAIM_FIELD_NUMBER: builtins.int
    FIRST_NAME_CLAIM_FIELD_NUMBER: builtins.int
    LAST_NAME_CLAIM_FIELD_NUMBER: builtins.int
    PHONE_CLAIM_FIELD_NUMBER: builtins.int
    subject_claim: builtins.str
    """OIDC claim names mapped to user attributes"""
    email_claim: builtins.str
    email_verified_claim: builtins.str
    name_claim: builtins.str
    preferred_username_claim: builtins.str
    groups_claim: builtins.str
    picture_claim: builtins.str
    first_name_claim: builtins.str
    last_name_claim: builtins.str
    phone_claim: builtins.str
    def __init__(
        self,
        *,
        subject_claim: builtins.str = ...,
        email_claim: builtins.str = ...,
        email_verified_claim: builtins.str = ...,
        name_claim: builtins.str = ...,
        preferred_username_claim: builtins.str = ...,
        groups_claim: builtins.str = ...,
        picture_claim: builtins.str = ...,
        first_name_claim: builtins.str | None = ...,
        last_name_claim: builtins.str | None = ...,
        phone_claim: builtins.str | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_first_name_claim", b"_first_name_claim", "_last_name_claim", b"_last_name_claim", "_phone_claim", b"_phone_claim", "first_name_claim", b"first_name_claim", "last_name_claim", b"last_name_claim", "phone_claim", b"phone_claim"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_first_name_claim", b"_first_name_claim", "_last_name_claim", b"_last_name_claim", "_phone_claim", b"_phone_claim", "email_claim", b"email_claim", "email_verified_claim", b"email_verified_claim", "first_name_claim", b"first_name_claim", "groups_claim", b"groups_claim", "last_name_claim", b"last_name_claim", "name_claim", b"name_claim", "phone_claim", b"phone_claim", "picture_claim", b"picture_claim", "preferred_username_claim", b"preferred_username_claim", "subject_claim", b"subject_claim"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__first_name_claim: typing_extensions.TypeAlias = typing.Literal["first_name_claim"]
    _WhichOneofArgType__first_name_claim: typing_extensions.TypeAlias = typing.Literal["_first_name_claim", b"_first_name_claim"]
    _WhichOneofReturnType__last_name_claim: typing_extensions.TypeAlias = typing.Literal["last_name_claim"]
    _WhichOneofArgType__last_name_claim: typing_extensions.TypeAlias = typing.Literal["_last_name_claim", b"_last_name_claim"]
    _WhichOneofReturnType__phone_claim: typing_extensions.TypeAlias = typing.Literal["phone_claim"]
    _WhichOneofArgType__phone_claim: typing_extensions.TypeAlias = typing.Literal["_phone_claim", b"_phone_claim"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__first_name_claim) -> _WhichOneofReturnType__first_name_claim | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__last_name_claim) -> _WhichOneofReturnType__last_name_claim | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__phone_claim) -> _WhichOneofReturnType__phone_claim | None: ...

Global___ClaimMappingProto: typing_extensions.TypeAlias = ClaimMappingProto

@typing.final
class OidcDiscoveryProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ISSUER_FIELD_NUMBER: builtins.int
    AUTHORIZATION_ENDPOINT_FIELD_NUMBER: builtins.int
    TOKEN_ENDPOINT_FIELD_NUMBER: builtins.int
    USERINFO_ENDPOINT_FIELD_NUMBER: builtins.int
    JWKS_URI_FIELD_NUMBER: builtins.int
    END_SESSION_ENDPOINT_FIELD_NUMBER: builtins.int
    REVOCATION_ENDPOINT_FIELD_NUMBER: builtins.int
    SCOPES_SUPPORTED_FIELD_NUMBER: builtins.int
    CLAIMS_SUPPORTED_FIELD_NUMBER: builtins.int
    SUPPORTS_PKCE_FIELD_NUMBER: builtins.int
    issuer: builtins.str
    """Discovery endpoint information"""
    authorization_endpoint: builtins.str
    token_endpoint: builtins.str
    userinfo_endpoint: builtins.str
    jwks_uri: builtins.str
    end_session_endpoint: builtins.str
    revocation_endpoint: builtins.str
    supports_pkce: builtins.bool
    @property
    def scopes_supported(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    @property
    def claims_supported(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    def __init__(
        self,
        *,
        issuer: builtins.str = ...,
        authorization_endpoint: builtins.str = ...,
        token_endpoint: builtins.str = ...,
        userinfo_endpoint: builtins.str | None = ...,
        jwks_uri: builtins.str | None = ...,
        end_session_endpoint: builtins.str | None = ...,
        revocation_endpoint: builtins.str | None = ...,
        scopes_supported: collections.abc.Iterable[builtins.str] | None = ...,
        claims_supported: collections.abc.Iterable[builtins.str] | None = ...,
        supports_pkce: builtins.bool = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_end_session_endpoint", b"_end_session_endpoint", "_jwks_uri", b"_jwks_uri", "_revocation_endpoint", b"_revocation_endpoint", "_userinfo_endpoint", b"_userinfo_endpoint", "end_session_endpoint", b"end_session_endpoint", "jwks_uri", b"jwks_uri", "revocation_endpoint", b"revocation_endpoint", "userinfo_endpoint", b"userinfo_endpoint"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_end_session_endpoint", b"_end_session_endpoint", "_jwks_uri", b"_jwks_uri", "_revocation_endpoint", b"_revocation_endpoint", "_userinfo_endpoint", b"_userinfo_endpoint", "authorization_endpoint", b"authorization_endpoint", "claims_supported", b"claims_supported", "end_session_endpoint", b"end_session_endpoint", "issuer", b"issuer", "jwks_uri", b"jwks_uri", "revocation_endpoint", b"revocation_endpoint", "scopes_supported", b"scopes_supported", "supports_pkce", b"supports_pkce", "token_endpoint", b"token_endpoint", "userinfo_endpoint", b"userinfo_endpoint"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__end_session_endpoint: typing_extensions.TypeAlias = typing.Literal["end_session_endpoint"]
    _WhichOneofArgType__end_session_endpoint: typing_extensions.TypeAlias = typing.Literal["_end_session_endpoint", b"_end_session_endpoint"]
    _WhichOneofReturnType__jwks_uri: typing_extensions.TypeAlias = typing.Literal["jwks_uri"]
    _WhichOneofArgType__jwks_uri: typing_extensions.TypeAlias = typing.Literal["_jwks_uri", b"_jwks_uri"]
    _WhichOneofReturnType__revocation_endpoint: typing_extensions.TypeAlias = typing.Literal["revocation_endpoint"]
    _WhichOneofArgType__revocation_endpoint: typing_extensions.TypeAlias = typing.Literal["_revocation_endpoint", b"_revocation_endpoint"]
    _WhichOneofReturnType__userinfo_endpoint: typing_extensions.TypeAlias = typing.Literal["userinfo_endpoint"]
    _WhichOneofArgType__userinfo_endpoint: typing_extensions.TypeAlias = typing.Literal["_userinfo_endpoint", b"_userinfo_endpoint"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__end_session_endpoint) -> _WhichOneofReturnType__end_session_endpoint | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__jwks_uri) -> _WhichOneofReturnType__jwks_uri | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__revocation_endpoint) -> _WhichOneofReturnType__revocation_endpoint | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__userinfo_endpoint) -> _WhichOneofReturnType__userinfo_endpoint | None: ...

Global___OidcDiscoveryProto: typing_extensions.TypeAlias = OidcDiscoveryProto

@typing.final
class OidcProviderProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    WORKSPACE_ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    PRESET_FIELD_NUMBER: builtins.int
    ISSUER_URL_FIELD_NUMBER: builtins.int
    CLIENT_ID_FIELD_NUMBER: builtins.int
    ENABLED_FIELD_NUMBER: builtins.int
    DISCOVERY_FIELD_NUMBER: builtins.int
    CLAIM_MAPPING_FIELD_NUMBER: builtins.int
    SCOPES_FIELD_NUMBER: builtins.int
    REQUIRE_EMAIL_VERIFIED_FIELD_NUMBER: builtins.int
    ALLOWED_GROUPS_FIELD_NUMBER: builtins.int
    CREATED_AT_FIELD_NUMBER: builtins.int
    UPDATED_AT_FIELD_NUMBER: builtins.int
    DISCOVERY_REFRESHED_AT_FIELD_NUMBER: builtins.int
    WARNINGS_FIELD_NUMBER: builtins.int
    id: builtins.str
    """Provider configuration"""
    workspace_id: builtins.str
    name: builtins.str
    preset: builtins.str
    issuer_url: builtins.str
    client_id: builtins.str
    enabled: builtins.bool
    require_email_verified: builtins.bool
    """Access control"""
    created_at: builtins.int
    """Timestamps"""
    updated_at: builtins.int
    discovery_refreshed_at: builtins.int
    @property
    def discovery(self) -> Global___OidcDiscoveryProto:
        """Discovery configuration (populated from .well-known)"""

    @property
    def claim_mapping(self) -> Global___ClaimMappingProto:
        """Claim mapping configuration"""

    @property
    def scopes(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """OAuth scopes to request"""

    @property
    def allowed_groups(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    @property
    def warnings(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Validation warnings (only in responses)"""

    def __init__(
        self,
        *,
        id: builtins.str = ...,
        workspace_id: builtins.str = ...,
        name: builtins.str = ...,
        preset: builtins.str = ...,
        issuer_url: builtins.str = ...,
        client_id: builtins.str = ...,
        enabled: builtins.bool = ...,
        discovery: Global___OidcDiscoveryProto | None = ...,
        claim_mapping: Global___ClaimMappingProto | None = ...,
        scopes: collections.abc.Iterable[builtins.str] | None = ...,
        require_email_verified: builtins.bool = ...,
        allowed_groups: collections.abc.Iterable[builtins.str] | None = ...,
        created_at: builtins.int = ...,
        updated_at: builtins.int = ...,
        discovery_refreshed_at: builtins.int | None = ...,
        warnings: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_discovery", b"_discovery", "_discovery_refreshed_at", b"_discovery_refreshed_at", "claim_mapping", b"claim_mapping", "discovery", b"discovery", "discovery_refreshed_at", b"discovery_refreshed_at"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_discovery", b"_discovery", "_discovery_refreshed_at", b"_discovery_refreshed_at", "allowed_groups", b"allowed_groups", "claim_mapping", b"claim_mapping", "client_id", b"client_id", "created_at", b"created_at", "discovery", b"discovery", "discovery_refreshed_at", b"discovery_refreshed_at", "enabled", b"enabled", "id", b"id", "issuer_url", b"issuer_url", "name", b"name", "preset", b"preset", "require_email_verified", b"require_email_verified", "scopes", b"scopes", "updated_at", b"updated_at", "warnings", b"warnings", "workspace_id", b"workspace_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__discovery: typing_extensions.TypeAlias = typing.Literal["discovery"]
    _WhichOneofArgType__discovery: typing_extensions.TypeAlias = typing.Literal["_discovery", b"_discovery"]
    _WhichOneofReturnType__discovery_refreshed_at: typing_extensions.TypeAlias = typing.Literal["discovery_refreshed_at"]
    _WhichOneofArgType__discovery_refreshed_at: typing_extensions.TypeAlias = typing.Literal["_discovery_refreshed_at", b"_discovery_refreshed_at"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__discovery) -> _WhichOneofReturnType__discovery | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__discovery_refreshed_at) -> _WhichOneofReturnType__discovery_refreshed_at | None: ...

Global___OidcProviderProto: typing_extensions.TypeAlias = OidcProviderProto

@typing.final
class RegisterOidcProviderRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    WORKSPACE_ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    ISSUER_URL_FIELD_NUMBER: builtins.int
    CLIENT_ID_FIELD_NUMBER: builtins.int
    CLIENT_SECRET_FIELD_NUMBER: builtins.int
    PRESET_FIELD_NUMBER: builtins.int
    SCOPES_FIELD_NUMBER: builtins.int
    CLAIM_MAPPING_FIELD_NUMBER: builtins.int
    ALLOWED_GROUPS_FIELD_NUMBER: builtins.int
    REQUIRE_EMAIL_VERIFIED_FIELD_NUMBER: builtins.int
    AUTO_DISCOVER_FIELD_NUMBER: builtins.int
    workspace_id: builtins.str
    """Workspace to register provider in"""
    name: builtins.str
    """Display name for the provider"""
    issuer_url: builtins.str
    """OIDC issuer URL (base URL for discovery)"""
    client_id: builtins.str
    """OAuth client ID"""
    client_secret: builtins.str
    """Optional client secret (for confidential clients)"""
    preset: builtins.str
    """Provider preset: authentik, authelia, keycloak, auth0, okta, azure_ad, custom"""
    require_email_verified: builtins.bool
    """Whether to require verified email (default: true)"""
    auto_discover: builtins.bool
    """Whether to auto-discover endpoints (default: true)"""
    @property
    def scopes(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Optional custom scopes (defaults to preset)"""

    @property
    def claim_mapping(self) -> Global___ClaimMappingProto:
        """Optional custom claim mapping (defaults to preset)"""

    @property
    def allowed_groups(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Optional group-based access control"""

    def __init__(
        self,
        *,
        workspace_id: builtins.str = ...,
        name: builtins.str = ...,
        issuer_url: builtins.str = ...,
        client_id: builtins.str = ...,
        client_secret: builtins.str | None = ...,
        preset: builtins.str = ...,
        scopes: collections.abc.Iterable[builtins.str] | None = ...,
        claim_mapping: Global___ClaimMappingProto | None = ...,
        allowed_groups: collections.abc.Iterable[builtins.str] | None = ...,
        require_email_verified: builtins.bool | None = ...,
        auto_discover: builtins.bool = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_claim_mapping", b"_claim_mapping", "_client_secret", b"_client_secret", "_require_email_verified", b"_require_email_verified", "claim_mapping", b"claim_mapping", "client_secret", b"client_secret", "require_email_verified", b"require_email_verified"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_claim_mapping", b"_claim_mapping", "_client_secret", b"_client_secret", "_require_email_verified", b"_require_email_verified", "allowed_groups", b"allowed_groups", "auto_discover", b"auto_discover", "claim_mapping", b"claim_mapping", "client_id", b"client_id", "client_secret", b"client_secret", "issuer_url", b"issuer_url", "name", b"name", "preset", b"preset", "require_email_verified", b"require_email_verified", "scopes", b"scopes", "workspace_id", b"workspace_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__claim_mapping: typing_extensions.TypeAlias = typing.Literal["claim_mapping"]
    _WhichOneofArgType__claim_mapping: typing_extensions.TypeAlias = typing.Literal["_claim_mapping", b"_claim_mapping"]
    _WhichOneofReturnType__client_secret: typing_extensions.TypeAlias = typing.Literal["client_secret"]
    _WhichOneofArgType__client_secret: typing_extensions.TypeAlias = typing.Literal["_client_secret", b"_client_secret"]
    _WhichOneofReturnType__require_email_verified: typing_extensions.TypeAlias = typing.Literal["require_email_verified"]
    _WhichOneofArgType__require_email_verified: typing_extensions.TypeAlias = typing.Literal["_require_email_verified", b"_require_email_verified"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__claim_mapping) -> _WhichOneofReturnType__claim_mapping | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__client_secret) -> _WhichOneofReturnType__client_secret | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__require_email_verified) -> _WhichOneofReturnType__require_email_verified | None: ...

Global___RegisterOidcProviderRequest: typing_extensions.TypeAlias = RegisterOidcProviderRequest

@typing.final
class ListOidcProvidersRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    WORKSPACE_ID_FIELD_NUMBER: builtins.int
    ENABLED_ONLY_FIELD_NUMBER: builtins.int
    workspace_id: builtins.str
    """Optional workspace filter"""
    enabled_only: builtins.bool
    """Filter to only enabled providers"""
    def __init__(
        self,
        *,
        workspace_id: builtins.str | None = ...,
        enabled_only: builtins.bool = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_workspace_id", b"_workspace_id", "workspace_id", b"workspace_id"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_workspace_id", b"_workspace_id", "enabled_only", b"enabled_only", "workspace_id", b"workspace_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__workspace_id: typing_extensions.TypeAlias = typing.Literal["workspace_id"]
    _WhichOneofArgType__workspace_id: typing_extensions.TypeAlias = typing.Literal["_workspace_id", b"_workspace_id"]
    def WhichOneof(self, oneof_group: _WhichOneofArgType__workspace_id) -> _WhichOneofReturnType__workspace_id | None: ...

Global___ListOidcProvidersRequest: typing_extensions.TypeAlias = ListOidcProvidersRequest

@typing.final
class ListOidcProvidersResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROVIDERS_FIELD_NUMBER: builtins.int
    TOTAL_COUNT_FIELD_NUMBER: builtins.int
    total_count: builtins.int
    """Total count"""
    @property
    def providers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___OidcProviderProto]:
        """Registered OIDC providers"""

    def __init__(
        self,
        *,
        providers: collections.abc.Iterable[Global___OidcProviderProto] | None = ...,
        total_count: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["providers", b"providers", "total_count", b"total_count"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListOidcProvidersResponse: typing_extensions.TypeAlias = ListOidcProvidersResponse

@typing.final
class GetOidcProviderRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROVIDER_ID_FIELD_NUMBER: builtins.int
    provider_id: builtins.str
    """Provider ID to retrieve"""
    def __init__(
        self,
        *,
        provider_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["provider_id", b"provider_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetOidcProviderRequest: typing_extensions.TypeAlias = GetOidcProviderRequest

@typing.final
class UpdateOidcProviderRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROVIDER_ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    SCOPES_FIELD_NUMBER: builtins.int
    CLAIM_MAPPING_FIELD_NUMBER: builtins.int
    ALLOWED_GROUPS_FIELD_NUMBER: builtins.int
    REQUIRE_EMAIL_VERIFIED_FIELD_NUMBER: builtins.int
    ENABLED_FIELD_NUMBER: builtins.int
    provider_id: builtins.str
    """Provider ID to update"""
    name: builtins.str
    """Updated name (optional)"""
    require_email_verified: builtins.bool
    """Updated require_email_verified (optional)"""
    enabled: builtins.bool
    """Updated enabled status (optional)"""
    @property
    def scopes(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Updated scopes (replaces existing)"""

    @property
    def claim_mapping(self) -> Global___ClaimMappingProto:
        """Updated claim mapping (optional)"""

    @property
    def allowed_groups(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Updated allowed groups (replaces existing)"""

    def __init__(
        self,
        *,
        provider_id: builtins.str = ...,
        name: builtins.str | None = ...,
        scopes: collections.abc.Iterable[builtins.str] | None = ...,
        claim_mapping: Global___ClaimMappingProto | None = ...,
        allowed_groups: collections.abc.Iterable[builtins.str] | None = ...,
        require_email_verified: builtins.bool | None = ...,
        enabled: builtins.bool | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_claim_mapping", b"_claim_mapping", "_enabled", b"_enabled", "_name", b"_name", "_require_email_verified", b"_require_email_verified", "claim_mapping", b"claim_mapping", "enabled", b"enabled", "name", b"name", "require_email_verified", b"require_email_verified"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_claim_mapping", b"_claim_mapping", "_enabled", b"_enabled", "_name", b"_name", "_require_email_verified", b"_require_email_verified", "allowed_groups", b"allowed_groups", "claim_mapping", b"claim_mapping", "enabled", b"enabled", "name", b"name", "provider_id", b"provider_id", "require_email_verified", b"require_email_verified", "scopes", b"scopes"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__claim_mapping: typing_extensions.TypeAlias = typing.Literal["claim_mapping"]
    _WhichOneofArgType__claim_mapping: typing_extensions.TypeAlias = typing.Literal["_claim_mapping", b"_claim_mapping"]
    _WhichOneofReturnType__enabled: typing_extensions.TypeAlias = typing.Literal["enabled"]
    _WhichOneofArgType__enabled: typing_extensions.TypeAlias = typing.Literal["_enabled", b"_enabled"]
    _WhichOneofReturnType__name: typing_extensions.TypeAlias = typing.Literal["name"]
    _WhichOneofArgType__name: typing_extensions.TypeAlias = typing.Literal["_name", b"_name"]
    _WhichOneofReturnType__require_email_verified: typing_extensions.TypeAlias = typing.Literal["require_email_verified"]
    _WhichOneofArgType__require_email_verified: typing_extensions.TypeAlias = typing.Literal["_require_email_verified", b"_require_email_verified"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__claim_mapping) -> _WhichOneofReturnType__claim_mapping | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__enabled) -> _WhichOneofReturnType__enabled | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__name) -> _WhichOneofReturnType__name | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__require_email_verified) -> _WhichOneofReturnType__require_email_verified | None: ...

Global___UpdateOidcProviderRequest: typing_extensions.TypeAlias = UpdateOidcProviderRequest

@typing.final
class DeleteOidcProviderRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROVIDER_ID_FIELD_NUMBER: builtins.int
    provider_id: builtins.str
    """Provider ID to delete"""
    def __init__(
        self,
        *,
        provider_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["provider_id", b"provider_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DeleteOidcProviderRequest: typing_extensions.TypeAlias = DeleteOidcProviderRequest

@typing.final
class DeleteOidcProviderResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SUCCESS_FIELD_NUMBER: builtins.int
    success: builtins.bool
    """Whether deletion succeeded"""
    def __init__(
        self,
        *,
        success: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["success", b"success"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DeleteOidcProviderResponse: typing_extensions.TypeAlias = DeleteOidcProviderResponse

@typing.final
class RefreshOidcDiscoveryRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROVIDER_ID_FIELD_NUMBER: builtins.int
    WORKSPACE_ID_FIELD_NUMBER: builtins.int
    provider_id: builtins.str
    """Optional provider ID (if not set, refreshes all)"""
    workspace_id: builtins.str
    """Optional workspace filter (for refresh all)"""
    def __init__(
        self,
        *,
        provider_id: builtins.str | None = ...,
        workspace_id: builtins.str | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_provider_id", b"_provider_id", "_workspace_id", b"_workspace_id", "provider_id", b"provider_id", "workspace_id", b"workspace_id"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_provider_id", b"_provider_id", "_workspace_id", b"_workspace_id", "provider_id", b"provider_id", "workspace_id", b"workspace_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__provider_id: typing_extensions.TypeAlias = typing.Literal["provider_id"]
    _WhichOneofArgType__provider_id: typing_extensions.TypeAlias = typing.Literal["_provider_id", b"_provider_id"]
    _WhichOneofReturnType__workspace_id: typing_extensions.TypeAlias = typing.Literal["workspace_id"]
    _WhichOneofArgType__workspace_id: typing_extensions.TypeAlias = typing.Literal["_workspace_id", b"_workspace_id"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__provider_id) -> _WhichOneofReturnType__provider_id | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__workspace_id) -> _WhichOneofReturnType__workspace_id | None: ...

Global___RefreshOidcDiscoveryRequest: typing_extensions.TypeAlias = RefreshOidcDiscoveryRequest

@typing.final
class RefreshOidcDiscoveryResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class ResultsEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["key", b"key", "value", b"value"]
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    RESULTS_FIELD_NUMBER: builtins.int
    SUCCESS_COUNT_FIELD_NUMBER: builtins.int
    FAILURE_COUNT_FIELD_NUMBER: builtins.int
    success_count: builtins.int
    """Count of successful refreshes"""
    failure_count: builtins.int
    """Count of failed refreshes"""
    @property
    def results(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """Results per provider: provider_id -> error message (empty if success)"""

    def __init__(
        self,
        *,
        results: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        success_count: builtins.int = ...,
        failure_count: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["failure_count", b"failure_count", "results", b"results", "success_count", b"success_count"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___RefreshOidcDiscoveryResponse: typing_extensions.TypeAlias = RefreshOidcDiscoveryResponse

@typing.final
class ListOidcPresetsRequest(google.protobuf.message.Message):
    """No parameters needed"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

Global___ListOidcPresetsRequest: typing_extensions.TypeAlias = ListOidcPresetsRequest

@typing.final
class OidcPresetProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PRESET_FIELD_NUMBER: builtins.int
    DISPLAY_NAME_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    DEFAULT_SCOPES_FIELD_NUMBER: builtins.int
    DOCUMENTATION_URL_FIELD_NUMBER: builtins.int
    NOTES_FIELD_NUMBER: builtins.int
    preset: builtins.str
    """Preset identifier"""
    display_name: builtins.str
    """Display name"""
    description: builtins.str
    """Description"""
    documentation_url: builtins.str
    """Documentation URL"""
    notes: builtins.str
    """Configuration notes"""
    @property
    def default_scopes(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Default scopes"""

    def __init__(
        self,
        *,
        preset: builtins.str = ...,
        display_name: builtins.str = ...,
        description: builtins.str = ...,
        default_scopes: collections.abc.Iterable[builtins.str] | None = ...,
        documentation_url: builtins.str | None = ...,
        notes: builtins.str | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_documentation_url", b"_documentation_url", "_notes", b"_notes", "documentation_url", b"documentation_url", "notes", b"notes"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_documentation_url", b"_documentation_url", "_notes", b"_notes", "default_scopes", b"default_scopes", "description", b"description", "display_name", b"display_name", "documentation_url", b"documentation_url", "notes", b"notes", "preset", b"preset"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__documentation_url: typing_extensions.TypeAlias = typing.Literal["documentation_url"]
    _WhichOneofArgType__documentation_url: typing_extensions.TypeAlias = typing.Literal["_documentation_url", b"_documentation_url"]
    _WhichOneofReturnType__notes: typing_extensions.TypeAlias = typing.Literal["notes"]
    _WhichOneofArgType__notes: typing_extensions.TypeAlias = typing.Literal["_notes", b"_notes"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__documentation_url) -> _WhichOneofReturnType__documentation_url | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__notes) -> _WhichOneofReturnType__notes | None: ...

Global___OidcPresetProto: typing_extensions.TypeAlias = OidcPresetProto

@typing.final
class ListOidcPresetsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PRESETS_FIELD_NUMBER: builtins.int
    @property
    def presets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___OidcPresetProto]:
        """Available presets"""

    def __init__(
        self,
        *,
        presets: collections.abc.Iterable[Global___OidcPresetProto] | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["presets", b"presets"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListOidcPresetsResponse: typing_extensions.TypeAlias = ListOidcPresetsResponse

@typing.final
class ExportRulesProto(google.protobuf.message.Message):
    """Export configuration for a project"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DEFAULT_FORMAT_FIELD_NUMBER: builtins.int
    INCLUDE_AUDIO_FIELD_NUMBER: builtins.int
    INCLUDE_TIMESTAMPS_FIELD_NUMBER: builtins.int
    TEMPLATE_ID_FIELD_NUMBER: builtins.int
    default_format: Global___ExportFormat.ValueType
    """Default export format (markdown, html, pdf)"""
    include_audio: builtins.bool
    """Whether to include audio file in exports"""
    include_timestamps: builtins.bool
    """Whether to include timestamps in transcript"""
    template_id: builtins.str
    """ID of export template to use"""
    def __init__(
        self,
        *,
        default_format: Global___ExportFormat.ValueType | None = ...,
        include_audio: builtins.bool | None = ...,
        include_timestamps: builtins.bool | None = ...,
        template_id: builtins.str | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_default_format", b"_default_format", "_include_audio", b"_include_audio", "_include_timestamps", b"_include_timestamps", "_template_id", b"_template_id", "default_format", b"default_format", "include_audio", b"include_audio", "include_timestamps", b"include_timestamps", "template_id", b"template_id"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_default_format", b"_default_format", "_include_audio", b"_include_audio", "_include_timestamps", b"_include_timestamps", "_template_id", b"_template_id", "default_format", b"default_format", "include_audio", b"include_audio", "include_timestamps", b"include_timestamps", "template_id", b"template_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__default_format: typing_extensions.TypeAlias = typing.Literal["default_format"]
    _WhichOneofArgType__default_format: typing_extensions.TypeAlias = typing.Literal["_default_format", b"_default_format"]
    _WhichOneofReturnType__include_audio: typing_extensions.TypeAlias = typing.Literal["include_audio"]
    _WhichOneofArgType__include_audio: typing_extensions.TypeAlias = typing.Literal["_include_audio", b"_include_audio"]
    _WhichOneofReturnType__include_timestamps: typing_extensions.TypeAlias = typing.Literal["include_timestamps"]
    _WhichOneofArgType__include_timestamps: typing_extensions.TypeAlias = typing.Literal["_include_timestamps", b"_include_timestamps"]
    _WhichOneofReturnType__template_id: typing_extensions.TypeAlias = typing.Literal["template_id"]
    _WhichOneofArgType__template_id: typing_extensions.TypeAlias = typing.Literal["_template_id", b"_template_id"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__default_format) -> _WhichOneofReturnType__default_format | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__include_audio) -> _WhichOneofReturnType__include_audio | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__include_timestamps) -> _WhichOneofReturnType__include_timestamps | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__template_id) -> _WhichOneofReturnType__template_id | None: ...

Global___ExportRulesProto: typing_extensions.TypeAlias = ExportRulesProto

@typing.final
class TriggerRulesProto(google.protobuf.message.Message):
    """Trigger configuration for a project"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    AUTO_START_ENABLED_FIELD_NUMBER: builtins.int
    CALENDAR_MATCH_PATTERNS_FIELD_NUMBER: builtins.int
    APP_MATCH_PATTERNS_FIELD_NUMBER: builtins.int
    auto_start_enabled: builtins.bool
    """Whether auto-start recording is enabled"""
    @property
    def calendar_match_patterns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Glob patterns for calendar event titles"""

    @property
    def app_match_patterns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Glob patterns for application names"""

    def __init__(
        self,
        *,
        auto_start_enabled: builtins.bool | None = ...,
        calendar_match_patterns: collections.abc.Iterable[builtins.str] | None = ...,
        app_match_patterns: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_auto_start_enabled", b"_auto_start_enabled", "auto_start_enabled", b"auto_start_enabled"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_auto_start_enabled", b"_auto_start_enabled", "app_match_patterns", b"app_match_patterns", "auto_start_enabled", b"auto_start_enabled", "calendar_match_patterns", b"calendar_match_patterns"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__auto_start_enabled: typing_extensions.TypeAlias = typing.Literal["auto_start_enabled"]
    _WhichOneofArgType__auto_start_enabled: typing_extensions.TypeAlias = typing.Literal["_auto_start_enabled", b"_auto_start_enabled"]
    def WhichOneof(self, oneof_group: _WhichOneofArgType__auto_start_enabled) -> _WhichOneofReturnType__auto_start_enabled | None: ...

Global___TriggerRulesProto: typing_extensions.TypeAlias = TriggerRulesProto

@typing.final
class ProjectSettingsProto(google.protobuf.message.Message):
    """Project settings (inheritable from workspace)"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    EXPORT_RULES_FIELD_NUMBER: builtins.int
    TRIGGER_RULES_FIELD_NUMBER: builtins.int
    RAG_ENABLED_FIELD_NUMBER: builtins.int
    DEFAULT_SUMMARIZATION_TEMPLATE_FIELD_NUMBER: builtins.int
    rag_enabled: builtins.bool
    """Whether RAG Q&A is enabled for this project"""
    default_summarization_template: builtins.str
    """Default summarization template ID"""
    @property
    def export_rules(self) -> Global___ExportRulesProto:
        """Export configuration"""

    @property
    def trigger_rules(self) -> Global___TriggerRulesProto:
        """Trigger configuration"""

    def __init__(
        self,
        *,
        export_rules: Global___ExportRulesProto | None = ...,
        trigger_rules: Global___TriggerRulesProto | None = ...,
        rag_enabled: builtins.bool | None = ...,
        default_summarization_template: builtins.str | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_default_summarization_template", b"_default_summarization_template", "_export_rules", b"_export_rules", "_rag_enabled", b"_rag_enabled", "_trigger_rules", b"_trigger_rules", "default_summarization_template", b"default_summarization_template", "export_rules", b"export_rules", "rag_enabled", b"rag_enabled", "trigger_rules", b"trigger_rules"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_default_summarization_template", b"_default_summarization_template", "_export_rules", b"_export_rules", "_rag_enabled", b"_rag_enabled", "_trigger_rules", b"_trigger_rules", "default_summarization_template", b"default_summarization_template", "export_rules", b"export_rules", "rag_enabled", b"rag_enabled", "trigger_rules", b"trigger_rules"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__default_summarization_template: typing_extensions.TypeAlias = typing.Literal["default_summarization_template"]
    _WhichOneofArgType__default_summarization_template: typing_extensions.TypeAlias = typing.Literal["_default_summarization_template", b"_default_summarization_template"]
    _WhichOneofReturnType__export_rules: typing_extensions.TypeAlias = typing.Literal["export_rules"]
    _WhichOneofArgType__export_rules: typing_extensions.TypeAlias = typing.Literal["_export_rules", b"_export_rules"]
    _WhichOneofReturnType__rag_enabled: typing_extensions.TypeAlias = typing.Literal["rag_enabled"]
    _WhichOneofArgType__rag_enabled: typing_extensions.TypeAlias = typing.Literal["_rag_enabled", b"_rag_enabled"]
    _WhichOneofReturnType__trigger_rules: typing_extensions.TypeAlias = typing.Literal["trigger_rules"]
    _WhichOneofArgType__trigger_rules: typing_extensions.TypeAlias = typing.Literal["_trigger_rules", b"_trigger_rules"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__default_summarization_template) -> _WhichOneofReturnType__default_summarization_template | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__export_rules) -> _WhichOneofReturnType__export_rules | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__rag_enabled) -> _WhichOneofReturnType__rag_enabled | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__trigger_rules) -> _WhichOneofReturnType__trigger_rules | None: ...

Global___ProjectSettingsProto: typing_extensions.TypeAlias = ProjectSettingsProto

@typing.final
class ProjectProto(google.protobuf.message.Message):
    """Full project entity"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    WORKSPACE_ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    SLUG_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    IS_DEFAULT_FIELD_NUMBER: builtins.int
    IS_ARCHIVED_FIELD_NUMBER: builtins.int
    SETTINGS_FIELD_NUMBER: builtins.int
    CREATED_AT_FIELD_NUMBER: builtins.int
    UPDATED_AT_FIELD_NUMBER: builtins.int
    ARCHIVED_AT_FIELD_NUMBER: builtins.int
    id: builtins.str
    """Unique project identifier"""
    workspace_id: builtins.str
    """Parent workspace identifier"""
    name: builtins.str
    """User-provided project name"""
    slug: builtins.str
    """URL-friendly identifier (unique per workspace)"""
    description: builtins.str
    """Optional project description"""
    is_default: builtins.bool
    """Whether this is the workspace's default project"""
    is_archived: builtins.bool
    """Whether the project is archived"""
    created_at: builtins.int
    """Creation timestamp (Unix epoch seconds)"""
    updated_at: builtins.int
    """Last modification timestamp (Unix epoch seconds)"""
    archived_at: builtins.int
    """Archive timestamp (Unix epoch seconds, 0 if not archived)"""
    @property
    def settings(self) -> Global___ProjectSettingsProto:
        """Project-level settings"""

    def __init__(
        self,
        *,
        id: builtins.str = ...,
        workspace_id: builtins.str = ...,
        name: builtins.str = ...,
        slug: builtins.str | None = ...,
        description: builtins.str | None = ...,
        is_default: builtins.bool = ...,
        is_archived: builtins.bool = ...,
        settings: Global___ProjectSettingsProto | None = ...,
        created_at: builtins.int = ...,
        updated_at: builtins.int = ...,
        archived_at: builtins.int | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_archived_at", b"_archived_at", "_description", b"_description", "_settings", b"_settings", "_slug", b"_slug", "archived_at", b"archived_at", "description", b"description", "settings", b"settings", "slug", b"slug"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_archived_at", b"_archived_at", "_description", b"_description", "_settings", b"_settings", "_slug", b"_slug", "archived_at", b"archived_at", "created_at", b"created_at", "description", b"description", "id", b"id", "is_archived", b"is_archived", "is_default", b"is_default", "name", b"name", "settings", b"settings", "slug", b"slug", "updated_at", b"updated_at", "workspace_id", b"workspace_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__archived_at: typing_extensions.TypeAlias = typing.Literal["archived_at"]
    _WhichOneofArgType__archived_at: typing_extensions.TypeAlias = typing.Literal["_archived_at", b"_archived_at"]
    _WhichOneofReturnType__description: typing_extensions.TypeAlias = typing.Literal["description"]
    _WhichOneofArgType__description: typing_extensions.TypeAlias = typing.Literal["_description", b"_description"]
    _WhichOneofReturnType__settings: typing_extensions.TypeAlias = typing.Literal["settings"]
    _WhichOneofArgType__settings: typing_extensions.TypeAlias = typing.Literal["_settings", b"_settings"]
    _WhichOneofReturnType__slug: typing_extensions.TypeAlias = typing.Literal["slug"]
    _WhichOneofArgType__slug: typing_extensions.TypeAlias = typing.Literal["_slug", b"_slug"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__archived_at) -> _WhichOneofReturnType__archived_at | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__description) -> _WhichOneofReturnType__description | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__settings) -> _WhichOneofReturnType__settings | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__slug) -> _WhichOneofReturnType__slug | None: ...

Global___ProjectProto: typing_extensions.TypeAlias = ProjectProto

@typing.final
class ProjectMembershipProto(google.protobuf.message.Message):
    """Project membership entity"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROJECT_ID_FIELD_NUMBER: builtins.int
    USER_ID_FIELD_NUMBER: builtins.int
    ROLE_FIELD_NUMBER: builtins.int
    JOINED_AT_FIELD_NUMBER: builtins.int
    project_id: builtins.str
    """Project identifier"""
    user_id: builtins.str
    """User identifier"""
    role: Global___ProjectRoleProto.ValueType
    """User's role in the project"""
    joined_at: builtins.int
    """When the user joined the project (Unix epoch seconds)"""
    def __init__(
        self,
        *,
        project_id: builtins.str = ...,
        user_id: builtins.str = ...,
        role: Global___ProjectRoleProto.ValueType = ...,
        joined_at: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["joined_at", b"joined_at", "project_id", b"project_id", "role", b"role", "user_id", b"user_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ProjectMembershipProto: typing_extensions.TypeAlias = ProjectMembershipProto

@typing.final
class CreateProjectRequest(google.protobuf.message.Message):
    """-----------------------------------------------------------------------------
    Project CRUD Request/Response Messages
    -----------------------------------------------------------------------------
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    WORKSPACE_ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    SLUG_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    SETTINGS_FIELD_NUMBER: builtins.int
    workspace_id: builtins.str
    """Workspace to create project in"""
    name: builtins.str
    """Project name"""
    slug: builtins.str
    """Optional URL-friendly slug (auto-generated from name if not provided)"""
    description: builtins.str
    """Optional project description"""
    @property
    def settings(self) -> Global___ProjectSettingsProto:
        """Optional project settings"""

    def __init__(
        self,
        *,
        workspace_id: builtins.str = ...,
        name: builtins.str = ...,
        slug: builtins.str | None = ...,
        description: builtins.str | None = ...,
        settings: Global___ProjectSettingsProto | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_description", b"_description", "_settings", b"_settings", "_slug", b"_slug", "description", b"description", "settings", b"settings", "slug", b"slug"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_description", b"_description", "_settings", b"_settings", "_slug", b"_slug", "description", b"description", "name", b"name", "settings", b"settings", "slug", b"slug", "workspace_id", b"workspace_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__description: typing_extensions.TypeAlias = typing.Literal["description"]
    _WhichOneofArgType__description: typing_extensions.TypeAlias = typing.Literal["_description", b"_description"]
    _WhichOneofReturnType__settings: typing_extensions.TypeAlias = typing.Literal["settings"]
    _WhichOneofArgType__settings: typing_extensions.TypeAlias = typing.Literal["_settings", b"_settings"]
    _WhichOneofReturnType__slug: typing_extensions.TypeAlias = typing.Literal["slug"]
    _WhichOneofArgType__slug: typing_extensions.TypeAlias = typing.Literal["_slug", b"_slug"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__description) -> _WhichOneofReturnType__description | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__settings) -> _WhichOneofReturnType__settings | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__slug) -> _WhichOneofReturnType__slug | None: ...

Global___CreateProjectRequest: typing_extensions.TypeAlias = CreateProjectRequest

@typing.final
class GetProjectRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROJECT_ID_FIELD_NUMBER: builtins.int
    project_id: builtins.str
    """Project ID to retrieve"""
    def __init__(
        self,
        *,
        project_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["project_id", b"project_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetProjectRequest: typing_extensions.TypeAlias = GetProjectRequest

@typing.final
class GetProjectBySlugRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    WORKSPACE_ID_FIELD_NUMBER: builtins.int
    SLUG_FIELD_NUMBER: builtins.int
    workspace_id: builtins.str
    """Workspace ID"""
    slug: builtins.str
    """Project slug"""
    def __init__(
        self,
        *,
        workspace_id: builtins.str = ...,
        slug: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["slug", b"slug", "workspace_id", b"workspace_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetProjectBySlugRequest: typing_extensions.TypeAlias = GetProjectBySlugRequest

@typing.final
class ListProjectsRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    WORKSPACE_ID_FIELD_NUMBER: builtins.int
    INCLUDE_ARCHIVED_FIELD_NUMBER: builtins.int
    LIMIT_FIELD_NUMBER: builtins.int
    OFFSET_FIELD_NUMBER: builtins.int
    workspace_id: builtins.str
    """Workspace to list projects for"""
    include_archived: builtins.bool
    """Whether to include archived projects (default: false)"""
    limit: builtins.int
    """Maximum projects to return (default: 50)"""
    offset: builtins.int
    """Pagination offset"""
    def __init__(
        self,
        *,
        workspace_id: builtins.str = ...,
        include_archived: builtins.bool = ...,
        limit: builtins.int = ...,
        offset: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["include_archived", b"include_archived", "limit", b"limit", "offset", b"offset", "workspace_id", b"workspace_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListProjectsRequest: typing_extensions.TypeAlias = ListProjectsRequest

@typing.final
class ListProjectsResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROJECTS_FIELD_NUMBER: builtins.int
    TOTAL_COUNT_FIELD_NUMBER: builtins.int
    total_count: builtins.int
    """Total count (for pagination)"""
    @property
    def projects(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___ProjectProto]:
        """Projects in the workspace"""

    def __init__(
        self,
        *,
        projects: collections.abc.Iterable[Global___ProjectProto] | None = ...,
        total_count: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["projects", b"projects", "total_count", b"total_count"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListProjectsResponse: typing_extensions.TypeAlias = ListProjectsResponse

@typing.final
class UpdateProjectRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROJECT_ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    SLUG_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    SETTINGS_FIELD_NUMBER: builtins.int
    project_id: builtins.str
    """Project ID to update"""
    name: builtins.str
    """Updated name (optional)"""
    slug: builtins.str
    """Updated slug (optional)"""
    description: builtins.str
    """Updated description (optional)"""
    @property
    def settings(self) -> Global___ProjectSettingsProto:
        """Updated settings (optional, replaces existing)"""

    def __init__(
        self,
        *,
        project_id: builtins.str = ...,
        name: builtins.str | None = ...,
        slug: builtins.str | None = ...,
        description: builtins.str | None = ...,
        settings: Global___ProjectSettingsProto | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_description", b"_description", "_name", b"_name", "_settings", b"_settings", "_slug", b"_slug", "description", b"description", "name", b"name", "settings", b"settings", "slug", b"slug"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_description", b"_description", "_name", b"_name", "_settings", b"_settings", "_slug", b"_slug", "description", b"description", "name", b"name", "project_id", b"project_id", "settings", b"settings", "slug", b"slug"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__description: typing_extensions.TypeAlias = typing.Literal["description"]
    _WhichOneofArgType__description: typing_extensions.TypeAlias = typing.Literal["_description", b"_description"]
    _WhichOneofReturnType__name: typing_extensions.TypeAlias = typing.Literal["name"]
    _WhichOneofArgType__name: typing_extensions.TypeAlias = typing.Literal["_name", b"_name"]
    _WhichOneofReturnType__settings: typing_extensions.TypeAlias = typing.Literal["settings"]
    _WhichOneofArgType__settings: typing_extensions.TypeAlias = typing.Literal["_settings", b"_settings"]
    _WhichOneofReturnType__slug: typing_extensions.TypeAlias = typing.Literal["slug"]
    _WhichOneofArgType__slug: typing_extensions.TypeAlias = typing.Literal["_slug", b"_slug"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__description) -> _WhichOneofReturnType__description | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__name) -> _WhichOneofReturnType__name | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__settings) -> _WhichOneofReturnType__settings | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__slug) -> _WhichOneofReturnType__slug | None: ...

Global___UpdateProjectRequest: typing_extensions.TypeAlias = UpdateProjectRequest

@typing.final
class ArchiveProjectRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROJECT_ID_FIELD_NUMBER: builtins.int
    project_id: builtins.str
    """Project ID to archive"""
    def __init__(
        self,
        *,
        project_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["project_id", b"project_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ArchiveProjectRequest: typing_extensions.TypeAlias = ArchiveProjectRequest

@typing.final
class RestoreProjectRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROJECT_ID_FIELD_NUMBER: builtins.int
    project_id: builtins.str
    """Project ID to restore"""
    def __init__(
        self,
        *,
        project_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["project_id", b"project_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___RestoreProjectRequest: typing_extensions.TypeAlias = RestoreProjectRequest

@typing.final
class DeleteProjectRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROJECT_ID_FIELD_NUMBER: builtins.int
    project_id: builtins.str
    """Project ID to delete"""
    def __init__(
        self,
        *,
        project_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["project_id", b"project_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DeleteProjectRequest: typing_extensions.TypeAlias = DeleteProjectRequest

@typing.final
class DeleteProjectResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SUCCESS_FIELD_NUMBER: builtins.int
    success: builtins.bool
    """Whether deletion succeeded"""
    def __init__(
        self,
        *,
        success: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["success", b"success"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DeleteProjectResponse: typing_extensions.TypeAlias = DeleteProjectResponse

@typing.final
class SetActiveProjectRequest(google.protobuf.message.Message):
    """-----------------------------------------------------------------------------
    Active Project Request/Response Messages
    -----------------------------------------------------------------------------
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    WORKSPACE_ID_FIELD_NUMBER: builtins.int
    PROJECT_ID_FIELD_NUMBER: builtins.int
    workspace_id: builtins.str
    """Workspace scope"""
    project_id: builtins.str
    """Project ID to set as active (empty to clear)"""
    def __init__(
        self,
        *,
        workspace_id: builtins.str = ...,
        project_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["project_id", b"project_id", "workspace_id", b"workspace_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___SetActiveProjectRequest: typing_extensions.TypeAlias = SetActiveProjectRequest

@typing.final
class SetActiveProjectResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

Global___SetActiveProjectResponse: typing_extensions.TypeAlias = SetActiveProjectResponse

@typing.final
class GetActiveProjectRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    WORKSPACE_ID_FIELD_NUMBER: builtins.int
    workspace_id: builtins.str
    """Workspace scope"""
    def __init__(
        self,
        *,
        workspace_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["workspace_id", b"workspace_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetActiveProjectRequest: typing_extensions.TypeAlias = GetActiveProjectRequest

@typing.final
class GetActiveProjectResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROJECT_ID_FIELD_NUMBER: builtins.int
    PROJECT_FIELD_NUMBER: builtins.int
    project_id: builtins.str
    """Active project ID (unset if workspace default is used)"""
    @property
    def project(self) -> Global___ProjectProto:
        """Resolved project (default if none set)"""

    def __init__(
        self,
        *,
        project_id: builtins.str | None = ...,
        project: Global___ProjectProto | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_project_id", b"_project_id", "project", b"project", "project_id", b"project_id"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_project_id", b"_project_id", "project", b"project", "project_id", b"project_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__project_id: typing_extensions.TypeAlias = typing.Literal["project_id"]
    _WhichOneofArgType__project_id: typing_extensions.TypeAlias = typing.Literal["_project_id", b"_project_id"]
    def WhichOneof(self, oneof_group: _WhichOneofArgType__project_id) -> _WhichOneofReturnType__project_id | None: ...

Global___GetActiveProjectResponse: typing_extensions.TypeAlias = GetActiveProjectResponse

@typing.final
class AddProjectMemberRequest(google.protobuf.message.Message):
    """-----------------------------------------------------------------------------
    Project Membership Request/Response Messages
    -----------------------------------------------------------------------------
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROJECT_ID_FIELD_NUMBER: builtins.int
    USER_ID_FIELD_NUMBER: builtins.int
    ROLE_FIELD_NUMBER: builtins.int
    project_id: builtins.str
    """Project ID"""
    user_id: builtins.str
    """User ID to add"""
    role: Global___ProjectRoleProto.ValueType
    """Role to assign"""
    def __init__(
        self,
        *,
        project_id: builtins.str = ...,
        user_id: builtins.str = ...,
        role: Global___ProjectRoleProto.ValueType = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["project_id", b"project_id", "role", b"role", "user_id", b"user_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___AddProjectMemberRequest: typing_extensions.TypeAlias = AddProjectMemberRequest

@typing.final
class UpdateProjectMemberRoleRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROJECT_ID_FIELD_NUMBER: builtins.int
    USER_ID_FIELD_NUMBER: builtins.int
    ROLE_FIELD_NUMBER: builtins.int
    project_id: builtins.str
    """Project ID"""
    user_id: builtins.str
    """User ID"""
    role: Global___ProjectRoleProto.ValueType
    """New role"""
    def __init__(
        self,
        *,
        project_id: builtins.str = ...,
        user_id: builtins.str = ...,
        role: Global___ProjectRoleProto.ValueType = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["project_id", b"project_id", "role", b"role", "user_id", b"user_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___UpdateProjectMemberRoleRequest: typing_extensions.TypeAlias = UpdateProjectMemberRoleRequest

@typing.final
class RemoveProjectMemberRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROJECT_ID_FIELD_NUMBER: builtins.int
    USER_ID_FIELD_NUMBER: builtins.int
    project_id: builtins.str
    """Project ID"""
    user_id: builtins.str
    """User ID to remove"""
    def __init__(
        self,
        *,
        project_id: builtins.str = ...,
        user_id: builtins.str = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["project_id", b"project_id", "user_id", b"user_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___RemoveProjectMemberRequest: typing_extensions.TypeAlias = RemoveProjectMemberRequest

@typing.final
class RemoveProjectMemberResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SUCCESS_FIELD_NUMBER: builtins.int
    success: builtins.bool
    """Whether removal succeeded"""
    def __init__(
        self,
        *,
        success: builtins.bool = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["success", b"success"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___RemoveProjectMemberResponse: typing_extensions.TypeAlias = RemoveProjectMemberResponse

@typing.final
class ListProjectMembersRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROJECT_ID_FIELD_NUMBER: builtins.int
    LIMIT_FIELD_NUMBER: builtins.int
    OFFSET_FIELD_NUMBER: builtins.int
    project_id: builtins.str
    """Project ID"""
    limit: builtins.int
    """Maximum members to return (default: 100)"""
    offset: builtins.int
    """Pagination offset"""
    def __init__(
        self,
        *,
        project_id: builtins.str = ...,
        limit: builtins.int = ...,
        offset: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["limit", b"limit", "offset", b"offset", "project_id", b"project_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListProjectMembersRequest: typing_extensions.TypeAlias = ListProjectMembersRequest

@typing.final
class ListProjectMembersResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEMBERS_FIELD_NUMBER: builtins.int
    TOTAL_COUNT_FIELD_NUMBER: builtins.int
    total_count: builtins.int
    """Total count"""
    @property
    def members(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___ProjectMembershipProto]:
        """Project members"""

    def __init__(
        self,
        *,
        members: collections.abc.Iterable[Global___ProjectMembershipProto] | None = ...,
        total_count: builtins.int = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["members", b"members", "total_count", b"total_count"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListProjectMembersResponse: typing_extensions.TypeAlias = ListProjectMembersResponse
