export interface Handler) => ReturnType>, K extends keyof E> { event: K; once: boolean; handler: (...args: Parameters) => void; } /** * The Event class is responsible to provide an API to subscribe new handlers, * and triggers them whenever is necessary */ declare class Event ReturnType>> { /** * An array that contains subscribed handler functions */ private handlers; /** * A number that behaves as a counter and used as an id for new handlers */ private count; constructor(); /** * Triggers handler functions of a corresponding event * @param event - Event name * @param args - Event corresponding arguments * @public * @returns void */ trigger(event: K, ...args: Parameters): void; /** * Subscribe new handler * @param event - Event name * @param handler - Handler function * @public * @returns number */ subscribe(event: K, handler: (...args: Parameters) => ReturnType): number; /** * Subscribe new handler which triggers only once * @param event - Event name * @param handler - Handler function * @public * @returns number */ subscribeOnce(event: K, handler: (...args: Parameters) => ReturnType): number; /** * Unsubscribe handler from handlers by id * @param id - Handler id * @public * @returns void */ unsubscribe(id: number): void; } export default Event;