# Generated by the Protocol Buffers compiler. DO NOT EDIT!
# source: modal_proto/task_command_router.proto
# plugin: grpclib.plugin.main
import abc
import typing

import grpclib.const
import grpclib.client
if typing.TYPE_CHECKING:
    import grpclib.server

import google.protobuf.empty_pb2
import modal_proto.api_pb2
import modal_proto.task_command_router_pb2


class TaskCommandRouterBase(abc.ABC):

    @abc.abstractmethod
    async def TaskExecPoll(self, stream: 'grpclib.server.Stream[modal_proto.task_command_router_pb2.TaskExecPollRequest, modal_proto.task_command_router_pb2.TaskExecPollResponse]') -> None:
        pass

    @abc.abstractmethod
    async def TaskExecStart(self, stream: 'grpclib.server.Stream[modal_proto.task_command_router_pb2.TaskExecStartRequest, modal_proto.task_command_router_pb2.TaskExecStartResponse]') -> None:
        pass

    @abc.abstractmethod
    async def TaskExecStdinWrite(self, stream: 'grpclib.server.Stream[modal_proto.task_command_router_pb2.TaskExecStdinWriteRequest, modal_proto.task_command_router_pb2.TaskExecStdinWriteResponse]') -> None:
        pass

    @abc.abstractmethod
    async def TaskExecStdioRead(self, stream: 'grpclib.server.Stream[modal_proto.task_command_router_pb2.TaskExecStdioReadRequest, modal_proto.task_command_router_pb2.TaskExecStdioReadResponse]') -> None:
        pass

    @abc.abstractmethod
    async def TaskExecWait(self, stream: 'grpclib.server.Stream[modal_proto.task_command_router_pb2.TaskExecWaitRequest, modal_proto.task_command_router_pb2.TaskExecWaitResponse]') -> None:
        pass

    @abc.abstractmethod
    async def TaskMountDirectory(self, stream: 'grpclib.server.Stream[modal_proto.task_command_router_pb2.TaskMountDirectoryRequest, google.protobuf.empty_pb2.Empty]') -> None:
        pass

    @abc.abstractmethod
    async def TaskSnapshotDirectory(self, stream: 'grpclib.server.Stream[modal_proto.task_command_router_pb2.TaskSnapshotDirectoryRequest, modal_proto.task_command_router_pb2.TaskSnapshotDirectoryResponse]') -> None:
        pass

    def __mapping__(self) -> typing.Dict[str, grpclib.const.Handler]:
        return {
            '/modal.task_command_router.TaskCommandRouter/TaskExecPoll': grpclib.const.Handler(
                self.TaskExecPoll,
                grpclib.const.Cardinality.UNARY_UNARY,
                modal_proto.task_command_router_pb2.TaskExecPollRequest,
                modal_proto.task_command_router_pb2.TaskExecPollResponse,
            ),
            '/modal.task_command_router.TaskCommandRouter/TaskExecStart': grpclib.const.Handler(
                self.TaskExecStart,
                grpclib.const.Cardinality.UNARY_UNARY,
                modal_proto.task_command_router_pb2.TaskExecStartRequest,
                modal_proto.task_command_router_pb2.TaskExecStartResponse,
            ),
            '/modal.task_command_router.TaskCommandRouter/TaskExecStdinWrite': grpclib.const.Handler(
                self.TaskExecStdinWrite,
                grpclib.const.Cardinality.UNARY_UNARY,
                modal_proto.task_command_router_pb2.TaskExecStdinWriteRequest,
                modal_proto.task_command_router_pb2.TaskExecStdinWriteResponse,
            ),
            '/modal.task_command_router.TaskCommandRouter/TaskExecStdioRead': grpclib.const.Handler(
                self.TaskExecStdioRead,
                grpclib.const.Cardinality.UNARY_STREAM,
                modal_proto.task_command_router_pb2.TaskExecStdioReadRequest,
                modal_proto.task_command_router_pb2.TaskExecStdioReadResponse,
            ),
            '/modal.task_command_router.TaskCommandRouter/TaskExecWait': grpclib.const.Handler(
                self.TaskExecWait,
                grpclib.const.Cardinality.UNARY_UNARY,
                modal_proto.task_command_router_pb2.TaskExecWaitRequest,
                modal_proto.task_command_router_pb2.TaskExecWaitResponse,
            ),
            '/modal.task_command_router.TaskCommandRouter/TaskMountDirectory': grpclib.const.Handler(
                self.TaskMountDirectory,
                grpclib.const.Cardinality.UNARY_UNARY,
                modal_proto.task_command_router_pb2.TaskMountDirectoryRequest,
                google.protobuf.empty_pb2.Empty,
            ),
            '/modal.task_command_router.TaskCommandRouter/TaskSnapshotDirectory': grpclib.const.Handler(
                self.TaskSnapshotDirectory,
                grpclib.const.Cardinality.UNARY_UNARY,
                modal_proto.task_command_router_pb2.TaskSnapshotDirectoryRequest,
                modal_proto.task_command_router_pb2.TaskSnapshotDirectoryResponse,
            ),
        }


class TaskCommandRouterStub:

    def __init__(self, channel: grpclib.client.Channel) -> None:
        self.TaskExecPoll = grpclib.client.UnaryUnaryMethod(
            channel,
            '/modal.task_command_router.TaskCommandRouter/TaskExecPoll',
            modal_proto.task_command_router_pb2.TaskExecPollRequest,
            modal_proto.task_command_router_pb2.TaskExecPollResponse,
        )
        self.TaskExecStart = grpclib.client.UnaryUnaryMethod(
            channel,
            '/modal.task_command_router.TaskCommandRouter/TaskExecStart',
            modal_proto.task_command_router_pb2.TaskExecStartRequest,
            modal_proto.task_command_router_pb2.TaskExecStartResponse,
        )
        self.TaskExecStdinWrite = grpclib.client.UnaryUnaryMethod(
            channel,
            '/modal.task_command_router.TaskCommandRouter/TaskExecStdinWrite',
            modal_proto.task_command_router_pb2.TaskExecStdinWriteRequest,
            modal_proto.task_command_router_pb2.TaskExecStdinWriteResponse,
        )
        self.TaskExecStdioRead = grpclib.client.UnaryStreamMethod(
            channel,
            '/modal.task_command_router.TaskCommandRouter/TaskExecStdioRead',
            modal_proto.task_command_router_pb2.TaskExecStdioReadRequest,
            modal_proto.task_command_router_pb2.TaskExecStdioReadResponse,
        )
        self.TaskExecWait = grpclib.client.UnaryUnaryMethod(
            channel,
            '/modal.task_command_router.TaskCommandRouter/TaskExecWait',
            modal_proto.task_command_router_pb2.TaskExecWaitRequest,
            modal_proto.task_command_router_pb2.TaskExecWaitResponse,
        )
        self.TaskMountDirectory = grpclib.client.UnaryUnaryMethod(
            channel,
            '/modal.task_command_router.TaskCommandRouter/TaskMountDirectory',
            modal_proto.task_command_router_pb2.TaskMountDirectoryRequest,
            google.protobuf.empty_pb2.Empty,
        )
        self.TaskSnapshotDirectory = grpclib.client.UnaryUnaryMethod(
            channel,
            '/modal.task_command_router.TaskCommandRouter/TaskSnapshotDirectory',
            modal_proto.task_command_router_pb2.TaskSnapshotDirectoryRequest,
            modal_proto.task_command_router_pb2.TaskSnapshotDirectoryResponse,
        )
