@voxket-ai/voxket-live
Version:
A React widget for embedding Voxket-powered audio/video/chat experiences.
73 lines (72 loc) • 2.12 kB
TypeScript
import { Room } from 'livekit-client';
import { VoxketEventEmitter } from './event-emitter';
import { ChatMessage, VoxketEvents } from '../types/core';
/**
* ChatManager
*
* Manages all chat-related functionality including:
* - Message storage and retrieval
* - Sending text messages
* - Sending file attachments
* - Message updates (streaming messages)
* - Markdown to plain text conversion
*/
export declare class ChatManager {
private chatMessages;
private activeTranscriptions;
private room;
private eventEmitter;
private participantName;
constructor(eventEmitter: VoxketEventEmitter<VoxketEvents>, participantName?: string);
/**
* Set the room instance for message sending
*/
setRoom(room: Room | null): void;
/**
* Update participant name
*/
setParticipantName(name: string): void;
/**
* Get all chat messages
*/
getChatMessages(): ChatMessage[];
/**
* Add a new chat message
*/
addChatMessage(message: ChatMessage): void;
/**
* Update an existing chat message
*/
updateChatMessage(updatedMessage: ChatMessage): void;
/**
* Clear all chat messages and transcriptions
*/
clearChatMessages(): void;
/**
* Track a transcription message ID to prevent duplicates
*/
trackTranscription(participantKey: string, messageId: string): void;
/**
* Get existing transcription within time window (1 second)
*/
getActiveTranscription(participantKey: string): {
messageId: string;
timestamp: number;
} | null;
/**
* Send a text message
*/
sendMessage(message: string, metadata?: Record<string, any>): Promise<void>;
/**
* Send multiple file attachments (images only)
*/
sendAttachments(files: File[], metadata?: Record<string, any>): Promise<void>;
/**
* Send a single file attachment
*/
sendAttachment(file: File, metadata?: Record<string, any>): Promise<void>;
/**
* Convert markdown text to plain text
*/
convertMarkdownToText(markdownText: string): string;
}