import { Draft, nothing } from "immer"; import { Dispatch } from "react"; export declare type DraftFunction = (draft: Draft) => void; export declare type Updater = (arg: S | DraftFunction) => void; export declare type ImmerHook = [S, Updater]; export declare function useImmer(initialValue: S | (() => S)): ImmerHook; export declare type ImmerReducer = (draftState: Draft, action: A) => void | (S extends undefined ? typeof nothing : S); /** * @deprecated Use `ImmerReducer` instead since there is already a `Reducer` type in `@types/react`. */ export declare type Reducer = ImmerReducer; export declare function useImmerReducer(reducer: ImmerReducer, initializerArg: S & I, initializer: (arg: S & I) => S): [S, Dispatch]; export declare function useImmerReducer(reducer: ImmerReducer, initializerArg: I, initializer: (arg: I) => S): [S, Dispatch]; export declare function useImmerReducer(reducer: ImmerReducer, initialState: S, initializer?: undefined): [S, Dispatch];