import { PrismaAstNode } from "./ast"; export interface PrismaAstNodeVisitor { enter?(node: T): void; leave?(node: T): void; } export type PrismaAstVisitor = { readonly [T in PrismaAstNode as T["kind"]]?: PrismaAstNodeVisitor; }; export declare function visitAst(node: T, visitor: PrismaAstVisitor): void; type ReducedField = T extends null | undefined ? T : T extends PrismaAstNode ? R : T extends ReadonlyArray ? ReadonlyArray : T; type ReducedNode = { [K in keyof T]: ReducedField; }; export type PrismaAstNodeReducer = (node: ReducedNode) => R; export type PrismaAstReducer = { readonly [T in PrismaAstNode as T["kind"]]?: PrismaAstNodeReducer; }; export declare function reduceAst(node: T, reducer: PrismaAstReducer): R | undefined; export {}; //# sourceMappingURL=visit.d.ts.map