import type { LLMClient } from "../providers/types.js"; import type { BoberConfig } from "../config/schema.js"; import type { SeoFinding } from "./types.js"; export interface SeoVerifyParams { /** The citation gate's `cited` findings — the ONLY findings the verifier ever sees. */ findings: SeoFinding[]; config: BoberConfig; projectRoot: string; /** Injected wall-clock snapshot (ISO-8601) — the verifier never reads the clock itself. */ now: string; /** TEST injection — default = a real client via `createClient(...)`. Tests pass a ScriptedClient. */ llm?: LLMClient; } export interface SeoVerifyResult { /** False on disabled/parse-failure/provider-error (fail-closed) — `findings` is then the UNCHANGED input. */ ran: boolean; findings: SeoFinding[]; } /** Injectable seam so `runner.test.ts` can stub the stage (mirrors `SeoRunInput.analyzer`). */ export interface SeoVerifier { verify(params: SeoVerifyParams): Promise; } export declare class SeoRecommendationVerifier implements SeoVerifier { /** * Never throws. Resolves `{ ran:false, findings }` (input UNCHANGED) when * disabled, when the agent md can't be loaded, on any provider/transport * error, or when the response can't be parsed into a valid verdicts * container. Resolves `{ ran:true, findings: }` on a successful, * parseable response — always a subset of the input with severities only * moving down. */ verify(params: SeoVerifyParams): Promise; } //# sourceMappingURL=verifier.d.ts.map