import { IgRect } from "igniteui-react-core/ES2015/IgRect";
import { IgPoint } from "igniteui-react-core/ES2015/IgPoint";
import { IgrAxis } from './igr-axis';
import { CategoryAxisBase } from './CategoryAxisBase';
import { IIgrAxisProps } from './igr-axis';
/**
 * Represents the base class for all IgxDataChartComponent category-based axes.
*/
export declare abstract class IgrCategoryAxisBase<P extends IIgrCategoryAxisBaseProps = IIgrCategoryAxisBaseProps> extends IgrAxis<P> {
    constructor(props: P);
    private _chartLevelData;
    provideData(data: any[]): void;
    private updateDataSource;
    private _dataSource;
    dataSource: any;
    readonly i: CategoryAxisBase;
    /**
 * Gets if the current axis is a continuous rather than a discrete scale
*/
    readonly isContinuous: boolean;
    /**
     * Checks if the axis is of category axis type
    */
    readonly isCategory: boolean;
    /**
     * Gets the number of items in the current category axis items source.
    */
    itemsCount: number;
    /**
     * Gets or sets the amount of space between adjacent categories for the current axis object.
     * The gap is silently clamped to the range [0, 1] when used.
    *
    * Use the `gap` property to configure the spacing between items on a category axis with item spacing.
    *
    * A `gap` of 0 allocates no space between items.  A `gap` of 1 allocates a space between items equal to the width of one item.
    *
    * To set the item spacing to 75% the width of one item, set the `gap` to 0.75, as in this code:
    */
    gap: number;
    /**
     * Gets or sets the amount of overlap between adjacent categories for the current axis object.
     * The overlap is silently clamped to the range [-1, 1] when used.
    *
    * Use the `overlap` property to configure the spacing between items on a category axis with item spacing and more than one series.
    *
    * An `overlap` of 0 places grouped items adjacent to each other.  An `overlap` of 1 places grouped items in the same axis space, completely overlapping.  An `overlap` of -1 places a space between grouped items equal to the width of one item.
    *
    * To place grouped items with 75% overlap, set the `overlap` to 0.75, as in this code:
    */
    overlap: number;
    /**
     * Gets or sets whether the category axis should use clustering display mode even if no series are present that would force clustering mode.
    *
    * `useClusteringMode` applies grouping and spacing to a category axis equivalent to the grouping that occurs when grouping series, such as ColumnSeries, are used.
    *
    * Try setting it on an axis displaying financial series to adjust the spacing on the left and right sides of the axis:
    */
    useClusteringMode: boolean;
    getCategoryBoundingBox(point: IgPoint, useInterpolation: boolean, singularWidth: number): IgRect;
    getCategoryBoundingBoxHelper(point: IgPoint, useInterpolation: boolean, singularWidth: number, isVertical: boolean): IgRect;
    /**
     * Unscales a value from screen space into axis space.
    
    * @param unscaledValue  * The scaled value in screen coordinates to unscale into axis space.
    */
    unscaleValue(unscaledValue: number): number;
    notifySetItem(index: number, oldItem: any, newItem: any): void;
    /**
     * Used to manually notify the axis that the data source has reset or cleared its items.
    
    */
    notifyClearItems(): void;
    notifyInsertItem(index: number, newItem: any): void;
    notifyRemoveItem(index: number, oldItem: any): void;
}
export interface IIgrCategoryAxisBaseProps extends IIgrAxisProps {
    name: string;
    dataSource?: any;
    /**
 * Gets the number of items in the current category axis items source.
*/
    itemsCount?: number | string;
    /**
     * Gets or sets the amount of space between adjacent categories for the current axis object.
     * The gap is silently clamped to the range [0, 1] when used.
    *
    * Use the `gap` property to configure the spacing between items on a category axis with item spacing.
    *
    * A `gap` of 0 allocates no space between items.  A `gap` of 1 allocates a space between items equal to the width of one item.
    *
    * To set the item spacing to 75% the width of one item, set the `gap` to 0.75, as in this code:
    */
    gap?: number | string;
    /**
     * Gets or sets the amount of overlap between adjacent categories for the current axis object.
     * The overlap is silently clamped to the range [-1, 1] when used.
    *
    * Use the `overlap` property to configure the spacing between items on a category axis with item spacing and more than one series.
    *
    * An `overlap` of 0 places grouped items adjacent to each other.  An `overlap` of 1 places grouped items in the same axis space, completely overlapping.  An `overlap` of -1 places a space between grouped items equal to the width of one item.
    *
    * To place grouped items with 75% overlap, set the `overlap` to 0.75, as in this code:
    */
    overlap?: number | string;
    /**
     * Gets or sets whether the category axis should use clustering display mode even if no series are present that would force clustering mode.
    *
    * `useClusteringMode` applies grouping and spacing to a category axis equivalent to the grouping that occurs when grouping series, such as ColumnSeries, are used.
    *
    * Try setting it on an axis displaying financial series to adjust the spacing on the left and right sides of the axis:
    */
    useClusteringMode?: boolean | string;
}
