/** * MODEL REGISTRY - Centralized catalog with metadata * Version tracking, capability discovery, pricing, SLA tracking */ import { ModelProvider } from '../../types/vendors'; export interface ModelMetadata { id: string; name: string; provider: ModelProvider; version: string; description?: string; capabilities: ModelCapability[]; pricing: ModelPricing; performance: ModelPerformance; limits: ModelLimits; sla?: ServiceLevelAgreement; status: ModelStatus; endpoints?: ModelEndpoint[]; tags?: string[]; created_at: Date; updated_at: Date; deprecated?: boolean; deprecation_date?: Date; replacement_model?: string; } export declare enum ModelStatus { AVAILABLE = "available", BETA = "beta", DEPRECATED = "deprecated", UNAVAILABLE = "unavailable", MAINTENANCE = "maintenance" } export interface ModelCapability { type: CapabilityType; supported: boolean; details?: Record; } export declare enum CapabilityType { TEXT_GENERATION = "text_generation", CHAT = "chat", FUNCTION_CALLING = "function_calling", VISION = "vision", EMBEDDINGS = "embeddings", FINE_TUNING = "fine_tuning", STREAMING = "streaming", JSON_MODE = "json_mode", SYSTEM_MESSAGES = "system_messages", MULTIMODAL = "multimodal", CODE_GENERATION = "code_generation", REASONING = "reasoning" } export interface ModelPricing { currency: string; input_cost_per_million: number; output_cost_per_million: number; image_cost?: number; audio_cost?: number; fine_tuning_cost?: { training_per_token: number; inference_multiplier: number; }; } export interface ModelPerformance { avg_latency_ms: number; p95_latency_ms?: number; p99_latency_ms?: number; throughput_tpm?: number; quality_score?: number; benchmark_scores?: Record; } export interface ModelLimits { max_tokens: number; max_input_tokens?: number; max_output_tokens?: number; context_window: number; rate_limit?: RateLimit; batch_size?: number; } export interface RateLimit { requests_per_minute: number; tokens_per_minute: number; requests_per_day?: number; } export interface ServiceLevelAgreement { uptime_percentage: number; response_time_ms: number; support_tier: 'community' | 'standard' | 'premium' | 'enterprise'; incident_response_time_hours: number; } export interface ModelEndpoint { url: string; region?: string; protocol: 'http' | 'https' | 'grpc'; health_check_url?: string; } export interface ModelSearchQuery { provider?: ModelProvider; capability?: CapabilityType; status?: ModelStatus; max_cost?: number; min_quality?: number; tags?: string[]; text_search?: string; } export interface ModelVersion { version: string; release_date: Date; changelog?: string; breaking_changes?: string[]; migration_guide?: string; } export declare class ModelRegistry { private models; private versions; private tags_index; private capability_index; constructor(); /** * Register a model */ register(metadata: ModelMetadata): void; /** * Get model by ID */ get(model_id: string): ModelMetadata | null; /** * Search models */ search(query: ModelSearchQuery): ModelMetadata[]; /** * List all models */ list(options?: { include_deprecated?: boolean; provider?: ModelProvider; status?: ModelStatus; }): ModelMetadata[]; /** * Get models by capability */ getByCapability(capability: CapabilityType): ModelMetadata[]; /** * Get cheapest model for capability */ getCheapest(capability?: CapabilityType): ModelMetadata | null; /** * Get fastest model for capability */ getFastest(capability?: CapabilityType): ModelMetadata | null; /** * Get highest quality model for capability */ getHighestQuality(capability?: CapabilityType): ModelMetadata | null; /** * Register model version */ registerVersion(model_id: string, version: ModelVersion): void; /** * Get version history */ getVersionHistory(model_id: string): ModelVersion[]; /** * Update model metadata */ update(model_id: string, updates: Partial): ModelMetadata | null; /** * Deprecate a model */ deprecate(model_id: string, replacement_model?: string, deprecation_date?: Date): boolean; /** * Get statistics */ getStats(): { total_models: number; by_provider: Record; by_status: Record; by_capability: Record; average_cost: number; average_latency: number; }; private updateIndexes; private initializeDefaultModels; } //# sourceMappingURL=model-registry.d.ts.map