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 communities_pb2
import editor_pb2
import google.protobuf.empty_pb2
import grpc
import grpc.aio
import typing


GRPC_GENERATED_VERSION: str
GRPC_VERSION: str

class EditorStub:
    def __init__(self, channel: grpc.Channel) -> None: ...
    CreateCommunity: grpc.UnaryUnaryMultiCallable[editor_pb2.CreateCommunityReq, communities_pb2.Community]
    UpdateCommunity: grpc.UnaryUnaryMultiCallable[editor_pb2.UpdateCommunityReq, communities_pb2.Community]
    ListEventCommunityInviteRequests: grpc.UnaryUnaryMultiCallable[editor_pb2.ListEventCommunityInviteRequestsReq, editor_pb2.ListEventCommunityInviteRequestsRes]
    DecideEventCommunityInviteRequest: grpc.UnaryUnaryMultiCallable[editor_pb2.DecideEventCommunityInviteRequestReq, editor_pb2.DecideEventCommunityInviteRequestRes]
    SendBlogPostNotification: grpc.UnaryUnaryMultiCallable[editor_pb2.SendBlogPostNotificationReq, google.protobuf.empty_pb2.Empty]
    MakeUserVolunteer: grpc.UnaryUnaryMultiCallable[editor_pb2.MakeUserVolunteerReq, editor_pb2.Volunteer]
    UpdateVolunteer: grpc.UnaryUnaryMultiCallable[editor_pb2.UpdateVolunteerReq, editor_pb2.Volunteer]
    ListVolunteers: grpc.UnaryUnaryMultiCallable[editor_pb2.ListVolunteersReq, editor_pb2.ListVolunteersRes]
    ListPostcards: grpc.UnaryUnaryMultiCallable[editor_pb2.ListPostcardsReq, editor_pb2.ListPostcardsRes]
    DownloadPostcardPdf: grpc.UnaryUnaryMultiCallable[editor_pb2.DownloadPostcardPdfReq, editor_pb2.DownloadPostcardPdfRes]

class EditorServicer(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def CreateCommunity(
        self,
        request: editor_pb2.CreateCommunityReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> communities_pb2.Community: ...

    @abc.abstractmethod
    def UpdateCommunity(
        self,
        request: editor_pb2.UpdateCommunityReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> communities_pb2.Community: ...

    @abc.abstractmethod
    def ListEventCommunityInviteRequests(
        self,
        request: editor_pb2.ListEventCommunityInviteRequestsReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> editor_pb2.ListEventCommunityInviteRequestsRes: ...

    @abc.abstractmethod
    def DecideEventCommunityInviteRequest(
        self,
        request: editor_pb2.DecideEventCommunityInviteRequestReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> editor_pb2.DecideEventCommunityInviteRequestRes: ...

    @abc.abstractmethod
    def SendBlogPostNotification(
        self,
        request: editor_pb2.SendBlogPostNotificationReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> google.protobuf.empty_pb2.Empty: ...

    @abc.abstractmethod
    def MakeUserVolunteer(
        self,
        request: editor_pb2.MakeUserVolunteerReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> editor_pb2.Volunteer: ...

    @abc.abstractmethod
    def UpdateVolunteer(
        self,
        request: editor_pb2.UpdateVolunteerReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> editor_pb2.Volunteer: ...

    @abc.abstractmethod
    def ListVolunteers(
        self,
        request: editor_pb2.ListVolunteersReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> editor_pb2.ListVolunteersRes: ...

    @abc.abstractmethod
    def ListPostcards(
        self,
        request: editor_pb2.ListPostcardsReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> editor_pb2.ListPostcardsRes: ...

    @abc.abstractmethod
    def DownloadPostcardPdf(
        self,
        request: editor_pb2.DownloadPostcardPdfReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> editor_pb2.DownloadPostcardPdfRes: ...

def add_EditorServicer_to_server(servicer: EditorServicer, server: grpc.Server) -> None: ...
