@photivra/engine 1.4.0 → 2.0.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 (1074) hide show
  1. package/CHANGELOG.md +401 -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 +118 -5
  56. package/dist/capture/native-raw-development.js +224 -59
  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 +67 -10
  62. package/dist/capture/native-raw.js +90 -24
  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/host-yield.d.ts +7 -0
  236. package/dist/facade/host-yield.js +23 -0
  237. package/dist/facade/host-yield.js.map +1 -0
  238. package/dist/facade/scene-radiance.d.ts +117 -0
  239. package/dist/facade/scene-radiance.js +205 -0
  240. package/dist/facade/scene-radiance.js.map +1 -0
  241. package/dist/facade/simulate-capture.d.ts +284 -0
  242. package/dist/facade/simulate-capture.js +1026 -0
  243. package/dist/facade/simulate-capture.js.map +1 -0
  244. package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
  245. package/dist/gpu/chart-radiance-gpu.js +176 -0
  246. package/dist/gpu/chart-radiance-gpu.js.map +1 -0
  247. package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
  248. package/dist/gpu/image-kernel-accelerator.js +720 -0
  249. package/dist/gpu/image-kernel-accelerator.js.map +1 -0
  250. package/dist/gpu/image-kernel-execution.d.ts +92 -0
  251. package/dist/gpu/image-kernel-execution.js +84 -0
  252. package/dist/gpu/image-kernel-execution.js.map +1 -0
  253. package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
  254. package/dist/gpu/sensor-stage-gpu.js +317 -0
  255. package/dist/gpu/sensor-stage-gpu.js.map +1 -0
  256. package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
  257. package/dist/gpu/temporal-sum-gpu.js +150 -0
  258. package/dist/gpu/temporal-sum-gpu.js.map +1 -0
  259. package/dist/gpu/webgpu-runtime.d.ts +63 -0
  260. package/dist/gpu/webgpu-runtime.js +215 -0
  261. package/dist/gpu/webgpu-runtime.js.map +1 -0
  262. package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
  263. package/dist/gpu/wgsl-chart-kernel.js +165 -0
  264. package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
  265. package/dist/gpu/wgsl-kernels.d.ts +53 -0
  266. package/dist/gpu/wgsl-kernels.js +365 -0
  267. package/dist/gpu/wgsl-kernels.js.map +1 -0
  268. package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
  269. package/dist/gpu/wgsl-sensor-kernel.js +409 -0
  270. package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
  271. package/dist/index.d.ts +89 -25
  272. package/dist/index.js +59 -15
  273. package/dist/index.js.map +1 -1
  274. package/dist/motion/camera-rotation.d.ts +92 -40
  275. package/dist/motion/camera-rotation.js +84 -47
  276. package/dist/motion/camera-rotation.js.map +1 -1
  277. package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
  278. package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
  279. package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
  280. package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
  281. package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
  282. package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
  283. package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
  284. package/dist/motion/capture-rotation-trajectory.js +36 -26
  285. package/dist/motion/capture-rotation-trajectory.js.map +1 -1
  286. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
  287. package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
  288. package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
  289. package/dist/motion/extended-object-projection.d.ts +19 -16
  290. package/dist/motion/extended-object-projection.js +38 -18
  291. package/dist/motion/extended-object-projection.js.map +1 -1
  292. package/dist/motion/projected-motion.d.ts +18 -17
  293. package/dist/motion/projected-motion.js +25 -17
  294. package/dist/motion/projected-motion.js.map +1 -1
  295. package/dist/motion/temporal-exposure-sum.d.ts +55 -0
  296. package/dist/motion/temporal-exposure-sum.js +141 -0
  297. package/dist/motion/temporal-exposure-sum.js.map +1 -0
  298. package/dist/motion/video-sequence.d.ts +111 -0
  299. package/dist/motion/video-sequence.js +179 -0
  300. package/dist/motion/video-sequence.js.map +1 -0
  301. package/dist/optics/aperture.d.ts +14 -15
  302. package/dist/optics/aperture.js +13 -11
  303. package/dist/optics/aperture.js.map +1 -1
  304. package/dist/optics/atmospheric-haze.d.ts +83 -0
  305. package/dist/optics/atmospheric-haze.js +113 -0
  306. package/dist/optics/atmospheric-haze.js.map +1 -0
  307. package/dist/optics/brown-conrady-distortion.d.ts +116 -0
  308. package/dist/optics/brown-conrady-distortion.js +291 -0
  309. package/dist/optics/brown-conrady-distortion.js.map +1 -0
  310. package/dist/optics/circle-of-confusion.d.ts +10 -10
  311. package/dist/optics/circle-of-confusion.js +15 -11
  312. package/dist/optics/circle-of-confusion.js.map +1 -1
  313. package/dist/optics/complex-pupil-psf.d.ts +64 -33
  314. package/dist/optics/complex-pupil-psf.js +190 -98
  315. package/dist/optics/complex-pupil-psf.js.map +1 -1
  316. package/dist/optics/depth-of-field.d.ts +25 -15
  317. package/dist/optics/depth-of-field.js +67 -27
  318. package/dist/optics/depth-of-field.js.map +1 -1
  319. package/dist/optics/diffraction.d.ts +14 -13
  320. package/dist/optics/diffraction.js +14 -10
  321. package/dist/optics/diffraction.js.map +1 -1
  322. package/dist/optics/focus-breathing.d.ts +88 -27
  323. package/dist/optics/focus-breathing.js +114 -23
  324. package/dist/optics/focus-breathing.js.map +1 -1
  325. package/dist/optics/focus-state.d.ts +18 -18
  326. package/dist/optics/focus-state.js +21 -15
  327. package/dist/optics/focus-state.js.map +1 -1
  328. package/dist/optics/front-of-lens-filter.d.ts +45 -14
  329. package/dist/optics/front-of-lens-filter.js +259 -88
  330. package/dist/optics/front-of-lens-filter.js.map +1 -1
  331. package/dist/optics/illumination-vignetting.d.ts +16 -17
  332. package/dist/optics/illumination-vignetting.js +40 -17
  333. package/dist/optics/illumination-vignetting.js.map +1 -1
  334. package/dist/optics/irradiance-convolution.d.ts +59 -0
  335. package/dist/optics/irradiance-convolution.js +138 -0
  336. package/dist/optics/irradiance-convolution.js.map +1 -0
  337. package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
  338. package/dist/optics/lateral-chromatic-aberration.js +33 -23
  339. package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
  340. package/dist/optics/lens-psf-kernels.d.ts +89 -0
  341. package/dist/optics/lens-psf-kernels.js +175 -0
  342. package/dist/optics/lens-psf-kernels.js.map +1 -0
  343. package/dist/optics/lens-psf-profile.d.ts +78 -46
  344. package/dist/optics/lens-psf-profile.js +335 -124
  345. package/dist/optics/lens-psf-profile.js.map +1 -1
  346. package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
  347. package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
  348. package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
  349. package/dist/optics/polygon-diffraction.d.ts +80 -23
  350. package/dist/optics/polygon-diffraction.js +130 -25
  351. package/dist/optics/polygon-diffraction.js.map +1 -1
  352. package/dist/optics/profile-contract.d.ts +5 -6
  353. package/dist/optics/profile-contract.js +14 -11
  354. package/dist/optics/profile-contract.js.map +1 -1
  355. package/dist/optics/psf-foundation.d.ts +23 -23
  356. package/dist/optics/psf-foundation.js +24 -21
  357. package/dist/optics/psf-foundation.js.map +1 -1
  358. package/dist/optics/pupil-vignetting.d.ts +118 -0
  359. package/dist/optics/pupil-vignetting.js +264 -0
  360. package/dist/optics/pupil-vignetting.js.map +1 -0
  361. package/dist/optics/radial-distortion.d.ts +34 -33
  362. package/dist/optics/radial-distortion.js +37 -30
  363. package/dist/optics/radial-distortion.js.map +1 -1
  364. package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
  365. package/dist/optics/scene-to-sensor-irradiance.js +73 -45
  366. package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
  367. package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
  368. package/dist/optics/scene-to-sensor-quadrature.js +16 -11
  369. package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
  370. package/dist/optics/sensor-aperture-rays.d.ts +20 -4
  371. package/dist/optics/sensor-aperture-rays.js +32 -14
  372. package/dist/optics/sensor-aperture-rays.js.map +1 -1
  373. package/dist/optics/sensor-environment-query.d.ts +81 -16
  374. package/dist/optics/sensor-environment-query.js +145 -12
  375. package/dist/optics/sensor-environment-query.js.map +1 -1
  376. package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
  377. package/dist/optics/sensor-psf-quadrature.js +18 -11
  378. package/dist/optics/sensor-psf-quadrature.js.map +1 -1
  379. package/dist/optics/sensor-psf-support.d.ts +8 -6
  380. package/dist/optics/sensor-psf-support.js +8 -5
  381. package/dist/optics/sensor-psf-support.js.map +1 -1
  382. package/dist/optics/stray-light.d.ts +22 -19
  383. package/dist/optics/stray-light.js +18 -12
  384. package/dist/optics/stray-light.js.map +1 -1
  385. package/dist/optics/thin-lens.d.ts +10 -9
  386. package/dist/optics/thin-lens.js +12 -8
  387. package/dist/optics/thin-lens.js.map +1 -1
  388. package/dist/optics/zernike-wavefront.d.ts +154 -0
  389. package/dist/optics/zernike-wavefront.js +352 -0
  390. package/dist/optics/zernike-wavefront.js.map +1 -0
  391. package/dist/output/capture-corrected-sdr.d.ts +16 -8
  392. package/dist/output/capture-corrected-sdr.js +16 -8
  393. package/dist/output/capture-corrected-sdr.js.map +1 -1
  394. package/dist/output/capture-geometry.d.ts +34 -36
  395. package/dist/output/capture-geometry.js +52 -32
  396. package/dist/output/capture-geometry.js.map +1 -1
  397. package/dist/output/capture-sdr.d.ts +7 -6
  398. package/dist/output/capture-sdr.js +11 -8
  399. package/dist/output/capture-sdr.js.map +1 -1
  400. package/dist/output/crop.d.ts +22 -6
  401. package/dist/output/crop.js +40 -6
  402. package/dist/output/crop.js.map +1 -1
  403. package/dist/output/geometric-transforms.d.ts +60 -23
  404. package/dist/output/geometric-transforms.js +111 -24
  405. package/dist/output/geometric-transforms.js.map +1 -1
  406. package/dist/output/lens-corrections.d.ts +27 -19
  407. package/dist/output/lens-corrections.js +29 -13
  408. package/dist/output/lens-corrections.js.map +1 -1
  409. package/dist/output/native-capture-sdr.d.ts +71 -16
  410. package/dist/output/native-capture-sdr.js +190 -33
  411. package/dist/output/native-capture-sdr.js.map +1 -1
  412. package/dist/output/png-encoder.d.ts +65 -0
  413. package/dist/output/png-encoder.js +461 -0
  414. package/dist/output/png-encoder.js.map +1 -0
  415. package/dist/output/print-contrast-reference.d.ts +10 -9
  416. package/dist/output/print-contrast-reference.js +10 -8
  417. package/dist/output/print-contrast-reference.js.map +1 -1
  418. package/dist/output/print-detail.d.ts +18 -17
  419. package/dist/output/print-detail.js +12 -10
  420. package/dist/output/print-detail.js.map +1 -1
  421. package/dist/output/print-jpeg.d.ts +26 -5
  422. package/dist/output/print-jpeg.js +117 -50
  423. package/dist/output/print-jpeg.js.map +1 -1
  424. package/dist/output/print-plan.d.ts +19 -19
  425. package/dist/output/print-plan.js +11 -10
  426. package/dist/output/print-plan.js.map +1 -1
  427. package/dist/output/print-region-statistics.d.ts +14 -15
  428. package/dist/output/print-region-statistics.js +11 -11
  429. package/dist/output/print-region-statistics.js.map +1 -1
  430. package/dist/output/sdr-rendering.d.ts +48 -10
  431. package/dist/output/sdr-rendering.js +114 -25
  432. package/dist/output/sdr-rendering.js.map +1 -1
  433. package/dist/output/subject-framing-crop.d.ts +6 -10
  434. package/dist/output/subject-framing-crop.js +23 -13
  435. package/dist/output/subject-framing-crop.js.map +1 -1
  436. package/dist/processing/demosaic.d.ts +90 -0
  437. package/dist/processing/demosaic.js +275 -0
  438. package/dist/processing/demosaic.js.map +1 -0
  439. package/dist/processing/denoise.d.ts +68 -0
  440. package/dist/processing/denoise.js +214 -0
  441. package/dist/processing/denoise.js.map +1 -0
  442. package/dist/processing/focus-stacking.d.ts +17 -0
  443. package/dist/processing/focus-stacking.js +80 -0
  444. package/dist/processing/focus-stacking.js.map +1 -0
  445. package/dist/processing/hdr.d.ts +54 -0
  446. package/dist/processing/hdr.js +172 -0
  447. package/dist/processing/hdr.js.map +1 -0
  448. package/dist/processing/image-ops.d.ts +66 -0
  449. package/dist/processing/image-ops.js +192 -0
  450. package/dist/processing/image-ops.js.map +1 -0
  451. package/dist/processing/panorama.d.ts +51 -0
  452. package/dist/processing/panorama.js +305 -0
  453. package/dist/processing/panorama.js.map +1 -0
  454. package/dist/processing/processing-task.d.ts +85 -0
  455. package/dist/processing/processing-task.js +164 -0
  456. package/dist/processing/processing-task.js.map +1 -0
  457. package/dist/processing/tone-mapping.d.ts +69 -0
  458. package/dist/processing/tone-mapping.js +310 -0
  459. package/dist/processing/tone-mapping.js.map +1 -0
  460. package/dist/schema/camera.d.ts +5 -4
  461. package/dist/schema/illumination-spectral.d.ts +13 -19
  462. package/dist/schema/illumination-spectral.js +23 -19
  463. package/dist/schema/illumination-spectral.js.map +1 -1
  464. package/dist/schema/illumination-temporal.d.ts +12 -15
  465. package/dist/schema/illumination-temporal.js +43 -28
  466. package/dist/schema/illumination-temporal.js.map +1 -1
  467. package/dist/schema/illumination.d.ts +5 -4
  468. package/dist/schema/illumination.js +55 -20
  469. package/dist/schema/illumination.js.map +1 -1
  470. package/dist/schema/scene-radiance-temporal.d.ts +9 -11
  471. package/dist/schema/scene-radiance-temporal.js +26 -23
  472. package/dist/schema/scene-radiance-temporal.js.map +1 -1
  473. package/dist/schema/scene-radiance.d.ts +17 -17
  474. package/dist/schema/scene-radiance.js +56 -34
  475. package/dist/schema/scene-radiance.js.map +1 -1
  476. package/dist/schema/scene.d.ts +14 -13
  477. package/dist/schema/validation.d.ts +0 -1
  478. package/dist/schema/validation.js +17 -15
  479. package/dist/schema/validation.js.map +1 -1
  480. package/dist/sensor/accumulated-charge.d.ts +45 -64
  481. package/dist/sensor/accumulated-charge.js +41 -47
  482. package/dist/sensor/accumulated-charge.js.map +1 -1
  483. package/dist/sensor/architecture.d.ts +22 -25
  484. package/dist/sensor/architecture.js +17 -16
  485. package/dist/sensor/architecture.js.map +1 -1
  486. package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
  487. package/dist/sensor/camera-saturation-capacity.js +36 -34
  488. package/dist/sensor/camera-saturation-capacity.js.map +1 -1
  489. package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
  490. package/dist/sensor/capture-color-sampling-binding.js +39 -41
  491. package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
  492. package/dist/sensor/capture-mode-timing.d.ts +8 -9
  493. package/dist/sensor/capture-mode-timing.js +24 -21
  494. package/dist/sensor/capture-mode-timing.js.map +1 -1
  495. package/dist/sensor/capture-mode.d.ts +28 -30
  496. package/dist/sensor/capture-mode.js +33 -31
  497. package/dist/sensor/capture-mode.js.map +1 -1
  498. package/dist/sensor/color-sampling.d.ts +30 -33
  499. package/dist/sensor/color-sampling.js +32 -37
  500. package/dist/sensor/color-sampling.js.map +1 -1
  501. package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
  502. package/dist/sensor/constant-rate-temporal-integration.js +28 -26
  503. package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
  504. package/dist/sensor/dark-current.d.ts +53 -49
  505. package/dist/sensor/dark-current.js +87 -46
  506. package/dist/sensor/dark-current.js.map +1 -1
  507. package/dist/sensor/environment-photo-signal.d.ts +71 -30
  508. package/dist/sensor/environment-photo-signal.js +127 -46
  509. package/dist/sensor/environment-photo-signal.js.map +1 -1
  510. package/dist/sensor/eqe-electron-rate.d.ts +14 -13
  511. package/dist/sensor/eqe-electron-rate.js +34 -14
  512. package/dist/sensor/eqe-electron-rate.js.map +1 -1
  513. package/dist/sensor/eqe-local-exposure.d.ts +24 -24
  514. package/dist/sensor/eqe-local-exposure.js +15 -11
  515. package/dist/sensor/eqe-local-exposure.js.map +1 -1
  516. package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
  517. package/dist/sensor/eqe-temporal-exposure.js +15 -10
  518. package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
  519. package/dist/sensor/exposure-window.d.ts +48 -34
  520. package/dist/sensor/exposure-window.js +77 -36
  521. package/dist/sensor/exposure-window.js.map +1 -1
  522. package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
  523. package/dist/sensor/fixed-pattern-noise.js +166 -0
  524. package/dist/sensor/fixed-pattern-noise.js.map +1 -0
  525. package/dist/sensor/iso-gain.d.ts +44 -0
  526. package/dist/sensor/iso-gain.js +119 -0
  527. package/dist/sensor/iso-gain.js.map +1 -0
  528. package/dist/sensor/iso-signal-chain.d.ts +25 -48
  529. package/dist/sensor/iso-signal-chain.js +52 -66
  530. package/dist/sensor/iso-signal-chain.js.map +1 -1
  531. package/dist/sensor/local-exposure-binding.d.ts +21 -21
  532. package/dist/sensor/local-exposure-binding.js +22 -18
  533. package/dist/sensor/local-exposure-binding.js.map +1 -1
  534. package/dist/sensor/optical-stack.d.ts +36 -40
  535. package/dist/sensor/optical-stack.js +34 -37
  536. package/dist/sensor/optical-stack.js.map +1 -1
  537. package/dist/sensor/photon-energy.d.ts +22 -28
  538. package/dist/sensor/photon-energy.js +42 -34
  539. package/dist/sensor/photon-energy.js.map +1 -1
  540. package/dist/sensor/physical-charge-capacity.d.ts +20 -30
  541. package/dist/sensor/physical-charge-capacity.js +35 -36
  542. package/dist/sensor/physical-charge-capacity.js.map +1 -1
  543. package/dist/sensor/pixel-pitch.d.ts +2 -3
  544. package/dist/sensor/pixel-pitch.js +4 -2
  545. package/dist/sensor/pixel-pitch.js.map +1 -1
  546. package/dist/sensor/radiometry-readiness.d.ts +13 -15
  547. package/dist/sensor/radiometry-readiness.js +20 -17
  548. package/dist/sensor/radiometry-readiness.js.map +1 -1
  549. package/dist/sensor/raw-readout.d.ts +173 -83
  550. package/dist/sensor/raw-readout.js +425 -160
  551. package/dist/sensor/raw-readout.js.map +1 -1
  552. package/dist/sensor/raw-reconstruction.d.ts +112 -44
  553. package/dist/sensor/raw-reconstruction.js +200 -47
  554. package/dist/sensor/raw-reconstruction.js.map +1 -1
  555. package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
  556. package/dist/sensor/readout-exposure-linkage.js +125 -27
  557. package/dist/sensor/readout-exposure-linkage.js.map +1 -1
  558. package/dist/sensor/readout-timing.d.ts +43 -44
  559. package/dist/sensor/readout-timing.js +38 -30
  560. package/dist/sensor/readout-timing.js.map +1 -1
  561. package/dist/sensor/response-application-compatibility.d.ts +21 -28
  562. package/dist/sensor/response-application-compatibility.js +35 -34
  563. package/dist/sensor/response-application-compatibility.js.map +1 -1
  564. package/dist/sensor/response-operating-range.d.ts +26 -35
  565. package/dist/sensor/response-operating-range.js +40 -39
  566. package/dist/sensor/response-operating-range.js.map +1 -1
  567. package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
  568. package/dist/sensor/responsivity-photocurrent.js +57 -40
  569. package/dist/sensor/responsivity-photocurrent.js.map +1 -1
  570. package/dist/sensor/sampling-aperture.d.ts +21 -25
  571. package/dist/sensor/sampling-aperture.js +29 -28
  572. package/dist/sensor/sampling-aperture.js.map +1 -1
  573. package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
  574. package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
  575. package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
  576. package/dist/sensor/sensor-geometry.d.ts +28 -32
  577. package/dist/sensor/sensor-geometry.js +35 -20
  578. package/dist/sensor/sensor-geometry.js.map +1 -1
  579. package/dist/sensor/signal-noise.d.ts +14 -16
  580. package/dist/sensor/signal-noise.js +15 -13
  581. package/dist/sensor/signal-noise.js.map +1 -1
  582. package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
  583. package/dist/sensor/spatial-sample-reduction.js +39 -48
  584. package/dist/sensor/spatial-sample-reduction.js.map +1 -1
  585. package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
  586. package/dist/sensor/spatial-sampling-quadrature.js +31 -36
  587. package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
  588. package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
  589. package/dist/sensor/spatio-spectral-reduction.js +24 -29
  590. package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
  591. package/dist/sensor/spectral-coverage.d.ts +6 -9
  592. package/dist/sensor/spectral-coverage.js +9 -6
  593. package/dist/sensor/spectral-coverage.js.map +1 -1
  594. package/dist/sensor/spectral-quadrature.d.ts +46 -60
  595. package/dist/sensor/spectral-quadrature.js +38 -48
  596. package/dist/sensor/spectral-quadrature.js.map +1 -1
  597. package/dist/sensor/spectral-response.d.ts +53 -41
  598. package/dist/sensor/spectral-response.js +80 -47
  599. package/dist/sensor/spectral-response.js.map +1 -1
  600. package/dist/sensor/stochastic-seed.d.ts +50 -0
  601. package/dist/sensor/stochastic-seed.js +123 -0
  602. package/dist/sensor/stochastic-seed.js.map +1 -0
  603. package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
  604. package/dist/sensor/temporal-eqe-sum.js +5 -6
  605. package/dist/sensor/temporal-eqe-sum.js.map +1 -1
  606. package/dist/sensor/temporal-photo-signal.d.ts +5 -6
  607. package/dist/sensor/temporal-photo-signal.js +11 -10
  608. package/dist/sensor/temporal-photo-signal.js.map +1 -1
  609. package/dist/sensor/temporal-sample-binding.d.ts +1 -2
  610. package/dist/sensor/temporal-sample-binding.js +3 -3
  611. package/dist/sensor/temporal-sample-binding.js.map +1 -1
  612. package/dist/simulation/poc-simulation.d.ts +16 -16
  613. package/dist/simulation/poc-simulation.js +20 -15
  614. package/dist/simulation/poc-simulation.js.map +1 -1
  615. package/dist/stabilization/camera-shake.d.ts +42 -18
  616. package/dist/stabilization/camera-shake.js +43 -20
  617. package/dist/stabilization/camera-shake.js.map +1 -1
  618. package/dist/stabilization/system.d.ts +44 -41
  619. package/dist/stabilization/system.js +196 -108
  620. package/dist/stabilization/system.js.map +1 -1
  621. package/docs/AGENT_GUIDE.md +183 -0
  622. package/docs/API_REFERENCE.md +761 -2
  623. package/docs/QUICK_START.md +495 -0
  624. package/docs/USAGE.md +1719 -714
  625. package/docs/api/camera-equivalent-focal-length.md +6 -7
  626. package/docs/api/camera-field-of-view.md +16 -8
  627. package/docs/api/camera-lens-projection.md +246 -0
  628. package/docs/api/camera-projected-object-size.md +6 -5
  629. package/docs/api/capture-capture-export-metadata.md +10 -10
  630. package/docs/api/capture-dng-import.md +134 -0
  631. package/docs/api/capture-environment-raw-producer.md +17 -11
  632. package/docs/api/capture-export-jpeg.md +16 -0
  633. package/docs/api/capture-focus-control.md +25 -47
  634. package/docs/api/capture-linear-encoding.md +21 -12
  635. package/docs/api/capture-lossless-jpeg.md +49 -0
  636. package/docs/api/capture-native-environment-optical-stage.md +75 -0
  637. package/docs/api/capture-native-environment-raw.md +161 -4
  638. package/docs/api/capture-native-raw-development.md +69 -4
  639. package/docs/api/capture-native-raw-dng.md +84 -0
  640. package/docs/api/capture-native-raw.md +23 -8
  641. package/docs/api/capture-packed-sensor-raw.md +156 -0
  642. package/docs/api/capture-photographic-export.md +69 -31
  643. package/docs/api/capture-raw-frame-reconstruction.md +8 -8
  644. package/docs/api/capture-raw-white-level.md +37 -0
  645. package/docs/api/capture-release-sequence.md +6 -7
  646. package/docs/api/capture-sensor-raw-frame.md +6 -6
  647. package/docs/api/capture-sensor-raw-producer.md +17 -11
  648. package/docs/api/capture-simulated-capture.md +15 -15
  649. package/docs/api/color-camera-color-matrix.md +103 -0
  650. package/docs/api/color-capture-color.md +22 -11
  651. package/docs/api/color-chromatic-adaptation.md +82 -0
  652. package/docs/api/color-color-difference.md +134 -0
  653. package/docs/api/color-color-matching-functions.md +259 -0
  654. package/docs/api/color-colorimetry-math.md +54 -0
  655. package/docs/api/color-gamut-mapping.md +72 -0
  656. package/docs/api/color-illuminants.md +280 -0
  657. package/docs/api/color-rgb-color-spaces.md +151 -0
  658. package/docs/api/color-sensor-color-development.md +27 -0
  659. package/docs/api/color-srgb-icc.md +2 -4
  660. package/docs/api/color-white-balance.md +95 -19
  661. package/docs/api/composition-image-formation-plan.md +124 -95
  662. package/docs/api/composition-plan-consumer.md +7 -7
  663. package/docs/api/core-calculation-result.md +18 -14
  664. package/docs/api/core-configuration-error.md +1 -1
  665. package/docs/api/core-image-formation.md +7 -7
  666. package/docs/api/core-scientific-assurance.md +12 -10
  667. package/docs/api/core-spectral-composition.md +14 -14
  668. package/docs/api/core-spectral.md +6 -6
  669. package/docs/api/core-validation.md +3 -3
  670. package/docs/api/core-version.md +7 -6
  671. package/docs/api/equipment-exposure-capabilities.md +11 -10
  672. package/docs/api/equipment-generic-tier-assets.md +7 -2
  673. package/docs/api/equipment-generic-tier-presets.md +6 -6
  674. package/docs/api/equipment-iso-capabilities.md +18 -18
  675. package/docs/api/equipment-metering-capabilities.md +6 -6
  676. package/docs/api/equipment-release-capabilities.md +4 -4
  677. package/docs/api/exports.json +2213 -8
  678. package/docs/api/exposure-exposure-duration-control.md +9 -9
  679. package/docs/api/exposure-exposure-mode-resolver.md +35 -31
  680. package/docs/api/exposure-exposure.md +10 -10
  681. package/docs/api/exposure-flash-ttl.md +182 -0
  682. package/docs/api/exposure-flash.md +183 -28
  683. package/docs/api/exposure-metering-scene-radiance.md +11 -10
  684. package/docs/api/exposure-metering-target.md +9 -8
  685. package/docs/api/exposure-metering-temporal.md +8 -8
  686. package/docs/api/exposure-metering.md +69 -9
  687. package/docs/api/exposure-program-line.md +6 -5
  688. package/docs/api/facade-chart-radiance-batch.md +96 -0
  689. package/docs/api/facade-chart-scenes.md +240 -0
  690. package/docs/api/facade-scene-radiance.md +122 -0
  691. package/docs/api/facade-simulate-capture.md +324 -0
  692. package/docs/api/gpu-image-kernel-accelerator.md +157 -0
  693. package/docs/api/gpu-image-kernel-execution.md +152 -0
  694. package/docs/api/motion-camera-rotation.md +43 -26
  695. package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
  696. package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
  697. package/docs/api/motion-capture-rotation-trajectory.md +15 -15
  698. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
  699. package/docs/api/motion-extended-object-projection.md +10 -8
  700. package/docs/api/motion-projected-motion.md +8 -8
  701. package/docs/api/motion-temporal-exposure-sum.md +98 -0
  702. package/docs/api/motion-video-sequence.md +159 -0
  703. package/docs/api/optics-aperture.md +8 -8
  704. package/docs/api/optics-atmospheric-haze.md +104 -0
  705. package/docs/api/optics-brown-conrady-distortion.md +123 -0
  706. package/docs/api/optics-circle-of-confusion.md +5 -4
  707. package/docs/api/optics-complex-pupil-psf.md +57 -16
  708. package/docs/api/optics-depth-of-field.md +12 -6
  709. package/docs/api/optics-diffraction.md +8 -7
  710. package/docs/api/optics-focus-breathing.md +104 -16
  711. package/docs/api/optics-focus-state.md +9 -10
  712. package/docs/api/optics-front-of-lens-filter.md +72 -14
  713. package/docs/api/optics-illumination-vignetting.md +10 -10
  714. package/docs/api/optics-irradiance-convolution.md +95 -0
  715. package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
  716. package/docs/api/optics-lens-psf-kernels.md +72 -0
  717. package/docs/api/optics-lens-psf-profile.md +48 -26
  718. package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
  719. package/docs/api/optics-polygon-diffraction.md +78 -13
  720. package/docs/api/optics-profile-contract.md +4 -4
  721. package/docs/api/optics-psf-foundation.md +12 -12
  722. package/docs/api/optics-pupil-vignetting.md +132 -0
  723. package/docs/api/optics-radial-distortion.md +12 -12
  724. package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
  725. package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
  726. package/docs/api/optics-sensor-aperture-rays.md +3 -2
  727. package/docs/api/optics-sensor-environment-query.md +52 -9
  728. package/docs/api/optics-sensor-psf-quadrature.md +13 -10
  729. package/docs/api/optics-stray-light.md +12 -11
  730. package/docs/api/optics-thin-lens.md +4 -3
  731. package/docs/api/optics-zernike-wavefront.md +229 -0
  732. package/docs/api/output-capture-corrected-sdr.md +10 -7
  733. package/docs/api/output-capture-geometry.md +35 -36
  734. package/docs/api/output-capture-sdr.md +4 -4
  735. package/docs/api/output-crop.md +7 -4
  736. package/docs/api/output-geometric-transforms.md +65 -19
  737. package/docs/api/output-lens-corrections.md +17 -15
  738. package/docs/api/output-native-capture-sdr.md +26 -13
  739. package/docs/api/output-png-encoder.md +105 -0
  740. package/docs/api/output-print-contrast-reference.md +8 -8
  741. package/docs/api/output-print-detail.md +14 -14
  742. package/docs/api/output-print-jpeg.md +22 -5
  743. package/docs/api/output-print-plan.md +18 -18
  744. package/docs/api/output-print-region-statistics.md +14 -14
  745. package/docs/api/output-sdr-rendering.md +52 -10
  746. package/docs/api/output-subject-framing-crop.md +5 -6
  747. package/docs/api/processing-demosaic.md +120 -0
  748. package/docs/api/processing-denoise.md +148 -0
  749. package/docs/api/processing-focus-stacking.md +41 -0
  750. package/docs/api/processing-hdr.md +113 -0
  751. package/docs/api/processing-panorama.md +82 -0
  752. package/docs/api/processing-processing-task.md +107 -0
  753. package/docs/api/processing-tone-mapping.md +142 -0
  754. package/docs/api/schema-camera.md +6 -4
  755. package/docs/api/schema-illumination-spectral.md +10 -11
  756. package/docs/api/schema-illumination-temporal.md +13 -15
  757. package/docs/api/schema-illumination.md +4 -4
  758. package/docs/api/schema-scene-radiance-temporal.md +10 -11
  759. package/docs/api/schema-scene-radiance.md +18 -17
  760. package/docs/api/schema-scene.md +9 -9
  761. package/docs/api/schema-validation.md +1 -1
  762. package/docs/api/sensor-accumulated-charge.md +12 -20
  763. package/docs/api/sensor-architecture.md +15 -16
  764. package/docs/api/sensor-camera-saturation-capacity.md +9 -11
  765. package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
  766. package/docs/api/sensor-capture-mode-timing.md +9 -9
  767. package/docs/api/sensor-capture-mode.md +29 -30
  768. package/docs/api/sensor-color-sampling.md +31 -33
  769. package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
  770. package/docs/api/sensor-dark-current.md +30 -14
  771. package/docs/api/sensor-environment-photo-signal.md +13 -6
  772. package/docs/api/sensor-eqe-electron-rate.md +9 -8
  773. package/docs/api/sensor-eqe-local-exposure.md +18 -17
  774. package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
  775. package/docs/api/sensor-exposure-window.md +24 -24
  776. package/docs/api/sensor-fixed-pattern-noise.md +104 -0
  777. package/docs/api/sensor-iso-gain.md +63 -0
  778. package/docs/api/sensor-iso-signal-chain.md +13 -22
  779. package/docs/api/sensor-local-exposure-binding.md +12 -13
  780. package/docs/api/sensor-optical-stack.md +37 -40
  781. package/docs/api/sensor-photon-energy.md +10 -11
  782. package/docs/api/sensor-physical-charge-capacity.md +8 -13
  783. package/docs/api/sensor-pixel-pitch.md +1 -1
  784. package/docs/api/sensor-radiometry-readiness.md +9 -9
  785. package/docs/api/sensor-raw-readout.md +118 -52
  786. package/docs/api/sensor-raw-reconstruction.md +97 -20
  787. package/docs/api/sensor-readout-exposure-linkage.md +120 -24
  788. package/docs/api/sensor-readout-timing.md +33 -35
  789. package/docs/api/sensor-response-application-compatibility.md +9 -11
  790. package/docs/api/sensor-response-operating-range.md +14 -18
  791. package/docs/api/sensor-responsivity-photocurrent.md +9 -12
  792. package/docs/api/sensor-sampling-aperture.md +22 -25
  793. package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
  794. package/docs/api/sensor-sensor-geometry.md +23 -24
  795. package/docs/api/sensor-signal-noise.md +10 -10
  796. package/docs/api/sensor-spatial-sample-reduction.md +27 -30
  797. package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
  798. package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
  799. package/docs/api/sensor-spectral-coverage.md +5 -5
  800. package/docs/api/sensor-spectral-quadrature.md +33 -35
  801. package/docs/api/sensor-spectral-response.md +28 -16
  802. package/docs/api/sensor-temporal-photo-signal.md +6 -6
  803. package/docs/api/simulation-poc-simulation.md +17 -16
  804. package/docs/api/stabilization-camera-shake.md +29 -10
  805. package/docs/api/stabilization-system.md +25 -21
  806. package/docs/examples/production-request.json +3821 -2157
  807. package/docs/examples/simulate-capture.mjs +14 -0
  808. package/llms.txt +35 -0
  809. package/package.json +32 -12
  810. package/AGENTS.md +0 -674
  811. package/CONTRIBUTING.md +0 -76
  812. package/DCO +0 -33
  813. package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
  814. package/dist/camera/field-of-view.d.ts.map +0 -1
  815. package/dist/camera/projected-object-size.d.ts.map +0 -1
  816. package/dist/capture/capture-export-metadata.d.ts.map +0 -1
  817. package/dist/capture/environment-raw-producer.d.ts.map +0 -1
  818. package/dist/capture/export-jpeg.d.ts.map +0 -1
  819. package/dist/capture/export-tiff.d.ts.map +0 -1
  820. package/dist/capture/focus-control.d.ts.map +0 -1
  821. package/dist/capture/linear-encoding.d.ts.map +0 -1
  822. package/dist/capture/native-environment-raw.d.ts.map +0 -1
  823. package/dist/capture/native-raw-development.d.ts.map +0 -1
  824. package/dist/capture/native-raw.d.ts.map +0 -1
  825. package/dist/capture/photographic-export.d.ts.map +0 -1
  826. package/dist/capture/raw-frame-limits.d.ts.map +0 -1
  827. package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
  828. package/dist/capture/release-sequence.d.ts.map +0 -1
  829. package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
  830. package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
  831. package/dist/capture/simulated-capture.d.ts.map +0 -1
  832. package/dist/color/capture-color.d.ts.map +0 -1
  833. package/dist/color/sensor-color-development.d.ts.map +0 -1
  834. package/dist/color/srgb-icc.d.ts.map +0 -1
  835. package/dist/color/srgb-transfer.d.ts.map +0 -1
  836. package/dist/color/white-balance.d.ts.map +0 -1
  837. package/dist/composition/image-formation-plan.d.ts.map +0 -1
  838. package/dist/composition/plan-consumer.d.ts.map +0 -1
  839. package/dist/core/calculation-result.d.ts.map +0 -1
  840. package/dist/core/canonical-json.d.ts.map +0 -1
  841. package/dist/core/configuration-error.d.ts.map +0 -1
  842. package/dist/core/evidence-provenance.d.ts.map +0 -1
  843. package/dist/core/image-formation.d.ts.map +0 -1
  844. package/dist/core/owned-data.d.ts.map +0 -1
  845. package/dist/core/record-validation.d.ts.map +0 -1
  846. package/dist/core/scientific-assurance.d.ts.map +0 -1
  847. package/dist/core/spectral-composition.d.ts.map +0 -1
  848. package/dist/core/spectral.d.ts.map +0 -1
  849. package/dist/core/validation.d.ts.map +0 -1
  850. package/dist/core/version.d.ts.map +0 -1
  851. package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
  852. package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
  853. package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
  854. package/dist/equipment/iso-capabilities.d.ts.map +0 -1
  855. package/dist/equipment/metering-capabilities.d.ts.map +0 -1
  856. package/dist/equipment/release-capabilities.d.ts.map +0 -1
  857. package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
  858. package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
  859. package/dist/exposure/exposure.d.ts.map +0 -1
  860. package/dist/exposure/flash.d.ts.map +0 -1
  861. package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
  862. package/dist/exposure/metering-target.d.ts.map +0 -1
  863. package/dist/exposure/metering-temporal.d.ts.map +0 -1
  864. package/dist/exposure/metering.d.ts.map +0 -1
  865. package/dist/exposure/program-line.d.ts.map +0 -1
  866. package/dist/index.d.ts.map +0 -1
  867. package/dist/motion/camera-rotation.d.ts.map +0 -1
  868. package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
  869. package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
  870. package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
  871. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
  872. package/dist/motion/extended-object-projection.d.ts.map +0 -1
  873. package/dist/motion/projected-motion.d.ts.map +0 -1
  874. package/dist/optics/aperture.d.ts.map +0 -1
  875. package/dist/optics/circle-of-confusion.d.ts.map +0 -1
  876. package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
  877. package/dist/optics/depth-of-field.d.ts.map +0 -1
  878. package/dist/optics/diffraction.d.ts.map +0 -1
  879. package/dist/optics/focus-breathing.d.ts.map +0 -1
  880. package/dist/optics/focus-state.d.ts.map +0 -1
  881. package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
  882. package/dist/optics/illumination-vignetting.d.ts.map +0 -1
  883. package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
  884. package/dist/optics/lens-psf-profile.d.ts.map +0 -1
  885. package/dist/optics/polygon-diffraction.d.ts.map +0 -1
  886. package/dist/optics/profile-contract.d.ts.map +0 -1
  887. package/dist/optics/psf-foundation.d.ts.map +0 -1
  888. package/dist/optics/radial-distortion.d.ts.map +0 -1
  889. package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
  890. package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
  891. package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
  892. package/dist/optics/sensor-environment-query.d.ts.map +0 -1
  893. package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
  894. package/dist/optics/sensor-psf-support.d.ts.map +0 -1
  895. package/dist/optics/stray-light.d.ts.map +0 -1
  896. package/dist/optics/thin-lens.d.ts.map +0 -1
  897. package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
  898. package/dist/output/capture-geometry.d.ts.map +0 -1
  899. package/dist/output/capture-sdr.d.ts.map +0 -1
  900. package/dist/output/crop.d.ts.map +0 -1
  901. package/dist/output/geometric-transforms.d.ts.map +0 -1
  902. package/dist/output/lens-corrections.d.ts.map +0 -1
  903. package/dist/output/native-capture-sdr.d.ts.map +0 -1
  904. package/dist/output/print-contrast-reference.d.ts.map +0 -1
  905. package/dist/output/print-detail.d.ts.map +0 -1
  906. package/dist/output/print-jpeg.d.ts.map +0 -1
  907. package/dist/output/print-plan.d.ts.map +0 -1
  908. package/dist/output/print-region-statistics.d.ts.map +0 -1
  909. package/dist/output/sdr-rendering.d.ts.map +0 -1
  910. package/dist/output/subject-framing-crop.d.ts.map +0 -1
  911. package/dist/schema/camera.d.ts.map +0 -1
  912. package/dist/schema/camera.js +0 -3
  913. package/dist/schema/camera.js.map +0 -1
  914. package/dist/schema/illumination-spectral.d.ts.map +0 -1
  915. package/dist/schema/illumination-temporal.d.ts.map +0 -1
  916. package/dist/schema/illumination.d.ts.map +0 -1
  917. package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
  918. package/dist/schema/scene-radiance.d.ts.map +0 -1
  919. package/dist/schema/scene.d.ts.map +0 -1
  920. package/dist/schema/scene.js +0 -3
  921. package/dist/schema/scene.js.map +0 -1
  922. package/dist/schema/validation.d.ts.map +0 -1
  923. package/dist/sensor/accumulated-charge.d.ts.map +0 -1
  924. package/dist/sensor/architecture.d.ts.map +0 -1
  925. package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
  926. package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
  927. package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
  928. package/dist/sensor/capture-mode.d.ts.map +0 -1
  929. package/dist/sensor/color-sampling.d.ts.map +0 -1
  930. package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
  931. package/dist/sensor/dark-current.d.ts.map +0 -1
  932. package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
  933. package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
  934. package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
  935. package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
  936. package/dist/sensor/exposure-window.d.ts.map +0 -1
  937. package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
  938. package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
  939. package/dist/sensor/optical-stack.d.ts.map +0 -1
  940. package/dist/sensor/photon-energy.d.ts.map +0 -1
  941. package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
  942. package/dist/sensor/pixel-pitch.d.ts.map +0 -1
  943. package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
  944. package/dist/sensor/raw-readout.d.ts.map +0 -1
  945. package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
  946. package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
  947. package/dist/sensor/readout-timing.d.ts.map +0 -1
  948. package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
  949. package/dist/sensor/response-operating-range.d.ts.map +0 -1
  950. package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
  951. package/dist/sensor/sampling-aperture.d.ts.map +0 -1
  952. package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
  953. package/dist/sensor/sensor-geometry.d.ts.map +0 -1
  954. package/dist/sensor/signal-noise.d.ts.map +0 -1
  955. package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
  956. package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
  957. package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
  958. package/dist/sensor/spectral-coverage.d.ts.map +0 -1
  959. package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
  960. package/dist/sensor/spectral-response.d.ts.map +0 -1
  961. package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
  962. package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
  963. package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
  964. package/dist/simulation/poc-simulation.d.ts.map +0 -1
  965. package/dist/stabilization/camera-shake.d.ts.map +0 -1
  966. package/dist/stabilization/system.d.ts.map +0 -1
  967. package/docs/API_STYLE.md +0 -235
  968. package/docs/ARCHITECTURE.md +0 -356
  969. package/docs/AUTOMATION_COORDINATION.md +0 -190
  970. package/docs/CAPTURE_COLOR.md +0 -25
  971. package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
  972. package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
  973. package/docs/CAPTURE_SDR.md +0 -22
  974. package/docs/DEVELOPERS.md +0 -68
  975. package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
  976. package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
  977. package/docs/EXPORT_ACCEPTANCE.md +0 -133
  978. package/docs/GENERIC_TIER_PRESETS.md +0 -269
  979. package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
  980. package/docs/IMAGE_FORMATION.md +0 -247
  981. package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
  982. package/docs/MOTION_AND_SIGNAL.md +0 -250
  983. package/docs/NATIVE_CAPTURE_SDR.md +0 -70
  984. package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
  985. package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
  986. package/docs/NATIVE_RAW_AND_PRINT.md +0 -47
  987. package/docs/NUMERICAL_CORRECTNESS.md +0 -191
  988. package/docs/PERFORMANCE_BASELINE.md +0 -56
  989. package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
  990. package/docs/PHYSICS_FOUNDATION.md +0 -426
  991. package/docs/POC_API.md +0 -278
  992. package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
  993. package/docs/POC_PROJECTION_REUSE.md +0 -124
  994. package/docs/PRINT_195_196_REVIEW.md +0 -93
  995. package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
  996. package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
  997. package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
  998. package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
  999. package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
  1000. package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
  1001. package/docs/PRINT_PLANNING.md +0 -75
  1002. package/docs/PRINT_REGION_STATISTICS.md +0 -38
  1003. package/docs/PROCESSED_OUTPUT.md +0 -157
  1004. package/docs/PRODUCTION_COMPOSITION.md +0 -373
  1005. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
  1006. package/docs/PROVENANCE.md +0 -115
  1007. package/docs/PSF_FOUNDATION.md +0 -165
  1008. package/docs/RAW_FRAME_ENVELOPE.md +0 -56
  1009. package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
  1010. package/docs/RELEASE_1_0.md +0 -66
  1011. package/docs/RELEASE_1_0_1.md +0 -61
  1012. package/docs/RELEASE_1_1_0.md +0 -25
  1013. package/docs/RELEASE_1_2_0.md +0 -51
  1014. package/docs/RELEASE_1_3_0.md +0 -15
  1015. package/docs/RELEASE_1_4_0.md +0 -23
  1016. package/docs/RELEASE_AUDIT.md +0 -39
  1017. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
  1018. package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
  1019. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
  1020. package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
  1021. package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
  1022. package/docs/SDR_RENDERING.md +0 -33
  1023. package/docs/SENSOR_APERTURE_RAYS.md +0 -23
  1024. package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
  1025. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
  1026. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
  1027. package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
  1028. package/docs/SENSOR_RAW_FRAME.md +0 -20
  1029. package/docs/SENSOR_RAW_PRODUCER.md +0 -77
  1030. package/docs/SIGNAL_CONFORMANCE.md +0 -23
  1031. package/docs/SIMULATED_CAPTURE.md +0 -65
  1032. package/docs/STABILIZATION.md +0 -234
  1033. package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
  1034. package/docs/TIER_ACCEPTANCE.md +0 -129
  1035. package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
  1036. package/docs/V1_COMPOSITION_MAP.md +0 -123
  1037. package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
  1038. package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
  1039. package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
  1040. package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
  1041. package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
  1042. package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
  1043. package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
  1044. package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
  1045. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
  1046. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
  1047. package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
  1048. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
  1049. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
  1050. package/docs/licenses/castleCSF-MIT.txt +0 -21
  1051. package/docs/validation/documentation-fragments.json +0 -212
  1052. package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
  1053. package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
  1054. package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
  1055. package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
  1056. package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
  1057. package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
  1058. package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
  1059. package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
  1060. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
  1061. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
  1062. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
  1063. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
  1064. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
  1065. package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
  1066. package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
  1067. package/docs/validation/print-196-candidate-capabilities.json +0 -28
  1068. package/docs/validation/print-196-candidate-evidence.json +0 -356
  1069. package/docs/validation/print-196-engine-acceptance.json +0 -81
  1070. package/docs/validation/print-detail-capabilities.json +0 -103
  1071. package/docs/validation/print-detail-jpeg-evidence.json +0 -116
  1072. package/docs/validation/print-detail-sdr-evidence.json +0 -81
  1073. package/docs/validation/release-audit-inventory.json +0 -1306
  1074. package/docs/validation/tier-acceptance-report-v1.json +0 -2538
@@ -1 +1 @@
1
- {"version":3,"file":"iso-signal-chain.js","sourceRoot":"","sources":["../../src/sensor/iso-signal-chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iso-signal-chain.js","sourceRoot":"","sources":["../../src/sensor/iso-signal-chain.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * ISO signal chain: picks the explicit readout regime (gain, read noise, clipping) that belongs to the\n * selected ISO and capture mode.\n *\n * Gain and noise are never derived from the ISO number itself; each regime is declared. Photons and\n * photo or dark shot noise are computed earlier in the chain. Generic tier labels do not calibrate or\n * rank real cameras.\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 {\n parseIsoCapabilityProfile,\n resolveIsoCapability,\n type IsoCapabilityProfile,\n type RequestedIsoSetting,\n type ResolvedIsoCapability\n} from \"../equipment/iso-capabilities.js\";\nimport {\n parseSensorReadoutConversionProfile,\n resolveSensorReadoutRegime,\n type ResolvedSensorReadoutRegime,\n type SensorReadoutConversionProfile\n} from \"./raw-readout.js\";\nimport { requireInputKeys, rejectUnknownFields } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport const GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION =\n \"0.1.0\" as const;\nexport const GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION =\n \"0.1.0\" as const;\n\nexport interface GenericIsoStandardRegimeBand {\n minimumExposureIndex: number;\n maximumExposureIndex: number;\n readoutRegimeId: string;\n}\n\nexport interface GenericIsoExpandedRegimeBinding {\n expandedSettingId: string;\n readoutRegimeId: string;\n}\n\nexport interface GenericIsoCaptureModeSignalChainBinding {\n captureModeId: string;\n standardRegimeBands:\n readonly GenericIsoStandardRegimeBand[];\n expandedRegimeBindings:\n readonly GenericIsoExpandedRegimeBinding[];\n evidence:\n readonly EvidenceProvenance[];\n}\n\nexport interface GenericIsoSignalChainProfile {\n schemaVersion:\n typeof GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION;\n profileId: string;\n profileVersion: string;\n scientificStatus: \"approximation\";\n isoCapabilityProfileId: string;\n readoutProfileId: string;\n behaviorMeaning:\n \"iso-state-selects-explicit-readout-regime-not-noise-equation\";\n captureModeBindings:\n readonly GenericIsoCaptureModeSignalChainBinding[];\n photonShotNoiseOwnedUpstream:\n true;\n processedImageBehaviorIncluded:\n false;\n fixedPatternNoiseModeled:\n false;\n lowSignalColorDegradationModeled:\n false;\n evidence:\n readonly EvidenceProvenance[];\n limitations: readonly string[];\n}\n\nexport interface ResolveGenericIsoSignalChainInput {\n profile:\n GenericIsoSignalChainProfile;\n isoCapability:\n IsoCapabilityProfile;\n requestedIsoSetting:\n RequestedIsoSetting;\n captureModeId: string;\n readoutProfile:\n SensorReadoutConversionProfile;\n}\n\nexport interface ResolvedGenericIsoSignalChain {\n profileId: string;\n profileVersion: string;\n scientificStatus:\n \"approximation\";\n captureModeId: string;\n iso:\n ResolvedIsoCapability;\n readout:\n ResolvedSensorReadoutRegime;\n regimeSelectionReason:\n | \"standard-exposure-index-band\"\n | \"expanded-setting-binding\";\n capturedPhotonExpectationModified:\n false;\n photonShotNoiseStatisticsModified:\n false;\n sensorGeometryModified: false;\n processedImageBehaviorApplied:\n false;\n fixedPatternNoiseApplied:\n false;\n lowSignalColorDegradationApplied:\n false;\n isoUsedAsDirectNoiseEquation:\n false;\n exactCommercialCameraBehaviorClaimed:\n false;\n}\n\nexport type GenericIsoSignalChainPreset =\n | \"good\"\n | \"better\"\n | \"best\";\n\nexport interface GenericIsoSignalChainPresetCatalog {\n schemaVersion:\n typeof GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION;\n catalogId: string;\n catalogVersion: string;\n entries: readonly {\n preset:\n GenericIsoSignalChainPreset;\n signalChainProfileId:\n string;\n evidence:\n readonly EvidenceProvenance[];\n }[];\n performanceOrderingClaimed:\n false;\n realCameraRankingClaimed:\n false;\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 +\n \" must be a non-empty string.\"\n );\n }\n return value.trim();\n}\n\nfunction requirePositiveFinite(\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 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 +\n \"[\" +\n index +\n \"]\"\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 parseStandardBand(\n value: unknown,\n path: string\n): GenericIsoStandardRegimeBand {\n const record =\n requireRecord(value, path, [\"minimumExposureIndex\", \"maximumExposureIndex\", \"readoutRegimeId\"]);\n const minimumExposureIndex =\n requirePositiveFinite(\n record.minimumExposureIndex,\n path +\n \".minimumExposureIndex\"\n );\n const maximumExposureIndex =\n requirePositiveFinite(\n record.maximumExposureIndex,\n path +\n \".maximumExposureIndex\"\n );\n if (\n minimumExposureIndex >\n maximumExposureIndex\n ) {\n throw new InvalidConfigurationError(\n path +\n \".minimumExposureIndex must be less than or equal to maximumExposureIndex.\"\n );\n }\n return {\n minimumExposureIndex,\n maximumExposureIndex,\n readoutRegimeId:\n requireNonEmptyString(\n record.readoutRegimeId,\n path +\n \".readoutRegimeId\"\n )\n };\n}\n\nfunction parseCaptureModeBinding(\n value: unknown,\n path: string\n): GenericIsoCaptureModeSignalChainBinding {\n const record =\n requireRecord(value, path, [\"standardRegimeBands\", \"expandedRegimeBindings\", \"captureModeId\", \"evidence\"]);\n if (\n !Array.isArray(\n record.standardRegimeBands\n ) ||\n record.standardRegimeBands\n .length === 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \".standardRegimeBands must be a non-empty array.\"\n );\n }\n const bands =\n record.standardRegimeBands.map(\n (entry, index) =>\n parseStandardBand(\n entry,\n path +\n \".standardRegimeBands[\" +\n index +\n \"]\"\n )\n ).sort(\n (a, b) =>\n a.minimumExposureIndex -\n b.minimumExposureIndex\n );\n for (\n let index = 1;\n index < bands.length;\n index += 1\n ) {\n const prior =\n bands[index - 1]!;\n const current =\n bands[index]!;\n if (\n current.minimumExposureIndex <=\n prior.maximumExposureIndex\n ) {\n throw new InvalidConfigurationError(\n path +\n \".standardRegimeBands must not overlap.\"\n );\n }\n }\n\n if (\n !Array.isArray(\n record.expandedRegimeBindings\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \".expandedRegimeBindings must be an array.\"\n );\n }\n const expandedRegimeBindings =\n record.expandedRegimeBindings.map(\n (entry, index) => {\n const entryPath =\n path +\n \".expandedRegimeBindings[\" +\n index +\n \"]\";\n const binding =\n requireRecord(\n entry,\n entryPath, [\"expandedSettingId\", \"readoutRegimeId\"]\n );\n return {\n expandedSettingId:\n requireNonEmptyString(\n binding.expandedSettingId,\n entryPath +\n \".expandedSettingId\"\n ),\n readoutRegimeId:\n requireNonEmptyString(\n binding.readoutRegimeId,\n entryPath +\n \".readoutRegimeId\"\n )\n };\n }\n );\n const expandedIds =\n expandedRegimeBindings.map(\n (entry) =>\n entry.expandedSettingId\n );\n if (\n new Set(expandedIds).size !==\n expandedIds.length\n ) {\n throw new InvalidConfigurationError(\n path +\n \".expandedRegimeBindings must not contain duplicate expandedSettingId values.\"\n );\n }\n\n return {\n captureModeId:\n requireNonEmptyString(\n record.captureModeId,\n path + \".captureModeId\"\n ),\n standardRegimeBands:\n bands,\n expandedRegimeBindings,\n evidence:\n parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n )\n };\n}\n\n/**\n * Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,\n * missing required fields and inconsistent scientific data are rejected.\n *\n * The profile binds each ISO and capture-mode state to an explicit readout regime, whose gain,\n * read noise and clipping are declared separately.\n * @param value - Untrusted data. TypeScript types alone are not validation.\n * @returns The result. Success does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function parseGenericIsoSignalChainProfile(\n value: unknown\n): GenericIsoSignalChainProfile {\n const record =\n requireRecord(\n value,\n \"genericIsoSignalChainProfile\", [\"schemaVersion\", \"scientificStatus\", \"behaviorMeaning\", \"photonShotNoiseOwnedUpstream\", \"processedImageBehaviorIncluded\", \"fixedPatternNoiseModeled\", \"lowSignalColorDegradationModeled\", \"captureModeBindings\", \"profileId\", \"profileVersion\", \"isoCapabilityProfileId\", \"readoutProfileId\", \"evidence\", \"limitations\"]\n );\n if (\n record.schemaVersion !==\n GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'genericIsoSignalChainProfile.schemaVersion must be \"' +\n GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION +\n '\".'\n );\n }\n if (\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n 'genericIsoSignalChainProfile.scientificStatus must be \"approximation\".'\n );\n }\n if (\n record.behaviorMeaning !==\n \"iso-state-selects-explicit-readout-regime-not-noise-equation\"\n ) {\n throw new InvalidConfigurationError(\n \"genericIsoSignalChainProfile.behaviorMeaning is invalid.\"\n );\n }\n if (\n record.photonShotNoiseOwnedUpstream !==\n true ||\n record.processedImageBehaviorIncluded !==\n false ||\n record.fixedPatternNoiseModeled !==\n false ||\n record.lowSignalColorDegradationModeled !==\n false\n ) {\n throw new InvalidConfigurationError(\n \"genericIsoSignalChainProfile domain-ownership flags are invalid.\"\n );\n }\n if (\n !Array.isArray(\n record.captureModeBindings\n ) ||\n record.captureModeBindings\n .length === 0\n ) {\n throw new InvalidConfigurationError(\n \"genericIsoSignalChainProfile.captureModeBindings must be a non-empty array.\"\n );\n }\n const captureModeBindings =\n record.captureModeBindings.map(\n (entry, index) =>\n parseCaptureModeBinding(\n entry,\n \"genericIsoSignalChainProfile.captureModeBindings[\" +\n index +\n \"]\"\n )\n );\n const modeIds =\n captureModeBindings.map(\n (entry) =>\n entry.captureModeId\n );\n if (\n new Set(modeIds).size !==\n modeIds.length\n ) {\n throw new InvalidConfigurationError(\n \"genericIsoSignalChainProfile.captureModeBindings must not contain duplicate captureModeId values.\"\n );\n }\n\n return {\n schemaVersion:\n GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION,\n profileId:\n requireNonEmptyString(\n record.profileId,\n \"genericIsoSignalChainProfile.profileId\"\n ),\n profileVersion:\n requireNonEmptyString(\n record.profileVersion,\n \"genericIsoSignalChainProfile.profileVersion\"\n ),\n scientificStatus:\n \"approximation\",\n isoCapabilityProfileId:\n requireNonEmptyString(\n record.isoCapabilityProfileId,\n \"genericIsoSignalChainProfile.isoCapabilityProfileId\"\n ),\n readoutProfileId:\n requireNonEmptyString(\n record.readoutProfileId,\n \"genericIsoSignalChainProfile.readoutProfileId\"\n ),\n behaviorMeaning:\n \"iso-state-selects-explicit-readout-regime-not-noise-equation\",\n captureModeBindings,\n photonShotNoiseOwnedUpstream:\n true,\n processedImageBehaviorIncluded:\n false,\n fixedPatternNoiseModeled:\n false,\n lowSignalColorDegradationModeled:\n false,\n evidence:\n parseEvidenceList(\n record.evidence,\n \"genericIsoSignalChainProfile.evidence\"\n ),\n limitations:\n parseLimitations(\n record.limitations,\n \"genericIsoSignalChainProfile.limitations\"\n )\n };\n}\n\nfunction regimeIdForIso(\n binding:\n GenericIsoCaptureModeSignalChainBinding,\n iso:\n ResolvedIsoCapability\n): {\n regimeId: string;\n reason:\n ResolvedGenericIsoSignalChain[\"regimeSelectionReason\"];\n} {\n if (\n iso.setting.kind ===\n \"expanded\"\n ) {\n const expandedSettingId =\n iso.setting.settingId;\n const expanded =\n binding\n .expandedRegimeBindings\n .find(\n (entry) =>\n entry\n .expandedSettingId ===\n expandedSettingId\n );\n if (expanded === undefined) {\n throw new InvalidScientificInputError(\n \"Expanded ISO setting has no signal-chain regime binding for the selected capture mode.\"\n );\n }\n return {\n regimeId:\n expanded\n .readoutRegimeId,\n reason:\n \"expanded-setting-binding\"\n };\n }\n\n const matches =\n binding\n .standardRegimeBands\n .filter(\n (band) =>\n iso\n .reportedExposureIndex >=\n band\n .minimumExposureIndex &&\n iso\n .reportedExposureIndex <=\n band\n .maximumExposureIndex\n );\n if (matches.length !== 1) {\n throw new InvalidScientificInputError(\n \"Standard ISO setting must match exactly one signal-chain regime band.\"\n );\n }\n return {\n regimeId:\n matches[0]!\n .readoutRegimeId,\n reason:\n \"standard-exposure-index-band\"\n };\n}\n\n/**\n * Picks the explicit readout regime bound to the resolved ISO and capture-mode state. Gain and noise\n * are never derived from the ISO number.\n * @param input - The input; see `ResolveGenericIsoSignalChainInput` for its fields, units and coordinates.\n * @returns The result. Success does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function resolveGenericIsoSignalChain(\n input:\n ResolveGenericIsoSignalChainInput\n): ResolvedGenericIsoSignalChain {\n requireInputKeys(input, \"resolveGenericIsoSignalChain\", [\"profile\", \"isoCapability\", \"requestedIsoSetting\", \"captureModeId\", \"readoutProfile\"]);\n const profile =\n parseGenericIsoSignalChainProfile(\n input.profile\n );\n const isoCapability =\n parseIsoCapabilityProfile(\n input.isoCapability\n );\n const readoutProfile =\n parseSensorReadoutConversionProfile(\n input.readoutProfile\n );\n\n if (\n profile.isoCapabilityProfileId !==\n isoCapability.profileId\n ) {\n throw new InvalidScientificInputError(\n \"Signal-chain profile isoCapabilityProfileId must match the supplied ISO capability profile.\"\n );\n }\n if (\n profile.readoutProfileId !==\n readoutProfile.profileId\n ) {\n throw new InvalidScientificInputError(\n \"Signal-chain profile readoutProfileId must match the supplied sensor readout profile.\"\n );\n }\n if (\n typeof input.captureModeId !==\n \"string\" ||\n input.captureModeId.trim()\n .length === 0\n ) {\n throw new InvalidConfigurationError(\n \"captureModeId must be a non-empty string.\"\n );\n }\n\n const binding =\n profile.captureModeBindings.find(\n (entry) =>\n entry.captureModeId ===\n input.captureModeId\n );\n if (binding === undefined) {\n throw new InvalidScientificInputError(\n \"Signal-chain profile has no binding for the selected capture mode.\"\n );\n }\n\n const iso =\n resolveIsoCapability({\n profile:\n isoCapability,\n setting:\n input\n .requestedIsoSetting,\n captureModeId:\n input.captureModeId\n });\n const regime =\n regimeIdForIso(\n binding,\n iso\n );\n const readout =\n resolveSensorReadoutRegime({\n profile:\n readoutProfile,\n regimeId:\n regime.regimeId\n });\n const gain =\n readout.regime\n .exposureIndexGain;\n if (\n gain !== undefined &&\n gain.exposureIndex !==\n iso.reportedExposureIndex\n ) {\n throw new InvalidScientificInputError(\n \"The bound readout regime declares an ISO-gain derivation for a different exposure index.\"\n );\n }\n\n return {\n profileId:\n profile.profileId,\n profileVersion:\n profile.profileVersion,\n scientificStatus:\n \"approximation\",\n captureModeId:\n input.captureModeId,\n iso,\n readout,\n regimeSelectionReason:\n regime.reason,\n capturedPhotonExpectationModified:\n false,\n photonShotNoiseStatisticsModified:\n false,\n sensorGeometryModified:\n false,\n processedImageBehaviorApplied:\n false,\n fixedPatternNoiseApplied:\n false,\n lowSignalColorDegradationApplied:\n false,\n isoUsedAsDirectNoiseEquation:\n false,\n exactCommercialCameraBehaviorClaimed:\n false\n };\n}\n\nconst PRESETS =\n new Set<GenericIsoSignalChainPreset>([\n \"good\",\n \"better\",\n \"best\"\n ]);\n\n/**\n * Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,\n * missing required fields and inconsistent scientific data are rejected.\n *\n * Generic tier labels in the catalogue do not calibrate or rank real cameras.\n * @param value - Untrusted data. TypeScript types alone are not validation.\n * @returns The result. Success does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function parseGenericIsoSignalChainPresetCatalog(\n value: unknown\n): GenericIsoSignalChainPresetCatalog {\n const record =\n requireRecord(\n value,\n \"genericIsoSignalChainPresetCatalog\", [\"schemaVersion\", \"performanceOrderingClaimed\", \"realCameraRankingClaimed\", \"entries\", \"catalogId\", \"catalogVersion\"]\n );\n if (\n record.schemaVersion !==\n GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'genericIsoSignalChainPresetCatalog.schemaVersion must be \"' +\n GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION +\n '\".'\n );\n }\n if (\n record.performanceOrderingClaimed !==\n false ||\n record.realCameraRankingClaimed !==\n false\n ) {\n throw new InvalidConfigurationError(\n \"Generic ISO preset catalog must not claim physical performance ordering or real-camera ranking.\"\n );\n }\n if (\n !Array.isArray(\n record.entries\n ) ||\n record.entries.length !== 3\n ) {\n throw new InvalidConfigurationError(\n \"Generic ISO preset catalog must contain exactly Good, Better, and Best entries.\"\n );\n }\n\n const entries =\n record.entries.map(\n (entry, index) => {\n const path =\n \"genericIsoSignalChainPresetCatalog.entries[\" +\n index +\n \"]\";\n const parsed =\n requireRecord(\n entry,\n path, [\"preset\", \"signalChainProfileId\", \"evidence\"]\n );\n if (\n typeof parsed.preset !==\n \"string\" ||\n !PRESETS.has(\n parsed.preset as\n GenericIsoSignalChainPreset\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \".preset is invalid.\"\n );\n }\n return {\n preset:\n parsed.preset as\n GenericIsoSignalChainPreset,\n signalChainProfileId:\n requireNonEmptyString(\n parsed\n .signalChainProfileId,\n path +\n \".signalChainProfileId\"\n ),\n evidence:\n parseEvidenceList(\n parsed.evidence,\n path + \".evidence\"\n )\n };\n }\n );\n\n const presets =\n entries.map(\n (entry) =>\n entry.preset\n );\n if (\n new Set(presets).size !==\n 3\n ) {\n throw new InvalidConfigurationError(\n \"Generic ISO preset catalog must contain each Good, Better, and Best preset exactly once.\"\n );\n }\n\n return {\n schemaVersion:\n GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION,\n catalogId:\n requireNonEmptyString(\n record.catalogId,\n \"genericIsoSignalChainPresetCatalog.catalogId\"\n ),\n catalogVersion:\n requireNonEmptyString(\n record.catalogVersion,\n \"genericIsoSignalChainPresetCatalog.catalogVersion\"\n ),\n entries,\n performanceOrderingClaimed:\n false,\n realCameraRankingClaimed:\n false\n };\n}\n\n/**\n * Picks a generic preset from the catalogue and returns the signal-chain profile it uses. It makes\n * no claim of manufacturer calibration.\n *\n * Generic tier labels do not calibrate or rank real cameras.\n * @param input - The preset catalogue and the chosen preset.\n * @returns The preset and its signal-chain profile ID. `performanceOrderingClaimed` and\n * `realCameraRankingClaimed` are always false. Success does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function resolveGenericIsoSignalChainPreset(\n input: {\n catalog:\n GenericIsoSignalChainPresetCatalog;\n preset:\n GenericIsoSignalChainPreset;\n }\n): {\n preset:\n GenericIsoSignalChainPreset;\n signalChainProfileId:\n string;\n performanceOrderingClaimed:\n false;\n realCameraRankingClaimed:\n false;\n} {\n requireInputKeys(input, \"resolveGenericIsoSignalChainPreset\", [\"catalog\", \"preset\"]);\n const catalog =\n parseGenericIsoSignalChainPresetCatalog(\n input.catalog\n );\n if (\n !PRESETS.has(\n input.preset\n )\n ) {\n throw new InvalidConfigurationError(\n \"preset must be good, better, or best.\"\n );\n }\n const entry =\n catalog.entries.find(\n (candidate) =>\n candidate.preset ===\n input.preset\n )!;\n\n return {\n preset:\n input.preset,\n signalChainProfileId:\n entry\n .signalChainProfileId,\n performanceOrderingClaimed:\n false,\n realCameraRankingClaimed:\n false\n };\n}\n"]}
@@ -1,12 +1,14 @@
1
1
  /**
2
- * Module boundary and integration notes.
3
- * Binds one engine-produced sensor response-rate result to the local exposure window at the same
4
- * color-sampling site. This first temporal binding supports only the explicit one-to-one
5
- * native-effective-sample ↔ color-site relationship. A multi-site block binding proves contributor
6
- * membership but does not prove each color site's sub-sample timing coordinate, so spatially varying
7
- * shutter timing fails closed rather than inventing fractional positions. The result establishes
8
- * timing only. It deliberately does not establish that the optical/electrical rate is stationary
9
- * through the local exposure window, so rate×duration integration remains unauthorized.
2
+ * Links one sensor response-rate result (made by the engine) to the local exposure window of the
3
+ * same colour-sampling site.
4
+ *
5
+ * Only a one-to-one link between native image samples and colour sites is supported. A block
6
+ * binding (several sites per sample) shows which sites contribute, but not where each one sits
7
+ * within the sample in time. So shutter timing that varies across the sensor is rejected rather
8
+ * than guessing fractional positions.
9
+ *
10
+ * The result fixes timing only. It does not establish that the rate is constant through the window,
11
+ * so it does not by itself allow rate × duration integration.
10
12
  * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
11
13
  * limits.
12
14
  */
@@ -23,8 +25,8 @@ export interface BindSensorRateToLocalExposureInput {
23
25
  colorSamplingProfile: SensorColorSamplingProfile;
24
26
  bindingProfile: NativeEffectiveRasterColorSamplingBindingProfile;
25
27
  /**
26
- * One capture/exposure event. samplePointsNative is owned by this binding
27
- * function and therefore intentionally excluded.
28
+ * One capture (exposure) event. samplePointsNative is left out on purpose,
29
+ * because this function sets it.
28
30
  */
29
31
  exposureWindowInput: Omit<CalculateCaptureExposureWindowsInput, "samplePointsNative">;
30
32
  }
@@ -70,18 +72,16 @@ export interface SensorRateLocalExposureBinding {
70
72
  };
71
73
  }
72
74
  /**
73
- * Binds one engine-produced sensor response-rate result to the local exposure
74
- * window at the same color-sampling site.
75
+ * Links one engine-made sensor response-rate result to the local exposure
76
+ * window of the same colour-sampling site.
75
77
  *
76
- * This first temporal binding supports only the explicit one-to-one
77
- * native-effective-sample ↔ color-site relationship. A multi-site block
78
- * binding proves contributor membership but does not prove each color site's
79
- * sub-sample timing coordinate, so spatially varying shutter timing fails
80
- * closed rather than inventing fractional positions.
78
+ * Only a one-to-one link between native image samples and colour sites is
79
+ * supported. A block binding shows which sites contribute, but not each site's
80
+ * timing position within the sample. So shutter timing that varies across the
81
+ * sensor is rejected rather than guessing fractional positions.
81
82
  *
82
- * The result establishes timing only. It deliberately does not establish that
83
- * the optical/electrical rate is stationary through the local exposure window,
84
- * so rate×duration integration remains unauthorized.
83
+ * The result fixes timing only. It does not establish that the optical or
84
+ * electrical rate is constant through the window, so it does not by itself
85
+ * allow rate × duration integration.
85
86
  */
86
87
  export declare function bindSensorRateToLocalExposure(input: BindSensorRateToLocalExposureInput): CalculationResult<SensorRateLocalExposureBinding>;
87
- //# sourceMappingURL=local-exposure-binding.d.ts.map
@@ -1,13 +1,15 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  /**
3
- * Module boundary and integration notes.
4
- * Binds one engine-produced sensor response-rate result to the local exposure window at the same
5
- * color-sampling site. This first temporal binding supports only the explicit one-to-one
6
- * native-effective-sample ↔ color-site relationship. A multi-site block binding proves contributor
7
- * membership but does not prove each color site's sub-sample timing coordinate, so spatially varying
8
- * shutter timing fails closed rather than inventing fractional positions. The result establishes
9
- * timing only. It deliberately does not establish that the optical/electrical rate is stationary
10
- * through the local exposure window, so rate×duration integration remains unauthorized.
3
+ * Links one sensor response-rate result (made by the engine) to the local exposure window of the
4
+ * same colour-sampling site.
5
+ *
6
+ * Only a one-to-one link between native image samples and colour sites is supported. A block
7
+ * binding (several sites per sample) shows which sites contribute, but not where each one sits
8
+ * within the sample in time. So shutter timing that varies across the sensor is rejected rather
9
+ * than guessing fractional positions.
10
+ *
11
+ * The result fixes timing only. It does not establish that the rate is constant through the window,
12
+ * so it does not by itself allow rate × duration integration.
11
13
  * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
12
14
  * limits.
13
15
  */
@@ -16,6 +18,7 @@ import { InvalidScientificInputError } from "../core/validation.js";
16
18
  import { resolveNativeEffectiveRasterColorSamplingBinding } from "./capture-color-sampling-binding.js";
17
19
  import { resolveColorSamplingSite } from "./color-sampling.js";
18
20
  import { calculateCaptureExposureWindows } from "./exposure-window.js";
21
+ import { requireInputObject, requireInputKeys } from "../core/record-validation.js";
19
22
  function requireSite(rate) {
20
23
  if (rate.site === undefined ||
21
24
  typeof rate.site !== "object" ||
@@ -32,6 +35,7 @@ function requireSite(rate) {
32
35
  };
33
36
  }
34
37
  function validateRateBoundary(rate) {
38
+ requireInputObject(rate, "rate input");
35
39
  if (rate.sourceResponseKind ===
36
40
  "effective-spectral-responsivity") {
37
41
  const current = rate;
@@ -79,20 +83,20 @@ function boundaryEvidence(boundary) {
79
83
  ];
80
84
  }
81
85
  /**
82
- * Binds one engine-produced sensor response-rate result to the local exposure
83
- * window at the same color-sampling site.
86
+ * Links one engine-made sensor response-rate result to the local exposure
87
+ * window of the same colour-sampling site.
84
88
  *
85
- * This first temporal binding supports only the explicit one-to-one
86
- * native-effective-sample ↔ color-site relationship. A multi-site block
87
- * binding proves contributor membership but does not prove each color site's
88
- * sub-sample timing coordinate, so spatially varying shutter timing fails
89
- * closed rather than inventing fractional positions.
89
+ * Only a one-to-one link between native image samples and colour sites is
90
+ * supported. A block binding shows which sites contribute, but not each site's
91
+ * timing position within the sample. So shutter timing that varies across the
92
+ * sensor is rejected rather than guessing fractional positions.
90
93
  *
91
- * The result establishes timing only. It deliberately does not establish that
92
- * the optical/electrical rate is stationary through the local exposure window,
93
- * so rate×duration integration remains unauthorized.
94
+ * The result fixes timing only. It does not establish that the optical or
95
+ * electrical rate is constant through the window, so it does not by itself
96
+ * allow rate × duration integration.
94
97
  */
95
98
  export function bindSensorRateToLocalExposure(input) {
99
+ requireInputKeys(input, "bindSensorRateToLocalExposure", ["rate", "colorSamplingProfile", "bindingProfile", "exposureWindowInput"]);
96
100
  const rateDomain = validateRateBoundary(input.rate);
97
101
  const site = requireSite(input.rate);
98
102
  const binding = resolveNativeEffectiveRasterColorSamplingBinding({
@@ -1 +1 @@
1
- {"version":3,"file":"local-exposure-binding.js","sourceRoot":"","sources":["../../src/sensor/local-exposure-binding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-exposure-binding.js","sourceRoot":"","sources":["../../src/sensor/local-exposure-binding.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Links one sensor response-rate result (made by the engine) to the local exposure window of the\n * same colour-sampling site.\n *\n * Only a one-to-one link between native image samples and colour sites is supported. A block\n * binding (several sites per sample) shows which sites contribute, but not where each one sits\n * within the sample in time. So shutter timing that varies across the sensor is rejected rather\n * than guessing fractional positions.\n *\n * The result fixes timing only. It does not establish that the rate is constant through the window,\n * so it does not by itself allow rate × duration integration.\n * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support\n * limits.\n */\n\nimport {\n approximationResult,\n type CalculationResult\n} from \"../core/calculation-result.js\";\nimport type {\n EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport { InvalidScientificInputError } from \"../core/validation.js\";\nimport {\n resolveNativeEffectiveRasterColorSamplingBinding,\n type NativeEffectiveRasterColorSamplingBindingProfile\n} from \"./capture-color-sampling-binding.js\";\nimport {\n resolveColorSamplingSite,\n type SensorColorSamplingProfile\n} from \"./color-sampling.js\";\nimport type {\n SensorEqeElectronRate\n} from \"./eqe-electron-rate.js\";\nimport {\n calculateCaptureExposureWindows,\n type CalculateCaptureExposureWindowsInput,\n type CaptureExposureWindowSample\n} from \"./exposure-window.js\";\nimport type {\n SensorResponsivityPhotocurrent\n} from \"./responsivity-photocurrent.js\";\nimport { requireInputObject, requireInputKeys } from \"../core/record-validation.js\";\n\nexport type SensorInstantaneousRateResult =\n | SensorEqeElectronRate\n | SensorResponsivityPhotocurrent;\n\nexport interface BindSensorRateToLocalExposureInput {\n rate:\n SensorInstantaneousRateResult;\n colorSamplingProfile:\n SensorColorSamplingProfile;\n bindingProfile:\n NativeEffectiveRasterColorSamplingBindingProfile;\n /**\n * One capture (exposure) event. samplePointsNative is left out on purpose,\n * because this function sets it.\n */\n exposureWindowInput:\n Omit<\n CalculateCaptureExposureWindowsInput,\n \"samplePointsNative\"\n >;\n}\n\nexport interface SensorRateLocalExposureBinding {\n rateDomain:\n | \"eqe-electron-rate\"\n | \"responsivity-photocurrent\";\n rateIdentity: {\n responseProfileId: string;\n responseApplicationProfileId: string;\n operatingRangeProfileId: string;\n electricalApplicabilityProfileId?: string;\n };\n colorSamplingProfileId: string;\n channelId: string;\n site: {\n x: number;\n y: number;\n };\n bindingId: string;\n bindingRelationship:\n \"one-native-effective-sample-to-one-color-site\";\n timingCoordinateRule:\n \"one-to-one-color-site-center-equals-native-effective-sample-center\";\n nativeRasterPoint: {\n x: number;\n y: number;\n };\n shutterMechanism:\n CalculateCaptureExposureWindowsInput[\"shutterMechanism\"];\n timeReference:\n \"first-opening-boundary-phase\";\n localExposureWindow:\n CaptureExposureWindowSample;\n localExposureDurationSeconds:\n number;\n exposureEventMeaning:\n \"single-capture-local-exposure-window\";\n nativeImageRasterBindingEstablished: true;\n channelAtSiteValidated: true;\n physicalPhotodiodeTimingRegistrationEstablished:\n false;\n multiFrameSequenceBindingEstablished:\n false;\n timeStationarityEstablished: false;\n constantRateTemporalIntegrationAuthorized:\n false;\n temporalIntegrationApplied: false;\n componentEvidence: {\n binding:\n readonly EvidenceProvenance[];\n colorSamplingProfile:\n readonly EvidenceProvenance[];\n nominalExposureDuration:\n readonly EvidenceProvenance[];\n openingBoundary:\n readonly EvidenceProvenance[];\n closingBoundary:\n readonly EvidenceProvenance[];\n };\n}\n\nfunction requireSite(\n rate:\n SensorInstantaneousRateResult\n): {\n x: number;\n y: number;\n} {\n if (\n rate.site === undefined ||\n typeof rate.site !== \"object\" ||\n rate.site === null ||\n !Number.isSafeInteger(rate.site.x) ||\n rate.site.x < 0 ||\n !Number.isSafeInteger(rate.site.y) ||\n rate.site.y < 0\n ) {\n throw new InvalidScientificInputError(\n \"rate.site must be present as a non-negative safe-integer color-sampling-site index.\"\n );\n }\n\n return {\n x: rate.site.x,\n y: rate.site.y\n };\n}\n\nfunction validateRateBoundary(\n rate:\n SensorInstantaneousRateResult\n): \"eqe-electron-rate\" |\n \"responsivity-photocurrent\" {\n requireInputObject(rate, \"rate input\");\n if (\n rate.sourceResponseKind ===\n \"effective-spectral-responsivity\"\n ) {\n const current =\n rate as SensorResponsivityPhotocurrent;\n\n if (\n current.currentCalculated !==\n true ||\n current.chargeCalculated !==\n false ||\n current.temporalIntegrationApplied !==\n false ||\n current.exposureDurationApplied !==\n false ||\n current.detectorBandwidthModeled !==\n false ||\n current.temporalResponseModel !==\n \"quasi-static-steady-state-only\"\n ) {\n throw new InvalidScientificInputError(\n \"A/W rate must remain a quasi-static pre-temporal photocurrent result.\"\n );\n }\n return \"responsivity-photocurrent\";\n }\n\n const eqe =\n rate as SensorEqeElectronRate;\n if (\n eqe.electronRateCalculated !== true ||\n eqe.photonRateCalculated !== true ||\n eqe.electronCountCalculated !==\n false ||\n eqe.photonCountCalculated !==\n false ||\n eqe.temporalIntegrationApplied !==\n false ||\n eqe.exposureDurationApplied !==\n false\n ) {\n throw new InvalidScientificInputError(\n \"EQE rate must remain a pre-temporal photon/electron-rate result.\"\n );\n }\n\n return \"eqe-electron-rate\";\n}\n\nfunction boundaryEvidence(\n boundary:\n ReturnType<\n typeof calculateCaptureExposureWindows\n >[\"value\"][\"opening\"]\n): readonly EvidenceProvenance[] {\n if (\n boundary.schedule.kind ===\n \"simultaneous\"\n ) {\n return [];\n }\n\n return [\n ...boundary.schedule.directionNative\n .evidence,\n ...boundary.schedule\n .traversalDurationSeconds.evidence\n ];\n}\n\n/**\n * Links one engine-made sensor response-rate result to the local exposure\n * window of the same colour-sampling site.\n *\n * Only a one-to-one link between native image samples and colour sites is\n * supported. A block binding shows which sites contribute, but not each site's\n * timing position within the sample. So shutter timing that varies across the\n * sensor is rejected rather than guessing fractional positions.\n *\n * The result fixes timing only. It does not establish that the optical or\n * electrical rate is constant through the window, so it does not by itself\n * allow rate × duration integration.\n */\nexport function bindSensorRateToLocalExposure(\n input:\n BindSensorRateToLocalExposureInput\n): CalculationResult<SensorRateLocalExposureBinding> {\n requireInputKeys(input, \"bindSensorRateToLocalExposure\", [\"rate\", \"colorSamplingProfile\", \"bindingProfile\", \"exposureWindowInput\"]);\n const rateDomain =\n validateRateBoundary(input.rate);\n const site = requireSite(input.rate);\n\n const binding =\n resolveNativeEffectiveRasterColorSamplingBinding({\n nativeRaster:\n input.exposureWindowInput\n .nativeRaster,\n colorSamplingProfile:\n input.colorSamplingProfile,\n bindingProfile:\n input.bindingProfile\n });\n\n if (\n binding.colorSamplingProfileId !==\n input.rate\n .colorSamplingProfileId\n ) {\n throw new InvalidScientificInputError(\n \"Color-sampling binding must reference the same colorSamplingProfileId as the rate result.\"\n );\n }\n\n if (\n binding.relationship\n .sitesPerNativeSampleX !== 1 ||\n binding.relationship\n .sitesPerNativeSampleY !== 1\n ) {\n throw new InvalidScientificInputError(\n \"Local exposure timing currently requires a one-to-one color-site/native-effective-sample binding; multi-site blocks lack explicit sub-sample timing registration.\"\n );\n }\n\n if (\n site.x >=\n binding.colorSamplingSiteGrid\n .widthSites ||\n site.y >=\n binding.colorSamplingSiteGrid\n .heightSites\n ) {\n throw new InvalidScientificInputError(\n \"rate.site is outside the color-sampling site grid established by the binding.\"\n );\n }\n\n const resolvedSite =\n resolveColorSamplingSite({\n profile:\n input.colorSamplingProfile,\n site\n });\n if (\n resolvedSite.mapping.channelId !==\n input.rate.channelId\n ) {\n throw new InvalidScientificInputError(\n \"The rate channelId does not match the color-sampling channel assigned to rate.site.\"\n );\n }\n\n const nativeRasterPoint = {\n x: site.x + 0.5,\n y: site.y + 0.5\n };\n\n const windows =\n calculateCaptureExposureWindows({\n ...input.exposureWindowInput,\n samplePointsNative: [\n nativeRasterPoint\n ]\n }).value;\n const localExposureWindow =\n windows.samples[0];\n\n if (\n localExposureWindow === undefined ||\n localExposureWindow\n .pointNative.x !==\n nativeRasterPoint.x ||\n localExposureWindow\n .pointNative.y !==\n nativeRasterPoint.y ||\n !Number.isFinite(\n localExposureWindow\n .localExposureDurationSeconds\n ) ||\n localExposureWindow\n .localExposureDurationSeconds <= 0\n ) {\n throw new InvalidScientificInputError(\n \"Exposure-window resolution did not return a valid local sample for the bound sensor site.\"\n );\n }\n\n return approximationResult(\n {\n rateDomain,\n rateIdentity: {\n responseProfileId:\n input.rate.responseProfileId,\n responseApplicationProfileId:\n input.rate\n .responseApplicationProfileId,\n operatingRangeProfileId:\n input.rate\n .operatingRangeProfileId,\n ...(rateDomain ===\n \"responsivity-photocurrent\"\n ? {\n electricalApplicabilityProfileId:\n (\n input.rate as\n SensorResponsivityPhotocurrent\n )\n .electricalApplicabilityProfileId\n }\n : {})\n },\n colorSamplingProfileId:\n input.rate\n .colorSamplingProfileId,\n channelId:\n input.rate.channelId,\n site,\n bindingId:\n binding.bindingId,\n bindingRelationship:\n \"one-native-effective-sample-to-one-color-site\",\n timingCoordinateRule:\n \"one-to-one-color-site-center-equals-native-effective-sample-center\",\n nativeRasterPoint,\n shutterMechanism:\n windows.shutterMechanism,\n timeReference:\n windows.timeReference,\n localExposureWindow,\n localExposureDurationSeconds:\n localExposureWindow\n .localExposureDurationSeconds,\n exposureEventMeaning:\n \"single-capture-local-exposure-window\",\n nativeImageRasterBindingEstablished:\n true,\n channelAtSiteValidated:\n true,\n physicalPhotodiodeTimingRegistrationEstablished:\n false,\n multiFrameSequenceBindingEstablished:\n false,\n timeStationarityEstablished:\n false,\n constantRateTemporalIntegrationAuthorized:\n false,\n temporalIntegrationApplied:\n false,\n componentEvidence: {\n binding:\n binding.componentEvidence\n .binding,\n colorSamplingProfile:\n binding.componentEvidence\n .colorSamplingProfile,\n nominalExposureDuration:\n windows\n .nominalExposureDurationSeconds\n .evidence,\n openingBoundary:\n boundaryEvidence(\n windows.opening\n ),\n closingBoundary:\n boundaryEvidence(\n windows.closing\n )\n }\n },\n \"sensor-rate-local-exposure-binding\",\n \"1.0.0\",\n [\n \"The rate's abstract color-sampling site is mapped to the center of the same-index native effective sample only because an explicit one-to-one shared-top-left binding is present.\",\n \"Multi-site-per-native-sample relationships are blocked because contributor membership does not establish individual color-site timing coordinates.\",\n \"The mapped timing coordinate is a native-effective-raster timing coordinate; it does not establish a physical photodiode timing registration.\",\n \"The exposure schedule is recomputed from the evidence-backed opening/closing timing declarations at the bound point rather than accepting an arbitrary precomputed local duration.\",\n \"The color-sampling channel at the exact site must match the response-rate channel.\",\n \"The result represents one local exposure event only; multi-frame/pixel-shift sequence timing and combination remain outside this contract.\",\n \"This binding does not establish that the optical/electron/current rate is constant through the exposure. Motion, flicker, flash, time-varying illumination/vignetting and detector transients require a time-dependent integrand.\",\n \"Temporal integration, accumulated charge, saturation, noise, ADC/RAW conversion and reconstruction are not performed.\"\n ]\n );\n}\n"]}
@@ -3,8 +3,8 @@ export type SensorOpticalStackComponentRole = "cover-glass" | "infrared-cut" | "
3
3
  export interface SensorOpticalStackComponent {
4
4
  componentId: string;
5
5
  /**
6
- * Roles may be combined because one physical element can provide multiple
7
- * optical/filter functions.
6
+ * A component can have several roles, because one physical element can do
7
+ * more than one optical or filtering job.
8
8
  */
9
9
  roles: readonly SensorOpticalStackComponentRole[];
10
10
  evidence: readonly EvidenceProvenance[];
@@ -13,45 +13,44 @@ export interface SensorMicrolensDeclaration {
13
13
  presence: "present" | "absent";
14
14
  evidence: readonly EvidenceProvenance[];
15
15
  /**
16
- * Presence alone does not establish an angular, spectral, fill-factor, or
17
- * collection-efficiency model.
16
+ * Being present does not establish any model of angle, spectrum, fill factor
17
+ * or collection efficiency.
18
18
  */
19
19
  opticalEffectModel: "unresolved";
20
20
  }
21
21
  export interface AntiAliasingPointSplitComponent {
22
22
  /**
23
- * Native sensor physical offset from the nominal landing point.
24
- * +X right, +Y down. Units: micrometres.
23
+ * Physical offset on the native sensor from where the light would otherwise
24
+ * land. +X right, +Y down. Units: micrometres.
25
25
  */
26
26
  offsetMicrometers: {
27
27
  x: number;
28
28
  y: number;
29
29
  };
30
30
  /**
31
- * Dimensionless normalized spatial weight. Point-splitting kernels describe
32
- * spatial redistribution only; total stack throughput is outside this field.
31
+ * Normalized weight (dimensionless). A point-splitting kernel only describes
32
+ * where the light goes; the stack's total throughput is not part of it.
33
33
  */
34
34
  normalizedWeight: number;
35
35
  }
36
36
  export type SensorEffectiveAntiAliasingSpatialResponse = {
37
37
  /**
38
- * Documented absence/cancellation of intentional anti-aliasing spatial
39
- * splitting. This does not mean the whole sensor stack is optically
40
- * identity.
38
+ * Documented absence (or cancellation) of deliberate AA splitting. It does
39
+ * not mean the rest of the sensor stack has no optical effect.
41
40
  */
42
41
  kind: "absent";
43
42
  evidence: readonly EvidenceProvenance[];
44
43
  } | {
45
44
  /**
46
- * An effective anti-aliasing response is known to exist, but its spatial
47
- * response is not defensibly specified.
45
+ * An AA effect is known to exist, but its spatial response is not
46
+ * specified well enough to use.
48
47
  */
49
48
  kind: "present-unresolved";
50
49
  evidence: readonly EvidenceProvenance[];
51
50
  } | {
52
51
  /**
53
- * Generic normalized point-splitting approximation in native sensor
54
- * physical coordinates.
52
+ * Generic approximation: each point is split into weighted copies at
53
+ * offsets in native sensor physical coordinates.
55
54
  */
56
55
  kind: "normalized-point-splitting-kernel";
57
56
  evidence: readonly EvidenceProvenance[];
@@ -64,22 +63,21 @@ export interface SensorOpticalStackProfile {
64
63
  profileId: string;
65
64
  evidence: readonly EvidenceProvenance[];
66
65
  /**
67
- * Ordered from incident-light side toward the sensor.
66
+ * In order from the side light enters towards the sensor.
68
67
  *
69
68
  * These components are descriptive metadata only. Their presence does not
70
- * create transmission, focus-shift, aberration, or spectral effects.
69
+ * create transmission, focus-shift, aberration or spectral effects.
71
70
  */
72
71
  orderedComponents?: readonly SensorOpticalStackComponent[];
73
72
  /**
74
- * Omitted means unknown/unasserted.
73
+ * Omitted means "unknown, not stated".
75
74
  *
76
- * This is intentionally separate from physical component presence so a
77
- * stack can contain low-pass-related hardware while its net effective
78
- * anti-aliasing response is absent/cancelled.
75
+ * This is separate from which components are present, so a stack can
76
+ * contain low-pass hardware while its net AA effect is absent or cancelled.
79
77
  */
80
78
  effectiveAntiAliasingSpatialResponse?: SensorEffectiveAntiAliasingSpatialResponse;
81
79
  /**
82
- * Omitted means unknown/unasserted.
80
+ * Omitted means "unknown, not stated".
83
81
  */
84
82
  microlens?: SensorMicrolensDeclaration;
85
83
  }
@@ -103,30 +101,28 @@ export interface ResolvedAntiAliasingSpatialKernel {
103
101
  };
104
102
  }
105
103
  /**
106
- * Parses descriptive sensor optical-stack metadata plus an optional explicitly
107
- * declared effective anti-aliasing spatial response.
104
+ * Parses descriptive sensor optical-stack metadata, plus an optional explicitly
105
+ * declared anti-aliasing (AA) spatial response.
108
106
  *
109
- * Unknown facts are omitted instead of inferred. Physical component presence
110
- * is intentionally separate from effective anti-aliasing response so the
111
- * schema can represent cancellation/neutralization designs without claiming
112
- * the physical assembly is absent.
107
+ * Leave out unknown facts rather than guessing them. Physical presence of a
108
+ * component is separate from the net AA response, so the schema can describe
109
+ * designs that cancel the AA effect without claiming the hardware is missing.
113
110
  *
114
- * Cover/filter-stack and microlens presence do not create optical effects in
115
- * schema 0.1.0. Thickness, refractive index, spectral transmission, angular
116
- * acceptance, focus shift and microlens collection behavior require later
117
- * explicit models/calibration.
111
+ * In schema 0.1.0, cover glass, filters and microlenses create no optical
112
+ * effect. Thickness, refractive index, spectral transmission, angle of
113
+ * acceptance, focus shift and microlens collection need later explicit models
114
+ * or calibration.
118
115
  */
119
116
  export declare function parseSensorOpticalStackProfile(value: unknown): SensorOpticalStackProfile;
120
117
  /**
121
- * Resolves only the effective anti-aliasing spatial kernel.
118
+ * Resolves only the anti-aliasing (AA) spatial kernel.
122
119
  *
123
- * This is not a whole optical-stack PSF. Cover/filter transmission, refraction,
124
- * microlens behavior, field/wavelength/polarization dependence, and total
125
- * throughput remain excluded.
120
+ * This is not the PSF (point-spread function) of the whole optical stack. Cover
121
+ * glass and filter transmission, refraction, microlens behaviour, dependence on
122
+ * field position, wavelength or polarization, and total throughput are excluded.
126
123
  *
127
- * A documented absent effective anti-aliasing response resolves to an identity
128
- * component at zero offset. An unknown response (field omitted) or a
129
- * present-but-unresolved response fails closed.
124
+ * A documented absent AA response gives a single component with weight 1 at zero
125
+ * offset (no blur). An unknown response (field omitted) or one that is present
126
+ * but unspecified is rejected.
130
127
  */
131
128
  export declare function resolveAntiAliasingSpatialKernel(profileInput: SensorOpticalStackProfile): ResolvedAntiAliasingSpatialKernel;
132
- //# sourceMappingURL=optical-stack.d.ts.map
@@ -1,21 +1,17 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  /**
3
- * Module boundary and integration notes.
4
- * Parses descriptive sensor optical-stack metadata plus an optional explicitly declared effective
5
- * anti-aliasing spatial response. Unknown facts are omitted instead of inferred. Physical component
6
- * presence is intentionally separate from effective anti-aliasing response so the schema can represent
7
- * cancellation/neutralization designs without claiming the physical assembly is absent.
8
- * Cover/filter-stack and microlens presence do not create optical effects in schema 0.1.0. Thickness,
9
- * refractive index, spectral transmission, angular acceptance, focus shift and microlens collection
10
- * behavior require later explicit models/calibration.
11
- * Resolves only the effective anti-aliasing spatial kernel. This is not a whole optical-stack PSF.
12
- * Cover/filter transmission, refraction, microlens behavior, field/wavelength/polarization dependence,
13
- * and total throughput remain excluded. A documented absent effective anti-aliasing response resolves
14
- * to an identity component at zero offset. An unknown response (field omitted) or a
15
- * present-but-unresolved response fails closed.
3
+ * Sensor optical stack: the layers in front of the photodiodes (such as cover glass, infrared- and
4
+ * ultraviolet-cut filters, a birefringent low-pass filter and microlenses), described as metadata,
5
+ * plus an optional declared anti-aliasing (AA) blur kernel.
6
+ *
7
+ * Whether a component is physically present is recorded separately from its net AA effect. That lets
8
+ * the schema describe designs that cancel the AA effect without claiming the hardware is missing.
9
+ * Component presence alone creates no optical effect. Thickness, refractive index, spectral
10
+ * transmission, angle of acceptance, focus shift and microlens collection need separate models.
16
11
  * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
17
12
  * limits.
18
13
  */
14
+ import { rejectUnknownFields } from "../core/record-validation.js";
19
15
  import { InvalidConfigurationError } from "../core/configuration-error.js";
20
16
  import { parseEvidenceList } from "../core/evidence-provenance.js";
21
17
  import { InvalidScientificInputError } from "../core/validation.js";
@@ -28,12 +24,14 @@ const COMPONENT_ROLES = new Set([
28
24
  "wave-plate",
29
25
  "other-optical-filter"
30
26
  ]);
31
- function requireRecord(value, path) {
27
+ function requireRecord(value, path, allowedKeys) {
32
28
  if (typeof value !== "object" ||
33
29
  value === null ||
34
30
  Array.isArray(value)) {
35
31
  throw new InvalidConfigurationError(path + " must be an object.");
36
32
  }
33
+ if (allowedKeys !== null)
34
+ rejectUnknownFields(value, allowedKeys, path);
37
35
  return value;
38
36
  }
39
37
  function requireNonEmptyString(value, path) {
@@ -64,7 +62,7 @@ function parseOrderedComponents(value, path) {
64
62
  throw new InvalidConfigurationError(path + " must be a non-empty array.");
65
63
  }
66
64
  const components = value.map((entry, index) => {
67
- const record = requireRecord(entry, path + "[" + index + "]");
65
+ const record = requireRecord(entry, path + "[" + index + "]", ["componentId", "roles", "evidence"]);
68
66
  return {
69
67
  componentId: requireNonEmptyString(record.componentId, path + "[" + index + "].componentId"),
70
68
  roles: parseComponentRoles(record.roles, path + "[" + index + "].roles"),
@@ -89,8 +87,8 @@ function parsePointSplitComponents(value, path) {
89
87
  throw new InvalidConfigurationError(path + " must be a non-empty array.");
90
88
  }
91
89
  const components = value.map((entry, index) => {
92
- const record = requireRecord(entry, path + "[" + index + "]");
93
- const offset = requireRecord(record.offsetMicrometers, path + "[" + index + "].offsetMicrometers");
90
+ const record = requireRecord(entry, path + "[" + index + "]", ["offsetMicrometers", "normalizedWeight"]);
91
+ const offset = requireRecord(record.offsetMicrometers, path + "[" + index + "].offsetMicrometers", ["x", "y"]);
94
92
  const normalizedWeight = requireFiniteNumber(record.normalizedWeight, path + "[" + index + "].normalizedWeight");
95
93
  if (normalizedWeight <= 0) {
96
94
  throw new InvalidConfigurationError(path +
@@ -121,7 +119,7 @@ function parsePointSplitComponents(value, path) {
121
119
  return components;
122
120
  }
123
121
  function parseAntiAliasingResponse(value, path) {
124
- const record = requireRecord(value, path);
122
+ const record = requireRecord(value, path, ["kind", "coordinateSystem", "scope", "components", "evidence"]);
125
123
  if (record.kind === "absent" ||
126
124
  record.kind === "present-unresolved") {
127
125
  if (record.coordinateSystem !== undefined ||
@@ -157,7 +155,7 @@ function parseAntiAliasingResponse(value, path) {
157
155
  throw new InvalidConfigurationError(path + ".kind is invalid.");
158
156
  }
159
157
  function parseMicrolens(value, path) {
160
- const record = requireRecord(value, path);
158
+ const record = requireRecord(value, path, ["presence", "opticalEffectModel", "evidence"]);
161
159
  if (record.presence !== "present" &&
162
160
  record.presence !== "absent") {
163
161
  throw new InvalidConfigurationError(path + ".presence is invalid.");
@@ -173,21 +171,20 @@ function parseMicrolens(value, path) {
173
171
  };
174
172
  }
175
173
  /**
176
- * Parses descriptive sensor optical-stack metadata plus an optional explicitly
177
- * declared effective anti-aliasing spatial response.
174
+ * Parses descriptive sensor optical-stack metadata, plus an optional explicitly
175
+ * declared anti-aliasing (AA) spatial response.
178
176
  *
179
- * Unknown facts are omitted instead of inferred. Physical component presence
180
- * is intentionally separate from effective anti-aliasing response so the
181
- * schema can represent cancellation/neutralization designs without claiming
182
- * the physical assembly is absent.
177
+ * Leave out unknown facts rather than guessing them. Physical presence of a
178
+ * component is separate from the net AA response, so the schema can describe
179
+ * designs that cancel the AA effect without claiming the hardware is missing.
183
180
  *
184
- * Cover/filter-stack and microlens presence do not create optical effects in
185
- * schema 0.1.0. Thickness, refractive index, spectral transmission, angular
186
- * acceptance, focus shift and microlens collection behavior require later
187
- * explicit models/calibration.
181
+ * In schema 0.1.0, cover glass, filters and microlenses create no optical
182
+ * effect. Thickness, refractive index, spectral transmission, angle of
183
+ * acceptance, focus shift and microlens collection need later explicit models
184
+ * or calibration.
188
185
  */
189
186
  export function parseSensorOpticalStackProfile(value) {
190
- const profile = requireRecord(value, "sensorOpticalStack");
187
+ const profile = requireRecord(value, "sensorOpticalStack", ["schemaVersion", "orderedComponents", "effectiveAntiAliasingSpatialResponse", "microlens", "profileId", "evidence"]);
191
188
  if (profile.schemaVersion !== "0.1.0") {
192
189
  throw new InvalidConfigurationError('sensorOpticalStack.schemaVersion must be "0.1.0".');
193
190
  }
@@ -226,15 +223,15 @@ export function parseSensorOpticalStackProfile(value) {
226
223
  };
227
224
  }
228
225
  /**
229
- * Resolves only the effective anti-aliasing spatial kernel.
226
+ * Resolves only the anti-aliasing (AA) spatial kernel.
230
227
  *
231
- * This is not a whole optical-stack PSF. Cover/filter transmission, refraction,
232
- * microlens behavior, field/wavelength/polarization dependence, and total
233
- * throughput remain excluded.
228
+ * This is not the PSF (point-spread function) of the whole optical stack. Cover
229
+ * glass and filter transmission, refraction, microlens behaviour, dependence on
230
+ * field position, wavelength or polarization, and total throughput are excluded.
234
231
  *
235
- * A documented absent effective anti-aliasing response resolves to an identity
236
- * component at zero offset. An unknown response (field omitted) or a
237
- * present-but-unresolved response fails closed.
232
+ * A documented absent AA response gives a single component with weight 1 at zero
233
+ * offset (no blur). An unknown response (field omitted) or one that is present
234
+ * but unspecified is rejected.
238
235
  */
239
236
  export function resolveAntiAliasingSpatialKernel(profileInput) {
240
237
  const profile = parseSensorOpticalStackProfile(profileInput);