import type { Datum } from "../charts/shared/datumTypes";
import * as React from "react";
import type { OrdinalScales } from "./ordinalTypes";
import type { AnnotationContext } from "../realtime/types";
import type { ReactNode } from "react";
import type { LegendGroup, GradientLegendConfig, LegendLayout } from "../types/legendTypes";
import { type AutoPlaceAnnotations } from "../recipes/annotationLayout";
import { type AxisExtentMode } from "../charts/shared/axisExtent";
interface OrdinalSVGOverlayProps {
    width: number;
    height: number;
    totalWidth: number;
    totalHeight: number;
    margin: {
        top: number;
        right: number;
        bottom: number;
        left: number;
    };
    scales: OrdinalScales | null;
    showAxes?: boolean;
    showCategoryTicks?: boolean;
    oLabel?: string;
    rLabel?: string;
    oFormat?: (d: string, index?: number) => string | React.ReactNode;
    rFormat?: (d: number) => string;
    /** Custom tick values for the value (r) axis */
    rTickValues?: number[];
    /** Align first tick label to start, last to end */
    tickLabelEdgeAlign?: boolean;
    /** Axis extent mode. "nice" (default) uses d3-scale's rounded
     *  tick generator. "exact" pins the first and last value-axis
     *  tick to the actual data min and max with equidistant
     *  intermediate ticks. Ignored for the categorical (o) axis;
     *  applies to the value (r) axis only. */
    axisExtent?: AxisExtentMode;
    showGrid?: boolean;
    title?: string | ReactNode;
    legend?: ReactNode | {
        legendGroups: LegendGroup[];
    } | {
        gradient: GradientLegendConfig;
    };
    legendHoverBehavior?: (item: {
        label: string;
    } | null) => void;
    legendClickBehavior?: (item: {
        label: string;
    }) => void;
    legendHighlightedCategory?: string | null;
    legendIsolatedCategories?: Set<string>;
    legendPosition?: "right" | "left" | "top" | "bottom";
    legendLayout?: LegendLayout;
    foregroundGraphics?: ReactNode;
    annotations?: Datum[];
    autoPlaceAnnotations?: AutoPlaceAnnotations;
    svgAnnotationRules?: (annotation: Datum, index: number, context: AnnotationContext) => ReactNode;
    annotationFrame?: number;
    xAccessor?: string;
    yAccessor?: string;
    annotationData?: Datum[];
    /** When true, grid lines and axis baselines are skipped (rendered by OrdinalSVGUnderlay instead) */
    underlayRendered?: boolean;
    children?: ReactNode;
}
interface OrdinalSVGUnderlayProps {
    width: number;
    height: number;
    totalWidth: number;
    totalHeight: number;
    margin: {
        top: number;
        right: number;
        bottom: number;
        left: number;
    };
    scales: OrdinalScales | null;
    showAxes?: boolean;
    showGrid?: boolean;
    rFormat?: (d: number) => string;
    rTickValues?: number[];
    axisExtent?: AxisExtentMode;
}
export declare function OrdinalSVGUnderlay(props: OrdinalSVGUnderlayProps): React.JSX.Element | null;
export declare function OrdinalSVGOverlay(props: OrdinalSVGOverlayProps): React.JSX.Element | null;
export {};
