import * as React from 'react';
import { LabelsPosition } from "./LabelsPosition";
import { Visibility } from "igniteui-react-core/ES5/Visibility";
import { LeaderLineType } from "./LeaderLineType";
import { OthersCategoryType } from "./OthersCategoryType";
import { PropertyUpdatedEventArgs } from "igniteui-react-core/ES5/igr-property-updated-event-args";
import { RingSeriesBase } from "./RingSeriesBase";
import { IChartTooltipProps } from "igniteui-react-core/ES5/igr-chart-tooltip-props";
/**
 * Represents a IgxDoughnutChartComponent base series.
*/
export declare abstract class IgrRingSeriesBase<P extends IIgrRingSeriesBaseProps = IIgrRingSeriesBaseProps> extends React.Component<P, {}> {
    protected createImplementation(): RingSeriesBase;
    private _dataSource;
    dataSource: Array<any>;
    bindData(): void;
    protected _implementation: any;
    readonly i: RingSeriesBase;
    private onImplementationCreated;
    constructor(props: P);
    protected initializeProperties(): void;
    componentDidMount(): void;
    shouldComponentUpdate(nextProps: any, nextState: any): boolean;
    render(): any;
    static _createFromInternal(internal: any): IgrRingSeriesBase;
    legend: any;
    private _tooltipTemplate;
    private _tooltipContent;
    tooltipTemplate: React.SFC<IChartTooltipProps> | React.Component<IChartTooltipProps>;
    private _tooltipContainerTemplate;
    tooltipContainerTemplate: React.SFC<IChartTooltipProps> | React.Component<IChartTooltipProps>;
    private _ensureTooltipCreated;
    private _ensureTooltipDestroyed;
    private _showDefaultTooltip;
    /**
     * Gets or sets whether default tooltip will be shown.
    */
    showDefaultTooltip: boolean;
    sychronizeCollections(): void;
    /**
 * 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 whether the leader lines are visible.
    */
    leaderLineVisibility: Visibility;
    /**
     * Gets or sets the fill brush.
    */
    leaderLineFill: string;
    /**
     * Gets or sets the stroke brush.
    */
    leaderLineStroke: string;
    /**
     * Gets or sets the stroke thickness.
    */
    leaderLineStrokeThickness: number;
    /**
     * Gets or sets the opacity.
    */
    leaderLineOpacity: number;
    ensureLeaderLineStyle(): void;
    /**
     * 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 its leader line. The default is 6 pixels.
    */
    leaderLineMargin: number;
    /**
     * 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;
    /**
     * 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 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 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 whether all surface interactions with the plot area should be disabled.
    */
    isSurfaceInteractionDisabled: boolean;
    /**
     * Gets or sets the scaling factor of the chart's radius. Value between 0 and 1.
    */
    radiusFactor: number;
    /**
 * Called by the UI framework to provide a UI container for rendering this control.

* @param container  * The UI container element.
*/
    provideContainer(container: any): void;
    private _propertyUpdated;
    private _propertyUpdated_wrapped;
    /**
     * Event raised when a property (including "effective" and non-dependency property) value changes.
    */
    propertyUpdated: (s: IgrRingSeriesBase, e: PropertyUpdatedEventArgs) => void;
}
export interface IIgrRingSeriesBaseProps {
    /**
     * Sets or gets a required unique name for the series.
     * */
    name: string;
    showDefaultTooltip?: boolean;
    tooltipTemplate?: React.SFC<IChartTooltipProps> | React.Component<IChartTooltipProps>;
    tooltipContainerTemplate?: React.SFC<IChartTooltipProps> | React.Component<IChartTooltipProps>;
    dataSource?: any[];
    /**
 * 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 whether the leader lines are visible.
    */
    leaderLineVisibility?: Visibility | string;
    /**
     * Gets or sets the fill brush.
    */
    leaderLineFill?: string;
    /**
     * Gets or sets the stroke brush.
    */
    leaderLineStroke?: string;
    /**
     * Gets or sets the stroke thickness.
    */
    leaderLineStrokeThickness?: number | string;
    /**
     * Gets or sets the opacity.
    */
    leaderLineOpacity?: number | 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 its leader line. The default is 6 pixels.
    */
    leaderLineMargin?: number | string;
    /**
     * 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;
    /**
     * 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 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 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 whether all surface interactions with the plot area should be disabled.
    */
    isSurfaceInteractionDisabled?: boolean | string;
    /**
     * Gets or sets the scaling factor of the chart's radius. Value between 0 and 1.
    */
    radiusFactor?: number | string;
    /**
 * Event raised when a property (including "effective" and non-dependency property) value changes.
*/
    propertyUpdated?: (s: IgrRingSeriesBase, e: PropertyUpdatedEventArgs) => void;
}
