import { Atom, WritableAtom, PrimitiveAtom } from 'jotai'; import type { Getter, Setter } from './types'; export declare const useUpdateAtom: (anAtom: WritableAtom) => undefined extends Update ? (update?: Update | undefined) => void | Promise : (update: Update) => void | Promise; declare const RESET: unique symbol; export declare const atomWithReset: (initialValue: Value) => WritableAtom Value)>; export declare const useResetAtom: (anAtom: WritableAtom) => (update?: unknown) => void | Promise; export declare function useReducerAtom(anAtom: PrimitiveAtom, reducer: (v: Value) => Value): [Value, () => void]; export declare function useReducerAtom(anAtom: PrimitiveAtom, reducer: (v: Value, a?: Action) => Value): [Value, (action?: Action) => void]; export declare function useReducerAtom(anAtom: PrimitiveAtom, reducer: (v: Value, a: Action) => Value): [Value, (action: Action) => void]; export declare function atomWithReducer(initialValue: Value, reducer: (v: Value, a?: Action) => Value): WritableAtom; export declare function atomWithReducer(initialValue: Value, reducer: (v: Value, a: Action) => Value): WritableAtom; declare type AtomFamily = { (param: Param): AtomType; remove(param: Param): void; }; export declare function atomFamily(initializeRead: (param: Param) => (get: Getter) => 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) => (get: Getter) => Value, 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) => Function, initializeWrite: (param: Param) => (get: Getter, set: Setter, update: Update) => void | Promise, areEqual?: (a: Param, b: Param) => boolean): never; 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): AtomFamily>; export declare function atomFamily(initializeRead: (param: Param) => (get: Getter) => Promise, initializeWrite?: null, areEqual?: (a: Param, b: Param) => boolean): AtomFamily>; export declare function atomFamily(initializeRead: (param: Param) => (get: Getter) => Value, initializeWrite?: null, areEqual?: (a: Param, b: Param) => boolean): AtomFamily>; export declare function atomFamily(initializeRead: (param: Param) => Function, 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 {};