import { Page } from '../../contracts/src/index.js'; import { CoupledFootnotePaginationOptions } from './coupled-footnote-pagination.js'; import { FootnoteRange } from './footnote-content.js'; export type FootnoteCertificatePreparedOptions = Readonly>; type PendingEntry = Readonly<{ id: string; ranges: readonly Readonly[]; }>; export type FootnotePendingQueue = ReadonlyMap; declare const ownerBrand: unique symbol; declare const certificateBrand: unique symbol; export type FootnoteCertificateOwner = Readonly<{ prepared: FootnoteCertificatePreparedOptions; [ownerBrand]: true; }>; export type FootnotePageCertificateFacts = Readonly<{ /** Issuance/source index; transporting a certificate does not rebase it. */ pageIndex: number; incomingByColumn: FootnotePendingQueue; outgoingByColumn: FootnotePendingQueue; }>; export type FootnotePageCertificate = FootnotePageCertificateFacts & Readonly<{ owner: FootnoteCertificateOwner; [certificateBrand]: true; }>; /** Prepared inputs must remain unchanged for the owner's lifetime; no inventory is copied or scanned here. */ export declare const createFootnoteCertificateOwner: (prepared: FootnoteCertificatePreparedOptions) => FootnoteCertificateOwner; export declare const issueFootnotePageCertificate: (page: Page, owner: FootnoteCertificateOwner, facts: FootnotePageCertificateFacts) => FootnotePageCertificate; /** Omitting expectedOwner discovers retained inputs only; tail admission must supply its validated owner. */ export declare const readFootnotePageCertificate: (page: Page | null | undefined, expectedOwner?: FootnoteCertificateOwner) => FootnotePageCertificate | null; /** * Restores note-continuation provenance lost by string-key page cloning. * The caller must separately prove body/rekey equivalence; this does not certify body reuse. */ export declare const transferFootnotePageCertificate: (source: Page, target: Page, pageIndexDelta: number) => FootnotePageCertificate | null; /** Reissues exact page-local facts after an owner-proved retained-tail index shift. */ export declare const rebaseFootnotePageCertificate: (source: Page, target: Page, pageIndexDelta: number, expectedOwner: FootnoteCertificateOwner) => FootnotePageCertificate | null; /** Queue order and every range field are part of the boundary; equal height is not equivalence. */ export declare const pendingFootnoteQueuesEqual: (left: FootnotePendingQueue, right: FootnotePendingQueue) => boolean; export {};