import { BaseModel, ModelFetchOptions } from './base.model.js'; import '../../types/connector.js'; import '../../types/memory.js'; import '../../types/stream.js'; /** * Module for managing multiple AI model implementations. * * Allows registration of multiple models and provides a unified interface * for accessing them. Supports setting a default model for convenience. * All models must extend the BaseModel class for consistent API. * * @example * ```typescript * const modelModule = new ModelModule(); * modelModule.addModel("gpt-4", new OpenAIModel("gpt-4"), true); * modelModule.addModel("gemini", new GeminiModel("gemini-pro")); * * const defaultModel = modelModule.getModel(); * const specificModel = modelModule.getModel("gemini"); * ``` */ declare class ModelModule { /** Registry of available models indexed by name */ private models; private options; /** Name of the default model to use when none specified */ private defaultModelName?; /** * Registers a new model with the module. * * @param name - Unique identifier for the model * @param model - Model instance implementing BaseModel * @param isDefault - Whether to set this as the default model */ addModel(name: string, model: BaseModel, options?: ModelFetchOptions, isDefault?: boolean): void; /** * Retrieves a model by name or returns the default model. * * @param name - Optional model name to retrieve * @returns The requested model or default model if name not provided * @throws Error if no default model is set and name is not provided */ getModel(name?: string): BaseModel; getModelOptions(name?: string): ModelFetchOptions; /** * Returns information about all registered models. * * @returns Object containing all models and the default model name */ getModelList(): { models: string[]; defaultModelName: string | undefined; }; } export { ModelModule };