import { OnInit } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import * as i0 from "@angular/core";
/**
 * @description
 * Directive for the {@link EuiInputNumberComponent}. This directive is used to
 * handle the value changes of the input element and update the value of the
 * directive and the form control. It also implements the ControlValueAccessor
 * interface to allow the directive to be used with reactive forms.
 */
export declare class EuiInputNumberDirective implements ControlValueAccessor, OnInit {
    /**
     * holds a copy of the value
     */
    private value;
    private onChange;
    private elementRef;
    private euiNumberComponent;
    private document;
    private platformId;
    ngOnInit(): void;
    writeValue(obj: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    /**
     * Set the disabled state of the input element.
     *
     * @param isDisabled
     */
    setDisabledState(isDisabled: boolean): void;
    private onTouched;
    /**
     * Handle the value changes of the input element and update the value of the
     * directive and the form control. For large numbers, the value is a string.
     *
     * @param event
     */
    private valueChanges;
    /**
     * Check if a numeric string can be safely converted to a number without
     * losing precision or exceeding JavaScript's maximum safe integer limit.
     * This is important for very large numbers that may be represented
     * as strings to avoid precision loss.
     *
     * @param numString The numeric string to check
     * @return An object indicating if conversion is safe, the reason if not, and the converted value if safe
     */
    private canSafelyConvertToNumber;
    /**
     * Normalize a numeric string by removing leading/trailing zeros and signs,
     * without converting to a number. This helps compare the original and converted
     * strings for equivalence.
     *
     * @param str The numeric string to normalize
     * @returns The normalized string
     */
    private normalizeStringOnly;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiInputNumberDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<EuiInputNumberDirective, "input[euiInputNumber][formControl],input[euiInputNumber][formControlName],input[euiInputNumber][ngModel]", never, {}, {}, never, never, true, never>;
}
//# sourceMappingURL=eui-number-control.directive.d.ts.map