# Generated by the Protocol Buffers compiler. DO NOT EDIT!
# source: dotaservice/protos/DotaService.proto
# plugin: grpclib.plugin.main
import abc

import grpclib.const
import grpclib.client

import dotaservice.protos.dota_gcmessages_common_bot_script_pb2
import dotaservice.protos.dota_shared_enums_pb2
import dotaservice.protos.DotaService_pb2


class DotaServiceBase(abc.ABC):

    @abc.abstractmethod
    async def reset(self, stream):
        pass

    @abc.abstractmethod
    async def observe(self, stream):
        pass

    @abc.abstractmethod
    async def act(self, stream):
        pass

    def __mapping__(self):
        return {
            '/DotaService/reset': grpclib.const.Handler(
                self.reset,
                grpclib.const.Cardinality.UNARY_UNARY,
                dotaservice.protos.DotaService_pb2.GameConfig,
                dotaservice.protos.DotaService_pb2.InitialObservation,
            ),
            '/DotaService/observe': grpclib.const.Handler(
                self.observe,
                grpclib.const.Cardinality.UNARY_UNARY,
                dotaservice.protos.DotaService_pb2.ObserveConfig,
                dotaservice.protos.DotaService_pb2.Observation,
            ),
            '/DotaService/act': grpclib.const.Handler(
                self.act,
                grpclib.const.Cardinality.UNARY_UNARY,
                dotaservice.protos.DotaService_pb2.Actions,
                dotaservice.protos.DotaService_pb2.Empty,
            ),
        }


class DotaServiceStub:

    def __init__(self, channel: grpclib.client.Channel) -> None:
        self.reset = grpclib.client.UnaryUnaryMethod(
            channel,
            '/DotaService/reset',
            dotaservice.protos.DotaService_pb2.GameConfig,
            dotaservice.protos.DotaService_pb2.InitialObservation,
        )
        self.observe = grpclib.client.UnaryUnaryMethod(
            channel,
            '/DotaService/observe',
            dotaservice.protos.DotaService_pb2.ObserveConfig,
            dotaservice.protos.DotaService_pb2.Observation,
        )
        self.act = grpclib.client.UnaryUnaryMethod(
            channel,
            '/DotaService/act',
            dotaservice.protos.DotaService_pb2.Actions,
            dotaservice.protos.DotaService_pb2.Empty,
        )
