import { IDisposable, DisposableStore } from "@vscode/observables"; import { Context } from "react"; import { IPropertyTransformerFactory } from "./IPropertyTransformer"; export declare const ViewModelContextSymbol: unique symbol; export type PropsDesc = Record>; export type PropsIn = { [K in keyof T]: T[K] extends IPropertyTransformerFactory ? U : never; }; export type PropsOut = { [K in keyof T]: T[K] extends IPropertyTransformerFactory ? U : never; }; export declare class BaseViewModel implements IDisposable { protected readonly props: TProps; protected _store: DisposableStore; constructor(props: TProps); dispose(): void; } export type ViewModelClass = { new (arg: PropsOut): BaseViewModel>; _props: TProps; [ViewModelContextSymbol]?: Context; }; /** Get or create the context for a ViewModel class */ export declare function getOrCreateViewModelContext(ctor: { [ViewModelContextSymbol]?: Context; }): Context; /** * Creates a ViewModel class with typed props. * Use this as a base class for your ViewModels. */ export declare function ViewModel(): ViewModelClass<{}>; export declare function ViewModel(props: T): ViewModelClass; //# sourceMappingURL=viewModel.d.ts.map