import { DisposableViewModel } from '../../disposable'; import { EventManager } from '../../eventManager'; import { IModel, IViewModel } from '../models/interfaces.model'; export declare const ViewModelChangedEvent = "viewModelChanged"; type ViewModelChangedEventArgs = { propertyName: string | number; oldValue: any; newValue: any; }; type ViewModelEvents = { 'viewModelChanged': ViewModelChangedEventArgs; }; export type EventManagerHolder = T & { _viewModelEvents: EventManager; }; export type ViewModelGenerator = { createDefaultModel(model: IModel): ViewModelGenerator; generateProperty(propertyName: K, value?: T[K], suppressViewModelNotification?: boolean): ViewModelGenerator; configureProperty(propertyName: K, configure: (property: T[K]) => void): ViewModelGenerator; getViewModel(): T; }; export type ValueStorageFactory = (initialValue: any) => { getValue: () => any; setValue: (value: any) => void; explicitNotifySubscribers: () => void; }; export declare class ViewModel extends DisposableViewModel implements IViewModel { private _model; constructor(_model: any); getModel(): any; } export declare const viewModelGeneratorSettings: { customValueStorageFactory: ValueStorageFactory; ensureChangesImmutable: boolean; addTestFlag: boolean; }; export declare const createViewModelGenerator: (_viewModel?: Partial) => ViewModelGenerator; export {};