import { Event } from '../utils/event';
import { Sequence } from '../types';
import { Renderer } from './rendering/renderer';
import { RendererTypes } from './rendering/renderer-builder';
export interface PanelPlayerParameters {
    renderer: Renderer;
    fps: number;
    sequence: Sequence;
}
interface SetRendererBuilderParameters {
    rendererType: RendererTypes;
    elementId: string;
}
export declare class PanelPlayer {
    readonly CLASS_NAME: string;
    private _index;
    private _sequence;
    private _renderer;
    private _fps;
    private _shouldUpdate;
    private _fpsIntervalLengthInMs;
    private _now;
    private _then;
    private _elapsed;
    protected readonly onPanelUpdate: Event<{
        display: import("../utils/bit-array").bit[][];
    }>;
    protected readonly onReachingBoundary: Event<void>;
    readonly PanelUpdate: import("../utils/event").IEvent<{
        display: import("../utils/bit-array").bit[][];
    }>;
    readonly ReachingBoundary: import("../utils/event").IEvent<void>;
    constructor(params: PanelPlayerParameters);
    sequence: Sequence;
    readonly index: number;
    fps: number;
    renderer: Renderer;
    play(): void;
    stop(): void;
    resume(): void;
    pause(): void;
    step(): void;
    seek(frame: number): void;
    setRendererFromBuilder(value: SetRendererBuilderParameters): void;
    private _nextPanelFrame;
    private _render;
    private _incrementIndex;
    private _startLoop;
    private _loop;
    private _callIfReadyForNextFrame;
}
export {};
