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< WildcardHandler >; export type EventHandlerMap> = Map< keyof Events | "*", EventHandlerList | WildCardEventHandlerList >; export interface Emitter> { events: EventHandlerMap; on: (( type: Key, handler: Handler ) => 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); } export declare function mitt>( events?: EventHandlerMap ): Emitter;