import { EventEmitter } from 'events';
export interface VoiceInputConfig {
    enabled: boolean;
    provider: 'whisper-local' | 'whisper-api' | 'system';
    language?: string;
    model?: string;
    apiKey?: string;
    hotkey?: string;
    autoSend?: boolean;
    silenceThreshold?: number;
    silenceDuration?: number;
}
export interface TranscriptionResult {
    success: boolean;
    text?: string;
    confidence?: number;
    language?: string;
    duration?: number;
    error?: string;
}
export interface VoiceInputState {
    isRecording: boolean;
    isProcessing: boolean;
    lastTranscription?: string;
    errorCount: number;
}
/**
 * Enhanced Voice Input - Inspired by Aider
 * Supports multiple speech-to-text backends
 */
export declare class VoiceInputManager extends EventEmitter {
    private config;
    private state;
    private recordingProcess;
    private levelInterval;
    private tempDir;
    constructor(config?: Partial<VoiceInputConfig>);
    /**
     * Ensure temp directory exists
     */
    private ensureTempDir;
    /**
     * Load voice config from settings
     */
    private loadConfig;
    /**
     * Save voice config
     */
    saveConfig(): void;
    /**
     * Check if voice input is available
     */
    isAvailable(): Promise<{
        available: boolean;
        reason?: string;
    }>;
    /**
     * Check if a command exists
     */
    private checkCommand;
    /**
     * Start recording audio
     */
    startRecording(): Promise<void>;
    /**
     * Stop recording
     */
    stopRecording(): void;
    /**
     * Process recorded audio
     */
    private processAudio;
    /**
     * Transcribe with local Whisper installation
     */
    private transcribeWithWhisperLocal;
    /**
     * Transcribe with OpenAI Whisper API
     */
    private transcribeWithWhisperAPI;
    /**
     * Transcribe with system speech recognition (macOS)
     */
    private transcribeWithSystem;
    /**
     * Toggle recording (push-to-talk style)
     */
    toggleRecording(): void;
    /**
     * Get current state
     */
    getState(): VoiceInputState;
    /**
     * Get configuration
     */
    getConfig(): VoiceInputConfig;
    /**
     * Update configuration
     */
    setConfig(config: Partial<VoiceInputConfig>): void;
    /**
     * Enable voice input
     */
    enable(): void;
    /**
     * Disable voice input
     */
    disable(): void;
    /**
     * Check if enabled
     */
    isEnabled(): boolean;
    /**
     * Format status for display
     */
    formatStatus(): string;
    /**
     * Clean up resources
     */
    dispose(): void;
}
export declare function getVoiceInputManager(config?: Partial<VoiceInputConfig>): VoiceInputManager;
export declare function resetVoiceInputManager(): void;
