import { Draft } from 'immer';
import { WritableAtom } from 'jotai';
import { Scope } from '../core/atom';
export declare function useImmerAtom<Value, Result extends void | Promise<void>>(anAtom: WritableAtom<Value, (draft: Draft<Value>) => void, Result>, scope?: Scope): [
    Value,
    (fn: (draft: Draft<Value>) => void) => Result
];
export declare function useImmerAtom<Value, Result extends void | Promise<void>>(anAtom: WritableAtom<Value, (value: Value) => Value, Result>, scope?: Scope): [
    Value,
    (fn: (draft: Draft<Value>) => void) => Result
];
declare type Awaited<T> = T extends Promise<infer V> ? V : T;