// Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: // protoc-gen-ts_proto v2.11.8 // 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, IMAGE */ type: string; /** Для текста - сам текст. Для медиа - URL S3! */ content: string; /** Ширина/высота картинки, длительность войса (JSON string) */ metadata: string; replyToId: string; isEdited: boolean; createdAt: string; } export interface ChatMemberDto { accountId: string; /** OWNER, ADMIN, MEMBER */ role: string; isMuted: boolean; joinedAt: string; } export interface ChatDto { id: string; /** DIRECT, GROUP, CHANNEL */ type: string; title: string; avatarUrl: string; unreadCount: number; lastMessage: | MessageDto | undefined; /** Полезно для рендера иконки перечеркнутого колокольчика */ isMuted: boolean; } export interface CreateChatRequest { creatorId: string; type: string; title: string; participantIds: string[]; } export interface CreateChatResponse { chat: ChatDto | undefined; } export interface GetUserChatsRequest { userId: string; offset: number; limit: number; } export interface GetUserChatsResponse { chats: ChatDto[]; } /** Получаем профили всех участников и ссылку-приглашение (join_hash) */ export interface GetChatDetailsRequest { userId: string; chatId: string; } export interface GetChatDetailsResponse { chat: | ChatDto | undefined; /** Для ссылки-приглашения (t.me/join/...) */ joinHash: string; members: ChatMemberDto[]; } export interface JoinChatRequest { userId: string; /** Передаем либо chat_id, либо вытаскиваем его из join_hash */ chatId: string; } export interface JoinChatResponse { success: boolean; } export interface LeaveChatRequest { userId: string; chatId: string; } export interface LeaveChatResponse { success: boolean; } export interface RemoveMemberRequest { /** Кто кикает (нужно проверить права) */ adminId: string; /** Кого кикают */ targetUserId: string; chatId: string; } export interface RemoveMemberResponse { success: boolean; } export interface MuteChatRequest { userId: string; chatId: string; /** true = выключить звук, false = включить */ isMuted: boolean; } export interface MuteChatResponse { success: boolean; } export interface GetMessagesRequest { userId: string; chatId: string; limit: number; beforeMsgId: string; } export interface GetMessagesResponse { messages: MessageDto[]; } export interface SendMessageRequest { chatId: string; senderId: string; type: string; content: string; replyToId: string; } export interface EditMessageRequest { userId: string; messageId: string; newContent: string; } export interface DeleteMessageRequest { userId: string; messageId: string; /** "Удалить только у себя" или "Удалить для всех" */ forEveryone: boolean; } export interface DeleteMessageResponse { success: boolean; } export interface MarkAsReadRequest { userId: string; chatId: string; /** ID последнего видимого сообщения */ messageId: string; } export interface MarkAsReadResponse { success: boolean; } export interface CheckChatMembershipRequest { userId: string; chatId: string; } export interface CheckChatMembershipResponse { isMember: boolean; } export const CHAT_V1_PACKAGE_NAME = "chat.v1"; export interface ChatServiceClient { /** Управление чатами (левая панель) */ createChat(request: CreateChatRequest, metadata?: Metadata): Observable; getUserChats(request: GetUserChatsRequest, metadata?: Metadata): Observable; /** Открытие инфы о группе/собеседнике */ getChatDetails(request: GetChatDetailsRequest, metadata?: Metadata): Observable; /** Управление участниками группы */ joinChat(request: JoinChatRequest, metadata?: Metadata): Observable; leaveChat(request: LeaveChatRequest, metadata?: Metadata): Observable; /** Админ кикает пользователя */ removeMember(request: RemoveMemberRequest, metadata?: Metadata): Observable; /** Выключить/включить пуши для чата */ muteChat(request: MuteChatRequest, metadata?: Metadata): Observable; /** Управление сообщениями (правое окно) */ getMessages(request: GetMessagesRequest, metadata?: Metadata): Observable; sendMessage(request: SendMessageRequest, metadata?: Metadata): Observable; /** Новое */ editMessage(request: EditMessageRequest, metadata?: Metadata): Observable; deleteMessage(request: DeleteMessageRequest, metadata?: Metadata): Observable; /** Статусы */ markAsRead(request: MarkAsReadRequest, metadata?: Metadata): Observable; checkChatMembership( request: CheckChatMembershipRequest, metadata?: Metadata, ): Observable; } export interface ChatServiceController { /** Управление чатами (левая панель) */ createChat( request: CreateChatRequest, metadata?: Metadata, ): Promise | Observable | CreateChatResponse; getUserChats( request: GetUserChatsRequest, metadata?: Metadata, ): Promise | Observable | GetUserChatsResponse; /** Открытие инфы о группе/собеседнике */ getChatDetails( request: GetChatDetailsRequest, metadata?: Metadata, ): Promise | Observable | GetChatDetailsResponse; /** Управление участниками группы */ joinChat( request: JoinChatRequest, metadata?: Metadata, ): Promise | Observable | JoinChatResponse; leaveChat( request: LeaveChatRequest, metadata?: Metadata, ): Promise | Observable | LeaveChatResponse; /** Админ кикает пользователя */ removeMember( request: RemoveMemberRequest, metadata?: Metadata, ): Promise | Observable | RemoveMemberResponse; /** Выключить/включить пуши для чата */ muteChat( request: MuteChatRequest, metadata?: Metadata, ): Promise | Observable | MuteChatResponse; /** Управление сообщениями (правое окно) */ getMessages( request: GetMessagesRequest, metadata?: Metadata, ): Promise | Observable | GetMessagesResponse; sendMessage( request: SendMessageRequest, metadata?: Metadata, ): Promise | Observable | MessageDto; /** Новое */ editMessage( request: EditMessageRequest, metadata?: Metadata, ): Promise | Observable | MessageDto; deleteMessage( request: DeleteMessageRequest, metadata?: Metadata, ): Promise | Observable | DeleteMessageResponse; /** Статусы */ markAsRead( request: MarkAsReadRequest, metadata?: Metadata, ): Promise | Observable | MarkAsReadResponse; checkChatMembership( request: CheckChatMembershipRequest, metadata?: Metadata, ): Promise | Observable | CheckChatMembershipResponse; } export function ChatServiceControllerMethods() { return function (constructor: Function) { const grpcMethods: string[] = [ "createChat", "getUserChats", "getChatDetails", "joinChat", "leaveChat", "removeMember", "muteChat", "getMessages", "sendMessage", "editMessage", "deleteMessage", "markAsRead", "checkChatMembership", ]; 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";