export interface EventArgsTable { AUTO_RENEWED: [K1, number, number]; CLEARED: [Array>]; CLOSING: []; PRUNED: [Array>]; PUT: [MapEntry, MapEntry]; REMOVED: [MapEntry]; } export interface ListenerInfo { attributes: Attributes; id: string; listen: Listener; once?: boolean; } export type ListenerRunner = (listener: ListenerInfo) => void; export type EventBus = { [eventId: string]: ListenerInfo; }; export type ListenerInfoContainer = { [E in EventName]: EventBus; }; import { Attributes, EventName, KeyType, Listener, MapEntry } from '../'; declare class Events { private _entryCounter; private _listeners; constructor(); emit(type: E, ...args: EventArgsTable[E]): void; emitNow(type: E, ...args: EventArgsTable[E]): void; off(type: E, listener: Listener): void; offById(eventId: string): void; on(type: E, listener: Listener, attributes?: Attributes): string; once(type: E, listener: Listener, attributes?: Attributes): string; private _calcSharedData; private _hasTypeListeners; } export default Events;