import type { ASTNode, VisitorHandlers, TransformOptions, OptimizationPass, VisitorContext } from './types.js';
export declare function transform(ast: ASTNode, visitor: VisitorHandlers, options?: TransformOptions): ASTNode;
export declare function optimize(ast: ASTNode, options?: TransformOptions): ASTNode;
export declare function applyOptimizationPasses(ast: ASTNode, passes: OptimizationPass[]): ASTNode;
export declare function normalize(ast: ASTNode): ASTNode;
export declare function inlineVariables(ast: ASTNode): ASTNode;
export declare function extractCommonExpressions(ast: ASTNode): ASTNode;
export declare function createOptimizationPass(config: {
    name: string;
    description?: string;
    transform: (node: ASTNode, context: VisitorContext) => ASTNode | ASTNode[] | null;
    shouldRun?: (node: ASTNode) => boolean;
}): OptimizationPass;
//# sourceMappingURL=transformer.d.ts.map