import { Graph, GraphNode } from '../Graphs'; export declare type ImmediateDominatorEdge = { type: 'immediateDominator'; from: DominatorTreeNode; to: DominatorTreeNode; }; export declare type DominatorTreeNode = { id: string; cfgNode: CFGNodeType; immediateDominator?: ImmediateDominatorEdge; dominates: ImmediateDominatorEdge[]; }; export declare class DominatorTree extends Graph, ImmediateDominatorEdge> { static fromCFG(graph: Graph): DominatorTree; dominates(a: string, b: string): boolean; immediatelyDominates(a: string, b: string): boolean; getInwardEdges(node: DominatorTreeNode): ImmediateDominatorEdge[]; getOutwardEdges(node: DominatorTreeNode): ImmediateDominatorEdge[]; getImmediateDominator(id: string): CFGNodeType | undefined; getImmediateDominees(id: string): CFGNodeType[]; }