import { MessageReplyTo } from '../../../services/chat/types'; import { MessageBubbleAction } from '../../molecules/message-bubble/message-bubble.component'; import { MessageBubbleMetadata } from '../../molecules/message-bubble/types'; import { ChatComposerSendEvent } from '../../molecules/chat-composer/chat-composer.component'; import * as i0 from "@angular/core"; type ChatRow = { kind: 'date'; id: string; label: string; } | { kind: 'msg'; id: string; msg: MessageBubbleMetadata; showName: boolean; showAvatar: boolean; tail: boolean; }; /** * val-chat-window — ventana de chat completa (signal inputs). * * Agrupa mensajes consecutivos del mismo emisor y por día (separadores sticky), * muestra avatar/nombre solo en los bordes del grupo, scroll-to-bottom inteligente * (auto-scroll si estás abajo, pill "mensajes nuevos" si estás leyendo arriba), * composer moderno con contexto de respuesta, y typing indicator. * * API pública estable (consumida por thread-panel y showcase): inputs convId, * messages, currentUserId, isOpen, typingUsers, isLoading; outputs sendMessage, * loadMore, reactionClick, deleteMessage, replyTo (+ editMessage/attach/voice nuevos). */ export declare class ChatWindowComponent { private i18n; readonly convId: import("@angular/core").InputSignal; readonly messages: import("@angular/core").InputSignal; readonly currentUserId: import("@angular/core").InputSignal; readonly isOpen: import("@angular/core").InputSignal; readonly typingUsers: import("@angular/core").InputSignal; readonly isLoading: import("@angular/core").InputSignal; /** Botón de adjuntar archivos/imágenes. */ readonly showAttach: import("@angular/core").InputSignal; /** Botón de dictado voz→texto (SpeechRecognition). */ readonly showDictation: import("@angular/core").InputSignal; /** Botón de mensaje de voz (grabar clip de audio). */ readonly showVoiceMessage: import("@angular/core").InputSignal; readonly sendMessage: import("@angular/core").OutputEmitterRef; readonly loadMore: import("@angular/core").OutputEmitterRef; readonly reactionClick: import("@angular/core").OutputEmitterRef<{ msgId: string; token: string; }>; readonly deleteMessage: import("@angular/core").OutputEmitterRef; readonly replyTo: import("@angular/core").OutputEmitterRef; readonly editMessage: import("@angular/core").OutputEmitterRef; readonly typing: import("@angular/core").OutputEmitterRef; readonly voice: import("@angular/core").OutputEmitterRef; private readonly msgsEl; protected readonly replyingTo: import("@angular/core").WritableSignal; protected readonly atBottom: import("@angular/core").WritableSignal; protected readonly hasNew: import("@angular/core").WritableSignal; protected readonly locale: import("@angular/core").Signal<"es-CL" | "en-US">; constructor(); protected readonly rows: import("@angular/core").Signal; protected onScroll(): void; protected scrollToBottom(smooth: boolean): void; protected onSend(event: ChatComposerSendEvent): void; protected onAction(event: MessageBubbleAction): void; t(key: string): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } export {};