interface MediaReaderOptions {
    playbackRate?: number;
    startTime?: number;
    duration?: number;
    volume?: number;
}
export declare class MediaReader {
    static videos: {
        [path: string]: HTMLVideoElement;
    };
    static videoPreloadTask: {
        [path: string]: Promise<HTMLVideoElement>;
    };
    static readers: MediaReader[];
    static preload(clipAssetPath: string): Promise<HTMLVideoElement>;
    static Make(filePath: string): MediaReader;
    static MakeFromBytes(bytesOffset: number, length: number): MediaReader;
    path: string;
    videoEl: HTMLVideoElement;
    width: number;
    height: number;
    contentTime: number;
    textureId: number;
    texture: any;
    released: boolean;
    playbackRate: number;
    alwaysPause: boolean;
    volume: number;
    adjustRange: number;
    /**
     * Browser, it will be 1 in WeChat reader
     */
    type: number;
    useCount: number;
    private isPaused;
    private startTime;
    private duration;
    private resetTask;
    private constructor();
    decodeAudio(): Promise<this>;
    updateSize(): void;
    renderToTexture(GL: any, textureId: any): void;
    setOptions(options: MediaReaderOptions): void;
    getNearestKeyFrame(time: number): number;
    seekToSync(contentTime: number): void;
    pause(): Promise<boolean>;
    continue(): void;
    seekTo(contentTime: number, forceSeek?: boolean): Promise<boolean>;
    reset(): void;
    release(): void;
    reuse(): void;
    onMediaTimeUpdate: () => void;
    private checkEndTimeAndPause;
}
export {};
