/**
 * Model Resolver for NeuroLink CLI Commands
 * Provides model resolution, search, and recommendation functionality
 * Part of Phase 4.1 - Models Command System
 */
import { AIProviderName } from "../core/types.js";
import type { JsonValue } from "../types/common.js";
import { type ModelInfo, type ModelSearchFilters, type ModelSearchResult, type ModelCapabilities, type UseCaseSuitability } from "./modelRegistry.js";
/**
 * Model recommendation context
 */
export interface RecommendationContext {
    useCase?: keyof UseCaseSuitability;
    maxCost?: number;
    minQuality?: "low" | "medium" | "high";
    requireCapabilities?: (keyof ModelCapabilities)[];
    excludeProviders?: AIProviderName[];
    contextSize?: number;
    preferLocal?: boolean;
}
/**
 * Model recommendation result
 */
export interface ModelRecommendation {
    model: ModelInfo;
    score: number;
    reasoning: string[];
    alternatives: ModelInfo[];
}
/**
 * Model comparison result
 */
export interface ModelComparison {
    models: ModelInfo[];
    comparison: {
        capabilities: Record<keyof ModelCapabilities, ModelInfo[]>;
        pricing: {
            cheapest: ModelInfo;
            mostExpensive: ModelInfo;
        };
        performance: Record<string, ModelInfo[]>;
        contextSize: {
            largest: ModelInfo;
            smallest: ModelInfo;
        };
    };
}
/**
 * Model resolver class with advanced search and recommendation functionality
 */
export declare class ModelResolver {
    /**
     * Resolve model ID from alias or fuzzy name
     */
    static resolveModel(query: string): ModelInfo | null;
    /**
     * Search models with advanced filtering
     */
    static searchModels(filters: ModelSearchFilters): ModelSearchResult[];
    /**
     * Get best model for specific use case
     */
    static getBestModel(context: RecommendationContext): ModelRecommendation;
    /**
     * Compare multiple models
     */
    static compareModels(modelIds: string[]): ModelComparison;
    /**
     * Get models by category
     */
    static getModelsByCategory(category: ModelInfo["category"]): ModelInfo[];
    /**
     * Get recommended models for use case
     */
    static getRecommendedModelsForUseCase(useCase: string): ModelInfo[];
    /**
     * Calculate cost comparison for models
     */
    static calculateCostComparison(models: ModelInfo[], inputTokens?: number, outputTokens?: number): Array<{
        model: ModelInfo;
        cost: number;
        costPer1K: number;
    }>;
    /**
     * Get model statistics
     */
    static getModelStatistics(): JsonValue;
    /**
     * Evaluate how well a model matches search filters
     */
    private static evaluateModelMatch;
    /**
     * Score model for recommendation context
     */
    private static scoreModelForContext;
    /**
     * Generate recommendation reasoning
     */
    private static generateRecommendationReasoning;
}
/**
 * Utility functions for CLI integration
 */
/**
 * Format search results for CLI display
 */
export declare function formatSearchResults(results: ModelSearchResult[]): JsonValue;
/**
 * Format recommendation for CLI display
 */
export declare function formatRecommendation(recommendation: ModelRecommendation): JsonValue;
/**
 * Format model comparison for CLI display
 */
export declare function formatComparison(comparison: ModelComparison): JsonValue;
