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