export interface S { root(fn: (dispose: () => void) => T): T; (fn: () => T): () => T; (fn: (v: T) => T, seed: T): () => T; on(ev: () => any, fn: () => T): () => T; on(ev: () => any, fn: (v: T) => T, seed: T, onchanges?: boolean): () => T; data(value: T): DataSignal; value(value: T, eq?: (a: T, b: T) => boolean): DataSignal; freeze(fn: () => T): T; sample(fn: () => T): T; cleanup(fn: (final: boolean) => any): void; subclock(): (fn: () => T) => T; subclock(fn: () => T): T; } export interface DataSignal { (): T; (val: T): T; } declare const S: S; export default S;