export declare type Handlers<State, Events> = {
    [Key in keyof Events]: (state: State, payload: Events[Key]) => State;
};
declare type Emitter<Payload> = Payload extends undefined ? (payload?: undefined) => void : (payload: Payload) => void;
export declare type Emitters<Events> = {
    [K in keyof Events]: Emitter<Events[K]>;
};
export declare function useEventReducer<State, Events extends Record<string, any>>(handlers: Handlers<State, Events>, initial: State): {
    state: State;
    emit: Emitters<Events>;
};
export {};
