import { EventEmitter, OnInit } from '@angular/core';
import { Visibility } from "igniteui-angular-core";
import { HorizontalAlignment } from "igniteui-angular-core";
import { VerticalAlignment } from "igniteui-angular-core";
import { Axis } from './Axis';
import { AxisLabelsLocation } from './AxisLabelsLocation';
import { AxisTitlePosition } from './AxisTitlePosition';
import { IgxRenderRequestedEventArgs } from './igx-render-requested-event-args';
import { IgxAxisRangeChangedEventArgs } from './igx-axis-range-changed-event-args';
import { IgxAxisAnnotationCollection } from './igx-axis-annotation-collection';
export declare const IgxAxisComponent_PROVIDERS: any[];
/**
 * Represents the base class from which all axis types are derived.
*
* The `IgxAxisComponent` is an array of axis objects.
*
* ```html
* <igx-data-chart
*     [dataSource]="data" >
*     <igx-category-x-axis
* 		label="label"
* 		#xAxis>
*     </igx-category-x-axis>
*     <igx-numeric-y-axis
* 		#yAxis>
*     </igx-numeric-y-axis>
* </igx-data-chart>
* ```
*/
export declare abstract class IgxAxisComponent implements OnInit {
    protected _implementation: any;
    readonly i: Axis;
    private onImplementationCreated;
    constructor();
    readonly axisInternal: Axis;
    protected createImplementation(): Axis;
    ngOnInit(): void;
    name: string;
    provideData(data: any): void;
    private _renderer;
    private _provideRenderer;
    static _createFromInternal(internal: any): IgxAxisComponent;
    /**
 * Gets or sets if the current axis is of category axis type
*/
    readonly isCategory: boolean;
    /**
     * Gets or sets if the current axis is of numeric axis type
    *
    *     Gets or sets if the current axis is of numeric axis type
    */
    readonly isNumeric: boolean;
    /**
     * Gets if the current axis is of angular axis type
    */
    readonly isAngular: boolean;
    /**
     * Gets or sets if the current axis is of radial axis type
    */
    readonly isRadial: boolean;
    /**
     * Gets if the current axis is a vertical axis.
    */
    readonly isVertical: boolean;
    /**
     * Gets or sets if the current axis is sorting data items
    */
    readonly isSorting: boolean;
    /**
     * Gets or sets if the current axis is of date time axis type
    */
    readonly isDateTime: boolean;
    /**
     * Gets or sets if the axis is a piecewise scaling function.
    */
    readonly isPiecewise: boolean;
    /**
     * Gets if the current axis is of category date time axis type
    */
    readonly isCategoryDateTime: boolean;
    /**
     * Gets if the current axis is a continuous rather than a discrete scale
    */
    readonly isContinuous: boolean;
    /**
     * Sets or gets a function which takes an object that produces a formatted label for displaying in the chart.
    *
    * The `formatLabel` function takes an object that produces a formatted label for displaying in the chart.
    *
    * ```html
    * <igx-data-chart [dataSource]="data" >
    *     <igx-category-x-axis
    * 		name="xAxis"
    * 		FormatLabel="xAxis_FormatLabel" />
    * </igx-data-chart>
    * ```
    */
    formatLabel: (item: any) => string;
    /**
     * Gets or sets the Title property.
    *
    * Use `title` property to display the title of the component.
    *
    * ```html
    * <igx-data-chart
    *     [dataSource]="data" >
    *     <igx-category-x-axis
    * 		label="label"
    * 		#xAxis>
    *     </igx-category-x-axis>
    *     <igx-numeric-y-axis
    * 		#yAxis>
    *     </igx-numeric-y-axis>
    *
    * </igx-data-chart>
    * ```
    */
    title: string;
    /**
     * Gets or sets the Stroke property.
     * Null is treated as auto. The axis stroke will be displayed or not based on the axis type and series used with it.
    *
    * Use `stroke` property to set the stroke of the chart.
    *
    * ```html
    * <igx-data-chart
    *     [dataSource]="data" >
    *     <igx-category-x-axis
    * 		label="label"
    * 		stroke="blue"
    * 		#xAxis>
    *     </igx-category-x-axis>
    *     <igx-numeric-y-axis
    * 		#yAxis>
    *     </igx-numeric-y-axis>
    * </igx-data-chart>
    * ```
    */
    stroke: string;
    /**
     * Gets or sets the effective stroke used for the axis.
    */
    actualStroke: string;
    /**
     * Gets or sets the StrokeThickness property.
    *
    * Use `strokeThickness` property for the thickness of the stroke.
    *
    * ```html
    * <igx-data-chart
    *     [dataSource]="data" >
    *     <igx-category-x-axis
    * 		label="label"
    * 		strokeThickness= 5
    * 		#xAxis>
    *     </igx-category-x-axis>
    *     <igx-numeric-y-axis
    * 		#yAxis>
    *     </igx-numeric-y-axis>
    *
    * </igx-data-chart>
    * ```
    */
    strokeThickness: number;
    /**
     * Gets or sets the Strip property.
    *
    * Use `strip` property to set the strip of the chart.
    *
    * ```html
    * <igx-data-chart
    *     [dataSource]="data" >
    *     <igx-category-x-axis
    * 		label="label"
    * 		 strip= "grey"
    * 		#xAxis>
    *     </igx-category-x-axis>
    *     <igx-numeric-y-axis
    * 		#yAxis>
    *     </igx-numeric-y-axis>
    *
    * </igx-data-chart>
    * ```
    */
    strip: string;
    /**
     * Gets or sets the MajorStroke property.
     * Null is treated as auto. Major lines will be displayed or not based on the axis type and series used with it.
    *
    * Gets or sets the `majorStroke` using this property.
    *
    * ```html
    * <igx-data-chart
    *     [dataSource]="data" >
    *     <igx-category-x-axis
    * 		label="label"
    * 		#xAxis>
    *     </igx-category-x-axis>
    *     <igx-numeric-y-axis
    * 	   majorStroke="black"
    * 		#yAxis>
    *     </igx-numeric-y-axis>
    * </igx-data-chart>
    * ```
    */
    majorStroke: string;
    /**
     * Gets or sets the ActualMajorStroke property.
    *
    * The `actualMajorStroke` property is used for ActualMajorStroke of the axis.
    */
    actualMajorStroke: string;
    /**
     * Gets or sets the MajorStrokeThickness property.
    *
    * Gets or sets the `majorStrokeThickness` using this property.
    *
    * ```html
    * <igx-data-chart
    *     [dataSource]="data" >
    *     <igx-category-x-axis
    * 		label="label"
    * 		#xAxis>
    *     </igx-category-x-axis>
    *     <igx-numeric-y-axis
    * 	  majorStrokeThickness="1"
    * 		#yAxis>
    *     </igx-numeric-y-axis>
    * </igx-data-chart>
    * ```
    */
    majorStrokeThickness: number;
    /**
     * Gets or sets the MinorStroke property.
    *
    * Gets or sets the minorStroke thickness using `minorStrokeThickness` property.
    *
    * ```html
    * <igx-data-chart
    *     [dataSource]="data" >
    *     <igx-category-x-axis
    * 		label="label"
    * 		#xAxis>
    *     </igx-category-x-axis>
    *     <igx-numeric-y-axis
    * 	 minorStrokeThickness="1"
    * 		#yAxis>
    *     </igx-numeric-y-axis>
    * </igx-data-chart>
    * ```
    */
    minorStroke: string;
    /**
     * Gets or sets the ActualMinorStroke property.
    *
    * The `actualMinorStroke` property is used for ActualMinorStroke of the axis.
    */
    actualMinorStroke: string;
    /**
     * Gets or sets the MinorStrokeThickness property.
    */
    minorStrokeThickness: number;
    /**
     * Gets or sets the TickStroke property.
    *
    * Use `tickStroke` property for the color of the tickmarks.
    *
    * ```html
    * <igx-data-chart
    *     [dataSource]="data" >
    *     <igx-category-x-axis
    * 		label="label"
    * 		tickStroke="black"
    * 		#xAxis>
    *     </igx-category-x-axis>
    *     <igx-numeric-y-axis
    * 		#yAxis>
    *     </igx-numeric-y-axis>
    * </igx-data-chart>
    * ```
    */
    tickStroke: string;
    /**
     * Gets or sets the TickStrokeThickness property.
    *
    * Use `tickStrokeThickness` property for thickness of the stroke tickmarks.
    *
    * ```html
    * <igx-data-chart
    *     [dataSource]="data" >
    *     <igx-category-x-axis
    * 		label="label"
    * 		tickStrokeThicknes="2"
    * 		#xAxis>
    *     </igx-category-x-axis>
    *     <igx-numeric-y-axis
    * 		#yAxis>
    *     </igx-numeric-y-axis>
    *
    * </igx-data-chart>
    * ```
    */
    tickStrokeThickness: number;
    /**
     * Gets or sets the TickLength property.
    *
    * Use `tickLength` property for The length of the tickmarks to display for this axis.
    *
    * ```html
    * <igx-data-chart
    *     [dataSource]="data" >
    *     <igx-category-x-axis
    * 		label="label"
    * 		tickLength="5"
    * 		#xAxis>
    *     </igx-category-x-axis>
    *     <igx-numeric-y-axis
    * 		#yAxis>
    *     </igx-numeric-y-axis>
    *
    * </igx-data-chart>
    * ```
    */
    tickLength: number;
    /**
     * Gets or sets the IsDisabled property. If true, the axis will not be rendered.
    *
    * The `isDisabled` property is used to decide if the axis will not be rendered.
    */
    isDisabled: boolean;
    /**
     * Gets or sets the IsInverted property.
    *
    * Gets or sets the `isInverted` property.
    *
    * ```html
    * <igx-data-chart
    *     [dataSource]="data" >
    *     <igx-category-x-axis
    * 		label="label"
    * 		isInverted= true
    * 		#xAxis>
    *     </igx-category-x-axis>
    *     <igx-numeric-y-axis
    * 		#yAxis>
    *     </igx-numeric-y-axis>
    *
    * </igx-data-chart>
    * ```
    */
    isInverted: boolean;
    /**
     * Gets or sets whether to use more advanced heuristics when determining the initial number of labels to render, before resolving collisions, etc.
    *
    * Use `useEnhancedIntervalManagement` property to gets/sets whether to use more advanced heuristics when determining the initial number of labels to render,
    * before resolving collisions, etc.
    */
    useEnhancedIntervalManagement: boolean;
    /**
     * Gets or sets the mininum desired characters to be displayed for horizontal axes when using advanced label heuristics. -1 will attempt to adjust the interval to precisely fit the horizontal labels.
    *
    * The `enhancedIntervalMinimumCharacters` property is used to set the mininum desired characters to be displayed for horizontal axes when using advanced label heuristics.
    *
    * ```html
    * <igx-data-chart
    *     [dataSource]="data" >
    *     <igx-category-x-axis
    * 		label="label"
    * 		#xAxis>
    *     </igx-category-x-axis>
    *     <igx-numeric-y-axis
    * 		enhancedIntervalMinimumCharacters=5
    * 		#yAxis>
    *     </igx-numeric-y-axis>
    *
    * </igx-data-chart>
    * ```
    */
    enhancedIntervalMinimumCharacters: number;
    /**
     * Gets or sets the text style to use for axis labels.
    *
    * The `labelTextStyle` property Overrides the style of the text used for the axis labels.
    */
    labelTextStyle: string;
    /**
     * The color of the {0}.
    *
    * The `labelTextColor` property Overrides the color of the text used for the axis labels.
    */
    labelTextColor: string;
    /**
     * Gets or sets the location of the {0}.
    *
    * The `Location` property is used for the location.
    */
    labelLocation: AxisLabelsLocation;
    /**
     * Gets or sets the visibility of the {0}.
    *
    * The `Visibility` property is used for the visibility of the axis.
    */
    labelVisibility: Visibility;
    /**
     * Gets or sets whether the first label is displayed when the zoom level is set to 1.
    *
    * The `ShowFirstLabel` is used to check whether the first label is displayed when the zoom level is set to 1.
    */
    labelShowFirstLabel: boolean;
    /**
     * Gets or sets the angle of the {0}.
    *
    * The `Angle` property is used to set the angle of the axis.
    */
    labelAngle: number;
    /**
     * Distance between the axis and the edge of the control.
    *
    * The `Extent` property is used for the extent.
    */
    labelExtent: number;
    /**
     * Margin applied to the left of the {0}.
    *
    * The `labelLeftMargin` property is used for the left margin of the labels.
    */
    labelLeftMargin: number;
    /**
     * Margin applied to the right of the {0}.
    *
    * The `labelRightMargin` property is used for the right margin of the labels.
    */
    labelRightMargin: number;
    /**
     * Margin applied above the {0}.
    *
    * The `labelTopMargin` property is used for the top margin of the labels.
    */
    labelTopMargin: number;
    /**
     * Margin applied below the {0}.
    *
    * The `labelBottomMargin` is used to set the bottom margin of the labels.
    */
    labelBottomMargin: number;
    /**
     * Gets or sets the horizontal alignment of the {0}.
    *
    * The `HorizontalAlignment` property is used for the horizontal alignment.
    */
    labelHorizontalAlignment: HorizontalAlignment;
    /**
     * Gets or sets the vertical alignment of the {0}.
    *
    * The `VerticalAlignment` property is used for the vertical alignment of the axis.
    */
    labelVerticalAlignment: VerticalAlignment;
    ensureLabelSettings(): void;
    /**
     * Gets or sets the CrossingAxis property.
    *
    * The `crossingAxis` property is used for CrossingAxis .
    *
    * ```html
    * <igx-data-chart
    *     [dataSource]="data" >
    *     <igx-category-x-axis
    * 		label="label"
    * 		#xAxis>
    *     </igx-category-x-axis>
    *     <igx-numeric-y-axis
    * 		crossingAxis= "xAxis"
    * 		crossingValue= 700
    * 		#yAxis>
    *     </igx-numeric-y-axis>
    * </igx-data-chart>
    * ```
    */
    crossingAxis: IgxAxisComponent;
    /**
     * Gets or sets the CrossingValue property.
    *
    * The `crossingValue` property is used for CrossingValue of the axis.
    *
    * ```html
    * <igx-data-chart
    *     [dataSource]="data" >
    *     <igx-category-x-axis
    * 		label="label"
    * 		#xAxis>
    *     </igx-category-x-axis>
    *     <igx-numeric-y-axis
    * 		crossingAxis= "xAxis"
    * 		crossingValue= 700
    * 		#yAxis>
    *     </igx-numeric-y-axis>
    * </igx-data-chart>
    * ```
    */
    crossingValue: any;
    /**
     * Gets or sets the title position relative to the axis labels.
    */
    titlePosition: AxisTitlePosition;
    /**
     * Gets or sets the text style to use for axis labels.
    *
    * The `labelTextStyle` property Overrides the style of the text used for the axis labels.
    */
    titleTextStyle: string;
    /**
     * The color of the {0}.
    *
    * The `labelTextColor` property Overrides the color of the text used for the axis labels.
    */
    titleTextColor: string;
    /**
     * Gets or sets the location of the {0}.
    *
    * The `Location` property is used for the location.
    */
    titleLocation: AxisLabelsLocation;
    /**
     * Gets or sets the visibility of the {0}.
    *
    * The `Visibility` property is used for the visibility of the axis.
    */
    titleVisibility: Visibility;
    /**
     * Gets or sets whether the first label is displayed when the zoom level is set to 1.
    *
    * The `ShowFirstLabel` is used to check whether the first label is displayed when the zoom level is set to 1.
    */
    titleShowFirstLabel: boolean;
    /**
     * Gets or sets the angle of the {0}.
    *
    * The `Angle` property is used to set the angle of the axis.
    */
    titleAngle: number;
    /**
     * Distance between the axis and the edge of the control.
    *
    * The `Extent` property is used for the extent.
    */
    titleExtent: number;
    /**
     * Margin applied to the left of the {0}.
    *
    * The `labelLeftMargin` property is used for the left margin of the labels.
    */
    titleLeftMargin: number;
    /**
     * Margin applied to the right of the {0}.
    *
    * The `labelRightMargin` property is used for the right margin of the labels.
    */
    titleRightMargin: number;
    /**
     * Margin applied above the {0}.
    *
    * The `labelTopMargin` property is used for the top margin of the labels.
    */
    titleTopMargin: number;
    /**
     * Margin applied below the {0}.
    *
    * The `labelBottomMargin` is used to set the bottom margin of the labels.
    */
    titleBottomMargin: number;
    /**
     * Gets or sets the horizontal alignment of the {0}.
    *
    * The `HorizontalAlignment` property is used for the horizontal alignment.
    */
    titleHorizontalAlignment: HorizontalAlignment;
    /**
     * Gets or sets the vertical alignment of the {0}.
    *
    * The `VerticalAlignment` property is used for the vertical alignment of the axis.
    */
    titleVerticalAlignment: VerticalAlignment;
    ensureTitleSettings(): void;
    private _annotations;
    /**
     * Gets the current annotations for the axis.
    */
    annotations: IgxAxisAnnotationCollection;
    /**
     * Gets or sets the coercion methods to use when loading data from data sources.
     * Should be specified before setting any member paths, if being used. Setting it later
     * will not cause data to be re-imported into the chart.
    *
    * The	`coercionMethods` methods is to use when loading data from data sources. Should be specified before setting any member paths, if being used.
    * Setting it later will not cause data to be reimported into the chart.
    */
    coercionMethods: any;
    /**
     * Gets or sets whether the series should expect that properties in its items source may be functions that need to be
     * evaluated to yield their value. This defaults to false, as there will be a subtle performance impact to using this feature.
     * This value must be set before assigning an item's source to take effect.
    */
    expectFunctions: boolean;
    /**
     * Gets or sets the axis label format string.
    *
    * The `label` property is used for label mapping of the axis labels.
    */
    label: any;
    protected __p: string;
    protected _hasUserValues: Set<string>;
    protected readonly hasUserValues: Set<string>;
    protected __m(propertyName: string): void;
    protected _stylingContainer: any;
    protected _stylingParent: any;
    protected _inStyling: boolean;
    protected _styling(container: any, component: any, parent?: any): void;
    /**
 * Renders the axis with no animation.

*/
    renderAxis(): void;
    /**
     * If using enhanced interval management and precise interval fitting, this will reset the cached maximum label width, and recalculate using the current labels.
    
    */
    resetCachedEnhancedInterval(): void;
    getItemValue(item: any, memberPathName: string): any;
    /**
     * Gets the label for a data item.
    
    * @param value  * The unscaled value to get a label for.
    */
    getValueLabel(value: number): string;
    /**
     * Scales a value from axis space into screen space.
    
    * @param unscaledValue  * The unscaled axis value to scale.
    */
    scaleValue(unscaledValue: number): number;
    private _rangeChanged;
    /**
     * Occurs when the axis range changes.
    */
    readonly rangeChanged: EventEmitter<{
        sender: any;
        args: IgxAxisRangeChangedEventArgs;
    }>;
    private _renderRequested;
    /**
     * This event is raised every time a render has been requested from a series.
    */
    readonly renderRequested: EventEmitter<{
        sender: any;
        args: IgxRenderRequestedEventArgs;
    }>;
    protected _zoneRunner: (act: () => void) => void;
    protected _runInZone(act: () => void): void;
}
