import { GraphSubPinSpec, Specs } from '../types';
import { Dict } from '../types/Dict';
import { GraphSpec } from '../types/GraphSpec';
import { IO } from '../types/IO';
export type GraphNode = {
    next: Dict<GraphNode>;
    previous: Dict<GraphNode>;
};
export type GraphNodeMap = Dict<GraphNode>;
export type SubGraphNode = Dict<Set<string>>;
export declare function getSubPinSpecNodeId(type: IO, subPinSpec: GraphSubPinSpec): string;
export declare function getSubPinSpecNodeId_(type: IO, subPinSpec: GraphSubPinSpec): string;
export declare function build_graph(spec: GraphSpec, specs: Specs, pinToDatum?: {
    [pinNodeId: string]: string;
}): GraphNodeMap;
export declare const add_node_to_graph: (graph: GraphNodeMap, node_id: string) => void;
export declare const add_link_to_graph: (graph: GraphNodeMap, source_id: string, target_id: string) => void;
export declare const remove_link_from_graph: (graph: GraphNodeMap, source_id: string, target_id: string) => void;
export declare const change_link_target_on_graph: (graph: GraphNodeMap, source_id: string, target_id: string, next_target_id: string) => void;
export declare const change_link_source_on_graph: (graph: GraphNodeMap, source_id: string, next_source_id: string, target_id: string) => void;
export declare const remove_node_from_graph: (graph: GraphNodeMap, node_id: string) => void;
export declare const build_subgraph: (graph: GraphNodeMap, node_to_subgraph: Dict<string>, subgraph_to_node: Dict<Set<string>>, visited?: Dict<boolean>) => void;
export declare const makeRelated: (graph: GraphNodeMap) => SubGraphNode;
export declare const setConnectedTo: (id: string, graph: GraphNodeMap, related?: Set<string>, visited?: Set<string>) => void;
