export declare type NodeName = string;
export declare type Tuple<T> = [T, T];
export interface INode<T> {
    name: NodeName;
    data: T;
}
export interface IEdge {
    src: NodeName;
    dst: NodeName;
}
export declare enum TraversalMode {
    DFS = 0,
    BFS = 1,
}
export interface IIteratorOptions {
    untilNode?: NodeName;
    traversalMode: TraversalMode;
}
export declare type IteratorFn<T> = (node: T, prev: T[], i: number, d: number) => void;
export declare function iterateDfs<T>(nodes: INode<T>[], edges: IEdge[], func: IteratorFn<T>, untilNode?: NodeName): void;
export declare function iterateBfs<T>(nodes: INode<T>[], edges: IEdge[], func: IteratorFn<T>, untilNode?: NodeName): void;
export declare function iterate<T>(nodes: INode<T>[], edges: IEdge[], func: IteratorFn<T>, untilNode?: NodeName): void;
