/** * Manifest registry — indexes extension manifests without loading runtime code. */ import type { DiscoveredExtension } from './types/loader.js'; import type { ExtensionManifest } from './types/manifest.js'; export interface ManifestRegistryEntry { id: string; manifest: ExtensionManifest; source: 'workspace' | 'global' | 'bundled' | 'config'; path: string; } export declare class ManifestRegistry { private entries; private providerIndex; private speechProviderIndex; private mediaUnderstandingProviderIndex; private channelIndex; private modelPrefixIndex; private envVarIndex; static fromDiscovered(discovered: DiscoveredExtension[]): ManifestRegistry; addEntry(entry: ManifestRegistryEntry): void; private buildIndexesForEntry; getAllEntries(): ManifestRegistryEntry[]; getEntry(id: string): ManifestRegistryEntry | undefined; findByProvider(providerId: string): ManifestRegistryEntry | undefined; findBySpeechProvider(providerId: string): ManifestRegistryEntry | undefined; findByMediaUnderstandingProvider(providerId: string): ManifestRegistryEntry | undefined; findByChannel(channelId: string): ManifestRegistryEntry | undefined; findByModelId(modelId: string): ManifestRegistryEntry | undefined; findByEnvVar(envVarName: string): ManifestRegistryEntry | undefined; detectAvailableByEnv(env: NodeJS.ProcessEnv): ManifestRegistryEntry[]; listProviderExtensions(): ManifestRegistryEntry[]; listChannelExtensions(): ManifestRegistryEntry[]; listEnabledByDefault(): ManifestRegistryEntry[]; private matchesModelPatterns; }