import type { FileResolver } from '../evaluator/ContextStack'; import type { Ast } from '../parser/types'; export interface MacroExpandOptions { /** File resolver for cross-file macro imports (e.g. let { double } = import("./macros")) */ fileResolver?: FileResolver; /** Base directory for resolving relative imports in macro evaluation */ fileResolverBaseDir?: string; } /** * Build-time macro expansion pass. * * Walks the entire AST, finds macro definitions (let name = macro ...), * evaluates them to get macro functions, then expands all calls * to those macros using macroexpand. The macro definitions are * removed from the output. * * When a fileResolver is provided, also discovers macros imported from * other files (e.g. let { double } = import("./macros")). * * Macros that fail to evaluate are left unexpanded. */ export declare function expandMacros(ast: Ast, options?: MacroExpandOptions): Ast;