import { MemoryItem } from './types';
import { SimilarityEngine } from './similarity-engine';
/**
 * Classe qui gère la mémoire persistante des sessions précédentes
 */
export declare class MemoryManager {
    private memories;
    private knowledgeBase;
    private similarityEngine?;
    private dataDir;
    private memoriesDir;
    private knowledgeFilePath;
    constructor(similarityEngine?: SimilarityEngine);
    /**
     * Fonction de log pour le débogage uniquement
     * @param message Message à logger
     */
    private debugLog;
    private requestSave;
    /**
     * Génère un identifiant unique
     */
    private generateUniqueId;
    /**
     * Assure que les répertoires de stockage nécessaires existent
     */
    private ensureDirectoriesExist;
    /**
     * Charge les mémoires et la base de connaissances depuis le stockage persistant
     */
    private loadFromStorage;
    /**
     * Charge les mémoires depuis les fichiers dans le répertoire memories
     * @returns true si au moins une mémoire a été chargée, false sinon
     */
    private loadMemoriesFromFiles;
    /**
     * Charge la base de connaissances depuis le fichier knowledge.json
     * @returns true si la base de connaissances a été chargée, false sinon
     */
    private loadKnowledgeFromFile;
    /**
     * Simule la récupération de mémoires sauvegardées
     * Utilisé comme fallback si aucun fichier n'est disponible
     */
    private getSavedMemories;
    /**
     * Simule la récupération de connaissances sauvegardées
     * Utilisé comme fallback si aucun fichier n'est disponible
     */
    private getSavedKnowledge;
    /**
     * Sauvegarde l'état actuel dans le stockage persistant
     */
    private saveToStorage;
    /**
     * Ajoute un élément à la mémoire
     *
     * @param content Le contenu de l'élément de mémoire
     * @param tags Les tags associés
     * @param sessionId L'identifiant de session facultatif
     * @returns L'identifiant de l'élément ajouté
     */
    addMemory(content: string, tags?: string[], sessionId?: string): string;
    /**
     * Récupère un élément de mémoire par son identifiant
     *
     * @param id L'identifiant de l'élément
     * @returns L'élément de mémoire ou undefined si non trouvé
     */
    getMemory(id: string): MemoryItem | undefined;
    /**
     * Récupère les éléments de mémoire les plus récents
     *
     * @param limit Le nombre maximum d'éléments à récupérer
     * @param sessionId L'identifiant de session facultatif pour filtrer
     * @returns Un tableau des éléments les plus récents (filtrés par session)
     */
    getRecentMemories(limit?: number, sessionId?: string): MemoryItem[];
    /**
     * Récupère les éléments de mémoire les plus pertinents pour un contexte donné
     * AMÉLIORÉ: Fiabilité améliorée et meilleure gestion des erreurs
     *
     * @param context Le contexte pour lequel chercher des éléments pertinents
     * @param limit Le nombre maximum d'éléments à récupérer
     * @param sessionId L'identifiant de session facultatif pour filtrer
     * @returns Un tableau des éléments les plus pertinents (filtrés par session)
     */
    getRelevantMemories(context: string, limit?: number, sessionId?: string): Promise<MemoryItem[]>;
    /**
     * Implémentation de secours basée sur les mots-clés
     *
     * @param context Le contexte pour lequel chercher des éléments pertinents
     * @param limit Le nombre maximum d'éléments à récupérer
     * @param sessionId L'identifiant de session facultatif pour filtrer
     * @returns Un tableau des éléments les plus pertinents (filtrés par session)
     */
    private getRelevantMemoriesWithKeywords;
    /**
     * Récupère les éléments de mémoire par tag
     *
     * @param tag Le tag à rechercher
     * @param limit Le nombre maximum d'éléments à récupérer
     * @param sessionId L'identifiant de session facultatif pour filtrer
     * @returns Un tableau des éléments correspondant au tag (filtrés par session)
     */
    getMemoriesByTag(tag: string, limit?: number, sessionId?: string): MemoryItem[];
    /**
     * Ajoute ou met à jour un élément dans la base de connaissances
     *
     * @param key La clé de l'élément
     * @param value La valeur de l'élément
     */
    setKnowledge(key: string, value: any): void;
    /**
     * Récupère un élément de la base de connaissances
     *
     * @param key La clé de l'élément
     * @returns La valeur de l'élément ou undefined si non trouvé
     */
    getKnowledge(key: string): any;
    /**
     * Efface toutes les mémoires et connaissances
     */
    clear(): void;
    /**
     * Sauvegarde l'état complet d'un graphe de session dans un fichier dédié.
     * @param sessionId L'identifiant de la session.
     * @param graphStateJson La représentation JSON de l'état du graphe.
     */
    saveGraphState(sessionId: string, graphStateJson: string): Promise<void>;
    /**
     * Charge l'état complet d'un graphe de session depuis son fichier dédié.
     * @param sessionId L'identifiant de la session.
     * @returns Le JSON de l'état du graphe ou null si non trouvé ou en cas d'erreur.
     */
    loadGraphState(sessionId: string): Promise<string | null>;
}
