/**
 * Intelligent Tool Selection System
 * Limits tools based on context to improve LLM performance (following Wordware's <15 tools rule)
 */
import { EnhancedTool, DebugContext, ToolSelectionStrategy } from '../types/enhanced-tool-metadata';
export interface ToolScore {
    tool: EnhancedTool;
    score: number;
    reasoning: string[];
}
export interface ToolSelectionResult {
    selectedTools: EnhancedTool[];
    totalAvailable: number;
    selectionReasoning: string;
    alternativeTools: EnhancedTool[];
}
/**
 * Intelligent Tool Selector
 * Selects optimal subset of tools based on current debugging context
 */
export declare class IntelligentToolSelector {
    private allTools;
    private userHistory;
    private selectionStrategy;
    constructor(strategy?: Partial<ToolSelectionStrategy>);
    /**
     * Register available tools
     */
    registerTools(tools: EnhancedTool[]): void;
    /**
     * Select optimal tools for current context
     */
    selectTools(context: DebugContext, requestedCategories?: string[]): ToolSelectionResult;
    /**
     * Score tools based on current context
     */
    private scoreTools;
    /**
     * Calculate framework compatibility score
     */
    private calculateFrameworkScore;
    /**
     * Calculate user history score based on past usage
     */
    private calculateUserHistoryScore;
    /**
     * Calculate cost efficiency score
     */
    private calculateCostScore;
    /**
     * Calculate authority level appropriateness score
     */
    private calculateAuthorityScore;
    /**
     * Generate reasoning for tool selection
     */
    private generateToolReasoning;
    /**
     * Generate overall selection reasoning
     */
    private generateSelectionReasoning;
    /**
     * Get human-readable phase description
     */
    private getPhaseDescription;
    /**
     * Count tools by category
     */
    private countCategories;
    /**
     * Record tool usage for learning
     */
    recordToolUsage(toolName: string): void;
    /**
     * Get tool recommendations based on current context
     */
    getToolRecommendations(context: DebugContext, excludeTools?: string[]): EnhancedTool[];
    /**
     * Explain why a tool was or wasn't selected
     */
    explainToolSelection(toolName: string, context: DebugContext): string;
    /**
     * Update selection strategy
     */
    updateStrategy(updates: Partial<ToolSelectionStrategy>): void;
    /**
     * Get current selection strategy
     */
    getStrategy(): ToolSelectionStrategy;
}
//# sourceMappingURL=tool-selector.d.ts.map