import { MessageAttachment, MessageReaction, MessageReplyTo, MessageStatus, MessageType } from '../../../services/chat/types'; /** * Datos necesarios para renderizar una burbuja de mensaje. */ export interface MessageBubbleMetadata { /** ID unico del mensaje. */ msgId: string; /** ID del emisor. */ senderId: string; /** Nombre visible del emisor. */ senderName: string; /** URL del avatar del emisor (opcional). */ senderAvatar?: string; /** Cuerpo del mensaje. */ body: string; /** Tipo de mensaje. */ type: MessageType; /** Fecha de creacion del mensaje. */ createdAt: Date; /** Si el mensaje es del usuario actual (alineacion derecha). */ isMine: boolean; /** Si el mensaje fue eliminado. */ isDeleted?: boolean; /** Si el mensaje fue editado. */ isEdited?: boolean; /** Mensaje al que responde (opcional). */ replyTo?: MessageReplyTo; /** Archivos adjuntos (opcional). */ attachments?: MessageAttachment[]; /** Reacciones del mensaje (opcional). */ reactions?: MessageReaction[]; /** Estado de envio (para mensajes optimistas del lado del cliente). */ status?: MessageStatus; } /** * Evento emitido cuando el usuario hace clic en una reaccion. */ export interface MessageReactionClickEvent { /** Token de la reaccion clickeada. */ token: string; /** ID del mensaje. */ msgId: string; } /** * Evento emitido cuando el usuario responde a un mensaje. */ export interface MessageReplyClickEvent { /** ID del mensaje al que se responde. */ msgId: string; } /** * Evento emitido cuando el usuario elimina un mensaje. */ export interface MessageDeleteClickEvent { /** ID del mensaje a eliminar. */ msgId: string; } /** * Evento emitido cuando el usuario edita un mensaje. */ export interface MessageEditClickEvent { /** ID del mensaje a editar. */ msgId: string; }