import { EventEmitter } from '@angular/core';
import { FormMetadata, FormSubmit } from '../../types';
import * as i0 from "@angular/core";
/** Modo del modal, resuelto al abrir según si el user ya tiene contraseña. */
type PasswordModalMode = 'loading' | 'change' | 'set';
/**
* `val-change-password-modal` — modal de gestión de contraseña para un usuario
* autenticado. Análogo al modal de "recuperar contraseña" del `val-login`.
*
* Es dual-mode: al abrirse consulta `AuthService.checkHasPassword()` y se adapta:
* - **change** — el user ya tiene contraseña → pide actual + nueva →
* `changePassword()`.
* - **set** — el user es OAuth-only (sin contraseña) → pide solo la nueva,
* pide confirmación explícita (no pierde el acceso social, es aditivo) →
* `setPasswordForOAuthUser()`.
*
* Self-contained: inyecta `AuthService` y llama el endpoint directo — la app
* solo controla `[isOpen]` y reacciona a `(changed)` / `(dismissed)`.
*
* i18n: usa el namespace compartido `_auth` (mismas claves que `val-login`).
*
* @example
* ```html
*
* ```
*/
export declare class ChangePasswordModalComponent {
private _isOpen;
/**
* Controla la visibilidad del modal. Lo decide el componente padre. Cada vez
* que pasa de cerrado a abierto se resuelve el modo (change vs set).
*/
set isOpen(value: boolean);
get isOpen(): boolean;
/** Emite al cambiar/crear la contraseña con éxito. El padre cierra el modal. */
changed: EventEmitter;
/** Emite cuando el user cierra el modal (botón X o backdrop). */
dismissed: EventEmitter;
private auth;
private toast;
private i18n;
private i18nHelper;
private confirmDialog;
private readonly _mode;
/** Modo actual — `loading` mientras se consulta `checkHasPassword()`. */
readonly mode: import("@angular/core").Signal;
private readonly _formState;
/** Traduce una clave del namespace `_auth`. */
t(key: string): string;
readonly formProps: import("@angular/core").Signal;
/** Campo "nueva contraseña" — compartido por ambos modos. */
private newPasswordField;
/** Cierre iniciado por el user (X / backdrop). */
close(): void;
/** Consulta si el user ya tiene contraseña para elegir el modo del modal. */
private resolveMode;
submitHandler(event: FormSubmit): Promise;
/** Flujo normal: el user tiene contraseña y la cambia. */
private handleChangePassword;
/**
* Flujo OAuth-only: el user no tiene contraseña. Antes de crearla pide
* confirmación explícita — es un cambio de cuenta, aunque aditivo (conserva
* el acceso social).
*/
private handleSetPassword;
/** Mapea los códigos de error del backend a mensajes del namespace `_auth`. */
private resolveError;
private showToast;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}
export {};