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


GRPC_GENERATED_VERSION: str
GRPC_VERSION: str

class ResourcesStub:
    def __init__(self, channel: grpc.Channel) -> None: ...
    GetTermsOfService: grpc.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, resources_pb2.GetTermsOfServiceRes]
    """This API contains general resources needed by frontends and managed by the backend team

    Returns the latest Terms of Service markdown, to be shown on signup or if jailed due to this
    """
    GetCommunityGuidelines: grpc.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, resources_pb2.GetCommunityGuidelinesRes]
    """Returns the latest Community Guidelines, see GetCommunityGuidelinesRes
    Each of the Community Guidelines should be shown under the text "Please agree to our Community Guidelines", and
    each Community Guideline should be shown with its title, the logo, and the guideline content. The user needs to
    tick a checkbox to agree each of the individual Guidelines and the frontend should only say a user agreed to them
    if they agreed to each one individually.
    """
    GetRegions: grpc.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, resources_pb2.GetRegionsRes]
    """Returns a list of allowed regions"""
    GetLanguages: grpc.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, resources_pb2.GetLanguagesRes]
    """Returns a list of allowed languages. This is a subset of the full ISO639-3 table."""
    GetBadges: grpc.UnaryUnaryMultiCallable[google.protobuf.empty_pb2.Empty, resources_pb2.GetBadgesRes]
    """Returns a list of possible profile badges"""

class ResourcesServicer(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def GetTermsOfService(
        self,
        request: google.protobuf.empty_pb2.Empty,
        context: CouchersContext,
        session: orm.Session,
    ) -> resources_pb2.GetTermsOfServiceRes:
        """This API contains general resources needed by frontends and managed by the backend team

        Returns the latest Terms of Service markdown, to be shown on signup or if jailed due to this
        """

    @abc.abstractmethod
    def GetCommunityGuidelines(
        self,
        request: google.protobuf.empty_pb2.Empty,
        context: CouchersContext,
        session: orm.Session,
    ) -> resources_pb2.GetCommunityGuidelinesRes:
        """Returns the latest Community Guidelines, see GetCommunityGuidelinesRes
        Each of the Community Guidelines should be shown under the text "Please agree to our Community Guidelines", and
        each Community Guideline should be shown with its title, the logo, and the guideline content. The user needs to
        tick a checkbox to agree each of the individual Guidelines and the frontend should only say a user agreed to them
        if they agreed to each one individually.
        """

    @abc.abstractmethod
    def GetRegions(
        self,
        request: google.protobuf.empty_pb2.Empty,
        context: CouchersContext,
        session: orm.Session,
    ) -> resources_pb2.GetRegionsRes:
        """Returns a list of allowed regions"""

    @abc.abstractmethod
    def GetLanguages(
        self,
        request: google.protobuf.empty_pb2.Empty,
        context: CouchersContext,
        session: orm.Session,
    ) -> resources_pb2.GetLanguagesRes:
        """Returns a list of allowed languages. This is a subset of the full ISO639-3 table."""

    @abc.abstractmethod
    def GetBadges(
        self,
        request: google.protobuf.empty_pb2.Empty,
        context: CouchersContext,
        session: orm.Session,
    ) -> resources_pb2.GetBadgesRes:
        """Returns a list of possible profile badges"""

def add_ResourcesServicer_to_server(servicer: ResourcesServicer, server: grpc.Server) -> None: ...
