//#region src/types.d.ts type Listener = (event: unknown, sender: ISimpleEventEmitter) => void; type ISimpleEventEmitter = { addEventListener(type: K, listener: (event: Events[K], sender: ISimpleEventEmitter) => void): void; removeEventListener(type: K, listener: (event: Events[K], sender: ISimpleEventEmitter) => void): void; }; //#endregion //#region src/simple-event-emitter.d.ts declare class SimpleEventEmitter implements ISimpleEventEmitter { #private; dispose(): void; get isDisposed(): boolean; /** * Fire event * @param type Type of event * @param args Arguments for event * @returns */ protected fireEvent(type: K, args: Events[K]): void; /** * Adds event listener. * * @throws Error if emitter is disposed * @typeParam K - Events * @param name Event name * @param listener Event handler */ addEventListener(name: K, listener: (event: Events[K], sender: SimpleEventEmitter) => void): void; /** * Remove event listener * * @param listener */ removeEventListener(type: K, listener: (event: Events[K], sender: SimpleEventEmitter) => void): void; /** * Clear all event listeners * @private */ clearEventListeners(): void; } //#endregion export { ISimpleEventEmitter, Listener, SimpleEventEmitter };