export interface UseControllableStateProps<StateT, ChangeT extends StateT = StateT> {
    value?: StateT;
    defaultValue: StateT | (() => StateT);
    onChange?: (value: ChangeT) => void;
}
/**
 * `useControllableState` returns the state and function that updates the state, just like React.useState does.
 */
export declare function useControllableState<StateT, ChangeT extends StateT = StateT>({ value: valueProp, defaultValue, onChange, }: UseControllableStateProps<StateT, ChangeT>): readonly [StateT, (next: ChangeT | ((prevState: StateT) => ChangeT)) => void];
