export declare namespace graph { /** * Edge of a graph */ interface IEdge { n0: Node; n1: Node; } /** * Implementation of IEdge */ class Edge implements IEdge { n0: Node; n1: Node; constructor(n0: Node, n1: Node); } /** * Labeled edge of a graph */ interface ILabeledEdge extends IEdge { label: Label; } /** * Implementation of ILabeledEdge */ class LabeledEdge extends Edge { label: Label; constructor(n0: Node, n1: Node, label: Label); } /** * Undirected graph with labeled edges */ class LabeledUndirectedGraph { /** * The set of nodes. */ nodes: Set; /** * The set of edges. */ edges: Set>; /** * @param edges The set of edges. * @param nodes The set of nodles. */ constructor(edges: Set> | Array>, nodes?: Set | Array); /** * @param node - The target node * @return he set of nodes that are neighbors of the node. */ neighborsOf(node: Node): Set<[Node, Label]>; private neighborLists; } /** * Directed graph */ class DirectedGraph { /** * The set of nodes. */ nodes: Set>; /** * The set of edges. */ edges: Set>>; /** * @param nodes The set of nodes. * @param edges The set of edges. */ constructor(edges: Set>> | Array>>, nodes?: Set> | Array>); outgoingNodesOf(node: Set): Set>; incomingNodesOf(node: Set): Set>; /** * @return The cycle that is contained this graph. If there are no cycles, returns null. */ getCycle(): Array> | null; /** * Deletes a node. * @param node The node to be deleted. * @return The directed graph that deletes the node. */ deleteNode(node: Set): DirectedGraph; /** * Merges nodes into one node. * @param nodes The nodes to be merged. * @return The directed graph that merges the nodes into one node. */ mergeNodes(target: Set>): DirectedGraph; private neighborLists; } }