import React, { Component, ReactElement } from 'react';
import { LinearAxisProps, LinearAxis } from '../common/Axis';
import { BarSeries, BarSeriesProps } from './BarSeries';
import { ChartDataShape } from '../common/data';
import { GridlineSeries, GridlineSeriesProps } from '../common/Gridline';
import { ChartBrushProps, ChartBrush } from '../common/Brush';
import { ChartContainerChildProps, ChartProps } from '../common/containers/ChartContainer';
export interface BarChartProps extends ChartProps {
    /**
     * Data the chart will receive to render.
     */
    data: ChartDataShape[];
    /**
     * The series component that renders the bar components.
     */
    series: ReactElement<BarSeriesProps, typeof BarSeries>;
    /**
     * The linear axis component for the Y Axis of the chart.
     */
    yAxis: ReactElement<LinearAxisProps, typeof LinearAxis>;
    /**
     * The linear axis component for the X Axis of the chart.
     */
    xAxis: ReactElement<LinearAxisProps, typeof LinearAxis>;
    /**
     * The chart's background gridlines component.
     */
    gridlines: ReactElement<GridlineSeriesProps, typeof GridlineSeries> | null;
    /**
     * The chart's brush component.
     */
    brush: ReactElement<ChartBrushProps, typeof ChartBrush> | null;
    /**
     * Any secondary axis components. Useful for multi-axis charts.
     */
    secondaryAxis?: ReactElement<LinearAxisProps, typeof LinearAxis>[];
}
export declare class BarChart extends Component<BarChartProps> {
    static defaultProps: Partial<BarChartProps>;
    getScalesAndData(chartHeight: number, chartWidth: number): {
        xScale: any;
        xScale1: any;
        yScale: any;
        data: any;
    };
    getKeyAxis(): React.ReactElement<LinearAxisProps, typeof LinearAxis>;
    getIsDiverging(): boolean;
    getIsVertical(): boolean;
    getBinnedData(data: any, xScale: any, yScale: any): any;
    getMarimekkoGroupScales(data: any, axis: any, width: number): {
        keyScale: import("d3-scale").ScaleLinear<number, number>;
        groupScale: any;
    };
    getMultiGroupScales(data: any, height: number, width: number): {
        groupScale: import("d3-scale").ScaleBand<string>;
        keyScale: import("d3-scale").ScaleBand<string>;
    };
    getKeyScale(data: any, axis: any, isMultiSeries: boolean, width: number): any;
    getValueScale(data: any, axis: any, isMultiSeries: boolean, height: number): any;
    renderChart(containerProps: ChartContainerChildProps): JSX.Element;
    render(): JSX.Element;
}
