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;
    /** 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<boolean>;
    readonly currentRole: import("@angular/core").WritableSignal<string>;
    readonly roleControl: FormControl<string>;
    private roleSub?;
    readonly displayName: import("@angular/core").Signal<string>;
    readonly subtitle: import("@angular/core").Signal<string>;
    readonly currentRoleLabel: import("@angular/core").Signal<string>;
    readonly permissionsForCurrentRole: import("@angular/core").Signal<string[]>;
    readonly roleSelectProps: import("@angular/core").Signal<Partial<InputMetadata>>;
    readonly removeButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
    constructor();
    ngOnInit(): void;
    permissionLabel(perm: string): string;
    private onChangeRole;
    onRemove(): Promise<void>;
    roleLabel(roleIdOrName: string): string;
    ngOnDestroy(): void;
    dismiss(): void;
    t(key: string): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<MemberDetailModalComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<MemberDetailModalComponent, "val-member-detail-modal", never, { "_modalRef": { "alias": "_modalRef"; "required": false; }; "member": { "alias": "member"; "required": false; }; "orgId": { "alias": "orgId"; "required": false; }; "canManage": { "alias": "canManage"; "required": false; }; "isSelf": { "alias": "isSelf"; "required": false; }; "availableRoles": { "alias": "availableRoles"; "required": false; }; "onChanged": { "alias": "onChanged"; "required": false; }; "i18nNamespace": { "alias": "i18nNamespace"; "required": false; }; }, {}, never, never, true, never>;
}
