import type * as fs from 'fs'; import { FileWatcher, FileWatcherEventHandler } from './fileWatcher'; import { Uri } from './uri/uri'; import { Disposable } from 'vscode-jsonrpc'; export interface Stats { size: number; mtimeMs: number; ctimeMs: number; isFile(): boolean; isDirectory(): boolean; isBlockDevice(): boolean; isCharacterDevice(): boolean; isSymbolicLink(): boolean; isFIFO(): boolean; isSocket(): boolean; isZipDirectory?: () => boolean; } export interface MkDirOptions { recursive: boolean; } export interface ReadOnlyFileSystem { existsSync(uri: Uri): boolean; chdir(uri: Uri): void; readdirEntriesSync(uri: Uri): fs.Dirent[]; readdirSync(uri: Uri): string[]; readFileSync(uri: Uri, encoding?: null): Buffer; readFileSync(uri: Uri, encoding: BufferEncoding): string; readFileSync(uri: Uri, encoding?: BufferEncoding | null): string | Buffer; statSync(uri: Uri): Stats; realpathSync(uri: Uri): Uri; getModulePath(): Uri; readFile(uri: Uri): Promise; readFileText(uri: Uri, encoding?: BufferEncoding): Promise; realCasePath(uri: Uri): Uri; isMappedUri(uri: Uri): boolean; getOriginalUri(mappedUri: Uri): Uri; getMappedUri(originalUri: Uri): Uri; isInZip(uri: Uri): boolean; } export interface FileSystem extends ReadOnlyFileSystem { mkdirSync(uri: Uri, options?: MkDirOptions): void; writeFileSync(uri: Uri, data: string | Buffer, encoding: BufferEncoding | null): void; unlinkSync(uri: Uri): void; rmdirSync(uri: Uri): void; createFileSystemWatcher(uris: Uri[], listener: FileWatcherEventHandler): FileWatcher; createReadStream(uri: Uri): fs.ReadStream; createWriteStream(uri: Uri): fs.WriteStream; copyFileSync(uri: Uri, dst: Uri): void; mapDirectory(mappedUri: Uri, originalUri: Uri, filter?: (originalUri: Uri, fs: FileSystem) => boolean): Disposable; } export interface TmpfileOptions { postfix?: string; prefix?: string; } export interface TempFile { tmpdir(): Uri; tmpfile(options?: TmpfileOptions): Uri; } export declare namespace FileSystem { function is(value: any): value is FileSystem; } export declare namespace TempFile { function is(value: any): value is TempFile; } export declare class VirtualDirent implements fs.Dirent { name: string; private _file; parentPath: string; constructor(name: string, _file: boolean, parentPath: string); /** * Alias for `dirent.parentPath`. * @since v20.1.0 * @deprecated Since v20.12.0 */ get path(): string; isFile(): boolean; isDirectory(): boolean; isBlockDevice(): boolean; isCharacterDevice(): boolean; isSymbolicLink(): boolean; isFIFO(): boolean; isSocket(): boolean; }