```ts function reducer(previousState: State, event: React.FormEvent<HTMLFormElement> | React.MouseEvent<HTMLButtonElement>): State { return previousState.machine.next(event); } ``` ## `eventsReducer(machine)` It wouldn’t support side effects and listening/emitting to events (e.g. with `listenTo()`). ```js import { eventsReducer } from 'yieldmachine'; function useMachine(machine) { const [state, dispatch] = useReducer(eventsReducer(machine)); return [state, dispatch]; } ```