/**
* Copyright Super iPaaS Integration LLC, an IBM Company 2024
*/
export interface ILocalDirectoryRequestHandler {

    readFromFile(fileHandle: FileSystemFileHandle): Promise<string>;
    writeToFile(fileHandle: FileSystemFileHandle, content: unknown): Promise<void>;

    createFile(parentDirectoryHandle: FileSystemDirectoryHandle, fileName: string): Promise<FileSystemFileHandle>;
    createDirectory(parentDirectoryHandle: FileSystemDirectoryHandle, directoryName: string): Promise<FileSystemDirectoryHandle>;

    deleteFile(fileHandle: FileSystemFileHandle): Promise<void>;
    deleteDirectory(directoryHandle: FileSystemDirectoryHandle): Promise<void>;

    renameFile(fileHandle: FileSystemFileHandle, newFileName: string): Promise<FileSystemFileHandle>;
    renameDirectory(parentDirectoryHandle: FileSystemDirectoryHandle, oldDirectoryName: string, newDirectoryName: string): Promise<FileSystemDirectoryHandle>;

    copyFile(sourceFileHandle: FileSystemFileHandle, targetParentDirectoryHandle: FileSystemDirectoryHandle, targetFileName: string): Promise<FileSystemFileHandle>;
    copyDirectory(sourceDirectoryHandle: FileSystemDirectoryHandle, targetParentDirectoryHandle: FileSystemDirectoryHandle, targetDirectoryName: string): Promise<FileSystemDirectoryHandle>;

    moveFile(sourceFileHandle: FileSystemFileHandle, targetParentDirectoryHandle: FileSystemDirectoryHandle): Promise<FileSystemFileHandle>;
    moveDirectory(sourceDirectoryHandle: FileSystemDirectoryHandle, targetParentDirectoryHandle: FileSystemDirectoryHandle): Promise<FileSystemDirectoryHandle>;

    isAccessPermissionRequired(fileSystemHandle: FileSystemHandle, accessLevel?: string): Promise<boolean>;
    requestAccessPermission(fileSystemHandle: FileSystemHandle, accessLevel?: string): Promise<boolean>;
}