export declare type EventTargetLike = EventTargetLike.HasEventTargetAddRemove | EventTargetLike.NodeStyleEventEmitter | EventTargetLike.JQueryStyleEventEmitter | EventTargetLike.RxJSSubject; export declare namespace EventTargetLike { type HTMLElement = HasEventTargetAddRemove & { innerText: string; }; type Window = HasEventTargetAddRemove & { document: EventTargetLike.Document; }; type Document = HasEventTargetAddRemove & { URL: string; }; type RxJSSubject = { subscribe: (next: (data: T) => void) => RxJSSubject.Subscription; }; namespace RxJSSubject { type Subscription = { unsubscribe(): void; }; function match(eventTarget: EventTargetLike): eventTarget is RxJSSubject; } type NodeStyleEventEmitter = NodeStyleEventEmitter.Compat | NodeStyleEventEmitter.Regular; namespace NodeStyleEventEmitter { interface Regular { addListener: (eventName: string | symbol, handler: NodeEventHandler) => this; removeListener: (eventName: string | symbol, handler: NodeEventHandler) => this; } interface Compat { addListener: (eventName: string, handler: NodeEventHandler) => void | {}; removeListener: (eventName: string, handler: NodeEventHandler) => void | {}; } type NodeEventHandler = (...args: any[]) => void; function match(eventTarget: EventTargetLike): eventTarget is NodeStyleEventEmitter; } interface JQueryStyleEventEmitter { on: (eventName: string, handler: Function) => void; off: (eventName: string, handler: Function) => void; } namespace JQueryStyleEventEmitter { function match(eventTarget: EventTargetLike): eventTarget is JQueryStyleEventEmitter; } interface HasEventTargetAddRemove { addEventListener(type: string, listener: ((evt: E) => void) | null, options?: boolean | HasEventTargetAddRemove.Options): void; removeEventListener(type: string, listener?: ((evt: E) => void) | null, options?: HasEventTargetAddRemove.Options | boolean): void; } namespace HasEventTargetAddRemove { interface Options { capture?: boolean; passive?: boolean; once?: boolean; } function match(eventTarget: EventTargetLike): eventTarget is HasEventTargetAddRemove; } function canBe(o: any): boolean; }