import FanPainter from "parsegraph-fanpainter";
import { Projector, Projected } from "parsegraph-projector";
import CarouselAction from "./CarouselAction";
import Camera from "parsegraph-camera";
import { PaintedNode } from "parsegraph-artist";
import { Keystroke } from "parsegraph-input";
import Method from "parsegraph-method";
import { GraphPainter } from "parsegraph-graphpainter";
export declare class CarouselPlot {
    node: PaintedNode;
    x: number;
    y: number;
    scale: number;
    painter: GraphPainter;
    constructor(node: PaintedNode);
}
export declare const CAROUSEL_SHOW_DURATION = 100;
export declare const CAROUSEL_MAX_DISTANCE = 4;
export declare const CAROUSEL_MIN_DISTANCE = 0.5;
export default class Carousel implements Projected {
    _selectionAngle: number;
    _angleSpan: number;
    _updateRepeatedly: boolean;
    _showScale: number;
    onScheduleRepaint: Function;
    onScheduleRepaintThisArg: any;
    _carouselPaintingDirty: boolean;
    _carouselPlots: CarouselPlot[];
    _carouselCallbacks: CarouselAction[];
    _carouselSize: number;
    _showCarousel: boolean;
    _selectedCarouselPlot: CarouselPlot;
    _selectedCarouselPlotIndex: number;
    _carouselHotkeys: {
        [id: string]: number;
    };
    _fanPainters: Map<Projector, FanPainter>;
    _selectedPlot: PaintedNode;
    _hideTime: Date;
    _cleaner: Function;
    _showTime: Date;
    _update: Method;
    _camera: Camera;
    constructor(cam: Camera);
    camera(): Camera;
    needsRepaint(): boolean;
    setCarouselSize(size: number): void;
    showCarousel(): void;
    isCarouselShown(): boolean;
    scheduleUpdate(): void;
    hideCarousel(): void;
    addToCarousel(action: CarouselAction): void;
    clearCarousel(): void;
    setCleaner(func: Function): void;
    clearHotfixActionIndex(i: number): boolean;
    removeFromCarousel(node: PaintedNode): CarouselPlot;
    updateRepeatedly(): boolean;
    clickCarousel(x: number, y: number, asDown: boolean): boolean;
    runAction(i: number): void;
    carouselKey(event: Keystroke): boolean;
    private reset;
    mouseOverCarousel(x: number, y: number): 0 | 2;
    showScale(): number;
    arrangeCarousel(): void;
    setOnScheduleRepaint(func: Function, thisArg?: any): void;
    scheduleCarouselRepaint(): void;
    paint(proj: Projector, timeout?: number): boolean;
    render(proj: Projector): boolean;
    tick(): boolean;
    getPainter(proj: Projector): FanPainter;
    unmount(proj: Projector): void;
    dispose(): void;
    setOnScheduleUpdate(func: Function, obj?: object): void;
    toggleCarousel(): boolean;
}
//# sourceMappingURL=Carousel.d.ts.map