import { type Expr } from "../../expr";
import { type FunctionValue } from "../../function-value";
import type { FunctionType } from "../../types/definitions";
import { type CodeGenContext } from "../utils";
import type { FunctionGenerationContext } from "./context";
export declare function generateAllFunctions(context: FunctionGenerationContext): void;
export declare function emitModuleLevelVariableDeclarations(context: FunctionGenerationContext): Array<{
    cVarName: string;
    cTypeStr: string;
    rhs: Expr;
}>;
export declare function generateLibraryInitFunction(context: FunctionGenerationContext, moduleLevelVars: Array<{
    cVarName: string;
    cTypeStr: string;
    rhs: Expr;
}>): void;
export declare function generateMainWrapper(context: FunctionGenerationContext): void;
export declare function preRegisterEffectfulFunctions(context: FunctionGenerationContext): void;
export declare function generateFunction(functionValue: FunctionValue, cFunctionName: string, context: FunctionGenerationContext): void;
export declare function generateFunctionBody(expr: Expr, functionType: FunctionType, indent: string, context: FunctionGenerationContext): void;
export declare function generateSpecializedFunctions(context: CodeGenContext): void;
export declare function generateRefStructConstructorFunctions(context: FunctionGenerationContext): void;
export declare function generateClosureConstructorFunctions(context: FunctionGenerationContext): void;
export declare function generateClosureDisposeFunctions(context: FunctionGenerationContext): void;
