import type { SyntheticEvent } from 'react'; /** * Internal dependencies */ import { InputState, StateReducer } from './state'; import * as actions from './actions'; /** * Composes multiple stateReducers into a single stateReducer, building * the pipeline to control the flow for state and actions. * * @param fns State reducers. * @return The single composed stateReducer. */ export declare const composeStateReducers: (...fns: StateReducer[]) => StateReducer; /** * A custom hook that connects and external stateReducer with an internal * reducer. This hook manages the internal state of InputControl. * However, by connecting an external stateReducer function, other * components can react to actions as well as modify state before it is * applied. * * This technique uses the "stateReducer" design pattern: * https://kentcdodds.com/blog/the-state-reducer-pattern/ * * @param stateReducer An external state reducer. * @param initialState The initial state for the reducer. * @return State, dispatch, and a collection of actions. */ export declare function useInputControlStateReducer(stateReducer?: StateReducer, initialState?: Partial): { readonly change: (nextValue: actions.ChangeEventAction['payload']['value'], event: actions.ChangeEventAction['payload']['event']) => void; readonly commit: (nextValue: actions.ChangeEventAction['payload']['value'], event: actions.ChangeEventAction['payload']['event']) => void; readonly dispatch: import("react").Dispatch; readonly drag: (payload: actions.DragEventAction['payload']) => void; readonly dragEnd: (payload: actions.DragEventAction['payload']) => void; readonly dragStart: (payload: actions.DragEventAction['payload']) => void; readonly invalidate: (error: unknown, event: SyntheticEvent) => void; readonly pressDown: (event: actions.KeyEventAction['payload']['event']) => void; readonly pressEnter: (event: actions.KeyEventAction['payload']['event']) => void; readonly pressUp: (event: actions.KeyEventAction['payload']['event']) => void; readonly reset: (nextValue: actions.ChangeEventAction['payload']['value'], event: actions.ChangeEventAction['payload']['event']) => void; readonly state: InputState; readonly update: (nextValue: actions.ChangeEventAction['payload']['value'], event: actions.ChangeEventAction['payload']['event']) => void; }; //# sourceMappingURL=reducer.d.ts.map