import { EventEmitter } from 'events';
export interface TTSConfig {
    enabled: boolean;
    provider: 'edge-tts' | 'espeak' | 'say' | 'piper' | 'audioreader';
    voice?: string;
    rate?: string;
    volume?: string;
    pitch?: string;
    autoSpeak?: boolean;
}
export interface TTSState {
    isSpeaking: boolean;
    queue: string[];
    currentText?: string;
}
/**
 * Text-to-Speech Manager
 * Supports multiple TTS backends with Edge TTS as default
 */
export declare class TextToSpeechManager extends EventEmitter {
    private config;
    private state;
    private speakingProcess;
    private tempDir;
    private audioreaderBaseURL;
    private static readonly EDGE_VOICES;
    constructor(config?: Partial<TTSConfig>);
    private ensureTempDir;
    private loadConfig;
    saveConfig(): void;
    /**
     * Check if TTS is available
     */
    isAvailable(): Promise<{
        available: boolean;
        reason?: string;
    }>;
    /**
     * Get voice for language
     */
    getVoiceForLanguage(lang: string): string;
    /**
     * Speak text
     * Note: This method catches all errors internally to avoid unhandled rejections.
     * Errors are emitted via 'error' event instead.
     */
    speak(text: string, language?: string): Promise<void>;
    /**
     * Speak with Edge TTS (Microsoft voices)
     */
    private speakWithEdgeTTS;
    /**
     * Speak with espeak
     */
    private speakWithEspeak;
    /**
     * Speak with macOS say
     */
    private speakWithSay;
    /**
     * Speak with Piper TTS
     */
    private speakWithPiper;
    /**
     * Speak with AudioReader (Kokoro-82M via local API)
     */
    private speakWithAudioReader;
    /**
     * Play audio file using available player
     */
    private playAudio;
    /**
     * Stop speaking
     */
    stop(): void;
    /**
     * Enable TTS
     */
    enable(): void;
    /**
     * Disable TTS
     */
    disable(): void;
    /**
     * Set auto-speak mode
     */
    setAutoSpeak(enabled: boolean): void;
    /**
     * Get config
     */
    getConfig(): TTSConfig;
    /**
     * Get state
     */
    getState(): TTSState;
    /**
     * Update config
     */
    updateConfig(config: Partial<TTSConfig>): void;
    /**
     * List available Edge TTS voices
     */
    listVoices(): Promise<string[]>;
    /**
     * Format status
     */
    formatStatus(): string;
    /**
     * Dispose and cleanup resources
     */
    dispose(): void;
}
export declare function getTTSManager(): TextToSpeechManager;
export declare function resetTTSManager(): void;
