import { AvatarUploadError, AvatarUploadMetadata, AvatarUploadResult } from '../avatar-upload/types';
import { ShareProfileModalMetadata } from '../share-profile-modal/types';
import { CtaCardMetadata } from '../../molecules/cta-card/types';
import { EmptyStateMetadata } from '../../molecules/empty-state/types';
import { FormMetadata, FormSubmit } from '../../types';
import { GetProfileResponse } from '../../../services/auth/types';
import { ProfileViewConfig } from './types';
import * as i0 from "@angular/core";
/**
 * `val-profile-view` — vista Perfil full-feature autocontenida (organism).
 *
 * Edita los campos públicos del usuario en UN solo formulario con UN solo botón
 * "Guardar". Wireup:
 *  - Avatar — val-avatar-upload (Firebase Storage + backend sync). Separado del
 *    form porque es upload sync independiente.
 *  - Handle (@usuario) — InputType.HANDLE (val-username-input con check de
 *    disponibilidad async resuelto vía AuthService inyectado).
 *  - Nombre — InputType.TEXT.
 *  - Teléfono — InputType.PHONE.
 *
 * Submit handler dispatcha:
 *  1. Si handle cambió → updateHandle PRIMERO (uniqueness).
 *  2. Si name o phone cambió → updateProfile con ambos.
 *
 * Lectura del perfil: suscribe al doc Firestore /users/{uid} (mirror que mantiene
 * el backend). Reactivo cross-tab + auto-refresca tras save. Fallback REST
 * (auth.getProfile) si el doc no existe o el listener falla.
 *
 * NO renderiza ion-content — vive dentro de val-page-wrapper.
 *
 * Auto-registra sus defaults i18n (es/en) en el constructor si el consumer no
 * proveyó el namespace configurado (default `Settings.Profile`).
 */
export declare class ProfileViewComponent {
    private nav;
    private auth;
    private i18n;
    private toast;
    private errors;
    private firebase;
    private collections;
    private route;
    /**
     * Config vía @Input (object-first). Si no se pasa, se cae al route data
     * `profileConfig` (poblado por `provideValtechProfileRoutes`). `resolvedConfig`
     * mergea con los defaults.
     */
    config?: ProfileViewConfig;
    /** Config mergeada con defaults. @Input gana sobre route data. */
    readonly resolvedConfig: import("@angular/core").Signal<Required<Omit<ProfileViewConfig, "onSaved" | "onAvatarUploaded" | "profileBaseUrl">> & Pick<ProfileViewConfig, "onSaved" | "onAvatarUploaded" | "profileBaseUrl">>;
    /** Namespace i18n resuelto (capturado una vez para llamadas no-reactivas). */
    private get ns();
    /**
     * Colección global /users/{uid} (skipAppPrefix: true — el doc vive fuera de
     * apps/{appId}/... porque es cross-app, ver firestore.rules).
     */
    private usersCol;
    private formCmp;
    readonly profile: import("@angular/core").WritableSignal<GetProfileResponse>;
    readonly loading: import("@angular/core").WritableSignal<boolean>;
    readonly saving: import("@angular/core").WritableSignal<boolean>;
    readonly loadError: import("@angular/core").WritableSignal<unknown>;
    readonly shareOpen: import("@angular/core").WritableSignal<boolean>;
    readonly shareCta: import("@angular/core").Signal<CtaCardMetadata>;
    readonly shareModal: import("@angular/core").Signal<ShareProfileModalMetadata>;
    private readonly _userId;
    readonly errorState: import("@angular/core").Signal<EmptyStateMetadata>;
    readonly avatarProps: import("@angular/core").Signal<AvatarUploadMetadata>;
    formMeta: FormMetadata;
    constructor();
    /** Construcción inicial — UNA vez. Gatea handle/phone según config. */
    private buildFormMeta;
    /** Re-aplica labels/hints/placeholders en cambio de idioma. */
    private applyI18nLabels;
    /**
     * Fallback REST. Capa 4 (UI declarativa): NO toasteamos acá — el
     * val-empty-state ES la UI del error.
     */
    private loadFromApi;
    private mapMirrorToProfile;
    onSubmit(event: FormSubmit): Promise<void>;
    onAvatarUploaded(result: AvatarUploadResult): void;
    onAvatarError(_err: AvatarUploadError): void;
    /** Lee del namespace configurado. */
    protected t(key: string): string;
    private initialsFromName;
    static ɵfac: i0.ɵɵFactoryDeclaration<ProfileViewComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ProfileViewComponent, "val-profile-view", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, true, never>;
}
