import type { Datum } from "../shared/datumTypes";
import * as React from "react";
import type { StreamXYFrameProps } from "../../stream/types";
import type { LegendPosition } from "../shared/hooks";
import type { BaseChartProps, AxisConfig, ChartAccessor } from "../shared/types";
import { type TooltipProp } from "../../Tooltip/Tooltip";
export interface MinimapConfig {
    /** Height of the minimap overview (default: 60) */
    height?: number;
    /** Margin for the minimap chart */
    margin?: {
        top?: number;
        right?: number;
        bottom?: number;
        left?: number;
    };
    /** Line style override for the minimap */
    lineStyle?: (d: Datum) => Datum;
    /** Show axes in minimap (default: false) */
    showAxes?: boolean;
    /** Background color for minimap */
    background?: string;
    /** Brush direction: "x" (default) or "y" */
    brushDirection?: "x" | "y";
}
export interface MinimapChartProps<TDatum extends Datum = Datum> extends Omit<BaseChartProps, "onClick" | "onObservation" | "selection" | "linkedHover">, AxisConfig {
    /** Array of data points or line objects with coordinates */
    data: TDatum[];
    /** X accessor (default: "x") */
    xAccessor?: ChartAccessor<TDatum, number>;
    /** Y accessor (default: "y") */
    yAccessor?: ChartAccessor<TDatum, number>;
    /** Group data into multiple lines */
    lineBy?: ChartAccessor<TDatum, string>;
    /** Field containing coordinate arrays in line objects (default: "coordinates") */
    lineDataAccessor?: string;
    /** Color-by field or function */
    colorBy?: ChartAccessor<TDatum, string>;
    /** Color scheme (default: "category10") */
    colorScheme?: string | string[];
    /** Curve type (default: "linear") */
    curve?: "linear" | "monotoneX" | "monotoneY" | "step" | "stepAfter" | "stepBefore" | "basis" | "cardinal" | "catmullRom";
    /** Line stroke width (default: 2) */
    lineWidth?: number;
    /** Fill area under lines */
    fillArea?: boolean;
    /** Area opacity when fillArea is true (default: 0.3) */
    areaOpacity?: number;
    /** Show points on lines */
    showPoints?: boolean;
    /** Point radius (default: 3) */
    pointRadius?: number;
    /** Enable hover (default: true) */
    enableHover?: boolean;
    /** Show grid (default: false) */
    showGrid?: boolean;
    /** Show legend */
    showLegend?: boolean;
    /** Legend position */
    legendPosition?: LegendPosition;
    /** Tooltip config */
    tooltip?: TooltipProp;
    /** Minimap configuration */
    minimap?: MinimapConfig;
    /** Show minimap above the main chart (default: false — below) */
    renderBefore?: boolean;
    /** Callback when brush extent changes */
    onBrush?: (extent: [number, number] | null) => void;
    /** Controlled brush extent */
    brushExtent?: [number, number];
    /**
     * Fixed y domain `[min, max]` (either bound may be undefined to leave
     * that side data-derived). xExtent is reserved for brush selection on
     * MinimapChart — pass `frameProps.xExtent` if you need to override the
     * brushed x range from advanced consumers.
     */
    yExtent?: [number | undefined, number | undefined] | [number];
    /** Additional StreamXYFrame props */
    frameProps?: Partial<Omit<StreamXYFrameProps, "chartType" | "data" | "size">>;
}
/**
 * MinimapChart - Line chart paired with a brushable overview minimap.
 *
 * Renders the same line data twice: a compressed overview (the minimap)
 * and a zoomed detail view of the brushed range. Drag in the minimap to
 * update the detail's domain. The minimap configuration (height, axes,
 * brush direction) is nested under the `minimap` prop; brush state is
 * exposed via `onBrush` (callback) and `brushExtent` (controlled value).
 *
 * Useful for long time series where the user needs both context and
 * detail without losing their place in the full range.
 *
 * @example
 * ```tsx
 * // Time series with default minimap below the detail view
 * <MinimapChart
 *   data={timeSeries}
 *   xAccessor="date"
 *   yAccessor="value"
 *   xScaleType="time"
 *   minimap={{ height: 80, brushDirection: "x" }}
 * />
 * ```
 *
 * @example
 * ```tsx
 * // Multi-series with a starting brush selection and an onBrush callback
 * <MinimapChart
 *   data={timeSeries}
 *   xAccessor="t"
 *   yAccessor="v"
 *   lineBy="series"
 *   colorBy="series"
 *   minimap={{ height: 60, showAxes: true }}
 *   brushExtent={[100, 500]}
 *   onBrush={(extent) => console.log("brushed:", extent)}
 * />
 * ```
 *
 * @example
 * ```tsx
 * // Render the minimap above the detail rather than below
 * <MinimapChart
 *   data={timeSeries}
 *   xAccessor="date"
 *   yAccessor="value"
 *   renderBefore
 *   minimap={{ height: 50, background: "#f8fafc" }}
 * />
 * ```
 */
export declare function MinimapChart<TDatum extends Datum = Datum>(props: MinimapChartProps<TDatum>): React.JSX.Element;
export declare namespace MinimapChart {
    var displayName: string;
}
