import { EventEmitter } from 'events' import workerThreads from 'worker_threads' interface ThreadStreamOptions { /** * The size (in bytes) of the buffer. * Must be greater than 4 (i.e. it must at least fit a 4-byte utf-8 char). * * Default: `4 * 1024 * 1024` = `4194304` */ bufferSize?: number, /** * The path to the Worker's main script or module. * Must be either an absolute path or a relative path (i.e. relative to the current working directory) starting with ./ or ../, or a WHATWG URL object using file: or data: protocol. * When using a data: URL, the data is interpreted based on MIME type using the ECMAScript module loader. * * {@link workerThreads.Worker()} */ filename: string | URL, /** * If `true`, write data synchronously; otherwise write data asynchronously. * * Default: `false`. */ sync?: boolean, /** * {@link workerThreads.WorkerOptions.workerData} * * Default: `{}` */ workerData?: any, /** * {@link workerThreads.WorkerOptions} * * Default: `{}` */ workerOpts?: workerThreads.WorkerOptions } declare class ThreadStream extends EventEmitter { /** * @param {ThreadStreamOptions} opts */ constructor(opts: ThreadStreamOptions) /** * Write some data to the stream. * * **Please note that this method should not throw an {Error} if something goes wrong but emit an error event.** * @param {string} data data to write. * @returns {boolean} false if the stream wishes for the calling code to wait for the 'drain' event to be emitted before continuing to write additional data or if it fails to write; otherwise true. */ write(data: string): boolean /** * Signal that no more data will be written. * * **Please note that this method should not throw an {Error} if something goes wrong but emit an error event.** * * Calling the {@link write()} method after calling {@link end()} will emit an error. */ end(): void /** * Flush the stream synchronously. * This method should be called in the shutdown phase to make sure that all data has been flushed. * * **Please note that this method will throw an {Error} if something goes wrong.** * * @throws {Error} if the stream is already flushing, if it fails to flush or if it takes more than 10 seconds to flush. */ flushSync(): void } export = ThreadStream;