import { type ComponentPropsWithoutRef, type ReactNode } from "react";
export type BarChartOrientation = "vertical" | "horizontal";
export type BarChartMode = "single" | "grouped" | "stacked";
export type BarChartAxis = "y" | "x" | "both" | "none";
export interface BarDatum {
    label: ReactNode;
    value: number;
    highlighted?: boolean;
    /** Optional per-bar color override (single-series mode only). */
    color?: string;
}
export interface BarSeries {
    /** Series id used for keying. */
    id: string;
    /** Series legend label. */
    name: ReactNode;
    /** Series color. */
    color: string;
    /** One value per x-axis tick. Length should match the chart's `data`. */
    values: number[];
}
export interface BarChartProps extends Omit<ComponentPropsWithoutRef<"div">, "title" | "onChange"> {
    /**
     * Single-series data. The simplest API — each datum is a (label, value)
     * pair rendered as one bar.
     */
    data?: BarDatum[];
    /**
     * Multi-series data. Pass an array of series; each series produces one
     * bar per x-axis category. Pair with `categories` to label the x-axis,
     * and pick `mode="grouped"` or `mode="stacked"` to control layout.
     */
    series?: BarSeries[];
    /** Category labels for multi-series mode. Length should match each series' `values`. */
    categories?: ReactNode[];
    /** Layout for multi-series. Default `"grouped"`. Ignored when only `data` is provided. */
    mode?: BarChartMode;
    /** Bar orientation. Default `"vertical"`. */
    orientation?: BarChartOrientation;
    /** Chart drawing area in px. Default 160. */
    height?: number;
    /** Default bar color for single-series mode. */
    color?: string;
    /** Highlight color for `highlighted` datums in single-series mode. */
    highlightColor?: string;
    title?: ReactNode;
    /** Big number rendered on the right side of the header. */
    total?: ReactNode;
    /**
     * Fixed value-axis cap. When omitted, auto-derived from data (stacked
     * mode sums the stack; grouped/single uses the max value).
     */
    yMax?: number;
    /** Which axes to render. Default `"y"`. */
    showAxis?: BarChartAxis;
    /** Number of value-axis ticks. Default 5 (including 0). */
    yTicks?: number;
    /** Format raw value → display string (used on axis labels + tooltip). */
    formatValue?: (value: number) => string;
    /** Render the floating hover tooltip with the bar's label + value. Default true. */
    showTooltip?: boolean;
    /** Show the legend (multi-series mode only). Default true. */
    showLegend?: boolean;
    /** Suppress the mount stagger-grow animation. */
    disableAnimation?: boolean;
    /** Accessible label. Auto-generated from `title` + data summary when omitted. */
    "aria-label"?: string;
    /** Fires when the user hovers/focuses or leaves a bar. */
    onBarHover?: (bar: BarDatum | null, index: number | null) => void;
    /** Fires when the user clicks or activates (Enter/Space) a bar. */
    onBarClick?: (bar: BarDatum, index: number) => void;
}
export declare const BarChart: import("react").ForwardRefExoticComponent<BarChartProps & import("react").RefAttributes<HTMLDivElement>>;
//# sourceMappingURL=BarChart.d.ts.map