import { OnDestroy, OnInit } from '@angular/core'; import { FormControl } from '@angular/forms'; import { ButtonMetadata, InputMetadata } from '../../types'; import { OrgRole } from '../../../services/org/types'; import * as i0 from "@angular/core"; interface PublicUserProfile { userId: string; handle?: string; name?: string; } /** * `val-invite-member-modal` — invitación de miembros a una organización. * Promovido desde `showcase` bajo el proceso de ADR-021. * * Busca usuarios por handle en Firestore `/profiles` (multi-select) o invita por * email cuando el query es un correo válido. Asigna el rol seleccionado y envía la * invitación vía `OrgService.inviteUser`. Excluye al usuario actual y a los * `existingMemberIds` de los resultados. * * Abierto vía `ModalService` — recibe `_modalRef` por `componentProps` + callback * `onSuccess`. Header canónico (Regla #5): sin `ion-title`, botón Cerrar texto en * `slot=end`, título/subtítulo en el body con `val-display`/`val-title`. * * Auto-registra sus defaults i18n (es/en) si el consumer no proveyó el namespace * `InviteModal`. */ export declare class InviteMemberModalComponent implements OnInit, OnDestroy { private orgService; private auth; private toast; private errors; private firestore; private i18n; /** Inyectado por `ModalService.open` — referencia para cerrar desde dentro. */ _modalRef?: { dismiss: (data?: unknown, role?: string) => void; }; /** Organización a la que se invita. */ orgId: string; /** Ids de miembros ya existentes (excluidos de los resultados). */ existingMemberIds: string[]; /** Callback tras enviar la(s) invitación(es) (pasado por `componentProps`). */ onSuccess?: () => void; /** Namespace i18n con que la vista resuelve sus textos. */ i18nNamespace: string; readonly query: import("@angular/core").WritableSignal; readonly searching: import("@angular/core").WritableSignal; readonly searchResults: import("@angular/core").WritableSignal; readonly selectedUsers: import("@angular/core").WritableSignal; readonly sending: import("@angular/core").WritableSignal; readonly selectedRole: import("@angular/core").WritableSignal; readonly availableRoles: import("@angular/core").WritableSignal; readonly roleControl: FormControl; readonly roleSelectProps: import("@angular/core").Signal>; readonly isEmail: import("@angular/core").Signal; readonly sendButtonProps: import("@angular/core").Signal>; readonly sendSelectedProps: import("@angular/core").Signal>; private searchSubject; private roleSub?; constructor(); onQueryChange(value: string): void; private loadRoles; roleDisplayName(role: OrgRole): string; onInviteByEmail(): Promise; isSelected(userId: string): boolean; toggleUser(user: PublicUserProfile): void; onSendSelected(): Promise; ngOnInit(): void; ngOnDestroy(): void; dismiss(): void; t(key: string): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } export {};