@photivra/engine 1.5.0 → 2.1.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 (1085) hide show
  1. package/CHANGELOG.md +414 -6
  2. package/CITATION.cff +1 -1
  3. package/NODE_SUPPORT.md +64 -12
  4. package/README.md +301 -182
  5. package/SECURITY.md +37 -28
  6. package/THIRD_PARTY.md +148 -4
  7. package/dist/camera/equivalent-focal-length.d.ts +13 -14
  8. package/dist/camera/equivalent-focal-length.js +15 -13
  9. package/dist/camera/equivalent-focal-length.js.map +1 -1
  10. package/dist/camera/field-of-view.d.ts +30 -19
  11. package/dist/camera/field-of-view.js +67 -18
  12. package/dist/camera/field-of-view.js.map +1 -1
  13. package/dist/camera/lens-projection.d.ts +170 -0
  14. package/dist/camera/lens-projection.js +444 -0
  15. package/dist/camera/lens-projection.js.map +1 -0
  16. package/dist/camera/projected-object-size.d.ts +10 -11
  17. package/dist/camera/projected-object-size.js +12 -10
  18. package/dist/camera/projected-object-size.js.map +1 -1
  19. package/dist/capture/capture-export-metadata.d.ts +9 -10
  20. package/dist/capture/capture-export-metadata.js +8 -5
  21. package/dist/capture/capture-export-metadata.js.map +1 -1
  22. package/dist/capture/dng-import.d.ts +91 -0
  23. package/dist/capture/dng-import.js +343 -0
  24. package/dist/capture/dng-import.js.map +1 -0
  25. package/dist/capture/environment-raw-producer.d.ts +37 -17
  26. package/dist/capture/environment-raw-producer.js +43 -19
  27. package/dist/capture/environment-raw-producer.js.map +1 -1
  28. package/dist/capture/export-jpeg.d.ts +35 -4
  29. package/dist/capture/export-jpeg.js +133 -47
  30. package/dist/capture/export-jpeg.js.map +1 -1
  31. package/dist/capture/export-tiff.d.ts +48 -24
  32. package/dist/capture/export-tiff.js +91 -31
  33. package/dist/capture/export-tiff.js.map +1 -1
  34. package/dist/capture/focus-control.d.ts +42 -65
  35. package/dist/capture/focus-control.js +56 -75
  36. package/dist/capture/focus-control.js.map +1 -1
  37. package/dist/capture/host-yield-cadence.d.ts +25 -0
  38. package/dist/capture/host-yield-cadence.js +25 -0
  39. package/dist/capture/host-yield-cadence.js.map +1 -0
  40. package/dist/capture/linear-encoding.d.ts +14 -12
  41. package/dist/capture/linear-encoding.js +14 -13
  42. package/dist/capture/linear-encoding.js.map +1 -1
  43. package/dist/capture/lossless-jpeg.d.ts +27 -0
  44. package/dist/capture/lossless-jpeg.js +237 -0
  45. package/dist/capture/lossless-jpeg.js.map +1 -0
  46. package/dist/capture/native-environment-lean.d.ts +227 -0
  47. package/dist/capture/native-environment-lean.js +974 -0
  48. package/dist/capture/native-environment-lean.js.map +1 -0
  49. package/dist/capture/native-environment-optical-stage.d.ts +97 -0
  50. package/dist/capture/native-environment-optical-stage.js +340 -0
  51. package/dist/capture/native-environment-optical-stage.js.map +1 -0
  52. package/dist/capture/native-environment-raw.d.ts +140 -6
  53. package/dist/capture/native-environment-raw.js +435 -34
  54. package/dist/capture/native-environment-raw.js.map +1 -1
  55. package/dist/capture/native-raw-development.d.ts +116 -9
  56. package/dist/capture/native-raw-development.js +221 -62
  57. package/dist/capture/native-raw-development.js.map +1 -1
  58. package/dist/capture/native-raw-dng.d.ts +60 -0
  59. package/dist/capture/native-raw-dng.js +167 -0
  60. package/dist/capture/native-raw-dng.js.map +1 -0
  61. package/dist/capture/native-raw.d.ts +65 -12
  62. package/dist/capture/native-raw.js +81 -19
  63. package/dist/capture/native-raw.js.map +1 -1
  64. package/dist/capture/packed-sensor-raw.d.ts +160 -0
  65. package/dist/capture/packed-sensor-raw.js +221 -0
  66. package/dist/capture/packed-sensor-raw.js.map +1 -0
  67. package/dist/capture/photographic-export.d.ts +58 -35
  68. package/dist/capture/photographic-export.js +177 -70
  69. package/dist/capture/photographic-export.js.map +1 -1
  70. package/dist/capture/raw-development-kernel.d.ts +52 -0
  71. package/dist/capture/raw-development-kernel.js +88 -0
  72. package/dist/capture/raw-development-kernel.js.map +1 -0
  73. package/dist/capture/raw-frame-limits.d.ts +7 -7
  74. package/dist/capture/raw-frame-limits.js +7 -6
  75. package/dist/capture/raw-frame-limits.js.map +1 -1
  76. package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
  77. package/dist/capture/raw-frame-reconstruction.js +9 -8
  78. package/dist/capture/raw-frame-reconstruction.js.map +1 -1
  79. package/dist/capture/raw-white-level.d.ts +55 -0
  80. package/dist/capture/raw-white-level.js +165 -0
  81. package/dist/capture/raw-white-level.js.map +1 -0
  82. package/dist/capture/release-sequence.d.ts +5 -7
  83. package/dist/capture/release-sequence.js +15 -13
  84. package/dist/capture/release-sequence.js.map +1 -1
  85. package/dist/capture/sensor-raw-frame.d.ts +5 -6
  86. package/dist/capture/sensor-raw-frame.js +26 -9
  87. package/dist/capture/sensor-raw-frame.js.map +1 -1
  88. package/dist/capture/sensor-raw-producer.d.ts +21 -13
  89. package/dist/capture/sensor-raw-producer.js +86 -25
  90. package/dist/capture/sensor-raw-producer.js.map +1 -1
  91. package/dist/capture/simulated-capture.d.ts +15 -16
  92. package/dist/capture/simulated-capture.js +22 -12
  93. package/dist/capture/simulated-capture.js.map +1 -1
  94. package/dist/color/camera-color-matrix.d.ts +69 -0
  95. package/dist/color/camera-color-matrix.js +132 -0
  96. package/dist/color/camera-color-matrix.js.map +1 -0
  97. package/dist/color/capture-color.d.ts +17 -10
  98. package/dist/color/capture-color.js +50 -17
  99. package/dist/color/capture-color.js.map +1 -1
  100. package/dist/color/chromatic-adaptation.d.ts +63 -0
  101. package/dist/color/chromatic-adaptation.js +91 -0
  102. package/dist/color/chromatic-adaptation.js.map +1 -0
  103. package/dist/color/color-difference.d.ts +104 -0
  104. package/dist/color/color-difference.js +205 -0
  105. package/dist/color/color-difference.js.map +1 -0
  106. package/dist/color/color-matching-functions.d.ts +168 -0
  107. package/dist/color/color-matching-functions.js +309 -0
  108. package/dist/color/color-matching-functions.js.map +1 -0
  109. package/dist/color/colorimetry-math.d.ts +52 -0
  110. package/dist/color/colorimetry-math.js +144 -0
  111. package/dist/color/colorimetry-math.js.map +1 -0
  112. package/dist/color/gamut-mapping.d.ts +54 -0
  113. package/dist/color/gamut-mapping.js +107 -0
  114. package/dist/color/gamut-mapping.js.map +1 -0
  115. package/dist/color/illuminants.d.ts +182 -0
  116. package/dist/color/illuminants.js +434 -0
  117. package/dist/color/illuminants.js.map +1 -0
  118. package/dist/color/rgb-color-spaces.d.ts +79 -0
  119. package/dist/color/rgb-color-spaces.js +115 -0
  120. package/dist/color/rgb-color-spaces.js.map +1 -0
  121. package/dist/color/sensor-color-development.d.ts +33 -11
  122. package/dist/color/sensor-color-development.js +104 -30
  123. package/dist/color/sensor-color-development.js.map +1 -1
  124. package/dist/color/srgb-icc.d.ts +9 -2
  125. package/dist/color/srgb-icc.js +16 -5
  126. package/dist/color/srgb-icc.js.map +1 -1
  127. package/dist/color/srgb-transfer.d.ts +1 -2
  128. package/dist/color/srgb-transfer.js +1 -1
  129. package/dist/color/srgb-transfer.js.map +1 -1
  130. package/dist/color/white-balance.d.ts +68 -19
  131. package/dist/color/white-balance.js +168 -35
  132. package/dist/color/white-balance.js.map +1 -1
  133. package/dist/composition/image-formation-plan.d.ts +152 -128
  134. package/dist/composition/image-formation-plan.js +292 -138
  135. package/dist/composition/image-formation-plan.js.map +1 -1
  136. package/dist/composition/plan-consumer.d.ts +6 -7
  137. package/dist/composition/plan-consumer.js +14 -11
  138. package/dist/composition/plan-consumer.js.map +1 -1
  139. package/dist/core/calculation-result.d.ts +21 -14
  140. package/dist/core/calculation-result.js +209 -11
  141. package/dist/core/calculation-result.js.map +1 -1
  142. package/dist/core/canonical-json.d.ts +13 -8
  143. package/dist/core/canonical-json.js +34 -15
  144. package/dist/core/canonical-json.js.map +1 -1
  145. package/dist/core/configuration-error.d.ts +5 -4
  146. package/dist/core/configuration-error.js +5 -3
  147. package/dist/core/configuration-error.js.map +1 -1
  148. package/dist/core/evidence-provenance.d.ts +12 -12
  149. package/dist/core/evidence-provenance.js +10 -9
  150. package/dist/core/evidence-provenance.js.map +1 -1
  151. package/dist/core/image-formation.d.ts +11 -10
  152. package/dist/core/image-formation.js +11 -9
  153. package/dist/core/image-formation.js.map +1 -1
  154. package/dist/core/owned-data.d.ts +9 -17
  155. package/dist/core/owned-data.js +9 -16
  156. package/dist/core/owned-data.js.map +1 -1
  157. package/dist/core/portable-math.d.ts +15 -0
  158. package/dist/core/portable-math.js +56 -0
  159. package/dist/core/portable-math.js.map +1 -0
  160. package/dist/core/record-validation.d.ts +48 -9
  161. package/dist/core/record-validation.js +93 -19
  162. package/dist/core/record-validation.js.map +1 -1
  163. package/dist/core/scientific-assurance.d.ts +16 -14
  164. package/dist/core/scientific-assurance.js +22 -18
  165. package/dist/core/scientific-assurance.js.map +1 -1
  166. package/dist/core/spectral-composition.d.ts +13 -14
  167. package/dist/core/spectral-composition.js +30 -27
  168. package/dist/core/spectral-composition.js.map +1 -1
  169. package/dist/core/spectral.d.ts +5 -6
  170. package/dist/core/spectral.js +9 -7
  171. package/dist/core/spectral.js.map +1 -1
  172. package/dist/core/validation.d.ts +3 -6
  173. package/dist/core/validation.js +3 -5
  174. package/dist/core/validation.js.map +1 -1
  175. package/dist/core/version.d.ts +6 -6
  176. package/dist/core/version.js +6 -5
  177. package/dist/core/version.js.map +1 -1
  178. package/dist/equipment/exposure-capabilities.d.ts +10 -10
  179. package/dist/equipment/exposure-capabilities.js +40 -30
  180. package/dist/equipment/exposure-capabilities.js.map +1 -1
  181. package/dist/equipment/generic-tier-assets.d.ts +13 -6
  182. package/dist/equipment/generic-tier-assets.js +34 -15
  183. package/dist/equipment/generic-tier-assets.js.map +1 -1
  184. package/dist/equipment/generic-tier-presets.d.ts +5 -6
  185. package/dist/equipment/generic-tier-presets.js +15 -13
  186. package/dist/equipment/generic-tier-presets.js.map +1 -1
  187. package/dist/equipment/iso-capabilities.d.ts +21 -22
  188. package/dist/equipment/iso-capabilities.js +49 -44
  189. package/dist/equipment/iso-capabilities.js.map +1 -1
  190. package/dist/equipment/metering-capabilities.d.ts +5 -6
  191. package/dist/equipment/metering-capabilities.js +22 -19
  192. package/dist/equipment/metering-capabilities.js.map +1 -1
  193. package/dist/equipment/release-capabilities.d.ts +3 -4
  194. package/dist/equipment/release-capabilities.js +18 -14
  195. package/dist/equipment/release-capabilities.js.map +1 -1
  196. package/dist/exposure/exposure-duration-control.d.ts +19 -17
  197. package/dist/exposure/exposure-duration-control.js +27 -23
  198. package/dist/exposure/exposure-duration-control.js.map +1 -1
  199. package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
  200. package/dist/exposure/exposure-mode-resolver.js +127 -82
  201. package/dist/exposure/exposure-mode-resolver.js.map +1 -1
  202. package/dist/exposure/exposure.d.ts +17 -16
  203. package/dist/exposure/exposure.js +22 -15
  204. package/dist/exposure/exposure.js.map +1 -1
  205. package/dist/exposure/flash-ttl.d.ts +135 -0
  206. package/dist/exposure/flash-ttl.js +193 -0
  207. package/dist/exposure/flash-ttl.js.map +1 -0
  208. package/dist/exposure/flash.d.ts +144 -36
  209. package/dist/exposure/flash.js +259 -59
  210. package/dist/exposure/flash.js.map +1 -1
  211. package/dist/exposure/metering-scene-radiance.d.ts +10 -10
  212. package/dist/exposure/metering-scene-radiance.js +42 -23
  213. package/dist/exposure/metering-scene-radiance.js.map +1 -1
  214. package/dist/exposure/metering-target.d.ts +8 -8
  215. package/dist/exposure/metering-target.js +30 -20
  216. package/dist/exposure/metering-target.js.map +1 -1
  217. package/dist/exposure/metering-temporal.d.ts +16 -15
  218. package/dist/exposure/metering-temporal.js +41 -19
  219. package/dist/exposure/metering-temporal.js.map +1 -1
  220. package/dist/exposure/metering.d.ts +64 -17
  221. package/dist/exposure/metering.js +159 -30
  222. package/dist/exposure/metering.js.map +1 -1
  223. package/dist/exposure/program-line.d.ts +5 -5
  224. package/dist/exposure/program-line.js +20 -13
  225. package/dist/exposure/program-line.js.map +1 -1
  226. package/dist/facade/camera-preset.d.ts +8 -0
  227. package/dist/facade/camera-preset.js +102 -0
  228. package/dist/facade/camera-preset.js.map +1 -0
  229. package/dist/facade/chart-radiance-batch.d.ts +57 -0
  230. package/dist/facade/chart-radiance-batch.js +121 -0
  231. package/dist/facade/chart-radiance-batch.js.map +1 -0
  232. package/dist/facade/chart-scenes.d.ts +177 -0
  233. package/dist/facade/chart-scenes.js +232 -0
  234. package/dist/facade/chart-scenes.js.map +1 -0
  235. package/dist/facade/diffraction-provider.d.ts +30 -0
  236. package/dist/facade/diffraction-provider.js +127 -0
  237. package/dist/facade/diffraction-provider.js.map +1 -0
  238. package/dist/facade/host-yield.d.ts +7 -0
  239. package/dist/facade/host-yield.js +19 -0
  240. package/dist/facade/host-yield.js.map +1 -0
  241. package/dist/facade/scene-radiance.d.ts +117 -0
  242. package/dist/facade/scene-radiance.js +205 -0
  243. package/dist/facade/scene-radiance.js.map +1 -0
  244. package/dist/facade/simulate-capture.d.ts +363 -0
  245. package/dist/facade/simulate-capture.js +1281 -0
  246. package/dist/facade/simulate-capture.js.map +1 -0
  247. package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
  248. package/dist/gpu/chart-radiance-gpu.js +176 -0
  249. package/dist/gpu/chart-radiance-gpu.js.map +1 -0
  250. package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
  251. package/dist/gpu/image-kernel-accelerator.js +720 -0
  252. package/dist/gpu/image-kernel-accelerator.js.map +1 -0
  253. package/dist/gpu/image-kernel-execution.d.ts +92 -0
  254. package/dist/gpu/image-kernel-execution.js +84 -0
  255. package/dist/gpu/image-kernel-execution.js.map +1 -0
  256. package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
  257. package/dist/gpu/sensor-stage-gpu.js +317 -0
  258. package/dist/gpu/sensor-stage-gpu.js.map +1 -0
  259. package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
  260. package/dist/gpu/temporal-sum-gpu.js +150 -0
  261. package/dist/gpu/temporal-sum-gpu.js.map +1 -0
  262. package/dist/gpu/webgpu-runtime.d.ts +63 -0
  263. package/dist/gpu/webgpu-runtime.js +215 -0
  264. package/dist/gpu/webgpu-runtime.js.map +1 -0
  265. package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
  266. package/dist/gpu/wgsl-chart-kernel.js +165 -0
  267. package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
  268. package/dist/gpu/wgsl-kernels.d.ts +53 -0
  269. package/dist/gpu/wgsl-kernels.js +365 -0
  270. package/dist/gpu/wgsl-kernels.js.map +1 -0
  271. package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
  272. package/dist/gpu/wgsl-sensor-kernel.js +409 -0
  273. package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
  274. package/dist/index.d.ts +91 -25
  275. package/dist/index.js +60 -15
  276. package/dist/index.js.map +1 -1
  277. package/dist/motion/camera-rotation.d.ts +92 -40
  278. package/dist/motion/camera-rotation.js +84 -47
  279. package/dist/motion/camera-rotation.js.map +1 -1
  280. package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
  281. package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
  282. package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
  283. package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
  284. package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
  285. package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
  286. package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
  287. package/dist/motion/capture-rotation-trajectory.js +36 -26
  288. package/dist/motion/capture-rotation-trajectory.js.map +1 -1
  289. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
  290. package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
  291. package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
  292. package/dist/motion/extended-object-projection.d.ts +19 -16
  293. package/dist/motion/extended-object-projection.js +38 -18
  294. package/dist/motion/extended-object-projection.js.map +1 -1
  295. package/dist/motion/projected-motion.d.ts +18 -17
  296. package/dist/motion/projected-motion.js +25 -17
  297. package/dist/motion/projected-motion.js.map +1 -1
  298. package/dist/motion/temporal-exposure-sum.d.ts +55 -0
  299. package/dist/motion/temporal-exposure-sum.js +141 -0
  300. package/dist/motion/temporal-exposure-sum.js.map +1 -0
  301. package/dist/motion/video-sequence.d.ts +111 -0
  302. package/dist/motion/video-sequence.js +179 -0
  303. package/dist/motion/video-sequence.js.map +1 -0
  304. package/dist/optics/aperture.d.ts +14 -15
  305. package/dist/optics/aperture.js +13 -11
  306. package/dist/optics/aperture.js.map +1 -1
  307. package/dist/optics/atmospheric-haze.d.ts +83 -0
  308. package/dist/optics/atmospheric-haze.js +113 -0
  309. package/dist/optics/atmospheric-haze.js.map +1 -0
  310. package/dist/optics/brown-conrady-distortion.d.ts +116 -0
  311. package/dist/optics/brown-conrady-distortion.js +291 -0
  312. package/dist/optics/brown-conrady-distortion.js.map +1 -0
  313. package/dist/optics/circle-of-confusion.d.ts +10 -10
  314. package/dist/optics/circle-of-confusion.js +15 -11
  315. package/dist/optics/circle-of-confusion.js.map +1 -1
  316. package/dist/optics/complex-pupil-psf.d.ts +64 -33
  317. package/dist/optics/complex-pupil-psf.js +190 -98
  318. package/dist/optics/complex-pupil-psf.js.map +1 -1
  319. package/dist/optics/depth-of-field.d.ts +25 -15
  320. package/dist/optics/depth-of-field.js +67 -27
  321. package/dist/optics/depth-of-field.js.map +1 -1
  322. package/dist/optics/diffraction-psf-profile.d.ts +118 -0
  323. package/dist/optics/diffraction-psf-profile.js +252 -0
  324. package/dist/optics/diffraction-psf-profile.js.map +1 -0
  325. package/dist/optics/diffraction.d.ts +14 -13
  326. package/dist/optics/diffraction.js +14 -10
  327. package/dist/optics/diffraction.js.map +1 -1
  328. package/dist/optics/focus-breathing.d.ts +88 -27
  329. package/dist/optics/focus-breathing.js +114 -23
  330. package/dist/optics/focus-breathing.js.map +1 -1
  331. package/dist/optics/focus-state.d.ts +18 -18
  332. package/dist/optics/focus-state.js +21 -15
  333. package/dist/optics/focus-state.js.map +1 -1
  334. package/dist/optics/front-of-lens-filter.d.ts +45 -14
  335. package/dist/optics/front-of-lens-filter.js +259 -88
  336. package/dist/optics/front-of-lens-filter.js.map +1 -1
  337. package/dist/optics/illumination-vignetting.d.ts +16 -17
  338. package/dist/optics/illumination-vignetting.js +40 -17
  339. package/dist/optics/illumination-vignetting.js.map +1 -1
  340. package/dist/optics/irradiance-convolution.d.ts +59 -0
  341. package/dist/optics/irradiance-convolution.js +138 -0
  342. package/dist/optics/irradiance-convolution.js.map +1 -0
  343. package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
  344. package/dist/optics/lateral-chromatic-aberration.js +33 -23
  345. package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
  346. package/dist/optics/lens-psf-kernels.d.ts +89 -0
  347. package/dist/optics/lens-psf-kernels.js +175 -0
  348. package/dist/optics/lens-psf-kernels.js.map +1 -0
  349. package/dist/optics/lens-psf-profile.d.ts +78 -46
  350. package/dist/optics/lens-psf-profile.js +335 -124
  351. package/dist/optics/lens-psf-profile.js.map +1 -1
  352. package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
  353. package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
  354. package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
  355. package/dist/optics/polygon-diffraction.d.ts +80 -23
  356. package/dist/optics/polygon-diffraction.js +130 -25
  357. package/dist/optics/polygon-diffraction.js.map +1 -1
  358. package/dist/optics/profile-contract.d.ts +5 -6
  359. package/dist/optics/profile-contract.js +14 -11
  360. package/dist/optics/profile-contract.js.map +1 -1
  361. package/dist/optics/psf-foundation.d.ts +23 -23
  362. package/dist/optics/psf-foundation.js +24 -21
  363. package/dist/optics/psf-foundation.js.map +1 -1
  364. package/dist/optics/pupil-vignetting.d.ts +118 -0
  365. package/dist/optics/pupil-vignetting.js +264 -0
  366. package/dist/optics/pupil-vignetting.js.map +1 -0
  367. package/dist/optics/radial-distortion.d.ts +34 -33
  368. package/dist/optics/radial-distortion.js +37 -30
  369. package/dist/optics/radial-distortion.js.map +1 -1
  370. package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
  371. package/dist/optics/scene-to-sensor-irradiance.js +73 -45
  372. package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
  373. package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
  374. package/dist/optics/scene-to-sensor-quadrature.js +16 -11
  375. package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
  376. package/dist/optics/sensor-aperture-rays.d.ts +20 -4
  377. package/dist/optics/sensor-aperture-rays.js +32 -14
  378. package/dist/optics/sensor-aperture-rays.js.map +1 -1
  379. package/dist/optics/sensor-environment-query.d.ts +81 -16
  380. package/dist/optics/sensor-environment-query.js +145 -12
  381. package/dist/optics/sensor-environment-query.js.map +1 -1
  382. package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
  383. package/dist/optics/sensor-psf-quadrature.js +18 -11
  384. package/dist/optics/sensor-psf-quadrature.js.map +1 -1
  385. package/dist/optics/sensor-psf-support.d.ts +8 -6
  386. package/dist/optics/sensor-psf-support.js +8 -5
  387. package/dist/optics/sensor-psf-support.js.map +1 -1
  388. package/dist/optics/stray-light.d.ts +22 -19
  389. package/dist/optics/stray-light.js +18 -12
  390. package/dist/optics/stray-light.js.map +1 -1
  391. package/dist/optics/thin-lens.d.ts +10 -9
  392. package/dist/optics/thin-lens.js +12 -8
  393. package/dist/optics/thin-lens.js.map +1 -1
  394. package/dist/optics/zernike-wavefront.d.ts +154 -0
  395. package/dist/optics/zernike-wavefront.js +352 -0
  396. package/dist/optics/zernike-wavefront.js.map +1 -0
  397. package/dist/output/capture-corrected-sdr.d.ts +16 -8
  398. package/dist/output/capture-corrected-sdr.js +16 -8
  399. package/dist/output/capture-corrected-sdr.js.map +1 -1
  400. package/dist/output/capture-geometry.d.ts +34 -36
  401. package/dist/output/capture-geometry.js +52 -32
  402. package/dist/output/capture-geometry.js.map +1 -1
  403. package/dist/output/capture-sdr.d.ts +7 -6
  404. package/dist/output/capture-sdr.js +11 -8
  405. package/dist/output/capture-sdr.js.map +1 -1
  406. package/dist/output/crop.d.ts +22 -6
  407. package/dist/output/crop.js +40 -6
  408. package/dist/output/crop.js.map +1 -1
  409. package/dist/output/geometric-transforms.d.ts +60 -23
  410. package/dist/output/geometric-transforms.js +111 -24
  411. package/dist/output/geometric-transforms.js.map +1 -1
  412. package/dist/output/lens-corrections.d.ts +27 -19
  413. package/dist/output/lens-corrections.js +29 -13
  414. package/dist/output/lens-corrections.js.map +1 -1
  415. package/dist/output/native-capture-sdr.d.ts +71 -16
  416. package/dist/output/native-capture-sdr.js +190 -33
  417. package/dist/output/native-capture-sdr.js.map +1 -1
  418. package/dist/output/png-encoder.d.ts +65 -0
  419. package/dist/output/png-encoder.js +461 -0
  420. package/dist/output/png-encoder.js.map +1 -0
  421. package/dist/output/print-contrast-reference.d.ts +10 -9
  422. package/dist/output/print-contrast-reference.js +10 -8
  423. package/dist/output/print-contrast-reference.js.map +1 -1
  424. package/dist/output/print-detail.d.ts +18 -17
  425. package/dist/output/print-detail.js +12 -10
  426. package/dist/output/print-detail.js.map +1 -1
  427. package/dist/output/print-jpeg.d.ts +26 -5
  428. package/dist/output/print-jpeg.js +117 -50
  429. package/dist/output/print-jpeg.js.map +1 -1
  430. package/dist/output/print-plan.d.ts +19 -19
  431. package/dist/output/print-plan.js +11 -10
  432. package/dist/output/print-plan.js.map +1 -1
  433. package/dist/output/print-region-statistics.d.ts +14 -15
  434. package/dist/output/print-region-statistics.js +11 -11
  435. package/dist/output/print-region-statistics.js.map +1 -1
  436. package/dist/output/sdr-rendering.d.ts +48 -10
  437. package/dist/output/sdr-rendering.js +114 -25
  438. package/dist/output/sdr-rendering.js.map +1 -1
  439. package/dist/output/subject-framing-crop.d.ts +6 -10
  440. package/dist/output/subject-framing-crop.js +23 -13
  441. package/dist/output/subject-framing-crop.js.map +1 -1
  442. package/dist/processing/demosaic.d.ts +90 -0
  443. package/dist/processing/demosaic.js +275 -0
  444. package/dist/processing/demosaic.js.map +1 -0
  445. package/dist/processing/denoise.d.ts +68 -0
  446. package/dist/processing/denoise.js +214 -0
  447. package/dist/processing/denoise.js.map +1 -0
  448. package/dist/processing/focus-stacking.d.ts +17 -0
  449. package/dist/processing/focus-stacking.js +80 -0
  450. package/dist/processing/focus-stacking.js.map +1 -0
  451. package/dist/processing/hdr.d.ts +54 -0
  452. package/dist/processing/hdr.js +172 -0
  453. package/dist/processing/hdr.js.map +1 -0
  454. package/dist/processing/image-ops.d.ts +66 -0
  455. package/dist/processing/image-ops.js +192 -0
  456. package/dist/processing/image-ops.js.map +1 -0
  457. package/dist/processing/panorama.d.ts +51 -0
  458. package/dist/processing/panorama.js +305 -0
  459. package/dist/processing/panorama.js.map +1 -0
  460. package/dist/processing/processing-task.d.ts +85 -0
  461. package/dist/processing/processing-task.js +164 -0
  462. package/dist/processing/processing-task.js.map +1 -0
  463. package/dist/processing/tone-mapping.d.ts +69 -0
  464. package/dist/processing/tone-mapping.js +310 -0
  465. package/dist/processing/tone-mapping.js.map +1 -0
  466. package/dist/schema/camera.d.ts +5 -4
  467. package/dist/schema/illumination-spectral.d.ts +13 -19
  468. package/dist/schema/illumination-spectral.js +23 -19
  469. package/dist/schema/illumination-spectral.js.map +1 -1
  470. package/dist/schema/illumination-temporal.d.ts +12 -15
  471. package/dist/schema/illumination-temporal.js +43 -28
  472. package/dist/schema/illumination-temporal.js.map +1 -1
  473. package/dist/schema/illumination.d.ts +5 -4
  474. package/dist/schema/illumination.js +55 -20
  475. package/dist/schema/illumination.js.map +1 -1
  476. package/dist/schema/scene-radiance-temporal.d.ts +9 -11
  477. package/dist/schema/scene-radiance-temporal.js +26 -23
  478. package/dist/schema/scene-radiance-temporal.js.map +1 -1
  479. package/dist/schema/scene-radiance.d.ts +17 -17
  480. package/dist/schema/scene-radiance.js +56 -34
  481. package/dist/schema/scene-radiance.js.map +1 -1
  482. package/dist/schema/scene.d.ts +14 -13
  483. package/dist/schema/validation.d.ts +0 -1
  484. package/dist/schema/validation.js +17 -15
  485. package/dist/schema/validation.js.map +1 -1
  486. package/dist/sensor/accumulated-charge.d.ts +45 -64
  487. package/dist/sensor/accumulated-charge.js +41 -47
  488. package/dist/sensor/accumulated-charge.js.map +1 -1
  489. package/dist/sensor/architecture.d.ts +22 -25
  490. package/dist/sensor/architecture.js +17 -16
  491. package/dist/sensor/architecture.js.map +1 -1
  492. package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
  493. package/dist/sensor/camera-saturation-capacity.js +36 -34
  494. package/dist/sensor/camera-saturation-capacity.js.map +1 -1
  495. package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
  496. package/dist/sensor/capture-color-sampling-binding.js +39 -41
  497. package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
  498. package/dist/sensor/capture-mode-timing.d.ts +8 -9
  499. package/dist/sensor/capture-mode-timing.js +24 -21
  500. package/dist/sensor/capture-mode-timing.js.map +1 -1
  501. package/dist/sensor/capture-mode.d.ts +28 -30
  502. package/dist/sensor/capture-mode.js +33 -31
  503. package/dist/sensor/capture-mode.js.map +1 -1
  504. package/dist/sensor/color-sampling.d.ts +30 -33
  505. package/dist/sensor/color-sampling.js +32 -37
  506. package/dist/sensor/color-sampling.js.map +1 -1
  507. package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
  508. package/dist/sensor/constant-rate-temporal-integration.js +28 -26
  509. package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
  510. package/dist/sensor/dark-current.d.ts +53 -49
  511. package/dist/sensor/dark-current.js +87 -46
  512. package/dist/sensor/dark-current.js.map +1 -1
  513. package/dist/sensor/environment-photo-signal.d.ts +71 -30
  514. package/dist/sensor/environment-photo-signal.js +127 -46
  515. package/dist/sensor/environment-photo-signal.js.map +1 -1
  516. package/dist/sensor/eqe-electron-rate.d.ts +14 -13
  517. package/dist/sensor/eqe-electron-rate.js +34 -14
  518. package/dist/sensor/eqe-electron-rate.js.map +1 -1
  519. package/dist/sensor/eqe-local-exposure.d.ts +24 -24
  520. package/dist/sensor/eqe-local-exposure.js +15 -11
  521. package/dist/sensor/eqe-local-exposure.js.map +1 -1
  522. package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
  523. package/dist/sensor/eqe-temporal-exposure.js +15 -10
  524. package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
  525. package/dist/sensor/exposure-window.d.ts +48 -34
  526. package/dist/sensor/exposure-window.js +77 -36
  527. package/dist/sensor/exposure-window.js.map +1 -1
  528. package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
  529. package/dist/sensor/fixed-pattern-noise.js +166 -0
  530. package/dist/sensor/fixed-pattern-noise.js.map +1 -0
  531. package/dist/sensor/iso-gain.d.ts +44 -0
  532. package/dist/sensor/iso-gain.js +119 -0
  533. package/dist/sensor/iso-gain.js.map +1 -0
  534. package/dist/sensor/iso-signal-chain.d.ts +25 -48
  535. package/dist/sensor/iso-signal-chain.js +52 -66
  536. package/dist/sensor/iso-signal-chain.js.map +1 -1
  537. package/dist/sensor/local-exposure-binding.d.ts +21 -21
  538. package/dist/sensor/local-exposure-binding.js +22 -18
  539. package/dist/sensor/local-exposure-binding.js.map +1 -1
  540. package/dist/sensor/optical-stack.d.ts +36 -40
  541. package/dist/sensor/optical-stack.js +34 -37
  542. package/dist/sensor/optical-stack.js.map +1 -1
  543. package/dist/sensor/photon-energy.d.ts +22 -28
  544. package/dist/sensor/photon-energy.js +42 -34
  545. package/dist/sensor/photon-energy.js.map +1 -1
  546. package/dist/sensor/physical-charge-capacity.d.ts +20 -30
  547. package/dist/sensor/physical-charge-capacity.js +35 -36
  548. package/dist/sensor/physical-charge-capacity.js.map +1 -1
  549. package/dist/sensor/pixel-pitch.d.ts +2 -3
  550. package/dist/sensor/pixel-pitch.js +4 -2
  551. package/dist/sensor/pixel-pitch.js.map +1 -1
  552. package/dist/sensor/radiometry-readiness.d.ts +13 -15
  553. package/dist/sensor/radiometry-readiness.js +20 -17
  554. package/dist/sensor/radiometry-readiness.js.map +1 -1
  555. package/dist/sensor/raw-readout.d.ts +173 -83
  556. package/dist/sensor/raw-readout.js +425 -160
  557. package/dist/sensor/raw-readout.js.map +1 -1
  558. package/dist/sensor/raw-reconstruction.d.ts +112 -44
  559. package/dist/sensor/raw-reconstruction.js +200 -47
  560. package/dist/sensor/raw-reconstruction.js.map +1 -1
  561. package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
  562. package/dist/sensor/readout-exposure-linkage.js +125 -27
  563. package/dist/sensor/readout-exposure-linkage.js.map +1 -1
  564. package/dist/sensor/readout-timing.d.ts +43 -44
  565. package/dist/sensor/readout-timing.js +38 -30
  566. package/dist/sensor/readout-timing.js.map +1 -1
  567. package/dist/sensor/response-application-compatibility.d.ts +21 -28
  568. package/dist/sensor/response-application-compatibility.js +35 -34
  569. package/dist/sensor/response-application-compatibility.js.map +1 -1
  570. package/dist/sensor/response-operating-range.d.ts +26 -35
  571. package/dist/sensor/response-operating-range.js +40 -39
  572. package/dist/sensor/response-operating-range.js.map +1 -1
  573. package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
  574. package/dist/sensor/responsivity-photocurrent.js +57 -40
  575. package/dist/sensor/responsivity-photocurrent.js.map +1 -1
  576. package/dist/sensor/sampling-aperture.d.ts +21 -25
  577. package/dist/sensor/sampling-aperture.js +29 -28
  578. package/dist/sensor/sampling-aperture.js.map +1 -1
  579. package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
  580. package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
  581. package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
  582. package/dist/sensor/sensor-geometry.d.ts +28 -32
  583. package/dist/sensor/sensor-geometry.js +35 -20
  584. package/dist/sensor/sensor-geometry.js.map +1 -1
  585. package/dist/sensor/signal-noise.d.ts +14 -16
  586. package/dist/sensor/signal-noise.js +15 -13
  587. package/dist/sensor/signal-noise.js.map +1 -1
  588. package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
  589. package/dist/sensor/spatial-sample-reduction.js +39 -48
  590. package/dist/sensor/spatial-sample-reduction.js.map +1 -1
  591. package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
  592. package/dist/sensor/spatial-sampling-quadrature.js +31 -36
  593. package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
  594. package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
  595. package/dist/sensor/spatio-spectral-reduction.js +24 -29
  596. package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
  597. package/dist/sensor/spectral-coverage.d.ts +6 -9
  598. package/dist/sensor/spectral-coverage.js +9 -6
  599. package/dist/sensor/spectral-coverage.js.map +1 -1
  600. package/dist/sensor/spectral-quadrature.d.ts +46 -60
  601. package/dist/sensor/spectral-quadrature.js +38 -48
  602. package/dist/sensor/spectral-quadrature.js.map +1 -1
  603. package/dist/sensor/spectral-response.d.ts +53 -41
  604. package/dist/sensor/spectral-response.js +80 -47
  605. package/dist/sensor/spectral-response.js.map +1 -1
  606. package/dist/sensor/stochastic-seed.d.ts +50 -0
  607. package/dist/sensor/stochastic-seed.js +123 -0
  608. package/dist/sensor/stochastic-seed.js.map +1 -0
  609. package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
  610. package/dist/sensor/temporal-eqe-sum.js +5 -6
  611. package/dist/sensor/temporal-eqe-sum.js.map +1 -1
  612. package/dist/sensor/temporal-photo-signal.d.ts +5 -6
  613. package/dist/sensor/temporal-photo-signal.js +11 -10
  614. package/dist/sensor/temporal-photo-signal.js.map +1 -1
  615. package/dist/sensor/temporal-sample-binding.d.ts +1 -2
  616. package/dist/sensor/temporal-sample-binding.js +3 -3
  617. package/dist/sensor/temporal-sample-binding.js.map +1 -1
  618. package/dist/simulation/poc-simulation.d.ts +16 -16
  619. package/dist/simulation/poc-simulation.js +20 -15
  620. package/dist/simulation/poc-simulation.js.map +1 -1
  621. package/dist/stabilization/camera-shake.d.ts +42 -18
  622. package/dist/stabilization/camera-shake.js +43 -20
  623. package/dist/stabilization/camera-shake.js.map +1 -1
  624. package/dist/stabilization/system.d.ts +44 -41
  625. package/dist/stabilization/system.js +196 -108
  626. package/dist/stabilization/system.js.map +1 -1
  627. package/docs/AGENT_GUIDE.md +183 -0
  628. package/docs/API_REFERENCE.md +777 -2
  629. package/docs/QUICK_START.md +663 -0
  630. package/docs/USAGE.md +1719 -714
  631. package/docs/api/camera-equivalent-focal-length.md +6 -7
  632. package/docs/api/camera-field-of-view.md +16 -8
  633. package/docs/api/camera-lens-projection.md +246 -0
  634. package/docs/api/camera-projected-object-size.md +6 -5
  635. package/docs/api/capture-capture-export-metadata.md +10 -10
  636. package/docs/api/capture-dng-import.md +134 -0
  637. package/docs/api/capture-environment-raw-producer.md +17 -11
  638. package/docs/api/capture-export-jpeg.md +16 -0
  639. package/docs/api/capture-focus-control.md +25 -47
  640. package/docs/api/capture-linear-encoding.md +21 -12
  641. package/docs/api/capture-lossless-jpeg.md +49 -0
  642. package/docs/api/capture-native-environment-optical-stage.md +75 -0
  643. package/docs/api/capture-native-environment-raw.md +161 -4
  644. package/docs/api/capture-native-raw-development.md +69 -8
  645. package/docs/api/capture-native-raw-dng.md +84 -0
  646. package/docs/api/capture-native-raw.md +21 -10
  647. package/docs/api/capture-packed-sensor-raw.md +156 -0
  648. package/docs/api/capture-photographic-export.md +69 -31
  649. package/docs/api/capture-raw-frame-reconstruction.md +8 -8
  650. package/docs/api/capture-raw-white-level.md +37 -0
  651. package/docs/api/capture-release-sequence.md +6 -7
  652. package/docs/api/capture-sensor-raw-frame.md +6 -6
  653. package/docs/api/capture-sensor-raw-producer.md +17 -11
  654. package/docs/api/capture-simulated-capture.md +15 -15
  655. package/docs/api/color-camera-color-matrix.md +103 -0
  656. package/docs/api/color-capture-color.md +22 -11
  657. package/docs/api/color-chromatic-adaptation.md +82 -0
  658. package/docs/api/color-color-difference.md +134 -0
  659. package/docs/api/color-color-matching-functions.md +259 -0
  660. package/docs/api/color-colorimetry-math.md +54 -0
  661. package/docs/api/color-gamut-mapping.md +72 -0
  662. package/docs/api/color-illuminants.md +280 -0
  663. package/docs/api/color-rgb-color-spaces.md +151 -0
  664. package/docs/api/color-sensor-color-development.md +27 -0
  665. package/docs/api/color-srgb-icc.md +2 -4
  666. package/docs/api/color-white-balance.md +95 -19
  667. package/docs/api/composition-image-formation-plan.md +124 -95
  668. package/docs/api/composition-plan-consumer.md +7 -7
  669. package/docs/api/core-calculation-result.md +18 -14
  670. package/docs/api/core-configuration-error.md +1 -1
  671. package/docs/api/core-image-formation.md +7 -7
  672. package/docs/api/core-scientific-assurance.md +12 -10
  673. package/docs/api/core-spectral-composition.md +14 -14
  674. package/docs/api/core-spectral.md +6 -6
  675. package/docs/api/core-validation.md +3 -3
  676. package/docs/api/core-version.md +7 -6
  677. package/docs/api/equipment-exposure-capabilities.md +11 -10
  678. package/docs/api/equipment-generic-tier-assets.md +7 -2
  679. package/docs/api/equipment-generic-tier-presets.md +6 -6
  680. package/docs/api/equipment-iso-capabilities.md +18 -18
  681. package/docs/api/equipment-metering-capabilities.md +6 -6
  682. package/docs/api/equipment-release-capabilities.md +4 -4
  683. package/docs/api/exports.json +2253 -3
  684. package/docs/api/exposure-exposure-duration-control.md +9 -9
  685. package/docs/api/exposure-exposure-mode-resolver.md +35 -31
  686. package/docs/api/exposure-exposure.md +10 -10
  687. package/docs/api/exposure-flash-ttl.md +182 -0
  688. package/docs/api/exposure-flash.md +183 -28
  689. package/docs/api/exposure-metering-scene-radiance.md +11 -10
  690. package/docs/api/exposure-metering-target.md +9 -8
  691. package/docs/api/exposure-metering-temporal.md +8 -8
  692. package/docs/api/exposure-metering.md +69 -9
  693. package/docs/api/exposure-program-line.md +6 -5
  694. package/docs/api/facade-chart-radiance-batch.md +96 -0
  695. package/docs/api/facade-chart-scenes.md +240 -0
  696. package/docs/api/facade-scene-radiance.md +122 -0
  697. package/docs/api/facade-simulate-capture.md +397 -0
  698. package/docs/api/gpu-image-kernel-accelerator.md +157 -0
  699. package/docs/api/gpu-image-kernel-execution.md +152 -0
  700. package/docs/api/motion-camera-rotation.md +43 -26
  701. package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
  702. package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
  703. package/docs/api/motion-capture-rotation-trajectory.md +15 -15
  704. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
  705. package/docs/api/motion-extended-object-projection.md +10 -8
  706. package/docs/api/motion-projected-motion.md +8 -8
  707. package/docs/api/motion-temporal-exposure-sum.md +98 -0
  708. package/docs/api/motion-video-sequence.md +159 -0
  709. package/docs/api/optics-aperture.md +8 -8
  710. package/docs/api/optics-atmospheric-haze.md +104 -0
  711. package/docs/api/optics-brown-conrady-distortion.md +123 -0
  712. package/docs/api/optics-circle-of-confusion.md +5 -4
  713. package/docs/api/optics-complex-pupil-psf.md +57 -16
  714. package/docs/api/optics-depth-of-field.md +12 -6
  715. package/docs/api/optics-diffraction-psf-profile.md +96 -0
  716. package/docs/api/optics-diffraction.md +8 -7
  717. package/docs/api/optics-focus-breathing.md +104 -16
  718. package/docs/api/optics-focus-state.md +9 -10
  719. package/docs/api/optics-front-of-lens-filter.md +72 -14
  720. package/docs/api/optics-illumination-vignetting.md +10 -10
  721. package/docs/api/optics-irradiance-convolution.md +95 -0
  722. package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
  723. package/docs/api/optics-lens-psf-kernels.md +72 -0
  724. package/docs/api/optics-lens-psf-profile.md +48 -26
  725. package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
  726. package/docs/api/optics-polygon-diffraction.md +78 -13
  727. package/docs/api/optics-profile-contract.md +4 -4
  728. package/docs/api/optics-psf-foundation.md +12 -12
  729. package/docs/api/optics-pupil-vignetting.md +132 -0
  730. package/docs/api/optics-radial-distortion.md +12 -12
  731. package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
  732. package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
  733. package/docs/api/optics-sensor-aperture-rays.md +3 -2
  734. package/docs/api/optics-sensor-environment-query.md +52 -9
  735. package/docs/api/optics-sensor-psf-quadrature.md +13 -10
  736. package/docs/api/optics-stray-light.md +12 -11
  737. package/docs/api/optics-thin-lens.md +4 -3
  738. package/docs/api/optics-zernike-wavefront.md +229 -0
  739. package/docs/api/output-capture-corrected-sdr.md +10 -7
  740. package/docs/api/output-capture-geometry.md +35 -36
  741. package/docs/api/output-capture-sdr.md +4 -4
  742. package/docs/api/output-crop.md +7 -4
  743. package/docs/api/output-geometric-transforms.md +65 -19
  744. package/docs/api/output-lens-corrections.md +17 -15
  745. package/docs/api/output-native-capture-sdr.md +26 -13
  746. package/docs/api/output-png-encoder.md +105 -0
  747. package/docs/api/output-print-contrast-reference.md +8 -8
  748. package/docs/api/output-print-detail.md +14 -14
  749. package/docs/api/output-print-jpeg.md +22 -5
  750. package/docs/api/output-print-plan.md +18 -18
  751. package/docs/api/output-print-region-statistics.md +14 -14
  752. package/docs/api/output-sdr-rendering.md +52 -10
  753. package/docs/api/output-subject-framing-crop.md +5 -6
  754. package/docs/api/processing-demosaic.md +120 -0
  755. package/docs/api/processing-denoise.md +148 -0
  756. package/docs/api/processing-focus-stacking.md +41 -0
  757. package/docs/api/processing-hdr.md +113 -0
  758. package/docs/api/processing-panorama.md +82 -0
  759. package/docs/api/processing-processing-task.md +107 -0
  760. package/docs/api/processing-tone-mapping.md +142 -0
  761. package/docs/api/schema-camera.md +6 -4
  762. package/docs/api/schema-illumination-spectral.md +10 -11
  763. package/docs/api/schema-illumination-temporal.md +13 -15
  764. package/docs/api/schema-illumination.md +4 -4
  765. package/docs/api/schema-scene-radiance-temporal.md +10 -11
  766. package/docs/api/schema-scene-radiance.md +18 -17
  767. package/docs/api/schema-scene.md +9 -9
  768. package/docs/api/schema-validation.md +1 -1
  769. package/docs/api/sensor-accumulated-charge.md +12 -20
  770. package/docs/api/sensor-architecture.md +15 -16
  771. package/docs/api/sensor-camera-saturation-capacity.md +9 -11
  772. package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
  773. package/docs/api/sensor-capture-mode-timing.md +9 -9
  774. package/docs/api/sensor-capture-mode.md +29 -30
  775. package/docs/api/sensor-color-sampling.md +31 -33
  776. package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
  777. package/docs/api/sensor-dark-current.md +30 -14
  778. package/docs/api/sensor-environment-photo-signal.md +13 -6
  779. package/docs/api/sensor-eqe-electron-rate.md +9 -8
  780. package/docs/api/sensor-eqe-local-exposure.md +18 -17
  781. package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
  782. package/docs/api/sensor-exposure-window.md +24 -24
  783. package/docs/api/sensor-fixed-pattern-noise.md +104 -0
  784. package/docs/api/sensor-iso-gain.md +63 -0
  785. package/docs/api/sensor-iso-signal-chain.md +13 -22
  786. package/docs/api/sensor-local-exposure-binding.md +12 -13
  787. package/docs/api/sensor-optical-stack.md +37 -40
  788. package/docs/api/sensor-photon-energy.md +10 -11
  789. package/docs/api/sensor-physical-charge-capacity.md +8 -13
  790. package/docs/api/sensor-pixel-pitch.md +1 -1
  791. package/docs/api/sensor-radiometry-readiness.md +9 -9
  792. package/docs/api/sensor-raw-readout.md +118 -52
  793. package/docs/api/sensor-raw-reconstruction.md +97 -20
  794. package/docs/api/sensor-readout-exposure-linkage.md +120 -24
  795. package/docs/api/sensor-readout-timing.md +33 -35
  796. package/docs/api/sensor-response-application-compatibility.md +9 -11
  797. package/docs/api/sensor-response-operating-range.md +14 -18
  798. package/docs/api/sensor-responsivity-photocurrent.md +9 -12
  799. package/docs/api/sensor-sampling-aperture.md +22 -25
  800. package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
  801. package/docs/api/sensor-sensor-geometry.md +23 -24
  802. package/docs/api/sensor-signal-noise.md +10 -10
  803. package/docs/api/sensor-spatial-sample-reduction.md +27 -30
  804. package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
  805. package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
  806. package/docs/api/sensor-spectral-coverage.md +5 -5
  807. package/docs/api/sensor-spectral-quadrature.md +33 -35
  808. package/docs/api/sensor-spectral-response.md +28 -16
  809. package/docs/api/sensor-temporal-photo-signal.md +6 -6
  810. package/docs/api/simulation-poc-simulation.md +17 -16
  811. package/docs/api/stabilization-camera-shake.md +29 -10
  812. package/docs/api/stabilization-system.md +25 -21
  813. package/docs/examples/production-request.json +3821 -2157
  814. package/docs/examples/simulate-capture.mjs +14 -0
  815. package/llms.txt +35 -0
  816. package/package.json +32 -11
  817. package/AGENTS.md +0 -674
  818. package/CONTRIBUTING.md +0 -76
  819. package/DCO +0 -33
  820. package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
  821. package/dist/camera/field-of-view.d.ts.map +0 -1
  822. package/dist/camera/projected-object-size.d.ts.map +0 -1
  823. package/dist/capture/capture-export-metadata.d.ts.map +0 -1
  824. package/dist/capture/environment-raw-producer.d.ts.map +0 -1
  825. package/dist/capture/export-jpeg.d.ts.map +0 -1
  826. package/dist/capture/export-tiff.d.ts.map +0 -1
  827. package/dist/capture/focus-control.d.ts.map +0 -1
  828. package/dist/capture/linear-encoding.d.ts.map +0 -1
  829. package/dist/capture/native-environment-raw.d.ts.map +0 -1
  830. package/dist/capture/native-raw-development.d.ts.map +0 -1
  831. package/dist/capture/native-raw.d.ts.map +0 -1
  832. package/dist/capture/photographic-export.d.ts.map +0 -1
  833. package/dist/capture/raw-frame-limits.d.ts.map +0 -1
  834. package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
  835. package/dist/capture/release-sequence.d.ts.map +0 -1
  836. package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
  837. package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
  838. package/dist/capture/simulated-capture.d.ts.map +0 -1
  839. package/dist/color/capture-color.d.ts.map +0 -1
  840. package/dist/color/sensor-color-development.d.ts.map +0 -1
  841. package/dist/color/srgb-icc.d.ts.map +0 -1
  842. package/dist/color/srgb-transfer.d.ts.map +0 -1
  843. package/dist/color/white-balance.d.ts.map +0 -1
  844. package/dist/composition/image-formation-plan.d.ts.map +0 -1
  845. package/dist/composition/plan-consumer.d.ts.map +0 -1
  846. package/dist/core/calculation-result.d.ts.map +0 -1
  847. package/dist/core/canonical-json.d.ts.map +0 -1
  848. package/dist/core/configuration-error.d.ts.map +0 -1
  849. package/dist/core/evidence-provenance.d.ts.map +0 -1
  850. package/dist/core/image-formation.d.ts.map +0 -1
  851. package/dist/core/owned-data.d.ts.map +0 -1
  852. package/dist/core/record-validation.d.ts.map +0 -1
  853. package/dist/core/scientific-assurance.d.ts.map +0 -1
  854. package/dist/core/spectral-composition.d.ts.map +0 -1
  855. package/dist/core/spectral.d.ts.map +0 -1
  856. package/dist/core/validation.d.ts.map +0 -1
  857. package/dist/core/version.d.ts.map +0 -1
  858. package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
  859. package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
  860. package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
  861. package/dist/equipment/iso-capabilities.d.ts.map +0 -1
  862. package/dist/equipment/metering-capabilities.d.ts.map +0 -1
  863. package/dist/equipment/release-capabilities.d.ts.map +0 -1
  864. package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
  865. package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
  866. package/dist/exposure/exposure.d.ts.map +0 -1
  867. package/dist/exposure/flash.d.ts.map +0 -1
  868. package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
  869. package/dist/exposure/metering-target.d.ts.map +0 -1
  870. package/dist/exposure/metering-temporal.d.ts.map +0 -1
  871. package/dist/exposure/metering.d.ts.map +0 -1
  872. package/dist/exposure/program-line.d.ts.map +0 -1
  873. package/dist/index.d.ts.map +0 -1
  874. package/dist/motion/camera-rotation.d.ts.map +0 -1
  875. package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
  876. package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
  877. package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
  878. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
  879. package/dist/motion/extended-object-projection.d.ts.map +0 -1
  880. package/dist/motion/projected-motion.d.ts.map +0 -1
  881. package/dist/optics/aperture.d.ts.map +0 -1
  882. package/dist/optics/circle-of-confusion.d.ts.map +0 -1
  883. package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
  884. package/dist/optics/depth-of-field.d.ts.map +0 -1
  885. package/dist/optics/diffraction.d.ts.map +0 -1
  886. package/dist/optics/focus-breathing.d.ts.map +0 -1
  887. package/dist/optics/focus-state.d.ts.map +0 -1
  888. package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
  889. package/dist/optics/illumination-vignetting.d.ts.map +0 -1
  890. package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
  891. package/dist/optics/lens-psf-profile.d.ts.map +0 -1
  892. package/dist/optics/polygon-diffraction.d.ts.map +0 -1
  893. package/dist/optics/profile-contract.d.ts.map +0 -1
  894. package/dist/optics/psf-foundation.d.ts.map +0 -1
  895. package/dist/optics/radial-distortion.d.ts.map +0 -1
  896. package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
  897. package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
  898. package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
  899. package/dist/optics/sensor-environment-query.d.ts.map +0 -1
  900. package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
  901. package/dist/optics/sensor-psf-support.d.ts.map +0 -1
  902. package/dist/optics/stray-light.d.ts.map +0 -1
  903. package/dist/optics/thin-lens.d.ts.map +0 -1
  904. package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
  905. package/dist/output/capture-geometry.d.ts.map +0 -1
  906. package/dist/output/capture-sdr.d.ts.map +0 -1
  907. package/dist/output/crop.d.ts.map +0 -1
  908. package/dist/output/geometric-transforms.d.ts.map +0 -1
  909. package/dist/output/lens-corrections.d.ts.map +0 -1
  910. package/dist/output/native-capture-sdr.d.ts.map +0 -1
  911. package/dist/output/print-contrast-reference.d.ts.map +0 -1
  912. package/dist/output/print-detail.d.ts.map +0 -1
  913. package/dist/output/print-jpeg.d.ts.map +0 -1
  914. package/dist/output/print-plan.d.ts.map +0 -1
  915. package/dist/output/print-region-statistics.d.ts.map +0 -1
  916. package/dist/output/sdr-rendering.d.ts.map +0 -1
  917. package/dist/output/subject-framing-crop.d.ts.map +0 -1
  918. package/dist/schema/camera.d.ts.map +0 -1
  919. package/dist/schema/camera.js +0 -3
  920. package/dist/schema/camera.js.map +0 -1
  921. package/dist/schema/illumination-spectral.d.ts.map +0 -1
  922. package/dist/schema/illumination-temporal.d.ts.map +0 -1
  923. package/dist/schema/illumination.d.ts.map +0 -1
  924. package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
  925. package/dist/schema/scene-radiance.d.ts.map +0 -1
  926. package/dist/schema/scene.d.ts.map +0 -1
  927. package/dist/schema/scene.js +0 -3
  928. package/dist/schema/scene.js.map +0 -1
  929. package/dist/schema/validation.d.ts.map +0 -1
  930. package/dist/sensor/accumulated-charge.d.ts.map +0 -1
  931. package/dist/sensor/architecture.d.ts.map +0 -1
  932. package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
  933. package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
  934. package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
  935. package/dist/sensor/capture-mode.d.ts.map +0 -1
  936. package/dist/sensor/color-sampling.d.ts.map +0 -1
  937. package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
  938. package/dist/sensor/dark-current.d.ts.map +0 -1
  939. package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
  940. package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
  941. package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
  942. package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
  943. package/dist/sensor/exposure-window.d.ts.map +0 -1
  944. package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
  945. package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
  946. package/dist/sensor/optical-stack.d.ts.map +0 -1
  947. package/dist/sensor/photon-energy.d.ts.map +0 -1
  948. package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
  949. package/dist/sensor/pixel-pitch.d.ts.map +0 -1
  950. package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
  951. package/dist/sensor/raw-readout.d.ts.map +0 -1
  952. package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
  953. package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
  954. package/dist/sensor/readout-timing.d.ts.map +0 -1
  955. package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
  956. package/dist/sensor/response-operating-range.d.ts.map +0 -1
  957. package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
  958. package/dist/sensor/sampling-aperture.d.ts.map +0 -1
  959. package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
  960. package/dist/sensor/sensor-geometry.d.ts.map +0 -1
  961. package/dist/sensor/signal-noise.d.ts.map +0 -1
  962. package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
  963. package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
  964. package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
  965. package/dist/sensor/spectral-coverage.d.ts.map +0 -1
  966. package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
  967. package/dist/sensor/spectral-response.d.ts.map +0 -1
  968. package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
  969. package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
  970. package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
  971. package/dist/simulation/poc-simulation.d.ts.map +0 -1
  972. package/dist/stabilization/camera-shake.d.ts.map +0 -1
  973. package/dist/stabilization/system.d.ts.map +0 -1
  974. package/docs/API_STYLE.md +0 -235
  975. package/docs/ARCHITECTURE.md +0 -356
  976. package/docs/AUTOMATION_COORDINATION.md +0 -190
  977. package/docs/CAPTURE_COLOR.md +0 -25
  978. package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
  979. package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
  980. package/docs/CAPTURE_SDR.md +0 -22
  981. package/docs/DENSE_PUPIL_QUALIFICATION.md +0 -121
  982. package/docs/DEVELOPERS.md +0 -68
  983. package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
  984. package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
  985. package/docs/EXPORT_ACCEPTANCE.md +0 -133
  986. package/docs/GENERIC_TIER_PRESETS.md +0 -269
  987. package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
  988. package/docs/IMAGE_FORMATION.md +0 -247
  989. package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
  990. package/docs/MOTION_AND_SIGNAL.md +0 -250
  991. package/docs/NATIVE_CAPTURE_SDR.md +0 -70
  992. package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
  993. package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
  994. package/docs/NATIVE_RAW_AND_PRINT.md +0 -54
  995. package/docs/NUMERICAL_CORRECTNESS.md +0 -191
  996. package/docs/PERFORMANCE_BASELINE.md +0 -56
  997. package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
  998. package/docs/PHYSICS_FOUNDATION.md +0 -426
  999. package/docs/POC_API.md +0 -278
  1000. package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
  1001. package/docs/POC_PROJECTION_REUSE.md +0 -124
  1002. package/docs/PRINT_195_196_REVIEW.md +0 -93
  1003. package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
  1004. package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
  1005. package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
  1006. package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
  1007. package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
  1008. package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
  1009. package/docs/PRINT_PLANNING.md +0 -75
  1010. package/docs/PRINT_REGION_STATISTICS.md +0 -38
  1011. package/docs/PROCESSED_OUTPUT.md +0 -157
  1012. package/docs/PRODUCTION_COMPOSITION.md +0 -373
  1013. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
  1014. package/docs/PROVENANCE.md +0 -115
  1015. package/docs/PSF_FOUNDATION.md +0 -165
  1016. package/docs/RAW_FRAME_ENVELOPE.md +0 -56
  1017. package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
  1018. package/docs/RELEASE_1_0.md +0 -66
  1019. package/docs/RELEASE_1_0_1.md +0 -61
  1020. package/docs/RELEASE_1_1_0.md +0 -25
  1021. package/docs/RELEASE_1_2_0.md +0 -51
  1022. package/docs/RELEASE_1_3_0.md +0 -15
  1023. package/docs/RELEASE_1_4_0.md +0 -23
  1024. package/docs/RELEASE_1_5_0.md +0 -105
  1025. package/docs/RELEASE_AUDIT.md +0 -39
  1026. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
  1027. package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
  1028. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
  1029. package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
  1030. package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
  1031. package/docs/SDR_RENDERING.md +0 -33
  1032. package/docs/SENSOR_APERTURE_RAYS.md +0 -23
  1033. package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
  1034. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
  1035. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
  1036. package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
  1037. package/docs/SENSOR_RAW_FRAME.md +0 -20
  1038. package/docs/SENSOR_RAW_PRODUCER.md +0 -77
  1039. package/docs/SEPARABLE_EMISSION_DRAFT.md +0 -103
  1040. package/docs/SIGNAL_CONFORMANCE.md +0 -23
  1041. package/docs/SIMULATED_CAPTURE.md +0 -65
  1042. package/docs/STABILIZATION.md +0 -234
  1043. package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
  1044. package/docs/TIER_ACCEPTANCE.md +0 -129
  1045. package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
  1046. package/docs/V1_COMPOSITION_MAP.md +0 -123
  1047. package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
  1048. package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
  1049. package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
  1050. package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
  1051. package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
  1052. package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
  1053. package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
  1054. package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
  1055. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
  1056. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
  1057. package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
  1058. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
  1059. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
  1060. package/docs/licenses/castleCSF-MIT.txt +0 -21
  1061. package/docs/validation/dense-pupil-2026-10-06/pilot.jsonl +0 -6
  1062. package/docs/validation/documentation-fragments.json +0 -212
  1063. package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
  1064. package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
  1065. package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
  1066. package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
  1067. package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
  1068. package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
  1069. package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
  1070. package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
  1071. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
  1072. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
  1073. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
  1074. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
  1075. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
  1076. package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
  1077. package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
  1078. package/docs/validation/print-196-candidate-capabilities.json +0 -28
  1079. package/docs/validation/print-196-candidate-evidence.json +0 -356
  1080. package/docs/validation/print-196-engine-acceptance.json +0 -81
  1081. package/docs/validation/print-detail-capabilities.json +0 -103
  1082. package/docs/validation/print-detail-jpeg-evidence.json +0 -116
  1083. package/docs/validation/print-detail-sdr-evidence.json +0 -81
  1084. package/docs/validation/release-audit-inventory.json +0 -1306
  1085. package/docs/validation/tier-acceptance-report-v1.json +0 -2538
@@ -7,7 +7,7 @@ import { type SceneToSensorIrradianceProfile } from "../optics/scene-to-sensor-i
7
7
  import type { RadialDistortionProfile } from "../optics/radial-distortion.js";
8
8
  import type { LateralChromaticAberrationProfile } from "../optics/lateral-chromatic-aberration.js";
9
9
  import type { IlluminationVignettingProfile } from "../optics/illumination-vignetting.js";
10
- export declare const GENERIC_EQUIPMENT_TIER_PRESET_VERSION: "1.0.0";
10
+ export declare const GENERIC_EQUIPMENT_TIER_PRESET_VERSION: "2.0.0";
11
11
  export declare const GENERIC_EQUIPMENT_TIERS: readonly ["consumer", "prosumer", "professional"];
12
12
  export interface GenericEquipmentTierProfileReference {
13
13
  profileId: string;
@@ -37,21 +37,20 @@ export interface ResolvedGenericTierLensProfiles {
37
37
  correction: GenericLensCorrectionProfile;
38
38
  scientificStatus: "approximation";
39
39
  }
40
- /** Exact-version catalog; no hidden latest alias and no sensor-size default. */
40
+ /** Catalog of exact versions. No hidden "latest" alias and no default sensor size. */
41
41
  export declare function resolveGenericEquipmentTierCatalog(input: {
42
42
  presetVersion: string;
43
43
  }): readonly GenericEquipmentTierPreset[];
44
- /** Match lens tier by default; cross-tier combinations remain normal supported selections. */
44
+ /** The lens tier matches the body tier by default. Mixing tiers is a normal, supported choice. */
45
45
  export declare function createGenericEquipmentTierSelection(input: {
46
46
  presetVersion: string;
47
47
  bodyTier: GenericEquipmentTier;
48
48
  lensTier?: GenericEquipmentTier;
49
49
  }): GenericEquipmentTierSelection;
50
- /** Reject stale/missing/retuned profile versions on saved simulations rather than selecting today's defaults. */
50
+ /** On a saved simulation, rejects profile versions that are stale, missing or retuned, instead of picking today's defaults. */
51
51
  export declare function parseGenericEquipmentTierSelection(value: unknown): GenericEquipmentTierSelection;
52
- /** Bind the finite matched-reference optical slice to one exact generic selected state, without extrapolation. */
52
+ /** Ties the finite matched-reference optical data to one exact generic selected state. Never extrapolates. */
53
53
  export declare function resolveGenericEquipmentTierLensProfiles(input: {
54
54
  selection: GenericEquipmentTierSelection;
55
55
  state: OpticalProfileState;
56
56
  }): ResolvedGenericTierLensProfiles;
57
- //# sourceMappingURL=generic-tier-presets.d.ts.map
@@ -1,10 +1,11 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  /**
3
- * Module boundary and integration notes.
4
- * Exact-version catalog; no hidden latest alias and no sensor-size default.
5
- * Match lens tier by default; cross-tier combinations remain normal supported selections.
6
- * @see docs/GENERIC_TIER_PRESETS.md for equations, coordinate/unit conventions, blockers and support
7
- * limits.
3
+ * Generic tier presets: a catalog of exact preset versions for bodies and lenses.
4
+ *
5
+ * There is no hidden "latest" alias and no default sensor size. By default the lens tier matches the
6
+ * body tier, but mixing tiers is a normal, supported choice.
7
+ * @see docs/GENERIC_TIER_PRESETS.md for the equations, units, coordinate conventions, known blockers
8
+ * and support limits.
8
9
  */
9
10
  import { freezeOwnedData } from "../core/owned-data.js";
10
11
  import { InvalidConfigurationError } from "../core/configuration-error.js";
@@ -15,13 +16,13 @@ import { parseGenericLensCorrectionProfile } from "../output/lens-corrections.js
15
16
  import { parseLensStrayLightProfile } from "../optics/stray-light.js";
16
17
  import { parseLensComplexPupilProfile } from "../optics/complex-pupil-psf.js";
17
18
  import { parseSceneToSensorIrradianceProfile } from "../optics/scene-to-sensor-irradiance.js";
18
- export const GENERIC_EQUIPMENT_TIER_PRESET_VERSION = "1.0.0";
19
+ export const GENERIC_EQUIPMENT_TIER_PRESET_VERSION = "2.0.0";
19
20
  export const GENERIC_EQUIPMENT_TIERS = Object.freeze(["consumer", "prosumer", "professional"]);
20
21
  const catalog = freezeOwnedData(GENERIC_TIER_ASSETS);
21
22
  function preset(tier) {
22
23
  return catalog.find((p) => p.tier === tier);
23
24
  }
24
- /** Exact-version catalog; no hidden latest alias and no sensor-size default. */
25
+ /** Catalog of exact versions. No hidden "latest" alias and no default sensor size. */
25
26
  export function resolveGenericEquipmentTierCatalog(input) {
26
27
  const r = record(input, ["presetVersion"]);
27
28
  if (r.presetVersion !== GENERIC_EQUIPMENT_TIER_PRESET_VERSION)
@@ -32,9 +33,10 @@ function bodyReferences(p) {
32
33
  const b = p.body;
33
34
  return [b.exposure, b.iso, b.signalChain, b.release, b.focus, b.stabilization, b.whiteBalance, b.meteringCapabilities, b.flashSync]
34
35
  .map((profile) => ({ profileId: profile.profileId, profileVersion: profile.profileVersion }))
35
- .concat([...b.readout, b.readoutTiming, ...b.metering].map((a) => ({ profileId: a.assetId, profileVersion: a.assetVersion })));
36
+ .concat([...b.readout, b.readoutTiming, b.rollingReadoutTiming, b.fixedPatternNoise, ...b.metering]
37
+ .map((a) => ({ profileId: a.assetId, profileVersion: a.assetVersion })));
36
38
  }
37
- /** Match lens tier by default; cross-tier combinations remain normal supported selections. */
39
+ /** The lens tier matches the body tier by default. Mixing tiers is a normal, supported choice. */
38
40
  export function createGenericEquipmentTierSelection(input) {
39
41
  const r = record(input, ["presetVersion", "bodyTier", "lensTier"]);
40
42
  resolveGenericEquipmentTierCatalog({ presetVersion: r.presetVersion });
@@ -45,7 +47,7 @@ export function createGenericEquipmentTierSelection(input) {
45
47
  profileReferences: [...bodyReferences(body), { profileId: lens.lens.exposure.profileId, profileVersion: lens.lens.exposure.profileVersion }, ...lens.lens.profileReferences],
46
48
  sensorFormatSelectedByTier: false, scientificTierMultiplierApplied: false });
47
49
  }
48
- /** Reject stale/missing/retuned profile versions on saved simulations rather than selecting today's defaults. */
50
+ /** On a saved simulation, rejects profile versions that are stale, missing or retuned, instead of picking today's defaults. */
49
51
  export function parseGenericEquipmentTierSelection(value) {
50
52
  const r = record(value, ["schemaVersion", "presetVersion", "bodyTier", "lensTier", "bodyPresetId", "lensPresetId", "profileReferences",
51
53
  "sensorFormatSelectedByTier", "scientificTierMultiplierApplied"]);
@@ -62,7 +64,7 @@ export function parseGenericEquipmentTierSelection(value) {
62
64
  }
63
65
  return expected;
64
66
  }
65
- /** Bind the finite matched-reference optical slice to one exact generic selected state, without extrapolation. */
67
+ /** Ties the finite matched-reference optical data to one exact generic selected state. Never extrapolates. */
66
68
  export function resolveGenericEquipmentTierLensProfiles(input) {
67
69
  const request = record(input, ["selection", "state"]), selection = parseGenericEquipmentTierSelection(request.selection), state = parseOpticalProfileState(request.state);
68
70
  const b = preset(selection.bodyTier), l = preset(selection.lensTier), a = l.lens.matchedReference;
@@ -101,8 +103,8 @@ export function resolveGenericEquipmentTierLensProfiles(input) {
101
103
  const transmission = parseSceneToSensorIrradianceProfile({ schemaVersion: "0.1.0", profileId: id + ":transmission", profileVersion: version, lensProfileId: id,
102
104
  scientificStatus: "approximation", applicability: { focalLengthMm: { minimum: 50, maximum: 50 }, nominalFNumber: { minimum: 4, maximum: 4 },
103
105
  focus: { kind: "finite-distance-range", objectDistanceM: { minimum: 5, maximum: 5 } } }, transmission: { kind: "spectral-transmission", scientificStatus: "approximation",
104
- wavelengthBasis: "vacuum", samples: { value: [{ wavelengthNanometers: 540, linearTransmissionFactor: a.transmission },
105
- { wavelengthNanometers: 560, linearTransmissionFactor: a.transmission }], evidence }, uncertainty: { kind: "not-quantified", limitation: "Synthetic flat narrow-band reference." } },
106
+ wavelengthBasis: "vacuum", samples: { value: [{ wavelengthNanometers: 380, linearTransmissionFactor: a.transmission },
107
+ { wavelengthNanometers: 780, linearTransmissionFactor: a.transmission }], evidence }, uncertainty: { kind: "not-quantified", limitation: "Synthetic spectrally flat reference over 380-780 nm." } },
106
108
  distortionAreaMappingOwnership: "not-applied-by-bridge", psfRedistributionOwnership: "downstream-normalized-energy-redistribution", sensorOpticalStackIncluded: false,
107
109
  strayLightIncluded: false, polarizationModeled: false, wavelengthChangingBehaviorModeled: false, volumetricScatteringModeled: false, evidence, limitations: l.lens.limitations });
108
110
  const pupils = [0, 1, 2].flatMap((field) => [-20, 0, 20].map((defocus, index) => parseLensComplexPupilProfile({ schemaVersion: "0.1.0",
@@ -1 +1 @@
1
- {"version":3,"file":"generic-tier-presets.js","sourceRoot":"","sources":["../../src/equipment/generic-tier-presets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generic-tier-presets.js","sourceRoot":"","sources":["../../src/equipment/generic-tier-presets.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Generic tier presets: a catalog of exact preset versions for bodies and lenses.\n *\n * There is no hidden \"latest\" alias and no default sensor size. By default the lens tier matches the\n * body tier, but mixing tiers is a normal, supported choice.\n * @see docs/GENERIC_TIER_PRESETS.md for the equations, units, coordinate conventions, known blockers\n * and support limits.\n */\n\nimport { freezeOwnedData } from \"../core/owned-data.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport { choice, record, parseOpticalProfileState, type OpticalProfileState, type GenericOpticalEvidence } from \"../optics/profile-contract.js\";\nimport { GENERIC_TIER_ASSETS, type GenericEquipmentTier, type GenericEquipmentTierPreset } from \"./generic-tier-assets.js\";\nimport { resolveGenericEquipmentExposureCapabilities } from \"./exposure-capabilities.js\";\nimport { parseGenericLensCorrectionProfile, type GenericLensCorrectionProfile } from \"../output/lens-corrections.js\";\nimport { parseLensStrayLightProfile, type LensStrayLightProfile } from \"../optics/stray-light.js\";\nimport { parseLensComplexPupilProfile, type LensComplexPupilProfile } from \"../optics/complex-pupil-psf.js\";\nimport { parseSceneToSensorIrradianceProfile, type SceneToSensorIrradianceProfile } from \"../optics/scene-to-sensor-irradiance.js\";\nimport type { RadialDistortionProfile } from \"../optics/radial-distortion.js\";\nimport type { LateralChromaticAberrationProfile } from \"../optics/lateral-chromatic-aberration.js\";\nimport type { IlluminationVignettingProfile } from \"../optics/illumination-vignetting.js\";\n\nexport const GENERIC_EQUIPMENT_TIER_PRESET_VERSION = \"2.0.0\" as const;\nexport const GENERIC_EQUIPMENT_TIERS = Object.freeze([\"consumer\", \"prosumer\", \"professional\"] as const);\nexport interface GenericEquipmentTierProfileReference { profileId: string; profileVersion: string }\nexport interface GenericEquipmentTierSelection {\n schemaVersion: \"0.1.0\"; presetVersion: typeof GENERIC_EQUIPMENT_TIER_PRESET_VERSION;\n bodyTier: GenericEquipmentTier; lensTier: GenericEquipmentTier;\n bodyPresetId: string; lensPresetId: string;\n profileReferences: readonly GenericEquipmentTierProfileReference[];\n sensorFormatSelectedByTier: false; scientificTierMultiplierApplied: false;\n}\nexport interface ResolvedGenericTierLensProfiles {\n selection: GenericEquipmentTierSelection;\n state: OpticalProfileState;\n radial: RadialDistortionProfile;\n lateralCa: LateralChromaticAberrationProfile;\n vignetting: IlluminationVignettingProfile;\n breathingProjectionScale: number;\n transmission: SceneToSensorIrradianceProfile;\n pupils: readonly LensComplexPupilProfile[];\n stray: LensStrayLightProfile;\n correction: GenericLensCorrectionProfile;\n scientificStatus: \"approximation\";\n}\nconst catalog = freezeOwnedData(GENERIC_TIER_ASSETS);\nfunction preset(tier: GenericEquipmentTier): GenericEquipmentTierPreset {\n return catalog.find((p) => p.tier === tier)!;\n}\n/** Catalog of exact versions. No hidden \"latest\" alias and no default sensor size. */\nexport function resolveGenericEquipmentTierCatalog(input: { presetVersion: string }): readonly GenericEquipmentTierPreset[] {\n const r = record(input, [\"presetVersion\"]);\n if (r.presetVersion !== GENERIC_EQUIPMENT_TIER_PRESET_VERSION) throw new InvalidConfigurationError(\"Unknown equipment preset version; historical definitions may not silently fall back.\");\n return catalog;\n}\nfunction bodyReferences(p: GenericEquipmentTierPreset): GenericEquipmentTierProfileReference[] {\n const b = p.body;\n return [b.exposure, b.iso, b.signalChain, b.release, b.focus, b.stabilization, b.whiteBalance, b.meteringCapabilities, b.flashSync]\n .map((profile) => ({ profileId: profile.profileId, profileVersion: profile.profileVersion }))\n .concat([...b.readout, b.readoutTiming, b.rollingReadoutTiming, b.fixedPatternNoise, ...b.metering]\n .map((a) => ({ profileId: a.assetId, profileVersion: a.assetVersion })));\n}\n/** The lens tier matches the body tier by default. Mixing tiers is a normal, supported choice. */\nexport function createGenericEquipmentTierSelection(input: {\n presetVersion: string; bodyTier: GenericEquipmentTier; lensTier?: GenericEquipmentTier;\n}): GenericEquipmentTierSelection {\n const r = record(input, [\"presetVersion\", \"bodyTier\", \"lensTier\"]);\n resolveGenericEquipmentTierCatalog({ presetVersion: r.presetVersion as string });\n const bodyTier = choice(r.bodyTier, GENERIC_EQUIPMENT_TIERS), lensTier = choice(r.lensTier === undefined ? bodyTier : r.lensTier, GENERIC_EQUIPMENT_TIERS);\n const body = preset(bodyTier), lens = preset(lensTier);\n return freezeOwnedData({ schemaVersion: \"0.1.0\", presetVersion: GENERIC_EQUIPMENT_TIER_PRESET_VERSION, bodyTier, lensTier,\n bodyPresetId: body.presetId+\":body\", lensPresetId: lens.presetId+\":lens\",\n profileReferences: [...bodyReferences(body), { profileId: lens.lens.exposure.profileId, profileVersion: lens.lens.exposure.profileVersion }, ...lens.lens.profileReferences],\n sensorFormatSelectedByTier: false, scientificTierMultiplierApplied: false });\n}\n/** On a saved simulation, rejects profile versions that are stale, missing or retuned, instead of picking today's defaults. */\nexport function parseGenericEquipmentTierSelection(value: unknown): GenericEquipmentTierSelection {\n const r = record(value, [\"schemaVersion\", \"presetVersion\", \"bodyTier\", \"lensTier\", \"bodyPresetId\", \"lensPresetId\", \"profileReferences\",\n \"sensorFormatSelectedByTier\", \"scientificTierMultiplierApplied\"]);\n const expected = createGenericEquipmentTierSelection({ presetVersion: r.presetVersion as string,\n bodyTier: r.bodyTier as GenericEquipmentTier, lensTier: choice(r.lensTier, GENERIC_EQUIPMENT_TIERS) });\n if (r.schemaVersion !== expected.schemaVersion || r.bodyPresetId !== expected.bodyPresetId || r.lensPresetId !== expected.lensPresetId ||\n r.sensorFormatSelectedByTier !== false || r.scientificTierMultiplierApplied !== false || !Array.isArray(r.profileReferences) ||\n r.profileReferences.length !== expected.profileReferences.length) throw new InvalidConfigurationError(\"Saved equipment selection differs from its exact preset manifest.\");\n for (let i = 0; i < expected.profileReferences.length; i++) {\n const ref = record(r.profileReferences[i], [\"profileId\", \"profileVersion\"]), actual = expected.profileReferences[i]!;\n if (ref.profileId !== actual.profileId || ref.profileVersion !== actual.profileVersion) throw new InvalidConfigurationError(\"Saved equipment profile reference drift.\");\n }\n return expected;\n}\n/** Ties the finite matched-reference optical data to one exact generic selected state. Never extrapolates. */\nexport function resolveGenericEquipmentTierLensProfiles(input: { selection: GenericEquipmentTierSelection; state: OpticalProfileState }): ResolvedGenericTierLensProfiles {\n const request = record(input, [\"selection\", \"state\"]), selection = parseGenericEquipmentTierSelection(request.selection), state = parseOpticalProfileState(request.state);\n const b = preset(selection.bodyTier), l = preset(selection.lensTier), a = l.lens.matchedReference;\n if (state.bodyId !== b.body.exposure.profileId.replace(/:exposure$/, \"\") || state.bodyVersion !== selection.presetVersion ||\n state.lensId !== l.lens.exposure.profileId.replace(/:exposure$/, \"\") || state.lensVersion !== selection.presetVersion ||\n state.focalLengthMm !== a.focalLengthMm || state.aperture !== a.aperture || state.focusDistanceM !== a.focusDistanceM ||\n state.captureMode !== \"still\" || state.stabilizationMode !== \"off\") throw new InvalidConfigurationError(\"No optical reference slice for this exact generic system/acquisition state.\");\n resolveGenericEquipmentExposureCapabilities({ bodyProfile: b.body.exposure, lensProfile: l.lens.exposure, selectedFocalLengthMm: state.focalLengthMm });\n const id = state.lensId, version = state.lensVersion, evidence = l.evidence;\n const opticalEvidence: GenericOpticalEvidence = { kind: \"generic-parametric\", basis: \"Photivra-owned educational tier design values, not measured calibration.\",\n residualNote: \"Finite matched-reference approximation; no branded signature or aggregate physical error bound.\", sources: evidence };\n const coeff = (k1: number): RadialDistortionProfile => ({ normalizationRadiusMm: a.normalizationRadiusMm, maximumNormalizedRadius: 1.1,\n coefficients: { k1, k2: 0, k3: 0 } });\n const radial = coeff(a.distortionK1), lateralCa: LateralChromaticAberrationProfile = { normalizationRadiusMm: a.normalizationRadiusMm,\n maximumNormalizedRadius: 1.1, baseDistortionCoefficients: radial.coefficients,\n redCoefficientOffset: { k1: a.lateralCaK1Offset, k2: 0, k3: 0 }, blueCoefficientOffset: { k1: -a.lateralCaK1Offset, k2: 0, k3: 0 } };\n const vignetting: IlluminationVignettingProfile = { normalizationRadiusMm: a.normalizationRadiusMm, maximumNormalizedRadius: 1.1,\n coefficients: { r2: a.vignettingR2, r4: 0, r6: 0 } };\n const identity = { version, domain: \"reconstructed-linear\" as const, availability: \"toggle\" as const, defaultEnabled: true,\n dependencies: [], requiredByStabilizationModes: [], residualNote: opticalEvidence.residualNote };\n const correction = parseGenericLensCorrectionProfile({ schemaVersion: \"0.1.0\", id: id+\":correction\", version, state, evidence: opticalEvidence,\n components: [{ ...identity, id: \"geometry\", kind: \"geometry\", transform: { id: id+\":radial-map\", version,\n domain: \"reconstructed-linear\", purpose: \"distortion\", kind: \"radial\", profile: radial } },\n { ...identity, id: \"lateral-ca\", kind: \"lateral-ca\", transforms: Object.fromEntries([\"red\", \"green\", \"blue\"].map((channel, i) => [channel, {\n id: id+\":ca-map:\"+channel, version, domain: \"reconstructed-linear\", purpose: \"lateral-ca\", kind: \"radial\",\n profile: coeff([a.lateralCaK1Offset*a.correctionCaFraction, 0, -a.lateralCaK1Offset*a.correctionCaFraction][i]!) }])) },\n { ...identity, id: \"gain\", kind: \"peripheral-illumination\", profile: vignetting, strength: a.correctionGainStrength }] });\n const stray = parseLensStrayLightProfile({ schemaVersion: \"0.1.0\", id: id+\":stray\", version, state, evidence: opticalEvidence,\n interaction: \"lens-reflections\", wavelengthNm: a.wavelengthNm, wavelengthBasis: \"vacuum\", maximumSourceAngleDegrees: 60,\n referenceEntranceAreaMm2: Math.PI*(50/4/2)**2, responses: [\n { id: \"ghost\", kind: \"ghost\", centroidMmPerDegree: [-.02,0,0,-.02], offsetMm: { x: 1, y: 0 }, sigmaMm: .5, axisPowerFraction: a.ghostPowerFraction, angularSlope: 1 },\n { id: \"veil\", kind: \"veil\", centroidMmPerDegree: [0,0,0,0], offsetMm: { x: 0, y: 0 }, sigmaMm: 10, axisPowerFraction: a.veilPowerFraction, angularSlope: 0 }] });\n const transmission = parseSceneToSensorIrradianceProfile({ schemaVersion: \"0.1.0\", profileId: id+\":transmission\", profileVersion: version, lensProfileId: id,\n scientificStatus: \"approximation\", applicability: { focalLengthMm: { minimum: 50, maximum: 50 }, nominalFNumber: { minimum: 4, maximum: 4 },\n focus: { kind: \"finite-distance-range\", objectDistanceM: { minimum: 5, maximum: 5 } } }, transmission: { kind: \"spectral-transmission\", scientificStatus: \"approximation\",\n wavelengthBasis: \"vacuum\", samples: { value: [{ wavelengthNanometers: 380, linearTransmissionFactor: a.transmission },\n { wavelengthNanometers: 780, linearTransmissionFactor: a.transmission }], evidence }, uncertainty: { kind: \"not-quantified\", limitation: \"Synthetic spectrally flat reference over 380-780 nm.\" } },\n distortionAreaMappingOwnership: \"not-applied-by-bridge\", psfRedistributionOwnership: \"downstream-normalized-energy-redistribution\", sensorOpticalStackIncluded: false,\n strayLightIncluded: false, polarizationModeled: false, wavelengthChangingBehaviorModeled: false, volumetricScatteringModeled: false, evidence, limitations: l.lens.limitations });\n const pupils = [0,1,2].flatMap((field) => [-20,0,20].map((defocus, index) => parseLensComplexPupilProfile({ schemaVersion: \"0.1.0\",\n profileId: id+\":pupil:\"+field+\":\"+index, profileVersion: version, scientificStatus: \"approximation\", opticalDomain: \"lens-primary-optical-path-only\",\n representation: \"complex-pupil-amplitude-plus-opd\", pupilCoordinateSystem: \"pupil-plane-metric-aligned-to-image-plane\", imageFieldAxes: \"+X right, +Y up\",\n amplitudeMeaning: \"relative-complex-pupil-amplitude-shape\", wavefrontMeaning: \"optical-path-difference-micrometers\",\n throughputOwnership: \"separate-relative-pupil-throughput-factor\", kernelEnergyNormalization: \"unit-energy-shape\", propagationModel: \"scalar-fraunhofer-discrete-reference\",\n context: { focalLengthMm: 50, focus: { kind: \"finite\", distanceM: 5 }, apertureFNumber: 4, fieldPointMm: [{x:0,y:0},{x:10,y:6},{x:18,y:12}][field],\n wavelengthNm: 550, signedDefocusImagePlaneMicrometers: defocus }, responseIncludes: { diffraction: true, aberration: true, defocus: true, pupilClippingShape: true },\n relativePupilThroughputFactor: a.pupilThroughputByField[field], grid: { widthSamples: 5, heightSamples: 5, pupilSamplePitchMmX: 3.125, pupilSamplePitchMmY: 3.125,\n centerSampleX: 2, centerSampleY: 2, relativeAmplitude: a.pupilAmplitudeByField[field], opticalPathDifferenceMicrometers: a.pupilOpdMicrometersByDefocus[index] },\n sensorOpticalStackIncluded: false, sensorSamplingIncluded: false, reconstructionIncluded: false, strayLightIncluded: false, evidence,\n uncertainty: { kind: \"not-quantified\", limitation: \"Coarse independently designed pupil-grid reference only.\" }, limitations: l.lens.limitations })));\n return freezeOwnedData({ selection, state, radial, lateralCa, vignetting, breathingProjectionScale: a.breathingProjectionScale, transmission, pupils, stray, correction,\n scientificStatus: \"approximation\" });\n}\n"]}
@@ -90,27 +90,27 @@ export interface ResolvedIsoCapability {
90
90
  exactCommercialCameraBehaviorClaimed: false;
91
91
  }
92
92
  /**
93
- * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
94
- * missing required fields and incompatible scientific data fail at this boundary.
93
+ * Validates an untrusted declaration and returns the normalized typed contract. Unknown enum values,
94
+ * missing required fields and incompatible scientific data are rejected here.
95
95
  *
96
- * ISO is an exposure-index/control capability, not a source of photons or evidence of read noise.
97
- * Standard/expanded settings, capture-mode restrictions and Auto ISO availability are explicit;
98
- * unknown availability cannot authorize automatic control.
99
- * @param value - unknown. Treated as untrusted data; static typing alone is not validation.
100
- * @returns IsoCapabilityProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
96
+ * ISO is an exposure-index (EI) control setting. It does not create photons and says nothing about
97
+ * read noise. Standard and expanded settings, limits per capture mode, and whether Auto ISO is
98
+ * available are all stated explicitly. If availability is unknown, automatic control is not allowed.
99
+ * @param value - unknown. Untrusted input; TypeScript types alone are not validation.
100
+ * @returns IsoCapabilityProfile. The result states its shape and scientific status; a successful call does not imply calibration.
101
101
  *
102
102
  * @see docs/API_REFERENCE.md for the root export and exact type graph.
103
103
  */
104
104
  export declare function parseIsoCapabilityProfile(value: unknown): IsoCapabilityProfile;
105
105
  /**
106
- * Resolve one standard/expanded/Auto ISO request under declared profile/capture-mode availability and
107
- * report explicit unavailable/unknown state.
106
+ * Resolves one standard, expanded or Auto ISO request against what the profile and capture mode
107
+ * declare as available. Reports "unavailable" or "unknown" explicitly.
108
108
  *
109
- * ISO is an exposure-index/control capability, not a source of photons or evidence of read noise.
110
- * Standard/expanded settings, capture-mode restrictions and Auto ISO availability are explicit;
111
- * unknown availability cannot authorize automatic control.
112
- * @param input - ResolveIsoCapabilityInput. See the linked contract for coordinate, unit and profile binding semantics.
113
- * @returns ResolvedIsoCapability. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
109
+ * ISO is an exposure-index (EI) control setting. It does not create photons and says nothing about
110
+ * read noise. Standard and expanded settings, limits per capture mode, and whether Auto ISO is
111
+ * available are all stated explicitly. If availability is unknown, automatic control is not allowed.
112
+ * @param input - ResolveIsoCapabilityInput. See that type for coordinates, units and profile binding.
113
+ * @returns ResolvedIsoCapability. The result states its shape and scientific status; a successful call does not imply calibration.
114
114
  *
115
115
  * @see docs/API_REFERENCE.md for the root export and exact type graph.
116
116
  */
@@ -130,14 +130,13 @@ export interface BoundIsoExposureCapabilities {
130
130
  readNoiseInferred: false;
131
131
  }
132
132
  /**
133
- * Binds the detailed #7 ISO/EI capability contract into the numeric capability
134
- * envelope consumed by #99.
133
+ * Combines the detailed ISO/EI capability profile with the numeric capability
134
+ * envelope that the exposure-mode resolvers use.
135
135
  *
136
- * The existing equipment capability must agree exactly with the profile's
137
- * global standard ISO range/grid. An evidenced capture-mode policy may narrow
138
- * the standard manual envelope for that mode. Auto ISO may then be narrower
139
- * still. Expanded L/H-style settings remain outside #99's ordinary numeric
140
- * ISO grid and are resolved through resolveIsoCapability().
136
+ * The existing equipment capability must match the profile's global standard
137
+ * ISO range and grid exactly. A capture-mode policy backed by evidence may
138
+ * narrow the standard manual range for that mode. Auto ISO may be narrower
139
+ * still. Expanded settings (such as L and H) stay outside the resolvers'
140
+ * ordinary numeric ISO grid; use resolveIsoCapability() for them.
141
141
  */
142
142
  export declare function bindIsoCapabilityToExposureCapabilities(input: BindIsoCapabilityToExposureCapabilitiesInput): BoundIsoExposureCapabilities;
143
- //# sourceMappingURL=iso-capabilities.d.ts.map
@@ -1,28 +1,30 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
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. ISO is an
6
- * exposure-index/control capability, not a source of photons or evidence of read noise.
7
- * Standard/expanded settings, capture-mode restrictions and Auto ISO availability are explicit;
8
- * unknown availability cannot authorize automatic control.
9
- * Resolve one standard/expanded/Auto ISO request under declared profile/capture-mode availability and
10
- * report explicit unavailable/unknown state. ISO is an exposure-index/control capability, not a source
11
- * of photons or evidence of read noise. Standard/expanded settings, capture-mode restrictions and Auto
12
- * ISO availability are explicit; unknown availability cannot authorize automatic control.
13
- * @see docs/GENERIC_TIER_PRESETS.md for equations, coordinate/unit conventions, blockers and support
14
- * limits.
3
+ * ISO capabilities: which standard, expanded and Auto ISO settings a body offers, and in which
4
+ * capture modes.
5
+ *
6
+ * The parser validates untrusted input and returns the normalized typed contract. Unknown enum
7
+ * values, missing required fields and incompatible scientific data are rejected.
8
+ *
9
+ * ISO is an exposure-index (EI) control setting. It does not create photons and says nothing about
10
+ * read noise. Standard and expanded settings, limits per capture mode, and whether Auto ISO is
11
+ * available are all stated explicitly. If availability is unknown, automatic control is not allowed.
12
+ * @see docs/GENERIC_TIER_PRESETS.md for the equations, units, coordinate conventions, known blockers
13
+ * and support limits.
15
14
  */
16
15
  import { InvalidConfigurationError } from "../core/configuration-error.js";
17
16
  import { parseEvidenceList } from "../core/evidence-provenance.js";
18
17
  import { InvalidScientificInputError } from "../core/validation.js";
18
+ import { requireInputKeys, rejectUnknownFields, rejectUnknownVariantFields } from "../core/record-validation.js";
19
19
  export const ISO_CAPABILITY_PROFILE_SCHEMA_VERSION = "0.1.0";
20
- function requireRecord(value, path) {
20
+ function requireRecord(value, path, allowedKeys) {
21
21
  if (typeof value !== "object" ||
22
22
  value === null ||
23
23
  Array.isArray(value)) {
24
24
  throw new InvalidConfigurationError(path + " must be an object.");
25
25
  }
26
+ if (allowedKeys !== null)
27
+ rejectUnknownFields(value, allowedKeys, path);
26
28
  return value;
27
29
  }
28
30
  function requireNonEmptyString(value, path) {
@@ -43,7 +45,7 @@ function requirePositiveFinite(value, path) {
43
45
  return value;
44
46
  }
45
47
  function parseRange(value, path) {
46
- const record = requireRecord(value, path);
48
+ const record = requireRecord(value, path, ["minimum", "maximum"]);
47
49
  const minimum = requirePositiveFinite(record.minimum, path + ".minimum");
48
50
  const maximum = requirePositiveFinite(record.maximum, path + ".maximum");
49
51
  if (minimum > maximum) {
@@ -62,7 +64,8 @@ function rangeWithin(inner, outer) {
62
64
  outer.maximum);
63
65
  }
64
66
  function parseGrid(value, range, path) {
65
- const record = requireRecord(value, path);
67
+ const record = requireRecord(value, path, null);
68
+ rejectUnknownVariantFields(record, "kind", { "continuous-within-range": ["kind"], "discrete-values": ["kind", "values"] }, path);
66
69
  if (record.kind ===
67
70
  "continuous-within-range") {
68
71
  return {
@@ -118,7 +121,7 @@ function parseAvailability(value, path) {
118
121
  return value;
119
122
  }
120
123
  function parseAutoIso(value, standardRange, path) {
121
- const record = requireRecord(value, path);
124
+ const record = requireRecord(value, path, ["availability", "evidence", "standardExposureIndexRange"]);
122
125
  const availability = parseAvailability(record.availability, path + ".availability");
123
126
  const evidence = parseEvidenceList(record.evidence, path + ".evidence");
124
127
  if (availability ===
@@ -148,7 +151,7 @@ function parseAutoIso(value, standardRange, path) {
148
151
  };
149
152
  }
150
153
  function parseExpandedSetting(value, standardRange, path) {
151
- const record = requireRecord(value, path);
154
+ const record = requireRecord(value, path, ["direction", "exposureIndexEquivalent", "autoIsoEligible", "settingId", "label", "evidence"]);
152
155
  const direction = record.direction;
153
156
  if (direction !== "low" &&
154
157
  direction !== "high") {
@@ -182,7 +185,7 @@ function parseExpandedSetting(value, standardRange, path) {
182
185
  };
183
186
  }
184
187
  function parseCaptureModePolicy(value, standardRange, expandedIds, path) {
185
- const record = requireRecord(value, path);
188
+ const record = requireRecord(value, path, ["standardExposureIndexRange", "expandedSettingIds", "captureModeId", "autoIso", "evidence"]);
186
189
  const modeRange = parseRange(record
187
190
  .standardExposureIndexRange, path +
188
191
  ".standardExposureIndexRange");
@@ -219,19 +222,19 @@ function parseCaptureModePolicy(value, standardRange, expandedIds, path) {
219
222
  };
220
223
  }
221
224
  /**
222
- * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
223
- * missing required fields and incompatible scientific data fail at this boundary.
225
+ * Validates an untrusted declaration and returns the normalized typed contract. Unknown enum values,
226
+ * missing required fields and incompatible scientific data are rejected here.
224
227
  *
225
- * ISO is an exposure-index/control capability, not a source of photons or evidence of read noise.
226
- * Standard/expanded settings, capture-mode restrictions and Auto ISO availability are explicit;
227
- * unknown availability cannot authorize automatic control.
228
- * @param value - unknown. Treated as untrusted data; static typing alone is not validation.
229
- * @returns IsoCapabilityProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
228
+ * ISO is an exposure-index (EI) control setting. It does not create photons and says nothing about
229
+ * read noise. Standard and expanded settings, limits per capture mode, and whether Auto ISO is
230
+ * available are all stated explicitly. If availability is unknown, automatic control is not allowed.
231
+ * @param value - unknown. Untrusted input; TypeScript types alone are not validation.
232
+ * @returns IsoCapabilityProfile. The result states its shape and scientific status; a successful call does not imply calibration.
230
233
  *
231
234
  * @see docs/API_REFERENCE.md for the root export and exact type graph.
232
235
  */
233
236
  export function parseIsoCapabilityProfile(value) {
234
- const record = requireRecord(value, "isoCapabilityProfile");
237
+ const record = requireRecord(value, "isoCapabilityProfile", ["schemaVersion", "capabilityMeaning", "standard", "expandedSettings", "captureModePolicies", "profileId", "profileVersion", "autoIso", "evidence"]);
235
238
  if (record.schemaVersion !==
236
239
  ISO_CAPABILITY_PROFILE_SCHEMA_VERSION) {
237
240
  throw new InvalidConfigurationError('isoCapabilityProfile.schemaVersion must be "' +
@@ -242,7 +245,7 @@ export function parseIsoCapabilityProfile(value) {
242
245
  "reported-exposure-index-capability-not-physical-gain") {
243
246
  throw new InvalidConfigurationError("isoCapabilityProfile.capabilityMeaning is invalid.");
244
247
  }
245
- const standard = requireRecord(record.standard, "isoCapabilityProfile.standard");
248
+ const standard = requireRecord(record.standard, "isoCapabilityProfile.standard", ["exposureIndexRange", "settingGrid"]);
246
249
  const standardRange = parseRange(standard
247
250
  .exposureIndexRange, "isoCapabilityProfile.standard.exposureIndexRange");
248
251
  const settingGrid = parseGrid(standard.settingGrid, standardRange, "isoCapabilityProfile.standard.settingGrid");
@@ -307,7 +310,7 @@ function resolveModePolicy(profile, captureModeId) {
307
310
  }
308
311
  if (captureModeId.trim()
309
312
  .length === 0) {
310
- throw new InvalidScientificInputError("captureModeId must be a non-empty string when provided.");
313
+ throw new InvalidConfigurationError("captureModeId must be a non-empty string when provided.");
311
314
  }
312
315
  const policy = profile.captureModePolicies.find((entry) => entry.captureModeId ===
313
316
  captureModeId);
@@ -330,18 +333,19 @@ function resolveModePolicy(profile, captureModeId) {
330
333
  };
331
334
  }
332
335
  /**
333
- * Resolve one standard/expanded/Auto ISO request under declared profile/capture-mode availability and
334
- * report explicit unavailable/unknown state.
336
+ * Resolves one standard, expanded or Auto ISO request against what the profile and capture mode
337
+ * declare as available. Reports "unavailable" or "unknown" explicitly.
335
338
  *
336
- * ISO is an exposure-index/control capability, not a source of photons or evidence of read noise.
337
- * Standard/expanded settings, capture-mode restrictions and Auto ISO availability are explicit;
338
- * unknown availability cannot authorize automatic control.
339
- * @param input - ResolveIsoCapabilityInput. See the linked contract for coordinate, unit and profile binding semantics.
340
- * @returns ResolvedIsoCapability. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
339
+ * ISO is an exposure-index (EI) control setting. It does not create photons and says nothing about
340
+ * read noise. Standard and expanded settings, limits per capture mode, and whether Auto ISO is
341
+ * available are all stated explicitly. If availability is unknown, automatic control is not allowed.
342
+ * @param input - ResolveIsoCapabilityInput. See that type for coordinates, units and profile binding.
343
+ * @returns ResolvedIsoCapability. The result states its shape and scientific status; a successful call does not imply calibration.
341
344
  *
342
345
  * @see docs/API_REFERENCE.md for the root export and exact type graph.
343
346
  */
344
347
  export function resolveIsoCapability(input) {
348
+ requireInputKeys(input, "resolveIsoCapability", ["profile", "setting", "captureModeId"]);
345
349
  const profile = parseIsoCapabilityProfile(input.profile);
346
350
  const modePolicy = resolveModePolicy(profile, input.captureModeId);
347
351
  if (input.setting.kind ===
@@ -416,14 +420,14 @@ export function resolveIsoCapability(input) {
416
420
  }
417
421
  if (input.setting.kind !==
418
422
  "expanded") {
419
- throw new InvalidScientificInputError("ISO setting must be a valid standard or expanded setting.");
423
+ throw new InvalidConfigurationError("ISO setting must be a valid standard or expanded setting.");
420
424
  }
421
425
  const expandedSettingId = input.setting.settingId;
422
426
  if (typeof expandedSettingId !==
423
427
  "string" ||
424
428
  expandedSettingId.trim()
425
429
  .length === 0) {
426
- throw new InvalidScientificInputError("ISO setting must be a valid standard or expanded setting.");
430
+ throw new InvalidConfigurationError("ISO setting must be a valid standard or expanded setting.");
427
431
  }
428
432
  const setting = profile.expandedSettings.find((entry) => entry.settingId ===
429
433
  expandedSettingId);
@@ -513,16 +517,17 @@ function gridWithinRange(grid, range) {
513
517
  };
514
518
  }
515
519
  /**
516
- * Binds the detailed #7 ISO/EI capability contract into the numeric capability
517
- * envelope consumed by #99.
520
+ * Combines the detailed ISO/EI capability profile with the numeric capability
521
+ * envelope that the exposure-mode resolvers use.
518
522
  *
519
- * The existing equipment capability must agree exactly with the profile's
520
- * global standard ISO range/grid. An evidenced capture-mode policy may narrow
521
- * the standard manual envelope for that mode. Auto ISO may then be narrower
522
- * still. Expanded L/H-style settings remain outside #99's ordinary numeric
523
- * ISO grid and are resolved through resolveIsoCapability().
523
+ * The existing equipment capability must match the profile's global standard
524
+ * ISO range and grid exactly. A capture-mode policy backed by evidence may
525
+ * narrow the standard manual range for that mode. Auto ISO may be narrower
526
+ * still. Expanded settings (such as L and H) stay outside the resolvers'
527
+ * ordinary numeric ISO grid; use resolveIsoCapability() for them.
524
528
  */
525
529
  export function bindIsoCapabilityToExposureCapabilities(input) {
530
+ requireInputKeys(input, "bindIsoCapabilityToExposureCapabilities", ["isoCapabilityProfile", "equipmentCapabilities", "captureModeId"]);
526
531
  const profile = parseIsoCapabilityProfile(input.isoCapabilityProfile);
527
532
  const source = input.equipmentCapabilities;
528
533
  if (source.iso.minimum !==