export type Atom<Value> = {
    get: () => Value;
    set: (value: Value | ((prevValue: Value) => Value)) => void;
    subscribe: (callback: (value: Value) => void) => () => void;
    reset: () => void;
};
export declare function atom<Value>(initialValue: Value): Atom<Value>;
export declare function useAtom<Value>(atom: Atom<Value>, isEqual?: (prevValue: Value, nextValue: Value) => boolean): Value;
export declare function useAtomWithSelector<Value, Selection>(atom: Atom<Value>, selector: (value: Value) => Selection, isEqual?: (prevSelection: Selection, nextSelection: Selection) => boolean): Selection;
