import { SettingsSection } from './settings-sections';
/**
 * Configuración acotada de `val-settings-hub` (object-first). El HUB es la
 * portada de la sección Settings: un header (título + descripción) + un grid de
 * `val-action-card` que navega a las sub-vistas.
 *
 * Doble namespace i18n:
 *  - `i18nNamespace` (default `'Dashboard'`) — labels de cada sección
 *    (`general`, `account`, …). Es el set que comparten dashboard / hub.
 *  - `pageI18nNamespace` (default `'Settings.Preferences'`) — `pageTitle` /
 *    `pageDescription` del header del HUB.
 *
 * El catálogo de secciones es el default (`SETTINGS_SECTIONS_CATALOG`); se
 * filtra (`exclude`), reordena (`order`), extiende (`include`) o reescribe sus
 * rutas (`basePath`). `includeLogout` agrega la card de cierre de sesión (sin
 * ruta) — su click se delega a `onLogout`.
 */
export interface SettingsHubConfig {
    /** Oculta secciones por token (ej. la propia entrada del HUB). */
    exclude?: string[];
    /** Secciones extra a sumar al catálogo (las de la app aún no promovidas). */
    include?: SettingsSection[];
    /** Orden explícito por token. Las no listadas quedan al final. */
    order?: string[];
    /** Incluye la card de logout (sin ruta). Default `false`. */
    includeLogout?: boolean;
    /** Reescribe el prefijo `/app/settings` de las rutas del catálogo. */
    basePath?: string;
    /** Namespace i18n de los labels de sección. Default `'Dashboard'`. */
    i18nNamespace?: string;
    /** Namespace i18n del header (pageTitle/pageDescription). Default `'Settings.Preferences'`. */
    pageI18nNamespace?: string;
    /** Callback al click de la card de logout (sin ruta). */
    onLogout?: () => void;
    /** Callback al click de cualquier card, con su token. */
    onSectionClick?: (token: string) => void;
}
