import type { Draft } from 'immer'; import { useAtomValue } from 'jotai/react'; import type { WritableAtom } from 'jotai/vanilla'; import { useSetImmerAtom } from './useSetImmerAtom.js'; type Options = Parameters[1]; export function useImmerAtom( anAtom: WritableAtom) => void], Result>, options?: Options, ): [Value, (fn: (draft: Draft) => void) => Result]; export function useImmerAtom( anAtom: WritableAtom Value], Result>, options?: Options, ): [Value, (fn: (draft: Draft) => void) => Result]; export function useImmerAtom( anAtom: WritableAtom Value], Result>, options?: Options, ) { return [useAtomValue(anAtom, options), useSetImmerAtom(anAtom, options)]; }