import { UI5JSParser } from "../../../../parser/UI5JSParser";
import { IAcornLocation } from "../../jsparser/AcornSyntaxAnalyzer";
import { ISyntaxAnalyser } from "../../jsparser/ISyntaxAnalyser";
import { IUIAssociation, IUIMethod } from "../AbstractBaseClass";
import { AbstractCustomClass, ICustomClassField, ICustomClassMethod, ICustomMember, IUIDefine } from "../AbstractCustomClass";
interface ILooseObject {
    [key: string]: any;
}
interface IComment {
    text: string;
    start: number;
    end: number;
    jsdoc: any;
    loc: IAcornLocation;
}
export interface UI5Ignoreable {
    ui5ignored?: boolean;
}
export interface ICustomClassJSMethod extends ICustomClassMethod<any> {
    acornParams?: any;
}
export interface ICustomClassJSField extends ICustomClassField<any> {
    customData?: ILooseObject;
}
export declare class CustomJSClass extends AbstractCustomClass<any, any, any, any> {
    classText: string;
    node: any;
    UIDefine: IUIDefine<any>[];
    parentClassNameDotNotation: string;
    fsPath: string;
    methods: ICustomClassJSMethod[];
    fields: ICustomClassJSField[];
    comments: IComment[];
    acornClassBody: any;
    acornMethodsAndFields: any[];
    fileContent: any;
    private _parentVariableName;
    defaultModelClassName?: string;
    acornReturnedClassExtendBody: any | undefined;
    classBodyAcornVariableName: string | undefined;
    private readonly syntaxAnalyser;
    constructor(className: string, syntaxAnalyser: ISyntaxAnalyser, parser: UI5JSParser, documentText?: string);
    private _enrichClassInfoWithJSDocs;
    getMembers(): ICustomMember<any>[];
    protected _fillIsAbstract(): void;
    private _enrichMemberInfoWithJSDocs;
    private _fillParamJSTypesFromTag;
    private _fillFieldsRecursively;
    private _enrichMethodParamsWithHungarianNotation;
    private _readFileContainingThisClassCode;
    protected _getUIDefine(): IUIDefine<any>[];
    private _generateClassNameDotNotationFor;
    private _getThisClassBodyAcorn;
    private _getReturnKeywordFromBody;
    private _getClassBodyFromPartAcorn;
    private _getParentNameFromManifest;
    private _getClassBodyFromClassExtendAcorn;
    private _isThisPartAClassBodyAcorn;
    isAssignmentStatementForThisVariable(node: any): any;
    protected _fillMethods(): ICustomClassMethod<any>[];
    protected _fillFields(): ICustomClassField<any>[];
    protected _fillParentClassName(): void;
    protected _fillMethodsAndFields(): void;
    private _generateParamTextForMethod;
    private _generateCustomDataForObject;
    getUIDefineAcornBody(): any;
    private _getUIDefineItself;
    private _fillMethodsAndFieldsFromPrototype;
    static generateDescriptionForMethod(method: IUIMethod): string;
    fillTypesFromHungarionNotation(): void;
    static getTypeFromHungarianNotation(variable?: string): string | undefined;
    private _fillMethodsFromMetadata;
    private _fillPropertyMethods;
    private _fillAggregationMethods;
    private _fillEventMethods;
    private _fillAssociationMethods;
    protected _fillUI5Metadata(): void;
    protected _fillInterfaces(metadata: any): any;
    protected _fillCustomInterfaces(customMetadata: any): void;
    protected _fillAggregations(metadata: any): any;
    protected _fillEvents(metadata: any): any;
    protected _fillProperties(metadata: any): any;
    protected _fillAssociations(metadata: any): IUIAssociation[];
    private _enrichVariablesWithJSDocTypesAndVisibility;
}
export {};
