import { type Room } from 'livekit-client'; import type { ChatAdapter } from '../../../core/ports/outbound/chat-adapter.port'; import type { ChatControlCommand, ChatRecipient, IncomingChatMessage, OutgoingChatMessage, TypingState } from '../../../core/types/chat.types'; /** * LiveKit implementation of ChatAdapter. * * Message channel uses LiveKit Text Streams (`sendText` / * `registerTextStreamHandler`) — chunked, reliable, no per-message size cap. * Typing and control channels stay on `publishData` because their payloads * are small structured commands, not free-form user text. * * Why Text Streams for messages: * - Designed for chat: auto-chunking, reliable delivery, sender identity * - Removes the ~15KB Data Packet cap that previously forced * `ChatPayloadTooLargeError`, meeting the ≥16KB payload requirement * - Per-message metadata (id, DM target, app metadata) travels * via stream `attributes`; the message body is the raw text */ export declare class LiveKitChatAdapter implements ChatAdapter { private room; private messageHandlers; private typingHandlers; private controlHandlers; private dataReceivedHandler; constructor(room: Room); sendMessage(message: OutgoingChatMessage, recipient: ChatRecipient): Promise; onMessage(callback: (msg: IncomingChatMessage) => void): () => void; sendTyping(state: TypingState): Promise; onTyping(callback: (event: TypingState) => void): () => void; sendControl(command: ChatControlCommand): Promise; onControl(callback: (command: ChatControlCommand) => void): () => void; destroy(): void; private handleTextStream; private handleDataReceived; } //# sourceMappingURL=chat.adapter.d.ts.map