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

type AXMaskOptions = MaskedOptions | any;
interface AXMaskOptionsInterface {
    mask: MaskedOptions | string | RegExp;
    updateValue?: (masked: string, unmasked: string) => void;
}
declare class AXMaskOptionsDirective implements AXMaskOptionsInterface {
    private _mask;
    onMaskChange: EventEmitter<string | RegExp | Partial<Pick<imask.Masked<any>, "mask" | "parent" | "prepare" | "prepareChar" | "validate" | "commit" | "format" | "parse" | "overwrite" | "eager" | "skipInvalid" | "autofix">>>;
    get mask(): MaskedOptions | string | RegExp;
    set mask(v: MaskedOptions | string | RegExp);
    updateValue?: (masked: string, unmasked: string) => void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMaskOptionsDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AXMaskOptionsDirective, "ax-mask-options", never, { "mask": { "alias": "mask"; "required": false; }; "updateValue": { "alias": "updateValue"; "required": false; }; }, { "onMaskChange": "onMaskChange"; }, never, never, true, never>;
}

declare const AXTextBoxComponent_base: polytype.Polytype.ClusteredConstructor<[{
    new (): MXInputBaseValueComponent<string>;
    ɵfac: i0.ɵɵFactoryDeclaration<MXInputBaseValueComponent<any>, never>;
    ɵprov: i0.ɵɵInjectableDeclaration<MXInputBaseValueComponent<any>>;
}, typeof MXLookComponent]>;
/**
 * The Textbox is a component which detects user interaction and triggers a corresponding event
 *
 * @category Components
 */
declare class AXTextBoxComponent extends AXTextBoxComponent_base implements AfterContentInit {
    /** @ignore */
    protected _updateOn: 'change' | 'blur' | 'submit';
    /** @ignore */
    protected input: ElementRef<HTMLInputElement>;
    /** @ignore */
    private _maskObj;
    /** @ignore */
    private _maskOptions;
    /**
     * This public getter provides access to the `_maskOptions` property, which holds the configuration options for the mask feature.
     */
    get maskOptions(): AXMaskOptions;
    /**
     * @param value {AXMaskOptions} - The new mask configuration options to be set.
     */
    set maskOptions(value: AXMaskOptions);
    /**
     * This property defines the maximum number of characters that the input field can accept. It can be dynamically bound from a parent component template to enforce input length constraints.
     */
    maxLength: number;
    /**
     * 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: string;
    /**
     * This property determines whether the input field should have autocomplete enabled and what type of autocomplete suggestions should be provided
     */
    autoComplete: string;
    /**
     * This will apply 'my-custom-class' and 'another-class' to the component's root element.
     */
    classNames: i0.InputSignal<string>;
    /** @ignore */
    protected _maskOptionsContent: AXMaskOptionsDirective;
    /** @ignore */
    ngAfterContentInit(): void;
    private initMask;
    /** @ignore */
    private setMask;
    internalValueChanged(value: any): void;
    /** @ignore */
    private _onComplete;
    /** @ignore */
    protected _handleModelChange(value: string | null): void;
    private get __hostName();
    static ɵfac: i0.ɵɵFactoryDeclaration<AXTextBoxComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXTextBoxComponent, "ax-text-box", never, { "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "value": { "alias": "value"; "required": false; }; "state": { "alias": "state"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "allowNull": { "alias": "allowNull"; "required": false; }; "type": { "alias": "type"; "required": false; }; "autoComplete": { "alias": "autoComplete"; "required": false; }; "look": { "alias": "look"; "required": false; }; "maskOptions": { "alias": "mask-options"; "required": false; }; "classNames": { "alias": "class"; "required": false; "isSignal": true; }; }, { "onBlur": "onBlur"; "onFocus": "onFocus"; "valueChange": "valueChange"; "stateChange": "stateChange"; "onValueChanged": "onValueChanged"; "readonlyChange": "readonlyChange"; "disabledChange": "disabledChange"; "onKeyDown": "onKeyDown"; "onKeyUp": "onKeyUp"; "onKeyPress": "onKeyPress"; }, ["_maskOptionsContent"], ["ax-prefix", "ax-clear-button", "ax-suffix", "ax-validation-rule"], true, never>;
}

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

export { AXMaskOptionsDirective, AXTextBoxComponent, AXTextBoxModule };
export type { AXMaskOptions, AXMaskOptionsInterface };
