@photivra/engine 1.5.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1085) hide show
  1. package/CHANGELOG.md +414 -6
  2. package/CITATION.cff +1 -1
  3. package/NODE_SUPPORT.md +64 -12
  4. package/README.md +301 -182
  5. package/SECURITY.md +37 -28
  6. package/THIRD_PARTY.md +148 -4
  7. package/dist/camera/equivalent-focal-length.d.ts +13 -14
  8. package/dist/camera/equivalent-focal-length.js +15 -13
  9. package/dist/camera/equivalent-focal-length.js.map +1 -1
  10. package/dist/camera/field-of-view.d.ts +30 -19
  11. package/dist/camera/field-of-view.js +67 -18
  12. package/dist/camera/field-of-view.js.map +1 -1
  13. package/dist/camera/lens-projection.d.ts +170 -0
  14. package/dist/camera/lens-projection.js +444 -0
  15. package/dist/camera/lens-projection.js.map +1 -0
  16. package/dist/camera/projected-object-size.d.ts +10 -11
  17. package/dist/camera/projected-object-size.js +12 -10
  18. package/dist/camera/projected-object-size.js.map +1 -1
  19. package/dist/capture/capture-export-metadata.d.ts +9 -10
  20. package/dist/capture/capture-export-metadata.js +8 -5
  21. package/dist/capture/capture-export-metadata.js.map +1 -1
  22. package/dist/capture/dng-import.d.ts +91 -0
  23. package/dist/capture/dng-import.js +343 -0
  24. package/dist/capture/dng-import.js.map +1 -0
  25. package/dist/capture/environment-raw-producer.d.ts +37 -17
  26. package/dist/capture/environment-raw-producer.js +43 -19
  27. package/dist/capture/environment-raw-producer.js.map +1 -1
  28. package/dist/capture/export-jpeg.d.ts +35 -4
  29. package/dist/capture/export-jpeg.js +133 -47
  30. package/dist/capture/export-jpeg.js.map +1 -1
  31. package/dist/capture/export-tiff.d.ts +48 -24
  32. package/dist/capture/export-tiff.js +91 -31
  33. package/dist/capture/export-tiff.js.map +1 -1
  34. package/dist/capture/focus-control.d.ts +42 -65
  35. package/dist/capture/focus-control.js +56 -75
  36. package/dist/capture/focus-control.js.map +1 -1
  37. package/dist/capture/host-yield-cadence.d.ts +25 -0
  38. package/dist/capture/host-yield-cadence.js +25 -0
  39. package/dist/capture/host-yield-cadence.js.map +1 -0
  40. package/dist/capture/linear-encoding.d.ts +14 -12
  41. package/dist/capture/linear-encoding.js +14 -13
  42. package/dist/capture/linear-encoding.js.map +1 -1
  43. package/dist/capture/lossless-jpeg.d.ts +27 -0
  44. package/dist/capture/lossless-jpeg.js +237 -0
  45. package/dist/capture/lossless-jpeg.js.map +1 -0
  46. package/dist/capture/native-environment-lean.d.ts +227 -0
  47. package/dist/capture/native-environment-lean.js +974 -0
  48. package/dist/capture/native-environment-lean.js.map +1 -0
  49. package/dist/capture/native-environment-optical-stage.d.ts +97 -0
  50. package/dist/capture/native-environment-optical-stage.js +340 -0
  51. package/dist/capture/native-environment-optical-stage.js.map +1 -0
  52. package/dist/capture/native-environment-raw.d.ts +140 -6
  53. package/dist/capture/native-environment-raw.js +435 -34
  54. package/dist/capture/native-environment-raw.js.map +1 -1
  55. package/dist/capture/native-raw-development.d.ts +116 -9
  56. package/dist/capture/native-raw-development.js +221 -62
  57. package/dist/capture/native-raw-development.js.map +1 -1
  58. package/dist/capture/native-raw-dng.d.ts +60 -0
  59. package/dist/capture/native-raw-dng.js +167 -0
  60. package/dist/capture/native-raw-dng.js.map +1 -0
  61. package/dist/capture/native-raw.d.ts +65 -12
  62. package/dist/capture/native-raw.js +81 -19
  63. package/dist/capture/native-raw.js.map +1 -1
  64. package/dist/capture/packed-sensor-raw.d.ts +160 -0
  65. package/dist/capture/packed-sensor-raw.js +221 -0
  66. package/dist/capture/packed-sensor-raw.js.map +1 -0
  67. package/dist/capture/photographic-export.d.ts +58 -35
  68. package/dist/capture/photographic-export.js +177 -70
  69. package/dist/capture/photographic-export.js.map +1 -1
  70. package/dist/capture/raw-development-kernel.d.ts +52 -0
  71. package/dist/capture/raw-development-kernel.js +88 -0
  72. package/dist/capture/raw-development-kernel.js.map +1 -0
  73. package/dist/capture/raw-frame-limits.d.ts +7 -7
  74. package/dist/capture/raw-frame-limits.js +7 -6
  75. package/dist/capture/raw-frame-limits.js.map +1 -1
  76. package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
  77. package/dist/capture/raw-frame-reconstruction.js +9 -8
  78. package/dist/capture/raw-frame-reconstruction.js.map +1 -1
  79. package/dist/capture/raw-white-level.d.ts +55 -0
  80. package/dist/capture/raw-white-level.js +165 -0
  81. package/dist/capture/raw-white-level.js.map +1 -0
  82. package/dist/capture/release-sequence.d.ts +5 -7
  83. package/dist/capture/release-sequence.js +15 -13
  84. package/dist/capture/release-sequence.js.map +1 -1
  85. package/dist/capture/sensor-raw-frame.d.ts +5 -6
  86. package/dist/capture/sensor-raw-frame.js +26 -9
  87. package/dist/capture/sensor-raw-frame.js.map +1 -1
  88. package/dist/capture/sensor-raw-producer.d.ts +21 -13
  89. package/dist/capture/sensor-raw-producer.js +86 -25
  90. package/dist/capture/sensor-raw-producer.js.map +1 -1
  91. package/dist/capture/simulated-capture.d.ts +15 -16
  92. package/dist/capture/simulated-capture.js +22 -12
  93. package/dist/capture/simulated-capture.js.map +1 -1
  94. package/dist/color/camera-color-matrix.d.ts +69 -0
  95. package/dist/color/camera-color-matrix.js +132 -0
  96. package/dist/color/camera-color-matrix.js.map +1 -0
  97. package/dist/color/capture-color.d.ts +17 -10
  98. package/dist/color/capture-color.js +50 -17
  99. package/dist/color/capture-color.js.map +1 -1
  100. package/dist/color/chromatic-adaptation.d.ts +63 -0
  101. package/dist/color/chromatic-adaptation.js +91 -0
  102. package/dist/color/chromatic-adaptation.js.map +1 -0
  103. package/dist/color/color-difference.d.ts +104 -0
  104. package/dist/color/color-difference.js +205 -0
  105. package/dist/color/color-difference.js.map +1 -0
  106. package/dist/color/color-matching-functions.d.ts +168 -0
  107. package/dist/color/color-matching-functions.js +309 -0
  108. package/dist/color/color-matching-functions.js.map +1 -0
  109. package/dist/color/colorimetry-math.d.ts +52 -0
  110. package/dist/color/colorimetry-math.js +144 -0
  111. package/dist/color/colorimetry-math.js.map +1 -0
  112. package/dist/color/gamut-mapping.d.ts +54 -0
  113. package/dist/color/gamut-mapping.js +107 -0
  114. package/dist/color/gamut-mapping.js.map +1 -0
  115. package/dist/color/illuminants.d.ts +182 -0
  116. package/dist/color/illuminants.js +434 -0
  117. package/dist/color/illuminants.js.map +1 -0
  118. package/dist/color/rgb-color-spaces.d.ts +79 -0
  119. package/dist/color/rgb-color-spaces.js +115 -0
  120. package/dist/color/rgb-color-spaces.js.map +1 -0
  121. package/dist/color/sensor-color-development.d.ts +33 -11
  122. package/dist/color/sensor-color-development.js +104 -30
  123. package/dist/color/sensor-color-development.js.map +1 -1
  124. package/dist/color/srgb-icc.d.ts +9 -2
  125. package/dist/color/srgb-icc.js +16 -5
  126. package/dist/color/srgb-icc.js.map +1 -1
  127. package/dist/color/srgb-transfer.d.ts +1 -2
  128. package/dist/color/srgb-transfer.js +1 -1
  129. package/dist/color/srgb-transfer.js.map +1 -1
  130. package/dist/color/white-balance.d.ts +68 -19
  131. package/dist/color/white-balance.js +168 -35
  132. package/dist/color/white-balance.js.map +1 -1
  133. package/dist/composition/image-formation-plan.d.ts +152 -128
  134. package/dist/composition/image-formation-plan.js +292 -138
  135. package/dist/composition/image-formation-plan.js.map +1 -1
  136. package/dist/composition/plan-consumer.d.ts +6 -7
  137. package/dist/composition/plan-consumer.js +14 -11
  138. package/dist/composition/plan-consumer.js.map +1 -1
  139. package/dist/core/calculation-result.d.ts +21 -14
  140. package/dist/core/calculation-result.js +209 -11
  141. package/dist/core/calculation-result.js.map +1 -1
  142. package/dist/core/canonical-json.d.ts +13 -8
  143. package/dist/core/canonical-json.js +34 -15
  144. package/dist/core/canonical-json.js.map +1 -1
  145. package/dist/core/configuration-error.d.ts +5 -4
  146. package/dist/core/configuration-error.js +5 -3
  147. package/dist/core/configuration-error.js.map +1 -1
  148. package/dist/core/evidence-provenance.d.ts +12 -12
  149. package/dist/core/evidence-provenance.js +10 -9
  150. package/dist/core/evidence-provenance.js.map +1 -1
  151. package/dist/core/image-formation.d.ts +11 -10
  152. package/dist/core/image-formation.js +11 -9
  153. package/dist/core/image-formation.js.map +1 -1
  154. package/dist/core/owned-data.d.ts +9 -17
  155. package/dist/core/owned-data.js +9 -16
  156. package/dist/core/owned-data.js.map +1 -1
  157. package/dist/core/portable-math.d.ts +15 -0
  158. package/dist/core/portable-math.js +56 -0
  159. package/dist/core/portable-math.js.map +1 -0
  160. package/dist/core/record-validation.d.ts +48 -9
  161. package/dist/core/record-validation.js +93 -19
  162. package/dist/core/record-validation.js.map +1 -1
  163. package/dist/core/scientific-assurance.d.ts +16 -14
  164. package/dist/core/scientific-assurance.js +22 -18
  165. package/dist/core/scientific-assurance.js.map +1 -1
  166. package/dist/core/spectral-composition.d.ts +13 -14
  167. package/dist/core/spectral-composition.js +30 -27
  168. package/dist/core/spectral-composition.js.map +1 -1
  169. package/dist/core/spectral.d.ts +5 -6
  170. package/dist/core/spectral.js +9 -7
  171. package/dist/core/spectral.js.map +1 -1
  172. package/dist/core/validation.d.ts +3 -6
  173. package/dist/core/validation.js +3 -5
  174. package/dist/core/validation.js.map +1 -1
  175. package/dist/core/version.d.ts +6 -6
  176. package/dist/core/version.js +6 -5
  177. package/dist/core/version.js.map +1 -1
  178. package/dist/equipment/exposure-capabilities.d.ts +10 -10
  179. package/dist/equipment/exposure-capabilities.js +40 -30
  180. package/dist/equipment/exposure-capabilities.js.map +1 -1
  181. package/dist/equipment/generic-tier-assets.d.ts +13 -6
  182. package/dist/equipment/generic-tier-assets.js +34 -15
  183. package/dist/equipment/generic-tier-assets.js.map +1 -1
  184. package/dist/equipment/generic-tier-presets.d.ts +5 -6
  185. package/dist/equipment/generic-tier-presets.js +15 -13
  186. package/dist/equipment/generic-tier-presets.js.map +1 -1
  187. package/dist/equipment/iso-capabilities.d.ts +21 -22
  188. package/dist/equipment/iso-capabilities.js +49 -44
  189. package/dist/equipment/iso-capabilities.js.map +1 -1
  190. package/dist/equipment/metering-capabilities.d.ts +5 -6
  191. package/dist/equipment/metering-capabilities.js +22 -19
  192. package/dist/equipment/metering-capabilities.js.map +1 -1
  193. package/dist/equipment/release-capabilities.d.ts +3 -4
  194. package/dist/equipment/release-capabilities.js +18 -14
  195. package/dist/equipment/release-capabilities.js.map +1 -1
  196. package/dist/exposure/exposure-duration-control.d.ts +19 -17
  197. package/dist/exposure/exposure-duration-control.js +27 -23
  198. package/dist/exposure/exposure-duration-control.js.map +1 -1
  199. package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
  200. package/dist/exposure/exposure-mode-resolver.js +127 -82
  201. package/dist/exposure/exposure-mode-resolver.js.map +1 -1
  202. package/dist/exposure/exposure.d.ts +17 -16
  203. package/dist/exposure/exposure.js +22 -15
  204. package/dist/exposure/exposure.js.map +1 -1
  205. package/dist/exposure/flash-ttl.d.ts +135 -0
  206. package/dist/exposure/flash-ttl.js +193 -0
  207. package/dist/exposure/flash-ttl.js.map +1 -0
  208. package/dist/exposure/flash.d.ts +144 -36
  209. package/dist/exposure/flash.js +259 -59
  210. package/dist/exposure/flash.js.map +1 -1
  211. package/dist/exposure/metering-scene-radiance.d.ts +10 -10
  212. package/dist/exposure/metering-scene-radiance.js +42 -23
  213. package/dist/exposure/metering-scene-radiance.js.map +1 -1
  214. package/dist/exposure/metering-target.d.ts +8 -8
  215. package/dist/exposure/metering-target.js +30 -20
  216. package/dist/exposure/metering-target.js.map +1 -1
  217. package/dist/exposure/metering-temporal.d.ts +16 -15
  218. package/dist/exposure/metering-temporal.js +41 -19
  219. package/dist/exposure/metering-temporal.js.map +1 -1
  220. package/dist/exposure/metering.d.ts +64 -17
  221. package/dist/exposure/metering.js +159 -30
  222. package/dist/exposure/metering.js.map +1 -1
  223. package/dist/exposure/program-line.d.ts +5 -5
  224. package/dist/exposure/program-line.js +20 -13
  225. package/dist/exposure/program-line.js.map +1 -1
  226. package/dist/facade/camera-preset.d.ts +8 -0
  227. package/dist/facade/camera-preset.js +102 -0
  228. package/dist/facade/camera-preset.js.map +1 -0
  229. package/dist/facade/chart-radiance-batch.d.ts +57 -0
  230. package/dist/facade/chart-radiance-batch.js +121 -0
  231. package/dist/facade/chart-radiance-batch.js.map +1 -0
  232. package/dist/facade/chart-scenes.d.ts +177 -0
  233. package/dist/facade/chart-scenes.js +232 -0
  234. package/dist/facade/chart-scenes.js.map +1 -0
  235. package/dist/facade/diffraction-provider.d.ts +30 -0
  236. package/dist/facade/diffraction-provider.js +127 -0
  237. package/dist/facade/diffraction-provider.js.map +1 -0
  238. package/dist/facade/host-yield.d.ts +7 -0
  239. package/dist/facade/host-yield.js +19 -0
  240. package/dist/facade/host-yield.js.map +1 -0
  241. package/dist/facade/scene-radiance.d.ts +117 -0
  242. package/dist/facade/scene-radiance.js +205 -0
  243. package/dist/facade/scene-radiance.js.map +1 -0
  244. package/dist/facade/simulate-capture.d.ts +363 -0
  245. package/dist/facade/simulate-capture.js +1281 -0
  246. package/dist/facade/simulate-capture.js.map +1 -0
  247. package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
  248. package/dist/gpu/chart-radiance-gpu.js +176 -0
  249. package/dist/gpu/chart-radiance-gpu.js.map +1 -0
  250. package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
  251. package/dist/gpu/image-kernel-accelerator.js +720 -0
  252. package/dist/gpu/image-kernel-accelerator.js.map +1 -0
  253. package/dist/gpu/image-kernel-execution.d.ts +92 -0
  254. package/dist/gpu/image-kernel-execution.js +84 -0
  255. package/dist/gpu/image-kernel-execution.js.map +1 -0
  256. package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
  257. package/dist/gpu/sensor-stage-gpu.js +317 -0
  258. package/dist/gpu/sensor-stage-gpu.js.map +1 -0
  259. package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
  260. package/dist/gpu/temporal-sum-gpu.js +150 -0
  261. package/dist/gpu/temporal-sum-gpu.js.map +1 -0
  262. package/dist/gpu/webgpu-runtime.d.ts +63 -0
  263. package/dist/gpu/webgpu-runtime.js +215 -0
  264. package/dist/gpu/webgpu-runtime.js.map +1 -0
  265. package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
  266. package/dist/gpu/wgsl-chart-kernel.js +165 -0
  267. package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
  268. package/dist/gpu/wgsl-kernels.d.ts +53 -0
  269. package/dist/gpu/wgsl-kernels.js +365 -0
  270. package/dist/gpu/wgsl-kernels.js.map +1 -0
  271. package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
  272. package/dist/gpu/wgsl-sensor-kernel.js +409 -0
  273. package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
  274. package/dist/index.d.ts +91 -25
  275. package/dist/index.js +60 -15
  276. package/dist/index.js.map +1 -1
  277. package/dist/motion/camera-rotation.d.ts +92 -40
  278. package/dist/motion/camera-rotation.js +84 -47
  279. package/dist/motion/camera-rotation.js.map +1 -1
  280. package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
  281. package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
  282. package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
  283. package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
  284. package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
  285. package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
  286. package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
  287. package/dist/motion/capture-rotation-trajectory.js +36 -26
  288. package/dist/motion/capture-rotation-trajectory.js.map +1 -1
  289. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
  290. package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
  291. package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
  292. package/dist/motion/extended-object-projection.d.ts +19 -16
  293. package/dist/motion/extended-object-projection.js +38 -18
  294. package/dist/motion/extended-object-projection.js.map +1 -1
  295. package/dist/motion/projected-motion.d.ts +18 -17
  296. package/dist/motion/projected-motion.js +25 -17
  297. package/dist/motion/projected-motion.js.map +1 -1
  298. package/dist/motion/temporal-exposure-sum.d.ts +55 -0
  299. package/dist/motion/temporal-exposure-sum.js +141 -0
  300. package/dist/motion/temporal-exposure-sum.js.map +1 -0
  301. package/dist/motion/video-sequence.d.ts +111 -0
  302. package/dist/motion/video-sequence.js +179 -0
  303. package/dist/motion/video-sequence.js.map +1 -0
  304. package/dist/optics/aperture.d.ts +14 -15
  305. package/dist/optics/aperture.js +13 -11
  306. package/dist/optics/aperture.js.map +1 -1
  307. package/dist/optics/atmospheric-haze.d.ts +83 -0
  308. package/dist/optics/atmospheric-haze.js +113 -0
  309. package/dist/optics/atmospheric-haze.js.map +1 -0
  310. package/dist/optics/brown-conrady-distortion.d.ts +116 -0
  311. package/dist/optics/brown-conrady-distortion.js +291 -0
  312. package/dist/optics/brown-conrady-distortion.js.map +1 -0
  313. package/dist/optics/circle-of-confusion.d.ts +10 -10
  314. package/dist/optics/circle-of-confusion.js +15 -11
  315. package/dist/optics/circle-of-confusion.js.map +1 -1
  316. package/dist/optics/complex-pupil-psf.d.ts +64 -33
  317. package/dist/optics/complex-pupil-psf.js +190 -98
  318. package/dist/optics/complex-pupil-psf.js.map +1 -1
  319. package/dist/optics/depth-of-field.d.ts +25 -15
  320. package/dist/optics/depth-of-field.js +67 -27
  321. package/dist/optics/depth-of-field.js.map +1 -1
  322. package/dist/optics/diffraction-psf-profile.d.ts +118 -0
  323. package/dist/optics/diffraction-psf-profile.js +252 -0
  324. package/dist/optics/diffraction-psf-profile.js.map +1 -0
  325. package/dist/optics/diffraction.d.ts +14 -13
  326. package/dist/optics/diffraction.js +14 -10
  327. package/dist/optics/diffraction.js.map +1 -1
  328. package/dist/optics/focus-breathing.d.ts +88 -27
  329. package/dist/optics/focus-breathing.js +114 -23
  330. package/dist/optics/focus-breathing.js.map +1 -1
  331. package/dist/optics/focus-state.d.ts +18 -18
  332. package/dist/optics/focus-state.js +21 -15
  333. package/dist/optics/focus-state.js.map +1 -1
  334. package/dist/optics/front-of-lens-filter.d.ts +45 -14
  335. package/dist/optics/front-of-lens-filter.js +259 -88
  336. package/dist/optics/front-of-lens-filter.js.map +1 -1
  337. package/dist/optics/illumination-vignetting.d.ts +16 -17
  338. package/dist/optics/illumination-vignetting.js +40 -17
  339. package/dist/optics/illumination-vignetting.js.map +1 -1
  340. package/dist/optics/irradiance-convolution.d.ts +59 -0
  341. package/dist/optics/irradiance-convolution.js +138 -0
  342. package/dist/optics/irradiance-convolution.js.map +1 -0
  343. package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
  344. package/dist/optics/lateral-chromatic-aberration.js +33 -23
  345. package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
  346. package/dist/optics/lens-psf-kernels.d.ts +89 -0
  347. package/dist/optics/lens-psf-kernels.js +175 -0
  348. package/dist/optics/lens-psf-kernels.js.map +1 -0
  349. package/dist/optics/lens-psf-profile.d.ts +78 -46
  350. package/dist/optics/lens-psf-profile.js +335 -124
  351. package/dist/optics/lens-psf-profile.js.map +1 -1
  352. package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
  353. package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
  354. package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
  355. package/dist/optics/polygon-diffraction.d.ts +80 -23
  356. package/dist/optics/polygon-diffraction.js +130 -25
  357. package/dist/optics/polygon-diffraction.js.map +1 -1
  358. package/dist/optics/profile-contract.d.ts +5 -6
  359. package/dist/optics/profile-contract.js +14 -11
  360. package/dist/optics/profile-contract.js.map +1 -1
  361. package/dist/optics/psf-foundation.d.ts +23 -23
  362. package/dist/optics/psf-foundation.js +24 -21
  363. package/dist/optics/psf-foundation.js.map +1 -1
  364. package/dist/optics/pupil-vignetting.d.ts +118 -0
  365. package/dist/optics/pupil-vignetting.js +264 -0
  366. package/dist/optics/pupil-vignetting.js.map +1 -0
  367. package/dist/optics/radial-distortion.d.ts +34 -33
  368. package/dist/optics/radial-distortion.js +37 -30
  369. package/dist/optics/radial-distortion.js.map +1 -1
  370. package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
  371. package/dist/optics/scene-to-sensor-irradiance.js +73 -45
  372. package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
  373. package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
  374. package/dist/optics/scene-to-sensor-quadrature.js +16 -11
  375. package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
  376. package/dist/optics/sensor-aperture-rays.d.ts +20 -4
  377. package/dist/optics/sensor-aperture-rays.js +32 -14
  378. package/dist/optics/sensor-aperture-rays.js.map +1 -1
  379. package/dist/optics/sensor-environment-query.d.ts +81 -16
  380. package/dist/optics/sensor-environment-query.js +145 -12
  381. package/dist/optics/sensor-environment-query.js.map +1 -1
  382. package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
  383. package/dist/optics/sensor-psf-quadrature.js +18 -11
  384. package/dist/optics/sensor-psf-quadrature.js.map +1 -1
  385. package/dist/optics/sensor-psf-support.d.ts +8 -6
  386. package/dist/optics/sensor-psf-support.js +8 -5
  387. package/dist/optics/sensor-psf-support.js.map +1 -1
  388. package/dist/optics/stray-light.d.ts +22 -19
  389. package/dist/optics/stray-light.js +18 -12
  390. package/dist/optics/stray-light.js.map +1 -1
  391. package/dist/optics/thin-lens.d.ts +10 -9
  392. package/dist/optics/thin-lens.js +12 -8
  393. package/dist/optics/thin-lens.js.map +1 -1
  394. package/dist/optics/zernike-wavefront.d.ts +154 -0
  395. package/dist/optics/zernike-wavefront.js +352 -0
  396. package/dist/optics/zernike-wavefront.js.map +1 -0
  397. package/dist/output/capture-corrected-sdr.d.ts +16 -8
  398. package/dist/output/capture-corrected-sdr.js +16 -8
  399. package/dist/output/capture-corrected-sdr.js.map +1 -1
  400. package/dist/output/capture-geometry.d.ts +34 -36
  401. package/dist/output/capture-geometry.js +52 -32
  402. package/dist/output/capture-geometry.js.map +1 -1
  403. package/dist/output/capture-sdr.d.ts +7 -6
  404. package/dist/output/capture-sdr.js +11 -8
  405. package/dist/output/capture-sdr.js.map +1 -1
  406. package/dist/output/crop.d.ts +22 -6
  407. package/dist/output/crop.js +40 -6
  408. package/dist/output/crop.js.map +1 -1
  409. package/dist/output/geometric-transforms.d.ts +60 -23
  410. package/dist/output/geometric-transforms.js +111 -24
  411. package/dist/output/geometric-transforms.js.map +1 -1
  412. package/dist/output/lens-corrections.d.ts +27 -19
  413. package/dist/output/lens-corrections.js +29 -13
  414. package/dist/output/lens-corrections.js.map +1 -1
  415. package/dist/output/native-capture-sdr.d.ts +71 -16
  416. package/dist/output/native-capture-sdr.js +190 -33
  417. package/dist/output/native-capture-sdr.js.map +1 -1
  418. package/dist/output/png-encoder.d.ts +65 -0
  419. package/dist/output/png-encoder.js +461 -0
  420. package/dist/output/png-encoder.js.map +1 -0
  421. package/dist/output/print-contrast-reference.d.ts +10 -9
  422. package/dist/output/print-contrast-reference.js +10 -8
  423. package/dist/output/print-contrast-reference.js.map +1 -1
  424. package/dist/output/print-detail.d.ts +18 -17
  425. package/dist/output/print-detail.js +12 -10
  426. package/dist/output/print-detail.js.map +1 -1
  427. package/dist/output/print-jpeg.d.ts +26 -5
  428. package/dist/output/print-jpeg.js +117 -50
  429. package/dist/output/print-jpeg.js.map +1 -1
  430. package/dist/output/print-plan.d.ts +19 -19
  431. package/dist/output/print-plan.js +11 -10
  432. package/dist/output/print-plan.js.map +1 -1
  433. package/dist/output/print-region-statistics.d.ts +14 -15
  434. package/dist/output/print-region-statistics.js +11 -11
  435. package/dist/output/print-region-statistics.js.map +1 -1
  436. package/dist/output/sdr-rendering.d.ts +48 -10
  437. package/dist/output/sdr-rendering.js +114 -25
  438. package/dist/output/sdr-rendering.js.map +1 -1
  439. package/dist/output/subject-framing-crop.d.ts +6 -10
  440. package/dist/output/subject-framing-crop.js +23 -13
  441. package/dist/output/subject-framing-crop.js.map +1 -1
  442. package/dist/processing/demosaic.d.ts +90 -0
  443. package/dist/processing/demosaic.js +275 -0
  444. package/dist/processing/demosaic.js.map +1 -0
  445. package/dist/processing/denoise.d.ts +68 -0
  446. package/dist/processing/denoise.js +214 -0
  447. package/dist/processing/denoise.js.map +1 -0
  448. package/dist/processing/focus-stacking.d.ts +17 -0
  449. package/dist/processing/focus-stacking.js +80 -0
  450. package/dist/processing/focus-stacking.js.map +1 -0
  451. package/dist/processing/hdr.d.ts +54 -0
  452. package/dist/processing/hdr.js +172 -0
  453. package/dist/processing/hdr.js.map +1 -0
  454. package/dist/processing/image-ops.d.ts +66 -0
  455. package/dist/processing/image-ops.js +192 -0
  456. package/dist/processing/image-ops.js.map +1 -0
  457. package/dist/processing/panorama.d.ts +51 -0
  458. package/dist/processing/panorama.js +305 -0
  459. package/dist/processing/panorama.js.map +1 -0
  460. package/dist/processing/processing-task.d.ts +85 -0
  461. package/dist/processing/processing-task.js +164 -0
  462. package/dist/processing/processing-task.js.map +1 -0
  463. package/dist/processing/tone-mapping.d.ts +69 -0
  464. package/dist/processing/tone-mapping.js +310 -0
  465. package/dist/processing/tone-mapping.js.map +1 -0
  466. package/dist/schema/camera.d.ts +5 -4
  467. package/dist/schema/illumination-spectral.d.ts +13 -19
  468. package/dist/schema/illumination-spectral.js +23 -19
  469. package/dist/schema/illumination-spectral.js.map +1 -1
  470. package/dist/schema/illumination-temporal.d.ts +12 -15
  471. package/dist/schema/illumination-temporal.js +43 -28
  472. package/dist/schema/illumination-temporal.js.map +1 -1
  473. package/dist/schema/illumination.d.ts +5 -4
  474. package/dist/schema/illumination.js +55 -20
  475. package/dist/schema/illumination.js.map +1 -1
  476. package/dist/schema/scene-radiance-temporal.d.ts +9 -11
  477. package/dist/schema/scene-radiance-temporal.js +26 -23
  478. package/dist/schema/scene-radiance-temporal.js.map +1 -1
  479. package/dist/schema/scene-radiance.d.ts +17 -17
  480. package/dist/schema/scene-radiance.js +56 -34
  481. package/dist/schema/scene-radiance.js.map +1 -1
  482. package/dist/schema/scene.d.ts +14 -13
  483. package/dist/schema/validation.d.ts +0 -1
  484. package/dist/schema/validation.js +17 -15
  485. package/dist/schema/validation.js.map +1 -1
  486. package/dist/sensor/accumulated-charge.d.ts +45 -64
  487. package/dist/sensor/accumulated-charge.js +41 -47
  488. package/dist/sensor/accumulated-charge.js.map +1 -1
  489. package/dist/sensor/architecture.d.ts +22 -25
  490. package/dist/sensor/architecture.js +17 -16
  491. package/dist/sensor/architecture.js.map +1 -1
  492. package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
  493. package/dist/sensor/camera-saturation-capacity.js +36 -34
  494. package/dist/sensor/camera-saturation-capacity.js.map +1 -1
  495. package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
  496. package/dist/sensor/capture-color-sampling-binding.js +39 -41
  497. package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
  498. package/dist/sensor/capture-mode-timing.d.ts +8 -9
  499. package/dist/sensor/capture-mode-timing.js +24 -21
  500. package/dist/sensor/capture-mode-timing.js.map +1 -1
  501. package/dist/sensor/capture-mode.d.ts +28 -30
  502. package/dist/sensor/capture-mode.js +33 -31
  503. package/dist/sensor/capture-mode.js.map +1 -1
  504. package/dist/sensor/color-sampling.d.ts +30 -33
  505. package/dist/sensor/color-sampling.js +32 -37
  506. package/dist/sensor/color-sampling.js.map +1 -1
  507. package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
  508. package/dist/sensor/constant-rate-temporal-integration.js +28 -26
  509. package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
  510. package/dist/sensor/dark-current.d.ts +53 -49
  511. package/dist/sensor/dark-current.js +87 -46
  512. package/dist/sensor/dark-current.js.map +1 -1
  513. package/dist/sensor/environment-photo-signal.d.ts +71 -30
  514. package/dist/sensor/environment-photo-signal.js +127 -46
  515. package/dist/sensor/environment-photo-signal.js.map +1 -1
  516. package/dist/sensor/eqe-electron-rate.d.ts +14 -13
  517. package/dist/sensor/eqe-electron-rate.js +34 -14
  518. package/dist/sensor/eqe-electron-rate.js.map +1 -1
  519. package/dist/sensor/eqe-local-exposure.d.ts +24 -24
  520. package/dist/sensor/eqe-local-exposure.js +15 -11
  521. package/dist/sensor/eqe-local-exposure.js.map +1 -1
  522. package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
  523. package/dist/sensor/eqe-temporal-exposure.js +15 -10
  524. package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
  525. package/dist/sensor/exposure-window.d.ts +48 -34
  526. package/dist/sensor/exposure-window.js +77 -36
  527. package/dist/sensor/exposure-window.js.map +1 -1
  528. package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
  529. package/dist/sensor/fixed-pattern-noise.js +166 -0
  530. package/dist/sensor/fixed-pattern-noise.js.map +1 -0
  531. package/dist/sensor/iso-gain.d.ts +44 -0
  532. package/dist/sensor/iso-gain.js +119 -0
  533. package/dist/sensor/iso-gain.js.map +1 -0
  534. package/dist/sensor/iso-signal-chain.d.ts +25 -48
  535. package/dist/sensor/iso-signal-chain.js +52 -66
  536. package/dist/sensor/iso-signal-chain.js.map +1 -1
  537. package/dist/sensor/local-exposure-binding.d.ts +21 -21
  538. package/dist/sensor/local-exposure-binding.js +22 -18
  539. package/dist/sensor/local-exposure-binding.js.map +1 -1
  540. package/dist/sensor/optical-stack.d.ts +36 -40
  541. package/dist/sensor/optical-stack.js +34 -37
  542. package/dist/sensor/optical-stack.js.map +1 -1
  543. package/dist/sensor/photon-energy.d.ts +22 -28
  544. package/dist/sensor/photon-energy.js +42 -34
  545. package/dist/sensor/photon-energy.js.map +1 -1
  546. package/dist/sensor/physical-charge-capacity.d.ts +20 -30
  547. package/dist/sensor/physical-charge-capacity.js +35 -36
  548. package/dist/sensor/physical-charge-capacity.js.map +1 -1
  549. package/dist/sensor/pixel-pitch.d.ts +2 -3
  550. package/dist/sensor/pixel-pitch.js +4 -2
  551. package/dist/sensor/pixel-pitch.js.map +1 -1
  552. package/dist/sensor/radiometry-readiness.d.ts +13 -15
  553. package/dist/sensor/radiometry-readiness.js +20 -17
  554. package/dist/sensor/radiometry-readiness.js.map +1 -1
  555. package/dist/sensor/raw-readout.d.ts +173 -83
  556. package/dist/sensor/raw-readout.js +425 -160
  557. package/dist/sensor/raw-readout.js.map +1 -1
  558. package/dist/sensor/raw-reconstruction.d.ts +112 -44
  559. package/dist/sensor/raw-reconstruction.js +200 -47
  560. package/dist/sensor/raw-reconstruction.js.map +1 -1
  561. package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
  562. package/dist/sensor/readout-exposure-linkage.js +125 -27
  563. package/dist/sensor/readout-exposure-linkage.js.map +1 -1
  564. package/dist/sensor/readout-timing.d.ts +43 -44
  565. package/dist/sensor/readout-timing.js +38 -30
  566. package/dist/sensor/readout-timing.js.map +1 -1
  567. package/dist/sensor/response-application-compatibility.d.ts +21 -28
  568. package/dist/sensor/response-application-compatibility.js +35 -34
  569. package/dist/sensor/response-application-compatibility.js.map +1 -1
  570. package/dist/sensor/response-operating-range.d.ts +26 -35
  571. package/dist/sensor/response-operating-range.js +40 -39
  572. package/dist/sensor/response-operating-range.js.map +1 -1
  573. package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
  574. package/dist/sensor/responsivity-photocurrent.js +57 -40
  575. package/dist/sensor/responsivity-photocurrent.js.map +1 -1
  576. package/dist/sensor/sampling-aperture.d.ts +21 -25
  577. package/dist/sensor/sampling-aperture.js +29 -28
  578. package/dist/sensor/sampling-aperture.js.map +1 -1
  579. package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
  580. package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
  581. package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
  582. package/dist/sensor/sensor-geometry.d.ts +28 -32
  583. package/dist/sensor/sensor-geometry.js +35 -20
  584. package/dist/sensor/sensor-geometry.js.map +1 -1
  585. package/dist/sensor/signal-noise.d.ts +14 -16
  586. package/dist/sensor/signal-noise.js +15 -13
  587. package/dist/sensor/signal-noise.js.map +1 -1
  588. package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
  589. package/dist/sensor/spatial-sample-reduction.js +39 -48
  590. package/dist/sensor/spatial-sample-reduction.js.map +1 -1
  591. package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
  592. package/dist/sensor/spatial-sampling-quadrature.js +31 -36
  593. package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
  594. package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
  595. package/dist/sensor/spatio-spectral-reduction.js +24 -29
  596. package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
  597. package/dist/sensor/spectral-coverage.d.ts +6 -9
  598. package/dist/sensor/spectral-coverage.js +9 -6
  599. package/dist/sensor/spectral-coverage.js.map +1 -1
  600. package/dist/sensor/spectral-quadrature.d.ts +46 -60
  601. package/dist/sensor/spectral-quadrature.js +38 -48
  602. package/dist/sensor/spectral-quadrature.js.map +1 -1
  603. package/dist/sensor/spectral-response.d.ts +53 -41
  604. package/dist/sensor/spectral-response.js +80 -47
  605. package/dist/sensor/spectral-response.js.map +1 -1
  606. package/dist/sensor/stochastic-seed.d.ts +50 -0
  607. package/dist/sensor/stochastic-seed.js +123 -0
  608. package/dist/sensor/stochastic-seed.js.map +1 -0
  609. package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
  610. package/dist/sensor/temporal-eqe-sum.js +5 -6
  611. package/dist/sensor/temporal-eqe-sum.js.map +1 -1
  612. package/dist/sensor/temporal-photo-signal.d.ts +5 -6
  613. package/dist/sensor/temporal-photo-signal.js +11 -10
  614. package/dist/sensor/temporal-photo-signal.js.map +1 -1
  615. package/dist/sensor/temporal-sample-binding.d.ts +1 -2
  616. package/dist/sensor/temporal-sample-binding.js +3 -3
  617. package/dist/sensor/temporal-sample-binding.js.map +1 -1
  618. package/dist/simulation/poc-simulation.d.ts +16 -16
  619. package/dist/simulation/poc-simulation.js +20 -15
  620. package/dist/simulation/poc-simulation.js.map +1 -1
  621. package/dist/stabilization/camera-shake.d.ts +42 -18
  622. package/dist/stabilization/camera-shake.js +43 -20
  623. package/dist/stabilization/camera-shake.js.map +1 -1
  624. package/dist/stabilization/system.d.ts +44 -41
  625. package/dist/stabilization/system.js +196 -108
  626. package/dist/stabilization/system.js.map +1 -1
  627. package/docs/AGENT_GUIDE.md +183 -0
  628. package/docs/API_REFERENCE.md +777 -2
  629. package/docs/QUICK_START.md +663 -0
  630. package/docs/USAGE.md +1719 -714
  631. package/docs/api/camera-equivalent-focal-length.md +6 -7
  632. package/docs/api/camera-field-of-view.md +16 -8
  633. package/docs/api/camera-lens-projection.md +246 -0
  634. package/docs/api/camera-projected-object-size.md +6 -5
  635. package/docs/api/capture-capture-export-metadata.md +10 -10
  636. package/docs/api/capture-dng-import.md +134 -0
  637. package/docs/api/capture-environment-raw-producer.md +17 -11
  638. package/docs/api/capture-export-jpeg.md +16 -0
  639. package/docs/api/capture-focus-control.md +25 -47
  640. package/docs/api/capture-linear-encoding.md +21 -12
  641. package/docs/api/capture-lossless-jpeg.md +49 -0
  642. package/docs/api/capture-native-environment-optical-stage.md +75 -0
  643. package/docs/api/capture-native-environment-raw.md +161 -4
  644. package/docs/api/capture-native-raw-development.md +69 -8
  645. package/docs/api/capture-native-raw-dng.md +84 -0
  646. package/docs/api/capture-native-raw.md +21 -10
  647. package/docs/api/capture-packed-sensor-raw.md +156 -0
  648. package/docs/api/capture-photographic-export.md +69 -31
  649. package/docs/api/capture-raw-frame-reconstruction.md +8 -8
  650. package/docs/api/capture-raw-white-level.md +37 -0
  651. package/docs/api/capture-release-sequence.md +6 -7
  652. package/docs/api/capture-sensor-raw-frame.md +6 -6
  653. package/docs/api/capture-sensor-raw-producer.md +17 -11
  654. package/docs/api/capture-simulated-capture.md +15 -15
  655. package/docs/api/color-camera-color-matrix.md +103 -0
  656. package/docs/api/color-capture-color.md +22 -11
  657. package/docs/api/color-chromatic-adaptation.md +82 -0
  658. package/docs/api/color-color-difference.md +134 -0
  659. package/docs/api/color-color-matching-functions.md +259 -0
  660. package/docs/api/color-colorimetry-math.md +54 -0
  661. package/docs/api/color-gamut-mapping.md +72 -0
  662. package/docs/api/color-illuminants.md +280 -0
  663. package/docs/api/color-rgb-color-spaces.md +151 -0
  664. package/docs/api/color-sensor-color-development.md +27 -0
  665. package/docs/api/color-srgb-icc.md +2 -4
  666. package/docs/api/color-white-balance.md +95 -19
  667. package/docs/api/composition-image-formation-plan.md +124 -95
  668. package/docs/api/composition-plan-consumer.md +7 -7
  669. package/docs/api/core-calculation-result.md +18 -14
  670. package/docs/api/core-configuration-error.md +1 -1
  671. package/docs/api/core-image-formation.md +7 -7
  672. package/docs/api/core-scientific-assurance.md +12 -10
  673. package/docs/api/core-spectral-composition.md +14 -14
  674. package/docs/api/core-spectral.md +6 -6
  675. package/docs/api/core-validation.md +3 -3
  676. package/docs/api/core-version.md +7 -6
  677. package/docs/api/equipment-exposure-capabilities.md +11 -10
  678. package/docs/api/equipment-generic-tier-assets.md +7 -2
  679. package/docs/api/equipment-generic-tier-presets.md +6 -6
  680. package/docs/api/equipment-iso-capabilities.md +18 -18
  681. package/docs/api/equipment-metering-capabilities.md +6 -6
  682. package/docs/api/equipment-release-capabilities.md +4 -4
  683. package/docs/api/exports.json +2253 -3
  684. package/docs/api/exposure-exposure-duration-control.md +9 -9
  685. package/docs/api/exposure-exposure-mode-resolver.md +35 -31
  686. package/docs/api/exposure-exposure.md +10 -10
  687. package/docs/api/exposure-flash-ttl.md +182 -0
  688. package/docs/api/exposure-flash.md +183 -28
  689. package/docs/api/exposure-metering-scene-radiance.md +11 -10
  690. package/docs/api/exposure-metering-target.md +9 -8
  691. package/docs/api/exposure-metering-temporal.md +8 -8
  692. package/docs/api/exposure-metering.md +69 -9
  693. package/docs/api/exposure-program-line.md +6 -5
  694. package/docs/api/facade-chart-radiance-batch.md +96 -0
  695. package/docs/api/facade-chart-scenes.md +240 -0
  696. package/docs/api/facade-scene-radiance.md +122 -0
  697. package/docs/api/facade-simulate-capture.md +397 -0
  698. package/docs/api/gpu-image-kernel-accelerator.md +157 -0
  699. package/docs/api/gpu-image-kernel-execution.md +152 -0
  700. package/docs/api/motion-camera-rotation.md +43 -26
  701. package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
  702. package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
  703. package/docs/api/motion-capture-rotation-trajectory.md +15 -15
  704. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
  705. package/docs/api/motion-extended-object-projection.md +10 -8
  706. package/docs/api/motion-projected-motion.md +8 -8
  707. package/docs/api/motion-temporal-exposure-sum.md +98 -0
  708. package/docs/api/motion-video-sequence.md +159 -0
  709. package/docs/api/optics-aperture.md +8 -8
  710. package/docs/api/optics-atmospheric-haze.md +104 -0
  711. package/docs/api/optics-brown-conrady-distortion.md +123 -0
  712. package/docs/api/optics-circle-of-confusion.md +5 -4
  713. package/docs/api/optics-complex-pupil-psf.md +57 -16
  714. package/docs/api/optics-depth-of-field.md +12 -6
  715. package/docs/api/optics-diffraction-psf-profile.md +96 -0
  716. package/docs/api/optics-diffraction.md +8 -7
  717. package/docs/api/optics-focus-breathing.md +104 -16
  718. package/docs/api/optics-focus-state.md +9 -10
  719. package/docs/api/optics-front-of-lens-filter.md +72 -14
  720. package/docs/api/optics-illumination-vignetting.md +10 -10
  721. package/docs/api/optics-irradiance-convolution.md +95 -0
  722. package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
  723. package/docs/api/optics-lens-psf-kernels.md +72 -0
  724. package/docs/api/optics-lens-psf-profile.md +48 -26
  725. package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
  726. package/docs/api/optics-polygon-diffraction.md +78 -13
  727. package/docs/api/optics-profile-contract.md +4 -4
  728. package/docs/api/optics-psf-foundation.md +12 -12
  729. package/docs/api/optics-pupil-vignetting.md +132 -0
  730. package/docs/api/optics-radial-distortion.md +12 -12
  731. package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
  732. package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
  733. package/docs/api/optics-sensor-aperture-rays.md +3 -2
  734. package/docs/api/optics-sensor-environment-query.md +52 -9
  735. package/docs/api/optics-sensor-psf-quadrature.md +13 -10
  736. package/docs/api/optics-stray-light.md +12 -11
  737. package/docs/api/optics-thin-lens.md +4 -3
  738. package/docs/api/optics-zernike-wavefront.md +229 -0
  739. package/docs/api/output-capture-corrected-sdr.md +10 -7
  740. package/docs/api/output-capture-geometry.md +35 -36
  741. package/docs/api/output-capture-sdr.md +4 -4
  742. package/docs/api/output-crop.md +7 -4
  743. package/docs/api/output-geometric-transforms.md +65 -19
  744. package/docs/api/output-lens-corrections.md +17 -15
  745. package/docs/api/output-native-capture-sdr.md +26 -13
  746. package/docs/api/output-png-encoder.md +105 -0
  747. package/docs/api/output-print-contrast-reference.md +8 -8
  748. package/docs/api/output-print-detail.md +14 -14
  749. package/docs/api/output-print-jpeg.md +22 -5
  750. package/docs/api/output-print-plan.md +18 -18
  751. package/docs/api/output-print-region-statistics.md +14 -14
  752. package/docs/api/output-sdr-rendering.md +52 -10
  753. package/docs/api/output-subject-framing-crop.md +5 -6
  754. package/docs/api/processing-demosaic.md +120 -0
  755. package/docs/api/processing-denoise.md +148 -0
  756. package/docs/api/processing-focus-stacking.md +41 -0
  757. package/docs/api/processing-hdr.md +113 -0
  758. package/docs/api/processing-panorama.md +82 -0
  759. package/docs/api/processing-processing-task.md +107 -0
  760. package/docs/api/processing-tone-mapping.md +142 -0
  761. package/docs/api/schema-camera.md +6 -4
  762. package/docs/api/schema-illumination-spectral.md +10 -11
  763. package/docs/api/schema-illumination-temporal.md +13 -15
  764. package/docs/api/schema-illumination.md +4 -4
  765. package/docs/api/schema-scene-radiance-temporal.md +10 -11
  766. package/docs/api/schema-scene-radiance.md +18 -17
  767. package/docs/api/schema-scene.md +9 -9
  768. package/docs/api/schema-validation.md +1 -1
  769. package/docs/api/sensor-accumulated-charge.md +12 -20
  770. package/docs/api/sensor-architecture.md +15 -16
  771. package/docs/api/sensor-camera-saturation-capacity.md +9 -11
  772. package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
  773. package/docs/api/sensor-capture-mode-timing.md +9 -9
  774. package/docs/api/sensor-capture-mode.md +29 -30
  775. package/docs/api/sensor-color-sampling.md +31 -33
  776. package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
  777. package/docs/api/sensor-dark-current.md +30 -14
  778. package/docs/api/sensor-environment-photo-signal.md +13 -6
  779. package/docs/api/sensor-eqe-electron-rate.md +9 -8
  780. package/docs/api/sensor-eqe-local-exposure.md +18 -17
  781. package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
  782. package/docs/api/sensor-exposure-window.md +24 -24
  783. package/docs/api/sensor-fixed-pattern-noise.md +104 -0
  784. package/docs/api/sensor-iso-gain.md +63 -0
  785. package/docs/api/sensor-iso-signal-chain.md +13 -22
  786. package/docs/api/sensor-local-exposure-binding.md +12 -13
  787. package/docs/api/sensor-optical-stack.md +37 -40
  788. package/docs/api/sensor-photon-energy.md +10 -11
  789. package/docs/api/sensor-physical-charge-capacity.md +8 -13
  790. package/docs/api/sensor-pixel-pitch.md +1 -1
  791. package/docs/api/sensor-radiometry-readiness.md +9 -9
  792. package/docs/api/sensor-raw-readout.md +118 -52
  793. package/docs/api/sensor-raw-reconstruction.md +97 -20
  794. package/docs/api/sensor-readout-exposure-linkage.md +120 -24
  795. package/docs/api/sensor-readout-timing.md +33 -35
  796. package/docs/api/sensor-response-application-compatibility.md +9 -11
  797. package/docs/api/sensor-response-operating-range.md +14 -18
  798. package/docs/api/sensor-responsivity-photocurrent.md +9 -12
  799. package/docs/api/sensor-sampling-aperture.md +22 -25
  800. package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
  801. package/docs/api/sensor-sensor-geometry.md +23 -24
  802. package/docs/api/sensor-signal-noise.md +10 -10
  803. package/docs/api/sensor-spatial-sample-reduction.md +27 -30
  804. package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
  805. package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
  806. package/docs/api/sensor-spectral-coverage.md +5 -5
  807. package/docs/api/sensor-spectral-quadrature.md +33 -35
  808. package/docs/api/sensor-spectral-response.md +28 -16
  809. package/docs/api/sensor-temporal-photo-signal.md +6 -6
  810. package/docs/api/simulation-poc-simulation.md +17 -16
  811. package/docs/api/stabilization-camera-shake.md +29 -10
  812. package/docs/api/stabilization-system.md +25 -21
  813. package/docs/examples/production-request.json +3821 -2157
  814. package/docs/examples/simulate-capture.mjs +14 -0
  815. package/llms.txt +35 -0
  816. package/package.json +32 -11
  817. package/AGENTS.md +0 -674
  818. package/CONTRIBUTING.md +0 -76
  819. package/DCO +0 -33
  820. package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
  821. package/dist/camera/field-of-view.d.ts.map +0 -1
  822. package/dist/camera/projected-object-size.d.ts.map +0 -1
  823. package/dist/capture/capture-export-metadata.d.ts.map +0 -1
  824. package/dist/capture/environment-raw-producer.d.ts.map +0 -1
  825. package/dist/capture/export-jpeg.d.ts.map +0 -1
  826. package/dist/capture/export-tiff.d.ts.map +0 -1
  827. package/dist/capture/focus-control.d.ts.map +0 -1
  828. package/dist/capture/linear-encoding.d.ts.map +0 -1
  829. package/dist/capture/native-environment-raw.d.ts.map +0 -1
  830. package/dist/capture/native-raw-development.d.ts.map +0 -1
  831. package/dist/capture/native-raw.d.ts.map +0 -1
  832. package/dist/capture/photographic-export.d.ts.map +0 -1
  833. package/dist/capture/raw-frame-limits.d.ts.map +0 -1
  834. package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
  835. package/dist/capture/release-sequence.d.ts.map +0 -1
  836. package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
  837. package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
  838. package/dist/capture/simulated-capture.d.ts.map +0 -1
  839. package/dist/color/capture-color.d.ts.map +0 -1
  840. package/dist/color/sensor-color-development.d.ts.map +0 -1
  841. package/dist/color/srgb-icc.d.ts.map +0 -1
  842. package/dist/color/srgb-transfer.d.ts.map +0 -1
  843. package/dist/color/white-balance.d.ts.map +0 -1
  844. package/dist/composition/image-formation-plan.d.ts.map +0 -1
  845. package/dist/composition/plan-consumer.d.ts.map +0 -1
  846. package/dist/core/calculation-result.d.ts.map +0 -1
  847. package/dist/core/canonical-json.d.ts.map +0 -1
  848. package/dist/core/configuration-error.d.ts.map +0 -1
  849. package/dist/core/evidence-provenance.d.ts.map +0 -1
  850. package/dist/core/image-formation.d.ts.map +0 -1
  851. package/dist/core/owned-data.d.ts.map +0 -1
  852. package/dist/core/record-validation.d.ts.map +0 -1
  853. package/dist/core/scientific-assurance.d.ts.map +0 -1
  854. package/dist/core/spectral-composition.d.ts.map +0 -1
  855. package/dist/core/spectral.d.ts.map +0 -1
  856. package/dist/core/validation.d.ts.map +0 -1
  857. package/dist/core/version.d.ts.map +0 -1
  858. package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
  859. package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
  860. package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
  861. package/dist/equipment/iso-capabilities.d.ts.map +0 -1
  862. package/dist/equipment/metering-capabilities.d.ts.map +0 -1
  863. package/dist/equipment/release-capabilities.d.ts.map +0 -1
  864. package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
  865. package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
  866. package/dist/exposure/exposure.d.ts.map +0 -1
  867. package/dist/exposure/flash.d.ts.map +0 -1
  868. package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
  869. package/dist/exposure/metering-target.d.ts.map +0 -1
  870. package/dist/exposure/metering-temporal.d.ts.map +0 -1
  871. package/dist/exposure/metering.d.ts.map +0 -1
  872. package/dist/exposure/program-line.d.ts.map +0 -1
  873. package/dist/index.d.ts.map +0 -1
  874. package/dist/motion/camera-rotation.d.ts.map +0 -1
  875. package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
  876. package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
  877. package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
  878. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
  879. package/dist/motion/extended-object-projection.d.ts.map +0 -1
  880. package/dist/motion/projected-motion.d.ts.map +0 -1
  881. package/dist/optics/aperture.d.ts.map +0 -1
  882. package/dist/optics/circle-of-confusion.d.ts.map +0 -1
  883. package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
  884. package/dist/optics/depth-of-field.d.ts.map +0 -1
  885. package/dist/optics/diffraction.d.ts.map +0 -1
  886. package/dist/optics/focus-breathing.d.ts.map +0 -1
  887. package/dist/optics/focus-state.d.ts.map +0 -1
  888. package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
  889. package/dist/optics/illumination-vignetting.d.ts.map +0 -1
  890. package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
  891. package/dist/optics/lens-psf-profile.d.ts.map +0 -1
  892. package/dist/optics/polygon-diffraction.d.ts.map +0 -1
  893. package/dist/optics/profile-contract.d.ts.map +0 -1
  894. package/dist/optics/psf-foundation.d.ts.map +0 -1
  895. package/dist/optics/radial-distortion.d.ts.map +0 -1
  896. package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
  897. package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
  898. package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
  899. package/dist/optics/sensor-environment-query.d.ts.map +0 -1
  900. package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
  901. package/dist/optics/sensor-psf-support.d.ts.map +0 -1
  902. package/dist/optics/stray-light.d.ts.map +0 -1
  903. package/dist/optics/thin-lens.d.ts.map +0 -1
  904. package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
  905. package/dist/output/capture-geometry.d.ts.map +0 -1
  906. package/dist/output/capture-sdr.d.ts.map +0 -1
  907. package/dist/output/crop.d.ts.map +0 -1
  908. package/dist/output/geometric-transforms.d.ts.map +0 -1
  909. package/dist/output/lens-corrections.d.ts.map +0 -1
  910. package/dist/output/native-capture-sdr.d.ts.map +0 -1
  911. package/dist/output/print-contrast-reference.d.ts.map +0 -1
  912. package/dist/output/print-detail.d.ts.map +0 -1
  913. package/dist/output/print-jpeg.d.ts.map +0 -1
  914. package/dist/output/print-plan.d.ts.map +0 -1
  915. package/dist/output/print-region-statistics.d.ts.map +0 -1
  916. package/dist/output/sdr-rendering.d.ts.map +0 -1
  917. package/dist/output/subject-framing-crop.d.ts.map +0 -1
  918. package/dist/schema/camera.d.ts.map +0 -1
  919. package/dist/schema/camera.js +0 -3
  920. package/dist/schema/camera.js.map +0 -1
  921. package/dist/schema/illumination-spectral.d.ts.map +0 -1
  922. package/dist/schema/illumination-temporal.d.ts.map +0 -1
  923. package/dist/schema/illumination.d.ts.map +0 -1
  924. package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
  925. package/dist/schema/scene-radiance.d.ts.map +0 -1
  926. package/dist/schema/scene.d.ts.map +0 -1
  927. package/dist/schema/scene.js +0 -3
  928. package/dist/schema/scene.js.map +0 -1
  929. package/dist/schema/validation.d.ts.map +0 -1
  930. package/dist/sensor/accumulated-charge.d.ts.map +0 -1
  931. package/dist/sensor/architecture.d.ts.map +0 -1
  932. package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
  933. package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
  934. package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
  935. package/dist/sensor/capture-mode.d.ts.map +0 -1
  936. package/dist/sensor/color-sampling.d.ts.map +0 -1
  937. package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
  938. package/dist/sensor/dark-current.d.ts.map +0 -1
  939. package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
  940. package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
  941. package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
  942. package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
  943. package/dist/sensor/exposure-window.d.ts.map +0 -1
  944. package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
  945. package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
  946. package/dist/sensor/optical-stack.d.ts.map +0 -1
  947. package/dist/sensor/photon-energy.d.ts.map +0 -1
  948. package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
  949. package/dist/sensor/pixel-pitch.d.ts.map +0 -1
  950. package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
  951. package/dist/sensor/raw-readout.d.ts.map +0 -1
  952. package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
  953. package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
  954. package/dist/sensor/readout-timing.d.ts.map +0 -1
  955. package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
  956. package/dist/sensor/response-operating-range.d.ts.map +0 -1
  957. package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
  958. package/dist/sensor/sampling-aperture.d.ts.map +0 -1
  959. package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
  960. package/dist/sensor/sensor-geometry.d.ts.map +0 -1
  961. package/dist/sensor/signal-noise.d.ts.map +0 -1
  962. package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
  963. package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
  964. package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
  965. package/dist/sensor/spectral-coverage.d.ts.map +0 -1
  966. package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
  967. package/dist/sensor/spectral-response.d.ts.map +0 -1
  968. package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
  969. package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
  970. package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
  971. package/dist/simulation/poc-simulation.d.ts.map +0 -1
  972. package/dist/stabilization/camera-shake.d.ts.map +0 -1
  973. package/dist/stabilization/system.d.ts.map +0 -1
  974. package/docs/API_STYLE.md +0 -235
  975. package/docs/ARCHITECTURE.md +0 -356
  976. package/docs/AUTOMATION_COORDINATION.md +0 -190
  977. package/docs/CAPTURE_COLOR.md +0 -25
  978. package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
  979. package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
  980. package/docs/CAPTURE_SDR.md +0 -22
  981. package/docs/DENSE_PUPIL_QUALIFICATION.md +0 -121
  982. package/docs/DEVELOPERS.md +0 -68
  983. package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
  984. package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
  985. package/docs/EXPORT_ACCEPTANCE.md +0 -133
  986. package/docs/GENERIC_TIER_PRESETS.md +0 -269
  987. package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
  988. package/docs/IMAGE_FORMATION.md +0 -247
  989. package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
  990. package/docs/MOTION_AND_SIGNAL.md +0 -250
  991. package/docs/NATIVE_CAPTURE_SDR.md +0 -70
  992. package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
  993. package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
  994. package/docs/NATIVE_RAW_AND_PRINT.md +0 -54
  995. package/docs/NUMERICAL_CORRECTNESS.md +0 -191
  996. package/docs/PERFORMANCE_BASELINE.md +0 -56
  997. package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
  998. package/docs/PHYSICS_FOUNDATION.md +0 -426
  999. package/docs/POC_API.md +0 -278
  1000. package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
  1001. package/docs/POC_PROJECTION_REUSE.md +0 -124
  1002. package/docs/PRINT_195_196_REVIEW.md +0 -93
  1003. package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
  1004. package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
  1005. package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
  1006. package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
  1007. package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
  1008. package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
  1009. package/docs/PRINT_PLANNING.md +0 -75
  1010. package/docs/PRINT_REGION_STATISTICS.md +0 -38
  1011. package/docs/PROCESSED_OUTPUT.md +0 -157
  1012. package/docs/PRODUCTION_COMPOSITION.md +0 -373
  1013. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
  1014. package/docs/PROVENANCE.md +0 -115
  1015. package/docs/PSF_FOUNDATION.md +0 -165
  1016. package/docs/RAW_FRAME_ENVELOPE.md +0 -56
  1017. package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
  1018. package/docs/RELEASE_1_0.md +0 -66
  1019. package/docs/RELEASE_1_0_1.md +0 -61
  1020. package/docs/RELEASE_1_1_0.md +0 -25
  1021. package/docs/RELEASE_1_2_0.md +0 -51
  1022. package/docs/RELEASE_1_3_0.md +0 -15
  1023. package/docs/RELEASE_1_4_0.md +0 -23
  1024. package/docs/RELEASE_1_5_0.md +0 -105
  1025. package/docs/RELEASE_AUDIT.md +0 -39
  1026. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
  1027. package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
  1028. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
  1029. package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
  1030. package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
  1031. package/docs/SDR_RENDERING.md +0 -33
  1032. package/docs/SENSOR_APERTURE_RAYS.md +0 -23
  1033. package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
  1034. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
  1035. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
  1036. package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
  1037. package/docs/SENSOR_RAW_FRAME.md +0 -20
  1038. package/docs/SENSOR_RAW_PRODUCER.md +0 -77
  1039. package/docs/SEPARABLE_EMISSION_DRAFT.md +0 -103
  1040. package/docs/SIGNAL_CONFORMANCE.md +0 -23
  1041. package/docs/SIMULATED_CAPTURE.md +0 -65
  1042. package/docs/STABILIZATION.md +0 -234
  1043. package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
  1044. package/docs/TIER_ACCEPTANCE.md +0 -129
  1045. package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
  1046. package/docs/V1_COMPOSITION_MAP.md +0 -123
  1047. package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
  1048. package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
  1049. package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
  1050. package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
  1051. package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
  1052. package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
  1053. package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
  1054. package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
  1055. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
  1056. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
  1057. package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
  1058. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
  1059. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
  1060. package/docs/licenses/castleCSF-MIT.txt +0 -21
  1061. package/docs/validation/dense-pupil-2026-10-06/pilot.jsonl +0 -6
  1062. package/docs/validation/documentation-fragments.json +0 -212
  1063. package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
  1064. package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
  1065. package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
  1066. package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
  1067. package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
  1068. package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
  1069. package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
  1070. package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
  1071. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
  1072. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
  1073. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
  1074. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
  1075. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
  1076. package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
  1077. package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
  1078. package/docs/validation/print-196-candidate-capabilities.json +0 -28
  1079. package/docs/validation/print-196-candidate-evidence.json +0 -356
  1080. package/docs/validation/print-196-engine-acceptance.json +0 -81
  1081. package/docs/validation/print-detail-capabilities.json +0 -103
  1082. package/docs/validation/print-detail-jpeg-evidence.json +0 -116
  1083. package/docs/validation/print-detail-sdr-evidence.json +0 -81
  1084. package/docs/validation/release-audit-inventory.json +0 -1306
  1085. package/docs/validation/tier-acceptance-report-v1.json +0 -2538
@@ -1 +1 @@
1
- {"version":3,"file":"response-application-compatibility.js","sourceRoot":"","sources":["../../src/sensor/response-application-compatibility.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response-application-compatibility.js","sourceRoot":"","sources":["../../src/sensor/response-application-compatibility.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Response application compatibility: checks that a measured sensor response can be applied to this\n * light input.\n *\n * It checks the exact profile and channel, the plane where the input light is measured (source\n * plane), the area the response refers to, spatial uniformity and the reference conditions of the\n * measurement. Passing this check alone does not allow converting light to signal. The per-bin\n * operating-range check and the EQE or A/W conversion are separate steps.\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 SensorSpectralReferenceConditions,\n SensorSpectralResponseScientificStatus\n} from \"./spectral-response.js\";\nimport type {\n SensorSpatioSpectralIrradianceReduction\n} from \"./spatio-spectral-reduction.js\";\nimport { requireInputObject, requireInputKeys, rejectUnknownFields, rejectUnknownVariantFields } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nconst AREA_TOLERANCE = 1e-10;\n\nexport type SensorResponseSourcePlane =\n | \"sensor-package-incident\"\n | \"site-incident\";\n\nexport type SensorResponseIncidentAreaBasis =\n | {\n kind: \"geometric-sensitive-aperture\";\n areaSquareMicrometers: number;\n }\n | {\n kind: \"full-site-cell\";\n areaSquareMicrometers: number;\n }\n | {\n kind: \"effective-collection-area\";\n areaSquareMicrometers: number;\n };\n\nexport type SensorResponseSpatialModel =\n | {\n kind:\n \"uniform-over-geometric-sensitive-aperture\";\n scientificStatus:\n SensorSpectralResponseScientificStatus;\n evidence: readonly EvidenceProvenance[];\n limitation?: string;\n }\n | {\n kind: \"not-established\";\n limitation: string;\n };\n\nexport type SensorResponseReferenceConditionPolicy =\n | {\n kind: \"exact-match-required\";\n }\n | {\n kind: \"assume-compatible\";\n limitation: string;\n evidence: readonly EvidenceProvenance[];\n };\n\nexport interface SensorResponseApplicationProfile {\n schemaVersion: \"0.1.0\";\n profileId: string;\n spectralResponseProfileId: string;\n colorSamplingProfileId: string;\n channelId: string;\n samplingApertureProfileId: string;\n opticalStackProfileId: string;\n evidence: readonly EvidenceProvenance[];\n incidentAreaBasis:\n SensorResponseIncidentAreaBasis;\n spatialResponseModel:\n SensorResponseSpatialModel;\n referenceConditionPolicy:\n SensorResponseReferenceConditionPolicy;\n}\n\nexport interface SourcedSensorResponseSourcePlane {\n value: SensorResponseSourcePlane;\n evidence: readonly EvidenceProvenance[];\n}\n\nexport interface AssessSensorResponseApplicationCompatibilityInput {\n reduction:\n SensorSpatioSpectralIrradianceReduction;\n applicationProfile:\n SensorResponseApplicationProfile;\n sourcePlane:\n SourcedSensorResponseSourcePlane;\n operatingConditions?:\n SensorSpectralReferenceConditions;\n}\n\nexport type SensorResponseApplicationCompatibilityBlocker =\n | \"spectral-response-profile-id-mismatch\"\n | \"color-sampling-profile-id-mismatch\"\n | \"channel-id-mismatch\"\n | \"sampling-aperture-profile-id-missing\"\n | \"sampling-aperture-profile-id-mismatch\"\n | \"optical-stack-profile-id-missing\"\n | \"optical-stack-profile-id-mismatch\"\n | \"source-plane-mismatch\"\n | \"wavelength-basis-unresolved\"\n | \"incident-area-basis-not-currently-integrated\"\n | \"incident-area-mismatch\"\n | \"spatial-response-uniformity-not-established\"\n | \"response-reference-conditions-not-declared\"\n | \"operating-conditions-not-declared\"\n | \"operating-conditions-mismatch\";\n\nexport type SensorResponseSignalPath =\n | \"photon-rate-to-electrons\"\n | \"radiant-power-to-current\";\n\nexport interface SensorResponseApplicationCompatibilityAssessment {\n applicationProfileId: string;\n spectralResponseProfileId: string;\n colorSamplingProfileId: string;\n channelId: string;\n responseScope:\n SensorSpatioSpectralIrradianceReduction[\"responseScope\"];\n requiredSourcePlane:\n SensorResponseSourcePlane;\n suppliedSourcePlane:\n SensorResponseSourcePlane;\n sourcePlaneMatched: boolean;\n responseIncidentAreaBasis:\n SensorResponseIncidentAreaBasis;\n currentlyIntegratedAreaBasis:\n \"geometric-sensitive-aperture\";\n geometricApertureAreaSquareMicrometers:\n number;\n nominalSiteCellAreaSquareMicrometers?:\n number;\n spatialResponseModel:\n SensorResponseSpatialModel;\n referenceConditionPolicy:\n SensorResponseReferenceConditionPolicy;\n responseReferenceConditions?:\n SensorSpectralReferenceConditions;\n operatingConditions?:\n SensorSpectralReferenceConditions;\n structuralCompatibilityEstablished:\n boolean;\n compatibilityStatus:\n | \"compatible\"\n | \"compatible-approximation\"\n | \"blocked\";\n blockers:\n readonly SensorResponseApplicationCompatibilityBlocker[];\n requiredSignalPath:\n SensorResponseSignalPath;\n quantifiedResponseUncertaintyAvailable:\n boolean;\n responseApplicationPerformed: false;\n signalConversionAuthorized: false;\n temporalIntegrationAuthorized: false;\n photonConversionPerformed: false;\n electronConversionPerformed: false;\n currentConversionPerformed: false;\n operatingRangeCompatibilityAssessed: false;\n spatiallyVaryingResponseSupported: false;\n componentEvidence: {\n applicationProfile:\n readonly EvidenceProvenance[];\n sourcePlane:\n readonly EvidenceProvenance[];\n spatialResponse:\n readonly EvidenceProvenance[];\n referenceConditionAssumption:\n readonly EvidenceProvenance[];\n response:\n SensorSpatioSpectralIrradianceReduction[\"componentEvidence\"][\"spectral\"];\n };\n}\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty string.\"\n );\n }\n return value;\n}\n\nfunction requirePositiveFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value <= 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be finite and greater than zero.\"\n );\n }\n return value;\n}\n\nfunction parseIncidentAreaBasis(\n value: unknown,\n path: string\n): SensorResponseIncidentAreaBasis {\n const record =\n requireRecord(value, path, [\"areaSquareMicrometers\", \"kind\"]);\n const areaSquareMicrometers =\n requirePositiveFinite(\n record.areaSquareMicrometers,\n path + \".areaSquareMicrometers\"\n );\n\n if (\n record.kind !==\n \"geometric-sensitive-aperture\" &&\n record.kind !== \"full-site-cell\" &&\n record.kind !==\n \"effective-collection-area\"\n ) {\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n }\n\n return {\n kind: record.kind,\n areaSquareMicrometers\n };\n}\n\nfunction parseSpatialResponseModel(\n value: unknown,\n path: string\n): SensorResponseSpatialModel {\n const record =\n requireRecord(value, path, null);\n rejectUnknownVariantFields(record, \"kind\", { \"not-established\": [\"kind\", \"limitation\"], \"uniform-over-geometric-sensitive-aperture\": [\"kind\", \"scientificStatus\", \"evidence\", \"limitation\"] }, path);\n\n if (\n record.kind === \"not-established\"\n ) {\n return {\n kind: \"not-established\",\n limitation: requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n )\n };\n }\n\n if (\n record.kind !==\n \"uniform-over-geometric-sensitive-aperture\"\n ) {\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n }\n\n if (\n record.scientificStatus !==\n \"calibrated\" &&\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n path +\n \".scientificStatus is invalid.\"\n );\n }\n\n const limitation =\n record.limitation === undefined\n ? undefined\n : requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n );\n\n if (\n record.scientificStatus ===\n \"approximation\" &&\n limitation === undefined\n ) {\n throw new InvalidConfigurationError(\n path +\n \".limitation is required for an approximation.\"\n );\n }\n\n return {\n kind:\n \"uniform-over-geometric-sensitive-aperture\",\n scientificStatus:\n record.scientificStatus,\n evidence: parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n ),\n ...(limitation === undefined\n ? {}\n : { limitation })\n };\n}\n\nfunction parseReferenceConditionPolicy(\n value: unknown,\n path: string\n): SensorResponseReferenceConditionPolicy {\n const record =\n requireRecord(value, path, null);\n rejectUnknownVariantFields(record, \"kind\", { \"exact-match-required\": [\"kind\"], \"assume-compatible\": [\"kind\", \"limitation\", \"evidence\"] }, path);\n\n if (\n record.kind ===\n \"exact-match-required\"\n ) {\n return {\n kind: \"exact-match-required\"\n };\n }\n\n if (\n record.kind === \"assume-compatible\"\n ) {\n return {\n kind: \"assume-compatible\",\n limitation: requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n ),\n evidence: parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n )\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\n/**\n * Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,\n * missing required fields and inconsistent scientific data are rejected.\n *\n * The profile states the source plane, incident-area basis, spatial uniformity and reference\n * conditions under which a response applies.\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 parseSensorResponseApplicationProfile(\n value: unknown\n): SensorResponseApplicationProfile {\n const record = requireRecord(\n value,\n \"sensorResponseApplication\", [\"schemaVersion\", \"profileId\", \"spectralResponseProfileId\", \"colorSamplingProfileId\", \"channelId\", \"samplingApertureProfileId\", \"opticalStackProfileId\", \"evidence\", \"incidentAreaBasis\", \"spatialResponseModel\", \"referenceConditionPolicy\"]\n );\n\n if (\n record.schemaVersion !== \"0.1.0\"\n ) {\n throw new InvalidConfigurationError(\n 'sensorResponseApplication.schemaVersion must be \"0.1.0\".'\n );\n }\n\n return {\n schemaVersion: \"0.1.0\",\n profileId: requireNonEmptyString(\n record.profileId,\n \"sensorResponseApplication.profileId\"\n ),\n spectralResponseProfileId:\n requireNonEmptyString(\n record.spectralResponseProfileId,\n \"sensorResponseApplication.spectralResponseProfileId\"\n ),\n colorSamplingProfileId:\n requireNonEmptyString(\n record.colorSamplingProfileId,\n \"sensorResponseApplication.colorSamplingProfileId\"\n ),\n channelId: requireNonEmptyString(\n record.channelId,\n \"sensorResponseApplication.channelId\"\n ),\n samplingApertureProfileId:\n requireNonEmptyString(\n record.samplingApertureProfileId,\n \"sensorResponseApplication.samplingApertureProfileId\"\n ),\n opticalStackProfileId:\n requireNonEmptyString(\n record.opticalStackProfileId,\n \"sensorResponseApplication.opticalStackProfileId\"\n ),\n evidence: parseEvidenceList(\n record.evidence,\n \"sensorResponseApplication.evidence\"\n ),\n incidentAreaBasis:\n parseIncidentAreaBasis(\n record.incidentAreaBasis,\n \"sensorResponseApplication.incidentAreaBasis\"\n ),\n spatialResponseModel:\n parseSpatialResponseModel(\n record.spatialResponseModel,\n \"sensorResponseApplication.spatialResponseModel\"\n ),\n referenceConditionPolicy:\n parseReferenceConditionPolicy(\n record.referenceConditionPolicy,\n \"sensorResponseApplication.referenceConditionPolicy\"\n )\n };\n}\n\nfunction parseSourcePlane(\n value:\n SourcedSensorResponseSourcePlane\n): SourcedSensorResponseSourcePlane {\n const record = requireRecord(\n value,\n \"sourcePlane\", [\"value\", \"evidence\"]\n );\n if (\n record.value !==\n \"sensor-package-incident\" &&\n record.value !== \"site-incident\"\n ) {\n throw new InvalidConfigurationError(\n \"sourcePlane.value is invalid.\"\n );\n }\n return {\n value: record.value,\n evidence: parseEvidenceList(\n record.evidence,\n \"sourcePlane.evidence\"\n )\n };\n}\n\nfunction requiredSourcePlane(\n scope:\n SensorSpatioSpectralIrradianceReduction[\"responseScope\"]\n): SensorResponseSourcePlane {\n return scope ===\n \"sensor-package-incident-effective-channel-response\"\n ? \"sensor-package-incident\"\n : \"site-incident\";\n}\n\nfunction approximatelyEqual(\n actual: number,\n expected: number\n): boolean {\n const scale = Math.max(\n 1,\n Math.abs(actual),\n Math.abs(expected)\n );\n return (\n Math.abs(actual - expected) <=\n AREA_TOLERANCE * scale\n );\n}\n\nfunction conditionsMatch(\n reference:\n SensorSpectralReferenceConditions,\n operating:\n SensorSpectralReferenceConditions\n): boolean {\n if (\n reference.temperatureC !==\n undefined &&\n operating.temperatureC !==\n reference.temperatureC\n ) {\n return false;\n }\n if (\n reference\n .incidenceAngleDegreesFromNormal !==\n undefined &&\n operating\n .incidenceAngleDegreesFromNormal !==\n reference\n .incidenceAngleDegreesFromNormal\n ) {\n return false;\n }\n if (\n reference.polarization !==\n undefined &&\n operating.polarization !==\n reference.polarization\n ) {\n return false;\n }\n return true;\n}\n\nfunction validateReductionBoundary(\n reduction:\n SensorSpatioSpectralIrradianceReduction\n): number {\n requireInputObject(reduction, \"reduction input\");\n if (\n reduction.outputMeaning !==\n \"pre-response-spatio-spectral-radiometric-reduction\" ||\n reduction\n .spectralResponseApplicationPerformed !==\n false ||\n reduction.quantumEfficiencyApplied !==\n false ||\n reduction.spectralResponsivityApplied !==\n false ||\n reduction.temporalIntegrationApplied !==\n false\n ) {\n throw new InvalidScientificInputError(\n \"reduction must remain a pre-response, pre-temporal spatio-spectral result.\"\n );\n }\n\n if (\n typeof reduction\n .geometricApertureAreaSquareMicrometers !==\n \"number\" ||\n !Number.isFinite(\n reduction\n .geometricApertureAreaSquareMicrometers\n ) ||\n reduction\n .geometricApertureAreaSquareMicrometers <=\n 0\n ) {\n throw new InvalidScientificInputError(\n \"reduction.geometricApertureAreaSquareMicrometers is required and must be positive.\"\n );\n }\n\n return reduction\n .geometricApertureAreaSquareMicrometers;\n}\n\n/**\n * Checks whether the source plane, area, profile, channel and reference conditions allow the\n * selected way of applying the response.\n *\n * Passing this alone does not allow converting light to signal. The per-bin operating-range check\n * and the EQE or A/W conversion are separate steps.\n * @param input - The input; see `AssessSensorResponseApplicationCompatibilityInput` for its fields, units and coordinates.\n * @returns The assessment. Read its structured blockers before acting on an authorization.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function assessSensorResponseApplicationCompatibility(\n input:\n AssessSensorResponseApplicationCompatibilityInput\n): CalculationResult<SensorResponseApplicationCompatibilityAssessment> {\n requireInputKeys(input, \"assessSensorResponseApplicationCompatibility\", [\"reduction\", \"applicationProfile\", \"sourcePlane\", \"operatingConditions\"]);\n const geometricArea =\n validateReductionBoundary(\n input.reduction\n );\n const profile =\n parseSensorResponseApplicationProfile(\n input.applicationProfile\n );\n const sourcePlane =\n parseSourcePlane(input.sourcePlane);\n const blockers:\n SensorResponseApplicationCompatibilityBlocker[] =\n [];\n\n if (\n profile.spectralResponseProfileId !==\n input.reduction.responseProfileId\n ) {\n blockers.push(\n \"spectral-response-profile-id-mismatch\"\n );\n }\n if (\n profile.colorSamplingProfileId !==\n input.reduction\n .colorSamplingProfileId\n ) {\n blockers.push(\n \"color-sampling-profile-id-mismatch\"\n );\n }\n if (\n profile.channelId !==\n input.reduction.channelId\n ) {\n blockers.push(\n \"channel-id-mismatch\"\n );\n }\n\n const samplingApertureProfileId =\n input.reduction\n .samplingApertureProfileId;\n if (\n samplingApertureProfileId ===\n undefined\n ) {\n blockers.push(\n \"sampling-aperture-profile-id-missing\"\n );\n } else if (\n samplingApertureProfileId !==\n profile.samplingApertureProfileId\n ) {\n blockers.push(\n \"sampling-aperture-profile-id-mismatch\"\n );\n }\n\n const opticalStackProfileId =\n input.reduction\n .opticalStackProfileId;\n if (\n opticalStackProfileId === undefined\n ) {\n blockers.push(\n \"optical-stack-profile-id-missing\"\n );\n } else if (\n opticalStackProfileId !==\n profile.opticalStackProfileId\n ) {\n blockers.push(\n \"optical-stack-profile-id-mismatch\"\n );\n }\n\n const requiredPlane =\n requiredSourcePlane(\n input.reduction.responseScope\n );\n const sourcePlaneMatched =\n sourcePlane.value === requiredPlane;\n if (!sourcePlaneMatched) {\n blockers.push(\n \"source-plane-mismatch\"\n );\n }\n\n if (\n !input.reduction\n .wavelengthBasisResolved\n ) {\n blockers.push(\n \"wavelength-basis-unresolved\"\n );\n }\n\n if (\n profile.incidentAreaBasis.kind !==\n \"geometric-sensitive-aperture\"\n ) {\n blockers.push(\n \"incident-area-basis-not-currently-integrated\"\n );\n } else if (\n !approximatelyEqual(\n profile.incidentAreaBasis\n .areaSquareMicrometers,\n geometricArea\n )\n ) {\n blockers.push(\n \"incident-area-mismatch\"\n );\n }\n\n if (\n profile.spatialResponseModel.kind ===\n \"not-established\"\n ) {\n blockers.push(\n \"spatial-response-uniformity-not-established\"\n );\n }\n\n if (\n profile.referenceConditionPolicy.kind ===\n \"exact-match-required\"\n ) {\n const referenceConditions =\n input.reduction\n .responseReferenceConditions;\n if (\n referenceConditions === undefined\n ) {\n blockers.push(\n \"response-reference-conditions-not-declared\"\n );\n } else if (\n input.operatingConditions ===\n undefined\n ) {\n blockers.push(\n \"operating-conditions-not-declared\"\n );\n } else if (\n !conditionsMatch(\n referenceConditions,\n input.operatingConditions\n )\n ) {\n blockers.push(\n \"operating-conditions-mismatch\"\n );\n }\n }\n\n const structurallyCompatible =\n blockers.length === 0;\n\n const approximation =\n input.reduction\n .responseScientificStatus ===\n \"approximation\" ||\n (\n profile.spatialResponseModel.kind ===\n \"uniform-over-geometric-sensitive-aperture\" &&\n profile.spatialResponseModel\n .scientificStatus ===\n \"approximation\"\n ) ||\n profile.referenceConditionPolicy.kind ===\n \"assume-compatible\";\n\n const compatibilityStatus =\n structurallyCompatible\n ? approximation\n ? \"compatible-approximation\"\n : \"compatible\"\n : \"blocked\";\n\n const spatialEvidence =\n profile.spatialResponseModel.kind ===\n \"uniform-over-geometric-sensitive-aperture\"\n ? profile.spatialResponseModel.evidence\n : [];\n const referenceConditionEvidence =\n profile.referenceConditionPolicy.kind ===\n \"assume-compatible\"\n ? profile.referenceConditionPolicy\n .evidence\n : [];\n\n return calculatedResult(\n {\n applicationProfileId:\n profile.profileId,\n spectralResponseProfileId:\n input.reduction\n .responseProfileId,\n colorSamplingProfileId:\n input.reduction\n .colorSamplingProfileId,\n channelId:\n input.reduction.channelId,\n responseScope:\n input.reduction.responseScope,\n requiredSourcePlane:\n requiredPlane,\n suppliedSourcePlane:\n sourcePlane.value,\n sourcePlaneMatched,\n responseIncidentAreaBasis:\n profile.incidentAreaBasis,\n currentlyIntegratedAreaBasis:\n \"geometric-sensitive-aperture\",\n geometricApertureAreaSquareMicrometers:\n geometricArea,\n ...(input.reduction\n .nominalSiteCellAreaSquareMicrometers ===\n undefined\n ? {}\n : {\n nominalSiteCellAreaSquareMicrometers:\n input.reduction\n .nominalSiteCellAreaSquareMicrometers\n }),\n spatialResponseModel:\n profile.spatialResponseModel,\n referenceConditionPolicy:\n profile.referenceConditionPolicy,\n ...(input.reduction\n .responseReferenceConditions ===\n undefined\n ? {}\n : {\n responseReferenceConditions:\n input.reduction\n .responseReferenceConditions\n }),\n ...(input.operatingConditions ===\n undefined\n ? {}\n : {\n operatingConditions:\n input.operatingConditions\n }),\n structuralCompatibilityEstablished:\n structurallyCompatible,\n compatibilityStatus,\n blockers,\n requiredSignalPath:\n input.reduction\n .sourceResponseKind ===\n \"effective-spectral-responsivity\"\n ? \"radiant-power-to-current\"\n : \"photon-rate-to-electrons\",\n quantifiedResponseUncertaintyAvailable:\n input.reduction\n .responseUncertainty.kind ===\n \"relative\",\n responseApplicationPerformed:\n false,\n signalConversionAuthorized:\n false,\n temporalIntegrationAuthorized:\n false,\n photonConversionPerformed:\n false,\n electronConversionPerformed:\n false,\n currentConversionPerformed:\n false,\n operatingRangeCompatibilityAssessed:\n false,\n spatiallyVaryingResponseSupported:\n false,\n componentEvidence: {\n applicationProfile:\n profile.evidence,\n sourcePlane:\n sourcePlane.evidence,\n spatialResponse:\n spatialEvidence,\n referenceConditionAssumption:\n referenceConditionEvidence,\n response:\n input.reduction\n .componentEvidence.spectral\n }\n },\n \"sensor-response-application-compatibility\",\n \"1.0.0\",\n [\n \"This result is a structural compatibility gate only; it never authorizes or performs sensor-response signal conversion.\",\n \"Response reference plane is derived from responseScope. Package-incident and site-incident inputs are not interchangeable.\",\n \"The current spatio-spectral reducer integrates the geometric sensitive aperture only. Full-site-cell and effective-collection-area response normalizations remain blocked until matching radiometric integrations exist.\",\n \"A scalar wavelength-only response may be applied after spatial reduction only when uniform/separable response over the integrated geometric aperture is explicitly established or declared as an approximation.\",\n \"Exact reference-condition matching is required when that policy is selected because temperature, incidence-angle and polarization dependence are not modeled.\",\n \"An unresolved wavelength basis is incompatible with physical response application.\",\n \"Typical total-pixel QE definitions can include fill factor and microlens effects; they must not be applied to geometric-sensitive-aperture flux unless the response normalization explicitly matches that area basis.\",\n \"Response linearity/dynamic-range validity is not assessed by this gate and remains required before a future conversion can claim calibrated applicability.\",\n \"EQE/filter×EQE responses require a future photon-rate→electron path; A/W responsivity requires a separate radiant-power→current path.\",\n \"Temporal integration, photons/electrons/current, noise, saturation, ADC/RAW conversion and reconstruction remain downstream.\"\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. Operating-range
5
- * assessment preserves incident power versus irradiance, wavelength support, reference conditions and
6
- * declared nonlinearity criterion. Per-bin conversion requires spectral-bin applicability and spatial
7
- * linear superposition. Valid mean input must not conceal an invalid bright local sub-aperture.
8
- * Assess every declared spectral-bin input against operating applicability and superposition before
9
- * authorizing instantaneous response conversion. Operating-range assessment preserves incident power
10
- * versus irradiance, wavelength support, reference conditions and declared nonlinearity criterion.
11
- * Per-bin conversion requires spectral-bin applicability and spatial linear superposition. Valid mean
12
- * input must not conceal an invalid bright local sub-aperture.
2
+ * Response operating range: checks that the light input is inside the range where the measured
3
+ * sensor response is valid (linear within a declared criterion).
4
+ *
5
+ * It keeps incident power and irradiance distinct, and respects wavelength coverage, reference
6
+ * conditions and the declared non-linearity criterion. Converting each spectral bin needs that bin to
7
+ * be in range and needs spatial linear superposition (the response to a sum of inputs is the sum of
8
+ * the responses). A valid average must not hide a part of the aperture that is too bright.
13
9
  * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
14
10
  * limits.
15
11
  */
@@ -70,14 +66,14 @@ export interface SensorResponseOperatingRangeProfile {
70
66
  wavelengthApplicability: SensorResponseOperatingWavelengthApplicability;
71
67
  linearityCriterion: SensorResponseLinearityCriterion;
72
68
  /**
73
- * Optional for backward compatibility. Omission parses as not-established
74
- * and blocks new response-rate authorization.
69
+ * Optional for backward compatibility. If omitted, it parses as "not
70
+ * established", which blocks new response-rate conversions.
75
71
  */
76
72
  spatialLinearityModel?: SensorResponseOperatingSpatialLinearityModel;
77
73
  /**
78
- * Optional for backward compatibility. Omission means the calibration only
79
- * establishes a broadband-integrated operating range and cannot authorize
80
- * wavelength-by-wavelength response conversion.
74
+ * Optional for backward compatibility. If omitted, the calibration only
75
+ * establishes an operating range for broadband (wavelength-integrated) input,
76
+ * and cannot allow wavelength-by-wavelength response conversion.
81
77
  */
82
78
  spectralInputModel?: SensorResponseOperatingSpectralInputModel;
83
79
  referenceConditions?: SensorSpectralReferenceConditions;
@@ -143,31 +139,26 @@ export interface SensorResponseOperatingRangeAssessment {
143
139
  };
144
140
  }
145
141
  /**
146
- * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
147
- * missing required fields and incompatible scientific data fail at this boundary.
142
+ * Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,
143
+ * missing required fields and inconsistent scientific data are rejected.
148
144
  *
149
- * Operating-range assessment preserves incident power versus irradiance, wavelength support, reference
150
- * conditions and declared nonlinearity criterion. Per-bin conversion requires spectral-bin
151
- * applicability and spatial linear superposition. Valid mean input must not conceal an invalid bright
152
- * local sub-aperture.
153
- * @param value - unknown. Treated as untrusted data; static typing alone is not validation.
154
- * @returns SensorResponseOperatingRangeProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
145
+ * The profile states the input quantity (incident power or irradiance), wavelength coverage,
146
+ * reference conditions and non-linearity criterion of the calibrated operating range.
147
+ * @param value - Untrusted data. TypeScript types alone are not validation.
148
+ * @returns The result. Success does not imply calibration.
155
149
  *
156
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
150
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
157
151
  */
158
152
  export declare function parseSensorResponseOperatingRangeProfile(value: unknown): SensorResponseOperatingRangeProfile;
159
153
  /**
160
- * Assess every declared spectral-bin input against operating applicability and superposition before
161
- * authorizing instantaneous response conversion.
154
+ * Checks every declared spectral-bin input against the operating range and the superposition
155
+ * requirement, before any instantaneous response conversion is allowed.
162
156
  *
163
- * Operating-range assessment preserves incident power versus irradiance, wavelength support, reference
164
- * conditions and declared nonlinearity criterion. Per-bin conversion requires spectral-bin
165
- * applicability and spatial linear superposition. Valid mean input must not conceal an invalid bright
166
- * local sub-aperture.
167
- * @param input - AssessSensorResponseOperatingRangeInput. See the linked contract for coordinate, unit and profile binding semantics.
168
- * @returns CalculationResult<SensorResponseOperatingRangeAssessment>. Read structured blockers before consuming an authorization.
157
+ * Each bin must be in range, and spatial linear superposition must hold. A valid average must not
158
+ * hide a part of the aperture that is too bright.
159
+ * @param input - The input; see `AssessSensorResponseOperatingRangeInput` for its fields, units and coordinates.
160
+ * @returns The assessment. Read its structured blockers before acting on an authorization.
169
161
  *
170
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
162
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
171
163
  */
172
164
  export declare function assessSensorResponseOperatingRange(input: AssessSensorResponseOperatingRangeInput): CalculationResult<SensorResponseOperatingRangeAssessment>;
173
- //# sourceMappingURL=response-operating-range.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. Operating-range
6
- * assessment preserves incident power versus irradiance, wavelength support, reference conditions and
7
- * declared nonlinearity criterion. Per-bin conversion requires spectral-bin applicability and spatial
8
- * linear superposition. Valid mean input must not conceal an invalid bright local sub-aperture.
9
- * Assess every declared spectral-bin input against operating applicability and superposition before
10
- * authorizing instantaneous response conversion. Operating-range assessment preserves incident power
11
- * versus irradiance, wavelength support, reference conditions and declared nonlinearity criterion.
12
- * Per-bin conversion requires spectral-bin applicability and spatial linear superposition. Valid mean
13
- * input must not conceal an invalid bright local sub-aperture.
3
+ * Response operating range: checks that the light input is inside the range where the measured
4
+ * sensor response is valid (linear within a declared criterion).
5
+ *
6
+ * It keeps incident power and irradiance distinct, and respects wavelength coverage, reference
7
+ * conditions and the declared non-linearity criterion. Converting each spectral bin needs that bin to
8
+ * be in range and needs spatial linear superposition (the response to a sum of inputs is the sum of
9
+ * the responses). A valid average must not hide a part of the aperture that is too bright.
14
10
  * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
15
11
  * limits.
16
12
  */
@@ -18,12 +14,15 @@ 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";
21
- function requireRecord(value, path) {
17
+ import { requireInputObject, requireInputKeys, rejectUnknownFields, rejectUnknownVariantFields, UNCERTAINTY_VARIANT_FIELDS } from "../core/record-validation.js";
18
+ function requireRecord(value, path, allowedKeys) {
22
19
  if (typeof value !== "object" ||
23
20
  value === null ||
24
21
  Array.isArray(value)) {
25
22
  throw new InvalidConfigurationError(path + " must be an object.");
26
23
  }
24
+ if (allowedKeys !== null)
25
+ rejectUnknownFields(value, allowedKeys, path);
27
26
  return value;
28
27
  }
29
28
  function requireNonEmptyString(value, path) {
@@ -52,7 +51,8 @@ function requirePositiveFinite(value, path) {
52
51
  return value;
53
52
  }
54
53
  function parseUncertainty(value, path) {
55
- const record = requireRecord(value, path);
54
+ const record = requireRecord(value, path, null);
55
+ rejectUnknownVariantFields(record, "kind", UNCERTAINTY_VARIANT_FIELDS, path);
56
56
  if (record.kind === "relative") {
57
57
  const fraction = requireFiniteNonNegative(record.fraction, path + ".fraction");
58
58
  return {
@@ -70,7 +70,7 @@ function parseUncertainty(value, path) {
70
70
  throw new InvalidConfigurationError(path + ".kind is invalid.");
71
71
  }
72
72
  function parseReferenceConditions(value, path) {
73
- const record = requireRecord(value, path);
73
+ const record = requireRecord(value, path, ["temperatureC", "incidenceAngleDegreesFromNormal", "polarization"]);
74
74
  const result = {};
75
75
  if (record.temperatureC !== undefined) {
76
76
  if (typeof record.temperatureC !==
@@ -118,7 +118,8 @@ function parseReferenceConditions(value, path) {
118
118
  return result;
119
119
  }
120
120
  function parseReferenceConditionPolicy(value, path) {
121
- const record = requireRecord(value, path);
121
+ const record = requireRecord(value, path, null);
122
+ rejectUnknownVariantFields(record, "kind", { "exact-match-required": ["kind"], "assume-compatible": ["kind", "limitation", "evidence"] }, path);
122
123
  if (record.kind ===
123
124
  "exact-match-required") {
124
125
  return {
@@ -135,7 +136,7 @@ function parseReferenceConditionPolicy(value, path) {
135
136
  throw new InvalidConfigurationError(path + ".kind is invalid.");
136
137
  }
137
138
  function parseInputRange(value, path) {
138
- const record = requireRecord(value, path);
139
+ const record = requireRecord(value, path, ["minimumInclusive", "maximumInclusive", "kind", "unit"]);
139
140
  const minimumInclusive = requireFiniteNonNegative(record.minimumInclusive, path + ".minimumInclusive");
140
141
  const maximumInclusive = requirePositiveFinite(record.maximumInclusive, path + ".maximumInclusive");
141
142
  if (minimumInclusive >=
@@ -172,7 +173,7 @@ function parseInputRange(value, path) {
172
173
  throw new InvalidConfigurationError(path + ".kind is invalid.");
173
174
  }
174
175
  function parseWavelengthApplicability(value, path) {
175
- const record = requireRecord(value, path);
176
+ const record = requireRecord(value, path, ["wavelengthBasis", "minimumNanometers", "maximumNanometers", "containment"]);
176
177
  if (record.wavelengthBasis !== "air" &&
177
178
  record.wavelengthBasis !==
178
179
  "vacuum") {
@@ -199,7 +200,7 @@ function parseWavelengthApplicability(value, path) {
199
200
  };
200
201
  }
201
202
  function parseLinearityCriterion(value, path) {
202
- const record = requireRecord(value, path);
203
+ const record = requireRecord(value, path, ["maximumAbsoluteRelativeDeviation"]);
203
204
  const maximumAbsoluteRelativeDeviation = requireFiniteNonNegative(record
204
205
  .maximumAbsoluteRelativeDeviation, path +
205
206
  ".maximumAbsoluteRelativeDeviation");
@@ -218,7 +219,8 @@ function parseSpectralInputModel(value) {
218
219
  kind: "broadband-integrated-only"
219
220
  };
220
221
  }
221
- const record = requireRecord(value, "sensorResponseOperatingRange.spectralInputModel");
222
+ const record = requireRecord(value, "sensorResponseOperatingRange.spectralInputModel", null);
223
+ rejectUnknownVariantFields(record, "kind", { "broadband-integrated-only": ["kind"], "per-spectral-bin": ["kind", "maximumBinWidthNanometers", "scientificStatus", "evidence", "limitation"] }, "sensorResponseOperatingRange.spectralInputModel");
222
224
  if (record.kind ===
223
225
  "broadband-integrated-only") {
224
226
  return {
@@ -261,7 +263,8 @@ function parseSpatialLinearityModel(value) {
261
263
  limitation: "Spatial-distribution linear superposition was not declared."
262
264
  };
263
265
  }
264
- const record = requireRecord(value, "sensorResponseOperatingRange.spatialLinearityModel");
266
+ const record = requireRecord(value, "sensorResponseOperatingRange.spatialLinearityModel", null);
267
+ rejectUnknownVariantFields(record, "kind", { "not-established": ["kind", "limitation"], "linear-superposition-over-geometric-aperture": ["kind", "scientificStatus", "evidence", "limitation"] }, "sensorResponseOperatingRange.spatialLinearityModel");
265
268
  if (record.kind === "not-established") {
266
269
  return {
267
270
  kind: "not-established",
@@ -296,20 +299,18 @@ function parseSpatialLinearityModel(value) {
296
299
  };
297
300
  }
298
301
  /**
299
- * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
300
- * missing required fields and incompatible scientific data fail at this boundary.
302
+ * Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,
303
+ * missing required fields and inconsistent scientific data are rejected.
301
304
  *
302
- * Operating-range assessment preserves incident power versus irradiance, wavelength support, reference
303
- * conditions and declared nonlinearity criterion. Per-bin conversion requires spectral-bin
304
- * applicability and spatial linear superposition. Valid mean input must not conceal an invalid bright
305
- * local sub-aperture.
306
- * @param value - unknown. Treated as untrusted data; static typing alone is not validation.
307
- * @returns SensorResponseOperatingRangeProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
305
+ * The profile states the input quantity (incident power or irradiance), wavelength coverage,
306
+ * reference conditions and non-linearity criterion of the calibrated operating range.
307
+ * @param value - Untrusted data. TypeScript types alone are not validation.
308
+ * @returns The result. Success does not imply calibration.
308
309
  *
309
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
310
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
310
311
  */
311
312
  export function parseSensorResponseOperatingRangeProfile(value) {
312
- const record = requireRecord(value, "sensorResponseOperatingRange");
313
+ const record = requireRecord(value, "sensorResponseOperatingRange", ["schemaVersion", "scientificStatus", "referenceConditions", "referenceConditionPolicy", "uncertainty", "profileId", "responseApplicationProfileId", "spectralResponseProfileId", "colorSamplingProfileId", "channelId", "evidence", "inputRange", "wavelengthApplicability", "linearityCriterion", "spatialLinearityModel", "spectralInputModel"]);
313
314
  if (record.schemaVersion !== "0.1.0") {
314
315
  throw new InvalidConfigurationError('sensorResponseOperatingRange.schemaVersion must be "0.1.0".');
315
316
  }
@@ -413,6 +414,7 @@ function spectralNodeInputValue(entry, range) {
413
414
  return value;
414
415
  }
415
416
  function validateReductionIdentity(reduction, compatibility) {
417
+ requireInputObject(reduction, "reduction input");
416
418
  if (reduction.responseProfileId !==
417
419
  compatibility
418
420
  .spectralResponseProfileId ||
@@ -425,19 +427,18 @@ function validateReductionIdentity(reduction, compatibility) {
425
427
  }
426
428
  }
427
429
  /**
428
- * Assess every declared spectral-bin input against operating applicability and superposition before
429
- * authorizing instantaneous response conversion.
430
+ * Checks every declared spectral-bin input against the operating range and the superposition
431
+ * requirement, before any instantaneous response conversion is allowed.
430
432
  *
431
- * Operating-range assessment preserves incident power versus irradiance, wavelength support, reference
432
- * conditions and declared nonlinearity criterion. Per-bin conversion requires spectral-bin
433
- * applicability and spatial linear superposition. Valid mean input must not conceal an invalid bright
434
- * local sub-aperture.
435
- * @param input - AssessSensorResponseOperatingRangeInput. See the linked contract for coordinate, unit and profile binding semantics.
436
- * @returns CalculationResult<SensorResponseOperatingRangeAssessment>. Read structured blockers before consuming an authorization.
433
+ * Each bin must be in range, and spatial linear superposition must hold. A valid average must not
434
+ * hide a part of the aperture that is too bright.
435
+ * @param input - The input; see `AssessSensorResponseOperatingRangeInput` for its fields, units and coordinates.
436
+ * @returns The assessment. Read its structured blockers before acting on an authorization.
437
437
  *
438
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
438
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
439
439
  */
440
440
  export function assessSensorResponseOperatingRange(input) {
441
+ requireInputKeys(input, "assessSensorResponseOperatingRange", ["reduction", "compatibility", "operatingRangeProfile"]);
441
442
  validateReductionIdentity(input.reduction, input.compatibility);
442
443
  const profile = parseSensorResponseOperatingRangeProfile(input.operatingRangeProfile);
443
444
  const blockers = [];
@@ -1 +1 @@
1
- {"version":3,"file":"response-operating-range.js","sourceRoot":"","sources":["../../src/sensor/response-operating-range.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response-operating-range.js","sourceRoot":"","sources":["../../src/sensor/response-operating-range.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Response operating range: checks that the light input is inside the range where the measured\n * sensor response is valid (linear within a declared criterion).\n *\n * It keeps incident power and irradiance distinct, and respects wavelength coverage, reference\n * conditions and the declared non-linearity criterion. Converting each spectral bin needs that bin to\n * be in range and needs spatial linear superposition (the response to a sum of inputs is the sum of\n * the responses). A valid average must not hide a part of the aperture that is too bright.\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 SensorResponseApplicationCompatibilityAssessment,\n SensorResponseReferenceConditionPolicy,\n SensorResponseSignalPath\n} from \"./response-application-compatibility.js\";\nimport type {\n SensorSpectralReferenceConditions,\n SensorSpectralResponseScientificStatus,\n SensorSpectralResponseUncertainty,\n SpectralWavelengthBasis\n} from \"./spectral-response.js\";\nimport type {\n SensorSpatioSpectralIrradianceReduction\n} from \"./spatio-spectral-reduction.js\";\nimport { requireInputObject, requireInputKeys, rejectUnknownFields, rejectUnknownVariantFields, UNCERTAINTY_VARIANT_FIELDS } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport type SensorResponseOperatingInputRange =\n | {\n kind:\n \"wavelength-integrated-geometric-aperture-radiant-power\";\n unit: \"W\";\n minimumInclusive: number;\n maximumInclusive: number;\n }\n | {\n kind:\n \"wavelength-integrated-spatial-average-irradiance\";\n unit: \"W/m^2\";\n minimumInclusive: number;\n maximumInclusive: number;\n };\n\nexport interface SensorResponseOperatingWavelengthApplicability {\n wavelengthBasis:\n Exclude<SpectralWavelengthBasis, \"unspecified\">;\n minimumNanometers: number;\n maximumNanometers: number;\n containment:\n \"requested-range-must-be-contained\";\n}\n\nexport interface SensorResponseLinearityCriterion {\n maximumAbsoluteRelativeDeviation: number;\n}\n\nexport type SensorResponseOperatingSpectralInputModel =\n | {\n kind: \"broadband-integrated-only\";\n }\n | {\n kind: \"per-spectral-bin\";\n maximumBinWidthNanometers: number;\n scientificStatus:\n SensorSpectralResponseScientificStatus;\n evidence: readonly EvidenceProvenance[];\n limitation?: string;\n };\n\nexport type SensorResponseOperatingSpatialLinearityModel =\n | {\n kind:\n \"linear-superposition-over-geometric-aperture\";\n scientificStatus:\n SensorSpectralResponseScientificStatus;\n evidence: readonly EvidenceProvenance[];\n limitation?: string;\n }\n | {\n kind: \"not-established\";\n limitation: string;\n };\n\nexport interface SensorResponseOperatingRangeProfile {\n schemaVersion: \"0.1.0\";\n profileId: string;\n responseApplicationProfileId: string;\n spectralResponseProfileId: string;\n colorSamplingProfileId: string;\n channelId: string;\n scientificStatus:\n SensorSpectralResponseScientificStatus;\n uncertainty:\n SensorSpectralResponseUncertainty;\n evidence: readonly EvidenceProvenance[];\n inputRange:\n SensorResponseOperatingInputRange;\n wavelengthApplicability:\n SensorResponseOperatingWavelengthApplicability;\n linearityCriterion:\n SensorResponseLinearityCriterion;\n /**\n * Optional for backward compatibility. If omitted, it parses as \"not\n * established\", which blocks new response-rate conversions.\n */\n spatialLinearityModel?:\n SensorResponseOperatingSpatialLinearityModel;\n /**\n * Optional for backward compatibility. If omitted, the calibration only\n * establishes an operating range for broadband (wavelength-integrated) input,\n * and cannot allow wavelength-by-wavelength response conversion.\n */\n spectralInputModel?:\n SensorResponseOperatingSpectralInputModel;\n referenceConditions?:\n SensorSpectralReferenceConditions;\n referenceConditionPolicy:\n SensorResponseReferenceConditionPolicy;\n}\n\nexport interface AssessSensorResponseOperatingRangeInput {\n reduction:\n SensorSpatioSpectralIrradianceReduction;\n compatibility:\n SensorResponseApplicationCompatibilityAssessment;\n operatingRangeProfile:\n SensorResponseOperatingRangeProfile;\n}\n\nexport type SensorResponseOperatingRangeBlocker =\n | \"structural-compatibility-not-established\"\n | \"response-application-profile-id-mismatch\"\n | \"spectral-response-profile-id-mismatch\"\n | \"color-sampling-profile-id-mismatch\"\n | \"channel-id-mismatch\"\n | \"wavelength-basis-unresolved\"\n | \"wavelength-basis-mismatch\"\n | \"wavelength-range-outside-linearity-applicability\"\n | \"input-below-linearity-range\"\n | \"input-above-linearity-range\"\n | \"spectral-bin-width-outside-linearity-applicability\"\n | \"spectral-bin-input-below-linearity-range\"\n | \"spectral-bin-input-above-linearity-range\"\n | \"spatial-linearity-superposition-not-established\"\n | \"operating-conditions-not-declared\"\n | \"linearity-operating-conditions-mismatch\";\n\nexport interface SensorResponseOperatingRangeAssessment {\n operatingRangeProfileId: string;\n responseApplicationProfileId: string;\n spectralResponseProfileId: string;\n colorSamplingProfileId: string;\n channelId: string;\n requiredSignalPath:\n SensorResponseSignalPath;\n inputRange:\n SensorResponseOperatingInputRange;\n evaluatedInput: {\n kind:\n SensorResponseOperatingInputRange[\"kind\"];\n unit:\n SensorResponseOperatingInputRange[\"unit\"];\n value: number;\n };\n wavelengthApplicability:\n SensorResponseOperatingWavelengthApplicability;\n evaluatedWavelengthRangeNanometers: {\n minimum: number;\n maximum: number;\n };\n linearityCriterion:\n SensorResponseLinearityCriterion;\n spectralInputModel:\n SensorResponseOperatingSpectralInputModel;\n evaluatedSpectralNodeInputs?:\n readonly {\n spectralSampleIndex: number;\n wavelengthNanometers: number;\n wavelengthMeasureNanometers: number;\n kind:\n SensorResponseOperatingInputRange[\"kind\"];\n unit:\n SensorResponseOperatingInputRange[\"unit\"];\n value: number;\n }[];\n spectralNodeRangeCompatibilityAssessed:\n boolean;\n spatialLinearityModel:\n SensorResponseOperatingSpatialLinearityModel;\n referenceConditionPolicy:\n SensorResponseReferenceConditionPolicy;\n referenceConditions?:\n SensorSpectralReferenceConditions;\n operatingConditions?:\n SensorSpectralReferenceConditions;\n operatingRangeCompatibilityAssessed: true;\n instantaneousResponseRangeCompatible: boolean;\n status:\n | \"broadband-range-compatible\"\n | \"broadband-range-compatible-approximation\"\n | \"rate-conversion-authorized\"\n | \"rate-conversion-authorized-approximation\"\n | \"blocked\";\n blockers:\n readonly SensorResponseOperatingRangeBlocker[];\n responseRateConversionAuthorized: boolean;\n responseApplicationPerformed: false;\n temporalIntegrationAuthorized: false;\n exposureDomainLinearityAssessed: false;\n accumulatedChargeLinearityAssessed: false;\n saturationAssessed: false;\n photonConversionPerformed: false;\n electronConversionPerformed: false;\n currentConversionPerformed: false;\n componentEvidence: {\n operatingRange:\n readonly EvidenceProvenance[];\n referenceConditionAssumption:\n readonly EvidenceProvenance[];\n spatialLinearity:\n readonly EvidenceProvenance[];\n structuralCompatibility:\n SensorResponseApplicationCompatibilityAssessment[\"componentEvidence\"];\n };\n}\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty string.\"\n );\n }\n return value;\n}\n\nfunction requireFiniteNonNegative(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value < 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be finite and greater than or equal to zero.\"\n );\n }\n return value;\n}\n\nfunction requirePositiveFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value <= 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be finite and greater than zero.\"\n );\n }\n return value;\n}\n\nfunction 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 requireFiniteNonNegative(\n record.fraction,\n path + \".fraction\"\n );\n return {\n kind: \"relative\",\n fraction,\n basis: requireNonEmptyString(\n record.basis,\n path + \".basis\"\n )\n };\n }\n\n if (\n record.kind === \"not-quantified\"\n ) {\n return {\n kind: \"not-quantified\",\n limitation: requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n )\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseReferenceConditions(\n value: unknown,\n path: string\n): SensorSpectralReferenceConditions {\n const record =\n requireRecord(value, path, [\"temperatureC\", \"incidenceAngleDegreesFromNormal\", \"polarization\"]);\n const result:\n SensorSpectralReferenceConditions =\n {};\n\n if (\n record.temperatureC !== undefined\n ) {\n if (\n typeof record.temperatureC !==\n \"number\" ||\n !Number.isFinite(\n record.temperatureC\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \".temperatureC must be finite.\"\n );\n }\n result.temperatureC =\n record.temperatureC;\n }\n\n if (\n record.incidenceAngleDegreesFromNormal !==\n undefined\n ) {\n const angle =\n record\n .incidenceAngleDegreesFromNormal;\n if (\n typeof angle !== \"number\" ||\n !Number.isFinite(angle) ||\n angle < 0 ||\n angle > 90\n ) {\n throw new InvalidConfigurationError(\n path +\n \".incidenceAngleDegreesFromNormal must be finite from 0 through 90.\"\n );\n }\n result.incidenceAngleDegreesFromNormal =\n angle;\n }\n\n if (\n record.polarization !== undefined\n ) {\n if (\n record.polarization !==\n \"unpolarized\" &&\n record.polarization !==\n \"unspecified\"\n ) {\n throw new InvalidConfigurationError(\n path +\n \".polarization is invalid.\"\n );\n }\n result.polarization =\n record.polarization;\n }\n\n if (\n result.temperatureC === undefined &&\n result\n .incidenceAngleDegreesFromNormal ===\n undefined &&\n result.polarization === undefined\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must declare at least one condition.\"\n );\n }\n\n return result;\n}\n\nfunction parseReferenceConditionPolicy(\n value: unknown,\n path: string\n): SensorResponseReferenceConditionPolicy {\n const record =\n requireRecord(value, path, null);\n rejectUnknownVariantFields(record, \"kind\", { \"exact-match-required\": [\"kind\"], \"assume-compatible\": [\"kind\", \"limitation\", \"evidence\"] }, path);\n\n if (\n record.kind ===\n \"exact-match-required\"\n ) {\n return {\n kind: \"exact-match-required\"\n };\n }\n\n if (\n record.kind === \"assume-compatible\"\n ) {\n return {\n kind: \"assume-compatible\",\n limitation:\n requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n ),\n evidence: parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n )\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseInputRange(\n value: unknown,\n path: string\n): SensorResponseOperatingInputRange {\n const record =\n requireRecord(value, path, [\"minimumInclusive\", \"maximumInclusive\", \"kind\", \"unit\"]);\n\n const minimumInclusive =\n requireFiniteNonNegative(\n record.minimumInclusive,\n path + \".minimumInclusive\"\n );\n const maximumInclusive =\n requirePositiveFinite(\n record.maximumInclusive,\n path + \".maximumInclusive\"\n );\n\n if (\n minimumInclusive >=\n maximumInclusive\n ) {\n throw new InvalidConfigurationError(\n path +\n \".minimumInclusive must be less than maximumInclusive.\"\n );\n }\n\n if (\n record.kind ===\n \"wavelength-integrated-geometric-aperture-radiant-power\"\n ) {\n if (record.unit !== \"W\") {\n throw new InvalidConfigurationError(\n path +\n '.unit must be \"W\".'\n );\n }\n return {\n kind:\n \"wavelength-integrated-geometric-aperture-radiant-power\",\n unit: \"W\",\n minimumInclusive,\n maximumInclusive\n };\n }\n\n if (\n record.kind ===\n \"wavelength-integrated-spatial-average-irradiance\"\n ) {\n if (record.unit !== \"W/m^2\") {\n throw new InvalidConfigurationError(\n path +\n '.unit must be \"W/m^2\".'\n );\n }\n return {\n kind:\n \"wavelength-integrated-spatial-average-irradiance\",\n unit: \"W/m^2\",\n minimumInclusive,\n maximumInclusive\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseWavelengthApplicability(\n value: unknown,\n path: string\n): SensorResponseOperatingWavelengthApplicability {\n const record =\n requireRecord(value, path, [\"wavelengthBasis\", \"minimumNanometers\", \"maximumNanometers\", \"containment\"]);\n\n if (\n record.wavelengthBasis !== \"air\" &&\n record.wavelengthBasis !==\n \"vacuum\"\n ) {\n throw new InvalidConfigurationError(\n path +\n '.wavelengthBasis must be \"air\" or \"vacuum\".'\n );\n }\n\n const minimumNanometers =\n requirePositiveFinite(\n record.minimumNanometers,\n path + \".minimumNanometers\"\n );\n const maximumNanometers =\n requirePositiveFinite(\n record.maximumNanometers,\n path + \".maximumNanometers\"\n );\n\n if (\n minimumNanometers >=\n maximumNanometers\n ) {\n throw new InvalidConfigurationError(\n path +\n \".minimumNanometers must be less than maximumNanometers.\"\n );\n }\n\n if (\n record.containment !==\n \"requested-range-must-be-contained\"\n ) {\n throw new InvalidConfigurationError(\n path +\n '.containment must be \"requested-range-must-be-contained\".'\n );\n }\n\n return {\n wavelengthBasis:\n record.wavelengthBasis,\n minimumNanometers,\n maximumNanometers,\n containment:\n \"requested-range-must-be-contained\"\n };\n}\n\nfunction parseLinearityCriterion(\n value: unknown,\n path: string\n): SensorResponseLinearityCriterion {\n const record =\n requireRecord(value, path, [\"maximumAbsoluteRelativeDeviation\"]);\n const maximumAbsoluteRelativeDeviation =\n requireFiniteNonNegative(\n record\n .maximumAbsoluteRelativeDeviation,\n path +\n \".maximumAbsoluteRelativeDeviation\"\n );\n\n if (\n maximumAbsoluteRelativeDeviation >\n 1\n ) {\n throw new InvalidConfigurationError(\n path +\n \".maximumAbsoluteRelativeDeviation must be a fraction from 0 through 1.\"\n );\n }\n\n return {\n maximumAbsoluteRelativeDeviation\n };\n}\n\nfunction parseSpectralInputModel(\n value: unknown\n): SensorResponseOperatingSpectralInputModel {\n if (value === undefined) {\n return {\n kind: \"broadband-integrated-only\"\n };\n }\n\n const record = requireRecord(\n value,\n \"sensorResponseOperatingRange.spectralInputModel\", null\n );\n rejectUnknownVariantFields(record, \"kind\", { \"broadband-integrated-only\": [\"kind\"], \"per-spectral-bin\": [\"kind\", \"maximumBinWidthNanometers\", \"scientificStatus\", \"evidence\", \"limitation\"] }, \"sensorResponseOperatingRange.spectralInputModel\");\n\n if (\n record.kind ===\n \"broadband-integrated-only\"\n ) {\n return {\n kind: \"broadband-integrated-only\"\n };\n }\n\n if (\n record.kind !==\n \"per-spectral-bin\"\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.spectralInputModel.kind is invalid.\"\n );\n }\n\n if (\n record.scientificStatus !==\n \"calibrated\" &&\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.spectralInputModel.scientificStatus is invalid.\"\n );\n }\n\n const maximumBinWidthNanometers =\n requirePositiveFinite(\n record.maximumBinWidthNanometers,\n \"sensorResponseOperatingRange.spectralInputModel.maximumBinWidthNanometers\"\n );\n const limitation =\n record.limitation === undefined\n ? undefined\n : requireNonEmptyString(\n record.limitation,\n \"sensorResponseOperatingRange.spectralInputModel.limitation\"\n );\n\n if (\n record.scientificStatus ===\n \"approximation\" &&\n limitation === undefined\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.spectralInputModel.limitation is required for an approximation.\"\n );\n }\n\n return {\n kind: \"per-spectral-bin\",\n maximumBinWidthNanometers,\n scientificStatus:\n record.scientificStatus,\n evidence: parseEvidenceList(\n record.evidence,\n \"sensorResponseOperatingRange.spectralInputModel.evidence\"\n ),\n ...(limitation === undefined\n ? {}\n : { limitation })\n };\n}\n\nfunction parseSpatialLinearityModel(\n value: unknown\n): SensorResponseOperatingSpatialLinearityModel {\n if (value === undefined) {\n return {\n kind: \"not-established\",\n limitation:\n \"Spatial-distribution linear superposition was not declared.\"\n };\n }\n\n const record = requireRecord(\n value,\n \"sensorResponseOperatingRange.spatialLinearityModel\", null\n );\n rejectUnknownVariantFields(record, \"kind\", { \"not-established\": [\"kind\", \"limitation\"], \"linear-superposition-over-geometric-aperture\": [\"kind\", \"scientificStatus\", \"evidence\", \"limitation\"] }, \"sensorResponseOperatingRange.spatialLinearityModel\");\n\n if (\n record.kind === \"not-established\"\n ) {\n return {\n kind: \"not-established\",\n limitation: requireNonEmptyString(\n record.limitation,\n \"sensorResponseOperatingRange.spatialLinearityModel.limitation\"\n )\n };\n }\n\n if (\n record.kind !==\n \"linear-superposition-over-geometric-aperture\"\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.spatialLinearityModel.kind is invalid.\"\n );\n }\n\n if (\n record.scientificStatus !==\n \"calibrated\" &&\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.spatialLinearityModel.scientificStatus is invalid.\"\n );\n }\n\n const limitation =\n record.limitation === undefined\n ? undefined\n : requireNonEmptyString(\n record.limitation,\n \"sensorResponseOperatingRange.spatialLinearityModel.limitation\"\n );\n\n if (\n record.scientificStatus ===\n \"approximation\" &&\n limitation === undefined\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.spatialLinearityModel.limitation is required for an approximation.\"\n );\n }\n\n return {\n kind:\n \"linear-superposition-over-geometric-aperture\",\n scientificStatus:\n record.scientificStatus,\n evidence: parseEvidenceList(\n record.evidence,\n \"sensorResponseOperatingRange.spatialLinearityModel.evidence\"\n ),\n ...(limitation === undefined\n ? {}\n : { limitation })\n };\n}\n\n/**\n * Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,\n * missing required fields and inconsistent scientific data are rejected.\n *\n * The profile states the input quantity (incident power or irradiance), wavelength coverage,\n * reference conditions and non-linearity criterion of the calibrated operating range.\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 parseSensorResponseOperatingRangeProfile(\n value: unknown\n): SensorResponseOperatingRangeProfile {\n const record =\n requireRecord(\n value,\n \"sensorResponseOperatingRange\", [\"schemaVersion\", \"scientificStatus\", \"referenceConditions\", \"referenceConditionPolicy\", \"uncertainty\", \"profileId\", \"responseApplicationProfileId\", \"spectralResponseProfileId\", \"colorSamplingProfileId\", \"channelId\", \"evidence\", \"inputRange\", \"wavelengthApplicability\", \"linearityCriterion\", \"spatialLinearityModel\", \"spectralInputModel\"]\n );\n\n if (\n record.schemaVersion !== \"0.1.0\"\n ) {\n throw new InvalidConfigurationError(\n 'sensorResponseOperatingRange.schemaVersion must be \"0.1.0\".'\n );\n }\n\n if (\n record.scientificStatus !==\n \"calibrated\" &&\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.scientificStatus is invalid.\"\n );\n }\n\n const referenceConditions =\n record.referenceConditions ===\n undefined\n ? undefined\n : parseReferenceConditions(\n record.referenceConditions,\n \"sensorResponseOperatingRange.referenceConditions\"\n );\n\n const referenceConditionPolicy =\n parseReferenceConditionPolicy(\n record.referenceConditionPolicy,\n \"sensorResponseOperatingRange.referenceConditionPolicy\"\n );\n\n if (\n referenceConditionPolicy.kind ===\n \"exact-match-required\" &&\n referenceConditions === undefined\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.referenceConditions is required when exact-match-required is selected.\"\n );\n }\n\n const uncertainty =\n parseUncertainty(\n record.uncertainty,\n \"sensorResponseOperatingRange.uncertainty\"\n );\n\n if (\n record.scientificStatus ===\n \"calibrated\" &&\n uncertainty.kind ===\n \"not-quantified\"\n ) {\n throw new InvalidConfigurationError(\n \"A calibrated sensor response operating range must declare quantified relative uncertainty.\"\n );\n }\n\n return {\n schemaVersion: \"0.1.0\",\n profileId: requireNonEmptyString(\n record.profileId,\n \"sensorResponseOperatingRange.profileId\"\n ),\n responseApplicationProfileId:\n requireNonEmptyString(\n record\n .responseApplicationProfileId,\n \"sensorResponseOperatingRange.responseApplicationProfileId\"\n ),\n spectralResponseProfileId:\n requireNonEmptyString(\n record\n .spectralResponseProfileId,\n \"sensorResponseOperatingRange.spectralResponseProfileId\"\n ),\n colorSamplingProfileId:\n requireNonEmptyString(\n record.colorSamplingProfileId,\n \"sensorResponseOperatingRange.colorSamplingProfileId\"\n ),\n channelId:\n requireNonEmptyString(\n record.channelId,\n \"sensorResponseOperatingRange.channelId\"\n ),\n scientificStatus:\n record.scientificStatus,\n uncertainty,\n evidence: parseEvidenceList(\n record.evidence,\n \"sensorResponseOperatingRange.evidence\"\n ),\n inputRange: parseInputRange(\n record.inputRange,\n \"sensorResponseOperatingRange.inputRange\"\n ),\n wavelengthApplicability:\n parseWavelengthApplicability(\n record.wavelengthApplicability,\n \"sensorResponseOperatingRange.wavelengthApplicability\"\n ),\n linearityCriterion:\n parseLinearityCriterion(\n record.linearityCriterion,\n \"sensorResponseOperatingRange.linearityCriterion\"\n ),\n spatialLinearityModel:\n parseSpatialLinearityModel(\n record.spatialLinearityModel\n ),\n spectralInputModel:\n parseSpectralInputModel(\n record.spectralInputModel\n ),\n ...(referenceConditions ===\n undefined\n ? {}\n : { referenceConditions }),\n referenceConditionPolicy\n };\n}\n\nfunction conditionsMatch(\n reference:\n SensorSpectralReferenceConditions,\n operating:\n SensorSpectralReferenceConditions\n): boolean {\n if (\n reference.temperatureC !==\n undefined &&\n operating.temperatureC !==\n reference.temperatureC\n ) {\n return false;\n }\n if (\n reference\n .incidenceAngleDegreesFromNormal !==\n undefined &&\n operating\n .incidenceAngleDegreesFromNormal !==\n reference\n .incidenceAngleDegreesFromNormal\n ) {\n return false;\n }\n if (\n reference.polarization !==\n undefined &&\n operating.polarization !==\n reference.polarization\n ) {\n return false;\n }\n return true;\n}\n\nfunction requireReductionMetric(\n reduction:\n SensorSpatioSpectralIrradianceReduction,\n range:\n SensorResponseOperatingInputRange\n): number {\n const value =\n range.kind ===\n \"wavelength-integrated-geometric-aperture-radiant-power\"\n ? reduction\n .wavelengthIntegratedGeometricApertureIncidentFluxWatts\n : reduction\n .wavelengthIntegratedSpatialAverageIrradianceWattsPerSquareMeter;\n\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value < 0\n ) {\n throw new InvalidScientificInputError(\n \"The selected operating-range input metric must be finite and nonnegative.\"\n );\n }\n return value;\n}\n\nfunction spectralNodeInputValue(\n entry:\n SensorSpatioSpectralIrradianceReduction[\"perWavelength\"][number],\n range:\n SensorResponseOperatingInputRange\n): number {\n const value =\n range.kind ===\n \"wavelength-integrated-geometric-aperture-radiant-power\"\n ? entry\n .wavelengthIntegratedGeometricApertureIncidentFluxContributionWatts\n : entry\n .wavelengthIntegratedSpatialAverageContributionWattsPerSquareMeter;\n\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value < 0\n ) {\n throw new InvalidScientificInputError(\n \"Per-spectral-node operating-range input must be finite and nonnegative.\"\n );\n }\n return value;\n}\n\nfunction validateReductionIdentity(\n reduction:\n SensorSpatioSpectralIrradianceReduction,\n compatibility:\n SensorResponseApplicationCompatibilityAssessment\n): void {\n requireInputObject(reduction, \"reduction input\");\n if (\n reduction.responseProfileId !==\n compatibility\n .spectralResponseProfileId ||\n reduction.colorSamplingProfileId !==\n compatibility\n .colorSamplingProfileId ||\n reduction.channelId !==\n compatibility.channelId\n ) {\n throw new InvalidScientificInputError(\n \"reduction and compatibility assessment identities do not match.\"\n );\n }\n}\n\n/**\n * Checks every declared spectral-bin input against the operating range and the superposition\n * requirement, before any instantaneous response conversion is allowed.\n *\n * Each bin must be in range, and spatial linear superposition must hold. A valid average must not\n * hide a part of the aperture that is too bright.\n * @param input - The input; see `AssessSensorResponseOperatingRangeInput` for its fields, units and coordinates.\n * @returns The assessment. Read its structured blockers before acting on an authorization.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function assessSensorResponseOperatingRange(\n input:\n AssessSensorResponseOperatingRangeInput\n): CalculationResult<SensorResponseOperatingRangeAssessment> {\n requireInputKeys(input, \"assessSensorResponseOperatingRange\", [\"reduction\", \"compatibility\", \"operatingRangeProfile\"]);\n validateReductionIdentity(\n input.reduction,\n input.compatibility\n );\n const profile =\n parseSensorResponseOperatingRangeProfile(\n input.operatingRangeProfile\n );\n const blockers:\n SensorResponseOperatingRangeBlocker[] =\n [];\n\n if (\n !input.compatibility\n .structuralCompatibilityEstablished ||\n input.compatibility\n .compatibilityStatus === \"blocked\"\n ) {\n blockers.push(\n \"structural-compatibility-not-established\"\n );\n }\n\n if (\n profile.responseApplicationProfileId !==\n input.compatibility\n .applicationProfileId\n ) {\n blockers.push(\n \"response-application-profile-id-mismatch\"\n );\n }\n if (\n profile.spectralResponseProfileId !==\n input.reduction\n .responseProfileId\n ) {\n blockers.push(\n \"spectral-response-profile-id-mismatch\"\n );\n }\n if (\n profile.colorSamplingProfileId !==\n input.reduction\n .colorSamplingProfileId\n ) {\n blockers.push(\n \"color-sampling-profile-id-mismatch\"\n );\n }\n if (\n profile.channelId !==\n input.reduction.channelId\n ) {\n blockers.push(\n \"channel-id-mismatch\"\n );\n }\n\n if (\n !input.reduction\n .wavelengthBasisResolved\n ) {\n blockers.push(\n \"wavelength-basis-unresolved\"\n );\n } else if (\n input.reduction.wavelengthBasis !==\n profile.wavelengthApplicability\n .wavelengthBasis\n ) {\n blockers.push(\n \"wavelength-basis-mismatch\"\n );\n }\n\n const wavelengthRange =\n input.reduction\n .wavelengthRangeNanometers;\n if (\n wavelengthRange.minimum <\n profile.wavelengthApplicability\n .minimumNanometers ||\n wavelengthRange.maximum >\n profile.wavelengthApplicability\n .maximumNanometers\n ) {\n blockers.push(\n \"wavelength-range-outside-linearity-applicability\"\n );\n }\n\n const metricValue =\n requireReductionMetric(\n input.reduction,\n profile.inputRange\n );\n\n if (\n metricValue <\n profile.inputRange.minimumInclusive\n ) {\n blockers.push(\n \"input-below-linearity-range\"\n );\n }\n if (\n metricValue >\n profile.inputRange.maximumInclusive\n ) {\n blockers.push(\n \"input-above-linearity-range\"\n );\n }\n\n const spectralInputModel =\n profile.spectralInputModel ?? {\n kind: \"broadband-integrated-only\" as const\n };\n const evaluatedSpectralNodeInputs:\n {\n spectralSampleIndex: number;\n wavelengthNanometers: number;\n wavelengthMeasureNanometers: number;\n kind:\n SensorResponseOperatingInputRange[\"kind\"];\n unit:\n SensorResponseOperatingInputRange[\"unit\"];\n value: number;\n }[] = [];\n\n if (\n spectralInputModel.kind ===\n \"per-spectral-bin\"\n ) {\n for (\n const entry of\n input.reduction.perWavelength\n ) {\n if (\n entry.wavelengthMeasureNanometers >\n spectralInputModel\n .maximumBinWidthNanometers\n ) {\n blockers.push(\n \"spectral-bin-width-outside-linearity-applicability\"\n );\n }\n\n const value =\n spectralNodeInputValue(\n entry,\n profile.inputRange\n );\n evaluatedSpectralNodeInputs.push({\n spectralSampleIndex:\n entry.spectralSampleIndex,\n wavelengthNanometers:\n entry.wavelengthNanometers,\n wavelengthMeasureNanometers:\n entry.wavelengthMeasureNanometers,\n kind:\n profile.inputRange.kind,\n unit:\n profile.inputRange.unit,\n value\n });\n\n if (\n value <\n profile.inputRange\n .minimumInclusive\n ) {\n blockers.push(\n \"spectral-bin-input-below-linearity-range\"\n );\n }\n if (\n value >\n profile.inputRange\n .maximumInclusive\n ) {\n blockers.push(\n \"spectral-bin-input-above-linearity-range\"\n );\n }\n }\n }\n\n if (\n profile.spatialLinearityModel?.kind !==\n \"linear-superposition-over-geometric-aperture\"\n ) {\n blockers.push(\n \"spatial-linearity-superposition-not-established\"\n );\n }\n\n if (\n profile.referenceConditionPolicy.kind ===\n \"exact-match-required\"\n ) {\n const referenceConditions =\n profile.referenceConditions!;\n if (\n input.compatibility\n .operatingConditions ===\n undefined\n ) {\n blockers.push(\n \"operating-conditions-not-declared\"\n );\n } else if (\n !conditionsMatch(\n referenceConditions,\n input.compatibility\n .operatingConditions\n )\n ) {\n blockers.push(\n \"linearity-operating-conditions-mismatch\"\n );\n }\n }\n\n const compatible =\n blockers.length === 0;\n\n const approximate =\n input.compatibility\n .compatibilityStatus ===\n \"compatible-approximation\" ||\n profile.scientificStatus ===\n \"approximation\" ||\n profile.uncertainty.kind ===\n \"not-quantified\" ||\n (\n profile.spatialLinearityModel?.kind ===\n \"linear-superposition-over-geometric-aperture\" &&\n profile.spatialLinearityModel\n .scientificStatus ===\n \"approximation\"\n ) ||\n (\n spectralInputModel.kind ===\n \"per-spectral-bin\" &&\n spectralInputModel\n .scientificStatus ===\n \"approximation\"\n ) ||\n profile.referenceConditionPolicy.kind ===\n \"assume-compatible\";\n\n const spectralRateReady =\n compatible &&\n spectralInputModel.kind ===\n \"per-spectral-bin\";\n\n const status =\n compatible\n ? spectralRateReady\n ? approximate\n ? \"rate-conversion-authorized-approximation\"\n : \"rate-conversion-authorized\"\n : approximate\n ? \"broadband-range-compatible-approximation\"\n : \"broadband-range-compatible\"\n : \"blocked\";\n\n const referenceConditionEvidence =\n profile.referenceConditionPolicy.kind ===\n \"assume-compatible\"\n ? profile.referenceConditionPolicy\n .evidence\n : [];\n const spatialLinearityEvidence =\n profile.spatialLinearityModel?.kind ===\n \"linear-superposition-over-geometric-aperture\"\n ? profile.spatialLinearityModel.evidence\n : [];\n\n return calculatedResult(\n {\n operatingRangeProfileId:\n profile.profileId,\n responseApplicationProfileId:\n input.compatibility\n .applicationProfileId,\n spectralResponseProfileId:\n input.reduction\n .responseProfileId,\n colorSamplingProfileId:\n input.reduction\n .colorSamplingProfileId,\n channelId:\n input.reduction.channelId,\n requiredSignalPath:\n input.compatibility\n .requiredSignalPath,\n inputRange:\n profile.inputRange,\n evaluatedInput: {\n kind: profile.inputRange.kind,\n unit: profile.inputRange.unit,\n value: metricValue\n },\n wavelengthApplicability:\n profile.wavelengthApplicability,\n evaluatedWavelengthRangeNanometers:\n {\n ...wavelengthRange\n },\n linearityCriterion:\n profile.linearityCriterion,\n spectralInputModel,\n ...(evaluatedSpectralNodeInputs.length ===\n 0\n ? {}\n : {\n evaluatedSpectralNodeInputs\n }),\n spectralNodeRangeCompatibilityAssessed:\n spectralInputModel.kind ===\n \"per-spectral-bin\",\n spatialLinearityModel:\n profile.spatialLinearityModel ?? {\n kind: \"not-established\",\n limitation:\n \"Spatial-distribution linear superposition was not declared.\"\n },\n referenceConditionPolicy:\n profile.referenceConditionPolicy,\n ...(profile.referenceConditions ===\n undefined\n ? {}\n : {\n referenceConditions:\n profile.referenceConditions\n }),\n ...(input.compatibility\n .operatingConditions ===\n undefined\n ? {}\n : {\n operatingConditions:\n input.compatibility\n .operatingConditions\n }),\n operatingRangeCompatibilityAssessed:\n true,\n instantaneousResponseRangeCompatible:\n compatible,\n status,\n blockers,\n responseRateConversionAuthorized:\n spectralRateReady,\n responseApplicationPerformed:\n false,\n temporalIntegrationAuthorized:\n false,\n exposureDomainLinearityAssessed:\n false,\n accumulatedChargeLinearityAssessed:\n false,\n saturationAssessed: false,\n photonConversionPerformed:\n false,\n electronConversionPerformed:\n false,\n currentConversionPerformed:\n false,\n componentEvidence: {\n operatingRange:\n profile.evidence,\n referenceConditionAssumption:\n referenceConditionEvidence,\n spatialLinearity:\n spatialLinearityEvidence,\n structuralCompatibility:\n input.compatibility\n .componentEvidence\n }\n },\n \"sensor-response-operating-range-assessment\",\n \"1.0.0\",\n [\n \"This gate assesses instantaneous response-law applicability only; it does not apply response or integrate exposure.\",\n \"The valid optical-input range is evidence-backed and must be expressed in the same wavelength-integrated power or irradiance domain produced by the pre-response reducer.\",\n \"Broadband-integrated range compatibility alone cannot authorize wavelength-dependent response conversion; per-spectral-bin applicability must be explicitly established and every bin must remain inside the calibrated input range.\",\n \"Per-spectral-bin applicability also declares a maximum supported bin width so a broad quadrature bin is not silently treated as an equivalent monochromatic calibration point.\",\n \"Linearity can depend on optical input level and wavelength; the reduction wavelength range must remain inside the declared applicability range.\",\n \"Post-spatial rate conversion additionally requires explicit linear superposition over the geometric aperture; otherwise sub-aperture illumination patterns could hide local nonlinear behavior.\",\n \"The maximumAbsoluteRelativeDeviation criterion documents the tolerated response nonlinearity for the declared valid range; this function does not derive that criterion from synthetic data.\",\n \"Reference conditions for the linearity calibration are separate from spectral-response reference conditions and must match when exact matching is required.\",\n \"Exposure-domain linearity, accumulated-charge saturation/full-well behavior, and downstream electronics linearity are intentionally not assessed here.\",\n \"A successful result authorizes only a future instantaneous rate conversion path: photon-rate→electrons for EQE/filter×EQE or radiant-power→current for A/W responsivity.\",\n \"Temporal integration, saturation, noise, ADC/RAW conversion and reconstruction remain downstream.\"\n ]\n );\n}\n"]}