/** * Immutable graph query and mutation utilities for investigation taskflow graphs. * All mutation functions return new objects — input graphs are never mutated. */ import type { Edge, Node, TaskFlowGraph, ValidationResult } from './types.js'; export declare function findNodeById(graph: TaskFlowGraph, nodeId: string): Node | undefined; export declare function findEdgeById(graph: TaskFlowGraph, edgeId: string): Edge | undefined; export declare function findEdgeByEndpoints(graph: TaskFlowGraph, source: string, target: string, sourceOutputIndex?: number): Edge | undefined; export declare function getIncomingEdges(graph: TaskFlowGraph, nodeId: string): Edge[]; export declare function getOutgoingEdges(graph: TaskFlowGraph, nodeId: string): Edge[]; export declare function getPredecessors(graph: TaskFlowGraph, nodeId: string): Node[]; export declare function getSuccessors(graph: TaskFlowGraph, nodeId: string): Node[]; export declare function addNode(graph: TaskFlowGraph, node: Node): TaskFlowGraph; export declare function removeNode(graph: TaskFlowGraph, nodeId: string, options?: { reconnect?: boolean; }): { edges: Edge[]; graph: TaskFlowGraph; }; export declare function updateNode(graph: TaskFlowGraph, nodeId: string, updates: Partial): TaskFlowGraph; export declare function addEdge(graph: TaskFlowGraph, edge: Edge): TaskFlowGraph; export declare function removeEdge(graph: TaskFlowGraph, edgeId: string): TaskFlowGraph; export declare function validateGraph(graph: TaskFlowGraph): ValidationResult;