import type { EmscriptenGL } from '../types';
export interface FrameData {
    id: number;
    data: ArrayBuffer;
    width: number;
    height: number;
}
export interface TimeRange {
    start: number;
    end: number;
}
export declare class VideoReader {
    static isIOS: () => boolean;
    static isAndroidMiniprogram: () => boolean;
    private readonly frameRate;
    private currentFrame;
    private mp4Path;
    private videoDecoder;
    private videoDecoderPromise;
    private frameData;
    private frameDataBuffers;
    private bufferIndex;
    private getFrameDataLooping;
    private getFrameDataResolve;
    private getFrameDataLoopTimer;
    private seeking;
    constructor(mp4Data: Uint8Array, width: number, height: number, frameRate: number, staticTimeRanges: TimeRange[]);
    prepare(targetFrame: number): Promise<boolean>;
    renderToTexture(GL: EmscriptenGL, textureID: number): void;
    onDestroy(): void;
    private getFrameData;
    private startGetFrameDataLoop;
    private getFrameDataLoop;
    private clearFrameDataLoop;
}
