import { Routes } from '@angular/router';
import { ProfileViewConfig } from '../profile-view/types';
import { PreferencesViewConfig } from '../preferences-view/types';
import { SecurityViewConfig } from '../security-view/types';
import { AccountViewConfig } from '../account-view/types';
import { OrganizationViewConfig } from '../organization-view/types';
import { NotificationPreferencesViewConfig } from '../notification-preferences-view/types';
import { PermissionsViewConfig } from '../permissions-view/types';
import { SettingsHubConfig } from './types';
/**
 * Opciones de `provideValtechSettingsRoutes`. Agrupa el HUB (`val-settings-hub`)
 * con las vistas ya promovidas (Perfil + Preferencias) bajo un único `path`
 * base, y deja `extraRoutes` para las secciones de la app aún no promovidas
 * (security, account, notifications, organization, …).
 */
export interface ValtechSettingsRoutesOptions {
    /** Path base del bloque de settings. Default `'settings'`. */
    basePath?: string;
    /**
     * Path donde se monta el HUB dentro del bloque. Default `''` (índice). Para
     * apps que quieren el hub en una sub-ruta (ej. showcase lo tiene en
     * `preferences`), setear esto + `indexRedirectTo`.
     */
    hubPath?: string;
    /**
     * Si se setea, agrega `{ path: '', redirectTo, pathMatch: 'full' }` al índice.
     * Pensado para cuando `hubPath` NO es `''` (el índice queda libre y se redirige
     * al hub u otra sección). No usar junto con `hubPath: ''` (colisionarían).
     */
    indexRedirectTo?: string;
    /** Config del HUB (pasada por route data `settingsHubConfig`). */
    hubConfig?: SettingsHubConfig;
    /** Config de la vista Perfil (pass-through a `provideValtechProfileRoutes`). */
    profileConfig?: ProfileViewConfig;
    /** Config de la vista Preferencias (pass-through a `provideValtechPreferencesRoutes`). */
    preferencesConfig?: PreferencesViewConfig;
    /** Config de la vista Seguridad (pass-through a `provideValtechSecurityRoutes`). */
    securityConfig?: SecurityViewConfig;
    /** Config de la vista Cuenta (pass-through a `provideValtechAccountRoutes`). */
    accountConfig?: AccountViewConfig;
    /** Config de la vista Gestión de organización (pass-through a `provideValtechOrganizationRoutes`). */
    organizationConfig?: OrganizationViewConfig;
    /** Config de Preferencias de notificaciones push (pass-through). */
    notificationPreferencesConfig?: NotificationPreferencesViewConfig;
    /** Config del visor de Permisos (pass-through). */
    permissionsConfig?: PermissionsViewConfig;
    /** Monta la ruta `profile`. Default `true`. */
    includeProfile?: boolean;
    /** Monta la ruta de preferencias. Default `true`. */
    includePreferences?: boolean;
    /** Monta la ruta `security`. Default `true`. */
    includeSecurity?: boolean;
    /** Monta la ruta `account`. Default `true`. */
    includeAccount?: boolean;
    /** Monta la ruta `organization`. Default `true`. */
    includeOrganization?: boolean;
    /** Monta la ruta de preferencias de notificaciones push. Default `true`. */
    includeNotificationPreferences?: boolean;
    /** Monta la ruta `permissions`. Default `true`. */
    includePermissions?: boolean;
    /** Path de la vista Preferencias. Default `'preferences'`. */
    preferencesPath?: string;
    /** Path de la vista Preferencias de notificaciones push. Default `'notifications'`. */
    notificationPreferencesPath?: string;
    /** Rutas extra a sumar como hijas (secciones de la app no promovidas). */
    extraRoutes?: Routes;
}
/**
 * Helper para montar el bloque completo de Settings en una app del factory: el
 * HUB de navegación (`val-settings-hub`) + TODAS las vistas promovidas (Perfil,
 * Preferencias, Seguridad, Cuenta, Gestión org, Preferencias de notificaciones,
 * Permisos) + las rutas propias de la app (`extraRoutes`). Cada `include*` permite
 * apagar una sección; `hubPath`/`indexRedirectTo`/`*Path` permiten reubicar el hub
 * y las vistas para preservar URLs existentes.
 *
 * showcase lo consume (ver `settings.routes.ts` de showcase): hub en `preferences`,
 * preferences-view en `general`, index→redirect, `organization/new` por `extraRoutes`.
 *
 * @example
 * ```ts
 * // app.routes.ts
 * import { provideValtechSettingsRoutes } from 'valtech-components';
 *
 * export const routes: Routes = [
 *   {
 *     path: 'app',
 *     children: [
 *       ...provideValtechSettingsRoutes({
 *         hubConfig: { onLogout: () => auth.logoutWithConfirmation() },
 *         extraRoutes: [
 *           { path: 'security', loadComponent: () => ... },
 *         ],
 *       }),
 *     ],
 *   },
 * ];
 * ```
 */
export declare function provideValtechSettingsRoutes(opts?: ValtechSettingsRoutesOptions): Routes;
