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
 * <val-change-password-modal
 *   [isOpen]="isModalOpen()"
 *   (changed)="isModalOpen.set(false)"
 *   (dismissed)="isModalOpen.set(false)"
 * />
 * ```
 */
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<void>;
    /** Emite cuando el user cierra el modal (botón X o backdrop). */
    dismissed: EventEmitter<void>;
    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<PasswordModalMode>;
    private readonly _formState;
    /** Traduce una clave del namespace `_auth`. */
    t(key: string): string;
    readonly formProps: import("@angular/core").Signal<FormMetadata>;
    /** 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<void>;
    /** 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<ChangePasswordModalComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ChangePasswordModalComponent, "val-change-password-modal", never, { "isOpen": { "alias": "isOpen"; "required": false; }; }, { "changed": "changed"; "dismissed": "dismissed"; }, never, never, true, never>;
}
export {};
