/**
 * Smart Preset Generator — Weighted Multi-Signal Scoring Model
 *
 * Recommends preset (default vs full) using 5 weighted signals derived from
 * actual project context and historical usage data:
 *
 *   1. Project Type Affinity   — static: how many specialized toolsets fit this project type
 *   2. Usage Breadth            — empirical: how many distinct toolsets were actually used
 *   3. Specialized Usage Depth  — empirical: calls to non-default toolsets (weighted by recency)
 *   4. Failure Penalty          — empirical: frequently failing tools penalize confidence
 *   5. History Weight           — meta: more history = higher confidence in the recommendation
 *
 * The final score is a weighted sum normalized to [0, 1].
 *   score > 0.55  →  recommend full
 *   score <= 0.55 →  recommend default
 *   confidence = f(history_weight, failure_penalty)
 */
import Database from 'better-sqlite3';
import { type ProjectContext } from './projectDetector.js';
import type { McpTool } from '../types.js';
export interface PresetRecommendation {
    preset: 'default' | 'full';
    reason: string;
    confidence: number;
    score: number;
    suggestedToolsets: string[];
    optionalToolsets: string[];
    projectContext: ProjectContext;
    usageInsights: UsageInsights;
    signals: SignalBreakdown;
}
export interface UsageInsights {
    mostUsedToolsets: string[];
    unusedToolsets: string[];
    frequentlyFailingTools: Array<{
        name: string;
        failures: number;
        lastError: string | null;
    }>;
    totalCallsLast30d: number;
    uniqueToolsetsUsed: number;
}
export interface SignalBreakdown {
    projectTypeAffinity: number;
    usageBreadth: number;
    specializedDepth: number;
    failurePenalty: number;
    historyWeight: number;
}
export interface PresetConfig {
    name: 'default' | 'full';
    toolsets: string[];
    toolCount: number;
}
export declare function generateSmartPreset(db: Database.Database, toolsetMap: Record<string, McpTool[]>, projectPath?: string): PresetRecommendation;
export declare function getPresetConfig(preset: 'default' | 'full', toolsetMap: Record<string, McpTool[]>): PresetConfig;
export declare function listPresets(toolsetMap: Record<string, McpTool[]>): Array<{
    name: string;
    toolsets: string[];
    toolCount: number;
    description: string;
}>;
export declare function formatPresetRecommendation(recommendation: PresetRecommendation, toolsetMap: Record<string, McpTool[]>): string;
