export declare class GraphEdge { source: GraphNode; target: GraphNode; weight?: number; context?: V; constructor(source: GraphNode, target: GraphNode, weight?: number, context?: V); get reverse(): GraphEdge; } export declare class GraphNode { id: number; edges: Set>; context?: T; constructor(id: number, context?: T); get degree(): number; get neighbors(): GraphNode[]; addEdge(target: GraphNode, weight?: number, context?: V): void; removeEdge(target: GraphNode): void; hasEdge(target: GraphNode): boolean; getEdge(target: GraphNode): GraphEdge | undefined; } export default class Graph { nodes: Map>; static fromNodes(nodes: GraphNode[]): Graph; [Symbol.iterator](): Generator<[number, GraphNode], void, unknown>; forEachNode(callback: (node: GraphNode, i: number) => void): void; forEachEdge(callback: (edge: GraphEdge, i: number) => void): void; nodeCount(): number; edgeCount(): number; asArray(): GraphNode[]; createNode(id: number, context?: T): GraphNode; addNode(node: GraphNode): GraphNode; getNode(id: number): GraphNode | undefined; hasNode(id: number): boolean; createEdge(source: GraphNode, target: GraphNode, weight?: number, context?: V): void; removeEdge(source: GraphNode, target: GraphNode): void; hasEdge(source: GraphNode, target: GraphNode): boolean; getEdge(source: GraphNode, target: GraphNode): GraphEdge | undefined; getEdgesFromNode(node: GraphNode): GraphEdge[]; getEdgesToNode(node: GraphNode): GraphEdge[]; adjacencyMatrix(): number[][]; /** * Gives the connectivity metrics of the graph. * * **Alpha**: The higher the alpha index, the more a network is connected. Trees and simple networks will have a value of 0. A value of 1 indicates a completely connected network. * * **Beta**: Trees and simple networks have Beta value of less than one. A connected network with one cycle has a value of 1. * * **Gamma**: Considers the relationship between the number of observed links and the number of possible links. The value of gamma is between 0 and 1 where a value of 1 indicates a completely connected network. */ getConnectivityMetrics(): { alpha: number; beta: number; gamma: number; }; /** * Returns the shortest path between two nodes in the graph using Dijkstra's algorithm. */ shortestPath(source: GraphNode, target: GraphNode, metric?: (edge: GraphEdge) => number): GraphNode[]; }