Const metadata
metadata: IModelType<object, object & object, _NotCustomized, _NotCustomized> = types.model('Metadata', {error: types.maybeNull(types.string),isHydrating: types.optional(types.boolean, false),isLoading: types.optional(types.boolean, false),status: types.optional(types.integer, Status.PENDING)}).volatile(() => ({hasHydrated: false})).views(self => ({get isDirty(): boolean {// ephemeral value doesn't match persisted one - model is dirtyconst { value } = getParent(self);const { persistedValue } = getParent(self);return (persistedValue &&value &&JSON.stringify(value) !== JSON.stringify(persistedValue));},get hasError(): boolean {return !!self.error;}}))