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

from .....olvid.daemon.notification.v1 import attachment_notifications_pb2 as olvid_dot_daemon_dot_notification_dot_v1_dot_attachment__notifications__pb2
from .....olvid.daemon.notification.v1 import call_notifications_pb2 as olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2
from .....olvid.daemon.notification.v1 import contact_notifications_pb2 as olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2
from .....olvid.daemon.notification.v1 import discussion_notifications_pb2 as olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2
from .....olvid.daemon.notification.v1 import group_notifications_pb2 as olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2
from .....olvid.daemon.notification.v1 import invitation_notifications_pb2 as olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2
from .....olvid.daemon.notification.v1 import message_notifications_pb2 as olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2


class InvitationNotificationServiceStub(object):
    """must be for admin only
    // Identity
    service IdentityNotificationService {
    	rpc IdentityCreated(notification.v1.SubscribeToIdentityCreatedNotification) returns (stream notification.v1.IdentityCreatedNotification) {}
    	rpc IdentityDeleted(notification.v1.SubscribeToIdentityDeletedNotification) returns (stream notification.v1.IdentityDeletedNotification) {}
    	rpc IdentityDetailsUpdated(notification.v1.SubscribeToIdentityDetailsUpdatedNotification) returns (stream notification.v1.IdentityDetailsUpdatedNotification) {}
    }

    Invitation
    """

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

        Args:
            channel: A grpc.Channel.
        """
        self.InvitationReceived = channel.unary_stream(
                '/olvid.daemon.services.v1.InvitationNotificationService/InvitationReceived',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.SubscribeToInvitationReceivedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.InvitationReceivedNotification.FromString,
                _registered_method=True)
        self.InvitationSent = channel.unary_stream(
                '/olvid.daemon.services.v1.InvitationNotificationService/InvitationSent',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.SubscribeToInvitationSentNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.InvitationSentNotification.FromString,
                _registered_method=True)
        self.InvitationDeleted = channel.unary_stream(
                '/olvid.daemon.services.v1.InvitationNotificationService/InvitationDeleted',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.SubscribeToInvitationDeletedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.InvitationDeletedNotification.FromString,
                _registered_method=True)
        self.InvitationUpdated = channel.unary_stream(
                '/olvid.daemon.services.v1.InvitationNotificationService/InvitationUpdated',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.SubscribeToInvitationUpdatedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.InvitationUpdatedNotification.FromString,
                _registered_method=True)


class InvitationNotificationServiceServicer(object):
    """must be for admin only
    // Identity
    service IdentityNotificationService {
    	rpc IdentityCreated(notification.v1.SubscribeToIdentityCreatedNotification) returns (stream notification.v1.IdentityCreatedNotification) {}
    	rpc IdentityDeleted(notification.v1.SubscribeToIdentityDeletedNotification) returns (stream notification.v1.IdentityDeletedNotification) {}
    	rpc IdentityDetailsUpdated(notification.v1.SubscribeToIdentityDetailsUpdatedNotification) returns (stream notification.v1.IdentityDetailsUpdatedNotification) {}
    }

    Invitation
    """

    def InvitationReceived(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 InvitationSent(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 InvitationDeleted(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 InvitationUpdated(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 add_InvitationNotificationServiceServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'InvitationReceived': grpc.unary_stream_rpc_method_handler(
                    servicer.InvitationReceived,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.SubscribeToInvitationReceivedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.InvitationReceivedNotification.SerializeToString,
            ),
            'InvitationSent': grpc.unary_stream_rpc_method_handler(
                    servicer.InvitationSent,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.SubscribeToInvitationSentNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.InvitationSentNotification.SerializeToString,
            ),
            'InvitationDeleted': grpc.unary_stream_rpc_method_handler(
                    servicer.InvitationDeleted,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.SubscribeToInvitationDeletedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.InvitationDeletedNotification.SerializeToString,
            ),
            'InvitationUpdated': grpc.unary_stream_rpc_method_handler(
                    servicer.InvitationUpdated,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.SubscribeToInvitationUpdatedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.InvitationUpdatedNotification.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'olvid.daemon.services.v1.InvitationNotificationService', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('olvid.daemon.services.v1.InvitationNotificationService', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class InvitationNotificationService(object):
    """must be for admin only
    // Identity
    service IdentityNotificationService {
    	rpc IdentityCreated(notification.v1.SubscribeToIdentityCreatedNotification) returns (stream notification.v1.IdentityCreatedNotification) {}
    	rpc IdentityDeleted(notification.v1.SubscribeToIdentityDeletedNotification) returns (stream notification.v1.IdentityDeletedNotification) {}
    	rpc IdentityDetailsUpdated(notification.v1.SubscribeToIdentityDetailsUpdatedNotification) returns (stream notification.v1.IdentityDetailsUpdatedNotification) {}
    }

    Invitation
    """

    @staticmethod
    def InvitationReceived(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.InvitationNotificationService/InvitationReceived',
            olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.SubscribeToInvitationReceivedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.InvitationReceivedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def InvitationSent(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.InvitationNotificationService/InvitationSent',
            olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.SubscribeToInvitationSentNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.InvitationSentNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def InvitationDeleted(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.InvitationNotificationService/InvitationDeleted',
            olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.SubscribeToInvitationDeletedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.InvitationDeletedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def InvitationUpdated(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.InvitationNotificationService/InvitationUpdated',
            olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.SubscribeToInvitationUpdatedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_invitation__notifications__pb2.InvitationUpdatedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)


class ContactNotificationServiceStub(object):
    """Contact
    """

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

        Args:
            channel: A grpc.Channel.
        """
        self.ContactNew = channel.unary_stream(
                '/olvid.daemon.services.v1.ContactNotificationService/ContactNew',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.SubscribeToContactNewNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.ContactNewNotification.FromString,
                _registered_method=True)
        self.ContactDeleted = channel.unary_stream(
                '/olvid.daemon.services.v1.ContactNotificationService/ContactDeleted',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.SubscribeToContactDeletedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.ContactDeletedNotification.FromString,
                _registered_method=True)
        self.ContactDetailsUpdated = channel.unary_stream(
                '/olvid.daemon.services.v1.ContactNotificationService/ContactDetailsUpdated',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.SubscribeToContactDetailsUpdatedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.ContactDetailsUpdatedNotification.FromString,
                _registered_method=True)
        self.ContactPhotoUpdated = channel.unary_stream(
                '/olvid.daemon.services.v1.ContactNotificationService/ContactPhotoUpdated',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.SubscribeToContactPhotoUpdatedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.ContactPhotoUpdatedNotification.FromString,
                _registered_method=True)


class ContactNotificationServiceServicer(object):
    """Contact
    """

    def ContactNew(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 ContactDeleted(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 ContactDetailsUpdated(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 ContactPhotoUpdated(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 add_ContactNotificationServiceServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'ContactNew': grpc.unary_stream_rpc_method_handler(
                    servicer.ContactNew,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.SubscribeToContactNewNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.ContactNewNotification.SerializeToString,
            ),
            'ContactDeleted': grpc.unary_stream_rpc_method_handler(
                    servicer.ContactDeleted,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.SubscribeToContactDeletedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.ContactDeletedNotification.SerializeToString,
            ),
            'ContactDetailsUpdated': grpc.unary_stream_rpc_method_handler(
                    servicer.ContactDetailsUpdated,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.SubscribeToContactDetailsUpdatedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.ContactDetailsUpdatedNotification.SerializeToString,
            ),
            'ContactPhotoUpdated': grpc.unary_stream_rpc_method_handler(
                    servicer.ContactPhotoUpdated,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.SubscribeToContactPhotoUpdatedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.ContactPhotoUpdatedNotification.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'olvid.daemon.services.v1.ContactNotificationService', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('olvid.daemon.services.v1.ContactNotificationService', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class ContactNotificationService(object):
    """Contact
    """

    @staticmethod
    def ContactNew(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.ContactNotificationService/ContactNew',
            olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.SubscribeToContactNewNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.ContactNewNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ContactDeleted(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.ContactNotificationService/ContactDeleted',
            olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.SubscribeToContactDeletedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.ContactDeletedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ContactDetailsUpdated(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.ContactNotificationService/ContactDetailsUpdated',
            olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.SubscribeToContactDetailsUpdatedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.ContactDetailsUpdatedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ContactPhotoUpdated(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.ContactNotificationService/ContactPhotoUpdated',
            olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.SubscribeToContactPhotoUpdatedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_contact__notifications__pb2.ContactPhotoUpdatedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)


class GroupNotificationServiceStub(object):
    """Group
    """

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

        Args:
            channel: A grpc.Channel.
        """
        self.GroupNew = channel.unary_stream(
                '/olvid.daemon.services.v1.GroupNotificationService/GroupNew',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupNewNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupNewNotification.FromString,
                _registered_method=True)
        self.GroupDeleted = channel.unary_stream(
                '/olvid.daemon.services.v1.GroupNotificationService/GroupDeleted',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupDeletedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupDeletedNotification.FromString,
                _registered_method=True)
        self.GroupNameUpdated = channel.unary_stream(
                '/olvid.daemon.services.v1.GroupNotificationService/GroupNameUpdated',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupNameUpdatedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupNameUpdatedNotification.FromString,
                _registered_method=True)
        self.GroupPhotoUpdated = channel.unary_stream(
                '/olvid.daemon.services.v1.GroupNotificationService/GroupPhotoUpdated',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupPhotoUpdatedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupPhotoUpdatedNotification.FromString,
                _registered_method=True)
        self.GroupDescriptionUpdated = channel.unary_stream(
                '/olvid.daemon.services.v1.GroupNotificationService/GroupDescriptionUpdated',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupDescriptionUpdatedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupDescriptionUpdatedNotification.FromString,
                _registered_method=True)
        self.GroupPendingMemberAdded = channel.unary_stream(
                '/olvid.daemon.services.v1.GroupNotificationService/GroupPendingMemberAdded',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupPendingMemberAddedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupPendingMemberAddedNotification.FromString,
                _registered_method=True)
        self.GroupPendingMemberRemoved = channel.unary_stream(
                '/olvid.daemon.services.v1.GroupNotificationService/GroupPendingMemberRemoved',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupPendingMemberRemovedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupPendingMemberRemovedNotification.FromString,
                _registered_method=True)
        self.GroupMemberJoined = channel.unary_stream(
                '/olvid.daemon.services.v1.GroupNotificationService/GroupMemberJoined',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupMemberJoinedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupMemberJoinedNotification.FromString,
                _registered_method=True)
        self.GroupMemberLeft = channel.unary_stream(
                '/olvid.daemon.services.v1.GroupNotificationService/GroupMemberLeft',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupMemberLeftNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupMemberLeftNotification.FromString,
                _registered_method=True)
        self.GroupOwnPermissionsUpdated = channel.unary_stream(
                '/olvid.daemon.services.v1.GroupNotificationService/GroupOwnPermissionsUpdated',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupOwnPermissionsUpdatedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupOwnPermissionsUpdatedNotification.FromString,
                _registered_method=True)
        self.GroupMemberPermissionsUpdated = channel.unary_stream(
                '/olvid.daemon.services.v1.GroupNotificationService/GroupMemberPermissionsUpdated',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupMemberPermissionsUpdatedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupMemberPermissionsUpdatedNotification.FromString,
                _registered_method=True)


class GroupNotificationServiceServicer(object):
    """Group
    """

    def GroupNew(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 GroupDeleted(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 GroupNameUpdated(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 GroupPhotoUpdated(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 GroupDescriptionUpdated(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 GroupPendingMemberAdded(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 GroupPendingMemberRemoved(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 GroupMemberJoined(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 GroupMemberLeft(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 GroupOwnPermissionsUpdated(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 GroupMemberPermissionsUpdated(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 add_GroupNotificationServiceServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'GroupNew': grpc.unary_stream_rpc_method_handler(
                    servicer.GroupNew,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupNewNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupNewNotification.SerializeToString,
            ),
            'GroupDeleted': grpc.unary_stream_rpc_method_handler(
                    servicer.GroupDeleted,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupDeletedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupDeletedNotification.SerializeToString,
            ),
            'GroupNameUpdated': grpc.unary_stream_rpc_method_handler(
                    servicer.GroupNameUpdated,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupNameUpdatedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupNameUpdatedNotification.SerializeToString,
            ),
            'GroupPhotoUpdated': grpc.unary_stream_rpc_method_handler(
                    servicer.GroupPhotoUpdated,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupPhotoUpdatedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupPhotoUpdatedNotification.SerializeToString,
            ),
            'GroupDescriptionUpdated': grpc.unary_stream_rpc_method_handler(
                    servicer.GroupDescriptionUpdated,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupDescriptionUpdatedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupDescriptionUpdatedNotification.SerializeToString,
            ),
            'GroupPendingMemberAdded': grpc.unary_stream_rpc_method_handler(
                    servicer.GroupPendingMemberAdded,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupPendingMemberAddedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupPendingMemberAddedNotification.SerializeToString,
            ),
            'GroupPendingMemberRemoved': grpc.unary_stream_rpc_method_handler(
                    servicer.GroupPendingMemberRemoved,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupPendingMemberRemovedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupPendingMemberRemovedNotification.SerializeToString,
            ),
            'GroupMemberJoined': grpc.unary_stream_rpc_method_handler(
                    servicer.GroupMemberJoined,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupMemberJoinedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupMemberJoinedNotification.SerializeToString,
            ),
            'GroupMemberLeft': grpc.unary_stream_rpc_method_handler(
                    servicer.GroupMemberLeft,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupMemberLeftNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupMemberLeftNotification.SerializeToString,
            ),
            'GroupOwnPermissionsUpdated': grpc.unary_stream_rpc_method_handler(
                    servicer.GroupOwnPermissionsUpdated,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupOwnPermissionsUpdatedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupOwnPermissionsUpdatedNotification.SerializeToString,
            ),
            'GroupMemberPermissionsUpdated': grpc.unary_stream_rpc_method_handler(
                    servicer.GroupMemberPermissionsUpdated,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupMemberPermissionsUpdatedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupMemberPermissionsUpdatedNotification.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'olvid.daemon.services.v1.GroupNotificationService', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('olvid.daemon.services.v1.GroupNotificationService', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class GroupNotificationService(object):
    """Group
    """

    @staticmethod
    def GroupNew(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.GroupNotificationService/GroupNew',
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupNewNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupNewNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GroupDeleted(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.GroupNotificationService/GroupDeleted',
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupDeletedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupDeletedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GroupNameUpdated(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.GroupNotificationService/GroupNameUpdated',
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupNameUpdatedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupNameUpdatedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GroupPhotoUpdated(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.GroupNotificationService/GroupPhotoUpdated',
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupPhotoUpdatedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupPhotoUpdatedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GroupDescriptionUpdated(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.GroupNotificationService/GroupDescriptionUpdated',
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupDescriptionUpdatedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupDescriptionUpdatedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GroupPendingMemberAdded(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.GroupNotificationService/GroupPendingMemberAdded',
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupPendingMemberAddedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupPendingMemberAddedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GroupPendingMemberRemoved(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.GroupNotificationService/GroupPendingMemberRemoved',
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupPendingMemberRemovedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupPendingMemberRemovedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GroupMemberJoined(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.GroupNotificationService/GroupMemberJoined',
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupMemberJoinedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupMemberJoinedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GroupMemberLeft(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.GroupNotificationService/GroupMemberLeft',
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupMemberLeftNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupMemberLeftNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GroupOwnPermissionsUpdated(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.GroupNotificationService/GroupOwnPermissionsUpdated',
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupOwnPermissionsUpdatedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupOwnPermissionsUpdatedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GroupMemberPermissionsUpdated(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.GroupNotificationService/GroupMemberPermissionsUpdated',
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.SubscribeToGroupMemberPermissionsUpdatedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_group__notifications__pb2.GroupMemberPermissionsUpdatedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)


class DiscussionNotificationServiceStub(object):
    """Discussion
    """

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

        Args:
            channel: A grpc.Channel.
        """
        self.DiscussionNew = channel.unary_stream(
                '/olvid.daemon.services.v1.DiscussionNotificationService/DiscussionNew',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.SubscribeToDiscussionNewNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.DiscussionNewNotification.FromString,
                _registered_method=True)
        self.DiscussionLocked = channel.unary_stream(
                '/olvid.daemon.services.v1.DiscussionNotificationService/DiscussionLocked',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.SubscribeToDiscussionLockedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.DiscussionLockedNotification.FromString,
                _registered_method=True)
        self.DiscussionTitleUpdated = channel.unary_stream(
                '/olvid.daemon.services.v1.DiscussionNotificationService/DiscussionTitleUpdated',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.SubscribeToDiscussionTitleUpdatedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.DiscussionTitleUpdatedNotification.FromString,
                _registered_method=True)
        self.DiscussionSettingsUpdated = channel.unary_stream(
                '/olvid.daemon.services.v1.DiscussionNotificationService/DiscussionSettingsUpdated',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.SubscribeToDiscussionSettingsUpdatedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.DiscussionSettingsUpdatedNotification.FromString,
                _registered_method=True)


class DiscussionNotificationServiceServicer(object):
    """Discussion
    """

    def DiscussionNew(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 DiscussionLocked(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 DiscussionTitleUpdated(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 DiscussionSettingsUpdated(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 add_DiscussionNotificationServiceServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'DiscussionNew': grpc.unary_stream_rpc_method_handler(
                    servicer.DiscussionNew,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.SubscribeToDiscussionNewNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.DiscussionNewNotification.SerializeToString,
            ),
            'DiscussionLocked': grpc.unary_stream_rpc_method_handler(
                    servicer.DiscussionLocked,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.SubscribeToDiscussionLockedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.DiscussionLockedNotification.SerializeToString,
            ),
            'DiscussionTitleUpdated': grpc.unary_stream_rpc_method_handler(
                    servicer.DiscussionTitleUpdated,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.SubscribeToDiscussionTitleUpdatedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.DiscussionTitleUpdatedNotification.SerializeToString,
            ),
            'DiscussionSettingsUpdated': grpc.unary_stream_rpc_method_handler(
                    servicer.DiscussionSettingsUpdated,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.SubscribeToDiscussionSettingsUpdatedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.DiscussionSettingsUpdatedNotification.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'olvid.daemon.services.v1.DiscussionNotificationService', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('olvid.daemon.services.v1.DiscussionNotificationService', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class DiscussionNotificationService(object):
    """Discussion
    """

    @staticmethod
    def DiscussionNew(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.DiscussionNotificationService/DiscussionNew',
            olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.SubscribeToDiscussionNewNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.DiscussionNewNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def DiscussionLocked(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.DiscussionNotificationService/DiscussionLocked',
            olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.SubscribeToDiscussionLockedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.DiscussionLockedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def DiscussionTitleUpdated(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.DiscussionNotificationService/DiscussionTitleUpdated',
            olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.SubscribeToDiscussionTitleUpdatedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.DiscussionTitleUpdatedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def DiscussionSettingsUpdated(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.DiscussionNotificationService/DiscussionSettingsUpdated',
            olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.SubscribeToDiscussionSettingsUpdatedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_discussion__notifications__pb2.DiscussionSettingsUpdatedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)


class MessageNotificationServiceStub(object):
    """Message
    """

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

        Args:
            channel: A grpc.Channel.
        """
        self.MessageReceived = channel.unary_stream(
                '/olvid.daemon.services.v1.MessageNotificationService/MessageReceived',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageReceivedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageReceivedNotification.FromString,
                _registered_method=True)
        self.MessageSent = channel.unary_stream(
                '/olvid.daemon.services.v1.MessageNotificationService/MessageSent',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageSentNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageSentNotification.FromString,
                _registered_method=True)
        self.MessageDeleted = channel.unary_stream(
                '/olvid.daemon.services.v1.MessageNotificationService/MessageDeleted',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageDeletedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageDeletedNotification.FromString,
                _registered_method=True)
        self.MessageBodyUpdated = channel.unary_stream(
                '/olvid.daemon.services.v1.MessageNotificationService/MessageBodyUpdated',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageBodyUpdatedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageBodyUpdatedNotification.FromString,
                _registered_method=True)
        self.MessageUploaded = channel.unary_stream(
                '/olvid.daemon.services.v1.MessageNotificationService/MessageUploaded',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageUploadedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageUploadedNotification.FromString,
                _registered_method=True)
        self.MessageDelivered = channel.unary_stream(
                '/olvid.daemon.services.v1.MessageNotificationService/MessageDelivered',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageDeliveredNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageDeliveredNotification.FromString,
                _registered_method=True)
        self.MessageRead = channel.unary_stream(
                '/olvid.daemon.services.v1.MessageNotificationService/MessageRead',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageReadNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageReadNotification.FromString,
                _registered_method=True)
        self.MessageLocationReceived = channel.unary_stream(
                '/olvid.daemon.services.v1.MessageNotificationService/MessageLocationReceived',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageLocationReceivedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageLocationReceivedNotification.FromString,
                _registered_method=True)
        self.MessageLocationSent = channel.unary_stream(
                '/olvid.daemon.services.v1.MessageNotificationService/MessageLocationSent',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageLocationSentNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageLocationSentNotification.FromString,
                _registered_method=True)
        self.MessageLocationSharingStart = channel.unary_stream(
                '/olvid.daemon.services.v1.MessageNotificationService/MessageLocationSharingStart',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageLocationSharingStartNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageLocationSharingStartNotification.FromString,
                _registered_method=True)
        self.MessageLocationSharingUpdate = channel.unary_stream(
                '/olvid.daemon.services.v1.MessageNotificationService/MessageLocationSharingUpdate',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageLocationSharingUpdateNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageLocationSharingUpdateNotification.FromString,
                _registered_method=True)
        self.MessageLocationSharingEnd = channel.unary_stream(
                '/olvid.daemon.services.v1.MessageNotificationService/MessageLocationSharingEnd',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageLocationSharingEndNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageLocationSharingEndNotification.FromString,
                _registered_method=True)
        self.MessageReactionAdded = channel.unary_stream(
                '/olvid.daemon.services.v1.MessageNotificationService/MessageReactionAdded',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageReactionAddedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageReactionAddedNotification.FromString,
                _registered_method=True)
        self.MessageReactionUpdated = channel.unary_stream(
                '/olvid.daemon.services.v1.MessageNotificationService/MessageReactionUpdated',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageReactionUpdatedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageReactionUpdatedNotification.FromString,
                _registered_method=True)
        self.MessageReactionRemoved = channel.unary_stream(
                '/olvid.daemon.services.v1.MessageNotificationService/MessageReactionRemoved',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageReactionRemovedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageReactionRemovedNotification.FromString,
                _registered_method=True)


class MessageNotificationServiceServicer(object):
    """Message
    """

    def MessageReceived(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 MessageSent(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 MessageDeleted(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 MessageBodyUpdated(self, request, context):
        """datatypes.v1.Message updates
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def MessageUploaded(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 MessageDelivered(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 MessageRead(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 MessageLocationReceived(self, request, context):
        """location message
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def MessageLocationSent(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 MessageLocationSharingStart(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 MessageLocationSharingUpdate(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 MessageLocationSharingEnd(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 MessageReactionAdded(self, request, context):
        """datatypes.v1.Message reactions
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def MessageReactionUpdated(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 MessageReactionRemoved(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 add_MessageNotificationServiceServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'MessageReceived': grpc.unary_stream_rpc_method_handler(
                    servicer.MessageReceived,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageReceivedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageReceivedNotification.SerializeToString,
            ),
            'MessageSent': grpc.unary_stream_rpc_method_handler(
                    servicer.MessageSent,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageSentNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageSentNotification.SerializeToString,
            ),
            'MessageDeleted': grpc.unary_stream_rpc_method_handler(
                    servicer.MessageDeleted,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageDeletedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageDeletedNotification.SerializeToString,
            ),
            'MessageBodyUpdated': grpc.unary_stream_rpc_method_handler(
                    servicer.MessageBodyUpdated,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageBodyUpdatedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageBodyUpdatedNotification.SerializeToString,
            ),
            'MessageUploaded': grpc.unary_stream_rpc_method_handler(
                    servicer.MessageUploaded,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageUploadedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageUploadedNotification.SerializeToString,
            ),
            'MessageDelivered': grpc.unary_stream_rpc_method_handler(
                    servicer.MessageDelivered,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageDeliveredNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageDeliveredNotification.SerializeToString,
            ),
            'MessageRead': grpc.unary_stream_rpc_method_handler(
                    servicer.MessageRead,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageReadNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageReadNotification.SerializeToString,
            ),
            'MessageLocationReceived': grpc.unary_stream_rpc_method_handler(
                    servicer.MessageLocationReceived,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageLocationReceivedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageLocationReceivedNotification.SerializeToString,
            ),
            'MessageLocationSent': grpc.unary_stream_rpc_method_handler(
                    servicer.MessageLocationSent,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageLocationSentNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageLocationSentNotification.SerializeToString,
            ),
            'MessageLocationSharingStart': grpc.unary_stream_rpc_method_handler(
                    servicer.MessageLocationSharingStart,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageLocationSharingStartNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageLocationSharingStartNotification.SerializeToString,
            ),
            'MessageLocationSharingUpdate': grpc.unary_stream_rpc_method_handler(
                    servicer.MessageLocationSharingUpdate,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageLocationSharingUpdateNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageLocationSharingUpdateNotification.SerializeToString,
            ),
            'MessageLocationSharingEnd': grpc.unary_stream_rpc_method_handler(
                    servicer.MessageLocationSharingEnd,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageLocationSharingEndNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageLocationSharingEndNotification.SerializeToString,
            ),
            'MessageReactionAdded': grpc.unary_stream_rpc_method_handler(
                    servicer.MessageReactionAdded,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageReactionAddedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageReactionAddedNotification.SerializeToString,
            ),
            'MessageReactionUpdated': grpc.unary_stream_rpc_method_handler(
                    servicer.MessageReactionUpdated,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageReactionUpdatedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageReactionUpdatedNotification.SerializeToString,
            ),
            'MessageReactionRemoved': grpc.unary_stream_rpc_method_handler(
                    servicer.MessageReactionRemoved,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageReactionRemovedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageReactionRemovedNotification.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'olvid.daemon.services.v1.MessageNotificationService', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('olvid.daemon.services.v1.MessageNotificationService', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class MessageNotificationService(object):
    """Message
    """

    @staticmethod
    def MessageReceived(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.MessageNotificationService/MessageReceived',
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageReceivedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageReceivedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def MessageSent(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.MessageNotificationService/MessageSent',
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageSentNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageSentNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def MessageDeleted(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.MessageNotificationService/MessageDeleted',
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageDeletedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageDeletedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def MessageBodyUpdated(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.MessageNotificationService/MessageBodyUpdated',
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageBodyUpdatedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageBodyUpdatedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def MessageUploaded(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.MessageNotificationService/MessageUploaded',
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageUploadedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageUploadedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def MessageDelivered(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.MessageNotificationService/MessageDelivered',
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageDeliveredNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageDeliveredNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def MessageRead(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.MessageNotificationService/MessageRead',
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageReadNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageReadNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def MessageLocationReceived(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.MessageNotificationService/MessageLocationReceived',
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageLocationReceivedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageLocationReceivedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def MessageLocationSent(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.MessageNotificationService/MessageLocationSent',
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageLocationSentNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageLocationSentNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def MessageLocationSharingStart(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.MessageNotificationService/MessageLocationSharingStart',
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageLocationSharingStartNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageLocationSharingStartNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def MessageLocationSharingUpdate(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.MessageNotificationService/MessageLocationSharingUpdate',
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageLocationSharingUpdateNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageLocationSharingUpdateNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def MessageLocationSharingEnd(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.MessageNotificationService/MessageLocationSharingEnd',
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageLocationSharingEndNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageLocationSharingEndNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def MessageReactionAdded(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.MessageNotificationService/MessageReactionAdded',
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageReactionAddedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageReactionAddedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def MessageReactionUpdated(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.MessageNotificationService/MessageReactionUpdated',
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageReactionUpdatedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageReactionUpdatedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def MessageReactionRemoved(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.MessageNotificationService/MessageReactionRemoved',
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.SubscribeToMessageReactionRemovedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_message__notifications__pb2.MessageReactionRemovedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)


class AttachmentNotificationServiceStub(object):
    """Attachment
    """

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

        Args:
            channel: A grpc.Channel.
        """
        self.AttachmentReceived = channel.unary_stream(
                '/olvid.daemon.services.v1.AttachmentNotificationService/AttachmentReceived',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_attachment__notifications__pb2.SubscribeToAttachmentReceivedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_attachment__notifications__pb2.AttachmentReceivedNotification.FromString,
                _registered_method=True)
        self.AttachmentUploaded = channel.unary_stream(
                '/olvid.daemon.services.v1.AttachmentNotificationService/AttachmentUploaded',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_attachment__notifications__pb2.SubscribeToAttachmentUploadedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_attachment__notifications__pb2.AttachmentUploadedNotification.FromString,
                _registered_method=True)


class AttachmentNotificationServiceServicer(object):
    """Attachment
    """

    def AttachmentReceived(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 AttachmentUploaded(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 add_AttachmentNotificationServiceServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'AttachmentReceived': grpc.unary_stream_rpc_method_handler(
                    servicer.AttachmentReceived,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_attachment__notifications__pb2.SubscribeToAttachmentReceivedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_attachment__notifications__pb2.AttachmentReceivedNotification.SerializeToString,
            ),
            'AttachmentUploaded': grpc.unary_stream_rpc_method_handler(
                    servicer.AttachmentUploaded,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_attachment__notifications__pb2.SubscribeToAttachmentUploadedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_attachment__notifications__pb2.AttachmentUploadedNotification.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'olvid.daemon.services.v1.AttachmentNotificationService', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('olvid.daemon.services.v1.AttachmentNotificationService', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class AttachmentNotificationService(object):
    """Attachment
    """

    @staticmethod
    def AttachmentReceived(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.AttachmentNotificationService/AttachmentReceived',
            olvid_dot_daemon_dot_notification_dot_v1_dot_attachment__notifications__pb2.SubscribeToAttachmentReceivedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_attachment__notifications__pb2.AttachmentReceivedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def AttachmentUploaded(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.AttachmentNotificationService/AttachmentUploaded',
            olvid_dot_daemon_dot_notification_dot_v1_dot_attachment__notifications__pb2.SubscribeToAttachmentUploadedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_attachment__notifications__pb2.AttachmentUploadedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)


class CallNotificationServiceStub(object):
    """Call
    """

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

        Args:
            channel: A grpc.Channel.
        """
        self.CallIncomingCall = channel.unary_stream(
                '/olvid.daemon.services.v1.CallNotificationService/CallIncomingCall',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallIncomingCallNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallIncomingCallNotification.FromString,
                _registered_method=True)
        self.CallRinging = channel.unary_stream(
                '/olvid.daemon.services.v1.CallNotificationService/CallRinging',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallRingingNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallRingingNotification.FromString,
                _registered_method=True)
        self.CallAccepted = channel.unary_stream(
                '/olvid.daemon.services.v1.CallNotificationService/CallAccepted',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallAcceptedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallAcceptedNotification.FromString,
                _registered_method=True)
        self.CallDeclined = channel.unary_stream(
                '/olvid.daemon.services.v1.CallNotificationService/CallDeclined',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallDeclinedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallDeclinedNotification.FromString,
                _registered_method=True)
        self.CallBusy = channel.unary_stream(
                '/olvid.daemon.services.v1.CallNotificationService/CallBusy',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallBusyNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallBusyNotification.FromString,
                _registered_method=True)
        self.CallEnded = channel.unary_stream(
                '/olvid.daemon.services.v1.CallNotificationService/CallEnded',
                request_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallEndedNotification.SerializeToString,
                response_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallEndedNotification.FromString,
                _registered_method=True)


class CallNotificationServiceServicer(object):
    """Call
    """

    def CallIncomingCall(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 CallRinging(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 CallAccepted(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 CallDeclined(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 CallBusy(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 CallEnded(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 add_CallNotificationServiceServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'CallIncomingCall': grpc.unary_stream_rpc_method_handler(
                    servicer.CallIncomingCall,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallIncomingCallNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallIncomingCallNotification.SerializeToString,
            ),
            'CallRinging': grpc.unary_stream_rpc_method_handler(
                    servicer.CallRinging,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallRingingNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallRingingNotification.SerializeToString,
            ),
            'CallAccepted': grpc.unary_stream_rpc_method_handler(
                    servicer.CallAccepted,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallAcceptedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallAcceptedNotification.SerializeToString,
            ),
            'CallDeclined': grpc.unary_stream_rpc_method_handler(
                    servicer.CallDeclined,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallDeclinedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallDeclinedNotification.SerializeToString,
            ),
            'CallBusy': grpc.unary_stream_rpc_method_handler(
                    servicer.CallBusy,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallBusyNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallBusyNotification.SerializeToString,
            ),
            'CallEnded': grpc.unary_stream_rpc_method_handler(
                    servicer.CallEnded,
                    request_deserializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallEndedNotification.FromString,
                    response_serializer=olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallEndedNotification.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'olvid.daemon.services.v1.CallNotificationService', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('olvid.daemon.services.v1.CallNotificationService', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class CallNotificationService(object):
    """Call
    """

    @staticmethod
    def CallIncomingCall(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.CallNotificationService/CallIncomingCall',
            olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallIncomingCallNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallIncomingCallNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def CallRinging(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.CallNotificationService/CallRinging',
            olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallRingingNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallRingingNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def CallAccepted(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.CallNotificationService/CallAccepted',
            olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallAcceptedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallAcceptedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def CallDeclined(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.CallNotificationService/CallDeclined',
            olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallDeclinedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallDeclinedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def CallBusy(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.CallNotificationService/CallBusy',
            olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallBusyNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallBusyNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def CallEnded(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_stream(
            request,
            target,
            '/olvid.daemon.services.v1.CallNotificationService/CallEnded',
            olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.SubscribeToCallEndedNotification.SerializeToString,
            olvid_dot_daemon_dot_notification_dot_v1_dot_call__notifications__pb2.CallEndedNotification.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)
