export type EventEmitterEvents = Record; export interface EventEmitter< EventTypes extends EventEmitterEvents = Record, > { on( type: K, listener: (...args: EventTypes[K]) => void, ): EventEmitter; off( type: K, listener: (...args: EventTypes[K]) => void, ): EventEmitter; emit(type: K, ...args: EventTypes[K]): boolean; once( type: K, listener: (...args: EventTypes[K]) => void, ): EventEmitter; } interface ReadableStreamAsyncIterator extends AsyncIterator { [Symbol.asyncIterator](): ReadableStreamAsyncIterator; } export interface ReadableStream { values(options?: { preventCancel?: boolean }): ReadableStreamAsyncIterator; [Symbol.asyncIterator](): ReadableStreamAsyncIterator; } export interface Timeout { ref(): this; unref(): this; hasRef(): boolean; refresh(): this; } export interface Timer { setTimeout(callback: (...args: any[]) => any, ms: number): Timeout; clearTimeout(timeoutId: Timeout | string | number | undefined): void; }