import type { Dispatcher, DispatcherEventsMap, DispatcherListener } from '@ima/core';
export interface useDispatcherType {
    fire: Dispatcher['fire'];
}
/**
 * Hook to register listeners for dispatcher events. Returns
 * decorated dispatcher fire function. Omitting hook params
 * doesn't register any events to the dispatcher but provides
 * access to the dispatcher's fire method.
 *
 * @example
 * const { fire } = useDispatcher(
 * 	'dispatcher-event',
 * 	() => {}
 * );
 *
 * // Access $Dispatcher's.fire method without registering listener
 * const { fire } = useDispatcher();
 *
 * // Firing custom event
 * useEffect(() => {
 * 	fire('another-event', { data: {} })
 * });
 *
 * @param event Event name.
 * @param listener Callback to register to dispatcher.
 * @returns Dispatcher `fire` method.
 */
export declare function useDispatcher<E extends keyof DispatcherEventsMap>(event?: E, listener?: DispatcherListener<DispatcherEventsMap[E]>): useDispatcherType;
export declare function useDispatcher(event?: string, listener?: DispatcherListener<any>): useDispatcherType;
//# sourceMappingURL=dispatcher.d.ts.map