import { UI5JSParser } from "../../../../parser/UI5JSParser";
import { ISyntaxAnalyser } from "../../jsparser/ISyntaxAnalyser";
import { CustomJSClass } from "../../ui5class/js/CustomJSClass";
import { TextDocument } from "../../util/textdocument/TextDocument";
import { AbstractBaseClass, IUIAggregation, IUIAssociation, IUIEvent, IUIField, IUIMethod, IUIProperty } from "../AbstractBaseClass";
import { AbstractCustomClass } from "../AbstractCustomClass";
import { IClassFactory, IFieldsAndMethods, IUIClassMap, IViewsAndFragments } from "./IClassFactory";
export declare class JSClassFactory implements IClassFactory<CustomJSClass> {
    private readonly syntaxAnalyser;
    private parser;
    private _UIClasses;
    constructor(syntaxAnalyser: ISyntaxAnalyser);
    setParser(parser: UI5JSParser): void;
    isCustomClass(UIClass: AbstractBaseClass): UIClass is CustomJSClass;
    private _createTypeDefDocClass;
    private _getInstance;
    isClassAChildOfClassB(classA: string, classB: string): boolean;
    setNewContentForClassUsingDocument(document: TextDocument, force?: boolean): void;
    setNewCodeForClass(classNameDotNotation: string, classFileText: string, force?: boolean): void;
    private _clearAcornNodes;
    enrichTypesInCustomClass(UIClass: CustomJSClass): void;
    private _preloadParentIfNecessary;
    private _checkIfMembersAreUsedInXMLDocuments;
    getFieldsAndMethodsForClass(className: string, returnDuplicates?: boolean): IFieldsAndMethods;
    getClassFields(className: string, returnDuplicates?: boolean): IUIField[];
    getClassMethods(className: string, returnDuplicates?: boolean, methods?: IUIMethod[]): IUIMethod[];
    getClassEvents(className: string, returnDuplicates?: boolean): IUIEvent[];
    getClassAggregations(className: string, returnDuplicates?: boolean): IUIAggregation[];
    getClassAssociations(className: string, returnDuplicates?: boolean): IUIAssociation[];
    getClassProperties(className: string, returnDuplicates?: boolean): IUIProperty[];
    getUIClass(className: string): AbstractBaseClass;
    private _enrichMethodParamsWithEventType;
    private _enrichMethodParamsWithEventTypeFromViewsAndFragments;
    getViewsAndFragmentsOfControlHierarchically(CurrentUIClass: AbstractCustomClass, checkedClasses?: string[], removeDuplicates?: boolean, includeChildren?: boolean, includeMentioned?: boolean, includeParents?: boolean): IViewsAndFragments;
    private _removeDuplicatesForViewsAndFragments;
    getViewsAndFragmentsRelatedTo(CurrentUIClass: AbstractCustomClass): IViewsAndFragments;
    private _getAllClassesWhereClassIsImported;
    private _getAllChildrenOfClass;
    getAllCustomUIClasses(): AbstractCustomClass[];
    private _getFragmentFromViewManifestExtensions;
    private _enrichMethodParamsWithEventTypeFromAttachEvents;
    getAllExistentUIClasses(): IUIClassMap;
    getDefaultModelForClass(className: string): string | undefined;
    isMethodOverriden(className: string, methodName: string): boolean;
    removeClass(className: string): void;
    getParent(UIClass: AbstractBaseClass): AbstractBaseClass | undefined;
    setNewNameForClass(oldPath: string, newPath: string): void;
}
