/** Strip content that must never count as facts: fenced code blocks, inline * code spans, and URLs (query strings and paths are full of `:`/digits). */ export declare function stripNonProse(body: string): string; /** Deterministic prose gate on a PR/issue body — pure string checks, no AI. * Returns one message per problem (empty array = clean). * * Flags exactly one shape (issue #196): a body that is PURE prose while ≥3 * parallel facts exist — ≥3 sentences carrying a `path:`/`path:line`, * count/number, or `Label:` shape — with no markdown table row, no checklist * item, and no bullet/numbered list. All three structure checks must be * absent before it fires (conservative by design). Fenced code blocks, * inline code, and URLs never count as facts. Short bodies (<3 sentences) * always pass. */ export declare function lintMessageBody(body: string): string[]; /** Non-blank lines a reader actually SEES on GitHub — everything outside * `
` blocks. The opening `
` line counts (its summary renders * collapsed); everything after it until the matching close does not. * Nesting-safe. Details tags inside fenced code blocks or inline code spans * are TEXT, not folds (PR #465 review) — a lint doc quoting `
` must * not have its remaining lines silently uncounted; fenced-block lines are * visible content and count like any other line. */ export declare function visibleLineCount(body: string): number; /** Issue-context rule (issue #712): every ShipFlow issue body must let a reader * act without a clarifying question — a concrete Example (or bug Repro) plus * an Expected result (or Outcome). Warn-only, and conservative: fires ONLY * when BOTH signals are absent, so a bug body with Repro/Expected, a feature * body per the ladder, or any body that names either concept passes. */ export declare function lintIssueOutcome(body: string): string[]; /** A body whose headline exceeds this many visible lines reads as a wall — * the renaiss-os-index#766 shape (126 top-level lines) that issue #464 fixes. * Generous on purpose: only true walls trip it. */ export declare const MAX_VISIBLE_BODY_LINES = 50; /** Wall-of-content rule (issue #464): a structurally-linted body can still be * unreadable when every table and checklist sits at top level. Fires when the * visible (non-`
`) line count exceeds `MAX_VISIBLE_BODY_LINES`. * Split from `lintMessageBody` composition so both rules report together. */ export declare function lintBodyLength(body: string): string[]; //# sourceMappingURL=message-lint.d.ts.map