text: declare module "worker_threads" {
      import { EventEmitter } from "events";
      import { Readable, Writable } from "stream";
  
      const isMainThread: boolean;
      const parentPort: null | MessagePort;
      const threadId: number;
      const workerData: any;
  
      class MessageChannel {
          readonly port1: MessagePort;
          readonly port2: MessagePort;
      }
  
      class MessagePort extends EventEmitter {
          close(): void;
          postMessage(value: any, transferList?: Array<ArrayBuffer | MessagePort>): void;
          ref(): void;
          unref(): void;
          start(): void;
  
          addListener(event: "close", listener: () => void): this;
          addListener(event: "message", listener: (value: any) => void): this;
          addListener(event: string | symbol, listener: (...args: any[]) => void): this;
  
          emit(event: "close"): boolean;
          emit(event: "message", value: any): boolean;
          emit(event: string | symbol, ...args: any[]): boolean;
  
          on(event: "close", listener: () => void): this;
          on(event: "message", listener: (value: any) => void): this;
          on(event: string | symbol, listener: (...args: any[]) => void): this;
  
          once(event: "close", listener: () => void): this;
          once(event: "message", listener: (value: any) => void): this;
          once(event: string | symbol, listener: (...args: any[]) => void): this;
  
          prependListener(event: "close", listener: () => void): this;
          prependListener(event: "message", listener: (value: any) => void): this;
          prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
  
          prependOnceListener(event: "close", listener: () => void): this;
          prependOnceListener(event: "message", listener: (value: any) => void): this;
          prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
  
          removeListener(event: "close", listener: () => void): this;
          removeListener(event: "message", listener: (value: any) => void): this;
          removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
  
          off(event: "close", listener: () => void): this;
          off(event: "message", listener: (value: any) => void): this;
          off(event: string | symbol, listener: (...args: any[]) => void): this;
      }
  
      interface WorkerOptions {
          eval?: boolean;
          workerData?: any;
          stdin?: boolean;
          stdout?: boolean;
          stderr?: boolean;
      }
  
      class Worker extends EventEmitter {
          readonly stdin: Writable | null;
          readonly stdout: Readable;
          readonly stderr: Readable;
          readonly threadId: number;
  
          constructor(filename: string, options?: WorkerOptions);
  
          postMessage(value: any, transferList?: Array<ArrayBuffer | MessagePort>): void;
          ref(): void;
          unref(): void;
          terminate(callback?: (err: any, exitCode: number) => void): void;
  
          addListener(event: "error", listener: (err: any) => void): this;
          addListener(event: "exit", listener: (exitCode: number) => void): this;
          addListener(event: "message", listener: (value: any) => void): this;
          addListener(event: "online", listener: () => void): this;
          addListener(event: string | symbol, listener: (...args: any[]) => void): this;
  
          emit(event: "error", err: any): boolean;
          emit(event: "exit", exitCode: number): boolean;
          emit(event: "message", value: any): boolean;
          emit(event: "online"): boolean;
          emit(event: string | symbol, ...args: any[]): boolean;
  
          on(event: "error", listener: (err: any) => void): this;
          on(event: "exit", listener: (exitCode: number) => void): this;
          on(event: "message", listener: (value: any) => void): this;
          on(event: "online", listener: () => void): this;
          on(event: string | symbol, listener: (...args: any[]) => void): this;
  
          once(event: "error", listener: (err: any) => void): this;
          once(event: "exit", listener: (exitCode: number) => void): this;
          once(event: "message", listener: (value: any) => void): this;
          once(event: "online", listener: () => void): this;
          once(event: string | symbol, listener: (...args: any[]) => void): this;
  
          prependListener(event: "error", listener: (err: any) => void): this;
          prependListener(event: "exit", listener: (exitCode: number) => void): this;
          prependListener(event: "message", listener: (value: any) => void): this;
          prependListener(event: "online", listener: () => void): this;
          prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
  
          prependOnceListener(event: "error", listener: (err: any) => void): this;
          prependOnceListener(event: "exit", listener: (exitCode: number) => void): this;
          prependOnceListener(event: "message", listener: (value: any) => void): this;
          prependOnceListener(event: "online", listener: () => void): this;
          prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
  
          removeListener(event: "error", listener: (err: any) => void): this;
          removeListener(event: "exit", listener: (exitCode: number) => void): this;
          removeListener(event: "message", listener: (value: any) => void): this;
          removeListener(event: "online", listener: () => void): this;
          removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
  
          off(event: "error", listener: (err: any) => void): this;
          off(event: "exit", listener: (exitCode: number) => void): this;
          off(event: "message", listener: (value: any) => void): this;
          off(event: "online", listener: () => void): this;
          off(event: string | symbol, listener: (...args: any[]) => void): this;
      }
  }
  