/**
 * Types communs pour le projet Smart-Thinking
 * Avec ajout du système de vérification et de fiabilité
 */
export type ThoughtType = 'regular' | 'revision' | 'meta' | 'hypothesis' | 'conclusion';
export type VerificationStatus = 'unverified' | 'partially_verified' | 'verified' | 'contradicted' | 'inconclusive' | 'absence_of_information' | 'uncertain' | 'contradictory';
export type VerificationDetailedStatus = 'unverified' | 'verification_pending' | // En attente de vérification
'verification_in_progress' | // Vérification en cours
'partially_verified' | 'verified' | 'contradicted' | 'inconclusive' | 'absence_of_information' | // Aucune information trouvée
'uncertain' | // Information incertaine
'contradictory';
export type ConnectionType = 'supports' | 'contradicts' | 'refines' | 'branches' | 'derives' | 'associates' | 'exemplifies' | 'generalizes' | 'compares' | 'contrasts' | 'questions' | 'extends' | 'analyzes' | 'synthesizes' | 'applies' | 'evaluates' | 'cites' | 'extended-by' | 'analyzed-by' | 'component-of' | 'applied-by' | 'evaluated-by' | 'cited-by';
export interface ConnectionAttributes {
    temporality?: 'before' | 'after' | 'during' | 'concurrent';
    certainty?: 'definite' | 'high' | 'moderate' | 'low' | 'speculative';
    directionality?: 'unidirectional' | 'bidirectional' | 'multidirectional';
    scope?: 'broad' | 'specific' | 'partial' | 'complete';
    nature?: 'causal' | 'correlational' | 'sequential' | 'hierarchical' | 'associative';
    customAttributes?: Record<string, any>;
}
export interface ThoughtNode {
    id: string;
    content: string;
    type: ThoughtType;
    timestamp: Date;
    connections: Connection[];
    metrics: ThoughtMetrics;
    metadata: Record<string, any>;
}
export interface Connection {
    targetId: string;
    type: ConnectionType;
    strength: number;
    description?: string;
    attributes?: ConnectionAttributes;
    inferred?: boolean;
    inferenceConfidence?: number;
    bidirectional?: boolean;
}
export interface Hyperlink {
    id: string;
    nodeIds: string[];
    type: ConnectionType;
    label?: string;
    attributes?: ConnectionAttributes;
    strength: number;
    inferred: boolean;
    confidence: number;
    metadata: Record<string, any>;
}
export interface ThoughtMetrics {
    confidence: number;
    relevance: number;
    quality: number;
}
export interface CalculationVerificationResult {
    original: string;
    verified: string;
    isCorrect: boolean;
    confidence: number;
}
export interface VerificationResult {
    status: VerificationStatus;
    confidence: number;
    sources: string[];
    verificationSteps: string[];
    contradictions?: string[];
    notes?: string;
    verifiedCalculations?: CalculationVerificationResult[];
}
export interface SuggestedTool {
    name: string;
    confidence: number;
    reason: string;
    priority?: number;
}
export interface VisualizationCluster {
    id: string;
    label: string;
    nodeIds: string[];
    color?: string;
    expanded?: boolean;
    level: number;
    parentClusterId?: string;
}
export interface InteractivityOptions {
    zoomable: boolean;
    draggable: boolean;
    selectable: boolean;
    tooltips: boolean;
    expandableNodes: boolean;
    initialZoom?: number;
    zoomRange?: [number, number];
    highlightOnHover?: boolean;
}
export interface FilterOptions {
    nodeTypes?: ThoughtType[];
    connectionTypes?: ConnectionType[];
    metricThresholds?: {
        confidence?: [number, number];
        relevance?: [number, number];
        quality?: [number, number];
    };
    textSearch?: string;
    dateRange?: [Date, Date];
    customFilters?: Record<string, any>;
}
export interface LayoutOptions {
    type: 'force' | 'hierarchical' | 'radial' | 'chronological' | 'thematic';
    direction?: 'LR' | 'RL' | 'TB' | 'BT';
    forceStrength?: number;
    spacing?: number;
    centerNode?: string;
    levelSeparation?: number;
}
export interface Visualization {
    nodes: VisualizationNode[];
    links: VisualizationLink[];
    clusters?: VisualizationCluster[];
    interactivity?: InteractivityOptions;
    filters?: FilterOptions;
    layout?: LayoutOptions;
    metadata?: Record<string, any>;
}
export interface VisualizationNode {
    id: string;
    label: string;
    type: ThoughtType;
    metrics: ThoughtMetrics;
    size?: number;
    color?: string;
    clusterId?: string;
    collapsed?: boolean;
    level?: number;
    icon?: string;
    tooltip?: string;
    hoverContent?: string;
    expandedContent?: string;
    position?: {
        x: number;
        y: number;
    };
    highlighted?: boolean;
    selected?: boolean;
    metadata?: Record<string, any>;
}
export interface VisualizationLink {
    source: string;
    target: string;
    type: ConnectionType;
    strength: number;
    width?: number;
    color?: string;
    dashed?: boolean;
    bidirectional?: boolean;
    animated?: boolean;
    weight?: number;
    highlighted?: boolean;
    tooltip?: string;
    hidden?: boolean;
}
export interface MemoryItem {
    id: string;
    content: string;
    tags: string[];
    timestamp: Date;
    relevanceScore?: number;
    metadata?: Record<string, any>;
}
export interface NextStepSuggestion {
    description: string;
    type: ThoughtType;
    confidence: number;
    reasoning: string;
}
export interface SmartThinkingParams {
    thought: string;
    thoughtType?: ThoughtType;
    connections?: Connection[];
    requestSuggestions?: boolean;
    generateVisualization?: boolean;
    suggestTools?: boolean;
    sessionId?: string;
    userId?: string;
    visualizationType?: 'graph' | 'chronological' | 'thematic' | 'hierarchical' | 'force' | 'radial';
    help?: boolean;
    requestVerification?: boolean;
    containsCalculations?: boolean;
    visualizationOptions?: {
        clusterBy?: 'type' | 'theme' | 'metric' | 'connectivity';
        direction?: 'LR' | 'RL' | 'TB' | 'BT';
        centerNode?: string;
        maxDepth?: number;
        filters?: FilterOptions;
        interactivity?: Partial<InteractivityOptions>;
    };
}
export interface SmartThinkingResponse {
    thoughtId: string;
    thought: string;
    thoughtType: ThoughtType;
    qualityMetrics: ThoughtMetrics;
    suggestedTools?: SuggestedTool[];
    visualization?: Visualization;
    relevantMemories?: MemoryItem[];
    suggestedNextSteps?: NextStepSuggestion[];
    verification?: VerificationResult;
    isVerified: boolean;
    verificationStatus?: VerificationDetailedStatus;
    certaintySummary: string;
    reliabilityScore: number;
}
