export type Observable = { name?: string; get(effect?: Effect): T; set(newValue: T): void; }; export type ReadableObservable = Pick, "get" | "name">; export type Effect = { run: () => void; dependencies: Set<() => void>; }; export type ObservableOptions = { fallback?: Observable; name?: string; }; export declare function observable(value: T, { fallback, name }?: ObservableOptions): Observable; export declare function cleanupEffect(effect: Effect): void;