/** * LLM Provider Manager * * Manages multiple LLM provider adapters and implements provider selection * strategies including fallback, cost optimization, and speed optimization. * * @version 1.0.0 */ import type { ILLMProvider, LLMProviderName, LLMProviderRegistry, ProviderSelectionStrategy, LLMCompletionRequest, LLMCompletionResponse, HoloScriptGenerationRequest, HoloScriptGenerationResponse } from './types'; export interface ProviderManagerConfig { /** Provider registry - register the adapters you want to use */ providers: LLMProviderRegistry; /** Selection strategy */ strategy?: ProviderSelectionStrategy; } /** * Manages multiple LLM providers with automatic fallback and strategy selection. * * @example * ```typescript * const manager = new LLMProviderManager({ * providers: { * anthropic: new AnthropicAdapter({ apiKey: process.env.ANTHROPIC_API_KEY! }), * openai: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }), * }, * strategy: { * primary: 'anthropic', * fallback: 'openai', * }, * }); * * const scene = await manager.generateHoloScript({ * prompt: "a futuristic city skyline at sunset", * }); * ``` */ export declare class LLMProviderManager { private readonly providers; private readonly strategy; constructor(config: ProviderManagerConfig); /** * Generate HoloScript code using the configured provider strategy. * Falls back to secondary provider if primary fails. */ generateHoloScript(request: HoloScriptGenerationRequest): Promise; /** * Send a completion request using the configured primary provider. */ complete(request: LLMCompletionRequest, providerName?: LLMProviderName): Promise; /** * Run health checks on all registered providers. */ healthCheckAll(): Promise>; /** * Get the list of registered provider names. */ getRegisteredProviders(): LLMProviderName[]; /** * Get a specific provider by name. */ getProvider(name: LLMProviderName): ILLMProvider | undefined; private getProviderOrder; private detectDefaultStrategy; }