import type { BoberConfig } from "../../config/schema.js"; import { SeoReportStore } from "../report-store.js"; import type { SeoFindingSink } from "../hub-emitter.js"; import { SeoBuilder } from "./seo-builder.js"; import type { ApprovedFinding } from "./approved-finding.js"; import type { SeoDraft } from "./draft-types.js"; import { SeoDraftStore } from "./draft-store.js"; export type SeoBuildRunInput = { projectRoot: string; config: BoberConfig; reportId: string; /** ISO timestamp, stamped ONCE by the `seo build` CLI action. */ now: string; /** Default = `new SeoReportStore()`. */ reportStore?: SeoReportStore; /** Default = `new SeoDraftStore()`. */ draftStore?: SeoDraftStore; /** Default = `new SeoBuilder(new NeverEncodeFilter())`. */ builder?: SeoBuilder; /** Default = open a real `FactStore` + `readApprovedSeoFindings`. */ readApproved?: (projectRoot: string) => Promise; /** Default binds `ingestFinding` to a real `FactStore`. */ findingSink?: SeoFindingSink; }; export type SeoBuildRunOutcome = { drafts?: SeoDraft[]; skipped?: number; exitCode: 0 | 2; }; export declare class SeoBuildRunner { /** * Run one `seo build ` invocation end-to-end. NEVER throws: * every fallible step (report read, approved-findings read, build, * persist) is wrapped in one top-level try/catch -> `exitCode: 2`. An * unknown reportId or a report with no approved findings is a CLEAN * `exitCode: 0` with an informational stdout message and ZERO hub emits * (sc-13-4) — `2` is reserved for a caught unexpected error. */ run(input: SeoBuildRunInput): Promise; } //# sourceMappingURL=build-runner.d.ts.map