import { ResolvedVrtConfig } from "../types.mjs"; //#region src/node/plan.d.ts type VrtPlan = { /** What the user asked for. */ requested: 'full' | 'changed'; /** What will actually happen (a changed request can escalate to full). */ mode: 'full' | 'changed'; /** Symbolic base ref the user passed (`--changed `), if any. */ ref: string | null; /** Resolved SHA passed to `vitest --changed`; null for a bare/full run. */ diffAgainst: string | null; /** Repo-root-relative changed files considered (empty for a plain full run). */ changedFiles: string[]; /** Set when a changed file matched a fullRunTriggers glob. */ escalation: { file: string; trigger: string; } | null; /** Tripped when git cannot produce a trustworthy changeset (V2 guard). */ guard: { tripped: boolean; message: string | null; }; /** Extra args `svrt run` appends to the Vitest invocation. */ vitestArgs: string[]; /** One-line human explanation of the decision. */ reason: string; }; /** * Returns the first fullRunTriggers glob a changed file matches, testing both * the repo-root-relative path (as git reports it) and the package-relative * form, so a monorepo user can write `src/tokens/**` against a package that * lives at `packages/app`. */ declare function matchFullRunTrigger(file: string, triggers: string[], packagePrefix: string): { file: string; trigger: string; } | null; type PlanInput = { changed: boolean; base?: string | undefined; }; /** * Decides how a run should behave. A `--changed` request falls back to a full * run — never a silent green — when git cannot be trusted (not a repo, unknown * ref, no merge-base) or when a changed file matches a fullRunTriggers glob. */ declare function computePlan(config: ResolvedVrtConfig, input: PlanInput): VrtPlan; //#endregion export { PlanInput, VrtPlan, computePlan, matchFullRunTrigger };