import type { Context } from 'react'; import type { Atom, WritableAtom, Scope } from './atom'; import type { State } from './vanilla'; import { createMutableSource } from './useMutableSource'; declare type MutableSource<_Target> = ReturnType; declare type UpdateAtom = (atom: WritableAtom, update: Update) => void | Promise; declare type StoreForProduction = [ stateMutableSource: MutableSource, updateAtom: UpdateAtom ]; export declare type StoreForDevelopment = [ stateMutableSource: MutableSource, updateAtom: UpdateAtom, debugMutableSource: MutableSource<{ version: number; atoms: Atom[]; state: State; listeners: Set<() => void>; }>, restore: (values: Iterable, unknown]>) => void ]; export declare type Store = StoreForProduction | StoreForDevelopment; declare type CreateStore = (initialValues?: Iterable, unknown]>) => Store; export declare const createStore: CreateStore; declare type StoreContext = Context; export declare const getStoreContext: (scope?: Scope | undefined) => StoreContext; export declare const isDevStore: (store: Store) => store is StoreForDevelopment; export {};