import Component from '@glimmer/component';
import type { EuiFormControlLayoutSignature } from './eui-form-control-layout';
import type { EuiRangeArgs } from './eui-range';
import type { EuiRangeInputArgs, EuiRangeInputSignature } from './eui-range-input';
import type { EuiRangeLevel } from './eui-range-levels';
import type { EuiRangeTick } from './eui-range-ticks';
export type ValueMember = number | string;
export interface EuiDualRangeArgs {
    value: [ValueMember, ValueMember];
    onBlur?: (event: FocusEvent) => void;
    onFocus?: (event: FocusEvent) => void;
    onChange: (values: [ValueMember, ValueMember], isValid: boolean, event: Event | MouseEvent | KeyboardEvent) => void;
    fullWidth?: boolean;
    isInvalid?: boolean;
    /**
     * Create colored indicators for certain intervals
     */
    levels?: EuiRangeLevel[];
    /**
     * Shows static min/max labels on the sides of the range slider
     */
    showLabels?: boolean;
    /**
     * Pass `true` to displays an extra input control for direct manipulation.
     * Pass `'inputWithPopover'` to only show the input but show the range in a dropdown.
     */
    showInput?: EuiRangeArgs['showInput'];
    /**
     * Modifies the number of tick marks and at what interval
     */
    tickInterval?: number;
    /**
     * Specified ticks at specified values
     */
    ticks?: EuiRangeTick[];
    /**
     * Creates an input group with element(s) coming before input.  Will only show if `showInput = inputWithPopover`.
     * `string` | `Component` or an array of these
     */
    prepend?: EuiFormControlLayoutSignature['Blocks']['prepend'];
    /**
     * Creates an input group with element(s) coming after input. Will only show if `showInput = inputWithPopover`.
     * `string` | `Component` or an array of these
     */
    append?: EuiFormControlLayoutSignature['Blocks']['append'];
    /**
     *  Intended to be uses with aria attributes. Some attributes may be overwritten.
     */
    minInputProps?: Partial<EuiRangeInputArgs>;
    /**
     *  Intended to be uses with aria attributes. Some attributes may be overwritten.
     */
    maxInputProps?: Partial<EuiRangeInputArgs>;
    readOnly?: boolean;
    disabled?: boolean;
    isPrependProvided?: boolean;
    isAppendProvided?: boolean;
    isFakeMaxBlock?: boolean;
    isFakeMinBlock?: boolean;
    disable?: boolean;
    ariaDescribedby?: string;
    ariaLabel?: string;
    name?: string;
    id?: string;
    compressed?: boolean;
    showRange?: boolean;
    showTicks?: boolean;
    step?: number;
    min?: number;
    max?: number;
}
export interface EuiDualRangeSignature {
    Element: EuiRangeInputSignature['Element'];
    Args: EuiDualRangeArgs;
    Blocks: {
        prepend: EuiRangeInputSignature['Blocks']['prepend'];
        append: EuiRangeInputSignature['Blocks']['append'];
        min: [number?];
        max: [number?];
    };
}
export default class EuiDualRangeComponent extends Component<EuiDualRangeSignature> {
    min: number;
    max: number;
    step: number;
    fullWidth: boolean;
    compressed: boolean;
    showLabels: boolean;
    showInput: boolean | string;
    showRange: boolean;
    showTicks: boolean;
    levels: EuiRangeLevel[];
    id: string;
    hasFocus: boolean;
    rangeSliderRefAvailable: boolean;
    isPopoverOpen: boolean;
    rangeWidth: number | undefined;
    isVisible: boolean;
    preventPopoverClose: boolean;
    rangeSliderRef: HTMLInputElement | null;
    didInsertRangeSlider(ref: HTMLInputElement | null): void;
    get lowerValue(): ValueMember;
    get upperValue(): ValueMember;
    get lowerValueIsValid(): boolean;
    get upperValueIsValid(): boolean;
    get isValid(): boolean;
    _determineInvalidThumbMovement(newVal: ValueMember, lower: ValueMember, upper: ValueMember, e: Event): void;
    _determineValidThumbMovement(newVal: ValueMember, lower: ValueMember, upper: ValueMember, e: Event): void;
    _determineThumbMovement(newVal: number, e: Event): void;
    _handleOnChange(lower: ValueMember, upper: ValueMember, e: Event): void;
    handleSliderChange(e: Event): void;
    _resetToRangeEnds(e: KeyboardEvent): void;
    _isDirectionalKeyPress(event: KeyboardEvent): boolean;
    handleInputKeyDown(e: KeyboardEvent): void;
    handleLowerInputChange(e: Event): void;
    handleUpperInputChange(e: Event): void;
    _handleKeyDown(value: ValueMember, event: KeyboardEvent): number;
    handleLowerKeyDown(event: KeyboardEvent): void;
    handleUpperKeyDown(event: KeyboardEvent): void;
    calculateThumbPositionStyle(value: number, width?: number): {
        left: string;
    };
    setPreventPopoverClose(value: boolean): void;
    get calculateLowerValueThumbPositionStyle(): {
        left: string;
    };
    get calculateUpperValueThumbPositionStyle(): {
        left: string;
    };
    toggleHasFocus(): void;
    onThumbFocus(e: FocusEvent): void;
    onThumbBlur(e: FocusEvent): void;
    onInputFocus(e: FocusEvent): void;
    onInputBlur(e: FocusEvent): void;
    closePopover(): void;
    onResize(width?: number): void;
    get digitTolerance(): number;
    get showInputOnly(): boolean;
    get canShowDropdown(): boolean;
}
//# sourceMappingURL=eui-dual-range.d.ts.map