UNPKG

1.19 kBTypeScriptView Raw
1import type { Atom, Getter, WritableAtom } from 'jotai';
2declare global {
3 interface SymbolConstructor {
4 readonly observable: symbol;
5 }
6}
7declare type Subscription = {
8 unsubscribe: () => void;
9};
10declare type Observer<T> = {
11 next: (value: T) => void;
12 error: (error: unknown) => void;
13 complete: () => void;
14};
15declare type ObservableLike<T> = {
16 subscribe(observer: Observer<T>): Subscription;
17 subscribe(next: (value: T) => void, error?: (error: unknown) => void, complete?: () => void): Subscription;
18 [Symbol.observable]?: () => ObservableLike<T> | undefined;
19};
20declare type SubjectLike<T> = ObservableLike<T> & Observer<T>;
21declare type InitialValueFunction<T> = () => T | undefined;
22declare type AtomWithObservableOptions<TData> = {
23 initialValue?: TData | InitialValueFunction<TData>;
24};
25export declare function atomWithObservable<TData>(createObservable: (get: Getter) => SubjectLike<TData>, options?: AtomWithObservableOptions<TData>): WritableAtom<TData, TData>;
26export declare function atomWithObservable<TData>(createObservable: (get: Getter) => ObservableLike<TData>, options?: AtomWithObservableOptions<TData>): Atom<TData>;
27export {};