import { Node as PMNode } from 'prosemirror-model';
import { NumberingProperties, StylesDocumentProperties } from '../../../../../../../layout-engine/style-engine/src/ooxml/index.js';
import { CommentInput } from '../algorithm/comment-diffing.js';
import { HeaderFooterState } from '../algorithm/header-footer-diffing.js';
import { PartsState } from '../algorithm/parts-diffing.js';
/** The canonical diffable state of one document. */
export interface CanonicalDiffableState {
    body: Record<string, unknown>;
    comments: Record<string, unknown>[];
    styles: Record<string, unknown> | null;
    numbering: Record<string, unknown> | null;
    headerFooters: HeaderFooterState | null;
    partsState: PartsState | null;
}
/**
 * Builds the canonical diffable state from raw editor data.
 *
 * This is the single source of truth for what parts of a document are
 * considered during fingerprinting and diffing.
 */
export declare function buildCanonicalDiffableState(doc: PMNode, comments: CommentInput[], styles: StylesDocumentProperties | null | undefined, numbering: NumberingProperties | null | undefined, headerFooters: HeaderFooterState | null | undefined, partsState: PartsState | null | undefined): CanonicalDiffableState;
/**
 * Builds the canonical state under the pre-SD-3279 normalization. Used only
 * by the validation fallback in `diff-service.ts` to accept snapshots and
 * diff payloads whose stored fingerprint was computed under the old
 * algorithm. Identical shape to {@link buildCanonicalDiffableState}; only
 * the body normalizer differs.
 */
export declare function buildLegacyCanonicalDiffableState(doc: PMNode, comments: CommentInput[], styles: StylesDocumentProperties | null | undefined, numbering: NumberingProperties | null | undefined, headerFooters: HeaderFooterState | null | undefined, partsState: PartsState | null | undefined): CanonicalDiffableState;
/**
 * Produces a stable JSON string from a canonical diffable state.
 * Key ordering is recursively normalized so that equivalent states
 * always produce identical strings regardless of insertion order.
 */
export declare function stableStringify(state: CanonicalDiffableState): string;
//# sourceMappingURL=canonicalize.d.ts.map