@photivra/engine 0.5.1 → 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 (753) hide show
  1. package/AGENTS.md +674 -0
  2. package/CHANGELOG.md +218 -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 +157 -56
  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 +101 -7
  203. package/dist/index.d.ts.map +1 -1
  204. package/dist/index.js +99 -7
  205. package/dist/index.js.map +1 -1
  206. package/dist/motion/camera-rotation.d.ts +76 -0
  207. package/dist/motion/camera-rotation.d.ts.map +1 -1
  208. package/dist/motion/camera-rotation.js +111 -0
  209. package/dist/motion/camera-rotation.js.map +1 -1
  210. package/dist/motion/capture-rotation-inverse-mapping.d.ts +113 -0
  211. package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +1 -0
  212. package/dist/motion/capture-rotation-inverse-mapping.js +184 -0
  213. package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -0
  214. package/dist/motion/capture-rotation-temporal-quadrature.d.ts +104 -0
  215. package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +1 -0
  216. package/dist/motion/capture-rotation-temporal-quadrature.js +131 -0
  217. package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -0
  218. package/dist/motion/capture-rotation-trajectory.d.ts +113 -0
  219. package/dist/motion/capture-rotation-trajectory.d.ts.map +1 -0
  220. package/dist/motion/capture-rotation-trajectory.js +168 -0
  221. package/dist/motion/capture-rotation-trajectory.js.map +1 -0
  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 +23 -4
  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 +22 -2
  291. package/dist/optics/radial-distortion.d.ts.map +1 -1
  292. package/dist/optics/radial-distortion.js +101 -23
  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 +32 -11
  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 +212 -0
  393. package/dist/sensor/capture-color-sampling-binding.d.ts.map +1 -0
  394. package/dist/sensor/capture-color-sampling-binding.js +437 -0
  395. package/dist/sensor/capture-color-sampling-binding.js.map +1 -0
  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 +157 -0
  401. package/dist/sensor/capture-mode.d.ts.map +1 -0
  402. package/dist/sensor/capture-mode.js +447 -0
  403. package/dist/sensor/capture-mode.js.map +1 -0
  404. package/dist/sensor/color-sampling.d.ts +133 -0
  405. package/dist/sensor/color-sampling.d.ts.map +1 -0
  406. package/dist/sensor/color-sampling.js +245 -0
  407. package/dist/sensor/color-sampling.js.map +1 -0
  408. package/dist/sensor/constant-rate-temporal-integration.d.ts +126 -0
  409. package/dist/sensor/constant-rate-temporal-integration.d.ts.map +1 -0
  410. package/dist/sensor/constant-rate-temporal-integration.js +382 -0
  411. package/dist/sensor/constant-rate-temporal-integration.js.map +1 -0
  412. package/dist/sensor/dark-current.d.ts +169 -0
  413. package/dist/sensor/dark-current.d.ts.map +1 -0
  414. package/dist/sensor/dark-current.js +427 -0
  415. package/dist/sensor/dark-current.js.map +1 -0
  416. package/dist/sensor/environment-photo-signal.d.ts +123 -0
  417. package/dist/sensor/environment-photo-signal.d.ts.map +1 -0
  418. package/dist/sensor/environment-photo-signal.js +186 -0
  419. package/dist/sensor/environment-photo-signal.js.map +1 -0
  420. package/dist/sensor/eqe-electron-rate.d.ts +107 -0
  421. package/dist/sensor/eqe-electron-rate.d.ts.map +1 -0
  422. package/dist/sensor/eqe-electron-rate.js +561 -0
  423. package/dist/sensor/eqe-electron-rate.js.map +1 -0
  424. package/dist/sensor/eqe-local-exposure.d.ts +65 -0
  425. package/dist/sensor/eqe-local-exposure.d.ts.map +1 -0
  426. package/dist/sensor/eqe-local-exposure.js +84 -0
  427. package/dist/sensor/eqe-local-exposure.js.map +1 -0
  428. package/dist/sensor/eqe-temporal-exposure.d.ts +55 -0
  429. package/dist/sensor/eqe-temporal-exposure.d.ts.map +1 -0
  430. package/dist/sensor/eqe-temporal-exposure.js +62 -0
  431. package/dist/sensor/eqe-temporal-exposure.js.map +1 -0
  432. package/dist/sensor/exposure-window.d.ts +117 -0
  433. package/dist/sensor/exposure-window.d.ts.map +1 -0
  434. package/dist/sensor/exposure-window.js +305 -0
  435. package/dist/sensor/exposure-window.js.map +1 -0
  436. package/dist/sensor/iso-signal-chain.d.ts +148 -0
  437. package/dist/sensor/iso-signal-chain.d.ts.map +1 -0
  438. package/dist/sensor/iso-signal-chain.js +411 -0
  439. package/dist/sensor/iso-signal-chain.js.map +1 -0
  440. package/dist/sensor/local-exposure-binding.d.ts +87 -0
  441. package/dist/sensor/local-exposure-binding.d.ts.map +1 -0
  442. package/dist/sensor/local-exposure-binding.js +214 -0
  443. package/dist/sensor/local-exposure-binding.js.map +1 -0
  444. package/dist/sensor/optical-stack.d.ts +132 -0
  445. package/dist/sensor/optical-stack.d.ts.map +1 -0
  446. package/dist/sensor/optical-stack.js +303 -0
  447. package/dist/sensor/optical-stack.js.map +1 -0
  448. package/dist/sensor/photon-energy.d.ts +97 -0
  449. package/dist/sensor/photon-energy.d.ts.map +1 -0
  450. package/dist/sensor/photon-energy.js +390 -0
  451. package/dist/sensor/photon-energy.js.map +1 -0
  452. package/dist/sensor/physical-charge-capacity.d.ts +130 -0
  453. package/dist/sensor/physical-charge-capacity.d.ts.map +1 -0
  454. package/dist/sensor/physical-charge-capacity.js +345 -0
  455. package/dist/sensor/physical-charge-capacity.js.map +1 -0
  456. package/dist/sensor/pixel-pitch.d.ts +6 -0
  457. package/dist/sensor/pixel-pitch.d.ts.map +1 -1
  458. package/dist/sensor/pixel-pitch.js +6 -0
  459. package/dist/sensor/pixel-pitch.js.map +1 -1
  460. package/dist/sensor/radiometry-readiness.d.ts +10 -0
  461. package/dist/sensor/radiometry-readiness.d.ts.map +1 -1
  462. package/dist/sensor/radiometry-readiness.js +10 -0
  463. package/dist/sensor/radiometry-readiness.js.map +1 -1
  464. package/dist/sensor/raw-readout.d.ts +314 -0
  465. package/dist/sensor/raw-readout.d.ts.map +1 -0
  466. package/dist/sensor/raw-readout.js +914 -0
  467. package/dist/sensor/raw-readout.js.map +1 -0
  468. package/dist/sensor/raw-reconstruction.d.ts +170 -0
  469. package/dist/sensor/raw-reconstruction.d.ts.map +1 -0
  470. package/dist/sensor/raw-reconstruction.js +424 -0
  471. package/dist/sensor/raw-reconstruction.js.map +1 -0
  472. package/dist/sensor/readout-exposure-linkage.d.ts +123 -0
  473. package/dist/sensor/readout-exposure-linkage.d.ts.map +1 -0
  474. package/dist/sensor/readout-exposure-linkage.js +222 -0
  475. package/dist/sensor/readout-exposure-linkage.js.map +1 -0
  476. package/dist/sensor/readout-timing.d.ts +137 -0
  477. package/dist/sensor/readout-timing.d.ts.map +1 -0
  478. package/dist/sensor/readout-timing.js +243 -0
  479. package/dist/sensor/readout-timing.js.map +1 -0
  480. package/dist/sensor/response-application-compatibility.d.ts +136 -0
  481. package/dist/sensor/response-application-compatibility.d.ts.map +1 -0
  482. package/dist/sensor/response-application-compatibility.js +408 -0
  483. package/dist/sensor/response-application-compatibility.js.map +1 -0
  484. package/dist/sensor/response-operating-range.d.ts +173 -0
  485. package/dist/sensor/response-operating-range.d.ts.map +1 -0
  486. package/dist/sensor/response-operating-range.js +672 -0
  487. package/dist/sensor/response-operating-range.js.map +1 -0
  488. package/dist/sensor/responsivity-photocurrent.d.ts +158 -0
  489. package/dist/sensor/responsivity-photocurrent.d.ts.map +1 -0
  490. package/dist/sensor/responsivity-photocurrent.js +644 -0
  491. package/dist/sensor/responsivity-photocurrent.js.map +1 -0
  492. package/dist/sensor/sampling-aperture.d.ts +154 -0
  493. package/dist/sensor/sampling-aperture.d.ts.map +1 -0
  494. package/dist/sensor/sampling-aperture.js +388 -0
  495. package/dist/sensor/sampling-aperture.js.map +1 -0
  496. package/dist/sensor/scene-eqe-temporal-exposure.d.ts +45 -0
  497. package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +1 -0
  498. package/dist/sensor/scene-eqe-temporal-exposure.js +64 -0
  499. package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -0
  500. package/dist/sensor/sensor-geometry.d.ts +12 -0
  501. package/dist/sensor/sensor-geometry.d.ts.map +1 -1
  502. package/dist/sensor/sensor-geometry.js +12 -0
  503. package/dist/sensor/sensor-geometry.js.map +1 -1
  504. package/dist/sensor/signal-noise.d.ts +10 -0
  505. package/dist/sensor/signal-noise.d.ts.map +1 -1
  506. package/dist/sensor/signal-noise.js +10 -0
  507. package/dist/sensor/signal-noise.js.map +1 -1
  508. package/dist/sensor/spatial-sample-reduction.d.ts +171 -0
  509. package/dist/sensor/spatial-sample-reduction.d.ts.map +1 -0
  510. package/dist/sensor/spatial-sample-reduction.js +345 -0
  511. package/dist/sensor/spatial-sample-reduction.js.map +1 -0
  512. package/dist/sensor/spatial-sampling-quadrature.d.ts +179 -0
  513. package/dist/sensor/spatial-sampling-quadrature.d.ts.map +1 -0
  514. package/dist/sensor/spatial-sampling-quadrature.js +224 -0
  515. package/dist/sensor/spatial-sampling-quadrature.js.map +1 -0
  516. package/dist/sensor/spatio-spectral-reduction.d.ts +187 -0
  517. package/dist/sensor/spatio-spectral-reduction.d.ts.map +1 -0
  518. package/dist/sensor/spatio-spectral-reduction.js +373 -0
  519. package/dist/sensor/spatio-spectral-reduction.js.map +1 -0
  520. package/dist/sensor/spectral-coverage.d.ts +24 -0
  521. package/dist/sensor/spectral-coverage.d.ts.map +1 -0
  522. package/dist/sensor/spectral-coverage.js +86 -0
  523. package/dist/sensor/spectral-coverage.js.map +1 -0
  524. package/dist/sensor/spectral-quadrature.d.ts +169 -0
  525. package/dist/sensor/spectral-quadrature.d.ts.map +1 -0
  526. package/dist/sensor/spectral-quadrature.js +542 -0
  527. package/dist/sensor/spectral-quadrature.js.map +1 -0
  528. package/dist/sensor/spectral-response.d.ts +192 -0
  529. package/dist/sensor/spectral-response.d.ts.map +1 -0
  530. package/dist/sensor/spectral-response.js +664 -0
  531. package/dist/sensor/spectral-response.js.map +1 -0
  532. package/dist/sensor/temporal-eqe-sum.d.ts +15 -0
  533. package/dist/sensor/temporal-eqe-sum.d.ts.map +1 -0
  534. package/dist/sensor/temporal-eqe-sum.js +30 -0
  535. package/dist/sensor/temporal-eqe-sum.js.map +1 -0
  536. package/dist/sensor/temporal-photo-signal.d.ts +38 -0
  537. package/dist/sensor/temporal-photo-signal.d.ts.map +1 -0
  538. package/dist/sensor/temporal-photo-signal.js +110 -0
  539. package/dist/sensor/temporal-photo-signal.js.map +1 -0
  540. package/dist/sensor/temporal-sample-binding.d.ts +6 -0
  541. package/dist/sensor/temporal-sample-binding.d.ts.map +1 -0
  542. package/dist/sensor/temporal-sample-binding.js +32 -0
  543. package/dist/sensor/temporal-sample-binding.js.map +1 -0
  544. package/dist/simulation/poc-simulation.d.ts.map +1 -1
  545. package/dist/simulation/poc-simulation.js +34 -11
  546. package/dist/simulation/poc-simulation.js.map +1 -1
  547. package/dist/stabilization/camera-shake.d.ts +11 -0
  548. package/dist/stabilization/camera-shake.d.ts.map +1 -1
  549. package/dist/stabilization/camera-shake.js +11 -0
  550. package/dist/stabilization/camera-shake.js.map +1 -1
  551. package/dist/stabilization/system.d.ts +218 -0
  552. package/dist/stabilization/system.d.ts.map +1 -0
  553. package/dist/stabilization/system.js +695 -0
  554. package/dist/stabilization/system.js.map +1 -0
  555. package/docs/API_REFERENCE.md +2017 -0
  556. package/docs/API_STYLE.md +132 -0
  557. package/docs/ARCHITECTURE.md +150 -23
  558. package/docs/AUTOMATION_COORDINATION.md +190 -0
  559. package/docs/CAPTURE_COLOR.md +25 -0
  560. package/docs/CAPTURE_CORRECTED_SDR.md +25 -0
  561. package/docs/CAPTURE_EXPORT_METADATA.md +27 -0
  562. package/docs/CAPTURE_SDR.md +20 -0
  563. package/docs/DEVELOPERS.md +60 -0
  564. package/docs/DIGITAL_OPTICS_FOUNDATION.md +69 -0
  565. package/docs/ENVIRONMENT_RAW_CAPTURE.md +187 -0
  566. package/docs/EXPORT_ACCEPTANCE.md +133 -0
  567. package/docs/GENERIC_TIER_PRESETS.md +269 -0
  568. package/docs/GEOMETRIC_PREPARATION_REUSE.md +141 -0
  569. package/docs/IMAGE_FORMATION.md +105 -9
  570. package/docs/LINEAR_CAPTURE_ENCODING.md +25 -0
  571. package/docs/MOTION_AND_SIGNAL.md +145 -1
  572. package/docs/NUMERICAL_CORRECTNESS.md +191 -0
  573. package/docs/PERFORMANCE_BASELINE.md +56 -0
  574. package/docs/PHOTOGRAPHIC_EXPORT.md +206 -0
  575. package/docs/PHYSICS_FOUNDATION.md +152 -5
  576. package/docs/POC_API.md +2 -0
  577. package/docs/POC_PROJECTION_REUSE.md +124 -0
  578. package/docs/PROCESSED_OUTPUT.md +157 -0
  579. package/docs/PRODUCTION_COMPOSITION.md +373 -0
  580. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +131 -0
  581. package/docs/PROVENANCE.md +4 -0
  582. package/docs/PSF_FOUNDATION.md +110 -88
  583. package/docs/RAW_FRAME_ENVELOPE.md +56 -0
  584. package/docs/RAW_FRAME_RECONSTRUCTION.md +30 -0
  585. package/docs/RELEASE_1_0.md +65 -0
  586. package/docs/RELEASE_AUDIT.md +38 -0
  587. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +298 -0
  588. package/docs/SCENE_SENSOR_QUADRATURE.md +98 -0
  589. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +86 -0
  590. package/docs/SCIENTIFIC_ASSURANCE.md +280 -0
  591. package/docs/SCIENTIFIC_CONFORMANCE.md +83 -0
  592. package/docs/SDR_RENDERING.md +33 -0
  593. package/docs/SENSOR_ENVIRONMENT_QUERY.md +86 -0
  594. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +104 -0
  595. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +74 -0
  596. package/docs/SENSOR_PSF_QUADRATURE.md +90 -0
  597. package/docs/SENSOR_RAW_FRAME.md +20 -0
  598. package/docs/SENSOR_RAW_PRODUCER.md +77 -0
  599. package/docs/SIGNAL_CONFORMANCE.md +23 -0
  600. package/docs/SIMULATED_CAPTURE.md +65 -0
  601. package/docs/STABILIZATION.md +160 -17
  602. package/docs/TEMPORAL_PHOTO_RAW.md +83 -0
  603. package/docs/TIER_ACCEPTANCE.md +129 -0
  604. package/docs/TIER_PRESET_ACCEPTANCE.md +59 -0
  605. package/docs/USAGE.md +5604 -331
  606. package/docs/V1_COMPOSITION_MAP.md +123 -0
  607. package/docs/V1_HELPER_REUSE_REVIEW.md +60 -0
  608. package/docs/V1_PERFORMANCE_DISPOSITION.md +88 -0
  609. package/docs/api/camera-equivalent-focal-length.md +53 -0
  610. package/docs/api/camera-field-of-view.md +119 -0
  611. package/docs/api/camera-projected-object-size.md +54 -0
  612. package/docs/api/capture-capture-export-metadata.md +107 -0
  613. package/docs/api/capture-environment-raw-producer.md +56 -0
  614. package/docs/api/capture-focus-control.md +419 -0
  615. package/docs/api/capture-linear-encoding.md +99 -0
  616. package/docs/api/capture-photographic-export.md +172 -0
  617. package/docs/api/capture-raw-frame-reconstruction.md +87 -0
  618. package/docs/api/capture-release-sequence.md +252 -0
  619. package/docs/api/capture-sensor-raw-frame.md +66 -0
  620. package/docs/api/capture-sensor-raw-producer.md +98 -0
  621. package/docs/api/capture-simulated-capture.md +179 -0
  622. package/docs/api/color-capture-color.md +122 -0
  623. package/docs/api/color-white-balance.md +386 -0
  624. package/docs/api/composition-image-formation-plan.md +825 -0
  625. package/docs/api/composition-plan-consumer.md +98 -0
  626. package/docs/api/core-calculation-result.md +220 -0
  627. package/docs/api/core-configuration-error.md +19 -0
  628. package/docs/api/core-image-formation.md +204 -0
  629. package/docs/api/core-scientific-assurance.md +214 -0
  630. package/docs/api/core-spectral-composition.md +268 -0
  631. package/docs/api/core-spectral.md +78 -0
  632. package/docs/api/core-validation.md +34 -0
  633. package/docs/api/core-version.md +14 -0
  634. package/docs/api/equipment-exposure-capabilities.md +270 -0
  635. package/docs/api/equipment-generic-tier-assets.md +82 -0
  636. package/docs/api/equipment-generic-tier-presets.md +103 -0
  637. package/docs/api/equipment-iso-capabilities.md +295 -0
  638. package/docs/api/equipment-metering-capabilities.md +126 -0
  639. package/docs/api/equipment-release-capabilities.md +91 -0
  640. package/docs/api/exports.json +5656 -0
  641. package/docs/api/exposure-exposure-duration-control.md +115 -0
  642. package/docs/api/exposure-exposure-mode-resolver.md +966 -0
  643. package/docs/api/exposure-exposure.md +150 -0
  644. package/docs/api/exposure-flash.md +327 -0
  645. package/docs/api/exposure-metering-scene-radiance.md +154 -0
  646. package/docs/api/exposure-metering-target.md +134 -0
  647. package/docs/api/exposure-metering-temporal.md +77 -0
  648. package/docs/api/exposure-metering.md +172 -0
  649. package/docs/api/exposure-program-line.md +64 -0
  650. package/docs/api/motion-camera-rotation.md +215 -0
  651. package/docs/api/motion-capture-rotation-inverse-mapping.md +128 -0
  652. package/docs/api/motion-capture-rotation-temporal-quadrature.md +127 -0
  653. package/docs/api/motion-capture-rotation-trajectory.md +132 -0
  654. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +171 -0
  655. package/docs/api/motion-extended-object-projection.md +312 -0
  656. package/docs/api/motion-projected-motion.md +60 -0
  657. package/docs/api/optics-aperture.md +69 -0
  658. package/docs/api/optics-circle-of-confusion.md +46 -0
  659. package/docs/api/optics-complex-pupil-psf.md +193 -0
  660. package/docs/api/optics-depth-of-field.md +92 -0
  661. package/docs/api/optics-diffraction.md +46 -0
  662. package/docs/api/optics-focus-breathing.md +119 -0
  663. package/docs/api/optics-focus-state.md +64 -0
  664. package/docs/api/optics-front-of-lens-filter.md +263 -0
  665. package/docs/api/optics-illumination-vignetting.md +95 -0
  666. package/docs/api/optics-lateral-chromatic-aberration.md +225 -0
  667. package/docs/api/optics-lens-psf-profile.md +380 -0
  668. package/docs/api/optics-polygon-diffraction.md +68 -0
  669. package/docs/api/optics-profile-contract.md +47 -0
  670. package/docs/api/optics-psf-foundation.md +181 -0
  671. package/docs/api/optics-radial-distortion.md +194 -0
  672. package/docs/api/optics-scene-to-sensor-irradiance.md +371 -0
  673. package/docs/api/optics-scene-to-sensor-quadrature.md +78 -0
  674. package/docs/api/optics-sensor-environment-query.md +58 -0
  675. package/docs/api/optics-sensor-psf-quadrature.md +81 -0
  676. package/docs/api/optics-stray-light.md +109 -0
  677. package/docs/api/optics-thin-lens.md +53 -0
  678. package/docs/api/output-capture-corrected-sdr.md +71 -0
  679. package/docs/api/output-capture-geometry.md +500 -0
  680. package/docs/api/output-capture-sdr.md +69 -0
  681. package/docs/api/output-crop.md +47 -0
  682. package/docs/api/output-geometric-transforms.md +199 -0
  683. package/docs/api/output-lens-corrections.md +162 -0
  684. package/docs/api/output-sdr-rendering.md +122 -0
  685. package/docs/api/output-subject-framing-crop.md +59 -0
  686. package/docs/api/schema-camera.md +84 -0
  687. package/docs/api/schema-illumination-spectral.md +77 -0
  688. package/docs/api/schema-illumination-temporal.md +289 -0
  689. package/docs/api/schema-illumination.md +246 -0
  690. package/docs/api/schema-scene-radiance-temporal.md +215 -0
  691. package/docs/api/schema-scene-radiance.md +415 -0
  692. package/docs/api/schema-scene.md +105 -0
  693. package/docs/api/schema-validation.md +25 -0
  694. package/docs/api/sensor-accumulated-charge.md +273 -0
  695. package/docs/api/sensor-architecture.md +155 -0
  696. package/docs/api/sensor-camera-saturation-capacity.md +215 -0
  697. package/docs/api/sensor-capture-color-sampling-binding.md +323 -0
  698. package/docs/api/sensor-capture-mode-timing.md +123 -0
  699. package/docs/api/sensor-capture-mode.md +321 -0
  700. package/docs/api/sensor-color-sampling.md +228 -0
  701. package/docs/api/sensor-constant-rate-temporal-integration.md +152 -0
  702. package/docs/api/sensor-dark-current.md +227 -0
  703. package/docs/api/sensor-environment-photo-signal.md +77 -0
  704. package/docs/api/sensor-eqe-electron-rate.md +166 -0
  705. package/docs/api/sensor-eqe-local-exposure.md +68 -0
  706. package/docs/api/sensor-eqe-temporal-exposure.md +73 -0
  707. package/docs/api/sensor-exposure-window.md +183 -0
  708. package/docs/api/sensor-iso-signal-chain.md +264 -0
  709. package/docs/api/sensor-local-exposure-binding.md +126 -0
  710. package/docs/api/sensor-optical-stack.md +211 -0
  711. package/docs/api/sensor-photon-energy.md +149 -0
  712. package/docs/api/sensor-physical-charge-capacity.md +196 -0
  713. package/docs/api/sensor-pixel-pitch.md +41 -0
  714. package/docs/api/sensor-radiometry-readiness.md +240 -0
  715. package/docs/api/sensor-raw-readout.md +499 -0
  716. package/docs/api/sensor-raw-reconstruction.md +260 -0
  717. package/docs/api/sensor-readout-exposure-linkage.md +172 -0
  718. package/docs/api/sensor-readout-timing.md +209 -0
  719. package/docs/api/sensor-response-application-compatibility.md +256 -0
  720. package/docs/api/sensor-response-operating-range.md +293 -0
  721. package/docs/api/sensor-responsivity-photocurrent.md +245 -0
  722. package/docs/api/sensor-sampling-aperture.md +221 -0
  723. package/docs/api/sensor-scene-eqe-temporal-exposure.md +56 -0
  724. package/docs/api/sensor-sensor-geometry.md +143 -0
  725. package/docs/api/sensor-signal-noise.md +75 -0
  726. package/docs/api/sensor-spatial-sample-reduction.md +186 -0
  727. package/docs/api/sensor-spatial-sampling-quadrature.md +188 -0
  728. package/docs/api/sensor-spatio-spectral-reduction.md +217 -0
  729. package/docs/api/sensor-spectral-coverage.md +33 -0
  730. package/docs/api/sensor-spectral-quadrature.md +183 -0
  731. package/docs/api/sensor-spectral-response.md +291 -0
  732. package/docs/api/sensor-temporal-photo-signal.md +62 -0
  733. package/docs/api/simulation-poc-simulation.md +364 -0
  734. package/docs/api/stabilization-camera-shake.md +71 -0
  735. package/docs/api/stabilization-system.md +442 -0
  736. package/docs/benchmarks/2026-10-01-main-baseline.json +694 -0
  737. package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +2190 -0
  738. package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +2423 -0
  739. package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +210 -0
  740. package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +187 -0
  741. package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +756 -0
  742. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +711 -0
  743. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +711 -0
  744. package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +885 -0
  745. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +868 -0
  746. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +868 -0
  747. package/docs/examples/production-capture.mjs +34 -0
  748. package/docs/examples/production-request.json +4613 -0
  749. package/docs/examples/quick-start.mjs +12 -0
  750. package/docs/validation/documentation-fragments.json +212 -0
  751. package/docs/validation/release-audit-inventory.json +1306 -0
  752. package/docs/validation/tier-acceptance-report-v1.json +2538 -0
  753. package/package.json +18 -4
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Module boundary and integration notes.
3
+ * Binds one engine-produced sensor response-rate result to the local exposure window at the same
4
+ * color-sampling site. This first temporal binding supports only the explicit one-to-one
5
+ * native-effective-sample ↔ color-site relationship. A multi-site block binding proves contributor
6
+ * membership but does not prove each color site's sub-sample timing coordinate, so spatially varying
7
+ * shutter timing fails closed rather than inventing fractional positions. The result establishes
8
+ * timing only. It deliberately does not establish that the optical/electrical rate is stationary
9
+ * through the local exposure window, so rate×duration integration remains unauthorized.
10
+ * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
11
+ * limits.
12
+ */
13
+ import { type CalculationResult } from "../core/calculation-result.js";
14
+ import type { EvidenceProvenance } from "../core/evidence-provenance.js";
15
+ import { type NativeEffectiveRasterColorSamplingBindingProfile } from "./capture-color-sampling-binding.js";
16
+ import { type SensorColorSamplingProfile } from "./color-sampling.js";
17
+ import type { SensorEqeElectronRate } from "./eqe-electron-rate.js";
18
+ import { type CalculateCaptureExposureWindowsInput, type CaptureExposureWindowSample } from "./exposure-window.js";
19
+ import type { SensorResponsivityPhotocurrent } from "./responsivity-photocurrent.js";
20
+ export type SensorInstantaneousRateResult = SensorEqeElectronRate | SensorResponsivityPhotocurrent;
21
+ export interface BindSensorRateToLocalExposureInput {
22
+ rate: SensorInstantaneousRateResult;
23
+ colorSamplingProfile: SensorColorSamplingProfile;
24
+ bindingProfile: NativeEffectiveRasterColorSamplingBindingProfile;
25
+ /**
26
+ * One capture/exposure event. samplePointsNative is owned by this binding
27
+ * function and therefore intentionally excluded.
28
+ */
29
+ exposureWindowInput: Omit<CalculateCaptureExposureWindowsInput, "samplePointsNative">;
30
+ }
31
+ export interface SensorRateLocalExposureBinding {
32
+ rateDomain: "eqe-electron-rate" | "responsivity-photocurrent";
33
+ rateIdentity: {
34
+ responseProfileId: string;
35
+ responseApplicationProfileId: string;
36
+ operatingRangeProfileId: string;
37
+ electricalApplicabilityProfileId?: string;
38
+ };
39
+ colorSamplingProfileId: string;
40
+ channelId: string;
41
+ site: {
42
+ x: number;
43
+ y: number;
44
+ };
45
+ bindingId: string;
46
+ bindingRelationship: "one-native-effective-sample-to-one-color-site";
47
+ timingCoordinateRule: "one-to-one-color-site-center-equals-native-effective-sample-center";
48
+ nativeRasterPoint: {
49
+ x: number;
50
+ y: number;
51
+ };
52
+ shutterMechanism: CalculateCaptureExposureWindowsInput["shutterMechanism"];
53
+ timeReference: "first-opening-boundary-phase";
54
+ localExposureWindow: CaptureExposureWindowSample;
55
+ localExposureDurationSeconds: number;
56
+ exposureEventMeaning: "single-capture-local-exposure-window";
57
+ nativeImageRasterBindingEstablished: true;
58
+ channelAtSiteValidated: true;
59
+ physicalPhotodiodeTimingRegistrationEstablished: false;
60
+ multiFrameSequenceBindingEstablished: false;
61
+ timeStationarityEstablished: false;
62
+ constantRateTemporalIntegrationAuthorized: false;
63
+ temporalIntegrationApplied: false;
64
+ componentEvidence: {
65
+ binding: readonly EvidenceProvenance[];
66
+ colorSamplingProfile: readonly EvidenceProvenance[];
67
+ nominalExposureDuration: readonly EvidenceProvenance[];
68
+ openingBoundary: readonly EvidenceProvenance[];
69
+ closingBoundary: readonly EvidenceProvenance[];
70
+ };
71
+ }
72
+ /**
73
+ * Binds one engine-produced sensor response-rate result to the local exposure
74
+ * window at the same color-sampling site.
75
+ *
76
+ * This first temporal binding supports only the explicit one-to-one
77
+ * native-effective-sample ↔ color-site relationship. A multi-site block
78
+ * binding proves contributor membership but does not prove each color site's
79
+ * sub-sample timing coordinate, so spatially varying shutter timing fails
80
+ * closed rather than inventing fractional positions.
81
+ *
82
+ * The result establishes timing only. It deliberately does not establish that
83
+ * the optical/electrical rate is stationary through the local exposure window,
84
+ * so rate×duration integration remains unauthorized.
85
+ */
86
+ export declare function bindSensorRateToLocalExposure(input: BindSensorRateToLocalExposureInput): CalculationResult<SensorRateLocalExposureBinding>;
87
+ //# sourceMappingURL=local-exposure-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-exposure-binding.d.ts","sourceRoot":"","sources":["../../src/sensor/local-exposure-binding.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACV,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAEL,KAAK,gDAAgD,EACtD,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,KAAK,oCAAoC,EACzC,KAAK,2BAA2B,EACjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,8BAA8B,EAC/B,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,6BAA6B,GACrC,qBAAqB,GACrB,8BAA8B,CAAC;AAEnC,MAAM,WAAW,kCAAkC;IACjD,IAAI,EACF,6BAA6B,CAAC;IAChC,oBAAoB,EAClB,0BAA0B,CAAC;IAC7B,cAAc,EACZ,gDAAgD,CAAC;IACnD;;;OAGG;IACH,mBAAmB,EACjB,IAAI,CACF,oCAAoC,EACpC,oBAAoB,CACrB,CAAC;CACL;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EACN,mBAAmB,GACnB,2BAA2B,CAAC;IAChC,YAAY,EAAE;QACZ,iBAAiB,EAAE,MAAM,CAAC;QAC1B,4BAA4B,EAAE,MAAM,CAAC;QACrC,uBAAuB,EAAE,MAAM,CAAC;QAChC,gCAAgC,CAAC,EAAE,MAAM,CAAC;KAC3C,CAAC;IACF,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EACjB,+CAA+C,CAAC;IAClD,oBAAoB,EAClB,oEAAoE,CAAC;IACvE,iBAAiB,EAAE;QACjB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IACF,gBAAgB,EACd,oCAAoC,CAAC,kBAAkB,CAAC,CAAC;IAC3D,aAAa,EACX,8BAA8B,CAAC;IACjC,mBAAmB,EACjB,2BAA2B,CAAC;IAC9B,4BAA4B,EAC1B,MAAM,CAAC;IACT,oBAAoB,EAClB,sCAAsC,CAAC;IACzC,mCAAmC,EAAE,IAAI,CAAC;IAC1C,sBAAsB,EAAE,IAAI,CAAC;IAC7B,+CAA+C,EAC7C,KAAK,CAAC;IACR,oCAAoC,EAClC,KAAK,CAAC;IACR,2BAA2B,EAAE,KAAK,CAAC;IACnC,yCAAyC,EACvC,KAAK,CAAC;IACR,0BAA0B,EAAE,KAAK,CAAC;IAClC,iBAAiB,EAAE;QACjB,OAAO,EACL,SAAS,kBAAkB,EAAE,CAAC;QAChC,oBAAoB,EAClB,SAAS,kBAAkB,EAAE,CAAC;QAChC,uBAAuB,EACrB,SAAS,kBAAkB,EAAE,CAAC;QAChC,eAAe,EACb,SAAS,kBAAkB,EAAE,CAAC;QAChC,eAAe,EACb,SAAS,kBAAkB,EAAE,CAAC;KACjC,CAAC;CACH;AAyGD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EACH,kCAAkC,GACnC,iBAAiB,CAAC,8BAA8B,CAAC,CAmMnD"}
@@ -0,0 +1,214 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * Module boundary and integration notes.
4
+ * Binds one engine-produced sensor response-rate result to the local exposure window at the same
5
+ * color-sampling site. This first temporal binding supports only the explicit one-to-one
6
+ * native-effective-sample ↔ color-site relationship. A multi-site block binding proves contributor
7
+ * membership but does not prove each color site's sub-sample timing coordinate, so spatially varying
8
+ * shutter timing fails closed rather than inventing fractional positions. The result establishes
9
+ * timing only. It deliberately does not establish that the optical/electrical rate is stationary
10
+ * through the local exposure window, so rate×duration integration remains unauthorized.
11
+ * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
12
+ * limits.
13
+ */
14
+ import { approximationResult } from "../core/calculation-result.js";
15
+ import { InvalidScientificInputError } from "../core/validation.js";
16
+ import { resolveNativeEffectiveRasterColorSamplingBinding } from "./capture-color-sampling-binding.js";
17
+ import { resolveColorSamplingSite } from "./color-sampling.js";
18
+ import { calculateCaptureExposureWindows } from "./exposure-window.js";
19
+ function requireSite(rate) {
20
+ if (rate.site === undefined ||
21
+ typeof rate.site !== "object" ||
22
+ rate.site === null ||
23
+ !Number.isSafeInteger(rate.site.x) ||
24
+ rate.site.x < 0 ||
25
+ !Number.isSafeInteger(rate.site.y) ||
26
+ rate.site.y < 0) {
27
+ throw new InvalidScientificInputError("rate.site must be present as a non-negative safe-integer color-sampling-site index.");
28
+ }
29
+ return {
30
+ x: rate.site.x,
31
+ y: rate.site.y
32
+ };
33
+ }
34
+ function validateRateBoundary(rate) {
35
+ if (rate.sourceResponseKind ===
36
+ "effective-spectral-responsivity") {
37
+ const current = rate;
38
+ if (current.currentCalculated !==
39
+ true ||
40
+ current.chargeCalculated !==
41
+ false ||
42
+ current.temporalIntegrationApplied !==
43
+ false ||
44
+ current.exposureDurationApplied !==
45
+ false ||
46
+ current.detectorBandwidthModeled !==
47
+ false ||
48
+ current.temporalResponseModel !==
49
+ "quasi-static-steady-state-only") {
50
+ throw new InvalidScientificInputError("A/W rate must remain a quasi-static pre-temporal photocurrent result.");
51
+ }
52
+ return "responsivity-photocurrent";
53
+ }
54
+ const eqe = rate;
55
+ if (eqe.electronRateCalculated !== true ||
56
+ eqe.photonRateCalculated !== true ||
57
+ eqe.electronCountCalculated !==
58
+ false ||
59
+ eqe.photonCountCalculated !==
60
+ false ||
61
+ eqe.temporalIntegrationApplied !==
62
+ false ||
63
+ eqe.exposureDurationApplied !==
64
+ false) {
65
+ throw new InvalidScientificInputError("EQE rate must remain a pre-temporal photon/electron-rate result.");
66
+ }
67
+ return "eqe-electron-rate";
68
+ }
69
+ function boundaryEvidence(boundary) {
70
+ if (boundary.schedule.kind ===
71
+ "simultaneous") {
72
+ return [];
73
+ }
74
+ return [
75
+ ...boundary.schedule.directionNative
76
+ .evidence,
77
+ ...boundary.schedule
78
+ .traversalDurationSeconds.evidence
79
+ ];
80
+ }
81
+ /**
82
+ * Binds one engine-produced sensor response-rate result to the local exposure
83
+ * window at the same color-sampling site.
84
+ *
85
+ * This first temporal binding supports only the explicit one-to-one
86
+ * native-effective-sample ↔ color-site relationship. A multi-site block
87
+ * binding proves contributor membership but does not prove each color site's
88
+ * sub-sample timing coordinate, so spatially varying shutter timing fails
89
+ * closed rather than inventing fractional positions.
90
+ *
91
+ * The result establishes timing only. It deliberately does not establish that
92
+ * the optical/electrical rate is stationary through the local exposure window,
93
+ * so rate×duration integration remains unauthorized.
94
+ */
95
+ export function bindSensorRateToLocalExposure(input) {
96
+ const rateDomain = validateRateBoundary(input.rate);
97
+ const site = requireSite(input.rate);
98
+ const binding = resolveNativeEffectiveRasterColorSamplingBinding({
99
+ nativeRaster: input.exposureWindowInput
100
+ .nativeRaster,
101
+ colorSamplingProfile: input.colorSamplingProfile,
102
+ bindingProfile: input.bindingProfile
103
+ });
104
+ if (binding.colorSamplingProfileId !==
105
+ input.rate
106
+ .colorSamplingProfileId) {
107
+ throw new InvalidScientificInputError("Color-sampling binding must reference the same colorSamplingProfileId as the rate result.");
108
+ }
109
+ if (binding.relationship
110
+ .sitesPerNativeSampleX !== 1 ||
111
+ binding.relationship
112
+ .sitesPerNativeSampleY !== 1) {
113
+ throw new InvalidScientificInputError("Local exposure timing currently requires a one-to-one color-site/native-effective-sample binding; multi-site blocks lack explicit sub-sample timing registration.");
114
+ }
115
+ if (site.x >=
116
+ binding.colorSamplingSiteGrid
117
+ .widthSites ||
118
+ site.y >=
119
+ binding.colorSamplingSiteGrid
120
+ .heightSites) {
121
+ throw new InvalidScientificInputError("rate.site is outside the color-sampling site grid established by the binding.");
122
+ }
123
+ const resolvedSite = resolveColorSamplingSite({
124
+ profile: input.colorSamplingProfile,
125
+ site
126
+ });
127
+ if (resolvedSite.mapping.channelId !==
128
+ input.rate.channelId) {
129
+ throw new InvalidScientificInputError("The rate channelId does not match the color-sampling channel assigned to rate.site.");
130
+ }
131
+ const nativeRasterPoint = {
132
+ x: site.x + 0.5,
133
+ y: site.y + 0.5
134
+ };
135
+ const windows = calculateCaptureExposureWindows({
136
+ ...input.exposureWindowInput,
137
+ samplePointsNative: [
138
+ nativeRasterPoint
139
+ ]
140
+ }).value;
141
+ const localExposureWindow = windows.samples[0];
142
+ if (localExposureWindow === undefined ||
143
+ localExposureWindow
144
+ .pointNative.x !==
145
+ nativeRasterPoint.x ||
146
+ localExposureWindow
147
+ .pointNative.y !==
148
+ nativeRasterPoint.y ||
149
+ !Number.isFinite(localExposureWindow
150
+ .localExposureDurationSeconds) ||
151
+ localExposureWindow
152
+ .localExposureDurationSeconds <= 0) {
153
+ throw new InvalidScientificInputError("Exposure-window resolution did not return a valid local sample for the bound sensor site.");
154
+ }
155
+ return approximationResult({
156
+ rateDomain,
157
+ rateIdentity: {
158
+ responseProfileId: input.rate.responseProfileId,
159
+ responseApplicationProfileId: input.rate
160
+ .responseApplicationProfileId,
161
+ operatingRangeProfileId: input.rate
162
+ .operatingRangeProfileId,
163
+ ...(rateDomain ===
164
+ "responsivity-photocurrent"
165
+ ? {
166
+ electricalApplicabilityProfileId: input.rate
167
+ .electricalApplicabilityProfileId
168
+ }
169
+ : {})
170
+ },
171
+ colorSamplingProfileId: input.rate
172
+ .colorSamplingProfileId,
173
+ channelId: input.rate.channelId,
174
+ site,
175
+ bindingId: binding.bindingId,
176
+ bindingRelationship: "one-native-effective-sample-to-one-color-site",
177
+ timingCoordinateRule: "one-to-one-color-site-center-equals-native-effective-sample-center",
178
+ nativeRasterPoint,
179
+ shutterMechanism: windows.shutterMechanism,
180
+ timeReference: windows.timeReference,
181
+ localExposureWindow,
182
+ localExposureDurationSeconds: localExposureWindow
183
+ .localExposureDurationSeconds,
184
+ exposureEventMeaning: "single-capture-local-exposure-window",
185
+ nativeImageRasterBindingEstablished: true,
186
+ channelAtSiteValidated: true,
187
+ physicalPhotodiodeTimingRegistrationEstablished: false,
188
+ multiFrameSequenceBindingEstablished: false,
189
+ timeStationarityEstablished: false,
190
+ constantRateTemporalIntegrationAuthorized: false,
191
+ temporalIntegrationApplied: false,
192
+ componentEvidence: {
193
+ binding: binding.componentEvidence
194
+ .binding,
195
+ colorSamplingProfile: binding.componentEvidence
196
+ .colorSamplingProfile,
197
+ nominalExposureDuration: windows
198
+ .nominalExposureDurationSeconds
199
+ .evidence,
200
+ openingBoundary: boundaryEvidence(windows.opening),
201
+ closingBoundary: boundaryEvidence(windows.closing)
202
+ }
203
+ }, "sensor-rate-local-exposure-binding", "1.0.0", [
204
+ "The rate's abstract color-sampling site is mapped to the center of the same-index native effective sample only because an explicit one-to-one shared-top-left binding is present.",
205
+ "Multi-site-per-native-sample relationships are blocked because contributor membership does not establish individual color-site timing coordinates.",
206
+ "The mapped timing coordinate is a native-effective-raster timing coordinate; it does not establish a physical photodiode timing registration.",
207
+ "The exposure schedule is recomputed from the evidence-backed opening/closing timing declarations at the bound point rather than accepting an arbitrary precomputed local duration.",
208
+ "The color-sampling channel at the exact site must match the response-rate channel.",
209
+ "The result represents one local exposure event only; multi-frame/pixel-shift sequence timing and combination remain outside this contract.",
210
+ "This binding does not establish that the optical/electron/current rate is constant through the exposure. Motion, flicker, flash, time-varying illumination/vignetting and detector transients require a time-dependent integrand.",
211
+ "Temporal integration, accumulated charge, saturation, noise, ADC/RAW conversion and reconstruction are not performed."
212
+ ]);
213
+ }
214
+ //# sourceMappingURL=local-exposure-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-exposure-binding.js","sourceRoot":"","sources":["../../src/sensor/local-exposure-binding.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,mBAAmB,EAEpB,MAAM,+BAA+B,CAAC;AAIvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EACL,gDAAgD,EAEjD,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,wBAAwB,EAEzB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EACL,+BAA+B,EAGhC,MAAM,sBAAsB,CAAC;AAsF9B,SAAS,WAAW,CAClB,IAC+B;IAK/B,IACE,IAAI,CAAC,IAAI,KAAK,SAAS;QACvB,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC7B,IAAI,CAAC,IAAI,KAAK,IAAI;QAClB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;QACf,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EACf,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,qFAAqF,CACtF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACf,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAC+B;IAG/B,IACE,IAAI,CAAC,kBAAkB;QACrB,iCAAiC,EACnC,CAAC;QACD,MAAM,OAAO,GACX,IAAsC,CAAC;QAEzC,IACE,OAAO,CAAC,iBAAiB;YACvB,IAAI;YACN,OAAO,CAAC,gBAAgB;gBACtB,KAAK;YACP,OAAO,CAAC,0BAA0B;gBAChC,KAAK;YACP,OAAO,CAAC,uBAAuB;gBAC7B,KAAK;YACP,OAAO,CAAC,wBAAwB;gBAC9B,KAAK;YACP,OAAO,CAAC,qBAAqB;gBAC3B,gCAAgC,EAClC,CAAC;YACD,MAAM,IAAI,2BAA2B,CACnC,uEAAuE,CACxE,CAAC;QACJ,CAAC;QACD,OAAO,2BAA2B,CAAC;IACrC,CAAC;IAED,MAAM,GAAG,GACP,IAA6B,CAAC;IAChC,IACE,GAAG,CAAC,sBAAsB,KAAK,IAAI;QACnC,GAAG,CAAC,oBAAoB,KAAK,IAAI;QACjC,GAAG,CAAC,uBAAuB;YACzB,KAAK;QACP,GAAG,CAAC,qBAAqB;YACvB,KAAK;QACP,GAAG,CAAC,0BAA0B;YAC5B,KAAK;QACP,GAAG,CAAC,uBAAuB;YACzB,KAAK,EACP,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,kEAAkE,CACnE,CAAC;IACJ,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,SAAS,gBAAgB,CACvB,QAGuB;IAEvB,IACE,QAAQ,CAAC,QAAQ,CAAC,IAAI;QACpB,cAAc,EAChB,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL,GAAG,QAAQ,CAAC,QAAQ,CAAC,eAAe;aACjC,QAAQ;QACX,GAAG,QAAQ,CAAC,QAAQ;aACjB,wBAAwB,CAAC,QAAQ;KACrC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,6BAA6B,CAC3C,KACoC;IAEpC,MAAM,UAAU,GACd,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErC,MAAM,OAAO,GACX,gDAAgD,CAAC;QAC/C,YAAY,EACV,KAAK,CAAC,mBAAmB;aACtB,YAAY;QACjB,oBAAoB,EAClB,KAAK,CAAC,oBAAoB;QAC5B,cAAc,EACZ,KAAK,CAAC,cAAc;KACvB,CAAC,CAAC;IAEL,IACE,OAAO,CAAC,sBAAsB;QAC5B,KAAK,CAAC,IAAI;aACP,sBAAsB,EAC3B,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,2FAA2F,CAC5F,CAAC;IACJ,CAAC;IAED,IACE,OAAO,CAAC,YAAY;SACjB,qBAAqB,KAAK,CAAC;QAC9B,OAAO,CAAC,YAAY;aACjB,qBAAqB,KAAK,CAAC,EAC9B,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,mKAAmK,CACpK,CAAC;IACJ,CAAC;IAED,IACE,IAAI,CAAC,CAAC;QACJ,OAAO,CAAC,qBAAqB;aAC1B,UAAU;QACf,IAAI,CAAC,CAAC;YACJ,OAAO,CAAC,qBAAqB;iBAC1B,WAAW,EAChB,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAChB,wBAAwB,CAAC;QACvB,OAAO,EACL,KAAK,CAAC,oBAAoB;QAC5B,IAAI;KACL,CAAC,CAAC;IACL,IACE,YAAY,CAAC,OAAO,CAAC,SAAS;QAC5B,KAAK,CAAC,IAAI,CAAC,SAAS,EACtB,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,qFAAqF,CACtF,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG;QACxB,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG;QACf,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG;KAChB,CAAC;IAEF,MAAM,OAAO,GACX,+BAA+B,CAAC;QAC9B,GAAG,KAAK,CAAC,mBAAmB;QAC5B,kBAAkB,EAAE;YAClB,iBAAiB;SAClB;KACF,CAAC,CAAC,KAAK,CAAC;IACX,MAAM,mBAAmB,GACvB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAErB,IACE,mBAAmB,KAAK,SAAS;QACjC,mBAAmB;aAChB,WAAW,CAAC,CAAC;YACd,iBAAiB,CAAC,CAAC;QACrB,mBAAmB;aAChB,WAAW,CAAC,CAAC;YACd,iBAAiB,CAAC,CAAC;QACrB,CAAC,MAAM,CAAC,QAAQ,CACd,mBAAmB;aAChB,4BAA4B,CAChC;QACD,mBAAmB;aAChB,4BAA4B,IAAI,CAAC,EACpC,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,2FAA2F,CAC5F,CAAC;IACJ,CAAC;IAED,OAAO,mBAAmB,CACxB;QACE,UAAU;QACV,YAAY,EAAE;YACZ,iBAAiB,EACf,KAAK,CAAC,IAAI,CAAC,iBAAiB;YAC9B,4BAA4B,EAC1B,KAAK,CAAC,IAAI;iBACP,4BAA4B;YACjC,uBAAuB,EACrB,KAAK,CAAC,IAAI;iBACP,uBAAuB;YAC5B,GAAG,CAAC,UAAU;gBACZ,2BAA2B;gBAC3B,CAAC,CAAC;oBACE,gCAAgC,EAE5B,KAAK,CAAC,IAEP;yBACE,gCAAgC;iBACtC;gBACH,CAAC,CAAC,EAAE,CAAC;SACR;QACD,sBAAsB,EACpB,KAAK,CAAC,IAAI;aACP,sBAAsB;QAC3B,SAAS,EACP,KAAK,CAAC,IAAI,CAAC,SAAS;QACtB,IAAI;QACJ,SAAS,EACP,OAAO,CAAC,SAAS;QACnB,mBAAmB,EACjB,+CAA+C;QACjD,oBAAoB,EAClB,oEAAoE;QACtE,iBAAiB;QACjB,gBAAgB,EACd,OAAO,CAAC,gBAAgB;QAC1B,aAAa,EACX,OAAO,CAAC,aAAa;QACvB,mBAAmB;QACnB,4BAA4B,EAC1B,mBAAmB;aAChB,4BAA4B;QACjC,oBAAoB,EAClB,sCAAsC;QACxC,mCAAmC,EACjC,IAAI;QACN,sBAAsB,EACpB,IAAI;QACN,+CAA+C,EAC7C,KAAK;QACP,oCAAoC,EAClC,KAAK;QACP,2BAA2B,EACzB,KAAK;QACP,yCAAyC,EACvC,KAAK;QACP,0BAA0B,EACxB,KAAK;QACP,iBAAiB,EAAE;YACjB,OAAO,EACL,OAAO,CAAC,iBAAiB;iBACtB,OAAO;YACZ,oBAAoB,EAClB,OAAO,CAAC,iBAAiB;iBACtB,oBAAoB;YACzB,uBAAuB,EACrB,OAAO;iBACJ,8BAA8B;iBAC9B,QAAQ;YACb,eAAe,EACb,gBAAgB,CACd,OAAO,CAAC,OAAO,CAChB;YACH,eAAe,EACb,gBAAgB,CACd,OAAO,CAAC,OAAO,CAChB;SACJ;KACF,EACD,oCAAoC,EACpC,OAAO,EACP;QACE,mLAAmL;QACnL,oJAAoJ;QACpJ,+IAA+I;QAC/I,oLAAoL;QACpL,oFAAoF;QACpF,4IAA4I;QAC5I,mOAAmO;QACnO,uHAAuH;KACxH,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,132 @@
1
+ import { type EvidenceProvenance } from "../core/evidence-provenance.js";
2
+ export type SensorOpticalStackComponentRole = "cover-glass" | "infrared-cut" | "ultraviolet-cut" | "anti-reflection" | "birefringent-low-pass" | "wave-plate" | "other-optical-filter";
3
+ export interface SensorOpticalStackComponent {
4
+ componentId: string;
5
+ /**
6
+ * Roles may be combined because one physical element can provide multiple
7
+ * optical/filter functions.
8
+ */
9
+ roles: readonly SensorOpticalStackComponentRole[];
10
+ evidence: readonly EvidenceProvenance[];
11
+ }
12
+ export interface SensorMicrolensDeclaration {
13
+ presence: "present" | "absent";
14
+ evidence: readonly EvidenceProvenance[];
15
+ /**
16
+ * Presence alone does not establish an angular, spectral, fill-factor, or
17
+ * collection-efficiency model.
18
+ */
19
+ opticalEffectModel: "unresolved";
20
+ }
21
+ export interface AntiAliasingPointSplitComponent {
22
+ /**
23
+ * Native sensor physical offset from the nominal landing point.
24
+ * +X right, +Y down. Units: micrometres.
25
+ */
26
+ offsetMicrometers: {
27
+ x: number;
28
+ y: number;
29
+ };
30
+ /**
31
+ * Dimensionless normalized spatial weight. Point-splitting kernels describe
32
+ * spatial redistribution only; total stack throughput is outside this field.
33
+ */
34
+ normalizedWeight: number;
35
+ }
36
+ export type SensorEffectiveAntiAliasingSpatialResponse = {
37
+ /**
38
+ * Documented absence/cancellation of intentional anti-aliasing spatial
39
+ * splitting. This does not mean the whole sensor stack is optically
40
+ * identity.
41
+ */
42
+ kind: "absent";
43
+ evidence: readonly EvidenceProvenance[];
44
+ } | {
45
+ /**
46
+ * An effective anti-aliasing response is known to exist, but its spatial
47
+ * response is not defensibly specified.
48
+ */
49
+ kind: "present-unresolved";
50
+ evidence: readonly EvidenceProvenance[];
51
+ } | {
52
+ /**
53
+ * Generic normalized point-splitting approximation in native sensor
54
+ * physical coordinates.
55
+ */
56
+ kind: "normalized-point-splitting-kernel";
57
+ evidence: readonly EvidenceProvenance[];
58
+ coordinateSystem: "native-sensor-physical";
59
+ scope: "field-wavelength-polarization-invariant-approximation";
60
+ components: readonly AntiAliasingPointSplitComponent[];
61
+ };
62
+ export interface SensorOpticalStackProfile {
63
+ schemaVersion: "0.1.0";
64
+ profileId: string;
65
+ evidence: readonly EvidenceProvenance[];
66
+ /**
67
+ * Ordered from incident-light side toward the sensor.
68
+ *
69
+ * These components are descriptive metadata only. Their presence does not
70
+ * create transmission, focus-shift, aberration, or spectral effects.
71
+ */
72
+ orderedComponents?: readonly SensorOpticalStackComponent[];
73
+ /**
74
+ * Omitted means unknown/unasserted.
75
+ *
76
+ * This is intentionally separate from physical component presence so a
77
+ * stack can contain low-pass-related hardware while its net effective
78
+ * anti-aliasing response is absent/cancelled.
79
+ */
80
+ effectiveAntiAliasingSpatialResponse?: SensorEffectiveAntiAliasingSpatialResponse;
81
+ /**
82
+ * Omitted means unknown/unasserted.
83
+ */
84
+ microlens?: SensorMicrolensDeclaration;
85
+ }
86
+ export interface ResolvedAntiAliasingSpatialKernel {
87
+ profileId: string;
88
+ effectiveResponse: "absent" | "normalized-point-splitting-kernel";
89
+ coordinateSystem: "native-sensor-physical";
90
+ components: readonly AntiAliasingPointSplitComponent[];
91
+ normalizedWeightSum: number;
92
+ throughputIncluded: false;
93
+ spectralTransmissionIncluded: false;
94
+ fieldDependenceIncluded: false;
95
+ wavelengthDependenceIncluded: false;
96
+ polarizationDependenceIncluded: false;
97
+ microlensResponseIncluded: false;
98
+ coverFilterStackEffectsIncluded: false;
99
+ wholeSensorOpticalStackResponse: false;
100
+ provenance: {
101
+ profile: readonly EvidenceProvenance[];
102
+ antiAliasingResponse: readonly EvidenceProvenance[];
103
+ };
104
+ }
105
+ /**
106
+ * Parses descriptive sensor optical-stack metadata plus an optional explicitly
107
+ * declared effective anti-aliasing spatial response.
108
+ *
109
+ * Unknown facts are omitted instead of inferred. Physical component presence
110
+ * is intentionally separate from effective anti-aliasing response so the
111
+ * schema can represent cancellation/neutralization designs without claiming
112
+ * the physical assembly is absent.
113
+ *
114
+ * Cover/filter-stack and microlens presence do not create optical effects in
115
+ * schema 0.1.0. Thickness, refractive index, spectral transmission, angular
116
+ * acceptance, focus shift and microlens collection behavior require later
117
+ * explicit models/calibration.
118
+ */
119
+ export declare function parseSensorOpticalStackProfile(value: unknown): SensorOpticalStackProfile;
120
+ /**
121
+ * Resolves only the effective anti-aliasing spatial kernel.
122
+ *
123
+ * This is not a whole optical-stack PSF. Cover/filter transmission, refraction,
124
+ * microlens behavior, field/wavelength/polarization dependence, and total
125
+ * throughput remain excluded.
126
+ *
127
+ * A documented absent effective anti-aliasing response resolves to an identity
128
+ * component at zero offset. An unknown response (field omitted) or a
129
+ * present-but-unresolved response fails closed.
130
+ */
131
+ export declare function resolveAntiAliasingSpatialKernel(profileInput: SensorOpticalStackProfile): ResolvedAntiAliasingSpatialKernel;
132
+ //# sourceMappingURL=optical-stack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optical-stack.d.ts","sourceRoot":"","sources":["../../src/sensor/optical-stack.ts"],"names":[],"mappings":"AAqBA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,gCAAgC,CAAC;AAKxC,MAAM,MAAM,+BAA+B,GACvC,aAAa,GACb,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,uBAAuB,GACvB,YAAY,GACZ,sBAAsB,CAAC;AAE3B,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,KAAK,EAAE,SAAS,+BAA+B,EAAE,CAAC;IAClD,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACxC;;;OAGG;IACH,kBAAkB,EAAE,YAAY,CAAC;CAClC;AAED,MAAM,WAAW,+BAA+B;IAC9C;;;OAGG;IACH,iBAAiB,EAAE;QACjB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IACF;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,0CAA0C,GAClD;IACE;;;;OAIG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACzC,GACD;IACE;;;OAGG;IACH,IAAI,EAAE,oBAAoB,CAAC;IAC3B,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACzC,GACD;IACE;;;OAGG;IACH,IAAI,EAAE,mCAAmC,CAAC;IAC1C,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACxC,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,KAAK,EACH,uDAAuD,CAAC;IAC1D,UAAU,EAAE,SAAS,+BAA+B,EAAE,CAAC;CACxD,CAAC;AAEN,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACxC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAC3D;;;;;;OAMG;IACH,oCAAoC,CAAC,EAAE,0CAA0C,CAAC;IAClF;;OAEG;IACH,SAAS,CAAC,EAAE,0BAA0B,CAAC;CACxC;AAED,MAAM,WAAW,iCAAiC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EACb,QAAQ,GACR,mCAAmC,CAAC;IACxC,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,UAAU,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACvD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,KAAK,CAAC;IAC1B,4BAA4B,EAAE,KAAK,CAAC;IACpC,uBAAuB,EAAE,KAAK,CAAC;IAC/B,4BAA4B,EAAE,KAAK,CAAC;IACpC,8BAA8B,EAAE,KAAK,CAAC;IACtC,yBAAyB,EAAE,KAAK,CAAC;IACjC,+BAA+B,EAAE,KAAK,CAAC;IACvC,+BAA+B,EAAE,KAAK,CAAC;IACvC,UAAU,EAAE;QACV,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;QACvC,oBAAoB,EAAE,SAAS,kBAAkB,EAAE,CAAC;KACrD,CAAC;CACH;AA0TD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,OAAO,GACb,yBAAyB,CAuE3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,YAAY,EAAE,yBAAyB,GACtC,iCAAiC,CAyFnC"}