import { Visualization, FilterOptions } from './types';
import { ThoughtGraph } from './thought-graph';
/**
 * Classe qui génère des visualisations du graphe de pensées
 */
export declare class Visualizer {
    private thoughtTypeColors;
    private connectionTypeColors;
    /**
     * Génère une visualisation du graphe de pensées
     *
     * @param thoughtGraph Le graphe de pensées à visualiser
     * @param centerThoughtId Optionnel: l'ID de la pensée centrale (si non spécifié, utilise la plus récente)
     * @returns Une visualisation du graphe
     */
    generateVisualization(thoughtGraph: ThoughtGraph, centerThoughtId?: string): Visualization;
    /**
     * Génère une visualisation chronologique du graphe de pensées
     *
     * @param thoughtGraph Le graphe de pensées à visualiser
     * @returns Une visualisation chronologique du graphe
     */
    generateChronologicalVisualization(thoughtGraph: ThoughtGraph): Visualization;
    /**
     * Génère une visualisation thématique du graphe de pensées
     *
     * @param thoughtGraph Le graphe de pensées à visualiser
     * @returns Une visualisation thématique du graphe
     */
    generateThematicVisualization(thoughtGraph: ThoughtGraph): Visualization;
    /**
     * Génère une couleur distincte pour un index donné
     */
    private getDistinctColor;
    /**
     * Génère des clusters à partir des nœuds du graphe
     *
     * @param thoughts Les pensées à regrouper en clusters
     * @param clusterBy Critère de regroupement ('type', 'theme', 'metric', 'connectivity')
     * @returns Les clusters générés
     */
    private generateClusters;
    /**
     * Génère une visualisation hiérarchique du graphe de pensées
     *
     * @param thoughtGraph Le graphe de pensées à visualiser
     * @param rootId Optionnel: l'ID du nœud racine
     * @param options Options de visualisation
     * @returns Une visualisation hiérarchique du graphe
     */
    generateHierarchicalVisualization(thoughtGraph: ThoughtGraph, rootId?: string, options?: {
        direction?: 'TB' | 'BT' | 'LR' | 'RL';
        levelSeparation?: number;
        clusterBy?: 'type' | 'theme' | 'metric' | 'connectivity';
    }): Visualization;
    /**
     * Génère une visualisation force-directed du graphe de pensées
     *
     * @param thoughtGraph Le graphe de pensées à visualiser
     * @param options Options de visualisation
     * @returns Une visualisation force-directed du graphe
     */
    generateForceDirectedVisualization(thoughtGraph: ThoughtGraph, options?: {
        clusterBy?: 'type' | 'theme' | 'metric' | 'connectivity';
        forceStrength?: number;
        centerNode?: string;
    }): Visualization;
    /**
     * Génère une visualisation radiale du graphe de pensées
     *
     * @param thoughtGraph Le graphe de pensées à visualiser
     * @param centerNodeId Optionnel: l'ID du nœud central (si non spécifié, utilise le nœud avec le plus de connexions)
     * @param options Options de visualisation
     * @returns Une visualisation radiale du graphe
     */
    generateRadialVisualization(thoughtGraph: ThoughtGraph, centerNodeId?: string, options?: {
        maxDepth?: number;
        radialDistance?: number;
    }): Visualization;
    /**
     * Applique des filtres à une visualisation
     *
     * @param visualization La visualisation à filtrer
     * @param filters Les options de filtrage à appliquer
     * @returns La visualisation filtrée
     */
    applyFilters(visualization: Visualization, filters: FilterOptions): Visualization;
    /**
     * Applique des interactions à une visualisation
     *
     * @param visualization La visualisation
     * @param interaction L'interaction à appliquer
     * @returns La visualisation mise à jour avec l'interaction
     */
    applyInteraction(visualization: Visualization, interaction: {
        type: 'highlight' | 'select' | 'expand' | 'collapse' | 'focus';
        nodeIds: string[];
    }): Visualization;
    /**
     * Crée une version simplifiée d'une visualisation pour améliorer les performances
     *
     * @param visualization La visualisation à simplifier
     * @param options Options de simplification
     * @returns La visualisation simplifiée
     */
    simplifyVisualization(visualization: Visualization, options?: {
        maxNodes?: number;
        minNodeImportance?: number;
    }): Visualization;
    /**
     * Génère des métadonnées pour la visualisation
     *
     * @param thoughts Les pensées du graphe
     * @param links Les liens de la visualisation
     * @param centerThoughtId L'ID de la pensée centrale
     * @returns Les métadonnées de la visualisation
     */
    private generateMetadata;
    /**
     * Tronque un texte à une longueur maximale
     *
     * @param text Le texte à tronquer
     * @param maxLength La longueur maximale
     * @returns Le texte tronqué
     */
    private truncateText;
    /**
     * Extrait les thèmes (mots-clés) des pensées
     *
     * @param thoughts Les pensées dont extraire les thèmes
     * @returns Un tableau de thèmes
     */
    private extractThemes;
}
