import { Option } from '@fable-org/fable-library-js/Option.js';
import { Union } from '@fable-org/fable-library-js/Types.js';
import { TypeInfo } from '@fable-org/fable-library-js/Reflection.js';
export type FileSystemTree_$union = FileSystemTree<0> | FileSystemTree<1>;
export type FileSystemTree_$cases = {
    0: ["File", [string]];
    1: ["Folder", [string, FileSystemTree_$union[]]];
};
export declare function FileSystemTree_File(name: string): FileSystemTree<0>;
export declare function FileSystemTree_Folder(name: string, children: FileSystemTree_$union[]): FileSystemTree<1>;
export declare class FileSystemTree<Tag extends keyof FileSystemTree_$cases> extends Union<Tag, FileSystemTree_$cases[Tag][0]> {
    readonly tag: Tag;
    readonly fields: FileSystemTree_$cases[Tag][1];
    constructor(tag: Tag, fields: FileSystemTree_$cases[Tag][1]);
    cases(): string[];
    get Name(): string;
    get isFolder(): boolean;
    get isFile(): boolean;
    static get ROOT_NAME(): string;
    static createFile(name: string): FileSystemTree_$union;
    static createFolder(name: string, children?: FileSystemTree_$union[]): FileSystemTree_$union;
    static createRootFolder(children: FileSystemTree_$union[]): FileSystemTree_$union;
    TryGetChildByName(name: string): Option<FileSystemTree_$union>;
    static tryGetChildByName(name: string): ((arg0: FileSystemTree_$union) => Option<FileSystemTree_$union>);
    ContainsChildWithName(name: string): boolean;
    static containsChildWithName(name: string): ((arg0: FileSystemTree_$union) => boolean);
    TryGetPath(path: string): Option<FileSystemTree_$union>;
    AddFile(path: string): FileSystemTree_$union;
    static addFile(path: string): ((arg0: FileSystemTree_$union) => FileSystemTree_$union);
    static fromFilePaths(paths: string[]): FileSystemTree_$union;
    ToFilePaths(removeRoot?: boolean): string[];
    static toFilePaths(removeRoot?: boolean): ((arg0: FileSystemTree_$union) => string[]);
    FilterFiles(predicate: ((arg0: string) => boolean)): Option<FileSystemTree_$union>;
    static filterFiles(predicate: ((arg0: string) => boolean)): ((arg0: FileSystemTree_$union) => Option<FileSystemTree_$union>);
    FilterFolders(predicate: ((arg0: string) => boolean)): Option<FileSystemTree_$union>;
    static filterFolders(predicate: ((arg0: string) => boolean)): ((arg0: FileSystemTree_$union) => Option<FileSystemTree_$union>);
    Filter(predicate: ((arg0: string) => boolean)): Option<FileSystemTree_$union>;
    static filter(predicate: ((arg0: string) => boolean)): ((arg0: FileSystemTree_$union) => Option<FileSystemTree_$union>);
    Union(otherFST: FileSystemTree_$union): FileSystemTree_$union;
    Copy(): FileSystemTree_$union;
    static createGitKeepFile(): FileSystemTree_$union;
    static createReadmeFile(): FileSystemTree_$union;
    static createEmptyFolder(name: string): FileSystemTree_$union;
    static createAssayFolder(assayName: string, hasDataMap?: boolean): FileSystemTree_$union;
    static createStudyFolder(studyName: string, hasDataMap?: boolean): FileSystemTree_$union;
    static createWorkflowFolder(workflowName: string, hasDataMap?: boolean): FileSystemTree_$union;
    static createRunFolder(runName: string, hasDataMap?: boolean): FileSystemTree_$union;
    static createInvestigationFile(): FileSystemTree_$union;
    static createLicenseFile(): FileSystemTree_$union;
    static createAssaysFolder(assays: FileSystemTree_$union[]): FileSystemTree_$union;
    static createStudiesFolder(studies: FileSystemTree_$union[]): FileSystemTree_$union;
    static createWorkflowsFolder(workflows: FileSystemTree_$union[]): FileSystemTree_$union;
    static createRunsFolder(runs: FileSystemTree_$union[]): FileSystemTree_$union;
}
export declare function FileSystemTree_$reflection(): TypeInfo;
//# sourceMappingURL=FileSystemTree.fs.d.ts.map