import * as React from 'react'; type ChangeHandler$1 = (state: T) => void; type SetStateFn = React.Dispatch>; interface UseControllableStateParams$1 { prop?: T | undefined; defaultProp: T; onChange?: ChangeHandler$1; caller?: string; } declare function useControllableState({ prop, defaultProp, onChange, caller, }: UseControllableStateParams$1): [T, SetStateFn]; type ChangeHandler = (state: T) => void; interface UseControllableStateParams { prop: T | undefined; defaultProp: T; onChange: ChangeHandler | undefined; caller: string; } interface AnyAction { type: string; } declare function useControllableStateReducer(reducer: (prevState: S & { state: T; }, action: A) => S & { state: T; }, userArgs: UseControllableStateParams, initialState: S): [S & { state: T; }, React.Dispatch]; declare function useControllableStateReducer(reducer: (prevState: S & { state: T; }, action: A) => S & { state: T; }, userArgs: UseControllableStateParams, initialArg: I, init: (i: I & { state: T; }) => S): [S & { state: T; }, React.Dispatch]; export { useControllableState, useControllableStateReducer };