@photivra/engine 0.6.0 → 1.0.1

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 (750) hide show
  1. package/AGENTS.md +674 -0
  2. package/CHANGELOG.md +191 -0
  3. package/CITATION.cff +1 -1
  4. package/CONTRIBUTING.md +76 -0
  5. package/DCO +33 -0
  6. package/NODE_SUPPORT.md +37 -0
  7. package/NOTICE +2 -0
  8. package/README.md +139 -72
  9. package/SECURITY.md +55 -0
  10. package/THIRD_PARTY.md +63 -0
  11. package/dist/camera/equivalent-focal-length.d.ts +9 -0
  12. package/dist/camera/equivalent-focal-length.d.ts.map +1 -1
  13. package/dist/camera/equivalent-focal-length.js +9 -0
  14. package/dist/camera/equivalent-focal-length.js.map +1 -1
  15. package/dist/camera/field-of-view.d.ts +13 -0
  16. package/dist/camera/field-of-view.d.ts.map +1 -1
  17. package/dist/camera/field-of-view.js +13 -0
  18. package/dist/camera/field-of-view.js.map +1 -1
  19. package/dist/camera/projected-object-size.d.ts +8 -0
  20. package/dist/camera/projected-object-size.d.ts.map +1 -1
  21. package/dist/camera/projected-object-size.js +8 -0
  22. package/dist/camera/projected-object-size.js.map +1 -1
  23. package/dist/capture/capture-export-metadata.d.ts +60 -0
  24. package/dist/capture/capture-export-metadata.d.ts.map +1 -0
  25. package/dist/capture/capture-export-metadata.js +62 -0
  26. package/dist/capture/capture-export-metadata.js.map +1 -0
  27. package/dist/capture/environment-raw-producer.d.ts +55 -0
  28. package/dist/capture/environment-raw-producer.d.ts.map +1 -0
  29. package/dist/capture/environment-raw-producer.js +88 -0
  30. package/dist/capture/environment-raw-producer.js.map +1 -0
  31. package/dist/capture/export-jpeg.d.ts +12 -0
  32. package/dist/capture/export-jpeg.d.ts.map +1 -0
  33. package/dist/capture/export-jpeg.js +126 -0
  34. package/dist/capture/export-jpeg.js.map +1 -0
  35. package/dist/capture/export-tiff.d.ts +45 -0
  36. package/dist/capture/export-tiff.d.ts.map +1 -0
  37. package/dist/capture/export-tiff.js +129 -0
  38. package/dist/capture/export-tiff.js.map +1 -0
  39. package/dist/capture/focus-control.d.ts +210 -0
  40. package/dist/capture/focus-control.d.ts.map +1 -0
  41. package/dist/capture/focus-control.js +664 -0
  42. package/dist/capture/focus-control.js.map +1 -0
  43. package/dist/capture/linear-encoding.d.ts +59 -0
  44. package/dist/capture/linear-encoding.d.ts.map +1 -0
  45. package/dist/capture/linear-encoding.js +98 -0
  46. package/dist/capture/linear-encoding.js.map +1 -0
  47. package/dist/capture/photographic-export.d.ts +135 -0
  48. package/dist/capture/photographic-export.d.ts.map +1 -0
  49. package/dist/capture/photographic-export.js +273 -0
  50. package/dist/capture/photographic-export.js.map +1 -0
  51. package/dist/capture/raw-frame-limits.d.ts +12 -0
  52. package/dist/capture/raw-frame-limits.d.ts.map +1 -0
  53. package/dist/capture/raw-frame-limits.js +13 -0
  54. package/dist/capture/raw-frame-limits.js.map +1 -0
  55. package/dist/capture/raw-frame-reconstruction.d.ts +48 -0
  56. package/dist/capture/raw-frame-reconstruction.d.ts.map +1 -0
  57. package/dist/capture/raw-frame-reconstruction.js +146 -0
  58. package/dist/capture/raw-frame-reconstruction.js.map +1 -0
  59. package/dist/capture/release-sequence.d.ts +120 -0
  60. package/dist/capture/release-sequence.d.ts.map +1 -0
  61. package/dist/capture/release-sequence.js +446 -0
  62. package/dist/capture/release-sequence.js.map +1 -0
  63. package/dist/capture/sensor-raw-frame.d.ts +34 -0
  64. package/dist/capture/sensor-raw-frame.d.ts.map +1 -0
  65. package/dist/capture/sensor-raw-frame.js +106 -0
  66. package/dist/capture/sensor-raw-frame.js.map +1 -0
  67. package/dist/capture/sensor-raw-producer.d.ts +51 -0
  68. package/dist/capture/sensor-raw-producer.d.ts.map +1 -0
  69. package/dist/capture/sensor-raw-producer.js +235 -0
  70. package/dist/capture/sensor-raw-producer.js.map +1 -0
  71. package/dist/capture/simulated-capture.d.ts +125 -0
  72. package/dist/capture/simulated-capture.d.ts.map +1 -0
  73. package/dist/capture/simulated-capture.js +248 -0
  74. package/dist/capture/simulated-capture.js.map +1 -0
  75. package/dist/color/capture-color.d.ts +73 -0
  76. package/dist/color/capture-color.d.ts.map +1 -0
  77. package/dist/color/capture-color.js +145 -0
  78. package/dist/color/capture-color.js.map +1 -0
  79. package/dist/color/sensor-color-development.d.ts +23 -0
  80. package/dist/color/sensor-color-development.d.ts.map +1 -0
  81. package/dist/color/sensor-color-development.js +56 -0
  82. package/dist/color/sensor-color-development.js.map +1 -0
  83. package/dist/color/white-balance.d.ts +175 -0
  84. package/dist/color/white-balance.d.ts.map +1 -0
  85. package/dist/color/white-balance.js +606 -0
  86. package/dist/color/white-balance.js.map +1 -0
  87. package/dist/composition/image-formation-plan.d.ts +481 -0
  88. package/dist/composition/image-formation-plan.d.ts.map +1 -0
  89. package/dist/composition/image-formation-plan.js +2499 -0
  90. package/dist/composition/image-formation-plan.js.map +1 -0
  91. package/dist/composition/plan-consumer.d.ts +53 -0
  92. package/dist/composition/plan-consumer.d.ts.map +1 -0
  93. package/dist/composition/plan-consumer.js +119 -0
  94. package/dist/composition/plan-consumer.js.map +1 -0
  95. package/dist/core/calculation-result.d.ts.map +1 -1
  96. package/dist/core/calculation-result.js +6 -0
  97. package/dist/core/calculation-result.js.map +1 -1
  98. package/dist/core/canonical-json.d.ts +18 -0
  99. package/dist/core/canonical-json.d.ts.map +1 -0
  100. package/dist/core/canonical-json.js +44 -0
  101. package/dist/core/canonical-json.js.map +1 -0
  102. package/dist/core/configuration-error.d.ts +6 -0
  103. package/dist/core/configuration-error.d.ts.map +1 -1
  104. package/dist/core/configuration-error.js +6 -0
  105. package/dist/core/configuration-error.js.map +1 -1
  106. package/dist/core/evidence-provenance.d.ts +6 -0
  107. package/dist/core/evidence-provenance.d.ts.map +1 -1
  108. package/dist/core/evidence-provenance.js +7 -0
  109. package/dist/core/evidence-provenance.js.map +1 -1
  110. package/dist/core/image-formation.d.ts +9 -3
  111. package/dist/core/image-formation.d.ts.map +1 -1
  112. package/dist/core/image-formation.js +29 -5
  113. package/dist/core/image-formation.js.map +1 -1
  114. package/dist/core/owned-data.d.ts +25 -0
  115. package/dist/core/owned-data.d.ts.map +1 -0
  116. package/dist/core/owned-data.js +34 -0
  117. package/dist/core/owned-data.js.map +1 -0
  118. package/dist/core/record-validation.d.ts +17 -0
  119. package/dist/core/record-validation.d.ts.map +1 -0
  120. package/dist/core/record-validation.js +44 -0
  121. package/dist/core/record-validation.js.map +1 -0
  122. package/dist/core/scientific-assurance.d.ts +101 -0
  123. package/dist/core/scientific-assurance.d.ts.map +1 -0
  124. package/dist/core/scientific-assurance.js +301 -0
  125. package/dist/core/scientific-assurance.js.map +1 -0
  126. package/dist/core/spectral-composition.d.ts +106 -0
  127. package/dist/core/spectral-composition.d.ts.map +1 -0
  128. package/dist/core/spectral-composition.js +334 -0
  129. package/dist/core/spectral-composition.js.map +1 -0
  130. package/dist/core/spectral.d.ts +34 -0
  131. package/dist/core/spectral.d.ts.map +1 -0
  132. package/dist/core/spectral.js +57 -0
  133. package/dist/core/spectral.js.map +1 -0
  134. package/dist/core/validation.d.ts +6 -0
  135. package/dist/core/validation.d.ts.map +1 -1
  136. package/dist/core/validation.js +6 -0
  137. package/dist/core/validation.js.map +1 -1
  138. package/dist/core/version.d.ts +9 -0
  139. package/dist/core/version.d.ts.map +1 -0
  140. package/dist/core/version.js +10 -0
  141. package/dist/core/version.js.map +1 -0
  142. package/dist/equipment/exposure-capabilities.d.ts +125 -0
  143. package/dist/equipment/exposure-capabilities.d.ts.map +1 -0
  144. package/dist/equipment/exposure-capabilities.js +391 -0
  145. package/dist/equipment/exposure-capabilities.js.map +1 -0
  146. package/dist/equipment/generic-tier-assets.d.ts +82 -0
  147. package/dist/equipment/generic-tier-assets.d.ts.map +1 -0
  148. package/dist/equipment/generic-tier-assets.js +119 -0
  149. package/dist/equipment/generic-tier-assets.js.map +1 -0
  150. package/dist/equipment/generic-tier-presets.d.ts +57 -0
  151. package/dist/equipment/generic-tier-presets.d.ts.map +1 -0
  152. package/dist/equipment/generic-tier-presets.js +122 -0
  153. package/dist/equipment/generic-tier-presets.js.map +1 -0
  154. package/dist/equipment/iso-capabilities.d.ts +143 -0
  155. package/dist/equipment/iso-capabilities.d.ts.map +1 -0
  156. package/dist/equipment/iso-capabilities.js +578 -0
  157. package/dist/equipment/iso-capabilities.js.map +1 -0
  158. package/dist/equipment/metering-capabilities.d.ts +58 -0
  159. package/dist/equipment/metering-capabilities.d.ts.map +1 -0
  160. package/dist/equipment/metering-capabilities.js +151 -0
  161. package/dist/equipment/metering-capabilities.js.map +1 -0
  162. package/dist/equipment/release-capabilities.d.ts +33 -0
  163. package/dist/equipment/release-capabilities.d.ts.map +1 -0
  164. package/dist/equipment/release-capabilities.js +176 -0
  165. package/dist/equipment/release-capabilities.js.map +1 -0
  166. package/dist/exposure/exposure-duration-control.d.ts +72 -0
  167. package/dist/exposure/exposure-duration-control.d.ts.map +1 -0
  168. package/dist/exposure/exposure-duration-control.js +161 -0
  169. package/dist/exposure/exposure-duration-control.js.map +1 -0
  170. package/dist/exposure/exposure-mode-resolver.d.ts +637 -0
  171. package/dist/exposure/exposure-mode-resolver.d.ts.map +1 -0
  172. package/dist/exposure/exposure-mode-resolver.js +1905 -0
  173. package/dist/exposure/exposure-mode-resolver.js.map +1 -0
  174. package/dist/exposure/exposure.d.ts +8 -0
  175. package/dist/exposure/exposure.d.ts.map +1 -1
  176. package/dist/exposure/exposure.js +8 -0
  177. package/dist/exposure/exposure.js.map +1 -1
  178. package/dist/exposure/flash.d.ts +179 -0
  179. package/dist/exposure/flash.d.ts.map +1 -0
  180. package/dist/exposure/flash.js +644 -0
  181. package/dist/exposure/flash.js.map +1 -0
  182. package/dist/exposure/metering-scene-radiance.d.ts +72 -0
  183. package/dist/exposure/metering-scene-radiance.d.ts.map +1 -0
  184. package/dist/exposure/metering-scene-radiance.js +222 -0
  185. package/dist/exposure/metering-scene-radiance.js.map +1 -0
  186. package/dist/exposure/metering-target.d.ts +67 -0
  187. package/dist/exposure/metering-target.d.ts.map +1 -0
  188. package/dist/exposure/metering-target.js +265 -0
  189. package/dist/exposure/metering-target.js.map +1 -0
  190. package/dist/exposure/metering-temporal.d.ts +76 -0
  191. package/dist/exposure/metering-temporal.d.ts.map +1 -0
  192. package/dist/exposure/metering-temporal.js +210 -0
  193. package/dist/exposure/metering-temporal.js.map +1 -0
  194. package/dist/exposure/metering.d.ts +124 -0
  195. package/dist/exposure/metering.d.ts.map +1 -0
  196. package/dist/exposure/metering.js +422 -0
  197. package/dist/exposure/metering.js.map +1 -0
  198. package/dist/exposure/program-line.d.ts +29 -0
  199. package/dist/exposure/program-line.d.ts.map +1 -0
  200. package/dist/exposure/program-line.js +126 -0
  201. package/dist/exposure/program-line.js.map +1 -0
  202. package/dist/index.d.ts +87 -6
  203. package/dist/index.d.ts.map +1 -1
  204. package/dist/index.js +85 -6
  205. package/dist/index.js.map +1 -1
  206. package/dist/motion/camera-rotation.d.ts +16 -0
  207. package/dist/motion/camera-rotation.d.ts.map +1 -1
  208. package/dist/motion/camera-rotation.js +16 -0
  209. package/dist/motion/camera-rotation.js.map +1 -1
  210. package/dist/motion/capture-rotation-inverse-mapping.d.ts +13 -0
  211. package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +1 -1
  212. package/dist/motion/capture-rotation-inverse-mapping.js +13 -0
  213. package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
  214. package/dist/motion/capture-rotation-temporal-quadrature.d.ts +15 -0
  215. package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +1 -1
  216. package/dist/motion/capture-rotation-temporal-quadrature.js +15 -0
  217. package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
  218. package/dist/motion/capture-rotation-trajectory.d.ts +15 -0
  219. package/dist/motion/capture-rotation-trajectory.d.ts.map +1 -1
  220. package/dist/motion/capture-rotation-trajectory.js +15 -0
  221. package/dist/motion/capture-rotation-trajectory.js.map +1 -1
  222. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +119 -0
  223. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +1 -0
  224. package/dist/motion/capture-translation-parallax-temporal-quadrature.js +263 -0
  225. package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -0
  226. package/dist/motion/extended-object-projection.d.ts +175 -0
  227. package/dist/motion/extended-object-projection.d.ts.map +1 -0
  228. package/dist/motion/extended-object-projection.js +402 -0
  229. package/dist/motion/extended-object-projection.js.map +1 -0
  230. package/dist/motion/projected-motion.d.ts +11 -0
  231. package/dist/motion/projected-motion.d.ts.map +1 -1
  232. package/dist/motion/projected-motion.js +11 -0
  233. package/dist/motion/projected-motion.js.map +1 -1
  234. package/dist/optics/aperture.d.ts +9 -0
  235. package/dist/optics/aperture.d.ts.map +1 -1
  236. package/dist/optics/aperture.js +9 -0
  237. package/dist/optics/aperture.js.map +1 -1
  238. package/dist/optics/circle-of-confusion.d.ts +8 -0
  239. package/dist/optics/circle-of-confusion.d.ts.map +1 -1
  240. package/dist/optics/circle-of-confusion.js +8 -0
  241. package/dist/optics/circle-of-confusion.js.map +1 -1
  242. package/dist/optics/complex-pupil-psf.d.ts +128 -0
  243. package/dist/optics/complex-pupil-psf.d.ts.map +1 -0
  244. package/dist/optics/complex-pupil-psf.js +462 -0
  245. package/dist/optics/complex-pupil-psf.js.map +1 -0
  246. package/dist/optics/depth-of-field.d.ts +18 -0
  247. package/dist/optics/depth-of-field.d.ts.map +1 -1
  248. package/dist/optics/depth-of-field.js +29 -4
  249. package/dist/optics/depth-of-field.js.map +1 -1
  250. package/dist/optics/diffraction.d.ts +8 -0
  251. package/dist/optics/diffraction.d.ts.map +1 -1
  252. package/dist/optics/diffraction.js +8 -0
  253. package/dist/optics/diffraction.js.map +1 -1
  254. package/dist/optics/focus-breathing.d.ts +13 -0
  255. package/dist/optics/focus-breathing.d.ts.map +1 -1
  256. package/dist/optics/focus-breathing.js +13 -0
  257. package/dist/optics/focus-breathing.js.map +1 -1
  258. package/dist/optics/focus-state.d.ts +47 -0
  259. package/dist/optics/focus-state.d.ts.map +1 -0
  260. package/dist/optics/focus-state.js +78 -0
  261. package/dist/optics/focus-state.js.map +1 -0
  262. package/dist/optics/front-of-lens-filter.d.ts +114 -0
  263. package/dist/optics/front-of-lens-filter.d.ts.map +1 -0
  264. package/dist/optics/front-of-lens-filter.js +468 -0
  265. package/dist/optics/front-of-lens-filter.js.map +1 -0
  266. package/dist/optics/illumination-vignetting.d.ts +9 -0
  267. package/dist/optics/illumination-vignetting.d.ts.map +1 -1
  268. package/dist/optics/illumination-vignetting.js +9 -0
  269. package/dist/optics/illumination-vignetting.js.map +1 -1
  270. package/dist/optics/lateral-chromatic-aberration.d.ts +11 -0
  271. package/dist/optics/lateral-chromatic-aberration.d.ts.map +1 -1
  272. package/dist/optics/lateral-chromatic-aberration.js +11 -0
  273. package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
  274. package/dist/optics/lens-psf-profile.d.ts +217 -0
  275. package/dist/optics/lens-psf-profile.d.ts.map +1 -0
  276. package/dist/optics/lens-psf-profile.js +823 -0
  277. package/dist/optics/lens-psf-profile.js.map +1 -0
  278. package/dist/optics/polygon-diffraction.d.ts +67 -0
  279. package/dist/optics/polygon-diffraction.d.ts.map +1 -0
  280. package/dist/optics/polygon-diffraction.js +145 -0
  281. package/dist/optics/polygon-diffraction.js.map +1 -0
  282. package/dist/optics/profile-contract.d.ts +42 -0
  283. package/dist/optics/profile-contract.d.ts.map +1 -0
  284. package/dist/optics/profile-contract.js +92 -0
  285. package/dist/optics/profile-contract.js.map +1 -0
  286. package/dist/optics/psf-foundation.d.ts +16 -3
  287. package/dist/optics/psf-foundation.d.ts.map +1 -1
  288. package/dist/optics/psf-foundation.js +28 -15
  289. package/dist/optics/psf-foundation.js.map +1 -1
  290. package/dist/optics/radial-distortion.d.ts +18 -0
  291. package/dist/optics/radial-distortion.d.ts.map +1 -1
  292. package/dist/optics/radial-distortion.js +18 -0
  293. package/dist/optics/radial-distortion.js.map +1 -1
  294. package/dist/optics/scene-to-sensor-irradiance.d.ts +213 -0
  295. package/dist/optics/scene-to-sensor-irradiance.d.ts.map +1 -0
  296. package/dist/optics/scene-to-sensor-irradiance.js +662 -0
  297. package/dist/optics/scene-to-sensor-irradiance.js.map +1 -0
  298. package/dist/optics/scene-to-sensor-quadrature.d.ts +63 -0
  299. package/dist/optics/scene-to-sensor-quadrature.d.ts.map +1 -0
  300. package/dist/optics/scene-to-sensor-quadrature.js +82 -0
  301. package/dist/optics/scene-to-sensor-quadrature.js.map +1 -0
  302. package/dist/optics/sensor-environment-query.d.ts +60 -0
  303. package/dist/optics/sensor-environment-query.d.ts.map +1 -0
  304. package/dist/optics/sensor-environment-query.js +50 -0
  305. package/dist/optics/sensor-environment-query.js.map +1 -0
  306. package/dist/optics/sensor-psf-quadrature.d.ts +70 -0
  307. package/dist/optics/sensor-psf-quadrature.d.ts.map +1 -0
  308. package/dist/optics/sensor-psf-quadrature.js +101 -0
  309. package/dist/optics/sensor-psf-quadrature.js.map +1 -0
  310. package/dist/optics/sensor-psf-support.d.ts +20 -0
  311. package/dist/optics/sensor-psf-support.d.ts.map +1 -0
  312. package/dist/optics/sensor-psf-support.js +13 -0
  313. package/dist/optics/sensor-psf-support.js.map +1 -0
  314. package/dist/optics/stray-light.d.ts +91 -0
  315. package/dist/optics/stray-light.d.ts.map +1 -0
  316. package/dist/optics/stray-light.js +110 -0
  317. package/dist/optics/stray-light.js.map +1 -0
  318. package/dist/optics/thin-lens.d.ts +8 -0
  319. package/dist/optics/thin-lens.d.ts.map +1 -1
  320. package/dist/optics/thin-lens.js +8 -0
  321. package/dist/optics/thin-lens.js.map +1 -1
  322. package/dist/output/capture-corrected-sdr.d.ts +49 -0
  323. package/dist/output/capture-corrected-sdr.d.ts.map +1 -0
  324. package/dist/output/capture-corrected-sdr.js +149 -0
  325. package/dist/output/capture-corrected-sdr.js.map +1 -0
  326. package/dist/output/capture-geometry.d.ts.map +1 -1
  327. package/dist/output/capture-geometry.js +8 -0
  328. package/dist/output/capture-geometry.js.map +1 -1
  329. package/dist/output/capture-sdr.d.ts +49 -0
  330. package/dist/output/capture-sdr.d.ts.map +1 -0
  331. package/dist/output/capture-sdr.js +90 -0
  332. package/dist/output/capture-sdr.js.map +1 -0
  333. package/dist/output/crop.d.ts +6 -0
  334. package/dist/output/crop.d.ts.map +1 -1
  335. package/dist/output/crop.js +6 -0
  336. package/dist/output/crop.js.map +1 -1
  337. package/dist/output/geometric-transforms.d.ts +137 -0
  338. package/dist/output/geometric-transforms.d.ts.map +1 -0
  339. package/dist/output/geometric-transforms.js +225 -0
  340. package/dist/output/geometric-transforms.js.map +1 -0
  341. package/dist/output/lens-corrections.d.ts +121 -0
  342. package/dist/output/lens-corrections.d.ts.map +1 -0
  343. package/dist/output/lens-corrections.js +210 -0
  344. package/dist/output/lens-corrections.js.map +1 -0
  345. package/dist/output/sdr-rendering.d.ts +81 -0
  346. package/dist/output/sdr-rendering.d.ts.map +1 -0
  347. package/dist/output/sdr-rendering.js +106 -0
  348. package/dist/output/sdr-rendering.js.map +1 -0
  349. package/dist/output/subject-framing-crop.d.ts +8 -0
  350. package/dist/output/subject-framing-crop.d.ts.map +1 -1
  351. package/dist/output/subject-framing-crop.js +8 -0
  352. package/dist/output/subject-framing-crop.js.map +1 -1
  353. package/dist/schema/camera.d.ts +6 -0
  354. package/dist/schema/camera.d.ts.map +1 -1
  355. package/dist/schema/illumination-spectral.d.ts +51 -0
  356. package/dist/schema/illumination-spectral.d.ts.map +1 -0
  357. package/dist/schema/illumination-spectral.js +132 -0
  358. package/dist/schema/illumination-spectral.js.map +1 -0
  359. package/dist/schema/illumination-temporal.d.ts +156 -0
  360. package/dist/schema/illumination-temporal.d.ts.map +1 -0
  361. package/dist/schema/illumination-temporal.js +554 -0
  362. package/dist/schema/illumination-temporal.js.map +1 -0
  363. package/dist/schema/illumination.d.ts +138 -0
  364. package/dist/schema/illumination.d.ts.map +1 -0
  365. package/dist/schema/illumination.js +483 -0
  366. package/dist/schema/illumination.js.map +1 -0
  367. package/dist/schema/scene-radiance-temporal.d.ts +107 -0
  368. package/dist/schema/scene-radiance-temporal.d.ts.map +1 -0
  369. package/dist/schema/scene-radiance-temporal.js +259 -0
  370. package/dist/schema/scene-radiance-temporal.js.map +1 -0
  371. package/dist/schema/scene-radiance.d.ts +185 -0
  372. package/dist/schema/scene-radiance.d.ts.map +1 -0
  373. package/dist/schema/scene-radiance.js +535 -0
  374. package/dist/schema/scene-radiance.js.map +1 -0
  375. package/dist/schema/scene.d.ts +7 -0
  376. package/dist/schema/scene.d.ts.map +1 -1
  377. package/dist/schema/validation.d.ts.map +1 -1
  378. package/dist/schema/validation.js +7 -0
  379. package/dist/schema/validation.js.map +1 -1
  380. package/dist/sensor/accumulated-charge.d.ts +199 -0
  381. package/dist/sensor/accumulated-charge.d.ts.map +1 -0
  382. package/dist/sensor/accumulated-charge.js +450 -0
  383. package/dist/sensor/accumulated-charge.js.map +1 -0
  384. package/dist/sensor/architecture.d.ts +48 -13
  385. package/dist/sensor/architecture.d.ts.map +1 -1
  386. package/dist/sensor/architecture.js +58 -16
  387. package/dist/sensor/architecture.js.map +1 -1
  388. package/dist/sensor/camera-saturation-capacity.d.ts +138 -0
  389. package/dist/sensor/camera-saturation-capacity.d.ts.map +1 -0
  390. package/dist/sensor/camera-saturation-capacity.js +356 -0
  391. package/dist/sensor/camera-saturation-capacity.js.map +1 -0
  392. package/dist/sensor/capture-color-sampling-binding.d.ts +1 -0
  393. package/dist/sensor/capture-color-sampling-binding.d.ts.map +1 -1
  394. package/dist/sensor/capture-color-sampling-binding.js +14 -0
  395. package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
  396. package/dist/sensor/capture-mode-timing.d.ts +63 -0
  397. package/dist/sensor/capture-mode-timing.d.ts.map +1 -0
  398. package/dist/sensor/capture-mode-timing.js +270 -0
  399. package/dist/sensor/capture-mode-timing.js.map +1 -0
  400. package/dist/sensor/capture-mode.d.ts.map +1 -1
  401. package/dist/sensor/capture-mode.js +13 -0
  402. package/dist/sensor/capture-mode.js.map +1 -1
  403. package/dist/sensor/color-sampling.d.ts.map +1 -1
  404. package/dist/sensor/color-sampling.js +19 -0
  405. package/dist/sensor/color-sampling.js.map +1 -1
  406. package/dist/sensor/constant-rate-temporal-integration.d.ts +126 -0
  407. package/dist/sensor/constant-rate-temporal-integration.d.ts.map +1 -0
  408. package/dist/sensor/constant-rate-temporal-integration.js +382 -0
  409. package/dist/sensor/constant-rate-temporal-integration.js.map +1 -0
  410. package/dist/sensor/dark-current.d.ts +169 -0
  411. package/dist/sensor/dark-current.d.ts.map +1 -0
  412. package/dist/sensor/dark-current.js +427 -0
  413. package/dist/sensor/dark-current.js.map +1 -0
  414. package/dist/sensor/environment-photo-signal.d.ts +123 -0
  415. package/dist/sensor/environment-photo-signal.d.ts.map +1 -0
  416. package/dist/sensor/environment-photo-signal.js +186 -0
  417. package/dist/sensor/environment-photo-signal.js.map +1 -0
  418. package/dist/sensor/eqe-electron-rate.d.ts +107 -0
  419. package/dist/sensor/eqe-electron-rate.d.ts.map +1 -0
  420. package/dist/sensor/eqe-electron-rate.js +561 -0
  421. package/dist/sensor/eqe-electron-rate.js.map +1 -0
  422. package/dist/sensor/eqe-local-exposure.d.ts +65 -0
  423. package/dist/sensor/eqe-local-exposure.d.ts.map +1 -0
  424. package/dist/sensor/eqe-local-exposure.js +84 -0
  425. package/dist/sensor/eqe-local-exposure.js.map +1 -0
  426. package/dist/sensor/eqe-temporal-exposure.d.ts +55 -0
  427. package/dist/sensor/eqe-temporal-exposure.d.ts.map +1 -0
  428. package/dist/sensor/eqe-temporal-exposure.js +62 -0
  429. package/dist/sensor/eqe-temporal-exposure.js.map +1 -0
  430. package/dist/sensor/exposure-window.d.ts +14 -0
  431. package/dist/sensor/exposure-window.d.ts.map +1 -1
  432. package/dist/sensor/exposure-window.js +14 -0
  433. package/dist/sensor/exposure-window.js.map +1 -1
  434. package/dist/sensor/iso-signal-chain.d.ts +148 -0
  435. package/dist/sensor/iso-signal-chain.d.ts.map +1 -0
  436. package/dist/sensor/iso-signal-chain.js +411 -0
  437. package/dist/sensor/iso-signal-chain.js.map +1 -0
  438. package/dist/sensor/local-exposure-binding.d.ts +87 -0
  439. package/dist/sensor/local-exposure-binding.d.ts.map +1 -0
  440. package/dist/sensor/local-exposure-binding.js +214 -0
  441. package/dist/sensor/local-exposure-binding.js.map +1 -0
  442. package/dist/sensor/optical-stack.d.ts.map +1 -1
  443. package/dist/sensor/optical-stack.js +17 -0
  444. package/dist/sensor/optical-stack.js.map +1 -1
  445. package/dist/sensor/photon-energy.d.ts +97 -0
  446. package/dist/sensor/photon-energy.d.ts.map +1 -0
  447. package/dist/sensor/photon-energy.js +390 -0
  448. package/dist/sensor/photon-energy.js.map +1 -0
  449. package/dist/sensor/physical-charge-capacity.d.ts +130 -0
  450. package/dist/sensor/physical-charge-capacity.d.ts.map +1 -0
  451. package/dist/sensor/physical-charge-capacity.js +345 -0
  452. package/dist/sensor/physical-charge-capacity.js.map +1 -0
  453. package/dist/sensor/pixel-pitch.d.ts +6 -0
  454. package/dist/sensor/pixel-pitch.d.ts.map +1 -1
  455. package/dist/sensor/pixel-pitch.js +6 -0
  456. package/dist/sensor/pixel-pitch.js.map +1 -1
  457. package/dist/sensor/radiometry-readiness.d.ts +10 -0
  458. package/dist/sensor/radiometry-readiness.d.ts.map +1 -1
  459. package/dist/sensor/radiometry-readiness.js +10 -0
  460. package/dist/sensor/radiometry-readiness.js.map +1 -1
  461. package/dist/sensor/raw-readout.d.ts +314 -0
  462. package/dist/sensor/raw-readout.d.ts.map +1 -0
  463. package/dist/sensor/raw-readout.js +914 -0
  464. package/dist/sensor/raw-readout.js.map +1 -0
  465. package/dist/sensor/raw-reconstruction.d.ts +170 -0
  466. package/dist/sensor/raw-reconstruction.d.ts.map +1 -0
  467. package/dist/sensor/raw-reconstruction.js +424 -0
  468. package/dist/sensor/raw-reconstruction.js.map +1 -0
  469. package/dist/sensor/readout-exposure-linkage.d.ts +12 -0
  470. package/dist/sensor/readout-exposure-linkage.d.ts.map +1 -1
  471. package/dist/sensor/readout-exposure-linkage.js +12 -0
  472. package/dist/sensor/readout-exposure-linkage.js.map +1 -1
  473. package/dist/sensor/readout-timing.d.ts +13 -0
  474. package/dist/sensor/readout-timing.d.ts.map +1 -1
  475. package/dist/sensor/readout-timing.js +13 -0
  476. package/dist/sensor/readout-timing.js.map +1 -1
  477. package/dist/sensor/response-application-compatibility.d.ts +136 -0
  478. package/dist/sensor/response-application-compatibility.d.ts.map +1 -0
  479. package/dist/sensor/response-application-compatibility.js +408 -0
  480. package/dist/sensor/response-application-compatibility.js.map +1 -0
  481. package/dist/sensor/response-operating-range.d.ts +173 -0
  482. package/dist/sensor/response-operating-range.d.ts.map +1 -0
  483. package/dist/sensor/response-operating-range.js +672 -0
  484. package/dist/sensor/response-operating-range.js.map +1 -0
  485. package/dist/sensor/responsivity-photocurrent.d.ts +158 -0
  486. package/dist/sensor/responsivity-photocurrent.d.ts.map +1 -0
  487. package/dist/sensor/responsivity-photocurrent.js +644 -0
  488. package/dist/sensor/responsivity-photocurrent.js.map +1 -0
  489. package/dist/sensor/sampling-aperture.d.ts.map +1 -1
  490. package/dist/sensor/sampling-aperture.js +14 -0
  491. package/dist/sensor/sampling-aperture.js.map +1 -1
  492. package/dist/sensor/scene-eqe-temporal-exposure.d.ts +45 -0
  493. package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +1 -0
  494. package/dist/sensor/scene-eqe-temporal-exposure.js +64 -0
  495. package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -0
  496. package/dist/sensor/sensor-geometry.d.ts +12 -0
  497. package/dist/sensor/sensor-geometry.d.ts.map +1 -1
  498. package/dist/sensor/sensor-geometry.js +12 -0
  499. package/dist/sensor/sensor-geometry.js.map +1 -1
  500. package/dist/sensor/signal-noise.d.ts +10 -0
  501. package/dist/sensor/signal-noise.d.ts.map +1 -1
  502. package/dist/sensor/signal-noise.js +10 -0
  503. package/dist/sensor/signal-noise.js.map +1 -1
  504. package/dist/sensor/spatial-sample-reduction.d.ts +44 -1
  505. package/dist/sensor/spatial-sample-reduction.d.ts.map +1 -1
  506. package/dist/sensor/spatial-sample-reduction.js +51 -5
  507. package/dist/sensor/spatial-sample-reduction.js.map +1 -1
  508. package/dist/sensor/spatial-sampling-quadrature.d.ts +24 -0
  509. package/dist/sensor/spatial-sampling-quadrature.d.ts.map +1 -1
  510. package/dist/sensor/spatial-sampling-quadrature.js +27 -0
  511. package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
  512. package/dist/sensor/spatio-spectral-reduction.d.ts +187 -0
  513. package/dist/sensor/spatio-spectral-reduction.d.ts.map +1 -0
  514. package/dist/sensor/spatio-spectral-reduction.js +373 -0
  515. package/dist/sensor/spatio-spectral-reduction.js.map +1 -0
  516. package/dist/sensor/spectral-coverage.d.ts +24 -0
  517. package/dist/sensor/spectral-coverage.d.ts.map +1 -0
  518. package/dist/sensor/spectral-coverage.js +86 -0
  519. package/dist/sensor/spectral-coverage.js.map +1 -0
  520. package/dist/sensor/spectral-quadrature.d.ts +169 -0
  521. package/dist/sensor/spectral-quadrature.d.ts.map +1 -0
  522. package/dist/sensor/spectral-quadrature.js +542 -0
  523. package/dist/sensor/spectral-quadrature.js.map +1 -0
  524. package/dist/sensor/spectral-response.d.ts +192 -0
  525. package/dist/sensor/spectral-response.d.ts.map +1 -0
  526. package/dist/sensor/spectral-response.js +664 -0
  527. package/dist/sensor/spectral-response.js.map +1 -0
  528. package/dist/sensor/temporal-eqe-sum.d.ts +15 -0
  529. package/dist/sensor/temporal-eqe-sum.d.ts.map +1 -0
  530. package/dist/sensor/temporal-eqe-sum.js +30 -0
  531. package/dist/sensor/temporal-eqe-sum.js.map +1 -0
  532. package/dist/sensor/temporal-photo-signal.d.ts +38 -0
  533. package/dist/sensor/temporal-photo-signal.d.ts.map +1 -0
  534. package/dist/sensor/temporal-photo-signal.js +110 -0
  535. package/dist/sensor/temporal-photo-signal.js.map +1 -0
  536. package/dist/sensor/temporal-sample-binding.d.ts +6 -0
  537. package/dist/sensor/temporal-sample-binding.d.ts.map +1 -0
  538. package/dist/sensor/temporal-sample-binding.js +32 -0
  539. package/dist/sensor/temporal-sample-binding.js.map +1 -0
  540. package/dist/simulation/poc-simulation.d.ts.map +1 -1
  541. package/dist/simulation/poc-simulation.js +34 -11
  542. package/dist/simulation/poc-simulation.js.map +1 -1
  543. package/dist/stabilization/camera-shake.d.ts +11 -0
  544. package/dist/stabilization/camera-shake.d.ts.map +1 -1
  545. package/dist/stabilization/camera-shake.js +11 -0
  546. package/dist/stabilization/camera-shake.js.map +1 -1
  547. package/dist/stabilization/system.d.ts +218 -0
  548. package/dist/stabilization/system.d.ts.map +1 -0
  549. package/dist/stabilization/system.js +695 -0
  550. package/dist/stabilization/system.js.map +1 -0
  551. package/docs/API_REFERENCE.md +2017 -0
  552. package/docs/API_STYLE.md +139 -3
  553. package/docs/ARCHITECTURE.md +134 -24
  554. package/docs/AUTOMATION_COORDINATION.md +2 -0
  555. package/docs/CAPTURE_COLOR.md +25 -0
  556. package/docs/CAPTURE_CORRECTED_SDR.md +25 -0
  557. package/docs/CAPTURE_EXPORT_METADATA.md +27 -0
  558. package/docs/CAPTURE_SDR.md +20 -0
  559. package/docs/DEVELOPERS.md +60 -0
  560. package/docs/DIGITAL_OPTICS_FOUNDATION.md +69 -0
  561. package/docs/ENVIRONMENT_RAW_CAPTURE.md +187 -0
  562. package/docs/EXPORT_ACCEPTANCE.md +133 -0
  563. package/docs/GENERIC_TIER_PRESETS.md +269 -0
  564. package/docs/GEOMETRIC_PREPARATION_REUSE.md +141 -0
  565. package/docs/IMAGE_FORMATION.md +80 -10
  566. package/docs/LINEAR_CAPTURE_ENCODING.md +25 -0
  567. package/docs/MOTION_AND_SIGNAL.md +5 -3
  568. package/docs/NUMERICAL_CORRECTNESS.md +191 -0
  569. package/docs/PERFORMANCE_BASELINE.md +56 -0
  570. package/docs/PHOTOGRAPHIC_EXPORT.md +206 -0
  571. package/docs/PHYSICS_FOUNDATION.md +152 -5
  572. package/docs/POC_API.md +2 -0
  573. package/docs/POC_PROJECTION_REUSE.md +124 -0
  574. package/docs/PROCESSED_OUTPUT.md +157 -0
  575. package/docs/PRODUCTION_COMPOSITION.md +373 -0
  576. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +131 -0
  577. package/docs/PROVENANCE.md +4 -0
  578. package/docs/PSF_FOUNDATION.md +110 -88
  579. package/docs/RAW_FRAME_ENVELOPE.md +56 -0
  580. package/docs/RAW_FRAME_RECONSTRUCTION.md +30 -0
  581. package/docs/RELEASE_1_0.md +66 -0
  582. package/docs/RELEASE_1_0_1.md +61 -0
  583. package/docs/RELEASE_AUDIT.md +39 -0
  584. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +298 -0
  585. package/docs/SCENE_SENSOR_QUADRATURE.md +98 -0
  586. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +86 -0
  587. package/docs/SCIENTIFIC_ASSURANCE.md +280 -0
  588. package/docs/SCIENTIFIC_CONFORMANCE.md +83 -0
  589. package/docs/SDR_RENDERING.md +33 -0
  590. package/docs/SENSOR_ENVIRONMENT_QUERY.md +86 -0
  591. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +104 -0
  592. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +74 -0
  593. package/docs/SENSOR_PSF_QUADRATURE.md +90 -0
  594. package/docs/SENSOR_RAW_FRAME.md +20 -0
  595. package/docs/SENSOR_RAW_PRODUCER.md +77 -0
  596. package/docs/SIGNAL_CONFORMANCE.md +23 -0
  597. package/docs/SIMULATED_CAPTURE.md +65 -0
  598. package/docs/STABILIZATION.md +160 -17
  599. package/docs/TEMPORAL_PHOTO_RAW.md +83 -0
  600. package/docs/TIER_ACCEPTANCE.md +129 -0
  601. package/docs/TIER_PRESET_ACCEPTANCE.md +59 -0
  602. package/docs/USAGE.md +5050 -1047
  603. package/docs/V1_COMPOSITION_MAP.md +123 -0
  604. package/docs/V1_HELPER_REUSE_REVIEW.md +60 -0
  605. package/docs/V1_PERFORMANCE_DISPOSITION.md +88 -0
  606. package/docs/api/camera-equivalent-focal-length.md +53 -0
  607. package/docs/api/camera-field-of-view.md +119 -0
  608. package/docs/api/camera-projected-object-size.md +54 -0
  609. package/docs/api/capture-capture-export-metadata.md +107 -0
  610. package/docs/api/capture-environment-raw-producer.md +56 -0
  611. package/docs/api/capture-focus-control.md +419 -0
  612. package/docs/api/capture-linear-encoding.md +99 -0
  613. package/docs/api/capture-photographic-export.md +172 -0
  614. package/docs/api/capture-raw-frame-reconstruction.md +87 -0
  615. package/docs/api/capture-release-sequence.md +252 -0
  616. package/docs/api/capture-sensor-raw-frame.md +66 -0
  617. package/docs/api/capture-sensor-raw-producer.md +98 -0
  618. package/docs/api/capture-simulated-capture.md +179 -0
  619. package/docs/api/color-capture-color.md +122 -0
  620. package/docs/api/color-white-balance.md +386 -0
  621. package/docs/api/composition-image-formation-plan.md +825 -0
  622. package/docs/api/composition-plan-consumer.md +98 -0
  623. package/docs/api/core-calculation-result.md +220 -0
  624. package/docs/api/core-configuration-error.md +19 -0
  625. package/docs/api/core-image-formation.md +204 -0
  626. package/docs/api/core-scientific-assurance.md +214 -0
  627. package/docs/api/core-spectral-composition.md +268 -0
  628. package/docs/api/core-spectral.md +78 -0
  629. package/docs/api/core-validation.md +34 -0
  630. package/docs/api/core-version.md +14 -0
  631. package/docs/api/equipment-exposure-capabilities.md +270 -0
  632. package/docs/api/equipment-generic-tier-assets.md +82 -0
  633. package/docs/api/equipment-generic-tier-presets.md +103 -0
  634. package/docs/api/equipment-iso-capabilities.md +295 -0
  635. package/docs/api/equipment-metering-capabilities.md +126 -0
  636. package/docs/api/equipment-release-capabilities.md +91 -0
  637. package/docs/api/exports.json +5656 -0
  638. package/docs/api/exposure-exposure-duration-control.md +115 -0
  639. package/docs/api/exposure-exposure-mode-resolver.md +966 -0
  640. package/docs/api/exposure-exposure.md +150 -0
  641. package/docs/api/exposure-flash.md +327 -0
  642. package/docs/api/exposure-metering-scene-radiance.md +154 -0
  643. package/docs/api/exposure-metering-target.md +134 -0
  644. package/docs/api/exposure-metering-temporal.md +77 -0
  645. package/docs/api/exposure-metering.md +172 -0
  646. package/docs/api/exposure-program-line.md +64 -0
  647. package/docs/api/motion-camera-rotation.md +215 -0
  648. package/docs/api/motion-capture-rotation-inverse-mapping.md +128 -0
  649. package/docs/api/motion-capture-rotation-temporal-quadrature.md +127 -0
  650. package/docs/api/motion-capture-rotation-trajectory.md +132 -0
  651. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +171 -0
  652. package/docs/api/motion-extended-object-projection.md +312 -0
  653. package/docs/api/motion-projected-motion.md +60 -0
  654. package/docs/api/optics-aperture.md +69 -0
  655. package/docs/api/optics-circle-of-confusion.md +46 -0
  656. package/docs/api/optics-complex-pupil-psf.md +193 -0
  657. package/docs/api/optics-depth-of-field.md +92 -0
  658. package/docs/api/optics-diffraction.md +46 -0
  659. package/docs/api/optics-focus-breathing.md +119 -0
  660. package/docs/api/optics-focus-state.md +64 -0
  661. package/docs/api/optics-front-of-lens-filter.md +263 -0
  662. package/docs/api/optics-illumination-vignetting.md +95 -0
  663. package/docs/api/optics-lateral-chromatic-aberration.md +225 -0
  664. package/docs/api/optics-lens-psf-profile.md +380 -0
  665. package/docs/api/optics-polygon-diffraction.md +68 -0
  666. package/docs/api/optics-profile-contract.md +47 -0
  667. package/docs/api/optics-psf-foundation.md +181 -0
  668. package/docs/api/optics-radial-distortion.md +194 -0
  669. package/docs/api/optics-scene-to-sensor-irradiance.md +371 -0
  670. package/docs/api/optics-scene-to-sensor-quadrature.md +78 -0
  671. package/docs/api/optics-sensor-environment-query.md +58 -0
  672. package/docs/api/optics-sensor-psf-quadrature.md +81 -0
  673. package/docs/api/optics-stray-light.md +109 -0
  674. package/docs/api/optics-thin-lens.md +53 -0
  675. package/docs/api/output-capture-corrected-sdr.md +71 -0
  676. package/docs/api/output-capture-geometry.md +500 -0
  677. package/docs/api/output-capture-sdr.md +69 -0
  678. package/docs/api/output-crop.md +47 -0
  679. package/docs/api/output-geometric-transforms.md +199 -0
  680. package/docs/api/output-lens-corrections.md +162 -0
  681. package/docs/api/output-sdr-rendering.md +122 -0
  682. package/docs/api/output-subject-framing-crop.md +59 -0
  683. package/docs/api/schema-camera.md +84 -0
  684. package/docs/api/schema-illumination-spectral.md +77 -0
  685. package/docs/api/schema-illumination-temporal.md +289 -0
  686. package/docs/api/schema-illumination.md +246 -0
  687. package/docs/api/schema-scene-radiance-temporal.md +215 -0
  688. package/docs/api/schema-scene-radiance.md +415 -0
  689. package/docs/api/schema-scene.md +105 -0
  690. package/docs/api/schema-validation.md +25 -0
  691. package/docs/api/sensor-accumulated-charge.md +273 -0
  692. package/docs/api/sensor-architecture.md +155 -0
  693. package/docs/api/sensor-camera-saturation-capacity.md +215 -0
  694. package/docs/api/sensor-capture-color-sampling-binding.md +323 -0
  695. package/docs/api/sensor-capture-mode-timing.md +123 -0
  696. package/docs/api/sensor-capture-mode.md +321 -0
  697. package/docs/api/sensor-color-sampling.md +228 -0
  698. package/docs/api/sensor-constant-rate-temporal-integration.md +152 -0
  699. package/docs/api/sensor-dark-current.md +227 -0
  700. package/docs/api/sensor-environment-photo-signal.md +77 -0
  701. package/docs/api/sensor-eqe-electron-rate.md +166 -0
  702. package/docs/api/sensor-eqe-local-exposure.md +68 -0
  703. package/docs/api/sensor-eqe-temporal-exposure.md +73 -0
  704. package/docs/api/sensor-exposure-window.md +183 -0
  705. package/docs/api/sensor-iso-signal-chain.md +264 -0
  706. package/docs/api/sensor-local-exposure-binding.md +126 -0
  707. package/docs/api/sensor-optical-stack.md +211 -0
  708. package/docs/api/sensor-photon-energy.md +149 -0
  709. package/docs/api/sensor-physical-charge-capacity.md +196 -0
  710. package/docs/api/sensor-pixel-pitch.md +41 -0
  711. package/docs/api/sensor-radiometry-readiness.md +240 -0
  712. package/docs/api/sensor-raw-readout.md +499 -0
  713. package/docs/api/sensor-raw-reconstruction.md +260 -0
  714. package/docs/api/sensor-readout-exposure-linkage.md +172 -0
  715. package/docs/api/sensor-readout-timing.md +209 -0
  716. package/docs/api/sensor-response-application-compatibility.md +256 -0
  717. package/docs/api/sensor-response-operating-range.md +293 -0
  718. package/docs/api/sensor-responsivity-photocurrent.md +245 -0
  719. package/docs/api/sensor-sampling-aperture.md +221 -0
  720. package/docs/api/sensor-scene-eqe-temporal-exposure.md +56 -0
  721. package/docs/api/sensor-sensor-geometry.md +143 -0
  722. package/docs/api/sensor-signal-noise.md +75 -0
  723. package/docs/api/sensor-spatial-sample-reduction.md +186 -0
  724. package/docs/api/sensor-spatial-sampling-quadrature.md +188 -0
  725. package/docs/api/sensor-spatio-spectral-reduction.md +217 -0
  726. package/docs/api/sensor-spectral-coverage.md +33 -0
  727. package/docs/api/sensor-spectral-quadrature.md +183 -0
  728. package/docs/api/sensor-spectral-response.md +291 -0
  729. package/docs/api/sensor-temporal-photo-signal.md +62 -0
  730. package/docs/api/simulation-poc-simulation.md +364 -0
  731. package/docs/api/stabilization-camera-shake.md +71 -0
  732. package/docs/api/stabilization-system.md +442 -0
  733. package/docs/benchmarks/2026-10-01-main-baseline.json +694 -0
  734. package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +2190 -0
  735. package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +2423 -0
  736. package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +210 -0
  737. package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +187 -0
  738. package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +756 -0
  739. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +711 -0
  740. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +711 -0
  741. package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +885 -0
  742. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +868 -0
  743. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +868 -0
  744. package/docs/examples/production-capture.mjs +34 -0
  745. package/docs/examples/production-request.json +4613 -0
  746. package/docs/examples/quick-start.mjs +12 -0
  747. package/docs/validation/documentation-fragments.json +212 -0
  748. package/docs/validation/release-audit-inventory.json +1306 -0
  749. package/docs/validation/tier-acceptance-report-v1.json +2538 -0
  750. package/package.json +15 -3
@@ -0,0 +1,561 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * Module boundary and integration notes.
4
+ * Converts pre-response geometric-aperture spectral radiant power into incident-photon rate and
5
+ * expected generated-electron rate. This function applies response per wavelength node. It never
6
+ * applies one broadband-average QE to total radiant power. Temporal exposure integration remains
7
+ * downstream, so all outputs are rates (per second), not photon/electron counts.
8
+ * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
9
+ * limits.
10
+ */
11
+ import { approximationResult } from "../core/calculation-result.js";
12
+ import { InvalidScientificInputError } from "../core/validation.js";
13
+ import { calculatePhotonEnergyFromWavelength } from "./photon-energy.js";
14
+ import { parseSensorColorSamplingProfile } from "./color-sampling.js";
15
+ import { createSensorSpectralResponseChannelBinding, parseSensorSpectralResponseProfile, resolveParsedSensorSpectralResponseAtWavelength } from "./spectral-response.js";
16
+ const REDUCTION_TOLERANCE = 1e-10;
17
+ function addCompensated(state, value) {
18
+ const adjusted = value - state.correction;
19
+ const next = state.sum + adjusted;
20
+ state.correction =
21
+ (next - state.sum) - adjusted;
22
+ state.sum = next;
23
+ }
24
+ function requireNonNegativeFinite(value, path) {
25
+ if (typeof value !== "number" ||
26
+ !Number.isFinite(value) ||
27
+ value < 0) {
28
+ throw new InvalidScientificInputError(path +
29
+ " must be finite and greater than or equal to zero.");
30
+ }
31
+ return value;
32
+ }
33
+ function requirePositiveFinite(value, path) {
34
+ if (typeof value !== "number" ||
35
+ !Number.isFinite(value) ||
36
+ value <= 0) {
37
+ throw new InvalidScientificInputError(path +
38
+ " must be finite and greater than zero.");
39
+ }
40
+ return value;
41
+ }
42
+ function requireSafeNonNegativeInteger(value, path) {
43
+ if (typeof value !== "number" ||
44
+ !Number.isSafeInteger(value) ||
45
+ value < 0) {
46
+ throw new InvalidScientificInputError(path +
47
+ " must be a non-negative safe integer.");
48
+ }
49
+ return value;
50
+ }
51
+ function approximatelyEqual(actual, expected) {
52
+ const scale = Math.max(1, Math.abs(actual), Math.abs(expected));
53
+ return (Math.abs(actual - expected) <=
54
+ REDUCTION_TOLERANCE * scale);
55
+ }
56
+ function canonicalJson(value) {
57
+ return JSON.stringify(value);
58
+ }
59
+ function requireEquivalent(actual, expected, message) {
60
+ if (canonicalJson(actual) !==
61
+ canonicalJson(expected)) {
62
+ throw new InvalidScientificInputError(message);
63
+ }
64
+ }
65
+ function validateAuthorizationChain(reduction, compatibility, operatingRange) {
66
+ if (reduction.outputMeaning !==
67
+ "pre-response-spatio-spectral-radiometric-reduction" ||
68
+ reduction
69
+ .spectralResponseApplicationPerformed !==
70
+ false ||
71
+ reduction.quantumEfficiencyApplied !==
72
+ false ||
73
+ reduction.temporalIntegrationApplied !==
74
+ false) {
75
+ throw new InvalidScientificInputError("reduction must remain pre-response and pre-temporal before EQE rate conversion.");
76
+ }
77
+ if (!compatibility
78
+ .structuralCompatibilityEstablished ||
79
+ compatibility.compatibilityStatus ===
80
+ "blocked" ||
81
+ compatibility.blockers.length !== 0 ||
82
+ !compatibility.sourcePlaneMatched ||
83
+ compatibility.requiredSignalPath !==
84
+ "photon-rate-to-electrons") {
85
+ throw new InvalidScientificInputError("compatibility must establish a non-blocked photon-rate-to-electrons response path.");
86
+ }
87
+ if (compatibility.spectralResponseProfileId !==
88
+ reduction.responseProfileId ||
89
+ compatibility.colorSamplingProfileId !==
90
+ reduction.colorSamplingProfileId ||
91
+ compatibility.channelId !==
92
+ reduction.channelId ||
93
+ compatibility.responseScope !==
94
+ reduction.responseScope) {
95
+ throw new InvalidScientificInputError("compatibility identities must exactly match the reduction.");
96
+ }
97
+ if (!operatingRange
98
+ .operatingRangeCompatibilityAssessed ||
99
+ !operatingRange
100
+ .instantaneousResponseRangeCompatible ||
101
+ !operatingRange
102
+ .responseRateConversionAuthorized ||
103
+ operatingRange.status === "blocked" ||
104
+ operatingRange.blockers.length !== 0 ||
105
+ operatingRange.requiredSignalPath !==
106
+ "photon-rate-to-electrons" ||
107
+ operatingRange
108
+ .responseApplicationPerformed !==
109
+ false ||
110
+ operatingRange
111
+ .photonConversionPerformed !== false ||
112
+ operatingRange
113
+ .electronConversionPerformed !== false ||
114
+ operatingRange
115
+ .temporalIntegrationAuthorized !== false) {
116
+ throw new InvalidScientificInputError("operatingRange must authorize a clean photon-rate-to-electrons conversion path.");
117
+ }
118
+ if (!operatingRange
119
+ .spectralNodeRangeCompatibilityAssessed ||
120
+ operatingRange
121
+ .spectralInputModel.kind !==
122
+ "per-spectral-bin") {
123
+ throw new InvalidScientificInputError("operatingRange must establish per-spectral-bin input-range applicability before wavelength-dependent EQE conversion.");
124
+ }
125
+ if (operatingRange
126
+ .spatialLinearityModel.kind !==
127
+ "linear-superposition-over-geometric-aperture") {
128
+ throw new InvalidScientificInputError("operatingRange must establish linear superposition over the geometric aperture.");
129
+ }
130
+ if (operatingRange.spectralResponseProfileId !==
131
+ reduction.responseProfileId ||
132
+ operatingRange.colorSamplingProfileId !==
133
+ reduction.colorSamplingProfileId ||
134
+ operatingRange.channelId !==
135
+ reduction.channelId ||
136
+ operatingRange.responseApplicationProfileId !==
137
+ compatibility.applicationProfileId) {
138
+ throw new InvalidScientificInputError("operatingRange identities must exactly match the reduction and compatibility assessment.");
139
+ }
140
+ }
141
+ function validateReductionSpectralNodes(reduction) {
142
+ if (!Array.isArray(reduction.perWavelength) ||
143
+ !Number.isSafeInteger(reduction.spectralNodeCount) ||
144
+ reduction.spectralNodeCount <= 0 ||
145
+ reduction.perWavelength.length !==
146
+ reduction.spectralNodeCount) {
147
+ throw new InvalidScientificInputError("reduction.perWavelength must contain exactly spectralNodeCount entries.");
148
+ }
149
+ let previousWavelength = Number.NEGATIVE_INFINITY;
150
+ let normalizedWeightSum = 0;
151
+ const integratedPower = {
152
+ sum: 0,
153
+ correction: 0
154
+ };
155
+ reduction.perWavelength.forEach((entry, arrayIndex) => {
156
+ const sampleIndex = requireSafeNonNegativeInteger(entry.spectralSampleIndex, "reduction.perWavelength[" +
157
+ arrayIndex +
158
+ "].spectralSampleIndex");
159
+ if (sampleIndex !== arrayIndex) {
160
+ throw new InvalidScientificInputError("reduction spectralSampleIndex values must form the exact contiguous range 0..spectralNodeCount-1.");
161
+ }
162
+ const wavelength = requirePositiveFinite(entry.wavelengthNanometers, "reduction.perWavelength[" +
163
+ arrayIndex +
164
+ "].wavelengthNanometers");
165
+ if (wavelength <=
166
+ previousWavelength) {
167
+ throw new InvalidScientificInputError("reduction per-wavelength samples must be strictly increasing in wavelength.");
168
+ }
169
+ previousWavelength =
170
+ wavelength;
171
+ const measure = requirePositiveFinite(entry.wavelengthMeasureNanometers, "reduction.perWavelength[" +
172
+ arrayIndex +
173
+ "].wavelengthMeasureNanometers");
174
+ const normalizedWeight = requirePositiveFinite(entry.normalizedWavelengthWeight, "reduction.perWavelength[" +
175
+ arrayIndex +
176
+ "].normalizedWavelengthWeight");
177
+ const fluxDensity = requireNonNegativeFinite(entry
178
+ .geometricApertureIncidentSpectralFluxWattsPerNanometer, "reduction.perWavelength[" +
179
+ arrayIndex +
180
+ "].geometricApertureIncidentSpectralFluxWattsPerNanometer");
181
+ const contribution = requireNonNegativeFinite(entry
182
+ .wavelengthIntegratedGeometricApertureIncidentFluxContributionWatts, "reduction.perWavelength[" +
183
+ arrayIndex +
184
+ "].wavelengthIntegratedGeometricApertureIncidentFluxContributionWatts");
185
+ const expectedContribution = fluxDensity * measure;
186
+ if (!Number.isFinite(expectedContribution) ||
187
+ !approximatelyEqual(contribution, expectedContribution)) {
188
+ throw new InvalidScientificInputError("reduction per-wavelength radiant-power contribution must equal spectral flux density × d-lambda.");
189
+ }
190
+ normalizedWeightSum +=
191
+ normalizedWeight;
192
+ if (!Number.isFinite(normalizedWeightSum)) {
193
+ throw new InvalidScientificInputError("reduction normalized wavelength weights must remain finite.");
194
+ }
195
+ addCompensated(integratedPower, contribution);
196
+ });
197
+ if (!approximatelyEqual(normalizedWeightSum, 1)) {
198
+ throw new InvalidScientificInputError("reduction normalized wavelength weights must sum to 1.");
199
+ }
200
+ const totalPower = requireNonNegativeFinite(reduction
201
+ .wavelengthIntegratedGeometricApertureIncidentFluxWatts, "reduction.wavelengthIntegratedGeometricApertureIncidentFluxWatts");
202
+ if (!approximatelyEqual(integratedPower.sum, totalPower)) {
203
+ throw new InvalidScientificInputError("reduction total geometric-aperture radiant power must match the sum of per-wavelength contributions.");
204
+ }
205
+ return reduction.perWavelength;
206
+ }
207
+ function validateOperatingRangeNodeBinding(reduction, nodes, operatingRange) {
208
+ const evaluated = operatingRange
209
+ .evaluatedSpectralNodeInputs;
210
+ if (evaluated === undefined ||
211
+ evaluated.length !== nodes.length) {
212
+ throw new InvalidScientificInputError("operatingRange must carry one evaluated spectral-node input for every reduction wavelength node.");
213
+ }
214
+ if (operatingRange
215
+ .evaluatedWavelengthRangeNanometers
216
+ .minimum !==
217
+ reduction.wavelengthRangeNanometers
218
+ .minimum ||
219
+ operatingRange
220
+ .evaluatedWavelengthRangeNanometers
221
+ .maximum !==
222
+ reduction.wavelengthRangeNanometers
223
+ .maximum) {
224
+ throw new InvalidScientificInputError("operatingRange wavelength range must exactly match the reduction.");
225
+ }
226
+ evaluated.forEach((entry, index) => {
227
+ const node = nodes[index];
228
+ if (entry.spectralSampleIndex !==
229
+ node.spectralSampleIndex ||
230
+ entry.wavelengthNanometers !==
231
+ node.wavelengthNanometers ||
232
+ entry.wavelengthMeasureNanometers !==
233
+ node.wavelengthMeasureNanometers) {
234
+ throw new InvalidScientificInputError("operatingRange spectral-node identities must exactly match the reduction.");
235
+ }
236
+ const expected = operatingRange.inputRange.kind ===
237
+ "wavelength-integrated-geometric-aperture-radiant-power"
238
+ ? node
239
+ .wavelengthIntegratedGeometricApertureIncidentFluxContributionWatts
240
+ : node
241
+ .wavelengthIntegratedSpatialAverageContributionWattsPerSquareMeter;
242
+ if (entry.kind !==
243
+ operatingRange.inputRange.kind ||
244
+ entry.unit !==
245
+ operatingRange.inputRange.unit ||
246
+ !approximatelyEqual(entry.value, expected)) {
247
+ throw new InvalidScientificInputError("operatingRange spectral-node values must match the reduction values in the calibrated input domain.");
248
+ }
249
+ });
250
+ }
251
+ function parseAirContext(reduction, nodes, context) {
252
+ if (reduction.wavelengthBasis ===
253
+ "vacuum") {
254
+ if (context !== undefined) {
255
+ throw new InvalidScientificInputError("airPhotonEnergyContext must be omitted for vacuum-basis EQE conversion.");
256
+ }
257
+ return new Map();
258
+ }
259
+ if (reduction.wavelengthBasis !== "air") {
260
+ throw new InvalidScientificInputError("EQE electron-rate conversion requires a resolved air or vacuum wavelength basis.");
261
+ }
262
+ if (context === undefined ||
263
+ !Array.isArray(context.samples) ||
264
+ context.samples.length !==
265
+ nodes.length) {
266
+ throw new InvalidScientificInputError("Air-basis EQE conversion requires exactly one refractive-index sample for every spectral node.");
267
+ }
268
+ const byIndex = new Map();
269
+ context.samples.forEach((entry, arrayIndex) => {
270
+ if (typeof entry !== "object" ||
271
+ entry === null) {
272
+ throw new InvalidScientificInputError("airPhotonEnergyContext.samples[" +
273
+ arrayIndex +
274
+ "] must be an object.");
275
+ }
276
+ const spectralSampleIndex = requireSafeNonNegativeInteger(entry.spectralSampleIndex, "airPhotonEnergyContext.samples[" +
277
+ arrayIndex +
278
+ "].spectralSampleIndex");
279
+ if (spectralSampleIndex >=
280
+ nodes.length ||
281
+ byIndex.has(spectralSampleIndex)) {
282
+ throw new InvalidScientificInputError("airPhotonEnergyContext must contain unique in-range spectral sample identities.");
283
+ }
284
+ byIndex.set(spectralSampleIndex, entry.refractiveIndex);
285
+ });
286
+ return byIndex;
287
+ }
288
+ function responseEvidenceMatches(actual, expected) {
289
+ return (canonicalJson(actual) ===
290
+ canonicalJson(expected));
291
+ }
292
+ function validateResponseBinding(resolved, reduction) {
293
+ if (resolved.profileId !==
294
+ reduction.responseProfileId ||
295
+ resolved.colorSamplingProfileId !==
296
+ reduction.colorSamplingProfileId ||
297
+ resolved.channelId !==
298
+ reduction.channelId ||
299
+ resolved.sourceResponseKind !==
300
+ reduction.sourceResponseKind ||
301
+ resolved.responseScope !==
302
+ reduction.responseScope ||
303
+ resolved.scientificStatus !==
304
+ reduction.responseScientificStatus) {
305
+ throw new InvalidScientificInputError("Resolved spectral response metadata must exactly match the response used to construct the reduction.");
306
+ }
307
+ requireEquivalent(resolved.uncertainty, reduction.responseUncertainty, "Resolved spectral response uncertainty must match the reduction.");
308
+ const expectedEvidence = reduction.componentEvidence.spectral;
309
+ if (!responseEvidenceMatches(resolved.componentEvidence.profile, expectedEvidence.profile) ||
310
+ !responseEvidenceMatches(resolved.componentEvidence.channel, expectedEvidence.channel) ||
311
+ canonicalJson(resolved.componentEvidence.curves) !==
312
+ canonicalJson(expectedEvidence.curves)) {
313
+ throw new InvalidScientificInputError("Resolved spectral response evidence must match the calibration evidence carried by the reduction.");
314
+ }
315
+ }
316
+ function validateExactResponseDataBinding(responseProfile, reduction) {
317
+ const response = responseProfile.channels.find((entry) => entry.channelId ===
318
+ reduction.channelId);
319
+ if (response === undefined ||
320
+ reduction.responseChannelBinding ===
321
+ undefined ||
322
+ canonicalJson(createSensorSpectralResponseChannelBinding(response)) !==
323
+ canonicalJson(reduction.responseChannelBinding)) {
324
+ throw new InvalidScientificInputError("Supplied spectral response channel data must exactly match the response-channel binding carried by the reduction.");
325
+ }
326
+ }
327
+ function requireEqeResponse(response) {
328
+ if (response.kind !==
329
+ "effective-external-quantum-efficiency") {
330
+ throw new InvalidScientificInputError("EQE electron-rate conversion cannot consume A/W spectral responsivity.");
331
+ }
332
+ return response;
333
+ }
334
+ /**
335
+ * Converts pre-response geometric-aperture spectral radiant power into
336
+ * incident-photon rate and expected generated-electron rate.
337
+ *
338
+ * This function applies response per wavelength node. It never applies one
339
+ * broadband-average QE to total radiant power.
340
+ *
341
+ * Temporal exposure integration remains downstream, so all outputs are rates
342
+ * (per second), not photon/electron counts.
343
+ */
344
+ export function calculateSensorEqeElectronRate(input) {
345
+ validateAuthorizationChain(input.reduction, input.compatibility, input.operatingRange);
346
+ if (input.reduction
347
+ .sourceResponseKind ===
348
+ "effective-spectral-responsivity") {
349
+ throw new InvalidScientificInputError("EQE electron-rate conversion requires an EQE or filter×detector-EQE response, not A/W responsivity.");
350
+ }
351
+ const colorProfile = parseSensorColorSamplingProfile(input.colorSamplingProfile);
352
+ const responseProfile = parseSensorSpectralResponseProfile(input.spectralResponseProfile);
353
+ if (colorProfile.profileId !==
354
+ input.reduction
355
+ .colorSamplingProfileId ||
356
+ responseProfile.profileId !==
357
+ input.reduction
358
+ .responseProfileId ||
359
+ responseProfile
360
+ .colorSamplingProfileId !==
361
+ colorProfile.profileId) {
362
+ throw new InvalidScientificInputError("Supplied color/spectral response profiles must exactly match the reduction identities.");
363
+ }
364
+ validateExactResponseDataBinding(responseProfile, input.reduction);
365
+ const nodes = validateReductionSpectralNodes(input.reduction);
366
+ validateOperatingRangeNodeBinding(input.reduction, nodes, input.operatingRange);
367
+ const airIndices = parseAirContext(input.reduction, nodes, input.airPhotonEnergyContext);
368
+ const photonRateSum = {
369
+ sum: 0,
370
+ correction: 0
371
+ };
372
+ const electronRateSum = {
373
+ sum: 0,
374
+ correction: 0
375
+ };
376
+ const perWavelength = [];
377
+ let responseBindingValidated = false;
378
+ let channelFilterTransmissionApplied = false;
379
+ for (const node of nodes) {
380
+ const resolved = resolveParsedSensorSpectralResponseAtWavelength({
381
+ colorSamplingProfile: colorProfile,
382
+ spectralResponseProfile: responseProfile,
383
+ channelId: input.reduction.channelId,
384
+ wavelengthNanometers: node.wavelengthNanometers,
385
+ wavelengthBasis: input.reduction
386
+ .wavelengthBasis
387
+ });
388
+ if (!responseBindingValidated) {
389
+ validateResponseBinding(resolved.value, input.reduction);
390
+ responseBindingValidated =
391
+ true;
392
+ }
393
+ const eqe = requireEqeResponse(resolved.value.response);
394
+ const airIndex = airIndices.get(node.spectralSampleIndex);
395
+ const photonEnergy = calculatePhotonEnergyFromWavelength({
396
+ wavelengthNanometers: node.wavelengthNanometers,
397
+ wavelengthBasis: input.reduction
398
+ .wavelengthBasis,
399
+ ...(input.reduction
400
+ .wavelengthBasis === "air"
401
+ ? {
402
+ airPhaseRefractiveIndex: airIndex,
403
+ ...(input.airPhotonEnergyContext
404
+ .operatingConditions ===
405
+ undefined
406
+ ? {}
407
+ : {
408
+ airOperatingConditions: input
409
+ .airPhotonEnergyContext
410
+ .operatingConditions
411
+ }),
412
+ airConditionPolicy: input.airPhotonEnergyContext
413
+ .conditionPolicy
414
+ }
415
+ : {})
416
+ }).value;
417
+ const radiantPowerContributionWatts = node
418
+ .geometricApertureIncidentSpectralFluxWattsPerNanometer *
419
+ node.wavelengthMeasureNanometers;
420
+ const incidentPhotonRatePerSecond = radiantPowerContributionWatts /
421
+ photonEnergy.photonEnergyJoules;
422
+ const expectedGeneratedElectronRatePerSecond = incidentPhotonRatePerSecond *
423
+ eqe.externalQuantumEfficiency;
424
+ if (!Number.isFinite(radiantPowerContributionWatts) ||
425
+ !Number.isFinite(incidentPhotonRatePerSecond) ||
426
+ !Number.isFinite(expectedGeneratedElectronRatePerSecond)) {
427
+ throw new InvalidScientificInputError("EQE wavelength-node rate calculation must remain finite.");
428
+ }
429
+ addCompensated(photonRateSum, incidentPhotonRatePerSecond);
430
+ addCompensated(electronRateSum, expectedGeneratedElectronRatePerSecond);
431
+ if (eqe.composition ===
432
+ "channel-filter-transmittance-times-detector-eqe") {
433
+ channelFilterTransmissionApplied =
434
+ true;
435
+ }
436
+ perWavelength.push({
437
+ spectralSampleIndex: node.spectralSampleIndex,
438
+ wavelengthNanometers: node.wavelengthNanometers,
439
+ wavelengthMeasureNanometers: node.wavelengthMeasureNanometers,
440
+ geometricApertureIncidentSpectralFluxWattsPerNanometer: node
441
+ .geometricApertureIncidentSpectralFluxWattsPerNanometer,
442
+ radiantPowerContributionWatts,
443
+ vacuumWavelengthNanometers: photonEnergy
444
+ .vacuumWavelengthNanometers,
445
+ photonEnergyJoules: photonEnergy
446
+ .photonEnergyJoules,
447
+ wavelengthConversion: photonEnergy
448
+ .wavelengthConversion,
449
+ ...(photonEnergy
450
+ .phaseRefractiveIndexUsed ===
451
+ undefined
452
+ ? {}
453
+ : {
454
+ phaseRefractiveIndexUsed: photonEnergy
455
+ .phaseRefractiveIndexUsed
456
+ }),
457
+ ...(photonEnergy
458
+ .airConditionCompatibility ===
459
+ undefined
460
+ ? {}
461
+ : {
462
+ airConditionCompatibility: photonEnergy
463
+ .airConditionCompatibility
464
+ }),
465
+ ...(photonEnergy
466
+ .airRefractiveIndexEvidence ===
467
+ undefined
468
+ ? {}
469
+ : {
470
+ airRefractiveIndexEvidence: photonEnergy
471
+ .airRefractiveIndexEvidence
472
+ }),
473
+ incidentPhotonRatePerSecond,
474
+ effectiveExternalQuantumEfficiency: eqe.externalQuantumEfficiency,
475
+ responseComposition: eqe.composition,
476
+ ...(eqe.channelFilterTransmittance ===
477
+ undefined
478
+ ? {}
479
+ : {
480
+ channelFilterTransmittance: eqe.channelFilterTransmittance
481
+ }),
482
+ ...(eqe
483
+ .detectorExternalQuantumEfficiency ===
484
+ undefined
485
+ ? {}
486
+ : {
487
+ detectorExternalQuantumEfficiency: eqe
488
+ .detectorExternalQuantumEfficiency
489
+ }),
490
+ responseInterpolationUsed: resolved.value
491
+ .interpolationUsed,
492
+ expectedGeneratedElectronRatePerSecond
493
+ });
494
+ }
495
+ if (!Number.isFinite(photonRateSum.sum) ||
496
+ !Number.isFinite(electronRateSum.sum)) {
497
+ throw new InvalidScientificInputError("Total EQE photon/electron rates must remain finite.");
498
+ }
499
+ return approximationResult({
500
+ colorSamplingProfileId: input.reduction
501
+ .colorSamplingProfileId,
502
+ responseProfileId: input.reduction
503
+ .responseProfileId,
504
+ responseApplicationProfileId: input.compatibility
505
+ .applicationProfileId,
506
+ operatingRangeProfileId: input.operatingRange
507
+ .operatingRangeProfileId,
508
+ site: {
509
+ ...input.reduction.site
510
+ },
511
+ channelId: input.reduction.channelId,
512
+ sourceResponseKind: input.reduction
513
+ .sourceResponseKind,
514
+ responseScope: input.reduction.responseScope,
515
+ responseReferencePlane: input.compatibility
516
+ .requiredSourcePlane,
517
+ wavelengthBasis: input.reduction
518
+ .wavelengthBasis,
519
+ wavelengthRangeNanometers: {
520
+ ...input.reduction
521
+ .wavelengthRangeNanometers
522
+ },
523
+ spectralNodeCount: nodes.length,
524
+ perWavelength,
525
+ incidentPhotonRatePerSecond: photonRateSum.sum,
526
+ expectedGeneratedElectronRatePerSecond: electronRateSum.sum,
527
+ summationMethod: "kahan-compensated",
528
+ responseApplicationPerformed: true,
529
+ quantumEfficiencyApplied: true,
530
+ spectralResponsivityApplied: false,
531
+ channelFilterTransmissionApplied,
532
+ photonRateCalculated: true,
533
+ electronRateCalculated: true,
534
+ photonCountCalculated: false,
535
+ electronCountCalculated: false,
536
+ currentCalculated: false,
537
+ temporalIntegrationApplied: false,
538
+ exposureDurationApplied: false,
539
+ saturationAssessed: false,
540
+ shotNoiseApplied: false,
541
+ readNoiseApplied: false,
542
+ adcQuantizationApplied: false,
543
+ rawCodeValueProduced: false,
544
+ responseUncertaintyPropagated: false,
545
+ photonEnergyUncertaintyPropagated: false,
546
+ quadratureConvergenceErrorEstimated: false
547
+ }, "sensor-eqe-electron-rate", "1.0.0", [
548
+ "Response is evaluated independently at every wavelength quadrature node; broadband radiant power is never multiplied by an average QE.",
549
+ "Each node converts radiant power to photon rate using photon energy hν, then applies effective external QE to obtain expected generated-electron rate.",
550
+ "Direct effective EQE is preserved as direct response; explicitly separable channel-filter transmittance × detector EQE is multiplied only through the existing spectral-response resolver.",
551
+ "The response calibration metadata/evidence must match the spectral evidence carried by the pre-response reduction; matching profile IDs alone is insufficient.",
552
+ "The structural compatibility and operating-range assessments must both be non-blocked and authorize the photon-rate→electron path.",
553
+ "Operating-range authorization must be per spectral bin, with spectral-node identities and calibrated-domain values bound back to the exact reduction used for conversion.",
554
+ "Operating-range authorization must establish linear superposition over the geometric aperture so spatial reduction may precede response application without hiding sub-aperture nonlinear behavior.",
555
+ "Air-basis spectral nodes require one exact-wavelength sourced phase refractive index per spectral sample plus the photon-energy atmosphere compatibility policy.",
556
+ "Kahan compensated summation is used across wavelength nodes to reduce loss of small contributions when rates span large dynamic ranges.",
557
+ "Outputs are instantaneous expected rates only. Exposure duration, photon/electron counts, full-well saturation, shot/read noise, ADC/RAW conversion and reconstruction remain downstream.",
558
+ "Response/refractive-index uncertainties and quadrature convergence error are not propagated into a combined output uncertainty by this version."
559
+ ]);
560
+ }
561
+ //# sourceMappingURL=eqe-electron-rate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eqe-electron-rate.js","sourceRoot":"","sources":["../../src/sensor/eqe-electron-rate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Module boundary and integration notes.
3
+ * Compose validated irradiance reduction, response applicability/range, EQE conversion and stationary
4
+ * local integration. The exposure value is suitable for accumulated-charge photoSignal;
5
+ * dark/completeness/capacity/readout remain explicit downstream inputs. Invalid or unsupported
6
+ * evidence fails closed.
7
+ * Internal shared instantaneous path; no stationarity or exposure accumulation.
8
+ * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
9
+ * limits.
10
+ */
11
+ import { type CalculationResult } from "../core/calculation-result.js";
12
+ import { calculateSensorSpatialSamplingQuadrature, type CalculateSensorSpatialSamplingQuadratureInput } from "./spatial-sampling-quadrature.js";
13
+ import { calculateSensorSpectralQuadrature, type CalculateSensorSpectralQuadratureInput } from "./spectral-quadrature.js";
14
+ import { reduceSensorSpatioSpectralIrradiance, type ReduceSensorSpatioSpectralIrradianceInput } from "./spatio-spectral-reduction.js";
15
+ import { assessSensorResponseApplicationCompatibility, type AssessSensorResponseApplicationCompatibilityInput } from "./response-application-compatibility.js";
16
+ import { assessSensorResponseOperatingRange, type AssessSensorResponseOperatingRangeInput } from "./response-operating-range.js";
17
+ import { calculateSensorEqeElectronRate, type CalculateSensorEqeElectronRateInput } from "./eqe-electron-rate.js";
18
+ import { bindSensorRateToLocalExposure, type BindSensorRateToLocalExposureInput } from "./local-exposure-binding.js";
19
+ import { type SensorEqeExposureIntegration, type SensorRateTemporalStationarityProfile } from "./constant-rate-temporal-integration.js";
20
+ /** Explicit post-optics irradiance samples and evidence; no renderer or RGB conversion. */
21
+ export interface CalculateSensorEqeLocalExposureInput {
22
+ /** Physical area, registered aperture/lattice, AA support and destination site. */
23
+ spatialSampling: Omit<CalculateSensorSpatialSamplingQuadratureInput, "colorSamplingProfile" | "colorSamplingBindingProfile" | "nativeRaster">;
24
+ /** Explicit wavelength basis/range, channel and midpoint subdivision budget. */
25
+ spectralSampling: Omit<CalculateSensorSpectralQuadratureInput, "colorSamplingProfile" | "spectralResponseProfile">;
26
+ /** One W/m²/nm value per identified pre-AA spatial/spectral node. */
27
+ irradianceSamples: ReduceSensorSpatioSpectralIrradianceInput["sampleValues"];
28
+ /** Source-plane, collection-area and reference-condition evidence. */
29
+ responseApplication: Omit<AssessSensorResponseApplicationCompatibilityInput, "reduction">;
30
+ /** Evidence-backed linear response domain; no extrapolation is authorized. */
31
+ operatingRangeProfile: AssessSensorResponseOperatingRangeInput["operatingRangeProfile"];
32
+ /** Destination CFA/channel identity shared by every composed step. */
33
+ colorSamplingProfile: CalculateSensorEqeElectronRateInput["colorSamplingProfile"];
34
+ /** Direct or separable EQE response; A/W responsivity is unsupported here. */
35
+ spectralResponseProfile: CalculateSensorEqeElectronRateInput["spectralResponseProfile"];
36
+ /** Required explicit photon-energy conversion context for air wavelengths. */
37
+ airPhotonEnergyContext?: CalculateSensorEqeElectronRateInput["airPhotonEnergyContext"];
38
+ /** Native one-to-one site binding and one opening/closing shutter event. */
39
+ localExposure: Omit<BindSensorRateToLocalExposureInput, "rate" | "colorSamplingProfile">;
40
+ /** Separate declaration authorizing a constant rate across this exact window. */
41
+ stationarityProfile: SensorRateTemporalStationarityProfile;
42
+ }
43
+ /** Child envelopes retain separate provenance, validity and unpropagated uncertainty. */
44
+ export interface SensorEqeLocalExposure {
45
+ upstreamOrigin: "declared-spatio-spectral-irradiance-samples";
46
+ upstreamSceneAndOpticsVerified: false;
47
+ spatialQuadrature: ReturnType<typeof calculateSensorSpatialSamplingQuadrature>;
48
+ spectralQuadrature: ReturnType<typeof calculateSensorSpectralQuadrature>;
49
+ reduction: ReturnType<typeof reduceSensorSpatioSpectralIrradiance>;
50
+ compatibility: ReturnType<typeof assessSensorResponseApplicationCompatibility>;
51
+ operatingRange: ReturnType<typeof assessSensorResponseOperatingRange>;
52
+ electronRate: ReturnType<typeof calculateSensorEqeElectronRate>;
53
+ exposureBinding: ReturnType<typeof bindSensorRateToLocalExposure>;
54
+ exposure: CalculationResult<SensorEqeExposureIntegration>;
55
+ }
56
+ /**
57
+ * Compose validated irradiance reduction, response applicability/range, EQE
58
+ * conversion and stationary local integration. The exposure value is suitable
59
+ * for accumulated-charge photoSignal; dark/completeness/capacity/readout remain
60
+ * explicit downstream inputs. Invalid or unsupported evidence fails closed.
61
+ */
62
+ export declare function calculateSensorEqeLocalExposure(input: CalculateSensorEqeLocalExposureInput): CalculationResult<SensorEqeLocalExposure>;
63
+ /** Internal shared instantaneous path; no stationarity or exposure accumulation. */
64
+ export declare function calculateSensorEqeLocalRate(input: Omit<CalculateSensorEqeLocalExposureInput, "stationarityProfile">): Omit<SensorEqeLocalExposure, "upstreamOrigin" | "upstreamSceneAndOpticsVerified" | "exposure">;
65
+ //# sourceMappingURL=eqe-local-exposure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eqe-local-exposure.d.ts","sourceRoot":"","sources":["../../src/sensor/eqe-local-exposure.ts"],"names":[],"mappings":"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"}