"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.duration_pb2
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import google.protobuf.timestamp_pb2
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 _MediaType:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _MediaTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MediaType.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    MEDIA_TYPE_UNSPECIFIED: _MediaType.ValueType  # 0
    MEDIA_TYPE_AUDIO: _MediaType.ValueType  # 1
    MEDIA_TYPE_VIDEO: _MediaType.ValueType  # 2

class MediaType(_MediaType, metaclass=_MediaTypeEnumTypeWrapper): ...

MEDIA_TYPE_UNSPECIFIED: MediaType.ValueType  # 0
MEDIA_TYPE_AUDIO: MediaType.ValueType  # 1
MEDIA_TYPE_VIDEO: MediaType.ValueType  # 2
global___MediaType = MediaType

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

class _MediaStateChangeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MediaStateChange.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    MEDIA_STATE_CHANGE_UNSPECIFIED: _MediaStateChange.ValueType  # 0
    MEDIA_STATE_CHANGE_STARTED: _MediaStateChange.ValueType  # 1
    MEDIA_STATE_CHANGE_ENDED: _MediaStateChange.ValueType  # 2

class MediaStateChange(_MediaStateChange, metaclass=_MediaStateChangeEnumTypeWrapper): ...

MEDIA_STATE_CHANGE_UNSPECIFIED: MediaStateChange.ValueType  # 0
MEDIA_STATE_CHANGE_STARTED: MediaStateChange.ValueType  # 1
MEDIA_STATE_CHANGE_ENDED: MediaStateChange.ValueType  # 2
global___MediaStateChange = MediaStateChange

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

class _MediaDirectionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MediaDirection.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    MEDIA_DIRECTION_UNSPECIFIED: _MediaDirection.ValueType  # 0
    MEDIA_DIRECTION_SEND: _MediaDirection.ValueType  # 1
    MEDIA_DIRECTION_RECEIVE: _MediaDirection.ValueType  # 2

class MediaDirection(_MediaDirection, metaclass=_MediaDirectionEnumTypeWrapper): ...

MEDIA_DIRECTION_UNSPECIFIED: MediaDirection.ValueType  # 0
MEDIA_DIRECTION_SEND: MediaDirection.ValueType  # 1
MEDIA_DIRECTION_RECEIVE: MediaDirection.ValueType  # 2
global___MediaDirection = MediaDirection

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

class _MediaStateChangeReasonEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MediaStateChangeReason.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    MEDIA_STATE_CHANGE_REASON_UNSPECIFIED: _MediaStateChangeReason.ValueType  # 0
    MEDIA_STATE_CHANGE_REASON_MUTE: _MediaStateChangeReason.ValueType  # 1
    MEDIA_STATE_CHANGE_REASON_CONNECTION: _MediaStateChangeReason.ValueType  # 2

class MediaStateChangeReason(_MediaStateChangeReason, metaclass=_MediaStateChangeReasonEnumTypeWrapper): ...

MEDIA_STATE_CHANGE_REASON_UNSPECIFIED: MediaStateChangeReason.ValueType  # 0
MEDIA_STATE_CHANGE_REASON_MUTE: MediaStateChangeReason.ValueType  # 1
MEDIA_STATE_CHANGE_REASON_CONNECTION: MediaStateChangeReason.ValueType  # 2
global___MediaStateChangeReason = MediaStateChangeReason

class ParticipantConnected(google.protobuf.message.Message):
    """ParticipantConnected is fired when a user joins a call"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___ParticipantConnected = ParticipantConnected

class ParticipantDisconnected(google.protobuf.message.Message):
    """ParticipantDisconnected is fired when a user leaves a call"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___ParticipantDisconnected = ParticipantDisconnected

class Freeze(google.protobuf.message.Message):
    """The participant experienced a significant amount of audio/video freeze when observing a given peer"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEDIA_TYPE_FIELD_NUMBER: builtins.int
    PEER_ID_FIELD_NUMBER: builtins.int
    DURATION_FIELD_NUMBER: builtins.int
    media_type: global___MediaType.ValueType
    peer_id: builtins.str
    """Sender of the media stream"""
    @property
    def duration(self) -> google.protobuf.duration_pb2.Duration: ...
    def __init__(
        self,
        *,
        media_type: global___MediaType.ValueType = ...,
        peer_id: builtins.str = ...,
        duration: google.protobuf.duration_pb2.Duration | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["duration", b"duration"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["duration", b"duration", "media_type", b"media_type", "peer_id", b"peer_id"]) -> None: ...

global___Freeze = Freeze

class MediaStateChanged(google.protobuf.message.Message):
    """A participant started/ended sending/receiving audio/video for a given reason"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MEDIA_TYPE_FIELD_NUMBER: builtins.int
    CHANGE_FIELD_NUMBER: builtins.int
    DIRECTION_FIELD_NUMBER: builtins.int
    REASON_FIELD_NUMBER: builtins.int
    media_type: global___MediaType.ValueType
    change: global___MediaStateChange.ValueType
    direction: global___MediaDirection.ValueType
    reason: global___MediaStateChangeReason.ValueType
    def __init__(
        self,
        *,
        media_type: global___MediaType.ValueType = ...,
        change: global___MediaStateChange.ValueType = ...,
        direction: global___MediaDirection.ValueType = ...,
        reason: global___MediaStateChangeReason.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["change", b"change", "direction", b"direction", "media_type", b"media_type", "reason", b"reason"]) -> None: ...

global___MediaStateChanged = MediaStateChanged

class TelemetryEvent(google.protobuf.message.Message):
    """A stat event from the perspective of a particular participant"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TIMESTAMP_FIELD_NUMBER: builtins.int
    PARTICIPANT_CONNECTED_FIELD_NUMBER: builtins.int
    PARTICIPANT_DISCONNECTED_FIELD_NUMBER: builtins.int
    MEDIA_STATE_CHANGED_FIELD_NUMBER: builtins.int
    FREEZE_FIELD_NUMBER: builtins.int
    @property
    def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Event timestamp as RFC3339 string."""
    @property
    def participant_connected(self) -> global___ParticipantConnected: ...
    @property
    def participant_disconnected(self) -> global___ParticipantDisconnected: ...
    @property
    def media_state_changed(self) -> global___MediaStateChanged: ...
    @property
    def freeze(self) -> global___Freeze: ...
    def __init__(
        self,
        *,
        timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        participant_connected: global___ParticipantConnected | None = ...,
        participant_disconnected: global___ParticipantDisconnected | None = ...,
        media_state_changed: global___MediaStateChanged | None = ...,
        freeze: global___Freeze | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["event", b"event", "freeze", b"freeze", "media_state_changed", b"media_state_changed", "participant_connected", b"participant_connected", "participant_disconnected", b"participant_disconnected", "timestamp", b"timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["event", b"event", "freeze", b"freeze", "media_state_changed", b"media_state_changed", "participant_connected", b"participant_connected", "participant_disconnected", b"participant_disconnected", "timestamp", b"timestamp"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["event", b"event"]) -> typing_extensions.Literal["participant_connected", "participant_disconnected", "media_state_changed", "freeze"] | None: ...

global___TelemetryEvent = TelemetryEvent

class CallParticipantTimeline(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    USER_ID_FIELD_NUMBER: builtins.int
    SESSION_ID_FIELD_NUMBER: builtins.int
    EVENTS_FIELD_NUMBER: builtins.int
    user_id: builtins.str
    """The events in this timeline are from the perspective of the user with this ID"""
    session_id: builtins.str
    @property
    def events(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TelemetryEvent]: ...
    def __init__(
        self,
        *,
        user_id: builtins.str = ...,
        session_id: builtins.str = ...,
        events: collections.abc.Iterable[global___TelemetryEvent] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["events", b"events", "session_id", b"session_id", "user_id", b"user_id"]) -> None: ...

global___CallParticipantTimeline = CallParticipantTimeline
