import { default as React } from 'react';
import { SortDirectionType } from '../../utils/SortUtils';
/**
 * A single entry in the BarList.
 *
 * @template T Custom payload merged into the row data.
 */
export type BarListRow<T> = T & {
    /**
     * Optional unique identifier. Falls back to `name` when not provided.
     */
    key?: string;
    /**
     * Optional URL. When provided, the label renders as a link.
     */
    href?: string;
    /**
     * Numeric value used for sorting and bar width calculations.
     */
    value: number;
    /**
     * Label shown for the bar.
     */
    name: string;
    /**
     * Text color override for this specific row.
     */
    color?: string;
    /**
     * Progress color override for this specific row.
     */
    barColor?: string;
    /**
     * Background color override for this specific row.
     */
    background?: string;
};
/**
 * Props for the BarList component.
 *
 * @template T - The type of the custom data associated with each bar row.
 */
type BarListProps<T = unknown> = React.HTMLAttributes<HTMLDivElement> & {
    /**
     * Array of bar row data to be rendered.
     */
    data: BarListRow<T>[];
    /**
     * Optional function to format the numeric value displayed on the right side of each bar.
     * Can return a string or a React element.
     *
     * @example
     * valueFormatter={(value) => `${value}%`}
     */
    valueFormatter?: (value: number) => string | React.ReactElement;
    /**
     * A reference value used to calculate relative widths.
     * If not provided, the maximum value in `data` will be used.
     *
     * @default max(data.value)
     */
    referenceValue?: number;
    /**
     * Whether to animate the bar width transitions using Framer Motion.
     *
     * @default false
     */
    showAnimation?: boolean;
    /**
     * Callback fired when a bar is clicked.
     *
     * @param payload - The full data object of the clicked bar.
     */
    onSelectRow?: (payload: BarListRow<T>) => void;
    /**
     * The sort order for the bars. Options are 'asc', 'desc', or 'none'.
     *
     * @default 'none'
     */
    sortOrder?: SortDirectionType | 'none';
    /**
     * Height of each bar row in pixels.
     *
     * @default 32
     */
    rowHeight?: number;
    /**
     * Opacity applied to non-hovered bars (between 0 and 1).
     *
     * @default 0.5
     */
    opacity?: number;
    /**
     * CSS color string used for the active/progress portion of each bar.
     *
     * @default 'bg-highlight-light'
     */
    barColor?: string;
    /**
     * CSS color string used for the text labels.
     *
     * @default 'text-color-darker'
     */
    labelColor?: string;
    /**
     * CSS color string used for the bar background.
     *
     * @default 'bg-transparent'
     */
    background?: string;
    /**
     * Additional className added to the wrapper element.
     */
    className?: string;
};
declare const BarListInner: {
    <T>(props: BarListProps<T>, forwardedRef: React.ForwardedRef<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
declare const BarList: <T>(props: BarListProps<T> & {
    ref?: React.ForwardedRef<HTMLDivElement>;
}) => ReturnType<typeof BarListInner>;
export default BarList;
