import { KnowledgeGraph } from '../contracts/graph.js'; import type { Communities } from './cluster.js'; export interface CommunityDetailsMicro { id: number; label: string; node_count: number; top_nodes: string[]; } export interface CommunityDetailsMid { id: number; label: string; node_count: number; edge_count: number; entry_points: Array<{ label: string; in_degree: number; }>; exit_points: Array<{ label: string; target_community: string; }>; bridge_nodes: string[]; dominant_file: string | null; key_nodes: Array<{ label: string; degree: number; node_kind: string; }>; } export interface CommunityDetailsMacro { id: number; label: string; node_count: number; edge_count: number; nodes: Array<{ label: string; source_file: string; node_kind: string; degree: number; }>; internal_edges: Array<{ from: string; to: string; relation: string; }>; cross_community_edges: Array<{ from: string; to: string; relation: string; target_community: string; }>; file_distribution: Array<{ file: string; node_count: number; }>; } export type CommunityZoomLevel = 'micro' | 'mid' | 'macro'; export declare function communityDetailsMicro(graph: KnowledgeGraph, communities: Communities, communityLabels: Record): CommunityDetailsMicro[]; export declare function communityDetailsMid(graph: KnowledgeGraph, communities: Communities, communityLabels: Record, communityId: number): CommunityDetailsMid | null; export declare function communityDetailsMacro(graph: KnowledgeGraph, communities: Communities, communityLabels: Record, communityId: number): CommunityDetailsMacro | null; export declare function communityDetailsAtZoom(graph: KnowledgeGraph, communities: Communities, communityLabels: Record, communityId: number, zoom: CommunityZoomLevel): CommunityDetailsMicro | CommunityDetailsMid | CommunityDetailsMacro | null;