@photivra/engine 0.6.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (749) hide show
  1. package/AGENTS.md +674 -0
  2. package/CHANGELOG.md +186 -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 +138 -71
  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 +14 -0
  139. package/dist/core/version.d.ts.map +1 -0
  140. package/dist/core/version.js +15 -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 +132 -0
  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 +65 -0
  582. package/docs/RELEASE_AUDIT.md +38 -0
  583. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +298 -0
  584. package/docs/SCENE_SENSOR_QUADRATURE.md +98 -0
  585. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +86 -0
  586. package/docs/SCIENTIFIC_ASSURANCE.md +280 -0
  587. package/docs/SCIENTIFIC_CONFORMANCE.md +83 -0
  588. package/docs/SDR_RENDERING.md +33 -0
  589. package/docs/SENSOR_ENVIRONMENT_QUERY.md +86 -0
  590. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +104 -0
  591. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +74 -0
  592. package/docs/SENSOR_PSF_QUADRATURE.md +90 -0
  593. package/docs/SENSOR_RAW_FRAME.md +20 -0
  594. package/docs/SENSOR_RAW_PRODUCER.md +77 -0
  595. package/docs/SIGNAL_CONFORMANCE.md +23 -0
  596. package/docs/SIMULATED_CAPTURE.md +65 -0
  597. package/docs/STABILIZATION.md +160 -17
  598. package/docs/TEMPORAL_PHOTO_RAW.md +83 -0
  599. package/docs/TIER_ACCEPTANCE.md +129 -0
  600. package/docs/TIER_PRESET_ACCEPTANCE.md +59 -0
  601. package/docs/USAGE.md +5050 -1047
  602. package/docs/V1_COMPOSITION_MAP.md +123 -0
  603. package/docs/V1_HELPER_REUSE_REVIEW.md +60 -0
  604. package/docs/V1_PERFORMANCE_DISPOSITION.md +88 -0
  605. package/docs/api/camera-equivalent-focal-length.md +53 -0
  606. package/docs/api/camera-field-of-view.md +119 -0
  607. package/docs/api/camera-projected-object-size.md +54 -0
  608. package/docs/api/capture-capture-export-metadata.md +107 -0
  609. package/docs/api/capture-environment-raw-producer.md +56 -0
  610. package/docs/api/capture-focus-control.md +419 -0
  611. package/docs/api/capture-linear-encoding.md +99 -0
  612. package/docs/api/capture-photographic-export.md +172 -0
  613. package/docs/api/capture-raw-frame-reconstruction.md +87 -0
  614. package/docs/api/capture-release-sequence.md +252 -0
  615. package/docs/api/capture-sensor-raw-frame.md +66 -0
  616. package/docs/api/capture-sensor-raw-producer.md +98 -0
  617. package/docs/api/capture-simulated-capture.md +179 -0
  618. package/docs/api/color-capture-color.md +122 -0
  619. package/docs/api/color-white-balance.md +386 -0
  620. package/docs/api/composition-image-formation-plan.md +825 -0
  621. package/docs/api/composition-plan-consumer.md +98 -0
  622. package/docs/api/core-calculation-result.md +220 -0
  623. package/docs/api/core-configuration-error.md +19 -0
  624. package/docs/api/core-image-formation.md +204 -0
  625. package/docs/api/core-scientific-assurance.md +214 -0
  626. package/docs/api/core-spectral-composition.md +268 -0
  627. package/docs/api/core-spectral.md +78 -0
  628. package/docs/api/core-validation.md +34 -0
  629. package/docs/api/core-version.md +14 -0
  630. package/docs/api/equipment-exposure-capabilities.md +270 -0
  631. package/docs/api/equipment-generic-tier-assets.md +82 -0
  632. package/docs/api/equipment-generic-tier-presets.md +103 -0
  633. package/docs/api/equipment-iso-capabilities.md +295 -0
  634. package/docs/api/equipment-metering-capabilities.md +126 -0
  635. package/docs/api/equipment-release-capabilities.md +91 -0
  636. package/docs/api/exports.json +5656 -0
  637. package/docs/api/exposure-exposure-duration-control.md +115 -0
  638. package/docs/api/exposure-exposure-mode-resolver.md +966 -0
  639. package/docs/api/exposure-exposure.md +150 -0
  640. package/docs/api/exposure-flash.md +327 -0
  641. package/docs/api/exposure-metering-scene-radiance.md +154 -0
  642. package/docs/api/exposure-metering-target.md +134 -0
  643. package/docs/api/exposure-metering-temporal.md +77 -0
  644. package/docs/api/exposure-metering.md +172 -0
  645. package/docs/api/exposure-program-line.md +64 -0
  646. package/docs/api/motion-camera-rotation.md +215 -0
  647. package/docs/api/motion-capture-rotation-inverse-mapping.md +128 -0
  648. package/docs/api/motion-capture-rotation-temporal-quadrature.md +127 -0
  649. package/docs/api/motion-capture-rotation-trajectory.md +132 -0
  650. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +171 -0
  651. package/docs/api/motion-extended-object-projection.md +312 -0
  652. package/docs/api/motion-projected-motion.md +60 -0
  653. package/docs/api/optics-aperture.md +69 -0
  654. package/docs/api/optics-circle-of-confusion.md +46 -0
  655. package/docs/api/optics-complex-pupil-psf.md +193 -0
  656. package/docs/api/optics-depth-of-field.md +92 -0
  657. package/docs/api/optics-diffraction.md +46 -0
  658. package/docs/api/optics-focus-breathing.md +119 -0
  659. package/docs/api/optics-focus-state.md +64 -0
  660. package/docs/api/optics-front-of-lens-filter.md +263 -0
  661. package/docs/api/optics-illumination-vignetting.md +95 -0
  662. package/docs/api/optics-lateral-chromatic-aberration.md +225 -0
  663. package/docs/api/optics-lens-psf-profile.md +380 -0
  664. package/docs/api/optics-polygon-diffraction.md +68 -0
  665. package/docs/api/optics-profile-contract.md +47 -0
  666. package/docs/api/optics-psf-foundation.md +181 -0
  667. package/docs/api/optics-radial-distortion.md +194 -0
  668. package/docs/api/optics-scene-to-sensor-irradiance.md +371 -0
  669. package/docs/api/optics-scene-to-sensor-quadrature.md +78 -0
  670. package/docs/api/optics-sensor-environment-query.md +58 -0
  671. package/docs/api/optics-sensor-psf-quadrature.md +81 -0
  672. package/docs/api/optics-stray-light.md +109 -0
  673. package/docs/api/optics-thin-lens.md +53 -0
  674. package/docs/api/output-capture-corrected-sdr.md +71 -0
  675. package/docs/api/output-capture-geometry.md +500 -0
  676. package/docs/api/output-capture-sdr.md +69 -0
  677. package/docs/api/output-crop.md +47 -0
  678. package/docs/api/output-geometric-transforms.md +199 -0
  679. package/docs/api/output-lens-corrections.md +162 -0
  680. package/docs/api/output-sdr-rendering.md +122 -0
  681. package/docs/api/output-subject-framing-crop.md +59 -0
  682. package/docs/api/schema-camera.md +84 -0
  683. package/docs/api/schema-illumination-spectral.md +77 -0
  684. package/docs/api/schema-illumination-temporal.md +289 -0
  685. package/docs/api/schema-illumination.md +246 -0
  686. package/docs/api/schema-scene-radiance-temporal.md +215 -0
  687. package/docs/api/schema-scene-radiance.md +415 -0
  688. package/docs/api/schema-scene.md +105 -0
  689. package/docs/api/schema-validation.md +25 -0
  690. package/docs/api/sensor-accumulated-charge.md +273 -0
  691. package/docs/api/sensor-architecture.md +155 -0
  692. package/docs/api/sensor-camera-saturation-capacity.md +215 -0
  693. package/docs/api/sensor-capture-color-sampling-binding.md +323 -0
  694. package/docs/api/sensor-capture-mode-timing.md +123 -0
  695. package/docs/api/sensor-capture-mode.md +321 -0
  696. package/docs/api/sensor-color-sampling.md +228 -0
  697. package/docs/api/sensor-constant-rate-temporal-integration.md +152 -0
  698. package/docs/api/sensor-dark-current.md +227 -0
  699. package/docs/api/sensor-environment-photo-signal.md +77 -0
  700. package/docs/api/sensor-eqe-electron-rate.md +166 -0
  701. package/docs/api/sensor-eqe-local-exposure.md +68 -0
  702. package/docs/api/sensor-eqe-temporal-exposure.md +73 -0
  703. package/docs/api/sensor-exposure-window.md +183 -0
  704. package/docs/api/sensor-iso-signal-chain.md +264 -0
  705. package/docs/api/sensor-local-exposure-binding.md +126 -0
  706. package/docs/api/sensor-optical-stack.md +211 -0
  707. package/docs/api/sensor-photon-energy.md +149 -0
  708. package/docs/api/sensor-physical-charge-capacity.md +196 -0
  709. package/docs/api/sensor-pixel-pitch.md +41 -0
  710. package/docs/api/sensor-radiometry-readiness.md +240 -0
  711. package/docs/api/sensor-raw-readout.md +499 -0
  712. package/docs/api/sensor-raw-reconstruction.md +260 -0
  713. package/docs/api/sensor-readout-exposure-linkage.md +172 -0
  714. package/docs/api/sensor-readout-timing.md +209 -0
  715. package/docs/api/sensor-response-application-compatibility.md +256 -0
  716. package/docs/api/sensor-response-operating-range.md +293 -0
  717. package/docs/api/sensor-responsivity-photocurrent.md +245 -0
  718. package/docs/api/sensor-sampling-aperture.md +221 -0
  719. package/docs/api/sensor-scene-eqe-temporal-exposure.md +56 -0
  720. package/docs/api/sensor-sensor-geometry.md +143 -0
  721. package/docs/api/sensor-signal-noise.md +75 -0
  722. package/docs/api/sensor-spatial-sample-reduction.md +186 -0
  723. package/docs/api/sensor-spatial-sampling-quadrature.md +188 -0
  724. package/docs/api/sensor-spatio-spectral-reduction.md +217 -0
  725. package/docs/api/sensor-spectral-coverage.md +33 -0
  726. package/docs/api/sensor-spectral-quadrature.md +183 -0
  727. package/docs/api/sensor-spectral-response.md +291 -0
  728. package/docs/api/sensor-temporal-photo-signal.md +62 -0
  729. package/docs/api/simulation-poc-simulation.md +364 -0
  730. package/docs/api/stabilization-camera-shake.md +71 -0
  731. package/docs/api/stabilization-system.md +442 -0
  732. package/docs/benchmarks/2026-10-01-main-baseline.json +694 -0
  733. package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +2190 -0
  734. package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +2423 -0
  735. package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +210 -0
  736. package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +187 -0
  737. package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +756 -0
  738. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +711 -0
  739. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +711 -0
  740. package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +885 -0
  741. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +868 -0
  742. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +868 -0
  743. package/docs/examples/production-capture.mjs +34 -0
  744. package/docs/examples/production-request.json +4613 -0
  745. package/docs/examples/quick-start.mjs +12 -0
  746. package/docs/validation/documentation-fragments.json +212 -0
  747. package/docs/validation/release-audit-inventory.json +1306 -0
  748. package/docs/validation/tier-acceptance-report-v1.json +2538 -0
  749. package/package.json +15 -3
@@ -0,0 +1,382 @@
1
+ // SPDX-License-Identifier: Apache-2.0
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. Rate times duration
6
+ * is allowed only by explicit stationarity bound to the exact site and local shutter interval. EQE
7
+ * integrates to expected photons/electrons; A/W integrates current magnitude to coulombs without an
8
+ * implicit carrier mapping. Counts remain fractional expectations before stochastic sampling.
9
+ * Integrates one explicitly stationary response-rate result over its exact bound local exposure
10
+ * window. This function is intentionally limited to the constant-rate approximation. It does not
11
+ * sample or integrate a time-varying signal.
12
+ * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
13
+ * limits.
14
+ */
15
+ import { approximationResult, calculatedResult } from "../core/calculation-result.js";
16
+ import { InvalidConfigurationError } from "../core/configuration-error.js";
17
+ import { parseEvidenceList } from "../core/evidence-provenance.js";
18
+ import { InvalidScientificInputError } from "../core/validation.js";
19
+ function requireRecord(value, path) {
20
+ if (typeof value !== "object" ||
21
+ value === null ||
22
+ Array.isArray(value)) {
23
+ throw new InvalidConfigurationError(path + " must be an object.");
24
+ }
25
+ return value;
26
+ }
27
+ function requireNonEmptyString(value, path) {
28
+ if (typeof value !== "string" ||
29
+ value.trim().length === 0) {
30
+ throw new InvalidConfigurationError(path + " must be a non-empty string.");
31
+ }
32
+ return value;
33
+ }
34
+ function requireNonNegativeSafeInteger(value, path) {
35
+ if (typeof value !== "number" ||
36
+ !Number.isSafeInteger(value) ||
37
+ value < 0) {
38
+ throw new InvalidConfigurationError(path +
39
+ " must be a non-negative safe integer.");
40
+ }
41
+ return value;
42
+ }
43
+ function requireFinite(value, path) {
44
+ if (typeof value !== "number" ||
45
+ !Number.isFinite(value)) {
46
+ throw new InvalidConfigurationError(path + " must be finite.");
47
+ }
48
+ return value;
49
+ }
50
+ /**
51
+ * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
52
+ * missing required fields and incompatible scientific data fail at this boundary.
53
+ *
54
+ * Rate times duration is allowed only by explicit stationarity bound to the exact site and local
55
+ * shutter interval. EQE integrates to expected photons/electrons; A/W integrates current magnitude to
56
+ * coulombs without an implicit carrier mapping. Counts remain fractional expectations before
57
+ * stochastic sampling.
58
+ * @param value - unknown. Treated as untrusted data; static typing alone is not validation.
59
+ * @returns SensorRateTemporalStationarityProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
60
+ *
61
+ * @see docs/API_REFERENCE.md for the root export and exact type graph.
62
+ */
63
+ export function parseSensorRateTemporalStationarityProfile(value) {
64
+ const record = requireRecord(value, "sensorRateTemporalStationarity");
65
+ if (record.schemaVersion !== "0.1.0") {
66
+ throw new InvalidConfigurationError('sensorRateTemporalStationarity.schemaVersion must be "0.1.0".');
67
+ }
68
+ if (record.rateDomain !==
69
+ "eqe-electron-rate" &&
70
+ record.rateDomain !==
71
+ "responsivity-photocurrent") {
72
+ throw new InvalidConfigurationError("sensorRateTemporalStationarity.rateDomain is invalid.");
73
+ }
74
+ const site = requireRecord(record.site, "sensorRateTemporalStationarity.site");
75
+ const localExposureWindow = requireRecord(record.localExposureWindow, "sensorRateTemporalStationarity.localExposureWindow");
76
+ if (localExposureWindow.timeReference !==
77
+ "first-opening-boundary-phase") {
78
+ throw new InvalidConfigurationError('sensorRateTemporalStationarity.localExposureWindow.timeReference must be "first-opening-boundary-phase".');
79
+ }
80
+ if (record.stationarityMeaning !==
81
+ "reported-rate-constant-through-bound-local-exposure") {
82
+ throw new InvalidConfigurationError("sensorRateTemporalStationarity.stationarityMeaning is invalid.");
83
+ }
84
+ if (record.status !== "established" &&
85
+ record.status !== "approximation") {
86
+ throw new InvalidConfigurationError("sensorRateTemporalStationarity.status is invalid.");
87
+ }
88
+ const limitation = record.limitation === undefined
89
+ ? undefined
90
+ : requireNonEmptyString(record.limitation, "sensorRateTemporalStationarity.limitation");
91
+ if (record.status === "approximation" &&
92
+ limitation === undefined) {
93
+ throw new InvalidConfigurationError("sensorRateTemporalStationarity.limitation is required for an approximation.");
94
+ }
95
+ const start = requireFinite(localExposureWindow
96
+ .startOffsetSecondsFromOpeningReference, "sensorRateTemporalStationarity.localExposureWindow.startOffsetSecondsFromOpeningReference");
97
+ const end = requireFinite(localExposureWindow
98
+ .endOffsetSecondsFromOpeningReference, "sensorRateTemporalStationarity.localExposureWindow.endOffsetSecondsFromOpeningReference");
99
+ if (!(end > start)) {
100
+ throw new InvalidConfigurationError("sensorRateTemporalStationarity.localExposureWindow end must be greater than start.");
101
+ }
102
+ return {
103
+ schemaVersion: "0.1.0",
104
+ profileId: requireNonEmptyString(record.profileId, "sensorRateTemporalStationarity.profileId"),
105
+ rateDomain: record.rateDomain,
106
+ colorSamplingProfileId: requireNonEmptyString(record.colorSamplingProfileId, "sensorRateTemporalStationarity.colorSamplingProfileId"),
107
+ channelId: requireNonEmptyString(record.channelId, "sensorRateTemporalStationarity.channelId"),
108
+ site: {
109
+ x: requireNonNegativeSafeInteger(site.x, "sensorRateTemporalStationarity.site.x"),
110
+ y: requireNonNegativeSafeInteger(site.y, "sensorRateTemporalStationarity.site.y")
111
+ },
112
+ bindingId: requireNonEmptyString(record.bindingId, "sensorRateTemporalStationarity.bindingId"),
113
+ localExposureWindow: {
114
+ timeReference: "first-opening-boundary-phase",
115
+ startOffsetSecondsFromOpeningReference: start,
116
+ endOffsetSecondsFromOpeningReference: end
117
+ },
118
+ stationarityMeaning: "reported-rate-constant-through-bound-local-exposure",
119
+ status: record.status,
120
+ evidence: parseEvidenceList(record.evidence, "sensorRateTemporalStationarity.evidence"),
121
+ ...(limitation === undefined
122
+ ? {}
123
+ : { limitation })
124
+ };
125
+ }
126
+ function sameSite(a, b) {
127
+ return a.x === b.x && a.y === b.y;
128
+ }
129
+ function requireRateSite(rate) {
130
+ if (rate.site === undefined ||
131
+ !Number.isSafeInteger(rate.site.x) ||
132
+ rate.site.x < 0 ||
133
+ !Number.isSafeInteger(rate.site.y) ||
134
+ rate.site.y < 0) {
135
+ throw new InvalidScientificInputError("rate.site is required for temporal integration.");
136
+ }
137
+ return {
138
+ x: rate.site.x,
139
+ y: rate.site.y
140
+ };
141
+ }
142
+ function validateBinding(rate, binding) {
143
+ const site = requireRateSite(rate);
144
+ if (!sameSite(site, binding.site) ||
145
+ binding.colorSamplingProfileId !==
146
+ rate.colorSamplingProfileId ||
147
+ binding.channelId !==
148
+ rate.channelId) {
149
+ throw new InvalidScientificInputError("rate and exposureBinding must reference the same color site/channel.");
150
+ }
151
+ const rateDomain = rate.sourceResponseKind ===
152
+ "effective-spectral-responsivity"
153
+ ? "responsivity-photocurrent"
154
+ : "eqe-electron-rate";
155
+ if (binding.rateDomain !==
156
+ rateDomain ||
157
+ binding
158
+ .nativeImageRasterBindingEstablished !==
159
+ true ||
160
+ binding.channelAtSiteValidated !==
161
+ true ||
162
+ binding
163
+ .constantRateTemporalIntegrationAuthorized !==
164
+ false ||
165
+ binding.timeStationarityEstablished !==
166
+ false ||
167
+ binding.temporalIntegrationApplied !==
168
+ false ||
169
+ binding
170
+ .multiFrameSequenceBindingEstablished !==
171
+ false) {
172
+ throw new InvalidScientificInputError("exposureBinding must remain an unintegrated local timing binding for the same rate domain.");
173
+ }
174
+ if (binding.rateIdentity
175
+ .responseProfileId !==
176
+ rate.responseProfileId ||
177
+ binding.rateIdentity
178
+ .responseApplicationProfileId !==
179
+ rate.responseApplicationProfileId ||
180
+ binding.rateIdentity
181
+ .operatingRangeProfileId !==
182
+ rate.operatingRangeProfileId) {
183
+ throw new InvalidScientificInputError("exposureBinding response-rate identity must match the rate.");
184
+ }
185
+ if (rateDomain ===
186
+ "responsivity-photocurrent") {
187
+ const current = rate;
188
+ if (binding.rateIdentity
189
+ .electricalApplicabilityProfileId !==
190
+ current
191
+ .electricalApplicabilityProfileId) {
192
+ throw new InvalidScientificInputError("exposureBinding electrical applicability identity must match the A/W rate.");
193
+ }
194
+ }
195
+ else if (binding.rateIdentity
196
+ .electricalApplicabilityProfileId !==
197
+ undefined) {
198
+ throw new InvalidScientificInputError("EQE exposureBinding must not carry an A/W electrical applicability identity.");
199
+ }
200
+ const window = binding.localExposureWindow;
201
+ const duration = window
202
+ .endOffsetSecondsFromOpeningReference -
203
+ window
204
+ .startOffsetSecondsFromOpeningReference;
205
+ if (!Number.isFinite(duration) ||
206
+ duration <= 0 ||
207
+ !Number.isFinite(binding.localExposureDurationSeconds) ||
208
+ binding.localExposureDurationSeconds !==
209
+ duration) {
210
+ throw new InvalidScientificInputError("exposureBinding local duration must exactly equal end minus start and remain positive.");
211
+ }
212
+ return {
213
+ rateDomain,
214
+ site,
215
+ duration
216
+ };
217
+ }
218
+ function validateStationarity(stationarity, binding, rateDomain, site) {
219
+ if (stationarity.rateDomain !==
220
+ rateDomain ||
221
+ stationarity
222
+ .colorSamplingProfileId !==
223
+ binding.colorSamplingProfileId ||
224
+ stationarity.channelId !==
225
+ binding.channelId ||
226
+ !sameSite(stationarity.site, site) ||
227
+ stationarity.bindingId !==
228
+ binding.bindingId ||
229
+ stationarity
230
+ .localExposureWindow
231
+ .timeReference !==
232
+ binding.timeReference ||
233
+ stationarity
234
+ .localExposureWindow
235
+ .startOffsetSecondsFromOpeningReference !==
236
+ binding.localExposureWindow
237
+ .startOffsetSecondsFromOpeningReference ||
238
+ stationarity
239
+ .localExposureWindow
240
+ .endOffsetSecondsFromOpeningReference !==
241
+ binding.localExposureWindow
242
+ .endOffsetSecondsFromOpeningReference) {
243
+ throw new InvalidScientificInputError("stationarityProfile must apply to the exact bound rate domain, site, binding, and local exposure window.");
244
+ }
245
+ }
246
+ function requireNonNegativeFiniteRate(value, path) {
247
+ if (typeof value !== "number" ||
248
+ !Number.isFinite(value) ||
249
+ value < 0) {
250
+ throw new InvalidScientificInputError(path +
251
+ " must be finite and greater than or equal to zero.");
252
+ }
253
+ return value;
254
+ }
255
+ /**
256
+ * Integrates one explicitly stationary response-rate result over its exact
257
+ * bound local exposure window.
258
+ *
259
+ * This function is intentionally limited to the constant-rate approximation.
260
+ * It does not sample or integrate a time-varying signal.
261
+ */
262
+ export function integrateStationarySensorRateOverLocalExposure(input) {
263
+ const binding = validateBinding(input.rate, input.exposureBinding);
264
+ const stationarity = parseSensorRateTemporalStationarityProfile(input.stationarityProfile);
265
+ validateStationarity(stationarity, input.exposureBinding, binding.rateDomain, binding.site);
266
+ const common = {
267
+ colorSamplingProfileId: input.rate
268
+ .colorSamplingProfileId,
269
+ channelId: input.rate.channelId,
270
+ site: binding.site,
271
+ bindingId: input.exposureBinding.bindingId,
272
+ stationarityProfileId: stationarity.profileId,
273
+ stationarityStatus: stationarity.status,
274
+ timeReference: input.exposureBinding
275
+ .timeReference,
276
+ startOffsetSecondsFromOpeningReference: input.exposureBinding
277
+ .localExposureWindow
278
+ .startOffsetSecondsFromOpeningReference,
279
+ endOffsetSecondsFromOpeningReference: input.exposureBinding
280
+ .localExposureWindow
281
+ .endOffsetSecondsFromOpeningReference,
282
+ localExposureDurationSeconds: binding.duration,
283
+ integrationMethod: "constant-rate-times-local-exposure-duration",
284
+ timeStationarityEstablished: true,
285
+ temporalIntegrationApplied: true,
286
+ exposureDurationApplied: true,
287
+ timeVaryingSignalIntegrated: false,
288
+ multiFrameSequenceIntegrated: false,
289
+ darkChargeIncluded: false,
290
+ otherChargeIncluded: false,
291
+ accumulatedSignalCompleteness: "photo-signal-only",
292
+ physicalFullWellAssessmentAuthorized: false,
293
+ cameraSaturationAssessmentAuthorized: false,
294
+ saturationAssessed: false,
295
+ shotNoiseApplied: false,
296
+ readNoiseApplied: false,
297
+ adcQuantizationApplied: false,
298
+ rawCodeValueProduced: false,
299
+ componentEvidence: {
300
+ stationarity: stationarity.evidence,
301
+ exposureBinding: input.exposureBinding
302
+ .componentEvidence
303
+ }
304
+ };
305
+ const assumptions = [
306
+ "The reported instantaneous rate is explicitly declared constant through this exact bound local exposure window.",
307
+ "The integration is therefore rate × local duration; no temporal quadrature or time-varying signal samples are generated.",
308
+ "Motion, flicker, flash, time-varying illumination/vignetting, shutter modulation and other temporal scene/optical effects are excluded unless already proven irrelevant by the stationarity evidence.",
309
+ "A/W stationarity additionally treats the quasi-static detector-terminal photocurrent result as valid throughout the window; detector bandwidth/transient response remains unmodeled.",
310
+ "This result contains photo-signal accumulation only. Dark current, defects, leakage, charge injection and other charge contributors are not included.",
311
+ "Physical full-well and camera/digital saturation must not be assessed from this incomplete photo-signal accumulation alone.",
312
+ "Shot/read noise, conversion gain, ADC/RAW conversion and reconstruction remain downstream."
313
+ ];
314
+ if (binding.rateDomain ===
315
+ "eqe-electron-rate") {
316
+ const rate = input.rate;
317
+ const photonRate = requireNonNegativeFiniteRate(rate.incidentPhotonRatePerSecond, "rate.incidentPhotonRatePerSecond");
318
+ const electronRate = requireNonNegativeFiniteRate(rate
319
+ .expectedGeneratedElectronRatePerSecond, "rate.expectedGeneratedElectronRatePerSecond");
320
+ const photonCount = photonRate *
321
+ binding.duration;
322
+ const electronCount = electronRate *
323
+ binding.duration;
324
+ if (!Number.isFinite(photonCount) ||
325
+ !Number.isFinite(electronCount)) {
326
+ throw new InvalidScientificInputError("EQE constant-rate temporal integration must remain finite.");
327
+ }
328
+ const result = {
329
+ ...common,
330
+ kind: "eqe-expected-counts",
331
+ incidentPhotonRatePerSecond: photonRate,
332
+ expectedGeneratedElectronRatePerSecond: electronRate,
333
+ expectedIncidentPhotonCount: photonCount,
334
+ expectedGeneratedElectronCount: electronCount,
335
+ countsAreExpectationValues: true,
336
+ integerPhotonCountSampled: false,
337
+ integerElectronCountSampled: false,
338
+ chargeCalculated: false,
339
+ currentCalculated: false
340
+ };
341
+ return stationarity.status ===
342
+ "established"
343
+ ? calculatedResult(result, "sensor-stationary-eqe-exposure-integration", "1.0.0", assumptions)
344
+ : approximationResult(result, "sensor-stationary-eqe-exposure-integration", "1.0.0", [
345
+ ...assumptions,
346
+ stationarity.limitation
347
+ ]);
348
+ }
349
+ const rate = input.rate;
350
+ const current = requireNonNegativeFiniteRate(rate.photocurrentMagnitudeAmperes, "rate.photocurrentMagnitudeAmperes");
351
+ if (rate.temporalResponseModel !==
352
+ "quasi-static-steady-state-only" ||
353
+ rate.detectorBandwidthModeled !==
354
+ false ||
355
+ rate.chargeCalculated !== false) {
356
+ throw new InvalidScientificInputError("A/W input must remain a quasi-static current result with no prior charge integration.");
357
+ }
358
+ const charge = current * binding.duration;
359
+ if (!Number.isFinite(charge)) {
360
+ throw new InvalidScientificInputError("A/W constant-current temporal integration must remain finite.");
361
+ }
362
+ const result = {
363
+ ...common,
364
+ kind: "responsivity-photocurrent-charge",
365
+ photocurrentMagnitudeAmperes: current,
366
+ photochargeMagnitudeCoulombs: charge,
367
+ currentSignConvention: rate.currentSignConvention,
368
+ chargeSignConvention: "magnitude-only-no-carrier-or-circuit-polarity",
369
+ carrierCountInferred: false,
370
+ electronCountCalculated: false,
371
+ photonCountCalculated: false,
372
+ detectorBandwidthModeled: false
373
+ };
374
+ return stationarity.status ===
375
+ "established"
376
+ ? calculatedResult(result, "sensor-stationary-responsivity-exposure-integration", "1.0.0", assumptions)
377
+ : approximationResult(result, "sensor-stationary-responsivity-exposure-integration", "1.0.0", [
378
+ ...assumptions,
379
+ stationarity.limitation
380
+ ]);
381
+ }
382
+ //# sourceMappingURL=constant-rate-temporal-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constant-rate-temporal-integration.js","sourceRoot":"","sources":["../../src/sensor/constant-rate-temporal-integration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,169 @@
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. Dark current is an
5
+ * independently declared pre-compensation thermal electron rate. Exact-temperature or sampled linear
6
+ * interpolation is supported only within declared applicability; no universal doubling-temperature law
7
+ * is inferred. Population means remain approximations and do not model hot-pixel/DCNU structure.
8
+ * Evaluate the declared temperature-dependent dark electron rate and integrate over the exact
9
+ * photo-signal local exposure event. Dark current is an independently declared pre-compensation
10
+ * thermal electron rate. Exact-temperature or sampled linear interpolation is supported only within
11
+ * declared applicability; no universal doubling-temperature law is inferred. Population means remain
12
+ * approximations and do not model hot-pixel/DCNU structure.
13
+ * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
14
+ * limits.
15
+ */
16
+ import { type CalculationResult } from "../core/calculation-result.js";
17
+ import { type EvidenceProvenance } from "../core/evidence-provenance.js";
18
+ import type { SensorEqeExposureIntegration } from "./constant-rate-temporal-integration.js";
19
+ import type { SensorEqePhotoExposure, SensorEqeTemporalPhotoSignal } from "./temporal-photo-signal.js";
20
+ import type { SensorSpectralResponseScientificStatus, SensorSpectralResponseUncertainty } from "./spectral-response.js";
21
+ export type SensorDarkCurrentSiteApplicability = {
22
+ kind: "exact-site";
23
+ site: {
24
+ x: number;
25
+ y: number;
26
+ };
27
+ } | {
28
+ kind: "uniform-site-mean-approximation";
29
+ limitation: string;
30
+ evidence: readonly EvidenceProvenance[];
31
+ };
32
+ export type SensorDarkCurrentTemperatureModel = {
33
+ kind: "fixed-reference-temperature";
34
+ referenceTemperatureC: number;
35
+ darkCurrentElectronsPerSecond: number;
36
+ } | {
37
+ kind: "piecewise-linear-temperature-table";
38
+ interpolation: "piecewise-linear";
39
+ outsideRangeBehavior: "fail-closed";
40
+ samples: readonly {
41
+ temperatureC: number;
42
+ darkCurrentElectronsPerSecond: number;
43
+ }[];
44
+ };
45
+ export interface SensorDarkCurrentProfile {
46
+ schemaVersion: "0.1.0";
47
+ profileId: string;
48
+ colorSamplingProfileId: string;
49
+ channelId: string;
50
+ scientificStatus: SensorSpectralResponseScientificStatus;
51
+ uncertainty: SensorSpectralResponseUncertainty;
52
+ evidence: readonly EvidenceProvenance[];
53
+ chargeMeaning: "pre-compensation-thermally-generated-electrons";
54
+ siteApplicability: SensorDarkCurrentSiteApplicability;
55
+ temperatureModel: SensorDarkCurrentTemperatureModel;
56
+ darkCurrentCompensationIncluded: false;
57
+ spatialDarkCurrentNonuniformityModeled: boolean;
58
+ }
59
+ export interface CalculateSensorDarkCurrentChargeInput<Exposure extends SensorEqePhotoExposure = SensorEqeExposureIntegration> {
60
+ exposure: Exposure;
61
+ darkCurrentProfile: SensorDarkCurrentProfile;
62
+ operatingTemperatureC: number;
63
+ }
64
+ export interface SensorDarkCurrentCharge {
65
+ darkCurrentProfileId: string;
66
+ colorSamplingProfileId: string;
67
+ channelId: string;
68
+ site: {
69
+ x: number;
70
+ y: number;
71
+ };
72
+ bindingId: string;
73
+ stationarityProfileId: string;
74
+ temporalIntegrationId?: never;
75
+ timeReference: "first-opening-boundary-phase";
76
+ startOffsetSecondsFromOpeningReference: number;
77
+ endOffsetSecondsFromOpeningReference: number;
78
+ operatingTemperatureC: number;
79
+ temperatureModel: SensorDarkCurrentTemperatureModel["kind"];
80
+ temperatureInterpolationUsed: boolean;
81
+ darkCurrentElectronsPerSecond: number;
82
+ localExposureDurationSeconds: number;
83
+ expectedDarkElectronCount: number;
84
+ countMeaning: "expected-thermally-generated-electrons";
85
+ expectationValueOnly: true;
86
+ integerDarkElectronCountSampled: false;
87
+ darkShotNoiseApplied: false;
88
+ darkCurrentCompensationApplied: false;
89
+ spatialDarkCurrentNonuniformityModeled: boolean;
90
+ photoSignalIncluded: false;
91
+ otherChargeIncluded: false;
92
+ physicalFullWellAssessmentAuthorized: false;
93
+ saturationAssessed: false;
94
+ componentEvidence: {
95
+ darkCurrent: readonly EvidenceProvenance[];
96
+ siteApproximation: readonly EvidenceProvenance[];
97
+ exposure: SensorEqeExposureIntegration["componentEvidence"];
98
+ };
99
+ }
100
+ /** Dark charge shares the exact temporal photo event, without a stationarity ID. */
101
+ export type SensorTemporalDarkCurrentCharge = Omit<SensorDarkCurrentCharge, "stationarityProfileId" | "temporalIntegrationId" | "componentEvidence"> & {
102
+ stationarityProfileId?: never;
103
+ temporalIntegrationId: string;
104
+ componentEvidence: Omit<SensorDarkCurrentCharge["componentEvidence"], "exposure"> & {
105
+ exposure: SensorEqeTemporalPhotoSignal["componentEvidence"];
106
+ };
107
+ };
108
+ export type SensorPhotoDarkCurrentCharge = SensorDarkCurrentCharge | SensorTemporalDarkCurrentCharge;
109
+ /**
110
+ * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
111
+ * missing required fields and incompatible scientific data fail at this boundary.
112
+ *
113
+ * Dark current is an independently declared pre-compensation thermal electron rate. Exact-temperature
114
+ * or sampled linear interpolation is supported only within declared applicability; no universal
115
+ * doubling-temperature law is inferred. Population means remain approximations and do not model
116
+ * hot-pixel/DCNU structure.
117
+ * @param value - unknown. Treated as untrusted data; static typing alone is not validation.
118
+ * @returns SensorDarkCurrentProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
119
+ *
120
+ * @see docs/API_REFERENCE.md for the root export and exact type graph.
121
+ */
122
+ export declare function parseSensorDarkCurrentProfile(value: unknown): SensorDarkCurrentProfile;
123
+ /**
124
+ * Evaluate the declared temperature-dependent dark electron rate and integrate over the exact
125
+ * photo-signal local exposure event.
126
+ *
127
+ * Dark current is an independently declared pre-compensation thermal electron rate. Exact-temperature
128
+ * or sampled linear interpolation is supported only within declared applicability; no universal
129
+ * doubling-temperature law is inferred. Population means remain approximations and do not model
130
+ * hot-pixel/DCNU structure.
131
+ * @param input - Omit<CalculateSensorDarkCurrentChargeInput, "exposure"> & { exposure: SensorEqeExposureIntegration }. See the linked contract for coordinate, unit and profile binding semantics.
132
+ * @returns CalculationResult<SensorDarkCurrentCharge>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
133
+ *
134
+ * @see docs/API_REFERENCE.md for the root export and exact type graph.
135
+ */
136
+ export declare function calculateSensorDarkCurrentCharge(input: Omit<CalculateSensorDarkCurrentChargeInput, "exposure"> & {
137
+ exposure: SensorEqeExposureIntegration;
138
+ }): CalculationResult<SensorDarkCurrentCharge>;
139
+ /**
140
+ * Evaluate the declared temperature-dependent dark electron rate and integrate over the exact
141
+ * photo-signal local exposure event.
142
+ *
143
+ * Dark current is an independently declared pre-compensation thermal electron rate. Exact-temperature
144
+ * or sampled linear interpolation is supported only within declared applicability; no universal
145
+ * doubling-temperature law is inferred. Population means remain approximations and do not model
146
+ * hot-pixel/DCNU structure.
147
+ * @param input - Omit<CalculateSensorDarkCurrentChargeInput, "exposure"> & { exposure: SensorEqeTemporalPhotoSignal }. See the linked contract for coordinate, unit and profile binding semantics.
148
+ * @returns CalculationResult<SensorTemporalDarkCurrentCharge>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
149
+ *
150
+ * @see docs/API_REFERENCE.md for the root export and exact type graph.
151
+ */
152
+ export declare function calculateSensorDarkCurrentCharge(input: Omit<CalculateSensorDarkCurrentChargeInput, "exposure"> & {
153
+ exposure: SensorEqeTemporalPhotoSignal;
154
+ }): CalculationResult<SensorTemporalDarkCurrentCharge>;
155
+ /**
156
+ * Evaluate the declared temperature-dependent dark electron rate and integrate over the exact
157
+ * photo-signal local exposure event.
158
+ *
159
+ * Dark current is an independently declared pre-compensation thermal electron rate. Exact-temperature
160
+ * or sampled linear interpolation is supported only within declared applicability; no universal
161
+ * doubling-temperature law is inferred. Population means remain approximations and do not model
162
+ * hot-pixel/DCNU structure.
163
+ * @param input - CalculateSensorDarkCurrentChargeInput<SensorEqePhotoExposure>. See the linked contract for coordinate, unit and profile binding semantics.
164
+ * @returns CalculationResult<SensorPhotoDarkCurrentCharge>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
165
+ *
166
+ * @see docs/API_REFERENCE.md for the root export and exact type graph.
167
+ */
168
+ export declare function calculateSensorDarkCurrentCharge(input: CalculateSensorDarkCurrentChargeInput<SensorEqePhotoExposure>): CalculationResult<SensorPhotoDarkCurrentCharge>;
169
+ //# sourceMappingURL=dark-current.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dark-current.d.ts","sourceRoot":"","sources":["../../src/sensor/dark-current.ts"],"names":[],"mappings":"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"}