import type { Datum } from "../shared/datumTypes";
import * as React from "react";
import type { StreamGeoFrameProps, ProjectionProp } from "../../stream/geoTypes";
import type { BaseChartProps, ChartAccessor } from "../shared/types";
import { type TooltipProp } from "../../Tooltip/Tooltip";
import type { LegendPosition } from "../shared/hooks";
import type { RealtimeFrameHandle } from "../../realtime/types";
export interface DistanceCartogramProps<TDatum extends Datum = Datum> extends BaseChartProps {
    /** Point data with geographic coordinates */
    points?: TDatum[];
    /** Route/edge data with source/target fields */
    lines?: {
        source: string;
        target: string;
        coordinates?: any[];
        [key: string]: any;
    }[];
    /** Longitude accessor @default "lon" */
    xAccessor?: ChartAccessor<TDatum, number>;
    /** Latitude accessor @default "lat" */
    yAccessor?: ChartAccessor<TDatum, number>;
    /** Node ID accessor @default "id" */
    nodeIdAccessor?: string;
    /** ID of the center point */
    center: string;
    /** Cost/distance accessor — numeric field or function */
    costAccessor: string | ((d: Datum) => number);
    /** Interpolation between geographic (0) and cartogram (1) @default 1 */
    strength?: number;
    /** Line rendering mode @default "straight" */
    lineMode?: "straight" | "fractional";
    /** Base geographic projection @default "mercator" */
    projection?: ProjectionProp;
    /** Show graticule grid lines */
    graticule?: boolean | import("../../stream/geoTypes").GraticuleConfig;
    /** Transition duration in ms when center/strength changes */
    transition?: number;
    /** Field to determine point color */
    colorBy?: ChartAccessor<TDatum, string>;
    /** Color scheme @default "category10" */
    colorScheme?: string | string[];
    /** Point radius @default 5 */
    pointRadius?: number;
    /** Tooltip */
    tooltip?: TooltipProp;
    /** Show legend */
    showLegend?: boolean;
    /** 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;
    /** Show concentric distance rings around center. true for auto intervals, number for ring count, or number[] for explicit cost values. @default true */
    showRings?: boolean | number | number[];
    /** Ring style overrides */
    ringStyle?: {
        stroke?: string;
        strokeWidth?: number;
        strokeDasharray?: string;
        labelColor?: string;
        labelSize?: number;
    };
    /** Show north indicator arrow @default true */
    showNorth?: boolean;
    /** Label for cost units shown on rings (e.g. "hrs", "km") */
    costLabel?: string;
    /** Annotations */
    annotations?: Datum[];
    /** Passthrough */
    frameProps?: Partial<Omit<StreamGeoFrameProps, "projection">>;
}
export declare const DistanceCartogram: {
    <TDatum extends Datum = Datum>(props: DistanceCartogramProps<TDatum> & React.RefAttributes<RealtimeFrameHandle>): React.ReactElement | null;
    displayName?: string;
};
