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

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

class _VersionStatusEnumPbEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_VersionStatusEnumPb.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    SET: _VersionStatusEnumPb.ValueType  # 0
    DELETED: _VersionStatusEnumPb.ValueType  # 1
    DELETE_AFTER_TTL: _VersionStatusEnumPb.ValueType  # 2

class VersionStatusEnumPb(_VersionStatusEnumPb, metaclass=_VersionStatusEnumPbEnumTypeWrapper): ...

SET: VersionStatusEnumPb.ValueType  # 0
DELETED: VersionStatusEnumPb.ValueType  # 1
DELETE_AFTER_TTL: VersionStatusEnumPb.ValueType  # 2
global___VersionStatusEnumPb = VersionStatusEnumPb

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

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

global___SynPb = SynPb

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

    DIGEST_FIELD_NUMBER: builtins.int
    DELTA_FIELD_NUMBER: builtins.int
    @property
    def digest(self) -> global___DigestPb: ...
    @property
    def delta(self) -> global___DeltaPb: ...
    def __init__(
        self,
        *,
        digest: global___DigestPb | None = ...,
        delta: global___DeltaPb | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["delta", b"delta", "digest", b"digest"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["delta", b"delta", "digest", b"digest"]) -> None: ...

global___SynAckPb = SynAckPb

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

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

global___AckPb = AckPb

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

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

global___BadClusterPb = BadClusterPb

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

    CLUSTER_ID_FIELD_NUMBER: builtins.int
    SYN_FIELD_NUMBER: builtins.int
    SYNACK_FIELD_NUMBER: builtins.int
    ACK_FIELD_NUMBER: builtins.int
    BAD_CLUSTER_FIELD_NUMBER: builtins.int
    cluster_id: builtins.str
    @property
    def syn(self) -> global___SynPb: ...
    @property
    def synack(self) -> global___SynAckPb: ...
    @property
    def ack(self) -> global___AckPb: ...
    @property
    def bad_cluster(self) -> global___BadClusterPb: ...
    def __init__(
        self,
        *,
        cluster_id: builtins.str = ...,
        syn: global___SynPb | None = ...,
        synack: global___SynAckPb | None = ...,
        ack: global___AckPb | None = ...,
        bad_cluster: global___BadClusterPb | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["ack", b"ack", "bad_cluster", b"bad_cluster", "msg", b"msg", "syn", b"syn", "synack", b"synack"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["ack", b"ack", "bad_cluster", b"bad_cluster", "cluster_id", b"cluster_id", "msg", b"msg", "syn", b"syn", "synack", b"synack"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["msg", b"msg"]) -> typing.Literal["syn", "synack", "ack", "bad_cluster"] | None: ...

global___PacketPb = PacketPb

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

    HOST_FIELD_NUMBER: builtins.int
    PORT_FIELD_NUMBER: builtins.int
    host: builtins.str
    port: builtins.int
    def __init__(
        self,
        *,
        host: builtins.str = ...,
        port: builtins.int = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["host", b"host", "port", b"port"]) -> None: ...

global___AddressPb = AddressPb

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

    NAME_FIELD_NUMBER: builtins.int
    GENERATION_ID_FIELD_NUMBER: builtins.int
    GOSSIP_ADVERTISE_ADDR_FIELD_NUMBER: builtins.int
    TLS_NAME_FIELD_NUMBER: builtins.int
    name: builtins.str
    generation_id: builtins.int
    tls_name: builtins.str
    @property
    def gossip_advertise_addr(self) -> global___AddressPb: ...
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        generation_id: builtins.int = ...,
        gossip_advertise_addr: global___AddressPb | None = ...,
        tls_name: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["gossip_advertise_addr", b"gossip_advertise_addr"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["generation_id", b"generation_id", "gossip_advertise_addr", b"gossip_advertise_addr", "name", b"name", "tls_name", b"tls_name"]) -> None: ...

global___NodeIdPb = NodeIdPb

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

    NODE_ID_FIELD_NUMBER: builtins.int
    HEARTBEAT_FIELD_NUMBER: builtins.int
    LAST_GC_VERSION_FIELD_NUMBER: builtins.int
    MAX_VERSION_FIELD_NUMBER: builtins.int
    heartbeat: builtins.int
    last_gc_version: builtins.int
    max_version: builtins.int
    @property
    def node_id(self) -> global___NodeIdPb: ...
    def __init__(
        self,
        *,
        node_id: global___NodeIdPb | None = ...,
        heartbeat: builtins.int = ...,
        last_gc_version: builtins.int = ...,
        max_version: builtins.int = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["node_id", b"node_id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["heartbeat", b"heartbeat", "last_gc_version", b"last_gc_version", "max_version", b"max_version", "node_id", b"node_id"]) -> None: ...

global___NodeDigestPb = NodeDigestPb

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

    KEY_FIELD_NUMBER: builtins.int
    VALUE_FIELD_NUMBER: builtins.int
    VERSION_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    key: builtins.str
    value: builtins.str
    version: builtins.int
    status: global___VersionStatusEnumPb.ValueType
    def __init__(
        self,
        *,
        key: builtins.str = ...,
        value: builtins.str = ...,
        version: builtins.int = ...,
        status: global___VersionStatusEnumPb.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["key", b"key", "status", b"status", "value", b"value", "version", b"version"]) -> None: ...

global___KeyValueUpdatePb = KeyValueUpdatePb

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

    NODE_ID_FIELD_NUMBER: builtins.int
    FROM_VERSION_EXCLUDED_FIELD_NUMBER: builtins.int
    LAST_GC_VERSION_FIELD_NUMBER: builtins.int
    KEY_VALUES_FIELD_NUMBER: builtins.int
    MAX_VERSION_FIELD_NUMBER: builtins.int
    from_version_excluded: builtins.int
    last_gc_version: builtins.int
    max_version: builtins.int
    @property
    def node_id(self) -> global___NodeIdPb: ...
    @property
    def key_values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___KeyValueUpdatePb]: ...
    def __init__(
        self,
        *,
        node_id: global___NodeIdPb | None = ...,
        from_version_excluded: builtins.int = ...,
        last_gc_version: builtins.int = ...,
        key_values: collections.abc.Iterable[global___KeyValueUpdatePb] | None = ...,
        max_version: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["_max_version", b"_max_version", "max_version", b"max_version", "node_id", b"node_id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["_max_version", b"_max_version", "from_version_excluded", b"from_version_excluded", "key_values", b"key_values", "last_gc_version", b"last_gc_version", "max_version", b"max_version", "node_id", b"node_id"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["_max_version", b"_max_version"]) -> typing.Literal["max_version"] | None: ...

global___NodeDeltaPb = NodeDeltaPb

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

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

global___DigestPb = DigestPb

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

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

global___DeltaPb = DeltaPb
