"""
@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.message
import sys

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

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

    PUBLISHER_ID_FIELD_NUMBER: builtins.int
    RID_FIELD_NUMBER: builtins.int
    CODED_FIELD_NUMBER: builtins.int
    publisher_id: builtins.str
    rid: builtins.str
    coded: builtins.str
    def __init__(
        self,
        *,
        publisher_id: builtins.str = ...,
        rid: builtins.str = ...,
        coded: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["coded", b"coded", "publisher_id", b"publisher_id", "rid", b"rid"]) -> None: ...

global___Subscription = Subscription

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

    USER_ID_FIELD_NUMBER: builtins.int
    SUBSCRIPTIONS_FIELD_NUMBER: builtins.int
    user_id: builtins.str
    @property
    def subscriptions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Subscription]: ...
    def __init__(
        self,
        *,
        user_id: builtins.str = ...,
        subscriptions: collections.abc.Iterable[global___Subscription] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["subscriptions", b"subscriptions", "user_id", b"user_id"]) -> None: ...

global___Participant = Participant

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

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

global___CallState = CallState

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

    CALL_CID_FIELD_NUMBER: builtins.int
    LOCAL_STATE_FIELD_NUMBER: builtins.int
    call_cid: builtins.str
    @property
    def local_state(self) -> global___CallState: ...
    def __init__(
        self,
        *,
        call_cid: builtins.str = ...,
        local_state: global___CallState | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["local_state", b"local_state"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["call_cid", b"call_cid", "local_state", b"local_state"]) -> None: ...

global___JoinCallRequest = JoinCallRequest

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

    SFU_ADDRESSES_FIELD_NUMBER: builtins.int
    LOCAL_STATE_FIELD_NUMBER: builtins.int
    @property
    def sfu_addresses(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    @property
    def local_state(self) -> global___CallState: ...
    def __init__(
        self,
        *,
        sfu_addresses: collections.abc.Iterable[builtins.str] | None = ...,
        local_state: global___CallState | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["local_state", b"local_state"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["local_state", b"local_state", "sfu_addresses", b"sfu_addresses"]) -> None: ...

global___JoinCallResponse = JoinCallResponse

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

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

global___GetCallStateRequest = GetCallStateRequest

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

    LOCAL_STATE_FIELD_NUMBER: builtins.int
    @property
    def local_state(self) -> global___CallState: ...
    def __init__(
        self,
        *,
        local_state: global___CallState | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["local_state", b"local_state"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["local_state", b"local_state"]) -> None: ...

global___GetCallStateResponse = GetCallStateResponse

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

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

global___AudioMuteChanged = AudioMuteChanged

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

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

global___Healthcheck = Healthcheck

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

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

global___VideoMuteChanged = VideoMuteChanged

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

    CALL_CID_FIELD_NUMBER: builtins.int
    SEQUENCE_FIELD_NUMBER: builtins.int
    HEALTH_CHECK_FIELD_NUMBER: builtins.int
    AUDIO_MUTE_CHANGED_FIELD_NUMBER: builtins.int
    VIDEO_MUTE_CHANGED_FIELD_NUMBER: builtins.int
    call_cid: builtins.str
    """sequence is specific to the local state of the SFU sending the event
    receivers can use this to detect out of order delivery or lost messages
    when that happens
    """
    sequence: builtins.int
    @property
    def health_check(self) -> global___Healthcheck: ...
    @property
    def audio_mute_changed(self) -> global___AudioMuteChanged: ...
    @property
    def video_mute_changed(self) -> global___VideoMuteChanged:
        """add participant (marcelo joins the call)
        remove participant (marcelo leaves the call)
        add publisher track (marcelo starts audio or video track)
        remove publisher track (marcelo stops audio or video track)
        add subscription (marcelo subscribes to tommaso high-quality track)
        remove subscription (marcelo unsubscribes from tommaso)
        change subscription (marcelo changes the subscription to Tommaso from high to medium)
        audio levels - TODO: this does not change anything, its just a user event we want to forward to all clients
        dominant speaker changed - TODO: this one is tricky because you need to analyze all audio levels from all clients,
        perhaps sharing audio levels is enough
        """
    def __init__(
        self,
        *,
        call_cid: builtins.str = ...,
        sequence: builtins.int = ...,
        health_check: global___Healthcheck | None = ...,
        audio_mute_changed: global___AudioMuteChanged | None = ...,
        video_mute_changed: global___VideoMuteChanged | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["audio_mute_changed", b"audio_mute_changed", "event", b"event", "health_check", b"health_check", "video_mute_changed", b"video_mute_changed"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["audio_mute_changed", b"audio_mute_changed", "call_cid", b"call_cid", "event", b"event", "health_check", b"health_check", "sequence", b"sequence", "video_mute_changed", b"video_mute_changed"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["event", b"event"]) -> typing_extensions.Literal["health_check", "audio_mute_changed", "video_mute_changed"] | None: ...

global___SendEventRequest = SendEventRequest

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

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

global___SendEventResponse = SendEventResponse
