"""
@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 Record(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    KEY_FIELD_NUMBER: builtins.int
    VALUE_FIELD_NUMBER: builtins.int
    TIMERECEIVED_FIELD_NUMBER: builtins.int
    key: builtins.bytes
    value: builtins.bytes
    timeReceived: builtins.str
    def __init__(
        self,
        *,
        key: builtins.bytes = ...,
        value: builtins.bytes = ...,
        timeReceived: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["key", b"key", "timeReceived", b"timeReceived", "value", b"value"]) -> None: ...

global___Record = Record

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

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

    class _MessageTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Message._MessageType.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        PUT_VALUE: Message._MessageType.ValueType  # 0
        GET_VALUE: Message._MessageType.ValueType  # 1
        ADD_PROVIDER: Message._MessageType.ValueType  # 2
        GET_PROVIDERS: Message._MessageType.ValueType  # 3
        FIND_NODE: Message._MessageType.ValueType  # 4
        PING: Message._MessageType.ValueType  # 5

    class MessageType(_MessageType, metaclass=_MessageTypeEnumTypeWrapper): ...
    PUT_VALUE: Message.MessageType.ValueType  # 0
    GET_VALUE: Message.MessageType.ValueType  # 1
    ADD_PROVIDER: Message.MessageType.ValueType  # 2
    GET_PROVIDERS: Message.MessageType.ValueType  # 3
    FIND_NODE: Message.MessageType.ValueType  # 4
    PING: Message.MessageType.ValueType  # 5

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

    class _ConnectionTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Message._ConnectionType.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        NOT_CONNECTED: Message._ConnectionType.ValueType  # 0
        CONNECTED: Message._ConnectionType.ValueType  # 1
        CAN_CONNECT: Message._ConnectionType.ValueType  # 2
        CANNOT_CONNECT: Message._ConnectionType.ValueType  # 3

    class ConnectionType(_ConnectionType, metaclass=_ConnectionTypeEnumTypeWrapper): ...
    NOT_CONNECTED: Message.ConnectionType.ValueType  # 0
    CONNECTED: Message.ConnectionType.ValueType  # 1
    CAN_CONNECT: Message.ConnectionType.ValueType  # 2
    CANNOT_CONNECT: Message.ConnectionType.ValueType  # 3

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

        ID_FIELD_NUMBER: builtins.int
        ADDRS_FIELD_NUMBER: builtins.int
        CONNECTION_FIELD_NUMBER: builtins.int
        id: builtins.bytes
        connection: global___Message.ConnectionType.ValueType
        @property
        def addrs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: ...
        def __init__(
            self,
            *,
            id: builtins.bytes = ...,
            addrs: collections.abc.Iterable[builtins.bytes] | None = ...,
            connection: global___Message.ConnectionType.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["addrs", b"addrs", "connection", b"connection", "id", b"id"]) -> None: ...

    TYPE_FIELD_NUMBER: builtins.int
    CLUSTERLEVELRAW_FIELD_NUMBER: builtins.int
    KEY_FIELD_NUMBER: builtins.int
    RECORD_FIELD_NUMBER: builtins.int
    CLOSERPEERS_FIELD_NUMBER: builtins.int
    PROVIDERPEERS_FIELD_NUMBER: builtins.int
    type: global___Message.MessageType.ValueType
    clusterLevelRaw: builtins.int
    key: builtins.bytes
    @property
    def record(self) -> global___Record: ...
    @property
    def closerPeers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Message.Peer]: ...
    @property
    def providerPeers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Message.Peer]: ...
    def __init__(
        self,
        *,
        type: global___Message.MessageType.ValueType = ...,
        clusterLevelRaw: builtins.int = ...,
        key: builtins.bytes = ...,
        record: global___Record | None = ...,
        closerPeers: collections.abc.Iterable[global___Message.Peer] | None = ...,
        providerPeers: collections.abc.Iterable[global___Message.Peer] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["record", b"record"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["closerPeers", b"closerPeers", "clusterLevelRaw", b"clusterLevelRaw", "key", b"key", "providerPeers", b"providerPeers", "record", b"record", "type", b"type"]) -> None: ...

global___Message = Message
