import { EventEmitter } from 'eventemitter3';
export interface VoiceConfig {
    apiKey: string;
    baseUrl?: string;
    language?: string;
    voiceId?: string;
    audioFormat?: 'mp3' | 'wav' | 'ogg';
    priority?: 'speed' | 'quality' | 'balanced';
    mode?: 'full-voice' | 'stt-only' | 'tts-only' | 'auto';
    enableSTT?: boolean;
    enableTTS?: boolean;
    autoPlay?: boolean;
    enableCompression?: boolean;
    enableCaching?: boolean;
    chunkSize?: number;
    maxCacheSize?: number;
    timeout?: number;
    retryAttempts?: number;
    ultraFastMode?: boolean;
    preloadVoices?: boolean;
    enableWebWorkers?: boolean;
}
export interface ConversationMessage {
    role: 'user' | 'assistant';
    content: string;
    timestamp: Date;
    type: 'text' | 'voice' | 'call';
    audioData?: string;
    metadata?: Record<string, unknown>;
}
export interface VoiceResponse {
    success: boolean;
    message?: string;
    audio?: string;
    audioData?: {
        audio: string;
        mimeType: string;
        duration?: number;
    };
    conversationHistory?: ConversationMessage[];
    metadata?: {
        processingTime: number;
        endpoint: string;
        model?: string;
        cached?: boolean;
    };
    error?: string;
}
export interface AudioInput {
    audio: string;
    mimeType: string;
}
/**
 * Ultra-fast Voice AI Client with minimal latency optimizations
 */
export declare class VoiceClient extends EventEmitter {
    private config;
    private conversationHistory;
    private audioCache;
    private isProcessing;
    private requestQueue;
    private processingQueue;
    private abortController?;
    private performanceMetrics;
    constructor(config: VoiceConfig);
    private initializeOptimizations;
    private verifyApiKey;
    private preloadVoiceModels;
    private initializeWebWorkers;
    /**
     * Send voice message with ultra-fast processing
     */
    sendVoiceMessage(input: Blob | File | AudioInput | string, options?: Partial<VoiceConfig>): Promise<VoiceResponse>;
    /**
     * Send text message optimized for speed
     */
    sendTextMessage(text: string, options?: Partial<VoiceConfig>): Promise<VoiceResponse>;
    /**
     * Transcribe audio only (no TTS response)
     */
    transcribeAudio(audioInput: Blob | File | AudioInput, options?: Partial<VoiceConfig>): Promise<VoiceResponse>;
    /**
     * Convert text to speech with caching
     */
    textToSpeech(text: string, options?: Partial<VoiceConfig>): Promise<VoiceResponse>;
    /**
     * Play audio with optimized loading
     */
    playAudio(audioData: string): Promise<void>;
    private prepareRequestBody;
    private makeRequest;
    private generateCacheKey;
    private getCachedResponse;
    private cacheResponse;
    private manageCacheSize;
    private updatePerformanceMetrics;
    private handleError;
    private blobToBase64;
    getConversationHistory(): ConversationMessage[];
    clearConversationHistory(): void;
    clearCache(): void;
    getPerformanceMetrics(): {
        averageLatency: number;
        requestCount: number;
        cacheHitRate: number;
        errorRate: number;
    };
    getStatus(): {
        isProcessing: boolean;
        cacheSize: number;
        conversationLength: number;
        config: {
            apiKey: string;
            baseUrl: string;
            language: string;
            voiceId: string;
            audioFormat: "mp3" | "wav" | "ogg";
            priority: "speed" | "quality" | "balanced";
            mode: "full-voice" | "stt-only" | "tts-only" | "auto";
            enableSTT: boolean;
            enableTTS: boolean;
            autoPlay: boolean;
            enableCompression: boolean;
            enableCaching: boolean;
            chunkSize: number;
            maxCacheSize: number;
            timeout: number;
            retryAttempts: number;
            ultraFastMode: boolean;
            preloadVoices: boolean;
            enableWebWorkers: boolean;
        };
        performance: {
            averageLatency: number;
            requestCount: number;
            cacheHitRate: number;
            errorRate: number;
        };
    };
    updateConfig(updates: Partial<VoiceConfig>): void;
    destroy(): void;
}
//# sourceMappingURL=VoiceClient.d.ts.map