export declare type NonPromise = T extends Promise ? never : T; export declare type NonFunction = T extends Function ? never : T; export declare type SetStateAction = NonFunction | ((prev: Value) => NonFunction); export declare type Getter = (atom: Atom) => Value; export declare type Setter = (atom: WritableAtom, update: Update) => void; export declare type Atom = { key: string | number; init?: Value; read: (get: Getter) => Value | Promise; }; export declare type WritableAtom = Atom & { write: (get: Getter, set: Setter, update: Update) => void | Promise; }; export declare type PrimitiveAtom = WritableAtom>; export declare type AnyAtom = Atom; export declare type AnyWritableAtom = WritableAtom;