import type { Board, Job } from "./model.js"; /** Artifact handoffs do not imply a start rule. An omitted rule remains unknown. */ export type Prerequisites = { kind: "all"; inputs: string[]; } | { kind: "any"; inputs: string[]; } | { kind: "unknown"; inputs: string[]; } | { kind: "conditional"; inputs: string[]; condition: string; }; export interface PrerequisiteContext { board?: Pick; job?: Pick; } /** Validate explicit declarations at ingestion, optionally checking their references. */ export declare function validatePrerequisites(value: unknown, context?: PrerequisiteContext): Prerequisites; export interface PrerequisiteAssessment { status: "ready" | "waiting" | "unresolved"; reasons: string[]; /** Unavailable declared artifacts; for any, these are alternatives, not all required. */ missingInputs: string[]; } /** * Evaluate only the declared rule. A conditional rule requires all listed inputs * and a true named condition. A missing condition is unresolved; false is waiting. * Explicit all with no inputs permits a start; absence of a rule never does. */ export declare function assessPrerequisites(prerequisites: Prerequisites | undefined, availableArtifactIds: Iterable, conditions?: Readonly>): PrerequisiteAssessment;