import { ClangTypeInfoCache } from "./clang"; export type ParsedClangAstItem = ParsedClangAstItem_Enum | ParsedClangAstItem_Alias | ParsedClangAstItem_Pointer | ParsedClangAstItem_Builtin | ParsedClangAstItem_FuncDecl | ParsedClangAstItem_FuncPointer | ParsedClangAstItem_Struct | ParsedClangAstItem_StaticArray | ParsedClangAstItem_Union; export type ParsedClangAstItem_Enum_FieldValue = { type: "alias"; value: string; } | { type: "int"; value: string; } | { type: "expr"; value: string; }; export type ParsedClangAstItem_Enum = { type: "enum"; size: number; name?: string; fields: Map; }; export type ParsedClangAstItem_Alias = { type: "alias"; size: number; noEmit?: boolean; name?: string; aliasTo: ParsedClangAstItem; }; export type ParsedClangAstItem_LazyAlias = { type: "lazy_alias"; name: string; aliasTo: string; }; export type ParsedClangAstItem_Pointer = { type: "pointer"; size: number; name?: string; /** undefined means its opaque pointer */ baseType?: ParsedClangAstItem; is_const: boolean; }; export type ParsedClangAstItem_Builtin = { type: "builtin"; size: number; ffiType: string; name?: string; }; export type ParsedClangAstItem_FuncDecl_Arg = { name?: string; valueType: ParsedClangAstItem; }; export type ParsedClangAstItem_FuncDecl = { type: "func_decl"; size: number; name?: string; returnType: ParsedClangAstItem; args: ParsedClangAstItem_FuncDecl_Arg[]; }; export type ParsedClangAstItem_Struct_Field = { name: string; offset: number; size: number; valueType: ParsedClangAstItem; }; export type ParsedClangAstItem_Struct = { type: "struct"; size: number; name?: string; fields: ParsedClangAstItem_Struct_Field[]; }; export type ParsedClangAstItem_StaticArray = { type: "static_array"; length: number; size: number; name: string; itemType: ParsedClangAstItem; }; export type ParsedClangAstItem_FuncPointer = { type: "func_pointer"; size: number; name?: string; decl: ParsedClangAstItem_FuncDecl; }; export type ParsedClangAstItem_Union = { type: "union"; size: number; name?: string; variants: ParsedClangAstItem_Struct_Field[]; }; export type ParsedClangAstResult = { decls: Map; ptrTypeSymbols: Set; funcTypeSymbols: Set; }; export declare function parseClangAst(astJson: any[], headerFilePath: string, clangTypeInfoCache: ClangTypeInfoCache): ParsedClangAstResult;