UNPKG

1.73 kBTypeScriptView Raw
1import { Atom, WritableAtom, PrimitiveAtom } from 'jotai';
2import { Getter, Setter } from '../core/types';
3declare type AnyFunction = (...args: any[]) => any;
4declare type ShouldRemove<Param> = (createdAt: number, param: Param) => boolean;
5declare type AtomFamily<Param, AtomType> = {
6 (param: Param): AtomType;
7 remove(param: Param): void;
8 setShouldRemove(shouldRemove: ShouldRemove<Param> | null): void;
9};
10export declare function atomFamily<Param, Value, Update>(initializeRead: (param: Param) => (get: Getter) => Value | 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>>;
11export 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): Value extends AnyFunction ? never : AtomFamily<Param, WritableAtom<Value, Update>>;
12export declare function atomFamily<Param, Value, Update extends never = never>(initializeRead: (param: Param) => (get: Getter) => Value | Promise<Value>, initializeWrite?: null, areEqual?: (a: Param, b: Param) => boolean): AtomFamily<Param, Atom<Value>>;
13export declare function atomFamily<Param, Value>(initializeRead: (param: Param) => AnyFunction, initializeWrite?: null, areEqual?: (a: Param, b: Param) => boolean): never;
14export declare function atomFamily<Param, Value>(initializeRead: (param: Param) => Value, initializeWrite?: null, areEqual?: (a: Param, b: Param) => boolean): AtomFamily<Param, PrimitiveAtom<Value>>;
15export {};