import { EventEmitter } from 'events';
import { VoiceToTextOptions, SpeechRecognitionConfig, SpeechRecognitionResult, AudioInputConfig, EngineConfig, MicrophoneOptions, SpeechRecognitionEvents, BrowserSupport } from './types';
/**
 * Main VoiceToText converter class
 */
export declare class VoiceToText extends EventEmitter {
    private options;
    private currentEngine;
    private isInitialized;
    constructor(options?: VoiceToTextOptions);
    /**
     * Initialize the voice-to-text converter
     */
    initialize(): Promise<void>;
    /**
     * Convert speech from microphone to text
     */
    fromMicrophone(options?: MicrophoneOptions): Promise<void>;
    /**
     * Convert speech from audio file to text
     */
    fromFile(filePath: string, config?: SpeechRecognitionConfig): Promise<SpeechRecognitionResult[]>;
    /**
     * Convert speech from audio stream to text
     */
    fromStream(stream: NodeJS.ReadableStream, config?: SpeechRecognitionConfig): Promise<SpeechRecognitionResult[]>;
    /**
     * Start continuous speech recognition
     */
    startListening(audioConfig: AudioInputConfig, config?: SpeechRecognitionConfig): Promise<void>;
    /**
     * Stop speech recognition
     */
    stopListening(): Promise<void>;
    /**
     * Abort speech recognition
     */
    abort(): Promise<void>;
    /**
     * Check if currently listening/recording
     */
    get isListening(): boolean;
    /**
     * Get current engine information
     */
    getCurrentEngine(): {
        type: string;
        available: boolean;
        capabilities: any;
    } | null;
    /**
     * Switch to a different engine
     */
    switchEngine(engineConfig: EngineConfig): Promise<void>;
    /**
     * Get available engines in current environment
     */
    static getAvailableEngines(): Array<EngineConfig['engine']>;
    /**
     * Check if a specific engine is available
     */
    static isEngineAvailable(engineType: EngineConfig['engine']): boolean;
    /**
     * Get engine capabilities
     */
    static getEngineCapabilities(engineType: EngineConfig['engine']): any;
    /**
     * Get browser support information
     */
    static getBrowserSupport(): BrowserSupport;
    /**
     * Create a quick instance for one-time use
     */
    static quickTranscribe(source: string | NodeJS.ReadableStream | 'microphone', options?: {
        engine?: EngineConfig['engine'];
        duration?: number;
        language?: string;
        config?: SpeechRecognitionConfig;
    }): Promise<SpeechRecognitionResult[]>;
    /**
     * Clean up resources
     */
    cleanup(): Promise<void>;
    /**
     * Ensure the converter is initialized
     */
    private ensureInitialized;
    /**
     * Select the best available engine
     */
    private selectEngine;
    /**
     * Set up event forwarding from engine to main class
     */
    private setupEngineEvents;
    /**
     * Handle engine fallback on error
     */
    private handleEngineFallback;
    /**
     * Type-safe event emitter methods
     */
    emit<K extends keyof SpeechRecognitionEvents>(event: K, ...args: Parameters<SpeechRecognitionEvents[K]>): boolean;
    on<K extends keyof SpeechRecognitionEvents>(event: K, listener: SpeechRecognitionEvents[K]): this;
    once<K extends keyof SpeechRecognitionEvents>(event: K, listener: SpeechRecognitionEvents[K]): this;
    off<K extends keyof SpeechRecognitionEvents>(event: K, listener: SpeechRecognitionEvents[K]): this;
}
//# sourceMappingURL=voice-to-text.d.ts.map