# Generated by the protocol buffer compiler.  DO NOT EDIT!
# sources: keyapis/iot_connect/v1/keyapis_iot_connect_callback_v1.proto, keyapis/iot_connect/v1/keyapis_iot_connect_manage_v1.proto, keyapis/iot_connect/v1/keyapis_iot_connect_system_v1.proto
# plugin: python-betterproto
# This file has been @generated

from typing import TYPE_CHECKING

import betterproto
import grpclib
from betterproto.grpc.grpclib_server import ServiceBase
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


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class CommonError(betterproto.Message):
    """Сообщение ошибки на запрос"""

    code: int = betterproto.int32_field(1)
    """Коммент 1"""

    message: str = betterproto.string_field(2)
    """Коммент 1"""

    details: str = betterproto.string_field(3)
    """Коммент 1"""


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class Device(betterproto.Message):
    """Объект устройства"""

    user_id: int = betterproto.int32_field(1)
    """Идентификатор пользователя"""

    id: str = betterproto.string_field(2)
    """Коммент 1"""

    parent_id: str = betterproto.string_field(3)
    """Коммент 1"""

    name: str = betterproto.string_field(4)
    """Коммент 1"""

    default_name: str = betterproto.string_field(5)
    """Коммент 1"""

    home: str = betterproto.string_field(6)
    """Коммент 1"""

    room: str = betterproto.string_field(7)
    """Коммент 1"""

    groups: "list[str]" = betterproto.string_field(8)
    """Коммент 1"""

    model_id: str = betterproto.string_field(9)
    """Коммент 1"""

    hw_version: str = betterproto.string_field(10)
    """Коммент 1"""

    sw_version: str = betterproto.string_field(11)
    """Коммент 1"""


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

    pass


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

    data: "list[Device]" = betterproto.message_field(1)
    """Массив домофонов пользователя"""


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

    data: "list[str]" = betterproto.string_field(1)
    """Массив домофонов пользователя"""


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

    data: "PostCallbackStatusResponseStatus" = betterproto.message_field(1)
    """Коммент"""


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class PostCallbackStatusResponseStatus(betterproto.Message):
    """Коммент 1"""

    user_id: int = betterproto.int32_field(1)
    """Идентификатор пользователя"""

    id: str = betterproto.string_field(2)
    """Коммент 1"""

    parent_id: str = betterproto.string_field(3)
    """Коммент 1"""

    name: str = betterproto.string_field(4)
    """Коммент 1"""

    default_name: str = betterproto.string_field(5)
    """Коммент 1"""

    home: str = betterproto.string_field(6)
    """Коммент 1"""

    room: str = betterproto.string_field(7)
    """Коммент 1"""

    groups: "list[str]" = betterproto.string_field(8)
    """Коммент 1"""

    model_id: str = betterproto.string_field(9)
    """Коммент 1"""

    hw_version: str = betterproto.string_field(10)
    """Коммент 1"""

    sw_version: str = betterproto.string_field(11)
    """Коммент 1"""


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

    pass


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

    pass


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

    pass


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

    pass


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class GetCallbackUserRequest(betterproto.Message):
    """Запрос идентификатора пользователя Ключ"""

    pass


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

    data: int = betterproto.int32_field(1)
    """Идентификатор пользователя"""


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class PostManageStateRequest(betterproto.Message):
    """Сообщение об изменении состояния устройства (домофона)"""

    key: str = betterproto.string_field(1)


@dataclass(eq=False, repr=False, config={"extra": "forbid"})
class PostManageStateResponse(betterproto.Message):
    """Ответ"""

    pass


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

    pass


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

    pass


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

    pass


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

    pass


class IotConnectCallbackServiceStub(betterproto.ServiceStub):
    async def get_callback_user(
        self,
        get_callback_user_request: "GetCallbackUserRequest",
        *,
        timeout: "float | None" = None,
        deadline: "Deadline | None" = None,
        metadata: "MetadataLike | None" = None
    ) -> "GetCallbackUserResponse":
        return await self._unary_unary(
            "/keyapis.iot_connect.v1.IotConnectCallbackService/GetCallbackUser",
            get_callback_user_request,
            GetCallbackUserResponse,
            timeout=timeout,
            deadline=deadline,
            metadata=metadata,
        )

    async def get_callback_devices(
        self,
        get_callback_devices_request: "GetCallbackDevicesRequest",
        *,
        timeout: "float | None" = None,
        deadline: "Deadline | None" = None,
        metadata: "MetadataLike | None" = None
    ) -> "GetCallbackDevicesResponse":
        return await self._unary_unary(
            "/keyapis.iot_connect.v1.IotConnectCallbackService/GetCallbackDevices",
            get_callback_devices_request,
            GetCallbackDevicesResponse,
            timeout=timeout,
            deadline=deadline,
            metadata=metadata,
        )

    async def post_callback_status(
        self,
        post_callback_status_request: "PostCallbackStatusRequest",
        *,
        timeout: "float | None" = None,
        deadline: "Deadline | None" = None,
        metadata: "MetadataLike | None" = None
    ) -> "PostCallbackStatusResponse":
        return await self._unary_unary(
            "/keyapis.iot_connect.v1.IotConnectCallbackService/PostCallbackStatus",
            post_callback_status_request,
            PostCallbackStatusResponse,
            timeout=timeout,
            deadline=deadline,
            metadata=metadata,
        )

    async def post_callback_command(
        self,
        post_callback_command_request: "PostCallbackCommandRequest",
        *,
        timeout: "float | None" = None,
        deadline: "Deadline | None" = None,
        metadata: "MetadataLike | None" = None
    ) -> "PostCallbackCommandResponse":
        return await self._unary_unary(
            "/keyapis.iot_connect.v1.IotConnectCallbackService/PostCallbackCommand",
            post_callback_command_request,
            PostCallbackCommandResponse,
            timeout=timeout,
            deadline=deadline,
            metadata=metadata,
        )

    async def post_callback_unlink(
        self,
        post_callback_unlink_request: "PostCallbackUnlinkRequest",
        *,
        timeout: "float | None" = None,
        deadline: "Deadline | None" = None,
        metadata: "MetadataLike | None" = None
    ) -> "PostCallbackUnlinkResponse":
        return await self._unary_unary(
            "/keyapis.iot_connect.v1.IotConnectCallbackService/PostCallbackUnlink",
            post_callback_unlink_request,
            PostCallbackUnlinkResponse,
            timeout=timeout,
            deadline=deadline,
            metadata=metadata,
        )


class IotConnectManageServiceStub(betterproto.ServiceStub):
    async def post_manage_state(
        self,
        post_manage_state_request: "PostManageStateRequest",
        *,
        timeout: "float | None" = None,
        deadline: "Deadline | None" = None,
        metadata: "MetadataLike | None" = None
    ) -> "PostManageStateResponse":
        return await self._unary_unary(
            "/keyapis.iot_connect.v1.IotConnectManageService/PostManageState",
            post_manage_state_request,
            PostManageStateResponse,
            timeout=timeout,
            deadline=deadline,
            metadata=metadata,
        )

    async def post_manage_unlink_user(
        self,
        post_manage_unlink_user_request: "PostManageUnlinkUserRequest",
        *,
        timeout: "float | None" = None,
        deadline: "Deadline | None" = None,
        metadata: "MetadataLike | None" = None
    ) -> "PostManageUnlinkUserResponse":
        return await self._unary_unary(
            "/keyapis.iot_connect.v1.IotConnectManageService/PostManageUnlinkUser",
            post_manage_unlink_user_request,
            PostManageUnlinkUserResponse,
            timeout=timeout,
            deadline=deadline,
            metadata=metadata,
        )


class SystemServiceStub(betterproto.ServiceStub):
    async def get_ping(
        self,
        get_ping_request: "GetPingRequest",
        *,
        timeout: "float | None" = None,
        deadline: "Deadline | None" = None,
        metadata: "MetadataLike | None" = None
    ) -> "GetPingResponse":
        return await self._unary_unary(
            "/keyapis.iot_connect.v1.SystemService/GetPing",
            get_ping_request,
            GetPingResponse,
            timeout=timeout,
            deadline=deadline,
            metadata=metadata,
        )


class IotConnectCallbackServiceBase(ServiceBase):

    async def get_callback_user(
        self, get_callback_user_request: "GetCallbackUserRequest"
    ) -> "GetCallbackUserResponse":
        raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)

    async def get_callback_devices(
        self, get_callback_devices_request: "GetCallbackDevicesRequest"
    ) -> "GetCallbackDevicesResponse":
        raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)

    async def post_callback_status(
        self, post_callback_status_request: "PostCallbackStatusRequest"
    ) -> "PostCallbackStatusResponse":
        raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)

    async def post_callback_command(
        self, post_callback_command_request: "PostCallbackCommandRequest"
    ) -> "PostCallbackCommandResponse":
        raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)

    async def post_callback_unlink(
        self, post_callback_unlink_request: "PostCallbackUnlinkRequest"
    ) -> "PostCallbackUnlinkResponse":
        raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)

    async def __rpc_get_callback_user(
        self,
        stream: "grpclib.server.Stream[GetCallbackUserRequest, GetCallbackUserResponse]",
    ) -> None:
        request = await stream.recv_message()
        response = await self.get_callback_user(request)
        await stream.send_message(response)

    async def __rpc_get_callback_devices(
        self,
        stream: "grpclib.server.Stream[GetCallbackDevicesRequest, GetCallbackDevicesResponse]",
    ) -> None:
        request = await stream.recv_message()
        response = await self.get_callback_devices(request)
        await stream.send_message(response)

    async def __rpc_post_callback_status(
        self,
        stream: "grpclib.server.Stream[PostCallbackStatusRequest, PostCallbackStatusResponse]",
    ) -> None:
        request = await stream.recv_message()
        response = await self.post_callback_status(request)
        await stream.send_message(response)

    async def __rpc_post_callback_command(
        self,
        stream: "grpclib.server.Stream[PostCallbackCommandRequest, PostCallbackCommandResponse]",
    ) -> None:
        request = await stream.recv_message()
        response = await self.post_callback_command(request)
        await stream.send_message(response)

    async def __rpc_post_callback_unlink(
        self,
        stream: "grpclib.server.Stream[PostCallbackUnlinkRequest, PostCallbackUnlinkResponse]",
    ) -> None:
        request = await stream.recv_message()
        response = await self.post_callback_unlink(request)
        await stream.send_message(response)

    def __mapping__(self) -> "dict[str, grpclib.const.Handler]":
        return {
            "/keyapis.iot_connect.v1.IotConnectCallbackService/GetCallbackUser": grpclib.const.Handler(
                self.__rpc_get_callback_user,
                grpclib.const.Cardinality.UNARY_UNARY,
                GetCallbackUserRequest,
                GetCallbackUserResponse,
            ),
            "/keyapis.iot_connect.v1.IotConnectCallbackService/GetCallbackDevices": grpclib.const.Handler(
                self.__rpc_get_callback_devices,
                grpclib.const.Cardinality.UNARY_UNARY,
                GetCallbackDevicesRequest,
                GetCallbackDevicesResponse,
            ),
            "/keyapis.iot_connect.v1.IotConnectCallbackService/PostCallbackStatus": grpclib.const.Handler(
                self.__rpc_post_callback_status,
                grpclib.const.Cardinality.UNARY_UNARY,
                PostCallbackStatusRequest,
                PostCallbackStatusResponse,
            ),
            "/keyapis.iot_connect.v1.IotConnectCallbackService/PostCallbackCommand": grpclib.const.Handler(
                self.__rpc_post_callback_command,
                grpclib.const.Cardinality.UNARY_UNARY,
                PostCallbackCommandRequest,
                PostCallbackCommandResponse,
            ),
            "/keyapis.iot_connect.v1.IotConnectCallbackService/PostCallbackUnlink": grpclib.const.Handler(
                self.__rpc_post_callback_unlink,
                grpclib.const.Cardinality.UNARY_UNARY,
                PostCallbackUnlinkRequest,
                PostCallbackUnlinkResponse,
            ),
        }


class IotConnectManageServiceBase(ServiceBase):

    async def post_manage_state(
        self, post_manage_state_request: "PostManageStateRequest"
    ) -> "PostManageStateResponse":
        raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)

    async def post_manage_unlink_user(
        self, post_manage_unlink_user_request: "PostManageUnlinkUserRequest"
    ) -> "PostManageUnlinkUserResponse":
        raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)

    async def __rpc_post_manage_state(
        self,
        stream: "grpclib.server.Stream[PostManageStateRequest, PostManageStateResponse]",
    ) -> None:
        request = await stream.recv_message()
        response = await self.post_manage_state(request)
        await stream.send_message(response)

    async def __rpc_post_manage_unlink_user(
        self,
        stream: "grpclib.server.Stream[PostManageUnlinkUserRequest, PostManageUnlinkUserResponse]",
    ) -> None:
        request = await stream.recv_message()
        response = await self.post_manage_unlink_user(request)
        await stream.send_message(response)

    def __mapping__(self) -> "dict[str, grpclib.const.Handler]":
        return {
            "/keyapis.iot_connect.v1.IotConnectManageService/PostManageState": grpclib.const.Handler(
                self.__rpc_post_manage_state,
                grpclib.const.Cardinality.UNARY_UNARY,
                PostManageStateRequest,
                PostManageStateResponse,
            ),
            "/keyapis.iot_connect.v1.IotConnectManageService/PostManageUnlinkUser": grpclib.const.Handler(
                self.__rpc_post_manage_unlink_user,
                grpclib.const.Cardinality.UNARY_UNARY,
                PostManageUnlinkUserRequest,
                PostManageUnlinkUserResponse,
            ),
        }


class SystemServiceBase(ServiceBase):

    async def get_ping(self, get_ping_request: "GetPingRequest") -> "GetPingResponse":
        raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)

    async def __rpc_get_ping(
        self, stream: "grpclib.server.Stream[GetPingRequest, GetPingResponse]"
    ) -> None:
        request = await stream.recv_message()
        response = await self.get_ping(request)
        await stream.send_message(response)

    def __mapping__(self) -> "dict[str, grpclib.const.Handler]":
        return {
            "/keyapis.iot_connect.v1.SystemService/GetPing": grpclib.const.Handler(
                self.__rpc_get_ping,
                grpclib.const.Cardinality.UNARY_UNARY,
                GetPingRequest,
                GetPingResponse,
            ),
        }


rebuild_dataclass(GetCallbackDevicesResponse)  # type: ignore
rebuild_dataclass(PostCallbackStatusResponse)  # type: ignore
