import { OnInit } from '@angular/core'; import { ButtonMetadata } from '../../types'; import { PermissionsViewConfig } from './types'; import * as i0 from "@angular/core"; interface PermGroupView { key: string; label: string; perms: string[]; } interface RoleView { id: string; name: string; description?: string; isSystem: boolean; groups: PermGroupView[]; hasPerms: boolean; } /** * `val-permissions-view` — vista Permisos full-feature autocontenida (organism). * Visor RBAC de solo lectura: muestra los roles del sistema (Visor/Editor/Admin + * roles de plataforma) y los roles personalizados de la org activa, con el * catálogo de permisos agrupado por alcance (app actual / plataforma / otras apps). * Promovida desde `showcase` bajo el proceso de ADR-021. * * **RBAC interno** (como `organization-view`): lee la org activa vía * `AuthService.user().activeOrgId`. La vista NO muta nada — el control de quién * puede verla es responsabilidad del guard de ruta del consumer; no hay gating * fino interno ni se expone como config. * * Datos: `forkJoin` de `OrgService.listOrgRoles(orgId)` (roles de la org) + * `PermissionCatalogService.getCatalog(orgId)` (catálogo + appId actual). El * catálogo define el alcance (`scope`/`appId`) de cada recurso para agrupar. * * NO renderiza ion-content — vive dentro de val-page-wrapper. `ActivatedRoute` se * inyecta `{ optional: true }` solo para leer el route data de config. Auto-registra * sus defaults i18n (es/en) si el consumer no proveyó el namespace (default * `Settings.Permissions`). */ export declare class PermissionsViewComponent implements OnInit { private i18n; private orgService; private catalog; private auth; private nav; private route; /** * Config vía @Input (object-first). Si no se pasa, se cae al route data * `permissionsConfig` (poblado por `provideValtechPermissionsRoutes`). * `resolvedConfig` mergea con los defaults — `@Input` gana sobre route data. */ config?: PermissionsViewConfig; /** * Cuando `true`, la vista está embebida en un modal — suprime el back-header * (lo gestiona el modal padre). Default `false` (uso como ruta). */ isModal: boolean; readonly resolvedConfig: import("@angular/core").Signal>; /** Namespace i18n resuelto (capturado para llamadas no-reactivas). */ private get ns(); readonly loading: import("@angular/core").WritableSignal; readonly loadError: import("@angular/core").WritableSignal; private readonly roles; readonly systemRoles: import("@angular/core").Signal; readonly customRoles: import("@angular/core").Signal; readonly activeOrgId: import("@angular/core").Signal; readonly retryButtonProps: import("@angular/core").Signal>; constructor(); ngOnInit(): void; load(): void; private buildRoleView; protected tt(key: string): string; appLabel(appId: string): string; roleLabel(name: string): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } export {};