import { ElementRef, AfterViewInit, OnDestroy, QueryList, OnInit } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { CdkDragEnd, CdkDragMove, Point } from '@angular/cdk/drag-drop';
import * as i0 from "@angular/core";
import * as i1 from "@eui/components/shared";
export interface IEuiSliderValues {
    start: number;
    end?: number | null;
}
type SliderHandler = 'start' | 'end';
export declare class EuiSliderComponent implements ControlValueAccessor, AfterViewInit, OnDestroy, OnInit {
    /**
     * @description
     * Computes and returns the CSS classes for the component based on its current state.
     *
     * @returns {string} Space-separated string of CSS class names
     */
    get cssClasses(): string;
    /**
     * Initial value used by the slider.
     * @type {IEuiSliderValues}
     * @defaultValue { start: 0, end: 0 }
     */
    value: IEuiSliderValues;
    /**
     * The lowest value in the range of permitted values.
     *
     * @default 0
     */
    min: number;
    /**
     * The greatest value in the range of permitted values.
     *
     * @default 100
     */
    max: number;
    /**
     * Number that specifies the granularity that the value must adhere to.
     *
     * @default 1
     */
    step: number;
    /**
     * Wheter a tooltip should be displayed when the handlers are hovered.
     *
     * @default true
     */
    hasTooltip: boolean;
    /**
     * Wheter a ticks should be displayed at each step interval.
     *
     * @default false
     */
    hasTicks: boolean;
    /**
     * Wheter the value should be displayed on the top right of the track.
     *
     * @default true
     */
    hasValueIndicator: boolean;
    /**
     * Wheter a second should be display to allow to select a range.
     *
     * @default false
     */
    hasRange: boolean;
    /**
     * Method that allows to format the value display.
     *
     * @return The formatted string
     * @defaultValue (value: number) => `${value}`
     */
    formatValue: (value: number) => string;
    /**
     * @description
     * The label for the slider, used for accessibility.
     * @default 'eUI slider'.
     */
    ariaLabel: string;
    /**
     * @description
     * The label for the end slider in case there is a range, used for accessibility.
     * @default 'end eUI slider'.
     */
    endAriaLabel: string;
    /**
     * @description
     * The unique identifier for the slider.
     * This is used for accessibility and to link the slider with its label.
     * @default 'eui-slider-' + uniqueId()
     */
    sliderId: string;
    sliderContainer: ElementRef;
    trackActive: ElementRef;
    startHandler: ElementRef;
    startHandlerContainer: ElementRef;
    endHandler: ElementRef;
    endHandlerContainer: ElementRef;
    handlers: QueryList<ElementRef>;
    startInputRange: ElementRef;
    endInputRange: ElementRef;
    inputRanges: QueryList<ElementRef>;
    isDisabled: boolean;
    initValue: {
        start: Point;
        end: Point;
    };
    ticks: {
        value: number;
        position: string;
    }[];
    private baseStatesDirective;
    private control;
    private cd;
    private destroy$;
    private keyboardSubscription;
    private resizeObserver;
    /**
     * Position where the user clicked to start the drag of an handler
     */
    private dragOffsetX;
    constructor();
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    get formattedStartValue(): string;
    get formattedEndValue(): string;
    /**
     * Drag handler
     *
     * @param handlerId Dragged handler
     * @param e Event
     */
    onDragMoved(handlerId: SliderHandler, e: CdkDragMove): void;
    /**
     * Drag end handler
     *
     * @param e
     */
    onDragEnded(e: CdkDragEnd): void;
    writeValue(value: IEuiSliderValues): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState(isDisabled: boolean): void;
    /**
     * Constrains the position of a handler to the position of the other one.
     * Start handler cannot go after end handler. End handler cannot go before start handler.
     *
     * @param handlerId Dragged handler
     * @returns A function constraining the position.
     */
    constrainPosition: (handlerId: SliderHandler) => ((point: Point) => Point);
    /**
     * Click on track handler
     *
     * @param e Click event
     */
    onTrackClick(e: MouseEvent): void;
    /**
     * Calculates the positon of an handler for a given value.
     *
     * @param handlerId Handler to position
     * @param value Value on which calculate the position
     */
    private setPositionValue;
    /**
     * Calculate the size of the active track between two handlers
     */
    private calculateActiveTrack;
    /**
     * Generates the ticks based on the step option.
     */
    private generateTicks;
    private onChange;
    private onTouched;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiSliderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EuiSliderComponent, "eui-slider", never, { "value": { "alias": "value"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "step": { "alias": "step"; "required": false; }; "hasTooltip": { "alias": "hasTooltip"; "required": false; }; "hasTicks": { "alias": "hasTicks"; "required": false; }; "hasValueIndicator": { "alias": "hasValueIndicator"; "required": false; }; "hasRange": { "alias": "hasRange"; "required": false; }; "formatValue": { "alias": "formatValue"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "endAriaLabel": { "alias": "endAriaLabel"; "required": false; }; "sliderId": { "alias": "sliderId"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.BaseStatesDirective; inputs: { "euiPrimary": "euiPrimary"; "euiDanger": "euiDanger"; "euiVariant": "euiVariant"; }; outputs: {}; }]>;
    static ngAcceptInputType_min: unknown;
    static ngAcceptInputType_max: unknown;
    static ngAcceptInputType_step: unknown;
    static ngAcceptInputType_hasTooltip: unknown;
    static ngAcceptInputType_hasTicks: unknown;
    static ngAcceptInputType_hasValueIndicator: unknown;
    static ngAcceptInputType_hasRange: unknown;
}
export {};
//# sourceMappingURL=eui-slider.component.d.ts.map