jotai
Version:
👻 Next gen state management that will spook you
16 lines (15 loc) • 1.92 kB
TypeScript
import { Atom, WritableAtom, PrimitiveAtom } from 'jotai';
import type { Getter, Setter } from '../core/types';
declare type ShouldRemove<Param> = (createdAt: number, param: Param) => boolean;
declare type AtomFamily<Param, AtomType> = {
(param: Param): AtomType;
remove(param: Param): void;
setShouldRemove(shouldRemove: ShouldRemove<Param> | null): void;
};
export 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>>;
export 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;
export 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>>;
export 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>>;
export declare function atomFamily<Param, Value, Update>(initializeRead: (param: Param) => Function, initializeWrite?: null, areEqual?: (a: Param, b: Param) => boolean): never;
export 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>>;
export {};