"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import abc
import flwr.proto.appio_pb2
import flwr.proto.heartbeat_pb2
import flwr.proto.log_pb2
import flwr.proto.run_pb2
import grpc

class SimulationIoStub:
    def __init__(self, channel: grpc.Channel) -> None: ...
    ListAppsToLaunch: grpc.UnaryUnaryMultiCallable[
        flwr.proto.appio_pb2.ListAppsToLaunchRequest,
        flwr.proto.appio_pb2.ListAppsToLaunchResponse]
    """List runs to launch"""

    RequestToken: grpc.UnaryUnaryMultiCallable[
        flwr.proto.appio_pb2.RequestTokenRequest,
        flwr.proto.appio_pb2.RequestTokenResponse]
    """Request token for a run"""

    GetRun: grpc.UnaryUnaryMultiCallable[
        flwr.proto.run_pb2.GetRunRequest,
        flwr.proto.run_pb2.GetRunResponse]
    """Get run details"""

    PullAppInputs: grpc.UnaryUnaryMultiCallable[
        flwr.proto.appio_pb2.PullAppInputsRequest,
        flwr.proto.appio_pb2.PullAppInputsResponse]
    """Pull Simulation inputs"""

    PushAppOutputs: grpc.UnaryUnaryMultiCallable[
        flwr.proto.appio_pb2.PushAppOutputsRequest,
        flwr.proto.appio_pb2.PushAppOutputsResponse]
    """Push Simulation outputs"""

    UpdateRunStatus: grpc.UnaryUnaryMultiCallable[
        flwr.proto.run_pb2.UpdateRunStatusRequest,
        flwr.proto.run_pb2.UpdateRunStatusResponse]
    """Update the status of a given run"""

    PushLogs: grpc.UnaryUnaryMultiCallable[
        flwr.proto.log_pb2.PushLogsRequest,
        flwr.proto.log_pb2.PushLogsResponse]
    """Push ServerApp logs"""

    GetFederationOptions: grpc.UnaryUnaryMultiCallable[
        flwr.proto.run_pb2.GetFederationOptionsRequest,
        flwr.proto.run_pb2.GetFederationOptionsResponse]
    """Get Federation Options"""

    GetRunStatus: grpc.UnaryUnaryMultiCallable[
        flwr.proto.run_pb2.GetRunStatusRequest,
        flwr.proto.run_pb2.GetRunStatusResponse]
    """Get Run Status"""

    SendAppHeartbeat: grpc.UnaryUnaryMultiCallable[
        flwr.proto.heartbeat_pb2.SendAppHeartbeatRequest,
        flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse]
    """Heartbeat"""


class SimulationIoServicer(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def ListAppsToLaunch(self,
        request: flwr.proto.appio_pb2.ListAppsToLaunchRequest,
        context: grpc.ServicerContext,
    ) -> flwr.proto.appio_pb2.ListAppsToLaunchResponse:
        """List runs to launch"""
        pass

    @abc.abstractmethod
    def RequestToken(self,
        request: flwr.proto.appio_pb2.RequestTokenRequest,
        context: grpc.ServicerContext,
    ) -> flwr.proto.appio_pb2.RequestTokenResponse:
        """Request token for a run"""
        pass

    @abc.abstractmethod
    def GetRun(self,
        request: flwr.proto.run_pb2.GetRunRequest,
        context: grpc.ServicerContext,
    ) -> flwr.proto.run_pb2.GetRunResponse:
        """Get run details"""
        pass

    @abc.abstractmethod
    def PullAppInputs(self,
        request: flwr.proto.appio_pb2.PullAppInputsRequest,
        context: grpc.ServicerContext,
    ) -> flwr.proto.appio_pb2.PullAppInputsResponse:
        """Pull Simulation inputs"""
        pass

    @abc.abstractmethod
    def PushAppOutputs(self,
        request: flwr.proto.appio_pb2.PushAppOutputsRequest,
        context: grpc.ServicerContext,
    ) -> flwr.proto.appio_pb2.PushAppOutputsResponse:
        """Push Simulation outputs"""
        pass

    @abc.abstractmethod
    def UpdateRunStatus(self,
        request: flwr.proto.run_pb2.UpdateRunStatusRequest,
        context: grpc.ServicerContext,
    ) -> flwr.proto.run_pb2.UpdateRunStatusResponse:
        """Update the status of a given run"""
        pass

    @abc.abstractmethod
    def PushLogs(self,
        request: flwr.proto.log_pb2.PushLogsRequest,
        context: grpc.ServicerContext,
    ) -> flwr.proto.log_pb2.PushLogsResponse:
        """Push ServerApp logs"""
        pass

    @abc.abstractmethod
    def GetFederationOptions(self,
        request: flwr.proto.run_pb2.GetFederationOptionsRequest,
        context: grpc.ServicerContext,
    ) -> flwr.proto.run_pb2.GetFederationOptionsResponse:
        """Get Federation Options"""
        pass

    @abc.abstractmethod
    def GetRunStatus(self,
        request: flwr.proto.run_pb2.GetRunStatusRequest,
        context: grpc.ServicerContext,
    ) -> flwr.proto.run_pb2.GetRunStatusResponse:
        """Get Run Status"""
        pass

    @abc.abstractmethod
    def SendAppHeartbeat(self,
        request: flwr.proto.heartbeat_pb2.SendAppHeartbeatRequest,
        context: grpc.ServicerContext,
    ) -> flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse:
        """Heartbeat"""
        pass


def add_SimulationIoServicer_to_server(servicer: SimulationIoServicer, server: grpc.Server) -> None: ...
