import { BarProps, LabelListProps, BarChart as ReChartsBarChart } from 'recharts';
import { BoxProps, ElementProps, Factory, MantineColor, StylesApiProps } from '@mantine/core';
import { ChartLegendStylesNames } from '../ChartLegend';
import { ChartTooltipStylesNames } from '../ChartTooltip';
import type { BaseChartStylesNames, ChartSeries, GridChartBaseProps } from '../types';
export interface BarChartSeries extends ChartSeries {
    stackId?: string;
}
export type BarChartType = 'default' | 'stacked' | 'percent' | 'waterfall';
export type BarChartStylesNames = 'bar' | BaseChartStylesNames | ChartLegendStylesNames | ChartTooltipStylesNames;
export type BarChartCssVariables = {
    root: '--chart-text-color' | '--chart-grid-color' | '--chart-cursor-fill' | '--chart-bar-label-color';
};
export interface BarChartProps extends BoxProps, GridChartBaseProps, StylesApiProps<BarChartFactory>, ElementProps<'div'> {
    /** Data used to display chart. */
    data: Record<string, any>[];
    /** An array of objects with `name` and `color` keys. Determines which data should be consumed from the `data` array. */
    series: BarChartSeries[];
    /** Controls how bars are positioned relative to each other @default `'default'` */
    type?: BarChartType;
    /** Controls fill opacity of all bars @default `1` */
    fillOpacity?: number;
    /** Fill of hovered bar section, by default value is based on color scheme */
    cursorFill?: MantineColor;
    /** Props passed down to recharts `BarChart` component */
    barChartProps?: React.ComponentPropsWithoutRef<typeof ReChartsBarChart>;
    /** Additional components that are rendered inside recharts `BarChart` component */
    children?: React.ReactNode;
    /** Props passed down to recharts `Bar` component */
    barProps?: ((series: BarChartSeries) => Partial<Omit<BarProps, 'ref'>>) | Partial<Omit<BarProps, 'ref'>>;
    /** Determines whether a label with bar value should be displayed on top of each bar, incompatible with `type="stacked"` and `type="percent"` @default `false` */
    withBarValueLabel?: boolean;
    /** Props passed down to recharts `LabelList` component */
    valueLabelProps?: ((series: BarChartSeries) => Partial<Omit<LabelListProps<Record<string, any>>, 'ref'>>) | Partial<LabelListProps<Record<string, any>>>;
    /** Sets minimum height of the bar in px @default `0` */
    minBarSize?: number;
    /** Maximum bar width in px */
    maxBarWidth?: number;
    /** Controls color of the bar label, by default the value is determined by the chart orientation */
    barLabelColor?: MantineColor;
    /** A function to assign dynamic bar color based on its value */
    getBarColor?: (value: number, series: BarChartSeries) => MantineColor;
}
export type BarChartFactory = Factory<{
    props: BarChartProps;
    ref: HTMLDivElement;
    stylesNames: BarChartStylesNames;
    vars: BarChartCssVariables;
}>;
export declare const BarChart: import("@mantine/core").MantineComponent<{
    props: BarChartProps;
    ref: HTMLDivElement;
    stylesNames: BarChartStylesNames;
    vars: BarChartCssVariables;
}>;
