UNPKG

1.1 kBTypeScriptView Raw
1import { Draft, nothing } from "immer";
2import { Dispatch } from "react";
3export declare type DraftFunction<S> = (draft: Draft<S>) => void;
4export declare type Updater<S> = (arg: S | DraftFunction<S>) => void;
5export declare type ImmerHook<S> = [S, Updater<S>];
6export declare function useImmer<S = any>(initialValue: S | (() => S)): ImmerHook<S>;
7export declare type ImmerReducer<S, A> = (draftState: Draft<S>, action: A) => void | (S extends undefined ? typeof nothing : S);
8/**
9 * @deprecated Use `ImmerReducer` instead since there is already a `Reducer` type in `@types/react`.
10 */
11export declare type Reducer<S = any, A = any> = ImmerReducer<S, A>;
12export declare function useImmerReducer<S, A, I>(reducer: ImmerReducer<S, A>, initializerArg: S & I, initializer: (arg: S & I) => S): [S, Dispatch<A>];
13export declare function useImmerReducer<S, A, I>(reducer: ImmerReducer<S, A>, initializerArg: I, initializer: (arg: I) => S): [S, Dispatch<A>];
14export declare function useImmerReducer<S, A>(reducer: ImmerReducer<S, A>, initialState: S, initializer?: undefined): [S, Dispatch<A>];