import { Atom, WritableAtom, PrimitiveAtom } from 'jotai'; import type { Getter, Setter } from '../core/types'; declare type AnyFunction = (...args: any[]) => any; declare type ShouldRemove = (createdAt: number, param: Param) => boolean; declare type AtomFamily = { (param: Param): AtomType; remove(param: Param): void; setShouldRemove(shouldRemove: ShouldRemove | null): void; }; export declare function atomFamily(initializeRead: (param: Param) => (get: Getter) => Value | Promise, initializeWrite: (param: Param) => (get: Getter, set: Setter, update: Update) => void | Promise, areEqual?: (a: Param, b: Param) => boolean): AtomFamily>; export declare function atomFamily(initializeRead: (param: Param) => Value, initializeWrite: (param: Param) => (get: Getter, set: Setter, update: Update) => void | Promise, areEqual?: (a: Param, b: Param) => boolean): Value extends AnyFunction ? never : AtomFamily>; export declare function atomFamily(initializeRead: (param: Param) => (get: Getter) => Value | Promise, initializeWrite?: null, areEqual?: (a: Param, b: Param) => boolean): AtomFamily>; export declare function atomFamily(initializeRead: (param: Param) => AnyFunction, initializeWrite?: null, areEqual?: (a: Param, b: Param) => boolean): never; export declare function atomFamily(initializeRead: (param: Param) => Value, initializeWrite?: null, areEqual?: (a: Param, b: Param) => boolean): AtomFamily>; export {};