import * as React from "react";
import { IChartProps } from "./Chart";
import { ILegendProps } from "./legend/Legend";
import { OnLegendReady } from "../../../interfaces/Events";
import { IChartConfig } from "../../../interfaces/Config";
import { ILegendOptions } from "../typings/legend";
import Highcharts from "./highcharts/highchartsEntryPoint";
export interface IChartHTMLElement extends HTMLElement {
    getChart(): Highcharts.Chart;
    getHighchartRef(): HTMLElement;
}
export interface IHighChartsRendererProps {
    chartOptions: any;
    hcOptions: any;
    documentObj?: Document;
    height: number;
    width: number;
    legend: ILegendOptions;
    locale: string;
    onLegendReady: OnLegendReady;
    legendRenderer(legendProps: ILegendProps): any;
    chartRenderer(chartProps: IChartProps): any;
    afterRender(): void;
}
export interface IHighChartsRendererState {
    legendItemsEnabled: boolean[];
    showFluidLegend: boolean;
}
export declare function renderChart(props: IChartProps): JSX.Element;
export declare function renderLegend(props: ILegendProps): JSX.Element;
export default class HighChartsRenderer extends React.PureComponent<IHighChartsRendererProps, IHighChartsRendererState> {
    static defaultProps: {
        afterRender: (...args: any[]) => void;
        height: number;
        legend: {
            enabled: boolean;
            responsive: boolean;
            position: string;
        };
        chartRenderer: typeof renderChart;
        legendRenderer: typeof renderLegend;
        onLegendReady: (...args: any[]) => void;
        documentObj: Document;
    };
    private highchartsRendererRef;
    private chartRef;
    private throttledOnWindowResize;
    constructor(props: IHighChartsRendererProps);
    onWindowResize(): void;
    componentWillMount(): void;
    componentDidMount(): void;
    componentWillUnmount(): void;
    componentWillReceiveProps(nextProps: IHighChartsRendererProps): void;
    onLegendItemClick(item: any): void;
    setChartRef(chartRef: IChartHTMLElement): void;
    getFlexDirection(): "column" | "row";
    getItems(items: any): any;
    resetLegendState(props: any): void;
    createChartConfig(chartConfig: IChartConfig, legendItemsEnabled: any): IChartConfig;
    renderLegend(): any;
    renderHighcharts(): any;
    render(): JSX.Element;
    private validateOverHeight;
    private realignPieOrDonutChart;
    private isBottomLegend;
}
