import type { Datum } from "../shared/datumTypes";
import * as React from "react";
import type { StreamGeoFrameProps, ProjectionProp } from "../../stream/geoTypes";
import type { RealtimeFrameHandle } from "../../realtime/types";
import type { BaseChartProps, ChartAccessor } from "../shared/types";
import { type TooltipProp } from "../../Tooltip/Tooltip";
import type { LegendInteractionMode, LegendPosition } from "../shared/hooks";
import type { Style } from "../../stream/types";
import { type AreasProp } from "../../geo/useReferenceAreas";
export interface ProportionalSymbolMapProps<TDatum extends Datum = Datum> extends BaseChartProps {
    /** Point data with geographic coordinates */
    points?: TDatum[];
    /** Longitude accessor @default "lon" */
    xAccessor?: ChartAccessor<TDatum, number>;
    /** Latitude accessor @default "lat" */
    yAccessor?: ChartAccessor<TDatum, number>;
    /** Field to scale point size */
    sizeBy: ChartAccessor<TDatum, number>;
    /** Min and max radius @default [3, 30] */
    sizeRange?: [number, number];
    /** Field to determine point color */
    colorBy?: ChartAccessor<TDatum, string>;
    /** Color scheme @default "category10" */
    colorScheme?: string | string[];
    /** Geographic projection @default "equalEarth" */
    projection?: ProjectionProp;
    /** Show graticule grid lines */
    graticule?: boolean | import("../../stream/geoTypes").GraticuleConfig;
    /** Optional background geography */
    areas?: AreasProp;
    /** Style for background areas @default { fill: "#f0f0f0", stroke: "#ccc" } */
    areaStyle?: Style;
    /** Tooltip config */
    tooltip?: TooltipProp;
    /** Show legend */
    showLegend?: boolean;
    /** Legend interaction mode */
    legendInteraction?: LegendInteractionMode;
    /** Legend position */
    legendPosition?: LegendPosition;
    /** Padding fraction for auto-fit projection. 0.1 = 10% inset from edges. @default 0 */
    fitPadding?: number;
    /** Enable zoom/pan. Defaults to true when tileURL is set, false otherwise. */
    zoomable?: boolean;
    /** [minZoom, maxZoom] @default [1, 8] */
    zoomExtent?: [number, number];
    /** Zoom change callback */
    onZoom?: StreamGeoFrameProps["onZoom"];
    /**
     * When true, drag gestures rotate the projection (globe spinning)
     * instead of panning. Defaults to true for orthographic projection.
     */
    dragRotate?: boolean;
    /** Raster tile URL template or function. Enables tile basemap (Mercator only). */
    tileURL?: string | ((z: number, x: number, y: number, dpr: number) => string);
    /** Attribution text for tile provider */
    tileAttribution?: string;
    /** Max cached tiles @default 256 */
    tileCacheSize?: number;
    /** Annotations */
    annotations?: Datum[];
    /** Passthrough */
    frameProps?: Partial<Omit<StreamGeoFrameProps, "points" | "projection">>;
}
export declare const ProportionalSymbolMap: {
    <TDatum extends Datum = Datum>(props: ProportionalSymbolMapProps<TDatum> & React.RefAttributes<RealtimeFrameHandle>): React.ReactElement | null;
    displayName?: string;
};
