/** * Core logic for `qfg init`. * * Uses a plan/execute pattern so --dry-run can show what *would* happen * without writing anything. */ export interface InitOptions { dir: string; dryRun: boolean; /** true = force include samples, false = force skip, undefined = auto-detect */ samples: boolean | undefined; } export type ActionKind = 'git-init' | 'create-dir' | 'write-file' | 'skip-file' | 'create-hook' | 'update-hook' | 'skip-hook'; export interface InitAction { description: string; kind: ActionKind; path: string; } export interface InitPlan { actions: InitAction[]; isFirstTime: boolean; samplesIncluded: boolean; } export declare function planInit(options: InitOptions): InitPlan; export declare function executeInit(plan: InitPlan, dir: string): void;