import type { VoiceProvider, VoiceProviderCapability, VoiceProviderStatus } from './types.js'; export interface VoiceProviderDescriptor { readonly id: string; readonly label: string; readonly capabilities: readonly VoiceProviderCapability[]; } export declare class VoiceProviderRegistry { private readonly providers; register(provider: VoiceProvider, options?: { readonly replace?: boolean; }): () => void; unregister(id: string): boolean; get(id: string): VoiceProvider | null; list(): VoiceProviderDescriptor[]; findProvider(capability: VoiceProviderCapability, providerId?: string): VoiceProvider | null; /** * Resolve the provider an UNNAMED request should use. * * Registration order is an implementation detail, not a preference, picking * the first registrant handed every unnamed request to a cloud provider that * merely lacked its key while a fully provisioned local engine sat last in * the map ("OpenAI API key missing" on a host whose whisper worked). So the * default consults each candidate's own `configured` state: a configured * 'local' provider wins first (provisioned engines exist precisely so * unnamed requests use them, free, offline, no key), then any other * configured provider in registration order. Only when nothing reports * configured does the old first-registered fallback apply, so the resulting * error still names one concrete provider instead of "none". * * A named providerId keeps exact findProvider semantics. */ resolveProvider(capability: VoiceProviderCapability, providerId?: string): Promise; status(): Promise; } //# sourceMappingURL=provider-registry.d.ts.map