export interface TemplateIO { out: (message: string) => void; err: (message: string) => void; } export interface TemplateProvenance { template?: string; frameworkSkills?: string; templateRef?: string; templateSource?: "github" | "bundled" | "local-checkout"; coreVersion?: string; shape?: "workspace" | "standalone"; } export interface AppTarget { appDir: string; appName: string; shape: "workspace" | "standalone"; workspaceRoot?: string; workspaceCoreName?: string; provenance: TemplateProvenance; } export interface MaterializeOptions { appName: string; template: string; /** Git ref to fetch from, or null to use the bundled/local template copy. */ ref: string | null; shape: "workspace" | "standalone"; workspaceRoot?: string; workspaceCoreName?: string; destDir?: string; } export interface MaterializeResult { dir: string; ref: string; source: "github" | "bundled" | "local-checkout"; } export interface TemplateMergeResult { added: string[]; updated: string[]; deleted: string[]; conflicted: string[]; manual: string[]; keptLocal: string[]; } /** * Reproduce, in a temp directory, the exact bytes `create` would have written * for this (template, ref, app name, shape, workspace scope). */ export declare function materializeTemplate(opts: MaterializeOptions): Promise; export declare function isMergeExcluded(rel: string): boolean; export declare function listMergeableFiles(root: string): Set; export declare function mergeTemplateTrees(appDir: string, baseDir: string, theirsDir: string, options?: { dryRun?: boolean; }): TemplateMergeResult; export declare function readProvenance(appDir: string): TemplateProvenance; export declare function resolveTargets(cwd: string, appArg?: string): AppTarget[]; export declare function runTemplate(args: string[], io?: TemplateIO): Promise; //# sourceMappingURL=template-sync.d.ts.map