import { FlowBlock, Measure } from '../../contracts/src/index.js'; import { LayoutOptions } from '../../layout-engine/src/index.js'; export type CoupledFootnoteReference = { id: string; pos: number; blockId?: string; runOrdinal?: number | null; }; export type CoupledFootnoteProfileRejection = 'no-footnote-references' | 'partial-or-semantic-flow' | 'multiple-sections' | 'invalid-page-geometry' | 'unsupported-columns' | 'unsupported-vertical-alignment' | 'unsupported-section-boundary' | 'unsupported-body-block' | 'unsupported-paragraph-geometry' | 'body-page-token' | 'measure-mismatch' | 'duplicate-block-id' | 'duplicate-reference-id' | 'missing-native-owner' | 'unresolved-reference-line' | 'unordered-native-references' | 'retained-profile-unproved' | 'reference-topology-changed'; export type CoupledFootnoteParagraphUpdate = { block: FlowBlock; measure: Measure; refs: readonly CoupledFootnoteReference[]; previousRefs: readonly CoupledFootnoteReference[]; /** Immediate CURRENT neighbors; null only at a true story boundary. */ predecessor: FlowBlock | null; successor: FlowBlock | null; }; export type CoupledFootnoteLocalProfileProof = { baselineProfileExact: true; referenceTopologyExact: true; }; /** * Revalidates only changed paragraphs beneath a bridge-owned retained global * profile and exact current note topology. The bridge must prove those owners * and supply all affected paragraphs, including referenced neighbors whose * skip context changed. These flags do not mint a global/profile certificate. */ export declare const getCoupledFootnoteParagraphUpdatesUnsupportedReason: (updates: readonly CoupledFootnoteParagraphUpdate[], proof: CoupledFootnoteLocalProfileProof | null | undefined) => CoupledFootnoteProfileRejection | null; export declare const supportsCoupledFootnoteParagraphUpdates: (updates: readonly CoupledFootnoteParagraphUpdate[], proof: CoupledFootnoteLocalProfileProof | null | undefined) => boolean; /** * Admission for fresh, single-section body/note flow. This does not certify * note-content inventories or retained pages; their owners validate those. * Rejection codes carry no document text and are suitable for diagnostics. */ export declare const getCoupledFootnotePaginationUnsupportedReason: (blocks: FlowBlock[], measures: readonly Measure[], options: LayoutOptions, refs: readonly CoupledFootnoteReference[]) => CoupledFootnoteProfileRejection | null; export declare const supportsCoupledFootnotePagination: (blocks: FlowBlock[], measures: readonly Measure[], options: LayoutOptions, refs: readonly CoupledFootnoteReference[]) => boolean;