import type { Datum } from "../shared/datumTypes";
import type { StreamGeoFrameProps, ProjectionProp } from "../../stream/geoTypes";
import type { BaseChartProps, ChartAccessor } from "../shared/types";
import { type TooltipProp } from "../../Tooltip/Tooltip";
import type { Style } from "../../stream/types";
import type { GeoParticleStyle } from "../../stream/GeoParticlePool";
import { type AreasProp } from "../../geo/useReferenceAreas";
export interface FlowMapProps<TDatum extends Datum = Datum> extends BaseChartProps {
    /** Flow edges with source/target/value */
    flows?: {
        source: string;
        target: string;
        value?: number;
        [key: string]: any;
    }[];
    /** Geographic nodes with coordinates */
    nodes?: TDatum[];
    /** Node ID accessor @default "id" */
    nodeIdAccessor?: string;
    /** Longitude accessor @default "lon" */
    xAccessor?: ChartAccessor<TDatum, number>;
    /** Latitude accessor @default "lat" */
    yAccessor?: ChartAccessor<TDatum, number>;
    /** Value accessor for edge width @default "value" */
    valueAccessor?: string;
    /** Projection @default "equalEarth" */
    projection?: ProjectionProp;
    /** Show graticule grid lines */
    graticule?: boolean | import("../../stream/geoTypes").GraticuleConfig;
    /** Line type: "geo" for great circles, "line" for straight @default "geo" */
    lineType?: "geo" | "line";
    /** Flow rendering style: "basic" (straight/great-circle), "offset" (bidirectional offset), "arc" (curved arcs) @default "basic" */
    flowStyle?: "basic" | "offset" | "arc";
    /** Optional background areas */
    areas?: AreasProp;
    /** Background area style */
    areaStyle?: Style;
    /** Edge color accessor */
    edgeColorBy?: ChartAccessor<any, string>;
    /** Edge opacity @default 0.6 */
    edgeOpacity?: number;
    /** Min/max pixel width for proportional edge width @default [1, 8] */
    edgeWidthRange?: [number, number];
    /** Line cap style for flow edges @default "round" */
    edgeLinecap?: "butt" | "round" | "square";
    /** Color scheme for edges @default "category10" */
    colorScheme?: string | string[];
    /** Show animated particles along flow lines */
    showParticles?: boolean;
    /** Particle appearance and behavior */
    particleStyle?: GeoParticleStyle;
    /** Tooltip */
    tooltip?: TooltipProp;
    /** Show legend */
    showLegend?: boolean;
    /** 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, "projection">>;
}
export declare function FlowMap<TDatum extends Datum = Datum>(props: FlowMapProps<TDatum>): import("react/jsx-runtime").JSX.Element;
export declare namespace FlowMap {
    var displayName: string;
}
