import type { GraphNode, GraphEdge, GraphParticle, GraphLayoutPort } from './types'; /** * Data provider port — supplies graph state to the visualization. * Host project implements this via an adapter (e.g., useTeamGraphAdapter). */ export interface GraphDataPort { /** All nodes to render (members, tasks, processes, lead) */ nodes: GraphNode[]; /** All edges (ownership, blocking, related, message, parent-child) */ edges: GraphEdge[]; /** Active particles (messages in flight, spawn effects) */ particles: GraphParticle[]; /** Team name for display */ teamName: string; /** Team brand color */ teamColor?: string; /** Whether the team lead process is alive */ isAlive?: boolean; /** Stable owner-slot layout hints supplied by the host app */ layout?: GraphLayoutPort; }