@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,356 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * Module boundary and integration notes.
4
+ * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
5
+ * missing required fields and incompatible scientific data fail at this boundary. Camera saturation
6
+ * capacity is a dark-corrected photo-signal electron-equivalent limit. It is not physical total-charge
7
+ * storage capacity, ADC maximum or evidence of the limiting hardware stage. This assessment compares
8
+ * expectations and does not synthesize post-saturation codes.
9
+ * Compare dark-corrected expected photo signal with the declared camera response-chain capacity
10
+ * without adding dark charge or identifying a hardware clamp. Camera saturation capacity is a
11
+ * dark-corrected photo-signal electron-equivalent limit. It is not physical total-charge storage
12
+ * capacity, ADC maximum or evidence of the limiting hardware stage. This assessment compares
13
+ * expectations and does not synthesize post-saturation codes.
14
+ * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
15
+ * limits.
16
+ */
17
+ import { approximationResult } from "../core/calculation-result.js";
18
+ import { InvalidConfigurationError } from "../core/configuration-error.js";
19
+ import { parseEvidenceList } from "../core/evidence-provenance.js";
20
+ import { InvalidScientificInputError } from "../core/validation.js";
21
+ function requireRecord(value, path) {
22
+ if (typeof value !== "object" ||
23
+ value === null ||
24
+ Array.isArray(value)) {
25
+ throw new InvalidConfigurationError(path + " must be an object.");
26
+ }
27
+ return value;
28
+ }
29
+ function requireNonEmptyString(value, path) {
30
+ if (typeof value !== "string" ||
31
+ value.trim().length === 0) {
32
+ throw new InvalidConfigurationError(path + " must be a non-empty string.");
33
+ }
34
+ return value;
35
+ }
36
+ function requireFinite(value, path) {
37
+ if (typeof value !== "number" ||
38
+ !Number.isFinite(value)) {
39
+ throw new InvalidConfigurationError(path + " must be finite.");
40
+ }
41
+ return value;
42
+ }
43
+ function requirePositiveFinite(value, path) {
44
+ const parsed = requireFinite(value, path);
45
+ if (parsed <= 0) {
46
+ throw new InvalidConfigurationError(path +
47
+ " must be greater than zero.");
48
+ }
49
+ return parsed;
50
+ }
51
+ function requireNonNegativeFiniteInput(value, path) {
52
+ if (typeof value !== "number" ||
53
+ !Number.isFinite(value) ||
54
+ value < 0) {
55
+ throw new InvalidScientificInputError(path +
56
+ " must be finite and greater than or equal to zero.");
57
+ }
58
+ return value;
59
+ }
60
+ function requireSiteIndex(value, path) {
61
+ if (typeof value !== "number" ||
62
+ !Number.isSafeInteger(value) ||
63
+ value < 0) {
64
+ throw new InvalidConfigurationError(path +
65
+ " must be a non-negative safe integer.");
66
+ }
67
+ return value;
68
+ }
69
+ function parseUncertainty(value, path) {
70
+ const record = requireRecord(value, path);
71
+ if (record.kind === "relative") {
72
+ const fraction = requireFinite(record.fraction, path + ".fraction");
73
+ if (fraction < 0) {
74
+ throw new InvalidConfigurationError(path +
75
+ ".fraction must be nonnegative.");
76
+ }
77
+ return {
78
+ kind: "relative",
79
+ fraction,
80
+ basis: requireNonEmptyString(record.basis, path + ".basis")
81
+ };
82
+ }
83
+ if (record.kind === "not-quantified") {
84
+ return {
85
+ kind: "not-quantified",
86
+ limitation: requireNonEmptyString(record.limitation, path + ".limitation")
87
+ };
88
+ }
89
+ throw new InvalidConfigurationError(path + ".kind is invalid.");
90
+ }
91
+ function parseSiteApplicability(value) {
92
+ const record = requireRecord(value, "sensorCameraSaturation.siteApplicability");
93
+ if (record.kind === "exact-site") {
94
+ const site = requireRecord(record.site, "sensorCameraSaturation.siteApplicability.site");
95
+ return {
96
+ kind: "exact-site",
97
+ site: {
98
+ x: requireSiteIndex(site.x, "sensorCameraSaturation.siteApplicability.site.x"),
99
+ y: requireSiteIndex(site.y, "sensorCameraSaturation.siteApplicability.site.y")
100
+ }
101
+ };
102
+ }
103
+ if (record.kind ===
104
+ "channel-population-mean-approximation") {
105
+ return {
106
+ kind: "channel-population-mean-approximation",
107
+ limitation: requireNonEmptyString(record.limitation, "sensorCameraSaturation.siteApplicability.limitation"),
108
+ evidence: parseEvidenceList(record.evidence, "sensorCameraSaturation.siteApplicability.evidence")
109
+ };
110
+ }
111
+ throw new InvalidConfigurationError("sensorCameraSaturation.siteApplicability.kind is invalid.");
112
+ }
113
+ function parseTemperatureApplicability(value) {
114
+ const record = requireRecord(value, "sensorCameraSaturation.temperatureApplicability");
115
+ if (record.kind ===
116
+ "exact-reference-temperature") {
117
+ return {
118
+ kind: "exact-reference-temperature",
119
+ temperatureC: requireFinite(record.temperatureC, "sensorCameraSaturation.temperatureApplicability.temperatureC")
120
+ };
121
+ }
122
+ if (record.kind === "not-modeled") {
123
+ return {
124
+ kind: "not-modeled",
125
+ limitation: requireNonEmptyString(record.limitation, "sensorCameraSaturation.temperatureApplicability.limitation"),
126
+ evidence: parseEvidenceList(record.evidence, "sensorCameraSaturation.temperatureApplicability.evidence")
127
+ };
128
+ }
129
+ throw new InvalidConfigurationError("sensorCameraSaturation.temperatureApplicability.kind is invalid.");
130
+ }
131
+ /**
132
+ * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
133
+ * missing required fields and incompatible scientific data fail at this boundary.
134
+ *
135
+ * Camera saturation capacity is a dark-corrected photo-signal electron-equivalent limit. It is not
136
+ * physical total-charge storage capacity, ADC maximum or evidence of the limiting hardware stage. This
137
+ * assessment compares expectations and does not synthesize post-saturation codes.
138
+ * @param value - unknown. Treated as untrusted data; static typing alone is not validation.
139
+ * @returns SensorCameraSaturationCapacityProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
140
+ *
141
+ * @see docs/API_REFERENCE.md for the root export and exact type graph.
142
+ */
143
+ export function parseSensorCameraSaturationCapacityProfile(value) {
144
+ const record = requireRecord(value, "sensorCameraSaturation");
145
+ if (record.schemaVersion !== "0.1.0") {
146
+ throw new InvalidConfigurationError('sensorCameraSaturation.schemaVersion must be "0.1.0".');
147
+ }
148
+ if (record.capacityMeaning !==
149
+ "camera-signal-saturation-capacity-electrons") {
150
+ throw new InvalidConfigurationError("sensorCameraSaturation.capacityMeaning is invalid.");
151
+ }
152
+ if (record.signalDomain !==
153
+ "dark-corrected-photo-generated-electron-equivalent") {
154
+ throw new InvalidConfigurationError("sensorCameraSaturation.signalDomain is invalid.");
155
+ }
156
+ if (record.scientificStatus !==
157
+ "calibrated" &&
158
+ record.scientificStatus !==
159
+ "approximation") {
160
+ throw new InvalidConfigurationError("sensorCameraSaturation.scientificStatus is invalid.");
161
+ }
162
+ const uncertainty = parseUncertainty(record.uncertainty, "sensorCameraSaturation.uncertainty");
163
+ if (record.scientificStatus ===
164
+ "calibrated" &&
165
+ uncertainty.kind ===
166
+ "not-quantified") {
167
+ throw new InvalidConfigurationError("A calibrated camera saturation-capacity profile must declare quantified relative uncertainty.");
168
+ }
169
+ const siteApplicability = parseSiteApplicability(record.siteApplicability);
170
+ const temperatureApplicability = parseTemperatureApplicability(record.temperatureApplicability);
171
+ if (siteApplicability.kind ===
172
+ "channel-population-mean-approximation" &&
173
+ record.scientificStatus !==
174
+ "approximation") {
175
+ throw new InvalidConfigurationError("A channel-population mean camera saturation capacity must remain an approximation when applied to one site.");
176
+ }
177
+ if (temperatureApplicability.kind ===
178
+ "not-modeled" &&
179
+ record.scientificStatus !==
180
+ "approximation") {
181
+ throw new InvalidConfigurationError("A camera saturation capacity with unmodeled temperature dependence must remain an approximation.");
182
+ }
183
+ const state = requireRecord(record.operatingState, "sensorCameraSaturation.operatingState");
184
+ return {
185
+ schemaVersion: "0.1.0",
186
+ profileId: requireNonEmptyString(record.profileId, "sensorCameraSaturation.profileId"),
187
+ colorSamplingProfileId: requireNonEmptyString(record.colorSamplingProfileId, "sensorCameraSaturation.colorSamplingProfileId"),
188
+ channelId: requireNonEmptyString(record.channelId, "sensorCameraSaturation.channelId"),
189
+ capacityMeaning: "camera-signal-saturation-capacity-electrons",
190
+ signalDomain: "dark-corrected-photo-generated-electron-equivalent",
191
+ saturationCapacityElectrons: requirePositiveFinite(record.saturationCapacityElectrons, "sensorCameraSaturation.saturationCapacityElectrons"),
192
+ scientificStatus: record.scientificStatus,
193
+ uncertainty,
194
+ evidence: parseEvidenceList(record.evidence, "sensorCameraSaturation.evidence"),
195
+ measurementMethodId: requireNonEmptyString(record.measurementMethodId, "sensorCameraSaturation.measurementMethodId"),
196
+ measurementMethodEvidence: parseEvidenceList(record.measurementMethodEvidence, "sensorCameraSaturation.measurementMethodEvidence"),
197
+ siteApplicability,
198
+ operatingState: {
199
+ stateId: requireNonEmptyString(state.stateId, "sensorCameraSaturation.operatingState.stateId"),
200
+ evidence: parseEvidenceList(state.evidence, "sensorCameraSaturation.operatingState.evidence")
201
+ },
202
+ temperatureApplicability
203
+ };
204
+ }
205
+ function sameSite(a, b) {
206
+ return a.x === b.x && a.y === b.y;
207
+ }
208
+ function validateCharge(charge) {
209
+ if (charge.accumulatedChargeCompleteness !==
210
+ "complete-for-physical-storage-capacity-assessment" ||
211
+ charge.saturationAssessed !==
212
+ false ||
213
+ charge.adcQuantizationApplied !==
214
+ false ||
215
+ charge.rawCodeValueProduced !==
216
+ false) {
217
+ throw new InvalidScientificInputError("Camera saturation assessment requires an unmodified pre-saturation accumulated-charge composition.");
218
+ }
219
+ return {
220
+ photo: requireNonNegativeFiniteInput(charge.photoExpectedElectronCount, "accumulatedCharge.photoExpectedElectronCount"),
221
+ total: requireNonNegativeFiniteInput(charge.totalExpectedStoredElectronCount, "accumulatedCharge.totalExpectedStoredElectronCount")
222
+ };
223
+ }
224
+ /**
225
+ * Compare dark-corrected expected photo signal with the declared camera response-chain capacity
226
+ * without adding dark charge or identifying a hardware clamp.
227
+ *
228
+ * Camera saturation capacity is a dark-corrected photo-signal electron-equivalent limit. It is not
229
+ * physical total-charge storage capacity, ADC maximum or evidence of the limiting hardware stage. This
230
+ * assessment compares expectations and does not synthesize post-saturation codes.
231
+ * @param input - AssessSensorCameraSaturationCapacityInput. See the linked contract for coordinate, unit and profile binding semantics.
232
+ * @returns CalculationResult<SensorCameraSaturationCapacityAssessment>. Read structured blockers before consuming an authorization.
233
+ *
234
+ * @see docs/API_REFERENCE.md for the root export and exact type graph.
235
+ */
236
+ export function assessSensorCameraSaturationCapacity(input) {
237
+ const charge = validateCharge(input.accumulatedCharge);
238
+ const profile = parseSensorCameraSaturationCapacityProfile(input.saturationProfile);
239
+ if (profile.colorSamplingProfileId !==
240
+ input.accumulatedCharge
241
+ .colorSamplingProfileId ||
242
+ profile.channelId !==
243
+ input.accumulatedCharge.channelId) {
244
+ throw new InvalidScientificInputError("Camera saturation-capacity profile color/channel identity must match the accumulated charge.");
245
+ }
246
+ if (profile.siteApplicability.kind ===
247
+ "exact-site" &&
248
+ !sameSite(profile.siteApplicability.site, input.accumulatedCharge.site)) {
249
+ throw new InvalidScientificInputError("Exact-site camera saturation capacity does not apply to the accumulated-charge site.");
250
+ }
251
+ if (typeof input.operatingStateId !==
252
+ "string" ||
253
+ input.operatingStateId.trim().length ===
254
+ 0 ||
255
+ input.operatingStateId !==
256
+ profile.operatingState.stateId) {
257
+ throw new InvalidScientificInputError("operatingStateId must exactly match the camera saturation-capacity calibration state.");
258
+ }
259
+ if (typeof input.operatingTemperatureC !==
260
+ "number" ||
261
+ !Number.isFinite(input.operatingTemperatureC)) {
262
+ throw new InvalidScientificInputError("operatingTemperatureC must be finite.");
263
+ }
264
+ if (profile.temperatureApplicability.kind ===
265
+ "exact-reference-temperature" &&
266
+ input.operatingTemperatureC !==
267
+ profile.temperatureApplicability
268
+ .temperatureC) {
269
+ throw new InvalidScientificInputError("operatingTemperatureC must exactly match the camera saturation-capacity reference temperature.");
270
+ }
271
+ const capacity = profile.saturationCapacityElectrons;
272
+ const ratio = charge.photo / capacity;
273
+ const headroom = capacity - charge.photo;
274
+ if (!Number.isFinite(ratio) ||
275
+ !Number.isFinite(headroom)) {
276
+ throw new InvalidScientificInputError("Camera saturation-capacity comparison must remain finite.");
277
+ }
278
+ const status = charge.photo < capacity
279
+ ? "below-capacity"
280
+ : charge.photo === capacity
281
+ ? "at-capacity"
282
+ : "above-capacity";
283
+ return approximationResult({
284
+ saturationProfileId: profile.profileId,
285
+ completenessProfileId: input.accumulatedCharge
286
+ .completenessProfileId,
287
+ colorSamplingProfileId: input.accumulatedCharge
288
+ .colorSamplingProfileId,
289
+ channelId: input.accumulatedCharge.channelId,
290
+ site: {
291
+ ...input.accumulatedCharge.site
292
+ },
293
+ bindingId: input.accumulatedCharge.bindingId,
294
+ operatingStateId: input.operatingStateId,
295
+ operatingTemperatureC: input.operatingTemperatureC,
296
+ capacityMeaning: "camera-signal-saturation-capacity-electrons",
297
+ signalDomain: "dark-corrected-photo-generated-electron-equivalent",
298
+ cameraSignalSaturationCapacityElectrons: capacity,
299
+ expectedPhotoSignalElectronCount: charge.photo,
300
+ totalExpectedStoredElectronCountDiagnostic: charge.total,
301
+ totalStoredChargeUsedForCameraSaturationComparison: false,
302
+ expectedSignalToCameraSaturationRatio: ratio,
303
+ expectedSignalHeadroomElectrons: headroom,
304
+ expectedCameraSignalCapacityStatus: status,
305
+ expectedPhotoSignalExceedsCameraCapacity: status === "above-capacity",
306
+ cameraSaturationCapacityAssessmentPerformed: true,
307
+ assessmentMeaning: "expected-dark-corrected-photo-signal-vs-camera-saturation-capacity",
308
+ physicalChargeCapacityUsed: false,
309
+ limitingSaturationMechanismResolved: false,
310
+ analogClippingThresholdModeled: false,
311
+ digitalClippingThresholdModeled: false,
312
+ adcMaximumCodeUsed: false,
313
+ actualStochasticSaturationStateKnown: false,
314
+ stochasticSaturationProbabilityAssessed: false,
315
+ outputSignalAfterSaturationCalculated: false,
316
+ clampApplied: false,
317
+ physicalStoredChargeModified: false,
318
+ adcQuantizationApplied: false,
319
+ rawCodeValueProduced: false,
320
+ saturationCapacityUncertaintyPropagated: false,
321
+ photoSignalUncertaintyPropagated: false,
322
+ componentEvidence: {
323
+ saturationCapacity: profile.evidence,
324
+ measurementMethod: profile
325
+ .measurementMethodEvidence,
326
+ operatingState: profile.operatingState
327
+ .evidence,
328
+ siteApproximation: profile.siteApplicability.kind ===
329
+ "channel-population-mean-approximation"
330
+ ? profile
331
+ .siteApplicability
332
+ .evidence
333
+ : [],
334
+ temperatureApproximation: profile.temperatureApplicability.kind ===
335
+ "not-modeled"
336
+ ? profile
337
+ .temperatureApplicability
338
+ .evidence
339
+ : [],
340
+ chargeCompleteness: input.accumulatedCharge
341
+ .componentEvidence
342
+ .completeness
343
+ }
344
+ }, "sensor-camera-saturation-capacity-assessment", "1.0.0", [
345
+ "The camera saturation capacity is a measured/calibrated dark-corrected photo-signal capacity in electron-equivalent signal units; total stored charge is deliberately not used for this comparison.",
346
+ "Physical charge-storage capacity is a separate sensor property and is not used by this assessment.",
347
+ "The camera saturation capacity may be limited by a downstream camera stage before physical pixel storage is full; this contract does not infer which analog or digital stage is limiting.",
348
+ "The operating-state identifier is an exact calibration-state key covering the source-specific camera/readout configuration; Photivra does not infer equivalence from ISO, gain or bit-depth labels.",
349
+ "A channel-population mean applied to one site or unmodeled temperature dependence remains an explicit approximation.",
350
+ "Expected photo signal below the measured capacity does not establish the actual stochastic saturation state; no saturation probability is calculated.",
351
+ "No signal clamp, analog clipping transfer, ADC maximum code, RAW code or post-saturation output is calculated.",
352
+ "Dark and other stored charge remain diagnostics for physical storage accounting and are not silently added to a dark-corrected camera-signal capacity.",
353
+ "Capacity and photo-signal uncertainties are not propagated into a saturation probability or confidence interval by this version."
354
+ ]);
355
+ }
356
+ //# sourceMappingURL=camera-saturation-capacity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera-saturation-capacity.js","sourceRoot":"","sources":["../../src/sensor/camera-saturation-capacity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,212 @@
1
+ import { type EvidenceProvenance } from "../core/evidence-provenance.js";
2
+ import { type CaptureModeProfile, type CaptureModeSampleCombinationDomain, type CaptureModeSensorOffsetNativeSamples, type SourcedCaptureModeFact } from "./capture-mode.js";
3
+ import { type SensorColorSamplingProfile } from "./color-sampling.js";
4
+ import type { NativeImageRaster } from "./sensor-geometry.js";
5
+ export interface NativeEffectiveRasterColorSamplingBindingProfile {
6
+ schemaVersion: "0.1.0";
7
+ bindingId: string;
8
+ colorSamplingProfileId: string;
9
+ /**
10
+ * Exact canonical native effective raster this binding was evidenced for.
11
+ * The binding must not be reused against a different raster merely because
12
+ * another sensor/mode has similar dimensions or a matching aspect ratio.
13
+ */
14
+ nativeRaster: NativeImageRaster;
15
+ /**
16
+ * Evidence supporting the native-effective-grid ↔ color-site-grid
17
+ * relationship itself.
18
+ *
19
+ * Capture-mode and color-topology facts retain separate provenance.
20
+ */
21
+ evidence: readonly EvidenceProvenance[];
22
+ relationship: {
23
+ kind: "regular-native-effective-sample-blocks";
24
+ /**
25
+ * Number of abstract color-sampling sites spanned horizontally by one
26
+ * native effective image sample.
27
+ */
28
+ sitesPerNativeSampleX: number;
29
+ /**
30
+ * Number of abstract color-sampling sites spanned vertically by one
31
+ * native effective image sample.
32
+ */
33
+ sitesPerNativeSampleY: number;
34
+ /**
35
+ * Both grids are anchored to the same native sensor top-left.
36
+ *
37
+ * This keeps phase absolute across later active crops/orientation.
38
+ */
39
+ anchor: "shared-native-top-left";
40
+ };
41
+ }
42
+ export interface ColorSamplingSiteGridDimensions {
43
+ widthSites: number;
44
+ heightSites: number;
45
+ }
46
+ export interface ResolvedNativeEffectiveRasterColorSamplingBinding {
47
+ bindingId: string;
48
+ colorSamplingProfileId: string;
49
+ nativeRaster: NativeImageRaster;
50
+ relationshipMeaning: "one-native-effective-sample-to-one-color-site" | "one-native-effective-sample-to-rectangular-color-site-block";
51
+ relationship: {
52
+ kind: "regular-native-effective-sample-blocks";
53
+ sitesPerNativeSampleX: number;
54
+ sitesPerNativeSampleY: number;
55
+ anchor: "shared-native-top-left";
56
+ };
57
+ colorSamplingSiteGrid: ColorSamplingSiteGridDimensions;
58
+ totalColorSamplingSites: number;
59
+ nativeImageRasterBindingEstablished: true;
60
+ physicalPhotodiodeBindingEstablished: false;
61
+ physicalPhotodiodeCountInference: "not-permitted";
62
+ spectralResponseEstablished: false;
63
+ componentEvidence: {
64
+ binding: readonly EvidenceProvenance[];
65
+ colorSamplingProfile: readonly EvidenceProvenance[];
66
+ };
67
+ }
68
+ export interface NativeEffectiveSampleRect {
69
+ x: number;
70
+ y: number;
71
+ width: number;
72
+ height: number;
73
+ }
74
+ export interface ColorSamplingSiteRect {
75
+ x: number;
76
+ y: number;
77
+ width: number;
78
+ height: number;
79
+ }
80
+ export interface CaptureModeFullFrameSampleIndex {
81
+ /**
82
+ * Zero-based index in the selected mode's full-frame per-frame effective
83
+ * sampling raster. Crop-local coordinates must be translated to absolute
84
+ * full-frame mode indices before calling this API.
85
+ */
86
+ x: number;
87
+ y: number;
88
+ }
89
+ export interface ColorSamplingChannelSiteCount {
90
+ channelId: string;
91
+ siteCount: number;
92
+ }
93
+ export type ColorSamplingChannelComposition = {
94
+ kind: "single-channel";
95
+ channelId: string;
96
+ } | {
97
+ kind: "mixed-channels";
98
+ channelIds: readonly string[];
99
+ };
100
+ export interface GroupedCaptureModeSamplingAnchorDeclaration {
101
+ anchor: "native-effective-raster-top-left";
102
+ evidence: readonly EvidenceProvenance[];
103
+ }
104
+ export interface ResolveCaptureModeColorSamplingContributorsInput {
105
+ nativeRaster: NativeImageRaster;
106
+ captureModeProfile: CaptureModeProfile;
107
+ modeId: string;
108
+ colorSamplingProfile: SensorColorSamplingProfile;
109
+ bindingProfile: NativeEffectiveRasterColorSamplingBindingProfile;
110
+ modeSampleIndexFullFrame: CaptureModeFullFrameSampleIndex;
111
+ /**
112
+ * Required for grouped-native-samples modes because #68 declares grouping
113
+ * factors but does not itself prove the grouping phase/origin.
114
+ */
115
+ groupedSamplingAnchor?: GroupedCaptureModeSamplingAnchorDeclaration;
116
+ }
117
+ export interface ResolvedCaptureModeColorSamplingContributors {
118
+ modeId: string;
119
+ colorSamplingProfileId: string;
120
+ modeSampleCoordinateSystem: "capture-mode-full-frame-effective-sample-index";
121
+ modeSampleIndexFullFrame: CaptureModeFullFrameSampleIndex;
122
+ modeSampleRaster: {
123
+ pixelWidth: number;
124
+ pixelHeight: number;
125
+ };
126
+ modeSamplingKind: "native-effective-raster" | "grouped-native-samples";
127
+ nativeEffectiveSampleRect: NativeEffectiveSampleRect;
128
+ colorSamplingSiteRect: ColorSamplingSiteRect;
129
+ colorSamplingSiteGrid: ColorSamplingSiteGridDimensions;
130
+ totalContributorSites: number;
131
+ channelSiteCounts: readonly ColorSamplingChannelSiteCount[];
132
+ channelComposition: ColorSamplingChannelComposition;
133
+ /**
134
+ * Present only when the selected capture mode groups native effective
135
+ * samples before producing one per-frame effective sample.
136
+ */
137
+ grouping: {
138
+ groupWidthSamples: SourcedCaptureModeFact<number>;
139
+ groupHeightSamples: SourcedCaptureModeFact<number>;
140
+ combinationDomain?: SourcedCaptureModeFact<CaptureModeSampleCombinationDomain>;
141
+ anchor: "native-effective-raster-top-left";
142
+ anchorEvidence: readonly EvidenceProvenance[];
143
+ } | null;
144
+ /**
145
+ * Sensor-shift sequence remains attached to the sensor/capture mode.
146
+ *
147
+ * The sensor and its CFA move together, so these offsets must not be applied
148
+ * as changes to color-site channel assignment.
149
+ */
150
+ interFrameSensorOffsetsNativeSamples?: SourcedCaptureModeFact<readonly CaptureModeSensorOffsetNativeSamples[]>;
151
+ sensorShiftChangesColorSiteAssignment: false;
152
+ sensorShiftOpticalRegistration: "outside-this-contract";
153
+ structuralSourceStage: "pre-reconstruction";
154
+ completeDownstreamPixelDependencyEstablished: false;
155
+ signalCombinationWeightingEstablished: false;
156
+ spectralResponseEstablished: false;
157
+ physicalPhotodiodeBindingEstablished: false;
158
+ physicalPhotodiodeCountInference: "not-permitted";
159
+ componentEvidence: {
160
+ binding: readonly EvidenceProvenance[];
161
+ colorSamplingProfile: readonly EvidenceProvenance[];
162
+ captureMode: readonly EvidenceProvenance[];
163
+ };
164
+ }
165
+ /**
166
+ * Parses the explicit relationship between the canonical native effective image
167
+ * raster and the separate native sensor color-sampling-site lattice.
168
+ *
169
+ * This first binding supports only regular rectangular site blocks with a
170
+ * shared native top-left anchor. Irregular mappings, sparse exceptions and
171
+ * mode-specific declared-effective rasters require later explicit contracts.
172
+ */
173
+ export declare function parseNativeEffectiveRasterColorSamplingBindingProfile(value: unknown): NativeEffectiveRasterColorSamplingBindingProfile;
174
+ /**
175
+ * Validates and resolves the sensor-level binding between NativeImageRaster and
176
+ * an exact monochrome/periodic color-sampling topology.
177
+ *
178
+ * Matching dimensions are never treated as proof of a 1:1 relationship. The
179
+ * relationship exists only because the caller supplied this evidence-backed
180
+ * binding profile.
181
+ */
182
+ export declare function resolveNativeEffectiveRasterColorSamplingBinding(input: {
183
+ nativeRaster: NativeImageRaster;
184
+ colorSamplingProfile: SensorColorSamplingProfile;
185
+ bindingProfile: NativeEffectiveRasterColorSamplingBindingProfile;
186
+ }): ResolvedNativeEffectiveRasterColorSamplingBinding;
187
+ /**
188
+ * Resolves which color-sampling sites form the pre-reconstruction structural source region for one selected
189
+ * capture-mode effective sample.
190
+ *
191
+ * The mode sample index is always absolute in the selected mode's full-frame
192
+ * per-frame raster. The API intentionally does not accept crop-local indices,
193
+ * preventing active-crop origins from silently resetting CFA phase.
194
+ *
195
+ * For grouped-native-sample modes, the returned site rectangle covers all
196
+ * native effective samples in the declared regular group. This is a structural
197
+ * pre-reconstruction association only: the engine reports channel-site counts
198
+ * but never claims complete downstream digital-pixel dependency or invents
199
+ * signal-combination weights, sum/average semantics, spectral response, or
200
+ * photon/electron values.
201
+ *
202
+ * Declared-effective-raster modes fail closed because #68 explicitly says
203
+ * their relationship to the native effective grid is not safely expressible as
204
+ * simple integer grouping.
205
+ *
206
+ * Inter-frame sensor shifts are preserved as capture-mode metadata only. The
207
+ * sensor and CFA move together, so those offsets do not change site channel
208
+ * assignment; their optical-registration effect belongs to a later spatial
209
+ * sampling/image-formation contract.
210
+ */
211
+ export declare function resolveCaptureModeColorSamplingContributors(input: ResolveCaptureModeColorSamplingContributorsInput): ResolvedCaptureModeColorSamplingContributors;
212
+ //# sourceMappingURL=capture-color-sampling-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-color-sampling-binding.d.ts","sourceRoot":"","sources":["../../src/sensor/capture-color-sampling-binding.ts"],"names":[],"mappings":"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"}