import { MODES, STREAMING_ACTION } from '../constants/sttDefaults';
import { AvailableModels } from '../types/stt';
import { ResourceSource } from '../types/common';
import { SpeechToTextLanguage } from '../types/stt';
export declare class SpeechToTextController {
    private speechToTextNativeModule;
    sequence: number[];
    isReady: boolean;
    isGenerating: boolean;
    private tokenizerModule;
    private overlapSeconds;
    private windowSize;
    private chunks;
    private seqs;
    private prevSeq;
    private waveform;
    private numOfChunks;
    private streaming;
    private decodedTranscribeCallback;
    private isReadyCallback;
    private isGeneratingCallback;
    private onErrorCallback;
    private config;
    constructor({ transcribeCallback, isReadyCallback, isGeneratingCallback, onErrorCallback, overlapSeconds, windowSize, streamingConfig, }: {
        transcribeCallback: (sequence: string) => void;
        isReadyCallback?: (isReady: boolean) => void;
        isGeneratingCallback?: (isGenerating: boolean) => void;
        onErrorCallback?: (error: Error | undefined) => void;
        overlapSeconds?: number;
        windowSize?: number;
        streamingConfig?: keyof typeof MODES;
    });
    load({ modelName, encoderSource, decoderSource, tokenizerSource, onDownloadProgressCallback, }: {
        modelName: AvailableModels;
        encoderSource?: ResourceSource;
        decoderSource?: ResourceSource;
        tokenizerSource?: ResourceSource;
        onDownloadProgressCallback?: (downloadProgress: number) => void;
    }): Promise<void>;
    configureStreaming(overlapSeconds?: number, windowSize?: number, streamingConfig?: keyof typeof MODES): void;
    private chunkWaveform;
    private resetState;
    private expectedChunkLength;
    private getStartingTokenIds;
    private decodeChunk;
    private handleOverlaps;
    private trimLeft;
    private trimRight;
    private trimSequences;
    private validateAndFixLastChunk;
    private tokenIdsToText;
    transcribe(waveform: number[], audioLanguage?: SpeechToTextLanguage): Promise<string>;
    streamingTranscribe(streamAction: STREAMING_ACTION, waveform?: number[], audioLanguage?: SpeechToTextLanguage): Promise<string>;
    encode(waveform: Float32Array): Promise<null>;
    decode(seq: number[]): Promise<number>;
}
