import { interfaces } from "inversify"; import IObjectContainer from "../ioc/IObjectContainer"; import ViewModelContext from "../registry/ViewModelContext"; import IViewModel from "./IViewModel"; import { ObservableController, ObservableControllerFactory } from "../observable/ObservableController"; export interface IViewModelFactory { create>(context: ViewModelContext, construct: interfaces.Newable, factory: ObservableControllerFactory): T; } export interface IViewModelFactoryExtender { extend(viewmodel: T, context: ViewModelContext, source: ObservableController): any; } export declare class ViewModelFactory implements IViewModelFactory { private container; private extenders; constructor(container: IObjectContainer, extenders?: IViewModelFactoryExtender[]); create>(context: ViewModelContext, construct: interfaces.Newable, factory: ObservableControllerFactory): T; }