import { EventEmitter } from 'events';
import { ISpeechRecognitionEngine, SpeechRecognitionConfig, SpeechRecognitionResult, AudioInputConfig, SpeechRecognitionErrorType, SpeechRecognitionEvents } from '../types';
/**
 * Base class for speech recognition engines
 */
export declare abstract class BaseSpeechRecognitionEngine extends EventEmitter implements ISpeechRecognitionEngine {
    protected isRecording: boolean;
    protected config: SpeechRecognitionConfig;
    constructor();
    /**
     * Start speech recognition
     */
    abstract start(audioConfig: AudioInputConfig, recognitionConfig?: SpeechRecognitionConfig): Promise<void>;
    /**
     * Stop speech recognition
     */
    abstract stop(): Promise<void>;
    /**
     * Abort speech recognition
     */
    abstract abort(): Promise<void>;
    /**
     * Check if engine is available
     */
    abstract isAvailable(): boolean;
    /**
     * Get supported languages
     */
    abstract getSupportedLanguages(): string[];
    /**
     * Process audio file directly
     */
    abstract processFile(filePath: string, config?: SpeechRecognitionConfig): Promise<SpeechRecognitionResult[]>;
    /**
     * Process audio stream
     */
    abstract processStream(stream: NodeJS.ReadableStream, config?: SpeechRecognitionConfig): Promise<SpeechRecognitionResult[]>;
    /**
     * Validate configuration
     */
    protected validateConfig(config: SpeechRecognitionConfig): void;
    /**
     * Validate audio input configuration
     */
    protected validateAudioConfig(audioConfig: AudioInputConfig): void;
    /**
     * Emit error event with proper error handling
     */
    protected emitError(type: SpeechRecognitionErrorType, message: string, originalError?: Error): void;
    /**
     * Emit result event with validation
     */
    protected emitResult(result: SpeechRecognitionResult): void;
    /**
     * Get default configuration merged with provided config
     */
    protected getConfig(config?: SpeechRecognitionConfig): SpeechRecognitionConfig;
    /**
     * Check if currently recording
     */
    get isActive(): boolean;
    /**
     * Set recording state
     */
    protected setRecordingState(recording: boolean): void;
    /**
     * Clean up resources
     */
    protected cleanup(): void;
    /**
     * 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=base-engine.d.ts.map