import { Project, SourceFile, ts } from "ts-morph";
import { UI5TSParser } from "../../../../parser/UI5TSParser";
import { CustomTSClass } from "../../ui5class/ts/CustomTSClass";
import { CustomTSObject } from "../../ui5class/ts/CustomTSObject";
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 TSClassFactory implements IClassFactory<CustomTSClass | CustomTSObject> {
    private readonly _UIClasses;
    private parser;
    setParser(parser: UI5TSParser): void;
    isCustomClass(UIClass: AbstractBaseClass): UIClass is CustomTSClass | CustomTSObject;
    private _getInstance;
    isClassAChildOfClassB(classA: string, classB: string): boolean;
    setNewContentForClassUsingDocument(document: TextDocument, force?: boolean): void;
    setNewCodeForClass(classNameDotNotation: string, classFileText: string, force?: boolean, sourceFile?: SourceFile, project?: Project, enrichWithXMLReferences?: boolean, textChanges?: ts.TextChange[]): void;
    enrichTypesInCustomClass(UIClass: CustomTSClass | CustomTSObject): void;
    private _checkIfMembersAreUsedInXMLDocuments;
    private _enrichAreMethodsEventHandlers;
    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;
    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;
    getAllExistentUIClasses(): IUIClassMap;
    isMethodOverriden(className: string, methodName: string): boolean;
    removeClass(className: string): void;
    getParent(UIClass: AbstractBaseClass): AbstractBaseClass | undefined;
    setNewNameForClass(oldPath: string, newPath: string): void;
    getDefaultModelForClass(className: string): string | undefined;
    private _getClassNameOfTheModelFromManifest;
}
