import { Playback } from "./parts/playback.js";
import { Driver } from "../../../driver/driver.js";
import { TimelineFile } from "../../parts/basics.js";
import { AudioLevelObserver } from "./parts/types.js";
import { DecoderSource } from "../../../driver/fns/schematic.js";
type ResolveMedia = (hash: string) => DecoderSource;
export declare class VideoPlayer {
    #private;
    private driver;
    canvas: HTMLCanvasElement;
    playback: Playback;
    readonly audio: {
        levels: AudioLevelObserver;
    };
    constructor(driver: Driver, resolveMedia: ResolveMedia, timeline: TimelineFile);
    play(): Promise<void>;
    pause(): void;
    seek(timeMs: number): Promise<void>;
    setFPS(value: number): void;
    resize(width: number, height: number): void;
    get isSeeking(): boolean;
    get isPlaying(): boolean;
    get duration(): import("../../../units/ms.js").Ms;
    get currentTime(): import("../../../units/ms.js").Ms;
    get playbackRate(): number;
    set playbackRate(rate: number);
    /**
     call this whenever your timeline state changes
    */
    update(timeline: TimelineFile): Promise<void>;
}
export {};
