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

44 lines (43 loc) 1.5 kB
import type { AnyModel } from "../model/BaseModel"; import type { ModelClass } 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 model. The type referenced in the model decorator will be used for type checking. * * Example: * ```ts * const someModelType = types.model(SomeModel) * // or for recursive models * const someModelType = types.model<SomeModel>(() => SomeModel) * ``` * * @typeparam M Model type. * @param modelClass Model class. * @returns */ export declare function typesModel<M = never, K = M>(modelClass: _ClassOrObject<M, K>): IdentityType<K extends M ? M : K>; /** * `types.model` type info for a model props. */ export interface ModelTypeInfoProps { readonly [propName: string]: Readonly<{ type: AnyStandardType | undefined; typeInfo: TypeInfo | undefined; hasDefault: boolean; default: any; }>; } /** * `types.model` type info. */ export declare class ModelTypeInfo extends TypeInfo { readonly modelClass: ModelClass<AnyModel>; private _props; get props(): ModelTypeInfoProps; get modelType(): string; constructor(thisType: AnyStandardType, modelClass: ModelClass<AnyModel>); } export {};