export declare class CodeGenerator {
    private indent;
    private indentStr;
    private output;
    private sourceCode;
    private sourceLines;
    private lastCommentedLine;
    private includeSourceComments;
    private paramRenameCounter;
    private functionParams;
    constructor(options?: {
        indentStr?: string;
        sourceCode?: string;
        includeSourceComments?: boolean;
    });
    generate(ast: any): string;
    private preProcessAST;
    /**
     * Scan the program body for variable declarations and assignments whose
     * names collide with Pine namespace/built-in names (e.g., `fill`, `size`,
     * `color`, `line`). Rename them with a `_$N` suffix so they don't shadow
     * the namespace destructured from `$.pine`.
     *
     * Only renames **user variables** — function parameters are handled
     * separately in generateFunctionDeclaration().
     *
     * Renaming rules:
     * - Variable declaration target (let fill = ...) → renamed
     * - Assignment target (fill := ...) → renamed
     * - Bare identifier read (return fill) → renamed
     * - Call callee (fill(...)) → NOT renamed (namespace call)
     * - MemberExpression object (size.tiny) → NOT renamed (namespace access)
     * - MemberExpression property (array.size) → NOT renamed (method name)
     * - Object property key ({size: ...}) → NOT renamed (named arg key)
     */
    private renameConflictingVariables;
    /**
     * Walk the AST and collect variable declarations / assignment targets
     * whose names conflict with CONFLICTING_NAMES.
     */
    private collectConflictingVarNames;
    /**
     * Context-aware variable reference renaming.
     * Renames Identifiers that are user-variable references, but skips:
     * - CallExpression callees (namespace function calls)
     * - MemberExpression objects with non-computed property (namespace.member)
     * - MemberExpression non-computed properties (obj.namespace)
     * - Object property keys ({namespace: value})
     */
    private renameVariableRefsInAST;
    private collectFunctionParams;
    writeSourceComment(startLine: any, endLine?: any): void;
    write(str: any): void;
    writeLine(str?: string): void;
    increaseIndent(): void;
    decreaseIndent(): void;
    generateProgram(node: any): void;
    generateStatement(node: any): void;
    generateTypeDefinition(node: any): void;
    private renameIdentifiersInAST;
    generateFunctionDeclaration(node: any): void;
    generateVariableDeclaration(node: any): void;
    generateExpressionStatement(node: any): void;
    generateIfStatement(node: any): void;
    generateIfStatementWithAssignment(condExpr: any, varName: any): void;
    generateNestedIfWithAssignments(node: any, varName: any): void;
    generateNestedIfAlternatesWithAssignments(alternate: any, varName: any): void;
    generateForStatement(node: any): void;
    generateWhileStatement(node: any): void;
    generateReturnStatement(node: any): void;
    generateBlockStatement(node: any, addIndent?: boolean): void;
    generateExpression(node: any): void;
    generateLiteral(node: any): void;
    generateBinaryExpression(node: any): void;
    generateUnaryExpression(node: any): void;
    generateAssignmentExpression(node: any): void;
    generateUpdateExpression(node: any): void;
    generateCallExpression(node: any): void;
    generateMemberExpression(node: any): void;
    generateConditionalExpression(node: any): void;
    generateIIFEConditional(node: any): void;
    generateIIFEIfBlock(node: any): void;
    generateNestedIfWithReturns(node: any): void;
    generateNestedIfAlternates(alternate: any): void;
    generateNestedIfAsExpression(node: any): void;
    generateArrayExpression(node: any): void;
    generateObjectExpression(node: any): void;
    generateSwitchExpression(node: any): void;
    generateSwitchAsIfElseIIFE(node: any): void;
    generateSwitchAsIfElse(node: any): void;
    generateLoopAsExpression(node: any, loopType: any): void;
    generateSequenceExpression(node: any): void;
    getPrecedence(node: any): 3 | 5 | 15 | 2 | 4 | 1 | 10 | 0 | 9 | 12 | 13 | 20 | 19;
}
