import { type ComponentPropsWithoutRef, type ReactNode } from "react";
import { type PasswordRule, type PasswordStrengthScore } from "../../hooks/usePasswordStrength";
export type PasswordInputSize = "sm" | "md" | "lg";
type InputPropsBase = Omit<ComponentPropsWithoutRef<"input">, "type" | "size" | "value" | "onChange" | "prefix">;
export interface PasswordInputProps extends InputPropsBase {
    label?: ReactNode;
    value: string;
    onChange?: (value: string) => void;
    size?: PasswordInputSize;
    error?: ReactNode;
    helperText?: ReactNode;
    /** 0–4 strength score. When set, renders the visual strength meter.
     *  `strength` takes precedence over `strengthRules` so consumers can
     *  always override what the rules computed (e.g. server-derived score). */
    strength?: PasswordStrengthScore;
    /** Rule set to evaluate the password against. When provided (and
     *  `strength` is NOT), the component runs `usePasswordStrength`
     *  internally and renders the meter from the derived score. */
    strengthRules?: PasswordRule[];
    /** Render the requirements checklist below the meter. Each rule shows
     *  a met/unmet glyph + its label, and the list is wired via
     *  `aria-describedby` so screen readers announce the state. */
    showRequirements?: boolean;
    /** Show the show/hide-password toggle. Default true. */
    showToggle?: boolean;
    leftIcon?: ReactNode;
    /** Extra class on the wrapper (NOT the input). */
    wrapperClassName?: string;
}
export declare const PasswordInput: import("react").ForwardRefExoticComponent<PasswordInputProps & import("react").RefAttributes<HTMLInputElement>>;
export {};
//# sourceMappingURL=PasswordInput.d.ts.map