export type EventType = string | symbol; export type Handler = (event: T) => void; export type WildcardHandler> = (type: keyof T, event: T[keyof T]) => void; export type EventHandlerList = Array>; export type WildCardEventHandlerList> = Array>; export type EventHandlerMap> = Map | WildCardEventHandlerList>; export interface Emitter> { all: EventHandlerMap; on: ((type: Key, handler: Handler, replayOnce?: boolean) => void) & ((type: '*', handler: WildcardHandler) => void); off: ((type: Key, handler?: Handler) => void) & ((type: '*', handler: WildcardHandler) => void); emit: ((type: Key, event: Events[Key]) => void) & ((type: undefined extends Events[Key] ? Key : never) => void); } /** * Mitt: Tiny (~200b) functional event emitter / pubsub. * @name mitt * @returns {Mitt} */ export default function mitt>(all?: EventHandlerMap): Emitter;