# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

from . import admin_pb2 as admin__pb2
from . import api_pb2 as api__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2


class AdminStub(object):
    """Missing associated documentation comment in .proto file."""

    def __init__(self, channel):
        """Constructor.

        Args:
            channel: A grpc.Channel.
        """
        self.GetUserDetails = channel.unary_unary(
                '/org.couchers.admin.Admin/GetUserDetails',
                request_serializer=admin__pb2.GetUserDetailsReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.GetUser = channel.unary_unary(
                '/org.couchers.admin.Admin/GetUser',
                request_serializer=admin__pb2.GetUserReq.SerializeToString,
                response_deserializer=api__pb2.User.FromString,
                )
        self.SearchUsers = channel.unary_unary(
                '/org.couchers.admin.Admin/SearchUsers',
                request_serializer=admin__pb2.SearchUsersReq.SerializeToString,
                response_deserializer=admin__pb2.SearchUsersRes.FromString,
                )
        self.ChangeUserGender = channel.unary_unary(
                '/org.couchers.admin.Admin/ChangeUserGender',
                request_serializer=admin__pb2.ChangeUserGenderReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.ChangeUserBirthdate = channel.unary_unary(
                '/org.couchers.admin.Admin/ChangeUserBirthdate',
                request_serializer=admin__pb2.ChangeUserBirthdateReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.AddBadge = channel.unary_unary(
                '/org.couchers.admin.Admin/AddBadge',
                request_serializer=admin__pb2.AddBadgeReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.RemoveBadge = channel.unary_unary(
                '/org.couchers.admin.Admin/RemoveBadge',
                request_serializer=admin__pb2.RemoveBadgeReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.SetPassportSexGenderException = channel.unary_unary(
                '/org.couchers.admin.Admin/SetPassportSexGenderException',
                request_serializer=admin__pb2.SetPassportSexGenderExceptionReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.BanUser = channel.unary_unary(
                '/org.couchers.admin.Admin/BanUser',
                request_serializer=admin__pb2.BanUserReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.UnbanUser = channel.unary_unary(
                '/org.couchers.admin.Admin/UnbanUser',
                request_serializer=admin__pb2.UnbanUserReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.ShadowUser = channel.unary_unary(
                '/org.couchers.admin.Admin/ShadowUser',
                request_serializer=admin__pb2.ShadowUserReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.UnshadowUser = channel.unary_unary(
                '/org.couchers.admin.Admin/UnshadowUser',
                request_serializer=admin__pb2.UnshadowUserReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.AddAdminNote = channel.unary_unary(
                '/org.couchers.admin.Admin/AddAdminNote',
                request_serializer=admin__pb2.AddAdminNoteReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.GetContentReport = channel.unary_unary(
                '/org.couchers.admin.Admin/GetContentReport',
                request_serializer=admin__pb2.GetContentReportReq.SerializeToString,
                response_deserializer=admin__pb2.GetContentReportRes.FromString,
                )
        self.GetContentReportsForAuthor = channel.unary_unary(
                '/org.couchers.admin.Admin/GetContentReportsForAuthor',
                request_serializer=admin__pb2.GetContentReportsForAuthorReq.SerializeToString,
                response_deserializer=admin__pb2.GetContentReportsForAuthorRes.FromString,
                )
        self.SendModNote = channel.unary_unary(
                '/org.couchers.admin.Admin/SendModNote',
                request_serializer=admin__pb2.SendModNoteReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.MarkUserNeedsLocationUpdate = channel.unary_unary(
                '/org.couchers.admin.Admin/MarkUserNeedsLocationUpdate',
                request_serializer=admin__pb2.MarkUserNeedsLocationUpdateReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.DeleteUser = channel.unary_unary(
                '/org.couchers.admin.Admin/DeleteUser',
                request_serializer=admin__pb2.DeleteUserReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.RecoverDeletedUser = channel.unary_unary(
                '/org.couchers.admin.Admin/RecoverDeletedUser',
                request_serializer=admin__pb2.RecoverDeletedUserReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.CreateApiKey = channel.unary_unary(
                '/org.couchers.admin.Admin/CreateApiKey',
                request_serializer=admin__pb2.CreateApiKeyReq.SerializeToString,
                response_deserializer=admin__pb2.CreateApiKeyRes.FromString,
                )
        self.GetChats = channel.unary_unary(
                '/org.couchers.admin.Admin/GetChats',
                request_serializer=admin__pb2.GetChatsReq.SerializeToString,
                response_deserializer=admin__pb2.GetChatsRes.FromString,
                )
        self.DeleteEvent = channel.unary_unary(
                '/org.couchers.admin.Admin/DeleteEvent',
                request_serializer=admin__pb2.DeleteEventReq.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.ListUserIds = channel.unary_unary(
                '/org.couchers.admin.Admin/ListUserIds',
                request_serializer=admin__pb2.ListUserIdsReq.SerializeToString,
                response_deserializer=admin__pb2.ListUserIdsRes.FromString,
                )
        self.EditReferenceText = channel.unary_unary(
                '/org.couchers.admin.Admin/EditReferenceText',
                request_serializer=admin__pb2.EditReferenceTextReq.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.DeleteReference = channel.unary_unary(
                '/org.couchers.admin.Admin/DeleteReference',
                request_serializer=admin__pb2.DeleteReferenceReq.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.GetUserReferences = channel.unary_unary(
                '/org.couchers.admin.Admin/GetUserReferences',
                request_serializer=admin__pb2.GetUserReferencesReq.SerializeToString,
                response_deserializer=admin__pb2.GetUserReferencesRes.FromString,
                )
        self.GetFriendRequests = channel.unary_unary(
                '/org.couchers.admin.Admin/GetFriendRequests',
                request_serializer=admin__pb2.GetFriendRequestsReq.SerializeToString,
                response_deserializer=admin__pb2.GetFriendRequestsRes.FromString,
                )
        self.GetNonvisibleUserAccessLog = channel.unary_unary(
                '/org.couchers.admin.Admin/GetNonvisibleUserAccessLog',
                request_serializer=admin__pb2.GetNonvisibleUserAccessLogReq.SerializeToString,
                response_deserializer=admin__pb2.GetNonvisibleUserAccessLogRes.FromString,
                )
        self.EditDiscussion = channel.unary_unary(
                '/org.couchers.admin.Admin/EditDiscussion',
                request_serializer=admin__pb2.EditDiscussionReq.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.DeleteDiscussion = channel.unary_unary(
                '/org.couchers.admin.Admin/DeleteDiscussion',
                request_serializer=admin__pb2.AdminDeleteDiscussionReq.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.EditReply = channel.unary_unary(
                '/org.couchers.admin.Admin/EditReply',
                request_serializer=admin__pb2.EditReplyReq.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.AddUsersToModerationUserList = channel.unary_unary(
                '/org.couchers.admin.Admin/AddUsersToModerationUserList',
                request_serializer=admin__pb2.AddUsersToModerationUserListReq.SerializeToString,
                response_deserializer=admin__pb2.AddUsersToModerationUserListRes.FromString,
                )
        self.RemoveUserFromModerationUserList = channel.unary_unary(
                '/org.couchers.admin.Admin/RemoveUserFromModerationUserList',
                request_serializer=admin__pb2.RemoveUserFromModerationUserListReq.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.ListModerationUserLists = channel.unary_unary(
                '/org.couchers.admin.Admin/ListModerationUserLists',
                request_serializer=admin__pb2.ListModerationUserListsReq.SerializeToString,
                response_deserializer=admin__pb2.ListModerationUserListsRes.FromString,
                )
        self.CreateAccountDeletionLink = channel.unary_unary(
                '/org.couchers.admin.Admin/CreateAccountDeletionLink',
                request_serializer=admin__pb2.CreateAccountDeletionLinkReq.SerializeToString,
                response_deserializer=admin__pb2.CreateAccountDeletionLinkRes.FromString,
                )
        self.AccessStats = channel.unary_unary(
                '/org.couchers.admin.Admin/AccessStats',
                request_serializer=admin__pb2.AccessStatsReq.SerializeToString,
                response_deserializer=admin__pb2.AccessStatsRes.FromString,
                )
        self.SetLastDonated = channel.unary_unary(
                '/org.couchers.admin.Admin/SetLastDonated',
                request_serializer=admin__pb2.SetLastDonatedReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.CreateAdminTag = channel.unary_unary(
                '/org.couchers.admin.Admin/CreateAdminTag',
                request_serializer=admin__pb2.CreateAdminTagReq.SerializeToString,
                response_deserializer=admin__pb2.AdminTagInfo.FromString,
                )
        self.ListAdminTags = channel.unary_unary(
                '/org.couchers.admin.Admin/ListAdminTags',
                request_serializer=admin__pb2.ListAdminTagsReq.SerializeToString,
                response_deserializer=admin__pb2.ListAdminTagsRes.FromString,
                )
        self.AddAdminTagToUser = channel.unary_unary(
                '/org.couchers.admin.Admin/AddAdminTagToUser',
                request_serializer=admin__pb2.AddAdminTagToUserReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.RemoveAdminTagFromUser = channel.unary_unary(
                '/org.couchers.admin.Admin/RemoveAdminTagFromUser',
                request_serializer=admin__pb2.RemoveAdminTagFromUserReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.SetModScore = channel.unary_unary(
                '/org.couchers.admin.Admin/SetModScore',
                request_serializer=admin__pb2.SetModScoreReq.SerializeToString,
                response_deserializer=admin__pb2.UserDetails.FromString,
                )
        self.ListAdminActions = channel.unary_unary(
                '/org.couchers.admin.Admin/ListAdminActions',
                request_serializer=admin__pb2.ListAdminActionsReq.SerializeToString,
                response_deserializer=admin__pb2.ListAdminActionsRes.FromString,
                )
        self.ListUserUploads = channel.unary_unary(
                '/org.couchers.admin.Admin/ListUserUploads',
                request_serializer=admin__pb2.ListUserUploadsReq.SerializeToString,
                response_deserializer=admin__pb2.ListUserUploadsRes.FromString,
                )
        self.CreateOTAPackage = channel.unary_unary(
                '/org.couchers.admin.Admin/CreateOTAPackage',
                request_serializer=admin__pb2.CreateOTAPackageReq.SerializeToString,
                response_deserializer=admin__pb2.OTAPackage.FromString,
                )
        self.ListOTAPackages = channel.unary_unary(
                '/org.couchers.admin.Admin/ListOTAPackages',
                request_serializer=admin__pb2.ListOTAPackagesReq.SerializeToString,
                response_deserializer=admin__pb2.ListOTAPackagesRes.FromString,
                )
        self.BanOTAPackage = channel.unary_unary(
                '/org.couchers.admin.Admin/BanOTAPackage',
                request_serializer=admin__pb2.BanOTAPackageReq.SerializeToString,
                response_deserializer=admin__pb2.OTAPackage.FromString,
                )


class AdminServicer(object):
    """Missing associated documentation comment in .proto file."""

    def GetUserDetails(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetUser(self, request, context):
        """Get info about a particular user, ignores the fact that they may be banned/deleted
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def SearchUsers(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ChangeUserGender(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ChangeUserBirthdate(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AddBadge(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def RemoveBadge(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def SetPassportSexGenderException(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def BanUser(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UnbanUser(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ShadowUser(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UnshadowUser(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AddAdminNote(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetContentReport(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetContentReportsForAuthor(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def SendModNote(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def MarkUserNeedsLocationUpdate(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeleteUser(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def RecoverDeletedUser(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreateApiKey(self, request, context):
        """Create an API key for a user. For security, we don't return the API key to the admin calling this API, rather
        it's sent to the user in an email
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetChats(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeleteEvent(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListUserIds(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def EditReferenceText(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeleteReference(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetUserReferences(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetFriendRequests(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetNonvisibleUserAccessLog(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def EditDiscussion(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeleteDiscussion(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def EditReply(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AddUsersToModerationUserList(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def RemoveUserFromModerationUserList(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListModerationUserLists(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreateAccountDeletionLink(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AccessStats(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def SetLastDonated(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreateAdminTag(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListAdminTags(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def AddAdminTagToUser(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def RemoveAdminTagFromUser(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def SetModScore(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListAdminActions(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListUserUploads(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreateOTAPackage(self, request, context):
        """Register a published Expo OTA bundle so the backend serves it to compatible native builds
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListOTAPackages(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def BanOTAPackage(self, request, context):
        """Ban a package so it's no longer served; a matching client falls back to the next-newest
        non-banned package (i.e. a rollback), or to no update if none remain. Irreversible — to undo
        an accidental ban, republish the bundle as a new package (rolling forward).
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_AdminServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'GetUserDetails': grpc.unary_unary_rpc_method_handler(
                    servicer.GetUserDetails,
                    request_deserializer=admin__pb2.GetUserDetailsReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'GetUser': grpc.unary_unary_rpc_method_handler(
                    servicer.GetUser,
                    request_deserializer=admin__pb2.GetUserReq.FromString,
                    response_serializer=api__pb2.User.SerializeToString,
            ),
            'SearchUsers': grpc.unary_unary_rpc_method_handler(
                    servicer.SearchUsers,
                    request_deserializer=admin__pb2.SearchUsersReq.FromString,
                    response_serializer=admin__pb2.SearchUsersRes.SerializeToString,
            ),
            'ChangeUserGender': grpc.unary_unary_rpc_method_handler(
                    servicer.ChangeUserGender,
                    request_deserializer=admin__pb2.ChangeUserGenderReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'ChangeUserBirthdate': grpc.unary_unary_rpc_method_handler(
                    servicer.ChangeUserBirthdate,
                    request_deserializer=admin__pb2.ChangeUserBirthdateReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'AddBadge': grpc.unary_unary_rpc_method_handler(
                    servicer.AddBadge,
                    request_deserializer=admin__pb2.AddBadgeReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'RemoveBadge': grpc.unary_unary_rpc_method_handler(
                    servicer.RemoveBadge,
                    request_deserializer=admin__pb2.RemoveBadgeReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'SetPassportSexGenderException': grpc.unary_unary_rpc_method_handler(
                    servicer.SetPassportSexGenderException,
                    request_deserializer=admin__pb2.SetPassportSexGenderExceptionReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'BanUser': grpc.unary_unary_rpc_method_handler(
                    servicer.BanUser,
                    request_deserializer=admin__pb2.BanUserReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'UnbanUser': grpc.unary_unary_rpc_method_handler(
                    servicer.UnbanUser,
                    request_deserializer=admin__pb2.UnbanUserReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'ShadowUser': grpc.unary_unary_rpc_method_handler(
                    servicer.ShadowUser,
                    request_deserializer=admin__pb2.ShadowUserReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'UnshadowUser': grpc.unary_unary_rpc_method_handler(
                    servicer.UnshadowUser,
                    request_deserializer=admin__pb2.UnshadowUserReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'AddAdminNote': grpc.unary_unary_rpc_method_handler(
                    servicer.AddAdminNote,
                    request_deserializer=admin__pb2.AddAdminNoteReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'GetContentReport': grpc.unary_unary_rpc_method_handler(
                    servicer.GetContentReport,
                    request_deserializer=admin__pb2.GetContentReportReq.FromString,
                    response_serializer=admin__pb2.GetContentReportRes.SerializeToString,
            ),
            'GetContentReportsForAuthor': grpc.unary_unary_rpc_method_handler(
                    servicer.GetContentReportsForAuthor,
                    request_deserializer=admin__pb2.GetContentReportsForAuthorReq.FromString,
                    response_serializer=admin__pb2.GetContentReportsForAuthorRes.SerializeToString,
            ),
            'SendModNote': grpc.unary_unary_rpc_method_handler(
                    servicer.SendModNote,
                    request_deserializer=admin__pb2.SendModNoteReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'MarkUserNeedsLocationUpdate': grpc.unary_unary_rpc_method_handler(
                    servicer.MarkUserNeedsLocationUpdate,
                    request_deserializer=admin__pb2.MarkUserNeedsLocationUpdateReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'DeleteUser': grpc.unary_unary_rpc_method_handler(
                    servicer.DeleteUser,
                    request_deserializer=admin__pb2.DeleteUserReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'RecoverDeletedUser': grpc.unary_unary_rpc_method_handler(
                    servicer.RecoverDeletedUser,
                    request_deserializer=admin__pb2.RecoverDeletedUserReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'CreateApiKey': grpc.unary_unary_rpc_method_handler(
                    servicer.CreateApiKey,
                    request_deserializer=admin__pb2.CreateApiKeyReq.FromString,
                    response_serializer=admin__pb2.CreateApiKeyRes.SerializeToString,
            ),
            'GetChats': grpc.unary_unary_rpc_method_handler(
                    servicer.GetChats,
                    request_deserializer=admin__pb2.GetChatsReq.FromString,
                    response_serializer=admin__pb2.GetChatsRes.SerializeToString,
            ),
            'DeleteEvent': grpc.unary_unary_rpc_method_handler(
                    servicer.DeleteEvent,
                    request_deserializer=admin__pb2.DeleteEventReq.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'ListUserIds': grpc.unary_unary_rpc_method_handler(
                    servicer.ListUserIds,
                    request_deserializer=admin__pb2.ListUserIdsReq.FromString,
                    response_serializer=admin__pb2.ListUserIdsRes.SerializeToString,
            ),
            'EditReferenceText': grpc.unary_unary_rpc_method_handler(
                    servicer.EditReferenceText,
                    request_deserializer=admin__pb2.EditReferenceTextReq.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'DeleteReference': grpc.unary_unary_rpc_method_handler(
                    servicer.DeleteReference,
                    request_deserializer=admin__pb2.DeleteReferenceReq.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'GetUserReferences': grpc.unary_unary_rpc_method_handler(
                    servicer.GetUserReferences,
                    request_deserializer=admin__pb2.GetUserReferencesReq.FromString,
                    response_serializer=admin__pb2.GetUserReferencesRes.SerializeToString,
            ),
            'GetFriendRequests': grpc.unary_unary_rpc_method_handler(
                    servicer.GetFriendRequests,
                    request_deserializer=admin__pb2.GetFriendRequestsReq.FromString,
                    response_serializer=admin__pb2.GetFriendRequestsRes.SerializeToString,
            ),
            'GetNonvisibleUserAccessLog': grpc.unary_unary_rpc_method_handler(
                    servicer.GetNonvisibleUserAccessLog,
                    request_deserializer=admin__pb2.GetNonvisibleUserAccessLogReq.FromString,
                    response_serializer=admin__pb2.GetNonvisibleUserAccessLogRes.SerializeToString,
            ),
            'EditDiscussion': grpc.unary_unary_rpc_method_handler(
                    servicer.EditDiscussion,
                    request_deserializer=admin__pb2.EditDiscussionReq.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'DeleteDiscussion': grpc.unary_unary_rpc_method_handler(
                    servicer.DeleteDiscussion,
                    request_deserializer=admin__pb2.AdminDeleteDiscussionReq.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'EditReply': grpc.unary_unary_rpc_method_handler(
                    servicer.EditReply,
                    request_deserializer=admin__pb2.EditReplyReq.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'AddUsersToModerationUserList': grpc.unary_unary_rpc_method_handler(
                    servicer.AddUsersToModerationUserList,
                    request_deserializer=admin__pb2.AddUsersToModerationUserListReq.FromString,
                    response_serializer=admin__pb2.AddUsersToModerationUserListRes.SerializeToString,
            ),
            'RemoveUserFromModerationUserList': grpc.unary_unary_rpc_method_handler(
                    servicer.RemoveUserFromModerationUserList,
                    request_deserializer=admin__pb2.RemoveUserFromModerationUserListReq.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'ListModerationUserLists': grpc.unary_unary_rpc_method_handler(
                    servicer.ListModerationUserLists,
                    request_deserializer=admin__pb2.ListModerationUserListsReq.FromString,
                    response_serializer=admin__pb2.ListModerationUserListsRes.SerializeToString,
            ),
            'CreateAccountDeletionLink': grpc.unary_unary_rpc_method_handler(
                    servicer.CreateAccountDeletionLink,
                    request_deserializer=admin__pb2.CreateAccountDeletionLinkReq.FromString,
                    response_serializer=admin__pb2.CreateAccountDeletionLinkRes.SerializeToString,
            ),
            'AccessStats': grpc.unary_unary_rpc_method_handler(
                    servicer.AccessStats,
                    request_deserializer=admin__pb2.AccessStatsReq.FromString,
                    response_serializer=admin__pb2.AccessStatsRes.SerializeToString,
            ),
            'SetLastDonated': grpc.unary_unary_rpc_method_handler(
                    servicer.SetLastDonated,
                    request_deserializer=admin__pb2.SetLastDonatedReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'CreateAdminTag': grpc.unary_unary_rpc_method_handler(
                    servicer.CreateAdminTag,
                    request_deserializer=admin__pb2.CreateAdminTagReq.FromString,
                    response_serializer=admin__pb2.AdminTagInfo.SerializeToString,
            ),
            'ListAdminTags': grpc.unary_unary_rpc_method_handler(
                    servicer.ListAdminTags,
                    request_deserializer=admin__pb2.ListAdminTagsReq.FromString,
                    response_serializer=admin__pb2.ListAdminTagsRes.SerializeToString,
            ),
            'AddAdminTagToUser': grpc.unary_unary_rpc_method_handler(
                    servicer.AddAdminTagToUser,
                    request_deserializer=admin__pb2.AddAdminTagToUserReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'RemoveAdminTagFromUser': grpc.unary_unary_rpc_method_handler(
                    servicer.RemoveAdminTagFromUser,
                    request_deserializer=admin__pb2.RemoveAdminTagFromUserReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'SetModScore': grpc.unary_unary_rpc_method_handler(
                    servicer.SetModScore,
                    request_deserializer=admin__pb2.SetModScoreReq.FromString,
                    response_serializer=admin__pb2.UserDetails.SerializeToString,
            ),
            'ListAdminActions': grpc.unary_unary_rpc_method_handler(
                    servicer.ListAdminActions,
                    request_deserializer=admin__pb2.ListAdminActionsReq.FromString,
                    response_serializer=admin__pb2.ListAdminActionsRes.SerializeToString,
            ),
            'ListUserUploads': grpc.unary_unary_rpc_method_handler(
                    servicer.ListUserUploads,
                    request_deserializer=admin__pb2.ListUserUploadsReq.FromString,
                    response_serializer=admin__pb2.ListUserUploadsRes.SerializeToString,
            ),
            'CreateOTAPackage': grpc.unary_unary_rpc_method_handler(
                    servicer.CreateOTAPackage,
                    request_deserializer=admin__pb2.CreateOTAPackageReq.FromString,
                    response_serializer=admin__pb2.OTAPackage.SerializeToString,
            ),
            'ListOTAPackages': grpc.unary_unary_rpc_method_handler(
                    servicer.ListOTAPackages,
                    request_deserializer=admin__pb2.ListOTAPackagesReq.FromString,
                    response_serializer=admin__pb2.ListOTAPackagesRes.SerializeToString,
            ),
            'BanOTAPackage': grpc.unary_unary_rpc_method_handler(
                    servicer.BanOTAPackage,
                    request_deserializer=admin__pb2.BanOTAPackageReq.FromString,
                    response_serializer=admin__pb2.OTAPackage.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'org.couchers.admin.Admin', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


 # This class is part of an EXPERIMENTAL API.
class Admin(object):
    """Missing associated documentation comment in .proto file."""

    @staticmethod
    def GetUserDetails(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/GetUserDetails',
            admin__pb2.GetUserDetailsReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetUser(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/GetUser',
            admin__pb2.GetUserReq.SerializeToString,
            api__pb2.User.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def SearchUsers(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/SearchUsers',
            admin__pb2.SearchUsersReq.SerializeToString,
            admin__pb2.SearchUsersRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ChangeUserGender(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/ChangeUserGender',
            admin__pb2.ChangeUserGenderReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ChangeUserBirthdate(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/ChangeUserBirthdate',
            admin__pb2.ChangeUserBirthdateReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AddBadge(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/AddBadge',
            admin__pb2.AddBadgeReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def RemoveBadge(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/RemoveBadge',
            admin__pb2.RemoveBadgeReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def SetPassportSexGenderException(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/SetPassportSexGenderException',
            admin__pb2.SetPassportSexGenderExceptionReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def BanUser(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/BanUser',
            admin__pb2.BanUserReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UnbanUser(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/UnbanUser',
            admin__pb2.UnbanUserReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ShadowUser(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/ShadowUser',
            admin__pb2.ShadowUserReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UnshadowUser(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/UnshadowUser',
            admin__pb2.UnshadowUserReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AddAdminNote(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/AddAdminNote',
            admin__pb2.AddAdminNoteReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetContentReport(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/GetContentReport',
            admin__pb2.GetContentReportReq.SerializeToString,
            admin__pb2.GetContentReportRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetContentReportsForAuthor(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/GetContentReportsForAuthor',
            admin__pb2.GetContentReportsForAuthorReq.SerializeToString,
            admin__pb2.GetContentReportsForAuthorRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def SendModNote(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/SendModNote',
            admin__pb2.SendModNoteReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def MarkUserNeedsLocationUpdate(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/MarkUserNeedsLocationUpdate',
            admin__pb2.MarkUserNeedsLocationUpdateReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DeleteUser(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/DeleteUser',
            admin__pb2.DeleteUserReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def RecoverDeletedUser(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/RecoverDeletedUser',
            admin__pb2.RecoverDeletedUserReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CreateApiKey(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/CreateApiKey',
            admin__pb2.CreateApiKeyReq.SerializeToString,
            admin__pb2.CreateApiKeyRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetChats(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/GetChats',
            admin__pb2.GetChatsReq.SerializeToString,
            admin__pb2.GetChatsRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DeleteEvent(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/DeleteEvent',
            admin__pb2.DeleteEventReq.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListUserIds(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/ListUserIds',
            admin__pb2.ListUserIdsReq.SerializeToString,
            admin__pb2.ListUserIdsRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def EditReferenceText(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/EditReferenceText',
            admin__pb2.EditReferenceTextReq.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DeleteReference(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/DeleteReference',
            admin__pb2.DeleteReferenceReq.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetUserReferences(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/GetUserReferences',
            admin__pb2.GetUserReferencesReq.SerializeToString,
            admin__pb2.GetUserReferencesRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetFriendRequests(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/GetFriendRequests',
            admin__pb2.GetFriendRequestsReq.SerializeToString,
            admin__pb2.GetFriendRequestsRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetNonvisibleUserAccessLog(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/GetNonvisibleUserAccessLog',
            admin__pb2.GetNonvisibleUserAccessLogReq.SerializeToString,
            admin__pb2.GetNonvisibleUserAccessLogRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def EditDiscussion(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/EditDiscussion',
            admin__pb2.EditDiscussionReq.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DeleteDiscussion(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/DeleteDiscussion',
            admin__pb2.AdminDeleteDiscussionReq.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def EditReply(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/EditReply',
            admin__pb2.EditReplyReq.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AddUsersToModerationUserList(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/AddUsersToModerationUserList',
            admin__pb2.AddUsersToModerationUserListReq.SerializeToString,
            admin__pb2.AddUsersToModerationUserListRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def RemoveUserFromModerationUserList(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/RemoveUserFromModerationUserList',
            admin__pb2.RemoveUserFromModerationUserListReq.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListModerationUserLists(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/ListModerationUserLists',
            admin__pb2.ListModerationUserListsReq.SerializeToString,
            admin__pb2.ListModerationUserListsRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CreateAccountDeletionLink(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/CreateAccountDeletionLink',
            admin__pb2.CreateAccountDeletionLinkReq.SerializeToString,
            admin__pb2.CreateAccountDeletionLinkRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AccessStats(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/AccessStats',
            admin__pb2.AccessStatsReq.SerializeToString,
            admin__pb2.AccessStatsRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def SetLastDonated(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/SetLastDonated',
            admin__pb2.SetLastDonatedReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CreateAdminTag(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/CreateAdminTag',
            admin__pb2.CreateAdminTagReq.SerializeToString,
            admin__pb2.AdminTagInfo.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListAdminTags(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/ListAdminTags',
            admin__pb2.ListAdminTagsReq.SerializeToString,
            admin__pb2.ListAdminTagsRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def AddAdminTagToUser(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/AddAdminTagToUser',
            admin__pb2.AddAdminTagToUserReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def RemoveAdminTagFromUser(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/RemoveAdminTagFromUser',
            admin__pb2.RemoveAdminTagFromUserReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def SetModScore(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/SetModScore',
            admin__pb2.SetModScoreReq.SerializeToString,
            admin__pb2.UserDetails.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListAdminActions(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/ListAdminActions',
            admin__pb2.ListAdminActionsReq.SerializeToString,
            admin__pb2.ListAdminActionsRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListUserUploads(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/ListUserUploads',
            admin__pb2.ListUserUploadsReq.SerializeToString,
            admin__pb2.ListUserUploadsRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CreateOTAPackage(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/CreateOTAPackage',
            admin__pb2.CreateOTAPackageReq.SerializeToString,
            admin__pb2.OTAPackage.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListOTAPackages(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/ListOTAPackages',
            admin__pb2.ListOTAPackagesReq.SerializeToString,
            admin__pb2.ListOTAPackagesRes.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def BanOTAPackage(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/org.couchers.admin.Admin/BanOTAPackage',
            admin__pb2.BanOTAPackageReq.SerializeToString,
            admin__pb2.OTAPackage.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
