/**
 * Grok Tools
 *
 * Main entry point for tool definitions and management.
 * Tools are now organized in modular files under tool-definitions/.
 */
import type { CodeBuddyTool, JsonSchemaProperty } from "./client.js";
import { MCPManager, MCPTool } from "../mcp/client.js";
import { getToolSelector, ToolSelectionResult, QueryClassification, ToolCategory } from "../tools/tool-selector.js";
/**
 * Plugin tool definition interface
 */
export interface PluginToolDefinition {
    description: string;
    parameters?: {
        type: "object";
        properties: Record<string, JsonSchemaProperty>;
        required?: string[];
    };
}
export type { CodeBuddyTool, JsonSchemaProperty };
export { CORE_TOOLS, MORPH_EDIT_TOOL, isMorphEnabled, SEARCH_TOOLS, TODO_TOOLS, WEB_TOOLS, ADVANCED_TOOLS, MULTIMODAL_TOOLS, COMPUTER_CONTROL_TOOLS, BROWSER_TOOLS, CANVAS_TOOLS, } from "./tool-definitions/index.js";
/**
 * Initialize the tool registry with all built-in tools
 */
export declare function initializeToolRegistry(): void;
export declare function getMCPManager(): MCPManager;
export declare function initializeMCPServers(): Promise<void>;
export declare function convertMCPToolToCodeBuddyTool(mcpTool: MCPTool): CodeBuddyTool;
export declare function addMCPToolsToCodeBuddyTools(baseTools: CodeBuddyTool[]): CodeBuddyTool[];
/**
 * Convert a plugin tool definition to CodeBuddy format
 */
export declare function convertPluginToolToCodeBuddyTool(name: string, tool: PluginToolDefinition): CodeBuddyTool;
/**
 * Collect all tools from the plugin marketplace
 */
export declare function addPluginToolsToCodeBuddyTools(baseTools: CodeBuddyTool[]): CodeBuddyTool[];
export declare function getAllCodeBuddyTools(): Promise<CodeBuddyTool[]>;
/**
 * Get relevant tools for a specific query using RAG-based selection
 *
 * This reduces prompt bloat and improves tool selection accuracy
 * by only including tools that are semantically relevant to the query.
 *
 * @param query - The user's query
 * @param options - Selection options
 * @returns Selected tools and metadata
 */
export declare function getRelevantTools(query: string, options?: {
    maxTools?: number;
    minScore?: number;
    includeCategories?: ToolCategory[];
    excludeCategories?: ToolCategory[];
    alwaysInclude?: string[];
    useRAG?: boolean;
}): Promise<ToolSelectionResult>;
/**
 * Classify a query to understand what types of tools are needed
 */
export declare function classifyQuery(query: string): QueryClassification;
/**
 * Get the tool selector instance for advanced usage
 */
export { getToolSelector };
/**
 * Re-export types for convenience
 */
export type { ToolSelectionResult, QueryClassification, ToolCategory };
import type { UnifiedSkill } from '../skills/types.js';
/**
 * Augment a set of tools based on a matched skill's requirements.
 *
 * When a skill specifies `requires.tools` or `tools`, this function ensures
 * those tools are present in the selection. Missing tools are pulled from
 * the full tool registry so the LLM has everything the skill needs.
 *
 * @param currentTools - The currently selected tools (e.g. from RAG)
 * @param skill - The matched UnifiedSkill whose tool requirements should be honoured
 * @returns The augmented tool list (may be unchanged if all required tools are present)
 */
export declare function getSkillAugmentedTools(currentTools: CodeBuddyTool[], skill: UnifiedSkill): CodeBuddyTool[];
