/** * AST Visitor * Recursive traversal with enter/exit callbacks for validation rules. */ import type { ASTNode } from '@rcrsr/rill'; import type { ValidationContext } from './types.js'; /** * Visitor pattern interface for AST traversal. * Provides enter/exit callbacks invoked before and after visiting children. */ export interface RuleVisitor { /** * Called before visiting node's children. * Use for pre-order traversal validation. */ enter(node: ASTNode, context: ValidationContext): void; /** * Called after visiting node's children. * Use for post-order traversal validation. */ exit(node: ASTNode, context: ValidationContext): void; } /** * Recursively visit AST nodes with enter/exit callbacks. * Handles every node type in the ASTNode discriminated union. * * Traversal order: * 1. visitor.enter(node) * 2. Recurse into children * 3. visitor.exit(node) */ export declare function visitNode(node: ASTNode, context: ValidationContext, visitor: RuleVisitor): void;