/** * Critérios que definem o que é uma senha forte. * Todos os campos são opcionais: um critério ausente (ou zero) simplesmente não é avaliado. */ export interface ArchbasePasswordPolicy { /** Quantidade mínima de caracteres */ minLength?: number; /** Quantidade máxima de caracteres */ maxLength?: number; /** Quantidade mínima de letras minúsculas */ minLowercase?: number; /** Quantidade mínima de letras maiúsculas */ minUppercase?: number; /** Quantidade mínima de dígitos */ minNumbers?: number; /** Quantidade mínima de símbolos (caracteres não alfanuméricos) */ minSymbols?: number; /** Proíbe espaços em branco na senha */ forbidWhitespace?: boolean; /** Proíbe N ou mais caracteres iguais em sequência. Ex: 3 rejeita "aaa" */ forbidRepeated?: number; /** Proíbe N ou mais caracteres em sequência crescente/decrescente. Ex: 4 rejeita "1234" e "dcba" */ forbidSequential?: number; /** * Termos proibidos dentro da senha (comparação sem diferenciar maiúsculas). * Use para impedir que a senha contenha o login, o e-mail ou o nome do usuário. */ blocklist?: string[]; } export type ArchbasePasswordStrength = 'empty' | 'weak' | 'fair' | 'good' | 'strong'; /** Identificador estável de cada critério, útil para customizar rótulos ou testes */ export type ArchbasePasswordRequirementKey = 'minLength' | 'maxLength' | 'minLowercase' | 'minUppercase' | 'minNumbers' | 'minSymbols' | 'forbidWhitespace' | 'forbidRepeated' | 'forbidSequential' | 'blocklist'; export interface ArchbasePasswordRequirement { /** Identificador do critério */ key: ArchbasePasswordRequirementKey; /** Descrição do critério já traduzida */ label: string; /** Indicador se o critério foi atendido pela senha informada */ satisfied: boolean; } export interface ArchbasePasswordValidationResult { /** Indicador se a senha atende a todos os critérios da política */ valid: boolean; /** Pontuação de 0 a 100 combinando critérios atendidos e comprimento */ score: number; /** Classificação da força derivada da pontuação */ strength: ArchbasePasswordStrength; /** Todos os critérios avaliados, atendidos ou não */ requirements: ArchbasePasswordRequirement[]; /** Somente os critérios não atendidos */ unmetRequirements: ArchbasePasswordRequirement[]; /** Mensagem do primeiro critério não atendido, pronta para exibir no campo */ error?: string; } /** * Política padrão: 8 caracteres com ao menos uma minúscula, uma maiúscula, * um dígito e um símbolo, sem espaços em branco. */ export declare const ARCHBASE_DEFAULT_PASSWORD_POLICY: ArchbasePasswordPolicy; /** * Avalia uma senha contra uma política e devolve o resultado detalhado, critério a critério. * Para obter apenas a lista de critérios (sem senha digitada), chame com uma string vazia. */ export declare function validateArchbasePassword(value: string | undefined | null, policy?: ArchbasePasswordPolicy): ArchbasePasswordValidationResult; /** Atalho para quando só interessa saber se a senha atende à política */ export declare function isArchbasePasswordValid(value: string | undefined | null, policy?: ArchbasePasswordPolicy): boolean; /** Rótulo traduzido da classificação de força, para exibir junto ao medidor */ export declare function getArchbasePasswordStrengthLabel(strength: ArchbasePasswordStrength): string; /** * Normaliza o atalho `passwordPolicy={true}` usado pelos componentes: * `true` aplica a política padrão, `false`/`undefined` desativa a validação. */ export declare function resolveArchbasePasswordPolicy(policy?: ArchbasePasswordPolicy | boolean): ArchbasePasswordPolicy | undefined;