/**
 * 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 interface GenerationOutputResult {
    generationOutput: GenerationOutput;
    parentId?: string | undefined;
}
export declare const DIRECTORY_PATH_DELIMITER = "/";
export declare const GENERATION_FILE_ROOT_NAME = "GENERATION_FILE_ROOT";
declare class GenerationFileNodeElement {
    name: string;
    directory?: GenerationDirectory | undefined;
    parentId?: string | undefined;
    constructor(name: string, fileGenerationParent?: string);
    get path(): string;
}
export declare class GenerationDirectory extends GenerationFileNodeElement {
    children: GenerationFileNodeElement[];
    setDirectory(val: GenerationDirectory): void;
    addChild(val: GenerationFileNodeElement): void;
    addElement(val: GenerationFileNodeElement): void;
    static createDirectoryFromParent(name: string, parent: GenerationDirectory, fileGenerationParent?: string): GenerationDirectory;
    static getOrCreateDirectory(parent: GenerationDirectory, directoryName: string, insert: boolean): GenerationDirectory;
    getDirectoryPath(): string;
}
export declare class GenerationFile extends GenerationFileNodeElement {
    content: string;
    format?: string | undefined;
    constructor(name: string, content: string, format?: string, parentId?: string);
}
export interface GenerationTreeNodeData extends TreeNodeData {
    fileNode: GenerationFileNodeElement;
}
export declare const getGenerationTreeNodeData: (fileNode: GenerationFileNodeElement) => GenerationTreeNodeData;
export declare const populateDirectoryTreeNodeChildren: (node: GenerationTreeNodeData, treeData: TreeData<GenerationTreeNodeData>) => void;
export declare const getGenerationTreeData: (dir: GenerationDirectory, rootWrapperName?: string) => TreeData<GenerationTreeNodeData>;
export declare const addNode: (element: GenerationFileNodeElement, treeData: TreeData<GenerationTreeNodeData>, showRoot?: boolean) => GenerationTreeNodeData;
export declare const openNode: (element: GenerationFileNodeElement, treeData: TreeData<GenerationTreeNodeData>, showRoot?: boolean) => GenerationTreeNodeData | undefined;
export declare const getFileGenerationChildNodes: (node: GenerationTreeNodeData, treeData: TreeData<GenerationTreeNodeData>) => GenerationTreeNodeData[];
export declare const buildGenerationDirectory: (rootDirectory: GenerationDirectory, generationResultIndex: Map<string, GenerationOutputResult>, filesIndex: Map<string, GenerationFile>) => void;
export declare const reprocessOpenNodes: (treeData: TreeData<GenerationTreeNodeData>, filesIndex: Map<string, GenerationFile>, rootDirectory: GenerationDirectory, openedNodeIds: string[], showRoot?: boolean) => void;
export {};
//# sourceMappingURL=FileGenerationTreeUtil.d.ts.map