import { Marker, Markers } from "./markers"; import { Cursor, SourceFile, Tree } from "./tree"; import { Draft } from "mutative"; type Objectish = Record | Array; export type ValidRecipeReturnType = State | void | undefined; export declare function produceAsync(before: Promise | Base, recipe: (draft: Draft) => ValidRecipeReturnType> | PromiseLike>>): Promise; export declare abstract class TreeVisitor { protected cursor: Cursor; private visitCount; afterVisit: TreeVisitor[]; visitDefined(tree: Tree, p: P, parent?: Cursor): Promise; visit(tree: Tree, p: P, parent?: Cursor): Promise; protected accept(t: T, p: P): Promise; protected stopAfterPreVisit(): void; isAcceptable(sourceFile: SourceFile, p: P): Promise; protected preVisit(tree: T, p: P): Promise; protected postVisit(tree: T, p: P): Promise; protected visitMarkers(markers: Markers, p: P): Promise; protected visitMarker(marker: M, p: P): Promise; protected produceTree(before: T, p: P, recipe?: ((draft: Draft) => ValidRecipeReturnType>) | ((draft: Draft) => Promise>>)): Promise; } export declare function noopVisitor(): TreeVisitor; export declare class RecipeRunError extends Error { readonly cause: Error; readonly cursor?: Cursor | undefined; constructor(cause: Error, cursor?: Cursor | undefined); } export {}; //# sourceMappingURL=visitor.d.ts.map