// Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: // protoc-gen-ts_proto v2.11.6 // protoc v4.25.9 // source: chat/chat.proto /* eslint-disable */ import type { Metadata } from "@grpc/grpc-js"; import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices"; import { Observable } from "rxjs"; export const protobufPackage = "chat.v1"; export interface MessageDto { id: string; chatId: string; senderId: string; /** TEXT, VOICE, VIDEO_NOTE, STICKER */ type: string; content: string; /** JSON string */ metadata: string; replyToId: string; isEdited: boolean; createdAt: string; } export interface ChatDto { id: string; /** DIRECT, GROUP, CHANNEL */ type: string; title: string; avatarUrl: string; unreadCount: number; /** Нужно для рендера списка чатов слева! */ lastMessage: MessageDto | undefined; } export interface CreateChatRequest { /** ID того кто создает */ creatorId: string; /** GROUP, DIRECT, CHANNEL */ type: string; /** Имя (при type=GROUP|CHANNEL) */ title: string; /** Кого сразу добавить (собеседник в личке или юзеры в группе) */ participantIds: string[]; } export interface CreateChatResponse { chat: ChatDto | undefined; } export interface GetUserChatsRequest { userId: string; /** для пагинации (бесконечный скролл в левой панели) */ offset: number; limit: number; } export interface GetUserChatsResponse { chats: ChatDto[]; } export interface JoinChatRequest { userId: string; /** либо join_hash */ chatId: string; } export interface JoinChatResponse { success: boolean; } export interface LeaveChatRequest { userId: string; chatId: string; } export interface LeaveChatResponse { success: boolean; } export interface GetMessagesRequest { userId: string; chatId: string; limit: number; /** курсорная пагинация, как в Telegram */ beforeMsgId: string; } export interface GetMessagesResponse { messages: MessageDto[]; } export interface SendMessageRequest { chatId: string; senderId: string; type: string; content: string; replyToId: string; } export interface DeleteMessageRequest { userId: string; messageId: string; /** "Удалить для всех" */ forEveryone: boolean; } export interface DeleteMessageResponse { success: boolean; } export interface MarkAsReadRequest { userId: string; chatId: string; messageId: string; } export interface MarkAsReadResponse { success: boolean; } export const CHAT_V1_PACKAGE_NAME = "chat.v1"; export interface ChatServiceClient { /** Управление чатами */ createChat(request: CreateChatRequest, metadata?: Metadata): Observable; getUserChats(request: GetUserChatsRequest, metadata?: Metadata): Observable; joinChat(request: JoinChatRequest, metadata?: Metadata): Observable; leaveChat(request: LeaveChatRequest, metadata?: Metadata): Observable; /** Управление сообщениями (история) */ getMessages(request: GetMessagesRequest, metadata?: Metadata): Observable; /** вызывается либо из Gateway (для фото/аудио), либо напрямую */ sendMessage(request: SendMessageRequest, metadata?: Metadata): Observable; deleteMessage(request: DeleteMessageRequest, metadata?: Metadata): Observable; /** Статусы */ markAsRead(request: MarkAsReadRequest, metadata?: Metadata): Observable; } export interface ChatServiceController { /** Управление чатами */ createChat( request: CreateChatRequest, metadata?: Metadata, ): Promise | Observable | CreateChatResponse; getUserChats( request: GetUserChatsRequest, metadata?: Metadata, ): Promise | Observable | GetUserChatsResponse; joinChat( request: JoinChatRequest, metadata?: Metadata, ): Promise | Observable | JoinChatResponse; leaveChat( request: LeaveChatRequest, metadata?: Metadata, ): Promise | Observable | LeaveChatResponse; /** Управление сообщениями (история) */ getMessages( request: GetMessagesRequest, metadata?: Metadata, ): Promise | Observable | GetMessagesResponse; /** вызывается либо из Gateway (для фото/аудио), либо напрямую */ sendMessage( request: SendMessageRequest, metadata?: Metadata, ): Promise | Observable | MessageDto; deleteMessage( request: DeleteMessageRequest, metadata?: Metadata, ): Promise | Observable | DeleteMessageResponse; /** Статусы */ markAsRead( request: MarkAsReadRequest, metadata?: Metadata, ): Promise | Observable | MarkAsReadResponse; } export function ChatServiceControllerMethods() { return function (constructor: Function) { const grpcMethods: string[] = [ "createChat", "getUserChats", "joinChat", "leaveChat", "getMessages", "sendMessage", "deleteMessage", "markAsRead", ]; for (const method of grpcMethods) { const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method); GrpcMethod("ChatService", method)(constructor.prototype[method], method, descriptor); } const grpcStreamMethods: string[] = []; for (const method of grpcStreamMethods) { const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method); GrpcStreamMethod("ChatService", method)(constructor.prototype[method], method, descriptor); } }; } export const CHAT_SERVICE_NAME = "ChatService";