import { type CheckType, type Rubric, type Rule, type RuleStatus } from "oh-my-plumb-schema"; import { type SourceCandidate } from "./sources.js"; export type RubricRead = { kind: "missing"; path: string; } | { kind: "invalid"; path: string; issues: string[]; } | { kind: "ok"; path: string; rubric: Rubric; }; export declare const readRubric: (file: string) => RubricRead; export declare const writeRubric: (file: string, rubric: Rubric) => void; /** Hashes every source and settles on one spelling for each path, in sources and in rules. */ export declare const fillSourceShas: (rubric: Rubric, root: string, mcp?: readonly SourceCandidate[]) => { rubric: Rubric; missing: string[]; }; export type MergedRule = Rule & { origin: "project" | "global"; }; /** Project rules win on an id clash. */ export declare const mergeRules: (project: Rubric | undefined, global: Rubric | undefined) => MergedRule[]; export type BucketCounts = Record & { total: number; byStatus: Record; }; export declare const bucketCounts: (rules: readonly Rule[]) => BucketCounts; //# sourceMappingURL=rubricFile.d.ts.map