import type { Datum } from "../shared/datumTypes";
import * as React from "react";
import type { StreamXYFrameProps } from "../../stream/types";
import type { RealtimeFrameHandle } from "../../realtime/types";
import type { BaseChartProps, AxisConfig, ChartAccessor } from "../shared/types";
import { type TooltipProp } from "../../Tooltip/Tooltip";
import type { LegendInteractionMode } from "../shared/hooks";
import { type RegressionProp } from "../shared/regressionUtils";
import type { ForecastConfig, AnomalyConfig } from "../shared/statisticalOverlays";
/**
 * ConnectedScatterplot component props
 */
export interface ConnectedScatterplotProps<TDatum extends Datum = Datum> extends BaseChartProps, AxisConfig {
    /** Array of data points. Each point needs x and y properties. Omit when using push API. */
    data?: TDatum[];
    /** Field name or function to access x values @default "x" */
    xAccessor?: ChartAccessor<TDatum, number>;
    /** Field name or function to access y values @default "y" */
    yAccessor?: ChartAccessor<TDatum, number>;
    /**
     * Field name or function that determines point ordering.
     * Data is sorted by this value (ascending) before connecting.
     * Supports numbers and Dates. Shown in tooltip. @default undefined (use data array order)
     */
    orderAccessor?: string | ((d: TDatum) => number | Date);
    /** Label for the ordering metric in tooltips @default "Order" or the accessor field name */
    orderLabel?: string;
    /** Point radius @default 4 */
    pointRadius?: number;
    /** Enable hover annotations @default true */
    enableHover?: boolean;
    /** Show grid lines @default false */
    showGrid?: boolean;
    /** Tooltip configuration */
    tooltip?: TooltipProp;
    /** Accessor for unique point IDs, used by point-anchored annotations */
    pointIdAccessor?: ChartAccessor<TDatum, string>;
    /** Legend interaction mode */
    legendInteraction?: LegendInteractionMode;
    /** Annotation objects to render on the chart */
    annotations?: Datum[];
    /**
     * Overlay a regression line under the connected path. Accepts
     * `true`, a method name (`"linear"` | `"polynomial"` | `"loess"`),
     * or a full `RegressionConfig`. Sugar over the `trend` annotation.
     */
    regression?: RegressionProp;
    /**
     * Forecast overlay — same shape as LineChart's `forecast` prop.
     * Adds tagged future points + envelope annotations to the
     * connected path.
     */
    forecast?: ForecastConfig;
    /** Anomaly overlay — adds a ±σ band + anomaly dot annotations. */
    anomaly?: AnomalyConfig;
    /** Fixed x domain `[min, max]` (either bound may be undefined to leave that side data-derived). */
    xExtent?: [number | undefined, number | undefined] | [number];
    /** Fixed y domain `[min, max]` (either bound may be undefined to leave that side data-derived). */
    yExtent?: [number | undefined, number | undefined] | [number];
    /** Additional StreamXYFrame props for advanced customization */
    frameProps?: Partial<Omit<StreamXYFrameProps, "chartType" | "data" | "size">>;
}
/**
 * ConnectedScatterplot — points connected in sequence by lines.
 *
 * Points are colored using viridis from start (purple) to end (yellow).
 * Lines match the color of their source point and have the same width
 * as the point radius, so the 2×radius circle remains distinctive.
 * When fewer than 100 points, a 50% transparent white halo is drawn
 * under each connecting line for legibility.
 *
 * @example
 * ```tsx
 * // Country trajectory over time
 * <ConnectedScatterplot
 *   data={trajectory}
 *   xAccessor="gdp"
 *   yAccessor="lifeExpectancy"
 *   pointRadius={4}
 * />
 * ```
 *
 * @example
 * ```tsx
 * // Explicit ordering field — sorts before connecting
 * <ConnectedScatterplot
 *   data={observations}
 *   xAccessor="x"
 *   yAccessor="y"
 *   orderAccessor="timestamp"
 *   orderLabel="Time"
 * />
 * ```
 *
 * @example
 * ```tsx
 * // Date-based ordering (Date or numeric values both work)
 * <ConnectedScatterplot
 *   data={dataByDate}
 *   xAccessor="metric"
 *   yAccessor="cost"
 *   orderAccessor={(d) => new Date(d.month)}
 * />
 * ```
 */
export declare const ConnectedScatterplot: {
    <TDatum extends Datum = Datum>(props: ConnectedScatterplotProps<TDatum> & React.RefAttributes<RealtimeFrameHandle>): React.ReactElement | null;
    displayName?: string;
};
