import { AudioLevels } from "./audio-levels.js";
import { Fps } from '../../../../units/fps.js';
import { Ms } from '../../../../units/ms.js';
import { Driver } from '../../../../driver/driver.js';
import { TimelineFile } from '../../../parts/basics.js';
import { DecoderSource } from '../../../../driver/fns/schematic.js';
import { CursorVisualSampler, ReverseCursorVisualSampler } from '../../export/parts/cursor.js';
export declare class Playback {
    #private;
    private driver;
    private timeline;
    private resolveMedia;
    audioLevels: AudioLevels;
    audioSampler: {
        sampleAudio(timeline: TimelineFile, from: Ms): AsyncGenerator<{
            itemId: import("../../../parts/basics.js").Id;
            sample: import("mediabunny").AudioSample;
            timestamp: number;
            gain: number;
        }, void, unknown>;
    };
    seekVisualSampler: {
        sample(timeline: TimelineFile, timecode: Ms): Promise<import("../../../../driver/fns/schematic.js").Layer[]>;
    };
    playVisualSampler: CursorVisualSampler | null;
    reversePlayVisualSampler: ReverseCursorVisualSampler | null;
    onTick: import("@e280/stz").Pub<[]>;
    audioContext: AudioContext;
    audioNodes: Map<AudioBufferSourceNode, GainNode>;
    constructor(driver: Driver, timeline: TimelineFile, resolveMedia: (hash: string) => DecoderSource);
    update(timeline: TimelineFile): void;
    get isPlaying(): boolean;
    seek(time: Ms): Promise<import("../../../../driver/fns/schematic.js").Layer[]>;
    start(): Promise<void>;
    pause(): void;
    get duration(): Ms;
    get currentTime(): Ms;
    get playbackRate(): number;
    set playbackRate(rate: number);
    setFps(fps: Fps): void;
}
