import type { Atom, WritableAtom } from './atom'; declare type AnyAtom = Atom; declare type OnUnmount = () => void; declare type NonPromise = T extends Promise ? V : T; declare const IS_EQUAL_PROMISE: unique symbol; declare const INTERRUPT_PROMISE: unique symbol; declare type InterruptablePromise = Promise & { [IS_EQUAL_PROMISE]: (p: Promise) => boolean; [INTERRUPT_PROMISE]: () => void; }; declare type Revision = number; declare type InvalidatedRevision = number; declare type ReadDependencies = Map; export declare type AtomState = { e?: Error; p?: InterruptablePromise; c?: () => void; w?: Promise; v?: NonPromise; r: Revision; i?: InvalidatedRevision; d: ReadDependencies; }; declare type Listeners = Set<() => void>; declare type Dependents = Set; declare type Mounted = { l: Listeners; d: Dependents; u: OnUnmount | void; }; declare type StateListener = (updatedAtom: AnyAtom, isNewAtom: boolean) => void; export declare const GET_VERSION = "v"; export declare const READ_ATOM = "r"; export declare const WRITE_ATOM = "w"; export declare const FLUSH_PENDING = "f"; export declare const SUBSCRIBE_ATOM = "s"; export declare const RESTORE_ATOMS = "h"; export declare const DEV_GET_ATOM_STATE = "a"; export declare const DEV_GET_MOUNTED = "m"; export declare const createStore: (initialValues?: Iterable | undefined, stateListener?: StateListener | undefined) => { v: () => number; r: (readingAtom: Atom) => AtomState; w: (writingAtom: WritableAtom, update: Update) => void; f: () => void; s: (atom: AnyAtom, callback: () => void) => () => void; h: (values: Iterable) => void; a: (a: AnyAtom) => AtomState | undefined; m: (a: AnyAtom) => Mounted | undefined; } | { v: () => number; r: (readingAtom: Atom) => AtomState; w: (writingAtom: WritableAtom, update: Update) => void; f: () => void; s: (atom: AnyAtom, callback: () => void) => () => void; h: (values: Iterable) => void; a?: undefined; m?: undefined; }; export declare type Store = ReturnType; export {};