import { SuggestedTool } from './types';
interface KnownTool {
    name: string;
    description: string;
    keywords: string[];
    useCase: string;
    external?: boolean;
}
/**
 * Classe qui gère l'intégration avec d'autres outils MCP
 */
export declare class ToolIntegrator {
    private static readonly EXTERNAL_TOOL_NAMES;
    private knownTools;
    private readonly externalToolsEnabled;
    constructor();
    /**
     * Initialise le registre avec des outils MCP courants
     */
    private initializeKnownTools;
    /**
     * Suggère des outils pertinents pour un contenu donné avec option pour la vérification.
     * Tente d'utiliser le LLM interne pour une meilleure pertinence, avec repli sur l'heuristique.
     *
     * @param content Le contenu pour lequel suggérer des outils
     * @param options Options de configuration (limite, mode vérification, etc)
     * @returns Une promesse résolvant vers un tableau d'outils suggérés
     */
    suggestToolsGeneric(content: string, options?: {
        limit?: number;
        verificationMode?: boolean;
        toolFilter?: string[];
        previousSuggestions?: SuggestedTool[];
        reasoningStage?: 'initial' | 'developing' | 'advanced' | 'final';
    }): Promise<SuggestedTool[]>;
    /**
     * Méthode heuristique originale pour suggérer des outils (utilisée comme repli).
     */
    private suggestToolsHeuristic;
    /**
     * Suggère des outils de vérification pertinents pour un contenu donné
     * @param content Le contenu pour lequel suggérer des outils
     * @param limit Le nombre maximum d'outils à suggérer
     * @returns Une promesse résolvant vers un tableau d'outils suggérés
     */
    suggestVerificationTools(content: string, limit?: number): Promise<SuggestedTool[]>;
    /**
     * Génère une raison spécifique pour la vérification avec un outil
     *
     * @param tool L'outil suggéré
     * @param content Le contenu à vérifier
     * @returns Une raison explicative pour la vérification
     */
    private generateVerificationReason;
    /**
     * Exécute un outil de vérification sur un contenu donné
     *
     * @param toolName Le nom de l'outil à exécuter
     * @param content Le contenu à vérifier
     * @returns Le résultat de la vérification
     */
    executeVerificationTool(toolName: string, content: string): Promise<any>;
    private executePerplexitySearch;
    private executeTavilySearch;
    private executeBraveSearch;
    private executeTavilyExtract;
    private executePythonVerification;
    private executeJavaScriptVerification;
    /**
     * Suggère des outils pertinents pour un contenu donné (méthode publique principale)
     *
     * @param content Le contenu pour lequel suggérer des outils
     * @param limit Le nombre maximum d'outils à suggérer
     * @returns Une promesse résolvant vers un tableau d'outils suggérés
     */
    suggestTools(content: string, limit?: number): Promise<SuggestedTool[]>;
    /**
     * Vérifie si un texte contient l'un des termes donnés
     *
     * @param text Le texte à vérifier
     * @param terms Les termes à rechercher
     * @returns true si le texte contient au moins un des termes, false sinon
     */
    private containsAny;
    /**
     * Génère une raison explicative pour la suggestion d'un outil (utilisé par l'heuristique)
     *
     * @param tool L'outil suggéré
     * @param content Le contenu pour lequel l'outil est suggéré
     * @returns Une raison explicative
     */
    private generateReason;
    /**
     * Ajoute un nouvel outil au registre
     *
     * @param name Le nom de l'outil
     * @param description La description de l'outil
     * @param keywords Les mots-clés associés
     * @param useCase Le cas d'usage de l'outil
     */
    addTool(name: string, description: string, keywords: string[], useCase: string): void;
    /**
     * Supprime un outil du registre
     *
     * @param name Le nom de l'outil à supprimer
     * @returns true si l'outil a été supprimé, false sinon
     */
    removeTool(name: string): boolean;
    /**
     * Récupère tous les outils du registre
     *
     * @returns Un tableau de tous les outils
     */
    getAllTools(): KnownTool[];
}
export {};
