import type { ResolvedDirection } from "@design-parity/core"; import type { MaturityResult } from "./detect.js"; import type { DiscoveredComponent } from "./seed.js"; /** One file the plan would write. */ export interface PlannedArtifact { /** Repo-relative path. */ path: string; /** One-line human description for the CLI summary. */ description: string; /** Serialized contents (pretty JSON, trailing newline). */ contents: string; /** True if a file already exists at `path` (apply skips it unless forced). */ exists: boolean; } export interface BootstrapPlan { repoRoot: string; maturity: MaturityResult; /** Concrete direction materialized into the config — never `auto`. */ direction: ResolvedDirection; /** Convention-discovered components to wire to a design source (rung 3). */ review: DiscoveredComponent[]; artifacts: PlannedArtifact[]; /** * Non-blocking Compose Multiplatform promotion (Principle 6). Present only * when the repo is *not* CMP-capable; `undefined` when it already is. Advisory * surface text — never a gate, never an artifact. */ cmpSuggestion?: string; } export interface PlanOptions { /** Override the materialized direction (e.g. the user picked design-led). */ direction?: ResolvedDirection; /** Inject a maturity result instead of scanning (testing / re-runs). */ maturity?: MaturityResult; } /** * Decide which committed artifacts a repo needs. Every rung gets a concrete * parity direction; only rung 3 (no design system) is bootstrapped with a token * baseline, a starter design-map, and a check config. * * @throws if the seeded design-map fails its own schema (a build-time bug). */ export declare function planBootstrap(repoRoot: string, opts?: PlanOptions): Promise; export interface ApplyOptions { /** Overwrite artifacts that already exist. Default: skip them. */ force?: boolean; } export interface ApplyResult { /** Repo-relative paths written. */ written: string[]; /** Repo-relative paths skipped because they already existed. */ skipped: string[]; } /** * Write a plan's artifacts to disk. Existing files are left untouched unless * `force` is set, so a re-run never clobbers a human's edits by surprise. */ export declare function applyBootstrap(plan: BootstrapPlan, opts?: ApplyOptions): Promise; //# sourceMappingURL=bootstrap.d.ts.map