/**
 * 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, TreeData } from '@finos/legend-art';
import { type GenerationOutput } from '@finos/legend-graph';
export declare const GENERATION_FILE_ROOT_NAME = "GENERATION_FILE_ROOT";
export interface FileResult {
    value: GenerationOutput;
    parentId?: string | undefined;
}
declare class FileSystemElement {
    name: string;
    directory?: FileSystem_Directory | undefined;
    parentId?: string | undefined;
    constructor(name: string, fileGenerationParent?: string);
    get path(): string;
}
export declare class FileSystem_Directory extends FileSystemElement {
    children: FileSystemElement[];
    setDirectory(val: FileSystem_Directory): void;
    addChild(val: FileSystemElement): void;
    addElement(val: FileSystemElement): void;
    static createDirectoryFromParent(name: string, parent: FileSystem_Directory, genParent?: string): FileSystem_Directory;
    static getOrCreateDirectory(parent: FileSystem_Directory, directoryName: string, insert: boolean): FileSystem_Directory;
    getDirectoryPath(): string;
}
export declare class FileSystem_File extends FileSystemElement {
    content: string;
    format?: string | undefined;
    constructor(name: string, content: string, format?: string, parentId?: string);
}
export interface FileSystemTreeNodeData extends TreeNodeData {
    fileNode: FileSystemElement;
}
export declare const getFileSystemTreeNodeData: (fileNode: FileSystemElement) => FileSystemTreeNodeData;
export declare const populateDirectoryTreeNodeChildren: (node: FileSystemTreeNodeData, treeData: TreeData<FileSystemTreeNodeData>) => void;
export declare const getFileSystemTreeData: (dir: FileSystem_Directory, rootWrapperName?: string) => TreeData<FileSystemTreeNodeData>;
export declare const addNode: (element: FileSystemElement, treeData: TreeData<FileSystemTreeNodeData>, showRoot?: boolean) => FileSystemTreeNodeData;
export declare const openNode: (element: FileSystemElement, treeData: TreeData<FileSystemTreeNodeData>, showRoot?: boolean) => FileSystemTreeNodeData | undefined;
export declare const getFileSystemChildNodes: (node: FileSystemTreeNodeData, treeData: TreeData<FileSystemTreeNodeData>) => FileSystemTreeNodeData[];
export declare const buildFileSystemDirectory: (rootDirectory: FileSystem_Directory, filesResultIndex: Map<string, FileResult>, filesIndex: Map<string, FileSystem_File>) => void;
export declare const reprocessOpenNodes: (treeData: TreeData<FileSystemTreeNodeData>, filesIndex: Map<string, FileSystem_File>, rootDirectory: FileSystem_Directory, openedNodeIds: string[], showRoot?: boolean) => void;
export {};
//# sourceMappingURL=FileSystemTreeUtils.d.ts.map