interface Model { id: string; name: string; provider: string; description?: string; capabilities: ModelCapabilities; pricing: ModelPricing; contextWindow: number; maxCompletionTokens: number; releaseDate?: Date; deprecated: boolean; rating?: number; popularity?: number; architecture?: string; modality?: 'text' | 'multimodal'; tags?: string[]; metadata?: Record; } interface ModelCapabilities { vision: boolean; functionCalling: boolean; jsonMode: boolean; tools: boolean; streaming: boolean; codeGeneration?: boolean; multilingual?: boolean; } interface ModelPricing { inputTokens: number; outputTokens: number; imageInput?: number; currency?: string; } interface ModelFilter { providers?: string[]; capabilities?: Partial; maxCost?: number; minContextWindow?: number; modality?: 'text' | 'multimodal'; excludeDeprecated?: boolean; tags?: string[]; } interface ModelMetadata { id: string; averageLatency?: number; successRate?: number; lastUpdated: Date; customMetrics?: Record; } declare class ModelCatalog { private models; private lastSync?; constructor(); /** * Load embedded model catalog from JSON */ private loadEmbeddedModels; /** * Get a specific model by ID */ getModel(id: string): Model | null; /** * Get all models */ getAllModels(): Model[]; /** * Get models by provider */ getModelsByProvider(provider: string): Model[]; /** * Filter models by criteria */ filterModels(filter: ModelFilter): Model[]; /** * Get models with specific capability */ getModelsByCapability(capability: keyof Model['capabilities']): Model[]; /** * Get cheapest models (sorted by total cost) */ getCheapestModels(limit?: number): Model[]; /** * Get all free models */ getFreeModels(): Model[]; /** * Search models by name or description */ /** * Search models by name or description */ searchModels(query: string): Model[]; /** * Get total number of models */ count(): number; /** * Check if model exists */ hasModel(id: string): boolean; /** * Get last sync time */ getLastSync(): Date | undefined; /** * Add or update a model (for testing or dynamic updates) */ addModel(model: Model): void; /** * Remove a model */ removeModel(id: string): boolean; /** * Clear all models */ clear(): void; } declare function getModelCatalog(): ModelCatalog; export { ModelCatalog as M, type Model as a, type ModelFilter as b, type ModelCapabilities as c, type ModelPricing as d, type ModelMetadata as e, getModelCatalog as g };