@photivra/engine 1.5.0 → 2.1.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 (1085) hide show
  1. package/CHANGELOG.md +414 -6
  2. package/CITATION.cff +1 -1
  3. package/NODE_SUPPORT.md +64 -12
  4. package/README.md +301 -182
  5. package/SECURITY.md +37 -28
  6. package/THIRD_PARTY.md +148 -4
  7. package/dist/camera/equivalent-focal-length.d.ts +13 -14
  8. package/dist/camera/equivalent-focal-length.js +15 -13
  9. package/dist/camera/equivalent-focal-length.js.map +1 -1
  10. package/dist/camera/field-of-view.d.ts +30 -19
  11. package/dist/camera/field-of-view.js +67 -18
  12. package/dist/camera/field-of-view.js.map +1 -1
  13. package/dist/camera/lens-projection.d.ts +170 -0
  14. package/dist/camera/lens-projection.js +444 -0
  15. package/dist/camera/lens-projection.js.map +1 -0
  16. package/dist/camera/projected-object-size.d.ts +10 -11
  17. package/dist/camera/projected-object-size.js +12 -10
  18. package/dist/camera/projected-object-size.js.map +1 -1
  19. package/dist/capture/capture-export-metadata.d.ts +9 -10
  20. package/dist/capture/capture-export-metadata.js +8 -5
  21. package/dist/capture/capture-export-metadata.js.map +1 -1
  22. package/dist/capture/dng-import.d.ts +91 -0
  23. package/dist/capture/dng-import.js +343 -0
  24. package/dist/capture/dng-import.js.map +1 -0
  25. package/dist/capture/environment-raw-producer.d.ts +37 -17
  26. package/dist/capture/environment-raw-producer.js +43 -19
  27. package/dist/capture/environment-raw-producer.js.map +1 -1
  28. package/dist/capture/export-jpeg.d.ts +35 -4
  29. package/dist/capture/export-jpeg.js +133 -47
  30. package/dist/capture/export-jpeg.js.map +1 -1
  31. package/dist/capture/export-tiff.d.ts +48 -24
  32. package/dist/capture/export-tiff.js +91 -31
  33. package/dist/capture/export-tiff.js.map +1 -1
  34. package/dist/capture/focus-control.d.ts +42 -65
  35. package/dist/capture/focus-control.js +56 -75
  36. package/dist/capture/focus-control.js.map +1 -1
  37. package/dist/capture/host-yield-cadence.d.ts +25 -0
  38. package/dist/capture/host-yield-cadence.js +25 -0
  39. package/dist/capture/host-yield-cadence.js.map +1 -0
  40. package/dist/capture/linear-encoding.d.ts +14 -12
  41. package/dist/capture/linear-encoding.js +14 -13
  42. package/dist/capture/linear-encoding.js.map +1 -1
  43. package/dist/capture/lossless-jpeg.d.ts +27 -0
  44. package/dist/capture/lossless-jpeg.js +237 -0
  45. package/dist/capture/lossless-jpeg.js.map +1 -0
  46. package/dist/capture/native-environment-lean.d.ts +227 -0
  47. package/dist/capture/native-environment-lean.js +974 -0
  48. package/dist/capture/native-environment-lean.js.map +1 -0
  49. package/dist/capture/native-environment-optical-stage.d.ts +97 -0
  50. package/dist/capture/native-environment-optical-stage.js +340 -0
  51. package/dist/capture/native-environment-optical-stage.js.map +1 -0
  52. package/dist/capture/native-environment-raw.d.ts +140 -6
  53. package/dist/capture/native-environment-raw.js +435 -34
  54. package/dist/capture/native-environment-raw.js.map +1 -1
  55. package/dist/capture/native-raw-development.d.ts +116 -9
  56. package/dist/capture/native-raw-development.js +221 -62
  57. package/dist/capture/native-raw-development.js.map +1 -1
  58. package/dist/capture/native-raw-dng.d.ts +60 -0
  59. package/dist/capture/native-raw-dng.js +167 -0
  60. package/dist/capture/native-raw-dng.js.map +1 -0
  61. package/dist/capture/native-raw.d.ts +65 -12
  62. package/dist/capture/native-raw.js +81 -19
  63. package/dist/capture/native-raw.js.map +1 -1
  64. package/dist/capture/packed-sensor-raw.d.ts +160 -0
  65. package/dist/capture/packed-sensor-raw.js +221 -0
  66. package/dist/capture/packed-sensor-raw.js.map +1 -0
  67. package/dist/capture/photographic-export.d.ts +58 -35
  68. package/dist/capture/photographic-export.js +177 -70
  69. package/dist/capture/photographic-export.js.map +1 -1
  70. package/dist/capture/raw-development-kernel.d.ts +52 -0
  71. package/dist/capture/raw-development-kernel.js +88 -0
  72. package/dist/capture/raw-development-kernel.js.map +1 -0
  73. package/dist/capture/raw-frame-limits.d.ts +7 -7
  74. package/dist/capture/raw-frame-limits.js +7 -6
  75. package/dist/capture/raw-frame-limits.js.map +1 -1
  76. package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
  77. package/dist/capture/raw-frame-reconstruction.js +9 -8
  78. package/dist/capture/raw-frame-reconstruction.js.map +1 -1
  79. package/dist/capture/raw-white-level.d.ts +55 -0
  80. package/dist/capture/raw-white-level.js +165 -0
  81. package/dist/capture/raw-white-level.js.map +1 -0
  82. package/dist/capture/release-sequence.d.ts +5 -7
  83. package/dist/capture/release-sequence.js +15 -13
  84. package/dist/capture/release-sequence.js.map +1 -1
  85. package/dist/capture/sensor-raw-frame.d.ts +5 -6
  86. package/dist/capture/sensor-raw-frame.js +26 -9
  87. package/dist/capture/sensor-raw-frame.js.map +1 -1
  88. package/dist/capture/sensor-raw-producer.d.ts +21 -13
  89. package/dist/capture/sensor-raw-producer.js +86 -25
  90. package/dist/capture/sensor-raw-producer.js.map +1 -1
  91. package/dist/capture/simulated-capture.d.ts +15 -16
  92. package/dist/capture/simulated-capture.js +22 -12
  93. package/dist/capture/simulated-capture.js.map +1 -1
  94. package/dist/color/camera-color-matrix.d.ts +69 -0
  95. package/dist/color/camera-color-matrix.js +132 -0
  96. package/dist/color/camera-color-matrix.js.map +1 -0
  97. package/dist/color/capture-color.d.ts +17 -10
  98. package/dist/color/capture-color.js +50 -17
  99. package/dist/color/capture-color.js.map +1 -1
  100. package/dist/color/chromatic-adaptation.d.ts +63 -0
  101. package/dist/color/chromatic-adaptation.js +91 -0
  102. package/dist/color/chromatic-adaptation.js.map +1 -0
  103. package/dist/color/color-difference.d.ts +104 -0
  104. package/dist/color/color-difference.js +205 -0
  105. package/dist/color/color-difference.js.map +1 -0
  106. package/dist/color/color-matching-functions.d.ts +168 -0
  107. package/dist/color/color-matching-functions.js +309 -0
  108. package/dist/color/color-matching-functions.js.map +1 -0
  109. package/dist/color/colorimetry-math.d.ts +52 -0
  110. package/dist/color/colorimetry-math.js +144 -0
  111. package/dist/color/colorimetry-math.js.map +1 -0
  112. package/dist/color/gamut-mapping.d.ts +54 -0
  113. package/dist/color/gamut-mapping.js +107 -0
  114. package/dist/color/gamut-mapping.js.map +1 -0
  115. package/dist/color/illuminants.d.ts +182 -0
  116. package/dist/color/illuminants.js +434 -0
  117. package/dist/color/illuminants.js.map +1 -0
  118. package/dist/color/rgb-color-spaces.d.ts +79 -0
  119. package/dist/color/rgb-color-spaces.js +115 -0
  120. package/dist/color/rgb-color-spaces.js.map +1 -0
  121. package/dist/color/sensor-color-development.d.ts +33 -11
  122. package/dist/color/sensor-color-development.js +104 -30
  123. package/dist/color/sensor-color-development.js.map +1 -1
  124. package/dist/color/srgb-icc.d.ts +9 -2
  125. package/dist/color/srgb-icc.js +16 -5
  126. package/dist/color/srgb-icc.js.map +1 -1
  127. package/dist/color/srgb-transfer.d.ts +1 -2
  128. package/dist/color/srgb-transfer.js +1 -1
  129. package/dist/color/srgb-transfer.js.map +1 -1
  130. package/dist/color/white-balance.d.ts +68 -19
  131. package/dist/color/white-balance.js +168 -35
  132. package/dist/color/white-balance.js.map +1 -1
  133. package/dist/composition/image-formation-plan.d.ts +152 -128
  134. package/dist/composition/image-formation-plan.js +292 -138
  135. package/dist/composition/image-formation-plan.js.map +1 -1
  136. package/dist/composition/plan-consumer.d.ts +6 -7
  137. package/dist/composition/plan-consumer.js +14 -11
  138. package/dist/composition/plan-consumer.js.map +1 -1
  139. package/dist/core/calculation-result.d.ts +21 -14
  140. package/dist/core/calculation-result.js +209 -11
  141. package/dist/core/calculation-result.js.map +1 -1
  142. package/dist/core/canonical-json.d.ts +13 -8
  143. package/dist/core/canonical-json.js +34 -15
  144. package/dist/core/canonical-json.js.map +1 -1
  145. package/dist/core/configuration-error.d.ts +5 -4
  146. package/dist/core/configuration-error.js +5 -3
  147. package/dist/core/configuration-error.js.map +1 -1
  148. package/dist/core/evidence-provenance.d.ts +12 -12
  149. package/dist/core/evidence-provenance.js +10 -9
  150. package/dist/core/evidence-provenance.js.map +1 -1
  151. package/dist/core/image-formation.d.ts +11 -10
  152. package/dist/core/image-formation.js +11 -9
  153. package/dist/core/image-formation.js.map +1 -1
  154. package/dist/core/owned-data.d.ts +9 -17
  155. package/dist/core/owned-data.js +9 -16
  156. package/dist/core/owned-data.js.map +1 -1
  157. package/dist/core/portable-math.d.ts +15 -0
  158. package/dist/core/portable-math.js +56 -0
  159. package/dist/core/portable-math.js.map +1 -0
  160. package/dist/core/record-validation.d.ts +48 -9
  161. package/dist/core/record-validation.js +93 -19
  162. package/dist/core/record-validation.js.map +1 -1
  163. package/dist/core/scientific-assurance.d.ts +16 -14
  164. package/dist/core/scientific-assurance.js +22 -18
  165. package/dist/core/scientific-assurance.js.map +1 -1
  166. package/dist/core/spectral-composition.d.ts +13 -14
  167. package/dist/core/spectral-composition.js +30 -27
  168. package/dist/core/spectral-composition.js.map +1 -1
  169. package/dist/core/spectral.d.ts +5 -6
  170. package/dist/core/spectral.js +9 -7
  171. package/dist/core/spectral.js.map +1 -1
  172. package/dist/core/validation.d.ts +3 -6
  173. package/dist/core/validation.js +3 -5
  174. package/dist/core/validation.js.map +1 -1
  175. package/dist/core/version.d.ts +6 -6
  176. package/dist/core/version.js +6 -5
  177. package/dist/core/version.js.map +1 -1
  178. package/dist/equipment/exposure-capabilities.d.ts +10 -10
  179. package/dist/equipment/exposure-capabilities.js +40 -30
  180. package/dist/equipment/exposure-capabilities.js.map +1 -1
  181. package/dist/equipment/generic-tier-assets.d.ts +13 -6
  182. package/dist/equipment/generic-tier-assets.js +34 -15
  183. package/dist/equipment/generic-tier-assets.js.map +1 -1
  184. package/dist/equipment/generic-tier-presets.d.ts +5 -6
  185. package/dist/equipment/generic-tier-presets.js +15 -13
  186. package/dist/equipment/generic-tier-presets.js.map +1 -1
  187. package/dist/equipment/iso-capabilities.d.ts +21 -22
  188. package/dist/equipment/iso-capabilities.js +49 -44
  189. package/dist/equipment/iso-capabilities.js.map +1 -1
  190. package/dist/equipment/metering-capabilities.d.ts +5 -6
  191. package/dist/equipment/metering-capabilities.js +22 -19
  192. package/dist/equipment/metering-capabilities.js.map +1 -1
  193. package/dist/equipment/release-capabilities.d.ts +3 -4
  194. package/dist/equipment/release-capabilities.js +18 -14
  195. package/dist/equipment/release-capabilities.js.map +1 -1
  196. package/dist/exposure/exposure-duration-control.d.ts +19 -17
  197. package/dist/exposure/exposure-duration-control.js +27 -23
  198. package/dist/exposure/exposure-duration-control.js.map +1 -1
  199. package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
  200. package/dist/exposure/exposure-mode-resolver.js +127 -82
  201. package/dist/exposure/exposure-mode-resolver.js.map +1 -1
  202. package/dist/exposure/exposure.d.ts +17 -16
  203. package/dist/exposure/exposure.js +22 -15
  204. package/dist/exposure/exposure.js.map +1 -1
  205. package/dist/exposure/flash-ttl.d.ts +135 -0
  206. package/dist/exposure/flash-ttl.js +193 -0
  207. package/dist/exposure/flash-ttl.js.map +1 -0
  208. package/dist/exposure/flash.d.ts +144 -36
  209. package/dist/exposure/flash.js +259 -59
  210. package/dist/exposure/flash.js.map +1 -1
  211. package/dist/exposure/metering-scene-radiance.d.ts +10 -10
  212. package/dist/exposure/metering-scene-radiance.js +42 -23
  213. package/dist/exposure/metering-scene-radiance.js.map +1 -1
  214. package/dist/exposure/metering-target.d.ts +8 -8
  215. package/dist/exposure/metering-target.js +30 -20
  216. package/dist/exposure/metering-target.js.map +1 -1
  217. package/dist/exposure/metering-temporal.d.ts +16 -15
  218. package/dist/exposure/metering-temporal.js +41 -19
  219. package/dist/exposure/metering-temporal.js.map +1 -1
  220. package/dist/exposure/metering.d.ts +64 -17
  221. package/dist/exposure/metering.js +159 -30
  222. package/dist/exposure/metering.js.map +1 -1
  223. package/dist/exposure/program-line.d.ts +5 -5
  224. package/dist/exposure/program-line.js +20 -13
  225. package/dist/exposure/program-line.js.map +1 -1
  226. package/dist/facade/camera-preset.d.ts +8 -0
  227. package/dist/facade/camera-preset.js +102 -0
  228. package/dist/facade/camera-preset.js.map +1 -0
  229. package/dist/facade/chart-radiance-batch.d.ts +57 -0
  230. package/dist/facade/chart-radiance-batch.js +121 -0
  231. package/dist/facade/chart-radiance-batch.js.map +1 -0
  232. package/dist/facade/chart-scenes.d.ts +177 -0
  233. package/dist/facade/chart-scenes.js +232 -0
  234. package/dist/facade/chart-scenes.js.map +1 -0
  235. package/dist/facade/diffraction-provider.d.ts +30 -0
  236. package/dist/facade/diffraction-provider.js +127 -0
  237. package/dist/facade/diffraction-provider.js.map +1 -0
  238. package/dist/facade/host-yield.d.ts +7 -0
  239. package/dist/facade/host-yield.js +19 -0
  240. package/dist/facade/host-yield.js.map +1 -0
  241. package/dist/facade/scene-radiance.d.ts +117 -0
  242. package/dist/facade/scene-radiance.js +205 -0
  243. package/dist/facade/scene-radiance.js.map +1 -0
  244. package/dist/facade/simulate-capture.d.ts +363 -0
  245. package/dist/facade/simulate-capture.js +1281 -0
  246. package/dist/facade/simulate-capture.js.map +1 -0
  247. package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
  248. package/dist/gpu/chart-radiance-gpu.js +176 -0
  249. package/dist/gpu/chart-radiance-gpu.js.map +1 -0
  250. package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
  251. package/dist/gpu/image-kernel-accelerator.js +720 -0
  252. package/dist/gpu/image-kernel-accelerator.js.map +1 -0
  253. package/dist/gpu/image-kernel-execution.d.ts +92 -0
  254. package/dist/gpu/image-kernel-execution.js +84 -0
  255. package/dist/gpu/image-kernel-execution.js.map +1 -0
  256. package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
  257. package/dist/gpu/sensor-stage-gpu.js +317 -0
  258. package/dist/gpu/sensor-stage-gpu.js.map +1 -0
  259. package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
  260. package/dist/gpu/temporal-sum-gpu.js +150 -0
  261. package/dist/gpu/temporal-sum-gpu.js.map +1 -0
  262. package/dist/gpu/webgpu-runtime.d.ts +63 -0
  263. package/dist/gpu/webgpu-runtime.js +215 -0
  264. package/dist/gpu/webgpu-runtime.js.map +1 -0
  265. package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
  266. package/dist/gpu/wgsl-chart-kernel.js +165 -0
  267. package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
  268. package/dist/gpu/wgsl-kernels.d.ts +53 -0
  269. package/dist/gpu/wgsl-kernels.js +365 -0
  270. package/dist/gpu/wgsl-kernels.js.map +1 -0
  271. package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
  272. package/dist/gpu/wgsl-sensor-kernel.js +409 -0
  273. package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
  274. package/dist/index.d.ts +91 -25
  275. package/dist/index.js +60 -15
  276. package/dist/index.js.map +1 -1
  277. package/dist/motion/camera-rotation.d.ts +92 -40
  278. package/dist/motion/camera-rotation.js +84 -47
  279. package/dist/motion/camera-rotation.js.map +1 -1
  280. package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
  281. package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
  282. package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
  283. package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
  284. package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
  285. package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
  286. package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
  287. package/dist/motion/capture-rotation-trajectory.js +36 -26
  288. package/dist/motion/capture-rotation-trajectory.js.map +1 -1
  289. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
  290. package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
  291. package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
  292. package/dist/motion/extended-object-projection.d.ts +19 -16
  293. package/dist/motion/extended-object-projection.js +38 -18
  294. package/dist/motion/extended-object-projection.js.map +1 -1
  295. package/dist/motion/projected-motion.d.ts +18 -17
  296. package/dist/motion/projected-motion.js +25 -17
  297. package/dist/motion/projected-motion.js.map +1 -1
  298. package/dist/motion/temporal-exposure-sum.d.ts +55 -0
  299. package/dist/motion/temporal-exposure-sum.js +141 -0
  300. package/dist/motion/temporal-exposure-sum.js.map +1 -0
  301. package/dist/motion/video-sequence.d.ts +111 -0
  302. package/dist/motion/video-sequence.js +179 -0
  303. package/dist/motion/video-sequence.js.map +1 -0
  304. package/dist/optics/aperture.d.ts +14 -15
  305. package/dist/optics/aperture.js +13 -11
  306. package/dist/optics/aperture.js.map +1 -1
  307. package/dist/optics/atmospheric-haze.d.ts +83 -0
  308. package/dist/optics/atmospheric-haze.js +113 -0
  309. package/dist/optics/atmospheric-haze.js.map +1 -0
  310. package/dist/optics/brown-conrady-distortion.d.ts +116 -0
  311. package/dist/optics/brown-conrady-distortion.js +291 -0
  312. package/dist/optics/brown-conrady-distortion.js.map +1 -0
  313. package/dist/optics/circle-of-confusion.d.ts +10 -10
  314. package/dist/optics/circle-of-confusion.js +15 -11
  315. package/dist/optics/circle-of-confusion.js.map +1 -1
  316. package/dist/optics/complex-pupil-psf.d.ts +64 -33
  317. package/dist/optics/complex-pupil-psf.js +190 -98
  318. package/dist/optics/complex-pupil-psf.js.map +1 -1
  319. package/dist/optics/depth-of-field.d.ts +25 -15
  320. package/dist/optics/depth-of-field.js +67 -27
  321. package/dist/optics/depth-of-field.js.map +1 -1
  322. package/dist/optics/diffraction-psf-profile.d.ts +118 -0
  323. package/dist/optics/diffraction-psf-profile.js +252 -0
  324. package/dist/optics/diffraction-psf-profile.js.map +1 -0
  325. package/dist/optics/diffraction.d.ts +14 -13
  326. package/dist/optics/diffraction.js +14 -10
  327. package/dist/optics/diffraction.js.map +1 -1
  328. package/dist/optics/focus-breathing.d.ts +88 -27
  329. package/dist/optics/focus-breathing.js +114 -23
  330. package/dist/optics/focus-breathing.js.map +1 -1
  331. package/dist/optics/focus-state.d.ts +18 -18
  332. package/dist/optics/focus-state.js +21 -15
  333. package/dist/optics/focus-state.js.map +1 -1
  334. package/dist/optics/front-of-lens-filter.d.ts +45 -14
  335. package/dist/optics/front-of-lens-filter.js +259 -88
  336. package/dist/optics/front-of-lens-filter.js.map +1 -1
  337. package/dist/optics/illumination-vignetting.d.ts +16 -17
  338. package/dist/optics/illumination-vignetting.js +40 -17
  339. package/dist/optics/illumination-vignetting.js.map +1 -1
  340. package/dist/optics/irradiance-convolution.d.ts +59 -0
  341. package/dist/optics/irradiance-convolution.js +138 -0
  342. package/dist/optics/irradiance-convolution.js.map +1 -0
  343. package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
  344. package/dist/optics/lateral-chromatic-aberration.js +33 -23
  345. package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
  346. package/dist/optics/lens-psf-kernels.d.ts +89 -0
  347. package/dist/optics/lens-psf-kernels.js +175 -0
  348. package/dist/optics/lens-psf-kernels.js.map +1 -0
  349. package/dist/optics/lens-psf-profile.d.ts +78 -46
  350. package/dist/optics/lens-psf-profile.js +335 -124
  351. package/dist/optics/lens-psf-profile.js.map +1 -1
  352. package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
  353. package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
  354. package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
  355. package/dist/optics/polygon-diffraction.d.ts +80 -23
  356. package/dist/optics/polygon-diffraction.js +130 -25
  357. package/dist/optics/polygon-diffraction.js.map +1 -1
  358. package/dist/optics/profile-contract.d.ts +5 -6
  359. package/dist/optics/profile-contract.js +14 -11
  360. package/dist/optics/profile-contract.js.map +1 -1
  361. package/dist/optics/psf-foundation.d.ts +23 -23
  362. package/dist/optics/psf-foundation.js +24 -21
  363. package/dist/optics/psf-foundation.js.map +1 -1
  364. package/dist/optics/pupil-vignetting.d.ts +118 -0
  365. package/dist/optics/pupil-vignetting.js +264 -0
  366. package/dist/optics/pupil-vignetting.js.map +1 -0
  367. package/dist/optics/radial-distortion.d.ts +34 -33
  368. package/dist/optics/radial-distortion.js +37 -30
  369. package/dist/optics/radial-distortion.js.map +1 -1
  370. package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
  371. package/dist/optics/scene-to-sensor-irradiance.js +73 -45
  372. package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
  373. package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
  374. package/dist/optics/scene-to-sensor-quadrature.js +16 -11
  375. package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
  376. package/dist/optics/sensor-aperture-rays.d.ts +20 -4
  377. package/dist/optics/sensor-aperture-rays.js +32 -14
  378. package/dist/optics/sensor-aperture-rays.js.map +1 -1
  379. package/dist/optics/sensor-environment-query.d.ts +81 -16
  380. package/dist/optics/sensor-environment-query.js +145 -12
  381. package/dist/optics/sensor-environment-query.js.map +1 -1
  382. package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
  383. package/dist/optics/sensor-psf-quadrature.js +18 -11
  384. package/dist/optics/sensor-psf-quadrature.js.map +1 -1
  385. package/dist/optics/sensor-psf-support.d.ts +8 -6
  386. package/dist/optics/sensor-psf-support.js +8 -5
  387. package/dist/optics/sensor-psf-support.js.map +1 -1
  388. package/dist/optics/stray-light.d.ts +22 -19
  389. package/dist/optics/stray-light.js +18 -12
  390. package/dist/optics/stray-light.js.map +1 -1
  391. package/dist/optics/thin-lens.d.ts +10 -9
  392. package/dist/optics/thin-lens.js +12 -8
  393. package/dist/optics/thin-lens.js.map +1 -1
  394. package/dist/optics/zernike-wavefront.d.ts +154 -0
  395. package/dist/optics/zernike-wavefront.js +352 -0
  396. package/dist/optics/zernike-wavefront.js.map +1 -0
  397. package/dist/output/capture-corrected-sdr.d.ts +16 -8
  398. package/dist/output/capture-corrected-sdr.js +16 -8
  399. package/dist/output/capture-corrected-sdr.js.map +1 -1
  400. package/dist/output/capture-geometry.d.ts +34 -36
  401. package/dist/output/capture-geometry.js +52 -32
  402. package/dist/output/capture-geometry.js.map +1 -1
  403. package/dist/output/capture-sdr.d.ts +7 -6
  404. package/dist/output/capture-sdr.js +11 -8
  405. package/dist/output/capture-sdr.js.map +1 -1
  406. package/dist/output/crop.d.ts +22 -6
  407. package/dist/output/crop.js +40 -6
  408. package/dist/output/crop.js.map +1 -1
  409. package/dist/output/geometric-transforms.d.ts +60 -23
  410. package/dist/output/geometric-transforms.js +111 -24
  411. package/dist/output/geometric-transforms.js.map +1 -1
  412. package/dist/output/lens-corrections.d.ts +27 -19
  413. package/dist/output/lens-corrections.js +29 -13
  414. package/dist/output/lens-corrections.js.map +1 -1
  415. package/dist/output/native-capture-sdr.d.ts +71 -16
  416. package/dist/output/native-capture-sdr.js +190 -33
  417. package/dist/output/native-capture-sdr.js.map +1 -1
  418. package/dist/output/png-encoder.d.ts +65 -0
  419. package/dist/output/png-encoder.js +461 -0
  420. package/dist/output/png-encoder.js.map +1 -0
  421. package/dist/output/print-contrast-reference.d.ts +10 -9
  422. package/dist/output/print-contrast-reference.js +10 -8
  423. package/dist/output/print-contrast-reference.js.map +1 -1
  424. package/dist/output/print-detail.d.ts +18 -17
  425. package/dist/output/print-detail.js +12 -10
  426. package/dist/output/print-detail.js.map +1 -1
  427. package/dist/output/print-jpeg.d.ts +26 -5
  428. package/dist/output/print-jpeg.js +117 -50
  429. package/dist/output/print-jpeg.js.map +1 -1
  430. package/dist/output/print-plan.d.ts +19 -19
  431. package/dist/output/print-plan.js +11 -10
  432. package/dist/output/print-plan.js.map +1 -1
  433. package/dist/output/print-region-statistics.d.ts +14 -15
  434. package/dist/output/print-region-statistics.js +11 -11
  435. package/dist/output/print-region-statistics.js.map +1 -1
  436. package/dist/output/sdr-rendering.d.ts +48 -10
  437. package/dist/output/sdr-rendering.js +114 -25
  438. package/dist/output/sdr-rendering.js.map +1 -1
  439. package/dist/output/subject-framing-crop.d.ts +6 -10
  440. package/dist/output/subject-framing-crop.js +23 -13
  441. package/dist/output/subject-framing-crop.js.map +1 -1
  442. package/dist/processing/demosaic.d.ts +90 -0
  443. package/dist/processing/demosaic.js +275 -0
  444. package/dist/processing/demosaic.js.map +1 -0
  445. package/dist/processing/denoise.d.ts +68 -0
  446. package/dist/processing/denoise.js +214 -0
  447. package/dist/processing/denoise.js.map +1 -0
  448. package/dist/processing/focus-stacking.d.ts +17 -0
  449. package/dist/processing/focus-stacking.js +80 -0
  450. package/dist/processing/focus-stacking.js.map +1 -0
  451. package/dist/processing/hdr.d.ts +54 -0
  452. package/dist/processing/hdr.js +172 -0
  453. package/dist/processing/hdr.js.map +1 -0
  454. package/dist/processing/image-ops.d.ts +66 -0
  455. package/dist/processing/image-ops.js +192 -0
  456. package/dist/processing/image-ops.js.map +1 -0
  457. package/dist/processing/panorama.d.ts +51 -0
  458. package/dist/processing/panorama.js +305 -0
  459. package/dist/processing/panorama.js.map +1 -0
  460. package/dist/processing/processing-task.d.ts +85 -0
  461. package/dist/processing/processing-task.js +164 -0
  462. package/dist/processing/processing-task.js.map +1 -0
  463. package/dist/processing/tone-mapping.d.ts +69 -0
  464. package/dist/processing/tone-mapping.js +310 -0
  465. package/dist/processing/tone-mapping.js.map +1 -0
  466. package/dist/schema/camera.d.ts +5 -4
  467. package/dist/schema/illumination-spectral.d.ts +13 -19
  468. package/dist/schema/illumination-spectral.js +23 -19
  469. package/dist/schema/illumination-spectral.js.map +1 -1
  470. package/dist/schema/illumination-temporal.d.ts +12 -15
  471. package/dist/schema/illumination-temporal.js +43 -28
  472. package/dist/schema/illumination-temporal.js.map +1 -1
  473. package/dist/schema/illumination.d.ts +5 -4
  474. package/dist/schema/illumination.js +55 -20
  475. package/dist/schema/illumination.js.map +1 -1
  476. package/dist/schema/scene-radiance-temporal.d.ts +9 -11
  477. package/dist/schema/scene-radiance-temporal.js +26 -23
  478. package/dist/schema/scene-radiance-temporal.js.map +1 -1
  479. package/dist/schema/scene-radiance.d.ts +17 -17
  480. package/dist/schema/scene-radiance.js +56 -34
  481. package/dist/schema/scene-radiance.js.map +1 -1
  482. package/dist/schema/scene.d.ts +14 -13
  483. package/dist/schema/validation.d.ts +0 -1
  484. package/dist/schema/validation.js +17 -15
  485. package/dist/schema/validation.js.map +1 -1
  486. package/dist/sensor/accumulated-charge.d.ts +45 -64
  487. package/dist/sensor/accumulated-charge.js +41 -47
  488. package/dist/sensor/accumulated-charge.js.map +1 -1
  489. package/dist/sensor/architecture.d.ts +22 -25
  490. package/dist/sensor/architecture.js +17 -16
  491. package/dist/sensor/architecture.js.map +1 -1
  492. package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
  493. package/dist/sensor/camera-saturation-capacity.js +36 -34
  494. package/dist/sensor/camera-saturation-capacity.js.map +1 -1
  495. package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
  496. package/dist/sensor/capture-color-sampling-binding.js +39 -41
  497. package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
  498. package/dist/sensor/capture-mode-timing.d.ts +8 -9
  499. package/dist/sensor/capture-mode-timing.js +24 -21
  500. package/dist/sensor/capture-mode-timing.js.map +1 -1
  501. package/dist/sensor/capture-mode.d.ts +28 -30
  502. package/dist/sensor/capture-mode.js +33 -31
  503. package/dist/sensor/capture-mode.js.map +1 -1
  504. package/dist/sensor/color-sampling.d.ts +30 -33
  505. package/dist/sensor/color-sampling.js +32 -37
  506. package/dist/sensor/color-sampling.js.map +1 -1
  507. package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
  508. package/dist/sensor/constant-rate-temporal-integration.js +28 -26
  509. package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
  510. package/dist/sensor/dark-current.d.ts +53 -49
  511. package/dist/sensor/dark-current.js +87 -46
  512. package/dist/sensor/dark-current.js.map +1 -1
  513. package/dist/sensor/environment-photo-signal.d.ts +71 -30
  514. package/dist/sensor/environment-photo-signal.js +127 -46
  515. package/dist/sensor/environment-photo-signal.js.map +1 -1
  516. package/dist/sensor/eqe-electron-rate.d.ts +14 -13
  517. package/dist/sensor/eqe-electron-rate.js +34 -14
  518. package/dist/sensor/eqe-electron-rate.js.map +1 -1
  519. package/dist/sensor/eqe-local-exposure.d.ts +24 -24
  520. package/dist/sensor/eqe-local-exposure.js +15 -11
  521. package/dist/sensor/eqe-local-exposure.js.map +1 -1
  522. package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
  523. package/dist/sensor/eqe-temporal-exposure.js +15 -10
  524. package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
  525. package/dist/sensor/exposure-window.d.ts +48 -34
  526. package/dist/sensor/exposure-window.js +77 -36
  527. package/dist/sensor/exposure-window.js.map +1 -1
  528. package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
  529. package/dist/sensor/fixed-pattern-noise.js +166 -0
  530. package/dist/sensor/fixed-pattern-noise.js.map +1 -0
  531. package/dist/sensor/iso-gain.d.ts +44 -0
  532. package/dist/sensor/iso-gain.js +119 -0
  533. package/dist/sensor/iso-gain.js.map +1 -0
  534. package/dist/sensor/iso-signal-chain.d.ts +25 -48
  535. package/dist/sensor/iso-signal-chain.js +52 -66
  536. package/dist/sensor/iso-signal-chain.js.map +1 -1
  537. package/dist/sensor/local-exposure-binding.d.ts +21 -21
  538. package/dist/sensor/local-exposure-binding.js +22 -18
  539. package/dist/sensor/local-exposure-binding.js.map +1 -1
  540. package/dist/sensor/optical-stack.d.ts +36 -40
  541. package/dist/sensor/optical-stack.js +34 -37
  542. package/dist/sensor/optical-stack.js.map +1 -1
  543. package/dist/sensor/photon-energy.d.ts +22 -28
  544. package/dist/sensor/photon-energy.js +42 -34
  545. package/dist/sensor/photon-energy.js.map +1 -1
  546. package/dist/sensor/physical-charge-capacity.d.ts +20 -30
  547. package/dist/sensor/physical-charge-capacity.js +35 -36
  548. package/dist/sensor/physical-charge-capacity.js.map +1 -1
  549. package/dist/sensor/pixel-pitch.d.ts +2 -3
  550. package/dist/sensor/pixel-pitch.js +4 -2
  551. package/dist/sensor/pixel-pitch.js.map +1 -1
  552. package/dist/sensor/radiometry-readiness.d.ts +13 -15
  553. package/dist/sensor/radiometry-readiness.js +20 -17
  554. package/dist/sensor/radiometry-readiness.js.map +1 -1
  555. package/dist/sensor/raw-readout.d.ts +173 -83
  556. package/dist/sensor/raw-readout.js +425 -160
  557. package/dist/sensor/raw-readout.js.map +1 -1
  558. package/dist/sensor/raw-reconstruction.d.ts +112 -44
  559. package/dist/sensor/raw-reconstruction.js +200 -47
  560. package/dist/sensor/raw-reconstruction.js.map +1 -1
  561. package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
  562. package/dist/sensor/readout-exposure-linkage.js +125 -27
  563. package/dist/sensor/readout-exposure-linkage.js.map +1 -1
  564. package/dist/sensor/readout-timing.d.ts +43 -44
  565. package/dist/sensor/readout-timing.js +38 -30
  566. package/dist/sensor/readout-timing.js.map +1 -1
  567. package/dist/sensor/response-application-compatibility.d.ts +21 -28
  568. package/dist/sensor/response-application-compatibility.js +35 -34
  569. package/dist/sensor/response-application-compatibility.js.map +1 -1
  570. package/dist/sensor/response-operating-range.d.ts +26 -35
  571. package/dist/sensor/response-operating-range.js +40 -39
  572. package/dist/sensor/response-operating-range.js.map +1 -1
  573. package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
  574. package/dist/sensor/responsivity-photocurrent.js +57 -40
  575. package/dist/sensor/responsivity-photocurrent.js.map +1 -1
  576. package/dist/sensor/sampling-aperture.d.ts +21 -25
  577. package/dist/sensor/sampling-aperture.js +29 -28
  578. package/dist/sensor/sampling-aperture.js.map +1 -1
  579. package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
  580. package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
  581. package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
  582. package/dist/sensor/sensor-geometry.d.ts +28 -32
  583. package/dist/sensor/sensor-geometry.js +35 -20
  584. package/dist/sensor/sensor-geometry.js.map +1 -1
  585. package/dist/sensor/signal-noise.d.ts +14 -16
  586. package/dist/sensor/signal-noise.js +15 -13
  587. package/dist/sensor/signal-noise.js.map +1 -1
  588. package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
  589. package/dist/sensor/spatial-sample-reduction.js +39 -48
  590. package/dist/sensor/spatial-sample-reduction.js.map +1 -1
  591. package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
  592. package/dist/sensor/spatial-sampling-quadrature.js +31 -36
  593. package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
  594. package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
  595. package/dist/sensor/spatio-spectral-reduction.js +24 -29
  596. package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
  597. package/dist/sensor/spectral-coverage.d.ts +6 -9
  598. package/dist/sensor/spectral-coverage.js +9 -6
  599. package/dist/sensor/spectral-coverage.js.map +1 -1
  600. package/dist/sensor/spectral-quadrature.d.ts +46 -60
  601. package/dist/sensor/spectral-quadrature.js +38 -48
  602. package/dist/sensor/spectral-quadrature.js.map +1 -1
  603. package/dist/sensor/spectral-response.d.ts +53 -41
  604. package/dist/sensor/spectral-response.js +80 -47
  605. package/dist/sensor/spectral-response.js.map +1 -1
  606. package/dist/sensor/stochastic-seed.d.ts +50 -0
  607. package/dist/sensor/stochastic-seed.js +123 -0
  608. package/dist/sensor/stochastic-seed.js.map +1 -0
  609. package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
  610. package/dist/sensor/temporal-eqe-sum.js +5 -6
  611. package/dist/sensor/temporal-eqe-sum.js.map +1 -1
  612. package/dist/sensor/temporal-photo-signal.d.ts +5 -6
  613. package/dist/sensor/temporal-photo-signal.js +11 -10
  614. package/dist/sensor/temporal-photo-signal.js.map +1 -1
  615. package/dist/sensor/temporal-sample-binding.d.ts +1 -2
  616. package/dist/sensor/temporal-sample-binding.js +3 -3
  617. package/dist/sensor/temporal-sample-binding.js.map +1 -1
  618. package/dist/simulation/poc-simulation.d.ts +16 -16
  619. package/dist/simulation/poc-simulation.js +20 -15
  620. package/dist/simulation/poc-simulation.js.map +1 -1
  621. package/dist/stabilization/camera-shake.d.ts +42 -18
  622. package/dist/stabilization/camera-shake.js +43 -20
  623. package/dist/stabilization/camera-shake.js.map +1 -1
  624. package/dist/stabilization/system.d.ts +44 -41
  625. package/dist/stabilization/system.js +196 -108
  626. package/dist/stabilization/system.js.map +1 -1
  627. package/docs/AGENT_GUIDE.md +183 -0
  628. package/docs/API_REFERENCE.md +777 -2
  629. package/docs/QUICK_START.md +663 -0
  630. package/docs/USAGE.md +1719 -714
  631. package/docs/api/camera-equivalent-focal-length.md +6 -7
  632. package/docs/api/camera-field-of-view.md +16 -8
  633. package/docs/api/camera-lens-projection.md +246 -0
  634. package/docs/api/camera-projected-object-size.md +6 -5
  635. package/docs/api/capture-capture-export-metadata.md +10 -10
  636. package/docs/api/capture-dng-import.md +134 -0
  637. package/docs/api/capture-environment-raw-producer.md +17 -11
  638. package/docs/api/capture-export-jpeg.md +16 -0
  639. package/docs/api/capture-focus-control.md +25 -47
  640. package/docs/api/capture-linear-encoding.md +21 -12
  641. package/docs/api/capture-lossless-jpeg.md +49 -0
  642. package/docs/api/capture-native-environment-optical-stage.md +75 -0
  643. package/docs/api/capture-native-environment-raw.md +161 -4
  644. package/docs/api/capture-native-raw-development.md +69 -8
  645. package/docs/api/capture-native-raw-dng.md +84 -0
  646. package/docs/api/capture-native-raw.md +21 -10
  647. package/docs/api/capture-packed-sensor-raw.md +156 -0
  648. package/docs/api/capture-photographic-export.md +69 -31
  649. package/docs/api/capture-raw-frame-reconstruction.md +8 -8
  650. package/docs/api/capture-raw-white-level.md +37 -0
  651. package/docs/api/capture-release-sequence.md +6 -7
  652. package/docs/api/capture-sensor-raw-frame.md +6 -6
  653. package/docs/api/capture-sensor-raw-producer.md +17 -11
  654. package/docs/api/capture-simulated-capture.md +15 -15
  655. package/docs/api/color-camera-color-matrix.md +103 -0
  656. package/docs/api/color-capture-color.md +22 -11
  657. package/docs/api/color-chromatic-adaptation.md +82 -0
  658. package/docs/api/color-color-difference.md +134 -0
  659. package/docs/api/color-color-matching-functions.md +259 -0
  660. package/docs/api/color-colorimetry-math.md +54 -0
  661. package/docs/api/color-gamut-mapping.md +72 -0
  662. package/docs/api/color-illuminants.md +280 -0
  663. package/docs/api/color-rgb-color-spaces.md +151 -0
  664. package/docs/api/color-sensor-color-development.md +27 -0
  665. package/docs/api/color-srgb-icc.md +2 -4
  666. package/docs/api/color-white-balance.md +95 -19
  667. package/docs/api/composition-image-formation-plan.md +124 -95
  668. package/docs/api/composition-plan-consumer.md +7 -7
  669. package/docs/api/core-calculation-result.md +18 -14
  670. package/docs/api/core-configuration-error.md +1 -1
  671. package/docs/api/core-image-formation.md +7 -7
  672. package/docs/api/core-scientific-assurance.md +12 -10
  673. package/docs/api/core-spectral-composition.md +14 -14
  674. package/docs/api/core-spectral.md +6 -6
  675. package/docs/api/core-validation.md +3 -3
  676. package/docs/api/core-version.md +7 -6
  677. package/docs/api/equipment-exposure-capabilities.md +11 -10
  678. package/docs/api/equipment-generic-tier-assets.md +7 -2
  679. package/docs/api/equipment-generic-tier-presets.md +6 -6
  680. package/docs/api/equipment-iso-capabilities.md +18 -18
  681. package/docs/api/equipment-metering-capabilities.md +6 -6
  682. package/docs/api/equipment-release-capabilities.md +4 -4
  683. package/docs/api/exports.json +2253 -3
  684. package/docs/api/exposure-exposure-duration-control.md +9 -9
  685. package/docs/api/exposure-exposure-mode-resolver.md +35 -31
  686. package/docs/api/exposure-exposure.md +10 -10
  687. package/docs/api/exposure-flash-ttl.md +182 -0
  688. package/docs/api/exposure-flash.md +183 -28
  689. package/docs/api/exposure-metering-scene-radiance.md +11 -10
  690. package/docs/api/exposure-metering-target.md +9 -8
  691. package/docs/api/exposure-metering-temporal.md +8 -8
  692. package/docs/api/exposure-metering.md +69 -9
  693. package/docs/api/exposure-program-line.md +6 -5
  694. package/docs/api/facade-chart-radiance-batch.md +96 -0
  695. package/docs/api/facade-chart-scenes.md +240 -0
  696. package/docs/api/facade-scene-radiance.md +122 -0
  697. package/docs/api/facade-simulate-capture.md +397 -0
  698. package/docs/api/gpu-image-kernel-accelerator.md +157 -0
  699. package/docs/api/gpu-image-kernel-execution.md +152 -0
  700. package/docs/api/motion-camera-rotation.md +43 -26
  701. package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
  702. package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
  703. package/docs/api/motion-capture-rotation-trajectory.md +15 -15
  704. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
  705. package/docs/api/motion-extended-object-projection.md +10 -8
  706. package/docs/api/motion-projected-motion.md +8 -8
  707. package/docs/api/motion-temporal-exposure-sum.md +98 -0
  708. package/docs/api/motion-video-sequence.md +159 -0
  709. package/docs/api/optics-aperture.md +8 -8
  710. package/docs/api/optics-atmospheric-haze.md +104 -0
  711. package/docs/api/optics-brown-conrady-distortion.md +123 -0
  712. package/docs/api/optics-circle-of-confusion.md +5 -4
  713. package/docs/api/optics-complex-pupil-psf.md +57 -16
  714. package/docs/api/optics-depth-of-field.md +12 -6
  715. package/docs/api/optics-diffraction-psf-profile.md +96 -0
  716. package/docs/api/optics-diffraction.md +8 -7
  717. package/docs/api/optics-focus-breathing.md +104 -16
  718. package/docs/api/optics-focus-state.md +9 -10
  719. package/docs/api/optics-front-of-lens-filter.md +72 -14
  720. package/docs/api/optics-illumination-vignetting.md +10 -10
  721. package/docs/api/optics-irradiance-convolution.md +95 -0
  722. package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
  723. package/docs/api/optics-lens-psf-kernels.md +72 -0
  724. package/docs/api/optics-lens-psf-profile.md +48 -26
  725. package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
  726. package/docs/api/optics-polygon-diffraction.md +78 -13
  727. package/docs/api/optics-profile-contract.md +4 -4
  728. package/docs/api/optics-psf-foundation.md +12 -12
  729. package/docs/api/optics-pupil-vignetting.md +132 -0
  730. package/docs/api/optics-radial-distortion.md +12 -12
  731. package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
  732. package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
  733. package/docs/api/optics-sensor-aperture-rays.md +3 -2
  734. package/docs/api/optics-sensor-environment-query.md +52 -9
  735. package/docs/api/optics-sensor-psf-quadrature.md +13 -10
  736. package/docs/api/optics-stray-light.md +12 -11
  737. package/docs/api/optics-thin-lens.md +4 -3
  738. package/docs/api/optics-zernike-wavefront.md +229 -0
  739. package/docs/api/output-capture-corrected-sdr.md +10 -7
  740. package/docs/api/output-capture-geometry.md +35 -36
  741. package/docs/api/output-capture-sdr.md +4 -4
  742. package/docs/api/output-crop.md +7 -4
  743. package/docs/api/output-geometric-transforms.md +65 -19
  744. package/docs/api/output-lens-corrections.md +17 -15
  745. package/docs/api/output-native-capture-sdr.md +26 -13
  746. package/docs/api/output-png-encoder.md +105 -0
  747. package/docs/api/output-print-contrast-reference.md +8 -8
  748. package/docs/api/output-print-detail.md +14 -14
  749. package/docs/api/output-print-jpeg.md +22 -5
  750. package/docs/api/output-print-plan.md +18 -18
  751. package/docs/api/output-print-region-statistics.md +14 -14
  752. package/docs/api/output-sdr-rendering.md +52 -10
  753. package/docs/api/output-subject-framing-crop.md +5 -6
  754. package/docs/api/processing-demosaic.md +120 -0
  755. package/docs/api/processing-denoise.md +148 -0
  756. package/docs/api/processing-focus-stacking.md +41 -0
  757. package/docs/api/processing-hdr.md +113 -0
  758. package/docs/api/processing-panorama.md +82 -0
  759. package/docs/api/processing-processing-task.md +107 -0
  760. package/docs/api/processing-tone-mapping.md +142 -0
  761. package/docs/api/schema-camera.md +6 -4
  762. package/docs/api/schema-illumination-spectral.md +10 -11
  763. package/docs/api/schema-illumination-temporal.md +13 -15
  764. package/docs/api/schema-illumination.md +4 -4
  765. package/docs/api/schema-scene-radiance-temporal.md +10 -11
  766. package/docs/api/schema-scene-radiance.md +18 -17
  767. package/docs/api/schema-scene.md +9 -9
  768. package/docs/api/schema-validation.md +1 -1
  769. package/docs/api/sensor-accumulated-charge.md +12 -20
  770. package/docs/api/sensor-architecture.md +15 -16
  771. package/docs/api/sensor-camera-saturation-capacity.md +9 -11
  772. package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
  773. package/docs/api/sensor-capture-mode-timing.md +9 -9
  774. package/docs/api/sensor-capture-mode.md +29 -30
  775. package/docs/api/sensor-color-sampling.md +31 -33
  776. package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
  777. package/docs/api/sensor-dark-current.md +30 -14
  778. package/docs/api/sensor-environment-photo-signal.md +13 -6
  779. package/docs/api/sensor-eqe-electron-rate.md +9 -8
  780. package/docs/api/sensor-eqe-local-exposure.md +18 -17
  781. package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
  782. package/docs/api/sensor-exposure-window.md +24 -24
  783. package/docs/api/sensor-fixed-pattern-noise.md +104 -0
  784. package/docs/api/sensor-iso-gain.md +63 -0
  785. package/docs/api/sensor-iso-signal-chain.md +13 -22
  786. package/docs/api/sensor-local-exposure-binding.md +12 -13
  787. package/docs/api/sensor-optical-stack.md +37 -40
  788. package/docs/api/sensor-photon-energy.md +10 -11
  789. package/docs/api/sensor-physical-charge-capacity.md +8 -13
  790. package/docs/api/sensor-pixel-pitch.md +1 -1
  791. package/docs/api/sensor-radiometry-readiness.md +9 -9
  792. package/docs/api/sensor-raw-readout.md +118 -52
  793. package/docs/api/sensor-raw-reconstruction.md +97 -20
  794. package/docs/api/sensor-readout-exposure-linkage.md +120 -24
  795. package/docs/api/sensor-readout-timing.md +33 -35
  796. package/docs/api/sensor-response-application-compatibility.md +9 -11
  797. package/docs/api/sensor-response-operating-range.md +14 -18
  798. package/docs/api/sensor-responsivity-photocurrent.md +9 -12
  799. package/docs/api/sensor-sampling-aperture.md +22 -25
  800. package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
  801. package/docs/api/sensor-sensor-geometry.md +23 -24
  802. package/docs/api/sensor-signal-noise.md +10 -10
  803. package/docs/api/sensor-spatial-sample-reduction.md +27 -30
  804. package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
  805. package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
  806. package/docs/api/sensor-spectral-coverage.md +5 -5
  807. package/docs/api/sensor-spectral-quadrature.md +33 -35
  808. package/docs/api/sensor-spectral-response.md +28 -16
  809. package/docs/api/sensor-temporal-photo-signal.md +6 -6
  810. package/docs/api/simulation-poc-simulation.md +17 -16
  811. package/docs/api/stabilization-camera-shake.md +29 -10
  812. package/docs/api/stabilization-system.md +25 -21
  813. package/docs/examples/production-request.json +3821 -2157
  814. package/docs/examples/simulate-capture.mjs +14 -0
  815. package/llms.txt +35 -0
  816. package/package.json +32 -11
  817. package/AGENTS.md +0 -674
  818. package/CONTRIBUTING.md +0 -76
  819. package/DCO +0 -33
  820. package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
  821. package/dist/camera/field-of-view.d.ts.map +0 -1
  822. package/dist/camera/projected-object-size.d.ts.map +0 -1
  823. package/dist/capture/capture-export-metadata.d.ts.map +0 -1
  824. package/dist/capture/environment-raw-producer.d.ts.map +0 -1
  825. package/dist/capture/export-jpeg.d.ts.map +0 -1
  826. package/dist/capture/export-tiff.d.ts.map +0 -1
  827. package/dist/capture/focus-control.d.ts.map +0 -1
  828. package/dist/capture/linear-encoding.d.ts.map +0 -1
  829. package/dist/capture/native-environment-raw.d.ts.map +0 -1
  830. package/dist/capture/native-raw-development.d.ts.map +0 -1
  831. package/dist/capture/native-raw.d.ts.map +0 -1
  832. package/dist/capture/photographic-export.d.ts.map +0 -1
  833. package/dist/capture/raw-frame-limits.d.ts.map +0 -1
  834. package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
  835. package/dist/capture/release-sequence.d.ts.map +0 -1
  836. package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
  837. package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
  838. package/dist/capture/simulated-capture.d.ts.map +0 -1
  839. package/dist/color/capture-color.d.ts.map +0 -1
  840. package/dist/color/sensor-color-development.d.ts.map +0 -1
  841. package/dist/color/srgb-icc.d.ts.map +0 -1
  842. package/dist/color/srgb-transfer.d.ts.map +0 -1
  843. package/dist/color/white-balance.d.ts.map +0 -1
  844. package/dist/composition/image-formation-plan.d.ts.map +0 -1
  845. package/dist/composition/plan-consumer.d.ts.map +0 -1
  846. package/dist/core/calculation-result.d.ts.map +0 -1
  847. package/dist/core/canonical-json.d.ts.map +0 -1
  848. package/dist/core/configuration-error.d.ts.map +0 -1
  849. package/dist/core/evidence-provenance.d.ts.map +0 -1
  850. package/dist/core/image-formation.d.ts.map +0 -1
  851. package/dist/core/owned-data.d.ts.map +0 -1
  852. package/dist/core/record-validation.d.ts.map +0 -1
  853. package/dist/core/scientific-assurance.d.ts.map +0 -1
  854. package/dist/core/spectral-composition.d.ts.map +0 -1
  855. package/dist/core/spectral.d.ts.map +0 -1
  856. package/dist/core/validation.d.ts.map +0 -1
  857. package/dist/core/version.d.ts.map +0 -1
  858. package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
  859. package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
  860. package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
  861. package/dist/equipment/iso-capabilities.d.ts.map +0 -1
  862. package/dist/equipment/metering-capabilities.d.ts.map +0 -1
  863. package/dist/equipment/release-capabilities.d.ts.map +0 -1
  864. package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
  865. package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
  866. package/dist/exposure/exposure.d.ts.map +0 -1
  867. package/dist/exposure/flash.d.ts.map +0 -1
  868. package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
  869. package/dist/exposure/metering-target.d.ts.map +0 -1
  870. package/dist/exposure/metering-temporal.d.ts.map +0 -1
  871. package/dist/exposure/metering.d.ts.map +0 -1
  872. package/dist/exposure/program-line.d.ts.map +0 -1
  873. package/dist/index.d.ts.map +0 -1
  874. package/dist/motion/camera-rotation.d.ts.map +0 -1
  875. package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
  876. package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
  877. package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
  878. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
  879. package/dist/motion/extended-object-projection.d.ts.map +0 -1
  880. package/dist/motion/projected-motion.d.ts.map +0 -1
  881. package/dist/optics/aperture.d.ts.map +0 -1
  882. package/dist/optics/circle-of-confusion.d.ts.map +0 -1
  883. package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
  884. package/dist/optics/depth-of-field.d.ts.map +0 -1
  885. package/dist/optics/diffraction.d.ts.map +0 -1
  886. package/dist/optics/focus-breathing.d.ts.map +0 -1
  887. package/dist/optics/focus-state.d.ts.map +0 -1
  888. package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
  889. package/dist/optics/illumination-vignetting.d.ts.map +0 -1
  890. package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
  891. package/dist/optics/lens-psf-profile.d.ts.map +0 -1
  892. package/dist/optics/polygon-diffraction.d.ts.map +0 -1
  893. package/dist/optics/profile-contract.d.ts.map +0 -1
  894. package/dist/optics/psf-foundation.d.ts.map +0 -1
  895. package/dist/optics/radial-distortion.d.ts.map +0 -1
  896. package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
  897. package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
  898. package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
  899. package/dist/optics/sensor-environment-query.d.ts.map +0 -1
  900. package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
  901. package/dist/optics/sensor-psf-support.d.ts.map +0 -1
  902. package/dist/optics/stray-light.d.ts.map +0 -1
  903. package/dist/optics/thin-lens.d.ts.map +0 -1
  904. package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
  905. package/dist/output/capture-geometry.d.ts.map +0 -1
  906. package/dist/output/capture-sdr.d.ts.map +0 -1
  907. package/dist/output/crop.d.ts.map +0 -1
  908. package/dist/output/geometric-transforms.d.ts.map +0 -1
  909. package/dist/output/lens-corrections.d.ts.map +0 -1
  910. package/dist/output/native-capture-sdr.d.ts.map +0 -1
  911. package/dist/output/print-contrast-reference.d.ts.map +0 -1
  912. package/dist/output/print-detail.d.ts.map +0 -1
  913. package/dist/output/print-jpeg.d.ts.map +0 -1
  914. package/dist/output/print-plan.d.ts.map +0 -1
  915. package/dist/output/print-region-statistics.d.ts.map +0 -1
  916. package/dist/output/sdr-rendering.d.ts.map +0 -1
  917. package/dist/output/subject-framing-crop.d.ts.map +0 -1
  918. package/dist/schema/camera.d.ts.map +0 -1
  919. package/dist/schema/camera.js +0 -3
  920. package/dist/schema/camera.js.map +0 -1
  921. package/dist/schema/illumination-spectral.d.ts.map +0 -1
  922. package/dist/schema/illumination-temporal.d.ts.map +0 -1
  923. package/dist/schema/illumination.d.ts.map +0 -1
  924. package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
  925. package/dist/schema/scene-radiance.d.ts.map +0 -1
  926. package/dist/schema/scene.d.ts.map +0 -1
  927. package/dist/schema/scene.js +0 -3
  928. package/dist/schema/scene.js.map +0 -1
  929. package/dist/schema/validation.d.ts.map +0 -1
  930. package/dist/sensor/accumulated-charge.d.ts.map +0 -1
  931. package/dist/sensor/architecture.d.ts.map +0 -1
  932. package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
  933. package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
  934. package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
  935. package/dist/sensor/capture-mode.d.ts.map +0 -1
  936. package/dist/sensor/color-sampling.d.ts.map +0 -1
  937. package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
  938. package/dist/sensor/dark-current.d.ts.map +0 -1
  939. package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
  940. package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
  941. package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
  942. package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
  943. package/dist/sensor/exposure-window.d.ts.map +0 -1
  944. package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
  945. package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
  946. package/dist/sensor/optical-stack.d.ts.map +0 -1
  947. package/dist/sensor/photon-energy.d.ts.map +0 -1
  948. package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
  949. package/dist/sensor/pixel-pitch.d.ts.map +0 -1
  950. package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
  951. package/dist/sensor/raw-readout.d.ts.map +0 -1
  952. package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
  953. package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
  954. package/dist/sensor/readout-timing.d.ts.map +0 -1
  955. package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
  956. package/dist/sensor/response-operating-range.d.ts.map +0 -1
  957. package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
  958. package/dist/sensor/sampling-aperture.d.ts.map +0 -1
  959. package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
  960. package/dist/sensor/sensor-geometry.d.ts.map +0 -1
  961. package/dist/sensor/signal-noise.d.ts.map +0 -1
  962. package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
  963. package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
  964. package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
  965. package/dist/sensor/spectral-coverage.d.ts.map +0 -1
  966. package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
  967. package/dist/sensor/spectral-response.d.ts.map +0 -1
  968. package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
  969. package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
  970. package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
  971. package/dist/simulation/poc-simulation.d.ts.map +0 -1
  972. package/dist/stabilization/camera-shake.d.ts.map +0 -1
  973. package/dist/stabilization/system.d.ts.map +0 -1
  974. package/docs/API_STYLE.md +0 -235
  975. package/docs/ARCHITECTURE.md +0 -356
  976. package/docs/AUTOMATION_COORDINATION.md +0 -190
  977. package/docs/CAPTURE_COLOR.md +0 -25
  978. package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
  979. package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
  980. package/docs/CAPTURE_SDR.md +0 -22
  981. package/docs/DENSE_PUPIL_QUALIFICATION.md +0 -121
  982. package/docs/DEVELOPERS.md +0 -68
  983. package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
  984. package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
  985. package/docs/EXPORT_ACCEPTANCE.md +0 -133
  986. package/docs/GENERIC_TIER_PRESETS.md +0 -269
  987. package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
  988. package/docs/IMAGE_FORMATION.md +0 -247
  989. package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
  990. package/docs/MOTION_AND_SIGNAL.md +0 -250
  991. package/docs/NATIVE_CAPTURE_SDR.md +0 -70
  992. package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
  993. package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
  994. package/docs/NATIVE_RAW_AND_PRINT.md +0 -54
  995. package/docs/NUMERICAL_CORRECTNESS.md +0 -191
  996. package/docs/PERFORMANCE_BASELINE.md +0 -56
  997. package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
  998. package/docs/PHYSICS_FOUNDATION.md +0 -426
  999. package/docs/POC_API.md +0 -278
  1000. package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
  1001. package/docs/POC_PROJECTION_REUSE.md +0 -124
  1002. package/docs/PRINT_195_196_REVIEW.md +0 -93
  1003. package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
  1004. package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
  1005. package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
  1006. package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
  1007. package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
  1008. package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
  1009. package/docs/PRINT_PLANNING.md +0 -75
  1010. package/docs/PRINT_REGION_STATISTICS.md +0 -38
  1011. package/docs/PROCESSED_OUTPUT.md +0 -157
  1012. package/docs/PRODUCTION_COMPOSITION.md +0 -373
  1013. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
  1014. package/docs/PROVENANCE.md +0 -115
  1015. package/docs/PSF_FOUNDATION.md +0 -165
  1016. package/docs/RAW_FRAME_ENVELOPE.md +0 -56
  1017. package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
  1018. package/docs/RELEASE_1_0.md +0 -66
  1019. package/docs/RELEASE_1_0_1.md +0 -61
  1020. package/docs/RELEASE_1_1_0.md +0 -25
  1021. package/docs/RELEASE_1_2_0.md +0 -51
  1022. package/docs/RELEASE_1_3_0.md +0 -15
  1023. package/docs/RELEASE_1_4_0.md +0 -23
  1024. package/docs/RELEASE_1_5_0.md +0 -105
  1025. package/docs/RELEASE_AUDIT.md +0 -39
  1026. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
  1027. package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
  1028. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
  1029. package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
  1030. package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
  1031. package/docs/SDR_RENDERING.md +0 -33
  1032. package/docs/SENSOR_APERTURE_RAYS.md +0 -23
  1033. package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
  1034. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
  1035. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
  1036. package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
  1037. package/docs/SENSOR_RAW_FRAME.md +0 -20
  1038. package/docs/SENSOR_RAW_PRODUCER.md +0 -77
  1039. package/docs/SEPARABLE_EMISSION_DRAFT.md +0 -103
  1040. package/docs/SIGNAL_CONFORMANCE.md +0 -23
  1041. package/docs/SIMULATED_CAPTURE.md +0 -65
  1042. package/docs/STABILIZATION.md +0 -234
  1043. package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
  1044. package/docs/TIER_ACCEPTANCE.md +0 -129
  1045. package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
  1046. package/docs/V1_COMPOSITION_MAP.md +0 -123
  1047. package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
  1048. package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
  1049. package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
  1050. package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
  1051. package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
  1052. package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
  1053. package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
  1054. package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
  1055. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
  1056. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
  1057. package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
  1058. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
  1059. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
  1060. package/docs/licenses/castleCSF-MIT.txt +0 -21
  1061. package/docs/validation/dense-pupil-2026-10-06/pilot.jsonl +0 -6
  1062. package/docs/validation/documentation-fragments.json +0 -212
  1063. package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
  1064. package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
  1065. package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
  1066. package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
  1067. package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
  1068. package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
  1069. package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
  1070. package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
  1071. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
  1072. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
  1073. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
  1074. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
  1075. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
  1076. package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
  1077. package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
  1078. package/docs/validation/print-196-candidate-capabilities.json +0 -28
  1079. package/docs/validation/print-196-candidate-evidence.json +0 -356
  1080. package/docs/validation/print-196-engine-acceptance.json +0 -81
  1081. package/docs/validation/print-detail-capabilities.json +0 -103
  1082. package/docs/validation/print-detail-jpeg-evidence.json +0 -116
  1083. package/docs/validation/print-detail-sdr-evidence.json +0 -81
  1084. package/docs/validation/release-audit-inventory.json +0 -1306
  1085. package/docs/validation/tier-acceptance-report-v1.json +0 -2538
@@ -1 +1 @@
1
- {"version":3,"file":"capture-color-sampling-binding.js","sourceRoot":"","sources":["../../src/sensor/capture-color-sampling-binding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capture-color-sampling-binding.js","sourceRoot":"","sources":["../../src/sensor/capture-color-sampling-binding.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Links the sensor's native image pixel grid to its grid of colour-sampling sites (for example the\n * cells of a CFA, colour filter array), and finds which sites feed each capture-mode sample.\n *\n * The link exists only because the caller supplies an evidence-backed binding. Matching grid sizes\n * are never taken as proof of a one-to-one link. This first version supports only regular\n * rectangular blocks of sites that share the native top-left corner.\n * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support\n * limits.\n */\n\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport {\n parseEvidenceList,\n type EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport {\n InvalidScientificInputError,\n requirePositiveInteger\n} from \"../core/validation.js\";\nimport {\n resolveCaptureMode,\n type CaptureModeProfile,\n type CaptureModeSampleCombinationDomain,\n type CaptureModeSensorOffsetNativeSamples,\n type SourcedCaptureModeFact\n} from \"./capture-mode.js\";\nimport {\n parseSensorColorSamplingProfile,\n type SensorColorSamplingProfile\n} from \"./color-sampling.js\";\nimport type { NativeImageRaster } from \"./sensor-geometry.js\";\nimport { requireInputObject, requireInputKeys, rejectUnknownFields } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport interface NativeEffectiveRasterColorSamplingBindingProfile {\n schemaVersion: \"0.1.0\";\n bindingId: string;\n colorSamplingProfileId: string;\n /**\n * The exact native image grid this binding has evidence for. Do not reuse\n * the binding with another grid just because another sensor or mode has\n * similar dimensions or the same aspect ratio.\n */\n nativeRaster: NativeImageRaster;\n /**\n * Evidence for the link between the native image grid and the colour-site\n * grid itself.\n *\n * Capture-mode and colour-layout facts keep their own separate evidence.\n */\n evidence: readonly EvidenceProvenance[];\n relationship: {\n kind: \"regular-native-effective-sample-blocks\";\n /**\n * Number of colour-sampling sites one native image sample spans\n * horizontally.\n */\n sitesPerNativeSampleX: number;\n /**\n * Number of colour-sampling sites one native image sample spans\n * vertically.\n */\n sitesPerNativeSampleY: number;\n /**\n * Both grids start at the same native sensor top-left corner.\n *\n * This keeps the CFA phase absolute through later active-area crops and\n * orientation changes.\n */\n anchor: \"shared-native-top-left\";\n };\n}\n\nexport interface ColorSamplingSiteGridDimensions {\n widthSites: number;\n heightSites: number;\n}\n\nexport interface ResolvedNativeEffectiveRasterColorSamplingBinding {\n bindingId: string;\n colorSamplingProfileId: string;\n nativeRaster: NativeImageRaster;\n relationshipMeaning:\n | \"one-native-effective-sample-to-one-color-site\"\n | \"one-native-effective-sample-to-rectangular-color-site-block\";\n relationship: {\n kind: \"regular-native-effective-sample-blocks\";\n sitesPerNativeSampleX: number;\n sitesPerNativeSampleY: number;\n anchor: \"shared-native-top-left\";\n };\n colorSamplingSiteGrid: ColorSamplingSiteGridDimensions;\n totalColorSamplingSites: number;\n nativeImageRasterBindingEstablished: true;\n physicalPhotodiodeBindingEstablished: false;\n physicalPhotodiodeCountInference: \"not-permitted\";\n spectralResponseEstablished: false;\n componentEvidence: {\n binding: readonly EvidenceProvenance[];\n colorSamplingProfile: readonly EvidenceProvenance[];\n };\n}\n\nexport interface NativeEffectiveSampleRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface ColorSamplingSiteRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface CaptureModeFullFrameSampleIndex {\n /**\n * Zero-based index in the selected mode's full-frame sample grid (per frame).\n * Convert crop-relative coordinates to absolute full-frame indices before\n * calling this API.\n */\n x: number;\n y: number;\n}\n\nexport interface ColorSamplingChannelSiteCount {\n channelId: string;\n siteCount: number;\n}\n\nexport type ColorSamplingChannelComposition =\n | {\n kind: \"single-channel\";\n channelId: string;\n }\n | {\n kind: \"mixed-channels\";\n channelIds: readonly string[];\n };\n\nexport interface GroupedCaptureModeSamplingAnchorDeclaration {\n anchor: \"native-effective-raster-top-left\";\n evidence: readonly EvidenceProvenance[];\n}\n\nexport interface ResolveCaptureModeColorSamplingContributorsInput {\n nativeRaster: NativeImageRaster;\n captureModeProfile: CaptureModeProfile;\n modeId: string;\n colorSamplingProfile: SensorColorSamplingProfile;\n bindingProfile: NativeEffectiveRasterColorSamplingBindingProfile;\n modeSampleIndexFullFrame: CaptureModeFullFrameSampleIndex;\n /**\n * Required for modes that group native samples, because the capture-mode\n * profile declares grouping factors but does not prove where the groups start.\n */\n groupedSamplingAnchor?: GroupedCaptureModeSamplingAnchorDeclaration;\n}\n\nexport interface ResolvedCaptureModeColorSamplingContributors {\n modeId: string;\n colorSamplingProfileId: string;\n modeSampleCoordinateSystem:\n \"capture-mode-full-frame-effective-sample-index\";\n modeSampleIndexFullFrame: CaptureModeFullFrameSampleIndex;\n modeSampleRaster: {\n pixelWidth: number;\n pixelHeight: number;\n };\n modeSamplingKind:\n | \"native-effective-raster\"\n | \"grouped-native-samples\";\n nativeEffectiveSampleRect: NativeEffectiveSampleRect;\n colorSamplingSiteRect: ColorSamplingSiteRect;\n colorSamplingSiteGrid: ColorSamplingSiteGridDimensions;\n totalContributorSites: number;\n channelSiteCounts: readonly ColorSamplingChannelSiteCount[];\n channelComposition: ColorSamplingChannelComposition;\n /**\n * Present only when the selected capture mode groups several native samples\n * into one sample per frame.\n */\n grouping:\n | {\n groupWidthSamples: SourcedCaptureModeFact<number>;\n groupHeightSamples: SourcedCaptureModeFact<number>;\n combinationDomain?: SourcedCaptureModeFact<CaptureModeSampleCombinationDomain>;\n anchor: \"native-effective-raster-top-left\";\n anchorEvidence: readonly EvidenceProvenance[];\n }\n | null;\n /**\n * The sensor-shift sequence stays attached to the sensor and capture mode.\n *\n * The sensor and its CFA move together, so these offsets must not change\n * which colour channel a site belongs to.\n */\n interFrameSensorOffsetsNativeSamples?: SourcedCaptureModeFact<\n readonly CaptureModeSensorOffsetNativeSamples[]\n >;\n sensorShiftChangesColorSiteAssignment: false;\n sensorShiftOpticalRegistration:\n \"outside-this-contract\";\n structuralSourceStage: \"pre-reconstruction\";\n completeDownstreamPixelDependencyEstablished: false;\n signalCombinationWeightingEstablished: false;\n spectralResponseEstablished: false;\n physicalPhotodiodeBindingEstablished: false;\n physicalPhotodiodeCountInference: \"not-permitted\";\n componentEvidence: {\n binding: readonly EvidenceProvenance[];\n colorSamplingProfile: readonly EvidenceProvenance[];\n captureMode: readonly EvidenceProvenance[];\n };\n}\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty string.\"\n );\n }\n return value;\n}\n\nfunction requirePositiveSafeInteger(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isSafeInteger(value) ||\n value <= 0\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a positive safe integer.\"\n );\n }\n return value;\n}\n\nfunction parseBoundNativeRaster(\n value: unknown\n): NativeImageRaster {\n const nativeRaster = requireRecord(\n value,\n \"colorSamplingBinding.nativeRaster\", [\"pixelWidth\", \"pixelHeight\"]\n );\n const pixelWidth =\n requirePositiveSafeInteger(\n nativeRaster.pixelWidth,\n \"colorSamplingBinding.nativeRaster.pixelWidth\"\n );\n const pixelHeight =\n requirePositiveSafeInteger(\n nativeRaster.pixelHeight,\n \"colorSamplingBinding.nativeRaster.pixelHeight\"\n );\n\n if (\n !Number.isSafeInteger(\n pixelWidth * pixelHeight\n )\n ) {\n throw new InvalidConfigurationError(\n \"colorSamplingBinding.nativeRaster total image-sample count must be a safe integer.\"\n );\n }\n\n return {\n pixelWidth,\n pixelHeight\n };\n}\n\nfunction safeProduct(\n values: readonly number[],\n path: string\n): number {\n let result = 1;\n for (const value of values) {\n result *= value;\n if (!Number.isSafeInteger(result)) {\n throw new InvalidScientificInputError(\n path + \" must remain a safe integer.\"\n );\n }\n }\n return result;\n}\n\nfunction validateNativeRaster(\n raster: NativeImageRaster\n): void {\n requireInputObject(raster, \"raster input\");\n requirePositiveInteger(\n \"nativeRaster.pixelWidth\",\n raster.pixelWidth\n );\n requirePositiveInteger(\n \"nativeRaster.pixelHeight\",\n raster.pixelHeight\n );\n safeProduct(\n [raster.pixelWidth, raster.pixelHeight],\n \"nativeRaster total image-sample count\"\n );\n}\n\nfunction requireFullFrameSampleIndex(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isSafeInteger(value) ||\n value < 0\n ) {\n throw new InvalidScientificInputError(\n path +\n \" must be a non-negative safe integer full-frame mode sample index.\"\n );\n }\n return value;\n}\n\n/**\n * Parses the explicit link between the native image pixel grid and the separate\n * grid of colour-sampling sites.\n *\n * This first version supports only regular rectangular blocks of sites that\n * share the native top-left corner. Irregular mappings, sparse exceptions and\n * mode-specific declared grids would need new, explicit contracts.\n */\nexport function parseNativeEffectiveRasterColorSamplingBindingProfile(\n value: unknown\n): NativeEffectiveRasterColorSamplingBindingProfile {\n const profile = requireRecord(\n value,\n \"colorSamplingBinding\", [\"schemaVersion\", \"relationship\", \"bindingId\", \"colorSamplingProfileId\", \"nativeRaster\", \"evidence\"]\n );\n\n if (profile.schemaVersion !== \"0.1.0\") {\n throw new InvalidConfigurationError(\n 'colorSamplingBinding.schemaVersion must be \"0.1.0\".'\n );\n }\n\n const relationship = requireRecord(\n profile.relationship,\n \"colorSamplingBinding.relationship\", [\"kind\", \"anchor\", \"sitesPerNativeSampleX\", \"sitesPerNativeSampleY\"]\n );\n\n if (\n relationship.kind !==\n \"regular-native-effective-sample-blocks\"\n ) {\n throw new InvalidConfigurationError(\n \"colorSamplingBinding.relationship.kind is invalid.\"\n );\n }\n\n if (\n relationship.anchor !==\n \"shared-native-top-left\"\n ) {\n throw new InvalidConfigurationError(\n 'colorSamplingBinding.relationship.anchor must be \"shared-native-top-left\".'\n );\n }\n\n return {\n schemaVersion: \"0.1.0\",\n bindingId: requireNonEmptyString(\n profile.bindingId,\n \"colorSamplingBinding.bindingId\"\n ),\n colorSamplingProfileId:\n requireNonEmptyString(\n profile.colorSamplingProfileId,\n \"colorSamplingBinding.colorSamplingProfileId\"\n ),\n nativeRaster: parseBoundNativeRaster(\n profile.nativeRaster\n ),\n evidence: parseEvidenceList(\n profile.evidence,\n \"colorSamplingBinding.evidence\"\n ),\n relationship: {\n kind:\n \"regular-native-effective-sample-blocks\",\n sitesPerNativeSampleX:\n requirePositiveSafeInteger(\n relationship.sitesPerNativeSampleX,\n \"colorSamplingBinding.relationship.sitesPerNativeSampleX\"\n ),\n sitesPerNativeSampleY:\n requirePositiveSafeInteger(\n relationship.sitesPerNativeSampleY,\n \"colorSamplingBinding.relationship.sitesPerNativeSampleY\"\n ),\n anchor: \"shared-native-top-left\"\n }\n };\n}\n\n/**\n * Validates and resolves the link between NativeImageRaster and an exact colour\n * sampling layout (monochrome or a repeating pattern such as a CFA).\n *\n * Matching dimensions are never taken as proof of a one-to-one link. The link\n * exists only because the caller supplied this evidence-backed binding profile.\n */\nexport function resolveNativeEffectiveRasterColorSamplingBinding(\n input: {\n nativeRaster: NativeImageRaster;\n colorSamplingProfile: SensorColorSamplingProfile;\n bindingProfile: NativeEffectiveRasterColorSamplingBindingProfile;\n }\n): ResolvedNativeEffectiveRasterColorSamplingBinding {\n requireInputKeys(input, \"resolveNativeEffectiveRasterColorSamplingBinding\", [\"nativeRaster\", \"colorSamplingProfile\", \"bindingProfile\"]);\n validateNativeRaster(input.nativeRaster);\n\n const colorSamplingProfile =\n parseSensorColorSamplingProfile(\n input.colorSamplingProfile\n );\n const bindingProfile =\n parseNativeEffectiveRasterColorSamplingBindingProfile(\n input.bindingProfile\n );\n\n if (\n bindingProfile.colorSamplingProfileId !==\n colorSamplingProfile.profileId\n ) {\n throw new InvalidScientificInputError(\n \"Binding colorSamplingProfileId must match colorSamplingProfile.profileId.\"\n );\n }\n\n if (\n bindingProfile.nativeRaster.pixelWidth !==\n input.nativeRaster.pixelWidth ||\n bindingProfile.nativeRaster.pixelHeight !==\n input.nativeRaster.pixelHeight\n ) {\n throw new InvalidScientificInputError(\n \"Binding nativeRaster must exactly match the supplied canonical native effective raster.\"\n );\n }\n\n if (colorSamplingProfile.layout.kind === \"layered\") {\n throw new InvalidScientificInputError(\n \"Layered color sampling cannot be bound to NativeImageRaster until its per-layer spatial sampling relationship is explicitly modeled.\"\n );\n }\n\n if (\n colorSamplingProfile.coordinateSystem !==\n \"native-sensor-color-sampling-site-index\"\n ) {\n throw new InvalidScientificInputError(\n \"Resolvable color sampling binding requires the native sensor color-sampling-site coordinate system.\"\n );\n }\n\n const widthSites = safeProduct(\n [\n input.nativeRaster.pixelWidth,\n bindingProfile.relationship\n .sitesPerNativeSampleX\n ],\n \"color-sampling site-grid width\"\n );\n const heightSites = safeProduct(\n [\n input.nativeRaster.pixelHeight,\n bindingProfile.relationship\n .sitesPerNativeSampleY\n ],\n \"color-sampling site-grid height\"\n );\n const totalColorSamplingSites =\n safeProduct(\n [widthSites, heightSites],\n \"color-sampling site-grid total site count\"\n );\n\n const oneToOne =\n bindingProfile.relationship\n .sitesPerNativeSampleX === 1 &&\n bindingProfile.relationship\n .sitesPerNativeSampleY === 1;\n\n return {\n bindingId: bindingProfile.bindingId,\n colorSamplingProfileId:\n bindingProfile.colorSamplingProfileId,\n nativeRaster: {\n ...input.nativeRaster\n },\n relationshipMeaning: oneToOne\n ? \"one-native-effective-sample-to-one-color-site\"\n : \"one-native-effective-sample-to-rectangular-color-site-block\",\n relationship: {\n ...bindingProfile.relationship\n },\n colorSamplingSiteGrid: {\n widthSites,\n heightSites\n },\n totalColorSamplingSites,\n nativeImageRasterBindingEstablished: true,\n physicalPhotodiodeBindingEstablished: false,\n physicalPhotodiodeCountInference:\n \"not-permitted\",\n spectralResponseEstablished: false,\n componentEvidence: {\n binding: bindingProfile.evidence,\n colorSamplingProfile:\n colorSamplingProfile.evidence\n }\n };\n}\n\nfunction countResidueInRange(\n start: number,\n length: number,\n period: number,\n residue: number\n): number {\n const startResidue = start % period;\n const delta =\n (residue - startResidue + period) %\n period;\n\n if (delta >= length) {\n return 0;\n }\n\n return (\n 1 +\n Math.floor(\n (length - 1 - delta) / period\n )\n );\n}\n\nfunction channelCountsForSiteRect(\n profile: SensorColorSamplingProfile,\n rect: ColorSamplingSiteRect\n): readonly ColorSamplingChannelSiteCount[] {\n const totalSites = safeProduct(\n [rect.width, rect.height],\n \"color-sampling contributor site count\"\n );\n\n if (profile.layout.kind === \"layered\") {\n throw new InvalidScientificInputError(\n \"Layered color sampling does not have resolvable site contributors in schema 0.1.0.\"\n );\n }\n\n if (profile.layout.kind === \"monochrome\") {\n return [\n {\n channelId: profile.layout.channelId,\n siteCount: totalSites\n }\n ];\n }\n\n const counts =\n new Map<string, number>();\n\n for (\n let tileY = 0;\n tileY < profile.layout.repeatHeightSites;\n tileY += 1\n ) {\n const countY = countResidueInRange(\n rect.y,\n rect.height,\n profile.layout.repeatHeightSites,\n tileY\n );\n if (countY === 0) {\n continue;\n }\n\n for (\n let tileX = 0;\n tileX < profile.layout.repeatWidthSites;\n tileX += 1\n ) {\n const countX = countResidueInRange(\n rect.x,\n rect.width,\n profile.layout.repeatWidthSites,\n tileX\n );\n if (countX === 0) {\n continue;\n }\n\n const tileIndex =\n tileY *\n profile.layout.repeatWidthSites +\n tileX;\n const channelId =\n profile.layout.siteChannelIds[\n tileIndex\n ];\n\n if (channelId === undefined) {\n throw new InvalidScientificInputError(\n \"Periodic color-sampling tile resolution failed while calculating contributor counts.\"\n );\n }\n\n const siteCount = safeProduct(\n [countX, countY],\n \"per-channel contributor site count\"\n );\n const prior = counts.get(channelId) ?? 0;\n const next = prior + siteCount;\n if (!Number.isSafeInteger(next)) {\n throw new InvalidScientificInputError(\n \"Per-channel contributor site count must remain a safe integer.\"\n );\n }\n counts.set(channelId, next);\n }\n }\n\n const result = Array.from(\n counts,\n ([channelId, siteCount]) => ({\n channelId,\n siteCount\n })\n );\n const countedTotal = result.reduce(\n (sum, entry) => sum + entry.siteCount,\n 0\n );\n\n if (countedTotal !== totalSites) {\n throw new InvalidScientificInputError(\n \"Color-sampling contributor channel counts do not cover the complete contributor site rectangle.\"\n );\n }\n\n return result;\n}\n\n/**\n * Finds which colour-sampling sites lie under one capture-mode sample, before any\n * reconstruction (demosaicing).\n *\n * The sample index is always absolute in the selected mode's full-frame grid. Crop-relative\n * indices are not accepted, so an active-area crop can never silently reset the CFA phase.\n *\n * For modes that group native samples, the returned rectangle covers every native sample in\n * the declared regular group. This only describes which sites lie under the sample. The engine\n * reports how many sites of each channel there are, but does not claim this is every dependency\n * of the final digital pixel. It never makes up combination weights, sum or average rules,\n * spectral response, or photon or electron values.\n *\n * Modes with a declared sample grid are rejected, because the capture-mode profile says their\n * relationship to the native grid cannot safely be written as simple integer grouping.\n *\n * Sensor shifts between frames are kept as capture-mode metadata only. The sensor and CFA move\n * together, so the shifts do not change which channel a site belongs to. Their effect on optical\n * registration belongs to a later spatial-sampling or image-formation model.\n */\nexport function resolveCaptureModeColorSamplingContributors(\n input: ResolveCaptureModeColorSamplingContributorsInput\n): ResolvedCaptureModeColorSamplingContributors {\n requireInputKeys(input, \"resolveCaptureModeColorSamplingContributors\", [\"nativeRaster\", \"captureModeProfile\", \"modeId\", \"colorSamplingProfile\", \"bindingProfile\", \"modeSampleIndexFullFrame\", \"groupedSamplingAnchor\"]);\n const colorSamplingProfile =\n parseSensorColorSamplingProfile(\n input.colorSamplingProfile\n );\n const binding =\n resolveNativeEffectiveRasterColorSamplingBinding(\n {\n nativeRaster: input.nativeRaster,\n colorSamplingProfile,\n bindingProfile: input.bindingProfile\n }\n );\n const captureMode = resolveCaptureMode({\n nativeRaster: input.nativeRaster,\n profile: input.captureModeProfile,\n modeId: input.modeId\n });\n\n if (\n !captureMode.dependencies.includes(\n \"color-sampling-model\"\n )\n ) {\n throw new InvalidScientificInputError(\n \"Selected capture mode must declare the color-sampling-model dependency before color-site contributors can be resolved.\"\n );\n }\n\n const modeX = requireFullFrameSampleIndex(\n input.modeSampleIndexFullFrame.x,\n \"modeSampleIndexFullFrame.x\"\n );\n const modeY = requireFullFrameSampleIndex(\n input.modeSampleIndexFullFrame.y,\n \"modeSampleIndexFullFrame.y\"\n );\n\n if (\n captureMode.perFrameSampling.kind ===\n \"declared-effective-raster\"\n ) {\n throw new InvalidScientificInputError(\n \"declared-effective-raster capture modes require a separate mode-specific color-site binding; no relationship may be inferred from raster dimensions alone.\"\n );\n }\n\n const modeSampleRaster =\n captureMode.perFrameSampling.raster;\n\n if (\n modeX >= modeSampleRaster.pixelWidth ||\n modeY >= modeSampleRaster.pixelHeight\n ) {\n throw new InvalidScientificInputError(\n \"modeSampleIndexFullFrame must lie within the selected mode's full-frame per-frame sampling raster.\"\n );\n }\n\n let nativeEffectiveSampleRect:\n NativeEffectiveSampleRect;\n let grouping:\n ResolvedCaptureModeColorSamplingContributors[\"grouping\"];\n\n if (\n captureMode.perFrameSampling.kind ===\n \"native-effective-raster\"\n ) {\n if (input.groupedSamplingAnchor !== undefined) {\n throw new InvalidScientificInputError(\n \"groupedSamplingAnchor must be omitted for native-effective-raster capture modes.\"\n );\n }\n\n nativeEffectiveSampleRect = {\n x: modeX,\n y: modeY,\n width: 1,\n height: 1\n };\n grouping = null;\n } else {\n if (\n input.groupedSamplingAnchor === undefined ||\n input.groupedSamplingAnchor.anchor !==\n \"native-effective-raster-top-left\"\n ) {\n throw new InvalidScientificInputError(\n \"grouped-native-samples capture modes require an explicit native-effective-raster-top-left grouping anchor declaration.\"\n );\n }\n const groupingAnchorEvidence =\n parseEvidenceList(\n input.groupedSamplingAnchor.evidence,\n \"groupedSamplingAnchor.evidence\"\n );\n\n const groupWidth =\n captureMode.perFrameSampling\n .groupWidthSamples.value;\n const groupHeight =\n captureMode.perFrameSampling\n .groupHeightSamples.value;\n\n nativeEffectiveSampleRect = {\n x: safeProduct(\n [modeX, groupWidth],\n \"native effective sample rectangle x\"\n ),\n y: safeProduct(\n [modeY, groupHeight],\n \"native effective sample rectangle y\"\n ),\n width: groupWidth,\n height: groupHeight\n };\n grouping = {\n groupWidthSamples:\n captureMode.perFrameSampling\n .groupWidthSamples,\n groupHeightSamples:\n captureMode.perFrameSampling\n .groupHeightSamples,\n ...(captureMode.perFrameSampling\n .combinationDomain === undefined\n ? {}\n : {\n combinationDomain:\n captureMode.perFrameSampling\n .combinationDomain\n }),\n anchor:\n \"native-effective-raster-top-left\",\n anchorEvidence:\n groupingAnchorEvidence\n };\n }\n\n const sitesPerNativeX =\n binding.relationship\n .sitesPerNativeSampleX;\n const sitesPerNativeY =\n binding.relationship\n .sitesPerNativeSampleY;\n\n const colorSamplingSiteRect:\n ColorSamplingSiteRect = {\n x: safeProduct(\n [\n nativeEffectiveSampleRect.x,\n sitesPerNativeX\n ],\n \"color-sampling contributor rectangle x\"\n ),\n y: safeProduct(\n [\n nativeEffectiveSampleRect.y,\n sitesPerNativeY\n ],\n \"color-sampling contributor rectangle y\"\n ),\n width: safeProduct(\n [\n nativeEffectiveSampleRect.width,\n sitesPerNativeX\n ],\n \"color-sampling contributor rectangle width\"\n ),\n height: safeProduct(\n [\n nativeEffectiveSampleRect.height,\n sitesPerNativeY\n ],\n \"color-sampling contributor rectangle height\"\n )\n };\n\n if (\n colorSamplingSiteRect.x +\n colorSamplingSiteRect.width >\n binding.colorSamplingSiteGrid.widthSites ||\n colorSamplingSiteRect.y +\n colorSamplingSiteRect.height >\n binding.colorSamplingSiteGrid.heightSites\n ) {\n throw new InvalidScientificInputError(\n \"Resolved color-sampling contributor rectangle exceeds the bound color-site grid.\"\n );\n }\n\n const totalContributorSites =\n safeProduct(\n [\n colorSamplingSiteRect.width,\n colorSamplingSiteRect.height\n ],\n \"total contributor site count\"\n );\n const channelSiteCounts =\n channelCountsForSiteRect(\n colorSamplingProfile,\n colorSamplingSiteRect\n );\n\n const firstChannel = channelSiteCounts[0];\n if (firstChannel === undefined) {\n throw new InvalidScientificInputError(\n \"Resolved structural source region must contain at least one color-sampling channel.\"\n );\n }\n\n const channelComposition:\n ColorSamplingChannelComposition =\n channelSiteCounts.length === 1\n ? {\n kind: \"single-channel\",\n channelId: firstChannel.channelId\n }\n : {\n kind: \"mixed-channels\",\n channelIds:\n channelSiteCounts.map(\n (entry) => entry.channelId\n )\n };\n\n return {\n modeId: captureMode.modeId,\n colorSamplingProfileId:\n colorSamplingProfile.profileId,\n modeSampleCoordinateSystem:\n \"capture-mode-full-frame-effective-sample-index\",\n modeSampleIndexFullFrame: {\n x: modeX,\n y: modeY\n },\n modeSampleRaster: {\n ...modeSampleRaster\n },\n modeSamplingKind:\n captureMode.perFrameSampling.kind,\n nativeEffectiveSampleRect,\n colorSamplingSiteRect,\n colorSamplingSiteGrid: {\n ...binding.colorSamplingSiteGrid\n },\n totalContributorSites,\n channelSiteCounts,\n channelComposition,\n grouping,\n ...(captureMode\n .interFrameSensorOffsetsNativeSamples ===\n undefined\n ? {}\n : {\n interFrameSensorOffsetsNativeSamples:\n captureMode\n .interFrameSensorOffsetsNativeSamples\n }),\n sensorShiftChangesColorSiteAssignment:\n false,\n sensorShiftOpticalRegistration:\n \"outside-this-contract\",\n structuralSourceStage:\n \"pre-reconstruction\",\n completeDownstreamPixelDependencyEstablished:\n false,\n signalCombinationWeightingEstablished:\n false,\n spectralResponseEstablished: false,\n physicalPhotodiodeBindingEstablished:\n false,\n physicalPhotodiodeCountInference:\n \"not-permitted\",\n componentEvidence: {\n binding:\n binding.componentEvidence.binding,\n colorSamplingProfile:\n binding.componentEvidence\n .colorSamplingProfile,\n captureMode: captureMode.modeEvidence\n }\n };\n}\n"]}
@@ -45,19 +45,18 @@ export interface ResolvedCaptureModeTiming {
45
45
  limitations: readonly string[];
46
46
  }
47
47
  /**
48
- * Parses timing facts that are explicitly bound to one exact capture mode.
48
+ * Parses timing facts tied to one exact capture mode.
49
49
  *
50
- * Schema 0.1.0 intentionally admits only the timing schedule families already
51
- * owned by #12: simultaneous/global or uniform-linear native scans. Unsupported
52
- * non-uniform/segmented schedules fail closed instead of being approximated.
50
+ * Schema 0.1.0 accepts only the schedules the readout-timing and exposure-window
51
+ * models already support: global (simultaneous) or uniform linear native scans.
52
+ * Non-uniform or segmented schedules are rejected rather than approximated.
53
53
  */
54
54
  export declare function parseCaptureModeTimingProfile(value: unknown): CaptureModeTimingProfile;
55
55
  /**
56
- * Resolves the authoritative exposure/readout timing for one exact capture
57
- * mode and timing-profile identity.
56
+ * Resolves the exposure and readout timing for one exact capture mode and
57
+ * timing profile.
58
58
  *
59
- * Readout timing remains distinct from exposure-boundary timing. No absolute
60
- * readout/exposure synchronization is inferred.
59
+ * Readout timing stays separate from the exposure opening and closing times.
60
+ * No absolute sync between readout and exposure is assumed.
61
61
  */
62
62
  export declare function resolveCaptureModeTiming(input: ResolveCaptureModeTimingInput): ResolvedCaptureModeTiming;
63
- //# sourceMappingURL=capture-mode-timing.d.ts.map
@@ -1,12 +1,11 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  /**
3
- * Module boundary and integration notes.
4
- * Parses timing facts that are explicitly bound to one exact capture mode. Schema 0.1.0 intentionally
5
- * admits only the timing schedule families already owned by #12: simultaneous/global or uniform-linear
6
- * native scans. Unsupported non-uniform/segmented schedules fail closed instead of being approximated.
7
- * Resolves the authoritative exposure/readout timing for one exact capture mode and timing-profile
8
- * identity. Readout timing remains distinct from exposure-boundary timing. No absolute
9
- * readout/exposure synchronization is inferred.
3
+ * Capture-mode timing: exposure and readout timing facts tied to one exact capture mode.
4
+ *
5
+ * Only the schedules the readout-timing and exposure-window models already support are accepted:
6
+ * global (all rows at once) or a uniform linear scan (rolling, row by row). Non-uniform or segmented
7
+ * schedules are rejected, not approximated. Readout timing is kept separate from the exposure
8
+ * opening and closing times, and no absolute sync between them is assumed.
10
9
  * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
11
10
  * limits.
12
11
  */
@@ -15,6 +14,7 @@ import { parseEvidenceList } from "../core/evidence-provenance.js";
15
14
  import { InvalidScientificInputError } from "../core/validation.js";
16
15
  import { calculateCaptureExposureWindows } from "./exposure-window.js";
17
16
  import { calculateSensorReadoutTiming } from "./readout-timing.js";
17
+ import { requireInputKeys, rejectUnknownFields } from "../core/record-validation.js";
18
18
  export const CAPTURE_MODE_TIMING_PROFILE_SCHEMA_VERSION = "0.1.0";
19
19
  const SHUTTER_MECHANISMS = new Set([
20
20
  "mechanical",
@@ -27,12 +27,14 @@ const SCAN_DIRECTIONS = new Set([
27
27
  "left-to-right",
28
28
  "right-to-left"
29
29
  ]);
30
- function requireRecord(value, path) {
30
+ function requireRecord(value, path, allowedKeys) {
31
31
  if (typeof value !== "object" ||
32
32
  value === null ||
33
33
  Array.isArray(value)) {
34
34
  throw new InvalidConfigurationError(path + " must be an object.");
35
35
  }
36
+ if (allowedKeys !== null)
37
+ rejectUnknownFields(value, allowedKeys, path);
36
38
  return value;
37
39
  }
38
40
  function requireNonEmptyString(value, path) {
@@ -64,7 +66,7 @@ function parseLimitations(value, path) {
64
66
  return parsed;
65
67
  }
66
68
  function parseSecondsFact(value, path) {
67
- const record = requireRecord(value, path);
69
+ const record = requireRecord(value, path, ["unit", "value", "evidence"]);
68
70
  if (record.unit !== "s") {
69
71
  throw new InvalidConfigurationError(path + '.unit must be "s".');
70
72
  }
@@ -75,7 +77,7 @@ function parseSecondsFact(value, path) {
75
77
  };
76
78
  }
77
79
  function parseDirectionFact(value, path) {
78
- const record = requireRecord(value, path);
80
+ const record = requireRecord(value, path, ["value", "evidence"]);
79
81
  if (typeof record.value !== "string" ||
80
82
  !SCAN_DIRECTIONS.has(record.value)) {
81
83
  throw new InvalidConfigurationError(path + ".value is invalid.");
@@ -86,7 +88,7 @@ function parseDirectionFact(value, path) {
86
88
  };
87
89
  }
88
90
  function parseBoundarySchedule(value, path) {
89
- const record = requireRecord(value, path);
91
+ const record = requireRecord(value, path, ["kind", "directionNative", "traversalDurationSeconds"]);
90
92
  if (record.kind === "simultaneous") {
91
93
  if (record.directionNative !==
92
94
  undefined ||
@@ -112,7 +114,7 @@ function parseBoundarySchedule(value, path) {
112
114
  '.kind must be "simultaneous" or "uniform-linear-native-scan"; non-uniform schedules are not modeled.');
113
115
  }
114
116
  function parseReadout(value, path) {
115
- const record = requireRecord(value, path);
117
+ const record = requireRecord(value, path, ["captureReadoutDurationSeconds", "readoutMode", "scanDirectionNative", "spatialSamplingSkewSeconds"]);
116
118
  const duration = parseSecondsFact(record.captureReadoutDurationSeconds, path +
117
119
  ".captureReadoutDurationSeconds");
118
120
  if (record.readoutMode === "global") {
@@ -142,14 +144,14 @@ function parseReadout(value, path) {
142
144
  '.readoutMode must be "global" or "rolling".');
143
145
  }
144
146
  /**
145
- * Parses timing facts that are explicitly bound to one exact capture mode.
147
+ * Parses timing facts tied to one exact capture mode.
146
148
  *
147
- * Schema 0.1.0 intentionally admits only the timing schedule families already
148
- * owned by #12: simultaneous/global or uniform-linear native scans. Unsupported
149
- * non-uniform/segmented schedules fail closed instead of being approximated.
149
+ * Schema 0.1.0 accepts only the schedules the readout-timing and exposure-window
150
+ * models already support: global (simultaneous) or uniform linear native scans.
151
+ * Non-uniform or segmented schedules are rejected rather than approximated.
150
152
  */
151
153
  export function parseCaptureModeTimingProfile(value) {
152
- const record = requireRecord(value, "captureModeTimingProfile");
154
+ const record = requireRecord(value, "captureModeTimingProfile", ["schemaVersion", "scientificStatus", "scheduleFamily", "shutterMechanism", "nonUniformScheduleModeled", "profileId", "profileVersion", "captureModeId", "opening", "closing", "readout", "evidence", "limitations"]);
153
155
  if (record.schemaVersion !==
154
156
  CAPTURE_MODE_TIMING_PROFILE_SCHEMA_VERSION) {
155
157
  throw new InvalidConfigurationError('captureModeTimingProfile.schemaVersion must be "' +
@@ -190,13 +192,14 @@ export function parseCaptureModeTimingProfile(value) {
190
192
  };
191
193
  }
192
194
  /**
193
- * Resolves the authoritative exposure/readout timing for one exact capture
194
- * mode and timing-profile identity.
195
+ * Resolves the exposure and readout timing for one exact capture mode and
196
+ * timing profile.
195
197
  *
196
- * Readout timing remains distinct from exposure-boundary timing. No absolute
197
- * readout/exposure synchronization is inferred.
198
+ * Readout timing stays separate from the exposure opening and closing times.
199
+ * No absolute sync between readout and exposure is assumed.
198
200
  */
199
201
  export function resolveCaptureModeTiming(input) {
202
+ requireInputKeys(input, "resolveCaptureModeTiming", ["captureMode", "timingProfile", "nominalExposureDurationSeconds", "activeCaptureRect", "samplePointsNative"]);
200
203
  const profile = parseCaptureModeTimingProfile(input.timingProfile);
201
204
  if (profile.captureModeId !==
202
205
  input.captureMode.modeId) {
@@ -1 +1 @@
1
- {"version":3,"file":"capture-mode-timing.js","sourceRoot":"","sources":["../../src/sensor/capture-mode-timing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capture-mode-timing.js","sourceRoot":"","sources":["../../src/sensor/capture-mode-timing.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Capture-mode timing: exposure and readout timing facts tied to one exact capture mode.\n *\n * Only the schedules the readout-timing and exposure-window models already support are accepted:\n * global (all rows at once) or a uniform linear scan (rolling, row by row). Non-uniform or segmented\n * schedules are rejected, not approximated. Readout timing is kept separate from the exposure\n * opening and closing times, and no absolute sync between them is assumed.\n * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support\n * limits.\n */\n\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport {\n parseEvidenceList,\n type EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport { InvalidScientificInputError } from \"../core/validation.js\";\nimport type {\n RasterPoint,\n RasterRect\n} from \"../output/capture-geometry.js\";\nimport {\n calculateCaptureExposureWindows,\n type CaptureExposureWindows,\n type ExposureBoundarySchedule,\n type SourcedCaptureBoundaryDirection,\n type SourcedCaptureTimingSeconds\n} from \"./exposure-window.js\";\nimport type {\n ResolvedCaptureMode\n} from \"./capture-mode.js\";\nimport {\n calculateSensorReadoutTiming,\n type CaptureShutterMechanism,\n type NativeSensorReadoutScanDirection,\n type SensorReadoutTiming,\n type SensorReadoutTimingDeclaration,\n type SourcedSensorReadoutFact,\n type SourcedSensorTimingSeconds\n} from \"./readout-timing.js\";\nimport type {\n NativeImageRaster\n} from \"./sensor-geometry.js\";\nimport { requireInputKeys, rejectUnknownFields } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport const CAPTURE_MODE_TIMING_PROFILE_SCHEMA_VERSION =\n \"0.1.0\" as const;\n\nexport interface CaptureModeTimingProfile {\n schemaVersion:\n typeof CAPTURE_MODE_TIMING_PROFILE_SCHEMA_VERSION;\n profileId: string;\n profileVersion: string;\n captureModeId: string;\n scientificStatus: \"approximation\";\n scheduleFamily:\n \"global-or-uniform-linear-native-scan\";\n shutterMechanism:\n CaptureShutterMechanism;\n opening:\n ExposureBoundarySchedule;\n closing:\n ExposureBoundarySchedule;\n readout:\n SensorReadoutTimingDeclaration;\n nonUniformScheduleModeled: false;\n evidence: readonly EvidenceProvenance[];\n limitations: readonly string[];\n}\n\nexport interface ResolveCaptureModeTimingInput {\n captureMode:\n ResolvedCaptureMode;\n timingProfile:\n CaptureModeTimingProfile;\n nominalExposureDurationSeconds:\n SourcedCaptureTimingSeconds;\n activeCaptureRect?: RasterRect;\n samplePointsNative?:\n readonly RasterPoint[];\n}\n\nexport interface ResolvedCaptureModeTiming {\n schemaVersion:\n typeof CAPTURE_MODE_TIMING_PROFILE_SCHEMA_VERSION;\n timingProfileId: string;\n timingProfileVersion: string;\n captureModeId: string;\n captureModeTimingIdentity:\n \"exact-mode-and-profile\";\n nativeRaster: NativeImageRaster;\n modeDeclaresTimingDependency:\n boolean;\n scheduleFamily:\n \"global-or-uniform-linear-native-scan\";\n exposureWindows:\n CaptureExposureWindows;\n readoutTiming:\n SensorReadoutTiming;\n timeReference:\n \"first-opening-boundary-phase\";\n readoutExposureSynchronization:\n \"not-assumed\";\n nonUniformScheduleModeled: false;\n evidence: readonly EvidenceProvenance[];\n limitations: readonly string[];\n}\n\nconst SHUTTER_MECHANISMS =\n new Set<CaptureShutterMechanism>([\n \"mechanical\",\n \"electronic-first-curtain\",\n \"electronic\"\n ]);\n\nconst SCAN_DIRECTIONS =\n new Set<NativeSensorReadoutScanDirection>([\n \"top-to-bottom\",\n \"bottom-to-top\",\n \"left-to-right\",\n \"right-to-left\"\n ]);\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty string.\"\n );\n }\n return value.trim();\n}\n\nfunction requireNonNegativeFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value < 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be finite and greater than or equal to zero.\"\n );\n }\n return value;\n}\n\nfunction parseLimitations(\n value: unknown,\n path: string\n): readonly string[] {\n if (!Array.isArray(value)) {\n throw new InvalidConfigurationError(\n path + \" must be an array.\"\n );\n }\n const parsed =\n value.map((entry, index) =>\n requireNonEmptyString(\n entry,\n path + \"[\" + index + \"]\"\n )\n );\n if (\n new Set(parsed).size !==\n parsed.length\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must not contain duplicates.\"\n );\n }\n return parsed;\n}\n\nfunction parseSecondsFact(\n value: unknown,\n path: string\n): SourcedSensorTimingSeconds {\n const record =\n requireRecord(value, path, [\"unit\", \"value\", \"evidence\"]);\n if (record.unit !== \"s\") {\n throw new InvalidConfigurationError(\n path + '.unit must be \"s\".'\n );\n }\n return {\n value:\n requireNonNegativeFinite(\n record.value,\n path + \".value\"\n ),\n unit: \"s\",\n evidence:\n parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n )\n };\n}\n\nfunction parseDirectionFact(\n value: unknown,\n path: string\n): SourcedSensorReadoutFact<NativeSensorReadoutScanDirection> {\n const record =\n requireRecord(value, path, [\"value\", \"evidence\"]);\n if (\n typeof record.value !== \"string\" ||\n !SCAN_DIRECTIONS.has(\n record.value as NativeSensorReadoutScanDirection\n )\n ) {\n throw new InvalidConfigurationError(\n path + \".value is invalid.\"\n );\n }\n return {\n value:\n record.value as NativeSensorReadoutScanDirection,\n evidence:\n parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n )\n };\n}\n\nfunction parseBoundarySchedule(\n value: unknown,\n path: string\n): ExposureBoundarySchedule {\n const record =\n requireRecord(value, path, [\"kind\", \"directionNative\", \"traversalDurationSeconds\"]);\n\n if (record.kind === \"simultaneous\") {\n if (\n record.directionNative !==\n undefined ||\n record.traversalDurationSeconds !==\n undefined\n ) {\n throw new InvalidConfigurationError(\n path +\n \" simultaneous schedule must not include scan-only fields.\"\n );\n }\n return {\n kind: \"simultaneous\"\n };\n }\n\n if (\n record.kind ===\n \"uniform-linear-native-scan\"\n ) {\n return {\n kind:\n \"uniform-linear-native-scan\",\n directionNative:\n parseDirectionFact(\n record.directionNative,\n path + \".directionNative\"\n ) as SourcedCaptureBoundaryDirection,\n traversalDurationSeconds:\n parseSecondsFact(\n record.traversalDurationSeconds,\n path +\n \".traversalDurationSeconds\"\n )\n };\n }\n\n throw new InvalidConfigurationError(\n path +\n '.kind must be \"simultaneous\" or \"uniform-linear-native-scan\"; non-uniform schedules are not modeled.'\n );\n}\n\nfunction parseReadout(\n value: unknown,\n path: string\n): SensorReadoutTimingDeclaration {\n const record =\n requireRecord(value, path, [\"captureReadoutDurationSeconds\", \"readoutMode\", \"scanDirectionNative\", \"spatialSamplingSkewSeconds\"]);\n const duration =\n parseSecondsFact(\n record.captureReadoutDurationSeconds,\n path +\n \".captureReadoutDurationSeconds\"\n );\n\n if (record.readoutMode === \"global\") {\n if (\n record.scanDirectionNative !==\n undefined ||\n record.spatialSamplingSkewSeconds !==\n undefined\n ) {\n throw new InvalidConfigurationError(\n path +\n \" global readout must not include rolling-scan fields.\"\n );\n }\n return {\n readoutMode: \"global\",\n captureReadoutDurationSeconds:\n duration\n };\n }\n\n if (record.readoutMode === \"rolling\") {\n return {\n readoutMode: \"rolling\",\n captureReadoutDurationSeconds:\n duration,\n scanDirectionNative:\n parseDirectionFact(\n record.scanDirectionNative,\n path +\n \".scanDirectionNative\"\n ),\n spatialSamplingSkewSeconds:\n parseSecondsFact(\n record.spatialSamplingSkewSeconds,\n path +\n \".spatialSamplingSkewSeconds\"\n )\n };\n }\n\n throw new InvalidConfigurationError(\n path +\n '.readoutMode must be \"global\" or \"rolling\".'\n );\n}\n\n/**\n * Parses timing facts tied to one exact capture mode.\n *\n * Schema 0.1.0 accepts only the schedules the readout-timing and exposure-window\n * models already support: global (simultaneous) or uniform linear native scans.\n * Non-uniform or segmented schedules are rejected rather than approximated.\n */\nexport function parseCaptureModeTimingProfile(\n value: unknown\n): CaptureModeTimingProfile {\n const record =\n requireRecord(\n value,\n \"captureModeTimingProfile\", [\"schemaVersion\", \"scientificStatus\", \"scheduleFamily\", \"shutterMechanism\", \"nonUniformScheduleModeled\", \"profileId\", \"profileVersion\", \"captureModeId\", \"opening\", \"closing\", \"readout\", \"evidence\", \"limitations\"]\n );\n\n if (\n record.schemaVersion !==\n CAPTURE_MODE_TIMING_PROFILE_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'captureModeTimingProfile.schemaVersion must be \"' +\n CAPTURE_MODE_TIMING_PROFILE_SCHEMA_VERSION +\n '\".'\n );\n }\n if (\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n 'captureModeTimingProfile.scientificStatus must be \"approximation\".'\n );\n }\n if (\n record.scheduleFamily !==\n \"global-or-uniform-linear-native-scan\"\n ) {\n throw new InvalidConfigurationError(\n 'captureModeTimingProfile.scheduleFamily must be \"global-or-uniform-linear-native-scan\"; unsupported schedule families fail closed.'\n );\n }\n if (\n typeof record.shutterMechanism !==\n \"string\" ||\n !SHUTTER_MECHANISMS.has(\n record.shutterMechanism as CaptureShutterMechanism\n )\n ) {\n throw new InvalidConfigurationError(\n \"captureModeTimingProfile.shutterMechanism is invalid.\"\n );\n }\n if (\n record.nonUniformScheduleModeled !==\n false\n ) {\n throw new InvalidConfigurationError(\n \"captureModeTimingProfile.nonUniformScheduleModeled must be false in schema 0.1.0.\"\n );\n }\n\n return {\n schemaVersion:\n CAPTURE_MODE_TIMING_PROFILE_SCHEMA_VERSION,\n profileId:\n requireNonEmptyString(\n record.profileId,\n \"captureModeTimingProfile.profileId\"\n ),\n profileVersion:\n requireNonEmptyString(\n record.profileVersion,\n \"captureModeTimingProfile.profileVersion\"\n ),\n captureModeId:\n requireNonEmptyString(\n record.captureModeId,\n \"captureModeTimingProfile.captureModeId\"\n ),\n scientificStatus:\n \"approximation\",\n scheduleFamily:\n \"global-or-uniform-linear-native-scan\",\n shutterMechanism:\n record.shutterMechanism as CaptureShutterMechanism,\n opening:\n parseBoundarySchedule(\n record.opening,\n \"captureModeTimingProfile.opening\"\n ),\n closing:\n parseBoundarySchedule(\n record.closing,\n \"captureModeTimingProfile.closing\"\n ),\n readout:\n parseReadout(\n record.readout,\n \"captureModeTimingProfile.readout\"\n ),\n nonUniformScheduleModeled:\n false,\n evidence:\n parseEvidenceList(\n record.evidence,\n \"captureModeTimingProfile.evidence\"\n ),\n limitations:\n parseLimitations(\n record.limitations,\n \"captureModeTimingProfile.limitations\"\n )\n };\n}\n\n/**\n * Resolves the exposure and readout timing for one exact capture mode and\n * timing profile.\n *\n * Readout timing stays separate from the exposure opening and closing times.\n * No absolute sync between readout and exposure is assumed.\n */\nexport function resolveCaptureModeTiming(\n input:\n ResolveCaptureModeTimingInput\n): ResolvedCaptureModeTiming {\n requireInputKeys(input, \"resolveCaptureModeTiming\", [\"captureMode\", \"timingProfile\", \"nominalExposureDurationSeconds\", \"activeCaptureRect\", \"samplePointsNative\"]);\n const profile =\n parseCaptureModeTimingProfile(\n input.timingProfile\n );\n\n if (\n profile.captureModeId !==\n input.captureMode.modeId\n ) {\n throw new InvalidScientificInputError(\n \"captureModeTimingProfile.captureModeId must exactly match the resolved capture mode.\"\n );\n }\n const exposureWindows =\n calculateCaptureExposureWindows({\n nativeRaster:\n input.captureMode.nativeRaster,\n ...(input.activeCaptureRect ===\n undefined\n ? {}\n : {\n activeCaptureRect:\n input.activeCaptureRect\n }),\n shutterMechanism:\n profile.shutterMechanism,\n nominalExposureDurationSeconds:\n input\n .nominalExposureDurationSeconds,\n opening: profile.opening,\n closing: profile.closing,\n ...(input.samplePointsNative ===\n undefined\n ? {}\n : {\n samplePointsNative:\n input.samplePointsNative\n })\n }).value;\n\n const readoutTiming =\n calculateSensorReadoutTiming({\n nativeRaster:\n input.captureMode.nativeRaster,\n ...(input.activeCaptureRect ===\n undefined\n ? {}\n : {\n activeCaptureRect:\n input.activeCaptureRect\n }),\n shutterMechanism:\n profile.shutterMechanism,\n readout: profile.readout,\n ...(input.samplePointsNative ===\n undefined\n ? {}\n : {\n samplePointsNative:\n input.samplePointsNative\n })\n }).value;\n\n return {\n schemaVersion:\n CAPTURE_MODE_TIMING_PROFILE_SCHEMA_VERSION,\n timingProfileId:\n profile.profileId,\n timingProfileVersion:\n profile.profileVersion,\n captureModeId:\n input.captureMode.modeId,\n captureModeTimingIdentity:\n \"exact-mode-and-profile\",\n nativeRaster: {\n ...input.captureMode.nativeRaster\n },\n modeDeclaresTimingDependency:\n input.captureMode\n .dependencies.includes(\n \"mode-specific-readout-timing\"\n ),\n scheduleFamily:\n profile.scheduleFamily,\n exposureWindows,\n readoutTiming,\n timeReference:\n \"first-opening-boundary-phase\",\n readoutExposureSynchronization:\n \"not-assumed\",\n nonUniformScheduleModeled:\n false,\n evidence: [\n ...input.captureMode.modeEvidence,\n ...profile.evidence\n ],\n limitations: [\n ...profile.limitations,\n \"Sensor data readout timing and exposure-boundary timing remain independent unless a separate linkage/synchronization contract establishes a relationship.\",\n \"Capture-mode identity does not infer timing from CMOS/CCD, marketing labels, output raster size, or generic readout-speed names.\"\n ]\n };\n}\n"]}
@@ -5,13 +5,13 @@ export type CaptureModeReconstructionStage = "remosaic" | "pixel-shift-combinati
5
5
  export type CaptureModeDependency = "color-sampling-model" | "mode-specific-readout-timing" | "radiometric-calibration" | "inter-frame-registration";
6
6
  export interface CaptureModeSensorOffsetNativeSamples {
7
7
  /**
8
- * Horizontal sensor displacement in units of the native effective sampling
9
- * pitch. This is not a claim about physical photodiode pitch.
8
+ * Horizontal sensor shift, in units of the native sample pitch. This says
9
+ * nothing about the physical photodiode pitch.
10
10
  */
11
11
  x: number;
12
12
  /**
13
- * Vertical sensor displacement in units of the native effective sampling
14
- * pitch. This is not a claim about physical photodiode pitch.
13
+ * Vertical sensor shift, in units of the native sample pitch. This says
14
+ * nothing about the physical photodiode pitch.
15
15
  */
16
16
  y: number;
17
17
  }
@@ -26,8 +26,8 @@ export interface FixedMultiFrameCaptureAcquisition {
26
26
  export interface VariableMultiFrameCaptureAcquisition {
27
27
  kind: "variable-multi-frame";
28
28
  /**
29
- * Evidence that the mode is variable/multi-frame, even when exact count
30
- * bounds are not published.
29
+ * Evidence that the mode uses a variable number of frames, even when the
30
+ * exact frame-count limits are not published.
31
31
  */
32
32
  evidence: readonly EvidenceProvenance[];
33
33
  minimumFrameCount?: SourcedCaptureModeFact<number>;
@@ -42,16 +42,16 @@ export interface GroupedNativeCaptureSampling {
42
42
  groupWidthSamples: SourcedCaptureModeFact<number>;
43
43
  groupHeightSamples: SourcedCaptureModeFact<number>;
44
44
  /**
45
- * Omitted means unknown/unasserted. Do not infer where combination occurs
46
- * from the word "binning" or from the raster ratio.
45
+ * Omitted means "unknown, not stated". Do not guess where samples are
46
+ * combined from the word "binning" or from the ratio of image sizes.
47
47
  */
48
48
  combinationDomain?: SourcedCaptureModeFact<CaptureModeSampleCombinationDomain>;
49
49
  }
50
50
  export interface DeclaredEffectiveCaptureSampling {
51
51
  kind: "declared-effective-raster";
52
52
  /**
53
- * Per-frame effective sampling raster for a mode whose sampling relationship
54
- * to the native grid is not safely expressible as simple integer grouping.
53
+ * Sample grid per frame, for a mode whose relationship to the native grid
54
+ * cannot safely be written as simple integer grouping.
55
55
  */
56
56
  raster: SourcedCaptureModeFact<RasterDimensions>;
57
57
  }
@@ -59,28 +59,28 @@ export type CaptureModePerFrameSampling = NativeEffectiveCaptureSampling | Group
59
59
  export interface CaptureModeDefinition {
60
60
  modeId: string;
61
61
  /**
62
- * Evidence supporting the existence/overall acquisition behavior of this
63
- * mode. Field-level facts below retain their own evidence when needed.
62
+ * Evidence that this mode exists and for how it captures overall. Facts in
63
+ * the fields below keep their own evidence where needed.
64
64
  */
65
65
  evidence: readonly EvidenceProvenance[];
66
66
  acquisition: CaptureModeAcquisition;
67
67
  perFrameSampling: CaptureModePerFrameSampling;
68
68
  /**
69
- * Optional ordered sensor-displacement sequence for fixed multi-frame modes.
70
- * The whole sequence is one evidence-backed fact because published mode
71
- * documentation commonly describes the sequence as a unit.
69
+ * Optional ordered sequence of sensor shifts, for modes with a fixed number
70
+ * of frames. The whole sequence is one evidence-backed fact, because
71
+ * published documentation usually describes it as a unit.
72
72
  */
73
73
  interFrameSensorOffsetsNativeSamples?: SourcedCaptureModeFact<readonly CaptureModeSensorOffsetNativeSamples[]>;
74
74
  /**
75
- * Ordered reconstruction/combination stages owned by later reconstruction
76
- * work. These labels reserve semantics; they do not implement algorithms.
75
+ * Ordered reconstruction or combination stages. These labels only name the
76
+ * stages for later reconstruction models; they implement no algorithm.
77
77
  */
78
78
  reconstructionStages?: readonly SourcedCaptureModeFact<CaptureModeReconstructionStage>[];
79
79
  /**
80
- * Image raster produced by the capture-mode/reconstruction pipeline before
81
- * final output crop/resampling.
80
+ * Image size produced by the capture mode and reconstruction, before the
81
+ * final output crop or resampling.
82
82
  *
83
- * This raster does not redefine physical sensor geometry or field of view.
83
+ * It does not change the physical sensor geometry or field of view.
84
84
  */
85
85
  processedImageRaster: SourcedCaptureModeFact<RasterDimensions>;
86
86
  /**
@@ -137,21 +137,19 @@ export interface ResolvedCaptureMode {
137
137
  finalOutputRasterOwnership: "downstream-capture-output-geometry";
138
138
  }
139
139
  /**
140
- * Parses a capture-mode profile without inferring sensor physics from output
140
+ * Parses a capture-mode profile. Sensor physics is never guessed from output
141
141
  * resolution or marketing mode names.
142
142
  *
143
- * The profile is intentionally orthogonal: acquisition frame sequence,
144
- * per-frame sampling, optional inter-frame sensor shift, reconstruction stages,
145
- * processed raster and downstream dependencies are independent axes.
143
+ * The profile's parts are independent of each other: the frame sequence,
144
+ * sampling within each frame, optional sensor shift between frames,
145
+ * reconstruction stages, the processed image size and downstream dependencies.
146
146
  */
147
147
  export declare function parseCaptureModeProfile(value: unknown): CaptureModeProfile;
148
148
  /**
149
- * Resolves one capture mode against the selected sensor's native effective
150
- * image-sampling raster.
149
+ * Resolves one capture mode against the selected sensor's native pixel grid.
151
150
  *
152
- * Resolution changes do not mutate physical sensor geometry. The returned
153
- * processed raster is pre-output geometry and must not be used to infer crop
154
- * factor, field of view or physical photosite count.
151
+ * Resolution changes do not change the physical sensor geometry. The returned
152
+ * processed image size is before output, and must not be used to work out crop
153
+ * factor, field of view or the physical photosite count.
155
154
  */
156
155
  export declare function resolveCaptureMode(input: ResolveCaptureModeInput): ResolvedCaptureMode;
157
- //# sourceMappingURL=capture-mode.d.ts.map