import * as React from 'react';
import { IgPoint } from "igniteui-react-core/ES5/IgPoint";
import { IgDataTemplate } from "igniteui-react-core/ES5/IgDataTemplate";
import { LabelsPosition } from "./LabelsPosition";
import { Visibility } from "igniteui-react-core/ES5/Visibility";
import { LeaderLineType } from "./LeaderLineType";
import { OthersCategoryType } from "./OthersCategoryType";
import { IndexCollection } from "./igr-index-collection";
import { SweepDirection } from "igniteui-react-core/ES5/SweepDirection";
import { SliceSelectionMode } from "./SliceSelectionMode";
import { ObjectCollection } from "igniteui-react-core/ES5/igr-object-collection";
import { LabelClickEventArgs } from "./igr-label-click-event-args";
import { SelectedItemChangingEventArgs } from "./igr-selected-item-changing-event-args";
import { SelectedItemsChangingEventArgs } from "./igr-selected-items-changing-event-args";
import { SelectedItemChangedEventArgs } from "./igr-selected-item-changed-event-args";
import { SelectedItemsChangedEventArgs } from "./igr-selected-items-changed-event-args";
import { SliceClickEventArgs } from "./igr-slice-click-event-args";
import { PieChartBase } from "./PieChartBase";
/**
 * Represents the base class for the pie chart.
*/
export declare abstract class IgrPieChartBase<P extends IIgrPieChartBaseProps = IIgrPieChartBaseProps> extends React.Component<P, {}> {
    protected createImplementation(): PieChartBase;
    protected _implementation: any;
    readonly i: PieChartBase;
    private onImplementationCreated;
    constructor(props: P);
    private _hasUserValues;
    protected readonly hasUserValues: Set<string>;
    componentDidMount(): void;
    shouldComponentUpdate(nextProps: any, nextState: any): boolean;
    render(): any;
    /**
     * Gets or sets the amount of space between the center and the start of the arc. This property should be set between 0 and 1.
     * If InnerExtent is set to a value greater than 1, it will be interpreted as a percentage, effectively divided by 100.
    */
    innerExtent: number;
    /**
     * Gets or Sets the property name that contains the values.
    */
    valueMemberPath: string;
    /**
     * Gets or sets the property name that contains the labels.
    */
    labelMemberPath: string;
    /**
     * Gets or sets the property name that contains the legend labels.
    */
    legendLabelMemberPath: string;
    /**
     * Gets or sets the position of chart labels.
    */
    labelsPosition: LabelsPosition;
    /**
     * Gets or sets the color for labels rendered outside of the pie chart.
    */
    labelOuterColor: string;
    /**
     * Gets or sets the color for labels rendered inside of the pie chart.
    */
    labelInnerColor: string;
    /**
     * Gets or sets whether the leader lines are visible.
    */
    leaderLineVisibility: Visibility;
    /**
     * Gets or sets what type of leader lines will be used for the outside end labels.
    */
    leaderLineType: LeaderLineType;
    /**
     * Gets or sets the margin between a label and the end of its leader line. The default is 6 pixels.
    */
    leaderLineMargin: number;
    /**
     * Gets or sets the ToolTip for the chart.
    */
    toolTip: any;
    /**
     * Gets or sets the threshold value that determines if slices are grouped into the Others slice.
    */
    othersCategoryThreshold: number;
    /**
     * Gets or sets whether to use numeric or percent-based threshold value.
    */
    othersCategoryType: OthersCategoryType;
    /**
     * Gets or sets the label of the Others slice.
    */
    othersCategoryText: string;
    /**
     * Determines how much the exploded slice is offset from the center. Value between 0 and 1.
    */
    explodedRadius: number;
    /**
     * Gets or sets the scaling factor of the chart's radius. Value between 0 and 1.
    */
    radiusFactor: number;
    /**
     * Gets or sets whether the slices can be selected.
    */
    allowSliceSelection: boolean;
    /**
     * Gets or sets whether the slices can be exploded.
    */
    allowSliceExplosion: boolean;
    private _explodedSlices;
    /**
     * Gets or sets the collection of exploded slice indices.
    */
    explodedSlices: IndexCollection;
    /**
     * Gets or sets the pixel amount by which the labels are offset from the edge of the slices.
    */
    labelExtent: number;
    /**
     * Gets or sets the starting angle of the chart.
     * The default zero value is equivalent to 3 o'clock.
    */
    startAngle: number;
    /**
     * Gets or sets the rotational direction of the chart.
    */
    sweepDirection: SweepDirection;
    /**
     * Gets or sets the fill brush.
    */
    othersCategoryFill: string;
    /**
     * Gets or sets the stroke brush.
    */
    othersCategoryStroke: string;
    /**
     * Gets or sets the stroke thickness.
    */
    othersCategoryStrokeThickness: number;
    /**
     * Gets or sets the opacity.
    */
    othersCategoryOpacity: number;
    ensureOthersCategoryStyle(): void;
    /**
     * Gets or sets the fill brush.
    */
    selectedSliceFill: string;
    /**
     * Gets or sets the stroke brush.
    */
    selectedSliceStroke: string;
    /**
     * Gets or sets the stroke thickness.
    */
    selectedSliceStrokeThickness: number;
    /**
     * Gets or sets the opacity.
    */
    selectedSliceOpacity: number;
    ensureSelectedStyle(): void;
    /**
     * Gets or sets the palette of brushes to use for coloring the slices.
    */
    brushes: string[];
    /**
     * Gets or sets the palette of brushes to use for outlines on the slices.
    */
    outlines: string[];
    /**
     * Gets or sets the LegendItemTemplate property.
     * The legend item control content is created according to the LegendItemTemplate on-demand by
     * the chart object itself.
    */
    legendItemTemplate: IgDataTemplate;
    /**
     * Gets or sets the LegendItemBadgeTemplate property.
     * The legend item badge is created according to the LegendItemBadgeTemplate on-demand by
     * the chart object itself.
    */
    legendItemBadgeTemplate: IgDataTemplate;
    /**
     * Gets or sets whether all surface interactions with the plot area should be disabled.
    */
    isSurfaceInteractionDisabled: boolean;
    /**
     * Sets or gets a function which takes an object that produces a formatted label for displaying in the chart.
    */
    formatLabel: (obj: any) => string;
    /**
     * Sets or gets a function which takes an object that produces a formatted label for displaying in the chart's legend.
    */
    formatLegendLabel: (obj: 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;
    /**
     * Resolved pixel scaling ratio. Unless explicitly overridden by the PieChartBase.PixelScalingRatio property,
     * this one returns the default ratio enforced by device. High resolution devices will initialize this property
     * to a higher value.
    */
    actualPixelScalingRatio: number;
    /**
     * Gets or sets which mode to use for selecting slices.
    */
    selectionMode: SliceSelectionMode;
    /**
     * Gets or sets the currently selected data item.  If a different data item is provided the pie chart
     * will select the slice associated with the new item.
    */
    selectedItem: any;
    private _selectedItems;
    /**
     * Gets the currently selected data items.  Adding or removing data items from this collection will
     * select or deselect the slices associated with those items.
    */
    selectedItems: ObjectCollection;
    /**
     * Manually overrides the style to use for the labels.
    */
    textStyle: string;
    /**
     * Returns the chart visuals expressed as a serialized string.
    
    */
    exportSerializedVisualData(): string;
    /**
     * Simulates a mouse click action at the specified point.
    
    * @param point  * The point to click at.
    */
    simulateLeftClick(point: IgPoint): void;
    /**
     * Invoked by the containing object to provide reference to the container.
    
    * @param container  * Reference to the container.
    */
    provideContainer(container: any): void;
    /**
     * Notification from the containing object that the container has been resized.
    
    */
    notifyContainerResized(): void;
    /**
     * Invoked when the instance is being destroyed.
    
    */
    destroy(): void;
    /**
     * Use to force the pie chart to finish any deferred work before printing or evaluating its visual.
     * This should only be called if the visual of the pie chart needs to be synchronously saved or evaluated.
     * Calling this method too often will hinder the performance of the pie chart.
    
    */
    flush(): void;
    notifySetItem(source_: any, index: number, oldItem: any, newItem: any): void;
    /**
     * Manually notifies the pie chart's data source that the data it has bound to has been cleared and needs to be re-examined.
     * This should not be called if the data that the pie chart is bound to is already observable.
    
    * @param source_  * The data source.
    */
    notifyClearItems(source_: any): void;
    notifyInsertItem(source_: any, index: number, newItem: any): void;
    notifyRemoveItem(source_: any, index: number, oldItem: any): void;
    /**
     * Assigns data source for the items.
    
    * @param source_  * Array of the data source items.
    */
    setWidgetLevelDataSource(source_: any): void;
    /**
     * Resets items data source.
    
    */
    removeWidgetLevelDataSource(): void;
    /**
     * Invoked when style is updated.
    
    */
    styleUpdated(): void;
    private _labelClick;
    private _labelClick_wrapped;
    /**
     * Raised when the slice's label is clicked.
    */
    labelClick: (s: IgrPieChartBase, e: LabelClickEventArgs) => void;
    private _selectedItemChanging;
    private _selectedItemChanging_wrapped;
    /**
     * Raised when the SelectedItem property is changing.  This event is cancelable.
    */
    selectedItemChanging: (s: IgrPieChartBase, e: SelectedItemChangingEventArgs) => void;
    private _selectedItemsChanging;
    private _selectedItemsChanging_wrapped;
    /**
     * Raised when the SelectedItems collection is changing.  This event is cancelable.
    */
    selectedItemsChanging: (s: IgrPieChartBase, e: SelectedItemsChangingEventArgs) => void;
    private _selectedItemChanged;
    private _selectedItemChanged_wrapped;
    /**
     * Raised when the SelectedItem property has changed.
    */
    selectedItemChanged: (s: IgrPieChartBase, e: SelectedItemChangedEventArgs) => void;
    private _selectedItemsChanged;
    private _selectedItemsChanged_wrapped;
    /**
     * Raised when the SelectedItems collection has changed.
    */
    selectedItemsChanged: (s: IgrPieChartBase, e: SelectedItemsChangedEventArgs) => void;
    private _sliceClick;
    private _sliceClick_wrapped;
    /**
     * Raised when the slice is clicked.
    */
    sliceClick: (s: IgrPieChartBase, e: SliceClickEventArgs) => void;
}
export interface IIgrPieChartBaseProps {
    /**
     * Gets or sets the amount of space between the center and the start of the arc. This property should be set between 0 and 1.
     * If InnerExtent is set to a value greater than 1, it will be interpreted as a percentage, effectively divided by 100.
    */
    innerExtent?: number | string;
    /**
     * Gets or Sets the property name that contains the values.
    */
    valueMemberPath?: string;
    /**
     * Gets or sets the property name that contains the labels.
    */
    labelMemberPath?: string;
    /**
     * Gets or sets the property name that contains the legend labels.
    */
    legendLabelMemberPath?: string;
    /**
     * Gets or sets the position of chart labels.
    */
    labelsPosition?: LabelsPosition | string;
    /**
     * Gets or sets the color for labels rendered outside of the pie chart.
    */
    labelOuterColor?: string;
    /**
     * Gets or sets the color for labels rendered inside of the pie chart.
    */
    labelInnerColor?: string;
    /**
     * Gets or sets whether the leader lines are visible.
    */
    leaderLineVisibility?: Visibility | string;
    /**
     * Gets or sets what type of leader lines will be used for the outside end labels.
    */
    leaderLineType?: LeaderLineType | string;
    /**
     * Gets or sets the margin between a label and the end of its leader line. The default is 6 pixels.
    */
    leaderLineMargin?: number | string;
    /**
     * Gets or sets the ToolTip for the chart.
    */
    toolTip?: any;
    /**
     * Gets or sets the threshold value that determines if slices are grouped into the Others slice.
    */
    othersCategoryThreshold?: number | string;
    /**
     * Gets or sets whether to use numeric or percent-based threshold value.
    */
    othersCategoryType?: OthersCategoryType | string;
    /**
     * Gets or sets the label of the Others slice.
    */
    othersCategoryText?: string;
    /**
     * Determines how much the exploded slice is offset from the center. Value between 0 and 1.
    */
    explodedRadius?: number | string;
    /**
     * Gets or sets the scaling factor of the chart's radius. Value between 0 and 1.
    */
    radiusFactor?: number | string;
    /**
     * Gets or sets whether the slices can be selected.
    */
    allowSliceSelection?: boolean | string;
    /**
     * Gets or sets whether the slices can be exploded.
    */
    allowSliceExplosion?: boolean | string;
    /**
     * Gets or sets the collection of exploded slice indices.
    */
    explodedSlices?: IndexCollection | string;
    /**
     * Gets or sets the pixel amount by which the labels are offset from the edge of the slices.
    */
    labelExtent?: number | string;
    /**
     * Gets or sets the starting angle of the chart.
     * The default zero value is equivalent to 3 o'clock.
    */
    startAngle?: number | string;
    /**
     * Gets or sets the rotational direction of the chart.
    */
    sweepDirection?: SweepDirection | string;
    /**
     * Gets or sets the fill brush.
    */
    othersCategoryFill?: string;
    /**
     * Gets or sets the stroke brush.
    */
    othersCategoryStroke?: string;
    /**
     * Gets or sets the stroke thickness.
    */
    othersCategoryStrokeThickness?: number | string;
    /**
     * Gets or sets the opacity.
    */
    othersCategoryOpacity?: number | string;
    /**
     * Gets or sets the fill brush.
    */
    selectedSliceFill?: string;
    /**
     * Gets or sets the stroke brush.
    */
    selectedSliceStroke?: string;
    /**
     * Gets or sets the stroke thickness.
    */
    selectedSliceStrokeThickness?: number | string;
    /**
     * Gets or sets the opacity.
    */
    selectedSliceOpacity?: number | string;
    /**
     * Gets or sets the palette of brushes to use for coloring the slices.
    */
    brushes?: string[] | string;
    /**
     * Gets or sets the palette of brushes to use for outlines on the slices.
    */
    outlines?: string[] | string;
    /**
     * Gets or sets the LegendItemTemplate property.
     * The legend item control content is created according to the LegendItemTemplate on-demand by
     * the chart object itself.
    */
    legendItemTemplate?: IgDataTemplate;
    /**
     * Gets or sets the LegendItemBadgeTemplate property.
     * The legend item badge is created according to the LegendItemBadgeTemplate on-demand by
     * the chart object itself.
    */
    legendItemBadgeTemplate?: IgDataTemplate;
    /**
     * Gets or sets whether all surface interactions with the plot area should be disabled.
    */
    isSurfaceInteractionDisabled?: boolean | string;
    /**
     * Sets or gets a function which takes an object that produces a formatted label for displaying in the chart.
    */
    formatLabel?: (obj: any) => string;
    /**
     * Sets or gets a function which takes an object that produces a formatted label for displaying in the chart's legend.
    */
    formatLegendLabel?: (obj: 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;
    /**
     * Resolved pixel scaling ratio. Unless explicitly overridden by the PieChartBase.PixelScalingRatio property,
     * this one returns the default ratio enforced by device. High resolution devices will initialize this property
     * to a higher value.
    */
    actualPixelScalingRatio?: number | string;
    /**
     * Gets or sets which mode to use for selecting slices.
    */
    selectionMode?: SliceSelectionMode | string;
    /**
     * Gets or sets the currently selected data item.  If a different data item is provided the pie chart
     * will select the slice associated with the new item.
    */
    selectedItem?: any;
    /**
     * Gets the currently selected data items.  Adding or removing data items from this collection will
     * select or deselect the slices associated with those items.
    */
    selectedItems?: ObjectCollection | string;
    /**
     * Manually overrides the style to use for the labels.
    */
    textStyle?: string;
    /**
     * Raised when the slice's label is clicked.
    */
    labelClick?: (s: IgrPieChartBase, e: LabelClickEventArgs) => void;
    /**
     * Raised when the SelectedItem property is changing.  This event is cancelable.
    */
    selectedItemChanging?: (s: IgrPieChartBase, e: SelectedItemChangingEventArgs) => void;
    /**
     * Raised when the SelectedItems collection is changing.  This event is cancelable.
    */
    selectedItemsChanging?: (s: IgrPieChartBase, e: SelectedItemsChangingEventArgs) => void;
    /**
     * Raised when the SelectedItem property has changed.
    */
    selectedItemChanged?: (s: IgrPieChartBase, e: SelectedItemChangedEventArgs) => void;
    /**
     * Raised when the SelectedItems collection has changed.
    */
    selectedItemsChanged?: (s: IgrPieChartBase, e: SelectedItemsChangedEventArgs) => void;
    /**
     * Raised when the slice is clicked.
    */
    sliceClick?: (s: IgrPieChartBase, e: SliceClickEventArgs) => void;
}
