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",
    Structure = "struct",
    Annotation = "annotation"
}
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[];
    start: CodePosition;
    end: CodePosition;
}
export interface CodeFunction extends PositionElement, CodeElement {
    name: string;
    vars: CodeVariable[];
    returnType?: string;
    start: CodePosition;
    end: CodePosition;
}
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;
