import { Observable, Observer } from 'rxjs'; import { Change } from './types/changes'; export declare class State extends Observable implements Observer { protected _value: T | undefined; readonly downstream: Observable>; readonly upstream: Observer>; private _changesub; constructor(initial: T | undefined); constructor(initial: T | undefined, downstream: Observable>, upstream: Observer>); next(t: T | undefined): void; error(err: any): void; complete(): void; get value(): T; set value(t: T); sub(key: K): State; subDownstream(key: K, current: () => T[K] | undefined): Observable<{ value: T[K] | undefined; trace: any; }>; subUpstream(key: K): Observer>; } export declare function state(initial: T | undefined): State;