import * as _angular_core from '@angular/core';
import { OnChanges, ElementRef, SimpleChanges } from '@angular/core';
import { ControlValueAccessor, Validator, ValidatorFn, AbstractControl, ValidationErrors } from '@angular/forms';
import { SiFormItemControl } from '@siemens/element-ng/form';
import { TranslatableString } from '@siemens/element-translate-ng/translate';

declare class SiNumberInputComponent implements OnChanges, ControlValueAccessor, Validator, SiFormItemControl {
    private static idCounter;
    private static formatValidator;
    /**
     * The min. value for HTML input
     *
     * @defaultValue undefined
     */
    readonly minInput: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
    /**
     * The max. value for HTML input
     *
     * @defaultValue undefined
     */
    readonly maxInput: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
    /**
     * The step size for HTML input
     *
     * @defaultValue 1
     */
    readonly step: _angular_core.InputSignal<number | "any">;
    /** The value */
    readonly value: _angular_core.InputSignal<number | undefined>;
    /** Optional unit label */
    readonly unit: _angular_core.InputSignal<string | undefined>;
    /**
     * Show increment/decrement buttons?
     *
     * @defaultValue true
     */
    readonly showButtons: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * The aria-label passed to the input
     *
     * @defaultValue undefined
     */
    readonly ariaLabel: _angular_core.InputSignal<TranslatableString | undefined>;
    /**
     * ID that is set on the input, e.g. for `<label for="...">`
     *
     * @defaultValue
     * ```
     * `__si-number-input-${SiNumberInputComponent.idCounter++}`
     * ```
     */
    readonly inputId: _angular_core.InputSignal<string>;
    readonly id: _angular_core.Signal<string>;
    /** @defaultValue false */
    readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** @defaultValue false */
    readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * The placeholder for input field.
     */
    readonly placeholder: _angular_core.InputSignal<TranslatableString | undefined>;
    readonly valueChange: _angular_core.OutputEmitterRef<number | undefined>;
    readonly inputElement: _angular_core.Signal<ElementRef<HTMLInputElement>>;
    /**
     * This ID will be bound to the `aria-describedby` attribute of the number-input.
     * Use this to reference the element containing the error message(s) for the number-input.
     * It will be picked by the {@link SiFormItemComponent} if the number-input is used inside a form item.
     *
     * @defaultValue
     * ```
     * `${this.id()}-errormessage`
     * ```
     */
    readonly errormessageId: _angular_core.InputSignal<string>;
    protected canInc: boolean;
    protected canDec: boolean;
    protected readonly disabled: _angular_core.Signal<boolean>;
    private readonly disabledNgControl;
    protected onTouched: () => void;
    protected onChange: (val: any) => void;
    protected validator: ValidatorFn | null;
    protected onValidatorChanged: () => void;
    protected readonly min: _angular_core.Signal<number | undefined>;
    protected readonly max: _angular_core.Signal<number | undefined>;
    protected readonly icons: Record<"elementMinus" | "elementPlus", string>;
    private internalValue?;
    private autoUpdate$;
    private autoUpdateSubs?;
    private changeDetectorRef;
    ngOnChanges(changes: SimpleChanges<this>): void;
    /** @internal */
    registerOnChange(fn: any): void;
    /** @internal */
    registerOnTouched(fn: () => void): void;
    /** @internal */
    setDisabledState(isDisabled: boolean): void;
    /** @internal */
    writeValue(value: number | undefined): void;
    /** @internal */
    validate(control: AbstractControl): ValidationErrors | null;
    /** @internal */
    registerOnValidatorChange?(fn: () => void): void;
    protected modelChanged(): void;
    protected autoUpdateStart(event: Event, isIncrement: boolean): void;
    protected autoUpdateStop(): void;
    private updateStepButtons;
    private decrement;
    private increment;
    private writeValueToInput;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiNumberInputComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiNumberInputComponent, "si-number-input", never, { "minInput": { "alias": "min"; "required": false; "isSignal": true; }; "maxInput": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; "showButtons": { "alias": "showButtons"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errormessageId": { "alias": "errormessageId"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
}

declare class SiNumberInputModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiNumberInputModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<SiNumberInputModule, never, [typeof SiNumberInputComponent], [typeof SiNumberInputComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<SiNumberInputModule>;
}

export { SiNumberInputComponent, SiNumberInputModule };
