import type { Datum } from "../charts/shared/datumTypes";
import type { StreamScales, MarginalGraphicsConfig } from "./types";
import type { AnnotationContext } from "../realtime/types";
import type { ReactNode } from "react";
import type { LegendGroup, GradientLegendConfig } from "../types/legendTypes";
export interface AxisConfig {
    orient: "left" | "right" | "top" | "bottom";
    label?: string;
    ticks?: number;
    tickFormat?: (d: any, index?: number, allTicks?: number[]) => string | ReactNode;
    baseline?: boolean | "under";
    jaggedBase?: boolean;
    /** Grid line stroke style: "dashed" (6,4), "dotted" (2,4), or a custom strokeDasharray string. Applied to grid lines extending from ticks across the chart area. */
    gridStyle?: "dashed" | "dotted" | string;
    /** Always include the domain max as a tick, even if d3 omits it. */
    includeMax?: boolean;
    /** Auto-rotate labels 45° when horizontal spacing is too tight. */
    autoRotate?: boolean;
    /** Highlight ticks at time boundaries (new month, year, etc.) with semibold text.
     * `true` auto-detects Date boundaries. A function receives (value, index) and returns true for landmark ticks. */
    landmarkTicks?: boolean | ((value: any, index: number) => boolean);
}
interface SVGOverlayProps {
    width: number;
    height: number;
    totalWidth: number;
    totalHeight: number;
    margin: {
        top: number;
        right: number;
        bottom: number;
        left: number;
    };
    scales: StreamScales | null;
    showAxes?: boolean;
    axes?: AxisConfig[];
    xLabel?: string;
    yLabel?: string;
    /** Label for the right Y axis (dual-axis charts) */
    yLabelRight?: string;
    xFormat?: (d: number | Date | string, index?: number, allTicks?: number[]) => string | ReactNode;
    yFormat?: (d: number | Date | string) => string | ReactNode;
    showGrid?: boolean;
    title?: string | ReactNode;
    legend?: ReactNode | {
        legendGroups: LegendGroup[];
    } | {
        gradient: GradientLegendConfig;
    };
    /** Callback when hovering a legend item */
    legendHoverBehavior?: (item: {
        label: string;
    } | null) => void;
    /** Callback when clicking a legend item */
    legendClickBehavior?: (item: {
        label: string;
    }) => void;
    /** Currently highlighted category label (for hover dimming) */
    legendHighlightedCategory?: string | null;
    /** Set of isolated category labels (for click isolation) */
    legendIsolatedCategories?: Set<string>;
    /** Legend position relative to chart area */
    legendPosition?: "right" | "left" | "top" | "bottom";
    foregroundGraphics?: ReactNode;
    marginalGraphics?: MarginalGraphicsConfig;
    xValues?: number[];
    yValues?: number[];
    annotations?: Datum[];
    svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
    annotationFrame?: number;
    xAccessor?: string;
    yAccessor?: string;
    annotationData?: Datum[];
    pointNodes?: {
        pointId?: string;
        x: number;
        y: number;
        r: number;
    }[];
    /** Curve interpolation type for envelope annotations */
    curve?: string;
    /** When true, grid lines and axis baselines are skipped (rendered by SVGUnderlay instead) */
    underlayRendered?: boolean;
    /** Name of the linked crosshair store entry to read */
    linkedCrosshairName?: string;
    /** Source chart ID — crosshair line is suppressed on the source to avoid double rendering */
    linkedCrosshairSourceId?: string;
    children?: ReactNode;
}
interface SVGUnderlayProps {
    width: number;
    height: number;
    totalWidth: number;
    totalHeight: number;
    margin: {
        top: number;
        right: number;
        bottom: number;
        left: number;
    };
    scales: StreamScales | null;
    showAxes?: boolean;
    axes?: AxisConfig[];
    showGrid?: boolean;
    xFormat?: (d: number | Date | string, index?: number, allTicks?: number[]) => string | ReactNode;
    yFormat?: (d: number | Date | string) => string | ReactNode;
}
export declare function SVGUnderlay(props: SVGUnderlayProps): import("react/jsx-runtime").JSX.Element | null;
export declare function SVGOverlay(props: SVGOverlayProps): import("react/jsx-runtime").JSX.Element | null;
export {};
