import { OnDestroy, OnInit } from '@angular/core'; import { FormControl } from '@angular/forms'; import { ButtonMetadata, InputMetadata } from '../../types'; import { MemberDetail, OrgRoleWithPermissions } from './types'; import * as i0 from "@angular/core"; /** * `val-member-detail-modal` — detalle de miembro de organización: perfil, rol y * permisos. Promovido desde `showcase` bajo el proceso de ADR-021. * * Si `canManage` es true, permite cambiar el rol (vía `OrgService.changeMemberRole`) * y quitar al miembro (vía `OrgService.removeMember`, con confirmación destructiva). * Los permisos del rol actual se muestran cuando el consumer los provee en * `availableRoles`. * * Abierto vía `ModalService` — recibe `_modalRef` por `componentProps` + callback * `onChanged`. Header canónico (Regla #5): sin `ion-title`, botón Cerrar texto en * `slot=end`, identidad en el body con `val-user-avatar`/`val-display`/`val-title`. * * Auto-registra sus defaults i18n (es/en) si el consumer no proveyó el namespace * `Settings.MemberDetail`. */ export declare class MemberDetailModalComponent implements OnInit, OnDestroy { private orgService; private toast; private errors; private i18n; private confirmDialog; private catalog; /** Labeler de permisos con la SSOT del backend (catálogo). Se llena al cargar. */ private readonly permLabeler; /** Inyectado por `ModalService.open` — referencia para cerrar desde dentro. */ _modalRef?: { dismiss: (data?: unknown, role?: string) => void; }; /** Miembro a mostrar (pasado por `componentProps`). */ member: MemberDetail; /** Organización a la que pertenece el miembro. */ orgId: string; /** Si true, habilita cambio de rol y eliminación. */ canManage: boolean; /** Si true, el miembro mostrado es el propio usuario. */ isSelf: boolean; /** Roles disponibles (con permisos opcionales) para el selector de rol. */ availableRoles: OrgRoleWithPermissions[]; /** Callback tras cambiar rol o quitar al miembro (pasado por `componentProps`). */ onChanged?: () => void; /** Namespace i18n con que la vista resuelve sus textos. */ i18nNamespace: string; readonly working: import("@angular/core").WritableSignal; readonly currentRole: import("@angular/core").WritableSignal; readonly roleControl: FormControl; private roleSub?; readonly displayName: import("@angular/core").Signal; readonly subtitle: import("@angular/core").Signal; readonly currentRoleLabel: import("@angular/core").Signal; readonly permissionsForCurrentRole: import("@angular/core").Signal; readonly roleSelectProps: import("@angular/core").Signal>; readonly removeButtonProps: import("@angular/core").Signal>; constructor(); ngOnInit(): void; permissionLabel(perm: string): string; private onChangeRole; onRemove(): Promise; roleLabel(roleIdOrName: string): string; ngOnDestroy(): void; dismiss(): void; t(key: string): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }