export interface AdapterModule { default: Adapter } export interface Adapter { (opts: TOptions): FileSystemFolderHandleAdapter | Promise } export interface FileSystemHandleAdapter { readonly kind: 'file' | 'directory' readonly name: string writable: boolean isSameEntry(other: this): Promise queryPermission?(descriptor?: FileSystemHandlePermissionDescriptor): Promise requestPermission?(descriptor?: FileSystemHandlePermissionDescriptor): Promise } export interface FileSystemFileHandleAdapter extends FileSystemHandleAdapter { readonly kind: 'file' createWritable(options: FileSystemCreateWritableOptions): Promise> getFile(): Promise } export interface FileSystemFolderHandleAdapter extends FileSystemHandleAdapter { readonly kind: 'directory' entries(): AsyncGenerator<[string, FileSystemFileHandleAdapter | FileSystemFolderHandleAdapter], void, undefined> getFileHandle(name: string, options?: FileSystemGetFileOptions): Promise getDirectoryHandle(name: string, opts?: FileSystemGetDirectoryOptions): Promise removeEntry(name: string, options?: FileSystemRemoveOptions): Promise } export type WriteChunk = BufferSource | Blob | string | WriteChunkObject export type WriteChunkObject = WriteChunkSeekObject | WriteChunkWriteObject | WriteChunkTruncateObject export interface WriteChunkSeekObject { type: 'seek' position: number } export interface WriteChunkWriteObject { type: 'write' position?: number data: BufferSource | Blob | string } export interface WriteChunkTruncateObject { type: 'truncate' size: number }