/**
 * Cost Optimization Engine
 *
 * Intelligently manages model selection and token usage
 * to minimize costs while maintaining quality
 */
interface ModelCost {
    inputPer1k: number;
    outputPer1k: number;
}
interface ModelInfo {
    name: string;
    provider: string;
    category: string;
    contextWindow: number;
    cost: ModelCost;
    speed: 'fast' | 'medium' | 'slow';
    quality: 'high' | 'medium' | 'low';
    capabilities: string[];
}
interface OptimizationConstraints {
    maxCost?: number;
    maxLatency?: number;
    minQuality?: 'high' | 'medium' | 'low';
    requiredCapabilities?: string[];
}
interface TokenOptimizationResult {
    original: string;
    optimized: string;
    savings: {
        tokens: number;
        percentage: number;
    };
}
export declare class CostOptimizer {
    private modelInfo;
    private usageHistory;
    private modelPerformance;
    private budgetConstraints;
    constructor();
    /**
     * Initialize model information with costs and capabilities
     */
    private initializeModelInfo;
    /**
     * Select the most cost-effective model for a task
     */
    selectOptimalModel(task: {
        type: 'coding' | 'reasoning' | 'vision' | 'general' | 'debugging';
        estimatedTokens: number;
        complexity: 'simple' | 'medium' | 'complex';
    }, constraints?: OptimizationConstraints): {
        model: ModelInfo;
        reason: string;
        score: number;
        estimatedCost: number;
        alternatives: string[];
    };
    /**
     * Optimize token usage in prompts
     */
    optimizeTokenUsage(prompt: string, maxTokens?: number): TokenOptimizationResult;
    /**
     * Create fallback chain for model failures
     */
    createFallbackChain(primaryModel: string): string[];
    /**
     * Track usage for cost monitoring
     */
    trackUsage(model: string, inputTokens: number, outputTokens: number): void;
    /**
     * Get cost report
     */
    getCostReport(period?: 'hour' | 'day' | 'week' | 'month' | 'all'): {
        totalCost: number;
        byModel: Record<string, {
            tokens: number;
            cost: number;
            percentage: number;
        }>;
        byProvider: Record<string, number>;
        modelBreakdown: Record<string, number>;
        recommendations: string[];
    };
    /**
     * Estimate cost for a model and token count
     */
    private estimateCost;
    /**
     * Calculate actual cost
     */
    private calculateCost;
    /**
     * Set budget constraints
     */
    setConstraints(constraints: {
        daily?: number;
        monthly?: number;
    }): void;
    /**
     * Get optimization insights
     */
    getOptimizationInsights(): {
        recommendations: string[];
        savingsOpportunity: number;
        currentSpend: number;
        projectedSavings: number;
    };
    /**
     * Get default model
     */
    private getDefaultModel;
}
export {};
//# sourceMappingURL=cost-optimizer.d.ts.map