@photivra/engine 1.4.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +401 -6
- package/CITATION.cff +1 -1
- package/NODE_SUPPORT.md +64 -12
- package/README.md +301 -182
- package/SECURITY.md +37 -28
- package/THIRD_PARTY.md +148 -4
- package/dist/camera/equivalent-focal-length.d.ts +13 -14
- package/dist/camera/equivalent-focal-length.js +15 -13
- package/dist/camera/equivalent-focal-length.js.map +1 -1
- package/dist/camera/field-of-view.d.ts +30 -19
- package/dist/camera/field-of-view.js +67 -18
- package/dist/camera/field-of-view.js.map +1 -1
- package/dist/camera/lens-projection.d.ts +170 -0
- package/dist/camera/lens-projection.js +444 -0
- package/dist/camera/lens-projection.js.map +1 -0
- package/dist/camera/projected-object-size.d.ts +10 -11
- package/dist/camera/projected-object-size.js +12 -10
- package/dist/camera/projected-object-size.js.map +1 -1
- package/dist/capture/capture-export-metadata.d.ts +9 -10
- package/dist/capture/capture-export-metadata.js +8 -5
- package/dist/capture/capture-export-metadata.js.map +1 -1
- package/dist/capture/dng-import.d.ts +91 -0
- package/dist/capture/dng-import.js +343 -0
- package/dist/capture/dng-import.js.map +1 -0
- package/dist/capture/environment-raw-producer.d.ts +37 -17
- package/dist/capture/environment-raw-producer.js +43 -19
- package/dist/capture/environment-raw-producer.js.map +1 -1
- package/dist/capture/export-jpeg.d.ts +35 -4
- package/dist/capture/export-jpeg.js +133 -47
- package/dist/capture/export-jpeg.js.map +1 -1
- package/dist/capture/export-tiff.d.ts +48 -24
- package/dist/capture/export-tiff.js +91 -31
- package/dist/capture/export-tiff.js.map +1 -1
- package/dist/capture/focus-control.d.ts +42 -65
- package/dist/capture/focus-control.js +56 -75
- package/dist/capture/focus-control.js.map +1 -1
- package/dist/capture/host-yield-cadence.d.ts +25 -0
- package/dist/capture/host-yield-cadence.js +25 -0
- package/dist/capture/host-yield-cadence.js.map +1 -0
- package/dist/capture/linear-encoding.d.ts +14 -12
- package/dist/capture/linear-encoding.js +14 -13
- package/dist/capture/linear-encoding.js.map +1 -1
- package/dist/capture/lossless-jpeg.d.ts +27 -0
- package/dist/capture/lossless-jpeg.js +237 -0
- package/dist/capture/lossless-jpeg.js.map +1 -0
- package/dist/capture/native-environment-lean.d.ts +227 -0
- package/dist/capture/native-environment-lean.js +974 -0
- package/dist/capture/native-environment-lean.js.map +1 -0
- package/dist/capture/native-environment-optical-stage.d.ts +97 -0
- package/dist/capture/native-environment-optical-stage.js +340 -0
- package/dist/capture/native-environment-optical-stage.js.map +1 -0
- package/dist/capture/native-environment-raw.d.ts +140 -6
- package/dist/capture/native-environment-raw.js +435 -34
- package/dist/capture/native-environment-raw.js.map +1 -1
- package/dist/capture/native-raw-development.d.ts +118 -5
- package/dist/capture/native-raw-development.js +224 -59
- package/dist/capture/native-raw-development.js.map +1 -1
- package/dist/capture/native-raw-dng.d.ts +60 -0
- package/dist/capture/native-raw-dng.js +167 -0
- package/dist/capture/native-raw-dng.js.map +1 -0
- package/dist/capture/native-raw.d.ts +67 -10
- package/dist/capture/native-raw.js +90 -24
- package/dist/capture/native-raw.js.map +1 -1
- package/dist/capture/packed-sensor-raw.d.ts +160 -0
- package/dist/capture/packed-sensor-raw.js +221 -0
- package/dist/capture/packed-sensor-raw.js.map +1 -0
- package/dist/capture/photographic-export.d.ts +58 -35
- package/dist/capture/photographic-export.js +177 -70
- package/dist/capture/photographic-export.js.map +1 -1
- package/dist/capture/raw-development-kernel.d.ts +52 -0
- package/dist/capture/raw-development-kernel.js +88 -0
- package/dist/capture/raw-development-kernel.js.map +1 -0
- package/dist/capture/raw-frame-limits.d.ts +7 -7
- package/dist/capture/raw-frame-limits.js +7 -6
- package/dist/capture/raw-frame-limits.js.map +1 -1
- package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
- package/dist/capture/raw-frame-reconstruction.js +9 -8
- package/dist/capture/raw-frame-reconstruction.js.map +1 -1
- package/dist/capture/raw-white-level.d.ts +55 -0
- package/dist/capture/raw-white-level.js +165 -0
- package/dist/capture/raw-white-level.js.map +1 -0
- package/dist/capture/release-sequence.d.ts +5 -7
- package/dist/capture/release-sequence.js +15 -13
- package/dist/capture/release-sequence.js.map +1 -1
- package/dist/capture/sensor-raw-frame.d.ts +5 -6
- package/dist/capture/sensor-raw-frame.js +26 -9
- package/dist/capture/sensor-raw-frame.js.map +1 -1
- package/dist/capture/sensor-raw-producer.d.ts +21 -13
- package/dist/capture/sensor-raw-producer.js +86 -25
- package/dist/capture/sensor-raw-producer.js.map +1 -1
- package/dist/capture/simulated-capture.d.ts +15 -16
- package/dist/capture/simulated-capture.js +22 -12
- package/dist/capture/simulated-capture.js.map +1 -1
- package/dist/color/camera-color-matrix.d.ts +69 -0
- package/dist/color/camera-color-matrix.js +132 -0
- package/dist/color/camera-color-matrix.js.map +1 -0
- package/dist/color/capture-color.d.ts +17 -10
- package/dist/color/capture-color.js +50 -17
- package/dist/color/capture-color.js.map +1 -1
- package/dist/color/chromatic-adaptation.d.ts +63 -0
- package/dist/color/chromatic-adaptation.js +91 -0
- package/dist/color/chromatic-adaptation.js.map +1 -0
- package/dist/color/color-difference.d.ts +104 -0
- package/dist/color/color-difference.js +205 -0
- package/dist/color/color-difference.js.map +1 -0
- package/dist/color/color-matching-functions.d.ts +168 -0
- package/dist/color/color-matching-functions.js +309 -0
- package/dist/color/color-matching-functions.js.map +1 -0
- package/dist/color/colorimetry-math.d.ts +52 -0
- package/dist/color/colorimetry-math.js +144 -0
- package/dist/color/colorimetry-math.js.map +1 -0
- package/dist/color/gamut-mapping.d.ts +54 -0
- package/dist/color/gamut-mapping.js +107 -0
- package/dist/color/gamut-mapping.js.map +1 -0
- package/dist/color/illuminants.d.ts +182 -0
- package/dist/color/illuminants.js +434 -0
- package/dist/color/illuminants.js.map +1 -0
- package/dist/color/rgb-color-spaces.d.ts +79 -0
- package/dist/color/rgb-color-spaces.js +115 -0
- package/dist/color/rgb-color-spaces.js.map +1 -0
- package/dist/color/sensor-color-development.d.ts +33 -11
- package/dist/color/sensor-color-development.js +104 -30
- package/dist/color/sensor-color-development.js.map +1 -1
- package/dist/color/srgb-icc.d.ts +9 -2
- package/dist/color/srgb-icc.js +16 -5
- package/dist/color/srgb-icc.js.map +1 -1
- package/dist/color/srgb-transfer.d.ts +1 -2
- package/dist/color/srgb-transfer.js +1 -1
- package/dist/color/srgb-transfer.js.map +1 -1
- package/dist/color/white-balance.d.ts +68 -19
- package/dist/color/white-balance.js +168 -35
- package/dist/color/white-balance.js.map +1 -1
- package/dist/composition/image-formation-plan.d.ts +152 -128
- package/dist/composition/image-formation-plan.js +292 -138
- package/dist/composition/image-formation-plan.js.map +1 -1
- package/dist/composition/plan-consumer.d.ts +6 -7
- package/dist/composition/plan-consumer.js +14 -11
- package/dist/composition/plan-consumer.js.map +1 -1
- package/dist/core/calculation-result.d.ts +21 -14
- package/dist/core/calculation-result.js +209 -11
- package/dist/core/calculation-result.js.map +1 -1
- package/dist/core/canonical-json.d.ts +13 -8
- package/dist/core/canonical-json.js +34 -15
- package/dist/core/canonical-json.js.map +1 -1
- package/dist/core/configuration-error.d.ts +5 -4
- package/dist/core/configuration-error.js +5 -3
- package/dist/core/configuration-error.js.map +1 -1
- package/dist/core/evidence-provenance.d.ts +12 -12
- package/dist/core/evidence-provenance.js +10 -9
- package/dist/core/evidence-provenance.js.map +1 -1
- package/dist/core/image-formation.d.ts +11 -10
- package/dist/core/image-formation.js +11 -9
- package/dist/core/image-formation.js.map +1 -1
- package/dist/core/owned-data.d.ts +9 -17
- package/dist/core/owned-data.js +9 -16
- package/dist/core/owned-data.js.map +1 -1
- package/dist/core/portable-math.d.ts +15 -0
- package/dist/core/portable-math.js +56 -0
- package/dist/core/portable-math.js.map +1 -0
- package/dist/core/record-validation.d.ts +48 -9
- package/dist/core/record-validation.js +93 -19
- package/dist/core/record-validation.js.map +1 -1
- package/dist/core/scientific-assurance.d.ts +16 -14
- package/dist/core/scientific-assurance.js +22 -18
- package/dist/core/scientific-assurance.js.map +1 -1
- package/dist/core/spectral-composition.d.ts +13 -14
- package/dist/core/spectral-composition.js +30 -27
- package/dist/core/spectral-composition.js.map +1 -1
- package/dist/core/spectral.d.ts +5 -6
- package/dist/core/spectral.js +9 -7
- package/dist/core/spectral.js.map +1 -1
- package/dist/core/validation.d.ts +3 -6
- package/dist/core/validation.js +3 -5
- package/dist/core/validation.js.map +1 -1
- package/dist/core/version.d.ts +6 -6
- package/dist/core/version.js +6 -5
- package/dist/core/version.js.map +1 -1
- package/dist/equipment/exposure-capabilities.d.ts +10 -10
- package/dist/equipment/exposure-capabilities.js +40 -30
- package/dist/equipment/exposure-capabilities.js.map +1 -1
- package/dist/equipment/generic-tier-assets.d.ts +13 -6
- package/dist/equipment/generic-tier-assets.js +34 -15
- package/dist/equipment/generic-tier-assets.js.map +1 -1
- package/dist/equipment/generic-tier-presets.d.ts +5 -6
- package/dist/equipment/generic-tier-presets.js +15 -13
- package/dist/equipment/generic-tier-presets.js.map +1 -1
- package/dist/equipment/iso-capabilities.d.ts +21 -22
- package/dist/equipment/iso-capabilities.js +49 -44
- package/dist/equipment/iso-capabilities.js.map +1 -1
- package/dist/equipment/metering-capabilities.d.ts +5 -6
- package/dist/equipment/metering-capabilities.js +22 -19
- package/dist/equipment/metering-capabilities.js.map +1 -1
- package/dist/equipment/release-capabilities.d.ts +3 -4
- package/dist/equipment/release-capabilities.js +18 -14
- package/dist/equipment/release-capabilities.js.map +1 -1
- package/dist/exposure/exposure-duration-control.d.ts +19 -17
- package/dist/exposure/exposure-duration-control.js +27 -23
- package/dist/exposure/exposure-duration-control.js.map +1 -1
- package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
- package/dist/exposure/exposure-mode-resolver.js +127 -82
- package/dist/exposure/exposure-mode-resolver.js.map +1 -1
- package/dist/exposure/exposure.d.ts +17 -16
- package/dist/exposure/exposure.js +22 -15
- package/dist/exposure/exposure.js.map +1 -1
- package/dist/exposure/flash-ttl.d.ts +135 -0
- package/dist/exposure/flash-ttl.js +193 -0
- package/dist/exposure/flash-ttl.js.map +1 -0
- package/dist/exposure/flash.d.ts +144 -36
- package/dist/exposure/flash.js +259 -59
- package/dist/exposure/flash.js.map +1 -1
- package/dist/exposure/metering-scene-radiance.d.ts +10 -10
- package/dist/exposure/metering-scene-radiance.js +42 -23
- package/dist/exposure/metering-scene-radiance.js.map +1 -1
- package/dist/exposure/metering-target.d.ts +8 -8
- package/dist/exposure/metering-target.js +30 -20
- package/dist/exposure/metering-target.js.map +1 -1
- package/dist/exposure/metering-temporal.d.ts +16 -15
- package/dist/exposure/metering-temporal.js +41 -19
- package/dist/exposure/metering-temporal.js.map +1 -1
- package/dist/exposure/metering.d.ts +64 -17
- package/dist/exposure/metering.js +159 -30
- package/dist/exposure/metering.js.map +1 -1
- package/dist/exposure/program-line.d.ts +5 -5
- package/dist/exposure/program-line.js +20 -13
- package/dist/exposure/program-line.js.map +1 -1
- package/dist/facade/camera-preset.d.ts +8 -0
- package/dist/facade/camera-preset.js +102 -0
- package/dist/facade/camera-preset.js.map +1 -0
- package/dist/facade/chart-radiance-batch.d.ts +57 -0
- package/dist/facade/chart-radiance-batch.js +121 -0
- package/dist/facade/chart-radiance-batch.js.map +1 -0
- package/dist/facade/chart-scenes.d.ts +177 -0
- package/dist/facade/chart-scenes.js +232 -0
- package/dist/facade/chart-scenes.js.map +1 -0
- package/dist/facade/host-yield.d.ts +7 -0
- package/dist/facade/host-yield.js +23 -0
- package/dist/facade/host-yield.js.map +1 -0
- package/dist/facade/scene-radiance.d.ts +117 -0
- package/dist/facade/scene-radiance.js +205 -0
- package/dist/facade/scene-radiance.js.map +1 -0
- package/dist/facade/simulate-capture.d.ts +284 -0
- package/dist/facade/simulate-capture.js +1026 -0
- package/dist/facade/simulate-capture.js.map +1 -0
- package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
- package/dist/gpu/chart-radiance-gpu.js +176 -0
- package/dist/gpu/chart-radiance-gpu.js.map +1 -0
- package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
- package/dist/gpu/image-kernel-accelerator.js +720 -0
- package/dist/gpu/image-kernel-accelerator.js.map +1 -0
- package/dist/gpu/image-kernel-execution.d.ts +92 -0
- package/dist/gpu/image-kernel-execution.js +84 -0
- package/dist/gpu/image-kernel-execution.js.map +1 -0
- package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
- package/dist/gpu/sensor-stage-gpu.js +317 -0
- package/dist/gpu/sensor-stage-gpu.js.map +1 -0
- package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
- package/dist/gpu/temporal-sum-gpu.js +150 -0
- package/dist/gpu/temporal-sum-gpu.js.map +1 -0
- package/dist/gpu/webgpu-runtime.d.ts +63 -0
- package/dist/gpu/webgpu-runtime.js +215 -0
- package/dist/gpu/webgpu-runtime.js.map +1 -0
- package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
- package/dist/gpu/wgsl-chart-kernel.js +165 -0
- package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
- package/dist/gpu/wgsl-kernels.d.ts +53 -0
- package/dist/gpu/wgsl-kernels.js +365 -0
- package/dist/gpu/wgsl-kernels.js.map +1 -0
- package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
- package/dist/gpu/wgsl-sensor-kernel.js +409 -0
- package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
- package/dist/index.d.ts +89 -25
- package/dist/index.js +59 -15
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +92 -40
- package/dist/motion/camera-rotation.js +84 -47
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
- package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
- package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
- package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
- package/dist/motion/capture-rotation-trajectory.js +36 -26
- package/dist/motion/capture-rotation-trajectory.js.map +1 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
- package/dist/motion/extended-object-projection.d.ts +19 -16
- package/dist/motion/extended-object-projection.js +38 -18
- package/dist/motion/extended-object-projection.js.map +1 -1
- package/dist/motion/projected-motion.d.ts +18 -17
- package/dist/motion/projected-motion.js +25 -17
- package/dist/motion/projected-motion.js.map +1 -1
- package/dist/motion/temporal-exposure-sum.d.ts +55 -0
- package/dist/motion/temporal-exposure-sum.js +141 -0
- package/dist/motion/temporal-exposure-sum.js.map +1 -0
- package/dist/motion/video-sequence.d.ts +111 -0
- package/dist/motion/video-sequence.js +179 -0
- package/dist/motion/video-sequence.js.map +1 -0
- package/dist/optics/aperture.d.ts +14 -15
- package/dist/optics/aperture.js +13 -11
- package/dist/optics/aperture.js.map +1 -1
- package/dist/optics/atmospheric-haze.d.ts +83 -0
- package/dist/optics/atmospheric-haze.js +113 -0
- package/dist/optics/atmospheric-haze.js.map +1 -0
- package/dist/optics/brown-conrady-distortion.d.ts +116 -0
- package/dist/optics/brown-conrady-distortion.js +291 -0
- package/dist/optics/brown-conrady-distortion.js.map +1 -0
- package/dist/optics/circle-of-confusion.d.ts +10 -10
- package/dist/optics/circle-of-confusion.js +15 -11
- package/dist/optics/circle-of-confusion.js.map +1 -1
- package/dist/optics/complex-pupil-psf.d.ts +64 -33
- package/dist/optics/complex-pupil-psf.js +190 -98
- package/dist/optics/complex-pupil-psf.js.map +1 -1
- package/dist/optics/depth-of-field.d.ts +25 -15
- package/dist/optics/depth-of-field.js +67 -27
- package/dist/optics/depth-of-field.js.map +1 -1
- package/dist/optics/diffraction.d.ts +14 -13
- package/dist/optics/diffraction.js +14 -10
- package/dist/optics/diffraction.js.map +1 -1
- package/dist/optics/focus-breathing.d.ts +88 -27
- package/dist/optics/focus-breathing.js +114 -23
- package/dist/optics/focus-breathing.js.map +1 -1
- package/dist/optics/focus-state.d.ts +18 -18
- package/dist/optics/focus-state.js +21 -15
- package/dist/optics/focus-state.js.map +1 -1
- package/dist/optics/front-of-lens-filter.d.ts +45 -14
- package/dist/optics/front-of-lens-filter.js +259 -88
- package/dist/optics/front-of-lens-filter.js.map +1 -1
- package/dist/optics/illumination-vignetting.d.ts +16 -17
- package/dist/optics/illumination-vignetting.js +40 -17
- package/dist/optics/illumination-vignetting.js.map +1 -1
- package/dist/optics/irradiance-convolution.d.ts +59 -0
- package/dist/optics/irradiance-convolution.js +138 -0
- package/dist/optics/irradiance-convolution.js.map +1 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
- package/dist/optics/lateral-chromatic-aberration.js +33 -23
- package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
- package/dist/optics/lens-psf-kernels.d.ts +89 -0
- package/dist/optics/lens-psf-kernels.js +175 -0
- package/dist/optics/lens-psf-kernels.js.map +1 -0
- package/dist/optics/lens-psf-profile.d.ts +78 -46
- package/dist/optics/lens-psf-profile.js +335 -124
- package/dist/optics/lens-psf-profile.js.map +1 -1
- package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
- package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
- package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
- package/dist/optics/polygon-diffraction.d.ts +80 -23
- package/dist/optics/polygon-diffraction.js +130 -25
- package/dist/optics/polygon-diffraction.js.map +1 -1
- package/dist/optics/profile-contract.d.ts +5 -6
- package/dist/optics/profile-contract.js +14 -11
- package/dist/optics/profile-contract.js.map +1 -1
- package/dist/optics/psf-foundation.d.ts +23 -23
- package/dist/optics/psf-foundation.js +24 -21
- package/dist/optics/psf-foundation.js.map +1 -1
- package/dist/optics/pupil-vignetting.d.ts +118 -0
- package/dist/optics/pupil-vignetting.js +264 -0
- package/dist/optics/pupil-vignetting.js.map +1 -0
- package/dist/optics/radial-distortion.d.ts +34 -33
- package/dist/optics/radial-distortion.js +37 -30
- package/dist/optics/radial-distortion.js.map +1 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
- package/dist/optics/scene-to-sensor-irradiance.js +73 -45
- package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
- package/dist/optics/scene-to-sensor-quadrature.js +16 -11
- package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
- package/dist/optics/sensor-aperture-rays.d.ts +20 -4
- package/dist/optics/sensor-aperture-rays.js +32 -14
- package/dist/optics/sensor-aperture-rays.js.map +1 -1
- package/dist/optics/sensor-environment-query.d.ts +81 -16
- package/dist/optics/sensor-environment-query.js +145 -12
- package/dist/optics/sensor-environment-query.js.map +1 -1
- package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
- package/dist/optics/sensor-psf-quadrature.js +18 -11
- package/dist/optics/sensor-psf-quadrature.js.map +1 -1
- package/dist/optics/sensor-psf-support.d.ts +8 -6
- package/dist/optics/sensor-psf-support.js +8 -5
- package/dist/optics/sensor-psf-support.js.map +1 -1
- package/dist/optics/stray-light.d.ts +22 -19
- package/dist/optics/stray-light.js +18 -12
- package/dist/optics/stray-light.js.map +1 -1
- package/dist/optics/thin-lens.d.ts +10 -9
- package/dist/optics/thin-lens.js +12 -8
- package/dist/optics/thin-lens.js.map +1 -1
- package/dist/optics/zernike-wavefront.d.ts +154 -0
- package/dist/optics/zernike-wavefront.js +352 -0
- package/dist/optics/zernike-wavefront.js.map +1 -0
- package/dist/output/capture-corrected-sdr.d.ts +16 -8
- package/dist/output/capture-corrected-sdr.js +16 -8
- package/dist/output/capture-corrected-sdr.js.map +1 -1
- package/dist/output/capture-geometry.d.ts +34 -36
- package/dist/output/capture-geometry.js +52 -32
- package/dist/output/capture-geometry.js.map +1 -1
- package/dist/output/capture-sdr.d.ts +7 -6
- package/dist/output/capture-sdr.js +11 -8
- package/dist/output/capture-sdr.js.map +1 -1
- package/dist/output/crop.d.ts +22 -6
- package/dist/output/crop.js +40 -6
- package/dist/output/crop.js.map +1 -1
- package/dist/output/geometric-transforms.d.ts +60 -23
- package/dist/output/geometric-transforms.js +111 -24
- package/dist/output/geometric-transforms.js.map +1 -1
- package/dist/output/lens-corrections.d.ts +27 -19
- package/dist/output/lens-corrections.js +29 -13
- package/dist/output/lens-corrections.js.map +1 -1
- package/dist/output/native-capture-sdr.d.ts +71 -16
- package/dist/output/native-capture-sdr.js +190 -33
- package/dist/output/native-capture-sdr.js.map +1 -1
- package/dist/output/png-encoder.d.ts +65 -0
- package/dist/output/png-encoder.js +461 -0
- package/dist/output/png-encoder.js.map +1 -0
- package/dist/output/print-contrast-reference.d.ts +10 -9
- package/dist/output/print-contrast-reference.js +10 -8
- package/dist/output/print-contrast-reference.js.map +1 -1
- package/dist/output/print-detail.d.ts +18 -17
- package/dist/output/print-detail.js +12 -10
- package/dist/output/print-detail.js.map +1 -1
- package/dist/output/print-jpeg.d.ts +26 -5
- package/dist/output/print-jpeg.js +117 -50
- package/dist/output/print-jpeg.js.map +1 -1
- package/dist/output/print-plan.d.ts +19 -19
- package/dist/output/print-plan.js +11 -10
- package/dist/output/print-plan.js.map +1 -1
- package/dist/output/print-region-statistics.d.ts +14 -15
- package/dist/output/print-region-statistics.js +11 -11
- package/dist/output/print-region-statistics.js.map +1 -1
- package/dist/output/sdr-rendering.d.ts +48 -10
- package/dist/output/sdr-rendering.js +114 -25
- package/dist/output/sdr-rendering.js.map +1 -1
- package/dist/output/subject-framing-crop.d.ts +6 -10
- package/dist/output/subject-framing-crop.js +23 -13
- package/dist/output/subject-framing-crop.js.map +1 -1
- package/dist/processing/demosaic.d.ts +90 -0
- package/dist/processing/demosaic.js +275 -0
- package/dist/processing/demosaic.js.map +1 -0
- package/dist/processing/denoise.d.ts +68 -0
- package/dist/processing/denoise.js +214 -0
- package/dist/processing/denoise.js.map +1 -0
- package/dist/processing/focus-stacking.d.ts +17 -0
- package/dist/processing/focus-stacking.js +80 -0
- package/dist/processing/focus-stacking.js.map +1 -0
- package/dist/processing/hdr.d.ts +54 -0
- package/dist/processing/hdr.js +172 -0
- package/dist/processing/hdr.js.map +1 -0
- package/dist/processing/image-ops.d.ts +66 -0
- package/dist/processing/image-ops.js +192 -0
- package/dist/processing/image-ops.js.map +1 -0
- package/dist/processing/panorama.d.ts +51 -0
- package/dist/processing/panorama.js +305 -0
- package/dist/processing/panorama.js.map +1 -0
- package/dist/processing/processing-task.d.ts +85 -0
- package/dist/processing/processing-task.js +164 -0
- package/dist/processing/processing-task.js.map +1 -0
- package/dist/processing/tone-mapping.d.ts +69 -0
- package/dist/processing/tone-mapping.js +310 -0
- package/dist/processing/tone-mapping.js.map +1 -0
- package/dist/schema/camera.d.ts +5 -4
- package/dist/schema/illumination-spectral.d.ts +13 -19
- package/dist/schema/illumination-spectral.js +23 -19
- package/dist/schema/illumination-spectral.js.map +1 -1
- package/dist/schema/illumination-temporal.d.ts +12 -15
- package/dist/schema/illumination-temporal.js +43 -28
- package/dist/schema/illumination-temporal.js.map +1 -1
- package/dist/schema/illumination.d.ts +5 -4
- package/dist/schema/illumination.js +55 -20
- package/dist/schema/illumination.js.map +1 -1
- package/dist/schema/scene-radiance-temporal.d.ts +9 -11
- package/dist/schema/scene-radiance-temporal.js +26 -23
- package/dist/schema/scene-radiance-temporal.js.map +1 -1
- package/dist/schema/scene-radiance.d.ts +17 -17
- package/dist/schema/scene-radiance.js +56 -34
- package/dist/schema/scene-radiance.js.map +1 -1
- package/dist/schema/scene.d.ts +14 -13
- package/dist/schema/validation.d.ts +0 -1
- package/dist/schema/validation.js +17 -15
- package/dist/schema/validation.js.map +1 -1
- package/dist/sensor/accumulated-charge.d.ts +45 -64
- package/dist/sensor/accumulated-charge.js +41 -47
- package/dist/sensor/accumulated-charge.js.map +1 -1
- package/dist/sensor/architecture.d.ts +22 -25
- package/dist/sensor/architecture.js +17 -16
- package/dist/sensor/architecture.js.map +1 -1
- package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
- package/dist/sensor/camera-saturation-capacity.js +36 -34
- package/dist/sensor/camera-saturation-capacity.js.map +1 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
- package/dist/sensor/capture-color-sampling-binding.js +39 -41
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
- package/dist/sensor/capture-mode-timing.d.ts +8 -9
- package/dist/sensor/capture-mode-timing.js +24 -21
- package/dist/sensor/capture-mode-timing.js.map +1 -1
- package/dist/sensor/capture-mode.d.ts +28 -30
- package/dist/sensor/capture-mode.js +33 -31
- package/dist/sensor/capture-mode.js.map +1 -1
- package/dist/sensor/color-sampling.d.ts +30 -33
- package/dist/sensor/color-sampling.js +32 -37
- package/dist/sensor/color-sampling.js.map +1 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
- package/dist/sensor/constant-rate-temporal-integration.js +28 -26
- package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
- package/dist/sensor/dark-current.d.ts +53 -49
- package/dist/sensor/dark-current.js +87 -46
- package/dist/sensor/dark-current.js.map +1 -1
- package/dist/sensor/environment-photo-signal.d.ts +71 -30
- package/dist/sensor/environment-photo-signal.js +127 -46
- package/dist/sensor/environment-photo-signal.js.map +1 -1
- package/dist/sensor/eqe-electron-rate.d.ts +14 -13
- package/dist/sensor/eqe-electron-rate.js +34 -14
- package/dist/sensor/eqe-electron-rate.js.map +1 -1
- package/dist/sensor/eqe-local-exposure.d.ts +24 -24
- package/dist/sensor/eqe-local-exposure.js +15 -11
- package/dist/sensor/eqe-local-exposure.js.map +1 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
- package/dist/sensor/eqe-temporal-exposure.js +15 -10
- package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/exposure-window.d.ts +48 -34
- package/dist/sensor/exposure-window.js +77 -36
- package/dist/sensor/exposure-window.js.map +1 -1
- package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
- package/dist/sensor/fixed-pattern-noise.js +166 -0
- package/dist/sensor/fixed-pattern-noise.js.map +1 -0
- package/dist/sensor/iso-gain.d.ts +44 -0
- package/dist/sensor/iso-gain.js +119 -0
- package/dist/sensor/iso-gain.js.map +1 -0
- package/dist/sensor/iso-signal-chain.d.ts +25 -48
- package/dist/sensor/iso-signal-chain.js +52 -66
- package/dist/sensor/iso-signal-chain.js.map +1 -1
- package/dist/sensor/local-exposure-binding.d.ts +21 -21
- package/dist/sensor/local-exposure-binding.js +22 -18
- package/dist/sensor/local-exposure-binding.js.map +1 -1
- package/dist/sensor/optical-stack.d.ts +36 -40
- package/dist/sensor/optical-stack.js +34 -37
- package/dist/sensor/optical-stack.js.map +1 -1
- package/dist/sensor/photon-energy.d.ts +22 -28
- package/dist/sensor/photon-energy.js +42 -34
- package/dist/sensor/photon-energy.js.map +1 -1
- package/dist/sensor/physical-charge-capacity.d.ts +20 -30
- package/dist/sensor/physical-charge-capacity.js +35 -36
- package/dist/sensor/physical-charge-capacity.js.map +1 -1
- package/dist/sensor/pixel-pitch.d.ts +2 -3
- package/dist/sensor/pixel-pitch.js +4 -2
- package/dist/sensor/pixel-pitch.js.map +1 -1
- package/dist/sensor/radiometry-readiness.d.ts +13 -15
- package/dist/sensor/radiometry-readiness.js +20 -17
- package/dist/sensor/radiometry-readiness.js.map +1 -1
- package/dist/sensor/raw-readout.d.ts +173 -83
- package/dist/sensor/raw-readout.js +425 -160
- package/dist/sensor/raw-readout.js.map +1 -1
- package/dist/sensor/raw-reconstruction.d.ts +112 -44
- package/dist/sensor/raw-reconstruction.js +200 -47
- package/dist/sensor/raw-reconstruction.js.map +1 -1
- package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
- package/dist/sensor/readout-exposure-linkage.js +125 -27
- package/dist/sensor/readout-exposure-linkage.js.map +1 -1
- package/dist/sensor/readout-timing.d.ts +43 -44
- package/dist/sensor/readout-timing.js +38 -30
- package/dist/sensor/readout-timing.js.map +1 -1
- package/dist/sensor/response-application-compatibility.d.ts +21 -28
- package/dist/sensor/response-application-compatibility.js +35 -34
- package/dist/sensor/response-application-compatibility.js.map +1 -1
- package/dist/sensor/response-operating-range.d.ts +26 -35
- package/dist/sensor/response-operating-range.js +40 -39
- package/dist/sensor/response-operating-range.js.map +1 -1
- package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
- package/dist/sensor/responsivity-photocurrent.js +57 -40
- package/dist/sensor/responsivity-photocurrent.js.map +1 -1
- package/dist/sensor/sampling-aperture.d.ts +21 -25
- package/dist/sensor/sampling-aperture.js +29 -28
- package/dist/sensor/sampling-aperture.js.map +1 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
- package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
- package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/sensor-geometry.d.ts +28 -32
- package/dist/sensor/sensor-geometry.js +35 -20
- package/dist/sensor/sensor-geometry.js.map +1 -1
- package/dist/sensor/signal-noise.d.ts +14 -16
- package/dist/sensor/signal-noise.js +15 -13
- package/dist/sensor/signal-noise.js.map +1 -1
- package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
- package/dist/sensor/spatial-sample-reduction.js +39 -48
- package/dist/sensor/spatial-sample-reduction.js.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
- package/dist/sensor/spatial-sampling-quadrature.js +31 -36
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
- package/dist/sensor/spatio-spectral-reduction.js +24 -29
- package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
- package/dist/sensor/spectral-coverage.d.ts +6 -9
- package/dist/sensor/spectral-coverage.js +9 -6
- package/dist/sensor/spectral-coverage.js.map +1 -1
- package/dist/sensor/spectral-quadrature.d.ts +46 -60
- package/dist/sensor/spectral-quadrature.js +38 -48
- package/dist/sensor/spectral-quadrature.js.map +1 -1
- package/dist/sensor/spectral-response.d.ts +53 -41
- package/dist/sensor/spectral-response.js +80 -47
- package/dist/sensor/spectral-response.js.map +1 -1
- package/dist/sensor/stochastic-seed.d.ts +50 -0
- package/dist/sensor/stochastic-seed.js +123 -0
- package/dist/sensor/stochastic-seed.js.map +1 -0
- package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
- package/dist/sensor/temporal-eqe-sum.js +5 -6
- package/dist/sensor/temporal-eqe-sum.js.map +1 -1
- package/dist/sensor/temporal-photo-signal.d.ts +5 -6
- package/dist/sensor/temporal-photo-signal.js +11 -10
- package/dist/sensor/temporal-photo-signal.js.map +1 -1
- package/dist/sensor/temporal-sample-binding.d.ts +1 -2
- package/dist/sensor/temporal-sample-binding.js +3 -3
- package/dist/sensor/temporal-sample-binding.js.map +1 -1
- package/dist/simulation/poc-simulation.d.ts +16 -16
- package/dist/simulation/poc-simulation.js +20 -15
- package/dist/simulation/poc-simulation.js.map +1 -1
- package/dist/stabilization/camera-shake.d.ts +42 -18
- package/dist/stabilization/camera-shake.js +43 -20
- package/dist/stabilization/camera-shake.js.map +1 -1
- package/dist/stabilization/system.d.ts +44 -41
- package/dist/stabilization/system.js +196 -108
- package/dist/stabilization/system.js.map +1 -1
- package/docs/AGENT_GUIDE.md +183 -0
- package/docs/API_REFERENCE.md +761 -2
- package/docs/QUICK_START.md +495 -0
- package/docs/USAGE.md +1719 -714
- package/docs/api/camera-equivalent-focal-length.md +6 -7
- package/docs/api/camera-field-of-view.md +16 -8
- package/docs/api/camera-lens-projection.md +246 -0
- package/docs/api/camera-projected-object-size.md +6 -5
- package/docs/api/capture-capture-export-metadata.md +10 -10
- package/docs/api/capture-dng-import.md +134 -0
- package/docs/api/capture-environment-raw-producer.md +17 -11
- package/docs/api/capture-export-jpeg.md +16 -0
- package/docs/api/capture-focus-control.md +25 -47
- package/docs/api/capture-linear-encoding.md +21 -12
- package/docs/api/capture-lossless-jpeg.md +49 -0
- package/docs/api/capture-native-environment-optical-stage.md +75 -0
- package/docs/api/capture-native-environment-raw.md +161 -4
- package/docs/api/capture-native-raw-development.md +69 -4
- package/docs/api/capture-native-raw-dng.md +84 -0
- package/docs/api/capture-native-raw.md +23 -8
- package/docs/api/capture-packed-sensor-raw.md +156 -0
- package/docs/api/capture-photographic-export.md +69 -31
- package/docs/api/capture-raw-frame-reconstruction.md +8 -8
- package/docs/api/capture-raw-white-level.md +37 -0
- package/docs/api/capture-release-sequence.md +6 -7
- package/docs/api/capture-sensor-raw-frame.md +6 -6
- package/docs/api/capture-sensor-raw-producer.md +17 -11
- package/docs/api/capture-simulated-capture.md +15 -15
- package/docs/api/color-camera-color-matrix.md +103 -0
- package/docs/api/color-capture-color.md +22 -11
- package/docs/api/color-chromatic-adaptation.md +82 -0
- package/docs/api/color-color-difference.md +134 -0
- package/docs/api/color-color-matching-functions.md +259 -0
- package/docs/api/color-colorimetry-math.md +54 -0
- package/docs/api/color-gamut-mapping.md +72 -0
- package/docs/api/color-illuminants.md +280 -0
- package/docs/api/color-rgb-color-spaces.md +151 -0
- package/docs/api/color-sensor-color-development.md +27 -0
- package/docs/api/color-srgb-icc.md +2 -4
- package/docs/api/color-white-balance.md +95 -19
- package/docs/api/composition-image-formation-plan.md +124 -95
- package/docs/api/composition-plan-consumer.md +7 -7
- package/docs/api/core-calculation-result.md +18 -14
- package/docs/api/core-configuration-error.md +1 -1
- package/docs/api/core-image-formation.md +7 -7
- package/docs/api/core-scientific-assurance.md +12 -10
- package/docs/api/core-spectral-composition.md +14 -14
- package/docs/api/core-spectral.md +6 -6
- package/docs/api/core-validation.md +3 -3
- package/docs/api/core-version.md +7 -6
- package/docs/api/equipment-exposure-capabilities.md +11 -10
- package/docs/api/equipment-generic-tier-assets.md +7 -2
- package/docs/api/equipment-generic-tier-presets.md +6 -6
- package/docs/api/equipment-iso-capabilities.md +18 -18
- package/docs/api/equipment-metering-capabilities.md +6 -6
- package/docs/api/equipment-release-capabilities.md +4 -4
- package/docs/api/exports.json +2213 -8
- package/docs/api/exposure-exposure-duration-control.md +9 -9
- package/docs/api/exposure-exposure-mode-resolver.md +35 -31
- package/docs/api/exposure-exposure.md +10 -10
- package/docs/api/exposure-flash-ttl.md +182 -0
- package/docs/api/exposure-flash.md +183 -28
- package/docs/api/exposure-metering-scene-radiance.md +11 -10
- package/docs/api/exposure-metering-target.md +9 -8
- package/docs/api/exposure-metering-temporal.md +8 -8
- package/docs/api/exposure-metering.md +69 -9
- package/docs/api/exposure-program-line.md +6 -5
- package/docs/api/facade-chart-radiance-batch.md +96 -0
- package/docs/api/facade-chart-scenes.md +240 -0
- package/docs/api/facade-scene-radiance.md +122 -0
- package/docs/api/facade-simulate-capture.md +324 -0
- package/docs/api/gpu-image-kernel-accelerator.md +157 -0
- package/docs/api/gpu-image-kernel-execution.md +152 -0
- package/docs/api/motion-camera-rotation.md +43 -26
- package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
- package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
- package/docs/api/motion-capture-rotation-trajectory.md +15 -15
- package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
- package/docs/api/motion-extended-object-projection.md +10 -8
- package/docs/api/motion-projected-motion.md +8 -8
- package/docs/api/motion-temporal-exposure-sum.md +98 -0
- package/docs/api/motion-video-sequence.md +159 -0
- package/docs/api/optics-aperture.md +8 -8
- package/docs/api/optics-atmospheric-haze.md +104 -0
- package/docs/api/optics-brown-conrady-distortion.md +123 -0
- package/docs/api/optics-circle-of-confusion.md +5 -4
- package/docs/api/optics-complex-pupil-psf.md +57 -16
- package/docs/api/optics-depth-of-field.md +12 -6
- package/docs/api/optics-diffraction.md +8 -7
- package/docs/api/optics-focus-breathing.md +104 -16
- package/docs/api/optics-focus-state.md +9 -10
- package/docs/api/optics-front-of-lens-filter.md +72 -14
- package/docs/api/optics-illumination-vignetting.md +10 -10
- package/docs/api/optics-irradiance-convolution.md +95 -0
- package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
- package/docs/api/optics-lens-psf-kernels.md +72 -0
- package/docs/api/optics-lens-psf-profile.md +48 -26
- package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
- package/docs/api/optics-polygon-diffraction.md +78 -13
- package/docs/api/optics-profile-contract.md +4 -4
- package/docs/api/optics-psf-foundation.md +12 -12
- package/docs/api/optics-pupil-vignetting.md +132 -0
- package/docs/api/optics-radial-distortion.md +12 -12
- package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
- package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
- package/docs/api/optics-sensor-aperture-rays.md +3 -2
- package/docs/api/optics-sensor-environment-query.md +52 -9
- package/docs/api/optics-sensor-psf-quadrature.md +13 -10
- package/docs/api/optics-stray-light.md +12 -11
- package/docs/api/optics-thin-lens.md +4 -3
- package/docs/api/optics-zernike-wavefront.md +229 -0
- package/docs/api/output-capture-corrected-sdr.md +10 -7
- package/docs/api/output-capture-geometry.md +35 -36
- package/docs/api/output-capture-sdr.md +4 -4
- package/docs/api/output-crop.md +7 -4
- package/docs/api/output-geometric-transforms.md +65 -19
- package/docs/api/output-lens-corrections.md +17 -15
- package/docs/api/output-native-capture-sdr.md +26 -13
- package/docs/api/output-png-encoder.md +105 -0
- package/docs/api/output-print-contrast-reference.md +8 -8
- package/docs/api/output-print-detail.md +14 -14
- package/docs/api/output-print-jpeg.md +22 -5
- package/docs/api/output-print-plan.md +18 -18
- package/docs/api/output-print-region-statistics.md +14 -14
- package/docs/api/output-sdr-rendering.md +52 -10
- package/docs/api/output-subject-framing-crop.md +5 -6
- package/docs/api/processing-demosaic.md +120 -0
- package/docs/api/processing-denoise.md +148 -0
- package/docs/api/processing-focus-stacking.md +41 -0
- package/docs/api/processing-hdr.md +113 -0
- package/docs/api/processing-panorama.md +82 -0
- package/docs/api/processing-processing-task.md +107 -0
- package/docs/api/processing-tone-mapping.md +142 -0
- package/docs/api/schema-camera.md +6 -4
- package/docs/api/schema-illumination-spectral.md +10 -11
- package/docs/api/schema-illumination-temporal.md +13 -15
- package/docs/api/schema-illumination.md +4 -4
- package/docs/api/schema-scene-radiance-temporal.md +10 -11
- package/docs/api/schema-scene-radiance.md +18 -17
- package/docs/api/schema-scene.md +9 -9
- package/docs/api/schema-validation.md +1 -1
- package/docs/api/sensor-accumulated-charge.md +12 -20
- package/docs/api/sensor-architecture.md +15 -16
- package/docs/api/sensor-camera-saturation-capacity.md +9 -11
- package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
- package/docs/api/sensor-capture-mode-timing.md +9 -9
- package/docs/api/sensor-capture-mode.md +29 -30
- package/docs/api/sensor-color-sampling.md +31 -33
- package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
- package/docs/api/sensor-dark-current.md +30 -14
- package/docs/api/sensor-environment-photo-signal.md +13 -6
- package/docs/api/sensor-eqe-electron-rate.md +9 -8
- package/docs/api/sensor-eqe-local-exposure.md +18 -17
- package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
- package/docs/api/sensor-exposure-window.md +24 -24
- package/docs/api/sensor-fixed-pattern-noise.md +104 -0
- package/docs/api/sensor-iso-gain.md +63 -0
- package/docs/api/sensor-iso-signal-chain.md +13 -22
- package/docs/api/sensor-local-exposure-binding.md +12 -13
- package/docs/api/sensor-optical-stack.md +37 -40
- package/docs/api/sensor-photon-energy.md +10 -11
- package/docs/api/sensor-physical-charge-capacity.md +8 -13
- package/docs/api/sensor-pixel-pitch.md +1 -1
- package/docs/api/sensor-radiometry-readiness.md +9 -9
- package/docs/api/sensor-raw-readout.md +118 -52
- package/docs/api/sensor-raw-reconstruction.md +97 -20
- package/docs/api/sensor-readout-exposure-linkage.md +120 -24
- package/docs/api/sensor-readout-timing.md +33 -35
- package/docs/api/sensor-response-application-compatibility.md +9 -11
- package/docs/api/sensor-response-operating-range.md +14 -18
- package/docs/api/sensor-responsivity-photocurrent.md +9 -12
- package/docs/api/sensor-sampling-aperture.md +22 -25
- package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
- package/docs/api/sensor-sensor-geometry.md +23 -24
- package/docs/api/sensor-signal-noise.md +10 -10
- package/docs/api/sensor-spatial-sample-reduction.md +27 -30
- package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
- package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
- package/docs/api/sensor-spectral-coverage.md +5 -5
- package/docs/api/sensor-spectral-quadrature.md +33 -35
- package/docs/api/sensor-spectral-response.md +28 -16
- package/docs/api/sensor-temporal-photo-signal.md +6 -6
- package/docs/api/simulation-poc-simulation.md +17 -16
- package/docs/api/stabilization-camera-shake.md +29 -10
- package/docs/api/stabilization-system.md +25 -21
- package/docs/examples/production-request.json +3821 -2157
- package/docs/examples/simulate-capture.mjs +14 -0
- package/llms.txt +35 -0
- package/package.json +32 -12
- package/AGENTS.md +0 -674
- package/CONTRIBUTING.md +0 -76
- package/DCO +0 -33
- package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
- package/dist/camera/field-of-view.d.ts.map +0 -1
- package/dist/camera/projected-object-size.d.ts.map +0 -1
- package/dist/capture/capture-export-metadata.d.ts.map +0 -1
- package/dist/capture/environment-raw-producer.d.ts.map +0 -1
- package/dist/capture/export-jpeg.d.ts.map +0 -1
- package/dist/capture/export-tiff.d.ts.map +0 -1
- package/dist/capture/focus-control.d.ts.map +0 -1
- package/dist/capture/linear-encoding.d.ts.map +0 -1
- package/dist/capture/native-environment-raw.d.ts.map +0 -1
- package/dist/capture/native-raw-development.d.ts.map +0 -1
- package/dist/capture/native-raw.d.ts.map +0 -1
- package/dist/capture/photographic-export.d.ts.map +0 -1
- package/dist/capture/raw-frame-limits.d.ts.map +0 -1
- package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
- package/dist/capture/release-sequence.d.ts.map +0 -1
- package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
- package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
- package/dist/capture/simulated-capture.d.ts.map +0 -1
- package/dist/color/capture-color.d.ts.map +0 -1
- package/dist/color/sensor-color-development.d.ts.map +0 -1
- package/dist/color/srgb-icc.d.ts.map +0 -1
- package/dist/color/srgb-transfer.d.ts.map +0 -1
- package/dist/color/white-balance.d.ts.map +0 -1
- package/dist/composition/image-formation-plan.d.ts.map +0 -1
- package/dist/composition/plan-consumer.d.ts.map +0 -1
- package/dist/core/calculation-result.d.ts.map +0 -1
- package/dist/core/canonical-json.d.ts.map +0 -1
- package/dist/core/configuration-error.d.ts.map +0 -1
- package/dist/core/evidence-provenance.d.ts.map +0 -1
- package/dist/core/image-formation.d.ts.map +0 -1
- package/dist/core/owned-data.d.ts.map +0 -1
- package/dist/core/record-validation.d.ts.map +0 -1
- package/dist/core/scientific-assurance.d.ts.map +0 -1
- package/dist/core/spectral-composition.d.ts.map +0 -1
- package/dist/core/spectral.d.ts.map +0 -1
- package/dist/core/validation.d.ts.map +0 -1
- package/dist/core/version.d.ts.map +0 -1
- package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
- package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
- package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
- package/dist/equipment/iso-capabilities.d.ts.map +0 -1
- package/dist/equipment/metering-capabilities.d.ts.map +0 -1
- package/dist/equipment/release-capabilities.d.ts.map +0 -1
- package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
- package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
- package/dist/exposure/exposure.d.ts.map +0 -1
- package/dist/exposure/flash.d.ts.map +0 -1
- package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
- package/dist/exposure/metering-target.d.ts.map +0 -1
- package/dist/exposure/metering-temporal.d.ts.map +0 -1
- package/dist/exposure/metering.d.ts.map +0 -1
- package/dist/exposure/program-line.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/motion/camera-rotation.d.ts.map +0 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/extended-object-projection.d.ts.map +0 -1
- package/dist/motion/projected-motion.d.ts.map +0 -1
- package/dist/optics/aperture.d.ts.map +0 -1
- package/dist/optics/circle-of-confusion.d.ts.map +0 -1
- package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
- package/dist/optics/depth-of-field.d.ts.map +0 -1
- package/dist/optics/diffraction.d.ts.map +0 -1
- package/dist/optics/focus-breathing.d.ts.map +0 -1
- package/dist/optics/focus-state.d.ts.map +0 -1
- package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
- package/dist/optics/illumination-vignetting.d.ts.map +0 -1
- package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
- package/dist/optics/lens-psf-profile.d.ts.map +0 -1
- package/dist/optics/polygon-diffraction.d.ts.map +0 -1
- package/dist/optics/profile-contract.d.ts.map +0 -1
- package/dist/optics/psf-foundation.d.ts.map +0 -1
- package/dist/optics/radial-distortion.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
- package/dist/optics/sensor-environment-query.d.ts.map +0 -1
- package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-psf-support.d.ts.map +0 -1
- package/dist/optics/stray-light.d.ts.map +0 -1
- package/dist/optics/thin-lens.d.ts.map +0 -1
- package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
- package/dist/output/capture-geometry.d.ts.map +0 -1
- package/dist/output/capture-sdr.d.ts.map +0 -1
- package/dist/output/crop.d.ts.map +0 -1
- package/dist/output/geometric-transforms.d.ts.map +0 -1
- package/dist/output/lens-corrections.d.ts.map +0 -1
- package/dist/output/native-capture-sdr.d.ts.map +0 -1
- package/dist/output/print-contrast-reference.d.ts.map +0 -1
- package/dist/output/print-detail.d.ts.map +0 -1
- package/dist/output/print-jpeg.d.ts.map +0 -1
- package/dist/output/print-plan.d.ts.map +0 -1
- package/dist/output/print-region-statistics.d.ts.map +0 -1
- package/dist/output/sdr-rendering.d.ts.map +0 -1
- package/dist/output/subject-framing-crop.d.ts.map +0 -1
- package/dist/schema/camera.d.ts.map +0 -1
- package/dist/schema/camera.js +0 -3
- package/dist/schema/camera.js.map +0 -1
- package/dist/schema/illumination-spectral.d.ts.map +0 -1
- package/dist/schema/illumination-temporal.d.ts.map +0 -1
- package/dist/schema/illumination.d.ts.map +0 -1
- package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
- package/dist/schema/scene-radiance.d.ts.map +0 -1
- package/dist/schema/scene.d.ts.map +0 -1
- package/dist/schema/scene.js +0 -3
- package/dist/schema/scene.js.map +0 -1
- package/dist/schema/validation.d.ts.map +0 -1
- package/dist/sensor/accumulated-charge.d.ts.map +0 -1
- package/dist/sensor/architecture.d.ts.map +0 -1
- package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
- package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
- package/dist/sensor/capture-mode.d.ts.map +0 -1
- package/dist/sensor/color-sampling.d.ts.map +0 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
- package/dist/sensor/dark-current.d.ts.map +0 -1
- package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
- package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
- package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/exposure-window.d.ts.map +0 -1
- package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
- package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
- package/dist/sensor/optical-stack.d.ts.map +0 -1
- package/dist/sensor/photon-energy.d.ts.map +0 -1
- package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
- package/dist/sensor/pixel-pitch.d.ts.map +0 -1
- package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
- package/dist/sensor/raw-readout.d.ts.map +0 -1
- package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
- package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
- package/dist/sensor/readout-timing.d.ts.map +0 -1
- package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
- package/dist/sensor/response-operating-range.d.ts.map +0 -1
- package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
- package/dist/sensor/sampling-aperture.d.ts.map +0 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/sensor-geometry.d.ts.map +0 -1
- package/dist/sensor/signal-noise.d.ts.map +0 -1
- package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
- package/dist/sensor/spectral-coverage.d.ts.map +0 -1
- package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
- package/dist/sensor/spectral-response.d.ts.map +0 -1
- package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
- package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
- package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
- package/dist/simulation/poc-simulation.d.ts.map +0 -1
- package/dist/stabilization/camera-shake.d.ts.map +0 -1
- package/dist/stabilization/system.d.ts.map +0 -1
- package/docs/API_STYLE.md +0 -235
- package/docs/ARCHITECTURE.md +0 -356
- package/docs/AUTOMATION_COORDINATION.md +0 -190
- package/docs/CAPTURE_COLOR.md +0 -25
- package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
- package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
- package/docs/CAPTURE_SDR.md +0 -22
- package/docs/DEVELOPERS.md +0 -68
- package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
- package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
- package/docs/EXPORT_ACCEPTANCE.md +0 -133
- package/docs/GENERIC_TIER_PRESETS.md +0 -269
- package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
- package/docs/IMAGE_FORMATION.md +0 -247
- package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
- package/docs/MOTION_AND_SIGNAL.md +0 -250
- package/docs/NATIVE_CAPTURE_SDR.md +0 -70
- package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
- package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
- package/docs/NATIVE_RAW_AND_PRINT.md +0 -47
- package/docs/NUMERICAL_CORRECTNESS.md +0 -191
- package/docs/PERFORMANCE_BASELINE.md +0 -56
- package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
- package/docs/PHYSICS_FOUNDATION.md +0 -426
- package/docs/POC_API.md +0 -278
- package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
- package/docs/POC_PROJECTION_REUSE.md +0 -124
- package/docs/PRINT_195_196_REVIEW.md +0 -93
- package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
- package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
- package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
- package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
- package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
- package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
- package/docs/PRINT_PLANNING.md +0 -75
- package/docs/PRINT_REGION_STATISTICS.md +0 -38
- package/docs/PROCESSED_OUTPUT.md +0 -157
- package/docs/PRODUCTION_COMPOSITION.md +0 -373
- package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
- package/docs/PROVENANCE.md +0 -115
- package/docs/PSF_FOUNDATION.md +0 -165
- package/docs/RAW_FRAME_ENVELOPE.md +0 -56
- package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
- package/docs/RELEASE_1_0.md +0 -66
- package/docs/RELEASE_1_0_1.md +0 -61
- package/docs/RELEASE_1_1_0.md +0 -25
- package/docs/RELEASE_1_2_0.md +0 -51
- package/docs/RELEASE_1_3_0.md +0 -15
- package/docs/RELEASE_1_4_0.md +0 -23
- package/docs/RELEASE_AUDIT.md +0 -39
- package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
- package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
- package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
- package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
- package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
- package/docs/SDR_RENDERING.md +0 -33
- package/docs/SENSOR_APERTURE_RAYS.md +0 -23
- package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
- package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
- package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
- package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
- package/docs/SENSOR_RAW_FRAME.md +0 -20
- package/docs/SENSOR_RAW_PRODUCER.md +0 -77
- package/docs/SIGNAL_CONFORMANCE.md +0 -23
- package/docs/SIMULATED_CAPTURE.md +0 -65
- package/docs/STABILIZATION.md +0 -234
- package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
- package/docs/TIER_ACCEPTANCE.md +0 -129
- package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
- package/docs/V1_COMPOSITION_MAP.md +0 -123
- package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
- package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
- package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
- package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
- package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
- package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
- package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
- package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
- package/docs/licenses/castleCSF-MIT.txt +0 -21
- package/docs/validation/documentation-fragments.json +0 -212
- package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
- package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
- package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
- package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
- package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
- package/docs/validation/print-196-candidate-capabilities.json +0 -28
- package/docs/validation/print-196-candidate-evidence.json +0 -356
- package/docs/validation/print-196-engine-acceptance.json +0 -81
- package/docs/validation/print-detail-capabilities.json +0 -103
- package/docs/validation/print-detail-jpeg-evidence.json +0 -116
- package/docs/validation/print-detail-sdr-evidence.json +0 -81
- package/docs/validation/release-audit-inventory.json +0 -1306
- package/docs/validation/tier-acceptance-report-v1.json +0 -2538
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exposure-mode-resolver.js","sourceRoot":"","sources":["../../src/exposure/exposure-mode-resolver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"exposure-mode-resolver.js","sourceRoot":"","sources":["../../src/exposure/exposure-mode-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Exposure modes: Manual, Aperture Priority, Shutter Priority, Program and Full Auto, each with\n * manual ISO or Auto ISO where the mode allows it.\n *\n * Every exposure mode applies its control policy to one shared relative exposure equation, with an\n * explicit reference anchor. Exposure compensation is already part of the frozen meter target. Manual\n * settings are never changed. Automatic settings snap to the declared setting grids, and the result\n * reports the signed leftover (residual) stops and any limits hit. A target with zero signal cannot\n * be used to make up an exposure.\n *\n * The relative meter target is normalized by an explicit reference exposure anchor. No ISO 100 or\n * other hidden absolute calibration is assumed.\n * @see docs/USAGE.md for the equations, units, coordinate conventions, known blockers and support\n * limits.\n */\n\nimport { InvalidScientificInputError } from \"../core/validation.js\";\nimport type {\n ResolvedGenericEquipmentExposureCapabilities,\n ResolvedNumericSettingGrid\n} from \"../equipment/exposure-capabilities.js\";\nimport {\n EXPOSURE_METER_TARGET_SCHEMA_VERSION,\n type ExposureMeterTarget\n} from \"./metering-target.js\";\nimport {\n parseExposureProgramLineProfile,\n type ExposureProgramLineProfile\n} from \"./program-line.js\";\nimport { requireInputKeys } from \"../core/record-validation.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport const EXPOSURE_MODE_RESOLVER_VERSION =\n \"0.5.0\" as const;\n\nexport interface RelativeExposureControlAnchor {\n aperture: number;\n shutterSeconds: number;\n iso: number;\n}\n\nexport type ManualIsoControl =\n | {\n kind: \"manual\";\n iso: number;\n }\n | {\n kind: \"automatic\";\n quantizationPolicy:\n \"nearest-log2-lower-on-tie\";\n };\n\nexport interface ResolveManualExposureModeInput {\n target: ExposureMeterTarget;\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities;\n referenceExposure:\n RelativeExposureControlAnchor;\n manualAperture: number;\n manualShutterSeconds: number;\n isoControl: ManualIsoControl;\n}\n\nexport interface ResolveAperturePriorityExposureModeInput {\n target: ExposureMeterTarget;\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities;\n referenceExposure:\n RelativeExposureControlAnchor;\n manualAperture: number;\n manualIso: number;\n shutterQuantizationPolicy:\n \"nearest-log2-shorter-on-tie\";\n}\n\nexport type ExposureTargetResidualState =\n | \"matched\"\n | \"under-target\"\n | \"over-target\"\n | \"target-unresolved\";\n\nexport type ExposureResolutionConstraint =\n | \"none\"\n | \"iso-minimum\"\n | \"iso-maximum\"\n | \"iso-grid-quantization\"\n | \"shutter-minimum\"\n | \"shutter-maximum\"\n | \"shutter-grid-quantization\"\n | \"aperture-widest\"\n | \"aperture-narrowest\"\n | \"aperture-grid-quantization\";\n\nexport type ExposureTargetResidual =\n | {\n status: \"resolved\";\n state:\n | \"matched\"\n | \"under-target\"\n | \"over-target\";\n targetExposureStops: number;\n achievedExposureStops: number;\n residualStops: number;\n limitingConstraint:\n ExposureResolutionConstraint;\n }\n | {\n status:\n \"target-unresolved\";\n state:\n \"target-unresolved\";\n reason:\n \"no-signal-target\";\n };\n\ninterface ManualExposureResolutionBase {\n resolverVersion:\n typeof EXPOSURE_MODE_RESOLVER_VERSION;\n mode: \"manual\";\n axisOwnership: {\n aperture: \"manual\";\n shutter: \"manual\";\n iso: \"manual\" | \"automatic\";\n };\n targetId: string;\n targetSourceMeterSnapshot:\n ExposureMeterTarget[\"sourceMeterSnapshot\"];\n capabilityProfiles: {\n bodyProfileId: string;\n bodyProfileVersion: string;\n lensProfileId: string;\n lensProfileVersion: string;\n };\n selectedFocalLengthMm: number;\n referenceExposure:\n RelativeExposureControlAnchor;\n manualAperture: number;\n manualShutterSeconds: number;\n apertureMutatedByResolver: false;\n shutterMutatedByResolver: false;\n exposureCompensationAppliedByResolver:\n false;\n meterRecomputedByResolver: false;\n isoNoiseOrGainTopologyInferred: false;\n flashPolicyApplied: false;\n safetyShiftApplied: false;\n}\n\nexport type ManualExposureModeResolution =\n | (ManualExposureResolutionBase & {\n status: \"resolved\";\n isoControl: \"manual\";\n resolvedSettings: {\n aperture: number;\n shutterSeconds: number;\n iso: number;\n };\n idealIsoBeforeConstraints:\n null;\n isoResolution: {\n kind: \"manual-preserved\";\n quantized: false;\n clamped: false;\n };\n targetResidual:\n ExposureTargetResidual;\n })\n | (ManualExposureResolutionBase & {\n status: \"resolved\";\n isoControl: \"automatic\";\n resolvedSettings: {\n aperture: number;\n shutterSeconds: number;\n iso: number;\n };\n idealIsoBeforeConstraints:\n number;\n isoResolution: {\n kind:\n | \"continuous\"\n | \"discrete\";\n quantizationPolicy:\n \"nearest-log2-lower-on-tie\";\n quantized: boolean;\n clamped:\n | false\n | \"minimum\"\n | \"maximum\";\n };\n targetResidual: {\n status: \"resolved\";\n state:\n | \"matched\"\n | \"under-target\"\n | \"over-target\";\n targetExposureStops: number;\n achievedExposureStops: number;\n residualStops: number;\n limitingConstraint:\n ExposureResolutionConstraint;\n };\n })\n | (ManualExposureResolutionBase & {\n status: \"blocked\";\n isoControl: \"automatic\";\n resolvedSettings: {\n aperture: number;\n shutterSeconds: number;\n };\n idealIsoBeforeConstraints:\n null;\n blocker:\n | \"auto-iso-unsupported\"\n | \"auto-iso-unknown\"\n | \"target-no-signal\";\n targetResidual: {\n status:\n \"target-unresolved\";\n state:\n \"target-unresolved\";\n reason:\n \"no-signal-target\" |\n \"auto-iso-unavailable\";\n };\n });\n\ninterface AperturePriorityExposureResolutionBase {\n resolverVersion:\n typeof EXPOSURE_MODE_RESOLVER_VERSION;\n mode: \"aperture-priority\";\n axisOwnership: {\n aperture: \"manual\";\n shutter: \"automatic\";\n iso: \"manual\";\n };\n targetId: string;\n targetSourceMeterSnapshot:\n ExposureMeterTarget[\"sourceMeterSnapshot\"];\n capabilityProfiles: {\n bodyProfileId: string;\n bodyProfileVersion: string;\n lensProfileId: string;\n lensProfileVersion: string;\n };\n selectedFocalLengthMm: number;\n referenceExposure:\n RelativeExposureControlAnchor;\n manualAperture: number;\n manualIso: number;\n apertureMutatedByResolver: false;\n isoMutatedByResolver: false;\n shutterResolvedByResolver: true;\n exposureCompensationAppliedByResolver:\n false;\n meterRecomputedByResolver: false;\n isoNoiseOrGainTopologyInferred: false;\n flashPolicyApplied: false;\n safetyShiftApplied: false;\n}\n\nexport type AperturePriorityExposureModeResolution =\n | (AperturePriorityExposureResolutionBase & {\n status: \"resolved\";\n resolvedSettings: {\n aperture: number;\n shutterSeconds: number;\n iso: number;\n };\n idealShutterSecondsBeforeConstraints:\n number;\n shutterResolution: {\n kind:\n | \"continuous\"\n | \"discrete\";\n quantizationPolicy:\n \"nearest-log2-shorter-on-tie\";\n quantized: boolean;\n clamped:\n | false\n | \"minimum\"\n | \"maximum\";\n };\n targetResidual: {\n status: \"resolved\";\n state:\n | \"matched\"\n | \"under-target\"\n | \"over-target\";\n targetExposureStops: number;\n achievedExposureStops: number;\n residualStops: number;\n limitingConstraint:\n ExposureResolutionConstraint;\n };\n })\n | (AperturePriorityExposureResolutionBase & {\n status: \"blocked\";\n resolvedSettings: {\n aperture: number;\n iso: number;\n };\n idealShutterSecondsBeforeConstraints:\n null;\n blocker: \"target-no-signal\";\n targetResidual: {\n status: \"target-unresolved\";\n state: \"target-unresolved\";\n reason: \"no-signal-target\";\n };\n });\n\nexport interface AutoIsoBaselinePolicy {\n isoBaseline: \"minimum-selectable\";\n isoQuantizationPolicy:\n \"nearest-log2-lower-on-tie\";\n}\n\nexport interface AperturePriorityAutoIsoPolicy\n extends AutoIsoBaselinePolicy {\n kind:\n \"minimum-iso-until-slowest-preferred-shutter\";\n slowestPreferredShutterSeconds:\n number;\n shutterSelectionPolicy:\n \"not-longer-than-target\";\n afterMaximumIso:\n | \"allow-slower-shutter\"\n | \"hold-preferred-shutter\";\n}\n\nexport interface ShutterPriorityAutoIsoPolicy\n extends AutoIsoBaselinePolicy {\n kind:\n \"minimum-iso-aperture-first\";\n apertureSelectionPolicy:\n \"not-wider-than-target\";\n}\n\nexport interface ResolveAperturePriorityAutoIsoExposureModeInput {\n target: ExposureMeterTarget;\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities;\n referenceExposure:\n RelativeExposureControlAnchor;\n manualAperture: number;\n policy: AperturePriorityAutoIsoPolicy;\n}\n\nexport interface ResolveShutterPriorityExposureModeInput {\n target: ExposureMeterTarget;\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities;\n referenceExposure:\n RelativeExposureControlAnchor;\n manualShutterSeconds: number;\n isoControl:\n | {\n kind: \"manual\";\n iso: number;\n apertureQuantizationPolicy:\n \"nearest-log2-narrower-on-tie\";\n }\n | {\n kind: \"automatic\";\n policy:\n ShutterPriorityAutoIsoPolicy;\n };\n}\n\ninterface PriorityAutoIsoResolutionCommon {\n isoResolution: {\n kind:\n | \"continuous\"\n | \"discrete\";\n quantizationPolicy:\n \"nearest-log2-lower-on-tie\";\n quantized: boolean;\n clamped:\n | false\n | \"minimum\"\n | \"maximum\";\n };\n idealIsoBeforeConstraints: number;\n}\n\nexport type AperturePriorityAutoIsoExposureModeResolution =\n | {\n resolverVersion:\n typeof EXPOSURE_MODE_RESOLVER_VERSION;\n mode:\n \"aperture-priority\";\n status: \"resolved\";\n axisOwnership: {\n aperture: \"manual\";\n shutter: \"automatic\";\n iso: \"automatic\";\n };\n targetId: string;\n targetSourceMeterSnapshot:\n ExposureMeterTarget[\"sourceMeterSnapshot\"];\n referenceExposure:\n RelativeExposureControlAnchor;\n manualAperture: number;\n policy:\n AperturePriorityAutoIsoPolicy;\n baselineIso: number;\n idealShutterAtBaselineIsoSeconds:\n number;\n preferredShutterSeconds:\n number;\n afterMaximumIsoFallbackUsed:\n boolean;\n resolvedSettings: {\n aperture: number;\n shutterSeconds: number;\n iso: number;\n };\n shutterResolution: {\n kind:\n | \"continuous\"\n | \"discrete\";\n quantized: boolean;\n clamped:\n | false\n | \"minimum\"\n | \"maximum\";\n selectionPolicy:\n | \"not-longer-than-target\"\n | \"nearest-log2-shorter-on-tie\";\n };\n isoResolution:\n PriorityAutoIsoResolutionCommon[\"isoResolution\"];\n idealIsoBeforeConstraints: number;\n targetResidual:\n Extract<\n ExposureTargetResidual,\n { status: \"resolved\" }\n >;\n apertureMutatedByResolver: false;\n shutterResolvedByResolver: true;\n isoResolvedByResolver: true;\n exposureCompensationAppliedByResolver:\n false;\n meterRecomputedByResolver: false;\n flashPolicyApplied: false;\n safetyShiftApplied: false;\n }\n | {\n resolverVersion:\n typeof EXPOSURE_MODE_RESOLVER_VERSION;\n mode:\n \"aperture-priority\";\n status: \"blocked\";\n axisOwnership: {\n aperture: \"manual\";\n shutter: \"automatic\";\n iso: \"automatic\";\n };\n targetId: string;\n targetSourceMeterSnapshot:\n ExposureMeterTarget[\"sourceMeterSnapshot\"];\n referenceExposure:\n RelativeExposureControlAnchor;\n manualAperture: number;\n policy:\n AperturePriorityAutoIsoPolicy;\n resolvedSettings: {\n aperture: number;\n };\n blocker:\n | \"auto-iso-unsupported\"\n | \"auto-iso-unknown\"\n | \"target-no-signal\";\n targetResidual: {\n status:\n \"target-unresolved\";\n state:\n \"target-unresolved\";\n reason:\n | \"no-signal-target\"\n | \"auto-iso-unavailable\";\n };\n apertureMutatedByResolver: false;\n exposureCompensationAppliedByResolver:\n false;\n meterRecomputedByResolver: false;\n flashPolicyApplied: false;\n safetyShiftApplied: false;\n };\n\ninterface ShutterPriorityResolutionBase {\n resolverVersion:\n typeof EXPOSURE_MODE_RESOLVER_VERSION;\n mode: \"shutter-priority\";\n targetId: string;\n targetSourceMeterSnapshot:\n ExposureMeterTarget[\"sourceMeterSnapshot\"];\n referenceExposure:\n RelativeExposureControlAnchor;\n manualShutterSeconds: number;\n shutterMutatedByResolver: false;\n apertureResolvedByResolver: true;\n exposureCompensationAppliedByResolver:\n false;\n meterRecomputedByResolver: false;\n flashPolicyApplied: false;\n safetyShiftApplied: false;\n}\n\nexport type ShutterPriorityExposureModeResolution =\n | (ShutterPriorityResolutionBase & {\n status: \"resolved\";\n axisOwnership: {\n aperture: \"automatic\";\n shutter: \"manual\";\n iso: \"manual\";\n };\n isoControl: \"manual\";\n manualIso: number;\n idealApertureBeforeConstraints:\n number;\n resolvedSettings: {\n aperture: number;\n shutterSeconds: number;\n iso: number;\n };\n apertureResolution: {\n kind:\n | \"continuous\"\n | \"discrete\";\n quantizationPolicy:\n \"nearest-log2-narrower-on-tie\";\n quantized: boolean;\n clamped:\n | false\n | \"widest\"\n | \"narrowest\";\n };\n targetResidual:\n Extract<\n ExposureTargetResidual,\n { status: \"resolved\" }\n >;\n })\n | (ShutterPriorityResolutionBase & {\n status: \"resolved\";\n axisOwnership: {\n aperture: \"automatic\";\n shutter: \"manual\";\n iso: \"automatic\";\n };\n isoControl: \"automatic\";\n policy:\n ShutterPriorityAutoIsoPolicy;\n baselineIso: number;\n idealApertureAtBaselineIso:\n number;\n resolvedSettings: {\n aperture: number;\n shutterSeconds: number;\n iso: number;\n };\n apertureResolution: {\n kind:\n | \"continuous\"\n | \"discrete\";\n quantized: boolean;\n clamped:\n | false\n | \"widest\"\n | \"narrowest\";\n selectionPolicy:\n \"not-wider-than-target\";\n };\n idealIsoBeforeConstraints: number;\n isoResolution:\n PriorityAutoIsoResolutionCommon[\"isoResolution\"];\n targetResidual:\n Extract<\n ExposureTargetResidual,\n { status: \"resolved\" }\n >;\n })\n | (ShutterPriorityResolutionBase & {\n status: \"blocked\";\n axisOwnership: {\n aperture: \"automatic\";\n shutter: \"manual\";\n iso: \"manual\" | \"automatic\";\n };\n isoControl: \"manual\" | \"automatic\";\n resolvedSettings: {\n shutterSeconds: number;\n };\n blocker:\n | \"auto-iso-unsupported\"\n | \"auto-iso-unknown\"\n | \"target-no-signal\";\n targetResidual: {\n status:\n \"target-unresolved\";\n state:\n \"target-unresolved\";\n reason:\n | \"no-signal-target\"\n | \"auto-iso-unavailable\";\n };\n });\n\nexport type ProgramAutoIsoControl =\n | {\n kind: \"manual\";\n iso: number;\n }\n | {\n kind: \"automatic\";\n isoBaseline:\n \"minimum-selectable\";\n isoQuantizationPolicy:\n \"nearest-log2-lower-on-tie\";\n };\n\nexport interface ResolveProgramAutoExposureModeInput {\n target: ExposureMeterTarget;\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities;\n referenceExposure:\n RelativeExposureControlAnchor;\n programLine:\n ExposureProgramLineProfile;\n isoControl:\n ProgramAutoIsoControl;\n}\n\nexport interface FullAutoExposurePolicy {\n kind:\n \"generic-program-line-minimum-iso\";\n programLine:\n ExposureProgramLineProfile;\n isoBaseline:\n \"minimum-selectable\";\n isoQuantizationPolicy:\n \"nearest-log2-lower-on-tie\";\n}\n\nexport interface ResolveFullAutoExposureModeInput {\n target: ExposureMeterTarget;\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities;\n referenceExposure:\n RelativeExposureControlAnchor;\n policy:\n FullAutoExposurePolicy;\n}\n\nexport interface ProgramLineSelectionDiagnostics {\n profileId: string;\n profileVersion: string;\n requestedOpticalExposureStopsFromReference:\n number;\n selectedOpticalExposureStopsFromReference:\n number;\n position:\n | \"within-line\"\n | \"below-line\"\n | \"above-line\";\n interpolationPhase:\n number | null;\n idealAperture: number;\n idealShutterSeconds: number;\n resolvedAperture: number;\n resolvedShutterSeconds: number;\n apertureQuantized: boolean;\n shutterQuantized: boolean;\n apertureClamped:\n | false\n | \"widest\"\n | \"narrowest\";\n shutterClamped:\n | false\n | \"minimum\"\n | \"maximum\";\n}\n\ninterface ProgramExposureResolutionBase {\n resolverVersion:\n typeof EXPOSURE_MODE_RESOLVER_VERSION;\n targetId: string;\n targetSourceMeterSnapshot:\n ExposureMeterTarget[\"sourceMeterSnapshot\"];\n referenceExposure:\n RelativeExposureControlAnchor;\n programLineSelection:\n ProgramLineSelectionDiagnostics;\n apertureResolvedByResolver: true;\n shutterResolvedByResolver: true;\n exposureCompensationAppliedByResolver:\n false;\n meterRecomputedByResolver: false;\n flashPolicyApplied: false;\n safetyShiftApplied: false;\n}\n\nexport type ProgramAutoExposureModeResolution =\n | (ProgramExposureResolutionBase & {\n mode: \"program-auto\";\n status: \"resolved\";\n axisOwnership: {\n aperture: \"automatic\";\n shutter: \"automatic\";\n iso: \"manual\";\n };\n isoControl: \"manual\";\n manualIso: number;\n resolvedSettings: {\n aperture: number;\n shutterSeconds: number;\n iso: number;\n };\n targetResidual:\n Extract<\n ExposureTargetResidual,\n { status: \"resolved\" }\n >;\n })\n | (ProgramExposureResolutionBase & {\n mode: \"program-auto\";\n status: \"resolved\";\n axisOwnership: {\n aperture: \"automatic\";\n shutter: \"automatic\";\n iso: \"automatic\";\n };\n isoControl: \"automatic\";\n baselineIso: number;\n idealIsoBeforeConstraints:\n number;\n isoResolution:\n PriorityAutoIsoResolutionCommon[\"isoResolution\"];\n resolvedSettings: {\n aperture: number;\n shutterSeconds: number;\n iso: number;\n };\n targetResidual:\n Extract<\n ExposureTargetResidual,\n { status: \"resolved\" }\n >;\n })\n | {\n resolverVersion:\n typeof EXPOSURE_MODE_RESOLVER_VERSION;\n mode: \"program-auto\";\n status: \"blocked\";\n axisOwnership: {\n aperture: \"automatic\";\n shutter: \"automatic\";\n iso: \"manual\" | \"automatic\";\n };\n isoControl: \"manual\" | \"automatic\";\n targetId: string;\n targetSourceMeterSnapshot:\n ExposureMeterTarget[\"sourceMeterSnapshot\"];\n referenceExposure:\n RelativeExposureControlAnchor;\n blocker:\n | \"target-no-signal\"\n | \"auto-iso-unsupported\"\n | \"auto-iso-unknown\";\n targetResidual: {\n status: \"target-unresolved\";\n state: \"target-unresolved\";\n reason:\n | \"no-signal-target\"\n | \"auto-iso-unavailable\";\n };\n exposureCompensationAppliedByResolver:\n false;\n meterRecomputedByResolver: false;\n flashPolicyApplied: false;\n safetyShiftApplied: false;\n };\n\nexport type FullAutoExposureModeResolution =\n | (ProgramExposureResolutionBase & {\n mode:\n \"full-auto-exposure\";\n status: \"resolved\";\n axisOwnership: {\n aperture: \"automatic\";\n shutter: \"automatic\";\n iso: \"automatic\";\n };\n policy:\n FullAutoExposurePolicy;\n baselineIso: number;\n idealIsoBeforeConstraints:\n number;\n isoResolution:\n PriorityAutoIsoResolutionCommon[\"isoResolution\"];\n resolvedSettings: {\n aperture: number;\n shutterSeconds: number;\n iso: number;\n };\n targetResidual:\n Extract<\n ExposureTargetResidual,\n { status: \"resolved\" }\n >;\n autofocusResolved: false;\n whiteBalanceResolved: false;\n flashResolved: false;\n driveResolved: false;\n sceneRecognitionResolved: false;\n stabilizationPolicyResolved:\n false;\n })\n | {\n resolverVersion:\n typeof EXPOSURE_MODE_RESOLVER_VERSION;\n mode:\n \"full-auto-exposure\";\n status: \"blocked\";\n axisOwnership: {\n aperture: \"automatic\";\n shutter: \"automatic\";\n iso: \"automatic\";\n };\n policy:\n FullAutoExposurePolicy;\n targetId: string;\n targetSourceMeterSnapshot:\n ExposureMeterTarget[\"sourceMeterSnapshot\"];\n referenceExposure:\n RelativeExposureControlAnchor;\n blocker:\n | \"target-no-signal\"\n | \"auto-iso-unsupported\"\n | \"auto-iso-unknown\";\n targetResidual: {\n status: \"target-unresolved\";\n state: \"target-unresolved\";\n reason:\n | \"no-signal-target\"\n | \"auto-iso-unavailable\";\n };\n exposureCompensationAppliedByResolver:\n false;\n meterRecomputedByResolver: false;\n flashPolicyApplied: false;\n safetyShiftApplied: false;\n autofocusResolved: false;\n whiteBalanceResolved: false;\n flashResolved: false;\n driveResolved: false;\n sceneRecognitionResolved: false;\n stabilizationPolicyResolved:\n false;\n };\n\nfunction requireRecord(\n value: unknown,\n path: string\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n return value as UnknownRecord;\n}\n\nfunction requirePositiveFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value <= 0\n ) {\n throw new InvalidScientificInputError(\n path +\n \" must be finite and greater than zero.\"\n );\n }\n return value;\n}\n\nfunction settingEquals(\n left: number,\n right: number\n): boolean {\n const scale = Math.max(\n Math.abs(left),\n Math.abs(right),\n 1\n );\n return (\n Math.abs(left - right) <=\n Number.EPSILON * 32 * scale\n );\n}\n\nfunction validateSettingAgainstGrid(\n value: number,\n minimum: number,\n maximum: number,\n grid: ResolvedNumericSettingGrid,\n path: string\n): void {\n if (\n value < minimum ||\n value > maximum\n ) {\n throw new InvalidScientificInputError(\n path +\n \" lies outside the resolved equipment capability range.\"\n );\n }\n\n if (\n grid.kind ===\n \"discrete-values\" &&\n !grid.values.some(\n (candidate) =>\n settingEquals(\n candidate,\n value\n )\n )\n ) {\n throw new InvalidScientificInputError(\n path +\n \" is not present in the resolved discrete equipment setting grid.\"\n );\n }\n}\n\nfunction validateTarget(\n value: unknown\n): ExposureMeterTarget {\n const record = requireRecord(\n value,\n \"target\"\n );\n if (\n record.schemaVersion !==\n EXPOSURE_METER_TARGET_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'target.schemaVersion must be \"' +\n EXPOSURE_METER_TARGET_SCHEMA_VERSION +\n '\".'\n );\n }\n if (\n record.scientificStatus !==\n \"approximation\" ||\n record.inputDomain !==\n \"relative-pre-exposure-linear-signal\" ||\n record.intendedConsumer !==\n \"exposure-mode-resolver\" ||\n record.automaticExposureResolved !==\n false ||\n record.sourceMeterSnapshotPreserved !==\n true\n ) {\n throw new InvalidScientificInputError(\n \"target does not satisfy the exposure-mode resolver boundary.\"\n );\n }\n\n const targetId = record.targetId;\n if (\n typeof targetId !== \"string\" ||\n targetId.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n \"target.targetId must be a non-empty string.\"\n );\n }\n\n requireRecord(\n record.sourceMeterSnapshot,\n \"target.sourceMeterSnapshot\"\n );\n\n if (\n record.status === \"resolved\"\n ) {\n requirePositiveFinite(\n record\n .requiredExposureScaleToTarget,\n \"target.requiredExposureScaleToTarget\"\n );\n if (\n typeof record\n .exposureOffsetStopsToTarget !==\n \"number\" ||\n !Number.isFinite(\n record\n .exposureOffsetStopsToTarget\n )\n ) {\n throw new InvalidScientificInputError(\n \"target.exposureOffsetStopsToTarget must be finite.\"\n );\n }\n } else if (\n record.status !== \"no-signal\"\n ) {\n throw new InvalidConfigurationError(\n \"target.status is invalid.\"\n );\n }\n\n return value as ExposureMeterTarget;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty string.\"\n );\n }\n return value.trim();\n}\n\nfunction validateResolvedGrid(\n grid: ResolvedNumericSettingGrid,\n minimum: number,\n maximum: number,\n path: string\n): void {\n requireRecord(grid, path);\n if (\n grid.kind ===\n \"continuous-within-range\"\n ) {\n return;\n }\n if (\n grid.kind !== \"discrete-values\" ||\n !Array.isArray(grid.values) ||\n grid.values.length === 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be a continuous grid or a non-empty discrete-values grid.\"\n );\n }\n\n let previous =\n Number.NEGATIVE_INFINITY;\n for (\n let index = 0;\n index < grid.values.length;\n index += 1\n ) {\n const value =\n requirePositiveFinite(\n grid.values[index],\n path +\n \".values[\" +\n index +\n \"]\"\n );\n if (value <= previous) {\n throw new InvalidScientificInputError(\n path +\n \".values must be strictly increasing with no duplicates.\"\n );\n }\n if (\n value < minimum ||\n value > maximum\n ) {\n throw new InvalidScientificInputError(\n path +\n \".values must stay inside the resolved capability range.\"\n );\n }\n previous = value;\n }\n}\n\nfunction validateCapabilities(\n value:\n ResolvedGenericEquipmentExposureCapabilities\n): void {\n requireRecord(value, \"capabilities\");\n for (const key of [\"aperture\", \"shutter\", \"iso\", \"bodyProfile\", \"lensProfile\"] as const) {\n requireRecord(value[key], \"capabilities.\" + key);\n }\n if (\n value.schemaVersion !== \"0.1.0\" ||\n value.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidScientificInputError(\n \"capabilities do not satisfy the generic equipment exposure-capability boundary.\"\n );\n }\n requirePositiveFinite(\n value.selectedFocalLengthMm,\n \"capabilities.selectedFocalLengthMm\"\n );\n requirePositiveFinite(\n value.aperture\n .widestAvailableFNumber,\n \"capabilities.aperture.widestAvailableFNumber\"\n );\n requirePositiveFinite(\n value.aperture\n .narrowestAvailableFNumber,\n \"capabilities.aperture.narrowestAvailableFNumber\"\n );\n requirePositiveFinite(\n value.shutter.minimumSeconds,\n \"capabilities.shutter.minimumSeconds\"\n );\n requirePositiveFinite(\n value.shutter.maximumSeconds,\n \"capabilities.shutter.maximumSeconds\"\n );\n requirePositiveFinite(\n value.iso.minimum,\n \"capabilities.iso.minimum\"\n );\n requirePositiveFinite(\n value.iso.maximum,\n \"capabilities.iso.maximum\"\n );\n\n if (\n value.aperture\n .widestAvailableFNumber >\n value.aperture\n .narrowestAvailableFNumber\n ) {\n throw new InvalidScientificInputError(\n \"capabilities aperture range is invalid.\"\n );\n }\n if (\n value.shutter.minimumSeconds >\n value.shutter.maximumSeconds\n ) {\n throw new InvalidScientificInputError(\n \"capabilities shutter range is invalid.\"\n );\n }\n if (\n value.iso.minimum >\n value.iso.maximum\n ) {\n throw new InvalidScientificInputError(\n \"capabilities ISO range is invalid.\"\n );\n }\n\n const hasAutoMinimum =\n value.iso.autoIsoMinimum !==\n undefined;\n const hasAutoMaximum =\n value.iso.autoIsoMaximum !==\n undefined;\n if (\n hasAutoMinimum !==\n hasAutoMaximum\n ) {\n throw new InvalidScientificInputError(\n \"capabilities Auto ISO bounds must provide both minimum and maximum or neither.\"\n );\n }\n if (\n hasAutoMinimum &&\n hasAutoMaximum\n ) {\n const autoMinimum =\n requirePositiveFinite(\n value.iso.autoIsoMinimum,\n \"capabilities.iso.autoIsoMinimum\"\n );\n const autoMaximum =\n requirePositiveFinite(\n value.iso.autoIsoMaximum,\n \"capabilities.iso.autoIsoMaximum\"\n );\n if (\n value.iso\n .autoIsoAvailability !==\n \"supported\" ||\n autoMinimum >\n autoMaximum ||\n autoMinimum <\n value.iso.minimum ||\n autoMaximum >\n value.iso.maximum\n ) {\n throw new InvalidScientificInputError(\n \"capabilities Auto ISO bounds must be ordered, inside the manual ISO range, and used only when Auto ISO is supported.\"\n );\n }\n }\n\n requireNonEmptyString(\n value.bodyProfile.profileId,\n \"capabilities.bodyProfile.profileId\"\n );\n requireNonEmptyString(\n value.bodyProfile.profileVersion,\n \"capabilities.bodyProfile.profileVersion\"\n );\n requireNonEmptyString(\n value.lensProfile.profileId,\n \"capabilities.lensProfile.profileId\"\n );\n requireNonEmptyString(\n value.lensProfile.profileVersion,\n \"capabilities.lensProfile.profileVersion\"\n );\n\n if (\n value.iso\n .autoIsoAvailability !==\n \"supported\" &&\n value.iso\n .autoIsoAvailability !==\n \"unsupported\" &&\n value.iso\n .autoIsoAvailability !==\n \"unknown\"\n ) {\n throw new InvalidConfigurationError(\n \"capabilities.iso.autoIsoAvailability is invalid.\"\n );\n }\n\n validateResolvedGrid(\n value.aperture.settingGrid,\n value.aperture\n .widestAvailableFNumber,\n value.aperture\n .narrowestAvailableFNumber,\n \"capabilities.aperture.settingGrid\"\n );\n validateResolvedGrid(\n value.shutter.settingGrid,\n value.shutter.minimumSeconds,\n value.shutter.maximumSeconds,\n \"capabilities.shutter.settingGrid\"\n );\n validateResolvedGrid(\n value.iso.settingGrid,\n value.iso.minimum,\n value.iso.maximum,\n \"capabilities.iso.settingGrid\"\n );\n}\n\nfunction validateReferenceExposure(\n reference:\n RelativeExposureControlAnchor,\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities\n): RelativeExposureControlAnchor {\n requireRecord(reference, \"referenceExposure\");\n const aperture =\n requirePositiveFinite(\n reference.aperture,\n \"referenceExposure.aperture\"\n );\n const shutterSeconds =\n requirePositiveFinite(\n reference.shutterSeconds,\n \"referenceExposure.shutterSeconds\"\n );\n const iso =\n requirePositiveFinite(\n reference.iso,\n \"referenceExposure.iso\"\n );\n\n validateSettingAgainstGrid(\n aperture,\n capabilities.aperture\n .widestAvailableFNumber,\n capabilities.aperture\n .narrowestAvailableFNumber,\n capabilities.aperture\n .settingGrid,\n \"referenceExposure.aperture\"\n );\n validateSettingAgainstGrid(\n shutterSeconds,\n capabilities.shutter\n .minimumSeconds,\n capabilities.shutter\n .maximumSeconds,\n capabilities.shutter\n .settingGrid,\n \"referenceExposure.shutterSeconds\"\n );\n validateSettingAgainstGrid(\n iso,\n capabilities.iso.minimum,\n capabilities.iso.maximum,\n capabilities.iso.settingGrid,\n \"referenceExposure.iso\"\n );\n\n return {\n aperture,\n shutterSeconds,\n iso\n };\n}\n\nfunction opticalExposureFactor(\n aperture: number,\n shutterSeconds: number,\n reference:\n RelativeExposureControlAnchor\n): number {\n const current =\n shutterSeconds /\n (aperture * aperture);\n const referenceOptical =\n reference.shutterSeconds /\n (reference.aperture *\n reference.aperture);\n const factor =\n current /\n referenceOptical;\n if (\n !Number.isFinite(factor) ||\n factor <= 0\n ) {\n throw new InvalidScientificInputError(\n \"Optical exposure factor must remain finite and greater than zero.\"\n );\n }\n return factor;\n}\n\nfunction targetResidual(\n target:\n Extract<\n ExposureMeterTarget,\n { status: \"resolved\" }\n >,\n achievedScale: number,\n limitingConstraint:\n ExposureResolutionConstraint\n): Extract<\n ExposureTargetResidual,\n { status: \"resolved\" }\n>;\nfunction targetResidual(\n target:\n ExposureMeterTarget,\n achievedScale: number,\n limitingConstraint:\n ExposureResolutionConstraint\n): ExposureTargetResidual;\nfunction targetResidual(\n target:\n ExposureMeterTarget,\n achievedScale: number,\n limitingConstraint:\n ExposureResolutionConstraint\n): ExposureTargetResidual {\n if (\n target.status ===\n \"no-signal\"\n ) {\n return {\n status:\n \"target-unresolved\",\n state:\n \"target-unresolved\",\n reason: \"no-signal-target\"\n };\n }\n\n const targetScale =\n target\n .requiredExposureScaleToTarget;\n const targetStops =\n target\n .exposureOffsetStopsToTarget;\n const achievedStops =\n Math.log2(achievedScale);\n const residualStops =\n Math.log2(\n targetScale /\n achievedScale\n );\n\n if (\n !Number.isFinite(\n achievedStops\n ) ||\n !Number.isFinite(\n residualStops\n )\n ) {\n throw new InvalidScientificInputError(\n \"Exposure target residual must remain finite.\"\n );\n }\n\n const toleranceStops =\n 1e-12;\n const state =\n Math.abs(residualStops) <=\n toleranceStops\n ? \"matched\"\n : residualStops > 0\n ? \"under-target\"\n : \"over-target\";\n\n return {\n status: \"resolved\",\n state,\n targetExposureStops:\n targetStops,\n achievedExposureStops:\n achievedStops,\n residualStops,\n limitingConstraint\n };\n}\n\nfunction nearestDiscreteIso(\n idealIso: number,\n values: readonly number[]\n): {\n iso: number;\n quantized: boolean;\n clamped:\n | false\n | \"minimum\"\n | \"maximum\";\n limitingConstraint:\n ExposureResolutionConstraint;\n} {\n const first = values[0]!;\n const last =\n values[values.length - 1]!;\n\n if (idealIso < first) {\n return {\n iso: first,\n quantized: true,\n clamped: \"minimum\",\n limitingConstraint:\n \"iso-minimum\"\n };\n }\n if (idealIso > last) {\n return {\n iso: last,\n quantized: true,\n clamped: \"maximum\",\n limitingConstraint:\n \"iso-maximum\"\n };\n }\n\n let selected = first;\n let selectedDistance =\n Math.abs(\n Math.log2(\n idealIso / first\n )\n );\n\n for (\n let index = 1;\n index < values.length;\n index += 1\n ) {\n const candidate =\n values[index]!;\n const distance =\n Math.abs(\n Math.log2(\n idealIso /\n candidate\n )\n );\n if (\n distance <\n selectedDistance -\n 1e-15 ||\n (Math.abs(\n distance -\n selectedDistance\n ) <= 1e-15 &&\n candidate < selected)\n ) {\n selected = candidate;\n selectedDistance =\n distance;\n }\n }\n\n const quantized =\n !settingEquals(\n selected,\n idealIso\n );\n\n return {\n iso: selected,\n quantized,\n clamped: false,\n limitingConstraint:\n quantized\n ? \"iso-grid-quantization\"\n : \"none\"\n };\n}\n\nfunction autoIsoBounds(\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities\n): {\n minimum: number;\n maximum: number;\n} {\n return {\n minimum:\n capabilities.iso\n .autoIsoMinimum ??\n capabilities.iso.minimum,\n maximum:\n capabilities.iso\n .autoIsoMaximum ??\n capabilities.iso.maximum\n };\n}\n\nfunction resolveAutomaticIso(\n idealIso: number,\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities\n): {\n iso: number;\n kind:\n | \"continuous\"\n | \"discrete\";\n quantized: boolean;\n clamped:\n | false\n | \"minimum\"\n | \"maximum\";\n limitingConstraint:\n ExposureResolutionConstraint;\n} {\n const grid =\n capabilities.iso.settingGrid;\n const bounds =\n autoIsoBounds(\n capabilities\n );\n\n if (\n grid.kind ===\n \"discrete-values\"\n ) {\n const autoValues =\n grid.values.filter(\n (value) =>\n value >= bounds.minimum &&\n value <= bounds.maximum\n );\n if (\n autoValues.length === 0\n ) {\n throw new InvalidScientificInputError(\n \"Auto ISO bounds contain no selectable values from the resolved ISO grid.\"\n );\n }\n const discrete =\n nearestDiscreteIso(\n idealIso,\n autoValues\n );\n return {\n ...discrete,\n kind: \"discrete\"\n };\n }\n\n if (\n idealIso <\n bounds.minimum\n ) {\n return {\n iso:\n bounds.minimum,\n kind: \"continuous\",\n quantized: false,\n clamped: \"minimum\",\n limitingConstraint:\n \"iso-minimum\"\n };\n }\n if (\n idealIso >\n bounds.maximum\n ) {\n return {\n iso:\n bounds.maximum,\n kind: \"continuous\",\n quantized: false,\n clamped: \"maximum\",\n limitingConstraint:\n \"iso-maximum\"\n };\n }\n\n return {\n iso: idealIso,\n kind: \"continuous\",\n quantized: false,\n clamped: false,\n limitingConstraint: \"none\"\n };\n}\n\nfunction nearestDiscreteShutter(\n idealShutterSeconds: number,\n values: readonly number[]\n): {\n shutterSeconds: number;\n quantized: boolean;\n clamped:\n | false\n | \"minimum\"\n | \"maximum\";\n limitingConstraint:\n ExposureResolutionConstraint;\n} {\n const first = values[0]!;\n const last =\n values[values.length - 1]!;\n\n if (idealShutterSeconds < first) {\n return {\n shutterSeconds: first,\n quantized: true,\n clamped: \"minimum\",\n limitingConstraint:\n \"shutter-minimum\"\n };\n }\n if (idealShutterSeconds > last) {\n return {\n shutterSeconds: last,\n quantized: true,\n clamped: \"maximum\",\n limitingConstraint:\n \"shutter-maximum\"\n };\n }\n\n let selected = first;\n let selectedDistance =\n Math.abs(\n Math.log2(\n idealShutterSeconds /\n first\n )\n );\n\n for (\n let index = 1;\n index < values.length;\n index += 1\n ) {\n const candidate =\n values[index]!;\n const distance =\n Math.abs(\n Math.log2(\n idealShutterSeconds /\n candidate\n )\n );\n if (\n distance <\n selectedDistance -\n 1e-15 ||\n (Math.abs(\n distance -\n selectedDistance\n ) <= 1e-15 &&\n candidate < selected)\n ) {\n selected = candidate;\n selectedDistance =\n distance;\n }\n }\n\n const quantized =\n !settingEquals(\n selected,\n idealShutterSeconds\n );\n\n return {\n shutterSeconds: selected,\n quantized,\n clamped: false,\n limitingConstraint:\n quantized\n ? \"shutter-grid-quantization\"\n : \"none\"\n };\n}\n\nfunction resolveAutomaticShutter(\n idealShutterSeconds: number,\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities\n): {\n shutterSeconds: number;\n kind:\n | \"continuous\"\n | \"discrete\";\n quantized: boolean;\n clamped:\n | false\n | \"minimum\"\n | \"maximum\";\n limitingConstraint:\n ExposureResolutionConstraint;\n} {\n const grid =\n capabilities.shutter.settingGrid;\n\n if (\n grid.kind ===\n \"discrete-values\"\n ) {\n const discrete =\n nearestDiscreteShutter(\n idealShutterSeconds,\n grid.values\n );\n return {\n ...discrete,\n kind: \"discrete\"\n };\n }\n\n if (\n idealShutterSeconds <\n capabilities.shutter\n .minimumSeconds\n ) {\n return {\n shutterSeconds:\n capabilities.shutter\n .minimumSeconds,\n kind: \"continuous\",\n quantized: false,\n clamped: \"minimum\",\n limitingConstraint:\n \"shutter-minimum\"\n };\n }\n if (\n idealShutterSeconds >\n capabilities.shutter\n .maximumSeconds\n ) {\n return {\n shutterSeconds:\n capabilities.shutter\n .maximumSeconds,\n kind: \"continuous\",\n quantized: false,\n clamped: \"maximum\",\n limitingConstraint:\n \"shutter-maximum\"\n };\n }\n\n return {\n shutterSeconds:\n idealShutterSeconds,\n kind: \"continuous\",\n quantized: false,\n clamped: false,\n limitingConstraint: \"none\"\n };\n}\n\nfunction minimumSelectableIso(\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities\n): number {\n const grid =\n capabilities.iso.settingGrid;\n const bounds =\n autoIsoBounds(\n capabilities\n );\n if (\n grid.kind ===\n \"continuous-within-range\"\n ) {\n return bounds.minimum;\n }\n const first =\n grid.values.find(\n (value) =>\n value >= bounds.minimum &&\n value <= bounds.maximum\n );\n if (first === undefined) {\n throw new InvalidScientificInputError(\n \"Auto ISO bounds contain no selectable values from the resolved ISO grid.\"\n );\n }\n return first;\n}\n\nfunction selectShutterNotLongerThanTarget(\n targetSeconds: number,\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities\n): {\n shutterSeconds: number;\n kind: \"continuous\" | \"discrete\";\n quantized: boolean;\n clamped:\n | false\n | \"minimum\"\n | \"maximum\";\n limitingConstraint:\n ExposureResolutionConstraint;\n} {\n const minimum =\n capabilities.shutter.minimumSeconds;\n const maximum =\n capabilities.shutter.maximumSeconds;\n const grid =\n capabilities.shutter.settingGrid;\n\n if (grid.kind === \"continuous-within-range\") {\n if (targetSeconds < minimum) {\n return {\n shutterSeconds: minimum,\n kind: \"continuous\",\n quantized: false,\n clamped: \"minimum\",\n limitingConstraint:\n \"shutter-minimum\"\n };\n }\n if (targetSeconds > maximum) {\n return {\n shutterSeconds: maximum,\n kind: \"continuous\",\n quantized: false,\n clamped: \"maximum\",\n limitingConstraint:\n \"shutter-maximum\"\n };\n }\n return {\n shutterSeconds: targetSeconds,\n kind: \"continuous\",\n quantized: false,\n clamped: false,\n limitingConstraint: \"none\"\n };\n }\n\n const values = grid.values;\n const first = values[0]!;\n const last = values[values.length - 1]!;\n\n // A grid value within settingEquals tolerance of the target counts as an\n // exact match. Floating-point error in the computed target must not push the\n // choice one grid step shorter (#272).\n const exactMatch =\n values.find(\n (candidate) =>\n settingEquals(\n candidate,\n targetSeconds\n )\n );\n if (exactMatch !== undefined) {\n return {\n shutterSeconds: exactMatch,\n kind: \"discrete\",\n quantized: false,\n clamped: false,\n limitingConstraint: \"none\"\n };\n }\n\n if (targetSeconds < first) {\n return {\n shutterSeconds: first,\n kind: \"discrete\",\n quantized: true,\n clamped: \"minimum\",\n limitingConstraint:\n \"shutter-minimum\"\n };\n }\n if (targetSeconds > last) {\n return {\n shutterSeconds: last,\n kind: \"discrete\",\n quantized: true,\n clamped: \"maximum\",\n limitingConstraint:\n \"shutter-maximum\"\n };\n }\n\n let selected = first;\n for (const candidate of values) {\n if (candidate > targetSeconds) {\n break;\n }\n selected = candidate;\n }\n\n const quantized =\n !settingEquals(\n selected,\n targetSeconds\n );\n return {\n shutterSeconds: selected,\n kind: \"discrete\",\n quantized,\n clamped: false,\n limitingConstraint:\n quantized\n ? \"shutter-grid-quantization\"\n : \"none\"\n };\n}\n\nfunction nearestDiscreteAperture(\n idealFNumber: number,\n values: readonly number[]\n): {\n aperture: number;\n quantized: boolean;\n clamped:\n | false\n | \"widest\"\n | \"narrowest\";\n limitingConstraint:\n ExposureResolutionConstraint;\n} {\n const first = values[0]!;\n const last =\n values[values.length - 1]!;\n\n if (idealFNumber < first) {\n return {\n aperture: first,\n quantized: true,\n clamped: \"widest\",\n limitingConstraint:\n \"aperture-widest\"\n };\n }\n if (idealFNumber > last) {\n return {\n aperture: last,\n quantized: true,\n clamped: \"narrowest\",\n limitingConstraint:\n \"aperture-narrowest\"\n };\n }\n\n let selected = first;\n let selectedDistance =\n Math.abs(\n Math.log2(\n idealFNumber /\n first\n )\n );\n\n for (\n let index = 1;\n index < values.length;\n index += 1\n ) {\n const candidate =\n values[index]!;\n const distance =\n Math.abs(\n Math.log2(\n idealFNumber /\n candidate\n )\n );\n if (\n distance <\n selectedDistance -\n 1e-15 ||\n (Math.abs(\n distance -\n selectedDistance\n ) <= 1e-15 &&\n candidate > selected)\n ) {\n selected = candidate;\n selectedDistance =\n distance;\n }\n }\n\n const quantized =\n !settingEquals(\n selected,\n idealFNumber\n );\n\n return {\n aperture: selected,\n quantized,\n clamped: false,\n limitingConstraint:\n quantized\n ? \"aperture-grid-quantization\"\n : \"none\"\n };\n}\n\nfunction resolveAutomaticAperture(\n idealFNumber: number,\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities\n): {\n aperture: number;\n kind: \"continuous\" | \"discrete\";\n quantized: boolean;\n clamped:\n | false\n | \"widest\"\n | \"narrowest\";\n limitingConstraint:\n ExposureResolutionConstraint;\n} {\n const minimum =\n capabilities.aperture\n .widestAvailableFNumber;\n const maximum =\n capabilities.aperture\n .narrowestAvailableFNumber;\n const grid =\n capabilities.aperture.settingGrid;\n\n if (grid.kind === \"discrete-values\") {\n return {\n ...nearestDiscreteAperture(\n idealFNumber,\n grid.values\n ),\n kind: \"discrete\"\n };\n }\n\n if (idealFNumber < minimum) {\n return {\n aperture: minimum,\n kind: \"continuous\",\n quantized: false,\n clamped: \"widest\",\n limitingConstraint:\n \"aperture-widest\"\n };\n }\n if (idealFNumber > maximum) {\n return {\n aperture: maximum,\n kind: \"continuous\",\n quantized: false,\n clamped: \"narrowest\",\n limitingConstraint:\n \"aperture-narrowest\"\n };\n }\n\n return {\n aperture: idealFNumber,\n kind: \"continuous\",\n quantized: false,\n clamped: false,\n limitingConstraint: \"none\"\n };\n}\n\nfunction selectApertureNotWiderThanTarget(\n idealFNumber: number,\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities\n): {\n aperture: number;\n kind: \"continuous\" | \"discrete\";\n quantized: boolean;\n clamped:\n | false\n | \"widest\"\n | \"narrowest\";\n limitingConstraint:\n ExposureResolutionConstraint;\n} {\n const minimum =\n capabilities.aperture\n .widestAvailableFNumber;\n const maximum =\n capabilities.aperture\n .narrowestAvailableFNumber;\n const grid =\n capabilities.aperture.settingGrid;\n\n if (grid.kind === \"continuous-within-range\") {\n if (idealFNumber < minimum) {\n return {\n aperture: minimum,\n kind: \"continuous\",\n quantized: false,\n clamped: \"widest\",\n limitingConstraint:\n \"aperture-widest\"\n };\n }\n if (idealFNumber > maximum) {\n return {\n aperture: maximum,\n kind: \"continuous\",\n quantized: false,\n clamped: \"narrowest\",\n limitingConstraint:\n \"aperture-narrowest\"\n };\n }\n return {\n aperture: idealFNumber,\n kind: \"continuous\",\n quantized: false,\n clamped: false,\n limitingConstraint: \"none\"\n };\n }\n\n const values = grid.values;\n const first = values[0]!;\n const last = values[values.length - 1]!;\n\n // A grid value within settingEquals tolerance of the ideal counts as an\n // exact match. Floating-point error in the computed ideal must not push the\n // choice one grid step narrower (#272).\n const exactMatch =\n values.find(\n (candidate) =>\n settingEquals(\n candidate,\n idealFNumber\n )\n );\n if (exactMatch !== undefined) {\n return {\n aperture: exactMatch,\n kind: \"discrete\",\n quantized: false,\n clamped: false,\n limitingConstraint: \"none\"\n };\n }\n\n if (idealFNumber < first) {\n return {\n aperture: first,\n kind: \"discrete\",\n quantized: true,\n clamped: \"widest\",\n limitingConstraint:\n \"aperture-widest\"\n };\n }\n if (idealFNumber > last) {\n return {\n aperture: last,\n kind: \"discrete\",\n quantized: true,\n clamped: \"narrowest\",\n limitingConstraint:\n \"aperture-narrowest\"\n };\n }\n\n const selected =\n values.find(\n (candidate) =>\n candidate >= idealFNumber\n ) ?? last;\n const quantized =\n !settingEquals(\n selected,\n idealFNumber\n );\n\n return {\n aperture: selected,\n kind: \"discrete\",\n quantized,\n clamped: false,\n limitingConstraint:\n quantized\n ? \"aperture-grid-quantization\"\n : \"none\"\n };\n}\n\nfunction idealApertureForTarget(\n targetScale: number,\n shutterSeconds: number,\n iso: number,\n reference:\n RelativeExposureControlAnchor\n): number {\n const numerator =\n reference.aperture *\n reference.aperture *\n (shutterSeconds /\n reference.shutterSeconds) *\n (iso /\n reference.iso);\n const squared =\n numerator / targetScale;\n const aperture =\n Math.sqrt(squared);\n if (\n !Number.isFinite(aperture) ||\n aperture <= 0\n ) {\n throw new InvalidScientificInputError(\n \"Ideal automatic aperture must remain finite and greater than zero.\"\n );\n }\n return aperture;\n}\n\nfunction validateProgramLineForResolution(\n value: ExposureProgramLineProfile,\n referenceExposure:\n RelativeExposureControlAnchor,\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities\n): ExposureProgramLineProfile {\n const profile =\n parseExposureProgramLineProfile(\n value\n );\n const toleranceStops = 1e-9;\n\n for (const node of profile.nodes) {\n if (\n node.aperture <\n capabilities.aperture\n .widestAvailableFNumber ||\n node.aperture >\n capabilities.aperture\n .narrowestAvailableFNumber\n ) {\n throw new InvalidScientificInputError(\n \"Program-line aperture lies outside the resolved equipment capability range.\"\n );\n }\n if (\n node.shutterSeconds <\n capabilities.shutter\n .minimumSeconds ||\n node.shutterSeconds >\n capabilities.shutter\n .maximumSeconds\n ) {\n throw new InvalidScientificInputError(\n \"Program-line shutter duration lies outside the resolved equipment capability range.\"\n );\n }\n\n const computedStops =\n Math.log2(\n opticalExposureFactor(\n node.aperture,\n node.shutterSeconds,\n referenceExposure\n )\n );\n if (\n !Number.isFinite(computedStops) ||\n Math.abs(\n computedStops -\n node\n .opticalExposureStopsFromReference\n ) > toleranceStops\n ) {\n throw new InvalidScientificInputError(\n \"Program-line node opticalExposureStopsFromReference is inconsistent with its aperture/shutter pair and the selected reference exposure.\"\n );\n }\n }\n\n return profile;\n}\n\nfunction selectProgramLineSettings(\n requestedOpticalStops: number,\n profile:\n ExposureProgramLineProfile,\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities\n): ProgramLineSelectionDiagnostics {\n if (!Number.isFinite(requestedOpticalStops)) {\n throw new InvalidScientificInputError(\n \"Requested program-line optical exposure stops must be finite.\"\n );\n }\n\n const first = profile.nodes[0]!;\n const last =\n profile.nodes[\n profile.nodes.length - 1\n ]!;\n\n let position:\n | \"within-line\"\n | \"below-line\"\n | \"above-line\";\n let selectedStops: number;\n let interpolationPhase:\n number | null;\n let idealAperture: number;\n let idealShutterSeconds: number;\n\n if (\n requestedOpticalStops <=\n first\n .opticalExposureStopsFromReference\n ) {\n position =\n requestedOpticalStops <\n first\n .opticalExposureStopsFromReference\n ? \"below-line\"\n : \"within-line\";\n selectedStops =\n first\n .opticalExposureStopsFromReference;\n interpolationPhase = null;\n idealAperture = first.aperture;\n idealShutterSeconds =\n first.shutterSeconds;\n } else if (\n requestedOpticalStops >=\n last\n .opticalExposureStopsFromReference\n ) {\n position =\n requestedOpticalStops >\n last\n .opticalExposureStopsFromReference\n ? \"above-line\"\n : \"within-line\";\n selectedStops =\n last\n .opticalExposureStopsFromReference;\n interpolationPhase = null;\n idealAperture = last.aperture;\n idealShutterSeconds =\n last.shutterSeconds;\n } else {\n position = \"within-line\";\n let left = first;\n let right = profile.nodes[1]!;\n\n for (\n let index = 1;\n index < profile.nodes.length;\n index += 1\n ) {\n const candidate =\n profile.nodes[index]!;\n if (\n requestedOpticalStops <=\n candidate\n .opticalExposureStopsFromReference\n ) {\n left =\n profile.nodes[index - 1]!;\n right = candidate;\n break;\n }\n }\n\n const span =\n right\n .opticalExposureStopsFromReference -\n left\n .opticalExposureStopsFromReference;\n const phase =\n (requestedOpticalStops -\n left\n .opticalExposureStopsFromReference) /\n span;\n interpolationPhase = phase;\n selectedStops =\n requestedOpticalStops;\n\n const logAperture =\n Math.log2(left.aperture) +\n phase *\n (Math.log2(right.aperture) -\n Math.log2(left.aperture));\n const logShutter =\n Math.log2(\n left.shutterSeconds\n ) +\n phase *\n (Math.log2(\n right.shutterSeconds\n ) -\n Math.log2(\n left.shutterSeconds\n ));\n\n idealAperture =\n Math.pow(2, logAperture);\n idealShutterSeconds =\n Math.pow(2, logShutter);\n }\n\n const aperture =\n resolveAutomaticAperture(\n idealAperture,\n capabilities\n );\n const shutter =\n resolveAutomaticShutter(\n idealShutterSeconds,\n capabilities\n );\n\n return {\n profileId: profile.profileId,\n profileVersion:\n profile.profileVersion,\n requestedOpticalExposureStopsFromReference:\n requestedOpticalStops,\n selectedOpticalExposureStopsFromReference:\n selectedStops,\n position,\n interpolationPhase,\n idealAperture,\n idealShutterSeconds,\n resolvedAperture:\n aperture.aperture,\n resolvedShutterSeconds:\n shutter.shutterSeconds,\n apertureQuantized:\n aperture.quantized,\n shutterQuantized:\n shutter.quantized,\n apertureClamped:\n aperture.clamped,\n shutterClamped:\n shutter.clamped\n };\n}\n\nfunction programLineResidualConstraint(\n selection:\n ProgramLineSelectionDiagnostics\n): ExposureResolutionConstraint {\n if (\n selection.apertureClamped ===\n \"widest\"\n ) {\n return \"aperture-widest\";\n }\n if (\n selection.apertureClamped ===\n \"narrowest\"\n ) {\n return \"aperture-narrowest\";\n }\n if (\n selection.shutterClamped ===\n \"minimum\"\n ) {\n return \"shutter-minimum\";\n }\n if (\n selection.shutterClamped ===\n \"maximum\"\n ) {\n return \"shutter-maximum\";\n }\n if (selection.apertureQuantized) {\n return \"aperture-grid-quantization\";\n }\n if (selection.shutterQuantized) {\n return \"shutter-grid-quantization\";\n }\n return \"none\";\n}\n\n/**\n * Resolves Manual exposure with either manual ISO or Auto ISO.\n *\n * The caller sets aperture and shutter; they are never changed. The relative\n * meter target is normalized by an explicit reference exposure anchor. No\n * ISO 100 or other hidden absolute calibration is assumed.\n */\nexport function resolveManualExposureMode(\n input:\n ResolveManualExposureModeInput\n): ManualExposureModeResolution {\n requireInputKeys(input, \"resolveManualExposureMode\", [\"target\", \"capabilities\", \"referenceExposure\", \"manualAperture\", \"manualShutterSeconds\", \"isoControl\"]);\n requireRecord(input.isoControl, \"isoControl\");\n const target =\n validateTarget(input.target);\n validateCapabilities(\n input.capabilities\n );\n\n const referenceExposure =\n validateReferenceExposure(\n input.referenceExposure,\n input.capabilities\n );\n\n const manualAperture =\n requirePositiveFinite(\n input.manualAperture,\n \"manualAperture\"\n );\n const manualShutterSeconds =\n requirePositiveFinite(\n input.manualShutterSeconds,\n \"manualShutterSeconds\"\n );\n\n validateSettingAgainstGrid(\n manualAperture,\n input.capabilities.aperture\n .widestAvailableFNumber,\n input.capabilities.aperture\n .narrowestAvailableFNumber,\n input.capabilities.aperture\n .settingGrid,\n \"manualAperture\"\n );\n validateSettingAgainstGrid(\n manualShutterSeconds,\n input.capabilities.shutter\n .minimumSeconds,\n input.capabilities.shutter\n .maximumSeconds,\n input.capabilities.shutter\n .settingGrid,\n \"manualShutterSeconds\"\n );\n\n const base:\n ManualExposureResolutionBase = {\n resolverVersion:\n EXPOSURE_MODE_RESOLVER_VERSION,\n mode: \"manual\",\n axisOwnership: {\n aperture: \"manual\",\n shutter: \"manual\",\n iso:\n input.isoControl.kind ===\n \"manual\"\n ? \"manual\"\n : \"automatic\"\n },\n targetId: target.targetId,\n targetSourceMeterSnapshot:\n target.sourceMeterSnapshot,\n capabilityProfiles: {\n bodyProfileId:\n input.capabilities\n .bodyProfile.profileId,\n bodyProfileVersion:\n input.capabilities\n .bodyProfile.profileVersion,\n lensProfileId:\n input.capabilities\n .lensProfile.profileId,\n lensProfileVersion:\n input.capabilities\n .lensProfile.profileVersion\n },\n selectedFocalLengthMm:\n input.capabilities\n .selectedFocalLengthMm,\n referenceExposure,\n manualAperture,\n manualShutterSeconds,\n apertureMutatedByResolver: false,\n shutterMutatedByResolver: false,\n exposureCompensationAppliedByResolver:\n false,\n meterRecomputedByResolver: false,\n isoNoiseOrGainTopologyInferred:\n false,\n flashPolicyApplied: false,\n safetyShiftApplied: false\n };\n\n const opticalFactor =\n opticalExposureFactor(\n manualAperture,\n manualShutterSeconds,\n referenceExposure\n );\n\n if (\n input.isoControl.kind !==\n \"manual\" &&\n input.isoControl.kind !==\n \"automatic\"\n ) {\n throw new InvalidConfigurationError(\n \"isoControl.kind is invalid.\"\n );\n }\n if (\n input.isoControl.kind ===\n \"automatic\" &&\n input.isoControl\n .quantizationPolicy !==\n \"nearest-log2-lower-on-tie\"\n ) {\n throw new InvalidConfigurationError(\n 'isoControl.quantizationPolicy must be \"nearest-log2-lower-on-tie\".'\n );\n }\n\n if (\n input.isoControl.kind ===\n \"manual\"\n ) {\n const manualIso =\n requirePositiveFinite(\n input.isoControl.iso,\n \"isoControl.iso\"\n );\n validateSettingAgainstGrid(\n manualIso,\n input.capabilities.iso.minimum,\n input.capabilities.iso.maximum,\n input.capabilities.iso.settingGrid,\n \"isoControl.iso\"\n );\n\n const achievedScale =\n opticalFactor *\n (manualIso /\n referenceExposure.iso);\n\n return {\n ...base,\n status: \"resolved\",\n isoControl: \"manual\",\n resolvedSettings: {\n aperture:\n manualAperture,\n shutterSeconds:\n manualShutterSeconds,\n iso: manualIso\n },\n idealIsoBeforeConstraints:\n null,\n isoResolution: {\n kind:\n \"manual-preserved\",\n quantized: false,\n clamped: false\n },\n targetResidual:\n targetResidual(\n target,\n achievedScale,\n \"none\"\n )\n };\n }\n\n const availability =\n input.capabilities.iso\n .autoIsoAvailability;\n if (\n availability !== \"supported\"\n ) {\n return {\n ...base,\n status: \"blocked\",\n isoControl: \"automatic\",\n resolvedSettings: {\n aperture:\n manualAperture,\n shutterSeconds:\n manualShutterSeconds\n },\n idealIsoBeforeConstraints:\n null,\n blocker:\n availability ===\n \"unknown\"\n ? \"auto-iso-unknown\"\n : \"auto-iso-unsupported\",\n targetResidual: {\n status:\n \"target-unresolved\",\n state:\n \"target-unresolved\",\n reason:\n \"auto-iso-unavailable\"\n }\n };\n }\n\n if (target.status === \"no-signal\") {\n return {\n ...base,\n status: \"blocked\",\n isoControl: \"automatic\",\n resolvedSettings: {\n aperture:\n manualAperture,\n shutterSeconds:\n manualShutterSeconds\n },\n idealIsoBeforeConstraints:\n null,\n blocker:\n \"target-no-signal\",\n targetResidual: {\n status:\n \"target-unresolved\",\n state:\n \"target-unresolved\",\n reason: \"no-signal-target\"\n }\n };\n }\n\n const idealIso =\n referenceExposure.iso *\n (target\n .requiredExposureScaleToTarget /\n opticalFactor);\n\n if (\n !Number.isFinite(idealIso) ||\n idealIso <= 0\n ) {\n throw new InvalidScientificInputError(\n \"Ideal Auto ISO must remain finite and greater than zero.\"\n );\n }\n\n const automatic =\n resolveAutomaticIso(\n idealIso,\n input.capabilities\n );\n\n const achievedScale =\n opticalFactor *\n (automatic.iso /\n referenceExposure.iso);\n const residual =\n targetResidual(\n target,\n achievedScale,\n automatic\n .limitingConstraint\n );\n\n return {\n ...base,\n status: \"resolved\",\n isoControl: \"automatic\",\n resolvedSettings: {\n aperture:\n manualAperture,\n shutterSeconds:\n manualShutterSeconds,\n iso: automatic.iso\n },\n idealIsoBeforeConstraints:\n idealIso,\n isoResolution: {\n kind: automatic.kind,\n quantizationPolicy:\n input.isoControl\n .quantizationPolicy,\n quantized:\n automatic.quantized,\n clamped:\n automatic.clamped\n },\n targetResidual: residual\n };\n}\n\n/**\n * Resolves Aperture Priority with manual ISO.\n *\n * The caller sets aperture and ISO. Only the shutter is automatic. The target\n * and reference use the same relative exposure model as Manual + Auto ISO; no\n * new exposure equation is added for this mode.\n */\nexport function resolveAperturePriorityExposureMode(\n input:\n ResolveAperturePriorityExposureModeInput\n): AperturePriorityExposureModeResolution {\n requireInputKeys(input, \"resolveAperturePriorityExposureMode\", [\"target\", \"capabilities\", \"referenceExposure\", \"manualAperture\", \"manualIso\", \"shutterQuantizationPolicy\"]);\n const target =\n validateTarget(input.target);\n validateCapabilities(\n input.capabilities\n );\n\n const referenceExposure =\n validateReferenceExposure(\n input.referenceExposure,\n input.capabilities\n );\n\n const manualAperture =\n requirePositiveFinite(\n input.manualAperture,\n \"manualAperture\"\n );\n const manualIso =\n requirePositiveFinite(\n input.manualIso,\n \"manualIso\"\n );\n\n validateSettingAgainstGrid(\n manualAperture,\n input.capabilities.aperture\n .widestAvailableFNumber,\n input.capabilities.aperture\n .narrowestAvailableFNumber,\n input.capabilities.aperture\n .settingGrid,\n \"manualAperture\"\n );\n validateSettingAgainstGrid(\n manualIso,\n input.capabilities.iso.minimum,\n input.capabilities.iso.maximum,\n input.capabilities.iso.settingGrid,\n \"manualIso\"\n );\n\n if (\n input.shutterQuantizationPolicy !==\n \"nearest-log2-shorter-on-tie\"\n ) {\n throw new InvalidConfigurationError(\n 'shutterQuantizationPolicy must be \"nearest-log2-shorter-on-tie\".'\n );\n }\n\n const base:\n AperturePriorityExposureResolutionBase = {\n resolverVersion:\n EXPOSURE_MODE_RESOLVER_VERSION,\n mode: \"aperture-priority\",\n axisOwnership: {\n aperture: \"manual\",\n shutter: \"automatic\",\n iso: \"manual\"\n },\n targetId: target.targetId,\n targetSourceMeterSnapshot:\n target.sourceMeterSnapshot,\n capabilityProfiles: {\n bodyProfileId:\n input.capabilities\n .bodyProfile.profileId,\n bodyProfileVersion:\n input.capabilities\n .bodyProfile.profileVersion,\n lensProfileId:\n input.capabilities\n .lensProfile.profileId,\n lensProfileVersion:\n input.capabilities\n .lensProfile.profileVersion\n },\n selectedFocalLengthMm:\n input.capabilities\n .selectedFocalLengthMm,\n referenceExposure,\n manualAperture,\n manualIso,\n apertureMutatedByResolver: false,\n isoMutatedByResolver: false,\n shutterResolvedByResolver: true,\n exposureCompensationAppliedByResolver:\n false,\n meterRecomputedByResolver: false,\n isoNoiseOrGainTopologyInferred:\n false,\n flashPolicyApplied: false,\n safetyShiftApplied: false\n };\n\n if (target.status === \"no-signal\") {\n return {\n ...base,\n status: \"blocked\",\n resolvedSettings: {\n aperture:\n manualAperture,\n iso: manualIso\n },\n idealShutterSecondsBeforeConstraints:\n null,\n blocker: \"target-no-signal\",\n targetResidual: {\n status:\n \"target-unresolved\",\n state:\n \"target-unresolved\",\n reason: \"no-signal-target\"\n }\n };\n }\n\n const fixedAxisFactorAtReferenceShutter =\n opticalExposureFactor(\n manualAperture,\n referenceExposure\n .shutterSeconds,\n referenceExposure\n ) *\n (manualIso /\n referenceExposure.iso);\n\n if (\n !Number.isFinite(\n fixedAxisFactorAtReferenceShutter\n ) ||\n fixedAxisFactorAtReferenceShutter <= 0\n ) {\n throw new InvalidScientificInputError(\n \"Aperture Priority fixed-axis exposure factor must remain finite and greater than zero.\"\n );\n }\n\n const idealShutterSeconds =\n referenceExposure\n .shutterSeconds *\n (target\n .requiredExposureScaleToTarget /\n fixedAxisFactorAtReferenceShutter);\n\n if (\n !Number.isFinite(\n idealShutterSeconds\n ) ||\n idealShutterSeconds <= 0\n ) {\n throw new InvalidScientificInputError(\n \"Ideal automatic shutter duration must remain finite and greater than zero.\"\n );\n }\n\n const automatic =\n resolveAutomaticShutter(\n idealShutterSeconds,\n input.capabilities\n );\n\n const achievedScale =\n opticalExposureFactor(\n manualAperture,\n automatic.shutterSeconds,\n referenceExposure\n ) *\n (manualIso /\n referenceExposure.iso);\n\n const residual =\n targetResidual(\n target,\n achievedScale,\n automatic\n .limitingConstraint\n );\n\n return {\n ...base,\n status: \"resolved\",\n resolvedSettings: {\n aperture: manualAperture,\n shutterSeconds:\n automatic.shutterSeconds,\n iso: manualIso\n },\n idealShutterSecondsBeforeConstraints:\n idealShutterSeconds,\n shutterResolution: {\n kind: automatic.kind,\n quantizationPolicy:\n input\n .shutterQuantizationPolicy,\n quantized:\n automatic.quantized,\n clamped:\n automatic.clamped\n },\n targetResidual: residual\n };\n}\n\nfunction validateAutoIsoAvailability(\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities\n): \"supported\" | \"unsupported\" | \"unknown\" {\n return capabilities.iso.autoIsoAvailability;\n}\n\nfunction buildPriorityAutoIsoBlocked<\n Mode extends\n | \"aperture-priority\"\n | \"shutter-priority\",\n Settings extends\n Record<string, number>\n>(\n mode: Mode,\n target: ExposureMeterTarget,\n referenceExposure:\n RelativeExposureControlAnchor,\n reason:\n | \"auto-iso-unsupported\"\n | \"auto-iso-unknown\"\n | \"target-no-signal\",\n resolvedSettings: Settings\n): {\n resolverVersion:\n typeof EXPOSURE_MODE_RESOLVER_VERSION;\n mode: Mode;\n status: \"blocked\";\n targetId: string;\n targetSourceMeterSnapshot:\n ExposureMeterTarget[\"sourceMeterSnapshot\"];\n referenceExposure:\n RelativeExposureControlAnchor;\n resolvedSettings: Settings;\n blocker:\n | \"auto-iso-unsupported\"\n | \"auto-iso-unknown\"\n | \"target-no-signal\";\n targetResidual: {\n status: \"target-unresolved\";\n state: \"target-unresolved\";\n reason:\n | \"auto-iso-unavailable\"\n | \"no-signal-target\";\n };\n} {\n return {\n resolverVersion:\n EXPOSURE_MODE_RESOLVER_VERSION,\n mode,\n status: \"blocked\",\n targetId: target.targetId,\n targetSourceMeterSnapshot:\n target.sourceMeterSnapshot,\n referenceExposure,\n resolvedSettings,\n blocker: reason,\n targetResidual: {\n status: \"target-unresolved\",\n state: \"target-unresolved\",\n reason:\n reason === \"target-no-signal\"\n ? \"no-signal-target\"\n : \"auto-iso-unavailable\"\n }\n };\n}\n\n/**\n * Aperture Priority with Auto ISO. Keeps the aperture fixed, follows the declared minimum-shutter\n * policy, and uses Auto ISO (within its limits) to make up the rest of the exposure.\n *\n * Every exposure mode applies its control policy to one shared relative exposure equation, with an\n * explicit reference anchor. Exposure compensation is already part of the frozen meter target. Manual\n * settings are never changed. Automatic settings snap to the declared setting grids, and the result\n * reports the signed leftover (residual) stops and any limits hit. A target with zero signal cannot\n * be used to make up an exposure.\n * @param input - ResolveAperturePriorityAutoIsoExposureModeInput. See that type for coordinates, units and profile binding.\n * @returns AperturePriorityAutoIsoExposureModeResolution. The result states its shape and scientific status; a successful call does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the root export and exact type graph.\n */\nexport function resolveAperturePriorityAutoIsoExposureMode(\n input:\n ResolveAperturePriorityAutoIsoExposureModeInput\n): AperturePriorityAutoIsoExposureModeResolution {\n requireInputKeys(input, \"resolveAperturePriorityAutoIsoExposureMode\", [\"target\", \"capabilities\", \"referenceExposure\", \"manualAperture\", \"policy\"]);\n requireRecord(input.policy, \"policy\");\n const target = validateTarget(input.target);\n validateCapabilities(input.capabilities);\n const referenceExposure =\n validateReferenceExposure(\n input.referenceExposure,\n input.capabilities\n );\n const manualAperture =\n requirePositiveFinite(\n input.manualAperture,\n \"manualAperture\"\n );\n validateSettingAgainstGrid(\n manualAperture,\n input.capabilities.aperture\n .widestAvailableFNumber,\n input.capabilities.aperture\n .narrowestAvailableFNumber,\n input.capabilities.aperture\n .settingGrid,\n \"manualAperture\"\n );\n\n const policy = input.policy;\n if (\n policy.kind !==\n \"minimum-iso-until-slowest-preferred-shutter\" ||\n policy.isoBaseline !==\n \"minimum-selectable\" ||\n policy.isoQuantizationPolicy !==\n \"nearest-log2-lower-on-tie\" ||\n policy.shutterSelectionPolicy !==\n \"not-longer-than-target\" ||\n (policy.afterMaximumIso !==\n \"allow-slower-shutter\" &&\n policy.afterMaximumIso !==\n \"hold-preferred-shutter\")\n ) {\n throw new InvalidConfigurationError(\n \"Aperture Priority Auto ISO policy is invalid.\"\n );\n }\n\n const slowestPreferred =\n requirePositiveFinite(\n policy.slowestPreferredShutterSeconds,\n \"policy.slowestPreferredShutterSeconds\"\n );\n if (\n slowestPreferred <\n input.capabilities.shutter\n .minimumSeconds ||\n slowestPreferred >\n input.capabilities.shutter\n .maximumSeconds\n ) {\n throw new InvalidScientificInputError(\n \"policy.slowestPreferredShutterSeconds lies outside the resolved shutter capability range.\"\n );\n }\n\n const availability =\n validateAutoIsoAvailability(\n input.capabilities\n );\n const commonBlocked = (\n blocker:\n | \"auto-iso-unsupported\"\n | \"auto-iso-unknown\"\n | \"target-no-signal\"\n ): AperturePriorityAutoIsoExposureModeResolution => {\n const raw = buildPriorityAutoIsoBlocked(\n \"aperture-priority\",\n target,\n referenceExposure,\n blocker,\n { aperture: manualAperture }\n );\n return {\n ...raw,\n axisOwnership: {\n aperture: \"manual\",\n shutter: \"automatic\",\n iso: \"automatic\"\n },\n manualAperture,\n policy,\n apertureMutatedByResolver: false,\n exposureCompensationAppliedByResolver:\n false,\n meterRecomputedByResolver: false,\n flashPolicyApplied: false,\n safetyShiftApplied: false\n };\n };\n\n if (availability !== \"supported\") {\n return commonBlocked(\n availability === \"unknown\"\n ? \"auto-iso-unknown\"\n : \"auto-iso-unsupported\"\n );\n }\n if (target.status === \"no-signal\") {\n return commonBlocked(\n \"target-no-signal\"\n );\n }\n\n const baselineIso =\n minimumSelectableIso(\n input.capabilities\n );\n const factorAtReferenceShutter =\n opticalExposureFactor(\n manualAperture,\n referenceExposure\n .shutterSeconds,\n referenceExposure\n ) *\n (baselineIso /\n referenceExposure.iso);\n const idealAtBaseline =\n referenceExposure\n .shutterSeconds *\n (target\n .requiredExposureScaleToTarget /\n factorAtReferenceShutter);\n if (\n !Number.isFinite(idealAtBaseline) ||\n idealAtBaseline <= 0\n ) {\n throw new InvalidScientificInputError(\n \"Ideal Aperture Priority shutter duration at baseline ISO must remain finite and greater than zero.\"\n );\n }\n\n const desiredPreferred =\n Math.min(\n idealAtBaseline,\n slowestPreferred\n );\n let shutter =\n selectShutterNotLongerThanTarget(\n desiredPreferred,\n input.capabilities\n );\n\n const isoPass =\n resolveManualExposureMode({\n target,\n capabilities:\n input.capabilities,\n referenceExposure,\n manualAperture,\n manualShutterSeconds:\n shutter.shutterSeconds,\n isoControl: {\n kind: \"automatic\",\n quantizationPolicy:\n policy.isoQuantizationPolicy\n }\n });\n\n if (\n isoPass.status !== \"resolved\" ||\n isoPass.isoControl !== \"automatic\"\n ) {\n throw new InvalidScientificInputError(\n \"Aperture Priority Auto ISO could not resolve its ISO pass.\"\n );\n }\n\n let fallbackUsed = false;\n let shutterSelectionPolicy:\n | \"not-longer-than-target\"\n | \"nearest-log2-shorter-on-tie\" =\n \"not-longer-than-target\";\n\n if (\n isoPass.isoResolution.clamped ===\n \"maximum\" &&\n isoPass.targetResidual.state ===\n \"under-target\" &&\n policy.afterMaximumIso ===\n \"allow-slower-shutter\"\n ) {\n const maxIso =\n isoPass.resolvedSettings.iso;\n const fixedAtReference =\n opticalExposureFactor(\n manualAperture,\n referenceExposure\n .shutterSeconds,\n referenceExposure\n ) *\n (maxIso /\n referenceExposure.iso);\n const fallbackIdeal =\n referenceExposure\n .shutterSeconds *\n (target\n .requiredExposureScaleToTarget /\n fixedAtReference);\n shutter =\n resolveAutomaticShutter(\n fallbackIdeal,\n input.capabilities\n );\n fallbackUsed = true;\n shutterSelectionPolicy =\n \"nearest-log2-shorter-on-tie\";\n const achievedScale =\n opticalExposureFactor(\n manualAperture,\n shutter.shutterSeconds,\n referenceExposure\n ) *\n (maxIso /\n referenceExposure.iso);\n const residual =\n targetResidual(\n target,\n achievedScale,\n shutter.limitingConstraint\n );\n\n return {\n resolverVersion:\n EXPOSURE_MODE_RESOLVER_VERSION,\n mode: \"aperture-priority\",\n status: \"resolved\",\n axisOwnership: {\n aperture: \"manual\",\n shutter: \"automatic\",\n iso: \"automatic\"\n },\n targetId: target.targetId,\n targetSourceMeterSnapshot:\n target.sourceMeterSnapshot,\n referenceExposure,\n manualAperture,\n policy,\n baselineIso,\n idealShutterAtBaselineIsoSeconds:\n idealAtBaseline,\n preferredShutterSeconds:\n desiredPreferred,\n afterMaximumIsoFallbackUsed:\n fallbackUsed,\n resolvedSettings: {\n aperture: manualAperture,\n shutterSeconds:\n shutter.shutterSeconds,\n iso: maxIso\n },\n shutterResolution: {\n kind: shutter.kind,\n quantized:\n shutter.quantized,\n clamped:\n shutter.clamped,\n selectionPolicy:\n shutterSelectionPolicy\n },\n idealIsoBeforeConstraints:\n isoPass\n .idealIsoBeforeConstraints,\n isoResolution:\n isoPass.isoResolution,\n targetResidual: residual,\n apertureMutatedByResolver: false,\n shutterResolvedByResolver: true,\n isoResolvedByResolver: true,\n exposureCompensationAppliedByResolver:\n false,\n meterRecomputedByResolver: false,\n flashPolicyApplied: false,\n safetyShiftApplied: false\n };\n }\n\n return {\n resolverVersion:\n EXPOSURE_MODE_RESOLVER_VERSION,\n mode: \"aperture-priority\",\n status: \"resolved\",\n axisOwnership: {\n aperture: \"manual\",\n shutter: \"automatic\",\n iso: \"automatic\"\n },\n targetId: target.targetId,\n targetSourceMeterSnapshot:\n target.sourceMeterSnapshot,\n referenceExposure,\n manualAperture,\n policy,\n baselineIso,\n idealShutterAtBaselineIsoSeconds:\n idealAtBaseline,\n preferredShutterSeconds:\n desiredPreferred,\n afterMaximumIsoFallbackUsed:\n fallbackUsed,\n resolvedSettings:\n isoPass.resolvedSettings,\n shutterResolution: {\n kind: shutter.kind,\n quantized:\n shutter.quantized,\n clamped:\n shutter.clamped,\n selectionPolicy:\n shutterSelectionPolicy\n },\n idealIsoBeforeConstraints:\n isoPass\n .idealIsoBeforeConstraints,\n isoResolution:\n isoPass.isoResolution,\n targetResidual:\n isoPass.targetResidual,\n apertureMutatedByResolver: false,\n shutterResolvedByResolver: true,\n isoResolvedByResolver: true,\n exposureCompensationAppliedByResolver:\n false,\n meterRecomputedByResolver: false,\n flashPolicyApplied: false,\n safetyShiftApplied: false\n };\n}\n\n/**\n * Shutter Priority. Keeps the shutter fixed and chooses the aperture, plus optional Auto ISO, within\n * exactly what the equipment can do.\n *\n * Every exposure mode applies its control policy to one shared relative exposure equation, with an\n * explicit reference anchor. Exposure compensation is already part of the frozen meter target. Manual\n * settings are never changed. Automatic settings snap to the declared setting grids, and the result\n * reports the signed leftover (residual) stops and any limits hit. A target with zero signal cannot\n * be used to make up an exposure.\n * @param input - ResolveShutterPriorityExposureModeInput. See that type for coordinates, units and profile binding.\n * @returns ShutterPriorityExposureModeResolution. The result states its shape and scientific status; a successful call does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the root export and exact type graph.\n */\nexport function resolveShutterPriorityExposureMode(\n input:\n ResolveShutterPriorityExposureModeInput\n): ShutterPriorityExposureModeResolution {\n requireInputKeys(input, \"resolveShutterPriorityExposureMode\", [\"target\", \"capabilities\", \"referenceExposure\", \"manualShutterSeconds\", \"isoControl\"]);\n requireRecord(input.isoControl, \"isoControl\");\n const target = validateTarget(input.target);\n validateCapabilities(input.capabilities);\n const referenceExposure =\n validateReferenceExposure(\n input.referenceExposure,\n input.capabilities\n );\n const manualShutterSeconds =\n requirePositiveFinite(\n input.manualShutterSeconds,\n \"manualShutterSeconds\"\n );\n validateSettingAgainstGrid(\n manualShutterSeconds,\n input.capabilities.shutter\n .minimumSeconds,\n input.capabilities.shutter\n .maximumSeconds,\n input.capabilities.shutter\n .settingGrid,\n \"manualShutterSeconds\"\n );\n\n const base: ShutterPriorityResolutionBase = {\n resolverVersion:\n EXPOSURE_MODE_RESOLVER_VERSION,\n mode: \"shutter-priority\",\n targetId: target.targetId,\n targetSourceMeterSnapshot:\n target.sourceMeterSnapshot,\n referenceExposure,\n manualShutterSeconds,\n shutterMutatedByResolver: false,\n apertureResolvedByResolver: true,\n exposureCompensationAppliedByResolver:\n false,\n meterRecomputedByResolver: false,\n flashPolicyApplied: false,\n safetyShiftApplied: false\n };\n\n if (input.isoControl.kind === \"manual\") {\n const manualIso =\n requirePositiveFinite(\n input.isoControl.iso,\n \"isoControl.iso\"\n );\n validateSettingAgainstGrid(\n manualIso,\n input.capabilities.iso.minimum,\n input.capabilities.iso.maximum,\n input.capabilities.iso.settingGrid,\n \"isoControl.iso\"\n );\n if (\n input.isoControl\n .apertureQuantizationPolicy !==\n \"nearest-log2-narrower-on-tie\"\n ) {\n throw new InvalidConfigurationError(\n 'isoControl.apertureQuantizationPolicy must be \"nearest-log2-narrower-on-tie\".'\n );\n }\n if (target.status === \"no-signal\") {\n return {\n ...base,\n status: \"blocked\",\n axisOwnership: {\n aperture: \"automatic\",\n shutter: \"manual\",\n iso: \"manual\"\n },\n isoControl: \"manual\",\n resolvedSettings: {\n shutterSeconds:\n manualShutterSeconds\n },\n blocker: \"target-no-signal\",\n targetResidual: {\n status: \"target-unresolved\",\n state: \"target-unresolved\",\n reason: \"no-signal-target\"\n }\n };\n }\n\n const idealAperture =\n idealApertureForTarget(\n target\n .requiredExposureScaleToTarget,\n manualShutterSeconds,\n manualIso,\n referenceExposure\n );\n const aperture =\n resolveAutomaticAperture(\n idealAperture,\n input.capabilities\n );\n const achievedScale =\n opticalExposureFactor(\n aperture.aperture,\n manualShutterSeconds,\n referenceExposure\n ) *\n (manualIso /\n referenceExposure.iso);\n\n return {\n ...base,\n status: \"resolved\",\n axisOwnership: {\n aperture: \"automatic\",\n shutter: \"manual\",\n iso: \"manual\"\n },\n isoControl: \"manual\",\n manualIso,\n idealApertureBeforeConstraints:\n idealAperture,\n resolvedSettings: {\n aperture:\n aperture.aperture,\n shutterSeconds:\n manualShutterSeconds,\n iso: manualIso\n },\n apertureResolution: {\n kind: aperture.kind,\n quantizationPolicy:\n input.isoControl\n .apertureQuantizationPolicy,\n quantized:\n aperture.quantized,\n clamped:\n aperture.clamped\n },\n targetResidual:\n targetResidual(\n target,\n achievedScale,\n aperture\n .limitingConstraint\n )\n };\n }\n\n if (\n input.isoControl.kind !==\n \"automatic\"\n ) {\n throw new InvalidConfigurationError(\n \"isoControl.kind is invalid for Shutter Priority.\"\n );\n }\n\n const policy =\n input.isoControl.policy;\n requireRecord(policy, \"isoControl.policy\");\n if (\n policy.kind !==\n \"minimum-iso-aperture-first\" ||\n policy.isoBaseline !==\n \"minimum-selectable\" ||\n policy.isoQuantizationPolicy !==\n \"nearest-log2-lower-on-tie\" ||\n policy.apertureSelectionPolicy !==\n \"not-wider-than-target\"\n ) {\n throw new InvalidConfigurationError(\n \"Shutter Priority Auto ISO policy is invalid.\"\n );\n }\n\n const availability =\n validateAutoIsoAvailability(\n input.capabilities\n );\n if (\n availability !== \"supported\"\n ) {\n const raw = buildPriorityAutoIsoBlocked(\n \"shutter-priority\",\n target,\n referenceExposure,\n availability === \"unknown\"\n ? \"auto-iso-unknown\"\n : \"auto-iso-unsupported\",\n {\n shutterSeconds:\n manualShutterSeconds\n }\n );\n return {\n ...base,\n ...raw,\n axisOwnership: {\n aperture: \"automatic\",\n shutter: \"manual\",\n iso: \"automatic\"\n },\n isoControl: \"automatic\"\n };\n }\n if (target.status === \"no-signal\") {\n return {\n ...base,\n status: \"blocked\",\n axisOwnership: {\n aperture: \"automatic\",\n shutter: \"manual\",\n iso: \"automatic\"\n },\n isoControl: \"automatic\",\n resolvedSettings: {\n shutterSeconds:\n manualShutterSeconds\n },\n blocker: \"target-no-signal\",\n targetResidual: {\n status: \"target-unresolved\",\n state: \"target-unresolved\",\n reason: \"no-signal-target\"\n }\n };\n }\n\n const baselineIso =\n minimumSelectableIso(\n input.capabilities\n );\n const idealAtBaseline =\n idealApertureForTarget(\n target\n .requiredExposureScaleToTarget,\n manualShutterSeconds,\n baselineIso,\n referenceExposure\n );\n const aperture =\n selectApertureNotWiderThanTarget(\n idealAtBaseline,\n input.capabilities\n );\n const isoPass =\n resolveManualExposureMode({\n target,\n capabilities:\n input.capabilities,\n referenceExposure,\n manualAperture:\n aperture.aperture,\n manualShutterSeconds,\n isoControl: {\n kind: \"automatic\",\n quantizationPolicy:\n policy.isoQuantizationPolicy\n }\n });\n\n if (\n isoPass.status !== \"resolved\" ||\n isoPass.isoControl !== \"automatic\"\n ) {\n throw new InvalidScientificInputError(\n \"Shutter Priority Auto ISO could not resolve its ISO pass.\"\n );\n }\n\n return {\n ...base,\n status: \"resolved\",\n axisOwnership: {\n aperture: \"automatic\",\n shutter: \"manual\",\n iso: \"automatic\"\n },\n isoControl: \"automatic\",\n policy,\n baselineIso,\n idealApertureAtBaselineIso:\n idealAtBaseline,\n resolvedSettings:\n isoPass.resolvedSettings,\n apertureResolution: {\n kind: aperture.kind,\n quantized:\n aperture.quantized,\n clamped:\n aperture.clamped,\n selectionPolicy:\n policy.apertureSelectionPolicy\n },\n idealIsoBeforeConstraints:\n isoPass\n .idealIsoBeforeConstraints,\n isoResolution:\n isoPass.isoResolution,\n targetResidual:\n isoPass.targetResidual\n };\n}\n\n/**\n * Program auto exposure. Follows the declared generic program line in log2 exposure space, snaps\n * aperture and shutter to their grids, and can use Auto ISO for any exposure left over.\n *\n * Every exposure mode applies its control policy to one shared relative exposure equation, with an\n * explicit reference anchor. Exposure compensation is already part of the frozen meter target. Manual\n * settings are never changed. Automatic settings snap to the declared setting grids, and the result\n * reports the signed leftover (residual) stops and any limits hit. A target with zero signal cannot\n * be used to make up an exposure.\n * @param input - ResolveProgramAutoExposureModeInput. See that type for coordinates, units and profile binding.\n * @returns ProgramAutoExposureModeResolution. The result states its shape and scientific status; a successful call does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the root export and exact type graph.\n */\nexport function resolveProgramAutoExposureMode(\n input:\n ResolveProgramAutoExposureModeInput\n): ProgramAutoExposureModeResolution {\n requireInputKeys(input, \"resolveProgramAutoExposureMode\", [\"target\", \"capabilities\", \"referenceExposure\", \"programLine\", \"isoControl\"]);\n requireRecord(input.isoControl, \"isoControl\");\n const target =\n validateTarget(input.target);\n validateCapabilities(\n input.capabilities\n );\n const referenceExposure =\n validateReferenceExposure(\n input.referenceExposure,\n input.capabilities\n );\n const programLine =\n validateProgramLineForResolution(\n input.programLine,\n referenceExposure,\n input.capabilities\n );\n\n if (\n input.isoControl.kind !==\n \"manual\" &&\n input.isoControl.kind !==\n \"automatic\"\n ) {\n throw new InvalidConfigurationError(\n \"isoControl.kind is invalid for Program Auto.\"\n );\n }\n\n if (target.status === \"no-signal\") {\n return {\n resolverVersion:\n EXPOSURE_MODE_RESOLVER_VERSION,\n mode: \"program-auto\",\n status: \"blocked\",\n axisOwnership: {\n aperture: \"automatic\",\n shutter: \"automatic\",\n iso:\n input.isoControl.kind ===\n \"manual\"\n ? \"manual\"\n : \"automatic\"\n },\n isoControl:\n input.isoControl.kind,\n targetId: target.targetId,\n targetSourceMeterSnapshot:\n target.sourceMeterSnapshot,\n referenceExposure,\n blocker: \"target-no-signal\",\n targetResidual: {\n status: \"target-unresolved\",\n state: \"target-unresolved\",\n reason: \"no-signal-target\"\n },\n exposureCompensationAppliedByResolver:\n false,\n meterRecomputedByResolver:\n false,\n flashPolicyApplied: false,\n safetyShiftApplied: false\n };\n }\n\n if (\n input.isoControl.kind ===\n \"manual\"\n ) {\n const manualIso =\n requirePositiveFinite(\n input.isoControl.iso,\n \"isoControl.iso\"\n );\n validateSettingAgainstGrid(\n manualIso,\n input.capabilities.iso.minimum,\n input.capabilities.iso.maximum,\n input.capabilities.iso.settingGrid,\n \"isoControl.iso\"\n );\n\n const requestedOpticalStops =\n target\n .exposureOffsetStopsToTarget -\n Math.log2(\n manualIso /\n referenceExposure.iso\n );\n const selection =\n selectProgramLineSettings(\n requestedOpticalStops,\n programLine,\n input.capabilities\n );\n const achievedScale =\n opticalExposureFactor(\n selection.resolvedAperture,\n selection\n .resolvedShutterSeconds,\n referenceExposure\n ) *\n (manualIso /\n referenceExposure.iso);\n\n return {\n resolverVersion:\n EXPOSURE_MODE_RESOLVER_VERSION,\n mode: \"program-auto\",\n status: \"resolved\",\n axisOwnership: {\n aperture: \"automatic\",\n shutter: \"automatic\",\n iso: \"manual\"\n },\n isoControl: \"manual\",\n targetId: target.targetId,\n targetSourceMeterSnapshot:\n target.sourceMeterSnapshot,\n referenceExposure,\n programLineSelection:\n selection,\n apertureResolvedByResolver:\n true,\n shutterResolvedByResolver:\n true,\n exposureCompensationAppliedByResolver:\n false,\n meterRecomputedByResolver:\n false,\n flashPolicyApplied: false,\n safetyShiftApplied: false,\n manualIso,\n resolvedSettings: {\n aperture:\n selection\n .resolvedAperture,\n shutterSeconds:\n selection\n .resolvedShutterSeconds,\n iso: manualIso\n },\n targetResidual:\n targetResidual(\n target,\n achievedScale,\n programLineResidualConstraint(\n selection\n )\n )\n };\n }\n\n if (\n input.isoControl\n .isoBaseline !==\n \"minimum-selectable\" ||\n input.isoControl\n .isoQuantizationPolicy !==\n \"nearest-log2-lower-on-tie\"\n ) {\n throw new InvalidConfigurationError(\n \"Program Auto ISO policy is invalid.\"\n );\n }\n\n const availability =\n validateAutoIsoAvailability(\n input.capabilities\n );\n if (availability !== \"supported\") {\n return {\n resolverVersion:\n EXPOSURE_MODE_RESOLVER_VERSION,\n mode: \"program-auto\",\n status: \"blocked\",\n axisOwnership: {\n aperture: \"automatic\",\n shutter: \"automatic\",\n iso: \"automatic\"\n },\n isoControl: \"automatic\",\n targetId: target.targetId,\n targetSourceMeterSnapshot:\n target.sourceMeterSnapshot,\n referenceExposure,\n blocker:\n availability === \"unknown\"\n ? \"auto-iso-unknown\"\n : \"auto-iso-unsupported\",\n targetResidual: {\n status: \"target-unresolved\",\n state: \"target-unresolved\",\n reason:\n \"auto-iso-unavailable\"\n },\n exposureCompensationAppliedByResolver:\n false,\n meterRecomputedByResolver:\n false,\n flashPolicyApplied: false,\n safetyShiftApplied: false\n };\n }\n\n const baselineIso =\n minimumSelectableIso(\n input.capabilities\n );\n const requestedOpticalStops =\n target\n .exposureOffsetStopsToTarget -\n Math.log2(\n baselineIso /\n referenceExposure.iso\n );\n const selection =\n selectProgramLineSettings(\n requestedOpticalStops,\n programLine,\n input.capabilities\n );\n const isoPass =\n resolveManualExposureMode({\n target,\n capabilities:\n input.capabilities,\n referenceExposure,\n manualAperture:\n selection.resolvedAperture,\n manualShutterSeconds:\n selection\n .resolvedShutterSeconds,\n isoControl: {\n kind: \"automatic\",\n quantizationPolicy:\n input.isoControl\n .isoQuantizationPolicy\n }\n });\n\n if (\n isoPass.status !== \"resolved\" ||\n isoPass.isoControl !== \"automatic\"\n ) {\n throw new InvalidScientificInputError(\n \"Program Auto could not resolve its Auto ISO pass.\"\n );\n }\n\n return {\n resolverVersion:\n EXPOSURE_MODE_RESOLVER_VERSION,\n mode: \"program-auto\",\n status: \"resolved\",\n axisOwnership: {\n aperture: \"automatic\",\n shutter: \"automatic\",\n iso: \"automatic\"\n },\n isoControl: \"automatic\",\n targetId: target.targetId,\n targetSourceMeterSnapshot:\n target.sourceMeterSnapshot,\n referenceExposure,\n programLineSelection:\n selection,\n apertureResolvedByResolver: true,\n shutterResolvedByResolver: true,\n exposureCompensationAppliedByResolver:\n false,\n meterRecomputedByResolver: false,\n flashPolicyApplied: false,\n safetyShiftApplied: false,\n baselineIso,\n idealIsoBeforeConstraints:\n isoPass\n .idealIsoBeforeConstraints,\n isoResolution:\n isoPass.isoResolution,\n resolvedSettings:\n isoPass.resolvedSettings,\n targetResidual:\n isoPass.targetResidual\n };\n}\n\n/**\n * Full Auto. Chooses aperture, shutter and ISO under an explicit generic Full Auto exposure policy.\n * Autofocus, white balance (WB), flash, drive mode and scene recognition are not resolved.\n *\n * Every exposure mode applies its control policy to one shared relative exposure equation, with an\n * explicit reference anchor. Exposure compensation is already part of the frozen meter target. Manual\n * settings are never changed. Automatic settings snap to the declared setting grids, and the result\n * reports the signed leftover (residual) stops and any limits hit. A target with zero signal cannot\n * be used to make up an exposure.\n * @param input - ResolveFullAutoExposureModeInput. See that type for coordinates, units and profile binding.\n * @returns FullAutoExposureModeResolution. The result states its shape and scientific status; a successful call does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the root export and exact type graph.\n */\nexport function resolveFullAutoExposureMode(\n input:\n ResolveFullAutoExposureModeInput\n): FullAutoExposureModeResolution {\n requireInputKeys(input, \"resolveFullAutoExposureMode\", [\"target\", \"capabilities\", \"referenceExposure\", \"policy\"]);\n requireRecord(input.policy, \"policy\");\n const target =\n validateTarget(input.target);\n validateCapabilities(\n input.capabilities\n );\n const referenceExposure =\n validateReferenceExposure(\n input.referenceExposure,\n input.capabilities\n );\n\n if (\n input.policy.kind !==\n \"generic-program-line-minimum-iso\" ||\n input.policy.isoBaseline !==\n \"minimum-selectable\" ||\n input.policy\n .isoQuantizationPolicy !==\n \"nearest-log2-lower-on-tie\"\n ) {\n throw new InvalidConfigurationError(\n \"Full Auto exposure policy is invalid.\"\n );\n }\n\n const programLine =\n validateProgramLineForResolution(\n input.policy.programLine,\n referenceExposure,\n input.capabilities\n );\n\n const blocked = (\n blocker:\n | \"target-no-signal\"\n | \"auto-iso-unsupported\"\n | \"auto-iso-unknown\"\n ): FullAutoExposureModeResolution => ({\n resolverVersion:\n EXPOSURE_MODE_RESOLVER_VERSION,\n mode:\n \"full-auto-exposure\",\n status: \"blocked\",\n axisOwnership: {\n aperture: \"automatic\",\n shutter: \"automatic\",\n iso: \"automatic\"\n },\n policy: input.policy,\n targetId: target.targetId,\n targetSourceMeterSnapshot:\n target.sourceMeterSnapshot,\n referenceExposure,\n blocker,\n targetResidual: {\n status: \"target-unresolved\",\n state: \"target-unresolved\",\n reason:\n blocker ===\n \"target-no-signal\"\n ? \"no-signal-target\"\n : \"auto-iso-unavailable\"\n },\n exposureCompensationAppliedByResolver:\n false,\n meterRecomputedByResolver:\n false,\n flashPolicyApplied: false,\n safetyShiftApplied: false,\n autofocusResolved: false,\n whiteBalanceResolved: false,\n flashResolved: false,\n driveResolved: false,\n sceneRecognitionResolved:\n false,\n stabilizationPolicyResolved:\n false\n });\n\n if (target.status === \"no-signal\") {\n return blocked(\n \"target-no-signal\"\n );\n }\n\n const availability =\n validateAutoIsoAvailability(\n input.capabilities\n );\n if (availability !== \"supported\") {\n return blocked(\n availability === \"unknown\"\n ? \"auto-iso-unknown\"\n : \"auto-iso-unsupported\"\n );\n }\n\n const baselineIso =\n minimumSelectableIso(\n input.capabilities\n );\n const requestedOpticalStops =\n target\n .exposureOffsetStopsToTarget -\n Math.log2(\n baselineIso /\n referenceExposure.iso\n );\n const selection =\n selectProgramLineSettings(\n requestedOpticalStops,\n programLine,\n input.capabilities\n );\n const isoPass =\n resolveManualExposureMode({\n target,\n capabilities:\n input.capabilities,\n referenceExposure,\n manualAperture:\n selection.resolvedAperture,\n manualShutterSeconds:\n selection\n .resolvedShutterSeconds,\n isoControl: {\n kind: \"automatic\",\n quantizationPolicy:\n input.policy\n .isoQuantizationPolicy\n }\n });\n\n if (\n isoPass.status !== \"resolved\" ||\n isoPass.isoControl !== \"automatic\"\n ) {\n throw new InvalidScientificInputError(\n \"Full Auto exposure could not resolve its Auto ISO pass.\"\n );\n }\n\n return {\n resolverVersion:\n EXPOSURE_MODE_RESOLVER_VERSION,\n mode:\n \"full-auto-exposure\",\n status: \"resolved\",\n axisOwnership: {\n aperture: \"automatic\",\n shutter: \"automatic\",\n iso: \"automatic\"\n },\n policy: input.policy,\n targetId: target.targetId,\n targetSourceMeterSnapshot:\n target.sourceMeterSnapshot,\n referenceExposure,\n programLineSelection:\n selection,\n apertureResolvedByResolver: true,\n shutterResolvedByResolver: true,\n exposureCompensationAppliedByResolver:\n false,\n meterRecomputedByResolver:\n false,\n flashPolicyApplied: false,\n safetyShiftApplied: false,\n baselineIso,\n idealIsoBeforeConstraints:\n isoPass\n .idealIsoBeforeConstraints,\n isoResolution:\n isoPass.isoResolution,\n resolvedSettings:\n isoPass.resolvedSettings,\n targetResidual:\n isoPass.targetResidual,\n autofocusResolved: false,\n whiteBalanceResolved: false,\n flashResolved: false,\n driveResolved: false,\n sceneRecognitionResolved:\n false,\n stabilizationPolicyResolved:\n false\n };\n}\n\n"]}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
2
|
+
* Basic exposure relations.
|
|
3
|
+
* - EV100: exposure value from aperture and shutter duration.
|
|
4
|
+
* - Relative optical exposure at the image plane, from shutterSeconds / aperture^2.
|
|
5
|
+
* - Relative rendering exposure, which also includes nominal ISO gain.
|
|
6
|
+
* These do not include scene light, lens transmission, vignetting or sensor response. Do not read
|
|
7
|
+
* them as photon counts.
|
|
8
|
+
* @see docs/USAGE.md for the equations, units, coordinate conventions, known blockers and support
|
|
9
|
+
* limits.
|
|
8
10
|
*/
|
|
9
11
|
import { type CalculationResult } from "../core/calculation-result.js";
|
|
10
12
|
export interface CalculateExposureValue100Input {
|
|
@@ -36,8 +38,8 @@ export interface RelativeOpticalExposure {
|
|
|
36
38
|
* Compares image-plane optical exposure using the proportional relation
|
|
37
39
|
* shutterSeconds / aperture^2.
|
|
38
40
|
*
|
|
39
|
-
* This does not include scene light, lens transmission, vignetting
|
|
40
|
-
* response
|
|
41
|
+
* This does not include scene light, lens transmission, vignetting or sensor
|
|
42
|
+
* response. Do not read it as a photon count.
|
|
41
43
|
*/
|
|
42
44
|
export declare function calculateRelativeOpticalExposure(input: CalculateRelativeOpticalExposureInput): CalculationResult<RelativeOpticalExposure>;
|
|
43
45
|
export interface CalculateRelativeRenderedExposureInput {
|
|
@@ -62,10 +64,10 @@ export interface RelativeRenderedExposure {
|
|
|
62
64
|
* Calculates a relative linear rendering exposure from aperture, shutter, and
|
|
63
65
|
* nominal ISO gain.
|
|
64
66
|
*
|
|
65
|
-
* This relation is
|
|
66
|
-
*
|
|
67
|
-
* it does not create photons
|
|
68
|
-
* clipping, tone mapping, lens transmission
|
|
67
|
+
* This relation is for deterministic educational rendering, relative to a
|
|
68
|
+
* declared reference exposure. ISO is treated as a brightness (gain) control;
|
|
69
|
+
* it does not create photons. This function does not model sensor noise,
|
|
70
|
+
* clipping, tone mapping, lens transmission or absolute scene luminance.
|
|
69
71
|
*
|
|
70
72
|
* @param input Current and reference aperture/shutter/ISO settings.
|
|
71
73
|
* @returns Relative rendering factor and stop difference.
|
|
@@ -79,11 +81,10 @@ export interface CalculateEquivalentIsoInput {
|
|
|
79
81
|
shutterSeconds: number;
|
|
80
82
|
}
|
|
81
83
|
/**
|
|
82
|
-
* Calculates the ISO
|
|
83
|
-
* after
|
|
84
|
-
*
|
|
84
|
+
* Calculates the ISO (gain) setting that keeps the nominal rendered exposure
|
|
85
|
+
* the same after aperture, shutter or both change. Assumes nothing else
|
|
86
|
+
* changes.
|
|
85
87
|
*
|
|
86
88
|
* This is an exposure-compensation relation, not a sensor-noise model.
|
|
87
89
|
*/
|
|
88
90
|
export declare function calculateEquivalentIso(input: CalculateEquivalentIsoInput): CalculationResult<number>;
|
|
89
|
-
//# sourceMappingURL=exposure.d.ts.map
|