/** * Statement 多文件分离辅助工具函数 */ import { EnhancedStatement, TargetFile } from '../types/statements'; /** * 导入信息结构 */ export interface ImportSpec { defaultImport: string | null; namespaceImport: string | null; namedImports: Set; } /** * 内部依赖映射类型 * targetFile -> Map> */ export type InternalDepsMap = Map>>; /** * 根据 statement 特性推断 targetFile * * 规则: * 1. 如果有明确指定的 targetFile,使用它 * 2. 如果有 category,根据 category 推断 * 3. 否则默认使用 index.tsx * * 注意:private 字段控制的是代码在文件内的位置(组件内部 vs 模块级别), * 而不是决定放到哪个文件。没有 targetFile 的 statement 默认都放在 index.tsx。 * * @param stmt - 增强的 statement * @returns 推断的目标文件 */ export declare function inferTargetFile(stmt: EnhancedStatement): TargetFile; /** * 分析 statements 的跨文件依赖关系 * 根据 internalRefs 和 references 字段确定哪些文件需要从其他文件导入什么 * * @param statements - 增强的 statement 列表 * @returns 内部依赖映射 */ export declare function analyzeInternalDependencies(statements: EnhancedStatement[]): InternalDepsMap; /** * 根据 internalRefs 自动推断需要导出的 statements * 如果一个 statement 被其他文件的 statement 引用,则需要导出 * * @param statements - 增强的 statement 列表 * @returns 需要导出的 statement id 集合 */ export declare function inferExportedStatements(statements: EnhancedStatement[]): Set; /** * 生成内部导入语句 * * @param fromFile - 源文件路径 * @param importNames - 要导入的名称列表 * @returns 导入语句字符串 */ export declare function generateInternalImportStatement(fromFile: TargetFile, importNames: string[]): string; /** * 按 targetFile 分组 statements * 使用 inferTargetFile 推断目标文件(考虑 private 字段) * * @param statements - 增强的 statement 列表 * @returns 按目标文件分组的 Map */ export declare function groupStatementsByTargetFile(statements: EnhancedStatement[]): Map; /** * 收集一组 statements 的外部依赖 * * @param statements - 增强的 statement 列表 * @returns 外部依赖映射 */ export declare function collectExternalDependencies(statements: EnhancedStatement[]): Record; /** * 生成外部导入语句 * * @param imports - 外部依赖映射 * @returns 导入语句字符串 */ export declare function generateExternalImportStatements(imports: Record): string; /** * 为代码添加 export 关键字 * 支持 const/let/var/function/class/async function 声明 * * @param source - 源代码,可以是字符串或字符串数组 * @returns 添加了 export 的代码,类型与输入保持一致 */ export declare function addExportKeyword(source: string | string[]): string | string[];