/// <reference types="react" />
import * as React from 'react';
import { CategoryChart } from './CategoryChart';
import { CategoryChartType } from './CategoryChartType';
import { CategorySeriesMarkerCollisionAvoidance } from './CategorySeriesMarkerCollisionAvoidance';
import { CategoryTransitionInMode } from './CategoryTransitionInMode';
import { TransitionInSpeedType } from './TransitionInSpeedType';
import { IgrXYChart, IIgrXYChartProps } from './igr-xy-chart';
import { DataSeriesType } from "igniteui-react-core/ES2015/DataSeriesType";
export declare const IgxCategoryChartComponent_PROVIDERS: any[];
/**
 * Represents a chart with an ordinal X-axis and a numeric Y-axis.
*/
export declare class IgrCategoryChart extends IgrXYChart<IIgrCategoryChartProps> {
    private _container;
    private _height;
    private _width;
    private _initialized;
    private _elRef;
    height: string;
    width: string;
    protected _tooltipRef(t: any): void;
    private _getMainRef(ref);
    render(): React.DetailedReactHTMLElement<{
        ref: (ref: any) => void;
        children: any[];
    }, any>;
    constructor(props: IIgrCategoryChartProps);
    componentDidMount(): void;
    componentWillUnmount(): void;
    private _wrapper;
    protected createImplementation(): CategoryChart;
    readonly i: CategoryChart;
    protected createSeriesComponent(type: string): any;
    protected createSeries(type: DataSeriesType): any;
    private _chart;
    private _dataSource;
    dataSource: Array<any>;
    bindData(): void;
    private _defaultTooltips;
    initializeContent(): void;
    private _activeTooltips;
    private _activeTooltipElements;
    private _currentTooltips;
    private _uniqueTooltipId;
    private createTooltip();
    private _ensureTooltipCreated(series);
    private _createXAxis();
    private _createYAxis();
    private _ensureDefaultTooltip(series);
    private _onDefaultTooltipsReady(cr);
    private _updateTooltipState();
    /**
 * Gets or sets the duration used for animating series plots when the chart is loading into view
*/
    transitionInDuration: number;
    /**
     * Gets or sets the easing function used for animating series plots when the chart is loading into view
     * This can be set to one of the known values "linear" or "cubic," or it can be set to an easing function which takes a single numeric parameter and returns a number.
    */
    transitionInEasingFunction: (time: number) => number;
    /**
     * Gets or sets the type of chart series to generate from the data.
    */
    chartType: CategoryChartType;
    /**
     * Gets or sets the behavior for markers in each series which are placed too close together for the current view, resulting in a collision.
    */
    markerCollisionAvoidance: CategorySeriesMarkerCollisionAvoidance;
    /**
     * Gets or sets whether animation of series plots is enabled when the chart is loading into view
    */
    isTransitionInEnabled: boolean;
    /**
     * Gets or sets the method that determines how to animate series plots when the chart is loading into view
    */
    transitionInMode: CategoryTransitionInMode;
    /**
     * Gets or sets the arrival speed used for animating series plots when the chart is loading into view
    */
    transitionInSpeedType: TransitionInSpeedType;
    /**
     * Gets or sets the frequency of displayed labels along the X-axis.
     * Gets or sets the set value is a factor that determines which labels will be hidden. For example, an interval of 2 will display every other label.
    */
    xAxisInterval: number;
    /**
     * Gets or sets the frequency of displayed minor lines along the X-axis.
     * Gets or sets the set value is a factor that determines how the minor lines will be displayed.
    */
    xAxisMinorInterval: number;
    /**
     * Gets or sets the amount of space between adjacent categories for the X-axis.
     * The gap is silently clamped to the range [0, 1] when used.
    */
    xAxisGap: number;
    /**
     * Gets or sets the amount of overlap between adjacent categories for the X-axis.
     * Gets or sets the overlap is silently clamped to the range [-1, 1] when used.
    */
    xAxisOverlap: number;
    /**
     * Gets or sets the distance between each label and grid line along the Y-axis.
    */
    yAxisInterval: number;
    /**
     * Gets or sets whether the Y-axis should use a logarithmic scale instead of a linear one.
     * Since log(-1) is imaginary and log(0) is undefined, it is recommended to enable this property only when the Y-axis minimum is greater than zero.
    */
    yAxisIsLogarithmic: boolean;
    /**
     * Gets or sets the base value to use in the log function when mapping the position of data items along the Y-axis.
     * This property is effective only when YAxisIsLogarithmic is true.
    */
    yAxisLogarithmBase: number;
    /**
     * Gets or sets the data value corresponding to the minimum value of the Y-axis.
    */
    yAxisMinimumValue: number;
    /**
     * Gets or sets the data value corresponding to the maximum value of the Y-axis.
    */
    yAxisMaximumValue: number;
    /**
     * Gets or sets the frequency of displayed minor lines along the Y-axis.
    */
    yAxisMinorInterval: number;
    /**
     * Gets the current minimum value for the X-axis.
    */
    readonly xAxisActualMinimum: number;
    /**
     * Gets the current maximum value for the X-axis.
    */
    readonly xAxisActualMaximum: number;
    /**
     * Gets the current minimum value for the Y-axis.
    */
    readonly yAxisActualMinimum: number;
    /**
     * Gets the current maximum value for the Y-axis.
    */
    readonly yAxisActualMaximum: number;
    /**
     * Gets or sets the palette used for coloring negative items of Waterfall chart type.
    */
    negativeBrushes: string[];
    /**
     * Brushes to use for drawing negative elements, when using a chart type with contextual coloring, such as Waterfall.
    */
    negativeOutlines: string[];
    /**
     * Gets or sets whether the series animations should be allowed when a range change has been detected on an axis.
    */
    animateSeriesWhenAxisRangeChanges: boolean;
    /**
     * Gets or sets whether the large numbers on the Y-axis labels are abbreviated.
    */
    yAxisAbbreviateLargeNumbers: boolean;
    /**
 * Export serialized visual data.

*/
    exportSerializedVisualData(): string;
    /**
     * Converts the given visual location to a data value.
    
    * @param unscaledValue  * The x-coordinate of the location to scale.
    */
    getScaledValueX(unscaledValue: number): number;
    /**
     * Converts the given data value to a visual location.
    
    * @param scaledValue  * The data value to unscale.
    */
    getUnscaledValueX(scaledValue: number): number;
    /**
     * Converts the given visual location to a data value.
    
    * @param unscaledValue  * The y-coordinate of the location to scale.
    */
    getScaledValueY(unscaledValue: number): number;
    /**
     * Converts the given data value to a visual location.
    
    * @param scaledValue  * The data value to unscale.
    */
    getUnscaledValueY(scaledValue: number): number;
}
export interface IIgrCategoryChartProps extends IIgrXYChartProps {
    width?: string;
    height?: string;
    /**
  * Gets or sets the data for the chart to use. This can be overriden at the series and axis level.
  */
    dataSource?: any[];
    /**
 * Gets or sets the duration used for animating series plots when the chart is loading into view
*/
    transitionInDuration?: number;
    /**
     * Gets or sets the easing function used for animating series plots when the chart is loading into view
     * This can be set to one of the known values "linear" or "cubic," or it can be set to an easing function which takes a single numeric parameter and returns a number.
    */
    transitionInEasingFunction?: (time: number) => number;
    /**
     * Gets or sets the type of chart series to generate from the data.
    */
    chartType?: CategoryChartType;
    /**
     * Gets or sets the behavior for markers in each series which are placed too close together for the current view, resulting in a collision.
    */
    markerCollisionAvoidance?: CategorySeriesMarkerCollisionAvoidance;
    /**
     * Gets or sets whether animation of series plots is enabled when the chart is loading into view
    */
    isTransitionInEnabled?: boolean;
    /**
     * Gets or sets the method that determines how to animate series plots when the chart is loading into view
    */
    transitionInMode?: CategoryTransitionInMode;
    /**
     * Gets or sets the arrival speed used for animating series plots when the chart is loading into view
    */
    transitionInSpeedType?: TransitionInSpeedType;
    /**
     * Gets or sets the frequency of displayed labels along the X-axis.
     * Gets or sets the set value is a factor that determines which labels will be hidden. For example, an interval of 2 will display every other label.
    */
    xAxisInterval?: number;
    /**
     * Gets or sets the frequency of displayed minor lines along the X-axis.
     * Gets or sets the set value is a factor that determines how the minor lines will be displayed.
    */
    xAxisMinorInterval?: number;
    /**
     * Gets or sets the amount of space between adjacent categories for the X-axis.
     * The gap is silently clamped to the range [0, 1] when used.
    */
    xAxisGap?: number;
    /**
     * Gets or sets the amount of overlap between adjacent categories for the X-axis.
     * Gets or sets the overlap is silently clamped to the range [-1, 1] when used.
    */
    xAxisOverlap?: number;
    /**
     * Gets or sets the distance between each label and grid line along the Y-axis.
    */
    yAxisInterval?: number;
    /**
     * Gets or sets whether the Y-axis should use a logarithmic scale instead of a linear one.
     * Since log(-1) is imaginary and log(0) is undefined, it is recommended to enable this property only when the Y-axis minimum is greater than zero.
    */
    yAxisIsLogarithmic?: boolean;
    /**
     * Gets or sets the base value to use in the log function when mapping the position of data items along the Y-axis.
     * This property is effective only when YAxisIsLogarithmic is true.
    */
    yAxisLogarithmBase?: number;
    /**
     * Gets or sets the data value corresponding to the minimum value of the Y-axis.
    */
    yAxisMinimumValue?: number;
    /**
     * Gets or sets the data value corresponding to the maximum value of the Y-axis.
    */
    yAxisMaximumValue?: number;
    /**
     * Gets or sets the frequency of displayed minor lines along the Y-axis.
    */
    yAxisMinorInterval?: number;
    /**
     * Gets or sets the palette used for coloring negative items of Waterfall chart type.
    */
    negativeBrushes?: string[];
    /**
     * Brushes to use for drawing negative elements, when using a chart type with contextual coloring, such as Waterfall.
    */
    negativeOutlines?: string[];
    /**
     * Gets or sets whether the series animations should be allowed when a range change has been detected on an axis.
    */
    animateSeriesWhenAxisRangeChanges?: boolean;
    /**
     * Gets or sets whether the large numbers on the Y-axis labels are abbreviated.
    */
    yAxisAbbreviateLargeNumbers?: boolean;
}
