import type { ModuleAction, ModuleDefinition } from '../types/index.js'; export declare function deepClone(value: T): T; /** * 深度合并:以 `patch` 覆盖 `base`,返回新对象,不修改任何入参。 * * - 仅当两侧同为普通对象时递归合并;其余情况(含数组)由 `patch` 整体替换。 * - `patch` 中值为 `undefined` 的键会被跳过,因此扩展方只需给出待修改的字段。 * - 未被 `patch` 触及的嵌套值沿用 `base` 的引用(外层会重新深冻结,引用本就不可变)。 */ export declare function deepMerge(base: T, patch: unknown): T; export declare function cloneBuiltinModules(): ModuleDefinition[]; export declare function deepFreeze(value: T): T; /** * 按 {@link ModuleAction.type} 就地补齐省略的 `method` / `resultType`。 * * 已显式声明的字段保持不变;当 `type` 无法推导出对应默认值时抛错,提示显式指定。 * * @throws {ZentaoError} `E_INDETERMINATE_ACTION_METHOD` / `E_INDETERMINATE_ACTION_RESULT_TYPE` */ export declare function normalizeAction(action: ModuleAction): ModuleAction; export declare function freezeAction(action: ModuleAction): ModuleAction; export declare function freezeModule(module: ModuleDefinition): ModuleDefinition; export declare function freezeModules(source: ModuleDefinition[]): ModuleDefinition[]; export declare function findActionIndex(source: readonly ModuleAction[], actionName: string): number; export declare function mergeActions(base: readonly ModuleAction[], extension: readonly ModuleAction[]): ModuleAction[]; export declare function mergeModule(base: ModuleDefinition, extension: ModuleDefinition): ModuleDefinition; export declare function buildModuleMap(source: readonly ModuleDefinition[]): Map; export declare function validateModule(module: ModuleDefinition): void; export declare function validateAction(action: ModuleAction): void; /** 当前运行时注册表中的模块数组(define 侧原地修改,query 侧只读)。 */ export declare function getModulesState(): ModuleDefinition[]; /** 当前模块名(小写)到模块定义的查找表(O(1) 查询)。 */ export declare function getModuleMapState(): Map; /** 依据当前 modules 重建 moduleMap。所有写入完成后调用以保持二者一致。 */ export declare function rebuildModuleMap(): void; /** 注册「重置后钩子」,在每次 {@link resetState} 还原内置基线后调用。 */ export declare function setPostResetHook(hook: (() => void) | undefined): void; /** 将注册表重置为内置模块(深克隆 + 深冻结),重建查找表,并触发重置后钩子。 */ export declare function resetState(): void;