import type { Graph, EdgeRef, NodeId } from './helpers.js'; export declare function normalizeGraph(g: Graph): Graph; export declare function incoming(g: Graph, v: NodeId): EdgeRef[]; export declare function outgoing(g: Graph, v: NodeId): EdgeRef[]; export declare function buildSuccessorMap(g: Graph): Map; export declare function buildSortedSuccessorMap(g: Graph): Map; export declare function buildInDegreeMap(g: Graph): Map; export declare function sortedZeroInDegreeNodes(indeg: Map): NodeId[]; export declare function buildPredecessorSuccessorMaps(g: Graph, includeEdge?: (edge: EdgeRef) => boolean): { preds: Map; succs: Map; }; export declare function buildLayersFromRanks(g: Graph, order: NodeId[], rankOf: Record, opts?: { skipGroups?: boolean; }): NodeId[][]; export declare function isAcyclic(g: Graph): boolean; export declare function topoSortIfAcyclic(g: Graph): NodeId[] | null; /** * Build an index map from node IDs to their positions in a layer. * This is used for efficient lookups during crossing minimization. */ export declare function buildLayerIndex(layer: NodeId[]): Map; export declare function countInversions(values: number[]): number;