import { SuggestedTool } from './types';
/**
 * Classe qui gère l'intégration avec d'autres outils MCP
 */
export declare class ToolIntegrator {
    private knownTools;
    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
     * AMÉLIORÉ: Scores plus dynamiques et adaptés au raisonnement
     *
     * @param content Le contenu pour lequel suggérer des outils
     * @param options Options de configuration (limite, mode vérification, etc)
     * @returns Un tableau d'outils suggérés
     */
    suggestToolsGeneric(content: string, options?: {
        limit?: number;
        verificationMode?: boolean;
        toolFilter?: string[];
        previousSuggestions?: SuggestedTool[];
        reasoningStage?: 'initial' | 'developing' | 'advanced' | 'final';
    }): SuggestedTool[];
    /**
     * 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 Un tableau d'outils suggérés
     */
    suggestVerificationTools(content: string, limit?: number): 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>;
    /**
     * Exécute une recherche Perplexity pour vérifier des informations
     *
     * @param content Le contenu à vérifier
     * @returns Le résultat de la vérification
     */
    private executePerplexitySearch;
    /**
     * Exécute une recherche Tavily pour vérifier des informations
     *
     * @param content Le contenu à vérifier
     * @returns Le résultat de la vérification
     */
    private executeTavilySearch;
    /**
     * Exécute une recherche Brave pour vérifier des informations
     *
     * @param content Le contenu à vérifier
     * @returns Le résultat de la vérification
     */
    private executeBraveSearch;
    /**
     * Exécute une extraction Tavily pour vérifier des informations
     *
     * @param content Le contenu à vérifier
     * @returns Le résultat de la vérification
     */
    private executeTavilyExtract;
    /**
     * Vérifie des informations via exécution de code Python
     *
     * @param content Le contenu à vérifier
     * @returns Le résultat de la vérification
     */
    private executePythonVerification;
    /**
     * Vérifie des informations via exécution de code JavaScript
     *
     * @param content Le contenu à vérifier
     * @returns Le résultat de la vérification
     */
    private executeJavaScriptVerification;
    /**
     * Suggère des outils 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 Un tableau d'outils suggérés
     */
    suggestTools(content: string, limit?: number): 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
     *
     * @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(): any[];
}
