import type { Disposable } from './disposable.js'; export interface EventListener { (this: TThis, e: TEvent, ...args: TArgs): TResult; } export interface RemoveEventListener extends Disposable { (): void; } export interface Event { /** * Attaches an event listener. */ (listener: EventListener): RemoveEventListener; /** * Attaches an event listener that bind to `this` and `args`. */ ( listener: EventListener, thisArg: TThis, ...args: TArgs ): RemoveEventListener; }