import { type Atom } from 'jotai/vanilla'; /** * in milliseconds */ type CreatedAt = number; type ShouldRemove = (createdAt: CreatedAt, param: Param) => boolean; type Cleanup = () => void; type Callback = (event: { type: 'CREATE' | 'REMOVE'; param: Param; atom: AtomType; }) => void; export interface AtomFamily { (param: Param): AtomType; getParams(): Iterable; remove(param: Param): void; setShouldRemove(shouldRemove: ShouldRemove | null): void; /** * fires when a atom is created or removed * This API is for advanced use cases, and can change without notice. */ unstable_listen(callback: Callback): Cleanup; } export declare function atomFamily>(initializeAtom: (param: Param) => AtomType, areEqual?: (a: Param, b: Param) => boolean): AtomFamily; export {};