"""
@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

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

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

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

    class _SyncdOperationEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SyncdMutation._SyncdOperation.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        SET: SyncdMutation._SyncdOperation.ValueType  # 0
        REMOVE: SyncdMutation._SyncdOperation.ValueType  # 1

    class SyncdOperation(_SyncdOperation, metaclass=_SyncdOperationEnumTypeWrapper): ...
    SET: SyncdMutation.SyncdOperation.ValueType  # 0
    REMOVE: SyncdMutation.SyncdOperation.ValueType  # 1

    OPERATION_FIELD_NUMBER: builtins.int
    RECORD_FIELD_NUMBER: builtins.int
    operation: global___SyncdMutation.SyncdOperation.ValueType
    @property
    def record(self) -> global___SyncdRecord: ...
    def __init__(
        self,
        *,
        operation: global___SyncdMutation.SyncdOperation.ValueType | None = ...,
        record: global___SyncdRecord | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["operation", b"operation", "record", b"record"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["operation", b"operation", "record", b"record"]) -> None: ...

global___SyncdMutation = SyncdMutation

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

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

global___SyncdVersion = SyncdVersion

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

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

global___ExitCode = ExitCode

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

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

global___SyncdIndex = SyncdIndex

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

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

global___SyncdValue = SyncdValue

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

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

global___KeyId = KeyId

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

    INDEX_FIELD_NUMBER: builtins.int
    VALUE_FIELD_NUMBER: builtins.int
    KEYID_FIELD_NUMBER: builtins.int
    @property
    def index(self) -> global___SyncdIndex: ...
    @property
    def value(self) -> global___SyncdValue: ...
    @property
    def keyID(self) -> global___KeyId: ...
    def __init__(
        self,
        *,
        index: global___SyncdIndex | None = ...,
        value: global___SyncdValue | None = ...,
        keyID: global___KeyId | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["index", b"index", "keyID", b"keyID", "value", b"value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["index", b"index", "keyID", b"keyID", "value", b"value"]) -> None: ...

global___SyncdRecord = SyncdRecord

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

    MEDIAKEY_FIELD_NUMBER: builtins.int
    DIRECTPATH_FIELD_NUMBER: builtins.int
    HANDLE_FIELD_NUMBER: builtins.int
    FILESIZEBYTES_FIELD_NUMBER: builtins.int
    FILESHA256_FIELD_NUMBER: builtins.int
    FILEENCSHA256_FIELD_NUMBER: builtins.int
    mediaKey: builtins.bytes
    directPath: builtins.str
    handle: builtins.str
    fileSizeBytes: builtins.int
    fileSHA256: builtins.bytes
    fileEncSHA256: builtins.bytes
    def __init__(
        self,
        *,
        mediaKey: builtins.bytes | None = ...,
        directPath: builtins.str | None = ...,
        handle: builtins.str | None = ...,
        fileSizeBytes: builtins.int | None = ...,
        fileSHA256: builtins.bytes | None = ...,
        fileEncSHA256: builtins.bytes | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["directPath", b"directPath", "fileEncSHA256", b"fileEncSHA256", "fileSHA256", b"fileSHA256", "fileSizeBytes", b"fileSizeBytes", "handle", b"handle", "mediaKey", b"mediaKey"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["directPath", b"directPath", "fileEncSHA256", b"fileEncSHA256", "fileSHA256", b"fileSHA256", "fileSizeBytes", b"fileSizeBytes", "handle", b"handle", "mediaKey", b"mediaKey"]) -> None: ...

global___ExternalBlobReference = ExternalBlobReference

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

    VERSION_FIELD_NUMBER: builtins.int
    RECORDS_FIELD_NUMBER: builtins.int
    MAC_FIELD_NUMBER: builtins.int
    KEYID_FIELD_NUMBER: builtins.int
    mac: builtins.bytes
    @property
    def version(self) -> global___SyncdVersion: ...
    @property
    def records(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SyncdRecord]: ...
    @property
    def keyID(self) -> global___KeyId: ...
    def __init__(
        self,
        *,
        version: global___SyncdVersion | None = ...,
        records: collections.abc.Iterable[global___SyncdRecord] | None = ...,
        mac: builtins.bytes | None = ...,
        keyID: global___KeyId | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["keyID", b"keyID", "mac", b"mac", "version", b"version"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["keyID", b"keyID", "mac", b"mac", "records", b"records", "version", b"version"]) -> None: ...

global___SyncdSnapshot = SyncdSnapshot

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

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

global___SyncdMutations = SyncdMutations

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

    VERSION_FIELD_NUMBER: builtins.int
    MUTATIONS_FIELD_NUMBER: builtins.int
    EXTERNALMUTATIONS_FIELD_NUMBER: builtins.int
    SNAPSHOTMAC_FIELD_NUMBER: builtins.int
    PATCHMAC_FIELD_NUMBER: builtins.int
    KEYID_FIELD_NUMBER: builtins.int
    EXITCODE_FIELD_NUMBER: builtins.int
    DEVICEINDEX_FIELD_NUMBER: builtins.int
    CLIENTDEBUGDATA_FIELD_NUMBER: builtins.int
    snapshotMAC: builtins.bytes
    patchMAC: builtins.bytes
    deviceIndex: builtins.int
    clientDebugData: builtins.bytes
    @property
    def version(self) -> global___SyncdVersion: ...
    @property
    def mutations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SyncdMutation]: ...
    @property
    def externalMutations(self) -> global___ExternalBlobReference: ...
    @property
    def keyID(self) -> global___KeyId: ...
    @property
    def exitCode(self) -> global___ExitCode: ...
    def __init__(
        self,
        *,
        version: global___SyncdVersion | None = ...,
        mutations: collections.abc.Iterable[global___SyncdMutation] | None = ...,
        externalMutations: global___ExternalBlobReference | None = ...,
        snapshotMAC: builtins.bytes | None = ...,
        patchMAC: builtins.bytes | None = ...,
        keyID: global___KeyId | None = ...,
        exitCode: global___ExitCode | None = ...,
        deviceIndex: builtins.int | None = ...,
        clientDebugData: builtins.bytes | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["clientDebugData", b"clientDebugData", "deviceIndex", b"deviceIndex", "exitCode", b"exitCode", "externalMutations", b"externalMutations", "keyID", b"keyID", "patchMAC", b"patchMAC", "snapshotMAC", b"snapshotMAC", "version", b"version"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["clientDebugData", b"clientDebugData", "deviceIndex", b"deviceIndex", "exitCode", b"exitCode", "externalMutations", b"externalMutations", "keyID", b"keyID", "mutations", b"mutations", "patchMAC", b"patchMAC", "snapshotMAC", b"snapshotMAC", "version", b"version"]) -> None: ...

global___SyncdPatch = SyncdPatch
