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, LegendPosition } from "../shared/hooks";
/**
 * Quadrant label and color configuration
 */
export interface QuadrantConfig {
    /** Label text for the quadrant */
    label: string;
    /** Background fill color for the quadrant */
    color: string;
    /** Fill opacity (default: 0.08) */
    opacity?: number;
}
/**
 * Configuration for the four quadrants.
 * Quadrants are defined relative to the center lines:
 * - topRight: high X, high Y
 * - topLeft: low X, high Y
 * - bottomRight: high X, low Y
 * - bottomLeft: low X, low Y
 */
export interface QuadrantsConfig {
    topRight: QuadrantConfig;
    topLeft: QuadrantConfig;
    bottomRight: QuadrantConfig;
    bottomLeft: QuadrantConfig;
}
export type QuadrantsConfigOverride = {
    [TQuadrant in keyof QuadrantsConfig]?: Partial<QuadrantsConfig[TQuadrant]>;
};
/**
 * Centerline style configuration
 */
export interface CenterlineStyle {
    /** Line color @default "#999" */
    stroke?: string;
    /** Line width @default 1 */
    strokeWidth?: number;
    /** Dash pattern (e.g. [4, 3]) @default [] (solid) */
    strokeDasharray?: number[];
}
/**
 * QuadrantChart component props
 */
export interface QuadrantChartProps<TDatum extends Datum = Datum> extends BaseChartProps, AxisConfig {
    /** Array of data points */
    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>;
    /** X-coordinate of the vertical center line. Defaults to midpoint of x domain. */
    xCenter?: number;
    /** Y-coordinate of the horizontal center line. Defaults to midpoint of y domain. */
    yCenter?: number;
    /** Optional quadrant overrides. Omitted quadrants and quadrant fields fall back to built-in defaults. */
    quadrants?: QuadrantsConfigOverride;
    /** Style for the center lines */
    centerlineStyle?: CenterlineStyle;
    /** Show quadrant labels @default true */
    showQuadrantLabels?: boolean;
    /** Font size for quadrant labels @default 12 */
    quadrantLabelSize?: number;
    /** Field name or function to determine point color */
    colorBy?: ChartAccessor<TDatum, string>;
    /** Color scheme for categorical data @default "category10" */
    colorScheme?: string | string[];
    /** Field name or function to determine point size */
    sizeBy?: ChartAccessor<TDatum, number>;
    /** Min and max radius for points @default [3, 15] */
    sizeRange?: [number, number];
    /** Default point radius @default 5 */
    pointRadius?: number;
    /** Point opacity @default 0.8 */
    pointOpacity?: number;
    /** Enable hover annotations @default true */
    enableHover?: boolean;
    /** Show grid lines @default false */
    showGrid?: boolean;
    /** Show legend @default true (when colorBy is specified) */
    showLegend?: boolean;
    /** Tooltip configuration */
    tooltip?: TooltipProp;
    /** Accessor for unique point IDs */
    pointIdAccessor?: ChartAccessor<TDatum, string>;
    /** Legend interaction mode */
    legendInteraction?: LegendInteractionMode;
    /** Legend position */
    legendPosition?: LegendPosition;
    /** Annotation objects */
    annotations?: Datum[];
    /** Additional StreamXYFrame props */
    frameProps?: Partial<Omit<StreamXYFrameProps, "chartType" | "data" | "size">>;
}
/**
 * QuadrantChart — A scatterplot divided into four labeled, colored quadrants
 * by center lines at user-specified x/y positions.
 *
 * Each quadrant gets a background color and label. Points are rendered as a
 * standard scatter plot on top. Supports push API for streaming data.
 *
 * @example
 * ```tsx
 * <QuadrantChart
 *   data={[{x: 1, y: 10}, {x: 5, y: 3}]}
 *   xCenter={3} yCenter={5}
 *   quadrants={{
 *     topRight: { label: "Stars", color: "#4CAF50" },
 *     topLeft: { label: "Question Marks", color: "#FF9800" },
 *     bottomRight: { label: "Cash Cows", color: "#2196F3" },
 *     bottomLeft: { label: "Dogs", color: "#F44336" },
 *   }}
 * />
 * ```
 *
 * @example
 * ```tsx
 * // Effort vs. impact prioritization with a fixed 5×5 split.
 * // Omit `xCenter`/`yCenter` to let the chart center on the domain midpoint.
 * <QuadrantChart
 *   data={features}
 *   xAccessor="impact"
 *   yAccessor="effort"
 *   xCenter={5}
 *   yCenter={5}
 *   quadrants={{
 *     topRight:    { label: "Quick wins",  color: "#22c55e" },
 *     topLeft:     { label: "Maybe later", color: "#94a3b8" },
 *     bottomRight: { label: "Big bets",    color: "#3b82f6" },
 *     bottomLeft:  { label: "Skip",        color: "#ef4444" },
 *   }}
 *   colorBy="team"
 *   sizeBy="estimate"
 * />
 * ```
 */
export declare const QuadrantChart: {
    <TDatum extends Datum = Datum>(props: QuadrantChartProps<TDatum> & React.RefAttributes<RealtimeFrameHandle>): React.ReactElement | null;
    displayName?: string;
};
