import { c as PersistOptions, o as PersistApi } from "../persist-core-B649IGlX.mjs";
import { Atom, WritableAtom } from "jotai";

//#region src/adapters/sources/jotai.d.ts
/** jotai's Store type — structural to avoid importing internals. */
interface JotaiStore {
  get: <T>(atom: Atom<T>) => T;
  set: <T>(atom: WritableAtom<T, [T | ((prev: T) => T)], void>, value: T | ((prev: T) => T)) => void;
  sub: (atom: Atom<unknown>, listener: () => void) => () => void;
}
/**
 * Persist a writable jotai atom via a jotai `Store`. `get`/`set`/`sub` map
 * to `PersistableSource` for the atom's value.
 *
 * @example
 * ```ts
 * import { atom, createStore } from "jotai";
 * import { persistAtom } from "@stainless-code/persist/sources/jotai";
 * const countAtom = atom(0);
 * const store = createStore();
 * const persist = persistAtom(store, countAtom, { name: "count" });
 * ```
 */
declare function persistAtom<TState, TPersistedState = TState>(store: JotaiStore, atom: WritableAtom<TState, [TState | ((prev: TState) => TState)], void>, options: PersistOptions<TState, TPersistedState>): PersistApi<TState, TPersistedState>;
//#endregion
export { JotaiStore, persistAtom };