import { IDirectory , IDirEntry , IDirectoryMeta , IDirEntryMeta , IFileMeta , IFileDesc } from "@common/files" ; /**
 * Represents anything capable of loading and saving files,
 * and emitting events when the corresponding files are changed.
 */ export interface FSAL { /** Perform any necessary initialization. */ init ( ) : Promise < void > ; /** Perform any necessary cleanup. */ close ( ) : Promise < void > ; /**
     * Return the contents of the given file, if it exists.
     * Otherwise, returns NULL.
     */ readFile ( filePath ) : string | null ; /**
     * Save the given text to the given file path.
     */ saveFile ( filePath , fileText , mkDirs ) : Promise < boolean > ; /**
     * Create a new file.
     * TODO should this be merged with saveFile?
     */ createFile ( path , contents ? ) : Promise < boolean > ; param currentPath param parent parseDir ( dirPath , parent ? ) : Promise < IDirectory > ; parseFile ( filePath , parent ? ) : Promise < IFileDesc | null > ; addListener : ( event : string | symbol , listener : ( ... args : any [ ] ) => void ) => FSAL ; /**
     * Watch the given path.  (should belong to the workspace!)
     * TODO: (2021-05-30) does watch belong on FSAL?
     */ watch ( path ) : void ; /**
     * Watch the given global path.  (need not belong to the workspace)
     * TODO: (2021-05-30) does watchGlobal belong on FSAL?
     */ watchGlobal ( path ) : void ; }