/**
* Copyright Super iPaaS Integration LLC, an IBM Company 2024
*/
import { AddApiFromFileFormData } from "../../component-models/models/add-api-from-file-form-data.model.js";
import { AddApiFromScratchFormData } from "../../component-models/models/add-api-from-scratch-form-data.model.js";
import { AddApiFromUrlFormData } from "../../component-models/models/add-api-from-url-form-data.model.js";
import { Project } from "../../lfs/models/project.model.js";
import { VCSFileInfo } from "../../vcs/models/vcs-file-info.model.js";
import { VCSProject } from "../../vcs/models/vcs-project.model.js";
import { Metadata } from "../models/base-asset.model.js";
import { FileExplorerNode } from "../models/file-explorer.model.js";
import { Response } from "../models/response-wrapper.js";
export interface VCShandle {
    repoNameWithOwner: string;
    name: string;
}
export interface FormOperationResponse {
    data: string;
    file: FileSystemFileHandle | VCSFileInfo;
}
export interface ApiFormOperationResponse {
    api: FormOperationResponse;
    spec: FormOperationResponse;
}
export interface IFileExplorerOperationsHandler {
    /**
     * Generates the tree of objects with required info to construct the file explorer window.
     * @param projectFolderEntity The parent entity to build file explorer tree from. The projectFolderEntity can either be a directory handle or a vcs tree entry.
     * @returns A file explorer node representing the transformed equivalent of the given folder to be used for rendering the File explorer.
     */
    buildTree(projectFolderEntity: FileSystemDirectoryHandle | VCShandle): Promise<Response<FileExplorerNode>>;
    createFile(parentNode: FileExplorerNode, fileName: string, project: Project | VCSProject): Promise<Response<FileExplorerNode>>;
    createDirectory(parentNode: FileExplorerNode, directoryName: string, project: Project | VCSProject): Promise<Response<FileExplorerNode>>;
    deleteFile(node: FileExplorerNode, project: Project | VCSProject): Promise<Response>;
    deleteDirectory(node: FileExplorerNode, project: Project | VCSProject): Promise<Response>;
    renameFile(node: FileExplorerNode, newName: string, project: Project | VCSProject): Promise<Response<FileExplorerNode>>;
    duplicateFile(parentNode: FileExplorerNode, node: FileExplorerNode, project: Project | VCSProject): Promise<Response<FileExplorerNode>>;
    createAPIFileFromScratch(ApiFormData: AddApiFromScratchFormData, active: Project | VCSProject): Promise<ApiFormOperationResponse>;
    createAPIFileFromFile(ApiFormData: AddApiFromFileFormData, active: Project | VCSProject): Promise<ApiFormOperationResponse>;
    createAPIFileFromUrl(ApiFormData: AddApiFromUrlFormData, active: Project | VCSProject): Promise<ApiFormOperationResponse>;
    createTestFileFromScratch(TestFormData: Metadata, active: Project | VCSProject, kind: string): Promise<FileSystemFileHandle | VCSFileInfo>;
    createPolicyFileFromScratch(policyFromData: Metadata, active: Project | VCSProject): Promise<FormOperationResponse>;
    createGlobalPolicyFileFromScratch(policyFromData: Metadata, active: Project | VCSProject): Promise<FormOperationResponse>;
    createPolicyKindFileFromScratch(policyKind: string, policyFromData: Metadata, active: Project | VCSProject): Promise<FormOperationResponse>;
}
//# sourceMappingURL=file-explorer-handler.interface.d.ts.map