"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
Copyright 2020 Flower Labs GmbH. All Rights Reserved.

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 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 _Code:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _CodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Code.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    OK: _Code.ValueType  # 0
    GET_PROPERTIES_NOT_IMPLEMENTED: _Code.ValueType  # 1
    GET_PARAMETERS_NOT_IMPLEMENTED: _Code.ValueType  # 2
    FIT_NOT_IMPLEMENTED: _Code.ValueType  # 3
    EVALUATE_NOT_IMPLEMENTED: _Code.ValueType  # 4

class Code(_Code, metaclass=_CodeEnumTypeWrapper): ...

OK: Code.ValueType  # 0
GET_PROPERTIES_NOT_IMPLEMENTED: Code.ValueType  # 1
GET_PARAMETERS_NOT_IMPLEMENTED: Code.ValueType  # 2
FIT_NOT_IMPLEMENTED: Code.ValueType  # 3
EVALUATE_NOT_IMPLEMENTED: Code.ValueType  # 4
global___Code = Code

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

class _ReasonEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Reason.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    UNKNOWN: _Reason.ValueType  # 0
    RECONNECT: _Reason.ValueType  # 1
    POWER_DISCONNECTED: _Reason.ValueType  # 2
    WIFI_UNAVAILABLE: _Reason.ValueType  # 3
    ACK: _Reason.ValueType  # 4

class Reason(_Reason, metaclass=_ReasonEnumTypeWrapper): ...

UNKNOWN: Reason.ValueType  # 0
RECONNECT: Reason.ValueType  # 1
POWER_DISCONNECTED: Reason.ValueType  # 2
WIFI_UNAVAILABLE: Reason.ValueType  # 3
ACK: Reason.ValueType  # 4
global___Reason = Reason

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

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

global___Status = Status

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

    TENSORS_FIELD_NUMBER: builtins.int
    TENSOR_TYPE_FIELD_NUMBER: builtins.int
    tensor_type: builtins.str
    @property
    def tensors(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: ...
    def __init__(
        self,
        *,
        tensors: collections.abc.Iterable[builtins.bytes] | None = ...,
        tensor_type: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["tensor_type", b"tensor_type", "tensors", b"tensors"]) -> None: ...

global___Parameters = Parameters

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

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

        SECONDS_FIELD_NUMBER: builtins.int
        seconds: builtins.int
        def __init__(
            self,
            *,
            seconds: builtins.int = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["seconds", b"seconds"]) -> None: ...

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

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

            KEY_FIELD_NUMBER: builtins.int
            VALUE_FIELD_NUMBER: builtins.int
            key: builtins.str
            @property
            def value(self) -> global___Scalar: ...
            def __init__(
                self,
                *,
                key: builtins.str = ...,
                value: global___Scalar | None = ...,
            ) -> None: ...
            def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
            def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...

        CONFIG_FIELD_NUMBER: builtins.int
        @property
        def config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Scalar]: ...
        def __init__(
            self,
            *,
            config: collections.abc.Mapping[builtins.str, global___Scalar] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["config", b"config"]) -> None: ...

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

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

            KEY_FIELD_NUMBER: builtins.int
            VALUE_FIELD_NUMBER: builtins.int
            key: builtins.str
            @property
            def value(self) -> global___Scalar: ...
            def __init__(
                self,
                *,
                key: builtins.str = ...,
                value: global___Scalar | None = ...,
            ) -> None: ...
            def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
            def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...

        CONFIG_FIELD_NUMBER: builtins.int
        @property
        def config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Scalar]: ...
        def __init__(
            self,
            *,
            config: collections.abc.Mapping[builtins.str, global___Scalar] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["config", b"config"]) -> None: ...

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

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

            KEY_FIELD_NUMBER: builtins.int
            VALUE_FIELD_NUMBER: builtins.int
            key: builtins.str
            @property
            def value(self) -> global___Scalar: ...
            def __init__(
                self,
                *,
                key: builtins.str = ...,
                value: global___Scalar | None = ...,
            ) -> None: ...
            def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
            def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...

        PARAMETERS_FIELD_NUMBER: builtins.int
        CONFIG_FIELD_NUMBER: builtins.int
        @property
        def parameters(self) -> global___Parameters: ...
        @property
        def config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Scalar]: ...
        def __init__(
            self,
            *,
            parameters: global___Parameters | None = ...,
            config: collections.abc.Mapping[builtins.str, global___Scalar] | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["parameters", b"parameters"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["config", b"config", "parameters", b"parameters"]) -> None: ...

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

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

            KEY_FIELD_NUMBER: builtins.int
            VALUE_FIELD_NUMBER: builtins.int
            key: builtins.str
            @property
            def value(self) -> global___Scalar: ...
            def __init__(
                self,
                *,
                key: builtins.str = ...,
                value: global___Scalar | None = ...,
            ) -> None: ...
            def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
            def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...

        PARAMETERS_FIELD_NUMBER: builtins.int
        CONFIG_FIELD_NUMBER: builtins.int
        @property
        def parameters(self) -> global___Parameters: ...
        @property
        def config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Scalar]: ...
        def __init__(
            self,
            *,
            parameters: global___Parameters | None = ...,
            config: collections.abc.Mapping[builtins.str, global___Scalar] | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["parameters", b"parameters"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["config", b"config", "parameters", b"parameters"]) -> None: ...

    RECONNECT_INS_FIELD_NUMBER: builtins.int
    GET_PROPERTIES_INS_FIELD_NUMBER: builtins.int
    GET_PARAMETERS_INS_FIELD_NUMBER: builtins.int
    FIT_INS_FIELD_NUMBER: builtins.int
    EVALUATE_INS_FIELD_NUMBER: builtins.int
    @property
    def reconnect_ins(self) -> global___ServerMessage.ReconnectIns: ...
    @property
    def get_properties_ins(self) -> global___ServerMessage.GetPropertiesIns: ...
    @property
    def get_parameters_ins(self) -> global___ServerMessage.GetParametersIns: ...
    @property
    def fit_ins(self) -> global___ServerMessage.FitIns: ...
    @property
    def evaluate_ins(self) -> global___ServerMessage.EvaluateIns: ...
    def __init__(
        self,
        *,
        reconnect_ins: global___ServerMessage.ReconnectIns | None = ...,
        get_properties_ins: global___ServerMessage.GetPropertiesIns | None = ...,
        get_parameters_ins: global___ServerMessage.GetParametersIns | None = ...,
        fit_ins: global___ServerMessage.FitIns | None = ...,
        evaluate_ins: global___ServerMessage.EvaluateIns | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["evaluate_ins", b"evaluate_ins", "fit_ins", b"fit_ins", "get_parameters_ins", b"get_parameters_ins", "get_properties_ins", b"get_properties_ins", "msg", b"msg", "reconnect_ins", b"reconnect_ins"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["evaluate_ins", b"evaluate_ins", "fit_ins", b"fit_ins", "get_parameters_ins", b"get_parameters_ins", "get_properties_ins", b"get_properties_ins", "msg", b"msg", "reconnect_ins", b"reconnect_ins"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["msg", b"msg"]) -> typing.Literal["reconnect_ins", "get_properties_ins", "get_parameters_ins", "fit_ins", "evaluate_ins"] | None: ...

global___ServerMessage = ServerMessage

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

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

        REASON_FIELD_NUMBER: builtins.int
        reason: global___Reason.ValueType
        def __init__(
            self,
            *,
            reason: global___Reason.ValueType = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["reason", b"reason"]) -> None: ...

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

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

            KEY_FIELD_NUMBER: builtins.int
            VALUE_FIELD_NUMBER: builtins.int
            key: builtins.str
            @property
            def value(self) -> global___Scalar: ...
            def __init__(
                self,
                *,
                key: builtins.str = ...,
                value: global___Scalar | None = ...,
            ) -> None: ...
            def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
            def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...

        STATUS_FIELD_NUMBER: builtins.int
        PROPERTIES_FIELD_NUMBER: builtins.int
        @property
        def status(self) -> global___Status: ...
        @property
        def properties(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Scalar]: ...
        def __init__(
            self,
            *,
            status: global___Status | None = ...,
            properties: collections.abc.Mapping[builtins.str, global___Scalar] | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["status", b"status"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["properties", b"properties", "status", b"status"]) -> None: ...

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

        STATUS_FIELD_NUMBER: builtins.int
        PARAMETERS_FIELD_NUMBER: builtins.int
        @property
        def status(self) -> global___Status: ...
        @property
        def parameters(self) -> global___Parameters: ...
        def __init__(
            self,
            *,
            status: global___Status | None = ...,
            parameters: global___Parameters | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["parameters", b"parameters", "status", b"status"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["parameters", b"parameters", "status", b"status"]) -> None: ...

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

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

            KEY_FIELD_NUMBER: builtins.int
            VALUE_FIELD_NUMBER: builtins.int
            key: builtins.str
            @property
            def value(self) -> global___Scalar: ...
            def __init__(
                self,
                *,
                key: builtins.str = ...,
                value: global___Scalar | None = ...,
            ) -> None: ...
            def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
            def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...

        STATUS_FIELD_NUMBER: builtins.int
        PARAMETERS_FIELD_NUMBER: builtins.int
        NUM_EXAMPLES_FIELD_NUMBER: builtins.int
        METRICS_FIELD_NUMBER: builtins.int
        num_examples: builtins.int
        @property
        def status(self) -> global___Status: ...
        @property
        def parameters(self) -> global___Parameters: ...
        @property
        def metrics(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Scalar]: ...
        def __init__(
            self,
            *,
            status: global___Status | None = ...,
            parameters: global___Parameters | None = ...,
            num_examples: builtins.int = ...,
            metrics: collections.abc.Mapping[builtins.str, global___Scalar] | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["parameters", b"parameters", "status", b"status"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["metrics", b"metrics", "num_examples", b"num_examples", "parameters", b"parameters", "status", b"status"]) -> None: ...

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

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

            KEY_FIELD_NUMBER: builtins.int
            VALUE_FIELD_NUMBER: builtins.int
            key: builtins.str
            @property
            def value(self) -> global___Scalar: ...
            def __init__(
                self,
                *,
                key: builtins.str = ...,
                value: global___Scalar | None = ...,
            ) -> None: ...
            def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
            def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...

        STATUS_FIELD_NUMBER: builtins.int
        LOSS_FIELD_NUMBER: builtins.int
        NUM_EXAMPLES_FIELD_NUMBER: builtins.int
        METRICS_FIELD_NUMBER: builtins.int
        loss: builtins.float
        num_examples: builtins.int
        @property
        def status(self) -> global___Status: ...
        @property
        def metrics(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Scalar]: ...
        def __init__(
            self,
            *,
            status: global___Status | None = ...,
            loss: builtins.float = ...,
            num_examples: builtins.int = ...,
            metrics: collections.abc.Mapping[builtins.str, global___Scalar] | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["status", b"status"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["loss", b"loss", "metrics", b"metrics", "num_examples", b"num_examples", "status", b"status"]) -> None: ...

    DISCONNECT_RES_FIELD_NUMBER: builtins.int
    GET_PROPERTIES_RES_FIELD_NUMBER: builtins.int
    GET_PARAMETERS_RES_FIELD_NUMBER: builtins.int
    FIT_RES_FIELD_NUMBER: builtins.int
    EVALUATE_RES_FIELD_NUMBER: builtins.int
    @property
    def disconnect_res(self) -> global___ClientMessage.DisconnectRes: ...
    @property
    def get_properties_res(self) -> global___ClientMessage.GetPropertiesRes: ...
    @property
    def get_parameters_res(self) -> global___ClientMessage.GetParametersRes: ...
    @property
    def fit_res(self) -> global___ClientMessage.FitRes: ...
    @property
    def evaluate_res(self) -> global___ClientMessage.EvaluateRes: ...
    def __init__(
        self,
        *,
        disconnect_res: global___ClientMessage.DisconnectRes | None = ...,
        get_properties_res: global___ClientMessage.GetPropertiesRes | None = ...,
        get_parameters_res: global___ClientMessage.GetParametersRes | None = ...,
        fit_res: global___ClientMessage.FitRes | None = ...,
        evaluate_res: global___ClientMessage.EvaluateRes | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["disconnect_res", b"disconnect_res", "evaluate_res", b"evaluate_res", "fit_res", b"fit_res", "get_parameters_res", b"get_parameters_res", "get_properties_res", b"get_properties_res", "msg", b"msg"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["disconnect_res", b"disconnect_res", "evaluate_res", b"evaluate_res", "fit_res", b"fit_res", "get_parameters_res", b"get_parameters_res", "get_properties_res", b"get_properties_res", "msg", b"msg"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["msg", b"msg"]) -> typing.Literal["disconnect_res", "get_properties_res", "get_parameters_res", "fit_res", "evaluate_res"] | None: ...

global___ClientMessage = ClientMessage

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

    DOUBLE_FIELD_NUMBER: builtins.int
    UINT64_FIELD_NUMBER: builtins.int
    SINT64_FIELD_NUMBER: builtins.int
    BOOL_FIELD_NUMBER: builtins.int
    STRING_FIELD_NUMBER: builtins.int
    BYTES_FIELD_NUMBER: builtins.int
    double: builtins.float
    uint64: builtins.int
    """float float = 2;
    int32 int32 = 3;
    int64 int64 = 4;
    uint32 uint32 = 5;
    """
    sint64: builtins.int
    """sint32 sint32 = 7;"""
    bool: builtins.bool
    """fixed32 fixed32 = 9;
    fixed64 fixed64 = 10;
    sfixed32 sfixed32 = 11;
    sfixed64 sfixed64 = 12;
    """
    string: builtins.str
    bytes: builtins.bytes
    def __init__(
        self,
        *,
        double: builtins.float = ...,
        uint64: builtins.int = ...,
        sint64: builtins.int = ...,
        bool: builtins.bool = ...,
        string: builtins.str = ...,
        bytes: builtins.bytes = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["bool", b"bool", "bytes", b"bytes", "double", b"double", "scalar", b"scalar", "sint64", b"sint64", "string", b"string", "uint64", b"uint64"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["bool", b"bool", "bytes", b"bytes", "double", b"double", "scalar", b"scalar", "sint64", b"sint64", "string", b"string", "uint64", b"uint64"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["scalar", b"scalar"]) -> typing.Literal["double", "uint64", "sint64", "bool", "string", "bytes"] | None: ...

global___Scalar = Scalar
