import * as polytype from 'polytype';
import * as i0 from '@angular/core';
import { AfterViewInit, ElementRef } from '@angular/core';
import { MaskedNumber } from 'imask';
import { MXInputBaseValueComponent, MXLookComponent } from '@acorex/cdk/common';
import * as i1 from '@angular/common';
import * as i2 from '@angular/forms';
import * as i3 from '@acorex/components/button';
import * as i4 from '@acorex/components/decorators';
import * as i5 from 'angular-imask';

declare const AXNumberBoxLegacyComponent_base: polytype.Polytype.ClusteredConstructor<[{
    new (): MXInputBaseValueComponent<number>;
    ɵfac: i0.ɵɵFactoryDeclaration<MXInputBaseValueComponent<any>, never>;
    ɵprov: i0.ɵɵInjectableDeclaration<MXInputBaseValueComponent<any>>;
}, typeof MXLookComponent]>;
/**
 * The NumberBox is a component which detects user interaction and triggers a corresponding event
 *
 * @category Components
 */
declare class AXNumberBoxLegacyComponent extends AXNumberBoxLegacyComponent_base implements AfterViewInit {
    /** @ignore */
    input: ElementRef<HTMLInputElement>;
    /** @ignore */
    private _thousandsSeparator;
    /**
     * This property determines the type of the input element (e.g., 'text', 'password', 'email', etc.). It can be dynamically bound from a parent component template to change the input field type based on different conditions or requirements.
     */
    type: i0.InputSignal<string>;
    /**
     *  boolean value that specifies the number box change step by scrolling.
     */
    changeOnScroll: boolean;
    /** @ignore */
    private _allDigits;
    /**
     *  A number value that specifies the all digits of number.
     */
    get allDigits(): number;
    /**
     * Sets the all digits of number.
     * @param {number} v
     */
    set allDigits(v: number);
    /**
     *  A character value that specifies the separator character.
     */
    get thousandsSeparator(): string;
    /**
     * Sets the thousands separator for formatting.
     * @param {string} v
     */
    set thousandsSeparator(v: string);
    /** @ignore */
    private _padDecimalZeros;
    /**
     *  A character value that specifies the separator character.
     */
    get padDecimalZeros(): boolean;
    /**
     * Sets whether decimal zeros should be padded.
     * @param {boolean} v
     */
    set padDecimalZeros(v: boolean);
    /**
     *  Specifies the value that is used to increment or decrement the **Integer** part of number
     */
    /**
     * Defines the increment step value.
     */
    step: number;
    /** @ignore */
    private _decimals;
    /**
     *  Specifies the number of decimals that the user can enter
     */
    get decimals(): number;
    /**
     * Sets the decimal places; defaults to 0 if not provided.
     */
    set decimals(v: number);
    /**
     *  Specifies the value that is used to increment or decrement the **Deciaml** part of number
     */
    /**
     * Defines the step size for decimal values.
     * @defaultvalue 'auto'
     */
    decimalStep: number | 'auto';
    /**
     *  Specifies whether the Up and Down spin buttons will be rendered or not
     */
    /**
     * Indicates whether spin buttons are displayed.
     * @defaultvalue true
     */
    showSpinButtons: boolean;
    /** @ignore */
    private _minValue;
    /**
     *  Specifies the smallest value that is valid
     */
    get minValue(): number;
    /**
     * Sets the number of decimal places to be used.
     * @param {number} v
     * @defaultvalue 0
     */
    set minValue(v: number);
    /** @ignore */
    private _maxValue;
    /**
     *  Specifies the greatest value that is valid
     */
    get maxValue(): number;
    /**
     * Sets the maximum allowable value, defaulting to `Number.MAX_SAFE_INTEGER` if null.
     * @param v
     */
    set maxValue(v: number);
    /**
     * CSS classes to apply to the component.
     * @param classNames
     */
    /**
     * CSS classes to apply to the component.
     */
    classNames: string;
    /**
     *  @ignore
     */
    _maskObj: MaskedNumber;
    /** @ignore */
    /** @ignore */
    private _maskDirective;
    /** @ignore */
    private _onWheelFlag;
    constructor();
    /** @ignore */
    ngAfterViewInit(): void;
    /**
     * Handles internal option changes and updates the mask accordingly.
     */
    internalOptionChanged(): void;
    /**
     * Resets the input element to its default state and calls the parent class reset method.
     */
    reset(): void;
    /**
     * Ensures the value is within the min-max range, returning the default if null.
     * @param value
     */
    internalSetValue(value: any): number;
    /** @ignore */
    private _updateMask;
    /** @ignore */
    _handleModelChange(value: number): void;
    /** @ignore */
    _handleOnKeydownEvent(e: KeyboardEvent): void;
    /** @ignore */
    protected _handleUpDownClick(v: -1 | 1, e: Event): void;
    /**
     * Increases the value by the step amount, ensuring it's at least the minimum value.
     */
    stepUp(u?: boolean): void;
    /**
     * Decreases the value by the step amount, ensuring it's at least the minimum value.
     */
    stepDown(u?: boolean): void;
    /**
     * Increases the value by the decimal step amount, using 'auto' or a custom step value.
     */
    decimalStepUp(u?: boolean): void;
    /**
     * Decreases the value by the decimal step amount, using 'auto' or a custom step value.
     */
    decimalStepDown(u?: boolean): void;
    onWheel(event: WheelEvent): void;
    private get __hostName();
    static ɵfac: i0.ɵɵFactoryDeclaration<AXNumberBoxLegacyComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXNumberBoxLegacyComponent, "ax-number-box-legacy", never, { "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "state": { "alias": "state"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "look": { "alias": "look"; "required": false; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "changeOnScroll": { "alias": "changeOnScroll"; "required": false; }; "allDigits": { "alias": "allDigits"; "required": false; }; "thousandsSeparator": { "alias": "thousandsSeparator"; "required": false; }; "padDecimalZeros": { "alias": "padDecimalZeros"; "required": false; }; "step": { "alias": "step"; "required": false; }; "decimals": { "alias": "decimals"; "required": false; }; "decimalStep": { "alias": "decimalStep"; "required": false; }; "showSpinButtons": { "alias": "showSpinButtons"; "required": false; }; "minValue": { "alias": "minValue"; "required": false; }; "maxValue": { "alias": "maxValue"; "required": false; }; "classNames": { "alias": "class"; "required": false; }; }, { "valueChange": "valueChange"; "stateChange": "stateChange"; "onValueChanged": "onValueChanged"; "onBlur": "onBlur"; "onFocus": "onFocus"; "readonlyChange": "readonlyChange"; "disabledChange": "disabledChange"; "onKeyDown": "onKeyDown"; "onKeyUp": "onKeyUp"; "onKeyPress": "onKeyPress"; }, never, ["ax-prefix", "ax-clear-button", "ax-suffix", "ax-validation-rule"], true, never>;
}

declare class AXNumberBoxLegacyModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXNumberBoxLegacyModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXNumberBoxLegacyModule, never, [typeof i1.CommonModule, typeof i2.FormsModule, typeof i3.AXButtonModule, typeof i4.AXDecoratorModule, typeof i5.IMaskModule, typeof AXNumberBoxLegacyComponent], [typeof AXNumberBoxLegacyComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXNumberBoxLegacyModule>;
}

export { AXNumberBoxLegacyComponent, AXNumberBoxLegacyModule };
