import { EventEmitter } from '@angular/core';
import { UserAvatarMetadata } from './types';
import * as i0 from "@angular/core";
/**
 * `val-user-avatar`
 *
 * Avatar **smart** con cadena de fallback automática:
 *
 *   foto (`avatarUrl`) → iniciales (de `name`/`email`) → icono persona.
 *
 * Si la imagen falla en cargar (404, CORS, etc.), automáticamente cae a las
 * iniciales sin que el caller tenga que hacer nada. Color de fondo derivado
 * deterministicamente del user para que el mismo user tenga siempre el mismo
 * color (a menos que `background` se sobrescriba).
 *
 * @example
 * ```html
 * <val-user-avatar [props]="{ user: auth.user() }" (onClick)="goProfile()" />
 * ```
 */
export declare class UserAvatarComponent {
    private readonly props_;
    private readonly imageFailed;
    /** Indica si el `<img>` actual disparó su evento `load`. Conduce el fade-in. */
    protected readonly imageLoaded: import("@angular/core").WritableSignal<boolean>;
    set props(value: UserAvatarMetadata | undefined);
    onClick: EventEmitter<void>;
    /** Subscribers — usado para condicionar cursor/aria. */
    get hasClick(): boolean;
    readonly resolvedProps: import("@angular/core").Signal<UserAvatarMetadata>;
    /** Resuelve los campos del user (user prop > campos sueltos). */
    private readonly resolvedUser;
    /**
     * URL de imagen. Empty si la última carga falló — eso evita re-intentar
     * con la misma URL cuando el browser ya marcó error. El placeholder
     * (iniciales/icono) sigue visible debajo.
     */
    readonly imageUrl: import("@angular/core").Signal<string>;
    /** Iniciales — 1-2 chars derivados de name (preferred) o email prefix. */
    readonly initials: import("@angular/core").Signal<string>;
    readonly sizeClass: import("@angular/core").Signal<"small" | "medium" | "large" | "xlarge" | "xsmall">;
    readonly shapeClass: import("@angular/core").Signal<"circle" | "square">;
    /** Background — explicito o derivado deterministicamente del user. */
    readonly bgColor: import("@angular/core").Signal<string>;
    readonly ariaLabel: import("@angular/core").Signal<string>;
    onImageError(): void;
    onImageLoad(): void;
    /**
     * Hash determinista string → HSL color del rango Valtech (purples/blues).
     * Mismo seed → mismo color (consistencia entre sessions).
     */
    private colorFromSeed;
    static ɵfac: i0.ɵɵFactoryDeclaration<UserAvatarComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<UserAvatarComponent, "val-user-avatar", never, { "props": { "alias": "props"; "required": false; }; }, { "onClick": "onClick"; }, never, never, true, never>;
}
