/// <reference types="react" />
import * as React from 'react';
import { IgRect } from "igniteui-react-core/ES5/IgRect";
import { HorizontalAlignment } from "igniteui-react-core/ES5/HorizontalAlignment";
import { UnknownValuePlotting } from "igniteui-react-core/ES5/UnknownValuePlotting";
import { MarkerTypeCollection } from "./igr-marker-type-collection";
import { TrendLineType } from "igniteui-react-core/ES5/TrendLineType";
import { ChartSeriesEventArgs } from "./igr-chart-series-event-args";
import { DomainChartSeriesPointerEventArgs } from "./igr-domain-chart-series-pointer-event-args";
import { DomainChart } from "./DomainChart";
/**
 * Represents a base class for all domain charts that can plot scatter data and shapefiles
*/
export declare abstract class IgrDomainChart<P extends IIgrDomainChartProps = IIgrDomainChartProps> extends React.Component<P, {}> {
    protected createImplementation(): DomainChart;
    protected _implementation: any;
    readonly i: DomainChart;
    private onImplementationCreated();
    constructor(props: P);
    componentDidMount(): void;
    shouldComponentUpdate(nextProps: any, nextState: any): boolean;
    render(): any;
    /**
     * 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 or sets the left margin of chart title
    */
    titleLeftMargin: number;
    /**
     * Gets or sets the right margin of chart title
    */
    titleRightMargin: number;
    /**
     * Gets or sets the top margin of chart title
    */
    titleTopMargin: number;
    /**
     * Gets or sets the bottom margin of chart title
    */
    titleBottomMargin: number;
    /**
     * Gets or sets the left margin of chart subtitle
    */
    subtitleLeftMargin: number;
    /**
     * Gets or sets the top margin of chart subtitle
    */
    subtitleTopMargin: number;
    /**
     * Gets or sets the right margin of chart subtitle
    */
    subtitleRightMargin: number;
    /**
     * Gets or sets the bottom margin of chart subtitle
    */
    subtitleBottomMargin: number;
    /**
     * Gets or sets color of chart subtitle
    */
    subtitleTextColor: string;
    /**
     * Gets or sets color of chart title
    */
    titleTextColor: string;
    /**
     * Gets or sets the left margin of the chart content.
    */
    leftMargin: number;
    /**
     * Gets or sets the top margin of the chart content.
    */
    topMargin: number;
    /**
     * Gets or sets the right margin of the chart content.
    */
    rightMargin: number;
    /**
     * Gets or sets the bottom margin around the chart content.
    */
    bottomMargin: number;
    /**
     * Gets or sets the duration used for animating series plots when the data is changing
    */
    transitionDuration: number;
    /**
     * Gets or sets the easing function used for animating series plots when the data is changing.
     * 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.
    */
    transitionEasingFunction: (time: number) => number;
    /**
     * Gets or sets CSS font property for the chart subtitle
    */
    subtitleTextStyle: string;
    /**
     * Gets or sets CSS font property for the chart title
    */
    titleTextStyle: string;
    /**
     * Gets or sets a set of property paths that should be included for consideration by the category chart, leaving the remainder excluded. If null, all properties will be considered.
    */
    includedProperties: string[];
    /**
     * Gets or sets a set of property paths that should be excluded from consideration by the category chart.
    */
    excludedProperties: string[];
    /**
     * Gets or sets the palette of brushes to use for coloring the chart series.
     * The value provided should be an array of CSS color strings or JavaScript objects defining gradients. Optionally the first element can be a string reading "RGB" or "HSV" to specify the interpolation mode of the collection
    */
    brushes: string[];
    /**
     * Gets or sets the palette of brushes to use for outlines on the chart series.
     * The value provided should be an array of CSS color strings or JavaScript objects defining gradients. Optionally the first element can be a string reading "RGB" or "HSV" to specify the interpolation mode of the collection
    */
    outlines: string[];
    /**
     * Gets or sets whether the chart can be horizontally zoomed through user interactions.
    */
    isHorizontalZoomEnabled: boolean;
    /**
     * Gets or sets whether the chart can be vertically zoomed through user interactions.
    */
    isVerticalZoomEnabled: boolean;
    /**
     * Gets or sets the rectangle representing the current scroll and zoom state of the chart.
     * WindowRect is expressed as a Rectangle with coordinates and sizes between 0 and 1.
    */
    windowRect: IgRect;
    /**
     * Gets a rectangle representing the bounds of the plot area.
    */
    readonly viewport: IgRect;
    /**
     * Gets or sets text to display above the plot area.
    */
    chartTitle: string;
    /**
     * Gets or sets text to display below the Title, above the plot area.
    */
    subtitle: string;
    /**
     * Gets or sets horizontal alignment which determines the title position, relative to the left and right edges of the control.
    */
    titleAlignment: HorizontalAlignment;
    /**
     * Gets or sets horizontal alignment which determines the subtitle position, relative to the left and right edges of the control.
    */
    subtitleAlignment: HorizontalAlignment;
    /**
     * Gets or sets the behavior that determines how unknown values will be plotted on the chart.
     * Null and Double.NaN are two examples of unknown values.
    */
    unknownValuePlotting: UnknownValuePlotting;
    /**
     * Gets or sets the rendering resolution for all series in this chart.
     * Where n = Resolution, for every n horizontal pixels, combine all items into a single datapoint.  When Resolution = 0, all datapoints will be rendered as graphical objects.  Charts with a higher resolution will have faster performance.
    */
    resolution: number;
    /**
     * Gets or sets the thickness for all series in this chart. Depending on the ChartType, this can be the main brush used, or just the outline.
    */
    thickness: number;
    private _markerTypes;
    /**
     * Gets or sets the marker shapes used for indicating location of data points in this chart.
     * This property applies only to these chart types: point, line, spline, bubble, and polygon
    */
    markerTypes: MarkerTypeCollection;
    /**
     * Gets or sets the palette of brushes used for rendering fill area of data point markers.
     * This property applies only to these chart types: point, line, spline, bubble, and polygon
    */
    markerBrushes: string[];
    /**
     * Gets or sets the palette of brushes used for rendering outlines of data point markers.
     * This property applies only to these chart types: point, line, spline, bubble, and polygon
    */
    markerOutlines: string[];
    /**
     * Gets or sets the maximum number of markers displyed in the plot area of the chart.
    */
    markerMaxCount: number;
    /**
     * 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 the palette of brushes to used for coloring trend lines in this chart.
     * The value provided should be an array of CSS color strings or JavaScript objects defining gradients. Optionally the first element can be a string reading "RGB" or "HSV" to specify the interpolation mode of the collection
    */
    trendLineBrushes: string[];
    /**
     * Gets or sets the formula used for calculating trend lines in this chart.
     * This property applies only to these chart types: point, line, spline, and bubble
    */
    trendLineType: TrendLineType;
    /**
     * Gets or sets the thickness of the trend lines in this chart.
     * This property applies only to these chart types: point, line, spline, and bubble
    */
    trendLineThickness: number;
    /**
     * Gets or sets a value indicating whether grid and tick lines are aligned to device pixels.
    */
    alignsGridLinesToPixels: boolean;
    trendLinePeriod: number;
    /**
     * Provides a container for this control
    
    */
    provideContainer(container: any): void;
    /**
     * Destroy this control
    
    */
    destroy(): void;
    /**
     * Called when the control has been resized.
    
    */
    notifyResized(): void;
    notifyVisualPropertiesChanged(): void;
    /**
     * Forces any pending refresh to the chart to be finished.
    
    */
    flush(): void;
    /**
     * Hides the active main tooltip, if displayed.
    
    */
    hideToolTip(): void;
    notifySetItem(source_: any, index: number, oldItem: any, newItem: any): void;
    /**
     * Used to manually notify the chart that the data source has reset or cleared its items.
    
    */
    notifyClearItems(source_: any): void;
    notifyInsertItem(source_: any, index: number, newItem: any): void;
    notifyRemoveItem(source_: any, index: number, oldItem: any): void;
    private _seriesAdded;
    private _seriesAdded_wrapped;
    /**
     * Event raised when a series is initialized and added to this chart.
    */
    protected seriesAdded: (s: IgrDomainChart, e: ChartSeriesEventArgs) => void;
    private _seriesRemoved;
    private _seriesRemoved_wrapped;
    /**
     * Event raised when a series is removed from this chart.
    */
    protected seriesRemoved: (s: IgrDomainChart, e: ChartSeriesEventArgs) => void;
    private _seriesPointerEnter;
    private _seriesPointerEnter_wrapped;
    /**
     * Occurs when the pointer enters a Series.
    */
    protected seriesPointerEnter: (s: IgrDomainChart, e: DomainChartSeriesPointerEventArgs) => void;
    private _seriesPointerLeave;
    private _seriesPointerLeave_wrapped;
    /**
     * Occurs when the pointer leaves a Series.
    */
    protected seriesPointerLeave: (s: IgrDomainChart, e: DomainChartSeriesPointerEventArgs) => void;
    private _seriesPointerMove;
    private _seriesPointerMove_wrapped;
    /**
     * Occurs when the pointer moves over a Series.
    */
    protected seriesPointerMove: (s: IgrDomainChart, e: DomainChartSeriesPointerEventArgs) => void;
    private _seriesPointerDown;
    private _seriesPointerDown_wrapped;
    /**
     * Occurs when the pointer is pressed down over a Series.
    */
    protected seriesPointerDown: (s: IgrDomainChart, e: DomainChartSeriesPointerEventArgs) => void;
    private _seriesPointerUp;
    private _seriesPointerUp_wrapped;
    /**
     * Occurs when the pointer is released over a Series.
    */
    protected seriesPointerUp: (s: IgrDomainChart, e: DomainChartSeriesPointerEventArgs) => void;
}
export interface IIgrDomainChartProps {
    /**
     * 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 or sets the left margin of chart title
    */
    titleLeftMargin?: number;
    /**
     * Gets or sets the right margin of chart title
    */
    titleRightMargin?: number;
    /**
     * Gets or sets the top margin of chart title
    */
    titleTopMargin?: number;
    /**
     * Gets or sets the bottom margin of chart title
    */
    titleBottomMargin?: number;
    /**
     * Gets or sets the left margin of chart subtitle
    */
    subtitleLeftMargin?: number;
    /**
     * Gets or sets the top margin of chart subtitle
    */
    subtitleTopMargin?: number;
    /**
     * Gets or sets the right margin of chart subtitle
    */
    subtitleRightMargin?: number;
    /**
     * Gets or sets the bottom margin of chart subtitle
    */
    subtitleBottomMargin?: number;
    /**
     * Gets or sets color of chart subtitle
    */
    subtitleTextColor?: string;
    /**
     * Gets or sets color of chart title
    */
    titleTextColor?: string;
    /**
     * Gets or sets the left margin of the chart content.
    */
    leftMargin?: number;
    /**
     * Gets or sets the top margin of the chart content.
    */
    topMargin?: number;
    /**
     * Gets or sets the right margin of the chart content.
    */
    rightMargin?: number;
    /**
     * Gets or sets the bottom margin around the chart content.
    */
    bottomMargin?: number;
    /**
     * Gets or sets the duration used for animating series plots when the data is changing
    */
    transitionDuration?: number;
    /**
     * Gets or sets the easing function used for animating series plots when the data is changing.
     * 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.
    */
    transitionEasingFunction?: (time: number) => number;
    /**
     * Gets or sets CSS font property for the chart subtitle
    */
    subtitleTextStyle?: string;
    /**
     * Gets or sets CSS font property for the chart title
    */
    titleTextStyle?: string;
    /**
     * Gets or sets a set of property paths that should be included for consideration by the category chart, leaving the remainder excluded. If null, all properties will be considered.
    */
    includedProperties?: string[];
    /**
     * Gets or sets a set of property paths that should be excluded from consideration by the category chart.
    */
    excludedProperties?: string[];
    /**
     * Gets or sets the palette of brushes to use for coloring the chart series.
     * The value provided should be an array of CSS color strings or JavaScript objects defining gradients. Optionally the first element can be a string reading "RGB" or "HSV" to specify the interpolation mode of the collection
    */
    brushes?: string[];
    /**
     * Gets or sets the palette of brushes to use for outlines on the chart series.
     * The value provided should be an array of CSS color strings or JavaScript objects defining gradients. Optionally the first element can be a string reading "RGB" or "HSV" to specify the interpolation mode of the collection
    */
    outlines?: string[];
    /**
     * Gets or sets whether the chart can be horizontally zoomed through user interactions.
    */
    isHorizontalZoomEnabled?: boolean;
    /**
     * Gets or sets whether the chart can be vertically zoomed through user interactions.
    */
    isVerticalZoomEnabled?: boolean;
    /**
     * Gets or sets the rectangle representing the current scroll and zoom state of the chart.
     * WindowRect is expressed as a Rectangle with coordinates and sizes between 0 and 1.
    */
    windowRect?: IgRect;
    /**
     * Gets or sets text to display above the plot area.
    */
    chartTitle?: string;
    /**
     * Gets or sets text to display below the Title, above the plot area.
    */
    subtitle?: string;
    /**
     * Gets or sets horizontal alignment which determines the title position, relative to the left and right edges of the control.
    */
    titleAlignment?: HorizontalAlignment;
    /**
     * Gets or sets horizontal alignment which determines the subtitle position, relative to the left and right edges of the control.
    */
    subtitleAlignment?: HorizontalAlignment;
    /**
     * Gets or sets the behavior that determines how unknown values will be plotted on the chart.
     * Null and Double.NaN are two examples of unknown values.
    */
    unknownValuePlotting?: UnknownValuePlotting;
    /**
     * Gets or sets the rendering resolution for all series in this chart.
     * Where n = Resolution, for every n horizontal pixels, combine all items into a single datapoint.  When Resolution = 0, all datapoints will be rendered as graphical objects.  Charts with a higher resolution will have faster performance.
    */
    resolution?: number;
    /**
     * Gets or sets the thickness for all series in this chart. Depending on the ChartType, this can be the main brush used, or just the outline.
    */
    thickness?: number;
    /**
     * Gets or sets the marker shapes used for indicating location of data points in this chart.
     * This property applies only to these chart types: point, line, spline, bubble, and polygon
    */
    markerTypes?: MarkerTypeCollection | string;
    /**
     * Gets or sets the palette of brushes used for rendering fill area of data point markers.
     * This property applies only to these chart types: point, line, spline, bubble, and polygon
    */
    markerBrushes?: string[];
    /**
     * Gets or sets the palette of brushes used for rendering outlines of data point markers.
     * This property applies only to these chart types: point, line, spline, bubble, and polygon
    */
    markerOutlines?: string[];
    /**
     * Gets or sets the maximum number of markers displyed in the plot area of the chart.
    */
    markerMaxCount?: number;
    /**
     * 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 the palette of brushes to used for coloring trend lines in this chart.
     * The value provided should be an array of CSS color strings or JavaScript objects defining gradients. Optionally the first element can be a string reading "RGB" or "HSV" to specify the interpolation mode of the collection
    */
    trendLineBrushes?: string[];
    /**
     * Gets or sets the formula used for calculating trend lines in this chart.
     * This property applies only to these chart types: point, line, spline, and bubble
    */
    trendLineType?: TrendLineType;
    /**
     * Gets or sets the thickness of the trend lines in this chart.
     * This property applies only to these chart types: point, line, spline, and bubble
    */
    trendLineThickness?: number;
    /**
     * Gets or sets a value indicating whether grid and tick lines are aligned to device pixels.
    */
    alignsGridLinesToPixels?: boolean;
    trendLinePeriod?: number;
}
