export interface Observable { (): T; (nextValue: T): T; } export function observable(value: T): Observable; export function o(value: T): Observable; export function computed unknown>(observer: T, seed?: unknown): T; export function S unknown>(observer: T, seed?: unknown): T; export function subscribe(observer: () => T): () => void; export function unsubscribe(observer: () => T): void; export function isListening(): boolean; export function root(fn: () => T): T; export function sample(fn: () => T): T; export function transaction(fn: () => T): T; export function on unknown>(observables: Observable[], fn: T, seed?: unknown, onchanges?: boolean): T; export function cleanup unknown>(fn: T): T;