export interface PasswordRule {
    /** Stable id — keyed in the result for React rendering and useful for
     *  driving per-rule a11y associations. */
    id: string;
    /** Human-readable description ("At least 8 characters"). Surfaced in
     *  the PasswordInput requirements checklist. */
    label: string;
    /** Regex (preferred) or predicate function. Regexes are tested with
     *  `.test(value)`; predicates receive the raw value. */
    test: RegExp | ((value: string) => boolean);
}
export interface PasswordRuleResult {
    id: string;
    label: string;
    passed: boolean;
}
export type PasswordStrengthScore = 0 | 1 | 2 | 3 | 4;
export interface PasswordStrengthResult {
    /** 0–4, derived from `passed / total` (ratio-scaled). 0 = very weak,
     *  4 = very strong. */
    score: PasswordStrengthScore;
    /** Per-rule pass/fail in the order rules were supplied. */
    rules: PasswordRuleResult[];
    /** Count of rules that passed. */
    passed: number;
    /** Total rules evaluated. */
    total: number;
    /** True iff every rule passed (or the rule set is empty — vacuously
     *  satisfied; consumers should usually require a non-empty rule set). */
    isValid: boolean;
}
/** Reasonable starter rule set — 8-char minimum + character-class diversity.
 *  Consumers should override for any compliance regime (passphrases,
 *  banking, etc.). */
export declare const DEFAULT_PASSWORD_RULES: PasswordRule[];
export declare function usePasswordStrength(value: string, rules?: PasswordRule[]): PasswordStrengthResult;
//# sourceMappingURL=usePasswordStrength.d.ts.map