import { type ComputedRef, type MaybeRefOrGetter } from 'vue';
/**
 * A single password rule: a stable key, the text shown to the user and the predicate that
 * decides whether the password satisfies it.
 */
export type NePasswordRequirement = {
    key: string;
    label: string;
    validate: (password: string) => boolean;
};
/**
 * A requirement paired with the outcome of its predicate for the current password.
 *
 * Note this is a plain boolean: whether an unmet requirement should look merely pending or
 * clearly failed is a presentation concern, handled by NePasswordRequirements' showErrors prop.
 */
export type NePasswordRequirementStatus = {
    key: string;
    label: string;
    met: boolean;
};
/**
 * Overrides for the labels of the default requirements. The library ships no i18n, so
 * translated strings are supplied by the caller.
 */
export type NePasswordRequirementLabels = {
    minLength?: string;
    uppercase?: string;
    lowercase?: string;
    number?: string;
    specialCharacter?: string;
};
/**
 * The five requirements from the design, as a plain array.
 *
 * Exported so that callers can compose on top of them instead of rebuilding the set: spread the
 * result, append or drop rules, and pass it back as the `requirements` option of
 * usePasswordRequirements.
 */
export declare function defaultPasswordRequirements({ minLength, labels }?: {
    minLength?: number;
    labels?: NePasswordRequirementLabels;
}): NePasswordRequirement[];
/**
 * Evaluates a set of password requirements against a password, reactively.
 *
 * Pair it with NePasswordRequirements to render the checklist, and gate form submission on
 * isValid.
 *
 * @param password the password to check, as a plain string, ref or getter
 * @param options.minLength minimum length for the default `minLength` requirement (defaults to 8)
 * @param options.labels label overrides for the default requirements, for i18n
 * @param options.requirements replaces the default requirements entirely
 */
export declare function usePasswordRequirements(password: MaybeRefOrGetter<string>, options?: {
    minLength?: MaybeRefOrGetter<number>;
    labels?: MaybeRefOrGetter<NePasswordRequirementLabels>;
    requirements?: MaybeRefOrGetter<NePasswordRequirement[]>;
}): {
    requirements: ComputedRef<NePasswordRequirementStatus[]>;
    isValid: ComputedRef<boolean>;
};
//# sourceMappingURL=usePasswordRequirements.d.ts.map