import PropTypes from 'prop-types';
import L from 'leaflet';
import HeatmapOverlay from 'leaflet-heatmap';
import { ContextType } from 'rc-leaflet/es/components/RCMap/Context';
import { Layer } from 'rc-leaflet';
export interface Point {
    lat: number;
    lng: number;
    value?: number;
}
export interface Gradient {
    [key: string]: string;
}
export interface Extrema {
    gradient: Gradient;
    max: number;
    min: number;
}
export interface PartialProps {
    dataMax: number;
    dataMin: number;
    backgroundColor: string;
    gradient: Gradient;
    radius: number;
    opacity: number;
    maxOpacity: number;
    minOpacity: number;
    blur: number;
    scaleRadius: boolean;
    useLocalExtrema: boolean;
    onExtremaChange(extrema: Extrema): void;
}
export interface ReqiuredProps {
    points: Point[];
}
export declare type Props = Readonly<L.LayerOptions & Partial<PartialProps> & ReqiuredProps>;
export default class HeatLayer extends Layer<HeatmapOverlay, Props> {
    static propTypes: {
        backgroundColor: PropTypes.Requireable<string>;
        gradient: PropTypes.Requireable<object>;
        radius: PropTypes.Requireable<number>;
        opacity: PropTypes.Requireable<number>;
        maxOpacity: PropTypes.Requireable<number>;
        minOpacity: PropTypes.Requireable<number>;
        blur: PropTypes.Requireable<number>;
        scaleRadius: PropTypes.Requireable<boolean>;
        useLocalExtrema: PropTypes.Requireable<boolean>;
        onExtremaChange: PropTypes.Requireable<(...args: any[]) => any>;
        points: PropTypes.Requireable<PropTypes.InferProps<{
            lat: PropTypes.Validator<number>;
            lng: PropTypes.Validator<number>;
            value: PropTypes.Requireable<number>;
        }>[]>;
        dataMax: PropTypes.Requireable<number>;
        dataMin: PropTypes.Requireable<number>;
        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: {
        radius: number;
        scaleRadius: boolean;
    };
    constructor(props: Props, context: ContextType);
    componentDidUpdate(prevProps: Props): void;
    createInstance(props: Props): HeatmapOverlay;
}
