import { AddBlockResult } from "@outfitter/tooling"; /** * Unified placeholder values for template substitution. */ interface PlaceholderValues { readonly author: string; readonly binName: string; readonly description: string; readonly name: string; readonly packageName: string; readonly projectName: string; readonly version: string; readonly year: string; } /** * A single change operation in a scaffold plan. */ type ScaffoldChange = { readonly type: "copy-preset"; readonly preset: string; readonly targetDir: string; readonly includeTooling: boolean; readonly overlayBaseTemplate: boolean; } | { readonly type: "copy-example-overlay"; readonly preset: string; readonly targetDir: string; } | { readonly type: "inject-shared-config"; } | { readonly type: "rewrite-local-dependencies"; readonly mode: "workspace"; } | { readonly type: "add-blocks"; readonly blocks: readonly string[]; }; /** * A complete scaffold plan. */ interface ScaffoldPlan { readonly changes: readonly ScaffoldChange[]; readonly values: PlaceholderValues; } /** * Result of executing a scaffold plan. */ interface ScaffoldResult { readonly blocksAdded?: AddBlockResult | undefined; readonly projectDir: string; } /** * Dry-run collector support. */ interface EngineCollector { add(op: unknown): void; } /** * Shared options used by engine functions. */ interface EngineOptions { readonly collector?: EngineCollector | undefined; readonly force: boolean; } /** * Unified error type for engine operations. */ declare class ScaffoldError extends Error { readonly _tag: "ScaffoldError"; constructor(message: string); } export { PlaceholderValues, ScaffoldChange, ScaffoldPlan, ScaffoldResult, EngineCollector, EngineOptions, ScaffoldError };