/** * Layout algorithms for graph visualization * Provides force-directed and hierarchical layout options */ import type { GraphNode } from "./graph.js"; export interface AtlasEdge { from: string; to: string; allowed: boolean; reason?: string; } export interface LayoutConfig { iterations?: number; repulsion?: number; attraction?: number; damping?: number; levelSpacing?: number; nodeSpacing?: number; } export interface Layout { nodes: GraphNode[]; width: number; height: number; } /** * Force-directed graph layout (Fruchterman-Reingold algorithm) * Creates organic-looking layouts where connected nodes attract and all nodes repel */ export declare function forceDirectedLayout(nodes: GraphNode[], edges: AtlasEdge[], config?: LayoutConfig): Layout; /** * Hierarchical graph layout (top-down tree) * Organizes nodes in layers based on dependency structure */ export declare function hierarchicalLayout(nodes: GraphNode[], edges: AtlasEdge[], _config?: LayoutConfig): Layout; /** * Circular layout (nodes arranged in a circle) * Simple fallback layout for small graphs */ export declare function circularLayout(nodes: GraphNode[], edges: AtlasEdge[], _config?: LayoutConfig): Layout;