import { ElementAccessor } from './graph';
import { VertexRef, Vertex, EdgeRef, Edge, PropRef, Prop } from './types';
interface TraversalVisitor {
    startVertex?: (vertex: Vertex) => Promise<void>;
    endVertex?: (vertex: Vertex) => Promise<void>;
    startEdge?: (edge: Edge) => Promise<void>;
    endEdge?: (edge: Edge) => Promise<void>;
    startProp?: (edge: Prop) => Promise<void>;
    endProp?: (edge: Prop) => Promise<void>;
}
declare function traverseVertices(accessor: ElementAccessor, refs: Iterable<VertexRef>, visitor: TraversalVisitor): Promise<void>;
declare function traverseEdges(accessor: ElementAccessor, refs: Iterable<EdgeRef>, vertexTrace: Set<VertexRef>, visitor: TraversalVisitor): Promise<void>;
declare function traverseVertex(accessor: ElementAccessor, ref: VertexRef, vertexTrace: Set<VertexRef>, visitor: TraversalVisitor): Promise<void>;
declare function traverseEdge(accessor: ElementAccessor, ref: EdgeRef, vertexTrace: Set<VertexRef>, visitor: TraversalVisitor): Promise<void>;
declare function traverseProp(accessor: ElementAccessor, ref: PropRef, visitor: TraversalVisitor): Promise<void>;
export { TraversalVisitor, traverseVertices, traverseEdges, traverseVertex, traverseEdge, traverseProp, };
//# sourceMappingURL=depth-first.d.ts.map