import { CommonError, Result } from "."; import { NodeIdMap, TXorNode } from "../parser"; import { Ast } from "../language"; import { Settings } from ".."; export type TriedTraverse = Result; export type TVisitNodeFn, ResultType, Node, Return> = (state: State, node: Node, correlationId: number | undefined) => Promise; export type TEarlyExitFn, ResultType, Node> = TVisitNodeFn; export type TExpandNodesFn, ResultType, Node, NodesById> = (state: State, node: Node, collection: NodesById) => Promise>; export declare enum VisitNodeStrategy { BreadthFirst = "BreadthFirst", DepthFirst = "DepthFirst" } export interface ITraversalState extends Pick { readonly initialCorrelationId: number | undefined; result: T; } export declare function tryTraverse, ResultType, Node, NodesById>(state: State, nodesById: NodesById, root: Node, strategy: VisitNodeStrategy, visitNodeFn: TVisitNodeFn, expandNodesFn: TExpandNodesFn, earlyExitFn: TEarlyExitFn | undefined): Promise>; export declare function tryTraverseAst, ResultType>(state: State, nodeIdMapCollection: NodeIdMap.Collection, root: Ast.TNode, strategy: VisitNodeStrategy, visitNodeFn: TVisitNodeFn, expandNodesFn: TExpandNodesFn, earlyExitFn: TEarlyExitFn | undefined): Promise>; export declare function tryTraverseXor, ResultType>(state: State, nodeIdMapCollection: NodeIdMap.Collection, root: TXorNode, strategy: VisitNodeStrategy, visitNodeFn: TVisitNodeFn, expandNodesFn: TExpandNodesFn, earlyExitFn: TEarlyExitFn | undefined): Promise>; export declare function assertGetAllAstChildren, ResultType>(_state: State, astNode: Ast.TNode, nodeIdMapCollection: NodeIdMap.Collection): Promise>; export declare function assertGetAllXorChildren, ResultType>(_state: State, xorNode: TXorNode, nodeIdMapCollection: NodeIdMap.Collection): Promise>; export declare function expandXorParent(_state: T, xorNode: TXorNode, nodeIdMapCollection: NodeIdMap.Collection): Promise>;