@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,371 @@
1
+ # optics/scene-to-sensor-irradiance.ts public contracts
2
+
3
+ Package **1.0.0**, root API **0.116.0**. [Navigation](../API_REFERENCE.md) · [Developer guide](../DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
4
+
5
+ ## calculateSceneRadianceToSensorIrradiance
6
+
7
+ Apply declared pupil acceptance and exactly one transmission/field-throughput path to spectral scene
8
+ radiance, returning pre-stack irradiance with conservative evidence.
9
+
10
+ The optical bridge maps outgoing W/m²/sr/nm radiance to pre-sensor-stack W/m²/nm irradiance.
11
+ Circular paraxial acceptance is pi/(4*Nworking²); finite-focus unity-pupil geometry uses N*(1+m).
12
+ Spectral transmission and effective working T-stop are alternative paths, and field throughput is
13
+ applied exactly once. Sensor response and PSF redistribution are downstream.
14
+
15
+ ```ts
16
+ export function calculateSceneRadianceToSensorIrradiance(
17
+ input:
18
+ CalculateSceneRadianceToSensorIrradianceInput
19
+ ): CalculationResult<
20
+ SceneToSensorIrradianceResult
21
+ >;
22
+ ```
23
+
24
+ This call is synchronous; any supplied provider must follow its explicit synchronous contract.
25
+
26
+ ## CalculateSceneRadianceToSensorIrradianceInput
27
+
28
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
29
+
30
+ ```ts
31
+ export interface CalculateSceneRadianceToSensorIrradianceInput {
32
+ sceneRadianceRequest:
33
+ SceneRadianceEvaluationRequest;
34
+ sceneRadianceResult:
35
+ SceneRadianceEvaluationResult;
36
+ profile:
37
+ SceneToSensorIrradianceProfile;
38
+ focalLengthMm: number;
39
+ nominalFNumber: number;
40
+ focus:
41
+ OpticalBridgeFocusContext;
42
+ imagePointMm: {
43
+ x: number;
44
+ y: number;
45
+ };
46
+ fieldThroughput:
47
+ OpticalBridgeFieldThroughput;
48
+ frontOfLensFilters?:
49
+ readonly FrontOfLensFilterProfile[];
50
+ }
51
+ ```
52
+
53
+ ## NumericRange
54
+
55
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
56
+
57
+ ```ts
58
+ export interface NumericRange {
59
+ minimum: number;
60
+ maximum: number;
61
+ }
62
+ ```
63
+
64
+ ## OpticalBridgeFieldThroughput
65
+
66
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
67
+
68
+ ```ts
69
+ export type OpticalBridgeFieldThroughput =
70
+ | {
71
+ kind: "unity";
72
+ }
73
+ | {
74
+ kind:
75
+ "illumination-vignetting-result";
76
+ result:
77
+ IlluminationVignetting;
78
+ };
79
+ ```
80
+
81
+ ## OpticalBridgeFocusApplicability
82
+
83
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
84
+
85
+ ```ts
86
+ export type OpticalBridgeFocusApplicability =
87
+ | {
88
+ kind: "any";
89
+ }
90
+ | {
91
+ kind: "finite-distance-range";
92
+ objectDistanceM: NumericRange;
93
+ };
94
+ ```
95
+
96
+ ## OpticalBridgeFocusContext
97
+
98
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
99
+
100
+ ```ts
101
+ export type OpticalBridgeFocusContext =
102
+ | {
103
+ kind: "infinity-focus";
104
+ }
105
+ | {
106
+ kind:
107
+ "ideal-symmetric-thin-lens";
108
+ objectDistanceM: number;
109
+ pupilMagnificationAssumption:
110
+ "unity";
111
+ }
112
+ | {
113
+ kind:
114
+ "supplied-working-f-number";
115
+ focus:
116
+ | {
117
+ kind: "infinity";
118
+ }
119
+ | {
120
+ kind: "finite";
121
+ objectDistanceM: number;
122
+ };
123
+ workingFNumber:
124
+ EvidenceBackedFact<number>;
125
+ basis: string;
126
+ };
127
+ ```
128
+
129
+ ## OpticalBridgeScientificStatus
130
+
131
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
132
+
133
+ ```ts
134
+ export type OpticalBridgeScientificStatus =
135
+ | "calibrated"
136
+ | "approximation";
137
+ ```
138
+
139
+ ## OpticalBridgeUncertainty
140
+
141
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
142
+
143
+ ```ts
144
+ export type OpticalBridgeUncertainty =
145
+ | {
146
+ kind: "relative";
147
+ fraction: number;
148
+ basis: string;
149
+ }
150
+ | {
151
+ kind: "not-quantified";
152
+ limitation: string;
153
+ };
154
+ ```
155
+
156
+ ## OpticalTransmissionModel
157
+
158
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
159
+
160
+ ```ts
161
+ export type OpticalTransmissionModel =
162
+ | {
163
+ kind: "spectral-transmission";
164
+ scientificStatus:
165
+ OpticalBridgeScientificStatus;
166
+ wavelengthBasis:
167
+ Exclude<
168
+ SpectralWavelengthBasis,
169
+ "unspecified"
170
+ >;
171
+ samples:
172
+ EvidenceBackedFact<
173
+ readonly SpectralTransmissionSample[]
174
+ >;
175
+ uncertainty:
176
+ OpticalBridgeUncertainty;
177
+ }
178
+ | {
179
+ kind:
180
+ "effective-working-t-stop-approximation";
181
+ scientificStatus: "approximation";
182
+ workingTStop:
183
+ EvidenceBackedFact<number>;
184
+ wavelengthBasis:
185
+ Exclude<
186
+ SpectralWavelengthBasis,
187
+ "unspecified"
188
+ >;
189
+ wavelengthRangeNanometers:
190
+ NumericRange;
191
+ uncertainty:
192
+ OpticalBridgeUncertainty;
193
+ limitation: string;
194
+ };
195
+ ```
196
+
197
+ ## parseSceneToSensorIrradianceProfile
198
+
199
+ Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
200
+ missing required fields and incompatible scientific data fail at this boundary.
201
+
202
+ The optical bridge maps outgoing W/m²/sr/nm radiance to pre-sensor-stack W/m²/nm irradiance.
203
+ Circular paraxial acceptance is pi/(4*Nworking²); finite-focus unity-pupil geometry uses N*(1+m).
204
+ Spectral transmission and effective working T-stop are alternative paths, and field throughput is
205
+ applied exactly once. Sensor response and PSF redistribution are downstream.
206
+
207
+ ```ts
208
+ export function parseSceneToSensorIrradianceProfile(
209
+ value: unknown
210
+ ): SceneToSensorIrradianceProfile;
211
+ ```
212
+
213
+ This call is synchronous; any supplied provider must follow its explicit synchronous contract.
214
+
215
+ ## SCENE_TO_SENSOR_IRRADIANCE_PROFILE_SCHEMA_VERSION
216
+
217
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
218
+
219
+ ```ts
220
+ SCENE_TO_SENSOR_IRRADIANCE_PROFILE_SCHEMA_VERSION =
221
+ "0.1.0" as const
222
+ ```
223
+
224
+ ## SceneToSensorIrradianceProfile
225
+
226
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
227
+
228
+ ```ts
229
+ export interface SceneToSensorIrradianceProfile {
230
+ schemaVersion:
231
+ typeof SCENE_TO_SENSOR_IRRADIANCE_PROFILE_SCHEMA_VERSION;
232
+ profileId: string;
233
+ profileVersion: string;
234
+ lensProfileId: string;
235
+ scientificStatus:
236
+ OpticalBridgeScientificStatus;
237
+ applicability: {
238
+ focalLengthMm: NumericRange;
239
+ nominalFNumber: NumericRange;
240
+ focus:
241
+ OpticalBridgeFocusApplicability;
242
+ };
243
+ transmission:
244
+ OpticalTransmissionModel;
245
+ distortionAreaMappingOwnership:
246
+ "not-applied-by-bridge";
247
+ psfRedistributionOwnership:
248
+ "downstream-normalized-energy-redistribution";
249
+ sensorOpticalStackIncluded: false;
250
+ strayLightIncluded: false;
251
+ polarizationModeled: false;
252
+ wavelengthChangingBehaviorModeled: false;
253
+ volumetricScatteringModeled: false;
254
+ evidence: readonly EvidenceProvenance[];
255
+ limitations: readonly string[];
256
+ }
257
+ ```
258
+
259
+ ## SceneToSensorIrradianceResult
260
+
261
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
262
+
263
+ ```ts
264
+ export interface SceneToSensorIrradianceResult {
265
+ schemaVersion:
266
+ typeof SCENE_TO_SENSOR_IRRADIANCE_PROFILE_SCHEMA_VERSION;
267
+ profileId: string;
268
+ profileVersion: string;
269
+ lensProfileId: string;
270
+ sampleId: string;
271
+ providerProfileId: string;
272
+ sceneId: string;
273
+ timeSecondsFromExposureStart: number;
274
+ wavelengthNanometers: number;
275
+ wavelengthBasis:
276
+ Exclude<
277
+ SpectralWavelengthBasis,
278
+ "unspecified"
279
+ >;
280
+ inputQuantity:
281
+ "outgoing-spectral-radiance";
282
+ inputUnit:
283
+ "W/m^2/sr/nm";
284
+ outputQuantity:
285
+ "sensor-plane-spectral-irradiance";
286
+ outputUnit:
287
+ "W/m^2/nm";
288
+ sceneSpectralRadianceWattsPerSquareMeterSteradianNanometer:
289
+ number;
290
+ focalLengthMm: number;
291
+ nominalFNumber: number;
292
+ workingFNumber: number;
293
+ focusModel:
294
+ OpticalBridgeFocusContext["kind"];
295
+ paraxialGeometricAcceptanceSolidAngleSteradians:
296
+ number;
297
+ transmissionPath:
298
+ OpticalTransmissionModel["kind"];
299
+ spectralTransmissionFactor:
300
+ number | null;
301
+ effectiveWorkingTStop:
302
+ number | null;
303
+ tStopEquivalentTransmissionFactor:
304
+ number | null;
305
+ frontOfLensFilterCount: number;
306
+ frontOfLensFilterTransmissionFactor:
307
+ number;
308
+ frontOfLensFilterAttenuationStops:
309
+ number;
310
+ frontOfLensFilterTransmissionAppliedExactlyOnce:
311
+ true;
312
+ frontOfLensFilterPolarizationModeled:
313
+ false;
314
+ fieldThroughputFactor: number;
315
+ effectiveAcceptanceAfterTransmissionAndFieldSteradians:
316
+ number;
317
+ sensorPlaneSpectralIrradianceWattsPerSquareMeterNanometer:
318
+ number;
319
+ scientificStatus: "approximation";
320
+ sceneRadianceScientificStatus:
321
+ SceneRadianceEvaluationResult["scientificStatus"];
322
+ opticalProfileScientificStatus:
323
+ OpticalBridgeScientificStatus;
324
+ sceneRadianceUncertainty:
325
+ SceneRadianceEvaluationResult["uncertainty"];
326
+ opticalUncertainty:
327
+ OpticalBridgeUncertainty;
328
+ radianceAmplificationApplied: false;
329
+ fieldThroughputAppliedExactlyOnce:
330
+ true;
331
+ universalCos4FalloffApplied: false;
332
+ distortionAreaCorrectionApplied: false;
333
+ psfRedistributionApplied: false;
334
+ sensorOpticalStackApplied: false;
335
+ cfaApplied: false;
336
+ quantumEfficiencyApplied: false;
337
+ spectralResponsivityApplied: false;
338
+ strayLightApplied: false;
339
+ polarizationModeled: false;
340
+ wavelengthChangingBehaviorModeled:
341
+ false;
342
+ volumetricScatteringModeled: false;
343
+ calibratedSensorPlaneIrradianceClaimAuthorized:
344
+ false;
345
+ componentEvidence: {
346
+ sceneRadiance:
347
+ readonly EvidenceProvenance[];
348
+ opticalProfile:
349
+ readonly EvidenceProvenance[];
350
+ transmission:
351
+ readonly EvidenceProvenance[];
352
+ workingFNumber:
353
+ readonly EvidenceProvenance[];
354
+ frontOfLensFilters:
355
+ readonly EvidenceProvenance[];
356
+ };
357
+ limitations:
358
+ readonly string[];
359
+ }
360
+ ```
361
+
362
+ ## SpectralTransmissionSample
363
+
364
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
365
+
366
+ ```ts
367
+ export interface SpectralTransmissionSample {
368
+ wavelengthNanometers: number;
369
+ linearTransmissionFactor: number;
370
+ }
371
+ ```
@@ -0,0 +1,78 @@
1
+ # optics/scene-to-sensor-quadrature.ts public contracts
2
+
3
+ Package **1.0.0**, root API **0.116.0**. [Navigation](../API_REFERENCE.md) · [Developer guide](../DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
4
+
5
+ ## calculateSceneToSensorIrradianceQuadrature
6
+
7
+ Calculate the existing paraxial optical bridge at every requested node.
8
+ Exact identity/coverage and provider bindings are checked before returning
9
+ physical W/m²/nm samples. Image coordinates belong to the spatial plan, so
10
+ callers cannot attach a field-throughput result from a different point.
11
+
12
+ ```ts
13
+ export function calculateSceneToSensorIrradianceQuadrature(
14
+ input: CalculateSceneToSensorIrradianceQuadratureInput
15
+ ): CalculationResult<SceneToSensorIrradianceQuadrature>;
16
+ ```
17
+
18
+ This call is synchronous; any supplied provider must follow its explicit synchronous contract.
19
+
20
+ ## CalculateSceneToSensorIrradianceQuadratureInput
21
+
22
+ Static point-sample bridge; PSF and temporal transport remain separate responsibilities.
23
+
24
+ ```ts
25
+ export interface CalculateSceneToSensorIrradianceQuadratureInput {
26
+ spatialQuadrature: ReduceSensorSpatioSpectralIrradianceInput["spatialQuadrature"];
27
+ spectralQuadrature: ReduceSensorSpatioSpectralIrradianceInput["spectralQuadrature"];
28
+ /** Evidence-backed provider/illumination/material identities, parsed before use. */
29
+ sceneBindings: Omit<ValidateSceneRadianceEvaluationBindingsInput, "request" | "result">;
30
+ /** One declared lens/focus/filter state shared by every node. */
31
+ optics: Omit<CalculateSceneRadianceToSensorIrradianceInput,
32
+ "sceneRadianceRequest" | "sceneRadianceResult" | "imagePointMm" | "fieldThroughput">;
33
+ /** Explicit nonnegative instant shared by all queries; not an exposure integration. */
34
+ timeSecondsFromExposureStart: number;
35
+ /** Complete Cartesian coverage with a unique scene sampleId per node. */
36
+ samples: readonly SceneSensorQuadratureSample[];
37
+ }
38
+ ```
39
+
40
+ ## SceneSensorQuadratureSample
41
+
42
+ One declared scene query/result for an exact pre-AA spatial/wavelength node.
43
+
44
+ ```ts
45
+ export interface SceneSensorQuadratureSample {
46
+ node: SensorSpatioSpectralNodeIdentity;
47
+ sceneRadianceRequest: CalculateSceneRadianceToSensorIrradianceInput["sceneRadianceRequest"];
48
+ sceneRadianceResult: CalculateSceneRadianceToSensorIrradianceInput["sceneRadianceResult"];
49
+ fieldThroughput: CalculateSceneRadianceToSensorIrradianceInput["fieldThroughput"];
50
+ }
51
+ ```
52
+
53
+ ## SceneToSensorIrradianceQuadrature
54
+
55
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
56
+
57
+ ```ts
58
+ export interface SceneToSensorIrradianceQuadrature {
59
+ sourcePlane: "sensor-package-incident";
60
+ outputMeaning: "pre-sensor-stack-pre-aa-irradiance-quadrature";
61
+ sourceTargetProjectionVerified: false;
62
+ sceneProviderExecutionVerified: false;
63
+ psfRedistributionApplied: false;
64
+ temporalIntegrationApplied: false;
65
+ irradianceSamples: ReduceSensorSpatioSpectralIrradianceInput["sampleValues"];
66
+ reduction: ReturnType<typeof reduceSensorSpatioSpectralIrradiance>;
67
+ samples: readonly {
68
+ node: SensorSpatioSpectralNodeIdentity;
69
+ /** Physical source coordinate before AA redistribution, in mm. */
70
+ preAntiAliasingSourcePointMm: { x: number; y: number };
71
+ /** Owned provider target/time declaration; not a verified ray intersection. */
72
+ request: SceneSensorQuadratureSample["sceneRadianceRequest"];
73
+ result: SceneSensorQuadratureSample["sceneRadianceResult"];
74
+ bindings: ReturnType<typeof validateSceneRadianceEvaluationBindings>;
75
+ optics: ReturnType<typeof calculateSceneRadianceToSensorIrradiance>;
76
+ }[];
77
+ }
78
+ ```
@@ -0,0 +1,58 @@
1
+ # optics/sensor-environment-query.ts public contracts
2
+
3
+ Package **1.0.0**, root API **0.116.0**. [Navigation](../API_REFERENCE.md) · [Developer guide](../DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
4
+
5
+ ## calculateSensorEnvironmentRadianceQuery
6
+
7
+ Generate an environment radiance request from physical sensor support using
8
+ the existing focus-aware ideal projection and analytic inverse camera rotation.
9
+ Native Y is explicitly inverted; the provider direction is opposite the
10
+ exposure-start look ray. No scene intersection, radiance or renderer executes.
11
+
12
+ ```ts
13
+ export function calculateSensorEnvironmentRadianceQuery(
14
+ input: CalculateSensorEnvironmentRadianceQueryInput
15
+ ): CalculationResult<SensorEnvironmentRadianceQuery>;
16
+ ```
17
+
18
+ This call is synchronous; any supplied provider must follow its explicit synchronous contract.
19
+
20
+ ## CalculateSensorEnvironmentRadianceQueryInput
21
+
22
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
23
+
24
+ ```ts
25
+ export interface CalculateSensorEnvironmentRadianceQueryInput {
26
+ /** Pre-AA or pre-PSF optical support, native +X right/+Y down, mm about optical axis. */
27
+ sourcePointNativeSensorMm: { x: number; y: number };
28
+ focalLengthMm: number;
29
+ focus: FocusPlane;
30
+ angularVelocityRadPerSec: CameraAngularVelocityRadPerSec;
31
+ /** Explicitly maps the shutter opening boundary to the rotation model's t=0. */
32
+ timeReference: "first-opening-boundary-phase";
33
+ timeSecondsFromOpeningReference: number;
34
+ /** Environment request uses radiance propagation toward the camera, opposite the look ray. */
35
+ environmentDirectionConvention: "outgoing-radiance-toward-camera";
36
+ request: Omit<SceneRadianceEvaluationRequest, "target" | "timeSecondsFromExposureStart">;
37
+ }
38
+ ```
39
+
40
+ ## SensorEnvironmentRadianceQuery
41
+
42
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
43
+
44
+ ```ts
45
+ export interface SensorEnvironmentRadianceQuery {
46
+ request: SceneRadianceEvaluationRequest;
47
+ sourcePointNativeSensorMm: { x: number; y: number };
48
+ sourcePointImagePlaneMm: { x: number; y: number };
49
+ referenceLookDirectionUnitVector: { x: number; y: number; z: number };
50
+ projection: ReturnType<typeof calculateInverseCameraRotationImageMapping>;
51
+ targetMeaning: "environment-direction-in-exposure-start-camera-axes";
52
+ directionConvention: "outgoing-radiance-toward-camera";
53
+ geometricRayProjectionCalculated: true;
54
+ sceneIntersectionCalculated: false;
55
+ visibilityCalculated: false;
56
+ providerExecuted: false;
57
+ }
58
+ ```
@@ -0,0 +1,81 @@
1
+ # optics/sensor-psf-quadrature.ts public contracts
2
+
3
+ Package **1.0.0**, root API **0.116.0**. [Navigation](../API_REFERENCE.md) · [Developer guide](../DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
4
+
5
+ ## calculateSensorPsfIrradianceQuadrature
6
+
7
+ Apply each resolved unit-energy PSF as a destination-local inverse sample sum.
8
+ Native +Y-down support converts explicitly to optical +Y-up kernel orientation.
9
+ No boundary extension, missing-support renormalization or extra throughput is
10
+ applied. This approximation is not a field-dependent forward energy transport.
11
+
12
+ ```ts
13
+ export function calculateSensorPsfIrradianceQuadrature(
14
+ input: CalculateSensorPsfIrradianceQuadratureInput
15
+ ): CalculationResult<SensorPsfIrradianceQuadrature>;
16
+ ```
17
+
18
+ This call is synchronous; any supplied provider must follow its explicit synchronous contract.
19
+
20
+ ## CalculateSensorPsfIrradianceQuadratureInput
21
+
22
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
23
+
24
+ ```ts
25
+ export interface CalculateSensorPsfIrradianceQuadratureInput {
26
+ /** One instant on the explicitly declared shutter opening reference. */
27
+ timeSecondsFromOpeningReference: number;
28
+ spatialQuadrature: ReduceSensorSpatioSpectralIrradianceInput["spatialQuadrature"];
29
+ spectralQuadrature: ReduceSensorSpatioSpectralIrradianceInput["spectralQuadrature"];
30
+ /** The adapter owns wavelength and image-plane field position for each node. */
31
+ psf: Omit<ResolveLensSampledPsfInput, "fieldPointMm" | "wavelengthNm">;
32
+ /** Schema 0.1.0 PSF profiles lack a basis field; bind that source meaning explicitly. */
33
+ psfWavelengthBasis: { value: "air" | "vacuum"; evidence: readonly EvidenceProvenance[] };
34
+ /** Explicit local approximation; a varying PSF grid is not a global convolution. */
35
+ spatialModel: { kind: "destination-local-shift-invariant-approximation";
36
+ evidence: readonly EvidenceProvenance[]; limitation: string };
37
+ inputMeaning: "pre-psf-pre-sensor-stack-pre-aa-spectral-irradiance";
38
+ /** All nodes and all kernel taps, including zero weights, must be supplied. */
39
+ samples: readonly { node: SensorSpatioSpectralNodeIdentity; sourceSamples: readonly SensorPsfSourceSample[] }[];
40
+ }
41
+ ```
42
+
43
+ ## SensorPsfIrradianceQuadrature
44
+
45
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
46
+
47
+ ```ts
48
+ export interface SensorPsfIrradianceQuadrature {
49
+ timeSecondsFromOpeningReference: number;
50
+ wavelengthBasis: "air" | "vacuum";
51
+ sourcePlane: "sensor-package-incident";
52
+ outputMeaning: "post-psf-pre-sensor-stack-pre-aa-irradiance-quadrature";
53
+ psfRedistributionApplied: true;
54
+ localShiftInvarianceEstablished: false;
55
+ globalFieldEnergyConservationEstablished: false;
56
+ pupilThroughputApplied: false;
57
+ sceneProviderExecutionVerified: false;
58
+ spatialModelEvidence: readonly EvidenceProvenance[];
59
+ wavelengthBasisEvidence: readonly EvidenceProvenance[];
60
+ spatialModelLimitation: string;
61
+ irradianceSamples: ReduceSensorSpatioSpectralIrradianceInput["sampleValues"];
62
+ reduction: ReturnType<typeof reduceSensorSpatioSpectralIrradiance>;
63
+ samples: readonly { node: SensorSpatioSpectralNodeIdentity;
64
+ psf: ReturnType<typeof resolveLensSampledPsf>; sourceSamples: readonly SensorPsfSourceSample[] }[];
65
+ }
66
+ ```
67
+
68
+ ## SensorPsfSourceSample
69
+
70
+ One pre-PSF incident irradiance value per explicitly identified kernel tap.
71
+
72
+ ```ts
73
+ export interface SensorPsfSourceSample {
74
+ timeSecondsFromOpeningReference: number;
75
+ kernelSampleX: number;
76
+ kernelSampleY: number;
77
+ /** Optical-axis origin, +X right/+Y down, millimetres; no native crop clipping. */
78
+ sourcePointNativeSensorMm: { x: number; y: number };
79
+ spectralIrradianceWattsPerSquareMeterPerNanometer: number;
80
+ }
81
+ ```
@@ -0,0 +1,109 @@
1
+ # optics/stray-light.ts public contracts
2
+
3
+ Package **1.0.0**, root API **0.116.0**. [Navigation](../API_REFERENCE.md) · [Developer guide](../DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
4
+
5
+ ## calculateLensStrayLightIrradiance
6
+
7
+ Adds off-path spectral irradiance before sensor/exposure integration, never after tone mapping.
8
+ Source powers are integrated over profile.referenceEntranceAreaMm2 at this instant/wavelength.
9
+ Gaussian templates are independently parameterized approximations, not lens prescription ray tracing.
10
+
11
+ ```ts
12
+ export function calculateLensStrayLightIrradiance(input: {
13
+ profile: LensStrayLightProfile; state: OpticalProfileState; enabled: boolean;
14
+ imagePointMm: LensFieldPointMm; wavelengthNm: number; wavelengthBasis: "air" | "vacuum";
15
+ timeSeconds: number; primarySpectralIrradianceWPerM2PerNm: number;
16
+ sources: readonly StrayLightSource[]; meterDomain: "primary-only" | "primary-plus-stray";
17
+ }): CalculationResult<StrayLightIrradiance>;
18
+ ```
19
+
20
+ This call is synchronous; any supplied provider must follow its explicit synchronous contract.
21
+
22
+ ## LensStrayLightProfile
23
+
24
+ Single explicit wavelength and exact generic camera state; clean optics only.
25
+
26
+ ```ts
27
+ export interface LensStrayLightProfile {
28
+ schemaVersion: "0.1.0";
29
+ id: string;
30
+ version: string;
31
+ state: OpticalProfileState;
32
+ evidence: GenericOpticalEvidence;
33
+ interaction: "lens-reflections" | "sensor-lens-reflections";
34
+ wavelengthNm: number;
35
+ wavelengthBasis: "air" | "vacuum";
36
+ maximumSourceAngleDegrees: number;
37
+ /** Area over which the caller's incident source power was integrated. */
38
+ referenceEntranceAreaMm2: number;
39
+ responses: readonly ParametricStrayLightResponse[];
40
+ }
41
+ ```
42
+
43
+ ## ParametricStrayLightResponse
44
+
45
+ One reflected-path or broad scatter response, normalized over the infinite image plane.
46
+
47
+ ```ts
48
+ export interface ParametricStrayLightResponse {
49
+ id: string;
50
+ kind: "ghost" | "veil";
51
+ /** Centroid response in mm per degree of the two declared source field angles. */
52
+ centroidMmPerDegree: readonly [number, number, number, number];
53
+ offsetMm: LensFieldPointMm;
54
+ sigmaMm: number;
55
+ /** Fraction of source power entering this response at the axis. */
56
+ axisPowerFraction: number;
57
+ /** F(rho)=F(0)*(1+slope*rho²), rho=source angle/max angle. */
58
+ angularSlope: number;
59
+ }
60
+ ```
61
+
62
+ ## parseLensStrayLightProfile
63
+
64
+ Strict generic profile parser; bounds passivity across the whole angular envelope.
65
+
66
+ ```ts
67
+ export function parseLensStrayLightProfile(value: unknown): LensStrayLightProfile;
68
+ ```
69
+
70
+ This call is synchronous; any supplied provider must follow its explicit synchronous contract.
71
+
72
+ ## StrayLightIrradiance
73
+
74
+ The exact contract is declared below; use the domain guide for assumptions and staged integration.
75
+
76
+ ```ts
77
+ export interface StrayLightIrradiance {
78
+ profileId: string;
79
+ profileVersion: string;
80
+ interaction: LensStrayLightProfile["interaction"];
81
+ imagePointMm: LensFieldPointMm;
82
+ wavelengthNm: number;
83
+ wavelengthBasis: "air" | "vacuum";
84
+ timeSeconds: number;
85
+ primarySpectralIrradianceWPerM2PerNm: number;
86
+ ghostSpectralIrradianceWPerM2PerNm: number;
87
+ veilSpectralIrradianceWPerM2PerNm: number;
88
+ totalSpectralIrradianceWPerM2PerNm: number;
89
+ /** If primary-only, the meter excludes these additions; sensor always receives total. */
90
+ meterDomain: "primary-only" | "primary-plus-stray";
91
+ meterSpectralIrradianceWPerM2PerNm: number;
92
+ contributions: readonly { sourceId: string; responseId: string; kind: "ghost" | "veil"; spectralIrradianceWPerM2PerNm: number }[];
93
+ }
94
+ ```
95
+
96
+ ## StrayLightSource
97
+
98
+ Direction remains available beyond the active frame; no crop clipping.
99
+
100
+ ```ts
101
+ export interface StrayLightSource {
102
+ id: string;
103
+ fieldAngleXDegrees: number;
104
+ fieldAngleYDegrees: number;
105
+ incidentSpectralPowerWPerNm: number;
106
+ /** Explicit source/path admission, e.g. a flag/hood decision; not a global hood scalar. */
107
+ admittedFraction: number;
108
+ }
109
+ ```