import { ChangeDetectorRef, DoCheck, ElementRef, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges } from '@angular/core';
import { ControlValueAccessor, NgControl } from '@angular/forms';
import { LocaleService } from '@eui/core';
import { InputDirective } from '../../input.directive';
import * as i0 from "@angular/core";
export declare class EuiInputNumberComponent extends InputDirective implements OnInit, OnDestroy, DoCheck, OnChanges, ControlValueAccessor {
    protected control: NgControl;
    protected _elementRef: ElementRef;
    protected _renderer: Renderer2;
    private cd;
    private localeService;
    /**
     * The minimum number can be entered. Blocks user's input if not in range.
     */
    private min;
    /**
     * The maximum number can be entered. Blocks user's input if not in range.
     */
    private max;
    /** Adds leading zero to a number. Formatting will not work.
     *      e.g. with leadingZero=3 input number 5 => 005
     */
    get isInvalid(): any;
    set isInvalid(state: any);
    get cssClasses(): any;
    /** how many digits for the decimal part */
    get fractionDigits(): any;
    set fractionDigits(value: any);
    /** how many digits for the integer part */
    get digits(): any;
    set digits(value: any);
    get fillFraction(): any;
    set fillFraction(value: any);
    protected _isInvalid: boolean;
    styleClass: string;
    protected type: string;
    value: string;
    /** holds instance of cleave */
    private cleaveInstance;
    /** options for the Cleave instance */
    private options;
    private _fractionDigits;
    private _digits;
    private _fillFraction;
    constructor(control: NgControl, _elementRef: ElementRef, _renderer: Renderer2, cd: ChangeDetectorRef, localeService: LocaleService);
    ngOnInit(): void;
    ngDoCheck(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    onChange: any;
    onTouched: any;
    /**
     * sets the number for cleave instance and div element (read only mode)
     * @param val the number formatted or not
     */
    writeValue(val: string): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState(isDisabled: boolean): void;
    protected onKeyDown(e: KeyboardEvent): void;
    protected onFocusout(e: Event): void;
    protected setInvalid(state?: any): void;
    /**
     * @Override setPlaceholder setPlaceholderAttribute of InputDirective
     * Updates the placeholder value based on current number format and given value.
     * If value passed contains characters it doesn't format placeholder.
     * */
    protected setPlaceholderAttribute(value?: string | number): void;
    /**
     * instantiate Cleave.js
     */
    private initCleave;
    /**
     * Updates the cleave options by destroying the current instance and creating another one while keeping the previous
     * value.
     */
    private updateOptions;
    /**
     * Callback function of the Cleave instance that is invoked when value is changed.
     * @param event type of CleaveEventOnChange
     */
    private onValueChanged;
    /**
     * responsible to extract all locale information needed to build CleaveOptions related to number format.
     * @param id The id of the locale
     */
    private getCleaveOptsBasedOnLocale;
    /**
     * Applies the fill of decimal part with zeros in case decimal part of given number has
     * size less than the max fraction digits.
     * @param number
     * @private
     */
    private applyFractionFill;
    /**
     * Parses a given formatted number and returns it as a number.
     * @param value The formatted number you want to parse e.g. 111,888.22
     * @param currentLocaleState Use previous locale state to parse the value. By default is false
     * @private
     */
    private parseNumber;
    /**
     * checks whether the min symbol is allowed. It is allowed when minus symbol
     * provided and min input is undefined or min provided and is negative.
     * @param key The key string coming from an event
     */
    private isMinusAllowed;
    /**
     * check whether the key entered is inside the min and
     * max range. Returns true if it's out of range.
     * @param e A keyboard event
     */
    private isOutSideRange;
    static ɵfac: i0.ɵɵFactoryDef<EuiInputNumberComponent, [{ optional: true; self: true; }, null, null, null, null]>;
    static ɵcmp: i0.ɵɵComponentDefWithMeta<EuiInputNumberComponent, "input[euiInputNumber]:not([euiInputCheckBox])", never, { "min": "min"; "max": "max"; "isInvalid": "isInvalid"; "fractionDigits": "fractionDigits"; "digits": "digits"; "fillFraction": "fillFraction"; "styleClass": "styleClass"; "value": "value"; }, {}, never, never>;
}
