import { AfterViewInit, EventEmitter, OnInit, Renderer2 } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
export declare enum SliderType {
    /**
     * Slider with single thumb.
     */
    SLIDER = 0,
    /**
     *  Range slider with multiple thumbs, that can mark the range.
     */
    RANGE = 1,
}
export interface IRangeSliderValue {
    lower: number;
    upper: number;
}
export interface ISliderValueChangeEventArgs {
    oldValue: number | IRangeSliderValue;
    value: number | IRangeSliderValue;
}
/**
 * **Ignite UI for Angular Slider** -
 * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/slider.html)
 *
 * The Ignite UI Slider allows selection in a given range by moving the thumb along the track. The track
 * can be defined as continuous or stepped, and you can choose between single and range slider types.
 *
 * Example:
 * ```html
 * <igx-slider id="slider"
 *            [minValue]="0" [maxValue]="100"
 *            [isContinuous]=true [(ngModel)]="volume">
 * </igx-slider>
 * ```
 */
export declare class IgxSliderComponent implements ControlValueAccessor, OnInit, AfterViewInit {
    private renderer;
    /**
     * An @Input property that sets the value of the `id` attribute.
     * If not provided it will be automatically generated.
     * ```html
     * <igx-slider [id]="'igx-slider-32'" [(ngModel)]="task.percentCompleted" [step]="5" [lowerBound]="20">
     * ```
     */
    id: string;
    /**
     *An @Input property that disables or enables UI interaction.
     *```html
     *<igx-slider #slider [disabled]="'true'" [(ngModel)]="task.percentCompleted" [step]="5" [lowerBound]="20">
     *```
     */
    disabled: boolean;
    /**
     * An @Input property that marks the `IgxSliderComponent` as continuous.
     * By default is considered that the `IgxSliderComponent` is discrete.
     * Discrete `IgxSliderComponent` does not have ticks and does not shows bubble labels for values.
     * ```html
     * <igx-slider #slider [isContinuous]="'true'" [(ngModel)]="task.percentCompleted" [step]="5" [lowerBound]="20">
     * ```
     */
    isContinuous: boolean;
    /**
     * An @Input property that sets the type of the `IgxSliderComponent`. The slider can be SliderType.SLIDER(default) or SliderType.RANGE.
     * ```typescript
     * sliderType: SliderType = SliderType.RANGE;
     * //...
     * ```
     * ```html
     * <igx-slider #slider2 [type]="sliderType" [(ngModel)]="rangeValue" [minValue]="0" [maxValue]="100">
     * ```
     */
    type: SliderType;
    /**
     *An @Input property that sets the duration visibility of thumbs labels. The default value is 750 milliseconds.
     *```html
     *<igx-slider #slider [thumbLabelVisibilityDuration]="3000" [(ngModel)]="task.percentCompleted" [step]="5">
     *```
     */
    thumbLabelVisibilityDuration: number;
    /**
     * An @Input property that sets the incremental/decremental step of the value when dragging the thumb.
     * The default step is 1, and step should not be less or equal than 0.
     * ```html
     * <igx-slider #slider [(ngModel)]="task.percentCompleted" [step]="5">
     * ```
     */
    step: number;
    /**
     * This event is emitted when user has stopped interacting the thumb and value is changed.
     * ```typescript
     * public change(event){
     *    alert("The value has been changed!");
     *}
     * ```
     * ```html
     * <igx-slider (onValueChange)="change($event)" #slider [(ngModel)]="task.percentCompleted" [step]="5">
     * ```
     */
    onValueChange: EventEmitter<ISliderValueChangeEventArgs>;
    /**
     * @hidden
     */
    isActiveLabel: boolean;
    private activeHandle;
    private slider;
    private track;
    private ticks;
    private thumbFrom;
    private thumbTo;
    private _minValue;
    private width;
    private xOffset;
    private xPointer;
    private pPointer;
    private pMin;
    private pMax;
    private hasViewInit;
    private timer;
    private _maxValue;
    private _lowerBound?;
    private _upperBound?;
    private _lowerValue;
    private _upperValue;
    private _onChangeCallback;
    private _onTouchedCallback;
    constructor(renderer: Renderer2);
    /**
     *Returns whether the `IgxSliderComponent` type is RANGE.
     *```typescript
     *@ViewChild("slider")
     *public slider: IgxSliderComponent;
     *ngAfterViewInit(){
     *    let sliderRange = this.slider.isRange;
     *}
     * ```
     */
    readonly isRange: boolean;
    /**
     *Returns the minimal value of the `IgxSliderComponent`.
     *```typescript
     *@ViewChild("slider2")
     *public slider: IgxSliderComponent;
     *ngAfterViewInit(){
     *    let sliderMin = this.slider.minValue;
     *}
     *```
     */
    /**
     * Sets the minimal value for the `IgxSliderComponent`.
     * The default minimal value is 0.
     * ```html
     * <igx-slider [type]="sliderType" [minValue]="56" [maxValue]="100">
     * ```
     */
    minValue: number;
    /**
     * Returns the maximum value for the `IgxSliderComponent`.
     * ```typescript
     *@ViewChild("slider")
     *public slider: IgxSliderComponent;
     *ngAfterViewInit(){
     *    let sliderMax = this.slider.maxValue;
     *}
     * ```
     */
    /**
     * Sets the maximal value for the `IgxSliderComponent`.
     * The default maximum value is 100.
     * ```html
     * <igx-slider [type]="sliderType" [minValue]="56" [maxValue]="256">
     * ```
     */
    maxValue: number;
    /**
     * Returns the lower boundary of the `IgxSliderComponent`.
     *```typescript
     *@ViewChild("slider")
     *public slider: IgxSliderComponent;
     *ngAfterViewInit(){
     *    let sliderLowBound = this.slider.lowerBound;
     *}
     *```
     */
    /**
     * Sets the lower boundary of the `IgxSliderComponent`.
     * If not set is the same as min value.
     * ```html
     * <igx-slider [step]="5" [lowerBound]="20">
     * ```
     */
    lowerBound: number;
    /**
     * Returns the upper boundary of the `IgxSliderComponent`.
     * ```typescript
     *@ViewChild("slider")
     *public slider: IgxSliderComponent;
     *ngAfterViewInit(){
     *    let sliderUpBound = this.slider.upperBound;
     *}
     * ```
     */
    /**
     * Sets the upper boundary of the `IgxSliderComponent`.
     * If not set is the same as max value.
     * ```html
     * <igx-slider [step]="5" [upperBound]="20">
     * ```
     */
    upperBound: number;
    /**
     * Returns the lower value of the `IgxSliderComponent`.
     * ```typescript
     * @ViewChild("slider")
     * public slider: IgxSliderComponent;
     * public lowValue(event){
     *    let sliderLowValue = this.slider.lowerValue;
     *}
     *```
     */
    /**
     *Sets the lower value of the `IgxSliderComponent`.
     *```typescript
     *@ViewChild("slider2")
     *public slider: IgxSliderComponent;
     *public lowValue(event){
     *    this.slider.lowerValue = 120;
     *}
     *```
     */
    lowerValue: number;
    /**
     *Returns the upper value of the `IgxSliderComponent`.
     *```typescript
     *@ViewChild("slider2")
     *public slider: IgxSliderComponent;
     *public upperValue(event){
     *    let upperValue = this.slider.upperValue;
     *}
     *```
     */
    /**
     *Sets the upper value of the `IgxSliderComponent`.
     *```typescript
     *@ViewChild("slider2")
     *public slider: IgxSliderComponent;
     *public upperValue(event){
     *    this.slider.upperValue = 120;
     *}
     *```
     */
    upperValue: number;
    /**
     * Returns the slider value. If the slider is of type SLIDER the returned value is number.
     * If the slider type is RANGE the returned value is object containing lower and upper properties for the values.
     *```typescript
     *@ViewChild("slider2")
     *public slider: IgxSliderComponent;
     *public sliderValue(event){
     *    let sliderVal = this.slider.value;
     *}
     *```
     */
    /**
     * Sets the slider value.
     * If the slider is of type SLIDER the argument is number. By default if no value is set the default value is
     * same as lower upper bound.
     * If the slider type is RANGE the the argument is object containing lower and upper properties for the values.
     * By default if no value is set the default value is for lower value it is the same as lower bound and if no
     * value is set for the upper value it is the same as the upper bound.
     * ```typescript
     *rangeValue = {
     *   lower: 30,
     *   upper: 60
     *};
     * ```
     * ```html
     * <igx-slider [type]="sliderType" [(ngModel)]="rangeValue" [minValue]="56" [maxValue]="256">
     * ```
     */
    value: number | IRangeSliderValue;
    /**
     * @hidden
     */
    ngOnInit(): void;
    /**
     * @hidden
     */
    ngAfterViewInit(): void;
    /**
     * @hidden
     */
    writeValue(value: any): void;
    /**
     * @hidden
     */
    registerOnChange(fn: any): void;
    /**
     * @hidden
     */
    registerOnTouched(fn: any): void;
    /**
     * @hidden
     */
    showThumbsLabels(): void;
    /**
     *
     * @hidden
     */
    onFocus($event: FocusEvent): void;
    /**
     *
     * @hidden
     */
    onPanEnd($event: any): void;
    /**
     *
     * @hidden
     */
    hideThumbLabelsOnBlur(): void;
    /**
     *
     * @hidden
     */
    onKeyDown($event: KeyboardEvent): boolean;
    /**
     *
     * @hidden
     */
    onTap($event: any): void;
    /**
     *
     * @hidden
     */
    update($event: any): void;
    /**
     * @hidden
     */
    hideThumbsLabels(): void;
    private generateTickMarks(color, interval);
    private toggleThumbLabel();
    private getSliderOffset();
    private toFixed(num);
    private positionHandle(handle, position);
    private positionHandlesAndUpdateTrack();
    private closestHandle();
    private setTickInterval();
    private snapValueToStep(value);
    private closestTo(goal, positions);
    private setValues();
    private setSliderWidth();
    private setPointerPosition(e);
    private setSliderOffset();
    private setPointerPercent();
    private valueToFraction(value);
    private fractionToValue(fraction);
    private fractionToPercent(fraction);
    private limit(num);
    private updateTrack();
    private hasValueChanged(oldValue);
    private emitValueChanged(oldValue);
}
/**
 *The IgxSliderModule provides the {@link IgxSliderComponent} inside your application.
 */
export declare class IgxSliderModule {
}
