import * as polytype from 'polytype';
import * as _angular_core from '@angular/core';
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 '@acorex/components/progress-bar';
import * as i6 from '@acorex/components/badge';
import * as i7 from '@acorex/core/translation';

declare const AXPasswordBoxComponent_base: polytype.Polytype.ClusteredConstructor<[{
    new (): MXInputBaseValueComponent<string>;
    ɵfac: _angular_core.ɵɵFactoryDeclaration<MXInputBaseValueComponent<any>, never>;
    ɵprov: _angular_core.ɵɵInjectableDeclaration<MXInputBaseValueComponent<any>>;
}, typeof MXLookComponent]>;
/**
 * A specialized input field designed for securely capturing user passwords. It incorporates essential features to enhance usability, accessibility, and security while maintaining a user-friendly interface. The component extends MXInputBaseValueComponent and MXLookComponent to provide comprehensive input functionality with visual styling options.
 *
 * @category Components
 */
declare class AXPasswordBoxComponent extends AXPasswordBoxComponent_base {
    /** @ignore */
    protected _type: 'password' | 'text';
    /** @ignore */
    protected _icon: 'ax-icon-visibility' | 'ax-icon-visibility-off';
    /**
     * Sets the autocomplete behavior for the input field.
     */
    autoComplete: 'current-password' | 'new-password' | 'one-time-code' | 'off';
    /**
     *  A flag for showing or hiding password button.
     */
    showToggleButton: boolean;
    /**
     * Defines custom CSS classes to apply to the component.
     */
    classNames: string;
    /** @ignore */
    protected _handleModelChange(value: string): void;
    /**
     * Toggles the input type between 'password' and 'text' to show or hide the password.
     */
    toggleType(): void;
    private get __hostName();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPasswordBoxComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPasswordBoxComponent, "ax-password-box", never, { "readonly": { "alias": "readonly"; "required": false; }; "disabled": { "alias": "disabled"; "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; }; "autoComplete": { "alias": "autoComplete"; "required": false; }; "showToggleButton": { "alias": "showToggleButton"; "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", "ax-password-strength-validation"], true, never>;
}

declare class AXPasswordStrengthValidationComponent {
    #private;
    protected parent: AXPasswordBoxComponent;
    protected passwordStrength: _angular_core.WritableSignal<number>;
    protected updatedPassword: _angular_core.WritableSignal<string>;
    protected strengthLabel: _angular_core.WritableSignal<string>;
    protected strengthLabelColor: _angular_core.WritableSignal<string>;
    readonly showProgress: _angular_core.InputSignal<boolean>;
    readonly showLengthGraterThan8: _angular_core.InputSignal<boolean>;
    readonly showUseUpperCase: _angular_core.InputSignal<boolean>;
    readonly showUseLowerCase: _angular_core.InputSignal<boolean>;
    readonly showUseNumber: _angular_core.InputSignal<boolean>;
    readonly showUseSpecialCharacter: _angular_core.InputSignal<boolean>;
    readonly mode: _angular_core.InputSignal<"full" | "compact">;
    protected isLengthGraterThan8: _angular_core.WritableSignal<{
        regex: RegExp;
        state: boolean;
    }>;
    protected isUseUpperCase: _angular_core.WritableSignal<{
        regex: RegExp;
        state: boolean;
    }>;
    protected isUseLowerCase: _angular_core.WritableSignal<{
        regex: RegExp;
        state: boolean;
    }>;
    protected isUseNumber: _angular_core.WritableSignal<{
        regex: RegExp;
        state: boolean;
    }>;
    protected isUseSpecialCharacter: _angular_core.WritableSignal<{
        regex: RegExp;
        state: boolean;
    }>;
    private checkRegexHandler;
    protected checkPasswordStrength(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPasswordStrengthValidationComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPasswordStrengthValidationComponent, "ax-password-strength-validation", never, { "showProgress": { "alias": "showProgress"; "required": false; "isSignal": true; }; "showLengthGraterThan8": { "alias": "showLengthGraterThan8"; "required": false; "isSignal": true; }; "showUseUpperCase": { "alias": "showUseUpperCase"; "required": false; "isSignal": true; }; "showUseLowerCase": { "alias": "showUseLowerCase"; "required": false; "isSignal": true; }; "showUseNumber": { "alias": "showUseNumber"; "required": false; "isSignal": true; }; "showUseSpecialCharacter": { "alias": "showUseSpecialCharacter"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class AXPasswordBoxModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPasswordBoxModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPasswordBoxModule, never, [typeof i1.CommonModule, typeof i2.FormsModule, typeof i3.AXButtonModule, typeof i4.AXDecoratorModule, typeof i5.AXProgressBarModule, typeof i6.AXBadgeModule, typeof i7.AXTranslationModule, typeof AXPasswordBoxComponent, typeof AXPasswordStrengthValidationComponent], [typeof AXPasswordBoxComponent, typeof AXPasswordStrengthValidationComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPasswordBoxModule>;
}

export { AXPasswordBoxComponent, AXPasswordBoxModule, AXPasswordStrengthValidationComponent };
