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 galleries_pb2
import grpc
import grpc.aio
import typing


GRPC_GENERATED_VERSION: str
GRPC_VERSION: str

class GalleriesStub:
    def __init__(self, channel: grpc.Channel) -> None: ...
    GetGallery: grpc.UnaryUnaryMultiCallable[galleries_pb2.GetGalleryReq, galleries_pb2.PhotoGallery]
    """Get a specific gallery by ID"""
    AddPhotoToGallery: grpc.UnaryUnaryMultiCallable[galleries_pb2.AddPhotoToGalleryReq, galleries_pb2.PhotoGallery]
    """Add a photo to your gallery (appended to end)"""
    RemovePhotoFromGallery: grpc.UnaryUnaryMultiCallable[galleries_pb2.RemovePhotoFromGalleryReq, galleries_pb2.PhotoGallery]
    """Remove a photo from your gallery"""
    MovePhoto: grpc.UnaryUnaryMultiCallable[galleries_pb2.MovePhotoReq, galleries_pb2.PhotoGallery]
    """Move a photo to a new position in the gallery"""
    UpdatePhotoCaption: grpc.UnaryUnaryMultiCallable[galleries_pb2.UpdatePhotoCaptionReq, galleries_pb2.PhotoGallery]
    """Update the caption of a specific photo"""
    GetGalleryEditInfo: grpc.UnaryUnaryMultiCallable[galleries_pb2.GetGalleryEditInfoReq, galleries_pb2.GetGalleryEditInfoRes]
    """Get edit info for a gallery you own (e.g., max_photos)"""

class GalleriesServicer(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def GetGallery(
        self,
        request: galleries_pb2.GetGalleryReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> galleries_pb2.PhotoGallery:
        """Get a specific gallery by ID"""

    @abc.abstractmethod
    def AddPhotoToGallery(
        self,
        request: galleries_pb2.AddPhotoToGalleryReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> galleries_pb2.PhotoGallery:
        """Add a photo to your gallery (appended to end)"""

    @abc.abstractmethod
    def RemovePhotoFromGallery(
        self,
        request: galleries_pb2.RemovePhotoFromGalleryReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> galleries_pb2.PhotoGallery:
        """Remove a photo from your gallery"""

    @abc.abstractmethod
    def MovePhoto(
        self,
        request: galleries_pb2.MovePhotoReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> galleries_pb2.PhotoGallery:
        """Move a photo to a new position in the gallery"""

    @abc.abstractmethod
    def UpdatePhotoCaption(
        self,
        request: galleries_pb2.UpdatePhotoCaptionReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> galleries_pb2.PhotoGallery:
        """Update the caption of a specific photo"""

    @abc.abstractmethod
    def GetGalleryEditInfo(
        self,
        request: galleries_pb2.GetGalleryEditInfoReq,
        context: CouchersContext,
        session: orm.Session,
    ) -> galleries_pb2.GetGalleryEditInfoRes:
        """Get edit info for a gallery you own (e.g., max_photos)"""

def add_GalleriesServicer_to_server(servicer: GalleriesServicer, server: grpc.Server) -> None: ...
