/**
 * Intelligent Model Routing System
 *
 * Routes tasks to the most appropriate AI model based on
 * task characteristics, performance history, and constraints
 */
import { CostOptimizer } from './cost-optimizer.js';
import { PerformanceMonitor } from './performance-monitor.js';
export interface RoutingDecision {
    model: string;
    reasoning: string;
    alternativeModels: string[];
    estimatedCost: number;
    estimatedLatency: number;
}
interface TaskCharacteristics {
    type: 'coding' | 'debugging' | 'analysis' | 'generation' | 'vision' | 'reasoning' | 'general';
    complexity: 'simple' | 'medium' | 'complex';
    estimatedTokens: number;
    requiresSpeed: boolean;
    requiresAccuracy: boolean;
    contextLength?: number;
    language?: string;
    domain?: string;
}
export declare class ModelRouter {
    private costOptimizer;
    private performanceMonitor;
    private modelProfiles;
    private routingHistory;
    constructor(costOptimizer: CostOptimizer, performanceMonitor: PerformanceMonitor);
    /**
     * Initialize model profiles with characteristics
     */
    private initializeModelProfiles;
    /**
     * Route a task to the best model
     */
    routeTask(task: TaskCharacteristics, constraints?: {
        maxCost?: number;
        maxLatency?: number;
        preferredModels?: string[];
        excludeModels?: string[];
    }): Promise<RoutingDecision>;
    /**
     * Get candidate models for a task
     */
    private getCandidateModels;
    /**
     * Score models for a specific task
     */
    private scoreModels;
    /**
     * Make final routing decision
     */
    private makeRoutingDecision;
    /**
     * Generate routing reasoning
     */
    private generateRoutingReasoning;
    /**
     * Get cost score for a model
     */
    private getCostScore;
    /**
     * Estimate cost (simplified)
     */
    private estimateCost;
    /**
     * Get routing insights
     */
    getRoutingInsights(): {
        totalRoutings: number;
        modelUsage: Record<string, number>;
        averageScore: number;
        recommendations: string[];
    };
}
export {};
//# sourceMappingURL=model-router.d.ts.map