import * as _angular_core from '@angular/core';
import { OnInit, OnDestroy, DoCheck, OnChanges, InputSignal, ElementRef, Renderer2, SimpleChanges } from '@angular/core';
import { NumberInput, BooleanInput } from '@angular/cdk/coercion';
import Cleave from 'cleave.js';
import { InputDirective } from '@eui/components/shared';
import * as i1 from '@eui/components/directives';
import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
interface CleaveInstance extends Cleave {
initSwapHiddenInput?: () => void;
initNumeralFormatter?: () => void;
initTimeFormatter?: () => void;
initDateFormatter?: () => void;
initPhoneFormatter?: () => void;
updateCreditCardPropsByValue?: () => void;
updateValueState?: () => void;
callOnValueChanged?: () => void;
onChange?: (event?: Event) => void;
onCut?: (event?: Event) => void;
onFocus?: (event?: Event) => void;
onCopy?: (event?: Event) => void;
onKeyDown?: (event?: Event) => void;
onChangeListener?: (event?: Event) => void;
onKeyDownListener?: (event?: Event) => void;
onFocusListener?: (event?: Event) => void;
onCutListener?: (event?: Event) => void;
onCopyListener?: (event?: Event) => void;
}
/**
* @description
* Input number component that allows the user to enter a number. It supports number
* formatting and validation. It uses Cleave.js to format the number. It depends on
* the {@link LocaleService} to get the current locale and format the number accordingly.
*
* It supports the following attributes:
* - {@link min}: The minimum number can be entered. Blocks user's input if not in range.
* - {@link max}: The maximum number can be entered. Blocks user's input if not in range.
* - {@link leadingZero}: Adds leading zero to a number. Formatting will not work.
* - {@link isInvalid}: Sets the invalid state of the input element.
* - {@link fractionDigits}: Determines how many digits to show after the decimal point.
* - {@link digits}: Determines how many digits to show before the decimal point.
* - {@link fillFraction}: Fills the decimal part with zeros in case it's less than the fractionDigits.
* - {@link roundUp}: Rounds a number with more than two decimals UP.
* - {@link noFormat}: Disables the number formatting. It will be treated as a plain number.
* - {@link value}: The value of the input element.
* - {@link placeholder}: The placeholder value of the input element.
* - {@link euiClearable}: Adds a clear button to the input element.
* - {@link euiLoading}: Adds a loading spinner to the input element.
* - {@link readonly}: Disables the input element.
* - {@link disabled}: Disables the input element.
* - {@link euiDanger}: Sets the invalid state of the input element.
* - {@link euiSuccess}: Sets the success state of the input element.
* - {@link euiWarning}: Sets the warning state of the input element.
* - {@link euiInfo}: Sets the info state of the input element.
* - {@link euiPrimary}: Sets the primary state of the input element.
* - {@link euiSecondary}: Sets the secondary state of the input element.
*
* @usageNotes
* ### Basic Usage
* ```html
*
* ```
*
* ### With Min/Max Range
* ```html
*
* ```
*
* ### Currency Format
* ```html
*
* ```
*
* ### Accessibility
* - Use associated `