/**
 * 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 { EditorStore } from './EditorStore.js';
import { ActionState } from '@finos/legend-shared';
import type { PackageTreeNodeData } from './shared/TreeUtil.js';
import type { TreeData } from '@finos/legend-art';
import { type GenerationTreeNodeData } from './shared/FileGenerationTreeUtil.js';
import { type PackageableElement, ROOT_PACKAGE_NAME, Package } from '@finos/legend-graph';
export declare enum ExplorerTreeRootPackageLabel {
    FILE_GENERATION = "generated-files",
    MODEL_GENERATION = "generated-models",
    SYSTEM = "system",
    PROJECT_DEPENDENCY = "dependencies"
}
export declare class ExplorerTreeState {
    editorStore: EditorStore;
    treeData?: TreeData<PackageTreeNodeData> | undefined;
    generationTreeData?: TreeData<PackageTreeNodeData> | undefined;
    systemTreeData?: TreeData<PackageTreeNodeData> | undefined;
    legalTreeData?: TreeData<PackageTreeNodeData> | undefined;
    dependencyTreeData?: TreeData<PackageTreeNodeData> | undefined;
    selectedNode?: PackageTreeNodeData | undefined;
    fileGenerationTreeData?: TreeData<GenerationTreeNodeData> | undefined;
    elementToRename?: PackageableElement | undefined;
    buildState: ActionState;
    constructor(editorStore: EditorStore);
    getTreeData(rootPackageName?: ROOT_PACKAGE_NAME): TreeData<PackageTreeNodeData>;
    getSelectedNodePackage(): Package;
    setTreeData(data: TreeData<PackageTreeNodeData>): void;
    setGenerationTreeData(data: TreeData<PackageTreeNodeData>): void;
    setSystemTreeData(data: TreeData<PackageTreeNodeData>): void;
    setLegalTreeData(data: TreeData<PackageTreeNodeData>): void;
    setDependencyTreeData(data: TreeData<PackageTreeNodeData>): void;
    setFileGenerationTreeData(data: TreeData<GenerationTreeNodeData>): void;
    setElementToRename(val: PackageableElement | undefined): void;
    setSelectedNode(node: PackageTreeNodeData | undefined): void;
    build(): void;
    buildImmutableModelTrees(): void;
    /**
     * FIXME: this method should be replaced altogether as this could potentially cause memory leak when we `replace` the graph
     * When we refresh the graph (after compilation in text mode for example), we want to reprocess the app to
     * preserve the status of the explorer tree (opening nodes, selected nodes, etc.)
     *
     * @risk memory-leak
     */
    reprocess(): void;
    onTreeNodeSelect: (node: PackageTreeNodeData, treeData: TreeData<PackageTreeNodeData>, rootPackageName?: ROOT_PACKAGE_NAME) => void;
    /**
     * Given an element we open the node depending on what package tree corresponds to it
     */
    openNode(element: PackageableElement): void;
    getFileGenerationTreeData(): TreeData<GenerationTreeNodeData>;
}
//# sourceMappingURL=ExplorerTreeState.d.ts.map