UNPKG

1.29 kBTypeScriptView Raw
1import type { Context } from 'react';
2import type { Atom, WritableAtom, Scope } from './atom';
3import type { State } from './vanilla';
4import { createMutableSource } from './useMutableSource';
5declare type MutableSource<_Target> = ReturnType<typeof createMutableSource>;
6declare type UpdateAtom = <Value, Update>(atom: WritableAtom<Value, Update>, update: Update) => void | Promise<void>;
7declare type StoreForProduction = [
8 stateMutableSource: MutableSource<State>,
9 updateAtom: UpdateAtom
10];
11export declare type StoreForDevelopment = [
12 stateMutableSource: MutableSource<State>,
13 updateAtom: UpdateAtom,
14 debugMutableSource: MutableSource<{
15 version: number;
16 atoms: Atom<unknown>[];
17 state: State;
18 listeners: Set<() => void>;
19 }>,
20 restore: (values: Iterable<readonly [Atom<unknown>, unknown]>) => void
21];
22export declare type Store = StoreForProduction | StoreForDevelopment;
23declare type CreateStore = (initialValues?: Iterable<readonly [Atom<unknown>, unknown]>) => Store;
24export declare const createStore: CreateStore;
25declare type StoreContext = Context<Store>;
26export declare const getStoreContext: (scope?: Scope | undefined) => StoreContext;
27export declare const isDevStore: (store: Store) => store is StoreForDevelopment;
28export {};