/** * The words a ComplianceIssue status is shown with — the one home for that * copy. `../complianceIssue` owns the vocabulary's meaning * (`COMPLIANCE_ISSUE_STATUSES`); this table renders it, and every surface * that prints a status — the webapp's badges, panels, digest and export, the * CLI's create-time consent note — takes the words from here, so two clients * cannot disagree on a sentence. Client-safe. * * Three renderings per status, because they do not collapse into one (alert * policy design § 13.11 (e)): the badge is a single capitalised word beside * a finding; the clause is a predicate that reads after "is" and after a * count ("this finding is expected at this stage", "3 expected at this * stage"); the heading is what a lane's rows sit under on the asset panel, * the lane digest and the CSV export. The two machine lanes never share a * word (ruled). A full `Record` over the vocabulary, so a status added to * it fails here at typecheck, at the one place its copy is authored. */ import { type ComplianceIssueStatus } from "../complianceIssue.js"; export interface IssueStatusLabels { /** One capitalised word, the badge beside a finding. */ badge: string; /** Lower-case predicate: reads after "is" and after a count. */ clause: string; /** * The heading a lane's rows sit under on the asset panel and the digest, * and the export's count column for that lane. `null` for `open`: its rows * are the work band and sit under no heading. (A verifying row joins that * band on the panel — the band is the scoring set, the webapp's * `issue-display-groups` — yet keeps a heading for its export column.) */ heading: string | null; } export declare const ISSUE_STATUS_LABELS: { readonly open: { readonly badge: "Open"; readonly clause: "open"; readonly heading: null; }; readonly acknowledged: { readonly badge: "Acknowledged"; readonly clause: "acknowledged"; readonly heading: "Acknowledged"; }; readonly pending_verification: { readonly badge: "Verifying"; readonly clause: "awaiting verification"; readonly heading: "Awaiting verification"; }; readonly resolved: { readonly badge: "Resolved"; readonly clause: "resolved"; readonly heading: "Resolved"; }; readonly suppressed: { readonly badge: "Suppressed"; readonly clause: "suppressed"; readonly heading: "Suppressed"; }; readonly expected: { readonly badge: "Expected"; readonly clause: "expected at this stage"; readonly heading: "Expected at this stage"; }; readonly mitigated: { readonly badge: "Mitigated"; readonly clause: "mitigated"; readonly heading: "Mitigated"; }; }; /** * The clause of a stored status, for a message that names the state a row * is in. A stored value outside the vocabulary is a later writer's: it is * shown quoted as the token it is, never dressed as one of ours. */ export declare function storedStatusClause(status: string): string; /** `"N "` — the count clause every conformance figure's sublabel is built from. */ export declare function countClause(count: number, status: ComplianceIssueStatus): string; /** * The statuses' clauses as one list in vocabulary order — "a, b or c" — * whatever order the caller holds them in, so a sentence derived from a * policy set reads the same as the set's own declaration order changes. */ export declare function listStatusClauses(statuses: readonly ComplianceIssueStatus[]): string;