/**
 * @fileoverview OrdoJS Code Generator - Transforms AST into JavaScript and HTML
 */
import { type CompilationTarget, type ComponentAST, type GeneratedCode } from '../types/index.js';
import { type RPCGeneratorOptions } from './rpc-generator.js';
/**
 * Code generator options
 */
interface CodeGeneratorOptions {
    minify: boolean;
    sourceMaps: boolean;
    target: 'development' | 'production';
    compilationTarget?: CompilationTarget;
    rpcOptions?: RPCGeneratorOptions;
}
/**
 * OrdoJS Code Generator
 * Transforms AST into JavaScript and HTML output
 */
export declare class OrdoJSCodeGenerator {
    private options;
    private componentId;
    private reactiveVars;
    private eventHandlers;
    private indentLevel;
    private sourceMap;
    private rpcGenerator;
    constructor(options?: Partial<CodeGeneratorOptions>);
    /**
     * Generate client-side JavaScript code from AST
     */
    generateClientCode(ast: ComponentAST): string;
    /**
     * Generate server-side JavaScript code from AST
     */
    generateServerCode(ast: ComponentAST): string;
    /**
     * Generate HTML template for server-side rendering
     */
    generateHTML(ast: ComponentAST, initialProps?: Record<string, any>): string;
    /**
     * Generate complete code bundle
     */
    generate(ast: ComponentAST): GeneratedCode;
    /**
     * Generate code for markup block
     */
    private generateMarkupBlockCode;
    /**
     * Generate code for HTML element
     */
    private generateElementCode;
    /**
     * Generate HTML for markup block
     */
    private generateMarkupBlockHTML;
    /**
     * Generate HTML for element
     */
    private generateElementHTML;
    /**
     * Generate code for expression
     */
    private generateExpression;
    /**
     * Generate code for a statement
     */
    private generateStatement;
    /**
     * Generate function parameters string
     */
    private generateFunctionParameters;
    /**
     * Helper to generate indentation
     */
    private indent;
    /**
     * Helper to escape string literals
     */
    private escapeString;
    /**
     * Generate a unique ID for elements
     */
    private generateUniqueId;
}
export {};
//# sourceMappingURL=code-generator.d.ts.map