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?: Array<{
        source: string;
        target: string;
        coordinates?: Datum[];
    } & Record<string, unknown>>;
    /** 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">>;
}
/**
 * DistanceCartogram - Distort a map so distances reflect cost/time, not geography.
 *
 * Points are repositioned so their pixel distance from `center` is
 * proportional to `costAccessor` (commute time, fare, hops, etc.) rather
 * than great-circle distance. `strength` interpolates between the
 * geographic positions (0) and the fully-distorted cartogram (1).
 * Concentric rings show iso-cost contours by default.
 *
 * @example
 * ```tsx
 * // Cities by travel-time from NYC
 * <DistanceCartogram
 *   points={cities}
 *   xAccessor="lon"
 *   yAccessor="lat"
 *   nodeIdAccessor="iata"
 *   center="JFK"
 *   costAccessor="hours_from_jfk"
 *   costLabel="hrs"
 * />
 * ```
 *
 * @example
 * ```tsx
 * // Half-distorted view + colored points + custom ring intervals
 * <DistanceCartogram
 *   points={cities}
 *   center="JFK"
 *   costAccessor="hours_from_jfk"
 *   strength={0.5}
 *   colorBy="region"
 *   showRings={[1, 3, 6, 12]}
 * />
 * ```
 *
 * @example
 * ```tsx
 * // With route lines connecting source→target by cost
 * <DistanceCartogram
 *   points={airports}
 *   lines={routes}
 *   center="JFK"
 *   costAccessor="cost"
 *   lineMode="fractional"
 * />
 * ```
 */
export declare const DistanceCartogram: {
    <TDatum extends Datum = Datum>(props: DistanceCartogramProps<TDatum> & React.RefAttributes<RealtimeFrameHandle>): React.ReactElement | null;
    displayName?: string;
};
