import { type INotifyPropertiesChanged } from '../viewModels'; /** * Represents a view model type. * @template TViewModel The type of view model. * @template TConstructorArgs The constructor parameter types, defaults to an empty tuple. */ export type ViewModelType = { new (...constructorArgs: TConstructorArgs): TViewModel; }; /** * Watches the given view model for property changes. * @template TViewModel The type of view model. * @param viewModel The view model to watch. * @returns Returns the provided view model instance. */ export declare function useViewModel(viewModel: TViewModel): TViewModel; /** * Creates a new instance of a view model of the given type and watches for property changes. * @template TViewModel The type of view model. * @param viewModelType The view model class declaration to instantiate. * @returns Returns the created view model instance. */ export declare function useViewModel(viewModelType: ViewModelType): TViewModel; /** * Creates a new instance of a view model of the given type and watches for property changes, constructor arguments act as dependencies. * @template TViewModel The type of view model. * @template TConstructorArgs The constructor parameter types. * @param viewModelType The view model class declaration to instantiate. * @param constructorArgs The constructor arguments used for initialization, whenever these change a new instance is created. * @returns Returns the created view model instance. */ export declare function useViewModel(viewModelType: ViewModelType, constructorArgs: TConstructorArgs): TViewModel;