/**
 * Copyright (c) 2020-present, Goldman Sachs
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import type { TreeNodeData } from '@finos/legend-art';
import { type Clazz } from 'serializr';
export declare enum ConceptType {
    PACKAGE = "Package",
    PROFILE = "Profile",
    TAG = "Tag",
    STEREOTYPE = "Stereotype",
    CLASS = "Class",
    ASSOCIATION = "Association",
    PROPERTY = "Property",
    QUALIFIED_PROPERTY = "QualifiedProperty",
    ENUMERATION = "Enumeration",
    ENUM_VALUE = "Enum",
    MEASURE = "Measure",
    UNIT = "Unit",
    FUNCTION = "ConcreteFunctionDefinition",
    NATIVE_FUNCTION = "NativeFunction",
    DIAGRAM = "Diagram",
    DATABASE = "Database",
    MAPPING = "Mapping"
}
declare abstract class ConceptAttribute {
    pureId: string;
    pureType: string;
    pureName?: string;
    get id(): string;
}
export declare class PackageConceptAttribute extends ConceptAttribute {
    pureId: string;
    pureType: string;
    deprecated: boolean;
}
export declare class PropertyConceptAttribute extends ConceptAttribute {
    pureId: string;
    pureName: string;
    pureType: string;
    RO: string;
    classPath: string;
    file: string;
    line: string;
    column: string;
    get id(): string;
}
export declare class ElementConceptAttribute extends ConceptAttribute {
    pureId: string;
    pureName: string;
    pureType: string;
    RO: string;
    notpublic: boolean;
    user: string;
    file: string;
    line: string;
    column: string;
}
export declare class ConceptNode {
    li_attr: ConceptAttribute;
    id: string;
    text: string;
    test?: boolean;
    pct?: boolean;
    icon?: string;
    children?: boolean;
    state?: string;
    getNodeAttribute<T extends ConceptAttribute>(clazz: Clazz<T>): T;
}
export interface ConceptTreeNode extends TreeNodeData {
    data: ConceptNode;
    isLoading: boolean;
    parent?: ConceptTreeNode;
}
export {};
//# sourceMappingURL=ConceptTree.d.ts.map