import { GetProfileResponse } from '../../../services/auth/types';
import { AvatarUploadResult } from '../avatar-upload/types';
/**
 * Configuración acotada de `val-profile-view` (object-first). Ejes permitidos:
 *  - **secciones visibles** — gatean el render del avatar y de los campos
 *    handle/phone del formulario.
 *  - **branding** — `i18nNamespace` para resolver los textos (default
 *    `'Settings.Profile'`). El consumer puede registrar ese namespace para
 *    override de los defaults embebidos.
 *  - **callbacks** — hooks tras un save / avatar exitoso (además de los toasts
 *    internos).
 *
 * NO admite slots arbitrarios ni override del layout: la vista es full-feature
 * y autocontenida.
 */
export interface ProfileViewConfig {
    /** Muestra la sección de avatar (upload + meta). Default `true`. */
    showAvatar?: boolean;
    /** Incluye el campo `handle` (@usuario) en el formulario. Default `true`. */
    showHandle?: boolean;
    /** Incluye el campo `phone` en el formulario. Default `true`. */
    showPhone?: boolean;
    /**
     * Namespace i18n con el que la vista resuelve sus textos.
     * Default `'Settings.Profile'`.
     */
    i18nNamespace?: string;
    /**
     * Muestra la CTA de compartir perfil (QR modal). Requiere que el user tenga
     * handle configurado — si no, la sección no aparece aunque esté en `true`.
     * Default `true`.
     */
    showShareCta?: boolean;
    /**
     * URL base de la app para construir el enlace del perfil público.
     * El enlace final es `${profileBaseUrl}/u/${handle}`.
     * Ej: `'https://app.myvaltech.com'`.
     */
    profileBaseUrl?: string;
    /** Callback tras un guardado de perfil exitoso. */
    onSaved?: (profile: GetProfileResponse) => void;
    /** Callback tras subir/actualizar el avatar exitosamente. */
    onAvatarUploaded?: (result: AvatarUploadResult) => void;
}
