import type { AnyObject, DraftMeta, IApiCtx, ObjectLike, RootCtx } from '../inner-types'; export declare const ROOT_CTX: RootCtx; export declare function markModified(meta: DraftMeta): void; export declare function getKeyPath(draftNode: any, curKey: string, apiCtx: IApiCtx): string[]; export declare function newMeta(key: any, baseData: any, options: AnyObject & { parentMeta: DraftMeta; }): DraftMeta>; /** * 是否是一个当前版本对应的草稿对象代理节点 */ export declare function isDraft(mayDraft: any): boolean; export declare function getNextMetaLevel(mayContainMetaObj: any, apiCtx: IApiCtx): number; export declare function getSafeDraftMeta(proxyDraft: T, apiCtx: IApiCtx): DraftMeta; export declare function getDraftMetaByCtx(mayProxyDraft: any, apiCtx: IApiCtx): DraftMeta | null; export declare function getDraftMeta(mayProxyDraft: any): DraftMeta | null; export declare function getMetaVer(mayDraftProxy: any): string; export declare function getApiCtx(mayDraftProxy: any): IApiCtx | null; export declare function getDraftProxyMeta(mayDraftProxy: any): DraftMeta>; /** * 判断两个值是否相同,true 表示不相等,false 表示相等 */ export declare function isDiff(val1: any, val2: any): boolean; /** * 浅比较两个对象,除了专用于比较 helux 生成的代理对象,此函数还可以比较普通对象 * ```txt * true:两个对象一样 * false:两个对象不一样 * ``` */ export declare function shallowCompare(prevObj: AnyObject, nextObj: AnyObject, compareLimuProxyRaw?: boolean): boolean; /** * 内部调用,相信 proxyData 是 limu 产生的代理数据 */ export declare function getPrivateMeta(proxyData: any): DraftMeta; export declare function replaceMetaPartial(oldMeta: any, newMeta: any, key: any): void; export declare function getSourceId(rawData: any): string; export declare function setSourceId(rawData: any, sourceId: string): WeakMap; export declare function getMultiRefPathsDict(sourceId: any): Record | undefined; export declare function setMultiRefPaths(sourceId: string, key: string, paths: string[][]): void; export declare function getMultiRefPathsByKey(sourceId: string, key: string): string[][]; export declare function getMultiRefPaths(sourceId: string): Array; export declare function clearMultiRefData(sourceId: string, toClearIdxList: number[], toClearKeyStrList: string[]): void; export declare function resetMultiRefData(sourceId: string, keyPathsList: string[][][], keyStr2KeyPathsDict: Record): void; export declare function recordMultiRefData(meta: DraftMeta, keyStrs: string[]): void; /** * 将某个草稿对象(代理对象)赋值到另一个地方,例如: draft.current = draft.list[0]; * 将重建路径连接关系 */ export declare function mayRelinkPath(key: string, parentMeta: DraftMeta, valueMeta: DraftMeta | null): any;