@seatlayer/core 0.71.4 → 0.72.0

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 (149) hide show
  1. package/dist/ar-JP4VPYJ2.js +1 -0
  2. package/dist/be-ROTFZNMH.js +1 -0
  3. package/dist/bg-YMQ3B5NS.js +1 -0
  4. package/dist/ca-L2OMCHWL.js +1 -0
  5. package/dist/{categoryInventory-r3OfIEQn.d.cts → categoryInventory-BU1j8Q70.d.cts} +1 -1
  6. package/dist/{categoryInventory-B8CDQtH4.d.ts → categoryInventory-Bt-0psga.d.ts} +1 -1
  7. package/dist/chunk-4F7VBQCF.js +1 -0
  8. package/dist/chunk-4V5WYN6O.js +1 -0
  9. package/dist/{chunk-LR7WIR5Z.js → chunk-ALE2T36W.js} +1 -1
  10. package/dist/chunk-BLPBTW6I.js +1 -0
  11. package/dist/{chunk-GXMGOWKB.js → chunk-FMZ6HLDH.js} +1 -1
  12. package/dist/chunk-HXYWP6NX.js +1 -0
  13. package/dist/chunk-JBOTRSMY.js +1 -0
  14. package/dist/{chunk-MR2O5WC7.js → chunk-O5UWBFUT.js} +1 -1
  15. package/dist/chunk-YW2WGLRM.js +1 -0
  16. package/dist/chunk-ZOXZWPTL.js +1 -0
  17. package/dist/core/chart-ops/index.cjs +1 -1
  18. package/dist/core/chart-ops/index.d.cts +38 -9
  19. package/dist/core/chart-ops/index.d.ts +38 -9
  20. package/dist/core/chart-ops/index.js +1 -1
  21. package/dist/core/color.cjs +1 -1
  22. package/dist/core/color.d.cts +4 -1
  23. package/dist/core/color.d.ts +4 -1
  24. package/dist/core/color.js +1 -1
  25. package/dist/core/inventory/index.cjs +1 -1
  26. package/dist/core/inventory/index.d.cts +15 -5
  27. package/dist/core/inventory/index.d.ts +15 -5
  28. package/dist/core/inventory/index.js +1 -1
  29. package/dist/core/layout/index.d.cts +6 -6
  30. package/dist/core/layout/index.d.ts +6 -6
  31. package/dist/core/quality/index.cjs +1 -1
  32. package/dist/core/quality/index.d.cts +3 -3
  33. package/dist/core/quality/index.d.ts +3 -3
  34. package/dist/core/quality/index.js +1 -1
  35. package/dist/core/render-assets/index.cjs +1 -1
  36. package/dist/core/render-assets/index.d.cts +1 -1
  37. package/dist/core/render-assets/index.d.ts +1 -1
  38. package/dist/core/render-assets/index.js +1 -1
  39. package/dist/core/seatConfidence.d.cts +1 -1
  40. package/dist/core/seatConfidence.d.ts +1 -1
  41. package/dist/core/sections/index.d.cts +7 -7
  42. package/dist/core/sections/index.d.ts +7 -7
  43. package/dist/cs-CHBOZAYY.js +1 -0
  44. package/dist/{cy-KJLPIGNL.js → cy-ZIVBYZBX.js} +1 -1
  45. package/dist/da-PUY5IIER.js +1 -0
  46. package/dist/de-ILFIEU77.js +1 -0
  47. package/dist/el-5EG3QS5T.js +1 -0
  48. package/dist/es-YXZQB5VZ.js +1 -0
  49. package/dist/et-FZIUC4FC.js +1 -0
  50. package/dist/{eventConfigurations-ByU_uPeS.d.cts → eventConfigurations-3uSorYVC.d.cts} +1 -1
  51. package/dist/{eventConfigurations-0OC43JJY.d.ts → eventConfigurations-DfVUGyCg.d.ts} +1 -1
  52. package/dist/fa-KKBNUDRE.js +1 -0
  53. package/dist/fi-B6JSP5Z5.js +1 -0
  54. package/dist/fr-T5LHFRKG.js +1 -0
  55. package/dist/he-JF4HU75D.js +1 -0
  56. package/dist/hr-S5OXZ3NI.js +1 -0
  57. package/dist/hu-ZZDYG6ZF.js +1 -0
  58. package/dist/index.cjs +1 -1
  59. package/dist/index.d.cts +239 -36
  60. package/dist/index.d.ts +239 -36
  61. package/dist/index.js +1 -1
  62. package/dist/it-A5VCFTQP.js +1 -0
  63. package/dist/ja-PAJD5HFJ.js +1 -0
  64. package/dist/ku-KV2AIB6I.js +1 -0
  65. package/dist/{labeling-DAGq3u0z.d.cts → labeling-9RWWmJhZ.d.cts} +1 -1
  66. package/dist/{labeling-B05IJwd2.d.ts → labeling-BiWB-8aq.d.ts} +1 -1
  67. package/dist/{layout-e0Qe7jmM.d.cts → layout-B6iOoPOv.d.cts} +3 -3
  68. package/dist/{layout-DkDRcXvu.d.ts → layout-B7URbtDR.d.ts} +3 -3
  69. package/dist/localeLoaders-VULFUGJH.js +1 -0
  70. package/dist/lt-OSFNYQ2L.js +1 -0
  71. package/dist/lv-5INNWEN5.js +1 -0
  72. package/dist/nl-YOLY3DXM.js +1 -0
  73. package/dist/no-C5MG5NPH.js +1 -0
  74. package/dist/pl-ERGM2HA3.js +1 -0
  75. package/dist/pt-S6SBTHES.js +1 -0
  76. package/dist/{renderedQuality-BaejczsK.d.cts → renderedQuality-BZsq3wDe.d.cts} +1 -1
  77. package/dist/{renderedQuality-BwwrqYzX.d.ts → renderedQuality-C5dQiq97.d.ts} +1 -1
  78. package/dist/{renderer-BNicx5sw.d.ts → renderer-6sFRupj0.d.ts} +2 -2
  79. package/dist/{renderer-Duv1HhQg.d.cts → renderer-CBOo1OZk.d.cts} +2 -2
  80. package/dist/ro-NQ4LIATX.js +1 -0
  81. package/dist/ru-ICFP6U3S.js +1 -0
  82. package/dist/{sections-CrX4vq-m.d.ts → sections-Cn_sk1Sx.d.ts} +1 -1
  83. package/dist/{sections-BjGjR21N.d.cts → sections-DU6YDYoZ.d.cts} +1 -1
  84. package/dist/{segmentedRowModel-UO_YIQRB.d.cts → segmentedRowModel-CKmyHvKv.d.cts} +1 -1
  85. package/dist/{segmentedRowModel-BOO8w9Ng.d.ts → segmentedRowModel-DbP7pWUk.d.ts} +1 -1
  86. package/dist/sk-VYH6WIZ2.js +1 -0
  87. package/dist/sl-AA54VE5P.js +1 -0
  88. package/dist/sr-Z27ZL5ZE.js +1 -0
  89. package/dist/sv-BT4MNMB5.js +1 -0
  90. package/dist/{ticketRestrictions-dvlNTwem.d.ts → ticketRestrictions-CvS2oQ8v.d.ts} +2 -2
  91. package/dist/{ticketRestrictions-DUQrKTpS.d.cts → ticketRestrictions-DkenahW2.d.cts} +2 -2
  92. package/dist/tr-3TSE3BBR.js +1 -0
  93. package/dist/{types-0yruRsAj.d.cts → types-D6-wLa-m.d.cts} +200 -20
  94. package/dist/{types-0yruRsAj.d.ts → types-D6-wLa-m.d.ts} +200 -20
  95. package/dist/uk-YD2PBENU.js +1 -0
  96. package/dist/view3d/crossfade/panorama.d.cts +1 -1
  97. package/dist/view3d/crossfade/panorama.d.ts +1 -1
  98. package/dist/view3d/index.cjs +27 -27
  99. package/dist/view3d/index.d.cts +3 -3
  100. package/dist/view3d/index.d.ts +3 -3
  101. package/dist/view3d/index.js +1 -1
  102. package/dist/view3d/scene/scene.worker.cjs +1 -1
  103. package/dist/view3d/scene/scene.worker.js +1 -1
  104. package/dist/zh-Hans-VPQE6LWU.js +1 -0
  105. package/dist/zh-Hant-PUKPX45I.js +1 -0
  106. package/package.json +1 -1
  107. package/dist/ar-WXDW7P4F.js +0 -1
  108. package/dist/be-OZ73MTYV.js +0 -1
  109. package/dist/bg-NXBQVQ7X.js +0 -1
  110. package/dist/ca-4J7PKGEP.js +0 -1
  111. package/dist/chunk-7KS6TAYH.js +0 -1
  112. package/dist/chunk-CXF32VPG.js +0 -1
  113. package/dist/chunk-JBGLFOJO.js +0 -1
  114. package/dist/chunk-NXFDYBZY.js +0 -1
  115. package/dist/chunk-SKO3DCVB.js +0 -1
  116. package/dist/chunk-T2LWVOQ3.js +0 -1
  117. package/dist/chunk-YSVXAUOH.js +0 -1
  118. package/dist/cs-HOVL5PRG.js +0 -1
  119. package/dist/da-4YKKGJN6.js +0 -1
  120. package/dist/de-QYK4NJIH.js +0 -1
  121. package/dist/el-XLXQE4YH.js +0 -1
  122. package/dist/es-IXMCGRNZ.js +0 -1
  123. package/dist/et-HK6GEAPP.js +0 -1
  124. package/dist/fa-RZT7N54K.js +0 -1
  125. package/dist/fi-NQN2STMX.js +0 -1
  126. package/dist/fr-AK5TYGQK.js +0 -1
  127. package/dist/he-CMVTS5LG.js +0 -1
  128. package/dist/hr-LVOAM3F2.js +0 -1
  129. package/dist/hu-KT2PFOAI.js +0 -1
  130. package/dist/it-IWWDBW67.js +0 -1
  131. package/dist/ja-QUYO5TKQ.js +0 -1
  132. package/dist/ku-FVXFA2DX.js +0 -1
  133. package/dist/localeLoaders-SZP47JPK.js +0 -1
  134. package/dist/lt-O5OARGHR.js +0 -1
  135. package/dist/lv-D5PW436N.js +0 -1
  136. package/dist/nl-VDXV6VTH.js +0 -1
  137. package/dist/no-YS6QVD44.js +0 -1
  138. package/dist/pl-NP6YVWU6.js +0 -1
  139. package/dist/pt-YZLA6LO4.js +0 -1
  140. package/dist/ro-AOVPSQKL.js +0 -1
  141. package/dist/ru-4LGHGVZG.js +0 -1
  142. package/dist/sk-4FRMG7ZG.js +0 -1
  143. package/dist/sl-FYABQLPI.js +0 -1
  144. package/dist/sr-W4SGB5AT.js +0 -1
  145. package/dist/sv-4LK4WE4H.js +0 -1
  146. package/dist/tr-M5NWILAZ.js +0 -1
  147. package/dist/uk-REKJ4DVG.js +0 -1
  148. package/dist/zh-Hans-F32F3VGF.js +0 -1
  149. package/dist/zh-Hant-NA3TGNDP.js +0 -1
@@ -1,3 +1,18 @@
1
+ /** Typography owned by a Stage caption. Stage text is a real editable label,
2
+ * but remains centred on and rotated with its Stage rather than becoming a
3
+ * separately positioned Text object. `bold` is true when absent to preserve
4
+ * the long-standing Stage treatment; false is therefore meaningful. */
5
+ interface StageLabelStyle {
6
+ color?: string;
7
+ size?: number;
8
+ fontFamily?: string;
9
+ bold?: boolean;
10
+ italic?: boolean;
11
+ underline?: boolean;
12
+ }
13
+ /** Stages are large focal objects and need the same useful size range as Text. */
14
+ declare const STAGE_LABEL_STYLE_MAX_SIZE = 72;
15
+
1
16
  /** Durable publishing-review evidence for an editable physical 3D property. */
2
17
  interface Physical3dEvidence {
3
18
  status: 'inferred' | 'confirmed';
@@ -48,6 +63,18 @@ interface ReferenceScanRowProposal {
48
63
  start: Point;
49
64
  end: Point;
50
65
  seatCount: number;
66
+ /** Browser-only reviewed direct-seat identity. Server scans never set this;
67
+ * chartOps still validates and collision-allocates it before materializing. */
68
+ rowLabel?: string;
69
+ /** Browser-only visible row identity for a reviewed sectionless direct plan.
70
+ * It is presentation-only; `rowLabel` remains the collision-safe inventory
71
+ * identity. Server scans never set this field. */
72
+ rowDisplayLabel?: string;
73
+ /** Local-only correlation for an explicitly reviewed row identity. The
74
+ * server never supplies it; chartOps sanitizes before persisting it. */
75
+ directSourceRowId?: string;
76
+ /** The explicitly approved suffix only — never the generated fallback. */
77
+ directReviewedSuffix?: string;
51
78
  }
52
79
  /** Detected rows attributed to one compiled section (or unattributed when the
53
80
  * lattice extends outside every compiled polygon). */
@@ -61,14 +88,20 @@ interface ReferenceScanSectionProposal {
61
88
  confidence: number;
62
89
  /** Index of the seed (multi-probe) whose pitch produced these rows. */
63
90
  seedIndex: number;
91
+ /** Local-only correlation for a reviewed sectionless direct-seat group.
92
+ * Server scans never need or return this field. */
93
+ sourceGroupId?: string;
64
94
  }
65
95
  /** Server response for an in-canvas reference scan. A PROPOSAL — nothing is
66
96
  * committed until the author applies it in the designer (chartOps + undo). */
67
97
  interface ReferenceScanProposal {
68
98
  assetId: string;
69
- /** Measured seat diameter / centre-to-centre pitch, in chart units. */
99
+ /** Measured seat diameter / centre-to-centre pitches, in chart units. */
70
100
  seatDiameter: number;
71
101
  seatPitch: number;
102
+ /** Perpendicular centre-to-centre spacing between inferred rows. Server
103
+ * scans include this; older/direct proposals may omit it. */
104
+ rowPitch?: number;
72
105
  totalSeats: number;
73
106
  totalRows: number;
74
107
  sections: ReferenceScanSectionProposal[];
@@ -238,10 +271,80 @@ interface ReferenceExtractRegionSeats {
238
271
  seatCount: number;
239
272
  /** 0..1 — how well the region's own lattice agreed with its pitch. */
240
273
  confidence: number;
241
- seedOrigin: 'auto-fit';
274
+ /** Repeated primitives are measured directly; auto-fit rows are inferred from a
275
+ * seeded lattice. The review uses this distinction before trusting a very
276
+ * wide or very small region as real seating. */
277
+ seedOrigin: 'auto-fit' | 'repeated-primitives';
278
+ /** Safe bulk-selection default. Ambiguous repeated-symbol rows with nearby
279
+ * annotations require explicit review instead of being silently included. */
280
+ reviewDisposition?: 'likely-seating' | 'needs-review';
281
+ reviewReason?: 'annotation-near-repeated-symbols';
242
282
  /** Present when no lattice was found in this region. */
243
283
  emptyReason?: ReferenceExtractEmptyReason;
244
284
  }
285
+ /** One measured group in a sectionless seating plan. The group exists only so
286
+ * the author can review related rows together; it never becomes a Section. */
287
+ interface ReferenceDirectSeatGroup {
288
+ /** Stable within one direct reread. Its derived `groupId:index` may be
289
+ * persisted only beside an explicitly reviewed row-identity suffix, so a
290
+ * fresh same-reference review can restore that author decision. */
291
+ id: string;
292
+ /** Exact measured row endpoints in chart coordinates. */
293
+ rows: ReferenceScanRowProposal[];
294
+ seatCount: number;
295
+ confidence: number;
296
+ /** Source evidence used to seed a category on an otherwise blank chart. The
297
+ * author still owns its final name, accessible display colour and pricing. */
298
+ sampledColor?: string;
299
+ /** Ambiguous repeated symbols are withheld from bulk selection. */
300
+ reviewDisposition: 'likely-seating' | 'needs-review';
301
+ reviewReason?: 'annotation-near-repeated-symbols';
302
+ }
303
+ /** The small, source-derived non-bookable areas found alongside a direct-seat
304
+ * read. They deliberately remain separate from seating groups: accepting one
305
+ * never creates a Section, category, row, or inventory. `bounds` are issued
306
+ * by the raster reader in chart coordinates; an AI reader may only enrich this
307
+ * id with text and a role, never supply replacement coordinates. */
308
+ type ReferenceDirectLandmarkRole = 'stage' | 'platform' | 'aisle' | 'ramp' | 'entrance' | 'exit' | 'other-label';
309
+ type ReferenceDirectLandmarkDisposition = 'recommended' | 'needs-review' | 'rejected';
310
+ interface ReferenceDirectLandmarkCandidate {
311
+ /** Stable server-issued handle within this direct reread. */
312
+ id: string;
313
+ /** Chart-space bounding box measured from the source raster. */
314
+ bounds: {
315
+ x: number;
316
+ y: number;
317
+ width: number;
318
+ height: number;
319
+ };
320
+ /** Exact chart-space perimeter. It remains a rectangle on an unrotated
321
+ * reference but preserves the source registration under rotation/crop. */
322
+ outline: Point[];
323
+ /** `area` carries non-bookable geometry; `text` carries a printed caption
324
+ * only. A text candidate never paints a fabricated box behind the source. */
325
+ kind: 'area' | 'text';
326
+ /** Non-semantic sampled source colour, if the raster reader measured one. */
327
+ sampledColor?: string;
328
+ /** A deterministic reader may offer an unlabelled landmark; only an accepted
329
+ * reader result can add printed text or a more specific role. */
330
+ text?: string;
331
+ role: ReferenceDirectLandmarkRole;
332
+ reviewDisposition: ReferenceDirectLandmarkDisposition;
333
+ }
334
+ /** A sectionless alternative to the normal section-first extract proposal.
335
+ * It contains only directly measured seating rows, never inferred sections. */
336
+ interface ReferenceDirectSeatPlan {
337
+ assetId: string;
338
+ groups: ReferenceDirectSeatGroup[];
339
+ seatDiameter: number;
340
+ seatPitch: number;
341
+ totalLikelySeats: number;
342
+ totalNeedsReviewSeats: number;
343
+ excludedBlankTiles: number;
344
+ /** Non-bookable source landmarks. This does not alter the deliberately
345
+ * sectionless direct-seat flow. */
346
+ landmarks?: ReferenceDirectLandmarkCandidate[];
347
+ }
245
348
  interface ReferenceExtractProposal {
246
349
  assetId: string;
247
350
  floorId: string;
@@ -252,6 +355,9 @@ interface ReferenceExtractProposal {
252
355
  seatPitch: number;
253
356
  totalSeats: number;
254
357
  totalRows: number;
358
+ /** Present only when the reader found a credible sectionless repeated-seat
359
+ * population. `sections` and `seatsByRegionId` are then deliberately empty. */
360
+ directSeatPlan?: ReferenceDirectSeatPlan;
255
361
  diagnostics: ReferenceSectionTraceBatchProposal['diagnostics'] & {
256
362
  scannedRegionCount: number;
257
363
  emptyRegionCount: number;
@@ -274,6 +380,9 @@ interface ReferenceExtractProposal {
274
380
  namesOutcome?: string;
275
381
  /** Why the model-assisted fallback produced nothing, when it ran and did not ('ok' / 'not-needed' otherwise). */
276
382
  assistOutcome?: string;
383
+ /** Direct-seat non-bookable landmark text/role pass. This is separate from
384
+ * section assistance and degrades to source-only review on any failure. */
385
+ annotationsOutcome?: string;
277
386
  /**
278
387
  * How well the plan could be read, so the review can be honest: coverage
279
388
  * is the share of the plan's drawn extent covered by proposed regions;
@@ -352,6 +461,14 @@ interface ReferenceExtractEnrichment {
352
461
  seatsByRegionId: Record<string, ReferenceExtractRegionSeats>;
353
462
  outcome?: string;
354
463
  };
464
+ /** Optional direct-seat landmark text/role enrichment. It is discriminated
465
+ * from section assistance so ordinary section enrichment remains unchanged. */
466
+ annotations?: {
467
+ status: ReferenceEnrichmentStatus;
468
+ /** Server-issued candidate id → accepted text/role only; never geometry. */
469
+ values: Record<string, Pick<ReferenceDirectLandmarkCandidate, 'text' | 'role' | 'reviewDisposition'>>;
470
+ outcome?: string;
471
+ };
355
472
  updatedAt: number;
356
473
  }
357
474
  /** Coordinate-free physical scale derived by server code from a confirmed
@@ -371,6 +488,10 @@ interface ChartReferenceImage {
371
488
  assetId?: string;
372
489
  /** Legacy/self-contained source. Optional when assetId is present. */
373
490
  url?: string;
491
+ /** The author-picked filename, retained only with the private trace. */
492
+ sourceName?: string;
493
+ /** One-based source page when a PDF was rasterised before attachment. */
494
+ sourcePage?: number;
374
495
  center: Point;
375
496
  /** Rendered width in chart units (height follows the cropped image aspect). */
376
497
  width: number;
@@ -389,6 +510,26 @@ interface ChartReferenceImage {
389
510
  calibration?: ReferenceCalibration;
390
511
  /** Server-derived semantic calibration without source-image coordinates. */
391
512
  derivedScale?: ReferenceDerivedScale;
513
+ /**
514
+ * Authoring-only import intent retained with this private source. Large plans
515
+ * begin as a reviewable section map; seats are then authored per section.
516
+ * A newly attached reference starts without this intent by construction.
517
+ */
518
+ importWorkflow?: 'section-map-first';
519
+ /** Private reviewed choices for direct-plan non-bookable annotations. Kept on
520
+ * the source placement so a reread can restore an explicit exclusion without
521
+ * turning a hidden review decision into a fake chart object. */
522
+ directLandmarkReview?: {
523
+ kind: 'direct-landmark-review-v1';
524
+ referenceGeometrySignature: string;
525
+ values: Array<{
526
+ candidateId: string;
527
+ candidateGeometrySignature: string;
528
+ include: boolean;
529
+ text?: string;
530
+ role?: ReferenceDirectLandmarkRole;
531
+ }>;
532
+ };
392
533
  }
393
534
  /** Private, authoring-only evidence that one bounded planar CAD source was
394
535
  * registered against independently checked chart control points. Raw source
@@ -436,16 +577,6 @@ interface RadialClearanceLayoutConstraint {
436
577
  }
437
578
  type ChartLayoutConstraint = RadialClearanceLayoutConstraint;
438
579
 
439
- /**
440
- * SeatMap chart document — the single source of truth shared by the
441
- * Designer (authoring) and the Renderer (buyer picker).
442
- *
443
- * Coordinates are abstract units (roughly "pixels at scale 1"); the renderer
444
- * fits the chart to its container.
445
- * Rows are PARAMETRIC (origin + count + spacing + curve + rotation) — never
446
- * store per-seat coordinates in the document; expansion happens in layout.ts.
447
- */
448
-
449
580
  interface Point {
450
581
  x: number;
451
582
  y: number;
@@ -500,6 +631,13 @@ interface Category {
500
631
  /** Durable evidence for semantic/display facts proposed while converting a
501
632
  * private reference into sellable inventory. */
502
633
  referenceCategorySource?: ReferenceCategorySource;
634
+ /**
635
+ * Narrow ownership marker for a category minted by the sectionless
636
+ * direct-seat reader. It deliberately records no pricing or label evidence:
637
+ * it only lets a later read of the same private asset replace its own
638
+ * provisional category without ever borrowing a commercial category.
639
+ */
640
+ referenceDirectSeatImport?: ReferenceDirectSeatImportSource;
503
641
  /**
504
642
  * Ticket tiers (Adult / Child / Senior…). When present, a buyer picks a tier
505
643
  * per seat in this category and the tier's price applies; the first tier is the
@@ -541,6 +679,14 @@ interface ReferenceCategorySource {
541
679
  outputColorEvidence?: 'user-confirmed' | 'authoritative-source';
542
680
  outputColorSourceDescription?: string;
543
681
  }
682
+ /** Stable identity for a provisional category created by direct-seat import.
683
+ * This is intentionally separate from `ReferenceCategorySource`, whose
684
+ * evidence contract requires user-confirmed commercial facts. */
685
+ interface ReferenceDirectSeatImportSource {
686
+ assetId: string;
687
+ /** Deterministic direct-seat source-colour cluster identity. */
688
+ familyId: string;
689
+ }
544
690
  /** One ticket tier within a category: a named price (Adult, Child, Senior…). */
545
691
  interface CategoryTier {
546
692
  id: string;
@@ -774,11 +920,10 @@ declare function seatCommercialMeta(key: SeatCommercialMark): SeatCommercialMeta
774
920
  * Per-object label ink + size overrides layered on top of the chart-wide Theme
775
921
  * defaults (rowLabelColor / textColor for rows, the section-name ink for
776
922
  * sections). Both fields are optional: an absent field means "inherit the theme
777
- * default". `color` is a preferred hex — renderers still pass it through the
778
- * shared auto-contrast rule (`stateAwareBookableLabelInk`), so a choice that
779
- * would be illegible over the seat/section background is switched to black or
780
- * white at paint time. `size` is a font size in chart units, clamped to
781
- * LABEL_STYLE_MIN_SIZE..LABEL_STYLE_MAX_SIZE by the shared ops.
923
+ * default". For seats, rows, and sections, `color` is a preferred hex passed
924
+ * through the shared auto-contrast rule (`stateAwareBookableLabelInk`). A Stage
925
+ * uses its explicitly authored color exactly; clearing it returns to Automatic.
926
+ * `size` is a font size in chart units, clamped by the relevant object ops.
782
927
  */
783
928
  /**
784
929
  * How the stacked "All floors" view marks each level: the authored floor name,
@@ -793,6 +938,7 @@ interface LabelStyle {
793
938
  /** Clamp bounds for a per-object label `size`, shared by ops, MCP, and UI. */
794
939
  declare const LABEL_STYLE_MIN_SIZE = 8;
795
940
  declare const LABEL_STYLE_MAX_SIZE = 24;
941
+
796
942
  interface LabelPresentation {
797
943
  visible?: boolean;
798
944
  /** Exact Designer-owned label anchor; public semantic MCP schemas omit it. */
@@ -856,7 +1002,7 @@ interface ChartTheme {
856
1002
  textColor?: string;
857
1003
  /** Font family (CSS stack) for all rendered text — row labels, seat numbers, sections, décor text. */
858
1004
  fontFamily?: string;
859
- /** Seat size multiplier on the base radius (0.7–1.6, default 1) bigger seats fit longer labels. */
1005
+ /** Seat-mark size multiplier (0.15–1.6, default 1); interaction keeps separate screen-space assistance. */
860
1006
  seatScale?: number;
861
1007
  /** Brand accent color — recolors buttons, links, the hold pill, selection UI. */
862
1008
  accent?: string;
@@ -877,9 +1023,16 @@ interface RowObject extends AuthoringObjectState {
877
1023
  /** Present when this row was materialized by the in-canvas reference scan.
878
1024
  * A re-scan of the same asset replaces rows carrying this marker and NEVER
879
1025
  * touches hand-authored rows — the same replace-generated-only invariant as
880
- * applyReferenceInventory. */
1026
+ * applyReferenceInventory. A section-local scan additionally carries the
1027
+ * immutable section identity, so replacing one local scan cannot infer
1028
+ * ownership from a row's current centre after a boundary reshape. */
881
1029
  referenceScan?: {
882
1030
  assetId: string;
1031
+ sectionId?: string;
1032
+ /** Direct-seat reread correlation. Both fields are author-reviewed local
1033
+ * provenance, never emitted by server-side scans. */
1034
+ directSourceRowId?: string;
1035
+ directReviewedSuffix?: string;
883
1036
  };
884
1037
  /** Row label, e.g. "A". Seat labels are `${label}-${n}`. */
885
1038
  label: string;
@@ -1161,6 +1314,8 @@ interface ShapeObject extends AuthoringObjectState {
1161
1314
  */
1162
1315
  kind: 'rect' | 'ellipse' | 'polygon' | 'line' | 'polyline';
1163
1316
  label?: string;
1317
+ /** Per-stage caption typography. Absent family/color fields inherit the theme. */
1318
+ labelStyle?: StageLabelStyle;
1164
1319
  /** For rect/ellipse: bounding box. For a stage polygon: the base (pre-shape) box, so its kind can be regenerated. */
1165
1320
  x?: number;
1166
1321
  y?: number;
@@ -1204,6 +1359,11 @@ interface ShapeObject extends AuthoringObjectState {
1204
1359
  role?: string;
1205
1360
  /** For a stage: which `StageKind` its polygon was generated from. */
1206
1361
  stageKind?: string;
1362
+ /** Public buyer-safe render priority for an approved orientation label. */
1363
+ labelImportance?: 'orientation';
1364
+ /** Private source marker for a reviewed direct-plan landmark. Generic edits
1365
+ * relinquish it so a later reread cannot overwrite organizer-authored décor. */
1366
+ referenceAnnotationSource?: ReferenceDirectAnnotationSource;
1207
1367
  }
1208
1368
  type RectTableSide = 'top' | 'bottom' | 'left' | 'right';
1209
1369
  /** Exact rectangular-table chair distribution. The four keys are deliberately
@@ -1530,6 +1690,26 @@ interface TextObject extends AuthoringObjectState {
1530
1690
  opacity?: number;
1531
1691
  /** Optional padded background painted behind the exact text box. */
1532
1692
  background?: TextBackground;
1693
+ /** Public buyer-safe render priority for an approved orientation label. */
1694
+ labelImportance?: 'orientation';
1695
+ /** Private source marker paired with a reviewed direct-plan landmark shape. */
1696
+ referenceAnnotationSource?: ReferenceDirectAnnotationSource;
1697
+ }
1698
+ /** Private ownership of a non-bookable annotation materialized from a direct
1699
+ * reference review. It is stripped from copied/user-authored duplicates. */
1700
+ interface ReferenceDirectAnnotationSource {
1701
+ kind: 'direct-landmark-v1';
1702
+ assetId: string;
1703
+ candidateId: string;
1704
+ /** The candidate's exact server-issued perimeter signature. */
1705
+ candidateGeometrySignature: string;
1706
+ /** The floor-plan transform that made this source geometry meaningful. */
1707
+ referenceGeometrySignature: string;
1708
+ role: ReferenceDirectLandmarkRole;
1709
+ /** Generic edits deliberately retain this narrow source correlation but turn
1710
+ * ownership over to the organizer. Rereads then restore rather than replace
1711
+ * the edited landmark, and copied objects still strip it entirely. */
1712
+ ownership?: 'reference' | 'organizer';
1533
1713
  }
1534
1714
  /**
1535
1715
  * A raster/vector decor graphic drawn IN the chart, beneath the seats and
@@ -1700,4 +1880,4 @@ interface ChartDoc {
1700
1880
  confidenceEvidence?: SeatConfidenceEvidence;
1701
1881
  }
1702
1882
 
1703
- export { type ReferenceExtractEnrichment as $, type AccessibilityType as A, type BoothObject as B, type ChartDoc as C, type AuthoringObjectState as D, type ChartLayoutConstraint as E, type FloorLabelStyle as F, type GAAreaObject as G, type ChartTheme as H, type ConfidenceEvidenceScope as I, type DecorImageObject as J, LABEL_STYLE_MAX_SIZE as K, type LabelStyle as L, LABEL_STYLE_MIN_SIZE as M, type LabelPresentation as N, type ObjectEditorState as O, type Point as P, type Physical3dEvidence as Q, type RowObject as R, type SeatCommercialAttributes as S, type TableObject as T, type RadialClearanceLayoutConstraint as U, type ReferenceAccessibilitySource as V, type ReferenceCalibration as W, type ReferenceCategorySource as X, type ReferenceDerivedScale as Y, type ReferenceEnrichmentStatus as Z, type ReferenceExtractEmptyReason as _, type ChartObject as a, type ReferenceExtractInput as a0, type ReferenceExtractProposal as a1, type ReferenceExtractRegionSeats as a2, type ReferenceInventoryExclusionSource as a3, type ReferenceInventorySource as a4, type ReferenceMatchReport as a5, type ReferenceScanProposal as a6, type ReferenceScanRowProposal as a7, type ReferenceScanSectionProposal as a8, type ReferenceSeatSeed as a9, seatCommercialMeta as aA, type ReferenceSectionTraceBatchInput as aa, type ReferenceSectionTraceBatchProposal as ab, type ReferenceSectionTraceInput as ac, type ReferenceSectionTraceProposal as ad, SEAT_COMMERCIAL_MARKS as ae, SURROUNDINGS_SHAPE_ROLES as af, type SeatCommercialMark as ag, type SeatCommercialMeta as ah, type SeatConfidenceCoverage as ai, type SeatConfidenceEvidence as aj, type SeatConfidenceModelLevel as ak, type SeatConfidenceModeledTarget as al, type SeatConfidenceRealityLevel as am, type SeatViewVariant as an, type SelectionLayer as ao, type TextAlignment as ap, type TextBackground as aq, type TicketTierApplicability as ar, type TicketTierEvidence as as, type TicketTierRestriction as at, type Venue3DMaterialPalette as au, type VenueSurveyRegistrationEvidence as av, type ZoneDef as aw, accessibilityMeta as ax, accessibilityRingColor as ay, layerOf as az, type SeatViewMetadata as b, type ResolvedSeatConfidenceEvidence as c, type SeatGlyphKind as d, type SeatViewCoverage as e, type SectionOutlinePath as f, type SectionPathSegment as g, type GAInventorySegment as h, type CategoryTier as i, type SeatOverride as j, type RectTableSide as k, type Floor as l, type SectionObject as m, type RectTableSeatCounts as n, type ChartReferenceImage as o, type Category as p, type ShapeLineCap as q, type ShapeLineEnding as r, type ShapeLineJoin as s, type ShapeObject as t, type CubicPath as u, type TextObject as v, type ChartDeliveryPerformance as w, ACCESSIBILITY_RING_COLOR as x, ACCESSIBILITY_TYPES as y, type AccessibilityMeta as z };
1883
+ export { type ReferenceDirectLandmarkDisposition as $, type AccessibilityType as A, type BoothObject as B, type ChartDoc as C, type AuthoringObjectState as D, type ChartLayoutConstraint as E, type FloorLabelStyle as F, type GAAreaObject as G, type ChartTheme as H, type ConfidenceEvidenceScope as I, type DecorImageObject as J, LABEL_STYLE_MAX_SIZE as K, type LabelStyle as L, LABEL_STYLE_MIN_SIZE as M, type LabelPresentation as N, type ObjectEditorState as O, type Point as P, type Physical3dEvidence as Q, type RowObject as R, type SeatCommercialAttributes as S, type TableObject as T, type RadialClearanceLayoutConstraint as U, type ReferenceAccessibilitySource as V, type ReferenceCalibration as W, type ReferenceCategorySource as X, type ReferenceDerivedScale as Y, type ReferenceDirectAnnotationSource as Z, type ReferenceDirectLandmarkCandidate as _, type ChartObject as a, type ReferenceDirectLandmarkRole as a0, type ReferenceDirectSeatGroup as a1, type ReferenceDirectSeatImportSource as a2, type ReferenceDirectSeatPlan as a3, type ReferenceEnrichmentStatus as a4, type ReferenceExtractEmptyReason as a5, type ReferenceExtractEnrichment as a6, type ReferenceExtractInput as a7, type ReferenceExtractProposal as a8, type ReferenceExtractRegionSeats as a9, type TicketTierApplicability as aA, type TicketTierEvidence as aB, type TicketTierRestriction as aC, type Venue3DMaterialPalette as aD, type VenueSurveyRegistrationEvidence as aE, type ZoneDef as aF, accessibilityMeta as aG, accessibilityRingColor as aH, layerOf as aI, seatCommercialMeta as aJ, type ReferenceInventoryExclusionSource as aa, type ReferenceInventorySource as ab, type ReferenceMatchReport as ac, type ReferenceScanProposal as ad, type ReferenceScanRowProposal as ae, type ReferenceScanSectionProposal as af, type ReferenceSeatSeed as ag, type ReferenceSectionTraceBatchInput as ah, type ReferenceSectionTraceBatchProposal as ai, type ReferenceSectionTraceInput as aj, type ReferenceSectionTraceProposal as ak, SEAT_COMMERCIAL_MARKS as al, STAGE_LABEL_STYLE_MAX_SIZE as am, SURROUNDINGS_SHAPE_ROLES as an, type SeatCommercialMark as ao, type SeatCommercialMeta as ap, type SeatConfidenceCoverage as aq, type SeatConfidenceEvidence as ar, type SeatConfidenceModelLevel as as, type SeatConfidenceModeledTarget as at, type SeatConfidenceRealityLevel as au, type SeatViewVariant as av, type SelectionLayer as aw, type StageLabelStyle as ax, type TextAlignment as ay, type TextBackground as az, type SeatViewMetadata as b, type ResolvedSeatConfidenceEvidence as c, type SeatGlyphKind as d, type SeatViewCoverage as e, type SectionOutlinePath as f, type SectionPathSegment as g, type GAInventorySegment as h, type CategoryTier as i, type SeatOverride as j, type RectTableSide as k, type Floor as l, type SectionObject as m, type RectTableSeatCounts as n, type ChartReferenceImage as o, type Category as p, type ShapeLineCap as q, type ShapeLineEnding as r, type ShapeLineJoin as s, type ShapeObject as t, type CubicPath as u, type TextObject as v, type ChartDeliveryPerformance as w, ACCESSIBILITY_RING_COLOR as x, ACCESSIBILITY_TYPES as y, type AccessibilityMeta as z };