export declare const STRENGTH_LABELS: string[]; /** Score a password 0-4 by length + character-class variety (pure). */ export declare function passwordStrength(v: string): number; /** Reactive inputs are passed as getters so the core tracks live prop changes. */ export type PasswordInputConfig = { value: () => string; onChange?: (value: string) => void; placeholder?: () => string | undefined; disabled?: () => boolean; readonly?: () => boolean; autocomplete?: () => string | undefined; /** Accessible label for the reveal toggle when the value is hidden. */ showLabel?: () => string | undefined; /** Accessible label for the reveal toggle when the value is shown. */ hideLabel?: () => string | undefined; /** Strength labels indexed 0-4 (index 0 unused; 1..4 = weak..strong). */ strengthLabels?: () => readonly string[]; id?: () => string | undefined; invalid?: () => boolean; required?: () => boolean; error?: () => string | undefined; hint?: () => string | undefined; ariaLabel?: () => string | undefined; }; export declare function createPasswordInput(config: PasswordInputConfig): { /** Whether the value is currently shown as plain text. */ readonly revealed: boolean; /** Strength score, 0-4. */ readonly strength: number; /** Human label for the strength score (localizable via `strengthLabels`). */ readonly strengthLabel: string | undefined; toggle: () => boolean; /** Spread onto the text/password input element. */ inputProps: () => { oninput: (e: Event) => void; 'aria-invalid': "true" | undefined; 'aria-required': "true" | undefined; 'aria-describedby': string | undefined; 'aria-label': string | undefined; id: string | undefined; value: string; type: "text" | "password"; placeholder: string | undefined; disabled: boolean; readonly: boolean; autocomplete: AutoFill; }; /** Spread onto the reveal (show/hide) toggle button. */ toggleProps: () => { type: "button"; 'aria-label': string; 'aria-pressed': boolean; disabled: boolean; tabindex: number; onclick: () => boolean; }; }; export type PasswordInputCore = ReturnType;