/** * AssetKindRegistry — concrete implementation of IAssetKindRegistry. * * Frozen-state machine: * - Created in "open" state, accepting provider registrations * - First read operation (or explicit freeze()) transitions to "frozen" * - No further registrations after freeze * * Pattern conflict detection: * - On register(), checks that the new provider's discoveryPatterns don't * overlap with any existing provider's patterns (exact string match). * - At resolveKind() time, checks that only one provider's matchesPath() * returns true (runtime safety net). * * Design decisions A3, A4: locked in Phase 1.7 planning. */ import type { AssetKindFileFilter, AssetKindRequiresEdge, IAssetKindProvider, IAssetKindRegistry } from "@skaile/workspaces/plugins"; import type { ManifestValidationResult } from "@skaile/workspaces/types/manifests"; export declare class AssetKindRegistry implements IAssetKindRegistry { private providers; private patternOwnership; private _frozen; get frozen(): boolean; register(provider: IAssetKindProvider): void; freeze(): void; getProvider(kind: string): IAssetKindProvider | undefined; getAllProviders(): IAssetKindProvider[]; getAllKinds(): string[]; resolveKind(relativePath: string): string | undefined; validateManifest(kind: string, data: unknown): ManifestValidationResult; defaultFileFilter(kind: string, manifestPath: string): AssetKindFileFilter | undefined; extractRequires(kind: string, assetRef: string, manifest: Record): AssetKindRequiresEdge[]; private autoFreeze; } //# sourceMappingURL=asset-kind-registry.d.ts.map