import ts from 'typescript';
import type { Il2CppTypeDefinitionInfo, Il2CppTypeInfo } from '../../../Types';
import type { CodegenContext } from '../../CodegenContext';
export declare function generateSizeProperty(typeDef: Il2CppTypeDefinitionInfo, context: CodegenContext, relativeTo?: Il2CppTypeInfo): ts.ClassElement;
export declare function generateNameProperty(typeDef: Il2CppTypeDefinitionInfo, context: CodegenContext): ts.ClassElement;
export declare function generateAddressProperty(typeDef: Il2CppTypeDefinitionInfo): ts.ClassElement | undefined;
export declare function writeFieldNameList({ Fields, Type }: Il2CppTypeDefinitionInfo, context: CodegenContext): ts.PropertyDeclaration;
export declare function writeFunctions(typeDef: Il2CppTypeDefinitionInfo, context: CodegenContext): ts.PropertyDeclaration;
export declare function generateConstructor(typeDef: Il2CppTypeDefinitionInfo): ts.ClassElement[];
export declare function generateClassData(typeDef: Il2CppTypeDefinitionInfo, context: CodegenContext): {
    className: ts.Identifier;
    typeParameters: ts.TypeParameterDeclaration[] | undefined;
    heritage: ts.HeritageClause[];
    members: ts.ClassElement[];
};
export declare function generateClassExpression(typeDef: Il2CppTypeDefinitionInfo, context: CodegenContext): ts.ClassExpression;
export declare function generateNestedTypes(typeDef: Il2CppTypeDefinitionInfo, context: CodegenContext): ts.ClassElement[];
export declare function generateMembers(typeDef: Il2CppTypeDefinitionInfo, context: CodegenContext, ...addMembers: readonly ts.ClassElement[]): ts.ClassElement[];
