export type AsyncCustomEventDetail = { readonly eventData: TEventData; readonly onResolve: (data: TResolveData) => void; readonly onReject: (reason: TRejectReason) => void; }; export type AsyncCustomEvent = CustomEvent>; export type Callback = (data?: TData, metadata?: TMetadata) => void; export type EventHandler = (data: TEventData, metadata: TEventMetadata, callback: TEventCallback) => void; type EventMap = Record void>; export type EventListeners = Map>; /** * Adds an event listener for a given event. This function is not pure as it modifies the provided eventListeners map. */ export declare const addListener: (eventListeners: EventListeners, event: E, listener: Events[E]) => void; /** * Removes an event listener for a given event. This function is not pure as it modifies the provided eventListeners map. */ export declare const removeListener: (eventListeners: EventListeners, event: E, listener: Events[E]) => void; /** * Emits an event, calling all registered listeners for that event with the provided arguments. * This function is not pure, though it only reads from the eventListeners map, its core purpose is to trigger side effects (the listeners). */ export declare const emitEvents: (eventListeners: EventListeners, event: E, ...args: Parameters) => void; export {};