/** * TypingBubble — incoming-style chat bubble with animated typing dots and * the matching avatar. Rendered as the last child of the message list so * the dots occupy the exact slot the real message will land in; when the * message arrives the bubble shape stays put and the content morphs from * dots to text. Used for two cases: * * 1. Live typing event (agent / AI publishes `is_typing: true`) — * rendered while `store.isTyping` is true. * 2. New-channel pending state — rendered while we wait for the server * response to `POST /channels` (replaces the old `NewChannelLoader` * so the empty-conversation placeholder and the live indicator share * one component). */ import type { JSX } from "preact"; interface TypingBubbleProps { /** Who's composing — drives avatar variant and label. */ senderType: "ai" | "agent"; /** Agent's display name. Ignored for AI (always "AI Assistant"). */ senderName?: string | null; } export declare function TypingBubble({ senderType, senderName, }: TypingBubbleProps): JSX.Element; export {};