export type VoiceProvider = "browser" | "elevenlabs"; export interface VoiceConfig { provider: VoiceProvider; voice?: string; rate?: number; pitch?: number; volume?: number; lang?: string; } export interface ElevenLabsVoiceConfig extends VoiceConfig { provider: "elevenlabs"; voice: string; model?: "eleven_multilingual_v2" | "eleven_monolingual_v1"; stability?: number; similarity_boost?: number; } export interface BrowserVoiceConfig extends VoiceConfig { provider: "browser"; voice?: string; rate?: number; pitch?: number; volume?: number; } export declare class ElevenLabsTTSProvider { private apiKey; private baseUrl; constructor(apiKey: string, baseUrl?: string); synthesize(text: string, config: ElevenLabsVoiceConfig): Promise; getVoices(): Promise; } export declare class BrowserTTSProvider { synthesize(text: string, config: BrowserVoiceConfig): Promise; getVoices(): SpeechSynthesisVoice[]; } export declare function createVoiceProvider(config: VoiceConfig, apiKey?: string): ElevenLabsTTSProvider | BrowserTTSProvider; export declare const LOCALE_VOICE_MAPPING: Record; export declare const DEFAULT_VOICE_CONFIGS: Record; /** * Get voice configuration based on locale * @param locale - The locale code (e.g., 'en', 'de', 'es') * @returns Voice configuration for the locale, falls back to English if not found */ export declare function getVoiceForLocale(locale: string): VoiceConfig; /** * Get available locales for voice selection * @returns Array of available locale codes */ export declare function getAvailableLocales(): string[];