import type { Expr } from "../../expr";
import type { FunctionType } from "../../types/definitions";
import { type CodeGenContext } from "../utils";
import type { FunctionGenerationContext } from "./context";
export declare function generateFunctionDeclarations(context: FunctionGenerationContext): void;
export interface EvidenceParameter {
    implicitLabel: string;
    fieldLabel: string;
    fieldPath: string[];
    fieldFunctionType: FunctionType;
    cParamName: string;
}
export declare function getEvidenceParameters(_functionType: FunctionType): EvidenceParameter[];
export declare function generateFunctionPrototype(functionType: FunctionType, cFunctionName: string, context: CodeGenContext, overrideReturnType?: string, originalFunctionType?: FunctionType): string;
export declare function generateFunctionDeclaration(functionType: FunctionType, cFunctionName: string, isExtern: boolean, context: CodeGenContext, functionBody?: Expr, originalFunctionType?: FunctionType): void;
export declare function generateObjectConstructorDeclarations(context: FunctionGenerationContext): void;
export declare function generateClosureConstructorDeclarations(context: FunctionGenerationContext): void;
export declare function generateCaptureDisposeFunctionDeclarations(context: FunctionGenerationContext): void;
export declare function generateClosureVtableDeclarations(_context: FunctionGenerationContext): void;
export declare function generateSpecializedFunctionDeclarations(context: CodeGenContext): void;
