/** * Content-addressed vision statements (design D1). * * A statement's id is derived from its own text, never from its position. That * one choice is what makes a re-run usable: inserting a paragraph leaves every * other id alone, editing one changes only its own id, and drift reduces to a * set difference. Positional numbering would renumber everything below an * insertion and invalidate every citation in `constitution.md`. * * Requirements: project-constitution/AC-7, project-constitution/AC-8, * project-constitution/AC-9 * * @module */ import type { Statement } from './types.js'; /** * Collapse a text block to its comparable form: trimmed, every run of * whitespace (including newlines inside a wrapped paragraph) one space. * * This is what makes re-wrapping a paragraph in Word a no-op for its id. */ export declare function normalize(block: string): string; /** `V-` plus the first 8 hex characters of sha256 over the normalized text. */ export declare function statementId(normalized: string): string; /** * Split extracted text into statements. * * A statement is a block separated by one or more blank lines — which is what a * paragraph, a heading and a list item each become after extraction. Identical * normalized blocks collapse to one statement carrying an occurrence count, so * a repeated heading cannot produce two entries sharing an id (AC-9). * * Order follows first appearance in the source, so the snapshot reads like the * document even though ids do not depend on order. */ export declare function splitStatements(text: string): Statement[]; //# sourceMappingURL=statements.d.ts.map