UNPKG

3.62 kBTypeScriptView Raw
1import { Atom, WritableAtom, PrimitiveAtom } from 'jotai';
2import type { Getter, Setter } from './types';
3export declare const useUpdateAtom: <Value, Update>(anAtom: WritableAtom<Value, Update>) => undefined extends Update ? (update?: Update | undefined) => void | Promise<void> : (update: Update) => void | Promise<void>;
4declare const RESET: unique symbol;
5export declare const atomWithReset: <Value>(initialValue: Value) => WritableAtom<Value, typeof RESET | Value | ((prev: Value) => Value)>;
6export declare const useResetAtom: <Value>(anAtom: WritableAtom<Value, typeof RESET>) => (update?: unknown) => void | Promise<void>;
7export declare function useReducerAtom<Value, Action>(anAtom: PrimitiveAtom<Value>, reducer: (v: Value) => Value): [Value, () => void];
8export declare function useReducerAtom<Value, Action>(anAtom: PrimitiveAtom<Value>, reducer: (v: Value, a?: Action) => Value): [Value, (action?: Action) => void];
9export declare function useReducerAtom<Value, Action>(anAtom: PrimitiveAtom<Value>, reducer: (v: Value, a: Action) => Value): [Value, (action: Action) => void];
10export declare function atomWithReducer<Value, Action>(initialValue: Value, reducer: (v: Value, a?: Action) => Value): WritableAtom<Value, Action | undefined>;
11export declare function atomWithReducer<Value, Action>(initialValue: Value, reducer: (v: Value, a: Action) => Value): WritableAtom<Value, Action>;
12declare type AtomFamily<Param, AtomType> = {
13 (param: Param): AtomType;
14 remove(param: Param): void;
15};
16export declare function atomFamily<Param, Value, Update>(initializeRead: (param: Param) => (get: Getter) => Promise<Value>, initializeWrite: (param: Param) => (get: Getter, set: Setter, update: Update) => void | Promise<void>, areEqual?: (a: Param, b: Param) => boolean): AtomFamily<Param, WritableAtom<Value, Update>>;
17export declare function atomFamily<Param, Value, Update>(initializeRead: (param: Param) => (get: Getter) => Value, initializeWrite: (param: Param) => (get: Getter, set: Setter, update: Update) => void | Promise<void>, areEqual?: (a: Param, b: Param) => boolean): AtomFamily<Param, WritableAtom<Value, Update>>;
18export declare function atomFamily<Param, Value, Update>(initializeRead: (param: Param) => Function, initializeWrite: (param: Param) => (get: Getter, set: Setter, update: Update) => void | Promise<void>, areEqual?: (a: Param, b: Param) => boolean): never;
19export declare function atomFamily<Param, Value, Update>(initializeRead: (param: Param) => Value, initializeWrite: (param: Param) => (get: Getter, set: Setter, update: Update) => void | Promise<void>, areEqual?: (a: Param, b: Param) => boolean): AtomFamily<Param, WritableAtom<Value, Update>>;
20export declare function atomFamily<Param, Value, Update extends never = never>(initializeRead: (param: Param) => (get: Getter) => Promise<Value>, initializeWrite?: null, areEqual?: (a: Param, b: Param) => boolean): AtomFamily<Param, Atom<Value>>;
21export declare function atomFamily<Param, Value, Update extends never = never>(initializeRead: (param: Param) => (get: Getter) => Value, initializeWrite?: null, areEqual?: (a: Param, b: Param) => boolean): AtomFamily<Param, Atom<Value>>;
22export declare function atomFamily<Param, Value, Update>(initializeRead: (param: Param) => Function, initializeWrite?: null, areEqual?: (a: Param, b: Param) => boolean): never;
23export declare function atomFamily<Param, Value, Update extends never = never>(initializeRead: (param: Param) => Value, initializeWrite?: null, areEqual?: (a: Param, b: Param) => boolean): AtomFamily<Param, PrimitiveAtom<Value>>;
24export {};