import { NotifyPropertyChangedType } from '../../notify/notifyPropertyChangedSymbol'; import { Observable, OperatorFunction } from 'rxjs'; import { IChangeSet } from '../IChangeSet'; /** * Observes property changes for the specified property, starting with the current value * @param value The source * @param key The key to observe * @param notifyInitial If true the resulting observable includes the initial value * @param fallbackValue A fallback value may be specified to ensure a notification is received when a value is unobtainable. * For example when observing Parent.Child.Age, if Child == null the value is unobtainable as Age is a struct and cannot be set to Null. * For an object like Parent.Child.Sibling, sibling is an object so if Child == null, the value null and obtainable and is returned as null. */ export declare function whenPropertyChanged(value: NotifyPropertyChangedType, key: TProperty, notifyInitial?: boolean, fallbackValue?: () => TObject[TProperty]): Observable; /** * Watches each item in the collection and notifies when any of them has changed * @typeparam TObject The type of the object. * @typeparam TKey The type of the key. * @typeparam TValue The type of the value. * @param key The key to watch * @param notifyInitial if set to true [notify on initial value]. */ export declare function whenPropertyChanged(key: TProperty, notifyInitial?: boolean): OperatorFunction, TProperty>, TObject[TProperty]>;