"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
Copyright 2026 LiveKit, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""

import builtins
import google.protobuf.descriptor
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
from . import handle_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 _DataTrackErrorCode:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _DataTrackErrorCodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DataTrackErrorCode.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    DATA_TRACK_ERROR_CODE_UNKNOWN: _DataTrackErrorCode.ValueType  # 0
    DATA_TRACK_ERROR_CODE_INVALID_HANDLE: _DataTrackErrorCode.ValueType  # 1
    DATA_TRACK_ERROR_CODE_DUPLICATE_TRACK_NAME: _DataTrackErrorCode.ValueType  # 2
    DATA_TRACK_ERROR_CODE_TRACK_UNPUBLISHED: _DataTrackErrorCode.ValueType  # 3
    DATA_TRACK_ERROR_CODE_BUFFER_FULL: _DataTrackErrorCode.ValueType  # 4
    DATA_TRACK_ERROR_CODE_SUBSCRIPTION_CLOSED: _DataTrackErrorCode.ValueType  # 5
    DATA_TRACK_ERROR_CODE_CANCELLED: _DataTrackErrorCode.ValueType  # 6
    DATA_TRACK_ERROR_CODE_PROTOCOL_ERROR: _DataTrackErrorCode.ValueType  # 7
    DATA_TRACK_ERROR_CODE_INTERNAL: _DataTrackErrorCode.ValueType  # 8

class DataTrackErrorCode(_DataTrackErrorCode, metaclass=_DataTrackErrorCodeEnumTypeWrapper): ...

DATA_TRACK_ERROR_CODE_UNKNOWN: DataTrackErrorCode.ValueType  # 0
DATA_TRACK_ERROR_CODE_INVALID_HANDLE: DataTrackErrorCode.ValueType  # 1
DATA_TRACK_ERROR_CODE_DUPLICATE_TRACK_NAME: DataTrackErrorCode.ValueType  # 2
DATA_TRACK_ERROR_CODE_TRACK_UNPUBLISHED: DataTrackErrorCode.ValueType  # 3
DATA_TRACK_ERROR_CODE_BUFFER_FULL: DataTrackErrorCode.ValueType  # 4
DATA_TRACK_ERROR_CODE_SUBSCRIPTION_CLOSED: DataTrackErrorCode.ValueType  # 5
DATA_TRACK_ERROR_CODE_CANCELLED: DataTrackErrorCode.ValueType  # 6
DATA_TRACK_ERROR_CODE_PROTOCOL_ERROR: DataTrackErrorCode.ValueType  # 7
DATA_TRACK_ERROR_CODE_INTERNAL: DataTrackErrorCode.ValueType  # 8
global___DataTrackErrorCode = DataTrackErrorCode

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

class _PublishDataTrackErrorCodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PublishDataTrackErrorCode.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    PUBLISH_DATA_TRACK_ERROR_CODE_UNKNOWN: _PublishDataTrackErrorCode.ValueType  # 0
    PUBLISH_DATA_TRACK_ERROR_CODE_INVALID_HANDLE: _PublishDataTrackErrorCode.ValueType  # 1
    PUBLISH_DATA_TRACK_ERROR_CODE_DUPLICATE_NAME: _PublishDataTrackErrorCode.ValueType  # 2
    PUBLISH_DATA_TRACK_ERROR_CODE_TIMEOUT: _PublishDataTrackErrorCode.ValueType  # 3
    PUBLISH_DATA_TRACK_ERROR_CODE_DISCONNECTED: _PublishDataTrackErrorCode.ValueType  # 4
    PUBLISH_DATA_TRACK_ERROR_CODE_NOT_ALLOWED: _PublishDataTrackErrorCode.ValueType  # 5
    PUBLISH_DATA_TRACK_ERROR_CODE_INVALID_NAME: _PublishDataTrackErrorCode.ValueType  # 6
    PUBLISH_DATA_TRACK_ERROR_CODE_LIMIT_REACHED: _PublishDataTrackErrorCode.ValueType  # 7
    PUBLISH_DATA_TRACK_ERROR_CODE_PROTOCOL_ERROR: _PublishDataTrackErrorCode.ValueType  # 8
    PUBLISH_DATA_TRACK_ERROR_CODE_INTERNAL: _PublishDataTrackErrorCode.ValueType  # 9

class PublishDataTrackErrorCode(_PublishDataTrackErrorCode, metaclass=_PublishDataTrackErrorCodeEnumTypeWrapper): ...

PUBLISH_DATA_TRACK_ERROR_CODE_UNKNOWN: PublishDataTrackErrorCode.ValueType  # 0
PUBLISH_DATA_TRACK_ERROR_CODE_INVALID_HANDLE: PublishDataTrackErrorCode.ValueType  # 1
PUBLISH_DATA_TRACK_ERROR_CODE_DUPLICATE_NAME: PublishDataTrackErrorCode.ValueType  # 2
PUBLISH_DATA_TRACK_ERROR_CODE_TIMEOUT: PublishDataTrackErrorCode.ValueType  # 3
PUBLISH_DATA_TRACK_ERROR_CODE_DISCONNECTED: PublishDataTrackErrorCode.ValueType  # 4
PUBLISH_DATA_TRACK_ERROR_CODE_NOT_ALLOWED: PublishDataTrackErrorCode.ValueType  # 5
PUBLISH_DATA_TRACK_ERROR_CODE_INVALID_NAME: PublishDataTrackErrorCode.ValueType  # 6
PUBLISH_DATA_TRACK_ERROR_CODE_LIMIT_REACHED: PublishDataTrackErrorCode.ValueType  # 7
PUBLISH_DATA_TRACK_ERROR_CODE_PROTOCOL_ERROR: PublishDataTrackErrorCode.ValueType  # 8
PUBLISH_DATA_TRACK_ERROR_CODE_INTERNAL: PublishDataTrackErrorCode.ValueType  # 9
global___PublishDataTrackErrorCode = PublishDataTrackErrorCode

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

class _LocalDataTrackTryPushErrorCodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_LocalDataTrackTryPushErrorCode.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    LOCAL_DATA_TRACK_TRY_PUSH_ERROR_CODE_UNKNOWN: _LocalDataTrackTryPushErrorCode.ValueType  # 0
    LOCAL_DATA_TRACK_TRY_PUSH_ERROR_CODE_INVALID_HANDLE: _LocalDataTrackTryPushErrorCode.ValueType  # 1
    LOCAL_DATA_TRACK_TRY_PUSH_ERROR_CODE_TRACK_UNPUBLISHED: _LocalDataTrackTryPushErrorCode.ValueType  # 2
    LOCAL_DATA_TRACK_TRY_PUSH_ERROR_CODE_QUEUE_FULL: _LocalDataTrackTryPushErrorCode.ValueType  # 3
    LOCAL_DATA_TRACK_TRY_PUSH_ERROR_CODE_INTERNAL: _LocalDataTrackTryPushErrorCode.ValueType  # 4

class LocalDataTrackTryPushErrorCode(_LocalDataTrackTryPushErrorCode, metaclass=_LocalDataTrackTryPushErrorCodeEnumTypeWrapper): ...

LOCAL_DATA_TRACK_TRY_PUSH_ERROR_CODE_UNKNOWN: LocalDataTrackTryPushErrorCode.ValueType  # 0
LOCAL_DATA_TRACK_TRY_PUSH_ERROR_CODE_INVALID_HANDLE: LocalDataTrackTryPushErrorCode.ValueType  # 1
LOCAL_DATA_TRACK_TRY_PUSH_ERROR_CODE_TRACK_UNPUBLISHED: LocalDataTrackTryPushErrorCode.ValueType  # 2
LOCAL_DATA_TRACK_TRY_PUSH_ERROR_CODE_QUEUE_FULL: LocalDataTrackTryPushErrorCode.ValueType  # 3
LOCAL_DATA_TRACK_TRY_PUSH_ERROR_CODE_INTERNAL: LocalDataTrackTryPushErrorCode.ValueType  # 4
global___LocalDataTrackTryPushErrorCode = LocalDataTrackTryPushErrorCode

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

class _SubscribeDataTrackErrorCodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SubscribeDataTrackErrorCode.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    SUBSCRIBE_DATA_TRACK_ERROR_CODE_UNKNOWN: _SubscribeDataTrackErrorCode.ValueType  # 0
    SUBSCRIBE_DATA_TRACK_ERROR_CODE_INVALID_HANDLE: _SubscribeDataTrackErrorCode.ValueType  # 1
    SUBSCRIBE_DATA_TRACK_ERROR_CODE_UNPUBLISHED: _SubscribeDataTrackErrorCode.ValueType  # 2
    SUBSCRIBE_DATA_TRACK_ERROR_CODE_TIMEOUT: _SubscribeDataTrackErrorCode.ValueType  # 3
    SUBSCRIBE_DATA_TRACK_ERROR_CODE_DISCONNECTED: _SubscribeDataTrackErrorCode.ValueType  # 4
    SUBSCRIBE_DATA_TRACK_ERROR_CODE_PROTOCOL_ERROR: _SubscribeDataTrackErrorCode.ValueType  # 5
    SUBSCRIBE_DATA_TRACK_ERROR_CODE_INTERNAL: _SubscribeDataTrackErrorCode.ValueType  # 6

class SubscribeDataTrackErrorCode(_SubscribeDataTrackErrorCode, metaclass=_SubscribeDataTrackErrorCodeEnumTypeWrapper): ...

SUBSCRIBE_DATA_TRACK_ERROR_CODE_UNKNOWN: SubscribeDataTrackErrorCode.ValueType  # 0
SUBSCRIBE_DATA_TRACK_ERROR_CODE_INVALID_HANDLE: SubscribeDataTrackErrorCode.ValueType  # 1
SUBSCRIBE_DATA_TRACK_ERROR_CODE_UNPUBLISHED: SubscribeDataTrackErrorCode.ValueType  # 2
SUBSCRIBE_DATA_TRACK_ERROR_CODE_TIMEOUT: SubscribeDataTrackErrorCode.ValueType  # 3
SUBSCRIBE_DATA_TRACK_ERROR_CODE_DISCONNECTED: SubscribeDataTrackErrorCode.ValueType  # 4
SUBSCRIBE_DATA_TRACK_ERROR_CODE_PROTOCOL_ERROR: SubscribeDataTrackErrorCode.ValueType  # 5
SUBSCRIBE_DATA_TRACK_ERROR_CODE_INTERNAL: SubscribeDataTrackErrorCode.ValueType  # 6
global___SubscribeDataTrackErrorCode = SubscribeDataTrackErrorCode

@typing.final
class DataTrackInfo(google.protobuf.message.Message):
    """MARK: - Common

    Information about a published data track.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NAME_FIELD_NUMBER: builtins.int
    SID_FIELD_NUMBER: builtins.int
    USES_E2EE_FIELD_NUMBER: builtins.int
    name: builtins.str
    """Name of the track assigned by the publisher."""
    sid: builtins.str
    """SFU-assigned track identifier."""
    uses_e2ee: builtins.bool
    """Whether or not frames sent on the track use end-to-end encryption."""
    def __init__(
        self,
        *,
        name: builtins.str | None = ...,
        sid: builtins.str | None = ...,
        uses_e2ee: builtins.bool | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["name", b"name", "sid", b"sid", "uses_e2ee", b"uses_e2ee"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["name", b"name", "sid", b"sid", "uses_e2ee", b"uses_e2ee"]) -> None: ...

global___DataTrackInfo = DataTrackInfo

@typing.final
class DataTrackFrame(google.protobuf.message.Message):
    """A frame published on a data track."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PAYLOAD_FIELD_NUMBER: builtins.int
    USER_TIMESTAMP_FIELD_NUMBER: builtins.int
    payload: builtins.bytes
    user_timestamp: builtins.int
    def __init__(
        self,
        *,
        payload: builtins.bytes | None = ...,
        user_timestamp: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["payload", b"payload", "user_timestamp", b"user_timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["payload", b"payload", "user_timestamp", b"user_timestamp"]) -> None: ...

global___DataTrackFrame = DataTrackFrame

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

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

global___DataTrackError = DataTrackError

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

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

global___PublishDataTrackError = PublishDataTrackError

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

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

global___LocalDataTrackTryPushError = LocalDataTrackTryPushError

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

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

global___SubscribeDataTrackError = SubscribeDataTrackError

@typing.final
class DataTrackOptions(google.protobuf.message.Message):
    """MARK: - Local

    Options for publishing a data track.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NAME_FIELD_NUMBER: builtins.int
    name: builtins.str
    """Track name used to identify the track to other participants.

    Must not be empty and must be unique per publisher.
    """
    def __init__(
        self,
        *,
        name: builtins.str | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["name", b"name"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["name", b"name"]) -> None: ...

global___DataTrackOptions = DataTrackOptions

@typing.final
class PublishDataTrackRequest(google.protobuf.message.Message):
    """Publish a data track"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    LOCAL_PARTICIPANT_HANDLE_FIELD_NUMBER: builtins.int
    OPTIONS_FIELD_NUMBER: builtins.int
    REQUEST_ASYNC_ID_FIELD_NUMBER: builtins.int
    local_participant_handle: builtins.int
    request_async_id: builtins.int
    @property
    def options(self) -> global___DataTrackOptions: ...
    def __init__(
        self,
        *,
        local_participant_handle: builtins.int | None = ...,
        options: global___DataTrackOptions | None = ...,
        request_async_id: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["local_participant_handle", b"local_participant_handle", "options", b"options", "request_async_id", b"request_async_id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["local_participant_handle", b"local_participant_handle", "options", b"options", "request_async_id", b"request_async_id"]) -> None: ...

global___PublishDataTrackRequest = PublishDataTrackRequest

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

    ASYNC_ID_FIELD_NUMBER: builtins.int
    async_id: builtins.int
    def __init__(
        self,
        *,
        async_id: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["async_id", b"async_id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["async_id", b"async_id"]) -> None: ...

global___PublishDataTrackResponse = PublishDataTrackResponse

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

    ASYNC_ID_FIELD_NUMBER: builtins.int
    TRACK_FIELD_NUMBER: builtins.int
    ERROR_FIELD_NUMBER: builtins.int
    async_id: builtins.int
    @property
    def track(self) -> global___OwnedLocalDataTrack: ...
    @property
    def error(self) -> global___PublishDataTrackError: ...
    def __init__(
        self,
        *,
        async_id: builtins.int | None = ...,
        track: global___OwnedLocalDataTrack | None = ...,
        error: global___PublishDataTrackError | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["async_id", b"async_id", "error", b"error", "result", b"result", "track", b"track"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["async_id", b"async_id", "error", b"error", "result", b"result", "track", b"track"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["result", b"result"]) -> typing.Literal["track", "error"] | None: ...

global___PublishDataTrackCallback = PublishDataTrackCallback

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

    HANDLE_FIELD_NUMBER: builtins.int
    INFO_FIELD_NUMBER: builtins.int
    @property
    def handle(self) -> handle_pb2.FfiOwnedHandle: ...
    @property
    def info(self) -> global___DataTrackInfo: ...
    def __init__(
        self,
        *,
        handle: handle_pb2.FfiOwnedHandle | None = ...,
        info: global___DataTrackInfo | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["handle", b"handle", "info", b"info"]) -> None: ...

global___OwnedLocalDataTrack = OwnedLocalDataTrack

@typing.final
class LocalDataTrackTryPushRequest(google.protobuf.message.Message):
    """Try pushing a frame to subscribers of the track."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TRACK_HANDLE_FIELD_NUMBER: builtins.int
    FRAME_FIELD_NUMBER: builtins.int
    track_handle: builtins.int
    @property
    def frame(self) -> global___DataTrackFrame: ...
    def __init__(
        self,
        *,
        track_handle: builtins.int | None = ...,
        frame: global___DataTrackFrame | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["frame", b"frame", "track_handle", b"track_handle"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["frame", b"frame", "track_handle", b"track_handle"]) -> None: ...

global___LocalDataTrackTryPushRequest = LocalDataTrackTryPushRequest

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

    ERROR_FIELD_NUMBER: builtins.int
    @property
    def error(self) -> global___LocalDataTrackTryPushError: ...
    def __init__(
        self,
        *,
        error: global___LocalDataTrackTryPushError | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["error", b"error"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["error", b"error"]) -> None: ...

global___LocalDataTrackTryPushResponse = LocalDataTrackTryPushResponse

@typing.final
class LocalDataTrackIsPublishedRequest(google.protobuf.message.Message):
    """Checks if the track is still published."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TRACK_HANDLE_FIELD_NUMBER: builtins.int
    track_handle: builtins.int
    def __init__(
        self,
        *,
        track_handle: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["track_handle", b"track_handle"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["track_handle", b"track_handle"]) -> None: ...

global___LocalDataTrackIsPublishedRequest = LocalDataTrackIsPublishedRequest

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

    IS_PUBLISHED_FIELD_NUMBER: builtins.int
    is_published: builtins.bool
    def __init__(
        self,
        *,
        is_published: builtins.bool | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["is_published", b"is_published"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["is_published", b"is_published"]) -> None: ...

global___LocalDataTrackIsPublishedResponse = LocalDataTrackIsPublishedResponse

@typing.final
class LocalDataTrackUnpublishRequest(google.protobuf.message.Message):
    """Unpublishes the track."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TRACK_HANDLE_FIELD_NUMBER: builtins.int
    track_handle: builtins.int
    def __init__(
        self,
        *,
        track_handle: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["track_handle", b"track_handle"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["track_handle", b"track_handle"]) -> None: ...

global___LocalDataTrackUnpublishRequest = LocalDataTrackUnpublishRequest

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

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

global___LocalDataTrackUnpublishResponse = LocalDataTrackUnpublishResponse

@typing.final
class OwnedRemoteDataTrack(google.protobuf.message.Message):
    """MARK: - Remote"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    HANDLE_FIELD_NUMBER: builtins.int
    INFO_FIELD_NUMBER: builtins.int
    PUBLISHER_IDENTITY_FIELD_NUMBER: builtins.int
    publisher_identity: builtins.str
    """Identity of the remote participant who published the track."""
    @property
    def handle(self) -> handle_pb2.FfiOwnedHandle: ...
    @property
    def info(self) -> global___DataTrackInfo: ...
    def __init__(
        self,
        *,
        handle: handle_pb2.FfiOwnedHandle | None = ...,
        info: global___DataTrackInfo | None = ...,
        publisher_identity: builtins.str | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["handle", b"handle", "info", b"info", "publisher_identity", b"publisher_identity"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["handle", b"handle", "info", b"info", "publisher_identity", b"publisher_identity"]) -> None: ...

global___OwnedRemoteDataTrack = OwnedRemoteDataTrack

@typing.final
class OwnedDataTrackStream(google.protobuf.message.Message):
    """Handle to an active data track subscription.

    Dropping the handle will unsubscribe from the track.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    HANDLE_FIELD_NUMBER: builtins.int
    @property
    def handle(self) -> handle_pb2.FfiOwnedHandle: ...
    def __init__(
        self,
        *,
        handle: handle_pb2.FfiOwnedHandle | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["handle", b"handle"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["handle", b"handle"]) -> None: ...

global___OwnedDataTrackStream = OwnedDataTrackStream

@typing.final
class DataTrackSubscribeOptions(google.protobuf.message.Message):
    """Reserved for future subscription options."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    BUFFER_SIZE_FIELD_NUMBER: builtins.int
    buffer_size: builtins.int
    """Maximum number of frames to buffer internally."""
    def __init__(
        self,
        *,
        buffer_size: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["buffer_size", b"buffer_size"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["buffer_size", b"buffer_size"]) -> None: ...

global___DataTrackSubscribeOptions = DataTrackSubscribeOptions

@typing.final
class RemoteDataTrackIsPublishedRequest(google.protobuf.message.Message):
    """Checks if the track is still published."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TRACK_HANDLE_FIELD_NUMBER: builtins.int
    track_handle: builtins.int
    def __init__(
        self,
        *,
        track_handle: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["track_handle", b"track_handle"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["track_handle", b"track_handle"]) -> None: ...

global___RemoteDataTrackIsPublishedRequest = RemoteDataTrackIsPublishedRequest

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

    IS_PUBLISHED_FIELD_NUMBER: builtins.int
    is_published: builtins.bool
    def __init__(
        self,
        *,
        is_published: builtins.bool | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["is_published", b"is_published"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["is_published", b"is_published"]) -> None: ...

global___RemoteDataTrackIsPublishedResponse = RemoteDataTrackIsPublishedResponse

@typing.final
class SubscribeDataTrackRequest(google.protobuf.message.Message):
    """Subscribe to a data track."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TRACK_HANDLE_FIELD_NUMBER: builtins.int
    OPTIONS_FIELD_NUMBER: builtins.int
    track_handle: builtins.int
    @property
    def options(self) -> global___DataTrackSubscribeOptions: ...
    def __init__(
        self,
        *,
        track_handle: builtins.int | None = ...,
        options: global___DataTrackSubscribeOptions | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["options", b"options", "track_handle", b"track_handle"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["options", b"options", "track_handle", b"track_handle"]) -> None: ...

global___SubscribeDataTrackRequest = SubscribeDataTrackRequest

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

    STREAM_FIELD_NUMBER: builtins.int
    @property
    def stream(self) -> global___OwnedDataTrackStream: ...
    def __init__(
        self,
        *,
        stream: global___OwnedDataTrackStream | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["stream", b"stream"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["stream", b"stream"]) -> None: ...

global___SubscribeDataTrackResponse = SubscribeDataTrackResponse

@typing.final
class DataTrackStreamReadRequest(google.protobuf.message.Message):
    """Signal readiness to handle the next frame.

    This allows the client to put backpressure on the internal receive buffer.
    Sending this request will cause the next frame to be sent via `DataTrackStreamFrameReceived`
    once one is available.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    STREAM_HANDLE_FIELD_NUMBER: builtins.int
    stream_handle: builtins.int
    def __init__(
        self,
        *,
        stream_handle: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["stream_handle", b"stream_handle"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["stream_handle", b"stream_handle"]) -> None: ...

global___DataTrackStreamReadRequest = DataTrackStreamReadRequest

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

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

global___DataTrackStreamReadResponse = DataTrackStreamReadResponse

@typing.final
class DataTrackStreamEvent(google.protobuf.message.Message):
    """Event emitted on an active stream."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    STREAM_HANDLE_FIELD_NUMBER: builtins.int
    FRAME_RECEIVED_FIELD_NUMBER: builtins.int
    EOS_FIELD_NUMBER: builtins.int
    stream_handle: builtins.int
    @property
    def frame_received(self) -> global___DataTrackStreamFrameReceived: ...
    @property
    def eos(self) -> global___DataTrackStreamEOS: ...
    def __init__(
        self,
        *,
        stream_handle: builtins.int | None = ...,
        frame_received: global___DataTrackStreamFrameReceived | None = ...,
        eos: global___DataTrackStreamEOS | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["detail", b"detail", "eos", b"eos", "frame_received", b"frame_received", "stream_handle", b"stream_handle"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["detail", b"detail", "eos", b"eos", "frame_received", b"frame_received", "stream_handle", b"stream_handle"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["detail", b"detail"]) -> typing.Literal["frame_received", "eos"] | None: ...

global___DataTrackStreamEvent = DataTrackStreamEvent

@typing.final
class DataTrackStreamFrameReceived(google.protobuf.message.Message):
    """A frame was received."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    FRAME_FIELD_NUMBER: builtins.int
    @property
    def frame(self) -> global___DataTrackFrame: ...
    def __init__(
        self,
        *,
        frame: global___DataTrackFrame | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["frame", b"frame"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["frame", b"frame"]) -> None: ...

global___DataTrackStreamFrameReceived = DataTrackStreamFrameReceived

@typing.final
class DataTrackStreamEOS(google.protobuf.message.Message):
    """Stream has ended."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ERROR_FIELD_NUMBER: builtins.int
    @property
    def error(self) -> global___SubscribeDataTrackError:
        """Present if stream ended before any frames were emitted due to subscription establishment failing.
        Absent if the stream ended normally (i.e., due to the track being unpublished).
        """

    def __init__(
        self,
        *,
        error: global___SubscribeDataTrackError | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["error", b"error"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["error", b"error"]) -> None: ...

global___DataTrackStreamEOS = DataTrackStreamEOS
