UNPKG

@fewings/core

Version:
13 lines (11 loc) 654 B
type EventMap = Record<string, (...args: any[]) => void>; type TListener<M extends EventMap, K extends keyof M> = M[K]; type TPayLoad<M extends EventMap, K extends keyof M> = Parameters<TListener<M, K>>; declare abstract class Emitter<T extends EventMap> { listener: Partial<Record<keyof T, TListener<T, keyof T>[]>>; on<E extends keyof T>(event: E, listener: TListener<T, E>): () => void; once<E extends keyof T>(event: E, listener: TListener<T, E>): () => void; dispatch<E extends keyof T>(event: E, ...payload: TPayLoad<T, E>): void; removeAllListeners(): void; } export { Emitter, type EventMap, type TListener, type TPayLoad };