import { OnInit } from '@angular/core';
import { PasswordStrengthPositions } from './types/password-positions';
import { PasswordStrengths } from './types/password-strengths';
import * as i0 from "@angular/core";
/**
 * @description Diretiva que adiciona o comportamento de verificação de força de senha
 * a um campo de input existente. Ao receber foco ou a cada tecla digitada, exibe o
 * componente {@link PasswordStrengthComponent} posicionado dinamicamente ao redor do campo,
 * fornecendo feedback visual sobre a força da senha informada.
 *
 * @example
 * ```html
 * <input
 *   type="password"
 *   [sPasswordStrength]="true"
 *   passwordStrengthDescription="A senha deve conter letras maiúsculas, números e caracteres especiais."
 *   [passwordStrengthValidation]="myValidator" />
 * ```
 *
 * @category Inputs
 */
export declare class PasswordStrengthDirective implements OnInit {
    private readonly elementRef;
    private readonly appRef;
    private readonly componentFactoryResolver;
    private readonly injector;
    /**
     * @description Habilita ou desabilita o comportamento da diretiva.
     * Quando `false`, o indicador de força não será exibido.
     *
     * @default true
     */
    enabled: boolean;
    /**
     * @description Função customizada de validação da força da senha.
     * Recebe o conteúdo atual do campo e deve retornar um valor do tipo {@link PasswordStrengths}
     * (`'veryWeak'`, `'weak'`, `'medium'` ou `'strong'`).
     * Se não informada, utiliza a validação padrão baseada em critérios de comprimento,
     * letras maiúsculas/minúsculas, números e caracteres especiais.
     */
    passwordStrengthValidation?: (content: string) => PasswordStrengths;
    /**
     * @description Posição preferencial onde o indicador de força será exibido em relação ao campo.
     * Aceita `'right'`, `'left'` ou `'top'`. O componente tenta posicionar automaticamente
     * em outro lado caso não haja espaço suficiente na posição especificada.
     *
     * @default 'right'
     */
    passwordStrengthPosition: PasswordStrengthPositions;
    /**
     * @description Texto personalizado exibido quando a senha é classificada como fraca.
     * Se não informado, utiliza a tradução padrão.
     */
    passwordStrengthWeakTitle?: string;
    /**
     * @description Texto personalizado exibido quando a senha é classificada como média.
     * Se não informado, utiliza a tradução padrão.
     */
    passwordStrengthMediumTitle?: string;
    /**
     * @description Texto personalizado exibido quando a senha é classificada como forte.
     * Se não informado, utiliza a tradução padrão.
     */
    passwordStrengthStrongTitle?: string;
    /**
     * @description Descrição complementar exibida no indicador de força de senha,
     * orientando o usuário sobre os requisitos da senha. Campo obrigatório.
     */
    passwordStrengthDescription: string;
    private componentRef?;
    ngOnInit(): void;
    onFocus(): void;
    onBlur(): void;
    private createPasswordStrength;
    private showPasswordStrength;
    private setPasswordStrengthComponentProperties;
    private validateProperties;
    private destroyPasswordStrength;
    private defaultValidator;
    static ɵfac: i0.ɵɵFactoryDeclaration<PasswordStrengthDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<PasswordStrengthDirective, "[sPasswordStrength]", never, { "enabled": { "alias": "sPasswordStrength"; "required": false; }; "passwordStrengthValidation": { "alias": "passwordStrengthValidation"; "required": false; }; "passwordStrengthPosition": { "alias": "passwordStrengthPosition"; "required": false; }; "passwordStrengthWeakTitle": { "alias": "passwordStrengthWeakTitle"; "required": false; }; "passwordStrengthMediumTitle": { "alias": "passwordStrengthMediumTitle"; "required": false; }; "passwordStrengthStrongTitle": { "alias": "passwordStrengthStrongTitle"; "required": false; }; "passwordStrengthDescription": { "alias": "passwordStrengthDescription"; "required": true; }; }, {}, never, never, false, never>;
}
