import { EventEmitter, OnInit, AfterViewInit, Renderer2, ElementRef, ChangeDetectorRef, QueryList } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { SliderHandComponent } from './slider-hand';
import { SliderTrackerComponent } from './slider-tracker';
import { Hand, Info, Scope, CoreValue } from './slider.config';
import { SliderService } from './slider.service';
export declare class SliderComponent implements OnInit, AfterViewInit, ControlValueAccessor {
    private render;
    private _cd;
    private el;
    private service;
    /**
     * If we can use input box to change the slider value, input value should be larger than
     * min, less than max and multiple of the step.
     * Only can use when range is false
     * @default 0
     */
    input: boolean;
    spinner: boolean;
    /**
     * Min value of slider
     * @default 0
     */
    min: number;
    /**
     * Max value of slider
     * @default 100
     */
    max: number;
    /**
     * If the slider has double hands
     * @default false
     */
    range: boolean;
    /**
     * Whether the slider is disabled or not
     * @default false
     */
    disabled: boolean;
    /**
     * The step of dragging
     * @default 1
     */
    step: number;
    /**
     * Core value of the slider
     * @default 0
     */
    value: CoreValue;
    /**
     * Orientation of the slider
     * @default horizontal
     */
    orientation: string;
    private _orientation;
    /**
     * The event emitted when slider value changes, emit the value of slider
     */
    change: EventEmitter<CoreValue>;
    /**
     * The hands init position
     * @docs-private
     */
    hands: Hand[];
    /**
     * Range of the slider
     * @docs-private
     */
    limitMove: number;
    /**
     * Selected of the tracker
     * @docs-private
     */
    trackerSelected: number;
    /**
     * Position of the tracker
     * @docs-private
     */
    trackerPos: number;
    /**
     * Dragging hands copy
     * @docs-private
     */
    private sliderHands;
    /**
     * Current dragging hand
     * @docs-private
     */
    private _hand;
    /**
     * Mark the current hand index
     * @docs-private
     */
    private _currentHand;
    /**
     * If move one hand over the other
     * @docs-private
     */
    private _handRange;
    /**
     * Slider Component
     * @docs-private
     */
    _slider: ElementRef;
    /**
     * slider-tracker Component
     * @docs-private
     */
    _tracker: SliderTrackerComponent;
    /**
     * slider-hand Components
     * @docs-private
     */
    _hands: QueryList<SliderHandComponent>;
    constructor(render: Renderer2, _cd: ChangeDetectorRef, el: ElementRef, service: SliderService);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    /**
     * Dragging hands copy, because the hands'order change when dragging cross,
     * so keep a init order here
     * @docs-private
     */
    afterView(): void;
    /**
     * Set default value
     * @docs-private
     */
    setDefaultValue(): void;
    /**
     * value check
     * @docs-private
     */
    valueCheck(v: any, option: number): any;
    /**
     * 输入值校验
     * @docs-private
     */
    inputValidate(): void;
    /**
     * Initialize the slider and the sub components
     * @docs-private
     */
    initSlider(): void;
    /**
     * 根据输入值计算tracker的width
     * @param value input value
     * @docs-private
     */
    getWidthFromValue(value: CoreValue): number;
    /**
     * 输入框输入slider value，限于range为false
     * @docs-private
     */
    inputValue(v: any): void;
    /**
     * 更新slider
     * @param info Info
     * @docs-private
     */
    updateSlider(info: Info): void;
    /**
     * emit change
     * @docs-private
     */
    emitChange(): void;
    /**
     * rail click handler
     * @docs-private
     */
    clickHandler(e: any): void;
    /**
     * 算法适用于range为true时计算hand的位置
     * @param initX 当前移动的hand
     * @param endX 当前hand移动到的新位置
     * @param scope Scope 两个hand的原始位置
     * @docs-private
     */
    getNearest(initX: number, endX: number, scope: Scope): void;
    /**
     * The method to be called in order to update ngModel.
     * Now `ngModel` binding is not supported in multiple selection mode.
     */
    private _onModelChange;
    /**
     * Registers a callback that will be triggered when the value has changed.
     * Implemented as part of ControlValueAccessor.
     * @param fn On change callback function.
     */
    registerOnChange(fn: Function): void;
    /** onTouch function registered via registerOnTouch (ControlValueAccessor). */
    private _onTouch;
    /**
     * Registers a callback that will be triggered when the control has been touched.
     * Implemented as part of ControlValueAccessor.
     * @param fn On touch callback function.
     */
    registerOnTouched(fn: Function): void;
    /**
     * Sets the model value. Implemented as part of ControlValueAccessor.
     * @param {any} value - value to be set to the model.
     */
    writeValue(value: CoreValue): void;
    /**
     * Toggles the disabled state of the component. Implemented as part of ControlValueAccessor.
     * @param {boolean} isDisabled - Whether the component should be disabled.
     */
    setDisabledState(isDisabled: boolean): void;
    /**
     * update form model value and mark for check
     * @docs-private
     */
    _markForCheck(): void;
}
