import { Getter, Setter, Atom, WritableAtom, PrimitiveAtom, NonPromise, NonFunction } from './types'; export declare function atom(read: (get: Getter) => NonPromise, write: (get: Getter, set: Setter, update: Update) => void | Promise): WritableAtom; export declare function atom(read: NonFunction>, write: (get: Getter, set: Setter, update: Update) => void | Promise): WritableAtom; export declare function atom(read: (get: Getter) => Promise, write: (get: Getter, set: Setter, update: Update) => void | Promise): WritableAtom, Update>; export declare function atom(read: (get: Getter) => NonPromise): Atom; export declare function atom(read: (get: Getter) => Promise): Atom>; export declare function atom(initialValue: NonFunction>): PrimitiveAtom;