import { BooleanInput } from '@angular/cdk/coercion';
import { ChangeDetectorRef, ElementRef, EventEmitter, TemplateRef } from '@angular/core';
import { ControlValueAccessor, NgControl } from '@angular/forms';
import { Destroy } from '@deja-js/component/core';
import { IRange, IStepRangeEvent } from './range.interface';
import * as i0 from "@angular/core";
export declare class DejaRangeComponent extends Destroy implements ControlValueAccessor {
    private changeDetectorRef;
    private elementRef;
    control: NgControl;
    readonly select: EventEmitter<any>;
    readonly errorFeedback: EventEmitter<any>;
    step: number | number[] | ((event: IStepRangeEvent) => number);
    selected: number;
    rangeTemplate: TemplateRef<unknown>;
    separatorTemplate: TemplateRef<unknown>;
    private minimumRangePercentage;
    private _readOnly;
    private _disabled;
    private _ranges;
    constructor(changeDetectorRef: ChangeDetectorRef, elementRef: ElementRef<HTMLElement>, control: NgControl);
    onResize(): void;
    registerOnChange(fn: () => void): void;
    registerOnTouched(fn: () => void): void;
    get ranges(): IRange[];
    set ranges(ranges: IRange[]);
    set disabled(value: BooleanInput);
    get disabled(): BooleanInput;
    set readOnly(value: BooleanInput);
    get readOnly(): BooleanInput;
    writeValue(ranges: IRange[]): void;
    setDisabledState(isDisabled: boolean): void;
    add(): void;
    remove(): void;
    /** Force control to rebind */
    refresh(): void;
    onSelect(e: Event, index: number): void;
    onMouseDown($event: MouseEvent, index: number): void;
    _onChangeCallback: (_a?: unknown) => void;
    _onTouchCallback: () => void;
    protected trackBy(_index: number, range: IRange): unknown;
    private toStep;
    static ɵfac: i0.ɵɵFactoryDeclaration<DejaRangeComponent, [null, null, { optional: true; self: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DejaRangeComponent, "deja-range", never, { "step": "step"; "selected": "selected"; "disabled": "disabled"; "readOnly": "readOnly"; }, { "select": "select"; "errorFeedback": "errorFeedback"; }, ["rangeTemplate", "separatorTemplate"], never, false>;
}
