import { InjectionToken } from '@angular/core'; import { OrgType } from '../org/types'; import * as i0 from "@angular/core"; /** * Config de una vertical para derivar su "persona" activa (ADR-056) a partir * del tipo de la org activa del usuario — genérico, sin nombres de dominio. * Ej. Chesed: `values: ['publisher','adopter']`, deriva 'publisher' si * `OrgType === 'BUSINESS'`. Mealplan podría usar `['verifier','member']`. */ export interface PersonaConfig { /** Los dos valores posibles de persona en esta app. */ values: readonly [T, T]; /** Deriva la persona desde el tipo de la org activa (null = tipo aún no resuelto). */ deriveFromOrgType: (orgType: OrgType | null) => T; /** Key de localStorage para persistir el override — única por app para no colisionar. */ storageKey: string; } export declare const PERSONA_CONFIG: InjectionToken>; /** * Servicio genérico de persona activa (ADR-056/061-063: extraído de Chesed * `PersonaService` para reuso cross-vertical). Deriva la persona del tipo de * la org activa (vía `OrgService`), con override manual por `?persona=` + * localStorage. Cada app provee su `PersonaConfig` (ver `providePersona()`). */ export declare class PersonaService { private auth; private orgs; private config; private readonly overrideSig; private readonly activeOrgTypeSig; private lastResolvedOrgId; readonly persona: import("@angular/core").Signal; /** `true` cuando la persona activa es la primaria (`config.values[0]`). */ readonly isPrimary: import("@angular/core").Signal; constructor(); /** * Resuelve la persona de forma determinista, esperando (si hace falta) a * que se cargue el tipo de la org activa. Para usar en guards. */ resolvePersona(): Promise; /** Setea o limpia el override (persiste en localStorage). `null` limpia. */ setOverride(persona: T | null): void; private bootstrapOverride; private safeGetItem; private safeSetItem; private safeRemoveItem; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵprov: i0.ɵɵInjectableDeclaration>; } /** Provider — cada app registra su `PersonaConfig` en `main.ts`. */ export declare function providePersona(config: PersonaConfig): { provide: InjectionToken>; useValue: PersonaConfig; };