import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core'; import { ButtonMetadata } from '../../types'; import { ValGroupMember } from '../../../services/groups/types'; import * as i0 from "@angular/core"; /** Persona elegible para agregar al grupo (típicamente un `OrgMember`). */ export interface GroupMemberCandidate { userId: string; name?: string; email?: string; } /** * val-group-members — administrar la membresía de UN grupo (ADR-083). * * Deliberadamente NO trae su propio selector de personas: la fuente de * "quiénes son los miembros elegibles de la organización" varía por app (org * members, invitados, etc.), así que se recibe por `@Input candidates` en vez * de que este organismo importe un servicio de organización que no le * corresponde. Sin candidatos, igual funciona: solo lista y quita. * * Sin texto hardcodeado (lib i18n-agnostic): los labels llegan por `@Input`. */ export declare class GroupMembersComponent implements OnChanges { groupId: string; /** Personas elegibles para agregar. Vacío = el organismo solo lista/quita. */ candidates: GroupMemberCandidate[]; addPlaceholder: string; emptyLabel: string; removeLabel: string; membersChange: EventEmitter; private readonly groupsSvc; members: ValGroupMember[]; busy: boolean; get removeButtonProps(): ButtonMetadata; ngOnChanges(changes: SimpleChanges): void; private reload; /** Candidatos que todavía no están en el grupo — evita ofrecer un alta duplicada. */ eligible(): GroupMemberCandidate[]; nameFor(userId: string): string; add(userId: string): void; remove(userId: string): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }