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

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

import GozargahNodeBridge.common.service_pb2


class NodeServiceBase(abc.ABC):

    @abc.abstractmethod
    async def Start(self, stream: 'grpclib.server.Stream[GozargahNodeBridge.common.service_pb2.Backend, GozargahNodeBridge.common.service_pb2.BaseInfoResponse]') -> None:
        pass

    @abc.abstractmethod
    async def Stop(self, stream: 'grpclib.server.Stream[GozargahNodeBridge.common.service_pb2.Empty, GozargahNodeBridge.common.service_pb2.Empty]') -> None:
        pass

    @abc.abstractmethod
    async def GetBaseInfo(self, stream: 'grpclib.server.Stream[GozargahNodeBridge.common.service_pb2.Empty, GozargahNodeBridge.common.service_pb2.BaseInfoResponse]') -> None:
        pass

    @abc.abstractmethod
    async def GetLogs(self, stream: 'grpclib.server.Stream[GozargahNodeBridge.common.service_pb2.Empty, GozargahNodeBridge.common.service_pb2.Log]') -> None:
        pass

    @abc.abstractmethod
    async def GetSystemStats(self, stream: 'grpclib.server.Stream[GozargahNodeBridge.common.service_pb2.Empty, GozargahNodeBridge.common.service_pb2.SystemStatsResponse]') -> None:
        pass

    @abc.abstractmethod
    async def GetBackendStats(self, stream: 'grpclib.server.Stream[GozargahNodeBridge.common.service_pb2.Empty, GozargahNodeBridge.common.service_pb2.BackendStatsResponse]') -> None:
        pass

    @abc.abstractmethod
    async def GetOutboundsStats(self, stream: 'grpclib.server.Stream[GozargahNodeBridge.common.service_pb2.StatRequest, GozargahNodeBridge.common.service_pb2.StatResponse]') -> None:
        pass

    @abc.abstractmethod
    async def GetOutboundStats(self, stream: 'grpclib.server.Stream[GozargahNodeBridge.common.service_pb2.StatRequest, GozargahNodeBridge.common.service_pb2.StatResponse]') -> None:
        pass

    @abc.abstractmethod
    async def GetInboundsStats(self, stream: 'grpclib.server.Stream[GozargahNodeBridge.common.service_pb2.StatRequest, GozargahNodeBridge.common.service_pb2.StatResponse]') -> None:
        pass

    @abc.abstractmethod
    async def GetInboundStats(self, stream: 'grpclib.server.Stream[GozargahNodeBridge.common.service_pb2.StatRequest, GozargahNodeBridge.common.service_pb2.StatResponse]') -> None:
        pass

    @abc.abstractmethod
    async def GetUsersStats(self, stream: 'grpclib.server.Stream[GozargahNodeBridge.common.service_pb2.StatRequest, GozargahNodeBridge.common.service_pb2.StatResponse]') -> None:
        pass

    @abc.abstractmethod
    async def GetUserStats(self, stream: 'grpclib.server.Stream[GozargahNodeBridge.common.service_pb2.StatRequest, GozargahNodeBridge.common.service_pb2.StatResponse]') -> None:
        pass

    @abc.abstractmethod
    async def GetUserOnlineStats(self, stream: 'grpclib.server.Stream[GozargahNodeBridge.common.service_pb2.StatRequest, GozargahNodeBridge.common.service_pb2.OnlineStatResponse]') -> None:
        pass

    @abc.abstractmethod
    async def SyncUser(self, stream: 'grpclib.server.Stream[GozargahNodeBridge.common.service_pb2.User, GozargahNodeBridge.common.service_pb2.Empty]') -> None:
        pass

    @abc.abstractmethod
    async def SyncUsers(self, stream: 'grpclib.server.Stream[GozargahNodeBridge.common.service_pb2.Users, GozargahNodeBridge.common.service_pb2.Empty]') -> None:
        pass

    def __mapping__(self) -> typing.Dict[str, grpclib.const.Handler]:
        return {
            '/service.NodeService/Start': grpclib.const.Handler(
                self.Start,
                grpclib.const.Cardinality.UNARY_UNARY,
                GozargahNodeBridge.common.service_pb2.Backend,
                GozargahNodeBridge.common.service_pb2.BaseInfoResponse,
            ),
            '/service.NodeService/Stop': grpclib.const.Handler(
                self.Stop,
                grpclib.const.Cardinality.UNARY_UNARY,
                GozargahNodeBridge.common.service_pb2.Empty,
                GozargahNodeBridge.common.service_pb2.Empty,
            ),
            '/service.NodeService/GetBaseInfo': grpclib.const.Handler(
                self.GetBaseInfo,
                grpclib.const.Cardinality.UNARY_UNARY,
                GozargahNodeBridge.common.service_pb2.Empty,
                GozargahNodeBridge.common.service_pb2.BaseInfoResponse,
            ),
            '/service.NodeService/GetLogs': grpclib.const.Handler(
                self.GetLogs,
                grpclib.const.Cardinality.UNARY_STREAM,
                GozargahNodeBridge.common.service_pb2.Empty,
                GozargahNodeBridge.common.service_pb2.Log,
            ),
            '/service.NodeService/GetSystemStats': grpclib.const.Handler(
                self.GetSystemStats,
                grpclib.const.Cardinality.UNARY_UNARY,
                GozargahNodeBridge.common.service_pb2.Empty,
                GozargahNodeBridge.common.service_pb2.SystemStatsResponse,
            ),
            '/service.NodeService/GetBackendStats': grpclib.const.Handler(
                self.GetBackendStats,
                grpclib.const.Cardinality.UNARY_UNARY,
                GozargahNodeBridge.common.service_pb2.Empty,
                GozargahNodeBridge.common.service_pb2.BackendStatsResponse,
            ),
            '/service.NodeService/GetOutboundsStats': grpclib.const.Handler(
                self.GetOutboundsStats,
                grpclib.const.Cardinality.UNARY_UNARY,
                GozargahNodeBridge.common.service_pb2.StatRequest,
                GozargahNodeBridge.common.service_pb2.StatResponse,
            ),
            '/service.NodeService/GetOutboundStats': grpclib.const.Handler(
                self.GetOutboundStats,
                grpclib.const.Cardinality.UNARY_UNARY,
                GozargahNodeBridge.common.service_pb2.StatRequest,
                GozargahNodeBridge.common.service_pb2.StatResponse,
            ),
            '/service.NodeService/GetInboundsStats': grpclib.const.Handler(
                self.GetInboundsStats,
                grpclib.const.Cardinality.UNARY_UNARY,
                GozargahNodeBridge.common.service_pb2.StatRequest,
                GozargahNodeBridge.common.service_pb2.StatResponse,
            ),
            '/service.NodeService/GetInboundStats': grpclib.const.Handler(
                self.GetInboundStats,
                grpclib.const.Cardinality.UNARY_UNARY,
                GozargahNodeBridge.common.service_pb2.StatRequest,
                GozargahNodeBridge.common.service_pb2.StatResponse,
            ),
            '/service.NodeService/GetUsersStats': grpclib.const.Handler(
                self.GetUsersStats,
                grpclib.const.Cardinality.UNARY_UNARY,
                GozargahNodeBridge.common.service_pb2.StatRequest,
                GozargahNodeBridge.common.service_pb2.StatResponse,
            ),
            '/service.NodeService/GetUserStats': grpclib.const.Handler(
                self.GetUserStats,
                grpclib.const.Cardinality.UNARY_UNARY,
                GozargahNodeBridge.common.service_pb2.StatRequest,
                GozargahNodeBridge.common.service_pb2.StatResponse,
            ),
            '/service.NodeService/GetUserOnlineStats': grpclib.const.Handler(
                self.GetUserOnlineStats,
                grpclib.const.Cardinality.UNARY_UNARY,
                GozargahNodeBridge.common.service_pb2.StatRequest,
                GozargahNodeBridge.common.service_pb2.OnlineStatResponse,
            ),
            '/service.NodeService/SyncUser': grpclib.const.Handler(
                self.SyncUser,
                grpclib.const.Cardinality.STREAM_UNARY,
                GozargahNodeBridge.common.service_pb2.User,
                GozargahNodeBridge.common.service_pb2.Empty,
            ),
            '/service.NodeService/SyncUsers': grpclib.const.Handler(
                self.SyncUsers,
                grpclib.const.Cardinality.UNARY_UNARY,
                GozargahNodeBridge.common.service_pb2.Users,
                GozargahNodeBridge.common.service_pb2.Empty,
            ),
        }


class NodeServiceStub:

    def __init__(self, channel: grpclib.client.Channel) -> None:
        self.Start = grpclib.client.UnaryUnaryMethod(
            channel,
            '/service.NodeService/Start',
            GozargahNodeBridge.common.service_pb2.Backend,
            GozargahNodeBridge.common.service_pb2.BaseInfoResponse,
        )
        self.Stop = grpclib.client.UnaryUnaryMethod(
            channel,
            '/service.NodeService/Stop',
            GozargahNodeBridge.common.service_pb2.Empty,
            GozargahNodeBridge.common.service_pb2.Empty,
        )
        self.GetBaseInfo = grpclib.client.UnaryUnaryMethod(
            channel,
            '/service.NodeService/GetBaseInfo',
            GozargahNodeBridge.common.service_pb2.Empty,
            GozargahNodeBridge.common.service_pb2.BaseInfoResponse,
        )
        self.GetLogs = grpclib.client.UnaryStreamMethod(
            channel,
            '/service.NodeService/GetLogs',
            GozargahNodeBridge.common.service_pb2.Empty,
            GozargahNodeBridge.common.service_pb2.Log,
        )
        self.GetSystemStats = grpclib.client.UnaryUnaryMethod(
            channel,
            '/service.NodeService/GetSystemStats',
            GozargahNodeBridge.common.service_pb2.Empty,
            GozargahNodeBridge.common.service_pb2.SystemStatsResponse,
        )
        self.GetBackendStats = grpclib.client.UnaryUnaryMethod(
            channel,
            '/service.NodeService/GetBackendStats',
            GozargahNodeBridge.common.service_pb2.Empty,
            GozargahNodeBridge.common.service_pb2.BackendStatsResponse,
        )
        self.GetOutboundsStats = grpclib.client.UnaryUnaryMethod(
            channel,
            '/service.NodeService/GetOutboundsStats',
            GozargahNodeBridge.common.service_pb2.StatRequest,
            GozargahNodeBridge.common.service_pb2.StatResponse,
        )
        self.GetOutboundStats = grpclib.client.UnaryUnaryMethod(
            channel,
            '/service.NodeService/GetOutboundStats',
            GozargahNodeBridge.common.service_pb2.StatRequest,
            GozargahNodeBridge.common.service_pb2.StatResponse,
        )
        self.GetInboundsStats = grpclib.client.UnaryUnaryMethod(
            channel,
            '/service.NodeService/GetInboundsStats',
            GozargahNodeBridge.common.service_pb2.StatRequest,
            GozargahNodeBridge.common.service_pb2.StatResponse,
        )
        self.GetInboundStats = grpclib.client.UnaryUnaryMethod(
            channel,
            '/service.NodeService/GetInboundStats',
            GozargahNodeBridge.common.service_pb2.StatRequest,
            GozargahNodeBridge.common.service_pb2.StatResponse,
        )
        self.GetUsersStats = grpclib.client.UnaryUnaryMethod(
            channel,
            '/service.NodeService/GetUsersStats',
            GozargahNodeBridge.common.service_pb2.StatRequest,
            GozargahNodeBridge.common.service_pb2.StatResponse,
        )
        self.GetUserStats = grpclib.client.UnaryUnaryMethod(
            channel,
            '/service.NodeService/GetUserStats',
            GozargahNodeBridge.common.service_pb2.StatRequest,
            GozargahNodeBridge.common.service_pb2.StatResponse,
        )
        self.GetUserOnlineStats = grpclib.client.UnaryUnaryMethod(
            channel,
            '/service.NodeService/GetUserOnlineStats',
            GozargahNodeBridge.common.service_pb2.StatRequest,
            GozargahNodeBridge.common.service_pb2.OnlineStatResponse,
        )
        self.SyncUser = grpclib.client.StreamUnaryMethod(
            channel,
            '/service.NodeService/SyncUser',
            GozargahNodeBridge.common.service_pb2.User,
            GozargahNodeBridge.common.service_pb2.Empty,
        )
        self.SyncUsers = grpclib.client.UnaryUnaryMethod(
            channel,
            '/service.NodeService/SyncUsers',
            GozargahNodeBridge.common.service_pb2.Users,
            GozargahNodeBridge.common.service_pb2.Empty,
        )
