import { QualityEngine, type QualityProfile, type QualityRule, type QualityRulePack } from '@json-to-office/quality'; import type { DocxQualityFact, DocxQualityModel } from './facts'; export declare const docxTableWidthRule: QualityRule; export declare const docxHeadingHierarchyRule: QualityRule; export declare const docxTextFitRule: QualityRule; export declare const docxFrameCollisionRule: QualityRule; export declare const docxSvgTextBoundsRule: QualityRule; export declare const docxLineBoxRule: QualityRule; /** * Unfilled slots and leftover filler, in one rule over two codes. * * One rule because it is one question — "is this text real yet?" — and two * codes because the answers differ in consequence: a scaffold marker blocks * generation, filler only advises. */ export declare const docxPlaceholderRule: QualityRule; /** * A block slot holds a bounded amount of text, and the bound is the block's, * not the theme's: a takeaway is one claim in one sentence whatever it is set * in. Reported at the authored slot, so the repair is a rewrite of that item. */ export declare const docxSlotBudgetRule: QualityRule; /** Every family the document can paint: the theme's roles plus authored ones. */ export declare const docxFontCountRule: QualityRule; /** A literal colour the resolved theme does not define. */ export declare const docxPaletteRule: QualityRule; /** Information design for charts: the comparison, the palette and the caption. */ export declare const docxChartRule: QualityRule; /** Information design for tables: alignment, rounding, rules and length. */ export declare const docxTableDesignRule: QualityRule; /** * Chrome a profile requires, judged where the block declared the slot. Off by * default: a takeaway under a chart or a source under a table is an archetype * convention, and the theme that styles the slot never asks for it. */ export declare const docxRequiredChromeRule: QualityRule; /** * A report that argues its numbers in prose. A data exhibit is a chart, or a * table with at least two columns — a stat row is a summary, not an exhibit. * Off by default; the client-report profile asks for one, because every * brief in that archetype comes with numbers the reader will check. */ export declare const docxExhibitRequiredRule: QualityRule; /** * A running head where the profile expects one: every top-level section from * `fromSection` on must carry the parts in `required` — a header, a footer, * a page-number field in either. The first section is exempt by default, so * a cover stays clean. Off by default; the theme only paints a running head. */ export declare const docxRunningHeadRule: QualityRule; /** * An authored size the theme never paints — not a style, not a font role, not * a step of its scale. The theme owns the list, so a custom theme is judged * by its own values, and a size a block compiled from its definition is never * reported: the author has no pointer to patch there. Off until a profile * turns it on: an editorial layout on any theme sets display sizes by hand, * and only an archetype decides that a document must keep to the scale. */ export declare const docxTypeScaleRule: QualityRule; /** * How many distinct sizes a document paints, blocks, statistics, lists and * contents included: the count of what reaches the page rather than of what * the author typed. Off until a profile turns it on and sets `maximumSizes`: * a theme sets no ceiling of its own, the ceiling is an archetype convention. * * Counted across the document, not per page, by decision (#332). A report's * pages share one type system, and no page can paint a size the document * does not, so the document's ceiling bounds every page's; the static pass * has no page model to count a page by; and one dense page of the house * blueprint already paints most of the house sizes, so a per-page ceiling * lower than the document's would fail the blueprint's own pages. A deck, * whose slide is its page, counts both (`pptx/size-count`). */ export declare const docxSizeCountRule: QualityRule; /** * One role at two sizes: a heading level or a paragraph style that is painted * at more than one size across the document. The theme's size for the role is * the expected value, and every authored departure from it is reported and * repaired to it. A role that is consistently overridden is not drift. Off * until a profile turns it on, for the same reason as `docx/type-scale`, * which yields to this rule on any pointer it reports. */ export declare const docxRoleDriftRule: QualityRule; /** * How wide a line of body copy runs. Between 45 and 90 characters a reader's * eye finds the next line without hunting; outside it, a page is either a * ribbon or a wall. The width model is an estimate — an average advance over * ordinary English at the body size — so the finding is `estimated` and its * bounds are generous. */ export declare const docxBodyMeasureRule: QualityRule; /** A section that renders nothing, and a section no heading opens. */ export declare const docxSectionContentRule: QualityRule; /** * A heading Word may leave at the foot of a page with its first paragraph * overleaf. Every bundled theme binds its heading styles, so this fires on a * heading that unbinds itself or on a theme that never bound one; the fix is * the property Word reads. */ export declare const docxHeadingKeepNextRule: QualityRule; /** * A figure a reader cannot name and a screen reader cannot describe. Either * answers the question — a caption beside the image, or alt text on it — so * the finding stands only when neither does. */ export declare const docxFigureLabelRule: QualityRule; /** An image drawn at an aspect the asset does not have. */ export declare const docxImageAspectRule: QualityRule; /** * A document long enough to be navigated, with no contents to navigate it by. * The threshold is the profile's: a memo with four headings needs none, a * report with a dozen does. */ export declare const docxContentsRule: QualityRule; export declare const DOCX_QUALITY_RULES: QualityRulePack; export declare const DOCX_QUALITY_PROFILES: { readonly 'client-report': { readonly id: "client-report"; readonly formats: readonly ["docx"]; readonly description: "Client or public-administration report: a running head with page numbers on every section after the cover, a takeaway and a source wherever a block declares them, no heading skipped, every size on the theme scale with at most nine in play, a readable measure, no empty or untitled section, every heading bound to what follows and every figure named, no page rendered empty or left half blank under the running head, and at least one chart or table."; readonly rules: { readonly 'docx/section-content': { readonly enabled: true; }; readonly 'docx/heading-keep-next': { readonly enabled: true; }; readonly 'docx/figure-label': { readonly enabled: true; }; readonly 'docx/required-chrome': { readonly parameters: { readonly required: readonly ["takeaway", "source"]; }; }; readonly 'docx/running-head': { readonly parameters: { readonly required: readonly ["header", "footer", "pageNumber"]; readonly fromSection: 1; }; }; readonly 'docx/heading-hierarchy': { readonly severity: "warning"; }; readonly 'docx/type-scale': { readonly enabled: true; }; readonly 'docx/size-count': { readonly enabled: true; readonly parameters: { readonly maximumSizes: 9; }; }; readonly 'docx/role-drift': { readonly enabled: true; }; readonly 'rendered/empty-page': { readonly severity: "warning"; }; readonly 'rendered/page-underfilled': { readonly severity: "warning"; }; readonly 'docx/exhibit-required': { readonly enabled: true; }; }; }; readonly 'executive-report': { readonly id: "executive-report"; readonly formats: readonly ["docx"]; readonly description: "Short decision document with strict outline continuity."; readonly rules: { readonly 'docx/heading-hierarchy': { readonly severity: "warning"; }; readonly 'docx/section-content': { readonly enabled: true; }; readonly 'docx/heading-keep-next': { readonly enabled: true; }; }; }; readonly 'technical-report': { readonly id: "technical-report"; readonly formats: readonly ["docx"]; readonly description: "Technical report or memo: numbered sections under a running head with page numbers on every section after the cover, a source wherever a block declares one, no heading skipped, every size on the theme scale with at most nine in play, a readable measure, no empty or untitled section, every heading bound to what follows, every figure named, a contents page from eight headings, no page rendered empty or left half blank, and at least one chart or table."; readonly rules: { readonly 'docx/section-content': { readonly enabled: true; }; readonly 'docx/heading-keep-next': { readonly enabled: true; }; readonly 'docx/figure-label': { readonly enabled: true; }; readonly 'docx/contents-missing': { readonly severity: "warning"; readonly parameters: { readonly minimumHeadings: 8; }; }; readonly 'docx/required-chrome': { readonly parameters: { readonly required: readonly ["source"]; }; }; readonly 'docx/running-head': { readonly parameters: { readonly required: readonly ["header", "footer", "pageNumber"]; readonly fromSection: 1; }; }; readonly 'docx/heading-hierarchy': { readonly severity: "warning"; }; readonly 'docx/type-scale': { readonly enabled: true; }; readonly 'docx/size-count': { readonly enabled: true; readonly parameters: { readonly maximumSizes: 9; }; }; readonly 'docx/role-drift': { readonly enabled: true; }; readonly 'rendered/empty-page': { readonly severity: "warning"; }; readonly 'rendered/page-underfilled': { readonly severity: "warning"; }; readonly 'docx/exhibit-required': { readonly enabled: true; }; }; }; readonly general: { readonly id: "general"; readonly formats: readonly ["docx"]; readonly description: "Any document that names no archetype: integrity and information-design rules at their defaults, nothing required by structure."; }; readonly 'legal-appendix': { readonly id: "legal-appendix"; readonly formats: readonly ["docx"]; readonly description: "Dense appendix: preserve integrity without editorial taste."; }; }; export declare const DOCX_DEFAULT_QUALITY_PROFILE: QualityProfile; /** * The shipped profile a document names in `props.qualityProfile`, so that * validation without arguments judges a blueprint scaffold by its archetype. * An unknown name is nobody's profile: the format default applies. */ export declare function declaredDocxQualityProfile(document: unknown): QualityProfile | undefined; /** * Callers name a shipped profile by id — `{ id: 'executive-report', formats: ['docx'] }`. * Without this lookup that request reaches the engine carrying nothing but its id, * so the analysis runs on defaults while stamping the requested profileId. */ export declare function resolveDocxQualityProfile(requested: QualityProfile | undefined): QualityProfile | undefined; export declare const docxQualityEngine: QualityEngine; //# sourceMappingURL=rules.d.ts.map