import { AbstractModelClass, ModelCreationData, ModelUntransformedCreationData } from '../modelShared/BaseModelShared'; import { ModelProps, ModelPropsToSetter, ModelPropsToTransformedCreationData, ModelPropsToTransformedData, ModelPropsToUntransformedCreationData } from '../modelShared/prop'; import { AnyDataModel, BaseDataModel, BaseDataModelKeys } from './BaseDataModel'; export type _ComposedData = SuperModel extends AnyDataModel ? (ModelPropsToUntransformedCreationData & ModelUntransformedCreationData) | (ModelPropsToTransformedCreationData & ModelCreationData) : ModelPropsToUntransformedCreationData | ModelPropsToTransformedCreationData; export interface _DataModel { new (data: _ComposedData): SuperModel & BaseDataModel & Omit, BaseDataModelKeys> & ModelPropsToSetter; } /** * Base abstract class for data models that extends another model. * * @template TProps New model properties type. * @template TModel Model type. * @param genFn Function that returns the base model and model properties. * @returns */ export declare function ExtendedDataModel(genFn: (...args: A) => { baseModel: AbstractModelClass; props: TProps; }): _DataModel; /** * Base abstract class for data models that extends another model. * * @template TProps New model properties type. * @template TModel Model type. * @param baseModel Base model type. * @param modelProps Model properties. * @returns */ export declare function ExtendedDataModel(baseModel: AbstractModelClass, modelProps: TProps): _DataModel; /** * Base abstract class for data models. * * Never override the constructor, use `onLazyInit` or `onLazyAttachedToRootStore` instead. * * @template TProps Model properties type. * @param fnModelProps Function that generates model properties. */ export declare function DataModel(fnModelProps: (...args: A) => TProps): _DataModel; /** * Base abstract class for data models. * * Never override the constructor, use `onLazyInit` or `onLazyAttachedToRootStore` instead. * * @template TProps Model properties type. * @param modelProps Model properties. */ export declare function DataModel(modelProps: TProps): _DataModel;