import { Observable } from 'rxjs'; export declare type IProps = any> = { [P in keyof T]: T[P]; }; export declare type IObservableProps

= any> = IProps

& { readonly $: { readonly dispose$: Observable; readonly events$: Observable; }; readonly changing$: Observable>; readonly changed$: Observable>; readonly isDisposed: boolean; dispose(): void; toObject(): IProps

; }; export declare type PropEvent = IPropGettingEvent | IPropGetEvent | IPropChangingEvent | IPropChangedEvent; export declare type IPropGettingEvent

= { type: 'PROP/getting'; payload: IPropGetting

; }; export declare type IPropGetting

= { key: keyof P; value: P[keyof P]; isModified: boolean; modify(value: P[keyof P]): void; }; export declare type IPropGetEvent

= { type: 'PROP/get'; payload: IPropGet

; }; export declare type IPropGet

= { key: keyof P; value: P[keyof P]; }; export declare type IPropChangingEvent

= { type: 'PROP/setting'; payload: IPropChanging

; }; export declare type IPropChanging

= { key: keyof P; value: { from: P[keyof P]; to: P[keyof P]; }; isCancelled: boolean; cancel(): void; }; export declare type IPropChangedEvent

= { type: 'PROP/set'; payload: IPropChanged

; }; export declare type IPropChanged

= { key: keyof P; value: { from: P[keyof P]; to: P[keyof P]; }; };