import { ReactElement, ReactNode } from 'react';
import type { Feature as GeoJSONFeatureType } from 'geojson';
import { BaseCategoricalChartProps, BaseChartComponentProps } from './chartTypes';
import type { GeoJSONPolygonOnlyFeatureCollection } from './geoJSONTypes';
export interface GeoPointDataItem {
    coordinates: [number, number];
    title: string;
}
type PointMapOnClick = (point: GeoPointDataItem) => void;
type GeoJSONShapeOnClick = (shape: GeoJSONFeatureType) => void;
export interface BaseMapProps extends BaseChartComponentProps {
    center: [number, number];
    zoom: number;
    tileLayer?: ReactElement;
}
export interface PointMapProps extends BaseMapProps {
    data: GeoPointDataItem[];
    onClick?: PointMapOnClick;
    renderPopupBody?: (p: GeoPointDataItem) => ReactNode;
}
export interface MapDiscreteLegendItem {
    color: string | undefined;
    label: string;
}
export interface ChoroplethMapColorModeContinuous {
    mode: 'continuous';
    minColor: string;
    maxColor: string;
}
export interface ChoroplethMapColorModeDiscrete {
    mode: 'discrete';
    colorFunction: (x: number | undefined) => string;
    legendItems: MapDiscreteLegendItem[];
}
export interface ChoroplethMapProps extends BaseCategoricalChartProps, BaseMapProps {
    features: GeoJSONPolygonOnlyFeatureCollection;
    colorMode: ChoroplethMapColorModeContinuous | ChoroplethMapColorModeDiscrete;
    categoryProp: string;
    onClick?: GeoJSONShapeOnClick;
    renderPopupBody?: (f: GeoJSONFeatureType, d: number | undefined) => ReactNode;
}
export {};
