1declare namespace InternalFSBinding {
2  class FSReqCallback<ResultType = unknown> {
3    constructor(bigint?: boolean);
4    oncomplete: ((error: Error) => void) | ((error: null, result: ResultType) => void);
5    context: ReadFileContext;
6  }
7
8  interface ReadFileContext {
9    fd: number | undefined;
10    isUserFd: boolean | undefined;
11    size: number;
12    callback: (err?: Error, data?: string | Buffer) => unknown;
13    buffers: Buffer[];
14    buffer: Buffer;
15    pos: number;
16    encoding: string;
17    err: Error | null;
18    signal: unknown /* AbortSignal | undefined */;
19  }
20
21  interface FSSyncContext {
22    fd?: number;
23    path?: string;
24    dest?: string;
25    errno?: string;
26    message?: string;
27    syscall?: string;
28    error?: Error;
29  }
30
31  type Buffer = Uint8Array;
32  type Stream = object;
33  type StringOrBuffer = string | Buffer;
34
35  const kUsePromises: unique symbol;
36
37  class FileHandle {
38    constructor(fd: number, offset: number, length: number);
39    fd: number;
40    getAsyncId(): number;
41    close(): Promise<void>;
42    onread: () => void;
43    stream: Stream;
44  }
45
46  class StatWatcher {
47    constructor(useBigint: boolean);
48    initialized: boolean;
49    start(path: string, interval: number): number;
50    getAsyncId(): number;
51    close(): void;
52    ref(): void;
53    unref(): void;
54    onchange: (status: number, eventType: string, filename: string | Buffer) => void;
55  }
56
57  function access(path: StringOrBuffer, mode: number, req: FSReqCallback): void;
58  function access(path: StringOrBuffer, mode: number, req: undefined, ctx: FSSyncContext): void;
59  function access(path: StringOrBuffer, mode: number, usePromises: typeof kUsePromises): Promise<void>;
60
61  function chmod(path: string, mode: number, req: FSReqCallback): void;
62  function chmod(path: string, mode: number, req: undefined, ctx: FSSyncContext): void;
63  function chmod(path: string, mode: number, usePromises: typeof kUsePromises): Promise<void>;
64
65  function chown(path: string, uid: number, gid: number, req: FSReqCallback): void;
66  function chown(path: string, uid: number, gid: number, req: undefined, ctx: FSSyncContext): void;
67  function chown(path: string, uid: number, gid: number, usePromises: typeof kUsePromises): Promise<void>;
68
69  function close(fd: number, req: FSReqCallback): void;
70  function close(fd: number, req: undefined, ctx: FSSyncContext): void;
71
72  function copyFile(src: StringOrBuffer, dest: StringOrBuffer, mode: number, req: FSReqCallback): void;
73  function copyFile(src: StringOrBuffer, dest: StringOrBuffer, mode: number, req: undefined, ctx: FSSyncContext): void;
74  function copyFile(src: StringOrBuffer, dest: StringOrBuffer, mode: number, usePromises: typeof kUsePromises): Promise<void>;
75
76  function fchmod(fd: number, mode: number, req: FSReqCallback): void;
77  function fchmod(fd: number, mode: number, req: undefined, ctx: FSSyncContext): void;
78  function fchmod(fd: number, mode: number, usePromises: typeof kUsePromises): Promise<void>;
79
80  function fchown(fd: number, uid: number, gid: number, req: FSReqCallback): void;
81  function fchown(fd: number, uid: number, gid: number, req: undefined, ctx: FSSyncContext): void;
82  function fchown(fd: number, uid: number, gid: number, usePromises: typeof kUsePromises): Promise<void>;
83
84  function fdatasync(fd: number, req: FSReqCallback): void;
85  function fdatasync(fd: number, req: undefined, ctx: FSSyncContext): void;
86  function fdatasync(fd: number, usePromises: typeof kUsePromises): Promise<void>;
87
88  function fstat(fd: number, useBigint: boolean, req: FSReqCallback<Float64Array | BigUint64Array>): void;
89  function fstat(fd: number, useBigint: true, req: FSReqCallback<BigUint64Array>): void;
90  function fstat(fd: number, useBigint: false, req: FSReqCallback<Float64Array>): void;
91  function fstat(fd: number, useBigint: boolean, req: undefined, ctx: FSSyncContext): Float64Array | BigUint64Array;
92  function fstat(fd: number, useBigint: true, req: undefined, ctx: FSSyncContext): BigUint64Array;
93  function fstat(fd: number, useBigint: false, req: undefined, ctx: FSSyncContext): Float64Array;
94  function fstat(fd: number, useBigint: boolean, usePromises: typeof kUsePromises): Promise<Float64Array | BigUint64Array>;
95  function fstat(fd: number, useBigint: true, usePromises: typeof kUsePromises): Promise<BigUint64Array>;
96  function fstat(fd: number, useBigint: false, usePromises: typeof kUsePromises): Promise<Float64Array>;
97
98  function fsync(fd: number, req: FSReqCallback): void;
99  function fsync(fd: number, req: undefined, ctx: FSSyncContext): void;
100  function fsync(fd: number, usePromises: typeof kUsePromises): Promise<void>;
101
102  function ftruncate(fd: number, len: number, req: FSReqCallback): void;
103  function ftruncate(fd: number, len: number, req: undefined, ctx: FSSyncContext): void;
104  function ftruncate(fd: number, len: number, usePromises: typeof kUsePromises): Promise<void>;
105
106  function futimes(fd: number, atime: number, mtime: number, req: FSReqCallback): void;
107  function futimes(fd: number, atime: number, mtime: number, req: undefined, ctx: FSSyncContext): void;
108  function futimes(fd: number, atime: number, mtime: number, usePromises: typeof kUsePromises): Promise<void>;
109
110  function internalModuleReadJSON(path: string): [] | [string, boolean];
111  function internalModuleStat(path: string): number;
112  
113  function lchown(path: string, uid: number, gid: number, req: FSReqCallback): void;
114  function lchown(path: string, uid: number, gid: number, req: undefined, ctx: FSSyncContext): void;
115  function lchown(path: string, uid: number, gid: number, usePromises: typeof kUsePromises): Promise<void>;
116
117  function link(existingPath: string, newPath: string, req: FSReqCallback): void;
118  function link(existingPath: string, newPath: string, req: undefined, ctx: FSSyncContext): void;
119  function link(existingPath: string, newPath: string, usePromises: typeof kUsePromises): Promise<void>;
120
121  function lstat(path: StringOrBuffer, useBigint: boolean, req: FSReqCallback<Float64Array | BigUint64Array>): void;
122  function lstat(path: StringOrBuffer, useBigint: true, req: FSReqCallback<BigUint64Array>): void;
123  function lstat(path: StringOrBuffer, useBigint: false, req: FSReqCallback<Float64Array>): void;
124  function lstat(path: StringOrBuffer, useBigint: boolean, req: undefined, ctx: FSSyncContext): Float64Array | BigUint64Array;
125  function lstat(path: StringOrBuffer, useBigint: true, req: undefined, ctx: FSSyncContext): BigUint64Array;
126  function lstat(path: StringOrBuffer, useBigint: false, req: undefined, ctx: FSSyncContext): Float64Array;
127  function lstat(path: StringOrBuffer, useBigint: boolean, usePromises: typeof kUsePromises): Promise<Float64Array | BigUint64Array>;
128  function lstat(path: StringOrBuffer, useBigint: true, usePromises: typeof kUsePromises): Promise<BigUint64Array>;
129  function lstat(path: StringOrBuffer, useBigint: false, usePromises: typeof kUsePromises): Promise<Float64Array>;
130
131  function lutimes(path: string, atime: number, mtime: number, req: FSReqCallback): void;
132  function lutimes(path: string, atime: number, mtime: number, req: undefined, ctx: FSSyncContext): void;
133  function lutimes(path: string, atime: number, mtime: number, usePromises: typeof kUsePromises): Promise<void>;
134
135  function mkdtemp(prefix: string, encoding: unknown, req: FSReqCallback<string>): void;
136  function mkdtemp(prefix: string, encoding: unknown, req: undefined, ctx: FSSyncContext): string;
137  function mkdtemp(prefix: string, encoding: unknown, usePromises: typeof kUsePromises): Promise<string>;
138
139  function mkdir(path: string, mode: number, recursive: boolean, req: FSReqCallback<void | string>): void;
140  function mkdir(path: string, mode: number, recursive: true, req: FSReqCallback<string>): void;
141  function mkdir(path: string, mode: number, recursive: false, req: FSReqCallback<void>): void;
142  function mkdir(path: string, mode: number, recursive: boolean, req: undefined, ctx: FSSyncContext): void | string;
143  function mkdir(path: string, mode: number, recursive: true, req: undefined, ctx: FSSyncContext): string;
144  function mkdir(path: string, mode: number, recursive: false, req: undefined, ctx: FSSyncContext): void;
145  function mkdir(path: string, mode: number, recursive: boolean, usePromises: typeof kUsePromises): Promise<void | string>;
146  function mkdir(path: string, mode: number, recursive: true, usePromises: typeof kUsePromises): Promise<string>;
147  function mkdir(path: string, mode: number, recursive: false, usePromises: typeof kUsePromises): Promise<void>;
148
149  function open(path: StringOrBuffer, flags: number, mode: number, req: FSReqCallback<number>): void;
150  function open(path: StringOrBuffer, flags: number, mode: number, req: undefined, ctx: FSSyncContext): number;
151
152  function openFileHandle(path: StringOrBuffer, flags: number, mode: number, usePromises: typeof kUsePromises): Promise<FileHandle>;
153
154  function read(fd: number, buffer: ArrayBufferView, offset: number, length: number, position: number, req: FSReqCallback<number>): void;
155  function read(fd: number, buffer: ArrayBufferView, offset: number, length: number, position: number, req: undefined, ctx: FSSyncContext): number;
156  function read(fd: number, buffer: ArrayBufferView, offset: number, length: number, position: number, usePromises: typeof kUsePromises): Promise<number>;
157
158  function readBuffers(fd: number, buffers: ArrayBufferView[], position: number, req: FSReqCallback<number>): void;
159  function readBuffers(fd: number, buffers: ArrayBufferView[], position: number, req: undefined, ctx: FSSyncContext): number;
160  function readBuffers(fd: number, buffers: ArrayBufferView[], position: number, usePromises: typeof kUsePromises): Promise<number>;
161
162  function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: boolean, req: FSReqCallback<string[] | [string[], number[]]>): void;
163  function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: true, req: FSReqCallback<[string[], number[]]>): void;
164  function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: false, req: FSReqCallback<string[]>): void;
165  function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: boolean, req: undefined, ctx: FSSyncContext): string[] | [string[], number[]];
166  function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: true, req: undefined, ctx: FSSyncContext): [string[], number[]];
167  function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: false, req: undefined, ctx: FSSyncContext): string[];
168  function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: boolean, usePromises: typeof kUsePromises): Promise<string[] | [string[], number[]]>;
169  function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: true, usePromises: typeof kUsePromises): Promise<[string[], number[]]>;
170  function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: false, usePromises: typeof kUsePromises): Promise<string[]>;
171
172  function readlink(path: StringOrBuffer, encoding: unknown, req: FSReqCallback<string | Buffer>): void;
173  function readlink(path: StringOrBuffer, encoding: unknown, req: undefined, ctx: FSSyncContext): string | Buffer;
174  function readlink(path: StringOrBuffer, encoding: unknown, usePromises: typeof kUsePromises): Promise<string | Buffer>;
175
176  function realpath(path: StringOrBuffer, encoding: unknown, req: FSReqCallback<string | Buffer>): void;
177  function realpath(path: StringOrBuffer, encoding: unknown, req: undefined, ctx: FSSyncContext): string | Buffer;
178  function realpath(path: StringOrBuffer, encoding: unknown, usePromises: typeof kUsePromises): Promise<string | Buffer>;
179
180  function rename(oldPath: string, newPath: string, req: FSReqCallback): void;
181  function rename(oldPath: string, newPath: string, req: undefined, ctx: FSSyncContext): void;
182  function rename(oldPath: string, newPath: string, usePromises: typeof kUsePromises): Promise<void>;
183
184  function rmdir(path: string, req: FSReqCallback): void;
185  function rmdir(path: string, req: undefined, ctx: FSSyncContext): void;
186  function rmdir(path: string, usePromises: typeof kUsePromises): Promise<void>;
187
188  function stat(path: StringOrBuffer, useBigint: boolean, req: FSReqCallback<Float64Array | BigUint64Array>): void;
189  function stat(path: StringOrBuffer, useBigint: true, req: FSReqCallback<BigUint64Array>): void;
190  function stat(path: StringOrBuffer, useBigint: false, req: FSReqCallback<Float64Array>): void;
191  function stat(path: StringOrBuffer, useBigint: boolean, req: undefined, ctx: FSSyncContext): Float64Array | BigUint64Array;
192  function stat(path: StringOrBuffer, useBigint: true, req: undefined, ctx: FSSyncContext): BigUint64Array;
193  function stat(path: StringOrBuffer, useBigint: false, req: undefined, ctx: FSSyncContext): Float64Array;
194  function stat(path: StringOrBuffer, useBigint: boolean, usePromises: typeof kUsePromises): Promise<Float64Array | BigUint64Array>;
195  function stat(path: StringOrBuffer, useBigint: true, usePromises: typeof kUsePromises): Promise<BigUint64Array>;
196  function stat(path: StringOrBuffer, useBigint: false, usePromises: typeof kUsePromises): Promise<Float64Array>;
197
198  function symlink(target: StringOrBuffer, path: StringOrBuffer, type: number, req: FSReqCallback): void;
199  function symlink(target: StringOrBuffer, path: StringOrBuffer, type: number, req: undefined, ctx: FSSyncContext): void;
200  function symlink(target: StringOrBuffer, path: StringOrBuffer, type: number, usePromises: typeof kUsePromises): Promise<void>;
201  
202  function unlink(path: string, req: FSReqCallback): void;
203  function unlink(path: string, req: undefined, ctx: FSSyncContext): void;
204  function unlink(path: string, usePromises: typeof kUsePromises): Promise<void>;
205
206  function utimes(path: string, atime: number, mtime: number, req: FSReqCallback): void;
207  function utimes(path: string, atime: number, mtime: number, req: undefined, ctx: FSSyncContext): void;
208  function utimes(path: string, atime: number, mtime: number, usePromises: typeof kUsePromises): Promise<void>;
209
210  function writeBuffer(fd: number, buffer: ArrayBufferView, offset: number, length: number, position: number | null, req: FSReqCallback<number>): void;
211  function writeBuffer(fd: number, buffer: ArrayBufferView, offset: number, length: number, position: number | null, req: undefined, ctx: FSSyncContext): number;
212  function writeBuffer(fd: number, buffer: ArrayBufferView, offset: number, length: number, position: number | null, usePromises: typeof kUsePromises): Promise<number>;
213
214  function writeBuffers(fd: number, buffers: ArrayBufferView[], position: number, req: FSReqCallback<number>): void;
215  function writeBuffers(fd: number, buffers: ArrayBufferView[], position: number, req: undefined, ctx: FSSyncContext): number;
216  function writeBuffers(fd: number, buffers: ArrayBufferView[], position: number, usePromises: typeof kUsePromises): Promise<number>;
217
218  function writeString(fd: number, value: string, pos: unknown, encoding: unknown, req: FSReqCallback<number>): void;
219  function writeString(fd: number, value: string, pos: unknown, encoding: unknown, req: undefined, ctx: FSSyncContext): number;
220  function writeString(fd: number, value: string, pos: unknown, encoding: unknown, usePromises: typeof kUsePromises): Promise<number>;
221}
222
223declare function InternalBinding(binding: 'fs'): {
224  FSReqCallback: typeof InternalFSBinding.FSReqCallback;
225
226  FileHandle: typeof InternalFSBinding.FileHandle;
227
228  kUsePromises: typeof InternalFSBinding.kUsePromises;
229
230  statValues: Float64Array;
231  bigintStatValues: BigUint64Array;
232
233  kFsStatsFieldsNumber: number;
234  StatWatcher: typeof InternalFSBinding.StatWatcher;
235
236  access: typeof InternalFSBinding.access;
237  chmod: typeof InternalFSBinding.chmod;
238  chown: typeof InternalFSBinding.chown;
239  close: typeof InternalFSBinding.close;
240  copyFile: typeof InternalFSBinding.copyFile;
241  fchmod: typeof InternalFSBinding.fchmod;
242  fchown: typeof InternalFSBinding.fchown;
243  fdatasync: typeof InternalFSBinding.fdatasync;
244  fstat: typeof InternalFSBinding.fstat;
245  fsync: typeof InternalFSBinding.fsync;
246  ftruncate: typeof InternalFSBinding.ftruncate;
247  futimes: typeof InternalFSBinding.futimes;
248  internalModuleReadJSON: typeof InternalFSBinding.internalModuleReadJSON;
249  internalModuleStat: typeof InternalFSBinding.internalModuleStat;
250  lchown: typeof InternalFSBinding.lchown;
251  link: typeof InternalFSBinding.link;
252  lstat: typeof InternalFSBinding.lstat;
253  lutimes: typeof InternalFSBinding.lutimes;
254  mkdtemp: typeof InternalFSBinding.mkdtemp;
255  mkdir: typeof InternalFSBinding.mkdir;
256  open: typeof InternalFSBinding.open;
257  openFileHandle: typeof InternalFSBinding.openFileHandle;
258  read: typeof InternalFSBinding.read;
259  readBuffers: typeof InternalFSBinding.readBuffers;
260  readdir: typeof InternalFSBinding.readdir;
261  readlink: typeof InternalFSBinding.readlink;
262  realpath: typeof InternalFSBinding.realpath;
263  rename: typeof InternalFSBinding.rename;
264  rmdir: typeof InternalFSBinding.rmdir;
265  stat: typeof InternalFSBinding.stat;
266  symlink: typeof InternalFSBinding.symlink;
267  unlink: typeof InternalFSBinding.unlink;
268  utimes: typeof InternalFSBinding.utimes;
269  writeBuffer: typeof InternalFSBinding.writeBuffer;
270  writeBuffers: typeof InternalFSBinding.writeBuffers;
271  writeString: typeof InternalFSBinding.writeString;
272};
273