"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
Copyright 2024 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 flwr.proto.node_pb2
import flwr.proto.recorddict_pb2
import flwr.proto.transport_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import typing

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

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

    @typing.final
    class OverrideConfigEntry(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) -> flwr.proto.transport_pb2.Scalar: ...
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: flwr.proto.transport_pb2.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: ...

    RUN_ID_FIELD_NUMBER: builtins.int
    FAB_ID_FIELD_NUMBER: builtins.int
    FAB_VERSION_FIELD_NUMBER: builtins.int
    OVERRIDE_CONFIG_FIELD_NUMBER: builtins.int
    FAB_HASH_FIELD_NUMBER: builtins.int
    PENDING_AT_FIELD_NUMBER: builtins.int
    STARTING_AT_FIELD_NUMBER: builtins.int
    RUNNING_AT_FIELD_NUMBER: builtins.int
    FINISHED_AT_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    FLWR_AID_FIELD_NUMBER: builtins.int
    FEDERATION_FIELD_NUMBER: builtins.int
    run_id: builtins.int
    fab_id: builtins.str
    fab_version: builtins.str
    fab_hash: builtins.str
    pending_at: builtins.str
    starting_at: builtins.str
    running_at: builtins.str
    finished_at: builtins.str
    flwr_aid: builtins.str
    federation: builtins.str
    @property
    def override_config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, flwr.proto.transport_pb2.Scalar]: ...
    @property
    def status(self) -> global___RunStatus: ...
    def __init__(
        self,
        *,
        run_id: builtins.int = ...,
        fab_id: builtins.str = ...,
        fab_version: builtins.str = ...,
        override_config: collections.abc.Mapping[builtins.str, flwr.proto.transport_pb2.Scalar] | None = ...,
        fab_hash: builtins.str = ...,
        pending_at: builtins.str = ...,
        starting_at: builtins.str = ...,
        running_at: builtins.str = ...,
        finished_at: builtins.str = ...,
        status: global___RunStatus | None = ...,
        flwr_aid: builtins.str = ...,
        federation: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["status", b"status"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["fab_hash", b"fab_hash", "fab_id", b"fab_id", "fab_version", b"fab_version", "federation", b"federation", "finished_at", b"finished_at", "flwr_aid", b"flwr_aid", "override_config", b"override_config", "pending_at", b"pending_at", "run_id", b"run_id", "running_at", b"running_at", "starting_at", b"starting_at", "status", b"status"]) -> None: ...

global___Run = Run

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

    STATUS_FIELD_NUMBER: builtins.int
    SUB_STATUS_FIELD_NUMBER: builtins.int
    DETAILS_FIELD_NUMBER: builtins.int
    status: builtins.str
    """"starting", "running", "finished" """
    sub_status: builtins.str
    """"completed", "failed", "stopped" or "" (non-finished)"""
    details: builtins.str
    """failure details"""
    def __init__(
        self,
        *,
        status: builtins.str = ...,
        sub_status: builtins.str = ...,
        details: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["details", b"details", "status", b"status", "sub_status", b"sub_status"]) -> None: ...

global___RunStatus = RunStatus

@typing.final
class GetRunRequest(google.protobuf.message.Message):
    """GetRun"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NODE_FIELD_NUMBER: builtins.int
    RUN_ID_FIELD_NUMBER: builtins.int
    run_id: builtins.int
    @property
    def node(self) -> flwr.proto.node_pb2.Node: ...
    def __init__(
        self,
        *,
        node: flwr.proto.node_pb2.Node | None = ...,
        run_id: builtins.int = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["node", b"node"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["node", b"node", "run_id", b"run_id"]) -> None: ...

global___GetRunRequest = GetRunRequest

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

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

global___GetRunResponse = GetRunResponse

@typing.final
class UpdateRunStatusRequest(google.protobuf.message.Message):
    """UpdateRunStatus"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    RUN_ID_FIELD_NUMBER: builtins.int
    RUN_STATUS_FIELD_NUMBER: builtins.int
    run_id: builtins.int
    @property
    def run_status(self) -> global___RunStatus: ...
    def __init__(
        self,
        *,
        run_id: builtins.int = ...,
        run_status: global___RunStatus | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["run_status", b"run_status"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["run_id", b"run_id", "run_status", b"run_status"]) -> None: ...

global___UpdateRunStatusRequest = UpdateRunStatusRequest

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

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

global___UpdateRunStatusResponse = UpdateRunStatusResponse

@typing.final
class GetRunStatusRequest(google.protobuf.message.Message):
    """GetRunStatus"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NODE_FIELD_NUMBER: builtins.int
    RUN_IDS_FIELD_NUMBER: builtins.int
    @property
    def node(self) -> flwr.proto.node_pb2.Node: ...
    @property
    def run_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    def __init__(
        self,
        *,
        node: flwr.proto.node_pb2.Node | None = ...,
        run_ids: collections.abc.Iterable[builtins.int] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["node", b"node"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["node", b"node", "run_ids", b"run_ids"]) -> None: ...

global___GetRunStatusRequest = GetRunStatusRequest

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

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

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.int
        @property
        def value(self) -> global___RunStatus: ...
        def __init__(
            self,
            *,
            key: builtins.int = ...,
            value: global___RunStatus | 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: ...

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

global___GetRunStatusResponse = GetRunStatusResponse

@typing.final
class GetFederationOptionsRequest(google.protobuf.message.Message):
    """Get Federation Options associated with run"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___GetFederationOptionsRequest = GetFederationOptionsRequest

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

    FEDERATION_OPTIONS_FIELD_NUMBER: builtins.int
    @property
    def federation_options(self) -> flwr.proto.recorddict_pb2.ConfigRecord: ...
    def __init__(
        self,
        *,
        federation_options: flwr.proto.recorddict_pb2.ConfigRecord | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["federation_options", b"federation_options"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["federation_options", b"federation_options"]) -> None: ...

global___GetFederationOptionsResponse = GetFederationOptionsResponse
