/**
 * Copyright IBM Corp. 2024, 2025
 */
import { RootDirectoryInfo } from "../models/root-directory-info.model.js";

export interface IRootDirectoryHandler {
    addRootDirectory(rootDirInfo: RootDirectoryInfo): Promise<void | RootDirectoryInfo[]>;
    getAllRootDirectoryHandles(): Promise<RootDirectoryInfo[] | void>;
    getRootDirectoryHandle(uniqueFolderName: string): Promise<RootDirectoryInfo | null>;
    deleteRootDirectoryHandle(name: string): Promise<void>;
    /**
     * Checks if permission is required to access the given root directory handles
     * @param rootDirectoryHandles List of root directory objects to validate access permission
     * @returns true if all the root directories have required permissions, else false
     */
    isAccessPermissionRequired(rootDirectoryHandles: RootDirectoryInfo[]): Promise<boolean>;
    /**
     * Requests access permission to user for the root directory handles that do not have permission
     * @param rootDirectoryHandles List of root directory handles to request access permission
     * @returns List of root directory handles which have access permission
     */
    requestAccessPermission(rootDirectoryHandles: RootDirectoryInfo[]): Promise<RootDirectoryInfo[]>;
}

export default IRootDirectoryHandler;