import { PositionElement } from './PositionElement'; import { LanguageIdentifier } from "../base/common/languages/languages"; import { TextRange } from "../code-search/scope-graph/model/TextRange"; export interface CodeFile extends CodeElement { name: string; filepath: string; language: LanguageIdentifier; path?: string; package: string; imports: string[]; classes: CodeStructure[]; functions?: CodeFunction[]; } export declare enum StructureType { Class = "class", Interface = "interface", Enum = "enum", Struct = "struct", Annotation = "annotation", Trait = "trait" } export interface CodeStructure extends PositionElement, CodeElement { name: string; canonicalName: string; type: StructureType; package: string; extends?: string[]; implements: string[]; constant?: CodeVariable[]; fields?: CodeVariable[]; methods: CodeFunction[]; classes?: CodeStructure[]; annotations?: { name: string; keyValues: { key: string; value: string; }[]; }[]; start: CodePosition; end: CodePosition; } export interface CodeFunction extends PositionElement, CodeElement { name: string; vars: CodeVariable[]; returnType?: string; start: CodePosition; end: CodePosition; parameters?: { name: string; type: string; }[]; modifiers?: string; annotations?: { name: string; keyValues: { key: string; value: string; }[]; }[]; } export interface CodeVariable extends CodeElement, PositionElement { name: string; type: string; isSystemType?: boolean; } export interface CodeElement { name: string; } export interface CodePosition { row: number; column: number; } export declare function functionToRange(element: CodeFunction): TextRange;