import { CameraParams, OnCameraMoveListener } from './scatter_plot';
import { Dataset, Sequence } from './data';
import { UserStyles } from './styles';
import { RenderMode } from './types';
export declare type PointColorer = (index: number, selectedIndices: Set<number>, hoverIndex: number | null) => string;
export interface ScatterGLParams {
    camera?: CameraParams;
    onHover?: (point: number | null) => void;
    onClick?: (points: number | null) => void;
    onSelect?: (points: number[]) => void;
    onCameraMove?: OnCameraMoveListener;
    pointColorer?: PointColorer;
    renderMode?: RenderMode;
    rotateOnStart?: boolean;
    selectEnabled?: boolean;
    showLabelsOnHover?: boolean;
    styles?: UserStyles;
}
export declare class ScatterGL {
    private containerElement;
    private dataset?;
    private pointColorer;
    private scatterPlot;
    private sequences;
    private styles;
    private renderMode;
    private rotateOnStart;
    private selectEnabled;
    private showLabelsOnHover;
    private canvasLabelsVisualizer?;
    private labels3DVisualizer?;
    private pointVisualizer?;
    private polylineVisualizer?;
    private spritesheetVisualizer?;
    private hoverPointIndex;
    private selectedPointIndices;
    private clickCallback;
    private hoverCallback;
    private selectCallback;
    private cameraMoveCallback;
    constructor(containerElement: HTMLElement, params?: ScatterGLParams);
    private setParameters;
    render(dataset: Dataset): void;
    private renderScatterPlot;
    setRenderMode(renderMode: RenderMode): void;
    setTextRenderMode(): void;
    setPointRenderMode(): void;
    setSpriteRenderMode(): void;
    setSequences(sequences: Sequence[]): void;
    setPanMode(): void;
    setSelectMode(): void;
    setDimensions(nDimensions: number): void;
    setPointColorer(pointColorer: PointColorer | null): void;
    private callPointColorer;
    setHoverPointIndex(index: number): void;
    resize(): void;
    private onHover;
    private onClick;
    select: (pointIndices: number[]) => void;
    private onSelect;
    updateDataset(dataset: Dataset): void;
    isOrbiting(): boolean;
    startOrbitAnimation(): void;
    stopOrbitAnimation(): void;
    private setDataset;
    private updateScatterPlotPositions;
    private updateScatterPlotAttributes;
    private updatePolylineAttributes;
    private generatePointPositionArray;
    private generateVisibleLabelRenderParams;
    private generatePointScaleFactorArray;
    private generatePointColorArray;
    private generate3DLabelsArray;
    private generateLineSegmentColorMap;
    private generateLineSegmentOpacityArray;
    private generateLineSegmentWidthArray;
    private getLabelText;
    private initializeCanvasLabelsVisualizer;
    private initialize3DLabelsVisualizer;
    private initializePointVisualizer;
    private initializeSpritesheetVisualizer;
    private initializePolylineVisualizer;
    private setVisualizers;
    static Dataset: typeof Dataset;
}
