import * as React from 'react';
import { Visibility } from "igniteui-react-core/ES2015/Visibility";
import { XamSparkline } from './XamSparkline';
import { SparklineVisualData } from './SparklineVisualData';
import { IChartTooltipProps } from "igniteui-react-core/ES2015/igr-chart-tooltip-props";
import { TrendLineType } from "igniteui-react-core/ES2015/TrendLineType";
import { SparklineDisplayType } from './SparklineDisplayType';
import { UnknownValuePlotting } from "igniteui-react-core/ES2015/UnknownValuePlotting";
export declare class IgrSparkline extends React.Component<IIgrSparklineProps> {
    private _height;
    private _width;
    height: string;
    width: string;
    private _elRef;
    private _container;
    render(): React.DetailedReactHTMLElement<{
        ref: (div: HTMLDivElement) => void;
        children: any[];
    }, HTMLDivElement>;
    protected _tooltipRef(t: any): void;
    componentDidMount(): void;
    shouldComponentUpdate(nextProps: any, nextState: any): boolean;
    private _dataSource;
    dataSource: any;
    private _renderer;
    private _getMainRef;
    constructor(props: IIgrSparklineProps);
    private _initialized;
    destroy(): void;
    private _wrapper;
    protected createImplementation(): XamSparkline;
    private _sparkline;
    private _hasUserValues;
    protected readonly hasUserValues: Set<string>;
    initializeContent(): void;
    componentWillUnmount(): void;
    protected initializeProperties(): void;
    private _tooltipTemplate;
    private _tooltipContent;
    tooltipTemplate: React.SFC<IChartTooltipProps> | React.Component<IChartTooltipProps>;
    private createWrapper;
    private _defaultTooltips;
    private _ensureDefaultTooltip;
    private _onDefaultTooltipsReady;
    private _updateTooltipState;
    private _activeTooltips;
    private _activeTooltipElements;
    private _currentTooltips;
    private _uniqueTooltipId;
    private createTooltip;
    private _ensureTooltipCreated;
    protected _implementation: any;
    readonly i: XamSparkline;
    /**
 * Gets or sets the sparkline brush.
*/
    brush: string;
    /**
     * Gets or sets the negative brush of the sparkline.
    */
    negativeBrush: string;
    /**
     * Gets or sets the marker brush of the sparkline.
    */
    markerBrush: string;
    /**
     * Gets or sets the negative marker brush of the sparkline.
    */
    negativeMarkerBrush: string;
    /**
     * Gets or sets the first marker brush of the sparkline.
    */
    firstMarkerBrush: string;
    /**
     * Gets or sets the last marker brush of the sparkline.
    */
    lastMarkerBrush: string;
    /**
     * Gets or sets the high marker brush of the sparkline.
    */
    highMarkerBrush: string;
    /**
     * Gets or sets the low marker brush of the sparkline.
    */
    lowMarkerBrush: string;
    /**
     * Gets or sets the trendline brush of the sparkline.
    */
    trendLineBrush: string;
    /**
     * Gets or sets the horizontal axis line brush of the sparkline.
    */
    horizontalAxisBrush: string;
    /**
     * Gets or sets the vertical axis line brush of the sparkline.
    */
    verticalAxisBrush: string;
    /**
     * Gets or sets the normal range brush of the sparkline.
    */
    normalRangeFill: string;
    /**
     * Gets or sets the display state of the horizontal axis.
    */
    horizontalAxisVisibility: Visibility;
    /**
     * Gets or sets the display state of the vertical axis.
    */
    verticalAxisVisibility: Visibility;
    /**
     * Gets or sets the marker visibility of the sparkline.
    */
    markerVisibility: Visibility;
    /**
     * Gets or sets the negative marker visibility of the sparkline.
    */
    negativeMarkerVisibility: Visibility;
    /**
     * Gets or sets the first marker visibility of the sparkline.
    */
    firstMarkerVisibility: Visibility;
    /**
     * Gets or sets the last marker visibility of the sparkline.
    */
    lastMarkerVisibility: Visibility;
    /**
     * Gets or sets the low marker visibility of the sparkline.
    */
    lowMarkerVisibility: Visibility;
    /**
     * Gets or sets the high marker visibility of the sparkline.
    */
    highMarkerVisibility: Visibility;
    /**
     * Gets or sets the normal range visibility of the sparkline.
    */
    normalRangeVisibility: Visibility;
    /**
     * Gets or sets the position of the normal range on the sparkline.
    */
    displayNormalRangeInFront: boolean;
    /**
     * Gets or sets the marker size of the sparkline.
    */
    markerSize: number;
    /**
     * Gets or sets the first marker size of the sparkline.
    */
    firstMarkerSize: number;
    /**
     * Gets or sets the last marker size of the sparkline.
    */
    lastMarkerSize: number;
    /**
     * Gets or sets the high marker size of the sparkline.
    */
    highMarkerSize: number;
    /**
     * Gets or sets the low marker size of the sparkline.
    */
    lowMarkerSize: number;
    /**
     * Gets or sets the negative marker size of the sparkline.
    */
    negativeMarkerSize: number;
    /**
     * Gets or sets the line thickness of the sparkline.
    */
    lineThickness: number;
    /**
     * Gets or sets the minimum value of the y axis.
    */
    minimum: number;
    /**
     * Gets or sets the maximum value of the y axis.
    */
    maximum: number;
    /**
     * Gets or sets the string path to the value column.
    */
    valueMemberPath: string;
    /**
     * String identifier of a column or property name to get labels from on each item in the data source.  These labels will be retrieved from the first and last item, and displayed by the horizontal axis.
    */
    labelMemberPath: string;
    /**
     * Gets or sets the type of trendline used by the sparkline.
    */
    trendLineType: TrendLineType;
    /**
     * Gets or sets the trendline period used by the sparkline.
    */
    trendLinePeriod: number;
    /**
     * Gets or sets the thickness of the sparkline's trendline.
    */
    trendLineThickness: number;
    /**
     * Gets or sets the minimum value of the normal range.
    */
    normalRangeMinimum: number;
    /**
     * Gets or sets the maximum value of the normal range.
    */
    normalRangeMaximum: number;
    /**
     * Gets or sets the display type of the sparkline.
    */
    displayType: SparklineDisplayType;
    /**
     * Gets or sets the way null values are interpreted.
    */
    unknownValuePlotting: UnknownValuePlotting;
    /**
     * The value or content to display on the vertical axis.
     * This can be set to a formatted string, such as "{0:n}", or it can be set to a DataTemplate.
    */
    verticalAxisLabel: any;
    /**
     * The value or content to display on the horizontal axis.
     * This can be set to a formatted string, such as "{0}", or it can be set to a DataTemplate.
    */
    horizontalAxisLabel: any;
    /**
     * Sets or gets a function which takes an object that produces a formatted label for displaying in the chart.
    */
    formatLabel: (arg1: any) => string;
    /**
     * Gets or sets the scaling value used to affect the pixel density of the control.
     * A higher scaling ratio will produce crisper visuals at the expense of memory.  Lower values will cause the control
     * to appear blurry.
    */
    pixelScalingRatio: number;
    /**
     * Gets the actual scaling value used by the component to affect the pixel density of the control.
     * A higher scaling ratio will produce crisper visuals at the expense of memory.  Lower values will cause the control
     * to appear blurry.
    */
    actualPixelScalingRatio: number;
    /**
 * Provides a container to the sparkline control.

* @param container  * The container.
*/
    provideContainer(container: any): void;
    /**
     * Notify that the control has resized.
    
    */
    notifyResized(): void;
    notifySetItem(source_: any, index: number, oldItem: any, newItem: any): void;
    /**
     * Used to manually notify the IgxSparklineComponent that the data source has reset or cleared its items.  Invoking this method is only necessary if that datasource is not observable.
    
    * @param source_  * The data source which was cleared or reset.
    */
    notifyClearItems(source_: any): void;
    notifyInsertItem(source_: any, index: number, newItem: any): void;
    notifyRemoveItem(source_: any, index: number, oldItem: any): void;
    /**
     * Returns the sparkline visuals expressed as a SparklineVisualData object.
    
    */
    exportVisualData(): SparklineVisualData;
}
export interface IIgrSparklineProps {
    width?: string;
    height?: string;
    dataSource?: any;
    tooltipTemplate?: React.SFC<IChartTooltipProps> | React.Component<IChartTooltipProps>;
    /**
 * Gets or sets the sparkline brush.
*/
    brush?: string;
    /**
     * Gets or sets the negative brush of the sparkline.
    */
    negativeBrush?: string;
    /**
     * Gets or sets the marker brush of the sparkline.
    */
    markerBrush?: string;
    /**
     * Gets or sets the negative marker brush of the sparkline.
    */
    negativeMarkerBrush?: string;
    /**
     * Gets or sets the first marker brush of the sparkline.
    */
    firstMarkerBrush?: string;
    /**
     * Gets or sets the last marker brush of the sparkline.
    */
    lastMarkerBrush?: string;
    /**
     * Gets or sets the high marker brush of the sparkline.
    */
    highMarkerBrush?: string;
    /**
     * Gets or sets the low marker brush of the sparkline.
    */
    lowMarkerBrush?: string;
    /**
     * Gets or sets the trendline brush of the sparkline.
    */
    trendLineBrush?: string;
    /**
     * Gets or sets the horizontal axis line brush of the sparkline.
    */
    horizontalAxisBrush?: string;
    /**
     * Gets or sets the vertical axis line brush of the sparkline.
    */
    verticalAxisBrush?: string;
    /**
     * Gets or sets the normal range brush of the sparkline.
    */
    normalRangeFill?: string;
    /**
     * Gets or sets the display state of the horizontal axis.
    */
    horizontalAxisVisibility?: Visibility | string;
    /**
     * Gets or sets the display state of the vertical axis.
    */
    verticalAxisVisibility?: Visibility | string;
    /**
     * Gets or sets the marker visibility of the sparkline.
    */
    markerVisibility?: Visibility | string;
    /**
     * Gets or sets the negative marker visibility of the sparkline.
    */
    negativeMarkerVisibility?: Visibility | string;
    /**
     * Gets or sets the first marker visibility of the sparkline.
    */
    firstMarkerVisibility?: Visibility | string;
    /**
     * Gets or sets the last marker visibility of the sparkline.
    */
    lastMarkerVisibility?: Visibility | string;
    /**
     * Gets or sets the low marker visibility of the sparkline.
    */
    lowMarkerVisibility?: Visibility | string;
    /**
     * Gets or sets the high marker visibility of the sparkline.
    */
    highMarkerVisibility?: Visibility | string;
    /**
     * Gets or sets the normal range visibility of the sparkline.
    */
    normalRangeVisibility?: Visibility | string;
    /**
     * Gets or sets the position of the normal range on the sparkline.
    */
    displayNormalRangeInFront?: boolean | string;
    /**
     * Gets or sets the marker size of the sparkline.
    */
    markerSize?: number | string;
    /**
     * Gets or sets the first marker size of the sparkline.
    */
    firstMarkerSize?: number | string;
    /**
     * Gets or sets the last marker size of the sparkline.
    */
    lastMarkerSize?: number | string;
    /**
     * Gets or sets the high marker size of the sparkline.
    */
    highMarkerSize?: number | string;
    /**
     * Gets or sets the low marker size of the sparkline.
    */
    lowMarkerSize?: number | string;
    /**
     * Gets or sets the negative marker size of the sparkline.
    */
    negativeMarkerSize?: number | string;
    /**
     * Gets or sets the line thickness of the sparkline.
    */
    lineThickness?: number | string;
    /**
     * Gets or sets the minimum value of the y axis.
    */
    minimum?: number | string;
    /**
     * Gets or sets the maximum value of the y axis.
    */
    maximum?: number | string;
    /**
     * Gets or sets the string path to the value column.
    */
    valueMemberPath?: string;
    /**
     * String identifier of a column or property name to get labels from on each item in the data source.  These labels will be retrieved from the first and last item, and displayed by the horizontal axis.
    */
    labelMemberPath?: string;
    /**
     * Gets or sets the type of trendline used by the sparkline.
    */
    trendLineType?: TrendLineType | string;
    /**
     * Gets or sets the trendline period used by the sparkline.
    */
    trendLinePeriod?: number | string;
    /**
     * Gets or sets the thickness of the sparkline's trendline.
    */
    trendLineThickness?: number | string;
    /**
     * Gets or sets the minimum value of the normal range.
    */
    normalRangeMinimum?: number | string;
    /**
     * Gets or sets the maximum value of the normal range.
    */
    normalRangeMaximum?: number | string;
    /**
     * Gets or sets the display type of the sparkline.
    */
    displayType?: SparklineDisplayType | string;
    /**
     * Gets or sets the way null values are interpreted.
    */
    unknownValuePlotting?: UnknownValuePlotting | string;
    /**
     * The value or content to display on the vertical axis.
     * This can be set to a formatted string, such as "{0:n}", or it can be set to a DataTemplate.
    */
    verticalAxisLabel?: any;
    /**
     * The value or content to display on the horizontal axis.
     * This can be set to a formatted string, such as "{0}", or it can be set to a DataTemplate.
    */
    horizontalAxisLabel?: any;
    /**
     * Sets or gets a function which takes an object that produces a formatted label for displaying in the chart.
    */
    formatLabel?: (arg1: any) => string;
    /**
     * Gets or sets the scaling value used to affect the pixel density of the control.
     * A higher scaling ratio will produce crisper visuals at the expense of memory.  Lower values will cause the control
     * to appear blurry.
    */
    pixelScalingRatio?: number | string;
    /**
     * Gets the actual scaling value used by the component to affect the pixel density of the control.
     * A higher scaling ratio will produce crisper visuals at the expense of memory.  Lower values will cause the control
     * to appear blurry.
    */
    actualPixelScalingRatio?: number | string;
}
