import type { ResourceManifest } from './define-resource'; /** * Registry singleton per-processo. Iniettabile via NestJS DI come `ResourceRegistry`. * Lookup primario per subject + secondario per prismaModel (Step 3 DEC-S3.14). */ export declare class ResourceRegistry { private readonly bySubject; private readonly byModel; /** * Registra un manifest. Throws se subject o prismaModel sono già registrati * (Step 1 DEC-3: 1:1 manifest ↔ Prisma model). */ register(manifest: ResourceManifest): void; /** Step 1 DEC-3 lookup primario. Ritorna undefined se subject non registrato. */ get(subject: string): ResourceManifest | undefined; /** Step 3 DEC-S3.14 lookup secondario. Usato dal Prisma extension hook. */ byPrismaModel(model: string): ResourceManifest | undefined; /** Iterazione per CI coherence check + codegen. */ all(): ResourceManifest[]; /** Filter per service (utile in skillID aggregator). */ forService(service: ResourceManifest['service']): ResourceManifest[]; /** Reset (solo per test). */ clear(): void; size(): number; } /** * Singleton globale di processo. Iniettato in NestJS providers via factory. * In test ambient, sostituibile creando una nuova `ResourceRegistry`. */ export declare const globalResourceRegistry: ResourceRegistry; /** * Costruisce un `ResourceRegistry` popolato da una lista di manifest. Pura (no cache). * Sostituisce il boilerplate `new ResourceRegistry(); for (m of RESOURCES) register(m)` * che ogni servizio consumer ripeteva in `src/authz/registry.ts`. */ export declare function buildResourceRegistry(resources: readonly ResourceManifest[]): ResourceRegistry; /** * Variante memoizzata di {@link buildResourceRegistry}: ritorna lo stesso registry per * la stessa istanza-array di `resources` (tipicamente il `RESOURCES` a livello modulo → * costruito una sola volta per processo). Il consumer chiama `getResourceRegistry(RESOURCES)` * direttamente, senza wrapper singleton locali. */ export declare function getResourceRegistry(resources: readonly ResourceManifest[]): ResourceRegistry; //# sourceMappingURL=resource-registry.d.ts.map