/**
 * 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 TreeData, type TreeNodeData } from '@finos/legend-art';
import { type Hashable } from '@finos/legend-shared';
import { type AbstractProperty, type Type, type Constraint, Class } from '@finos/legend-graph';
import { type QueryBuilderExplorerTreeNodeData, type QueryBuilderExplorerTreeRootNodeData, QueryBuilderExplorerTreePropertyNodeData, QueryBuilderExplorerTreeSubTypeNodeData } from '@finos/legend-query-builder';
import type { DataQualityState } from '../states/DataQualityState.js';
import { DataQualityPropertyGraphFetchTree, DataQualityRootGraphFetchTree } from '../../graph/metamodel/pure/packageableElements/data-quality/DataQualityGraphFetchTree.js';
import { ConstraintState } from '../states/ConstraintState.js';
import type { EditorStore } from '@finos/legend-application-studio';
export declare class DataQualityGraphFetchTreeNodeData implements TreeNodeData, Hashable {
    readonly id: string;
    readonly label: string;
    readonly tree: DataQualityPropertyGraphFetchTree | DataQualityRootGraphFetchTree;
    readonly parentId?: string | undefined;
    readonly editorStore: EditorStore;
    isOpen?: boolean | undefined;
    isReadOnly?: boolean;
    childrenIds: string[];
    constraints: ConstraintState[];
    constructor(editorStore: EditorStore, id: string, label: string, parentId: string | undefined, graphFetchTreeNode: DataQualityPropertyGraphFetchTree | DataQualityRootGraphFetchTree);
    setIsReadOnly(isReadOnly: boolean): void;
    setConstraintsForClass(_class: Class, constraintsToSelect: string[]): void;
    setConstraints(constraints: ConstraintState[]): void;
    get type(): Type;
    get hashCode(): string;
}
export interface DataQualityGraphFetchTreeData extends TreeData<DataQualityGraphFetchTreeNodeData> {
    tree: DataQualityRootGraphFetchTree;
}
export declare const generateRootGraphFetchTreeNodeID: (parentNodeId: string | undefined, classValue: string | undefined) => string;
export declare const removeNodeRecursively: (treeData: DataQualityGraphFetchTreeData, node: DataQualityGraphFetchTreeNodeData) => void;
export declare const generateGraphFetchTreeNodeID: (property: AbstractProperty, parentNodeId: string | undefined, subType: Type | undefined) => string;
export declare const buildGraphFetchTreeData: (editorStore: EditorStore, tree: DataQualityRootGraphFetchTree, displayRoot: boolean, fetchConstraints: boolean, isReadOnly: boolean) => DataQualityGraphFetchTreeData;
export declare const isGraphFetchTreeDataEmpty: (treeData: DataQualityGraphFetchTreeData) => boolean;
export declare const isConstraintsClassesTreeEmpty: (treeData: DataQualityGraphFetchTreeData) => boolean;
export declare const updateNodeConstraints: (treeData: DataQualityGraphFetchTreeData, node: DataQualityGraphFetchTreeNodeData, constraints: Constraint[], addConstraint: boolean) => void;
export declare const addQueryBuilderPropertyNode: (treeData: DataQualityGraphFetchTreeData, explorerTreeData: TreeData<QueryBuilderExplorerTreeNodeData>, node: QueryBuilderExplorerTreePropertyNodeData | QueryBuilderExplorerTreeRootNodeData | QueryBuilderExplorerTreeSubTypeNodeData, dataQualityState: DataQualityState) => void;
export declare const buildDefaultDataQualityRootGraphFetchTree: (selectedClass: Class) => DataQualityRootGraphFetchTree;
//# sourceMappingURL=DataQualityGraphFetchTreeUtil.d.ts.map