import type { SegmentedOfflineAsrChunk, SegmentedOfflineAsrConfig, SegmentedOfflineAsrEventListener, SegmentedOfflineAsrState, SegmentedOfflineAsrSummary } from '../types/interfaces';
/**
 * Bounded-memory helper for offline-only ASR models.
 *
 * Sherpa offline models such as Qwen3, Whisper, SenseVoice, and Canary do not
 * expose an online `acceptWaveform/getResult` contract. This JS session wraps
 * those offline recognizers by buffering decoded PCM into fixed-size windows,
 * materializing only the current window as `number[]`, and emitting stable
 * progress/segment events while callers keep decoding long audio incrementally.
 *
 * Calls are intentionally single-flight: await each `acceptChunk()` / `flush()`
 * before submitting the next chunk so segment boundaries and model cleanup stay
 * deterministic.
 */
export declare class SegmentedOfflineAsrSession {
    private readonly config;
    private readonly listeners;
    private readonly emittedEvents;
    private readonly maxStoredEvents;
    private readonly chunks;
    private readonly segments;
    private bufferedSamples;
    private bufferStartSample;
    private nextSample;
    private processedSamples;
    private transcript;
    private released;
    constructor(config: SegmentedOfflineAsrConfig);
    onEvent(listener: SegmentedOfflineAsrEventListener): () => void;
    getState(): SegmentedOfflineAsrState;
    getSummary(): SegmentedOfflineAsrSummary;
    acceptChunk(chunk: SegmentedOfflineAsrChunk): Promise<void>;
    flush(final?: boolean): Promise<void>;
    reset(): void;
    release(): void;
    private get segmentSamples();
    private get overlapSamples();
    private flushReadySegments;
    private flushReadySegmentsForFinalInput;
    private recognizeBufferedSegment;
    private materializeSamples;
    private consumeSamples;
    private emitProgress;
    private emit;
    private ensureNotReleased;
}
//# sourceMappingURL=SegmentedOfflineAsrSession.d.ts.map