import type { Datum } from "../shared/datumTypes";
import * as React from "react";
import type { StreamOrdinalFrameProps } from "../../stream/ordinalTypes";
import type { LegendInteractionMode } from "../shared/hooks";
import type { BaseChartProps, ChartAccessor, CategoryFormatFn } from "../shared/types";
import { type TooltipProp } from "../../Tooltip/Tooltip";
import type { RealtimeFrameHandle } from "../../realtime/types";
/**
 * BarChart component props
 */
export interface BarChartProps<TDatum extends Datum = Datum> extends BaseChartProps {
    data?: TDatum[];
    categoryAccessor?: ChartAccessor<TDatum, string>;
    valueAccessor?: ChartAccessor<TDatum, number>;
    orientation?: "vertical" | "horizontal";
    categoryLabel?: string;
    valueLabel?: string;
    valueFormat?: (d: number | string) => string;
    colorBy?: ChartAccessor<TDatum, string>;
    colorScheme?: string | string[];
    /** Category ordering. `false` (default) = insertion order. `"asc"` /
     *  `"desc"` sorts by total value. `"auto"` preserves insertion order
     *  while streaming and falls through to value-desc on static data.
     *  `true` = value-desc regardless of source. Custom comparator functions
     *  receive category name strings (not row objects) and run against
     *  the category list on the axis. */
    sort?: boolean | "asc" | "desc" | "auto" | ((a: string, b: string) => number);
    barPadding?: number;
    /** Rounded top corner radius in pixels. Only the end away from the baseline is rounded. */
    roundedTop?: number;
    /**
     * Gradient fill from the bar's tip (opposite the baseline) toward its base.
     * - `true` — default opacity fade (80% → 5% of the resolved fill color).
     * - `{ topOpacity, bottomOpacity }` — explicit opacity stops on the resolved fill.
     * - `{ colorStops: [{offset, color}, ...] }` — arbitrary multi-color gradient.
     *
     * Direction follows the bar's orientation (vertical/horizontal) and sign
     * (positive/negative bars). Same API as `AreaChart.gradientFill`.
     * @default false
     */
    gradientFill?: boolean | {
        topOpacity: number;
        bottomOpacity: number;
    } | {
        colorStops: Array<{
            offset: number;
            color: string;
        }>;
    };
    /** When true, adds padding below the 0 baseline. Default false (bars flush with axis). */
    baselinePadding?: boolean;
    enableHover?: boolean;
    showGrid?: boolean;
    showCategoryTicks?: boolean;
    showLegend?: boolean;
    legendInteraction?: LegendInteractionMode;
    legendPosition?: "right" | "left" | "top" | "bottom";
    tooltip?: TooltipProp;
    annotations?: Datum[];
    /** Custom formatter for category tick labels */
    categoryFormat?: CategoryFormatFn;
    frameProps?: Partial<Omit<StreamOrdinalFrameProps, "data" | "size">>;
}
/**
 * BarChart - Visualize categorical data with bars.
 */
export declare const BarChart: {
    <TDatum extends Datum = Datum>(props: BarChartProps<TDatum> & React.RefAttributes<RealtimeFrameHandle>): React.ReactElement | null;
    displayName?: string;
};
