# Generated by the protocol buffer compiler.  DO NOT EDIT!
# sources: keyapis/bell/v1/keyapis_bell_common_v1.proto, keyapis/bell/v1/keyapis_bell_events_v1.proto, keyapis/bell/v1/keyapis_bell_notification_v1.proto, keyapis/bell/v1/keyapis_bell_system_v1.proto
# plugin: python-betterproto
# This file has been @generated

from collections.abc import AsyncIterator
from datetime import datetime
from typing import TYPE_CHECKING

import betterproto
import grpclib
from betterproto.grpc.grpclib_server import ServiceBase
from pydantic import model_validator
from pydantic.dataclasses import (
    dataclass,
    rebuild_dataclass,
)

if TYPE_CHECKING:
    import grpclib.server
    from betterproto.grpc.grpclib_client import MetadataLike
    from grpclib.metadata import Deadline


class NotificationStatusType(betterproto.Enum):
    """Статус"""

    STATUS_TYPE_UNKNOWN = 0
    """Значение не указано"""

    NEW = 1
    """
    Новый.
     Устанавливается по умолчанию
    """

    DELIVERED = 2
    """Доставлен"""

    VIEWED = 3
    """Просмотрен"""

    @classmethod
    def __get_pydantic_core_schema__(cls, _source_type, _handler):
        from pydantic_core import core_schema

        return core_schema.int_schema(ge=0)


class NotificationPagingOrderByType(betterproto.Enum):
    """
    Справочник типов значений сортировки.
     # Тип: byte
    """

    ORDER_BY_TYPE_UNKNOWN = 0
    """Значение не указано"""

    CREATED_AT = 1
    """По дате создания"""

    STATUS_CHANGED_AT = 2
    """По дате последнего изменения статуса"""

    @classmethod
    def __get_pydantic_core_schema__(cls, _source_type, _handler):
        from pydantic_core import core_schema

        return core_schema.int_schema(ge=0)


class NotificationPagingDirectionType(betterproto.Enum):
    """
    Справочник типов направлений сортировки.
     # Тип: byte
    """

    DIRECTION_TYPE_UNKNOWN = 0
    """Значение не указано"""

    DESC = 1
    """От большего к меньшему"""

    ASC = 2
    """От меньшего к большему"""

    @classmethod
    def __get_pydantic_core_schema__(cls, _source_type, _handler):
        from pydantic_core import core_schema

        return core_schema.int_schema(ge=0)


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class GetSystemStatusRequest(betterproto.Message):
    """Запрос проверки доступности сервиса"""

    pass


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class GetSystemStatusResponse(betterproto.Message):
    """Ответ на запрос проверки доступности сервиса"""

    pass


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class SendPushNotificationTask(betterproto.Message):
    """
    Задача на отправку уведомления.
     Очередь key.bell.send_push_notification
    """

    request_id: str = betterproto.string_field(1)
    """Идентификатор запроса"""

    orpon: int = betterproto.int64_field(2)
    """ОРПОН"""

    room_number: str = betterproto.string_field(3)
    """Номер квартиры"""

    header: str = betterproto.string_field(4)
    """Заголовок уведомления"""

    text: str = betterproto.string_field(5)
    """Текст уведомления"""

    payload: "dict[str, str]" = betterproto.map_field(
        6, betterproto.TYPE_STRING, betterproto.TYPE_STRING
    )
    """Полезная нагрузка"""


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class ValidationError(betterproto.Message):
    """
    Ошибки валидации.
     Эти проверки выполняются до обращения в базу данных
    """

    path: str = betterproto.string_field(1)
    """Путь к полю в формате наименования прото"""

    message: str = betterproto.string_field(2)
    """Валидационное сообщение"""


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class Notification(betterproto.Message):
    """
    Уведомление.
     # Описание модели
    """

    id: str = betterproto.string_field(1)
    """
    Идентификатор.
     Создаётся сервером.
     # Тип: Guid
    """

    orpon: int = betterproto.int64_field(2)
    """
    ОРПОН.
     # Диапазон 1..9223372036854775807
    """

    app_title: "str | None" = betterproto.message_field(
        3, wraps=betterproto.TYPE_STRING
    )
    """
    Наименование приложения-отправителя.
     # Диапазон: 3..256
    """

    room_number: str = betterproto.string_field(4)
    """
    Номер квартиры.
     # Диапазон: 1..4
    """

    header: str = betterproto.string_field(5)
    """
    Заголовок.
     # Диапазон: 3..128
    """

    text: str = betterproto.string_field(6)
    """
    Тело.
     # Диапазон: 3..256
    """

    status_type: "NotificationStatusType" = betterproto.enum_field(7)
    """Статус"""

    created_at: datetime = betterproto.message_field(8)
    """
    Дата создания.
     # Тип: DateTime
    """

    status_changed_at: datetime = betterproto.message_field(9)
    """
    Дата последнего изменения статуса.
     Заполняется и обновляется сервером.
     # Тип: DateTime
    """

    payload: "dict[str, str]" = betterproto.map_field(
        10, betterproto.TYPE_STRING, betterproto.TYPE_STRING
    )
    """Полезная нагрузка"""


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class PostNotificationRequest(betterproto.Message):
    """Запрос сохранения уведомления"""

    data: "Notification" = betterproto.message_field(1)
    """Уведомление"""


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class PostNotificationResponse(betterproto.Message):
    """Ответ на запрос сохранения уведомления"""

    data: "Notification | None" = betterproto.message_field(
        1, optional=True, group="type"
    )
    """Уведомление"""

    error: "PostNotificationResponseError | None" = betterproto.message_field(
        2, optional=True, group="type"
    )
    """Ошибка"""

    @model_validator(mode="after")
    def check_oneof(cls, values):
        return cls._validate_field_groups(values)


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class PostNotificationResponseError(betterproto.Message):
    """Ошибка сохранения уведомления"""

    validation: "ValidationError | None" = betterproto.message_field(
        1, optional=True, group="reason"
    )
    """Ошибка валидации"""

    @model_validator(mode="after")
    def check_oneof(cls, values):
        return cls._validate_field_groups(values)


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class GetNotificationRequest(betterproto.Message):
    """Запрос получения уведомления"""

    id: str = betterproto.string_field(1)
    """
    Идентификатор уведомления.
     # Тип: Guid
    """


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class GetNotificationResponse(betterproto.Message):
    """Ответ на запрос на получение уведомления"""

    data: "Notification | None" = betterproto.message_field(
        1, optional=True, group="type"
    )
    """Уведомление"""

    error: "GetNotificationResponseError | None" = betterproto.message_field(
        2, optional=True, group="type"
    )
    """Ошибка"""

    @model_validator(mode="after")
    def check_oneof(cls, values):
        return cls._validate_field_groups(values)


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class GetNotificationResponseError(betterproto.Message):
    """Ошибка запроса на получение уведомления"""

    validation: "ValidationError | None" = betterproto.message_field(
        1, optional=True, group="reason"
    )
    """Ошибка валидации"""

    @model_validator(mode="after")
    def check_oneof(cls, values):
        return cls._validate_field_groups(values)


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class GetNotificationListRequest(betterproto.Message):
    """Запрос получения списка уведомлений"""

    filter: "NotificationFilter" = betterproto.message_field(1)
    """Фильтр"""

    paging: "NotificationPaging | None" = betterproto.message_field(
        2, optional=True, group="pagination"
    )
    """Стандартный постраничный вывод"""

    @model_validator(mode="after")
    def check_oneof(cls, values):
        return cls._validate_field_groups(values)


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class GetNotificationListResponse(betterproto.Message):
    """Ответ на запрос на получение списка уведомлений"""

    data: "Notification | None" = betterproto.message_field(
        1, optional=True, group="type"
    )
    """Уведомление"""

    error: "GetNotificationListResponseError | None" = betterproto.message_field(
        2, optional=True, group="type"
    )
    """Ошибка"""

    @model_validator(mode="after")
    def check_oneof(cls, values):
        return cls._validate_field_groups(values)


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class GetNotificationListResponseError(betterproto.Message):
    """Ошибка запроса на получение списка уведомлений"""

    validation: "ValidationError | None" = betterproto.message_field(
        1, optional=True, group="reason"
    )
    """Ошибка валидации"""

    @model_validator(mode="after")
    def check_oneof(cls, values):
        return cls._validate_field_groups(values)


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class GetNotificationCountRequest(betterproto.Message):
    """Запрос получения количества уведомлений"""

    filter: "NotificationFilter" = betterproto.message_field(1)
    """Фильтр"""


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class GetNotificationCountResponse(betterproto.Message):
    """Ответ на запрос на получение количества уведомлений"""

    data: "int | None" = betterproto.int32_field(1, optional=True, group="type")
    """Количество уведомлений"""

    error: "GetNotificationCountResponseError | None" = betterproto.message_field(
        2, optional=True, group="type"
    )
    """Ошибка"""

    @model_validator(mode="after")
    def check_oneof(cls, values):
        return cls._validate_field_groups(values)


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class GetNotificationCountResponseError(betterproto.Message):
    """Ошибка запроса на получение количества уведомлений"""

    validation: "ValidationError | None" = betterproto.message_field(
        1, optional=True, group="reason"
    )
    """Ошибка валидации"""

    @model_validator(mode="after")
    def check_oneof(cls, values):
        return cls._validate_field_groups(values)


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class PostNotificationViewRequest(betterproto.Message):
    """Запрос на изменение статуса уведомления на "Просмотрено" уведомления"""

    id: str = betterproto.string_field(1)
    """
    Идентификатор уведомления.
     # Тип: Guid
    """


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class PostNotificationViewResponse(betterproto.Message):
    """Ответ на изменение статуса уведомления на "Просмотрено" уведомления"""

    error: "PostNotificationViewResponseError | None" = betterproto.message_field(
        1, optional=True, group="type"
    )
    """Ошибка"""

    @model_validator(mode="after")
    def check_oneof(cls, values):
        return cls._validate_field_groups(values)


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class PostNotificationViewResponseError(betterproto.Message):
    """Ошибка"""

    validation: "ValidationError | None" = betterproto.message_field(
        1, optional=True, group="reason"
    )
    """Ошибка валидации"""

    @model_validator(mode="after")
    def check_oneof(cls, values):
        return cls._validate_field_groups(values)


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class NotificationFilter(betterproto.Message):
    """Фильтр уведомлений"""

    orpons: "list[int]" = betterproto.int64_field(1)
    """По ОРПОН"""

    room_numbers: "list[str]" = betterproto.string_field(2)
    """По номерам квартир"""

    status_types: "list[NotificationStatusType]" = betterproto.enum_field(3)
    """По статусам"""


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class NotificationPaging(betterproto.Message):
    """Постраничный вывод"""

    order_by_type: "NotificationPagingOrderByType" = betterproto.enum_field(1)
    """
    Тип значения сортировки.
     Если значение не передано, то будет взято значение по умолчанию.
     # По умолчанию: CREATED_AT
    """

    direction_type: "NotificationPagingDirectionType" = betterproto.enum_field(2)
    """
    Тип направления сортировки.
     # По умолчанию: DESC
    """

    limit: int = betterproto.int32_field(3)
    """
    Количество записей на страницу.
     Если значение 0 (не передано), то будет взято значение по умолчанию.
     # Диапазон: 0..100.
     # По умолчанию: 20
    """

    offset: int = betterproto.int32_field(4)
    """
    Сдвиг.
     # Диапазон: 0..2147483647
    """


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class PostNotificationViewOrponRoomNumberRequest(betterproto.Message):
    """
    Запрос на изменение статуса уведомлений на "Просмотрено" по ОРПОНу и номеру квартиры
    """

    orpon: int = betterproto.int64_field(1)
    """
    ОРПОН.
     # Диапазон: 1..9223372036854775807
    """

    room_number: str = betterproto.string_field(2)
    """
    Номер квартиры.
     # Диапазон: 1..4
    """


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class PostNotificationViewOrponRoomNumberResponse(betterproto.Message):
    """
    Ответ на изменение статуса уведомлений на "Просмотрено" по ОРПОНу и номеру квартиры
    """

    data: "int | None" = betterproto.int32_field(1, optional=True, group="type")
    """Количество изменённых уведомлений"""

    error: "PostNotificationViewOrponRoomNumberResponseError | None" = (
        betterproto.message_field(2, optional=True, group="type")
    )
    """Ошибка"""

    @model_validator(mode="after")
    def check_oneof(cls, values):
        return cls._validate_field_groups(values)


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class PostNotificationViewOrponRoomNumberResponseError(betterproto.Message):
    """Ошибка"""

    validation: "ValidationError | None" = betterproto.message_field(
        1, optional=True, group="reason"
    )
    """Ошибка валидации"""

    @model_validator(mode="after")
    def check_oneof(cls, values):
        return cls._validate_field_groups(values)


class SystemServiceStub(betterproto.ServiceStub):
    async def get_system_status(
        self,
        get_system_status_request: "GetSystemStatusRequest",
        *,
        timeout: "float | None" = None,
        deadline: "Deadline | None" = None,
        metadata: "MetadataLike | None" = None
    ) -> "GetSystemStatusResponse":
        return await self._unary_unary(
            "/keyapis.bell.v1.SystemService/GetSystemStatus",
            get_system_status_request,
            GetSystemStatusResponse,
            timeout=timeout,
            deadline=deadline,
            metadata=metadata,
        )


class NotificationServiceStub(betterproto.ServiceStub):
    async def post_notification(
        self,
        post_notification_request: "PostNotificationRequest",
        *,
        timeout: "float | None" = None,
        deadline: "Deadline | None" = None,
        metadata: "MetadataLike | None" = None
    ) -> "PostNotificationResponse":
        return await self._unary_unary(
            "/keyapis.bell.v1.NotificationService/PostNotification",
            post_notification_request,
            PostNotificationResponse,
            timeout=timeout,
            deadline=deadline,
            metadata=metadata,
        )

    async def get_notification(
        self,
        get_notification_request: "GetNotificationRequest",
        *,
        timeout: "float | None" = None,
        deadline: "Deadline | None" = None,
        metadata: "MetadataLike | None" = None
    ) -> "GetNotificationResponse":
        return await self._unary_unary(
            "/keyapis.bell.v1.NotificationService/GetNotification",
            get_notification_request,
            GetNotificationResponse,
            timeout=timeout,
            deadline=deadline,
            metadata=metadata,
        )

    async def get_notification_list(
        self,
        get_notification_list_request: "GetNotificationListRequest",
        *,
        timeout: "float | None" = None,
        deadline: "Deadline | None" = None,
        metadata: "MetadataLike | None" = None
    ) -> "AsyncIterator[GetNotificationListResponse]":
        async for response in self._unary_stream(
            "/keyapis.bell.v1.NotificationService/GetNotificationList",
            get_notification_list_request,
            GetNotificationListResponse,
            timeout=timeout,
            deadline=deadline,
            metadata=metadata,
        ):
            yield response

    async def get_notification_count(
        self,
        get_notification_count_request: "GetNotificationCountRequest",
        *,
        timeout: "float | None" = None,
        deadline: "Deadline | None" = None,
        metadata: "MetadataLike | None" = None
    ) -> "GetNotificationCountResponse":
        return await self._unary_unary(
            "/keyapis.bell.v1.NotificationService/GetNotificationCount",
            get_notification_count_request,
            GetNotificationCountResponse,
            timeout=timeout,
            deadline=deadline,
            metadata=metadata,
        )

    async def post_notification_view(
        self,
        post_notification_view_request: "PostNotificationViewRequest",
        *,
        timeout: "float | None" = None,
        deadline: "Deadline | None" = None,
        metadata: "MetadataLike | None" = None
    ) -> "PostNotificationViewResponse":
        return await self._unary_unary(
            "/keyapis.bell.v1.NotificationService/PostNotificationView",
            post_notification_view_request,
            PostNotificationViewResponse,
            timeout=timeout,
            deadline=deadline,
            metadata=metadata,
        )

    async def post_notification_view_orpon_room_number(
        self,
        post_notification_view_orpon_room_number_request: "PostNotificationViewOrponRoomNumberRequest",
        *,
        timeout: "float | None" = None,
        deadline: "Deadline | None" = None,
        metadata: "MetadataLike | None" = None
    ) -> "PostNotificationViewOrponRoomNumberResponse":
        return await self._unary_unary(
            "/keyapis.bell.v1.NotificationService/PostNotificationViewOrponRoomNumber",
            post_notification_view_orpon_room_number_request,
            PostNotificationViewOrponRoomNumberResponse,
            timeout=timeout,
            deadline=deadline,
            metadata=metadata,
        )


class SystemServiceBase(ServiceBase):

    async def get_system_status(
        self, get_system_status_request: "GetSystemStatusRequest"
    ) -> "GetSystemStatusResponse":
        raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)

    async def __rpc_get_system_status(
        self,
        stream: "grpclib.server.Stream[GetSystemStatusRequest, GetSystemStatusResponse]",
    ) -> None:
        request = await stream.recv_message()
        response = await self.get_system_status(request)
        await stream.send_message(response)

    def __mapping__(self) -> "dict[str, grpclib.const.Handler]":
        return {
            "/keyapis.bell.v1.SystemService/GetSystemStatus": grpclib.const.Handler(
                self.__rpc_get_system_status,
                grpclib.const.Cardinality.UNARY_UNARY,
                GetSystemStatusRequest,
                GetSystemStatusResponse,
            ),
        }


class NotificationServiceBase(ServiceBase):

    async def post_notification(
        self, post_notification_request: "PostNotificationRequest"
    ) -> "PostNotificationResponse":
        raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)

    async def get_notification(
        self, get_notification_request: "GetNotificationRequest"
    ) -> "GetNotificationResponse":
        raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)

    async def get_notification_list(
        self, get_notification_list_request: "GetNotificationListRequest"
    ) -> "AsyncIterator[GetNotificationListResponse]":
        raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
        yield GetNotificationListResponse()

    async def get_notification_count(
        self, get_notification_count_request: "GetNotificationCountRequest"
    ) -> "GetNotificationCountResponse":
        raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)

    async def post_notification_view(
        self, post_notification_view_request: "PostNotificationViewRequest"
    ) -> "PostNotificationViewResponse":
        raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)

    async def post_notification_view_orpon_room_number(
        self,
        post_notification_view_orpon_room_number_request: "PostNotificationViewOrponRoomNumberRequest",
    ) -> "PostNotificationViewOrponRoomNumberResponse":
        raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)

    async def __rpc_post_notification(
        self,
        stream: "grpclib.server.Stream[PostNotificationRequest, PostNotificationResponse]",
    ) -> None:
        request = await stream.recv_message()
        response = await self.post_notification(request)
        await stream.send_message(response)

    async def __rpc_get_notification(
        self,
        stream: "grpclib.server.Stream[GetNotificationRequest, GetNotificationResponse]",
    ) -> None:
        request = await stream.recv_message()
        response = await self.get_notification(request)
        await stream.send_message(response)

    async def __rpc_get_notification_list(
        self,
        stream: "grpclib.server.Stream[GetNotificationListRequest, GetNotificationListResponse]",
    ) -> None:
        request = await stream.recv_message()
        await self._call_rpc_handler_server_stream(
            self.get_notification_list,
            stream,
            request,
        )

    async def __rpc_get_notification_count(
        self,
        stream: "grpclib.server.Stream[GetNotificationCountRequest, GetNotificationCountResponse]",
    ) -> None:
        request = await stream.recv_message()
        response = await self.get_notification_count(request)
        await stream.send_message(response)

    async def __rpc_post_notification_view(
        self,
        stream: "grpclib.server.Stream[PostNotificationViewRequest, PostNotificationViewResponse]",
    ) -> None:
        request = await stream.recv_message()
        response = await self.post_notification_view(request)
        await stream.send_message(response)

    async def __rpc_post_notification_view_orpon_room_number(
        self,
        stream: "grpclib.server.Stream[PostNotificationViewOrponRoomNumberRequest, PostNotificationViewOrponRoomNumberResponse]",
    ) -> None:
        request = await stream.recv_message()
        response = await self.post_notification_view_orpon_room_number(request)
        await stream.send_message(response)

    def __mapping__(self) -> "dict[str, grpclib.const.Handler]":
        return {
            "/keyapis.bell.v1.NotificationService/PostNotification": grpclib.const.Handler(
                self.__rpc_post_notification,
                grpclib.const.Cardinality.UNARY_UNARY,
                PostNotificationRequest,
                PostNotificationResponse,
            ),
            "/keyapis.bell.v1.NotificationService/GetNotification": grpclib.const.Handler(
                self.__rpc_get_notification,
                grpclib.const.Cardinality.UNARY_UNARY,
                GetNotificationRequest,
                GetNotificationResponse,
            ),
            "/keyapis.bell.v1.NotificationService/GetNotificationList": grpclib.const.Handler(
                self.__rpc_get_notification_list,
                grpclib.const.Cardinality.UNARY_STREAM,
                GetNotificationListRequest,
                GetNotificationListResponse,
            ),
            "/keyapis.bell.v1.NotificationService/GetNotificationCount": grpclib.const.Handler(
                self.__rpc_get_notification_count,
                grpclib.const.Cardinality.UNARY_UNARY,
                GetNotificationCountRequest,
                GetNotificationCountResponse,
            ),
            "/keyapis.bell.v1.NotificationService/PostNotificationView": grpclib.const.Handler(
                self.__rpc_post_notification_view,
                grpclib.const.Cardinality.UNARY_UNARY,
                PostNotificationViewRequest,
                PostNotificationViewResponse,
            ),
            "/keyapis.bell.v1.NotificationService/PostNotificationViewOrponRoomNumber": grpclib.const.Handler(
                self.__rpc_post_notification_view_orpon_room_number,
                grpclib.const.Cardinality.UNARY_UNARY,
                PostNotificationViewOrponRoomNumberRequest,
                PostNotificationViewOrponRoomNumberResponse,
            ),
        }


rebuild_dataclass(SendPushNotificationTask)  # type: ignore
rebuild_dataclass(Notification)  # type: ignore
rebuild_dataclass(PostNotificationRequest)  # type: ignore
rebuild_dataclass(PostNotificationResponse)  # type: ignore
rebuild_dataclass(PostNotificationResponseError)  # type: ignore
rebuild_dataclass(GetNotificationResponse)  # type: ignore
rebuild_dataclass(GetNotificationResponseError)  # type: ignore
rebuild_dataclass(GetNotificationListRequest)  # type: ignore
rebuild_dataclass(GetNotificationListResponse)  # type: ignore
rebuild_dataclass(GetNotificationListResponseError)  # type: ignore
rebuild_dataclass(GetNotificationCountRequest)  # type: ignore
rebuild_dataclass(GetNotificationCountResponse)  # type: ignore
rebuild_dataclass(GetNotificationCountResponseError)  # type: ignore
rebuild_dataclass(PostNotificationViewResponse)  # type: ignore
rebuild_dataclass(PostNotificationViewResponseError)  # type: ignore
rebuild_dataclass(NotificationFilter)  # type: ignore
rebuild_dataclass(NotificationPaging)  # type: ignore
rebuild_dataclass(PostNotificationViewOrponRoomNumberResponse)  # type: ignore
rebuild_dataclass(PostNotificationViewOrponRoomNumberResponseError)  # type: ignore
