"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
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 google.protobuf.struct_pb2
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 _PeerType:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _PeerTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PeerType.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    PEER_TYPE_PUBLISHER_UNSPECIFIED: _PeerType.ValueType  # 0
    """todo fix me (marcelo)"""
    PEER_TYPE_SUBSCRIBER: _PeerType.ValueType  # 1

class PeerType(_PeerType, metaclass=_PeerTypeEnumTypeWrapper): ...

PEER_TYPE_PUBLISHER_UNSPECIFIED: PeerType.ValueType  # 0
"""todo fix me (marcelo)"""
PEER_TYPE_SUBSCRIBER: PeerType.ValueType  # 1
global___PeerType = PeerType

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

class _ConnectionQualityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ConnectionQuality.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    CONNECTION_QUALITY_UNSPECIFIED: _ConnectionQuality.ValueType  # 0
    CONNECTION_QUALITY_POOR: _ConnectionQuality.ValueType  # 1
    CONNECTION_QUALITY_GOOD: _ConnectionQuality.ValueType  # 2
    CONNECTION_QUALITY_EXCELLENT: _ConnectionQuality.ValueType  # 3

class ConnectionQuality(_ConnectionQuality, metaclass=_ConnectionQualityEnumTypeWrapper): ...

CONNECTION_QUALITY_UNSPECIFIED: ConnectionQuality.ValueType  # 0
CONNECTION_QUALITY_POOR: ConnectionQuality.ValueType  # 1
CONNECTION_QUALITY_GOOD: ConnectionQuality.ValueType  # 2
CONNECTION_QUALITY_EXCELLENT: ConnectionQuality.ValueType  # 3
global___ConnectionQuality = ConnectionQuality

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

class _VideoQualityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_VideoQuality.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    VIDEO_QUALITY_LOW_UNSPECIFIED: _VideoQuality.ValueType  # 0
    VIDEO_QUALITY_MID: _VideoQuality.ValueType  # 1
    VIDEO_QUALITY_HIGH: _VideoQuality.ValueType  # 2
    VIDEO_QUALITY_OFF: _VideoQuality.ValueType  # 3

class VideoQuality(_VideoQuality, metaclass=_VideoQualityEnumTypeWrapper): ...

VIDEO_QUALITY_LOW_UNSPECIFIED: VideoQuality.ValueType  # 0
VIDEO_QUALITY_MID: VideoQuality.ValueType  # 1
VIDEO_QUALITY_HIGH: VideoQuality.ValueType  # 2
VIDEO_QUALITY_OFF: VideoQuality.ValueType  # 3
global___VideoQuality = VideoQuality

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

class _TrackTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TrackType.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    TRACK_TYPE_UNSPECIFIED: _TrackType.ValueType  # 0
    TRACK_TYPE_AUDIO: _TrackType.ValueType  # 1
    TRACK_TYPE_VIDEO: _TrackType.ValueType  # 2
    TRACK_TYPE_SCREEN_SHARE: _TrackType.ValueType  # 3
    TRACK_TYPE_SCREEN_SHARE_AUDIO: _TrackType.ValueType  # 4

class TrackType(_TrackType, metaclass=_TrackTypeEnumTypeWrapper): ...

TRACK_TYPE_UNSPECIFIED: TrackType.ValueType  # 0
TRACK_TYPE_AUDIO: TrackType.ValueType  # 1
TRACK_TYPE_VIDEO: TrackType.ValueType  # 2
TRACK_TYPE_SCREEN_SHARE: TrackType.ValueType  # 3
TRACK_TYPE_SCREEN_SHARE_AUDIO: TrackType.ValueType  # 4
global___TrackType = TrackType

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

class _ErrorCodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ErrorCode.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    ERROR_CODE_UNSPECIFIED: _ErrorCode.ValueType  # 0
    ERROR_CODE_PUBLISH_TRACK_NOT_FOUND: _ErrorCode.ValueType  # 100
    ERROR_CODE_PUBLISH_TRACKS_MISMATCH: _ErrorCode.ValueType  # 101
    ERROR_CODE_PUBLISH_TRACK_OUT_OF_ORDER: _ErrorCode.ValueType  # 102
    ERROR_CODE_PUBLISH_TRACK_VIDEO_LAYER_NOT_FOUND: _ErrorCode.ValueType  # 103
    ERROR_CODE_PARTICIPANT_NOT_FOUND: _ErrorCode.ValueType  # 200
    ERROR_CODE_CALL_NOT_FOUND: _ErrorCode.ValueType  # 300
    ERROR_CODE_INTERNAL_SERVER_ERROR: _ErrorCode.ValueType  # 500

class ErrorCode(_ErrorCode, metaclass=_ErrorCodeEnumTypeWrapper): ...

ERROR_CODE_UNSPECIFIED: ErrorCode.ValueType  # 0
ERROR_CODE_PUBLISH_TRACK_NOT_FOUND: ErrorCode.ValueType  # 100
ERROR_CODE_PUBLISH_TRACKS_MISMATCH: ErrorCode.ValueType  # 101
ERROR_CODE_PUBLISH_TRACK_OUT_OF_ORDER: ErrorCode.ValueType  # 102
ERROR_CODE_PUBLISH_TRACK_VIDEO_LAYER_NOT_FOUND: ErrorCode.ValueType  # 103
ERROR_CODE_PARTICIPANT_NOT_FOUND: ErrorCode.ValueType  # 200
ERROR_CODE_CALL_NOT_FOUND: ErrorCode.ValueType  # 300
ERROR_CODE_INTERNAL_SERVER_ERROR: ErrorCode.ValueType  # 500
global___ErrorCode = ErrorCode

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

    PARTICIPANTS_FIELD_NUMBER: builtins.int
    @property
    def participants(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Participant]: ...
    def __init__(
        self,
        *,
        participants: collections.abc.Iterable[global___Participant] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["participants", b"participants"]) -> None: ...

global___CallState = CallState

class Participant(google.protobuf.message.Message):
    """those who are online in the call"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    USER_ID_FIELD_NUMBER: builtins.int
    SESSION_ID_FIELD_NUMBER: builtins.int
    PUBLISHED_TRACKS_FIELD_NUMBER: builtins.int
    JOINED_AT_FIELD_NUMBER: builtins.int
    TRACK_LOOKUP_PREFIX_FIELD_NUMBER: builtins.int
    CONNECTION_QUALITY_FIELD_NUMBER: builtins.int
    user_id: builtins.str
    session_id: builtins.str
    @property
    def published_tracks(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___TrackType.ValueType]:
        """map of track id to track type"""
    @property
    def joined_at(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    track_lookup_prefix: builtins.str
    connection_quality: global___ConnectionQuality.ValueType
    def __init__(
        self,
        *,
        user_id: builtins.str = ...,
        session_id: builtins.str = ...,
        published_tracks: collections.abc.Iterable[global___TrackType.ValueType] | None = ...,
        joined_at: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        track_lookup_prefix: builtins.str = ...,
        connection_quality: global___ConnectionQuality.ValueType = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["joined_at", b"joined_at"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["connection_quality", b"connection_quality", "joined_at", b"joined_at", "published_tracks", b"published_tracks", "session_id", b"session_id", "track_lookup_prefix", b"track_lookup_prefix", "user_id", b"user_id"]) -> None: ...

global___Participant = Participant

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

    VIDEO_QUALITY_FIELD_NUMBER: builtins.int
    USER_ID_FIELD_NUMBER: builtins.int
    video_quality: global___VideoQuality.ValueType
    user_id: builtins.str
    def __init__(
        self,
        *,
        video_quality: global___VideoQuality.ValueType = ...,
        user_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["user_id", b"user_id", "video_quality", b"video_quality"]) -> None: ...

global___StreamQuality = StreamQuality

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

    WIDTH_FIELD_NUMBER: builtins.int
    HEIGHT_FIELD_NUMBER: builtins.int
    width: builtins.int
    height: builtins.int
    def __init__(
        self,
        *,
        width: builtins.int = ...,
        height: builtins.int = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["height", b"height", "width", b"width"]) -> None: ...

global___VideoDimension = VideoDimension

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

    RID_FIELD_NUMBER: builtins.int
    VIDEO_DIMENSION_FIELD_NUMBER: builtins.int
    BITRATE_FIELD_NUMBER: builtins.int
    FPS_FIELD_NUMBER: builtins.int
    QUALITY_FIELD_NUMBER: builtins.int
    rid: builtins.str
    """for tracks with a single layer, this should be HIGH"""
    @property
    def video_dimension(self) -> global___VideoDimension: ...
    bitrate: builtins.int
    """target bitrate, server will measure actual"""
    fps: builtins.int
    quality: global___VideoQuality.ValueType
    def __init__(
        self,
        *,
        rid: builtins.str = ...,
        video_dimension: global___VideoDimension | None = ...,
        bitrate: builtins.int = ...,
        fps: builtins.int = ...,
        quality: global___VideoQuality.ValueType = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["video_dimension", b"video_dimension"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["bitrate", b"bitrate", "fps", b"fps", "quality", b"quality", "rid", b"rid", "video_dimension", b"video_dimension"]) -> None: ...

global___VideoLayer = VideoLayer

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

    PAYLOAD_TYPE_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    FMTP_LINE_FIELD_NUMBER: builtins.int
    CLOCK_RATE_FIELD_NUMBER: builtins.int
    ENCODING_PARAMETERS_FIELD_NUMBER: builtins.int
    FEEDBACKS_FIELD_NUMBER: builtins.int
    payload_type: builtins.int
    name: builtins.str
    fmtp_line: builtins.str
    clock_rate: builtins.int
    encoding_parameters: builtins.str
    @property
    def feedbacks(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    def __init__(
        self,
        *,
        payload_type: builtins.int = ...,
        name: builtins.str = ...,
        fmtp_line: builtins.str = ...,
        clock_rate: builtins.int = ...,
        encoding_parameters: builtins.str = ...,
        feedbacks: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["clock_rate", b"clock_rate", "encoding_parameters", b"encoding_parameters", "feedbacks", b"feedbacks", "fmtp_line", b"fmtp_line", "name", b"name", "payload_type", b"payload_type"]) -> None: ...

global___Codec = Codec

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

    PEER_TYPE_FIELD_NUMBER: builtins.int
    ICE_CANDIDATE_FIELD_NUMBER: builtins.int
    SESSION_ID_FIELD_NUMBER: builtins.int
    peer_type: global___PeerType.ValueType
    ice_candidate: builtins.str
    session_id: builtins.str
    def __init__(
        self,
        *,
        peer_type: global___PeerType.ValueType = ...,
        ice_candidate: builtins.str = ...,
        session_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["ice_candidate", b"ice_candidate", "peer_type", b"peer_type", "session_id", b"session_id"]) -> None: ...

global___ICETrickle = ICETrickle

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

    TRACK_ID_FIELD_NUMBER: builtins.int
    TRACK_TYPE_FIELD_NUMBER: builtins.int
    LAYERS_FIELD_NUMBER: builtins.int
    MID_FIELD_NUMBER: builtins.int
    track_id: builtins.str
    track_type: global___TrackType.ValueType
    @property
    def layers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___VideoLayer]: ...
    mid: builtins.str
    def __init__(
        self,
        *,
        track_id: builtins.str = ...,
        track_type: global___TrackType.ValueType = ...,
        layers: collections.abc.Iterable[global___VideoLayer] | None = ...,
        mid: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["layers", b"layers", "mid", b"mid", "track_id", b"track_id", "track_type", b"track_type"]) -> None: ...

global___TrackInfo = TrackInfo

class Call(google.protobuf.message.Message):
    """todo remove this"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TYPE_FIELD_NUMBER: builtins.int
    ID_FIELD_NUMBER: builtins.int
    CREATED_BY_USER_ID_FIELD_NUMBER: builtins.int
    HOST_USER_ID_FIELD_NUMBER: builtins.int
    CUSTOM_FIELD_NUMBER: builtins.int
    CREATED_AT_FIELD_NUMBER: builtins.int
    UPDATED_AT_FIELD_NUMBER: builtins.int
    type: builtins.str
    """the call type"""
    id: builtins.str
    """the call id"""
    created_by_user_id: builtins.str
    """the id of the user that created this call"""
    host_user_id: builtins.str
    """the id of the current host for this call"""
    @property
    def custom(self) -> google.protobuf.struct_pb2.Struct: ...
    @property
    def created_at(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    @property
    def updated_at(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    def __init__(
        self,
        *,
        type: builtins.str = ...,
        id: builtins.str = ...,
        created_by_user_id: builtins.str = ...,
        host_user_id: builtins.str = ...,
        custom: google.protobuf.struct_pb2.Struct | None = ...,
        created_at: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        updated_at: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["created_at", b"created_at", "custom", b"custom", "updated_at", b"updated_at"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["created_at", b"created_at", "created_by_user_id", b"created_by_user_id", "custom", b"custom", "host_user_id", b"host_user_id", "id", b"id", "type", b"type", "updated_at", b"updated_at"]) -> None: ...

global___Call = Call

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

    CODE_FIELD_NUMBER: builtins.int
    MESSAGE_FIELD_NUMBER: builtins.int
    code: global___ErrorCode.ValueType
    message: builtins.str
    def __init__(
        self,
        *,
        code: global___ErrorCode.ValueType = ...,
        message: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["code", b"code", "message", b"message"]) -> None: ...

global___Error = Error
