import { AnyDataModel } from "../dataModel/BaseDataModel";
import { AnyModel } from "../model/BaseModel";
import { ModelClass, ModelData } from "./BaseModelShared";
import { AnyModelProp, ModelProps } from "./prop";
export declare function createModelPropDescriptor(modelPropName: string, modelProp: AnyModelProp | undefined, enumerable: boolean): PropertyDescriptor;
export declare function getModelInstanceDataField<M extends AnyModel | AnyDataModel>(model: M, _modelProp: AnyModelProp | undefined, modelPropName: keyof ModelData<M>): ModelData<M>[typeof modelPropName];
export declare function setModelInstanceDataField<M extends AnyModel | AnyDataModel>(model: M, modelProp: AnyModelProp | undefined, modelPropName: keyof ModelData<M>, value: ModelData<M>[typeof modelPropName]): void;
export declare function sharedInternalModel<TProps extends ModelProps, TBaseModel extends AnyModel | AnyDataModel>({ modelProps, baseModel, type, valueType, }: {
    modelProps: TProps;
    baseModel: ModelClass<TBaseModel> | undefined;
    type: "class" | "data";
    valueType: boolean;
}): any;
