import * as React from 'react';
import { IGaugeChartProps, IGaugeChartSegment, GaugeValueFormat, GaugeChartVariant } from './GaugeChart.types';
import { IYValueHover } from '../../index';
import { IChart, IImageExportOptions } from '../../types/index';
export declare const ARC_PADDING = 2;
export declare const BREAKPOINTS: {
    minRadius: number;
    arcWidth: number;
    fontSize: number;
}[];
export declare const calcNeedleRotation: (chartValue: number, minValue: number, maxValue: number) => number;
export declare const getSegmentLabel: (segment: IExtendedSegment, minValue: number, maxValue: number, variant?: GaugeChartVariant, isAriaLabel?: boolean) => string;
export declare const getChartValueLabel: (chartValue: number, minValue: number, maxValue: number, chartValueFormat?: GaugeValueFormat | ((sweepFraction: [number, number]) => string) | undefined, forCallout?: boolean) => string;
interface IYValue extends Omit<IYValueHover, 'y'> {
    y?: string | number;
}
export interface IGaugeChartState {
    hoveredLegend: string;
    selectedLegends: string[];
    focusedElement?: string;
    calloutTarget: any;
    isCalloutVisible: boolean;
    hoverXValue: string | number;
    hoverYValues: IYValue[];
    width: number;
    height: number;
}
export interface IExtendedSegment extends IGaugeChartSegment {
    start: number;
    end: number;
}
export declare class GaugeChartBase extends React.Component<IGaugeChartProps, IGaugeChartState> implements IChart {
    private _classNames;
    private _isRTL;
    private _innerRadius;
    private _outerRadius;
    private _minValue;
    private _maxValue;
    private _segments;
    private _calloutAnchor;
    private _rootElem;
    private _margins;
    private _legendsHeight;
    private _legendsRef;
    constructor(props: IGaugeChartProps);
    componentDidMount(): void;
    componentDidUpdate(prevProps: IGaugeChartProps): void;
    render(): React.ReactNode;
    get chartContainer(): HTMLElement | null;
    toImage: (opts?: IImageExportOptions) => Promise<string>;
    private _getMargins;
    private _getStylesBasedOnBreakpoint;
    private _processProps;
    private _renderNeedle;
    private _renderLegends;
    private _onLegendSelectionChange;
    /**
     * This function checks if the given legend is highlighted or not.
     * A legend can be highlighted in 2 ways:
     * 1. selection: if the user clicks on it
     * 2. hovering: if there is no selected legend and the user hovers over it
     */
    private _legendHighlighted;
    /**
     * This function checks if none of the legends is selected or hovered.
     */
    private _noLegendHighlighted;
    private _getHighlightedLegend;
    private _handleFocus;
    private _handleBlur;
    private _handleMouseOver;
    private _handleMouseOut;
    private _handleCalloutDismiss;
    private _showCallout;
    private _hideCallout;
    private _wrapContent;
    private _multiValueCallout;
    private _yValueHoverSubCountsExists;
    private _getCalloutContent;
    private _getChartTitle;
}
export {};
