@photivra/engine 1.5.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 (1078) hide show
  1. package/CHANGELOG.md +393 -6
  2. package/CITATION.cff +1 -1
  3. package/NODE_SUPPORT.md +64 -12
  4. package/README.md +301 -182
  5. package/SECURITY.md +37 -28
  6. package/THIRD_PARTY.md +148 -4
  7. package/dist/camera/equivalent-focal-length.d.ts +13 -14
  8. package/dist/camera/equivalent-focal-length.js +15 -13
  9. package/dist/camera/equivalent-focal-length.js.map +1 -1
  10. package/dist/camera/field-of-view.d.ts +30 -19
  11. package/dist/camera/field-of-view.js +67 -18
  12. package/dist/camera/field-of-view.js.map +1 -1
  13. package/dist/camera/lens-projection.d.ts +170 -0
  14. package/dist/camera/lens-projection.js +444 -0
  15. package/dist/camera/lens-projection.js.map +1 -0
  16. package/dist/camera/projected-object-size.d.ts +10 -11
  17. package/dist/camera/projected-object-size.js +12 -10
  18. package/dist/camera/projected-object-size.js.map +1 -1
  19. package/dist/capture/capture-export-metadata.d.ts +9 -10
  20. package/dist/capture/capture-export-metadata.js +8 -5
  21. package/dist/capture/capture-export-metadata.js.map +1 -1
  22. package/dist/capture/dng-import.d.ts +91 -0
  23. package/dist/capture/dng-import.js +343 -0
  24. package/dist/capture/dng-import.js.map +1 -0
  25. package/dist/capture/environment-raw-producer.d.ts +37 -17
  26. package/dist/capture/environment-raw-producer.js +43 -19
  27. package/dist/capture/environment-raw-producer.js.map +1 -1
  28. package/dist/capture/export-jpeg.d.ts +35 -4
  29. package/dist/capture/export-jpeg.js +133 -47
  30. package/dist/capture/export-jpeg.js.map +1 -1
  31. package/dist/capture/export-tiff.d.ts +48 -24
  32. package/dist/capture/export-tiff.js +91 -31
  33. package/dist/capture/export-tiff.js.map +1 -1
  34. package/dist/capture/focus-control.d.ts +42 -65
  35. package/dist/capture/focus-control.js +56 -75
  36. package/dist/capture/focus-control.js.map +1 -1
  37. package/dist/capture/host-yield-cadence.d.ts +25 -0
  38. package/dist/capture/host-yield-cadence.js +25 -0
  39. package/dist/capture/host-yield-cadence.js.map +1 -0
  40. package/dist/capture/linear-encoding.d.ts +14 -12
  41. package/dist/capture/linear-encoding.js +14 -13
  42. package/dist/capture/linear-encoding.js.map +1 -1
  43. package/dist/capture/lossless-jpeg.d.ts +27 -0
  44. package/dist/capture/lossless-jpeg.js +237 -0
  45. package/dist/capture/lossless-jpeg.js.map +1 -0
  46. package/dist/capture/native-environment-lean.d.ts +227 -0
  47. package/dist/capture/native-environment-lean.js +974 -0
  48. package/dist/capture/native-environment-lean.js.map +1 -0
  49. package/dist/capture/native-environment-optical-stage.d.ts +97 -0
  50. package/dist/capture/native-environment-optical-stage.js +340 -0
  51. package/dist/capture/native-environment-optical-stage.js.map +1 -0
  52. package/dist/capture/native-environment-raw.d.ts +140 -6
  53. package/dist/capture/native-environment-raw.js +435 -34
  54. package/dist/capture/native-environment-raw.js.map +1 -1
  55. package/dist/capture/native-raw-development.d.ts +116 -9
  56. package/dist/capture/native-raw-development.js +221 -62
  57. package/dist/capture/native-raw-development.js.map +1 -1
  58. package/dist/capture/native-raw-dng.d.ts +60 -0
  59. package/dist/capture/native-raw-dng.js +167 -0
  60. package/dist/capture/native-raw-dng.js.map +1 -0
  61. package/dist/capture/native-raw.d.ts +65 -12
  62. package/dist/capture/native-raw.js +81 -19
  63. package/dist/capture/native-raw.js.map +1 -1
  64. package/dist/capture/packed-sensor-raw.d.ts +160 -0
  65. package/dist/capture/packed-sensor-raw.js +221 -0
  66. package/dist/capture/packed-sensor-raw.js.map +1 -0
  67. package/dist/capture/photographic-export.d.ts +58 -35
  68. package/dist/capture/photographic-export.js +177 -70
  69. package/dist/capture/photographic-export.js.map +1 -1
  70. package/dist/capture/raw-development-kernel.d.ts +52 -0
  71. package/dist/capture/raw-development-kernel.js +88 -0
  72. package/dist/capture/raw-development-kernel.js.map +1 -0
  73. package/dist/capture/raw-frame-limits.d.ts +7 -7
  74. package/dist/capture/raw-frame-limits.js +7 -6
  75. package/dist/capture/raw-frame-limits.js.map +1 -1
  76. package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
  77. package/dist/capture/raw-frame-reconstruction.js +9 -8
  78. package/dist/capture/raw-frame-reconstruction.js.map +1 -1
  79. package/dist/capture/raw-white-level.d.ts +55 -0
  80. package/dist/capture/raw-white-level.js +165 -0
  81. package/dist/capture/raw-white-level.js.map +1 -0
  82. package/dist/capture/release-sequence.d.ts +5 -7
  83. package/dist/capture/release-sequence.js +15 -13
  84. package/dist/capture/release-sequence.js.map +1 -1
  85. package/dist/capture/sensor-raw-frame.d.ts +5 -6
  86. package/dist/capture/sensor-raw-frame.js +26 -9
  87. package/dist/capture/sensor-raw-frame.js.map +1 -1
  88. package/dist/capture/sensor-raw-producer.d.ts +21 -13
  89. package/dist/capture/sensor-raw-producer.js +86 -25
  90. package/dist/capture/sensor-raw-producer.js.map +1 -1
  91. package/dist/capture/simulated-capture.d.ts +15 -16
  92. package/dist/capture/simulated-capture.js +22 -12
  93. package/dist/capture/simulated-capture.js.map +1 -1
  94. package/dist/color/camera-color-matrix.d.ts +69 -0
  95. package/dist/color/camera-color-matrix.js +132 -0
  96. package/dist/color/camera-color-matrix.js.map +1 -0
  97. package/dist/color/capture-color.d.ts +17 -10
  98. package/dist/color/capture-color.js +50 -17
  99. package/dist/color/capture-color.js.map +1 -1
  100. package/dist/color/chromatic-adaptation.d.ts +63 -0
  101. package/dist/color/chromatic-adaptation.js +91 -0
  102. package/dist/color/chromatic-adaptation.js.map +1 -0
  103. package/dist/color/color-difference.d.ts +104 -0
  104. package/dist/color/color-difference.js +205 -0
  105. package/dist/color/color-difference.js.map +1 -0
  106. package/dist/color/color-matching-functions.d.ts +168 -0
  107. package/dist/color/color-matching-functions.js +309 -0
  108. package/dist/color/color-matching-functions.js.map +1 -0
  109. package/dist/color/colorimetry-math.d.ts +52 -0
  110. package/dist/color/colorimetry-math.js +144 -0
  111. package/dist/color/colorimetry-math.js.map +1 -0
  112. package/dist/color/gamut-mapping.d.ts +54 -0
  113. package/dist/color/gamut-mapping.js +107 -0
  114. package/dist/color/gamut-mapping.js.map +1 -0
  115. package/dist/color/illuminants.d.ts +182 -0
  116. package/dist/color/illuminants.js +434 -0
  117. package/dist/color/illuminants.js.map +1 -0
  118. package/dist/color/rgb-color-spaces.d.ts +79 -0
  119. package/dist/color/rgb-color-spaces.js +115 -0
  120. package/dist/color/rgb-color-spaces.js.map +1 -0
  121. package/dist/color/sensor-color-development.d.ts +33 -11
  122. package/dist/color/sensor-color-development.js +104 -30
  123. package/dist/color/sensor-color-development.js.map +1 -1
  124. package/dist/color/srgb-icc.d.ts +9 -2
  125. package/dist/color/srgb-icc.js +16 -5
  126. package/dist/color/srgb-icc.js.map +1 -1
  127. package/dist/color/srgb-transfer.d.ts +1 -2
  128. package/dist/color/srgb-transfer.js +1 -1
  129. package/dist/color/srgb-transfer.js.map +1 -1
  130. package/dist/color/white-balance.d.ts +68 -19
  131. package/dist/color/white-balance.js +168 -35
  132. package/dist/color/white-balance.js.map +1 -1
  133. package/dist/composition/image-formation-plan.d.ts +152 -128
  134. package/dist/composition/image-formation-plan.js +292 -138
  135. package/dist/composition/image-formation-plan.js.map +1 -1
  136. package/dist/composition/plan-consumer.d.ts +6 -7
  137. package/dist/composition/plan-consumer.js +14 -11
  138. package/dist/composition/plan-consumer.js.map +1 -1
  139. package/dist/core/calculation-result.d.ts +21 -14
  140. package/dist/core/calculation-result.js +209 -11
  141. package/dist/core/calculation-result.js.map +1 -1
  142. package/dist/core/canonical-json.d.ts +13 -8
  143. package/dist/core/canonical-json.js +34 -15
  144. package/dist/core/canonical-json.js.map +1 -1
  145. package/dist/core/configuration-error.d.ts +5 -4
  146. package/dist/core/configuration-error.js +5 -3
  147. package/dist/core/configuration-error.js.map +1 -1
  148. package/dist/core/evidence-provenance.d.ts +12 -12
  149. package/dist/core/evidence-provenance.js +10 -9
  150. package/dist/core/evidence-provenance.js.map +1 -1
  151. package/dist/core/image-formation.d.ts +11 -10
  152. package/dist/core/image-formation.js +11 -9
  153. package/dist/core/image-formation.js.map +1 -1
  154. package/dist/core/owned-data.d.ts +9 -17
  155. package/dist/core/owned-data.js +9 -16
  156. package/dist/core/owned-data.js.map +1 -1
  157. package/dist/core/portable-math.d.ts +15 -0
  158. package/dist/core/portable-math.js +56 -0
  159. package/dist/core/portable-math.js.map +1 -0
  160. package/dist/core/record-validation.d.ts +48 -9
  161. package/dist/core/record-validation.js +93 -19
  162. package/dist/core/record-validation.js.map +1 -1
  163. package/dist/core/scientific-assurance.d.ts +16 -14
  164. package/dist/core/scientific-assurance.js +22 -18
  165. package/dist/core/scientific-assurance.js.map +1 -1
  166. package/dist/core/spectral-composition.d.ts +13 -14
  167. package/dist/core/spectral-composition.js +30 -27
  168. package/dist/core/spectral-composition.js.map +1 -1
  169. package/dist/core/spectral.d.ts +5 -6
  170. package/dist/core/spectral.js +9 -7
  171. package/dist/core/spectral.js.map +1 -1
  172. package/dist/core/validation.d.ts +3 -6
  173. package/dist/core/validation.js +3 -5
  174. package/dist/core/validation.js.map +1 -1
  175. package/dist/core/version.d.ts +6 -6
  176. package/dist/core/version.js +6 -5
  177. package/dist/core/version.js.map +1 -1
  178. package/dist/equipment/exposure-capabilities.d.ts +10 -10
  179. package/dist/equipment/exposure-capabilities.js +40 -30
  180. package/dist/equipment/exposure-capabilities.js.map +1 -1
  181. package/dist/equipment/generic-tier-assets.d.ts +13 -6
  182. package/dist/equipment/generic-tier-assets.js +34 -15
  183. package/dist/equipment/generic-tier-assets.js.map +1 -1
  184. package/dist/equipment/generic-tier-presets.d.ts +5 -6
  185. package/dist/equipment/generic-tier-presets.js +15 -13
  186. package/dist/equipment/generic-tier-presets.js.map +1 -1
  187. package/dist/equipment/iso-capabilities.d.ts +21 -22
  188. package/dist/equipment/iso-capabilities.js +49 -44
  189. package/dist/equipment/iso-capabilities.js.map +1 -1
  190. package/dist/equipment/metering-capabilities.d.ts +5 -6
  191. package/dist/equipment/metering-capabilities.js +22 -19
  192. package/dist/equipment/metering-capabilities.js.map +1 -1
  193. package/dist/equipment/release-capabilities.d.ts +3 -4
  194. package/dist/equipment/release-capabilities.js +18 -14
  195. package/dist/equipment/release-capabilities.js.map +1 -1
  196. package/dist/exposure/exposure-duration-control.d.ts +19 -17
  197. package/dist/exposure/exposure-duration-control.js +27 -23
  198. package/dist/exposure/exposure-duration-control.js.map +1 -1
  199. package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
  200. package/dist/exposure/exposure-mode-resolver.js +127 -82
  201. package/dist/exposure/exposure-mode-resolver.js.map +1 -1
  202. package/dist/exposure/exposure.d.ts +17 -16
  203. package/dist/exposure/exposure.js +22 -15
  204. package/dist/exposure/exposure.js.map +1 -1
  205. package/dist/exposure/flash-ttl.d.ts +135 -0
  206. package/dist/exposure/flash-ttl.js +193 -0
  207. package/dist/exposure/flash-ttl.js.map +1 -0
  208. package/dist/exposure/flash.d.ts +144 -36
  209. package/dist/exposure/flash.js +259 -59
  210. package/dist/exposure/flash.js.map +1 -1
  211. package/dist/exposure/metering-scene-radiance.d.ts +10 -10
  212. package/dist/exposure/metering-scene-radiance.js +42 -23
  213. package/dist/exposure/metering-scene-radiance.js.map +1 -1
  214. package/dist/exposure/metering-target.d.ts +8 -8
  215. package/dist/exposure/metering-target.js +30 -20
  216. package/dist/exposure/metering-target.js.map +1 -1
  217. package/dist/exposure/metering-temporal.d.ts +16 -15
  218. package/dist/exposure/metering-temporal.js +41 -19
  219. package/dist/exposure/metering-temporal.js.map +1 -1
  220. package/dist/exposure/metering.d.ts +64 -17
  221. package/dist/exposure/metering.js +159 -30
  222. package/dist/exposure/metering.js.map +1 -1
  223. package/dist/exposure/program-line.d.ts +5 -5
  224. package/dist/exposure/program-line.js +20 -13
  225. package/dist/exposure/program-line.js.map +1 -1
  226. package/dist/facade/camera-preset.d.ts +8 -0
  227. package/dist/facade/camera-preset.js +102 -0
  228. package/dist/facade/camera-preset.js.map +1 -0
  229. package/dist/facade/chart-radiance-batch.d.ts +57 -0
  230. package/dist/facade/chart-radiance-batch.js +121 -0
  231. package/dist/facade/chart-radiance-batch.js.map +1 -0
  232. package/dist/facade/chart-scenes.d.ts +177 -0
  233. package/dist/facade/chart-scenes.js +232 -0
  234. package/dist/facade/chart-scenes.js.map +1 -0
  235. package/dist/facade/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 -8
  639. package/docs/api/capture-native-raw-dng.md +84 -0
  640. package/docs/api/capture-native-raw.md +21 -10
  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/DENSE_PUPIL_QUALIFICATION.md +0 -121
  975. package/docs/DEVELOPERS.md +0 -68
  976. package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
  977. package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
  978. package/docs/EXPORT_ACCEPTANCE.md +0 -133
  979. package/docs/GENERIC_TIER_PRESETS.md +0 -269
  980. package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
  981. package/docs/IMAGE_FORMATION.md +0 -247
  982. package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
  983. package/docs/MOTION_AND_SIGNAL.md +0 -250
  984. package/docs/NATIVE_CAPTURE_SDR.md +0 -70
  985. package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
  986. package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
  987. package/docs/NATIVE_RAW_AND_PRINT.md +0 -54
  988. package/docs/NUMERICAL_CORRECTNESS.md +0 -191
  989. package/docs/PERFORMANCE_BASELINE.md +0 -56
  990. package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
  991. package/docs/PHYSICS_FOUNDATION.md +0 -426
  992. package/docs/POC_API.md +0 -278
  993. package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
  994. package/docs/POC_PROJECTION_REUSE.md +0 -124
  995. package/docs/PRINT_195_196_REVIEW.md +0 -93
  996. package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
  997. package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
  998. package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
  999. package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
  1000. package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
  1001. package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
  1002. package/docs/PRINT_PLANNING.md +0 -75
  1003. package/docs/PRINT_REGION_STATISTICS.md +0 -38
  1004. package/docs/PROCESSED_OUTPUT.md +0 -157
  1005. package/docs/PRODUCTION_COMPOSITION.md +0 -373
  1006. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
  1007. package/docs/PROVENANCE.md +0 -115
  1008. package/docs/PSF_FOUNDATION.md +0 -165
  1009. package/docs/RAW_FRAME_ENVELOPE.md +0 -56
  1010. package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
  1011. package/docs/RELEASE_1_0.md +0 -66
  1012. package/docs/RELEASE_1_0_1.md +0 -61
  1013. package/docs/RELEASE_1_1_0.md +0 -25
  1014. package/docs/RELEASE_1_2_0.md +0 -51
  1015. package/docs/RELEASE_1_3_0.md +0 -15
  1016. package/docs/RELEASE_1_4_0.md +0 -23
  1017. package/docs/RELEASE_1_5_0.md +0 -105
  1018. package/docs/RELEASE_AUDIT.md +0 -39
  1019. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
  1020. package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
  1021. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
  1022. package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
  1023. package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
  1024. package/docs/SDR_RENDERING.md +0 -33
  1025. package/docs/SENSOR_APERTURE_RAYS.md +0 -23
  1026. package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
  1027. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
  1028. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
  1029. package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
  1030. package/docs/SENSOR_RAW_FRAME.md +0 -20
  1031. package/docs/SENSOR_RAW_PRODUCER.md +0 -77
  1032. package/docs/SEPARABLE_EMISSION_DRAFT.md +0 -103
  1033. package/docs/SIGNAL_CONFORMANCE.md +0 -23
  1034. package/docs/SIMULATED_CAPTURE.md +0 -65
  1035. package/docs/STABILIZATION.md +0 -234
  1036. package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
  1037. package/docs/TIER_ACCEPTANCE.md +0 -129
  1038. package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
  1039. package/docs/V1_COMPOSITION_MAP.md +0 -123
  1040. package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
  1041. package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
  1042. package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
  1043. package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
  1044. package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
  1045. package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
  1046. package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
  1047. package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
  1048. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
  1049. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
  1050. package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
  1051. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
  1052. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
  1053. package/docs/licenses/castleCSF-MIT.txt +0 -21
  1054. package/docs/validation/dense-pupil-2026-10-06/pilot.jsonl +0 -6
  1055. package/docs/validation/documentation-fragments.json +0 -212
  1056. package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
  1057. package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
  1058. package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
  1059. package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
  1060. package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
  1061. package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
  1062. package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
  1063. package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
  1064. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
  1065. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
  1066. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
  1067. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
  1068. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
  1069. package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
  1070. package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
  1071. package/docs/validation/print-196-candidate-capabilities.json +0 -28
  1072. package/docs/validation/print-196-candidate-evidence.json +0 -356
  1073. package/docs/validation/print-196-engine-acceptance.json +0 -81
  1074. package/docs/validation/print-detail-capabilities.json +0 -103
  1075. package/docs/validation/print-detail-jpeg-evidence.json +0 -116
  1076. package/docs/validation/print-detail-sdr-evidence.json +0 -81
  1077. package/docs/validation/release-audit-inventory.json +0 -1306
  1078. package/docs/validation/tier-acceptance-report-v1.json +0 -2538
@@ -1 +1 @@
1
- {"version":3,"file":"optical-stack.js","sourceRoot":"","sources":["../../src/sensor/optical-stack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"optical-stack.js","sourceRoot":"","sources":["../../src/sensor/optical-stack.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Sensor optical stack: the layers in front of the photodiodes (such as cover glass, infrared- and\n * ultraviolet-cut filters, a birefringent low-pass filter and microlenses), described as metadata,\n * plus an optional declared anti-aliasing (AA) blur kernel.\n *\n * Whether a component is physically present is recorded separately from its net AA effect. That lets\n * the schema describe designs that cancel the AA effect without claiming the hardware is missing.\n * Component presence alone creates no optical effect. Thickness, refractive index, spectral\n * transmission, angle of acceptance, focus shift and microlens collection need separate models.\n * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support\n * limits.\n */\n\nimport { rejectUnknownFields } from \"../core/record-validation.js\";\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\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport type SensorOpticalStackComponentRole =\n | \"cover-glass\"\n | \"infrared-cut\"\n | \"ultraviolet-cut\"\n | \"anti-reflection\"\n | \"birefringent-low-pass\"\n | \"wave-plate\"\n | \"other-optical-filter\";\n\nexport interface SensorOpticalStackComponent {\n componentId: string;\n /**\n * A component can have several roles, because one physical element can do\n * more than one optical or filtering job.\n */\n roles: readonly SensorOpticalStackComponentRole[];\n evidence: readonly EvidenceProvenance[];\n}\n\nexport interface SensorMicrolensDeclaration {\n presence: \"present\" | \"absent\";\n evidence: readonly EvidenceProvenance[];\n /**\n * Being present does not establish any model of angle, spectrum, fill factor\n * or collection efficiency.\n */\n opticalEffectModel: \"unresolved\";\n}\n\nexport interface AntiAliasingPointSplitComponent {\n /**\n * Physical offset on the native sensor from where the light would otherwise\n * land. +X right, +Y down. Units: micrometres.\n */\n offsetMicrometers: {\n x: number;\n y: number;\n };\n /**\n * Normalized weight (dimensionless). A point-splitting kernel only describes\n * where the light goes; the stack's total throughput is not part of it.\n */\n normalizedWeight: number;\n}\n\nexport type SensorEffectiveAntiAliasingSpatialResponse =\n | {\n /**\n * Documented absence (or cancellation) of deliberate AA splitting. It does\n * not mean the rest of the sensor stack has no optical effect.\n */\n kind: \"absent\";\n evidence: readonly EvidenceProvenance[];\n }\n | {\n /**\n * An AA effect is known to exist, but its spatial response is not\n * specified well enough to use.\n */\n kind: \"present-unresolved\";\n evidence: readonly EvidenceProvenance[];\n }\n | {\n /**\n * Generic approximation: each point is split into weighted copies at\n * offsets in native sensor physical coordinates.\n */\n kind: \"normalized-point-splitting-kernel\";\n evidence: readonly EvidenceProvenance[];\n coordinateSystem: \"native-sensor-physical\";\n scope:\n \"field-wavelength-polarization-invariant-approximation\";\n components: readonly AntiAliasingPointSplitComponent[];\n };\n\nexport interface SensorOpticalStackProfile {\n schemaVersion: \"0.1.0\";\n profileId: string;\n evidence: readonly EvidenceProvenance[];\n /**\n * In order from the side light enters towards the sensor.\n *\n * These components are descriptive metadata only. Their presence does not\n * create transmission, focus-shift, aberration or spectral effects.\n */\n orderedComponents?: readonly SensorOpticalStackComponent[];\n /**\n * Omitted means \"unknown, not stated\".\n *\n * This is separate from which components are present, so a stack can\n * contain low-pass hardware while its net AA effect is absent or cancelled.\n */\n effectiveAntiAliasingSpatialResponse?: SensorEffectiveAntiAliasingSpatialResponse;\n /**\n * Omitted means \"unknown, not stated\".\n */\n microlens?: SensorMicrolensDeclaration;\n}\n\nexport interface ResolvedAntiAliasingSpatialKernel {\n profileId: string;\n effectiveResponse:\n | \"absent\"\n | \"normalized-point-splitting-kernel\";\n coordinateSystem: \"native-sensor-physical\";\n components: readonly AntiAliasingPointSplitComponent[];\n normalizedWeightSum: number;\n throughputIncluded: false;\n spectralTransmissionIncluded: false;\n fieldDependenceIncluded: false;\n wavelengthDependenceIncluded: false;\n polarizationDependenceIncluded: false;\n microlensResponseIncluded: false;\n coverFilterStackEffectsIncluded: false;\n wholeSensorOpticalStackResponse: false;\n provenance: {\n profile: readonly EvidenceProvenance[];\n antiAliasingResponse: readonly EvidenceProvenance[];\n };\n}\n\nconst COMPONENT_ROLES = new Set<SensorOpticalStackComponentRole>([\n \"cover-glass\",\n \"infrared-cut\",\n \"ultraviolet-cut\",\n \"anti-reflection\",\n \"birefringent-low-pass\",\n \"wave-plate\",\n \"other-optical-filter\"\n]);\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty string.\"\n );\n }\n return value;\n}\n\nfunction parseComponentRoles(\n value: unknown,\n path: string\n): readonly SensorOpticalStackComponentRole[] {\n if (!Array.isArray(value) || value.length === 0) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty array.\"\n );\n }\n\n const roles = value.map((entry, index) => {\n if (\n typeof entry !== \"string\" ||\n !COMPONENT_ROLES.has(\n entry as SensorOpticalStackComponentRole\n )\n ) {\n throw new InvalidConfigurationError(\n path + \"[\" + index + \"] is invalid.\"\n );\n }\n return entry as SensorOpticalStackComponentRole;\n });\n\n if (new Set(roles).size !== roles.length) {\n throw new InvalidConfigurationError(\n path + \" must not contain duplicate roles.\"\n );\n }\n\n return roles;\n}\n\nfunction parseOrderedComponents(\n value: unknown,\n path: string\n): readonly SensorOpticalStackComponent[] {\n if (!Array.isArray(value) || value.length === 0) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty array.\"\n );\n }\n\n const components = value.map((entry, index) => {\n const record = requireRecord(\n entry,\n path + \"[\" + index + \"]\", [\"componentId\", \"roles\", \"evidence\"]\n );\n\n return {\n componentId: requireNonEmptyString(\n record.componentId,\n path + \"[\" + index + \"].componentId\"\n ),\n roles: parseComponentRoles(\n record.roles,\n path + \"[\" + index + \"].roles\"\n ),\n evidence: parseEvidenceList(\n record.evidence,\n path + \"[\" + index + \"].evidence\"\n )\n };\n });\n\n const ids = components.map(\n (component) => component.componentId\n );\n if (new Set(ids).size !== ids.length) {\n throw new InvalidConfigurationError(\n path + \" must not contain duplicate componentId values.\"\n );\n }\n\n return components;\n}\n\nfunction requireFiniteNumber(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a finite number.\"\n );\n }\n return value;\n}\n\nfunction parsePointSplitComponents(\n value: unknown,\n path: string\n): readonly AntiAliasingPointSplitComponent[] {\n if (!Array.isArray(value) || value.length === 0) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty array.\"\n );\n }\n\n const components = value.map((entry, index) => {\n const record = requireRecord(\n entry,\n path + \"[\" + index + \"]\", [\"offsetMicrometers\", \"normalizedWeight\"]\n );\n const offset = requireRecord(\n record.offsetMicrometers,\n path + \"[\" + index + \"].offsetMicrometers\", [\"x\", \"y\"]\n );\n const normalizedWeight = requireFiniteNumber(\n record.normalizedWeight,\n path + \"[\" + index + \"].normalizedWeight\"\n );\n\n if (normalizedWeight <= 0) {\n throw new InvalidConfigurationError(\n path +\n \"[\" +\n index +\n \"].normalizedWeight must be greater than zero.\"\n );\n }\n\n return {\n offsetMicrometers: {\n x: requireFiniteNumber(\n offset.x,\n path +\n \"[\" +\n index +\n \"].offsetMicrometers.x\"\n ),\n y: requireFiniteNumber(\n offset.y,\n path +\n \"[\" +\n index +\n \"].offsetMicrometers.y\"\n )\n },\n normalizedWeight\n };\n });\n\n const weightSum = components.reduce(\n (sum, component) =>\n sum + component.normalizedWeight,\n 0\n );\n\n if (\n !Number.isFinite(weightSum) ||\n Math.abs(weightSum - 1) > 1e-12\n ) {\n throw new InvalidConfigurationError(\n path +\n \" normalizedWeight values must sum to 1 within 1e-12.\"\n );\n }\n\n return components;\n}\n\nfunction parseAntiAliasingResponse(\n value: unknown,\n path: string\n): SensorEffectiveAntiAliasingSpatialResponse {\n const record = requireRecord(value, path, [\"kind\", \"coordinateSystem\", \"scope\", \"components\", \"evidence\"]);\n\n if (\n record.kind === \"absent\" ||\n record.kind === \"present-unresolved\"\n ) {\n if (\n record.coordinateSystem !== undefined ||\n record.scope !== undefined ||\n record.components !== undefined\n ) {\n throw new InvalidConfigurationError(\n path +\n \" absent/present-unresolved responses must omit kernel fields.\"\n );\n }\n return {\n kind: record.kind,\n evidence: parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n )\n };\n }\n\n if (\n record.kind ===\n \"normalized-point-splitting-kernel\"\n ) {\n if (\n record.coordinateSystem !==\n \"native-sensor-physical\"\n ) {\n throw new InvalidConfigurationError(\n path +\n '.coordinateSystem must be \"native-sensor-physical\".'\n );\n }\n if (\n record.scope !==\n \"field-wavelength-polarization-invariant-approximation\"\n ) {\n throw new InvalidConfigurationError(\n path + \".scope is invalid.\"\n );\n }\n\n return {\n kind:\n \"normalized-point-splitting-kernel\",\n evidence: parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n ),\n coordinateSystem:\n \"native-sensor-physical\",\n scope:\n \"field-wavelength-polarization-invariant-approximation\",\n components: parsePointSplitComponents(\n record.components,\n path + \".components\"\n )\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseMicrolens(\n value: unknown,\n path: string\n): SensorMicrolensDeclaration {\n const record = requireRecord(value, path, [\"presence\", \"opticalEffectModel\", \"evidence\"]);\n\n if (\n record.presence !== \"present\" &&\n record.presence !== \"absent\"\n ) {\n throw new InvalidConfigurationError(\n path + \".presence is invalid.\"\n );\n }\n\n if (record.opticalEffectModel !== \"unresolved\") {\n throw new InvalidConfigurationError(\n path +\n '.opticalEffectModel must be \"unresolved\" in schema 0.1.0.'\n );\n }\n\n return {\n presence: record.presence,\n evidence: parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n ),\n opticalEffectModel: \"unresolved\"\n };\n}\n\n/**\n * Parses descriptive sensor optical-stack metadata, plus an optional explicitly\n * declared anti-aliasing (AA) spatial response.\n *\n * Leave out unknown facts rather than guessing them. Physical presence of a\n * component is separate from the net AA response, so the schema can describe\n * designs that cancel the AA effect without claiming the hardware is missing.\n *\n * In schema 0.1.0, cover glass, filters and microlenses create no optical\n * effect. Thickness, refractive index, spectral transmission, angle of\n * acceptance, focus shift and microlens collection need later explicit models\n * or calibration.\n */\nexport function parseSensorOpticalStackProfile(\n value: unknown\n): SensorOpticalStackProfile {\n const profile = requireRecord(\n value,\n \"sensorOpticalStack\", [\"schemaVersion\", \"orderedComponents\", \"effectiveAntiAliasingSpatialResponse\", \"microlens\", \"profileId\", \"evidence\"]\n );\n\n if (profile.schemaVersion !== \"0.1.0\") {\n throw new InvalidConfigurationError(\n 'sensorOpticalStack.schemaVersion must be \"0.1.0\".'\n );\n }\n\n const orderedComponents =\n profile.orderedComponents === undefined\n ? undefined\n : parseOrderedComponents(\n profile.orderedComponents,\n \"sensorOpticalStack.orderedComponents\"\n );\n\n const effectiveAntiAliasingSpatialResponse =\n profile.effectiveAntiAliasingSpatialResponse ===\n undefined\n ? undefined\n : parseAntiAliasingResponse(\n profile.effectiveAntiAliasingSpatialResponse,\n \"sensorOpticalStack.effectiveAntiAliasingSpatialResponse\"\n );\n\n const microlens =\n profile.microlens === undefined\n ? undefined\n : parseMicrolens(\n profile.microlens,\n \"sensorOpticalStack.microlens\"\n );\n\n if (\n orderedComponents === undefined &&\n effectiveAntiAliasingSpatialResponse ===\n undefined &&\n microlens === undefined\n ) {\n throw new InvalidConfigurationError(\n \"sensorOpticalStack must assert at least one optical-stack fact.\"\n );\n }\n\n return {\n schemaVersion: \"0.1.0\",\n profileId: requireNonEmptyString(\n profile.profileId,\n \"sensorOpticalStack.profileId\"\n ),\n evidence: parseEvidenceList(\n profile.evidence,\n \"sensorOpticalStack.evidence\"\n ),\n ...(orderedComponents === undefined\n ? {}\n : { orderedComponents }),\n ...(effectiveAntiAliasingSpatialResponse ===\n undefined\n ? {}\n : {\n effectiveAntiAliasingSpatialResponse\n }),\n ...(microlens === undefined\n ? {}\n : { microlens })\n };\n}\n\n/**\n * Resolves only the anti-aliasing (AA) spatial kernel.\n *\n * This is not the PSF (point-spread function) of the whole optical stack. Cover\n * glass and filter transmission, refraction, microlens behaviour, dependence on\n * field position, wavelength or polarization, and total throughput are excluded.\n *\n * A documented absent AA response gives a single component with weight 1 at zero\n * offset (no blur). An unknown response (field omitted) or one that is present\n * but unspecified is rejected.\n */\nexport function resolveAntiAliasingSpatialKernel(\n profileInput: SensorOpticalStackProfile\n): ResolvedAntiAliasingSpatialKernel {\n const profile =\n parseSensorOpticalStackProfile(\n profileInput\n );\n const response =\n profile.effectiveAntiAliasingSpatialResponse;\n\n if (response === undefined) {\n throw new InvalidScientificInputError(\n \"Effective anti-aliasing spatial response is unknown/unasserted for this optical-stack profile.\"\n );\n }\n\n if (response.kind === \"present-unresolved\") {\n throw new InvalidScientificInputError(\n \"Effective anti-aliasing spatial response is present but unresolved; a spatial kernel cannot be produced.\"\n );\n }\n\n if (response.kind === \"absent\") {\n return {\n profileId: profile.profileId,\n effectiveResponse: \"absent\",\n coordinateSystem:\n \"native-sensor-physical\",\n components: [\n {\n offsetMicrometers: {\n x: 0,\n y: 0\n },\n normalizedWeight: 1\n }\n ],\n normalizedWeightSum: 1,\n throughputIncluded: false,\n spectralTransmissionIncluded: false,\n fieldDependenceIncluded: false,\n wavelengthDependenceIncluded: false,\n polarizationDependenceIncluded: false,\n microlensResponseIncluded: false,\n coverFilterStackEffectsIncluded: false,\n wholeSensorOpticalStackResponse: false,\n provenance: {\n profile: profile.evidence,\n antiAliasingResponse:\n response.evidence\n }\n };\n }\n\n const normalizedWeightSum =\n response.components.reduce(\n (sum, component) =>\n sum + component.normalizedWeight,\n 0\n );\n\n return {\n profileId: profile.profileId,\n effectiveResponse:\n \"normalized-point-splitting-kernel\",\n coordinateSystem:\n \"native-sensor-physical\",\n components: response.components.map(\n (component) => ({\n offsetMicrometers: {\n ...component.offsetMicrometers\n },\n normalizedWeight:\n component.normalizedWeight\n })\n ),\n normalizedWeightSum,\n throughputIncluded: false,\n spectralTransmissionIncluded: false,\n fieldDependenceIncluded: false,\n wavelengthDependenceIncluded: false,\n polarizationDependenceIncluded: false,\n microlensResponseIncluded: false,\n coverFilterStackEffectsIncluded: false,\n wholeSensorOpticalStackResponse: false,\n provenance: {\n profile: profile.evidence,\n antiAliasingResponse:\n response.evidence\n }\n };\n}\n"]}
@@ -1,15 +1,11 @@
1
1
  /**
2
- * Module boundary and integration notes.
3
- * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
4
- * missing required fields and incompatible scientific data fail at this boundary. Photon energy uses
5
- * exact SI h and c with vacuum wavelength. Air wavelength requires an exact-wavelength sourced phase
6
- * index and atmosphere compatibility; lambdaVacuum = n*lambdaAir. Retained refractive-index
7
- * uncertainty is not an automatically propagated photon-energy uncertainty.
8
- * Convert a valid vacuum wavelength, or explicitly atmosphere-bound air wavelength, into optical
9
- * frequency and photon energy using exact SI constants. Photon energy uses exact SI h and c with
10
- * vacuum wavelength. Air wavelength requires an exact-wavelength sourced phase index and atmosphere
11
- * compatibility; lambdaVacuum = n*lambdaAir. Retained refractive-index uncertainty is not an
12
- * automatically propagated photon-energy uncertainty.
2
+ * Photon energy and optical frequency from wavelength, using the exact SI values of the Planck
3
+ * constant h and the speed of light c (E = h·c / λ_vacuum).
4
+ *
5
+ * The formula needs the vacuum wavelength. An air wavelength is converted with
6
+ * λ_vacuum = n·λ_air, which requires a sourced phase refractive index n of air at that exact
7
+ * wavelength, for matching atmospheric conditions. The refractive index's uncertainty is kept, but
8
+ * it is not automatically carried through to the photon energy.
13
9
  * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
14
10
  * limits.
15
11
  */
@@ -69,29 +65,27 @@ export interface PhotonEnergyFromWavelength {
69
65
  inputUncertaintyPropagated: false;
70
66
  }
71
67
  /**
72
- * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
73
- * missing required fields and incompatible scientific data fail at this boundary.
68
+ * Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,
69
+ * missing required fields and inconsistent scientific data are rejected.
74
70
  *
75
- * Photon energy uses exact SI h and c with vacuum wavelength. Air wavelength requires an
76
- * exact-wavelength sourced phase index and atmosphere compatibility; lambdaVacuum = n*lambdaAir.
77
- * Retained refractive-index uncertainty is not an automatically propagated photon-energy uncertainty.
78
- * @param value - unknown. Treated as untrusted data; static typing alone is not validation.
79
- * @returns SourcedAirPhaseRefractiveIndex. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
71
+ * The index is the phase refractive index n of air at one exact wavelength, from a cited source, for
72
+ * stated atmospheric conditions. It converts air to vacuum wavelength: λ_vacuum = n·λ_air.
73
+ * @param value - Untrusted data. TypeScript types alone are not validation.
74
+ * @returns The result. Success does not imply calibration.
80
75
  *
81
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
76
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
82
77
  */
83
78
  export declare function parseSourcedAirPhaseRefractiveIndex(value: unknown): SourcedAirPhaseRefractiveIndex;
84
79
  /**
85
- * Convert a valid vacuum wavelength, or explicitly atmosphere-bound air wavelength, into optical
86
- * frequency and photon energy using exact SI constants.
80
+ * Converts a vacuum wavelength, or an air wavelength with its stated atmosphere, into optical
81
+ * frequency and photon energy using the exact SI constants h and c.
87
82
  *
88
- * Photon energy uses exact SI h and c with vacuum wavelength. Air wavelength requires an
89
- * exact-wavelength sourced phase index and atmosphere compatibility; lambdaVacuum = n*lambdaAir.
90
- * Retained refractive-index uncertainty is not an automatically propagated photon-energy uncertainty.
91
- * @param input - CalculatePhotonEnergyFromWavelengthInput. See the linked contract for coordinate, unit and profile binding semantics.
92
- * @returns CalculationResult<PhotonEnergyFromWavelength>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
83
+ * An air wavelength needs a sourced phase refractive index for that exact wavelength and matching
84
+ * atmosphere; λ_vacuum = n·λ_air. The index's uncertainty is kept but not automatically carried
85
+ * through to the photon energy.
86
+ * @param input - The input; see `CalculatePhotonEnergyFromWavelengthInput` for its fields, units and coordinates.
87
+ * @returns The result. Success does not imply calibration.
93
88
  *
94
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
89
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
95
90
  */
96
91
  export declare function calculatePhotonEnergyFromWavelength(input: CalculatePhotonEnergyFromWavelengthInput): CalculationResult<PhotonEnergyFromWavelength>;
97
- //# sourceMappingURL=photon-energy.d.ts.map
@@ -1,16 +1,12 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  /**
3
- * Module boundary and integration notes.
4
- * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
5
- * missing required fields and incompatible scientific data fail at this boundary. Photon energy uses
6
- * exact SI h and c with vacuum wavelength. Air wavelength requires an exact-wavelength sourced phase
7
- * index and atmosphere compatibility; lambdaVacuum = n*lambdaAir. Retained refractive-index
8
- * uncertainty is not an automatically propagated photon-energy uncertainty.
9
- * Convert a valid vacuum wavelength, or explicitly atmosphere-bound air wavelength, into optical
10
- * frequency and photon energy using exact SI constants. Photon energy uses exact SI h and c with
11
- * vacuum wavelength. Air wavelength requires an exact-wavelength sourced phase index and atmosphere
12
- * compatibility; lambdaVacuum = n*lambdaAir. Retained refractive-index uncertainty is not an
13
- * automatically propagated photon-energy uncertainty.
3
+ * Photon energy and optical frequency from wavelength, using the exact SI values of the Planck
4
+ * constant h and the speed of light c (E = h·c / λ_vacuum).
5
+ *
6
+ * The formula needs the vacuum wavelength. An air wavelength is converted with
7
+ * λ_vacuum = n·λ_air, which requires a sourced phase refractive index n of air at that exact
8
+ * wavelength, for matching atmospheric conditions. The refractive index's uncertainty is kept, but
9
+ * it is not automatically carried through to the photon energy.
14
10
  * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
15
11
  * limits.
16
12
  */
@@ -18,15 +14,18 @@ import { calculatedResult } from "../core/calculation-result.js";
18
14
  import { InvalidConfigurationError } from "../core/configuration-error.js";
19
15
  import { parseEvidenceList } from "../core/evidence-provenance.js";
20
16
  import { InvalidScientificInputError } from "../core/validation.js";
17
+ import { requireInputKeys, rejectUnknownFields, rejectUnknownVariantFields, UNCERTAINTY_VARIANT_FIELDS } from "../core/record-validation.js";
21
18
  const PLANCK_CONSTANT_JOULE_SECONDS = 6.62607015e-34;
22
19
  const SPEED_OF_LIGHT_METERS_PER_SECOND = 299_792_458;
23
20
  const NANOMETERS_TO_METERS = 1e-9;
24
- function requireRecord(value, path) {
21
+ function requireRecord(value, path, allowedKeys) {
25
22
  if (typeof value !== "object" ||
26
23
  value === null ||
27
24
  Array.isArray(value)) {
28
25
  throw new InvalidConfigurationError(path + " must be an object.");
29
26
  }
27
+ if (allowedKeys !== null)
28
+ rejectUnknownFields(value, allowedKeys, path);
30
29
  return value;
31
30
  }
32
31
  function requireFinite(value, path) {
@@ -53,7 +52,8 @@ function requireFraction(value, path) {
53
52
  return parsed;
54
53
  }
55
54
  function parseUncertainty(value, path) {
56
- const record = requireRecord(value, path);
55
+ const record = requireRecord(value, path, null);
56
+ rejectUnknownVariantFields(record, "kind", UNCERTAINTY_VARIANT_FIELDS, path);
57
57
  if (record.kind === "relative") {
58
58
  const fraction = requireFinite(record.fraction, path + ".fraction");
59
59
  if (fraction < 0) {
@@ -87,7 +87,7 @@ function parseUncertainty(value, path) {
87
87
  throw new InvalidConfigurationError(path + ".kind is invalid.");
88
88
  }
89
89
  function parseReferenceConditions(value, path) {
90
- const record = requireRecord(value, path);
90
+ const record = requireRecord(value, path, ["temperatureC", "pressurePascal", "relativeHumidityFraction", "carbonDioxideMoleFraction"]);
91
91
  const temperatureC = requireFinite(record.temperatureC, path + ".temperatureC");
92
92
  const pressurePascal = requirePositiveFinite(record.pressurePascal, path + ".pressurePascal");
93
93
  const relativeHumidityFraction = record.relativeHumidityFraction ===
@@ -118,7 +118,8 @@ function parseReferenceConditions(value, path) {
118
118
  };
119
119
  }
120
120
  function parseConditionPolicy(value) {
121
- const record = requireRecord(value, "airConditionPolicy");
121
+ const record = requireRecord(value, "airConditionPolicy", null);
122
+ rejectUnknownVariantFields(record, "kind", { "exact-match-required": ["kind"], "assume-compatible": ["kind", "limitation", "evidence"] }, "airConditionPolicy");
122
123
  if (record.kind === "exact-match-required") {
123
124
  return {
124
125
  kind: "exact-match-required"
@@ -161,19 +162,18 @@ function conditionsMatch(reference, operating) {
161
162
  return true;
162
163
  }
163
164
  /**
164
- * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
165
- * missing required fields and incompatible scientific data fail at this boundary.
165
+ * Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,
166
+ * missing required fields and inconsistent scientific data are rejected.
166
167
  *
167
- * Photon energy uses exact SI h and c with vacuum wavelength. Air wavelength requires an
168
- * exact-wavelength sourced phase index and atmosphere compatibility; lambdaVacuum = n*lambdaAir.
169
- * Retained refractive-index uncertainty is not an automatically propagated photon-energy uncertainty.
170
- * @param value - unknown. Treated as untrusted data; static typing alone is not validation.
171
- * @returns SourcedAirPhaseRefractiveIndex. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
168
+ * The index is the phase refractive index n of air at one exact wavelength, from a cited source, for
169
+ * stated atmospheric conditions. It converts air to vacuum wavelength: λ_vacuum = n·λ_air.
170
+ * @param value - Untrusted data. TypeScript types alone are not validation.
171
+ * @returns The result. Success does not imply calibration.
172
172
  *
173
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
173
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
174
174
  */
175
175
  export function parseSourcedAirPhaseRefractiveIndex(value) {
176
- const record = requireRecord(value, "airPhaseRefractiveIndex");
176
+ const record = requireRecord(value, "airPhaseRefractiveIndex", ["wavelengthBasis", "definition", "scientificStatus", "uncertainty", "referenceConditions", "wavelengthNanometers", "phaseRefractiveIndex", "evidence"]);
177
177
  if (record.wavelengthBasis !== "air") {
178
178
  throw new InvalidConfigurationError('airPhaseRefractiveIndex.wavelengthBasis must be "air".');
179
179
  }
@@ -218,26 +218,34 @@ export function parseSourcedAirPhaseRefractiveIndex(value) {
218
218
  };
219
219
  }
220
220
  /**
221
- * Convert a valid vacuum wavelength, or explicitly atmosphere-bound air wavelength, into optical
222
- * frequency and photon energy using exact SI constants.
221
+ * Converts a vacuum wavelength, or an air wavelength with its stated atmosphere, into optical
222
+ * frequency and photon energy using the exact SI constants h and c.
223
223
  *
224
- * Photon energy uses exact SI h and c with vacuum wavelength. Air wavelength requires an
225
- * exact-wavelength sourced phase index and atmosphere compatibility; lambdaVacuum = n*lambdaAir.
226
- * Retained refractive-index uncertainty is not an automatically propagated photon-energy uncertainty.
227
- * @param input - CalculatePhotonEnergyFromWavelengthInput. See the linked contract for coordinate, unit and profile binding semantics.
228
- * @returns CalculationResult<PhotonEnergyFromWavelength>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
224
+ * An air wavelength needs a sourced phase refractive index for that exact wavelength and matching
225
+ * atmosphere; λ_vacuum = n·λ_air. The index's uncertainty is kept but not automatically carried
226
+ * through to the photon energy.
227
+ * @param input - The input; see `CalculatePhotonEnergyFromWavelengthInput` for its fields, units and coordinates.
228
+ * @returns The result. Success does not imply calibration.
229
229
  *
230
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
230
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
231
231
  */
232
232
  export function calculatePhotonEnergyFromWavelength(input) {
233
- const wavelengthNanometers = requirePositiveFinite(input.wavelengthNanometers, "wavelengthNanometers");
233
+ requireInputKeys(input, "calculatePhotonEnergyFromWavelength", ["wavelengthNanometers", "wavelengthBasis", "airPhaseRefractiveIndex", "airOperatingConditions", "airConditionPolicy"]);
234
+ const wavelengthNanometers = input.wavelengthNanometers;
235
+ // A calculation input, not a configuration record, so a bad value is a scientific-input error.
236
+ if (typeof wavelengthNanometers !== "number" || !Number.isFinite(wavelengthNanometers)) {
237
+ throw new InvalidScientificInputError("wavelengthNanometers must be finite.");
238
+ }
239
+ if (wavelengthNanometers <= 0) {
240
+ throw new InvalidScientificInputError("wavelengthNanometers must be greater than zero.");
241
+ }
234
242
  if (input.wavelengthBasis ===
235
243
  "unspecified") {
236
244
  throw new InvalidScientificInputError("wavelengthBasis must be resolved to air or vacuum before photon-energy calculation.");
237
245
  }
238
246
  if (input.wavelengthBasis !== "air" &&
239
247
  input.wavelengthBasis !== "vacuum") {
240
- throw new InvalidScientificInputError("wavelengthBasis is invalid.");
248
+ throw new InvalidConfigurationError("wavelengthBasis is invalid.");
241
249
  }
242
250
  let vacuumWavelengthNanometers;
243
251
  let wavelengthConversion;
@@ -1 +1 @@
1
- {"version":3,"file":"photon-energy.js","sourceRoot":"","sources":["../../src/sensor/photon-energy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"photon-energy.js","sourceRoot":"","sources":["../../src/sensor/photon-energy.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Photon energy and optical frequency from wavelength, using the exact SI values of the Planck\n * constant h and the speed of light c (E = h·c / λ_vacuum).\n *\n * The formula needs the vacuum wavelength. An air wavelength is converted with\n * λ_vacuum = n·λ_air, which requires a sourced phase refractive index n of air at that exact\n * wavelength, for matching atmospheric conditions. The refractive index's uncertainty is kept, but\n * it is not automatically carried through to the photon energy.\n * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support\n * limits.\n */\n\nimport {\n calculatedResult,\n type CalculationResult\n} from \"../core/calculation-result.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport {\n parseEvidenceList,\n type EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport { InvalidScientificInputError } from \"../core/validation.js\";\nimport type {\n SensorSpectralResponseScientificStatus,\n SensorSpectralResponseUncertainty,\n SpectralWavelengthBasis\n} from \"./spectral-response.js\";\nimport { requireInputKeys, rejectUnknownFields, rejectUnknownVariantFields, UNCERTAINTY_VARIANT_FIELDS } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nconst PLANCK_CONSTANT_JOULE_SECONDS =\n 6.62607015e-34;\nconst SPEED_OF_LIGHT_METERS_PER_SECOND =\n 299_792_458;\nconst NANOMETERS_TO_METERS = 1e-9;\n\nexport interface AirRefractiveIndexReferenceConditions {\n temperatureC: number;\n pressurePascal: number;\n relativeHumidityFraction?: number;\n carbonDioxideMoleFraction?: number;\n}\n\nexport interface SourcedAirPhaseRefractiveIndex {\n wavelengthNanometers: number;\n wavelengthBasis: \"air\";\n definition:\n \"vacuum-wavelength-divided-by-air-wavelength\";\n phaseRefractiveIndex: number;\n scientificStatus:\n SensorSpectralResponseScientificStatus;\n uncertainty:\n SensorSpectralResponseUncertainty;\n evidence: readonly EvidenceProvenance[];\n referenceConditions?:\n AirRefractiveIndexReferenceConditions;\n}\n\nexport type AirRefractiveIndexConditionPolicy =\n | {\n kind: \"exact-match-required\";\n }\n | {\n kind: \"assume-compatible\";\n limitation: string;\n evidence: readonly EvidenceProvenance[];\n };\n\nexport interface CalculatePhotonEnergyFromWavelengthInput {\n wavelengthNanometers: number;\n wavelengthBasis:\n SpectralWavelengthBasis;\n airPhaseRefractiveIndex?:\n SourcedAirPhaseRefractiveIndex;\n airOperatingConditions?:\n AirRefractiveIndexReferenceConditions;\n airConditionPolicy?:\n AirRefractiveIndexConditionPolicy;\n}\n\nexport interface PhotonEnergyFromWavelength {\n inputWavelengthNanometers: number;\n inputWavelengthBasis:\n Exclude<SpectralWavelengthBasis, \"unspecified\">;\n vacuumWavelengthNanometers: number;\n frequencyHertz: number;\n photonEnergyJoules: number;\n wavelengthConversion:\n | \"vacuum-identity\"\n | \"air-to-vacuum-via-phase-refractive-index\";\n exactSiConstants: {\n planckConstantJouleSeconds:\n 6.62607015e-34;\n speedOfLightMetersPerSecond:\n 299792458;\n };\n phaseRefractiveIndexUsed?: number;\n airRefractiveIndexScientificStatus?:\n SensorSpectralResponseScientificStatus;\n airRefractiveIndexUncertainty?:\n SensorSpectralResponseUncertainty;\n airRefractiveIndexReferenceConditions?:\n AirRefractiveIndexReferenceConditions;\n airRefractiveIndexEvidence?:\n readonly EvidenceProvenance[];\n airOperatingConditions?:\n AirRefractiveIndexReferenceConditions;\n airConditionPolicy?:\n AirRefractiveIndexConditionPolicy;\n airConditionCompatibility?:\n | \"exact-match\"\n | \"assumed-compatible\";\n airConditionAssumptionEvidence?:\n readonly EvidenceProvenance[];\n inputUncertaintyPropagated: 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 requireFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be finite.\"\n );\n }\n return value;\n}\n\nfunction requirePositiveFinite(\n value: unknown,\n path: string\n): number {\n const parsed =\n requireFinite(value, path);\n if (parsed <= 0) {\n throw new InvalidConfigurationError(\n path +\n \" must be greater than zero.\"\n );\n }\n return parsed;\n}\n\nfunction requireFraction(\n value: unknown,\n path: string\n): number {\n const parsed =\n requireFinite(value, path);\n if (parsed < 0 || parsed > 1) {\n throw new InvalidConfigurationError(\n path +\n \" must be a fraction from 0 through 1.\"\n );\n }\n return parsed;\n}\n\nfunction parseUncertainty(\n value: unknown,\n path: string\n): SensorSpectralResponseUncertainty {\n const record =\n requireRecord(value, path, null);\n rejectUnknownVariantFields(record, \"kind\", UNCERTAINTY_VARIANT_FIELDS, path);\n\n if (record.kind === \"relative\") {\n const fraction =\n requireFinite(\n record.fraction,\n path + \".fraction\"\n );\n if (fraction < 0) {\n throw new InvalidConfigurationError(\n path +\n \".fraction must be greater than or equal to zero.\"\n );\n }\n if (\n typeof record.basis !== \"string\" ||\n record.basis.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \".basis must be a non-empty string.\"\n );\n }\n return {\n kind: \"relative\",\n fraction,\n basis: record.basis\n };\n }\n\n if (\n record.kind === \"not-quantified\"\n ) {\n if (\n typeof record.limitation !==\n \"string\" ||\n record.limitation.trim().length ===\n 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \".limitation must be a non-empty string.\"\n );\n }\n return {\n kind: \"not-quantified\",\n limitation:\n record.limitation\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseReferenceConditions(\n value: unknown,\n path: string\n): AirRefractiveIndexReferenceConditions {\n const record =\n requireRecord(value, path, [\"temperatureC\", \"pressurePascal\", \"relativeHumidityFraction\", \"carbonDioxideMoleFraction\"]);\n\n const temperatureC =\n requireFinite(\n record.temperatureC,\n path + \".temperatureC\"\n );\n const pressurePascal =\n requirePositiveFinite(\n record.pressurePascal,\n path + \".pressurePascal\"\n );\n\n const relativeHumidityFraction =\n record.relativeHumidityFraction ===\n undefined\n ? undefined\n : requireFraction(\n record.relativeHumidityFraction,\n path +\n \".relativeHumidityFraction\"\n );\n\n const carbonDioxideMoleFraction =\n record.carbonDioxideMoleFraction ===\n undefined\n ? undefined\n : requireFraction(\n record.carbonDioxideMoleFraction,\n path +\n \".carbonDioxideMoleFraction\"\n );\n\n return {\n temperatureC,\n pressurePascal,\n ...(relativeHumidityFraction ===\n undefined\n ? {}\n : {\n relativeHumidityFraction\n }),\n ...(carbonDioxideMoleFraction ===\n undefined\n ? {}\n : {\n carbonDioxideMoleFraction\n })\n };\n}\n\nfunction parseConditionPolicy(\n value: unknown\n): AirRefractiveIndexConditionPolicy {\n const record = requireRecord(\n value,\n \"airConditionPolicy\", null\n );\n rejectUnknownVariantFields(record, \"kind\", { \"exact-match-required\": [\"kind\"], \"assume-compatible\": [\"kind\", \"limitation\", \"evidence\"] }, \"airConditionPolicy\");\n\n if (\n record.kind === \"exact-match-required\"\n ) {\n return {\n kind: \"exact-match-required\"\n };\n }\n\n if (\n record.kind === \"assume-compatible\"\n ) {\n if (\n typeof record.limitation !==\n \"string\" ||\n record.limitation.trim().length ===\n 0\n ) {\n throw new InvalidConfigurationError(\n \"airConditionPolicy.limitation must be a non-empty string.\"\n );\n }\n return {\n kind: \"assume-compatible\",\n limitation:\n record.limitation,\n evidence: parseEvidenceList(\n record.evidence,\n \"airConditionPolicy.evidence\"\n )\n };\n }\n\n throw new InvalidConfigurationError(\n \"airConditionPolicy.kind is invalid.\"\n );\n}\n\nfunction conditionsMatch(\n reference:\n AirRefractiveIndexReferenceConditions,\n operating:\n AirRefractiveIndexReferenceConditions\n): boolean {\n if (\n reference.temperatureC !==\n operating.temperatureC ||\n reference.pressurePascal !==\n operating.pressurePascal\n ) {\n return false;\n }\n if (\n reference.relativeHumidityFraction !==\n undefined &&\n reference.relativeHumidityFraction !==\n operating.relativeHumidityFraction\n ) {\n return false;\n }\n if (\n reference.carbonDioxideMoleFraction !==\n undefined &&\n reference.carbonDioxideMoleFraction !==\n operating.carbonDioxideMoleFraction\n ) {\n return false;\n }\n return true;\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 index is the phase refractive index n of air at one exact wavelength, from a cited source, for\n * stated atmospheric conditions. It converts air to vacuum wavelength: λ_vacuum = n·λ_air.\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 parseSourcedAirPhaseRefractiveIndex(\n value: unknown\n): SourcedAirPhaseRefractiveIndex {\n const record = requireRecord(\n value,\n \"airPhaseRefractiveIndex\", [\"wavelengthBasis\", \"definition\", \"scientificStatus\", \"uncertainty\", \"referenceConditions\", \"wavelengthNanometers\", \"phaseRefractiveIndex\", \"evidence\"]\n );\n\n if (\n record.wavelengthBasis !== \"air\"\n ) {\n throw new InvalidConfigurationError(\n 'airPhaseRefractiveIndex.wavelengthBasis must be \"air\".'\n );\n }\n if (\n record.definition !==\n \"vacuum-wavelength-divided-by-air-wavelength\"\n ) {\n throw new InvalidConfigurationError(\n \"airPhaseRefractiveIndex.definition is invalid.\"\n );\n }\n if (\n record.scientificStatus !==\n \"calibrated\" &&\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n \"airPhaseRefractiveIndex.scientificStatus is invalid.\"\n );\n }\n\n const uncertainty =\n parseUncertainty(\n record.uncertainty,\n \"airPhaseRefractiveIndex.uncertainty\"\n );\n const referenceConditions =\n record.referenceConditions ===\n undefined\n ? undefined\n : parseReferenceConditions(\n record.referenceConditions,\n \"airPhaseRefractiveIndex.referenceConditions\"\n );\n\n if (\n record.scientificStatus ===\n \"calibrated\" &&\n uncertainty.kind ===\n \"not-quantified\"\n ) {\n throw new InvalidConfigurationError(\n \"A calibrated air phase refractive index must declare quantified relative uncertainty.\"\n );\n }\n if (\n record.scientificStatus ===\n \"calibrated\" &&\n referenceConditions === undefined\n ) {\n throw new InvalidConfigurationError(\n \"A calibrated air phase refractive index must declare temperature and pressure reference conditions.\"\n );\n }\n\n return {\n wavelengthNanometers:\n requirePositiveFinite(\n record.wavelengthNanometers,\n \"airPhaseRefractiveIndex.wavelengthNanometers\"\n ),\n wavelengthBasis: \"air\",\n definition:\n \"vacuum-wavelength-divided-by-air-wavelength\",\n phaseRefractiveIndex:\n requirePositiveFinite(\n record.phaseRefractiveIndex,\n \"airPhaseRefractiveIndex.phaseRefractiveIndex\"\n ),\n scientificStatus:\n record.scientificStatus,\n uncertainty,\n evidence: parseEvidenceList(\n record.evidence,\n \"airPhaseRefractiveIndex.evidence\"\n ),\n ...(referenceConditions ===\n undefined\n ? {}\n : { referenceConditions })\n };\n}\n\n/**\n * Converts a vacuum wavelength, or an air wavelength with its stated atmosphere, into optical\n * frequency and photon energy using the exact SI constants h and c.\n *\n * An air wavelength needs a sourced phase refractive index for that exact wavelength and matching\n * atmosphere; λ_vacuum = n·λ_air. The index's uncertainty is kept but not automatically carried\n * through to the photon energy.\n * @param input - The input; see `CalculatePhotonEnergyFromWavelengthInput` 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 calculatePhotonEnergyFromWavelength(\n input:\n CalculatePhotonEnergyFromWavelengthInput\n): CalculationResult<PhotonEnergyFromWavelength> {\n requireInputKeys(input, \"calculatePhotonEnergyFromWavelength\", [\"wavelengthNanometers\", \"wavelengthBasis\", \"airPhaseRefractiveIndex\", \"airOperatingConditions\", \"airConditionPolicy\"]);\n const wavelengthNanometers = input.wavelengthNanometers;\n // A calculation input, not a configuration record, so a bad value is a scientific-input error.\n if (typeof wavelengthNanometers !== \"number\" || !Number.isFinite(wavelengthNanometers)) {\n throw new InvalidScientificInputError(\"wavelengthNanometers must be finite.\");\n }\n if (wavelengthNanometers <= 0) {\n throw new InvalidScientificInputError(\"wavelengthNanometers must be greater than zero.\");\n }\n\n if (\n input.wavelengthBasis ===\n \"unspecified\"\n ) {\n throw new InvalidScientificInputError(\n \"wavelengthBasis must be resolved to air or vacuum before photon-energy calculation.\"\n );\n }\n\n if (\n input.wavelengthBasis !== \"air\" &&\n input.wavelengthBasis !== \"vacuum\"\n ) {\n throw new InvalidConfigurationError(\n \"wavelengthBasis is invalid.\"\n );\n }\n\n let vacuumWavelengthNanometers:\n number;\n let wavelengthConversion:\n PhotonEnergyFromWavelength[\"wavelengthConversion\"];\n let parsedAir:\n SourcedAirPhaseRefractiveIndex |\n undefined;\n\n let parsedConditionPolicy:\n AirRefractiveIndexConditionPolicy |\n undefined;\n let parsedOperatingConditions:\n AirRefractiveIndexReferenceConditions |\n undefined;\n let airConditionCompatibility:\n PhotonEnergyFromWavelength[\"airConditionCompatibility\"] |\n undefined;\n\n if (\n input.wavelengthBasis ===\n \"vacuum\"\n ) {\n if (\n input.airPhaseRefractiveIndex !==\n undefined ||\n input.airOperatingConditions !==\n undefined ||\n input.airConditionPolicy !==\n undefined\n ) {\n throw new InvalidScientificInputError(\n \"Air refractive-index inputs must be omitted for vacuum-basis wavelengths.\"\n );\n }\n vacuumWavelengthNanometers =\n wavelengthNanometers;\n wavelengthConversion =\n \"vacuum-identity\";\n } else {\n if (\n input.airPhaseRefractiveIndex ===\n undefined\n ) {\n throw new InvalidScientificInputError(\n \"airPhaseRefractiveIndex is required for air-basis photon-energy calculation.\"\n );\n }\n parsedAir =\n parseSourcedAirPhaseRefractiveIndex(\n input.airPhaseRefractiveIndex\n );\n\n if (\n parsedAir.wavelengthNanometers !==\n wavelengthNanometers\n ) {\n throw new InvalidScientificInputError(\n \"airPhaseRefractiveIndex wavelength must exactly match wavelengthNanometers.\"\n );\n }\n\n if (\n input.airConditionPolicy ===\n undefined\n ) {\n throw new InvalidScientificInputError(\n \"airConditionPolicy is required for air-basis photon-energy calculation.\"\n );\n }\n parsedConditionPolicy =\n parseConditionPolicy(\n input.airConditionPolicy\n );\n\n if (\n parsedConditionPolicy.kind ===\n \"exact-match-required\"\n ) {\n if (\n parsedAir.referenceConditions ===\n undefined\n ) {\n throw new InvalidScientificInputError(\n \"Exact air-condition matching requires refractive-index reference conditions.\"\n );\n }\n if (\n input.airOperatingConditions ===\n undefined\n ) {\n throw new InvalidScientificInputError(\n \"airOperatingConditions is required when exact air-condition matching is selected.\"\n );\n }\n parsedOperatingConditions =\n parseReferenceConditions(\n input.airOperatingConditions,\n \"airOperatingConditions\"\n );\n if (\n !conditionsMatch(\n parsedAir.referenceConditions,\n parsedOperatingConditions\n )\n ) {\n throw new InvalidScientificInputError(\n \"airOperatingConditions must match the refractive-index reference conditions.\"\n );\n }\n airConditionCompatibility =\n \"exact-match\";\n } else {\n parsedOperatingConditions =\n input.airOperatingConditions ===\n undefined\n ? undefined\n : parseReferenceConditions(\n input.airOperatingConditions,\n \"airOperatingConditions\"\n );\n airConditionCompatibility =\n \"assumed-compatible\";\n }\n\n vacuumWavelengthNanometers =\n wavelengthNanometers *\n parsedAir.phaseRefractiveIndex;\n wavelengthConversion =\n \"air-to-vacuum-via-phase-refractive-index\";\n }\n\n const vacuumWavelengthMeters =\n vacuumWavelengthNanometers *\n NANOMETERS_TO_METERS;\n const frequencyHertz =\n SPEED_OF_LIGHT_METERS_PER_SECOND /\n vacuumWavelengthMeters;\n const photonEnergyJoules =\n PLANCK_CONSTANT_JOULE_SECONDS *\n frequencyHertz;\n\n if (\n !Number.isFinite(\n vacuumWavelengthNanometers\n ) ||\n !Number.isFinite(frequencyHertz) ||\n !Number.isFinite(\n photonEnergyJoules\n )\n ) {\n throw new InvalidScientificInputError(\n \"Photon-energy calculation must remain finite.\"\n );\n }\n\n return calculatedResult(\n {\n inputWavelengthNanometers:\n wavelengthNanometers,\n inputWavelengthBasis:\n input.wavelengthBasis,\n vacuumWavelengthNanometers,\n frequencyHertz,\n photonEnergyJoules,\n wavelengthConversion,\n exactSiConstants: {\n planckConstantJouleSeconds:\n PLANCK_CONSTANT_JOULE_SECONDS,\n speedOfLightMetersPerSecond:\n SPEED_OF_LIGHT_METERS_PER_SECOND\n },\n ...(parsedAir === undefined\n ? {}\n : {\n phaseRefractiveIndexUsed:\n parsedAir\n .phaseRefractiveIndex,\n airRefractiveIndexScientificStatus:\n parsedAir\n .scientificStatus,\n airRefractiveIndexUncertainty:\n parsedAir.uncertainty,\n ...(parsedAir\n .referenceConditions ===\n undefined\n ? {}\n : {\n airRefractiveIndexReferenceConditions:\n parsedAir\n .referenceConditions\n }),\n airRefractiveIndexEvidence:\n parsedAir.evidence,\n ...(parsedOperatingConditions ===\n undefined\n ? {}\n : {\n airOperatingConditions:\n parsedOperatingConditions\n }),\n ...(parsedConditionPolicy ===\n undefined\n ? {}\n : {\n airConditionPolicy:\n parsedConditionPolicy\n }),\n ...(airConditionCompatibility ===\n undefined\n ? {}\n : {\n airConditionCompatibility\n }),\n ...(parsedConditionPolicy?.kind ===\n \"assume-compatible\"\n ? {\n airConditionAssumptionEvidence:\n parsedConditionPolicy\n .evidence\n }\n : {})\n }),\n inputUncertaintyPropagated:\n false\n },\n \"photon-energy-from-spectral-wavelength\",\n \"1.0.0\",\n [\n \"Planck constant h and vacuum speed of light c use their exact SI defining values.\",\n \"Photon energy is h times optical frequency; frequency is derived from vacuum wavelength.\",\n \"Vacuum-basis wavelength requires no refractive-index correction.\",\n \"Air-basis wavelength is converted with the phase refractive index definition n = lambda_vacuum / lambda_air at the exact requested wavelength.\",\n \"Air refractive index varies with wavelength and atmospheric conditions; this function never substitutes n = 1.\",\n \"Air-basis conversion requires either exact matching to the refractive-index reference atmosphere or an explicit evidence-backed compatibility assumption.\",\n \"Input refractive-index uncertainty is preserved as metadata but is not propagated into photon-energy uncertainty by this foundation.\",\n \"This calculation does not apply QE, calculate photon rate, generate electrons, integrate exposure time, or model saturation/noise.\"\n ]\n );\n}\n"]}
@@ -1,15 +1,11 @@
1
1
  /**
2
- * Module boundary and integration notes.
3
- * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
4
- * missing required fields and incompatible scientific data fail at this boundary. Physical storage
5
- * capacity is a source-specific total stored-electron limit tied to site, operating state and
6
- * temperature. The assessment compares complete expected charge; it does not clamp realizations or
7
- * infer overflow/blooming. Camera saturation and ADC/readout thresholds remain distinct.
8
- * Compare complete expected stored electrons to the explicitly applicable physical capacity and report
9
- * expectation-domain headroom without nonlinear storage simulation. Physical storage capacity is a
10
- * source-specific total stored-electron limit tied to site, operating state and temperature. The
11
- * assessment compares complete expected charge; it does not clamp realizations or infer
12
- * overflow/blooming. Camera saturation and ADC/readout thresholds remain distinct.
2
+ * Physical charge capacity (full-well capacity): the most electrons a sensor site can physically
3
+ * store, and a check of the expected charge against it.
4
+ *
5
+ * The capacity is the total stored-electron limit given by a specific source, for a specific site,
6
+ * operating state and temperature. The check compares the complete expected charge with it. It does
7
+ * not clip random (noise) realizations and does not model overflow or blooming. Camera saturation
8
+ * capacity and ADC or readout thresholds are separate limits.
13
9
  * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
14
10
  * limits.
15
11
  */
@@ -100,31 +96,25 @@ export interface SensorPhysicalChargeCapacityAssessment {
100
96
  };
101
97
  }
102
98
  /**
103
- * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
104
- * missing required fields and incompatible scientific data fail at this boundary.
99
+ * Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,
100
+ * missing required fields and inconsistent scientific data are rejected.
105
101
  *
106
- * Physical storage capacity is a source-specific total stored-electron limit tied to site, operating
107
- * state and temperature. The assessment compares complete expected charge; it does not clamp
108
- * realizations or infer overflow/blooming. Camera saturation and ADC/readout thresholds remain
109
- * distinct.
110
- * @param value - unknown. Treated as untrusted data; static typing alone is not validation.
111
- * @returns SensorPhysicalChargeCapacityProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
102
+ * The capacity is a total stored-electron limit from a specific source, tied to a site, operating
103
+ * state and temperature. Camera saturation capacity and ADC or readout thresholds are separate.
104
+ * @param value - Untrusted data. TypeScript types alone are not validation.
105
+ * @returns The result. Success does not imply calibration.
112
106
  *
113
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
107
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
114
108
  */
115
109
  export declare function parseSensorPhysicalChargeCapacityProfile(value: unknown): SensorPhysicalChargeCapacityProfile;
116
110
  /**
117
- * Compare complete expected stored electrons to the explicitly applicable physical capacity and report
118
- * expectation-domain headroom without nonlinear storage simulation.
111
+ * Compares the complete expected stored electrons with the physical capacity that applies, and
112
+ * reports the remaining headroom in expected electrons. Non-linear storage is not simulated.
119
113
  *
120
- * Physical storage capacity is a source-specific total stored-electron limit tied to site, operating
121
- * state and temperature. The assessment compares complete expected charge; it does not clamp
122
- * realizations or infer overflow/blooming. Camera saturation and ADC/readout thresholds remain
123
- * distinct.
124
- * @param input - AssessSensorPhysicalChargeCapacityInput. See the linked contract for coordinate, unit and profile binding semantics.
125
- * @returns CalculationResult<SensorPhysicalChargeCapacityAssessment>. Read structured blockers before consuming an authorization.
114
+ * It does not clip random realizations and does not model overflow or blooming.
115
+ * @param input - The input; see `AssessSensorPhysicalChargeCapacityInput` for its fields, units and coordinates.
116
+ * @returns The assessment. Read its structured blockers before acting on an authorization.
126
117
  *
127
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
118
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
128
119
  */
129
120
  export declare function assessSensorPhysicalChargeCapacity(input: AssessSensorPhysicalChargeCapacityInput): CalculationResult<SensorPhysicalChargeCapacityAssessment>;
130
- //# sourceMappingURL=physical-charge-capacity.d.ts.map