UNPKG

mobx-keystone-mindreframer

Version:

A MobX powered state management solution based on data trees with first class support for Typescript, snapshots, patches and much more

45 lines (44 loc) 1.72 kB
import type { AnyDataModel } from "../dataModel/BaseDataModel"; import type { ModelClass, ModelData } from "../modelShared/BaseModelShared"; import type { AnyStandardType, IdentityType } from "./schemas"; import { TypeInfo } from "./TypeChecker"; declare type _Class<T> = abstract new (...args: any[]) => T; declare type _ClassOrObject<M, K> = K extends M ? object : _Class<K> | (() => _Class<K>); /** * A type that represents a data model data. * The type referenced in the model decorator will be used for type checking. * * Example: * ```ts * const someDataModelDataType = types.dataModelData(SomeModel) * // or for recursive models * const someDataModelDataType = types.dataModelData<SomeModel>(() => SomeModel) * ``` * * @typeparam M Data model type. * @param modelClass Model class. * @returns */ export declare function typesDataModelData<M = never, K = M>(modelClass: _ClassOrObject<M, K>): IdentityType<ModelData<K extends M ? (M extends AnyDataModel ? M : never) : (K extends AnyDataModel ? K : never)>>; /** * `types.dataModelData` type info for a model props. */ export interface DataModelDataTypeInfoProps { readonly [propName: string]: Readonly<{ type: AnyStandardType | undefined; typeInfo: TypeInfo | undefined; hasDefault: boolean; default: any; }>; } /** * `types.dataModelData` type info. */ export declare class DataModelDataTypeInfo extends TypeInfo { readonly modelClass: ModelClass<AnyDataModel>; private _props; get props(): DataModelDataTypeInfoProps; get modelType(): string; constructor(thisType: AnyStandardType, modelClass: ModelClass<AnyDataModel>); } export {};