import type { OnlineRecognizer, OnlineStream, OfflineRecognizer } from '../wasmTypes';
import type { AsrInitResult, AsrModelConfig, AsrRecognizeResult } from '../../types/interfaces';
import type { WaveformInput } from '../../types/api';
import { type Constructor } from './mixinUtils';
import { WasmWorkerManager } from '../workers/WasmWorkerManager';
export declare function AsrMixin<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        asrOnlineRecognizer: OnlineRecognizer | null;
        asrOnlineStream: OnlineStream | null;
        asrOfflineRecognizer: OfflineRecognizer | null;
        asrWorkerManager: WasmWorkerManager | null;
        initAsr(config: AsrModelConfig): Promise<AsrInitResult>;
        /**
         * Online (streaming) ASR — uses WASM loadModel + createOnlineRecognizer.
         */
        _initOnlineAsr(config: AsrModelConfig, opts: {
            debug: number;
            numThreads: number;
            sampleRate: number;
            modelDir: string;
            fetchBase: string;
            rawType: string;
        }): Promise<AsrInitResult>;
        /**
         * Offline (non-streaming) ASR.
         * Loads model files to the Emscripten virtual FS and creates the
         * recognizer directly via the WASM OfflineRecognizer constructor,
         * which supports all model types (whisper, moonshine, sense_voice, etc.).
         */
        _initOfflineAsr(config: AsrModelConfig, opts: {
            debug: number;
            numThreads: number;
            sampleRate: number;
            modelDir: string;
            fetchBase: string;
            rawType: string;
        }): Promise<AsrInitResult>;
        recognizeFromSamples({ sampleRate, samples, }: WaveformInput): Promise<AsrRecognizeResult>;
        recognizeFromFile(filePath: string): Promise<AsrRecognizeResult>;
        _recognizeWorker(sampleRate: number, float32: Float32Array): Promise<AsrRecognizeResult>;
        _recognizeOffline(sampleRate: number, float32: Float32Array): AsrRecognizeResult;
        _recognizeOnline(sampleRate: number, float32: Float32Array): AsrRecognizeResult;
        releaseAsr(): Promise<{
            released: boolean;
        }>;
        createAsrOnlineStream(): Promise<{
            success: boolean;
        }>;
        acceptAsrOnlineWaveform({ sampleRate, samples, }: WaveformInput): Promise<{
            success: boolean;
        }>;
        isAsrOnlineEndpoint(): Promise<{
            isEndpoint: boolean;
        }>;
        getAsrOnlineResult(): Promise<{
            text: string;
            tokens: string[];
            timestamps: number[];
        }>;
        finishAsrOnlineInput(): Promise<{
            success: boolean;
            error?: string;
        }>;
        resetAsrOnlineStream(): Promise<{
            success: boolean;
        }>;
    };
} & TBase;
//# sourceMappingURL=asr.d.ts.map