/**
 * Configuración acotada de `val-organization-view` (object-first). Tres ejes de
 * variación permitidos — **NADA de slots arbitrarios** (ADR-021: una vista
 * full-feature no abre slots; si falta algo, se promueve un nuevo punto de
 * extensión):
 *
 *  - **secciones visibles** — gatean el render de cada bloque (información de la
 *    org, miembros, roles y permisos, invitar, transferir propiedad, salir de la
 *    org). El gating RBAC adicional (invitar = `users:*`, transferir = owner) es
 *    **interno** a la vista (vía `AuthService.hasPermission()` + `*valHasPermission`
 *    + computeds `isOwner`/`canManageMembers`) y NO se expone como config — decisión
 *    CTO confirmada. Estos flags solo permiten ocultar la sección por completo.
 *  - **branding** — `i18nNamespace` para resolver los textos (default
 *    `'Settings.Organization'`).
 *  - **comportamiento / callbacks** — rutas de navegación (`viewPermissionsRoute`,
 *    `leaveRedirectRoute`) y hooks opcionales tras editar / invitar / transferir /
 *    salir.
 */
export interface OrganizationViewConfig {
    /** Muestra la sección "Información" de la organización. Default `true`. */
    showInfo?: boolean;
    /** Muestra la sección "Miembros". Default `true`. */
    showMembers?: boolean;
    /** Muestra la sección "Roles y permisos" (explicativa). Default `true`. */
    showRoles?: boolean;
    /**
     * Muestra la sección de invitar miembros. Default `true`. El render real exige
     * además permiso `users:*` (gating RBAC interno vía `*valHasPermission`).
     */
    showInvite?: boolean;
    /**
     * Muestra la sección "Transferir propiedad". Default `true`. El render real exige
     * además ser owner (gating RBAC interno vía `isOwner()`).
     */
    showTransferOwnership?: boolean;
    /** Muestra la sección "Salir de la organización". Default `true`. */
    showLeave?: boolean;
    /**
     * Namespace i18n con el que la vista resuelve sus textos.
     * Default `'Settings.Organization'`.
     */
    i18nNamespace?: string;
    /**
     * Ruta a la que navegar al ver el detalle de roles y permisos (botón
     * "Ver roles y permisos"). Default `'/app/settings/permissions'`.
     */
    viewPermissionsRoute?: string;
    /**
     * Ruta a la que redirigir tras salir de la organización.
     * Default `'/app/settings/account'`.
     */
    leaveRedirectRoute?: string;
    /** Hook tras editar la organización vía el modal de edición. */
    onOrgEdited?: () => void;
    /** Hook tras invitar a un miembro vía el modal de invitación. */
    onMemberInvited?: () => void;
    /** Hook tras transferir la propiedad de la organización. */
    onOwnershipTransferred?: () => void;
    /** Hook tras salir de la organización. */
    onLeftOrg?: () => void;
}
