"""
@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 sys
import typing
import video.sfu.models.models_pb2

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class SfuEvent(google.protobuf.message.Message):
    """SFUEvent is a message that is sent from the SFU to the client."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SUBSCRIBER_OFFER_FIELD_NUMBER: builtins.int
    PUBLISHER_ANSWER_FIELD_NUMBER: builtins.int
    CONNECTION_QUALITY_CHANGED_FIELD_NUMBER: builtins.int
    AUDIO_LEVEL_CHANGED_FIELD_NUMBER: builtins.int
    ICE_TRICKLE_FIELD_NUMBER: builtins.int
    CHANGE_PUBLISH_QUALITY_FIELD_NUMBER: builtins.int
    LOCAL_DEVICE_CHANGE_FIELD_NUMBER: builtins.int
    MUTE_STATE_CHANGED_FIELD_NUMBER: builtins.int
    VIDEO_QUALITY_CHANGED_FIELD_NUMBER: builtins.int
    PARTICIPANT_JOINED_FIELD_NUMBER: builtins.int
    PARTICIPANT_LEFT_FIELD_NUMBER: builtins.int
    DOMINANT_SPEAKER_CHANGED_FIELD_NUMBER: builtins.int
    JOIN_RESPONSE_FIELD_NUMBER: builtins.int
    HEALTH_CHECK_RESPONSE_FIELD_NUMBER: builtins.int
    @property
    def subscriber_offer(self) -> global___SubscriberOffer: ...
    @property
    def publisher_answer(self) -> global___PublisherAnswer: ...
    @property
    def connection_quality_changed(self) -> global___ConnectionQualityChanged: ...
    @property
    def audio_level_changed(self) -> global___AudioLevelChanged: ...
    @property
    def ice_trickle(self) -> video.sfu.models.models_pb2.ICETrickle: ...
    @property
    def change_publish_quality(self) -> global___ChangePublishQuality: ...
    @property
    def local_device_change(self) -> global___LocalDeviceChange: ...
    @property
    def mute_state_changed(self) -> global___MuteStateChanged: ...
    @property
    def video_quality_changed(self) -> global___VideoQualityChanged: ...
    @property
    def participant_joined(self) -> global___ParticipantJoined: ...
    @property
    def participant_left(self) -> global___ParticipantLeft: ...
    @property
    def dominant_speaker_changed(self) -> global___DominantSpeakerChanged: ...
    @property
    def join_response(self) -> global___JoinResponse: ...
    @property
    def health_check_response(self) -> global___HealthCheckResponse: ...
    def __init__(
        self,
        *,
        subscriber_offer: global___SubscriberOffer | None = ...,
        publisher_answer: global___PublisherAnswer | None = ...,
        connection_quality_changed: global___ConnectionQualityChanged | None = ...,
        audio_level_changed: global___AudioLevelChanged | None = ...,
        ice_trickle: video.sfu.models.models_pb2.ICETrickle | None = ...,
        change_publish_quality: global___ChangePublishQuality | None = ...,
        local_device_change: global___LocalDeviceChange | None = ...,
        mute_state_changed: global___MuteStateChanged | None = ...,
        video_quality_changed: global___VideoQualityChanged | None = ...,
        participant_joined: global___ParticipantJoined | None = ...,
        participant_left: global___ParticipantLeft | None = ...,
        dominant_speaker_changed: global___DominantSpeakerChanged | None = ...,
        join_response: global___JoinResponse | None = ...,
        health_check_response: global___HealthCheckResponse | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["audio_level_changed", b"audio_level_changed", "change_publish_quality", b"change_publish_quality", "connection_quality_changed", b"connection_quality_changed", "dominant_speaker_changed", b"dominant_speaker_changed", "event_payload", b"event_payload", "health_check_response", b"health_check_response", "ice_trickle", b"ice_trickle", "join_response", b"join_response", "local_device_change", b"local_device_change", "mute_state_changed", b"mute_state_changed", "participant_joined", b"participant_joined", "participant_left", b"participant_left", "publisher_answer", b"publisher_answer", "subscriber_offer", b"subscriber_offer", "video_quality_changed", b"video_quality_changed"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["audio_level_changed", b"audio_level_changed", "change_publish_quality", b"change_publish_quality", "connection_quality_changed", b"connection_quality_changed", "dominant_speaker_changed", b"dominant_speaker_changed", "event_payload", b"event_payload", "health_check_response", b"health_check_response", "ice_trickle", b"ice_trickle", "join_response", b"join_response", "local_device_change", b"local_device_change", "mute_state_changed", b"mute_state_changed", "participant_joined", b"participant_joined", "participant_left", b"participant_left", "publisher_answer", b"publisher_answer", "subscriber_offer", b"subscriber_offer", "video_quality_changed", b"video_quality_changed"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["event_payload", b"event_payload"]) -> typing_extensions.Literal["subscriber_offer", "publisher_answer", "connection_quality_changed", "audio_level_changed", "ice_trickle", "change_publish_quality", "local_device_change", "mute_state_changed", "video_quality_changed", "participant_joined", "participant_left", "dominant_speaker_changed", "join_response", "health_check_response"] | None: ...

global___SfuEvent = SfuEvent

class SfuRequest(google.protobuf.message.Message):
    """SfuRequest is a message that is sent from the client to the SFU."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    JOIN_REQUEST_FIELD_NUMBER: builtins.int
    HEALTH_CHECK_REQUEST_FIELD_NUMBER: builtins.int
    @property
    def join_request(self) -> global___JoinRequest: ...
    @property
    def health_check_request(self) -> global___HealthCheckRequest: ...
    def __init__(
        self,
        *,
        join_request: global___JoinRequest | None = ...,
        health_check_request: global___HealthCheckRequest | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["health_check_request", b"health_check_request", "join_request", b"join_request", "request_payload", b"request_payload"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["health_check_request", b"health_check_request", "join_request", b"join_request", "request_payload", b"request_payload"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["request_payload", b"request_payload"]) -> typing_extensions.Literal["join_request", "health_check_request"] | None: ...

global___SfuRequest = SfuRequest

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

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

global___HealthCheckRequest = HealthCheckRequest

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

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

global___HealthCheckResponse = HealthCheckResponse

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

    TOKEN_FIELD_NUMBER: builtins.int
    SESSION_ID_FIELD_NUMBER: builtins.int
    PUBLISH_FIELD_NUMBER: builtins.int
    CODEC_SETTINGS_FIELD_NUMBER: builtins.int
    token: builtins.str
    session_id: builtins.str
    publish: builtins.bool
    @property
    def codec_settings(self) -> video.sfu.models.models_pb2.CodecSettings:
        """TODO: we should know if this is going to be
        - publishing and subscribing, or just subscribing for future routing
        """
    def __init__(
        self,
        *,
        token: builtins.str = ...,
        session_id: builtins.str = ...,
        publish: builtins.bool = ...,
        codec_settings: video.sfu.models.models_pb2.CodecSettings | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["codec_settings", b"codec_settings"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["codec_settings", b"codec_settings", "publish", b"publish", "session_id", b"session_id", "token", b"token"]) -> None: ...

global___JoinRequest = JoinRequest

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

    CALL_STATE_FIELD_NUMBER: builtins.int
    OWN_SESSION_ID_FIELD_NUMBER: builtins.int
    @property
    def call_state(self) -> video.sfu.models.models_pb2.CallState: ...
    own_session_id: builtins.str
    """TODO: include full list of participants with track and audio info"""
    def __init__(
        self,
        *,
        call_state: video.sfu.models.models_pb2.CallState | None = ...,
        own_session_id: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["call_state", b"call_state"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["call_state", b"call_state", "own_session_id", b"own_session_id"]) -> None: ...

global___JoinResponse = JoinResponse

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

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CALL_FIELD_NUMBER: builtins.int
    PARTICIPANT_FIELD_NUMBER: builtins.int
    @property
    def call(self) -> video.sfu.models.models_pb2.Call: ...
    @property
    def participant(self) -> video.sfu.models.models_pb2.Participant: ...
    def __init__(
        self,
        *,
        call: video.sfu.models.models_pb2.Call | None = ...,
        participant: video.sfu.models.models_pb2.Participant | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["call", b"call", "participant", b"participant"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["call", b"call", "participant", b"participant"]) -> None: ...

global___ParticipantJoined = ParticipantJoined

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

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CALL_FIELD_NUMBER: builtins.int
    PARTICIPANT_FIELD_NUMBER: builtins.int
    @property
    def call(self) -> video.sfu.models.models_pb2.Call: ...
    @property
    def participant(self) -> video.sfu.models.models_pb2.Participant: ...
    def __init__(
        self,
        *,
        call: video.sfu.models.models_pb2.Call | None = ...,
        participant: video.sfu.models.models_pb2.Participant | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["call", b"call", "participant", b"participant"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["call", b"call", "participant", b"participant"]) -> None: ...

global___ParticipantLeft = ParticipantLeft

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

    USER_ID_FIELD_NUMBER: builtins.int
    AUDIO_MUTED_FIELD_NUMBER: builtins.int
    VIDEO_MUTED_FIELD_NUMBER: builtins.int
    user_id: builtins.str
    audio_muted: builtins.bool
    video_muted: builtins.bool
    def __init__(
        self,
        *,
        user_id: builtins.str = ...,
        audio_muted: builtins.bool = ...,
        video_muted: builtins.bool = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["audio_muted", b"audio_muted", "user_id", b"user_id", "video_muted", b"video_muted"]) -> None: ...

global___MuteStateChanged = MuteStateChanged

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

    STREAM_QUALITIES_FIELD_NUMBER: builtins.int
    @property
    def stream_qualities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[video.sfu.models.models_pb2.StreamQuality]: ...
    def __init__(
        self,
        *,
        stream_qualities: collections.abc.Iterable[video.sfu.models.models_pb2.StreamQuality] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["stream_qualities", b"stream_qualities"]) -> None: ...

global___VideoQualityChanged = VideoQualityChanged

class SubscriberOffer(google.protobuf.message.Message):
    """SubscriberOffer is sent when the SFU adds tracks to a subscription
    this usually happens when a user joins a call and starts sending video
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SDP_FIELD_NUMBER: builtins.int
    sdp: builtins.str
    def __init__(
        self,
        *,
        sdp: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["sdp", b"sdp"]) -> None: ...

global___SubscriberOffer = SubscriberOffer

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

    SDP_FIELD_NUMBER: builtins.int
    sdp: builtins.str
    def __init__(
        self,
        *,
        sdp: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["sdp", b"sdp"]) -> None: ...

global___PublisherAnswer = PublisherAnswer

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

    TYPE_FIELD_NUMBER: builtins.int
    type: builtins.str
    def __init__(
        self,
        *,
        type: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["type", b"type"]) -> None: ...

global___LocalDeviceChange = LocalDeviceChange

class ICECandidateTrickle(google.protobuf.message.Message):
    """ICECandidateTrickle is about the ICE nonsense stuff"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CANDIDATE_FIELD_NUMBER: builtins.int
    candidate: builtins.str
    def __init__(
        self,
        *,
        candidate: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["candidate", b"candidate"]) -> None: ...

global___ICECandidateTrickle = ICECandidateTrickle

class ConnectionQualityChanged(google.protobuf.message.Message):
    """ConnectionQuality is sent to inform about connection quality changes
    eg. thierry's connection is not good -> render a red icon Zoom style
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    USER_ID_FIELD_NUMBER: builtins.int
    CONNECTION_QUALITY_FIELD_NUMBER: builtins.int
    user_id: builtins.str
    connection_quality: video.sfu.models.models_pb2.ConnectionQuality.ValueType
    def __init__(
        self,
        *,
        user_id: builtins.str = ...,
        connection_quality: video.sfu.models.models_pb2.ConnectionQuality.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["connection_quality", b"connection_quality", "user_id", b"user_id"]) -> None: ...

global___ConnectionQualityChanged = ConnectionQualityChanged

class DominantSpeakerChanged(google.protobuf.message.Message):
    """DominantSpeakerChanged is sent by the SFU to notify when there is a new dominant speaker in the call"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___DominantSpeakerChanged = DominantSpeakerChanged

class AudioLevelChanged(google.protobuf.message.Message):
    """AudioLevelChanged is sent by the SFU to notify about audio levels by user"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___AudioLevelChanged = AudioLevelChanged

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

    USER_ID_FIELD_NUMBER: builtins.int
    LEVEL_FIELD_NUMBER: builtins.int
    user_id: builtins.str
    level: builtins.float
    """0.0 means complete silence, 1.0 loudest"""
    def __init__(
        self,
        *,
        user_id: builtins.str = ...,
        level: builtins.float = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["level", b"level", "user_id", b"user_id"]) -> None: ...

global___AudioLevel = AudioLevel

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

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

global___AudioLayerSetting = AudioLayerSetting

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

    CHANNEL_COUNT_FIELD_NUMBER: builtins.int
    channel_count: builtins.int
    def __init__(
        self,
        *,
        channel_count: builtins.int = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["channel_count", b"channel_count"]) -> None: ...

global___AudioMediaRequest = AudioMediaRequest

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

    MEDIA_REQUEST_FIELD_NUMBER: builtins.int
    CODEC_FIELD_NUMBER: builtins.int
    LAYERS_FIELD_NUMBER: builtins.int
    @property
    def media_request(self) -> global___AudioMediaRequest: ...
    @property
    def codec(self) -> video.sfu.models.models_pb2.Codec: ...
    @property
    def layers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AudioLayerSetting]: ...
    def __init__(
        self,
        *,
        media_request: global___AudioMediaRequest | None = ...,
        codec: video.sfu.models.models_pb2.Codec | None = ...,
        layers: collections.abc.Iterable[global___AudioLayerSetting] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["codec", b"codec", "media_request", b"media_request"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["codec", b"codec", "layers", b"layers", "media_request", b"media_request"]) -> None: ...

global___AudioSender = AudioSender

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

    IDEAL_HEIGHT_FIELD_NUMBER: builtins.int
    IDEAL_WIDTH_FIELD_NUMBER: builtins.int
    IDEAL_FRAME_RATE_FIELD_NUMBER: builtins.int
    ideal_height: builtins.int
    ideal_width: builtins.int
    ideal_frame_rate: builtins.int
    def __init__(
        self,
        *,
        ideal_height: builtins.int = ...,
        ideal_width: builtins.int = ...,
        ideal_frame_rate: builtins.int = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["ideal_frame_rate", b"ideal_frame_rate", "ideal_height", b"ideal_height", "ideal_width", b"ideal_width"]) -> None: ...

global___VideoMediaRequest = VideoMediaRequest

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

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

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

    class Priority(_Priority, metaclass=_PriorityEnumTypeWrapper): ...
    PRIORITY_HIGH_UNSPECIFIED: VideoLayerSetting.Priority.ValueType  # 0
    PRIORITY_LOW: VideoLayerSetting.Priority.ValueType  # 1
    PRIORITY_MEDIUM: VideoLayerSetting.Priority.ValueType  # 2
    PRIORITY_VERY_LOW: VideoLayerSetting.Priority.ValueType  # 3

    NAME_FIELD_NUMBER: builtins.int
    ACTIVE_FIELD_NUMBER: builtins.int
    MAX_BITRATE_FIELD_NUMBER: builtins.int
    SCALE_RESOLUTION_DOWN_BY_FIELD_NUMBER: builtins.int
    PRIORITY_FIELD_NUMBER: builtins.int
    CODEC_FIELD_NUMBER: builtins.int
    name: builtins.str
    active: builtins.bool
    max_bitrate: builtins.int
    scale_resolution_down_by: builtins.float
    priority: global___VideoLayerSetting.Priority.ValueType
    @property
    def codec(self) -> video.sfu.models.models_pb2.Codec: ...
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        active: builtins.bool = ...,
        max_bitrate: builtins.int = ...,
        scale_resolution_down_by: builtins.float = ...,
        priority: global___VideoLayerSetting.Priority.ValueType = ...,
        codec: video.sfu.models.models_pb2.Codec | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["codec", b"codec"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["active", b"active", "codec", b"codec", "max_bitrate", b"max_bitrate", "name", b"name", "priority", b"priority", "scale_resolution_down_by", b"scale_resolution_down_by"]) -> None: ...

global___VideoLayerSetting = VideoLayerSetting

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

    MEDIA_REQUEST_FIELD_NUMBER: builtins.int
    CODEC_FIELD_NUMBER: builtins.int
    LAYERS_FIELD_NUMBER: builtins.int
    @property
    def media_request(self) -> global___VideoMediaRequest: ...
    @property
    def codec(self) -> video.sfu.models.models_pb2.Codec: ...
    @property
    def layers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___VideoLayerSetting]: ...
    def __init__(
        self,
        *,
        media_request: global___VideoMediaRequest | None = ...,
        codec: video.sfu.models.models_pb2.Codec | None = ...,
        layers: collections.abc.Iterable[global___VideoLayerSetting] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["codec", b"codec", "media_request", b"media_request"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["codec", b"codec", "layers", b"layers", "media_request", b"media_request"]) -> None: ...

global___VideoSender = VideoSender

class ChangePublishQuality(google.protobuf.message.Message):
    """sent to users when they need to change the quality of their video"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    AUDIO_SENDERS_FIELD_NUMBER: builtins.int
    VIDEO_SENDERS_FIELD_NUMBER: builtins.int
    @property
    def audio_senders(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AudioSender]: ...
    @property
    def video_senders(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___VideoSender]: ...
    def __init__(
        self,
        *,
        audio_senders: collections.abc.Iterable[global___AudioSender] | None = ...,
        video_senders: collections.abc.Iterable[global___VideoSender] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["audio_senders", b"audio_senders", "video_senders", b"video_senders"]) -> None: ...

global___ChangePublishQuality = ChangePublishQuality
