/** * Setup plan — read-only facts collector + the pinned, versioned setup contract. * * buildSetupPlan() is pure over its injected inputs: no direct process.env/fs * reads for config data, no writes, no prompts. Everything downstream (apply, * undo, the TTY wizard, agents) consumes the object this returns, so its shape * (schemaVersion, facts, decisions, recommended, risk, proposedWrites) and the * decisionId registry below are a stable contract — do not rename IDs or add a * parallel run-mode field without updating every consumer. */ import type { BuildSetupPlanParams, DecisionTarget, SetupPlan } from './setup-plan-types'; declare function isConsumedPath(scope: string, targetPath: string): boolean; declare function resolveDecisionPath(decisionId: string): DecisionTarget | null; declare function getNestedValue(source: unknown, pathStr: string): unknown; declare function domainFor(decisionId: string): string; /** * Build the pinned, versioned setup contract. Pure over injected inputs — * performs only cheap, read-only detection (no writes, no prompts). */ declare function buildSetupPlan({ cwd, settings, repoSettings, env, deps, }?: BuildSetupPlanParams): SetupPlan; declare const _default: { buildSetupPlan: typeof buildSetupPlan; resolveDecisionPath: typeof resolveDecisionPath; domainFor: typeof domainFor; DECISION_PATHS: Record; getNestedValue: typeof getNestedValue; isConsumedPath: typeof isConsumedPath; CONSUMED_PATHS: Set; }; export = _default;