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 { LegendInteractionMode, LegendPosition } from "../shared/hooks";
import type { BaseChartProps, AxisConfig, ChartAccessor } from "../shared/types";
import { type TooltipProp } from "../../Tooltip/Tooltip";
/**
 * StackedAreaChart component props
 */
export interface StackedAreaChartProps<TDatum extends Datum = Datum> extends BaseChartProps, AxisConfig {
    /**
     * Array of data points, grouped by category.
     * @example
     * ```ts
     * [{x: 1, y: 10, category: 'A'}, {x: 2, y: 20, category: 'A'}, {x: 1, y: 15, category: 'B'}]
     * ```
     */
    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 to group data into multiple areas
     * @example
     * ```ts
     * areaBy="category"  // Group by category field
     * areaBy={d => d.group}  // Use function
     * ```
     */
    areaBy?: ChartAccessor<TDatum, string>;
    /**
     * Field name in area objects that contains coordinate arrays
     * Used when data is in area objects format
     * @default "coordinates"
     */
    lineDataAccessor?: string;
    /**
     * Field name or function to determine area color
     * @example
     * ```ts
     * colorBy="category"
     * colorBy={d => d.label}
     * ```
     */
    colorBy?: ChartAccessor<TDatum, string>;
    /**
     * Color scheme for categorical data or custom colors array
     * @default "category10"
     */
    colorScheme?: string | string[];
    /**
     * Curve interpolation type
     * @default "monotoneX"
     */
    curve?: "linear" | "monotoneX" | "monotoneY" | "step" | "stepAfter" | "stepBefore" | "basis" | "cardinal" | "catmullRom";
    /**
     * Area opacity
     * @default 0.7
     */
    areaOpacity?: number;
    /**
     * Show line on top of area
     * @default true
     */
    showLine?: boolean;
    /**
     * Line stroke width when showLine is true
     * @default 2
     */
    lineWidth?: number;
    /**
     * Show data points on the area lines.
     * Useful for sparse data or single-point series.
     * @default false
     */
    showPoints?: boolean;
    /**
     * Point radius when showPoints is true
     * @default 3
     */
    pointRadius?: number;
    /**
     * Normalize to 100% stacked (proportional)
     * @default false
     */
    normalize?: boolean;
    /**
     * Enable hover annotations
     * @default true
     */
    enableHover?: boolean;
    /**
     * Show grid lines
     * @default false
     */
    showGrid?: boolean;
    /**
     * Show legend for multiple areas
     * @default true (when multiple areas)
     */
    showLegend?: boolean;
    /**
     * Legend interaction mode.
     * - "highlight": hover dims non-hovered categories to 30% opacity
     * - "isolate": click toggles category visibility with checkmark indicators
     * - "none": static legend (default)
     */
    legendInteraction?: LegendInteractionMode;
    /**
     * Legend position
     */
    legendPosition?: LegendPosition;
    /**
     * Tooltip configuration
     */
    tooltip?: TooltipProp;
    /**
     * Annotation objects to render on the chart
     */
    annotations?: Datum[];
    /**
     * Additional StreamXYFrame props for advanced customization
     * For full control, consider using StreamXYFrame directly
     * @see https://semiotic.nteract.io/guides/xy-frame
     */
    frameProps?: Partial<Omit<StreamXYFrameProps, "chartType" | "data" | "size">>;
}
/**
 * StackedAreaChart - Visualize quantities stacked on top of each other over continuous intervals
 *
 * Each series is stacked so that the total height represents the sum of all series.
 * Use `normalize` for 100% stacked (proportional) areas.
 *
 * For overlapping (non-stacked) areas use {@link AreaChart}.
 *
 * @example
 * ```tsx
 * <StackedAreaChart
 *   data={[
 *     {x: 1, y: 10, category: 'A'},
 *     {x: 2, y: 20, category: 'A'},
 *     {x: 1, y: 15, category: 'B'},
 *     {x: 2, y: 25, category: 'B'}
 *   ]}
 *   areaBy="category"
 *   colorBy="category"
 *   xLabel="Time"
 *   yLabel="Value"
 * />
 * ```
 */
export declare const StackedAreaChart: {
    <TDatum extends Datum = Datum>(props: StackedAreaChartProps<TDatum> & React.RefAttributes<RealtimeFrameHandle>): React.ReactElement | null;
    displayName?: string;
};
