/** * MediaUnderstandingProviderRegistry — central lookup for STT/image/video * provider plugins. * * Mirrors the SpeechProviderRegistry pattern at src/voice/tts/speech-registry.ts * intentionally — same registration semantics, same alias handling, same * conflict-warn-and-overwrite policy. * * DECISION: The two registries are kept separate (rather than a single * "media provider" registry) because: * 1. SpeechProviderPlugin and MediaUnderstandingProvider have different * method shapes (synthesize vs transcribeAudio + describeImage). * 2. Many vendors implement only one side (Edge TTS has no STT; Whisper has * no TTS), so a unified registry would require a sparse capability matrix * anyway. * 3. Discovery UIs naturally split by direction (TTS list vs STT list). * * When a vendor implements BOTH (e.g. OpenAI), the registration code creates * two separate plugin objects sharing config — this stays explicit and avoids * "is this method on this object?" guessing in callers. */ import type { MediaCapability, MediaUnderstandingProvider } from './types.js'; export declare function registerMediaUnderstandingProvider(provider: MediaUnderstandingProvider): () => void; export declare function getMediaUnderstandingProvider(id: string): MediaUnderstandingProvider | undefined; export declare function listMediaUnderstandingProviders(): MediaUnderstandingProvider[]; /** * List providers that DECLARE the requested capability via `capabilities[]` * AND have an actual method implementation. The runner uses this to build * the per-capability fallback chain. */ export declare function listProvidersForCapability(capability: MediaCapability): MediaUnderstandingProvider[]; /** Test-only: clear the registry. Not exported from the package barrel. */ export declare function _clearMediaUnderstandingRegistryForTests(): void;