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;
}
