export type FileType = { path: string; content: string; }; export type Attribute = { 'key.attribute': string; 'key.length': number; 'key.offset': number; }; export type Structure = { 'key.substructure': Structure[]; 'key.typename': string; 'key.name': string; 'key.kind': string; 'key.offset': number; 'key.length': number; 'key.nameoffset': number; 'key.namelength': number; 'key.inheritedtypes': { 'key.name': string }[]; 'key.attributes': Attribute[]; }; export type CursorInfoOutput = { 'key.fully_annotated_decl': string; 'key.annotated_decl': string; }; export type FullyAnnotatedDecl = { 'decl.function.free': { 'decl.var.parameter': { 'decl.var.parameter.argument_label': string; 'decl.var.parameter.type': string; }[]; 'decl.function.returntype': string; }; }; export type ClosureTypes = { parameters: { name: any; typename: any; }[]; returnType: any; }; export type Closure = { name: string; types: ClosureTypes | null; }; export type Prop = { name: string; types: Omit; }; export type OutputModuleDefinition = { name: string; views: OutputNestedClassDefinition[]; classes: OutputNestedClassDefinition[]; events: { name: string; }[]; } & Record<'asyncFunctions' | 'functions' | 'properties', Closure[]> & Record<'props', Prop[]>; // views and classes are a very similar structure, same as module but without more nesting levels export type OutputNestedClassDefinition = Omit;