export type GeneralEventTypes = { [EventName: string]: any[]; }; type EventListener = (...args: EventTypes[EventName]) => void; /** A simple event emitter that can be used to listen to and emit events. */ declare class EventEmitter { private listeners; /** Subscribe to an event. Returns an unsubscribe function. */ on(eventName: EventName, listener: EventListener): () => void; /** Subscribe to an event only once */ once(eventName: EventName, listener: EventListener): () => void; /** Unsubscribe from an event */ un(eventName: EventName, listener: EventListener): void; /** Clear all events */ unAll(): void; /** Emit an event */ protected emit(eventName: EventName, ...args: EventTypes[EventName]): void; } export default EventEmitter;