import { ObservableSeed, Observer, Property, PropertySeed, PropertySource, Scope, Subscribe, TypeBitfield, Unsub, Desc } from "./abstractions"; import { HKT } from "./hkt"; import { ObservableBase, ObservableSeedImpl } from "./observable"; export declare abstract class PropertyBase> extends ObservableBase> implements Property, PropertySeed, PropertySource { [HKT]: Property; observableType(): "Property" | "Atom"; constructor(desc: Desc); abstract getScope(): Scope; abstract get(): V; abstract onChange(onValue: Observer, onEnd?: Observer): Unsub; subscribe(onValue: Observer, onEnd?: Observer): Unsub; applyScope(scope: Scope): S; } export declare class StatelessProperty> extends PropertyBase { _L: TypeBitfield; get: () => V; private _onChange; private _scope; constructor(desc: Desc, get: () => V, onChange: Subscribe, scope: Scope); onChange(onValue: Observer, onEnd?: Observer): import("./abstractions").Callback; getScope(): Scope; } export declare class StatefulProperty> extends PropertyBase { _L: TypeBitfield; private _dispatcher; private _scope; private _value; protected _source: PropertySource; constructor(seed: ObservableSeed | Property, Property>, scope: Scope); onChange(onValue: Observer, onEnd?: Observer): import("./abstractions").Callback; get(): V; getScope(): Scope; } /** * Input source for a StatefulProperty. Returns initial value and supplies changes to observer. * Must skip duplicates! **/ export declare class PropertySeedImpl extends ObservableSeedImpl, Property> implements PropertySeed { [HKT]: PropertySeed; observableType(): "PropertySeed"; _L: TypeBitfield; constructor(desc: Desc, get: () => V, onChange: Subscribe); applyScope(scope: Scope): Property; } export declare class PropertySourceImpl extends ObservableBase> implements PropertySource { [HKT]: PropertySource; _L: TypeBitfield; observableType(): "PropertySource"; private _started; private _subscribed; private _get; onChange_: Subscribe; get(): V; constructor(desc: Desc, get: () => V, onChange: Subscribe); onChange(onValue: Observer, onEnd?: Observer): Unsub; subscribe(onValue: Observer, onEnd?: Observer): Unsub; applyScope(scope: Scope): Property; }