import L from 'leaflet';
export declare type Icon = Partial<{
    iconUrl: string;
    iconSize: L.PointExpression;
    iconAnchor: L.PointExpression;
    popupAnchor: L.PointExpression;
    tooltipAnchor: L.PointExpression;
}>;
export interface Box {
    top: number;
    bottom: number;
    left: number;
    right: number;
}
export interface MassPoint extends Icon {
    position: L.LatLngExpression;
    [key: string]: any;
}
export interface EventTarget {
    index: number;
    point: MassPoint;
}
export interface MassLayerOptions extends L.InteractiveLayerOptions, Icon {
    points: MassPoint[];
    throttleThreshold?: number;
    throttleDuration?: number;
}
export declare const defaultOptions: MassLayerOptions;
export default class MassLayer extends L.Layer {
    private options;
    private canvas;
    ctx: CanvasRenderingContext2D;
    private icons;
    private iconsReady;
    private prevHover;
    private hover;
    private click;
    private throttledReset;
    constructor(options?: MassLayerOptions);
    private setThrottledReset;
    onAdd(map: L.Map): this;
    onRemove(map: L.Map): this;
    addTo(map: L.Map): this;
    getLatLng(): L.LatLngExpression;
    setOptions(options: MassLayerOptions): void;
    getOptions: () => MassLayerOptions;
    setPoints(points: MassPoint[]): void;
    getPoints: () => MassPoint[];
    setIconUrl(url: string): void;
    getIconUrl: (point: MassPoint) => string;
    setIconSize(size: L.PointExpression): void;
    getIconSize(point: MassPoint): L.Point;
    setIconAnchor(anchor: L.PointExpression): void;
    getIconAnchor(point: MassPoint): L.Point;
    setPopupAnchor(anchor: L.PointExpression): void;
    getPopupAnchor(point: MassPoint): L.Point;
    setTooltipAnchor(anchor: L.PointExpression): void;
    getTooltipAnchor(point: MassPoint): L.Point;
    getIconBox(point: MassPoint): Box;
    private _getPopupAnchor;
    private _getTooltipAnchor;
    private prepareIcons;
    private draw;
    private onClick;
    private onMouseMove;
    private reset;
    private zoomAnim;
    private onPopupClose;
}
