from sqlalchemy import orm
from couchers.context import CouchersContext
"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""

import abc
import collections.abc
import grpc
import grpc.aio
import moderation_pb2
import typing


GRPC_GENERATED_VERSION: str
GRPC_VERSION: str

class ModerationStub:
    def __init__(self, channel: grpc.Channel) -> None: ...
    GetModerationQueue: grpc.UnaryUnaryMultiCallable[moderation_pb2.GetModerationQueueReq, moderation_pb2.GetModerationQueueRes]
    GetModerationState: grpc.UnaryUnaryMultiCallable[moderation_pb2.GetModerationStateReq, moderation_pb2.GetModerationStateRes]
    GetModerationLog: grpc.UnaryUnaryMultiCallable[moderation_pb2.GetModerationLogReq, moderation_pb2.GetModerationLogRes]
    ModerateContent: grpc.UnaryUnaryMultiCallable[moderation_pb2.ModerateContentReq, moderation_pb2.ModerateContentRes]
    SetUserContentVisibility: grpc.UnaryUnaryMultiCallable[moderation_pb2.SetUserContentVisibilityReq, moderation_pb2.SetUserContentVisibilityRes]
    ListModerationStates: grpc.UnaryUnaryMultiCallable[moderation_pb2.ListModerationStatesReq, moderation_pb2.ListModerationStatesRes]

class ModerationServicer(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def GetModerationQueue(
        self,
        request: moderation_pb2.GetModerationQueueReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> moderation_pb2.GetModerationQueueRes: ...

    @abc.abstractmethod
    def GetModerationState(
        self,
        request: moderation_pb2.GetModerationStateReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> moderation_pb2.GetModerationStateRes: ...

    @abc.abstractmethod
    def GetModerationLog(
        self,
        request: moderation_pb2.GetModerationLogReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> moderation_pb2.GetModerationLogRes: ...

    @abc.abstractmethod
    def ModerateContent(
        self,
        request: moderation_pb2.ModerateContentReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> moderation_pb2.ModerateContentRes: ...

    @abc.abstractmethod
    def SetUserContentVisibility(
        self,
        request: moderation_pb2.SetUserContentVisibilityReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> moderation_pb2.SetUserContentVisibilityRes: ...

    @abc.abstractmethod
    def ListModerationStates(
        self,
        request: moderation_pb2.ListModerationStatesReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> moderation_pb2.ListModerationStatesRes: ...

def add_ModerationServicer_to_server(servicer: ModerationServicer, server: grpc.Server) -> None: ...
