import 'leaflet.markercluster/dist/MarkerCluster.css';
import 'leaflet.markercluster/dist/MarkerCluster.Default.css';
import React from 'react';
import PropTypes from 'prop-types';
import L from 'leaflet';
import 'leaflet.markercluster';
import { Icon } from '../../util/PropTypes';
import { ContextType } from '../RCMap/Context';
import Layer from '../Layer';
declare type Icon = L.Icon | L.DivIcon;
export declare type ChunkProgress = (processed?: number, total?: number, time?: number) => void;
export declare type IconCreateFunction = (cluster: L.MarkerCluster) => Icon;
interface RequiredProps {
    points: L.LatLngExpression[];
}
interface PartialProps {
    icon: Icon;
    clusterPane: string;
    chunkProgress: ChunkProgress;
}
declare type Props = Readonly<L.MarkerClusterGroupOptions & Partial<PartialProps> & RequiredProps>;
export default class ClusterPoints extends Layer<L.MarkerClusterGroup, Props> {
    static propTypes: {
        points: PropTypes.Validator<(number[] | L.LatLng | PropTypes.InferProps<{
            lat: PropTypes.Validator<number>;
            lng: PropTypes.Validator<number>;
        }>)[]>;
        icon: PropTypes.Requireable<L.Icon<L.IconOptions> | L.DivIcon>;
        clusterPane: PropTypes.Requireable<string>;
        chunkProgress: PropTypes.Requireable<(...args: any[]) => any>;
        showCoverageOnHover: PropTypes.Requireable<boolean>;
        zoomToBoundsOnClick: PropTypes.Requireable<boolean>;
        spiderfyOnMaxZoom: PropTypes.Requireable<boolean>;
        removeOutsideVisibleBounds: PropTypes.Requireable<boolean>;
        animate: PropTypes.Requireable<boolean>;
        animateAddingMarkers: PropTypes.Requireable<boolean>;
        disableClusteringAtZoom: PropTypes.Requireable<number>;
        maxClusterRadius: PropTypes.Requireable<number | ((...args: any[]) => any)>;
        polygonOptions: PropTypes.Requireable<PropTypes.InferProps<{
            smoothFactor: PropTypes.Requireable<number>;
            noClip: PropTypes.Requireable<boolean>;
            stroke: PropTypes.Requireable<boolean>;
            color: PropTypes.Requireable<string>;
            weight: PropTypes.Requireable<number>;
            opacity: PropTypes.Requireable<number>;
            lineCap: PropTypes.Requireable<L.LineCapShape>;
            lineJoin: PropTypes.Requireable<L.LineJoinShape>;
            dashArray: PropTypes.Requireable<string | number[]>;
            dashOffset: PropTypes.Requireable<string>;
            fill: PropTypes.Requireable<boolean>;
            fillColor: PropTypes.Requireable<string>;
            fillOpacity: PropTypes.Requireable<number>;
            fillRule: PropTypes.Requireable<L.FillRule>;
            renderer: PropTypes.Requireable<L.Renderer>;
            className: PropTypes.Requireable<string>;
            interactive: PropTypes.Requireable<boolean>;
            bubblingMouseEvents: PropTypes.Requireable<boolean>;
            group: PropTypes.Requireable<L.LayerGroup<unknown>>;
            pane: PropTypes.Requireable<string>;
            attribution: PropTypes.Requireable<string>;
            onCreate: PropTypes.Requireable<(...args: any[]) => any>;
            onAdd: PropTypes.Requireable<(...args: any[]) => any>;
            onUpdate: PropTypes.Requireable<(...args: any[]) => any>;
            onBeforeRemove: PropTypes.Requireable<(...args: any[]) => any>;
            onRemove: PropTypes.Requireable<(...args: any[]) => any>;
            children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
            onClick: PropTypes.Requireable<(...args: any[]) => any>;
            onMouseOver: PropTypes.Requireable<(...args: any[]) => any>;
            onMouseOut: PropTypes.Requireable<(...args: any[]) => any>;
        }>>;
        singleMarkerMode: PropTypes.Requireable<boolean>;
        spiderLegPolylineOptions: PropTypes.Requireable<PropTypes.InferProps<{
            smoothFactor: PropTypes.Requireable<number>;
            noClip: PropTypes.Requireable<boolean>;
            stroke: PropTypes.Requireable<boolean>;
            color: PropTypes.Requireable<string>;
            weight: PropTypes.Requireable<number>;
            opacity: PropTypes.Requireable<number>;
            lineCap: PropTypes.Requireable<L.LineCapShape>;
            lineJoin: PropTypes.Requireable<L.LineJoinShape>;
            dashArray: PropTypes.Requireable<string | number[]>;
            dashOffset: PropTypes.Requireable<string>;
            fill: PropTypes.Requireable<boolean>;
            fillColor: PropTypes.Requireable<string>;
            fillOpacity: PropTypes.Requireable<number>;
            fillRule: PropTypes.Requireable<L.FillRule>;
            renderer: PropTypes.Requireable<L.Renderer>;
            className: PropTypes.Requireable<string>;
            interactive: PropTypes.Requireable<boolean>;
            bubblingMouseEvents: PropTypes.Requireable<boolean>;
            group: PropTypes.Requireable<L.LayerGroup<unknown>>;
            pane: PropTypes.Requireable<string>;
            attribution: PropTypes.Requireable<string>;
            onCreate: PropTypes.Requireable<(...args: any[]) => any>;
            onAdd: PropTypes.Requireable<(...args: any[]) => any>;
            onUpdate: PropTypes.Requireable<(...args: any[]) => any>;
            onBeforeRemove: PropTypes.Requireable<(...args: any[]) => any>;
            onRemove: PropTypes.Requireable<(...args: any[]) => any>;
            children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
            onClick: PropTypes.Requireable<(...args: any[]) => any>;
            onMouseOver: PropTypes.Requireable<(...args: any[]) => any>;
            onMouseOut: PropTypes.Requireable<(...args: any[]) => any>;
        }>>;
        spiderfyDistanceMultiplier: PropTypes.Requireable<number>;
        iconCreateFunction: PropTypes.Requireable<(...args: any[]) => any>;
        chunkedLoading: PropTypes.Requireable<boolean>;
        chunkDelay: PropTypes.Requireable<number>;
        chunkInterval: PropTypes.Requireable<number>;
        group: PropTypes.Requireable<L.LayerGroup<unknown>>;
        pane: PropTypes.Requireable<string>;
        attribution: PropTypes.Requireable<string>;
        onCreate: PropTypes.Requireable<(...args: any[]) => any>;
        onAdd: PropTypes.Requireable<(...args: any[]) => any>;
        onUpdate: PropTypes.Requireable<(...args: any[]) => any>;
        onBeforeRemove: PropTypes.Requireable<(...args: any[]) => any>;
        onRemove: PropTypes.Requireable<(...args: any[]) => any>;
        children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        onClick: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseOver: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseOut: PropTypes.Requireable<(...args: any[]) => any>;
    };
    static defaultProps: L.MarkerClusterGroupOptions;
    protected constructor(props: Props, context: ContextType);
    componentDidUpdate(prevProps: Props): void;
    protected createInstance(props: Props): L.MarkerClusterGroup;
    protected getTheme(): object;
    private addPoints;
    render(): React.ReactNode;
}
export {};
