@embedpdf/engine-core 3.0.0-next.1 → 3.0.0-next.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/{AbortError-CjSasIlL.js → AbortError-8-9JAX1Y.js} +2 -2
  2. package/dist/{AbortError-CjSasIlL.js.map → AbortError-8-9JAX1Y.js.map} +1 -1
  3. package/dist/{AbortError-ByBflvEl.cjs → AbortError-CRSooKsk.cjs} +2 -2
  4. package/dist/{AbortError-ByBflvEl.cjs.map → AbortError-CRSooKsk.cjs.map} +1 -1
  5. package/dist/{AnnotationListSnapshot-W0RCsyDE.d.cts → AnnotationListSnapshot-C1U3XUxP.d.cts} +846 -127
  6. package/dist/{AnnotationListSnapshot-W0RCsyDE.d.ts → AnnotationListSnapshot-C1U3XUxP.d.ts} +846 -127
  7. package/dist/{DocumentSecurityService-Df79fgpe.d.cts → DocumentSecurityService-6rhztZlz.d.cts} +33 -2
  8. package/dist/{DocumentSecurityService-B-tULKNY.d.ts → DocumentSecurityService-7nL9aY75.d.ts} +33 -2
  9. package/dist/{Engine-B7Oe7f5i.d.ts → Engine-CWnAKccD.d.ts} +62 -19
  10. package/dist/{Engine-D9loFZc1.d.cts → Engine-D3868xIU.d.cts} +62 -19
  11. package/dist/{subtype-qejjVr6h.cjs → PageInsertBlankInput-CzShuSJI.cjs} +184 -1
  12. package/dist/PageInsertBlankInput-CzShuSJI.cjs.map +1 -0
  13. package/dist/{subtype-BvAzLCGC.js → PageInsertBlankInput-WKY0tr6S.js} +149 -2
  14. package/dist/PageInsertBlankInput-WKY0tr6S.js.map +1 -0
  15. package/dist/{builders-C548U47M.js → builders-Cdz34nbF.js} +566 -164
  16. package/dist/builders-Cdz34nbF.js.map +1 -0
  17. package/dist/{builders-BvikWRuO.cjs → builders-Do6_4KnS.cjs} +628 -220
  18. package/dist/builders-Do6_4KnS.cjs.map +1 -0
  19. package/dist/conformance.cjs +1039 -204
  20. package/dist/conformance.cjs.map +1 -1
  21. package/dist/conformance.d.cts +130 -6
  22. package/dist/conformance.d.ts +130 -6
  23. package/dist/conformance.js +994 -163
  24. package/dist/conformance.js.map +1 -1
  25. package/dist/{fold-CB4fAOOy.js → fold-BfyxxwS6.js} +162 -3
  26. package/dist/fold-BfyxxwS6.js.map +1 -0
  27. package/dist/{fold-IaMph3CO.cjs → fold-C7I5GpBz.cjs} +235 -4
  28. package/dist/fold-C7I5GpBz.cjs.map +1 -0
  29. package/dist/index.cjs +38 -19
  30. package/dist/index.d.cts +2 -2
  31. package/dist/index.d.ts +2 -2
  32. package/dist/index.js +5 -5
  33. package/dist/{resolver-DiPMTfcy.js → resolver-CHG4waXL.js} +2 -1
  34. package/dist/resolver-CHG4waXL.js.map +1 -0
  35. package/dist/{resolver-DAZWVoJL.cjs → resolver-D-jumvgM.cjs} +2 -1
  36. package/dist/resolver-D-jumvgM.cjs.map +1 -0
  37. package/dist/runtime.cjs +43 -24
  38. package/dist/runtime.cjs.map +1 -1
  39. package/dist/runtime.d.cts +103 -5
  40. package/dist/runtime.d.ts +103 -5
  41. package/dist/runtime.js +6 -6
  42. package/dist/{schemas-B_1VyFsm.cjs → schemas-CS5iPpX5.cjs} +305 -111
  43. package/dist/schemas-CS5iPpX5.cjs.map +1 -0
  44. package/dist/{schemas-9OpSSeM6.js → schemas-XGrNVMDd.js} +250 -92
  45. package/dist/schemas-XGrNVMDd.js.map +1 -0
  46. package/dist/wire.cjs +131 -4
  47. package/dist/wire.cjs.map +1 -1
  48. package/dist/wire.d.cts +277 -20
  49. package/dist/wire.d.ts +277 -20
  50. package/dist/wire.js +120 -5
  51. package/dist/wire.js.map +1 -1
  52. package/package.json +1 -1
  53. package/dist/builders-BvikWRuO.cjs.map +0 -1
  54. package/dist/builders-C548U47M.js.map +0 -1
  55. package/dist/fold-CB4fAOOy.js.map +0 -1
  56. package/dist/fold-IaMph3CO.cjs.map +0 -1
  57. package/dist/resolver-DAZWVoJL.cjs.map +0 -1
  58. package/dist/resolver-DiPMTfcy.js.map +0 -1
  59. package/dist/schemas-9OpSSeM6.js.map +0 -1
  60. package/dist/schemas-B_1VyFsm.cjs.map +0 -1
  61. package/dist/subtype-BvAzLCGC.js.map +0 -1
  62. package/dist/subtype-qejjVr6h.cjs.map +0 -1
@@ -16,20 +16,245 @@ interface DocumentMetadata {
16
16
  custom: Record<string, string>;
17
17
  }
18
18
  //#endregion
19
+ //#region src/identity/PageObjectNumber.d.ts
20
+ /**
21
+ * PDF indirect object number for a page.
22
+ *
23
+ * Resolved via the PDFium runtime helper `EPDFPage_GetObjectNumber(pagePtr)`.
24
+ * Always > 0 for well-formed PDFs. This replaces the v2 page index as the
25
+ * primary addressing key. The page index is kept on `PageHandle` as display
26
+ * metadata only, because it can shift when pages are inserted, deleted, or
27
+ * reordered while a session is open.
28
+ */
29
+ type PageObjectNumber = number;
30
+ /**
31
+ * Type guard for the rare malformed-PDF case where a page is a direct
32
+ * object. The engine treats `0` as malformed and throws `EngineError(NotFound)`
33
+ * before any page-level operation.
34
+ */
35
+ declare function isValidPageObjectNumber(value: unknown): value is PageObjectNumber;
36
+ //#endregion
37
+ //#region src/dto/PdfDestination.d.ts
38
+ /**
39
+ * An explicit PDF destination (ISO 32000-1 §12.3.2.2): a page, a location,
40
+ * and a magnification. Produced by outlines/bookmarks, link annotations,
41
+ * `/OpenAction`, and GoTo actions; named destinations resolve to one of
42
+ * these through the catalog's `/Dests` dictionary or name tree — the
43
+ * ENGINE does that resolution, so the viewer only ever sees this explicit
44
+ * form.
45
+ *
46
+ * Coordinates are PDF user space (y-up, points, absolute — NOT
47
+ * crop-relative). `null` means "retain the current value" (the spec's
48
+ * meaning for null array entries); a `/XYZ` zoom of `0` is equivalent to
49
+ * null. The `fitB*` kinds refer to the page's content BOUNDING box rather
50
+ * than the crop box.
51
+ *
52
+ * Viewers translate these onto the stage's reveal primitive — see
53
+ * `destinationToReveal` in `@embedpdf/plugin-stage`.
54
+ */
55
+ type PdfDestination = {
56
+ kind: 'xyz';
57
+ pageObjectNumber: PageObjectNumber;
58
+ left?: number | null;
59
+ top?: number | null;
60
+ zoom?: number | null;
61
+ } | {
62
+ kind: 'fit';
63
+ pageObjectNumber: PageObjectNumber;
64
+ } | {
65
+ kind: 'fitH';
66
+ pageObjectNumber: PageObjectNumber;
67
+ top?: number | null;
68
+ } | {
69
+ kind: 'fitV';
70
+ pageObjectNumber: PageObjectNumber;
71
+ left?: number | null;
72
+ } | {
73
+ kind: 'fitR';
74
+ pageObjectNumber: PageObjectNumber;
75
+ left: number;
76
+ bottom: number;
77
+ right: number;
78
+ top: number;
79
+ } | {
80
+ kind: 'fitB';
81
+ pageObjectNumber: PageObjectNumber;
82
+ } | {
83
+ kind: 'fitBH';
84
+ pageObjectNumber: PageObjectNumber;
85
+ top?: number | null;
86
+ } | {
87
+ kind: 'fitBV';
88
+ pageObjectNumber: PageObjectNumber;
89
+ left?: number | null;
90
+ };
91
+ //#endregion
19
92
  //#region src/dto/PdfAction.d.ts
20
93
  /** Normalized values of an action dictionary's `/S` name. */
21
- type PdfActionType = 'unknown' | 'goto' | 'goto-remote' | 'goto-embedded' | 'launch' | 'thread' | 'uri' | 'sound' | 'movie' | 'hide' | 'named' | 'submit-form' | 'reset-form' | 'import-data' | 'javascript' | 'set-ocg-state' | 'rendition' | 'transition' | 'goto-3d-view';
22
- /** One detached node in a normalized PDF action tree. */
23
- interface PdfActionNode {
24
- type: PdfActionType;
94
+ type PdfActionType = PdfActionNode['type'];
95
+ /**
96
+ * One Hide `/T` or ResetForm `/Fields` entry. Deliberately UNSCOPED: a
97
+ * dictionary reference carries no page, so resolution (a name to widgets, an
98
+ * object number to an annotation or field) is the interpreter's job — never
99
+ * the extractor's.
100
+ */
101
+ type PdfActionTargetRef = {
102
+ kind: 'name';
103
+ name: string;
104
+ } | {
105
+ kind: 'objectNumber';
106
+ objectNumber: number;
107
+ };
108
+ /**
109
+ * Decoded SubmitForm `/Flags` word (ISO 32000-2:2020 Table 240) plus the raw
110
+ * value. `exclude` is DERIVED from bit 1 — never stored separately, so the
111
+ * two cannot disagree. Note the two easily-missed positions verified against
112
+ * the spec: bit 12 is `ExclFKey` (not "ExclFDFTemplate") and bit 13 is
113
+ * reserved/undefined, so `EmbedForm` is bit 14.
114
+ */
115
+ interface SubmitFormFlags {
116
+ raw: number;
117
+ /** Bit 1: set → `fields` lists EXCLUDED fields. */
118
+ exclude: boolean;
119
+ /** Bit 2: submit designated valueless fields too, as name-only entries. */
120
+ includeNoValueFields: boolean;
121
+ /** Bits 3/6/9 folded into one verdict: bit 9 SubmitPDF dominates ("all
122
+ * other flags shall be ignored except GetMethod"), else bit 6 XFDF, else
123
+ * bit 3 HTML Form format, else FDF (the Table 240 default). */
124
+ format: 'fdf' | 'html' | 'xfdf' | 'pdf';
125
+ /** Bit 4. ISO makes GetMethod meaningful only with ExportFormat set, and
126
+ * the bit-9 rule keeps it alive for SubmitPDF — so `'get'` only for
127
+ * `'html'` and `'pdf'`; everything else posts. */
128
+ method: 'post' | 'get';
129
+ /** Bit 5 (meaningful only with ExportFormat; passed through — this stack
130
+ * does not capture click coordinates). */
131
+ submitCoordinates: boolean;
132
+ /** Bit 7 (FDF only): include incremental updates via FDF `Differences`. */
133
+ includeAppendSaves: boolean;
134
+ /** Bit 8 (FDF only): include markup annotations. */
135
+ includeAnnotations: boolean;
136
+ /** Bit 10: convert date-like values to the standard date format. */
137
+ canonicalFormat: boolean;
138
+ /** Bit 11 (FDF, with IncludeAnnotations): only the current user's
139
+ * annotations. */
140
+ exclNonUserAnnots: boolean;
141
+ /** Bit 12: the submitted FDF excludes its `F` entry. */
142
+ exclFKey: boolean;
143
+ /** Bit 14 (bit 13 is reserved): the FDF `F` entry embeds the source PDF. */
144
+ embedForm: boolean;
145
+ }
146
+ /**
147
+ * The one Table-240 decode, shared by the reader, the schema's producers,
148
+ * and tests — so bit semantics cannot fork.
149
+ */
150
+ declare const decodeSubmitFormFlags: (raw: number) => SubmitFormFlags;
151
+ /**
152
+ * SubmitForm's extracted intent. ATOMIC on purpose: either every required
153
+ * component resolved (a complete, executable payload) or the node carries no
154
+ * payload at all — partial states are unrepresentable. An unreadable
155
+ * REQUIRED component (`/F`) degrades the whole node to `unknown` +
156
+ * `payload-dropped` at read time instead.
157
+ */
158
+ interface SubmitFormPayload {
159
+ /** Resolved `/F` URL — a `<< /FS /URL >>` file specification (7.11.5,
160
+ * `/UF` preferred over `/F` per 7.11.2); a bare string `/F` is accepted
161
+ * as a producer-compat extension. */
162
+ url: string;
163
+ /**
164
+ * `null` = `/Fields` ABSENT → Include/Exclude is ignored and every field
165
+ * except NoExport-flagged ones is submitted (Table 239). `[]` =
166
+ * present-but-empty: include mode submits NOTHING, exclude mode submits
167
+ * everything eligible — presence and emptiness are different states.
168
+ */
169
+ fields: PdfActionTargetRef[] | null;
170
+ flags: SubmitFormFlags;
171
+ /** `/CharSet` (PDF 2.0), extracted but not encoded by this stack. */
172
+ charSet?: string;
173
+ }
174
+ interface PdfActionNodeCommon {
25
175
  /** Raw `/S` name, retained for unknown and future action types. */
26
176
  subtype: string;
27
- /** Decoded `/JS` source for JavaScript and Rendition actions. */
28
- script?: string;
29
177
  /** Normalized `/Next` children in PDF order. */
30
178
  next: PdfActionNode[];
31
179
  }
32
- type PdfActionWarning = 'cycle-dropped' | 'malformed-next' | 'incomplete';
180
+ /**
181
+ * One detached node in a normalized PDF action tree, discriminated on the
182
+ * interpreter that would execute it. Every executable arm carries its full
183
+ * payload — a `goto` without a destination or a `uri` without a URI is
184
+ * unrepresentable. A payload the reader cannot materialize degrades the node
185
+ * to `unknown` (original `/S` kept on `subtype`) and appends the tree-level
186
+ * `'payload-dropped'` warning.
187
+ */
188
+ type PdfActionNode = PdfActionNodeCommon & ({
189
+ type: 'javascript';
190
+ script: string;
191
+ } | {
192
+ type: 'goto';
193
+ destination: PdfDestination;
194
+ } | {
195
+ type: 'uri';
196
+ uri: string;
197
+ isMap: boolean;
198
+ } | {
199
+ type: 'named';
200
+ name: string;
201
+ } | {
202
+ type: 'hide';
203
+ targets: PdfActionTargetRef[];
204
+ hide: boolean;
205
+ } | {
206
+ type: 'reset-form';
207
+ /**
208
+ * `null` = `/Fields` ABSENT → reset every field (`exclude` is
209
+ * meaningless). `[]` = present-but-empty: with `exclude` false reset
210
+ * NOTHING, with `exclude` true reset EVERYTHING — PDFium's executor
211
+ * branches on presence first.
212
+ */
213
+ fields: PdfActionTargetRef[] | null;
214
+ exclude: boolean;
215
+ } |
216
+ /** Reported, never executed. */
217
+ {
218
+ type: 'goto-remote';
219
+ filePath: string;
220
+ } | {
221
+ type: 'goto-embedded';
222
+ filePath: string;
223
+ } | {
224
+ type: 'launch';
225
+ filePath: string;
226
+ } |
227
+ /** ISO allows `/Rendition` to carry `/JS`; preserved, not collected. */
228
+ {
229
+ type: 'rendition';
230
+ script?: string;
231
+ } |
232
+ /** Recognized; executable only when `payload` is present. Absent payload
233
+ * = extracted by an older runtime (skew) — the node stays
234
+ * recognized-inert exactly as before this payload existed. */
235
+ {
236
+ type: 'submit-form';
237
+ payload?: SubmitFormPayload;
238
+ } | {
239
+ type: 'thread';
240
+ } | {
241
+ type: 'sound';
242
+ } | {
243
+ type: 'movie';
244
+ } | {
245
+ type: 'import-data';
246
+ } | {
247
+ type: 'set-ocg-state';
248
+ } | {
249
+ type: 'transition';
250
+ } | {
251
+ type: 'goto-3d-view';
252
+ } | {
253
+ type: 'unknown';
254
+ });
255
+ type PdfActionWarning = 'cycle-dropped' | 'malformed-next' | 'incomplete' |
256
+ /** A node's payload could not be read; that node degraded to `unknown`. */
257
+ 'payload-dropped';
33
258
  /**
34
259
  * One extracted action root plus the native reader's safety verdict.
35
260
  * Consumers must never execute a tree whose `incomplete` flag is true.
@@ -38,7 +263,8 @@ interface PdfActionTree {
38
263
  /** Null when the model was valid but its root exceeded a safety bound. */
39
264
  root: PdfActionNode | null;
40
265
  incomplete: boolean;
41
- /** Raw native bits, retained so newer warnings survive older SDKs. */
266
+ /** Raw native bits, retained so newer warnings survive older SDKs.
267
+ * TS-detected warnings (`payload-dropped`) appear only in `warnings`. */
42
268
  warningFlags: number;
43
269
  warnings: PdfActionWarning[];
44
270
  }
@@ -73,8 +299,13 @@ interface NamedJavaScriptAction {
73
299
  /** Catalog-owned actions. Page actions stay on their owning PageLayout. */
74
300
  interface DocumentActionsSnapshot {
75
301
  nameTreeScripts: NamedJavaScriptAction[];
76
- /** Action-form `/OpenAction`; a destination-form value reads as null. */
302
+ /** Action-form `/OpenAction`. Mutually exclusive with `openDestination` —
303
+ * `/OpenAction` is one entry, a dictionary or an array. */
77
304
  openAction: PdfActionTree | null;
305
+ /** Destination-form `/OpenAction` — the initial view, not an action.
306
+ * Optional on the wire for skew tolerance (absent ≡ null); the schema
307
+ * defaults it, so parsed snapshots always carry the key. */
308
+ openDestination?: PdfDestination | null;
78
309
  willClose?: PdfActionTree;
79
310
  willSave?: PdfActionTree;
80
311
  didSave?: PdfActionTree;
@@ -90,6 +321,13 @@ interface ActionReadBudget {
90
321
  maxModels: number;
91
322
  maxNodes: number;
92
323
  maxScriptCodeUnits: number;
324
+ /** Hide `/T` + ResetForm/SubmitForm `/Fields` entries, aggregate across
325
+ * the job. */
326
+ maxTargetEntries: number;
327
+ /** Payload string code units (URIs, submit URLs/CharSets, names, file
328
+ * paths, name-tree script names), aggregate across the job. Reserved
329
+ * BEFORE allocation. */
330
+ maxPayloadCodeUnits: number;
93
331
  }
94
332
  //#endregion
95
333
  //#region src/geometry/primitives.d.ts
@@ -116,9 +354,13 @@ interface PdfPoint {
116
354
  y: number;
117
355
  }
118
356
  /**
119
- * A rectangle in PDF user space, expressed as edges (y-up, so `top > bottom`
120
- * and `right > left` once normalized). Page-box origin is preserved, so
121
- * `left`/`bottom` may be non-zero or negative.
357
+ * A rectangle in the FILE's coordinates — PDF user space, expressed as edges
358
+ * (y-up, so `top > bottom` and `right > left` once normalized). Page-box
359
+ * origin is preserved, so `left`/`bottom` may be non-zero or negative.
360
+ *
361
+ * The rule: stored in the file → `PdfRect`; shown on screen → the viewer's
362
+ * y-down `Rect` (`{x, y, width, height}`). The shapes are incompatible on
363
+ * purpose — passing one where the other goes doesn't compile.
122
364
  */
123
365
  interface PdfRect {
124
366
  left: number;
@@ -290,6 +532,36 @@ interface PdfRectDifferences {
290
532
  * group (e.g. the Caret of a text-edit pair).
291
533
  */
292
534
  type AnnotationReplyType = 'reply' | 'group';
535
+ /** The two ISO 32000 §12.5.6.3 standard state models (Table 174). */
536
+ type KnownAnnotationStateModel = 'review' | 'marked';
537
+ /**
538
+ * The `/StateModel` of an annotation-state text annotation — ISO 32000
539
+ * §12.5.6.3. The standard models are `'review'` and `'marked'`, but the
540
+ * PDF stores the entry as a free text string and Acrobat supports
541
+ * registering custom state models, so the type stays open. The
542
+ * `(string & {})` arm keeps the standard literals auto-completing while
543
+ * accepting any custom model (the {@link FreeTextFont} pattern).
544
+ *
545
+ * Known values are wire-stable lowercase; the engine maps them onto the
546
+ * capitalized PDF spellings (`Review`, `Marked`) at read/write time.
547
+ * Unknown values round-trip verbatim in both directions.
548
+ */
549
+ type AnnotationStateModel = KnownAnnotationStateModel | (string & {});
550
+ /** The ISO 32000 §12.5.6.3 standard states (Table 174). */
551
+ type KnownAnnotationState = 'accepted' | 'rejected' | 'cancelled' | 'completed' | 'none' | 'marked' | 'unmarked';
552
+ /**
553
+ * The `/State` an annotation-state text annotation sets — ISO 32000
554
+ * §12.5.6.3. `'accepted' | 'rejected' | 'cancelled' | 'completed' |
555
+ * 'none'` belong to the `'review'` model; `'marked' | 'unmarked'` to the
556
+ * `'marked'` model. Open for the same reason as
557
+ * {@link AnnotationStateModel}: custom models bring custom states.
558
+ *
559
+ * States are PER USER and live on separate text annotations replying
560
+ * (`/IRT`) to their target — never on the target itself. The `/T` of the
561
+ * state annotation names who set it; later changes by the same user
562
+ * chain as replies to their previous state annotation, latest wins.
563
+ */
564
+ type AnnotationState = KnownAnnotationState | (string & {});
293
565
  /**
294
566
  * Bitset wrapper for the `/F` (Annotation Flags) PDF entry. We expose each
295
567
  * bit as its own boolean so callers don't have to know the bit positions.
@@ -308,24 +580,6 @@ interface AnnotationFlags {
308
580
  }
309
581
  declare const NO_ANNOTATION_FLAGS: AnnotationFlags;
310
582
  //#endregion
311
- //#region src/identity/PageObjectNumber.d.ts
312
- /**
313
- * PDF indirect object number for a page.
314
- *
315
- * Resolved via the PDFium runtime helper `EPDFPage_GetObjectNumber(pagePtr)`.
316
- * Always > 0 for well-formed PDFs. This replaces the v2 page index as the
317
- * primary addressing key. The page index is kept on `PageHandle` as display
318
- * metadata only, because it can shift when pages are inserted, deleted, or
319
- * reordered while a session is open.
320
- */
321
- type PageObjectNumber = number;
322
- /**
323
- * Type guard for the rare malformed-PDF case where a page is a direct
324
- * object. The engine treats `0` as malformed and throws `EngineError(NotFound)`
325
- * before any page-level operation.
326
- */
327
- declare function isValidPageObjectNumber(value: unknown): value is PageObjectNumber;
328
- //#endregion
329
583
  //#region src/revision/RevisionToken.d.ts
330
584
  /**
331
585
  * Opaque token a client must hand back when addressing an annotation by
@@ -392,6 +646,8 @@ type AnnotationRef = {
392
646
  */
393
647
  interface AnnotationDraftBase {
394
648
  contents?: string | null;
649
+ /** `/Subj` — short subject line (ISO 32000 §12.5.6.2, markup annotations). */
650
+ subject?: string | null;
395
651
  /** Blend mode to bake into the normal appearance. Omit for the subtype default. */
396
652
  blendMode?: BlendMode;
397
653
  /** Optional /NM the caller wants to assign on creation. */
@@ -428,7 +684,7 @@ interface AnnotationDraftBase {
428
684
  * expands these capabilities. PDF bits are NEVER consulted unless
429
685
  * `pdf.permissions` is in scope.
430
686
  */
431
- type DocCapability = 'doc.open' | 'doc.render' | 'doc.text.select' | 'doc.text.copy' | 'doc.text.search' | 'doc.content.copy' | 'doc.download' | 'doc.download.flattened' | 'doc.print' | 'doc.print.high' | 'doc.pages.modify' | 'doc.pages.assemble' | 'doc.forms.read' | 'doc.forms.fill' | 'doc.forms.modify' | 'doc.annotate.read' | 'doc.annotate.modify' | 'doc.metadata.modify' | 'doc.attachments.modify' | 'doc.redact';
687
+ type DocCapability = 'doc.open' | 'doc.render' | 'doc.text.select' | 'doc.text.copy' | 'doc.text.search' | 'doc.content.copy' | 'doc.download' | 'doc.download.flattened' | 'doc.print' | 'doc.print.high' | 'doc.pages.modify' | 'doc.pages.assemble' | 'doc.forms.read' | 'doc.forms.fill' | 'doc.forms.modify' | 'doc.forms.submit' | 'doc.annotate.read' | 'doc.annotate.modify' | 'doc.metadata.modify' | 'doc.attachments.modify' | 'doc.redact';
432
688
  /**
433
689
  * Single-entity collaboration vocabulary. Only annotations are
434
690
  * collab-scoped today; future entities slot into the same grammar.
@@ -932,9 +1188,9 @@ interface OpenInputById {
932
1188
  * `GET /v1/docs/:docId/head`. The returned handle is bound to this
933
1189
  * token; subsequent operations on it carry that bearer.
934
1190
  *
935
- * Use this for share-link / embed-link UX where the bearer of the
936
- * token is authorised for exactly one document (e.g. a third-party
937
- * reviewer the customer has shared a single doc with).
1191
+ * Use this when your backend mints doc-scoped JWTs itself (e.g. a
1192
+ * logged-in reviewer authorised for exactly one document). For the
1193
+ * no-backend public-share flow, use `kind: 'share'` instead.
938
1194
  *
939
1195
  * Rejected by `@embedpdf/engine`.
940
1196
  */
@@ -949,7 +1205,31 @@ interface OpenInputToken {
949
1205
  token: TokenSource;
950
1206
  password?: string | null;
951
1207
  }
952
- type OpenInput = OpenInputBytes | OpenInputLayerBytes | OpenInputById | OpenInputToken;
1208
+ /**
1209
+ * Cloud-engine: open via a public share token (`shr_…`) from the
1210
+ * dashboard's embed snippet. A share token is a REFERENCE to a
1211
+ * stored grant on the server, not a credential — the engine
1212
+ * exchanges it for a short-lived doc-scoped session JWT and
1213
+ * silently re-exchanges near expiry, so revoking or editing the
1214
+ * share retargets every embedded copy at the next renewal. No
1215
+ * backend required; the engine itself may be constructed with no
1216
+ * engine-level token at all.
1217
+ *
1218
+ * Rejected by `@embedpdf/engine`.
1219
+ */
1220
+ interface OpenInputShare {
1221
+ kind: 'share';
1222
+ /** Public share token (`shr_…`) identifying the grant. */
1223
+ shareToken: string;
1224
+ /**
1225
+ * Passphrase for a protected grant. This is the SHARE passphrase,
1226
+ * checked by the exchange endpoint — not the PDF's encryption
1227
+ * password, which stays in `password` like every other kind.
1228
+ */
1229
+ sharePassword?: string;
1230
+ password?: string | null;
1231
+ }
1232
+ type OpenInput = OpenInputBytes | OpenInputLayerBytes | OpenInputById | OpenInputToken | OpenInputShare;
953
1233
  interface OpenOptions {
954
1234
  password?: string | null;
955
1235
  /**
@@ -1151,16 +1431,127 @@ declare function pdfQuadCorners(q: PdfQuad): PdfQuadCorners;
1151
1431
  */
1152
1432
  declare function pdfQuadFromCorners(c: PdfQuadCorners): PdfQuad;
1153
1433
  //#endregion
1434
+ //#region src/text/charmap.d.ts
1435
+ /**
1436
+ * Character↔text index translation — the ONE place the two text index
1437
+ * spaces of a page meet.
1438
+ *
1439
+ * A page has two index spaces:
1440
+ *
1441
+ * - CHARACTER space: PDFium's internal character list, the space geometry
1442
+ * runs tile (`PageGeometryRun.charStart`), hit-testing addresses, and
1443
+ * selection ranges live in. Size: `PageTextSnapshot.charCount`.
1444
+ * - TEXT space: UTF-16 code-unit offsets into the extracted string
1445
+ * `PageTextSnapshot.text` — what search matching and slicing operate on.
1446
+ *
1447
+ * They diverge in exactly two ways, both encoded by `charMap` anchors:
1448
+ * - a non-printing character occupies a character slot but contributes
1449
+ * ZERO text units (PDFium's `char_indices_` skip list);
1450
+ * - a supplementary-plane character contributes TWO text units (a
1451
+ * surrogate pair) once extraction is UTF-16-faithful.
1452
+ *
1453
+ * `charMap` semantics (see {@link CharMapAnchor}): an implicit head anchor
1454
+ * `[0, 0]`; between anchors every character advances the text by exactly one
1455
+ * unit; an anchor sits at `i + 1` whenever character `i` contributed
1456
+ * something other than one unit. Absent/empty map = identity
1457
+ * (`charCount === text.length`). `charMapViolation` is the validator both
1458
+ * the wire schema and engine builders share — malformed maps are rejected,
1459
+ * never silently repaired.
1460
+ *
1461
+ * Boundary model: a "character boundary" `c` ∈ [0, charCount] sits BEFORE
1462
+ * character `c`; `boundaryTextOffset(s, charCount) === text.length` always.
1463
+ * All ranges are half-open in both spaces.
1464
+ */
1465
+ /**
1466
+ * One anchor of the character→text mapping: from character index `char`
1467
+ * onward (until the next anchor), boundary `c` maps to text offset
1468
+ * `text + (c - char)`.
1469
+ */
1470
+ type CharMapAnchor = readonly [char: number, text: number];
1471
+ /** Direction to resolve a text offset that falls on a zero-width plateau —
1472
+ * see {@link charBoundaryAtTextOffset}. */
1473
+ type CharBoundaryBias = 'start' | 'end';
1474
+ /**
1475
+ * Text offset of character boundary `boundary` (clamped into
1476
+ * [0, charCount]). For a dropped character this is the offset of the next
1477
+ * real text unit — exactly what half-open slicing needs at either end.
1478
+ */
1479
+ declare function boundaryTextOffset(snapshot: PageTextSnapshot, boundary: number): number;
1480
+ /**
1481
+ * The character boundary for a text offset, with explicit plateau bias:
1482
+ *
1483
+ * - `'start'`: the GREATEST boundary whose text offset is <= `offset` —
1484
+ * scans forward past zero-width characters, so a range start never
1485
+ * includes a dropped character that precedes its first real unit.
1486
+ * - `'end'`: the SMALLEST boundary whose text offset is >= `offset` —
1487
+ * stops before zero-width characters, so a range end never swallows a
1488
+ * dropped character that follows its last real unit.
1489
+ *
1490
+ * An offset inside a surrogate pair resolves outward under both biases
1491
+ * (start → the pair's character, end → past it), so a clipped astral
1492
+ * character is always covered whole. Prefer {@link charRangeForTextOffsets}
1493
+ * — the two biases exist to be used as a PAIR.
1494
+ */
1495
+ declare function charBoundaryAtTextOffset(snapshot: PageTextSnapshot, offset: number, bias: CharBoundaryBias): number;
1496
+ /**
1497
+ * The character range whose text projection is exactly
1498
+ * `text.slice(startOffset, endOffset)` — THE inverse used by search-hit
1499
+ * conversion and select-by-text. Start is right-biased and end left-biased
1500
+ * (see {@link charBoundaryAtTextOffset}), so zero-width characters adjacent
1501
+ * to the range fall OUTSIDE it on both sides.
1502
+ *
1503
+ * A non-empty text range can never invert: `end > start` implies
1504
+ * `B(end) >= endOffset > startOffset >= B(start)`, which forces
1505
+ * `end > start` by monotonicity. Empty input (`endOffset <= startOffset`)
1506
+ * normalizes to the end-rule boundary of `startOffset` on both sides.
1507
+ */
1508
+ declare function charRangeForTextOffsets(snapshot: PageTextSnapshot, startOffset: number, endOffset: number): {
1509
+ start: number;
1510
+ end: number;
1511
+ };
1512
+ /**
1513
+ * THE copy primitive: the text projection of the half-open character range
1514
+ * `[charStart, charEnd)`. Dropped characters inside the range contribute
1515
+ * nothing; a supplementary character contributes its full surrogate pair.
1516
+ * `sliceTextByChars(s, 0, s.charCount) === s.text` always.
1517
+ */
1518
+ declare function sliceTextByChars(snapshot: PageTextSnapshot, charStart: number, charEnd: number): string;
1519
+ /**
1520
+ * First invariant violation of a snapshot's char map, or null when valid.
1521
+ * Shared by the wire schema (rejects malformed bodies) and engine builders
1522
+ * (dev-mode assertion). The invariants:
1523
+ *
1524
+ * 1. absent/empty map ⇒ identity, so `charCount === text.length`;
1525
+ * 2. anchor chars strictly increasing, each in [1, charCount];
1526
+ * 3. step rule: against the previous anchor (implicit head [0, 0]), the
1527
+ * character just before each anchor contributed exactly 0 units
1528
+ * (dropped) or 2 (surrogate pair):
1529
+ * `t₂ - (t₁ + (c₂ - c₁ - 1)) ∈ {0, 2}`;
1530
+ * 4. tail: `lastText + (charCount - lastChar) === text.length`
1531
+ * (equivalently `boundaryTextOffset(s, charCount) === text.length`).
1532
+ */
1533
+ declare function charMapViolation(charCount: number, textLength: number, charMap: ReadonlyArray<CharMapAnchor> | undefined): string | null;
1534
+ //#endregion
1154
1535
  //#region src/dto/PageTextSnapshot.d.ts
1155
1536
  /**
1156
1537
  * Per-page text snapshot returned by `PageHandle.text.read()` and over
1157
- * the wire as the `GET /v1/docs/:docId/pages/:pon/text@contentVersion=N` body.
1158
- *
1159
- * `text` is the full plain-text extraction of the page in display order
1160
- * (UTF-16 → JS string). `charCount` is the PDFium-reported character
1161
- * count and may differ from `text.length` when the page contains
1162
- * astral-plane characters (PDFium counts UTF-16 code units, and JS
1163
- * strings preserve them as surrogate pairs).
1538
+ * the wire as the `GET …/text/pages/:pon/data@<contentVersion>` body.
1539
+ *
1540
+ * `text` is the full extracted page text in display order, UTF-16 faithful
1541
+ * (supplementary-plane characters are surrogate pairs, never dropped).
1542
+ *
1543
+ * `charCount` is the size of the page's CHARACTER space — PDFium's internal
1544
+ * character list, the same space geometry runs tile
1545
+ * (`PageGeometryRun.charStart`) and selection ranges live in. It is NOT the
1546
+ * length of `text`: a non-printing character occupies a character slot but
1547
+ * contributes zero text units, and a supplementary character contributes
1548
+ * two. `charMap` encodes exactly those deviations; absent/empty means the
1549
+ * two spaces are identical (`charCount === text.length`), which is the
1550
+ * common case and costs nothing on the wire. All translation goes through
1551
+ * the helpers in `text/charmap.ts` (`boundaryTextOffset`,
1552
+ * `charRangeForTextOffsets`, `sliceTextByChars`) — consumers never
1553
+ * interpret anchors directly, and the wire schema rejects maps that violate
1554
+ * the invariants documented there.
1164
1555
  *
1165
1556
  * This snapshot is pure content, addressed and cached by `contentVersion`.
1166
1557
  * It deliberately carries NO annotation liveness envelope (`PageState`):
@@ -1168,22 +1559,19 @@ declare function pdfQuadFromCorners(c: PdfQuadCorners): PdfQuad;
1168
1559
  * annotation `revision` / weak-state changes on a different cadence than
1169
1560
  * `contentVersion`, so baking liveness into this content-cached body would
1170
1561
  * be a stale-data hazard. Liveness lives on annotation reads instead.
1171
- *
1172
- * Future extensions (per-character bounding boxes, font runs, search
1173
- * results, etc.) land on `PageTextService` as additional methods; the
1174
- * snapshot shape stays stable so the wire URL and CDN cache remain
1175
- * intact across SDK versions.
1176
1562
  */
1177
1563
  interface PageTextSnapshot {
1178
1564
  text: string;
1179
1565
  charCount: number;
1566
+ /** Character→text anchors; absent/empty = identity. See `text/charmap.ts`. */
1567
+ charMap?: ReadonlyArray<CharMapAnchor>;
1180
1568
  }
1181
1569
  //#endregion
1182
1570
  //#region src/dto/PageGeometrySnapshot.d.ts
1183
1571
  /**
1184
- * One glyph's geometry in PDF user space (y-up edges).
1572
+ * One upright glyph's geometry in PDF user space (y-up edges).
1185
1573
  *
1186
- * `looseBox` is the loose char box (pdfium `FPDFText_GetLooseCharBox`): the
1574
+ * `looseBox` is the loose char cell (pdfium `FPDFText_GetLooseCharBox`): the
1187
1575
  * font-metric box covering the full glyph cell without regard to the actual
1188
1576
  * glyph shape. Always present (zeroed + flagged empty for degenerate glyphs);
1189
1577
  * it's the box selection envelopes are built from.
@@ -1200,15 +1588,61 @@ interface PageGeometryGlyph {
1200
1588
  tightBox?: PdfRect;
1201
1589
  }
1202
1590
  /**
1203
- * One text run (contiguous glyphs sharing a text object). `rect` is the run's
1204
- * enclosing box in PDF user space (y-up edges).
1591
+ * One non-upright glyph's geometry: the exact oriented cells, in PDF user
1592
+ * space (page coordinates — NOT a local frame). The corner SLOTS are
1593
+ * frame-geometric in the glyph's own upright frame:
1594
+ * `p1` = upper-start, `p2` = upper-end, `p3` = lower-start, `p4` = lower-end,
1595
+ * where "upper" is the ascent side and "start" is the frame's minimum-x side.
1596
+ * Deliberately NOT a bidi/reading-order statement — advance direction is a
1597
+ * glyph-sequence concern, carried separately where consumers need it.
1598
+ *
1599
+ * Degenerate glyphs carry a zeroed `looseQuad` plus the empty flag (bit 2),
1600
+ * mirroring the upright variant's zeroed-box convention. `flags` bits match
1601
+ * {@link PageGeometryGlyph.flags}.
1602
+ */
1603
+ interface RotatedGeometryGlyph {
1604
+ looseQuad: PdfQuad;
1605
+ flags: number;
1606
+ tightQuad?: PdfQuad;
1607
+ }
1608
+ /**
1609
+ * A run whose char matrix is upright — byte-identical to the wire shape that
1610
+ * predates orientation support, so upright documents never pay for it.
1205
1611
  */
1206
- interface PageGeometryRun {
1612
+ interface UprightGeometryRun {
1207
1613
  rect: PdfRect;
1208
1614
  charStart: number;
1209
1615
  glyphs: PageGeometryGlyph[];
1210
1616
  fontSize?: number;
1211
1617
  }
1618
+ /**
1619
+ * A run whose char matrix is NOT upright (rotated, sheared, or mirrored).
1620
+ *
1621
+ * `rect` stays a page-space AABB (culling), like every other wire rect.
1622
+ * `rotation` is the baseline angle in radians, CCW in PDF y-up space
1623
+ * (`atan2(m.b, m.a)` of the run's char matrix). Note a shear-only run has
1624
+ * `rotation === 0` and still uses this variant — its cells are
1625
+ * parallelograms an AABB would misrepresent. `ascentFlip` is true when the
1626
+ * ascent vector maps opposite the rotated frame's +y (mirrored /
1627
+ * negative-determinant content).
1628
+ */
1629
+ interface RotatedGeometryRun {
1630
+ rect: PdfRect;
1631
+ charStart: number;
1632
+ glyphs: RotatedGeometryGlyph[];
1633
+ rotation: number;
1634
+ ascentFlip: boolean;
1635
+ fontSize?: number;
1636
+ }
1637
+ /**
1638
+ * One text run (contiguous glyphs sharing a text object and orientation).
1639
+ * A discriminated union so consumers CANNOT read axis-aligned boxes off
1640
+ * rotated text by accident — handling orientation is a compile-time
1641
+ * obligation, not a runtime discovery. Narrow with
1642
+ * {@link isRotatedGeometryRun}, or use the uniform {@link glyphLooseQuad} /
1643
+ * {@link glyphLooseBounds} views.
1644
+ */
1645
+ type PageGeometryRun = UprightGeometryRun | RotatedGeometryRun;
1212
1646
  /**
1213
1647
  * Geometry-only text layout for one page, in PDF user space (y-up). The v3
1214
1648
  * viewer converts to content/view space via the page geometry matrix.
@@ -1220,6 +1654,22 @@ interface PageGeometryRun {
1220
1654
  interface PageGeometrySnapshot {
1221
1655
  runs: PageGeometryRun[];
1222
1656
  }
1657
+ /** Narrowing guard: is this run the rotated (non-upright) variant? */
1658
+ declare function isRotatedGeometryRun(run: PageGeometryRun): run is RotatedGeometryRun;
1659
+ /**
1660
+ * Uniform oriented-cell view over either run variant: the glyph's loose cell
1661
+ * as a quad (synthesized from the box corners when the run is upright, in
1662
+ * the same frame-geometric slot order).
1663
+ */
1664
+ declare function glyphLooseQuad(run: PageGeometryRun, index: number): PdfQuad;
1665
+ /**
1666
+ * Uniform AABB view over either run variant: the glyph's loose box, or the
1667
+ * enclosing bounds of its oriented cell when the run is rotated. The
1668
+ * conservative envelope for consumers that genuinely want a box (culling,
1669
+ * scroll targets) — never a substitute for handling orientation in geometry
1670
+ * that gets DRAWN.
1671
+ */
1672
+ declare function glyphLooseBounds(run: PageGeometryRun, index: number): PdfRect;
1223
1673
  //#endregion
1224
1674
  //#region src/dto/PageRender.d.ts
1225
1675
  type PageRenderEncodedFormat = 'png' | 'webp' | 'bmp';
@@ -1426,8 +1876,8 @@ interface AnnotationAppearancesQuery {
1426
1876
  * (y-up), so the consumer can place the bitmap without a second read.
1427
1877
  *
1428
1878
  * Rotation convention: for annotations whose rotation lives in the AP
1429
- * `/Matrix` — box-family kinds (square/circle/free-text/stamp) whose DTO
1430
- * carries BOTH `rotation` and `unrotatedRect` — the raster renders
1879
+ * `/Matrix` — box-family kinds (square/circle/free-text/stamp/caret) whose
1880
+ * DTO carries BOTH `rotation` and `unrotatedRect` — the raster renders
1431
1881
  * ROTATION-STRIPPED and `rect` is the logical `unrotatedRect`; the consumer
1432
1882
  * re-applies the DTO's `rotation` as a view transform about the box centre
1433
1883
  * (e.g. CSS `rotate`), which makes the raster rotation-invariant (rotating
@@ -1586,6 +2036,14 @@ declare const EngineErrorCode: {
1586
2036
  readonly DocOpenFailed: "DocOpenFailed";
1587
2037
  readonly DocPasswordRequired: "DocPasswordRequired";
1588
2038
  readonly DocPasswordIncorrect: "DocPasswordIncorrect";
2039
+ /**
2040
+ * A share-token exchange (`open({ kind: 'share' })`) needs the grant's
2041
+ * passphrase: none was supplied, or the supplied one was rejected —
2042
+ * indistinguishable by design, mirroring the server. Prompt and retry
2043
+ * with `sharePassword`. Distinct from `DocPasswordRequired`, which is
2044
+ * about the PDF's own encryption password.
2045
+ */
2046
+ readonly SharePasswordRequired: "SharePasswordRequired";
1589
2047
  readonly Aborted: "Aborted";
1590
2048
  readonly Network: "Network";
1591
2049
  readonly Unauthenticated: "Unauthenticated";
@@ -1760,6 +2218,13 @@ interface AnnotationBase {
1760
2218
  rect: PdfRect;
1761
2219
  /** /Contents text. */
1762
2220
  contents: string | null;
2221
+ /**
2222
+ * `/Subj` — short subject line of a markup annotation (ISO 32000
2223
+ * §12.5.6.2, Table 172). Normalized onto the base like `contents` /
2224
+ * `author`: non-markup subtypes simply read `null`. Faithful read:
2225
+ * `null` iff the key is absent (a present-but-empty `/Subj` reads `''`).
2226
+ */
2227
+ subject: string | null;
1763
2228
  /** /T author. */
1764
2229
  author: string | null;
1765
2230
  /** ISO 8601 from /CreationDate. */
@@ -1843,6 +2308,8 @@ interface AnnotationBase {
1843
2308
  */
1844
2309
  interface AnnotationPatchBase {
1845
2310
  contents?: string | null;
2311
+ /** `/Subj`, three-state like `contents`: undefined=leave, null=remove, value=set. */
2312
+ subject?: string | null;
1846
2313
  /** New appearance blend mode. Omit to preserve the current effective mode. */
1847
2314
  blendMode?: BlendMode;
1848
2315
  /**
@@ -2371,6 +2838,64 @@ declare function refKey(ref: AnnotationRef): string;
2371
2838
  */
2372
2839
  declare function buildThreads(annotations: readonly AnnotationDTO[]): AnnotationThread[];
2373
2840
  //#endregion
2841
+ //#region src/annotation/comments.d.ts
2842
+ /** One reviewer's status, derived from an ISO §12.5.6.3 state annotation. */
2843
+ interface ReviewStatus {
2844
+ /** Wire-normalized when known (`'accepted'`, …); verbatim when custom. */
2845
+ state: string;
2846
+ /** `'review'`, `'marked'`, or a custom model verbatim. */
2847
+ stateModel: string;
2848
+ /** Reviewer key: `/EMBD_Metadata` userId, else `/T`, else null. */
2849
+ by: string | null;
2850
+ /** `/M` ?? `/CreationDate` of the state annotation (ISO 8601). */
2851
+ at: string | null;
2852
+ /** The state annotation itself — for auditing or deletion. */
2853
+ ref: AnnotationRef;
2854
+ }
2855
+ /**
2856
+ * Review state of one thread. The two ISO state models are independent
2857
+ * axes: `byReviewer` / `lastChange` cover the review axis (the standard
2858
+ * `Review` model plus custom models), while the personal-checkmark
2859
+ * `Marked` axis lives solely in `markedBy`.
2860
+ */
2861
+ interface CommentThreadReview {
2862
+ /** Latest review-axis status per reviewer key (unattributed skipped). */
2863
+ byReviewer: Record<string, ReviewStatus>;
2864
+ /** Latest review-axis change overall — a convenience, NOT a verdict. */
2865
+ lastChange: ReviewStatus | null;
2866
+ /** Reviewer keys whose latest Marked-model status is `'marked'`. */
2867
+ markedBy: string[];
2868
+ /**
2869
+ * Every state annotation in the thread's subtree (both axes, all
2870
+ * reviewers, chronological) — thread MEMBERSHIP, not status history:
2871
+ * deleting a whole thread must delete its state annotations too, and
2872
+ * the classified summaries above deliberately drop superseded refs.
2873
+ */
2874
+ statusRefs: AnnotationRef[];
2875
+ /** `byReviewer[currentUserId]`; only set when the option was given. */
2876
+ mine?: ReviewStatus | null;
2877
+ }
2878
+ interface CommentThread<T extends AnnotationDTO = AnnotationDTO> {
2879
+ root: T;
2880
+ pageObjectNumber: PageObjectNumber;
2881
+ /** Whole-subtree replies, flattened chronologically; states excluded. */
2882
+ replies: T[];
2883
+ /** Every `/RT /Group` subordinate found in the subtree. */
2884
+ groupedParts: T[];
2885
+ review: CommentThreadReview;
2886
+ }
2887
+ interface BuildCommentThreadsOptions {
2888
+ /** Compute `review.mine` against this reviewer key. */
2889
+ currentUserId?: string;
2890
+ }
2891
+ /**
2892
+ * An ISO 32000 §12.5.6.3 state annotation: a text annotation carrying a
2893
+ * non-empty `/State` or `/StateModel`. Classification never relies on
2894
+ * flags — producers disagree on how state annotations are flagged.
2895
+ */
2896
+ declare function isStateAnnotation(a: AnnotationDTO): boolean;
2897
+ declare function buildCommentThreads(annotations: readonly AnnotationDTO[], opts?: BuildCommentThreadsOptions): CommentThread[];
2898
+ //#endregion
2374
2899
  //#region src/dto/LayerScopes.d.ts
2375
2900
  /**
2376
2901
  * Plane-scope block: a layer is a set of per-plane DELTAS
@@ -2455,6 +2980,19 @@ interface DocumentManifest {
2455
2980
  * caches stay warm across unrelated edits (the `layoutVersion` design).
2456
2981
  */
2457
2982
  attachmentsVersion: number;
2983
+ /**
2984
+ * Doc-level pin for the immutable whole-document annotation listing
2985
+ * (`/annotations/items@annotationsVersion=N`) — the cloud's one-request
2986
+ * hydration read. Bumps ONLY when annotation list BODIES change —
2987
+ * annotation create/update/delete/move, page insert/delete,
2988
+ * redaction-apply, flatten, and form field/widget structure — and
2989
+ * deliberately NOT on form value writes (widget DTOs carry no value;
2990
+ * only `/AP` rasters change, which the per-page `annotationVersion`
2991
+ * covers), metadata, attachments, or page move/rotate (bulk page order
2992
+ * is unspecified by contract). The same independent-cadence design as
2993
+ * `layoutVersion` / `metadataVersion`.
2994
+ */
2995
+ annotationsVersion: number;
2458
2996
  /**
2459
2997
  * Audit-log head at this manifest's state — written in the same
2460
2998
  * transaction as the version bumps, so an event subscriber that starts
@@ -2473,61 +3011,6 @@ interface DocumentManifest {
2473
3011
  pages: ManifestPage[];
2474
3012
  }
2475
3013
  //#endregion
2476
- //#region src/dto/PdfDestination.d.ts
2477
- /**
2478
- * An explicit PDF destination (ISO 32000-1 §12.3.2.2): a page, a location,
2479
- * and a magnification. Produced by outlines/bookmarks, link annotations,
2480
- * `/OpenAction`, and GoTo actions; named destinations resolve to one of
2481
- * these through the catalog's `/Dests` dictionary or name tree — the
2482
- * ENGINE does that resolution, so the viewer only ever sees this explicit
2483
- * form.
2484
- *
2485
- * Coordinates are PDF user space (y-up, points, absolute — NOT
2486
- * crop-relative). `null` means "retain the current value" (the spec's
2487
- * meaning for null array entries); a `/XYZ` zoom of `0` is equivalent to
2488
- * null. The `fitB*` kinds refer to the page's content BOUNDING box rather
2489
- * than the crop box.
2490
- *
2491
- * Viewers translate these onto the stage's reveal primitive — see
2492
- * `destinationToReveal` in `@embedpdf/plugin-stage`.
2493
- */
2494
- type PdfDestination = {
2495
- kind: 'xyz';
2496
- pageObjectNumber: PageObjectNumber;
2497
- left?: number | null;
2498
- top?: number | null;
2499
- zoom?: number | null;
2500
- } | {
2501
- kind: 'fit';
2502
- pageObjectNumber: PageObjectNumber;
2503
- } | {
2504
- kind: 'fitH';
2505
- pageObjectNumber: PageObjectNumber;
2506
- top?: number | null;
2507
- } | {
2508
- kind: 'fitV';
2509
- pageObjectNumber: PageObjectNumber;
2510
- left?: number | null;
2511
- } | {
2512
- kind: 'fitR';
2513
- pageObjectNumber: PageObjectNumber;
2514
- left: number;
2515
- bottom: number;
2516
- right: number;
2517
- top: number;
2518
- } | {
2519
- kind: 'fitB';
2520
- pageObjectNumber: PageObjectNumber;
2521
- } | {
2522
- kind: 'fitBH';
2523
- pageObjectNumber: PageObjectNumber;
2524
- top?: number | null;
2525
- } | {
2526
- kind: 'fitBV';
2527
- pageObjectNumber: PageObjectNumber;
2528
- left?: number | null;
2529
- };
2530
- //#endregion
2531
3014
  //#region src/dto/PdfLinkTarget.d.ts
2532
3015
  /**
2533
3016
  * Where a link annotation points, NORMALIZED. A link may carry either a
@@ -2604,6 +3087,14 @@ type PdfLinkTargetWritable = Extract<PdfLinkTarget, {
2604
3087
  interface CacheDelta {
2605
3088
  previousDocVersion: number;
2606
3089
  docVersion: number;
3090
+ /**
3091
+ * New doc-level bulk annotations pin, present when this mutation bumped
3092
+ * it (annotation CRUD, page insert/delete, redaction, flatten, form
3093
+ * structure — see `DocumentManifest.annotationsVersion`). Absorbing it
3094
+ * keeps the client's cached manifest addressing the fresh bulk leaf
3095
+ * without a 404-refresh round trip.
3096
+ */
3097
+ annotationsVersion?: number;
2607
3098
  pages: Array<{
2608
3099
  pageObjectNumber: PageObjectNumber;
2609
3100
  cache: CachePins;
@@ -3316,6 +3807,59 @@ type FormFieldValue = {
3316
3807
  /** Serialized form-data interchange formats. */
3317
3808
  type FormDataFormat = 'fdf' | 'xfdf';
3318
3809
  //#endregion
3810
+ //#region src/forms/submission.d.ts
3811
+ /**
3812
+ * One resolved entry of a form submission. The viewer resolved it with the
3813
+ * ISO 32000-2 Table 239/240 semantics already applied (Include/Exclude +
3814
+ * descendants, the unconditional NoExport veto, push-button and
3815
+ * unsupported-value exclusion), so the home never re-derives selection.
3816
+ * `value === null` is a NAME-ONLY entry (the IncludeNoValueFields shape);
3817
+ * `string[]` is a multi-select list box.
3818
+ */
3819
+ interface FormSubmissionEntry {
3820
+ name: string;
3821
+ value: string | string[] | null;
3822
+ }
3823
+ /**
3824
+ * What a submit-capable document HOME receives — the resolved dataset plus
3825
+ * the document's declared intent as METADATA. The stack never fetches the
3826
+ * declared URL itself (a PDF-controlled URL reaching a server-side fetcher
3827
+ * is the SSRF class this contract exists to prevent); the home stores the
3828
+ * intent so its consumers can decide what to honor.
3829
+ *
3830
+ * Deliberately ABSENT: identity. The home derives who submitted from its
3831
+ * OWN verified session (the JWT it authenticated) — a client-supplied
3832
+ * identity would be a spoofing surface.
3833
+ */
3834
+ interface FormSubmissionRequest {
3835
+ entries: FormSubmissionEntry[];
3836
+ /** The document's declared routing wish, verbatim (metadata, not orders).
3837
+ * `url` is null for scripted submits that named no target. */
3838
+ intent: {
3839
+ url: string | null;
3840
+ format: 'fdf' | 'html' | 'xfdf' | 'pdf';
3841
+ method: 'post' | 'get';
3842
+ /** Raw ISO Table 240 flag word (0 for scripted submits without one). */
3843
+ flagsRaw: number;
3844
+ /** /CharSet (PDF 2.0), extracted but never encoded by this stack. */
3845
+ charSet?: string;
3846
+ };
3847
+ /** How the submission was triggered — the viewer-derived origin axis. */
3848
+ origin: 'user' | 'hover' | 'lifecycle';
3849
+ /** Client wall-clock, milliseconds since epoch. Informational — the home
3850
+ * stamps its own authoritative `receivedAt`. */
3851
+ clientTimeMs: number;
3852
+ }
3853
+ /** The home's acknowledgment: the stored submission's durable identity. */
3854
+ interface FormSubmissionReceipt {
3855
+ submissionId: string;
3856
+ /** ISO 8601, the home's clock. */
3857
+ receivedAt: string;
3858
+ }
3859
+ declare const FormSubmissionEntrySchema: z.ZodType<FormSubmissionEntry>;
3860
+ declare const FormSubmissionRequestSchema: z.ZodType<FormSubmissionRequest>;
3861
+ declare const FormSubmissionReceiptSchema: z.ZodType<FormSubmissionReceipt>;
3862
+ //#endregion
3319
3863
  //#region src/forms/effects.d.ts
3320
3864
  type FormFieldDisplay = 'visible' | 'hidden' | 'noPrint' | 'noView';
3321
3865
  /** Ordered, committed outputs of one client-side form script run. */
@@ -3438,6 +3982,85 @@ interface FormRepairResult {
3438
3982
  meta: MutationMeta;
3439
3983
  }
3440
3984
  //#endregion
3985
+ //#region src/text/layout.d.ts
3986
+ /**
3987
+ * One merged visual line of a text range, in PDF user space. `quad` is the
3988
+ * geometric authority (frame-geometric slot order: `p1..p4` = upper-start,
3989
+ * upper-end, lower-start, lower-end — visual semantics, NOT reading order);
3990
+ * `rect` is its axis-aligned bounds, produced by the same constructor.
3991
+ * `advance` is the READING direction along the baseline, derived from the
3992
+ * glyph SEQUENCE (+1 = the frame's +x), never inferred from geometry.
3993
+ */
3994
+ interface PdfTextSegment {
3995
+ quad: PdfQuad;
3996
+ rect: PdfRect;
3997
+ advance: 1 | -1;
3998
+ }
3999
+ /** One glyph in its frame's space. `loose` builds segments; `tight` hit-tests. */
4000
+ interface TextLayoutGlyph {
4001
+ loose: PdfRect;
4002
+ tight?: PdfRect;
4003
+ flags: number;
4004
+ }
4005
+ /** A contiguous run of glyphs (a text object) in one frame. */
4006
+ interface TextLayoutRun {
4007
+ /** First char index — identical to the flat glyph index (runs tile the page). */
4008
+ charStart: number;
4009
+ count: number;
4010
+ /** Frame-local loose box (page space itself in frame 0). */
4011
+ rect: PdfRect;
4012
+ fontSize?: number;
4013
+ /** Index into {@link PageTextLayout.frames}; 0 = page space (upright). */
4014
+ frame: number;
4015
+ }
4016
+ /** An orientation cluster's orthonormal basis in page space. */
4017
+ interface TextLayoutFrame {
4018
+ /** Unit vector along the reading baseline (+x of the frame). */
4019
+ baseline: PdfPoint;
4020
+ /** Unit vector toward the ascent side (+y of the frame), ⟂ baseline. */
4021
+ ascent: PdfPoint;
4022
+ }
4023
+ /**
4024
+ * A page's text laid out per-frame: a flat glyph list (index = text-page
4025
+ * char index), the run structure, and the orientation frames.
4026
+ */
4027
+ interface PageTextLayout {
4028
+ glyphs: TextLayoutGlyph[];
4029
+ runs: TextLayoutRun[];
4030
+ frames: TextLayoutFrame[];
4031
+ }
4032
+ /**
4033
+ * Flatten a page's geometry snapshot into the canonical layout. Upright runs
4034
+ * copy their wire boxes verbatim (frame 0 — byte-identical to the
4035
+ * pre-orientation behavior, wire run rects included); rotated runs project
4036
+ * their glyph cells into their cluster's frame.
4037
+ */
4038
+ declare function buildPageTextLayout(snapshot: PageGeometrySnapshot): PageTextLayout;
4039
+ /**
4040
+ * The glyph (char) index at a page-space point, or null when nothing is near
4041
+ * (so callers can show the pointer cursor off-text). PDFium `GetIndexAtPos`:
4042
+ * exact tight-box containment first, then a tolerance pass (closest by
4043
+ * Manhattan distance within `toleranceFactor × average glyph height`). Each
4044
+ * run tests the point in ITS OWN frame, so rotated text hit-tests exactly.
4045
+ */
4046
+ declare function textGlyphAt(layout: PageTextLayout, point: PdfPoint, toleranceFactor?: number): number | null;
4047
+ /** Double-click: the word around `glyph` (walk to space/empty glyphs both ways). */
4048
+ declare function expandTextRangeToWord(layout: PageTextLayout, glyph: number): [number, number];
4049
+ /** Triple-click: the full visual line — SAME-FRAME runs whose vertical extent
4050
+ * overlaps the anchor run's. A differently-oriented run is a line boundary. */
4051
+ declare function expandTextRangeToLine(layout: PageTextLayout, glyph: number): [number, number];
4052
+ /**
4053
+ * A single glyph's oriented cell in page space, or null for degenerate
4054
+ * glyphs — the anchor for caret placement at a selection boundary.
4055
+ */
4056
+ declare function textGlyphQuad(layout: PageTextLayout, glyph: number): PdfQuad | null;
4057
+ /**
4058
+ * Merged visual-line segments for the half-open char range
4059
+ * `[charStart, charStart + charCount)` — THE canonical segmentation. Chars
4060
+ * outside the layout are ignored.
4061
+ */
4062
+ declare function textSegmentsForRange(layout: PageTextLayout, charStart: number, charCount: number): PdfTextSegment[];
4063
+ //#endregion
3441
4064
  //#region src/search/types.d.ts
3442
4065
  /**
3443
4066
  * What to search for — THE one shape, engine → wire → plugin state →
@@ -3548,19 +4171,26 @@ interface SearchSnippet {
3548
4171
  matchLength: number;
3549
4172
  }
3550
4173
  /**
3551
- * One hit. `charStart`/`charCount` index the page's text-page character
3552
- * space — the same space as `PageTextSnapshot.text` offsets and
3553
- * `PageGeometryRun.charStart` — so a match joins the selection subsystem
3554
- * (extend-selection-from-match, highlight annotations) without any
3555
- * re-mapping. `rects` are merged line boxes in PDF user space (y-up),
3556
- * built by the same line-merge as text selection — matches highlight
3557
- * exactly like selections, one rect per visual line, never per glyph.
4174
+ * One hit. `charStart`/`charCount` are a half-open range in the page's
4175
+ * CHARACTER space — the space `PageGeometryRun.charStart` tiles and
4176
+ * selection ranges live in, NOT string offsets into `PageTextSnapshot.text`
4177
+ * (engines convert match string-ranges through the snapshot's `charMap`
4178
+ * before building the hit; see engine-core `text/charmap.ts`). That is what
4179
+ * lets a match join the selection subsystem — select-this-match, markup
4180
+ * creation — with no re-mapping, and it means zero-width characters
4181
+ * adjacent to the matched text are never inside the range. Snippet offsets
4182
+ * are the one exception: they are string offsets INTERNAL to the snippet's
4183
+ * own `text`. `segments` are the CANONICAL visual-line segments (the same
4184
+ * engine-core text layout selection uses) — a match highlights exactly like
4185
+ * a selection of the same characters, one oriented segment per visual line,
4186
+ * never per glyph. Each segment carries the exact quad, its AABB `rect`,
4187
+ * and the reading `advance`.
3558
4188
  */
3559
4189
  interface SearchMatch {
3560
4190
  pageObjectNumber: PageObjectNumber;
3561
4191
  charStart: number;
3562
4192
  charCount: number;
3563
- rects: PdfRect[];
4193
+ segments: PdfTextSegment[];
3564
4194
  snippet?: SearchSnippet;
3565
4195
  }
3566
4196
  /**
@@ -3724,10 +4354,14 @@ declare function buildSnippet(text: string, range: SearchMatchRange, context?: n
3724
4354
  //#endregion
3725
4355
  //#region src/search/rects.d.ts
3726
4356
  /**
3727
- * Merged line rects for the text-page char range
3728
- * `[charStart, charStart + charCount)`. Ranges index the same space as
3729
- * `PageGeometryRun.charStart`; chars outside the snapshot are ignored.
4357
+ * Match-range → canonical visual-line segments. Thin wrappers over the ONE
4358
+ * text layout (`src/text/layout.ts`) — search owns matching and cursors,
4359
+ * never segmentation, so a match highlights exactly like a selection of the
4360
+ * same characters. No frame or merge logic lives here.
3730
4361
  */
4362
+ /** Canonical segments for `[charStart, charStart + charCount)`. */
4363
+ declare function searchSegmentsForRange(snapshot: PageGeometrySnapshot, charStart: number, charCount: number): PdfTextSegment[];
4364
+ /** The segments' AABBs — for consumers that genuinely want boxes. */
3731
4365
  declare function searchRectsForRange(snapshot: PageGeometrySnapshot, charStart: number, charCount: number): PdfRect[];
3732
4366
  //#endregion
3733
4367
  //#region src/search/epoch.d.ts
@@ -3917,6 +4551,29 @@ interface PageInsertResult {
3917
4551
  cache: PageStructureCache | null;
3918
4552
  }
3919
4553
  //#endregion
4554
+ //#region src/mutation/PageInsertBlankInput.d.ts
4555
+ /**
4556
+ * Upper bound on `count` for a single `pages.insertBlank()` call. A CONTRACT
4557
+ * cap, enforced identically by every engine (the cloud input schema carries
4558
+ * the same number), so a UI never discovers a lower server limit by surprise.
4559
+ * Larger batches are a loop at the call site.
4560
+ */
4561
+ declare const PAGE_INSERT_BLANK_MAX_COUNT = 100;
4562
+ /**
4563
+ * Spec for `pages.insertBlank()`: create `count` blank pages of `size`.
4564
+ *
4565
+ * `size` is explicit and in PDF points, un-rotated — the same convention as
4566
+ * `PageLayout.size`. The "match my neighbour" default developers expect is a
4567
+ * registry read, so it lives in the page-edit capability, not here: the
4568
+ * engine wire never guesses (the `rotateBy` law).
4569
+ */
4570
+ interface PageInsertBlankSpec {
4571
+ /** Page size in PDF points. Both dimensions must be finite and > 0. */
4572
+ size: PdfSize;
4573
+ /** Pages to create, in `[1, PAGE_INSERT_BLANK_MAX_COUNT]`. Default 1. */
4574
+ count?: number;
4575
+ }
4576
+ //#endregion
3920
4577
  //#region src/mutation/PageFlattenResult.d.ts
3921
4578
  type PageFlattenUsage = 'display' | 'print';
3922
4579
  type PageFlattenStatus = 'applied' | 'unchanged' | 'failed' | 'skipped';
@@ -4388,12 +5045,16 @@ interface LinkPatch extends AnnotationPatchBase {
4388
5045
  target?: PdfLinkTargetWritable | null;
4389
5046
  }
4390
5047
  //#endregion
4391
- //#region src/annotation/kinds/link/schema.d.ts
5048
+ //#region src/dto/PdfDestination.schema.d.ts
4392
5049
  /**
4393
- * Runtime schema for {@link PdfDestination}. Lives with the link kind (its
4394
- * first wire consumer); the outline/bookmark port reuses it from here.
5050
+ * Runtime schema for {@link PdfDestination}. Lives beside its DTO in `dto/`
5051
+ * so every destination-shaped surface (link targets, action-node payloads,
5052
+ * the document `openDestination`) shares one schema without an import cycle
5053
+ * through the annotation tree.
4395
5054
  */
4396
5055
  declare const PdfDestinationSchema: z.ZodType<PdfDestination>;
5056
+ //#endregion
5057
+ //#region src/annotation/kinds/link/schema.d.ts
4397
5058
  declare const PdfLinkTargetSchema: z.ZodType<PdfLinkTarget>;
4398
5059
  /** Drafts/patches only author `goto`/`uri` — see {@link PdfLinkTargetWritable}. */
4399
5060
  declare const PdfLinkTargetWritableSchema: z.ZodType<PdfLinkTargetWritable>;
@@ -4558,6 +5219,9 @@ interface CaretDraft extends AnnotationDraftBase, ColorStyleDraftFields {
4558
5219
  rect: PdfRect;
4559
5220
  /** `/RD` inset of the drawn caret from `/Rect`. */
4560
5221
  rectDifferences?: PdfRectDifferences | null;
5222
+ /** Tri-state box-rotation pair (see the DTO): omitted/`null` = upright. */
5223
+ rotation?: number | null;
5224
+ unrotatedRect?: PdfRect | null;
4561
5225
  }
4562
5226
  //#endregion
4563
5227
  //#region src/annotation/kinds/caret/dto.d.ts
@@ -4565,6 +5229,12 @@ interface CaretDraft extends AnnotationDraftBase, ColorStyleDraftFields {
4565
5229
  * Caret annotation — a visual marker for a proposed text insertion or edit
4566
5230
  * point. It carries no geometry of its own beyond `/Rect`: just a `/C` color,
4567
5231
  * `/CA` opacity, and an optional `/RD` inset of the drawn symbol from `/Rect`.
5232
+ *
5233
+ * A caret anchored to ROTATED text carries the box-family rotation pair:
5234
+ * `rotation` (`/EMBD_Metadata/Rotation`, PDF-convention degrees) tilts the
5235
+ * baked symbol to ride its text's baseline, `unrotatedRect` is the logical
5236
+ * box, and `/Rect` stays the rotated visual AABB — exactly the shape/free-text
5237
+ * contract, so the generic AP machinery bakes it.
4568
5238
  */
4569
5239
  type CaretAnnotationDTO = AnnotationBase & ColorStyleFields & {
4570
5240
  subtype: 'caret';
@@ -4572,6 +5242,10 @@ type CaretAnnotationDTO = AnnotationBase & ColorStyleFields & {
4572
5242
  intent: CaretIntent | null;
4573
5243
  /** `/RD` inset of the drawn caret from `/Rect`; `null` when absent. */
4574
5244
  rectDifferences: PdfRectDifferences | null;
5245
+ /** `/EMBD_Metadata/Rotation` — degrees, normalized `[0,360)`. */
5246
+ rotation?: number;
5247
+ /** `/EMBD_Metadata/UnrotatedRect` — the logical box (required when rotation != 0). */
5248
+ unrotatedRect?: PdfRect;
4575
5249
  };
4576
5250
  //#endregion
4577
5251
  //#region src/annotation/kinds/caret/patch.d.ts
@@ -4581,6 +5255,10 @@ interface CaretPatch extends AnnotationPatchBase, ColorStylePatchFields {
4581
5255
  rect?: PdfRect;
4582
5256
  /** Tri-state: omitted preserves, a value sets, `null` removes `/RD`. */
4583
5257
  rectDifferences?: PdfRectDifferences | null;
5258
+ /** Tri-state: omitted preserves, `null`/`0` flattens, a value sets (needs the box). */
5259
+ rotation?: number | null;
5260
+ /** Tri-state: omitted preserves, `null` removes, a value sets. */
5261
+ unrotatedRect?: PdfRect | null;
4584
5262
  }
4585
5263
  //#endregion
4586
5264
  //#region src/annotation/kinds/caret/schema.d.ts
@@ -4608,6 +5286,16 @@ interface TextDraft extends AnnotationDraftBase, ColorStyleDraftFields {
4608
5286
  rect: PdfRect;
4609
5287
  /** `/Name` icon. Default `'note'` (the ISO 32000 default). */
4610
5288
  icon?: NoteIcon;
5289
+ /**
5290
+ * Write `/State` + `/StateModel`, making this draft an ISO 32000
5291
+ * §12.5.6.3 review-status reply (pair with `inReplyTo` → the annotation
5292
+ * under review). `state` requires `stateModel` — the engine throws
5293
+ * `InvalidArg` otherwise. `stateModel` alone is valid: the model's
5294
+ * default state applies (`none` for review, `unmarked` for marked).
5295
+ */
5296
+ state?: AnnotationState;
5297
+ /** See {@link state}. */
5298
+ stateModel?: AnnotationStateModel;
4611
5299
  }
4612
5300
  //#endregion
4613
5301
  //#region src/annotation/kinds/text/dto.d.ts
@@ -4621,6 +5309,17 @@ type TextAnnotationDTO = AnnotationBase & ColorStyleFields & {
4621
5309
  subtype: 'text';
4622
5310
  /** `/Name` icon; an absent `/Name` reads as `'note'` (the ISO default). */
4623
5311
  icon: NoteIcon;
5312
+ /**
5313
+ * `/State` — ISO 32000 §12.5.6.3 annotation state, carried by a
5314
+ * review-status reply (a text annotation whose `inReplyTo` points at
5315
+ * the annotation being reviewed). Faithful read: `null` iff the key
5316
+ * is absent. ISO defaulting — a `stateModel` present with no explicit
5317
+ * `state` implies `none` (review) / `unmarked` (marked) — is a
5318
+ * thread-composer concern, deliberately not applied here.
5319
+ */
5320
+ state: AnnotationState | null;
5321
+ /** `/StateModel` — see {@link state}. `null` iff the key is absent. */
5322
+ stateModel: AnnotationStateModel | null;
4624
5323
  };
4625
5324
  //#endregion
4626
5325
  //#region src/annotation/kinds/text/patch.d.ts
@@ -4628,6 +5327,10 @@ interface TextPatch extends AnnotationPatchBase, ColorStylePatchFields {
4628
5327
  subtype: 'text';
4629
5328
  rect?: PdfRect;
4630
5329
  icon?: NoteIcon;
5330
+ /** `/State`, three-state: undefined=leave, null=remove the entry, value=set. */
5331
+ state?: AnnotationState | null;
5332
+ /** `/StateModel`, three-state: undefined=leave, null=remove the entry, value=set. */
5333
+ stateModel?: AnnotationStateModel | null;
4631
5334
  }
4632
5335
  //#endregion
4633
5336
  //#region src/annotation/kinds/text/schema.d.ts
@@ -5019,11 +5722,27 @@ declare const AnnotationPatchSchema: z.ZodType<WireAnnotationPatch>;
5019
5722
  /**
5020
5723
  * Whole-document raw read response. Returned by
5021
5724
  * `DocumentAnnotationsService.listRawAll()` and over the wire as the
5022
- * cloud layer annotation reads. Page order matches the document's
5023
- * page index.
5725
+ * cloud layer annotation reads.
5726
+ *
5727
+ * One entry per page. ORDER IS UNSPECIFIED — the local engine serves
5728
+ * document order while the cloud engine serves manifest (pageObjectNumber
5729
+ * registry) order; join `pageState.pageObjectNumber` against
5730
+ * `pages.list()` when display order matters.
5024
5731
  */
5025
5732
  interface AnnotationListSnapshotAllPages {
5026
5733
  pages: AnnotationListPageSnapshot[];
5734
+ /**
5735
+ * Audit-log position this snapshot is consistent with (cloud only;
5736
+ * absent locally, where no audit log exists). Every page reflects
5737
+ * exactly the mutations with `serverId <= auditHead` and none newer —
5738
+ * the reads are pinned to one manifest, whose `auditHead` is written in
5739
+ * the same transaction as its version bumps.
5740
+ *
5741
+ * This is the reconciliation cursor for consumers that keep a snapshot
5742
+ * fresh from `doc.events`: drop events with `origin.serverId <=
5743
+ * auditHead` (already inside the snapshot), apply the rest.
5744
+ */
5745
+ auditHead?: number;
5027
5746
  }
5028
5747
  /**
5029
5748
  * Single-page raw or full read response. Returned by
@@ -5039,5 +5758,5 @@ interface AnnotationListPageSnapshot {
5039
5758
  annotations: AnnotationDTO[];
5040
5759
  }
5041
5760
  //#endregion
5042
- export { CaretDraftSchema as $, AnnotationIdentityQuality as $a, LayerScopes as $i, searchRectsForRange as $n, pdfQuadCorners as $o, ListBoxFieldDraft as $r, revisionTokensEqual as $s, CircleDraftSchema as $t, FileAttachmentWireDraftSchema as A, EmbeddedFileItem as Aa, PdfSize as Ac, AnnotationCreateResult as Ai, HighlightDraft as An, PageImageHandle as Ao, FormFieldDeleteResult as Ar, filterMatches as As, LineDraft as At, StampAnnotationDTO as B, BinarySource as Ba, PdfPageActions as Bc, changesAnnotationList as Bi, PageFlattenStatus as Bn, PageRenderOptions as Bo, FormFieldDisplay as Br, CollabEntity as Bs, PolygonPatch as Bt, RedactDraft as C, GeometryStyleDraftFields as Ca, InkList as Cc, ToggleFieldWidget as Ci, UnderlineAnnotationDTO as Cn, AnnotationAppearancesQuery as Co, SearchQuery as Cr, CollabTarget as Cs, LinkAnnotationDTO as Ct, FileAttachmentDTOSchema as D, AttachmentFileBase as Da, PdfQuad as Dc, FormWidgetRef as Di, HighlightPatchSchema as Dn, WeakAnnotationState as Do, SearchSnippet as Dr, checkSetGroup as Ds, LinePatchSchema as Dt, WidgetDraft as E, AttachmentContent as Ea, PdfPoint as Ec, FormFieldRef as Ei, HighlightDraftSchema as En, UNKNOWN_WEAK_ANNOTATION_STATE as Eo, SearchSliceBudget as Er, checkCollab as Es, LineDraftSchema as Et, StampDTOSchema as F, normalizeAnnotationPatch as Fa, PdfActionTree as Fc, AppearanceImpact as Fi, RedactionApplyScope as Fn, PageNetworkRenderFormat as Fo, FormWidgetLinkResult as Fr, validateScopeArray as Fs, PolylineAnnotationDTO as Ft, TextDTOSchema as G, ANNOTATION_SUBTYPES as Ga, CacheDelta as Gi, PageRotateResult as Gn, PageGeometryGlyph as Go, FormFieldPatch as Gr, ParsedCollab as Gs, VertexPatchFields as Gt, StampFit as H, WireResource as Ha, DocumentMetadataTrapped as Hc, shiftsExistingAnnotationIndices as Hi, PageInsertResult as Hn, PageRenderTarget as Ho, FormFieldValue as Hr, DocCapability as Hs, PolygonDraft as Ht, StampWireDraftSchema as I, BinaryMetadata as Ia, PdfActionType as Ic, AppearanceOutcome as Ii, RedactionApplyStatus as In, PageRaster as Io, FormEffect as Ir, PDF_BITS as Is, PolylineDraft as It, TextPatch as J, PDF_SUBTYPE_TO_CODE as Ja, PdfLinkTargetWritable as Ji, PageMoveResult as Jn, PageTextSnapshot as Jo, TextFieldPatch as Jr, ParsedWildcard as Js, SquarePatchSchema as Jt, TextDraftSchema as K, AnnotationSubtype as Ka, MutationMeta as Ki, PageRotateInput as Kn, PageGeometryRun as Ko, ListBoxFieldPatch as Kr, ParsedScope as Ks, SquareDTOSchema as Kt, StampWirePatchSchema as L, BinaryMimeType as La, PdfActionWarning as Lc, appearanceImpactOf as Li, PageFlattenInput as Ln, PageRenderBackground as Lo, FormEffectResult as Lr, decodePdfBits as Ls, PolygonDTOSchema as Lt, FileAttachmentPatch as M, NormalizedDraft as Ma, DocumentActionsSnapshot as Mc, AnnotationMoveResult as Mi, MetadataUpdateResult as Mn, PageImageOptions as Mo, FormImportResult as Mr, MissingIdentity as Ms, PolylineDraftSchema as Mt, FileAttachmentAnnotationDTO as N, NormalizedPatch as Na, NamedJavaScriptAction as Nc, AnnotationUpdateResult as Ni, RedactionApplyItemResult as Nn, PageImageResult as No, FormRepairResult as Nr, PermissionDenied as Ns, PolylinePatchSchema as Nt, FileAttachmentIconSchema as O, AttachmentFileInfo as Oa, PdfRect as Oc, decodeFieldRefKey as Oi, HighlightPatch as On, knownWeakAnnotationState as Oo, FormDataExport as Or, expandRawScope as Os, LinePatch as Ot, ResourceRefSchema as P, normalizeAnnotationDraft as Pa, PdfActionNode as Pc, AppearanceAction as Pi, RedactionApplyResult as Pn, PageImageSource as Po, FormSetValueResult as Pr, parseScope as Ps, PolylinePatch as Pt, CaretDTOSchema as Q, AnnotationBase as Qa, LayerScopePlane as Qi, searchContentEpoch as Qn, pdfQuadBounds as Qo, FormFieldOptionInput as Qr, RevisionToken as Qs, CircleDTOSchema as Qt, StampPatch as R, sniffBinaryMetadata as Ra, PdfAnnotationActions as Rc, semanticEqual as Ri, PageFlattenItemResult as Rn, PageRenderEncodedFormat as Ro, FormEffectStatus as Rr, AnnotationActor as Rs, PolygonDraftSchema as Rt, RedactAnnotationDTO as S, FilledStylePatchFields as Sa, CalloutLine as Sc, TextFieldDTO as Si, UnderlinePatch as Sn, AnnotationAppearanceRenderOptions as So, SearchMode as Sr, pdfPermissions as Ss, LinkPatch as St, WidgetAnnotationDTO as T, GeometryStylePatchFields as Ta, LinePoints as Tc, FormValueEntry as Ti, HighlightDTOSchema as Tn, PageState as To, SearchSlice as Tr, checkCapability as Ts, LineDTOSchema as Tt, StampWireDraft as U, WireResourceMap as Ua, AnnotationListMutationMeta as Ui, PageDeleteResult as Un, PageRenderViewport as Uo, CheckboxFieldPatch as Ur, IdentityClaims as Us, VertexAnnotationFields as Ut, StampDraft as V, ResourceRef as Va, DocumentMetadata as Vc, invalidatesWeakIndexRefs as Vi, PageFlattenUsage as Vn, PageRenderQuery as Vo, FormDataFormat as Vr, CollabFilter as Vs, PolygonAnnotationDTO as Vt, NoteIconSchema as W, resolveBinarySource as Wa, RefetchReason as Wi, PageDeleteInput as Wn, createPageImageHandle as Wo, ComboBoxFieldPatch as Wr, ParsedCapability as Ws, VertexDraftFields as Wt, NoteIcon as X, subtypeFromCode as Xa, DocumentManifest as Xi, PageMoveInput as Xn, PdfQuadCorners as Xo, ComboBoxFieldDraft as Xr, AnnotationDraftBase as Xs, SquareAnnotationDTO as Xt, TextAnnotationDTO as Y, PdfAnnotationSubtypeCode as Ya, PdfDestination as Yi, PageStructureCache as Yn, PdfOriginSize as Yo, CheckboxFieldDraft as Yr, PdfBits as Ys, SquarePatch as Yt, TextDraft as Z, AnnotationPatchBase as Za, ManifestPage as Zi, canonicalSearchQuery as Zn, normalizePdfRect as Zo, FormFieldDraft as Zr, AnnotationRef as Zs, SquareDraft as Zt, UnsupportedPatchSchema as _, ColorStyleDraftFields as _a, Rotation as _c, FormFieldOrigin as _i, SquigglyAnnotationDTO as _n, AnnotationAppearanceImagesResult as _o, SEARCH_FOLD_VERSION as _r, OpenOptions as _s, LinkDraftSchema as _t, AnnotationDTOSchema as a, AnnotationKindModule as aa, BlendMode as ac, WidgetAppearance as ai, ShapeDraftFields as an, SerializedEngineError as ao, SearchQueryValidation as ar, pdfRectWidth as as, FreeTextDraftSchema as at, UnsupportedAnnotationDTO as b, FilledStyleDraftFields as ba, StrikeoutIntent as bc, RadioFieldDTO as bi, UnderlineDraftSchema as bn, AnnotationAppearanceMode as bo, toOriginalRange as br, collab as bs, PdfLinkTargetSchema as bt, AnnotationKind as c, PatchOfKind as ca, FreeTextFont as cc, WidgetStyleFields as ci, StrikeoutDraftSchema as cn, EngineErrorCode as co, matchRegex as cr, PageLayout as cs, FreeTextAnnotationDTO as ct, AnnotationSubtypeOfKind as d, AttachmentsCache as da, LineEnding as dc, ComboBoxFieldDTO as di, StrikeoutAnnotationDTO as dn, FontSpec as do, foldOptionsFor as dr, OpenInput as ds, InkDraftSchema as dt, AnnotationRelationKind as ea, PageObjectNumber as ec, RadioFieldDraft as ei, CirclePatchSchema as en, AnnotationStableId as eo, SEARCH_SNIPPET_CONTEXT as er, pdfQuadFromCorners as es, CaretPatchSchema as et, KIND_BY_SUBTYPE as f, normalizeAttachmentFileSource as fa, LineEndings as fc, FormFieldBase as fi, StrikeoutDraft as fn, DEFAULT_PDF_SAVE_MODE as fo, matchLiteral as fr, OpenInputById as fs, InkPatchSchema as ft, UnsupportedDraftSchema as g, WireAttachmentFile as ga, Rect as gc, FormFieldOption as gi, SquigglyPatch as gn, AnnotationAppearanceImageOptions as go, FoldedText as gr, OpenInputToken as gs, LinkDTOSchema as gt, UnsupportedDTOSchema as h, FileAttachmentWireDraft as ha, Point as hc, FormFieldFlags as hi, SquigglyPatchSchema as hn, AnnotationAppearanceImage as ho, FoldOptions as hr, OpenInputLayerSource as hs, InkDraft as ht, AnnotationDTO as i, refKey as ia, AnnotationReplyType as ic, FormSnapshot as ii, ShapeAnnotationFields as in, EngineErrorOptions as io, SearchQueryIssue as ir, pdfRectToOriginSize as is, FreeTextDTOSchema as it, WireAttachmentFileSchema as j, EmbeddedFileRef as ja, ActionReadBudget as jc, AnnotationDeleteResult as ji, MetadataCache as jn, PageImageObjectUrl as jo, FormFieldUpdateResult as jr, InvalidScope as js, PolylineDTOSchema as jt, FileAttachmentPatchSchema as k, AttachmentFileSource as ka, PdfRotation as kc, encodeFieldRefKey as ki, HighlightAnnotationDTO as kn, PageImageBlobSource as ko, FormFieldCreateResult as kr, expandedCapabilities as ks, LineAnnotationDTO as kt, AnnotationPatch as l, AttachmentCreateResult as la, FreeTextIntent as lc, WidgetStylePatchFields as li, StrikeoutPatchSchema as ln, FontHandle as lo, validateSearchQuery as lr, PageRotation as ls, FreeTextDraft as lt, WireAnnotationPatch as m, FileAttachmentIcon as ma, PdfRectDifferences as mc, FormFieldFamily as mi, SquigglyDraftSchema as mn, CachePins as mo, wordBefore as mr, OpenInputLayerBytes as ms, InkAnnotationDTO as mt, AnnotationListSnapshotAllPages as n, buildThreads as na, AnnotationBorderStyle as nc, WidgetPlacement as ni, CircleAnnotationDTO as nn, encodeStableIdKey as no, matchPageText as nr, pdfRectHeight as ns, CaretAnnotationDTO as nt, AnnotationDraft as o, DTOOfKind as oa, CaretIntent as oc, WidgetAppearanceSchema as oi, ShapePatchFields as on, deserializeError as oo, SearchRegexIssue as or, PageListSnapshot as os, FreeTextPatchSchema as ot, WireAnnotationDraft as p, FileAttachmentDraft as pa, NO_ANNOTATION_FLAGS as pc, FormFieldDTO as pi, SquigglyDTOSchema as pn, PdfSaveMode as po, wordAt as pr, OpenInputBytes as ps, InkPatch as pt, TextPatchSchema as q, PDF_CODE_TO_SUBTYPE as qa, PdfLinkTarget as qi, PageMoveCache as qn, PageGeometrySnapshot as qo, RadioFieldPatch as qr, ParsedVirtual as qs, SquareDraftSchema as qt, ANNOTATION_KINDS as r, classifyRelation as ra, AnnotationFlags as rc, FormKind as ri, CircleDraft as rn, EngineError as ro, SEARCH_REGEX_MAX_LENGTH as rr, pdfRectSize as rs, CaretDraft as rt, AnnotationDraftSchema as s, DraftOfKind as sa, Color as sc, WidgetStyleDraftFields as si, StrikeoutDTOSchema as sn, serializeError as so, SearchRegexValidation as sr, PageBoxes as ss, FreeTextPatch as st, AnnotationListPageSnapshot as t, AnnotationThread as ta, isValidPageObjectNumber as tc, TextFieldDraft as ti, CirclePatch as tn, decodeStableIdKey as to, buildSnippet as tr, pdfRectFromOriginSize as ts, CaretPatch as tt, AnnotationPatchSchema as u, AttachmentDeleteResult as ua, InkIntent as uc, CheckboxFieldDTO as ui, StrikeoutPatch as un, FontKey as uo, validateSearchRegex as ur, MetadataPatch as us, InkDTOSchema as ut, UnsupportedPatch as v, ColorStyleFields as va, Size as vc, ListBoxFieldDTO as vi, SquigglyDraft as vn, AnnotationAppearanceManifest as vo, SearchMatchRange as vr, TokenSource as vs, LinkPatchSchema as vt, WidgetPatch as w, GeometryStyleFields as wa, InkStroke as wc, UnknownFieldDTO as wi, UnderlineDraft as wn, AnnotationAppearancesResult as wo, SearchRequest as wr, checkAnyCapability as ws, LinkDraft as wt, RedactPatch as x, FilledStyleFields as xa, TextAlignment as xc, SignatureFieldDTO as xi, UnderlinePatchSchema as xn, AnnotationAppearanceRaster as xo, SearchMatch as xr, materializePdfPermissions as xs, PdfLinkTargetWritableSchema as xt, UnsupportedDraft as y, ColorStylePatchFields as ya, StandardFont as yc, PushButtonFieldDTO as yi, UnderlineDTOSchema as yn, AnnotationAppearanceManifestEntry as yo, foldText as yr, caps as ys, PdfDestinationSchema as yt, StampWirePatch as z, BinaryPayload as za, PdfFieldActions as zc, AnnotationMutationKind as zi, PageFlattenResult as zn, PageRenderFormat as zo, FormEffectsResult as zr, CollabAction as zs, PolygonPatchSchema as zt };
5043
- //# sourceMappingURL=AnnotationListSnapshot-W0RCsyDE.d.cts.map
5761
+ export { CaretDraftSchema as $, AttachmentFileInfo as $a, Rect as $c, AnnotationUpdateResult as $i, canonicalSearchQuery as $n, knownWeakAnnotationState as $o, FormEffectsResult as $r, OpenInputLayerSource as $s, CircleDraftSchema as $t, FileAttachmentWireDraftSchema as A, AnnotationKindModule as Aa, ParsedCollab as Ac, CheckboxFieldDTO as Ai, isValidPageObjectNumber as Al, HighlightDraft as An, SerializedEngineError as Ao, SearchSnippet as Ar, charMapViolation as As, LineDraft as At, StampAnnotationDTO as B, FileAttachmentWireDraft as Ba, AnnotationFlags as Bc, RadioFieldDTO as Bi, PageFlattenStatus as Bn, AnnotationAppearanceImage as Bo, textGlyphQuad as Br, pdfRectHeight as Bs, PolygonPatch as Bt, RedactDraft as C, buildCommentThreads as Ca, AnnotationActor as Cc, FormKind as Ci, PdfFieldActions as Cl, UnderlineAnnotationDTO as Cn, AnnotationBase as Co, toOriginalRange as Cr, glyphLooseQuad as Cs, LinkAnnotationDTO as Ct, FileAttachmentDTOSchema as D, buildThreads as Da, DocCapability as Dc, WidgetStyleDraftFields as Di, decodeSubmitFormFlags as Dl, HighlightPatchSchema as Dn, encodeStableIdKey as Do, SearchRequest as Dr, CharMapAnchor as Ds, LinePatchSchema as Dt, WidgetDraft as E, AnnotationThread as Ea, CollabFilter as Ec, WidgetAppearanceSchema as Ei, SubmitFormPayload as El, HighlightDraftSchema as En, decodeStableIdKey as Eo, SearchQuery as Er, CharBoundaryBias as Es, LineDraftSchema as Et, StampDTOSchema as F, AttachmentDeleteResult as Fa, AnnotationDraftBase as Fc, FormFieldFlags as Fi, RedactionApplyScope as Fn, FontKey as Fo, TextLayoutRun as Fr, normalizePdfRect as Fs, PolylineAnnotationDTO as Ft, TextDTOSchema as G, FilledStyleDraftFields as Ga, FreeTextFont as Gc, FormValueEntry as Gi, PageDeleteResult as Gn, AnnotationAppearanceMode as Go, FormFieldUpdateResult as Gr, PageBoxes as Gs, VertexPatchFields as Gt, StampFit as H, ColorStyleDraftFields as Ha, BlendMode as Hc, TextFieldDTO as Hi, PAGE_INSERT_BLANK_MAX_COUNT as Hn, AnnotationAppearanceImagesResult as Ho, FormDataExport as Hr, pdfRectToOriginSize as Hs, PolygonDraft as Ht, StampWireDraftSchema as I, AttachmentsCache as Ia, AnnotationRef as Ic, FormFieldOption as Ii, RedactionApplyStatus as In, FontSpec as Io, buildPageTextLayout as Ir, pdfQuadBounds as Is, PolylineDraft as It, TextPatch as J, GeometryStyleDraftFields as Ja, LineEnding as Jc, decodeFieldRefKey as Ji, PageRotateInput as Jn, AnnotationAppearancesQuery as Jo, FormSetValueResult as Jr, MetadataPatch as Js, SquarePatchSchema as Jt, TextDraftSchema as K, FilledStyleFields as Ka, FreeTextIntent as Kc, FormFieldRef as Ki, PageDeleteInput as Kn, AnnotationAppearanceRaster as Ko, FormImportResult as Kr, PageLayout as Ks, SquareDTOSchema as Kt, StampWirePatchSchema as L, normalizeAttachmentFileSource as La, RevisionToken as Lc, FormFieldOrigin as Li, PageFlattenInput as Ln, DEFAULT_PDF_SAVE_MODE as Lo, expandTextRangeToLine as Lr, pdfQuadCorners as Ls, PolygonDTOSchema as Lt, FileAttachmentPatch as M, DraftOfKind as Ma, ParsedVirtual as Mc, FormFieldBase as Mi, DocumentMetadataTrapped as Ml, MetadataUpdateResult as Mn, serializeError as Mo, PdfTextSegment as Mr, sliceTextByChars as Ms, PolylineDraftSchema as Mt, FileAttachmentAnnotationDTO as N, PatchOfKind as Na, ParsedWildcard as Nc, FormFieldDTO as Ni, RedactionApplyItemResult as Nn, EngineErrorCode as No, TextLayoutFrame as Nr, PdfOriginSize as Ns, PolylinePatchSchema as Nt, FileAttachmentIconSchema as O, classifyRelation as Oa, IdentityClaims as Oc, WidgetStyleFields as Oi, PdfDestination as Ol, HighlightPatch as On, EngineError as Oo, SearchSlice as Or, boundaryTextOffset as Os, LinePatch as Ot, ResourceRefSchema as P, AttachmentCreateResult as Pa, PdfBits as Pc, FormFieldFamily as Pi, RedactionApplyResult as Pn, FontHandle as Po, TextLayoutGlyph as Pr, PdfQuadCorners as Ps, PolylinePatch as Pt, CaretDTOSchema as Q, AttachmentFileBase as Qa, Point as Qc, AnnotationMoveResult as Qi, PageMoveInput as Qn, WeakAnnotationState as Qo, FormEffectStatus as Qr, OpenInputLayerBytes as Qs, CircleDTOSchema as Qt, StampPatch as R, FileAttachmentDraft as Ra, revisionTokensEqual as Rc, ListBoxFieldDTO as Ri, PageFlattenItemResult as Rn, PdfSaveMode as Ro, expandTextRangeToWord as Rr, pdfQuadFromCorners as Rs, PolygonDraftSchema as Rt, RedactAnnotationDTO as S, ReviewStatus as Sa, decodePdfBits as Sc, WidgetPlacement as Si, PdfAnnotationActions as Sl, UnderlinePatch as Sn, AnnotationPatchBase as So, foldText as Sr, glyphLooseBounds as Ss, LinkPatch as St, WidgetAnnotationDTO as T, AnnotationRelationKind as Ta, CollabEntity as Tc, WidgetAppearance as Ti, SubmitFormFlags as Tl, HighlightDTOSchema as Tn, AnnotationStableId as To, SearchMode as Tr, PageTextSnapshot as Ts, LineDTOSchema as Tt, StampWireDraft as U, ColorStyleFields as Ua, CaretIntent as Uc, ToggleFieldWidget as Ui, PageInsertBlankSpec as Un, AnnotationAppearanceManifest as Uo, FormFieldCreateResult as Ur, pdfRectWidth as Us, VertexAnnotationFields as Ut, StampDraft as V, WireAttachmentFile as Va, AnnotationReplyType as Vc, SignatureFieldDTO as Vi, PageFlattenUsage as Vn, AnnotationAppearanceImageOptions as Vo, textSegmentsForRange as Vr, pdfRectSize as Vs, PolygonAnnotationDTO as Vt, NoteIconSchema as W, ColorStylePatchFields as Wa, Color as Wc, UnknownFieldDTO as Wi, PageInsertResult as Wn, AnnotationAppearanceManifestEntry as Wo, FormFieldDeleteResult as Wr, PageListSnapshot as Ws, VertexDraftFields as Wt, NoteIcon as X, GeometryStylePatchFields as Xa, NO_ANNOTATION_FLAGS as Xc, AnnotationCreateResult as Xi, PageMoveResult as Xn, PageState as Xo, FormEffect as Xr, OpenInputById as Xs, SquareAnnotationDTO as Xt, TextAnnotationDTO as Y, GeometryStyleFields as Ya, LineEndings as Yc, encodeFieldRefKey as Yi, PageMoveCache as Yn, AnnotationAppearancesResult as Yo, FormWidgetLinkResult as Yr, OpenInput as Ys, SquarePatch as Yt, TextDraft as Z, AttachmentContent as Za, PdfRectDifferences as Zc, AnnotationDeleteResult as Zi, PageStructureCache as Zn, UNKNOWN_WEAK_ANNOTATION_STATE as Zo, FormEffectResult as Zr, OpenInputBytes as Zs, SquareDraft as Zt, UnsupportedPatchSchema as _, LayerScopePlane as _a, MissingIdentity as _c, FormFieldDraft as _i, PdfActionNode as _l, SquigglyAnnotationDTO as _n, AnnotationSubtype as _o, wordBefore as _r, PageGeometryRun as _s, LinkDraftSchema as _t, AnnotationDTOSchema as a, AnnotationMutationKind as aa, collab as ac, FormSubmissionRequest as ai, CalloutLine as al, ShapeDraftFields as an, normalizeAnnotationDraft as ao, matchPageText as ar, PageImageSource as as, FreeTextDraftSchema as at, UnsupportedAnnotationDTO as b, CommentThread as ba, validateScopeArray as bc, RadioFieldDraft as bi, PdfActionType as bl, UnderlineDraftSchema as bn, PdfAnnotationSubtypeCode as bo, SEARCH_FOLD_VERSION as br, RotatedGeometryRun as bs, PdfLinkTargetWritableSchema as bt, AnnotationKind as c, shiftsExistingAnnotationIndices as ca, CollabTarget as cc, FormFieldValue as ci, LinePoints as cl, StrikeoutDraftSchema as cn, BinaryMimeType as co, SearchQueryValidation as cr, PageRenderBackground as cs, FreeTextAnnotationDTO as ct, AnnotationSubtypeOfKind as d, CacheDelta as da, checkCollab as dc, FormFieldPatch as di, PdfRect as dl, StrikeoutAnnotationDTO as dn, BinarySource as do, matchRegex as dr, PageRenderOptions as ds, InkDraftSchema as dt, AppearanceAction as ea, OpenInputShare as ec, FormFieldDisplay as ei, Rotation as el, CirclePatchSchema as en, AttachmentFileSource as eo, searchContentEpoch as er, PageImageBlobSource as es, CaretPatchSchema as et, KIND_BY_SUBTYPE as f, MutationMeta as fa, checkSetGroup as fc, ListBoxFieldPatch as fi, PdfRotation as fl, StrikeoutDraft as fn, ResourceRef as fo, validateSearchQuery as fr, PageRenderQuery as fs, InkPatchSchema as ft, UnsupportedDraftSchema as g, ManifestPage as ga, InvalidScope as gc, ComboBoxFieldDraft as gi, NamedJavaScriptAction as gl, SquigglyPatch as gn, ANNOTATION_SUBTYPES as go, wordAt as gr, PageGeometryGlyph as gs, LinkDTOSchema as gt, UnsupportedDTOSchema as h, DocumentManifest as ha, filterMatches as hc, CheckboxFieldDraft as hi, DocumentActionsSnapshot as hl, SquigglyPatchSchema as hn, resolveBinarySource as ho, matchLiteral as hr, createPageImageHandle as hs, InkDraft as ht, AnnotationDTO as i, semanticEqual as ia, caps as ic, FormSubmissionReceiptSchema as ii, TextAlignment as il, ShapeAnnotationFields as in, NormalizedPatch as io, buildSnippet as ir, PageImageResult as is, FreeTextDTOSchema as it, WireAttachmentFileSchema as j, DTOOfKind as ja, ParsedScope as jc, ComboBoxFieldDTO as ji, DocumentMetadata as jl, MetadataCache as jn, deserializeError as jo, PageTextLayout as jr, charRangeForTextOffsets as js, PolylineDTOSchema as jt, FileAttachmentPatchSchema as k, refKey as ka, ParsedCapability as kc, WidgetStylePatchFields as ki, PageObjectNumber as kl, HighlightAnnotationDTO as kn, EngineErrorOptions as ko, SearchSliceBudget as kr, charBoundaryAtTextOffset as ks, LineAnnotationDTO as kt, AnnotationPatch as l, AnnotationListMutationMeta as la, checkAnyCapability as lc, CheckboxFieldPatch as li, PdfPoint as ll, StrikeoutPatchSchema as ln, sniffBinaryMetadata as lo, SearchRegexIssue as lr, PageRenderEncodedFormat as ls, FreeTextDraft as lt, WireAnnotationPatch as m, PdfLinkTargetWritable as ma, expandedCapabilities as mc, TextFieldPatch as mi, ActionReadBudget as ml, SquigglyDraftSchema as mn, WireResourceMap as mo, foldOptionsFor as mr, PageRenderViewport as ms, InkAnnotationDTO as mt, AnnotationListSnapshotAllPages as n, AppearanceOutcome as na, OpenOptions as nc, FormSubmissionEntrySchema as ni, StandardFont as nl, CircleAnnotationDTO as nn, EmbeddedFileRef as no, searchSegmentsForRange as nr, PageImageObjectUrl as ns, CaretAnnotationDTO as nt, AnnotationDraft as o, changesAnnotationList as oa, materializePdfPermissions as oc, FormSubmissionRequestSchema as oi, InkList as ol, ShapePatchFields as on, normalizeAnnotationPatch as oo, SEARCH_REGEX_MAX_LENGTH as or, PageNetworkRenderFormat as os, FreeTextPatchSchema as ot, WireAnnotationDraft as p, PdfLinkTarget as pa, expandRawScope as pc, RadioFieldPatch as pi, PdfSize as pl, SquigglyDTOSchema as pn, WireResource as po, validateSearchRegex as pr, PageRenderTarget as ps, InkPatch as pt, TextPatchSchema as q, FilledStylePatchFields as qa, InkIntent as qc, FormWidgetRef as qi, PageRotateResult as qn, AnnotationAppearanceRenderOptions as qo, FormRepairResult as qr, PageRotation as qs, SquareDraftSchema as qt, ANNOTATION_KINDS as r, appearanceImpactOf as ra, TokenSource as rc, FormSubmissionReceipt as ri, StrikeoutIntent as rl, CircleDraft as rn, NormalizedDraft as ro, SEARCH_SNIPPET_CONTEXT as rr, PageImageOptions as rs, CaretDraft as rt, AnnotationDraftSchema as s, invalidatesWeakIndexRefs as sa, pdfPermissions as sc, FormDataFormat as si, InkStroke as sl, StrikeoutDTOSchema as sn, BinaryMetadata as so, SearchQueryIssue as sr, PageRaster as ss, FreeTextPatch as st, AnnotationListPageSnapshot as t, AppearanceImpact as ta, OpenInputToken as tc, FormSubmissionEntry as ti, Size as tl, CirclePatch as tn, EmbeddedFileItem as to, searchRectsForRange as tr, PageImageHandle as ts, CaretPatch as tt, AnnotationPatchSchema as u, RefetchReason as ua, checkCapability as uc, ComboBoxFieldPatch as ui, PdfQuad as ul, StrikeoutPatch as un, BinaryPayload as uo, SearchRegexValidation as ur, PageRenderFormat as us, InkDTOSchema as ut, UnsupportedPatch as v, LayerScopes as va, PermissionDenied as vc, FormFieldOptionInput as vi, PdfActionTargetRef as vl, SquigglyDraft as vn, PDF_CODE_TO_SUBTYPE as vo, FoldOptions as vr, PageGeometrySnapshot as vs, LinkPatchSchema as vt, WidgetPatch as w, isStateAnnotation as wa, CollabAction as wc, FormSnapshot as wi, PdfPageActions as wl, UnderlineDraft as wn, AnnotationIdentityQuality as wo, SearchMatch as wr, isRotatedGeometryRun as ws, LinkDraft as wt, RedactPatch as x, CommentThreadReview as xa, PDF_BITS as xc, TextFieldDraft as xi, PdfActionWarning as xl, UnderlinePatchSchema as xn, subtypeFromCode as xo, SearchMatchRange as xr, UprightGeometryRun as xs, PdfDestinationSchema as xt, UnsupportedDraft as y, BuildCommentThreadsOptions as ya, parseScope as yc, ListBoxFieldDraft as yi, PdfActionTree as yl, UnderlineDTOSchema as yn, PDF_SUBTYPE_TO_CODE as yo, FoldedText as yr, RotatedGeometryGlyph as ys, PdfLinkTargetSchema as yt, StampWirePatch as z, FileAttachmentIcon as za, AnnotationBorderStyle as zc, PushButtonFieldDTO as zi, PageFlattenResult as zn, CachePins as zo, textGlyphAt as zr, pdfRectFromOriginSize as zs, PolygonPatchSchema as zt };
5762
+ //# sourceMappingURL=AnnotationListSnapshot-C1U3XUxP.d.cts.map