/**
 * Model Registry for NeuroLink CLI Commands
 * Provides centralized model data for models command system
 * Part of Phase 4.1 - Models Command System
 */
import { AIProviderName } from "../core/types.js";
import type { JsonValue } from "../types/common.js";
/**
 * Model capabilities interface
 */
export interface ModelCapabilities {
    vision: boolean;
    functionCalling: boolean;
    codeGeneration: boolean;
    reasoning: boolean;
    multimodal: boolean;
    streaming: boolean;
    jsonMode: boolean;
}
/**
 * Model pricing information
 */
export interface ModelPricing {
    inputCostPer1K: number;
    outputCostPer1K: number;
    currency: string;
}
/**
 * Model performance characteristics
 */
export interface ModelPerformance {
    speed: "fast" | "medium" | "slow";
    quality: "high" | "medium" | "low";
    accuracy: "high" | "medium" | "low";
}
/**
 * Model limitations and constraints
 */
export interface ModelLimits {
    maxContextTokens: number;
    maxOutputTokens: number;
    maxRequestsPerMinute?: number;
    maxRequestsPerDay?: number;
}
/**
 * Use case suitability scores (1-10 scale)
 */
export interface UseCaseSuitability {
    coding: number;
    creative: number;
    analysis: number;
    conversation: number;
    reasoning: number;
    translation: number;
    summarization: number;
}
/**
 * Complete model information
 */
export interface ModelInfo {
    id: string;
    name: string;
    provider: AIProviderName;
    description: string;
    capabilities: ModelCapabilities;
    pricing: ModelPricing;
    performance: ModelPerformance;
    limits: ModelLimits;
    useCases: UseCaseSuitability;
    aliases: string[];
    deprecated: boolean;
    isLocal: boolean;
    releaseDate?: string;
    category: "general" | "coding" | "creative" | "vision" | "reasoning";
}
/**
 * Model search filters
 */
export interface ModelSearchFilters {
    provider?: AIProviderName | AIProviderName[];
    capability?: keyof ModelCapabilities | (keyof ModelCapabilities)[];
    useCase?: keyof UseCaseSuitability;
    maxCost?: number;
    minContextSize?: number;
    maxContextSize?: number;
    performance?: ModelPerformance["speed"] | ModelPerformance["quality"];
    category?: ModelInfo["category"] | ModelInfo["category"][];
}
/**
 * Model search result with ranking
 */
export interface ModelSearchResult {
    model: ModelInfo;
    score: number;
    matchReasons: string[];
}
/**
 * Comprehensive model registry
 */
export declare const MODEL_REGISTRY: Record<string, ModelInfo>;
/**
 * Model aliases registry for quick resolution
 */
export declare const MODEL_ALIASES: Record<string, string>;
/**
 * Use case to model mappings
 */
export declare const USE_CASE_RECOMMENDATIONS: Record<string, string[]>;
/**
 * Get all models
 */
export declare function getAllModels(): ModelInfo[];
/**
 * Get model by ID
 */
export declare function getModelById(id: string): ModelInfo | undefined;
/**
 * Get models by provider
 */
export declare function getModelsByProvider(provider: AIProviderName): ModelInfo[];
/**
 * Get available providers
 */
export declare function getAvailableProviders(): AIProviderName[];
/**
 * Calculate estimated cost for a request
 */
export declare function calculateCost(model: ModelInfo, inputTokens: number, outputTokens: number): number;
/**
 * Format model for display
 */
export declare function formatModelForDisplay(model: ModelInfo): JsonValue;
