@photivra/engine 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/CITATION.cff +1 -1
  3. package/README.md +6 -6
  4. package/SECURITY.md +1 -1
  5. package/dist/capture/native-environment-raw.d.ts +18 -0
  6. package/dist/capture/native-environment-raw.js +17 -1
  7. package/dist/capture/native-environment-raw.js.map +1 -1
  8. package/dist/capture/native-raw.d.ts +3 -0
  9. package/dist/capture/native-raw.js +8 -5
  10. package/dist/capture/native-raw.js.map +1 -1
  11. package/dist/core/version.d.ts +1 -1
  12. package/dist/core/version.js +1 -1
  13. package/dist/core/version.js.map +1 -1
  14. package/dist/equipment/generic-prime-lenses.d.ts +46 -0
  15. package/dist/equipment/generic-prime-lenses.js +59 -0
  16. package/dist/equipment/generic-prime-lenses.js.map +1 -0
  17. package/dist/facade/chart-scenes.d.ts +270 -1
  18. package/dist/facade/chart-scenes.js +443 -17
  19. package/dist/facade/chart-scenes.js.map +1 -1
  20. package/dist/facade/scene-radiance.d.ts +47 -0
  21. package/dist/facade/scene-radiance.js +65 -5
  22. package/dist/facade/scene-radiance.js.map +1 -1
  23. package/dist/facade/simulate-capture.d.ts +152 -5
  24. package/dist/facade/simulate-capture.js +302 -57
  25. package/dist/facade/simulate-capture.js.map +1 -1
  26. package/dist/facade/subject-framing.d.ts +55 -0
  27. package/dist/facade/subject-framing.js +66 -0
  28. package/dist/facade/subject-framing.js.map +1 -0
  29. package/dist/gpu/chart-radiance-gpu.d.ts +8 -0
  30. package/dist/gpu/chart-radiance-gpu.js +20 -1
  31. package/dist/gpu/chart-radiance-gpu.js.map +1 -1
  32. package/dist/index.d.ts +5 -3
  33. package/dist/index.js +5 -3
  34. package/dist/index.js.map +1 -1
  35. package/dist/optics/lens-psf-kernels.d.ts +3 -1
  36. package/dist/optics/lens-psf-kernels.js +7 -2
  37. package/dist/optics/lens-psf-kernels.js.map +1 -1
  38. package/docs/API_REFERENCE.md +48 -1
  39. package/docs/QUICK_START.md +269 -4
  40. package/docs/api/core-version.md +1 -1
  41. package/docs/api/equipment-generic-prime-lenses.md +85 -0
  42. package/docs/api/exports.json +167 -2
  43. package/docs/api/facade-chart-scenes.md +280 -4
  44. package/docs/api/facade-scene-radiance.md +42 -0
  45. package/docs/api/facade-simulate-capture.md +108 -3
  46. package/docs/api/facade-subject-framing.md +72 -0
  47. package/package.json +1 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * The package entry point: one browser-safe ES module that exports every public API.\n *\n * Import only from here. Deep imports into other files, the transport server and renderer\n * backends are not supported package APIs.\n * @see docs/DEVELOPERS.md for equations, coordinate/unit conventions, blockers and support limits.\n */\n\nexport { GENERIC_EQUIPMENT_TIER_PRESET_VERSION, GENERIC_EQUIPMENT_TIERS, resolveGenericEquipmentTierCatalog,\n createGenericEquipmentTierSelection, parseGenericEquipmentTierSelection, resolveGenericEquipmentTierLensProfiles,\n type GenericEquipmentTierProfileReference, type GenericEquipmentTierSelection, type ResolvedGenericTierLensProfiles } from \"./equipment/generic-tier-presets.js\";\nexport type { GenericEquipmentTier, GenericEquipmentTierPreset, GenericVersionedAsset, GenericTierBodyAssets, GenericTierLensAssets } from \"./equipment/generic-tier-assets.js\";\nexport { SENSOR_RAW_PRODUCER_SCHEMA_VERSION, SENSOR_RAW_PRODUCER_NOISE_MODEL, parseSensorRawProducerInput, simulateSensorRawFrame,\n type SensorRawProducerExposureWindowInput, type SensorRawProducerSiteInput, type SensorRawProducerInput, type SensorRawProducerResult } from \"./capture/sensor-raw-producer.js\";\nexport { CAPTURE_CORRECTED_SDR_SCHEMA_VERSION, parseCaptureCorrectedSdrInput, calculateCaptureCorrectedSdr,\n type CaptureCorrectedSdrInput, type CaptureCorrectedSdrResult } from \"./output/capture-corrected-sdr.js\";\nexport { PHOTOGRAPHIC_EXPORT_SCHEMA_VERSION, PHOTOGRAPHIC_EXPORT_PIPELINE_VERSION, PROCESSED_SENSOR_RAW_MODEL_VERSION, parseExportSensorColorProfile,\n parsePhotographicExportInput, createPhotographicExportPair, type ExportSensorColorProfile, type PhotographicExportInput,\n type PhotographicExportOptions, type PhotographicExportPair } from \"./capture/photographic-export.js\";\nexport { calculateEffectiveSaturationCode, type EffectiveSaturationReadout } from \"./capture/raw-white-level.js\";\nexport { RAW_HIGHLIGHT_RECONSTRUCTION_START, SENSOR_COLOR_DEVELOPMENT_MODEL, type RawHighlightMode } from \"./color/sensor-color-development.js\";\nexport { CAPTURE_EXPORT_METADATA_SCHEMA_VERSION, parseCaptureExportMetadataInput, createCaptureExportMetadataPair,\n type CaptureExportWorkflow, type CaptureExportArtifactIdentity, type CaptureExportMetadataInput,\n type CaptureExportSharedMetadata, type CaptureExportMetadataPair } from \"./capture/capture-export-metadata.js\";\nexport { CAPTURE_SDR_SCHEMA_VERSION, parseCaptureSdrInput, calculateCaptureSdr, type CaptureSdrInput, type CaptureSdrResult } from \"./output/capture-sdr.js\";\nexport { RAW_FRAME_RECONSTRUCTION_SCHEMA_VERSION, parseRawFrameReconstructionInput, resolveRawFrameReconstruction,\n type RawFrameReconstructionPhaseProfile, type RawFrameReconstructionInput, type RawFrameReconstruction } from \"./capture/raw-frame-reconstruction.js\";\nexport { SENSOR_RAW_FRAME_SCHEMA_VERSION, createSensorRawFrame, parseSensorRawFrameInput,\n type SensorRawFrameInput, type SensorRawFrame } from \"./capture/sensor-raw-frame.js\";\n\nexport {\n parseOpticalProfileState,\n type OpticalProfileState,\n type GenericOpticalEvidence\n} from \"./optics/profile-contract.js\";\nexport {\n parseLensStrayLightProfile,\n calculateLensStrayLightIrradiance,\n type LensStrayLightProfile,\n type ParametricStrayLightResponse,\n type StrayLightSource,\n type StrayLightIrradiance\n} from \"./optics/stray-light.js\";\nexport {\n parseDigitalGeometricTransform,\n prepareGeometricMapping,\n calculateComposedGeometricMapping,\n calculateForwardGeometricMapping,\n calculateGeometricSamplingPlan,\n calculateGeometricResampling,\n type DigitalGeometricTransform,\n type AffineGeometricTransform,\n type RadialGeometricTransform,\n type BrownConradyGeometricTransform,\n type ProjectionRemapGeometricTransform,\n type GeometricProjectionDeclaration,\n type GeometricJacobian,\n type GeometricImageDomain,\n type PreparedGeometricMapping,\n type GeometricRaster,\n type GeometricResampler,\n type GeometricMappingPoint,\n type GeometricSamplingPlan\n} from \"./output/geometric-transforms.js\";\nexport {\n parseGenericLensCorrectionProfile,\n resolveLensCorrectionPlan,\n calculatePeripheralIlluminationCorrection,\n calculateLensCorrectedCapture,\n type GenericLensCorrectionProfile,\n type LensCorrectionComponent,\n type LensCorrectionChannel,\n type GeometricLensCorrection,\n type LateralCaLensCorrection,\n type IlluminationLensCorrection,\n type ResolvedLensCorrectionPlan,\n type LensCorrectionCapture\n} from \"./output/lens-corrections.js\";\n\nexport {\n SIMULATED_CAPTURE_SCHEMA_VERSION,\n createSimulatedCapture,\n parseSimulatedCapture,\n serializeSimulatedCapture,\n resolveSimulatedCapturePlane,\n createCaptureWhiteBalanceIntent,\n type SimulatedCapture,\n type SimulatedCaptureInput,\n type CaptureExposureSource,\n type CaptureLinearImageState,\n type CaptureLinearPlane,\n type CaptureFloatStorage,\n type CapturePublicProfileReference,\n type CaptureWhiteXyz,\n type CaptureWhiteBalanceIntent\n} from \"./capture/simulated-capture.js\";\n\nexport {\n CAPTURE_COLOR_MODEL_VERSION,\n VIRTUAL_COLOR_CAMERA_PROFILE,\n LINEAR_CAPTURE_RGB_PROFILE,\n resolveCaptureColorModel,\n parseCaptureColorTransformInput,\n calculateCaptureColorTransform,\n type CaptureChromaticAdaptationTransform,\n type CaptureColorModel,\n type CaptureColorWhiteBalance,\n type CaptureColorTransformInput,\n type CaptureColorTransformResult\n} from \"./color/capture-color.js\";\n\nexport { ENGINE_API_VERSION } from \"./core/version.js\";\nexport { FULL_RESOLUTION_DEFAULT_PIXELS, FULL_RESOLUTION_CEILING_PIXELS } from \"./core/pixel-limits.js\";\n\nexport {\n LINEAR_CAPTURE_ENCODING_SCHEMA_VERSION,\n LINEAR_CAPTURE_ENCODING_MODEL_VERSION,\n parseLinearCaptureEncoding,\n calculateLinearCaptureEncoding,\n type LinearCaptureEncoding,\n type LinearCaptureEncodingInput,\n type EncodedLinearCapture\n} from \"./capture/linear-encoding.js\";\n\nexport {\n SDR_RENDERING_SCHEMA_VERSION,\n SDR_RENDERING_MODEL_VERSION,\n parseSdrRenderingProfile,\n parseSdrRenderingInput,\n calculateSdrRendering,\n type SdrRenderingProfile,\n type SdrToneCurve,\n type SdrToneCurveParameters,\n type SdrRenderingInput,\n type SdrRenderingResult\n} from \"./output/sdr-rendering.js\";\n\nexport {\n approximationResult,\n calibratedResult,\n calculatedResult,\n estimatedResult,\n validateCalculationQuality,\n type AbsoluteUncertaintyEstimate,\n type CalculationProvenance,\n type CalculationQuality,\n type CalculationResult,\n type CalculationValidRange,\n type ProvenanceKind,\n type RelativeUncertaintyEstimate,\n type UncertaintyConfidence,\n type UncertaintyEstimate,\n type UncertaintySource\n} from \"./core/calculation-result.js\";\nexport {\n InvalidScientificInputError,\n InvalidScientificResultError\n} from \"./core/validation.js\";\n\nexport {\n parseSpectralWavelengthBasis,\n parseSpectralWavelengthRangeNanometers,\n parseSpectralWavelengthSample,\n type SpectralWavelengthBasis,\n type SpectralWavelengthRangeNanometers,\n type SpectralWavelengthSample\n} from \"./core/spectral.js\";\n\nexport {\n composeSpectralCoverage,\n distributeIntegratedQuantityAcrossDiscreteSpectralLines,\n integrateDiscreteSpectralLineMeasure,\n parseNormalizedDiscreteSpectralLineDistribution,\n parseSpectralCoverageParticipant,\n type ComposeSpectralCoverageInput,\n type DiscreteSpectralLineMeasure,\n type DiscreteSpectralLineMeasureEntry,\n type DiscreteSpectralLineQuantityUnit,\n type DistributeIntegratedQuantityAcrossDiscreteLinesInput,\n type IntegratedDiscreteSpectralLineMeasure,\n type NormalizedDiscreteSpectralLine,\n type NormalizedDiscreteSpectralLineDistribution,\n type ResolvedSpectralWavelengthBasis,\n type SpectralCoverageComposition,\n type SpectralCoverageParticipant,\n type SpectralCoverageParticipantRole\n} from \"./core/spectral-composition.js\";\n\nexport {\n SCIENTIFIC_ASSURANCE_CONTRACT_VERSION,\n composeScientificAssurance,\n type ComposeScientificAssuranceInput,\n type ComposedScientificAssurance,\n type ComposedScientificUncertaintyStatus,\n type ScientificAssuranceBasisKind,\n type ScientificAssuranceComponent,\n type ScientificAssuranceComponentUncertainty,\n type ScientificAssuranceSourceIdentity,\n type ScientificAssuranceSourceKind,\n type ScientificAssuranceStatus\n} from \"./core/scientific-assurance.js\";\n\nexport {\n IMAGE_FORMATION_CONTRACT_VERSION,\n getImageFormationContract,\n type ImageFormationContract,\n type ImageFormationCoordinateSpaceContract,\n type ImageFormationCoordinateSpaceId,\n type ImageFormationDomainId,\n type ImageFormationEffectId,\n type ImageFormationEffectPlacement,\n type ImageFormationImplementationStatus,\n type ImageFormationRendererContract,\n type ImageFormationStageContract,\n type ImageFormationStageId,\n type ImageFormationTemporalContract\n} from \"./core/image-formation.js\";\n\nexport {\n IMAGE_FORMATION_FIDELITY_PROFILE_SCHEMA_VERSION,\n PREPARED_IMAGE_FORMATION_CONTEXT_VERSION,\n PRODUCTION_CAPTURE_SNAPSHOT_VERSION,\n PRODUCTION_IMAGE_FORMATION_PLAN_VERSION,\n RENDERER_CAPABILITY_SCHEMA_VERSION,\n createProductionCaptureSnapshot,\n createProductionCaptureSnapshotFromReleaseFrame,\n createProductionImageFormationPlan,\n parseImageFormationFidelityProfile,\n parsePreparedImageFormationContext,\n parseProductionCaptureSnapshot,\n parseRendererCapabilityDeclaration,\n prepareImageFormationContext,\n serializeProductionImageFormationPlan,\n type CreateProductionCaptureSnapshotFromReleaseFrameInput,\n type CreateProductionCaptureSnapshotInput,\n type CreateProductionImageFormationPlanInput,\n type ProductionProcessedOutputInput,\n type ProductionEnvironmentCaptureInput,\n type ImageFormationFidelityProfile,\n type PlannedImageFormationEffect,\n type PlannedImageFormationEffectState,\n type PlannedImageFormationStage,\n type PlannedImageFormationStageState,\n type PlannedScientificStatus,\n type PrepareImageFormationContextInput,\n type PreparedImageFormationContext,\n type ProductionCaptureSnapshot,\n type ProductionImageFormationBlocker,\n type ProductionImageFormationBlockerCode,\n type ProductionImageFormationPlan,\n type ProductionPhysicalSceneSample,\n type ProductionReleaseFrameBinding,\n type ProductionTemporalCaptureInput,\n type ProductionTemporalCaptureResult,\n type RendererCapabilityDeclaration,\n type RendererConsumerKind,\n type RequiredImageFormationEffect\n} from \"./composition/image-formation-plan.js\";\n\nexport {\n PRODUCTION_PLAN_CONSUMER_MANIFEST_VERSION,\n createProductionPlanConsumerManifest,\n type CreateProductionPlanConsumerManifestInput,\n type ProductionPlanConsumerManifest\n} from \"./composition/plan-consumer.js\";\n\nexport {\n calculateFieldOfView,\n calculateFieldOfViewBounds,\n type CalculateFieldOfViewBoundsInput,\n type CalculateFieldOfViewInput,\n type FieldOfView,\n type FieldOfViewBounds\n} from \"./camera/field-of-view.js\";\n\nexport {\n LENS_PROJECTION_MODELS,\n calculateLensProjectionDirection,\n calculateLensProjectionFieldOfView,\n calculateLensProjectionFieldOfViewBounds,\n calculateLensProjectionImagePoint,\n parseLensProjectionModel,\n type CalculateLensProjectionDirectionInput,\n type CalculateLensProjectionFieldOfViewBoundsInput,\n type CalculateLensProjectionFieldOfViewInput,\n type CalculateLensProjectionImagePointInput,\n type LensDirection,\n type LensProjectionDirection,\n type LensProjectionFieldOfView,\n type LensProjectionFieldOfViewBounds,\n type LensProjectionImagePoint,\n type LensProjectionModel,\n type RadialLensProjectionModel\n} from \"./camera/lens-projection.js\";\n\nexport {\n calculateProjectedObjectSize,\n type CalculateProjectedObjectSizeInput,\n type ProjectedObjectSize\n} from \"./camera/projected-object-size.js\";\n\nexport {\n calculateEquivalentFocalLength35Mm,\n type CalculateEquivalentFocalLength35MmInput,\n type EquivalentFocalLength35Mm\n} from \"./camera/equivalent-focal-length.js\";\n\nexport {\n COLOR_TEMPERATURE_WHITE_BALANCE_INTENT_VERSION,\n WHITE_BALANCE_PROFILE_SCHEMA_VERSION,\n WHITE_BALANCE_STATE_VERSION,\n createColorTemperatureWhiteBalanceIntent,\n createLockedWhiteBalanceState,\n estimateAutoWhiteBalance,\n parseResolvedWhiteBalanceState,\n parseWhiteBalanceProfile,\n resolveCustomWhiteBalance,\n resolveManualWhiteBalance,\n resolvePresetWhiteBalance,\n type ColorTemperatureWhiteBalanceIntent,\n type CreateColorTemperatureWhiteBalanceIntentInput,\n type CreateLockedWhiteBalanceStateInput,\n type EstimateAutoWhiteBalanceInput,\n type PreWhiteBalanceRgbSample,\n type PreWhiteBalanceRgbSampleSet,\n type ResolveCustomWhiteBalanceInput,\n type ResolveManualWhiteBalanceInput,\n type ResolvePresetWhiteBalanceInput,\n type ResolvedWhiteBalanceState,\n type WhiteBalanceAwbIntent,\n type WhiteBalanceAwbPolicy,\n type WhiteBalanceChannelGains,\n type WhiteBalanceInputDomain,\n type WhiteBalancePresetDefinition,\n type WhiteBalanceProfile,\n resolveColorTemperatureWhiteBalance,\n type ColorTemperatureWhiteBalanceCameraModel,\n type ResolveColorTemperatureWhiteBalanceInput,\n type ResolvedColorTemperatureWhiteBalance\n} from \"./color/white-balance.js\";\n\nexport type {\n Cie1960UvChromaticity,\n CieXyChromaticity,\n CieXyzTristimulus,\n ColorMatrix3x3,\n ColorVector3\n} from \"./color/colorimetry-math.js\";\n\nexport {\n COLORIMETRY_MODEL_VERSION,\n MAX_COLORIMETRIC_QUADRATURE_NODES,\n MAX_COLORIMETRIC_TABLE_SAMPLES,\n ANALYTIC_CIE_1931_CMF_DOMAIN_NANOMETERS,\n createColorimetricMidpointQuadrature,\n estimateCie1931ColorMatchingFunctions,\n integrateSpectrumToXyz,\n parseColorimetricQuadratureNodes,\n prepareColorMatchingFunctions,\n prepareColorimetricSpectrum,\n type ColorMatchingFunctionsSource,\n type ColorimetricObserver,\n type ColorimetricQuadratureNode,\n type ColorimetricSpectralSample,\n type ColorimetricSpectrum,\n type CreateColorimetricMidpointQuadratureInput,\n type IntegrateSpectrumToXyzInput,\n type IntegratedSpectrumXyz,\n type PreparedColorMatchingFunctions,\n type PreparedColorimetricSpectrum,\n type TabulatedColorMatchingSample,\n type TristimulusNormalization\n} from \"./color/color-matching-functions.js\";\n\nexport {\n BOLTZMANN_CONSTANT_JOULES_PER_KELVIN,\n CIE_DAYLIGHT_LOCUS_RANGE_KELVIN,\n CIE_ILLUMINANT_A_RANGE_NANOMETERS,\n PLANCKIAN_LOCUS_RANGE_KELVIN,\n MAX_CORRELATED_COLOR_TEMPERATURE_DUV,\n PLANCK_CONSTANT_JOULE_SECONDS,\n SECOND_RADIATION_CONSTANT_METER_KELVIN,\n SPEED_OF_LIGHT_METERS_PER_SECOND,\n calculateChromaticityFromCorrelatedColorTemperature,\n calculateCieDaylightComponentWeights,\n calculateCieIlluminantARelativeSpectralPower,\n calculateCorrelatedColorTemperature,\n calculatePlanckianChromaticity,\n calculatePlanckianSpectralRadiance,\n createCieDaylightSpectrum,\n createCieIlluminantASpectrum,\n createPlanckianSpectrum,\n estimateCorrelatedColorTemperatureMcCamy,\n estimatePlanckianLocusChromaticity,\n type CieDaylightBasis,\n type CieDaylightComponentWeights,\n type CorrelatedColorTemperatureResult,\n type PlanckianLocusModel,\n type WhiteLocus\n} from \"./color/illuminants.js\";\n\nexport {\n CHROMATIC_ADAPTATION_TRANSFORMS,\n calculateChromaticAdaptationMatrix,\n calculateChromaticallyAdaptedXyz,\n resolveChromaticAdaptationConeMatrix,\n type CalculateChromaticAdaptationMatrixInput,\n type ChromaticAdaptationMatrix,\n type ChromaticAdaptationTransform\n} from \"./color/chromatic-adaptation.js\";\n\nexport {\n calculateCielabFromCielch,\n calculateCielabFromXyz,\n calculateCielchFromCielab,\n calculateColorDifference,\n calculateXyzFromCielab,\n type CalculateColorDifferenceInput,\n type Cie94ParametricFactors,\n type Ciede2000ParametricFactors,\n type CielabColor,\n type CielchColor,\n type ColorDifferenceFormula\n} from \"./color/color-difference.js\";\n\nexport {\n MAX_CAMERA_MATRIX_TRAINING_PATCHES,\n estimateCameraColorMatrix,\n type CameraColorMatrixFit,\n type CameraMatrixFitConstraint,\n type CameraMatrixPatchReport,\n type CameraMatrixTrainingPatch,\n type CameraSpectralSensitivities,\n type EstimateCameraColorMatrixInput\n} from \"./color/camera-color-matrix.js\";\n\nexport {\n calculateRgbToXyzMatrices,\n evaluateBt709InverseOetf,\n evaluateSrgbDecoding,\n evaluateBt709Oetf,\n evaluateSrgbEncoding,\n prepareBt1886Eotf,\n resolveRgbColorSpace,\n type Bt1886Eotf,\n type RgbColorSpaceDefinition,\n type RgbColorSpaceId,\n type RgbPrimaryChromaticities,\n type RgbToXyzMatrices,\n type RgbTransferFunctionId\n} from \"./color/rgb-color-spaces.js\";\n\nexport {\n calculateGamutMappedColor,\n prepareRgbGamutMapping,\n type GamutMappedColor,\n type GamutMappingMethod,\n type PrepareRgbGamutMappingInput,\n type PreparedRgbGamutMapping\n} from \"./color/gamut-mapping.js\";\n\nexport {\n calculatePixelPitch,\n type CalculatePixelPitchInput,\n type PixelPitch\n} from \"./sensor/pixel-pitch.js\";\n\nexport {\n calculateImagingAreaMetrics,\n calculateSensorGeometryMetrics,\n type CalculateSensorGeometryMetricsInput,\n type ImagingAreaMetrics,\n type NativeImageRaster,\n type RasterDimensions,\n type SensorGeometryMetrics,\n type SensorImagingArea\n} from \"./sensor/sensor-geometry.js\";\n\nexport {\n SENSOR_ARCHITECTURE_PROFILE_SCHEMA_VERSION,\n parseSensorArchitectureProfile,\n type SensorArchitectureFactProvenance,\n type SensorArchitectureProfile,\n type SensorArchitectureProfileV0_2,\n type SensorArchitectureProfileV0_3,\n type SensorArchitectureReuseStatus,\n type SensorArchitectureSourceKind,\n type SensorColorSamplingFamily,\n type SensorIlluminationArchitecture,\n type SensorIntegrationArchitecture,\n type SensorReadoutArchitecture,\n type SensorTechnologyFamily,\n type SourcedSensorArchitectureFact\n} from \"./sensor/architecture.js\";\n\nexport {\n parseSensorColorSamplingProfile,\n resolveColorSamplingSite,\n type LayeredColorSamplingLayout,\n type MonochromeColorSamplingLayout,\n type NativeColorSamplingSiteCoordinateSystem,\n type NativeColorSamplingSiteIndex,\n type SensorColorSamplingProfileCoordinateSystem,\n type PeriodicMosaicColorSamplingLayout,\n type ResolveColorSamplingSiteInput,\n type ResolvedColorSamplingSite,\n type SensorColorSamplingLayout,\n type SensorColorSamplingProfile\n} from \"./sensor/color-sampling.js\";\n\nexport {\n parseNativeEffectiveRasterColorSamplingBindingProfile,\n resolveCaptureModeColorSamplingContributors,\n resolveNativeEffectiveRasterColorSamplingBinding,\n type CaptureModeFullFrameSampleIndex,\n type ColorSamplingChannelComposition,\n type ColorSamplingChannelSiteCount,\n type ColorSamplingSiteGridDimensions,\n type ColorSamplingSiteRect,\n type GroupedCaptureModeSamplingAnchorDeclaration,\n type NativeEffectiveRasterColorSamplingBindingProfile,\n type NativeEffectiveSampleRect,\n type ResolveCaptureModeColorSamplingContributorsInput,\n type ResolvedCaptureModeColorSamplingContributors,\n type ResolvedNativeEffectiveRasterColorSamplingBinding\n} from \"./sensor/capture-color-sampling-binding.js\";\n\nexport {\n parseSensorOpticalStackProfile,\n resolveAntiAliasingSpatialKernel,\n type AntiAliasingPointSplitComponent,\n type ResolvedAntiAliasingSpatialKernel,\n type SensorEffectiveAntiAliasingSpatialResponse,\n type SensorMicrolensDeclaration,\n type SensorOpticalStackComponent,\n type SensorOpticalStackComponentRole,\n type SensorOpticalStackProfile\n} from \"./sensor/optical-stack.js\";\n\nexport {\n parseSensorSamplingApertureProfile,\n resolveSensorSamplingAperture,\n type NativeSensorPhysicalBoundsMm,\n type NativeSensorPhysicalPointMm,\n type ResolveSensorSamplingApertureInput,\n type ResolvedSensorSamplingAperture,\n type SensorGeometricSensitiveAperture,\n type SensorSamplingApertureProfile,\n type SensorSiteCenterLatticeRegistration\n} from \"./sensor/sampling-aperture.js\";\n\nexport {\n calculateSensorSpatialSamplingQuadrature,\n type CalculateSensorSpatialSamplingQuadratureInput,\n type SensorSpatialSamplingQuadrature,\n type SensorSpatialSamplingQuadratureNode\n} from \"./sensor/spatial-sampling-quadrature.js\";\n\nexport {\n reduceSensorSpatialSamplingQuadrature,\n type ReduceSensorSpatialSamplingQuadratureInput,\n type SensorSpatialQuadratureNodeIdentity,\n type SensorSpatialQuadratureNodeValue,\n type SensorSpatialSampleReduction,\n type SensorSpatialSampleReductionValue,\n type SensorSpatialSampleValueDomain\n} from \"./sensor/spatial-sample-reduction.js\";\n\nexport {\n parseSensorSpectralResponseProfile,\n SENSOR_SPECTRAL_RESPONSE_CHANNEL_BINDING_FORMAT,\n resolveSensorSpectralResponseAtWavelength,\n type EffectiveSensorResponseScope,\n type ResolveSensorSpectralResponseAtWavelengthInput,\n type ResolvedSensorSpectralResponse,\n type ResolvedSensorSpectralResponseValue,\n type SensorSpectralChannelResponse,\n type SensorSpectralResponseChannelBinding,\n type SensorSpectralReferenceConditions,\n type SensorSpectralResponseProfile,\n type SensorSpectralResponseScientificStatus,\n type SensorSpectralResponseUncertainty,\n type SpectralFractionCurve,\n type SpectralFractionSample,\n type SpectralResponsivityCurve,\n type SpectralResponsivitySample\n} from \"./sensor/spectral-response.js\";\n\nexport {\n calculateSensorSpectralQuadrature,\n type CalculateSensorSpectralQuadratureInput,\n type SensorSpectralQuadrature,\n type SensorSpectralQuadratureNode,\n type SensorSpectralWavelengthRangeNanometers\n} from \"./sensor/spectral-quadrature.js\";\n\nexport {\n createSensorSpectralCoverageParticipant,\n type CreateSensorSpectralCoverageParticipantInput\n} from \"./sensor/spectral-coverage.js\";\n\nexport {\n reduceSensorSpatioSpectralIrradiance,\n type ReduceSensorSpatioSpectralIrradianceInput,\n type SensorSpatioSpectralIrradianceReduction,\n type SensorSpatioSpectralIrradianceSample,\n type SensorSpatioSpectralNodeIdentity,\n type SensorSpatioSpectralWavelengthReduction\n} from \"./sensor/spatio-spectral-reduction.js\";\n\nexport {\n assessSensorResponseApplicationCompatibility,\n parseSensorResponseApplicationProfile,\n type AssessSensorResponseApplicationCompatibilityInput,\n type SensorResponseApplicationCompatibilityAssessment,\n type SensorResponseApplicationCompatibilityBlocker,\n type SensorResponseApplicationProfile,\n type SensorResponseIncidentAreaBasis,\n type SensorResponseReferenceConditionPolicy,\n type SensorResponseSignalPath,\n type SensorResponseSourcePlane,\n type SensorResponseSpatialModel,\n type SourcedSensorResponseSourcePlane\n} from \"./sensor/response-application-compatibility.js\";\n\nexport {\n assessSensorResponseOperatingRange,\n parseSensorResponseOperatingRangeProfile,\n type AssessSensorResponseOperatingRangeInput,\n type SensorResponseLinearityCriterion,\n type SensorResponseOperatingInputRange,\n type SensorResponseOperatingRangeAssessment,\n type SensorResponseOperatingRangeBlocker,\n type SensorResponseOperatingRangeProfile,\n type SensorResponseOperatingSpatialLinearityModel,\n type SensorResponseOperatingSpectralInputModel,\n type SensorResponseOperatingWavelengthApplicability\n} from \"./sensor/response-operating-range.js\";\n\nexport {\n calculatePhotonEnergyFromWavelength,\n parseSourcedAirPhaseRefractiveIndex,\n type AirRefractiveIndexConditionPolicy,\n type AirRefractiveIndexReferenceConditions,\n type CalculatePhotonEnergyFromWavelengthInput,\n type PhotonEnergyFromWavelength,\n type SourcedAirPhaseRefractiveIndex\n} from \"./sensor/photon-energy.js\";\n\nexport {\n calculateSensorEqeElectronRate,\n type CalculateSensorEqeElectronRateInput,\n type SensorEqeAirPhotonEnergyContext,\n type SensorEqeAirRefractiveIndexSample,\n type SensorEqeElectronRate,\n type SensorEqeWavelengthRateContribution\n} from \"./sensor/eqe-electron-rate.js\";\n\nexport {\n calculateSensorResponsivityPhotocurrent,\n parseSensorResponsivityElectricalApplicabilityProfile,\n type CalculateSensorResponsivityPhotocurrentInput,\n type SensorResponsivityBiasCondition,\n type SensorResponsivityElectricalApplicabilityProfile,\n type SensorResponsivityElectricalConditionPolicy,\n type SensorResponsivityElectricalConditions,\n type SensorResponsivityPhotocurrent,\n type SensorResponsivityReadoutLoadCondition,\n type SensorResponsivityWavelengthCurrentContribution\n} from \"./sensor/responsivity-photocurrent.js\";\n\nexport {\n bindSensorRateToLocalExposure,\n type BindSensorRateToLocalExposureInput,\n type SensorInstantaneousRateResult,\n type SensorRateLocalExposureBinding\n} from \"./sensor/local-exposure-binding.js\";\n\nexport {\n integrateStationarySensorRateOverLocalExposure,\n parseSensorRateTemporalStationarityProfile,\n type IntegrateStationarySensorRateInput,\n type SensorEqeExposureIntegration,\n type SensorRateStationarityStatus,\n type SensorRateTemporalStationarityProfile,\n type SensorResponsivityExposureIntegration,\n type SensorStationaryRateExposureIntegration\n} from \"./sensor/constant-rate-temporal-integration.js\";\n\nexport {\n calculateSensorDarkCurrentCharge,\n parseSensorDarkCurrentProfile,\n type CalculateSensorDarkCurrentChargeInput,\n type SensorDarkCurrentCharge,\n type SensorDarkCurrentProfile,\n type SensorDarkCurrentSiteApplicability,\n type SensorDarkCurrentTemperatureModel\n} from \"./sensor/dark-current.js\";\n\nexport {\n composeSensorAccumulatedCharge,\n parseSensorAccumulatedChargeCompletenessProfile,\n parseSensorAdditionalStoredChargeComponent,\n type ComposeSensorAccumulatedChargeInput,\n type ComposeSensorPhotoAccumulatedChargeInput,\n type SensorAccumulatedChargeCompletenessProfile,\n type SensorAccumulatedChargeComposition,\n type SensorPhotoAccumulatedChargeComposition,\n type SensorAdditionalStoredChargeComponent,\n type SensorAdditionalStoredChargeKind\n} from \"./sensor/accumulated-charge.js\";\n\nexport {\n assessSensorPhysicalChargeCapacity,\n parseSensorPhysicalChargeCapacityProfile,\n type AssessSensorPhysicalChargeCapacityInput,\n type SensorPhysicalChargeCapacityAssessment,\n type SensorPhysicalChargeCapacityProfile,\n type SensorPhysicalChargeCapacitySiteApplicability,\n type SensorPhysicalChargeCapacityTemperatureApplicability\n} from \"./sensor/physical-charge-capacity.js\";\n\nexport {\n GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION,\n GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION,\n parseGenericIsoSignalChainPresetCatalog,\n parseGenericIsoSignalChainProfile,\n resolveGenericIsoSignalChain,\n resolveGenericIsoSignalChainPreset,\n type GenericIsoCaptureModeSignalChainBinding,\n type GenericIsoExpandedRegimeBinding,\n type GenericIsoSignalChainPreset,\n type GenericIsoSignalChainPresetCatalog,\n type GenericIsoSignalChainProfile,\n type GenericIsoStandardRegimeBand,\n type ResolveGenericIsoSignalChainInput,\n type ResolvedGenericIsoSignalChain\n} from \"./sensor/iso-signal-chain.js\";\n\nexport {\n SENSOR_CHARGE_SAMPLING_PROFILE_SCHEMA_VERSION,\n SENSOR_READOUT_CONVERSION_PROFILE_SCHEMA_VERSION,\n calculateExpectedSensorReadout,\n parseSensorChargeSamplingProfile,\n parseSensorReadoutConversionProfile,\n resolveSensorReadoutRegime,\n simulateSensorChargeRealization,\n simulateSensorRawCode,\n type CalculateExpectedSensorReadoutInput,\n type ResolveSensorReadoutRegimeInput,\n type ResolvedSensorReadoutRegime,\n type SensorAdditionalChargeSamplingModel,\n type SensorAdditionalChargeSamplingPolicy,\n type SensorChargeRealization,\n type SensorChargeSamplingProfile,\n type SensorElectronicReadNoiseComponent,\n type SensorExpectedReadoutSignal,\n type SensorRawCodeSample,\n type SensorReadoutConversionProfile,\n type SensorReadoutConversionRegime,\n type SensorAdcIntegralNonLinearity,\n type SensorReadoutExposureIndexGain,\n type SimulateSensorChargeRealizationInput,\n type SimulateSensorRawCodeInput\n} from \"./sensor/raw-readout.js\";\n\nexport {\n createIsoGainReadoutRegimes,\n type CreateIsoGainReadoutRegimesInput,\n type IsoGainConversionGainMode,\n type IsoGainReadoutRegimes\n} from \"./sensor/iso-gain.js\";\n\nexport {\n SENSOR_FIXED_PATTERN_NOISE_MODEL,\n SENSOR_FIXED_PATTERN_NOISE_PROFILE_SCHEMA_VERSION,\n calculateSensorFixedPatternSite,\n parseSensorFixedPatternNoiseProfile,\n type SensorFixedPatternNoiseProfile,\n type SensorFixedPatternSiteValues\n} from \"./sensor/fixed-pattern-noise.js\";\n\nexport {\n SENSOR_RAW_CAPTURE_SAMPLE_VERSION,\n SENSOR_RAW_RECONSTRUCTION_PROFILE_SCHEMA_VERSION,\n createSensorRawCaptureSample,\n parseSensorRawReconstructionProfile,\n resolveSensorRawReconstruction,\n type CreateSensorRawCaptureSampleInput,\n type ResolveSensorRawReconstructionInput,\n type SensorRawCaptureSample,\n type SensorRawReconstructedPixel,\n type SensorRawReconstructionChannelKernel,\n type SensorRawReconstructionKernelContribution,\n type SensorRawReconstructionProfile\n} from \"./sensor/raw-reconstruction.js\";\n\nexport {\n assessSensorCameraSaturationCapacity,\n parseSensorCameraSaturationCapacityProfile,\n type AssessSensorCameraSaturationCapacityInput,\n type SensorCameraSaturationCapacityAssessment,\n type SensorCameraSaturationCapacityProfile,\n type SensorCameraSaturationSiteApplicability,\n type SensorCameraSaturationTemperatureApplicability\n} from \"./sensor/camera-saturation-capacity.js\";\n\nexport {\n CAPTURE_MODE_TIMING_PROFILE_SCHEMA_VERSION,\n parseCaptureModeTimingProfile,\n resolveCaptureModeTiming,\n type CaptureModeTimingProfile,\n type ResolveCaptureModeTimingInput,\n type ResolvedCaptureModeTiming\n} from \"./sensor/capture-mode-timing.js\";\n\nexport {\n parseCaptureModeProfile,\n resolveCaptureMode,\n type CaptureModeAcquisition,\n type CaptureModeDefinition,\n type CaptureModeDependency,\n type CaptureModePerFrameSampling,\n type CaptureModeProfile,\n type CaptureModeReconstructionStage,\n type CaptureModeSampleCombinationDomain,\n type CaptureModeSensorOffsetNativeSamples,\n type DeclaredEffectiveCaptureSampling,\n type FixedMultiFrameCaptureAcquisition,\n type GroupedNativeCaptureSampling,\n type NativeEffectiveCaptureSampling,\n type ResolveCaptureModeInput,\n type ResolvedCaptureMode,\n type SingleFrameCaptureAcquisition,\n type SourcedCaptureModeFact,\n type VariableMultiFrameCaptureAcquisition\n} from \"./sensor/capture-mode.js\";\n\nexport {\n calculateSensorReadoutTiming,\n type CalculateSensorReadoutTimingInput,\n type CaptureShutterMechanism,\n type GlobalSensorReadoutTimingDeclaration,\n type NativeSensorReadoutScanDirection,\n type RollingSensorReadoutTimingDeclaration,\n type SensorReadoutMode,\n type SensorReadoutTiming,\n type SensorReadoutTimingDeclaration,\n type SensorReadoutTimingSample,\n type SourcedSensorReadoutFact,\n type SourcedSensorTimingSeconds\n} from \"./sensor/readout-timing.js\";\n\nexport {\n calculateCaptureExposureWindows,\n type CalculateCaptureExposureWindowsInput,\n type CaptureExposureBoundaryActuator,\n type CaptureExposureWindowSample,\n type CaptureExposureWindows,\n type ExposureBoundarySchedule,\n type ResolvedCaptureExposureBoundary,\n type SimultaneousExposureBoundarySchedule,\n type SourcedCaptureBoundaryDirection,\n type SourcedCaptureTimingSeconds,\n type UniformLinearExposureBoundarySchedule\n} from \"./sensor/exposure-window.js\";\n\nexport {\n assessReadoutExposureTimingLinkage,\n resolveElectronicRollingShutterExposureSchedule,\n createRollingShutterCaptureExposureSchedule,\n ELECTRONIC_ROLLING_SHUTTER_MODEL,\n type ResolveElectronicRollingShutterExposureScheduleInput,\n type ElectronicRollingShutterExposureSchedule,\n type AssessReadoutExposureTimingLinkageInput,\n type ReadoutExposureBoundaryId,\n type ReadoutExposureBoundarySpatialLink,\n type ReadoutExposureBoundarySpatialLinkAssessment,\n type ReadoutExposureSpatialPhaseOrientation,\n type ReadoutExposureTimingLinkageAssessment,\n type ReadoutExposureTimingLinkageDeclaration\n} from \"./sensor/readout-exposure-linkage.js\";\n\nexport {\n calculateCenteredCrop,\n type CalculateCenteredCropInput,\n type CenteredCrop\n} from \"./output/crop.js\";\n\nexport {\n calculateSubjectFramingCrop,\n type CalculateSubjectFramingCropInput,\n type SubjectFramingCrop\n} from \"./output/subject-framing-crop.js\";\n\nexport {\n calculateActiveCaptureFieldOfView,\n calculateOutputFieldOfView,\n mapImagePlanePointToOrientedPhysicalUv,\n mapOrientedPhysicalUvToImagePlanePoint,\n resolveCaptureGeometry,\n transformNativeRasterPointToOriented,\n transformNativeRasterRectToOriented,\n transformNativeRasterVectorToOriented,\n transformOrientedRasterPointToNative,\n transformOrientedRasterRectToNative,\n transformOrientedRasterVectorToNative,\n type ActiveCaptureFieldOfView,\n type CalculateActiveCaptureFieldOfViewInput,\n type CalculateOutputFieldOfViewInput,\n type CaptureOrientation,\n type ImagePlaneMetricPointMm,\n type MapImagePlanePointToOrientedPhysicalUvInput,\n type MapOrientedPhysicalUvToImagePlaneInput,\n type NormalizedRasterUv,\n type OutputFieldOfView,\n type PhysicalBoundsFromOpticalAxisMm,\n type RasterPoint,\n type RasterRect,\n type RasterVector,\n type ResolveCaptureGeometryInput,\n type ResolvedCaptureGeometry,\n type TransformRasterPointInput,\n type TransformRasterRectInput,\n type TransformRasterVectorInput\n} from \"./output/capture-geometry.js\";\n\nexport {\n calculateIdealApertureGeometry,\n type ApertureVertex,\n type CalculateIdealApertureInput,\n type IdealApertureGeometry\n} from \"./optics/aperture.js\";\n\nexport {\n calculateAiryDisk,\n type AiryDisk,\n type CalculateAiryDiskInput\n} from \"./optics/diffraction.js\";\n\nexport {\n calculateIdealPolygonDiffractionPsf,\n calculatePolygonPupilFraunhoferPsf,\n type CalculateIdealPolygonDiffractionInput,\n type CalculatePolygonPupilFraunhoferPsfInput,\n type IdealPolygonDiffraction,\n type PolygonPupilFraunhoferPsf\n} from \"./optics/polygon-diffraction.js\";\n\nexport {\n ZERNIKE_MAXIMUM_NOLL_INDEX,\n ZERNIKE_PUPIL_MAXIMUM_SAMPLES_ACROSS,\n calculateDefocusWavefront,\n createWavefrontPupilGrid,\n estimateMarechalStrehlRatio,\n evaluateZernikePolynomial,\n resolveZernikeNollOrder,\n type CalculateDefocusWavefrontInput,\n type CreateWavefrontPupilGridInput,\n type DefocusWavefront,\n type EstimateMarechalStrehlRatioInput,\n type SeidelFieldPosition,\n type SeidelWavefrontCoefficients,\n type WavefrontPupilGrid,\n type ZernikeCoefficient,\n type ZernikeOrder\n} from \"./optics/zernike-wavefront.js\";\n\nexport {\n FRAUNHOFER_C_LINE_NM,\n FRAUNHOFER_D_LINE_NM,\n FRAUNHOFER_F_LINE_NM,\n calculateCauchyRefractiveIndex,\n calculateLongitudinalChromaticFocus,\n type CalculateLongitudinalChromaticFocusInput,\n type LongitudinalChromaticDispersion,\n type LongitudinalChromaticFocus\n} from \"./optics/longitudinal-chromatic-aberration.js\";\n\nexport {\n calculateMechanicalVignetting,\n calculateNaturalVignetting,\n type CalculateMechanicalVignettingInput,\n type CalculateNaturalVignettingInput,\n type MechanicalVignetting,\n type MechanicalVignettingAperture,\n type NaturalVignetting,\n type NaturalVignettingModel\n} from \"./optics/pupil-vignetting.js\";\n\nexport {\n estimateEquivalentViewingCircleOfConfusion,\n type EquivalentViewingCircleOfConfusion,\n type EstimateEquivalentViewingCircleOfConfusionInput\n} from \"./optics/circle-of-confusion.js\";\n\nexport {\n calculateFocusPlaneImageDistance,\n parseFocusPlane,\n type CalculateFocusPlaneImageDistanceInput,\n type FocusPlane\n} from \"./optics/focus-state.js\";\n\nexport {\n calculateThinLensImageDistance,\n type CalculateThinLensImageDistanceInput,\n type ThinLensImageDistance\n} from \"./optics/thin-lens.js\";\n\nexport {\n calculateDefocusCircle,\n calculateDepthOfField,\n type CalculateDefocusCircleInput,\n type CalculateDepthOfFieldInput,\n type DefocusCircle,\n type DepthOfField\n} from \"./optics/depth-of-field.js\";\n\nexport {\n calculateFocusBreathingFieldOfView,\n calculateFocusBreathingProjection,\n calculateGeometricFocusBreathing,\n type CalculateFocusBreathingFieldOfViewInput,\n type CalculateFocusBreathingProjectionInput,\n type CalculateGeometricFocusBreathingInput,\n type FocusBreathingFieldOfView,\n type FocusBreathingProjection,\n type GeometricFocusBreathing,\n type GeometricFocusingMethod\n} from \"./optics/focus-breathing.js\";\n\nexport {\n calculateAtmosphericHaze,\n calculateExtinctionFromVisibility,\n type AtmosphericExtinctionModel,\n type AtmosphericHaze,\n type CalculateAtmosphericHazeInput,\n type CalculateExtinctionFromVisibilityInput\n} from \"./optics/atmospheric-haze.js\";\n\nexport {\n calculateInverseRadialDistortionMapping,\n calculateInverseRadialDistortionMappings,\n calculateRadialDistortionMapping,\n type CalculateInverseRadialDistortionMappingInput,\n type CalculateInverseRadialDistortionMappingsInput,\n type CalculateRadialDistortionMappingInput,\n type InverseRadialDistortionMapping,\n type InverseRadialDistortionMappings,\n type LensFieldPointMm,\n type RadialDistortionCoefficients,\n type RadialDistortionMapping,\n type RadialDistortionProfile\n} from \"./optics/radial-distortion.js\";\n\nexport {\n calculateBrownConradyDistortionMapping,\n calculateInverseBrownConradyDistortionMapping,\n type BrownConradyDistortionCoefficients,\n type BrownConradyDistortionMapping,\n type BrownConradyDistortionProfile,\n type CalculateBrownConradyDistortionMappingInput,\n type CalculateInverseBrownConradyDistortionMappingInput,\n type InverseBrownConradyDistortionMapping\n} from \"./optics/brown-conrady-distortion.js\";\n\nexport {\n calculateInverseLateralChromaticAberrationMapping,\n calculateInverseLateralChromaticAberrationMappings,\n calculateLateralChromaticAberrationMapping,\n type CalculateInverseLateralChromaticAberrationMappingInput,\n type CalculateInverseLateralChromaticAberrationMappingsInput,\n type CalculateLateralChromaticAberrationMappingInput,\n type ChannelSeparationVectorMm,\n type InverseLateralChromaticAberrationChannelMapping,\n type InverseLateralChromaticAberrationMapping,\n type InverseLateralChromaticAberrationMappings,\n type LateralChromaticAberrationChannel,\n type LateralChromaticAberrationChannelMapping,\n type LateralChromaticAberrationMapping,\n type LateralChromaticAberrationProfile,\n type LateralChromaticAberrationSeparation\n} from \"./optics/lateral-chromatic-aberration.js\";\n\nexport {\n FRONT_OF_LENS_FILTER_PROFILE_SCHEMA_VERSION,\n FRONT_OF_LENS_POLARIZER_PROFILE_SCHEMA_VERSION,\n composeFrontOfLensFilterTransmission,\n parseFrontOfLensFilterProfile,\n resolveFrontOfLensFilterTransmission,\n type ComposeFrontOfLensFilterTransmissionInput,\n type ComposedFrontOfLensFilterTransmission,\n type FrontOfLensFilterProfile,\n type FrontOfLensFilterProfileSchemaVersion,\n type FrontOfLensFilterScientificStatus,\n type FrontOfLensFilterSpectralSample,\n type FrontOfLensFilterTransmissionModel,\n type FrontOfLensFilterUncertainty,\n type LinearPolarizationState,\n type ResolveFrontOfLensFilterTransmissionInput,\n type ResolvedFrontOfLensFilterTransmission\n} from \"./optics/front-of-lens-filter.js\";\n\nexport {\n calculateIlluminationVignetting,\n type CalculateIlluminationVignettingInput,\n type IlluminationVignetting,\n type IlluminationVignettingCoefficients,\n type IlluminationVignettingProfile\n} from \"./optics/illumination-vignetting.js\";\n\nexport {\n SCENE_TO_SENSOR_IRRADIANCE_PROFILE_SCHEMA_VERSION,\n calculateSceneRadianceToSensorIrradiance,\n parseSceneToSensorIrradianceProfile,\n type CalculateSceneRadianceToSensorIrradianceInput,\n type NumericRange,\n type OpticalBridgeFieldThroughput,\n type OpticalBridgeFocusApplicability,\n type OpticalBridgeFocusContext,\n type OpticalBridgeScientificStatus,\n type OpticalBridgeUncertainty,\n type OpticalTransmissionModel,\n type SceneToSensorIrradianceProfile,\n type SceneToSensorIrradianceResult,\n type SpectralTransmissionSample\n} from \"./optics/scene-to-sensor-irradiance.js\";\n\nexport {\n LENS_SAMPLED_PSF_PROFILE_SCHEMA_VERSION,\n LENS_MTF_DIAGNOSTIC_PROFILE_SCHEMA_VERSION,\n assessMtfOnlyPsfRenderability,\n parseLensMtfDiagnosticProfile,\n parseLensSampledPsfProfile,\n resolveLensSampledPsf,\n type LensMtfDiagnosticProfile,\n type LensMtfDiagnosticSample,\n type LensPsfGridAxes,\n type LensPsfKernel,\n type LensPsfScientificStatus,\n type LensPsfUncertainty,\n type LensSampledPsfGridCoordinate,\n type LensSampledPsfGridNode,\n type LensSampledPsfInterpolation,\n type LensSampledPsfProfile,\n type MtfOnlyPsfRenderabilityAssessment,\n type ResolveLensSampledPsfInput,\n type ResolvedLensSampledPsf\n} from \"./optics/lens-psf-profile.js\";\n\nexport {\n LENS_COMPLEX_PUPIL_PROFILE_SCHEMA_VERSION,\n calculateLensComplexPupilPsf,\n parseLensComplexPupilProfile,\n type CalculateLensComplexPupilPsfInput,\n type LensComplexPupilGrid,\n type LensComplexPupilProfile,\n type LensComplexPupilPsf,\n type LensComplexPupilPsfSampling\n} from \"./optics/complex-pupil-psf.js\";\n\nexport {\n PSF_FOUNDATION_VERSION,\n calculatePsfFoundationComponents,\n getPsfFoundationContract,\n type CalculatePsfFoundationComponentsInput,\n type PsfContributionContract,\n type PsfContributionId,\n type PsfContributionStatus,\n type PsfFoundationComponents,\n type PsfFoundationContract\n} from \"./optics/psf-foundation.js\";\n\nexport type {\n CameraConfiguration,\n CameraSupport,\n ExposureConfiguration,\n FocusConfiguration,\n LensConfiguration,\n SensorConfiguration,\n StabilizationConfiguration\n} from \"./schema/camera.js\";\n\nexport type {\n SceneCapability,\n SceneDefinition,\n SceneMotion,\n SceneObject,\n SceneRadiometry,\n Vector3\n} from \"./schema/scene.js\";\n\nexport {\n SCENE_ILLUMINATION_PROFILE_SCHEMA_VERSION,\n parseSceneIlluminationProfile,\n type SceneIlluminationMagnitude,\n type SceneIlluminationProfile,\n type SceneIlluminationRelativeSpectrumSample,\n type SceneIlluminationScientificStatus,\n type SceneIlluminationSource,\n type SceneIlluminationSourceFamily,\n type SceneIlluminationSourceGeometry,\n type SceneIlluminationSpectrum,\n type SceneIlluminationUncertainty\n} from \"./schema/illumination.js\";\n\nexport {\n createSceneIlluminationSpectralCoverageParticipant,\n resolveSceneIlluminationDiscreteLineMeasure,\n type CreateSceneIlluminationSpectralCoverageParticipantInput,\n type SceneIlluminationDiscreteLineMeasure\n} from \"./schema/illumination-spectral.js\";\n\nexport {\n SCENE_ILLUMINATION_TEMPORAL_PROFILE_SCHEMA_VERSION,\n evaluateSceneIlluminationTemporalMultiplier,\n integrateSceneIlluminationTemporalMultiplierOverExposureWindow,\n parseSceneIlluminationTemporalProfile,\n type EvaluateSceneIlluminationTemporalMultiplierInput,\n type IntegrateSceneIlluminationTemporalMultiplierInput,\n type SceneIlluminationTemporalExposureIntegration,\n type SceneIlluminationTemporalIntegrationNode,\n type SceneIlluminationTemporalMultiplierEvaluation,\n type SceneIlluminationTemporalProfile,\n type SceneIlluminationTemporalRegistrationUncertainty,\n type SceneIlluminationTemporalScientificStatus,\n type SceneIlluminationTemporalSourceBinding,\n type SceneIlluminationTemporalWaveform,\n type SceneIlluminationTemporalWaveformSample\n} from \"./schema/illumination-temporal.js\";\n\nexport {\n SCENE_RADIANCE_TEMPORAL_SAMPLING_PLAN_VERSION,\n createSceneRadianceTemporalSamplingPlan,\n reduceSceneRadianceTemporalSamples,\n type CreateSceneRadianceTemporalSamplingPlanInput,\n type ReducedSceneRadianceTemporalExposure,\n type ReduceSceneRadianceTemporalSamplesInput,\n type SceneRadianceTemporalEvaluatedSample,\n type SceneRadianceTemporalQuery,\n type SceneRadianceTemporalSamplingNode,\n type SceneRadianceTemporalSamplingPlan\n} from \"./schema/scene-radiance-temporal.js\";\n\nexport {\n SCENE_MATERIAL_RESPONSE_PROFILE_SCHEMA_VERSION,\n SCENE_RADIANCE_EVALUATION_SCHEMA_VERSION,\n SCENE_RADIANCE_PROVIDER_PROFILE_SCHEMA_VERSION,\n assessSceneMaterialResponseFidelity,\n parseSceneMaterialResponseProfile,\n parseSceneRadianceEvaluationRequest,\n parseSceneRadianceEvaluationResult,\n parseSceneRadianceProviderProfile,\n validateSceneRadianceEvaluationBindings,\n type SceneMaterialResponseDefinition,\n type SceneMaterialResponseFidelity,\n type SceneMaterialResponseProfile,\n type SceneMaterialResponseRepresentation,\n type SceneRadianceDataArtifactReference,\n type SceneRadianceEvaluationBindingAssessment,\n type SceneRadianceEvaluationRequest,\n type SceneRadianceEvaluationResult,\n type SceneRadianceEvaluationTarget,\n type SceneRadianceProviderProfile,\n type SceneRadianceProviderSpectralFidelity,\n type SceneRadianceProviderTransportFidelity,\n type SceneRadianceProviderVisibilityFidelity,\n type SceneRadianceScientificStatus,\n type SceneRadianceUncertainty,\n type ValidateSceneRadianceEvaluationBindingsInput\n} from \"./schema/scene-radiance.js\";\n\nexport {\n calculateCaptureExtendedObjectTemporalProjection,\n calculateExtendedObjectProjectionTrajectory,\n type CalculateCaptureExtendedObjectTemporalProjectionInput,\n type CalculateExtendedObjectProjectionTrajectoryInput,\n type CaptureExtendedObjectMetricPoint,\n type CaptureExtendedObjectPointTrajectory,\n type CaptureExtendedObjectTemporalNode,\n type CaptureExtendedObjectTemporalProjection,\n type ExtendedObjectFrontoparallelPlaneDeclaration,\n type ExtendedObjectMetricPoint,\n type ExtendedObjectPlanarMagnificationDiagnostic,\n type ExtendedObjectPointProjectionTrajectory,\n type ExtendedObjectProjectionNode,\n type ExtendedObjectProjectionTrajectory\n} from \"./motion/extended-object-projection.js\";\n\nexport {\n calculateProjectedMotionBlur,\n type CalculateProjectedMotionBlurInput,\n type ProjectedMotionBlur\n} from \"./motion/projected-motion.js\";\n\nexport {\n calculateCameraRotationImageMapping,\n calculateInverseCameraRotationImageMapping,\n type AxisSamplingPitchMicrometers,\n type CalculateCameraRotationImageMappingInput,\n type CalculateInverseCameraRotationImageMappingInput,\n type CameraAngularVelocityRadPerSec,\n type CameraRotationImageMapping,\n type ImagePlanePointMm,\n type InverseCameraRotationImageMapping\n} from \"./motion/camera-rotation.js\";\n\nexport {\n calculateCaptureRotationTrajectories,\n type CalculateCaptureRotationTrajectoriesInput,\n type CaptureRotationTrajectories,\n type CaptureRotationTrajectoryEndpoint,\n type CaptureRotationTrajectorySample\n} from \"./motion/capture-rotation-trajectory.js\";\n\nexport {\n calculateCaptureRotationInverseMappings,\n type CalculateCaptureRotationInverseMappingsInput,\n type CaptureRotationInverseMappings,\n type CaptureRotationInverseMappingSample\n} from \"./motion/capture-rotation-inverse-mapping.js\";\n\nexport {\n calculateCaptureTranslationParallaxTemporalQuadrature,\n type CalculateCaptureTranslationParallaxTemporalQuadratureInput,\n type CaptureTranslationParallaxSceneSample,\n type CaptureTranslationParallaxTemporalNode,\n type CaptureTranslationParallaxTemporalQuadrature,\n type CaptureTranslationParallaxTemporalSample\n} from \"./motion/capture-translation-parallax-temporal-quadrature.js\";\n\nexport {\n calculateCaptureRotationTemporalQuadrature,\n type CalculateCaptureRotationTemporalQuadratureInput,\n type CaptureRotationTemporalQuadrature,\n type CaptureRotationTemporalQuadratureNode,\n type CaptureRotationTemporalQuadraturePoint\n} from \"./motion/capture-rotation-temporal-quadrature.js\";\n\nexport {\n FLASH_SYNC_CAPABILITY_SCHEMA_VERSION,\n MANUAL_FLASH_PROFILE_SCHEMA_VERSION,\n FLASH_SYNC_CAPABILITY_HSS_SCHEMA_VERSION,\n HIGH_SPEED_SYNC_MODEL,\n createHighSpeedSyncIlluminationOverlay,\n createManualFlashIlluminationOverlay,\n parseFlashSyncCapabilityProfile,\n parseManualFlashProfile,\n resolveHighSpeedFlashSync,\n resolveManualFlashSync,\n type FlashOverlaySyncRegistration,\n type ResolveHighSpeedFlashSyncInput,\n type ResolvedHighSpeedFlashSync,\n type CreateManualFlashIlluminationOverlayInput,\n type FlashSyncCapabilityProfile,\n type ManualFlashIlluminationOverlay,\n type ManualFlashProfile,\n type ManualFlashPulseProfile,\n type ManualFlashSyncMode,\n type RequestedFlashSyncMode,\n type ResolveManualFlashSyncInput,\n type ResolvedManualFlashSync\n} from \"./exposure/flash.js\";\n\nexport {\n TTL_FLASH_MODEL,\n createTtlScaledFlashProfile,\n calculateFlashGuideNumber,\n calculateFlashPowerForDistance,\n resolveTtlFlashExposure,\n type FlashGuideNumberInput,\n type FlashPowerForDistance,\n type FlashPowerForDistanceInput,\n type ResolveTtlFlashExposureInput,\n type TtlFlashExposure\n} from \"./exposure/flash-ttl.js\";\n\nexport {\n calculateEquivalentIso,\n calculateExposureValue100,\n calculateRelativeOpticalExposure,\n calculateRelativeRenderedExposure,\n type CalculateEquivalentIsoInput,\n type CalculateExposureValue100Input,\n type CalculateRelativeOpticalExposureInput,\n type CalculateRelativeRenderedExposureInput,\n type RelativeOpticalExposure,\n type RelativeRenderedExposure\n} from \"./exposure/exposure.js\";\n\nexport {\n EXPOSURE_DURATION_CONTROL_VERSION,\n bindResolvedExposureDurationToCaptureExposureInput,\n resolveExposureDurationControl,\n type BindResolvedExposureDurationToCaptureExposureInput,\n type ExposureDurationControl,\n type ExposureDurationControlResolution\n} from \"./exposure/exposure-duration-control.js\";\n\nexport {\n EXPOSURE_METERING_PROFILE_SCHEMA_VERSION,\n calculateHighlightPriorityPlacementSignal,\n meterRelativeExposure,\n parseExposureMeteringProfile,\n type HighlightPriorityMeteringDiagnostics,\n type ExposureMeteringPolicy,\n type ExposureMeteringProfile,\n type ExposureMeteringResult,\n type ExposureMeteringSampleSet,\n type ExposureMeteringZoneSample,\n type MeterRelativeExposureInput\n} from \"./exposure/metering.js\";\n\nexport {\n SCENE_RADIANCE_METERING_DERIVATION_SCHEMA_VERSION,\n createSceneRadianceDerivedExposureMeteringSampleSet,\n parseSceneRadianceMeteringDerivationProfile,\n type CreateSceneRadianceDerivedExposureMeteringSampleSetInput,\n type SceneRadianceDerivedExposureMeteringSampleSet,\n type SceneRadianceMeteringDerivationProfile,\n type SceneRadianceMeteringSourceContext,\n type SceneRadianceMeteringTemporalContext\n} from \"./exposure/metering-scene-radiance.js\";\n\nexport {\n meterSceneRadianceTemporalExposure,\n type MeterSceneRadianceTemporalExposureInput,\n type SceneRadianceTemporalExposureMeteringResult,\n type SceneRadianceTemporalMeteringSample\n} from \"./exposure/metering-temporal.js\";\n\nexport {\n EXPOSURE_METER_TARGET_SCHEMA_VERSION,\n createExposureMeterTargetFromMeteringResult,\n setExposureCompensationOnMeterTarget,\n type CreateExposureMeterTargetInput,\n type ExposureMeterSnapshotIdentity,\n type ExposureMeterTarget,\n type ExposureMeterTargetSourceKind,\n type ExposureMeterTargetSourceResult,\n type SetExposureCompensationOnMeterTargetInput\n} from \"./exposure/metering-target.js\";\n\nexport {\n ISO_CAPABILITY_PROFILE_SCHEMA_VERSION,\n bindIsoCapabilityToExposureCapabilities,\n parseIsoCapabilityProfile,\n resolveIsoCapability,\n type BindIsoCapabilityToExposureCapabilitiesInput,\n type BoundIsoExposureCapabilities,\n type IsoAutoIsoCapability,\n type IsoCapabilityAvailability,\n type IsoCapabilityProfile,\n type IsoCaptureModePolicy,\n type IsoExpandedSetting,\n type IsoExposureIndexRange,\n type IsoStandardSettingGrid,\n type RequestedIsoSetting,\n type ResolveIsoCapabilityInput,\n type ResolvedIsoCapability\n} from \"./equipment/iso-capabilities.js\";\n\nexport {\n GENERIC_EQUIPMENT_EXPOSURE_CAPABILITY_SCHEMA_VERSION,\n parseGenericBodyExposureCapabilityProfile,\n parseGenericLensExposureCapabilityProfile,\n resolveGenericEquipmentExposureCapabilities,\n type FocalLengthFNumberSample,\n type GenericBodyExposureCapabilityProfile,\n type GenericCapabilityAvailability,\n type GenericLensExposureCapabilityProfile,\n type NumericCapabilityRange,\n type NumericSettingGrid,\n type ResolveGenericEquipmentExposureCapabilitiesInput,\n type ResolvedGenericEquipmentExposureCapabilities,\n type ResolvedNumericSettingGrid,\n type WidestAvailableFNumberCapability\n} from \"./equipment/exposure-capabilities.js\";\n\nexport {\n GENERIC_RELEASE_CAPABILITY_SCHEMA_VERSION,\n parseGenericReleaseCapabilityProfile,\n type GenericExposureBracketAxis,\n type GenericReleaseCapabilityProfile,\n type GenericReleaseDriveMode\n} from \"./equipment/release-capabilities.js\";\n\nexport {\n FOCUS_CONTROL_PROFILE_SCHEMA_VERSION,\n FOCUS_CONTROL_STATE_VERSION,\n assessFocusReleaseGate,\n createFocusControlState,\n parseFocusControlProfile,\n resolveFocusTargetObservation,\n setFocusLock,\n setManualFocusState,\n type AssessFocusReleaseGateInput,\n type CreateFocusControlStateInput,\n type FocusAcquisitionState,\n type FocusControlMode,\n type FocusControlProfile,\n type FocusControlState,\n type FocusReleaseGateAssessment,\n type FocusReleasePriority,\n type FocusTargetControlEvent,\n type FocusTargetLossReason,\n type FocusTargetObservation,\n type FocusTargetResolution,\n type ResolveFocusTargetObservationInput,\n type SetFocusLockInput,\n type SetManualFocusStateInput\n} from \"./capture/focus-control.js\";\n\nexport {\n RELEASE_SEQUENCE_VERSION,\n createCancelledReleaseSequence,\n resolveReleaseSequence,\n type CancelledReleaseSequence,\n type CancelReleaseSequenceInput,\n type ReleaseAutomationState,\n type ReleaseBaseCaptureState,\n type ReleaseBracketPolicy,\n type ReleaseDrivePolicy,\n type ReleaseTimingConstraint,\n type ResolveReleaseSequenceInput,\n type ResolvedReleaseFrame,\n type ResolvedReleaseSequence\n} from \"./capture/release-sequence.js\";\n\nexport {\n VIDEO_FRAME_SEED_STREAM_ID,\n VIDEO_FRAME_SEQUENCE_MAXIMUM_FRAMES,\n VIDEO_FRAME_SEQUENCE_VERSION,\n assessShutterAngleRule,\n calculateShutterAngleExposureSeconds,\n calculateShutterAngleFromExposureSeconds,\n resolveVideoFrameSequence,\n type ResolveVideoFrameSequenceInput,\n type ShutterAngleRuleAssessment,\n type VideoFrameSequence\n} from \"./motion/video-sequence.js\";\n\nexport {\n GENERIC_BODY_METERING_CAPABILITY_SCHEMA_VERSION,\n assessExposureMeteringProfileCompatibility,\n parseGenericBodyMeteringCapabilityProfile,\n type AssessExposureMeteringProfileCompatibilityInput,\n type GenericBodyMeteringCapabilityProfile,\n type GenericSupportedMeteringProfile,\n type MeteringCapabilityCompatibilityAssessment,\n type MeteringCapabilityCompatibilityBlocker\n} from \"./equipment/metering-capabilities.js\";\n\nexport {\n EXPOSURE_PROGRAM_LINE_SCHEMA_VERSION,\n parseExposureProgramLineProfile,\n type ExposureProgramLineNode,\n type ExposureProgramLineProfile\n} from \"./exposure/program-line.js\";\n\nexport {\n EXPOSURE_MODE_RESOLVER_VERSION,\n resolveAperturePriorityAutoIsoExposureMode,\n resolveAperturePriorityExposureMode,\n resolveFullAutoExposureMode,\n resolveManualExposureMode,\n resolveProgramAutoExposureMode,\n resolveShutterPriorityExposureMode,\n type AperturePriorityAutoIsoExposureModeResolution,\n type AperturePriorityAutoIsoPolicy,\n type AperturePriorityExposureModeResolution,\n type AutoIsoBaselinePolicy,\n type ExposureResolutionConstraint,\n type ExposureTargetResidual,\n type ExposureTargetResidualState,\n type FullAutoExposureModeResolution,\n type FullAutoExposurePolicy,\n type ManualExposureModeResolution,\n type ManualIsoControl,\n type ProgramAutoExposureModeResolution,\n type ProgramAutoIsoControl,\n type ProgramLineSelectionDiagnostics,\n type RelativeExposureControlAnchor,\n type ResolveAperturePriorityAutoIsoExposureModeInput,\n type ResolveAperturePriorityExposureModeInput,\n type ResolveFullAutoExposureModeInput,\n type ResolveManualExposureModeInput,\n type ResolveProgramAutoExposureModeInput,\n type ResolveShutterPriorityExposureModeInput,\n type ShutterPriorityAutoIsoPolicy,\n type ShutterPriorityExposureModeResolution\n} from \"./exposure/exposure-mode-resolver.js\";\n\nexport {\n STABILIZATION_DISTURBANCE_TRAJECTORY_VERSION,\n STABILIZATION_SYSTEM_PROFILE_SCHEMA_VERSION,\n calculateStabilizedCaptureTemporalSamples,\n calculateStabilizedRotationTrajectory,\n parseStabilizationDisturbanceTrajectory,\n parseStabilizationSystemProfile,\n type CalculateStabilizedCaptureTemporalSamplesInput,\n type CalculateStabilizedRotationTrajectoryInput,\n type PhysicalStabilizationArchitecture,\n type StabilizationAngularStateRad,\n type StabilizationAxisResolution,\n type StabilizationAxisResponseProfile,\n type StabilizationCaptureKind,\n type StabilizationCoordinatedAllocation,\n type StabilizationDisturbanceSample,\n type StabilizationDisturbanceTrajectory,\n type StabilizationPanningPolicy,\n type StabilizationRotationAxis,\n type StabilizationSystemProfile,\n type StabilizedCaptureTemporalNode,\n type StabilizedCaptureTemporalPoint,\n type StabilizedCaptureTemporalSamples,\n type StabilizedRotationSample,\n type StabilizedRotationTrajectory\n} from \"./stabilization/system.js\";\n\nexport {\n estimateCameraShakeBlur,\n type CameraShakeBlurSample,\n type CameraShakeEstimate,\n type EstimateCameraShakeBlurInput\n} from \"./stabilization/camera-shake.js\";\n\nexport {\n calculatePhotoelectrons,\n calculateSignalToNoise,\n type CalculatePhotoelectronsInput,\n type CalculateSignalToNoiseInput,\n type SignalToNoise\n} from \"./sensor/signal-noise.js\";\n\nexport {\n assessRadiometryReadiness,\n parseRadiometryReadinessProfile,\n type CalibrationArtifactReference,\n type ExposureIntegrationRequirement,\n type OpticalTransmissionRequirement,\n type PhotositeCollectionAreaRequirement,\n type PupilVignettingRequirement,\n type RadiometryReadinessAssessment,\n type RadiometryReadinessProfile,\n type RadiometryRequirement,\n type RadiometryRequirementId,\n type RadiometryScientificStatus,\n type RadiometryUncertaintyDeclaration,\n type SceneSpectralRadianceRequirement,\n type SensorResponseRequirement\n} from \"./sensor/radiometry-readiness.js\";\n\nexport {\n POC_SIMULATION_API_VERSION,\n simulatePocCamera,\n type PocSimulationRequest,\n type PocSimulationResponse\n} from \"./simulation/poc-simulation.js\";\n\nexport {\n InvalidConfigurationError,\n parseCameraConfiguration,\n parseSceneDefinition\n} from \"./schema/validation.js\";\n\nexport { calculateSensorEqeLocalExposure, type CalculateSensorEqeLocalExposureInput,\n type SensorEqeLocalExposure } from \"./sensor/eqe-local-exposure.js\";\n\nexport { calculateSceneToSensorIrradianceQuadrature, type CalculateSceneToSensorIrradianceQuadratureInput,\n type SceneSensorQuadratureSample, type SceneToSensorIrradianceQuadrature } from \"./optics/scene-to-sensor-quadrature.js\";\n\nexport { calculateSceneSensorEqeTemporalExposure, type CalculateSceneSensorEqeTemporalExposureInput,\n type SceneSensorEqeTemporalExposure } from \"./sensor/scene-eqe-temporal-exposure.js\";\nexport { calculateSensorPsfIrradianceQuadrature, type CalculateSensorPsfIrradianceQuadratureInput,\n type SensorPsfSourceSample, type SensorPsfIrradianceQuadrature } from \"./optics/sensor-psf-quadrature.js\";\nexport { calculateSensorEnvironmentRadianceQuery, type CalculateSensorEnvironmentRadianceQueryInput,\n type EnvironmentLensFieldMapping, type SensorEnvironmentLensFieldMappingResult,\n type SensorEnvironmentRadianceQuery } from \"./optics/sensor-environment-query.js\";\nexport { calculateSensorEqeTemporalExposure, type CalculateSensorEqeTemporalExposureInput,\n type SensorEqeTemporalExposure } from \"./sensor/eqe-temporal-exposure.js\";\n\nexport { createSensorEqeTemporalPhotoSignal, parseSensorEqeTemporalPhotoSignal,\n type SensorEqeTemporalPhotoSignal, type SensorEqePhotoExposure } from \"./sensor/temporal-photo-signal.js\";\n\nexport type { SensorTemporalDarkCurrentCharge, SensorPhotoDarkCurrentCharge } from \"./sensor/dark-current.js\";\n\nexport { calculateEnvironmentSensorPhotoSignal, type CalculateEnvironmentSensorPhotoSignalInput,\n type EnvironmentSensorPhotoSignal, type EnvironmentRadianceEvaluator, type EnvironmentApertureRadianceEvaluator } from \"./sensor/environment-photo-signal.js\";\nexport { simulateEnvironmentSensorRawFrame, type SimulateEnvironmentSensorRawFrameInput,\n type EnvironmentSensorRawFrame } from \"./capture/environment-raw-producer.js\";\n\nexport { calculateProcessedSensorRaw, parseProcessedSensorRawInput, type ProcessedSensorRawInput,\n type ProcessedSensorRawResult } from \"./capture/photographic-export.js\";\nexport { calculatePrintPlan, calculatePrintSizeLimit, parsePrintPlanInput } from \"./output/print-plan.js\";\nexport type { PrintLength, PrintedImageSize, PrintSamplingCriterion, PrintNativeSource, PrintProviderConstraints, PrintPlanInput, PrintRasterSampling, PrintPlan, PrintSizeLimitInput, PrintSizeLimit } from \"./output/print-plan.js\";\nexport { PRINT_REGION_DETAIL_MODEL_VERSION, MAX_PRINT_DETAIL_REGION_SAMPLES, calculatePrintRegionDetail, parsePrintRegionDetailInput } from \"./output/print-detail.js\";\nexport type { PrintDetailSource, PrintDetailRegion, PrintSinusoidalTarget, PrintRegionDetailInput, PrintSinusoidalMeasurement, PrintRegionDetailAssessment } from \"./output/print-detail.js\";\nexport { PRINT_REGION_STATISTICS_MODEL_VERSION, MAX_PRINT_REGION_STATISTICS_SAMPLES,\n calculatePrintRegionDifference, calculatePrintRegionNoise, parsePrintRegionDifferenceInput, parsePrintRegionNoiseInput } from \"./output/print-region-statistics.js\";\nexport type { PrintRegionRaster, PrintRegionDifferenceInput, PrintRegionNoiseInput, PrintRegionDifferenceMeasurement,\n PrintRegionNoiseMeasurement, PrintRegionStatisticsAssessment } from \"./output/print-region-statistics.js\";\nexport { PRINT_CONTRAST_REFERENCE_MODEL_VERSION, PRINT_CONTRAST_REFERENCE_UPSTREAM_REVISION,\n calculatePrintContrastReference, parsePrintContrastReferenceInput } from \"./output/print-contrast-reference.js\";\nexport type { PrintContrastReferenceInput, PrintContrastReference } from \"./output/print-contrast-reference.js\";\nexport { NATIVE_RAW_SCHEMA_VERSION, NATIVE_RAW_LIMITS, calculateNativeRawPlan, createNativeRawTask } from \"./capture/native-raw.js\";\nexport { PRINT_JPEG_SCHEMA_VERSION, PRINT_JPEG_LIMITS, parsePrintJpegInput, createPrintJpegTask } from \"./output/print-jpeg.js\";\nexport type { PrintJpegSource, PrintJpegInput, PrintJpegTileRequest, PrintJpegTile, PrintJpegProvider, PrintJpegOutput, PrintJpegTask } from \"./output/print-jpeg.js\";\nexport { SRGB_ICC_PROFILE_VERSION, createSrgbIccProfile } from \"./color/srgb-icc.js\";\nexport { createNativeEnvironmentRawTask, createNativeEnvironmentSensorStageTask, calculateNativeRawRowBands, createNativeEnvironmentRawPartitionTask,\n composeNativeEnvironmentRawPartitions } from \"./capture/native-environment-raw.js\";\nexport type { NativeEnvironmentRawInput, NativeEnvironmentRawTile, NativeEnvironmentPhotoTile, NativeEnvironmentRawProvider, NativeEnvironmentRawOutput,\n NativeEnvironmentRawTask, NativeRawRowBand, NativeEnvironmentRawPartition, NativeEnvironmentRawPartitionTask, NativeEnvironmentRadianceQuery } from \"./capture/native-environment-raw.js\";\nexport { NATIVE_ENVIRONMENT_OPTICAL_STAGE_LIMITS } from \"./capture/native-environment-optical-stage.js\";\nexport type { NativeEnvironmentOpticalStage, NativeEnvironmentOpticalStageRetention, NativeEnvironmentSensorStageInput,\n NativeEnvironmentSensorStageProvider } from \"./capture/native-environment-optical-stage.js\";\nexport { createNativeRawDevelopmentTask } from \"./capture/native-raw-development.js\";\nexport type { NativeRawDevelopmentInput, NativeRawDevelopmentOutput, NativeRawDevelopmentProvider, NativeRawDevelopmentTask,\n RawHighlightDiagnostics } from \"./capture/native-raw-development.js\";\nexport type { NativeRawExposureInput, NativeRawExposure, NativeRawInput, NativeRawPlan, NativeRawTileRequest, NativeRawTile,\n NativeRawProvider, NativeRawOutput, NativeRawTaskState, NativeRawTask } from \"./capture/native-raw.js\";\nexport { NATIVE_CAPTURE_SDR_SCHEMA_VERSION, NATIVE_CAPTURE_SDR_LIMITS, calculateNativeCaptureSdrPlan, createNativeCaptureSdrTask } from \"./output/native-capture-sdr.js\";\nexport type { NativeCaptureSdrInput, NativeCaptureSdrTileRequest, NativeCaptureSdrTile, NativeCaptureSdrProvider, NativeCaptureSdrPlan,\n NativeCaptureSdrOutput, NativeCaptureSdrTaskState, NativeCaptureSdrTask, NativeTaskProgress } from \"./output/native-capture-sdr.js\";\n\nexport { IRRADIANCE_CONVOLUTION_SCHEMA_VERSION, IRRADIANCE_CONVOLUTION_LIMITS, calculateIrradianceConvolutionPlan, calculateIrradianceConvolution } from \"./optics/irradiance-convolution.js\";\nexport type { IrradianceConvolutionInput, IrradianceConvolutionPlan } from \"./optics/irradiance-convolution.js\";\nexport { LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION, LENS_PSF_CONVOLUTION_KERNELS_MAXIMUM_WAVELENGTHS, resolveLensPsfConvolutionKernels } from \"./optics/lens-psf-kernels.js\";\nexport type { LensPsfConvolutionKernelsInput, LensPsfConvolutionKernels } from \"./optics/lens-psf-kernels.js\";\nexport { DIFFRACTION_LIMITED_PSF_PROFILE_MODEL, DIFFRACTION_LIMITED_PSF_PROFILE_LIMITS, createDiffractionLimitedPsfProfile } from \"./optics/diffraction-psf-profile.js\";\nexport type { CreateDiffractionLimitedPsfProfileInput, DiffractionLimitedPsfProfile, DiffractionLimitedPsfWavelength } from \"./optics/diffraction-psf-profile.js\";\nexport { PACKED_SENSOR_RAW_SCHEMA_VERSION, PACKED_SENSOR_RAW_LIMITS, calculatePackedSensorRawPlan, simulatePackedSensorRaw } from \"./capture/packed-sensor-raw.js\";\nexport type { PackedSensorRawInput, PackedSensorRawPlan, PackedSensorRawDiagnostics, PackedSensorRawResult, PackedSensorFixedPatternNoise,\n PackedSensorAdditionalChargeComponent } from \"./capture/packed-sensor-raw.js\";\nexport { TEMPORAL_EXPOSURE_SUM_SCHEMA_VERSION, TEMPORAL_EXPOSURE_SUM_LIMITS, calculateTemporalExposureSumPlan, calculateTemporalExposureSum } from \"./motion/temporal-exposure-sum.js\";\nexport type { TemporalExposureSumInput, TemporalExposureSumNode, TemporalExposureSumPlan } from \"./motion/temporal-exposure-sum.js\";\nexport { ImageKernelExecutionError, WEBGPU_F32_UNIT_ROUNDOFF, WEBGPU_F32_TRANSFER_ABSOLUTE_BOUND, composeRelativeErrorBounds } from \"./gpu/image-kernel-execution.js\";\nexport type { ImageKernelBackend, ImageKernelFallbackReason, ImageKernelFailureReason, ImageKernelExecution, ImageKernelCodeErrorBound,\n ImageKernelRelativeErrorBound, ImageKernelSeededRealizationBound } from \"./gpu/image-kernel-execution.js\";\nexport { createImageKernelAccelerator } from \"./gpu/image-kernel-accelerator.js\";\nexport type { ImageKernelAccelerator, ImageKernelAcceleratorOptions, ImageKernelAcceleratorState, ImageKernelRunOptions,\n AcceleratedNativeCaptureSdrOutput, AcceleratedNativeRawDevelopmentOutput, IrradianceConvolutionResult, AcceleratedPackedSensorRawResult,\n TemporalExposureSumResult, ChartRadianceResult } from \"./gpu/image-kernel-accelerator.js\";\nexport { BUILT_IN_BAYER_DEMOSAIC_MODEL_VERSION, createBuiltInBayerDemosaicProfiles, type BuiltInBayerDemosaicKernel, type BuiltInBayerDemosaicProfiles,\n type CreateBuiltInBayerDemosaicProfilesInput, type RawReconstructionBorderHandling } from \"./sensor/raw-reconstruction.js\";\nexport { PROCESSING_MAX_PIXELS, PROCESSING_MAX_FRAMES, PROCESSING_DEFAULT_MAXIMUM_WORKING_BYTES, PROCESSING_MODEL_VERSION,\n type ProcessingProvider, type ProcessingTask, type ProcessingTaskState, type ProcessingRgbImage, type ProcessingLinearColorSpace,\n type ProcessingProvenance } from \"./processing/processing-task.js\";\nexport { createCfaPlaneReconstructionTask, createAhdDemosaicTask, type CfaMosaicPlane, type CfaPlaneReconstructionInput,\n type CfaPlaneReconstructionOutput, type AhdDemosaicInput, type AhdDemosaicOutput } from \"./processing/demosaic.js\";\nexport { createHdrBracketMergeTask, createHdrImageEncodingTask, type HdrBracketFrame, type HdrBracketMergeInput, type HdrBracketMergeOutput,\n type HdrTransfer, type HdrImageEncodingInput, type HdrImageEncodingOutput } from \"./processing/hdr.js\";\nexport { createReinhardGlobalToneMappingTask, createDurandDorseyToneMappingTask, createExposureFusionTask, type ToneMappedImage,\n type ReinhardGlobalToneMappingInput, type ReinhardGlobalToneMappingOutput, type DurandDorseyToneMappingInput, type DurandDorseyToneMappingOutput,\n type ExposureFusionInput, type ExposureFusionOutput } from \"./processing/tone-mapping.js\";\nexport { createFocusStackTask, type FocusStackInput, type FocusStackOutput } from \"./processing/focus-stacking.js\";\nexport { createPanoramaTask, type PanoramaFrame, type PanoramaCanvas, type PanoramaInput, type PanoramaOutput } from \"./processing/panorama.js\";\nexport { SYNTHETIC_FILM_GRAIN_STREAM_ID, createBilateralFilterTask, createNonLocalMeansTask, createUnsharpMaskTask, createSyntheticFilmGrainTask,\n type ProcessedRgbImage, type BilateralFilterInput, type NonLocalMeansInput, type UnsharpMaskInput, type SyntheticFilmGrainInput,\n type SyntheticFilmGrainOutput } from \"./processing/denoise.js\";\n\nexport { calculateSensorApertureRays, type CalculateSensorApertureRaysInput, type IdealCircularPupil, type SensorApertureRay, type SensorApertureRays } from \"./optics/sensor-aperture-rays.js\";\n\nexport { SIMULATE_CAPTURE_FACADE_VERSION, SIMULATE_CAPTURE_DEFAULT_ILLUMINANCE_LUX, SIMULATE_CAPTURE_COST_OPTIONS, simulateCapture,\n type SimulateCaptureOptions, type SimulateCaptureResult, type SimulateCaptureAssumption, type SimulateCaptureProgress,\n type SimulateCaptureExposureMode, type SimulateCaptureOutputFormat, type SimulateCaptureWhiteBalance, type SimulateCaptureColorEncoding,\n type SimulateCaptureDemosaic, type SimulateCaptureBorderHandling, type SimulateCaptureLensDistortion, type SimulateCaptureMotion,\n type SimulateCaptureSensorAntiAliasing, type SimulateCaptureCostOption } from \"./facade/simulate-capture.js\";\nexport { CHART_SCENE_PRESETS, CHART_SCENE_DEFAULTS, CHART_SPECTRAL_RANGE_NANOMETERS, resolveChartScene, calculateStepWedgeReflectances,\n calculatePointGridCenters, type ChartScene, type ChartScenePresetId, type ChartReflectance, type ResolvedChartScene, type UniformChartScene,\n type SlantedEdgeChartScene, type SiemensStarChartScene, type StepWedgeChartScene, type GreyRampChartScene, type CheckerboardChartScene,\n type PointGridChartScene, type PatchChartScene } from \"./facade/chart-scenes.js\";\nexport { PHOTOPIC_MAXIMUM_LUMINOUS_EFFICACY_LM_PER_W, resolveCaptureIlluminant, createPlanarSceneRadianceProvider,\n type CaptureIlluminant, type ResolvedCaptureIlluminant, type CallerReflectanceScene, type CallerRadianceScene, type ScenePlanePoint,\n type PlanarSceneRadianceProvider } from \"./facade/scene-radiance.js\";\nexport { CHART_RADIANCE_BATCH_SCHEMA_VERSION, CHART_RADIANCE_BATCH_LIMITS, calculateChartRadianceBatchPlan, calculateChartRadianceBatch,\n mapEnvironmentDirectionsToChartPoints, type ChartRadianceBatchInput, type ChartRadianceBatchPlan } from \"./facade/chart-radiance-batch.js\";\nexport { EXPORT_JPEG_ENCODER_ID } from \"./capture/export-jpeg.js\";\nexport { DNG_IMPORT_SCHEMA_VERSION, DNG_IMPORT_LIMITS, parseDngRawImage } from \"./capture/dng-import.js\";\nexport { NATIVE_RAW_DNG_SCHEMA_VERSION, serializeNativeRawDng, type SerializeNativeRawDngInput, type NativeRawDng, type NativeRawDngChannelNoise } from \"./capture/native-raw-dng.js\";\nexport type { DngImportInput, ImportedDngRaw, ImportedDngCfa, ImportedDngBlackLevel, ImportedDngRect } from \"./capture/dng-import.js\";\nexport { parseLosslessJpeg, type LosslessJpegImage, type LosslessJpegLimits } from \"./capture/lossless-jpeg.js\";\nexport { PNG_ENCODER_ID, PNG_ENCODER_LIMITS, serializePngImage } from \"./output/png-encoder.js\";\nexport type { PngEncodeInput, PngColourEncoding, PngCicpPrimaries, PngCicpTransfer, PngMasteringDisplay, PngContentLightLevel } from \"./output/png-encoder.js\";\n\ndeclare global {\n /**\n * Minimal global AbortSignal type. It lets the published declarations type-check with\n * `lib: [\"es2022\"]` and no DOM or `@types/node` types. (Task and yield callbacks receive a signal\n * the engine creates.) It merges cleanly with the DOM, WebWorker and Node declarations, which\n * declare the same `aborted` member.\n */\n interface AbortSignal {\n readonly aborted: boolean;\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * The package entry point: one browser-safe ES module that exports every public API.\n *\n * Import only from here. Deep imports into other files, the transport server and renderer\n * backends are not supported package APIs.\n * @see docs/DEVELOPERS.md for equations, coordinate/unit conventions, blockers and support limits.\n */\n\nexport { GENERIC_EQUIPMENT_TIER_PRESET_VERSION, GENERIC_EQUIPMENT_TIERS, resolveGenericEquipmentTierCatalog,\n createGenericEquipmentTierSelection, parseGenericEquipmentTierSelection, resolveGenericEquipmentTierLensProfiles,\n type GenericEquipmentTierProfileReference, type GenericEquipmentTierSelection, type ResolvedGenericTierLensProfiles } from \"./equipment/generic-tier-presets.js\";\nexport type { GenericEquipmentTier, GenericEquipmentTierPreset, GenericVersionedAsset, GenericTierBodyAssets, GenericTierLensAssets } from \"./equipment/generic-tier-assets.js\";\nexport { SENSOR_RAW_PRODUCER_SCHEMA_VERSION, SENSOR_RAW_PRODUCER_NOISE_MODEL, parseSensorRawProducerInput, simulateSensorRawFrame,\n type SensorRawProducerExposureWindowInput, type SensorRawProducerSiteInput, type SensorRawProducerInput, type SensorRawProducerResult } from \"./capture/sensor-raw-producer.js\";\nexport { CAPTURE_CORRECTED_SDR_SCHEMA_VERSION, parseCaptureCorrectedSdrInput, calculateCaptureCorrectedSdr,\n type CaptureCorrectedSdrInput, type CaptureCorrectedSdrResult } from \"./output/capture-corrected-sdr.js\";\nexport { PHOTOGRAPHIC_EXPORT_SCHEMA_VERSION, PHOTOGRAPHIC_EXPORT_PIPELINE_VERSION, PROCESSED_SENSOR_RAW_MODEL_VERSION, parseExportSensorColorProfile,\n parsePhotographicExportInput, createPhotographicExportPair, type ExportSensorColorProfile, type PhotographicExportInput,\n type PhotographicExportOptions, type PhotographicExportPair } from \"./capture/photographic-export.js\";\nexport { calculateEffectiveSaturationCode, type EffectiveSaturationReadout } from \"./capture/raw-white-level.js\";\nexport { RAW_HIGHLIGHT_RECONSTRUCTION_START, SENSOR_COLOR_DEVELOPMENT_MODEL, type RawHighlightMode } from \"./color/sensor-color-development.js\";\nexport { CAPTURE_EXPORT_METADATA_SCHEMA_VERSION, parseCaptureExportMetadataInput, createCaptureExportMetadataPair,\n type CaptureExportWorkflow, type CaptureExportArtifactIdentity, type CaptureExportMetadataInput,\n type CaptureExportSharedMetadata, type CaptureExportMetadataPair } from \"./capture/capture-export-metadata.js\";\nexport { CAPTURE_SDR_SCHEMA_VERSION, parseCaptureSdrInput, calculateCaptureSdr, type CaptureSdrInput, type CaptureSdrResult } from \"./output/capture-sdr.js\";\nexport { RAW_FRAME_RECONSTRUCTION_SCHEMA_VERSION, parseRawFrameReconstructionInput, resolveRawFrameReconstruction,\n type RawFrameReconstructionPhaseProfile, type RawFrameReconstructionInput, type RawFrameReconstruction } from \"./capture/raw-frame-reconstruction.js\";\nexport { SENSOR_RAW_FRAME_SCHEMA_VERSION, createSensorRawFrame, parseSensorRawFrameInput,\n type SensorRawFrameInput, type SensorRawFrame } from \"./capture/sensor-raw-frame.js\";\n\nexport {\n parseOpticalProfileState,\n type OpticalProfileState,\n type GenericOpticalEvidence\n} from \"./optics/profile-contract.js\";\nexport {\n parseLensStrayLightProfile,\n calculateLensStrayLightIrradiance,\n type LensStrayLightProfile,\n type ParametricStrayLightResponse,\n type StrayLightSource,\n type StrayLightIrradiance\n} from \"./optics/stray-light.js\";\nexport {\n parseDigitalGeometricTransform,\n prepareGeometricMapping,\n calculateComposedGeometricMapping,\n calculateForwardGeometricMapping,\n calculateGeometricSamplingPlan,\n calculateGeometricResampling,\n type DigitalGeometricTransform,\n type AffineGeometricTransform,\n type RadialGeometricTransform,\n type BrownConradyGeometricTransform,\n type ProjectionRemapGeometricTransform,\n type GeometricProjectionDeclaration,\n type GeometricJacobian,\n type GeometricImageDomain,\n type PreparedGeometricMapping,\n type GeometricRaster,\n type GeometricResampler,\n type GeometricMappingPoint,\n type GeometricSamplingPlan\n} from \"./output/geometric-transforms.js\";\nexport {\n parseGenericLensCorrectionProfile,\n resolveLensCorrectionPlan,\n calculatePeripheralIlluminationCorrection,\n calculateLensCorrectedCapture,\n type GenericLensCorrectionProfile,\n type LensCorrectionComponent,\n type LensCorrectionChannel,\n type GeometricLensCorrection,\n type LateralCaLensCorrection,\n type IlluminationLensCorrection,\n type ResolvedLensCorrectionPlan,\n type LensCorrectionCapture\n} from \"./output/lens-corrections.js\";\n\nexport {\n SIMULATED_CAPTURE_SCHEMA_VERSION,\n createSimulatedCapture,\n parseSimulatedCapture,\n serializeSimulatedCapture,\n resolveSimulatedCapturePlane,\n createCaptureWhiteBalanceIntent,\n type SimulatedCapture,\n type SimulatedCaptureInput,\n type CaptureExposureSource,\n type CaptureLinearImageState,\n type CaptureLinearPlane,\n type CaptureFloatStorage,\n type CapturePublicProfileReference,\n type CaptureWhiteXyz,\n type CaptureWhiteBalanceIntent\n} from \"./capture/simulated-capture.js\";\n\nexport {\n CAPTURE_COLOR_MODEL_VERSION,\n VIRTUAL_COLOR_CAMERA_PROFILE,\n LINEAR_CAPTURE_RGB_PROFILE,\n resolveCaptureColorModel,\n parseCaptureColorTransformInput,\n calculateCaptureColorTransform,\n type CaptureChromaticAdaptationTransform,\n type CaptureColorModel,\n type CaptureColorWhiteBalance,\n type CaptureColorTransformInput,\n type CaptureColorTransformResult\n} from \"./color/capture-color.js\";\n\nexport { ENGINE_API_VERSION } from \"./core/version.js\";\nexport { FULL_RESOLUTION_DEFAULT_PIXELS, FULL_RESOLUTION_CEILING_PIXELS } from \"./core/pixel-limits.js\";\n\nexport {\n LINEAR_CAPTURE_ENCODING_SCHEMA_VERSION,\n LINEAR_CAPTURE_ENCODING_MODEL_VERSION,\n parseLinearCaptureEncoding,\n calculateLinearCaptureEncoding,\n type LinearCaptureEncoding,\n type LinearCaptureEncodingInput,\n type EncodedLinearCapture\n} from \"./capture/linear-encoding.js\";\n\nexport {\n SDR_RENDERING_SCHEMA_VERSION,\n SDR_RENDERING_MODEL_VERSION,\n parseSdrRenderingProfile,\n parseSdrRenderingInput,\n calculateSdrRendering,\n type SdrRenderingProfile,\n type SdrToneCurve,\n type SdrToneCurveParameters,\n type SdrRenderingInput,\n type SdrRenderingResult\n} from \"./output/sdr-rendering.js\";\n\nexport {\n approximationResult,\n calibratedResult,\n calculatedResult,\n estimatedResult,\n validateCalculationQuality,\n type AbsoluteUncertaintyEstimate,\n type CalculationProvenance,\n type CalculationQuality,\n type CalculationResult,\n type CalculationValidRange,\n type ProvenanceKind,\n type RelativeUncertaintyEstimate,\n type UncertaintyConfidence,\n type UncertaintyEstimate,\n type UncertaintySource\n} from \"./core/calculation-result.js\";\nexport {\n InvalidScientificInputError,\n InvalidScientificResultError\n} from \"./core/validation.js\";\n\nexport {\n parseSpectralWavelengthBasis,\n parseSpectralWavelengthRangeNanometers,\n parseSpectralWavelengthSample,\n type SpectralWavelengthBasis,\n type SpectralWavelengthRangeNanometers,\n type SpectralWavelengthSample\n} from \"./core/spectral.js\";\n\nexport {\n composeSpectralCoverage,\n distributeIntegratedQuantityAcrossDiscreteSpectralLines,\n integrateDiscreteSpectralLineMeasure,\n parseNormalizedDiscreteSpectralLineDistribution,\n parseSpectralCoverageParticipant,\n type ComposeSpectralCoverageInput,\n type DiscreteSpectralLineMeasure,\n type DiscreteSpectralLineMeasureEntry,\n type DiscreteSpectralLineQuantityUnit,\n type DistributeIntegratedQuantityAcrossDiscreteLinesInput,\n type IntegratedDiscreteSpectralLineMeasure,\n type NormalizedDiscreteSpectralLine,\n type NormalizedDiscreteSpectralLineDistribution,\n type ResolvedSpectralWavelengthBasis,\n type SpectralCoverageComposition,\n type SpectralCoverageParticipant,\n type SpectralCoverageParticipantRole\n} from \"./core/spectral-composition.js\";\n\nexport {\n SCIENTIFIC_ASSURANCE_CONTRACT_VERSION,\n composeScientificAssurance,\n type ComposeScientificAssuranceInput,\n type ComposedScientificAssurance,\n type ComposedScientificUncertaintyStatus,\n type ScientificAssuranceBasisKind,\n type ScientificAssuranceComponent,\n type ScientificAssuranceComponentUncertainty,\n type ScientificAssuranceSourceIdentity,\n type ScientificAssuranceSourceKind,\n type ScientificAssuranceStatus\n} from \"./core/scientific-assurance.js\";\n\nexport {\n IMAGE_FORMATION_CONTRACT_VERSION,\n getImageFormationContract,\n type ImageFormationContract,\n type ImageFormationCoordinateSpaceContract,\n type ImageFormationCoordinateSpaceId,\n type ImageFormationDomainId,\n type ImageFormationEffectId,\n type ImageFormationEffectPlacement,\n type ImageFormationImplementationStatus,\n type ImageFormationRendererContract,\n type ImageFormationStageContract,\n type ImageFormationStageId,\n type ImageFormationTemporalContract\n} from \"./core/image-formation.js\";\n\nexport {\n IMAGE_FORMATION_FIDELITY_PROFILE_SCHEMA_VERSION,\n PREPARED_IMAGE_FORMATION_CONTEXT_VERSION,\n PRODUCTION_CAPTURE_SNAPSHOT_VERSION,\n PRODUCTION_IMAGE_FORMATION_PLAN_VERSION,\n RENDERER_CAPABILITY_SCHEMA_VERSION,\n createProductionCaptureSnapshot,\n createProductionCaptureSnapshotFromReleaseFrame,\n createProductionImageFormationPlan,\n parseImageFormationFidelityProfile,\n parsePreparedImageFormationContext,\n parseProductionCaptureSnapshot,\n parseRendererCapabilityDeclaration,\n prepareImageFormationContext,\n serializeProductionImageFormationPlan,\n type CreateProductionCaptureSnapshotFromReleaseFrameInput,\n type CreateProductionCaptureSnapshotInput,\n type CreateProductionImageFormationPlanInput,\n type ProductionProcessedOutputInput,\n type ProductionEnvironmentCaptureInput,\n type ImageFormationFidelityProfile,\n type PlannedImageFormationEffect,\n type PlannedImageFormationEffectState,\n type PlannedImageFormationStage,\n type PlannedImageFormationStageState,\n type PlannedScientificStatus,\n type PrepareImageFormationContextInput,\n type PreparedImageFormationContext,\n type ProductionCaptureSnapshot,\n type ProductionImageFormationBlocker,\n type ProductionImageFormationBlockerCode,\n type ProductionImageFormationPlan,\n type ProductionPhysicalSceneSample,\n type ProductionReleaseFrameBinding,\n type ProductionTemporalCaptureInput,\n type ProductionTemporalCaptureResult,\n type RendererCapabilityDeclaration,\n type RendererConsumerKind,\n type RequiredImageFormationEffect\n} from \"./composition/image-formation-plan.js\";\n\nexport {\n PRODUCTION_PLAN_CONSUMER_MANIFEST_VERSION,\n createProductionPlanConsumerManifest,\n type CreateProductionPlanConsumerManifestInput,\n type ProductionPlanConsumerManifest\n} from \"./composition/plan-consumer.js\";\n\nexport {\n calculateFieldOfView,\n calculateFieldOfViewBounds,\n type CalculateFieldOfViewBoundsInput,\n type CalculateFieldOfViewInput,\n type FieldOfView,\n type FieldOfViewBounds\n} from \"./camera/field-of-view.js\";\n\nexport {\n LENS_PROJECTION_MODELS,\n calculateLensProjectionDirection,\n calculateLensProjectionFieldOfView,\n calculateLensProjectionFieldOfViewBounds,\n calculateLensProjectionImagePoint,\n parseLensProjectionModel,\n type CalculateLensProjectionDirectionInput,\n type CalculateLensProjectionFieldOfViewBoundsInput,\n type CalculateLensProjectionFieldOfViewInput,\n type CalculateLensProjectionImagePointInput,\n type LensDirection,\n type LensProjectionDirection,\n type LensProjectionFieldOfView,\n type LensProjectionFieldOfViewBounds,\n type LensProjectionImagePoint,\n type LensProjectionModel,\n type RadialLensProjectionModel\n} from \"./camera/lens-projection.js\";\n\nexport {\n calculateProjectedObjectSize,\n type CalculateProjectedObjectSizeInput,\n type ProjectedObjectSize\n} from \"./camera/projected-object-size.js\";\n\nexport {\n calculateEquivalentFocalLength35Mm,\n type CalculateEquivalentFocalLength35MmInput,\n type EquivalentFocalLength35Mm\n} from \"./camera/equivalent-focal-length.js\";\n\nexport {\n COLOR_TEMPERATURE_WHITE_BALANCE_INTENT_VERSION,\n WHITE_BALANCE_PROFILE_SCHEMA_VERSION,\n WHITE_BALANCE_STATE_VERSION,\n createColorTemperatureWhiteBalanceIntent,\n createLockedWhiteBalanceState,\n estimateAutoWhiteBalance,\n parseResolvedWhiteBalanceState,\n parseWhiteBalanceProfile,\n resolveCustomWhiteBalance,\n resolveManualWhiteBalance,\n resolvePresetWhiteBalance,\n type ColorTemperatureWhiteBalanceIntent,\n type CreateColorTemperatureWhiteBalanceIntentInput,\n type CreateLockedWhiteBalanceStateInput,\n type EstimateAutoWhiteBalanceInput,\n type PreWhiteBalanceRgbSample,\n type PreWhiteBalanceRgbSampleSet,\n type ResolveCustomWhiteBalanceInput,\n type ResolveManualWhiteBalanceInput,\n type ResolvePresetWhiteBalanceInput,\n type ResolvedWhiteBalanceState,\n type WhiteBalanceAwbIntent,\n type WhiteBalanceAwbPolicy,\n type WhiteBalanceChannelGains,\n type WhiteBalanceInputDomain,\n type WhiteBalancePresetDefinition,\n type WhiteBalanceProfile,\n resolveColorTemperatureWhiteBalance,\n type ColorTemperatureWhiteBalanceCameraModel,\n type ResolveColorTemperatureWhiteBalanceInput,\n type ResolvedColorTemperatureWhiteBalance\n} from \"./color/white-balance.js\";\n\nexport type {\n Cie1960UvChromaticity,\n CieXyChromaticity,\n CieXyzTristimulus,\n ColorMatrix3x3,\n ColorVector3\n} from \"./color/colorimetry-math.js\";\n\nexport {\n COLORIMETRY_MODEL_VERSION,\n MAX_COLORIMETRIC_QUADRATURE_NODES,\n MAX_COLORIMETRIC_TABLE_SAMPLES,\n ANALYTIC_CIE_1931_CMF_DOMAIN_NANOMETERS,\n createColorimetricMidpointQuadrature,\n estimateCie1931ColorMatchingFunctions,\n integrateSpectrumToXyz,\n parseColorimetricQuadratureNodes,\n prepareColorMatchingFunctions,\n prepareColorimetricSpectrum,\n type ColorMatchingFunctionsSource,\n type ColorimetricObserver,\n type ColorimetricQuadratureNode,\n type ColorimetricSpectralSample,\n type ColorimetricSpectrum,\n type CreateColorimetricMidpointQuadratureInput,\n type IntegrateSpectrumToXyzInput,\n type IntegratedSpectrumXyz,\n type PreparedColorMatchingFunctions,\n type PreparedColorimetricSpectrum,\n type TabulatedColorMatchingSample,\n type TristimulusNormalization\n} from \"./color/color-matching-functions.js\";\n\nexport {\n BOLTZMANN_CONSTANT_JOULES_PER_KELVIN,\n CIE_DAYLIGHT_LOCUS_RANGE_KELVIN,\n CIE_ILLUMINANT_A_RANGE_NANOMETERS,\n PLANCKIAN_LOCUS_RANGE_KELVIN,\n MAX_CORRELATED_COLOR_TEMPERATURE_DUV,\n PLANCK_CONSTANT_JOULE_SECONDS,\n SECOND_RADIATION_CONSTANT_METER_KELVIN,\n SPEED_OF_LIGHT_METERS_PER_SECOND,\n calculateChromaticityFromCorrelatedColorTemperature,\n calculateCieDaylightComponentWeights,\n calculateCieIlluminantARelativeSpectralPower,\n calculateCorrelatedColorTemperature,\n calculatePlanckianChromaticity,\n calculatePlanckianSpectralRadiance,\n createCieDaylightSpectrum,\n createCieIlluminantASpectrum,\n createPlanckianSpectrum,\n estimateCorrelatedColorTemperatureMcCamy,\n estimatePlanckianLocusChromaticity,\n type CieDaylightBasis,\n type CieDaylightComponentWeights,\n type CorrelatedColorTemperatureResult,\n type PlanckianLocusModel,\n type WhiteLocus\n} from \"./color/illuminants.js\";\n\nexport {\n CHROMATIC_ADAPTATION_TRANSFORMS,\n calculateChromaticAdaptationMatrix,\n calculateChromaticallyAdaptedXyz,\n resolveChromaticAdaptationConeMatrix,\n type CalculateChromaticAdaptationMatrixInput,\n type ChromaticAdaptationMatrix,\n type ChromaticAdaptationTransform\n} from \"./color/chromatic-adaptation.js\";\n\nexport {\n calculateCielabFromCielch,\n calculateCielabFromXyz,\n calculateCielchFromCielab,\n calculateColorDifference,\n calculateXyzFromCielab,\n type CalculateColorDifferenceInput,\n type Cie94ParametricFactors,\n type Ciede2000ParametricFactors,\n type CielabColor,\n type CielchColor,\n type ColorDifferenceFormula\n} from \"./color/color-difference.js\";\n\nexport {\n MAX_CAMERA_MATRIX_TRAINING_PATCHES,\n estimateCameraColorMatrix,\n type CameraColorMatrixFit,\n type CameraMatrixFitConstraint,\n type CameraMatrixPatchReport,\n type CameraMatrixTrainingPatch,\n type CameraSpectralSensitivities,\n type EstimateCameraColorMatrixInput\n} from \"./color/camera-color-matrix.js\";\n\nexport {\n calculateRgbToXyzMatrices,\n evaluateBt709InverseOetf,\n evaluateSrgbDecoding,\n evaluateBt709Oetf,\n evaluateSrgbEncoding,\n prepareBt1886Eotf,\n resolveRgbColorSpace,\n type Bt1886Eotf,\n type RgbColorSpaceDefinition,\n type RgbColorSpaceId,\n type RgbPrimaryChromaticities,\n type RgbToXyzMatrices,\n type RgbTransferFunctionId\n} from \"./color/rgb-color-spaces.js\";\n\nexport {\n calculateGamutMappedColor,\n prepareRgbGamutMapping,\n type GamutMappedColor,\n type GamutMappingMethod,\n type PrepareRgbGamutMappingInput,\n type PreparedRgbGamutMapping\n} from \"./color/gamut-mapping.js\";\n\nexport {\n calculatePixelPitch,\n type CalculatePixelPitchInput,\n type PixelPitch\n} from \"./sensor/pixel-pitch.js\";\n\nexport {\n calculateImagingAreaMetrics,\n calculateSensorGeometryMetrics,\n type CalculateSensorGeometryMetricsInput,\n type ImagingAreaMetrics,\n type NativeImageRaster,\n type RasterDimensions,\n type SensorGeometryMetrics,\n type SensorImagingArea\n} from \"./sensor/sensor-geometry.js\";\n\nexport {\n SENSOR_ARCHITECTURE_PROFILE_SCHEMA_VERSION,\n parseSensorArchitectureProfile,\n type SensorArchitectureFactProvenance,\n type SensorArchitectureProfile,\n type SensorArchitectureProfileV0_2,\n type SensorArchitectureProfileV0_3,\n type SensorArchitectureReuseStatus,\n type SensorArchitectureSourceKind,\n type SensorColorSamplingFamily,\n type SensorIlluminationArchitecture,\n type SensorIntegrationArchitecture,\n type SensorReadoutArchitecture,\n type SensorTechnologyFamily,\n type SourcedSensorArchitectureFact\n} from \"./sensor/architecture.js\";\n\nexport {\n parseSensorColorSamplingProfile,\n resolveColorSamplingSite,\n type LayeredColorSamplingLayout,\n type MonochromeColorSamplingLayout,\n type NativeColorSamplingSiteCoordinateSystem,\n type NativeColorSamplingSiteIndex,\n type SensorColorSamplingProfileCoordinateSystem,\n type PeriodicMosaicColorSamplingLayout,\n type ResolveColorSamplingSiteInput,\n type ResolvedColorSamplingSite,\n type SensorColorSamplingLayout,\n type SensorColorSamplingProfile\n} from \"./sensor/color-sampling.js\";\n\nexport {\n parseNativeEffectiveRasterColorSamplingBindingProfile,\n resolveCaptureModeColorSamplingContributors,\n resolveNativeEffectiveRasterColorSamplingBinding,\n type CaptureModeFullFrameSampleIndex,\n type ColorSamplingChannelComposition,\n type ColorSamplingChannelSiteCount,\n type ColorSamplingSiteGridDimensions,\n type ColorSamplingSiteRect,\n type GroupedCaptureModeSamplingAnchorDeclaration,\n type NativeEffectiveRasterColorSamplingBindingProfile,\n type NativeEffectiveSampleRect,\n type ResolveCaptureModeColorSamplingContributorsInput,\n type ResolvedCaptureModeColorSamplingContributors,\n type ResolvedNativeEffectiveRasterColorSamplingBinding\n} from \"./sensor/capture-color-sampling-binding.js\";\n\nexport {\n parseSensorOpticalStackProfile,\n resolveAntiAliasingSpatialKernel,\n type AntiAliasingPointSplitComponent,\n type ResolvedAntiAliasingSpatialKernel,\n type SensorEffectiveAntiAliasingSpatialResponse,\n type SensorMicrolensDeclaration,\n type SensorOpticalStackComponent,\n type SensorOpticalStackComponentRole,\n type SensorOpticalStackProfile\n} from \"./sensor/optical-stack.js\";\n\nexport {\n parseSensorSamplingApertureProfile,\n resolveSensorSamplingAperture,\n type NativeSensorPhysicalBoundsMm,\n type NativeSensorPhysicalPointMm,\n type ResolveSensorSamplingApertureInput,\n type ResolvedSensorSamplingAperture,\n type SensorGeometricSensitiveAperture,\n type SensorSamplingApertureProfile,\n type SensorSiteCenterLatticeRegistration\n} from \"./sensor/sampling-aperture.js\";\n\nexport {\n calculateSensorSpatialSamplingQuadrature,\n type CalculateSensorSpatialSamplingQuadratureInput,\n type SensorSpatialSamplingQuadrature,\n type SensorSpatialSamplingQuadratureNode\n} from \"./sensor/spatial-sampling-quadrature.js\";\n\nexport {\n reduceSensorSpatialSamplingQuadrature,\n type ReduceSensorSpatialSamplingQuadratureInput,\n type SensorSpatialQuadratureNodeIdentity,\n type SensorSpatialQuadratureNodeValue,\n type SensorSpatialSampleReduction,\n type SensorSpatialSampleReductionValue,\n type SensorSpatialSampleValueDomain\n} from \"./sensor/spatial-sample-reduction.js\";\n\nexport {\n parseSensorSpectralResponseProfile,\n SENSOR_SPECTRAL_RESPONSE_CHANNEL_BINDING_FORMAT,\n resolveSensorSpectralResponseAtWavelength,\n type EffectiveSensorResponseScope,\n type ResolveSensorSpectralResponseAtWavelengthInput,\n type ResolvedSensorSpectralResponse,\n type ResolvedSensorSpectralResponseValue,\n type SensorSpectralChannelResponse,\n type SensorSpectralResponseChannelBinding,\n type SensorSpectralReferenceConditions,\n type SensorSpectralResponseProfile,\n type SensorSpectralResponseScientificStatus,\n type SensorSpectralResponseUncertainty,\n type SpectralFractionCurve,\n type SpectralFractionSample,\n type SpectralResponsivityCurve,\n type SpectralResponsivitySample\n} from \"./sensor/spectral-response.js\";\n\nexport {\n calculateSensorSpectralQuadrature,\n type CalculateSensorSpectralQuadratureInput,\n type SensorSpectralQuadrature,\n type SensorSpectralQuadratureNode,\n type SensorSpectralWavelengthRangeNanometers\n} from \"./sensor/spectral-quadrature.js\";\n\nexport {\n createSensorSpectralCoverageParticipant,\n type CreateSensorSpectralCoverageParticipantInput\n} from \"./sensor/spectral-coverage.js\";\n\nexport {\n reduceSensorSpatioSpectralIrradiance,\n type ReduceSensorSpatioSpectralIrradianceInput,\n type SensorSpatioSpectralIrradianceReduction,\n type SensorSpatioSpectralIrradianceSample,\n type SensorSpatioSpectralNodeIdentity,\n type SensorSpatioSpectralWavelengthReduction\n} from \"./sensor/spatio-spectral-reduction.js\";\n\nexport {\n assessSensorResponseApplicationCompatibility,\n parseSensorResponseApplicationProfile,\n type AssessSensorResponseApplicationCompatibilityInput,\n type SensorResponseApplicationCompatibilityAssessment,\n type SensorResponseApplicationCompatibilityBlocker,\n type SensorResponseApplicationProfile,\n type SensorResponseIncidentAreaBasis,\n type SensorResponseReferenceConditionPolicy,\n type SensorResponseSignalPath,\n type SensorResponseSourcePlane,\n type SensorResponseSpatialModel,\n type SourcedSensorResponseSourcePlane\n} from \"./sensor/response-application-compatibility.js\";\n\nexport {\n assessSensorResponseOperatingRange,\n parseSensorResponseOperatingRangeProfile,\n type AssessSensorResponseOperatingRangeInput,\n type SensorResponseLinearityCriterion,\n type SensorResponseOperatingInputRange,\n type SensorResponseOperatingRangeAssessment,\n type SensorResponseOperatingRangeBlocker,\n type SensorResponseOperatingRangeProfile,\n type SensorResponseOperatingSpatialLinearityModel,\n type SensorResponseOperatingSpectralInputModel,\n type SensorResponseOperatingWavelengthApplicability\n} from \"./sensor/response-operating-range.js\";\n\nexport {\n calculatePhotonEnergyFromWavelength,\n parseSourcedAirPhaseRefractiveIndex,\n type AirRefractiveIndexConditionPolicy,\n type AirRefractiveIndexReferenceConditions,\n type CalculatePhotonEnergyFromWavelengthInput,\n type PhotonEnergyFromWavelength,\n type SourcedAirPhaseRefractiveIndex\n} from \"./sensor/photon-energy.js\";\n\nexport {\n calculateSensorEqeElectronRate,\n type CalculateSensorEqeElectronRateInput,\n type SensorEqeAirPhotonEnergyContext,\n type SensorEqeAirRefractiveIndexSample,\n type SensorEqeElectronRate,\n type SensorEqeWavelengthRateContribution\n} from \"./sensor/eqe-electron-rate.js\";\n\nexport {\n calculateSensorResponsivityPhotocurrent,\n parseSensorResponsivityElectricalApplicabilityProfile,\n type CalculateSensorResponsivityPhotocurrentInput,\n type SensorResponsivityBiasCondition,\n type SensorResponsivityElectricalApplicabilityProfile,\n type SensorResponsivityElectricalConditionPolicy,\n type SensorResponsivityElectricalConditions,\n type SensorResponsivityPhotocurrent,\n type SensorResponsivityReadoutLoadCondition,\n type SensorResponsivityWavelengthCurrentContribution\n} from \"./sensor/responsivity-photocurrent.js\";\n\nexport {\n bindSensorRateToLocalExposure,\n type BindSensorRateToLocalExposureInput,\n type SensorInstantaneousRateResult,\n type SensorRateLocalExposureBinding\n} from \"./sensor/local-exposure-binding.js\";\n\nexport {\n integrateStationarySensorRateOverLocalExposure,\n parseSensorRateTemporalStationarityProfile,\n type IntegrateStationarySensorRateInput,\n type SensorEqeExposureIntegration,\n type SensorRateStationarityStatus,\n type SensorRateTemporalStationarityProfile,\n type SensorResponsivityExposureIntegration,\n type SensorStationaryRateExposureIntegration\n} from \"./sensor/constant-rate-temporal-integration.js\";\n\nexport {\n calculateSensorDarkCurrentCharge,\n parseSensorDarkCurrentProfile,\n type CalculateSensorDarkCurrentChargeInput,\n type SensorDarkCurrentCharge,\n type SensorDarkCurrentProfile,\n type SensorDarkCurrentSiteApplicability,\n type SensorDarkCurrentTemperatureModel\n} from \"./sensor/dark-current.js\";\n\nexport {\n composeSensorAccumulatedCharge,\n parseSensorAccumulatedChargeCompletenessProfile,\n parseSensorAdditionalStoredChargeComponent,\n type ComposeSensorAccumulatedChargeInput,\n type ComposeSensorPhotoAccumulatedChargeInput,\n type SensorAccumulatedChargeCompletenessProfile,\n type SensorAccumulatedChargeComposition,\n type SensorPhotoAccumulatedChargeComposition,\n type SensorAdditionalStoredChargeComponent,\n type SensorAdditionalStoredChargeKind\n} from \"./sensor/accumulated-charge.js\";\n\nexport {\n assessSensorPhysicalChargeCapacity,\n parseSensorPhysicalChargeCapacityProfile,\n type AssessSensorPhysicalChargeCapacityInput,\n type SensorPhysicalChargeCapacityAssessment,\n type SensorPhysicalChargeCapacityProfile,\n type SensorPhysicalChargeCapacitySiteApplicability,\n type SensorPhysicalChargeCapacityTemperatureApplicability\n} from \"./sensor/physical-charge-capacity.js\";\n\nexport {\n GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION,\n GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION,\n parseGenericIsoSignalChainPresetCatalog,\n parseGenericIsoSignalChainProfile,\n resolveGenericIsoSignalChain,\n resolveGenericIsoSignalChainPreset,\n type GenericIsoCaptureModeSignalChainBinding,\n type GenericIsoExpandedRegimeBinding,\n type GenericIsoSignalChainPreset,\n type GenericIsoSignalChainPresetCatalog,\n type GenericIsoSignalChainProfile,\n type GenericIsoStandardRegimeBand,\n type ResolveGenericIsoSignalChainInput,\n type ResolvedGenericIsoSignalChain\n} from \"./sensor/iso-signal-chain.js\";\n\nexport {\n SENSOR_CHARGE_SAMPLING_PROFILE_SCHEMA_VERSION,\n SENSOR_READOUT_CONVERSION_PROFILE_SCHEMA_VERSION,\n calculateExpectedSensorReadout,\n parseSensorChargeSamplingProfile,\n parseSensorReadoutConversionProfile,\n resolveSensorReadoutRegime,\n simulateSensorChargeRealization,\n simulateSensorRawCode,\n type CalculateExpectedSensorReadoutInput,\n type ResolveSensorReadoutRegimeInput,\n type ResolvedSensorReadoutRegime,\n type SensorAdditionalChargeSamplingModel,\n type SensorAdditionalChargeSamplingPolicy,\n type SensorChargeRealization,\n type SensorChargeSamplingProfile,\n type SensorElectronicReadNoiseComponent,\n type SensorExpectedReadoutSignal,\n type SensorRawCodeSample,\n type SensorReadoutConversionProfile,\n type SensorReadoutConversionRegime,\n type SensorAdcIntegralNonLinearity,\n type SensorReadoutExposureIndexGain,\n type SimulateSensorChargeRealizationInput,\n type SimulateSensorRawCodeInput\n} from \"./sensor/raw-readout.js\";\n\nexport {\n createIsoGainReadoutRegimes,\n type CreateIsoGainReadoutRegimesInput,\n type IsoGainConversionGainMode,\n type IsoGainReadoutRegimes\n} from \"./sensor/iso-gain.js\";\n\nexport {\n SENSOR_FIXED_PATTERN_NOISE_MODEL,\n SENSOR_FIXED_PATTERN_NOISE_PROFILE_SCHEMA_VERSION,\n calculateSensorFixedPatternSite,\n parseSensorFixedPatternNoiseProfile,\n type SensorFixedPatternNoiseProfile,\n type SensorFixedPatternSiteValues\n} from \"./sensor/fixed-pattern-noise.js\";\n\nexport {\n SENSOR_RAW_CAPTURE_SAMPLE_VERSION,\n SENSOR_RAW_RECONSTRUCTION_PROFILE_SCHEMA_VERSION,\n createSensorRawCaptureSample,\n parseSensorRawReconstructionProfile,\n resolveSensorRawReconstruction,\n type CreateSensorRawCaptureSampleInput,\n type ResolveSensorRawReconstructionInput,\n type SensorRawCaptureSample,\n type SensorRawReconstructedPixel,\n type SensorRawReconstructionChannelKernel,\n type SensorRawReconstructionKernelContribution,\n type SensorRawReconstructionProfile\n} from \"./sensor/raw-reconstruction.js\";\n\nexport {\n assessSensorCameraSaturationCapacity,\n parseSensorCameraSaturationCapacityProfile,\n type AssessSensorCameraSaturationCapacityInput,\n type SensorCameraSaturationCapacityAssessment,\n type SensorCameraSaturationCapacityProfile,\n type SensorCameraSaturationSiteApplicability,\n type SensorCameraSaturationTemperatureApplicability\n} from \"./sensor/camera-saturation-capacity.js\";\n\nexport {\n CAPTURE_MODE_TIMING_PROFILE_SCHEMA_VERSION,\n parseCaptureModeTimingProfile,\n resolveCaptureModeTiming,\n type CaptureModeTimingProfile,\n type ResolveCaptureModeTimingInput,\n type ResolvedCaptureModeTiming\n} from \"./sensor/capture-mode-timing.js\";\n\nexport {\n parseCaptureModeProfile,\n resolveCaptureMode,\n type CaptureModeAcquisition,\n type CaptureModeDefinition,\n type CaptureModeDependency,\n type CaptureModePerFrameSampling,\n type CaptureModeProfile,\n type CaptureModeReconstructionStage,\n type CaptureModeSampleCombinationDomain,\n type CaptureModeSensorOffsetNativeSamples,\n type DeclaredEffectiveCaptureSampling,\n type FixedMultiFrameCaptureAcquisition,\n type GroupedNativeCaptureSampling,\n type NativeEffectiveCaptureSampling,\n type ResolveCaptureModeInput,\n type ResolvedCaptureMode,\n type SingleFrameCaptureAcquisition,\n type SourcedCaptureModeFact,\n type VariableMultiFrameCaptureAcquisition\n} from \"./sensor/capture-mode.js\";\n\nexport {\n calculateSensorReadoutTiming,\n type CalculateSensorReadoutTimingInput,\n type CaptureShutterMechanism,\n type GlobalSensorReadoutTimingDeclaration,\n type NativeSensorReadoutScanDirection,\n type RollingSensorReadoutTimingDeclaration,\n type SensorReadoutMode,\n type SensorReadoutTiming,\n type SensorReadoutTimingDeclaration,\n type SensorReadoutTimingSample,\n type SourcedSensorReadoutFact,\n type SourcedSensorTimingSeconds\n} from \"./sensor/readout-timing.js\";\n\nexport {\n calculateCaptureExposureWindows,\n type CalculateCaptureExposureWindowsInput,\n type CaptureExposureBoundaryActuator,\n type CaptureExposureWindowSample,\n type CaptureExposureWindows,\n type ExposureBoundarySchedule,\n type ResolvedCaptureExposureBoundary,\n type SimultaneousExposureBoundarySchedule,\n type SourcedCaptureBoundaryDirection,\n type SourcedCaptureTimingSeconds,\n type UniformLinearExposureBoundarySchedule\n} from \"./sensor/exposure-window.js\";\n\nexport {\n assessReadoutExposureTimingLinkage,\n resolveElectronicRollingShutterExposureSchedule,\n createRollingShutterCaptureExposureSchedule,\n ELECTRONIC_ROLLING_SHUTTER_MODEL,\n type ResolveElectronicRollingShutterExposureScheduleInput,\n type ElectronicRollingShutterExposureSchedule,\n type AssessReadoutExposureTimingLinkageInput,\n type ReadoutExposureBoundaryId,\n type ReadoutExposureBoundarySpatialLink,\n type ReadoutExposureBoundarySpatialLinkAssessment,\n type ReadoutExposureSpatialPhaseOrientation,\n type ReadoutExposureTimingLinkageAssessment,\n type ReadoutExposureTimingLinkageDeclaration\n} from \"./sensor/readout-exposure-linkage.js\";\n\nexport {\n calculateCenteredCrop,\n type CalculateCenteredCropInput,\n type CenteredCrop\n} from \"./output/crop.js\";\n\nexport {\n calculateSubjectFramingCrop,\n type CalculateSubjectFramingCropInput,\n type SubjectFramingCrop\n} from \"./output/subject-framing-crop.js\";\n\nexport {\n calculateActiveCaptureFieldOfView,\n calculateOutputFieldOfView,\n mapImagePlanePointToOrientedPhysicalUv,\n mapOrientedPhysicalUvToImagePlanePoint,\n resolveCaptureGeometry,\n transformNativeRasterPointToOriented,\n transformNativeRasterRectToOriented,\n transformNativeRasterVectorToOriented,\n transformOrientedRasterPointToNative,\n transformOrientedRasterRectToNative,\n transformOrientedRasterVectorToNative,\n type ActiveCaptureFieldOfView,\n type CalculateActiveCaptureFieldOfViewInput,\n type CalculateOutputFieldOfViewInput,\n type CaptureOrientation,\n type ImagePlaneMetricPointMm,\n type MapImagePlanePointToOrientedPhysicalUvInput,\n type MapOrientedPhysicalUvToImagePlaneInput,\n type NormalizedRasterUv,\n type OutputFieldOfView,\n type PhysicalBoundsFromOpticalAxisMm,\n type RasterPoint,\n type RasterRect,\n type RasterVector,\n type ResolveCaptureGeometryInput,\n type ResolvedCaptureGeometry,\n type TransformRasterPointInput,\n type TransformRasterRectInput,\n type TransformRasterVectorInput\n} from \"./output/capture-geometry.js\";\n\nexport {\n calculateIdealApertureGeometry,\n type ApertureVertex,\n type CalculateIdealApertureInput,\n type IdealApertureGeometry\n} from \"./optics/aperture.js\";\n\nexport {\n calculateAiryDisk,\n type AiryDisk,\n type CalculateAiryDiskInput\n} from \"./optics/diffraction.js\";\n\nexport {\n calculateIdealPolygonDiffractionPsf,\n calculatePolygonPupilFraunhoferPsf,\n type CalculateIdealPolygonDiffractionInput,\n type CalculatePolygonPupilFraunhoferPsfInput,\n type IdealPolygonDiffraction,\n type PolygonPupilFraunhoferPsf\n} from \"./optics/polygon-diffraction.js\";\n\nexport {\n ZERNIKE_MAXIMUM_NOLL_INDEX,\n ZERNIKE_PUPIL_MAXIMUM_SAMPLES_ACROSS,\n calculateDefocusWavefront,\n createWavefrontPupilGrid,\n estimateMarechalStrehlRatio,\n evaluateZernikePolynomial,\n resolveZernikeNollOrder,\n type CalculateDefocusWavefrontInput,\n type CreateWavefrontPupilGridInput,\n type DefocusWavefront,\n type EstimateMarechalStrehlRatioInput,\n type SeidelFieldPosition,\n type SeidelWavefrontCoefficients,\n type WavefrontPupilGrid,\n type ZernikeCoefficient,\n type ZernikeOrder\n} from \"./optics/zernike-wavefront.js\";\n\nexport {\n FRAUNHOFER_C_LINE_NM,\n FRAUNHOFER_D_LINE_NM,\n FRAUNHOFER_F_LINE_NM,\n calculateCauchyRefractiveIndex,\n calculateLongitudinalChromaticFocus,\n type CalculateLongitudinalChromaticFocusInput,\n type LongitudinalChromaticDispersion,\n type LongitudinalChromaticFocus\n} from \"./optics/longitudinal-chromatic-aberration.js\";\n\nexport {\n calculateMechanicalVignetting,\n calculateNaturalVignetting,\n type CalculateMechanicalVignettingInput,\n type CalculateNaturalVignettingInput,\n type MechanicalVignetting,\n type MechanicalVignettingAperture,\n type NaturalVignetting,\n type NaturalVignettingModel\n} from \"./optics/pupil-vignetting.js\";\n\nexport {\n estimateEquivalentViewingCircleOfConfusion,\n type EquivalentViewingCircleOfConfusion,\n type EstimateEquivalentViewingCircleOfConfusionInput\n} from \"./optics/circle-of-confusion.js\";\n\nexport {\n calculateFocusPlaneImageDistance,\n parseFocusPlane,\n type CalculateFocusPlaneImageDistanceInput,\n type FocusPlane\n} from \"./optics/focus-state.js\";\n\nexport {\n calculateThinLensImageDistance,\n type CalculateThinLensImageDistanceInput,\n type ThinLensImageDistance\n} from \"./optics/thin-lens.js\";\n\nexport {\n calculateDefocusCircle,\n calculateDepthOfField,\n type CalculateDefocusCircleInput,\n type CalculateDepthOfFieldInput,\n type DefocusCircle,\n type DepthOfField\n} from \"./optics/depth-of-field.js\";\n\nexport {\n calculateFocusBreathingFieldOfView,\n calculateFocusBreathingProjection,\n calculateGeometricFocusBreathing,\n type CalculateFocusBreathingFieldOfViewInput,\n type CalculateFocusBreathingProjectionInput,\n type CalculateGeometricFocusBreathingInput,\n type FocusBreathingFieldOfView,\n type FocusBreathingProjection,\n type GeometricFocusBreathing,\n type GeometricFocusingMethod\n} from \"./optics/focus-breathing.js\";\n\nexport {\n calculateAtmosphericHaze,\n calculateExtinctionFromVisibility,\n type AtmosphericExtinctionModel,\n type AtmosphericHaze,\n type CalculateAtmosphericHazeInput,\n type CalculateExtinctionFromVisibilityInput\n} from \"./optics/atmospheric-haze.js\";\n\nexport {\n calculateInverseRadialDistortionMapping,\n calculateInverseRadialDistortionMappings,\n calculateRadialDistortionMapping,\n type CalculateInverseRadialDistortionMappingInput,\n type CalculateInverseRadialDistortionMappingsInput,\n type CalculateRadialDistortionMappingInput,\n type InverseRadialDistortionMapping,\n type InverseRadialDistortionMappings,\n type LensFieldPointMm,\n type RadialDistortionCoefficients,\n type RadialDistortionMapping,\n type RadialDistortionProfile\n} from \"./optics/radial-distortion.js\";\n\nexport {\n calculateBrownConradyDistortionMapping,\n calculateInverseBrownConradyDistortionMapping,\n type BrownConradyDistortionCoefficients,\n type BrownConradyDistortionMapping,\n type BrownConradyDistortionProfile,\n type CalculateBrownConradyDistortionMappingInput,\n type CalculateInverseBrownConradyDistortionMappingInput,\n type InverseBrownConradyDistortionMapping\n} from \"./optics/brown-conrady-distortion.js\";\n\nexport {\n calculateInverseLateralChromaticAberrationMapping,\n calculateInverseLateralChromaticAberrationMappings,\n calculateLateralChromaticAberrationMapping,\n type CalculateInverseLateralChromaticAberrationMappingInput,\n type CalculateInverseLateralChromaticAberrationMappingsInput,\n type CalculateLateralChromaticAberrationMappingInput,\n type ChannelSeparationVectorMm,\n type InverseLateralChromaticAberrationChannelMapping,\n type InverseLateralChromaticAberrationMapping,\n type InverseLateralChromaticAberrationMappings,\n type LateralChromaticAberrationChannel,\n type LateralChromaticAberrationChannelMapping,\n type LateralChromaticAberrationMapping,\n type LateralChromaticAberrationProfile,\n type LateralChromaticAberrationSeparation\n} from \"./optics/lateral-chromatic-aberration.js\";\n\nexport {\n FRONT_OF_LENS_FILTER_PROFILE_SCHEMA_VERSION,\n FRONT_OF_LENS_POLARIZER_PROFILE_SCHEMA_VERSION,\n composeFrontOfLensFilterTransmission,\n parseFrontOfLensFilterProfile,\n resolveFrontOfLensFilterTransmission,\n type ComposeFrontOfLensFilterTransmissionInput,\n type ComposedFrontOfLensFilterTransmission,\n type FrontOfLensFilterProfile,\n type FrontOfLensFilterProfileSchemaVersion,\n type FrontOfLensFilterScientificStatus,\n type FrontOfLensFilterSpectralSample,\n type FrontOfLensFilterTransmissionModel,\n type FrontOfLensFilterUncertainty,\n type LinearPolarizationState,\n type ResolveFrontOfLensFilterTransmissionInput,\n type ResolvedFrontOfLensFilterTransmission\n} from \"./optics/front-of-lens-filter.js\";\n\nexport {\n calculateIlluminationVignetting,\n type CalculateIlluminationVignettingInput,\n type IlluminationVignetting,\n type IlluminationVignettingCoefficients,\n type IlluminationVignettingProfile\n} from \"./optics/illumination-vignetting.js\";\n\nexport {\n SCENE_TO_SENSOR_IRRADIANCE_PROFILE_SCHEMA_VERSION,\n calculateSceneRadianceToSensorIrradiance,\n parseSceneToSensorIrradianceProfile,\n type CalculateSceneRadianceToSensorIrradianceInput,\n type NumericRange,\n type OpticalBridgeFieldThroughput,\n type OpticalBridgeFocusApplicability,\n type OpticalBridgeFocusContext,\n type OpticalBridgeScientificStatus,\n type OpticalBridgeUncertainty,\n type OpticalTransmissionModel,\n type SceneToSensorIrradianceProfile,\n type SceneToSensorIrradianceResult,\n type SpectralTransmissionSample\n} from \"./optics/scene-to-sensor-irradiance.js\";\n\nexport {\n LENS_SAMPLED_PSF_PROFILE_SCHEMA_VERSION,\n LENS_MTF_DIAGNOSTIC_PROFILE_SCHEMA_VERSION,\n assessMtfOnlyPsfRenderability,\n parseLensMtfDiagnosticProfile,\n parseLensSampledPsfProfile,\n resolveLensSampledPsf,\n type LensMtfDiagnosticProfile,\n type LensMtfDiagnosticSample,\n type LensPsfGridAxes,\n type LensPsfKernel,\n type LensPsfScientificStatus,\n type LensPsfUncertainty,\n type LensSampledPsfGridCoordinate,\n type LensSampledPsfGridNode,\n type LensSampledPsfInterpolation,\n type LensSampledPsfProfile,\n type MtfOnlyPsfRenderabilityAssessment,\n type ResolveLensSampledPsfInput,\n type ResolvedLensSampledPsf\n} from \"./optics/lens-psf-profile.js\";\n\nexport {\n LENS_COMPLEX_PUPIL_PROFILE_SCHEMA_VERSION,\n calculateLensComplexPupilPsf,\n parseLensComplexPupilProfile,\n type CalculateLensComplexPupilPsfInput,\n type LensComplexPupilGrid,\n type LensComplexPupilProfile,\n type LensComplexPupilPsf,\n type LensComplexPupilPsfSampling\n} from \"./optics/complex-pupil-psf.js\";\n\nexport {\n PSF_FOUNDATION_VERSION,\n calculatePsfFoundationComponents,\n getPsfFoundationContract,\n type CalculatePsfFoundationComponentsInput,\n type PsfContributionContract,\n type PsfContributionId,\n type PsfContributionStatus,\n type PsfFoundationComponents,\n type PsfFoundationContract\n} from \"./optics/psf-foundation.js\";\n\nexport type {\n CameraConfiguration,\n CameraSupport,\n ExposureConfiguration,\n FocusConfiguration,\n LensConfiguration,\n SensorConfiguration,\n StabilizationConfiguration\n} from \"./schema/camera.js\";\n\nexport type {\n SceneCapability,\n SceneDefinition,\n SceneMotion,\n SceneObject,\n SceneRadiometry,\n Vector3\n} from \"./schema/scene.js\";\n\nexport {\n SCENE_ILLUMINATION_PROFILE_SCHEMA_VERSION,\n parseSceneIlluminationProfile,\n type SceneIlluminationMagnitude,\n type SceneIlluminationProfile,\n type SceneIlluminationRelativeSpectrumSample,\n type SceneIlluminationScientificStatus,\n type SceneIlluminationSource,\n type SceneIlluminationSourceFamily,\n type SceneIlluminationSourceGeometry,\n type SceneIlluminationSpectrum,\n type SceneIlluminationUncertainty\n} from \"./schema/illumination.js\";\n\nexport {\n createSceneIlluminationSpectralCoverageParticipant,\n resolveSceneIlluminationDiscreteLineMeasure,\n type CreateSceneIlluminationSpectralCoverageParticipantInput,\n type SceneIlluminationDiscreteLineMeasure\n} from \"./schema/illumination-spectral.js\";\n\nexport {\n SCENE_ILLUMINATION_TEMPORAL_PROFILE_SCHEMA_VERSION,\n evaluateSceneIlluminationTemporalMultiplier,\n integrateSceneIlluminationTemporalMultiplierOverExposureWindow,\n parseSceneIlluminationTemporalProfile,\n type EvaluateSceneIlluminationTemporalMultiplierInput,\n type IntegrateSceneIlluminationTemporalMultiplierInput,\n type SceneIlluminationTemporalExposureIntegration,\n type SceneIlluminationTemporalIntegrationNode,\n type SceneIlluminationTemporalMultiplierEvaluation,\n type SceneIlluminationTemporalProfile,\n type SceneIlluminationTemporalRegistrationUncertainty,\n type SceneIlluminationTemporalScientificStatus,\n type SceneIlluminationTemporalSourceBinding,\n type SceneIlluminationTemporalWaveform,\n type SceneIlluminationTemporalWaveformSample\n} from \"./schema/illumination-temporal.js\";\n\nexport {\n SCENE_RADIANCE_TEMPORAL_SAMPLING_PLAN_VERSION,\n createSceneRadianceTemporalSamplingPlan,\n reduceSceneRadianceTemporalSamples,\n type CreateSceneRadianceTemporalSamplingPlanInput,\n type ReducedSceneRadianceTemporalExposure,\n type ReduceSceneRadianceTemporalSamplesInput,\n type SceneRadianceTemporalEvaluatedSample,\n type SceneRadianceTemporalQuery,\n type SceneRadianceTemporalSamplingNode,\n type SceneRadianceTemporalSamplingPlan\n} from \"./schema/scene-radiance-temporal.js\";\n\nexport {\n SCENE_MATERIAL_RESPONSE_PROFILE_SCHEMA_VERSION,\n SCENE_RADIANCE_EVALUATION_SCHEMA_VERSION,\n SCENE_RADIANCE_PROVIDER_PROFILE_SCHEMA_VERSION,\n assessSceneMaterialResponseFidelity,\n parseSceneMaterialResponseProfile,\n parseSceneRadianceEvaluationRequest,\n parseSceneRadianceEvaluationResult,\n parseSceneRadianceProviderProfile,\n validateSceneRadianceEvaluationBindings,\n type SceneMaterialResponseDefinition,\n type SceneMaterialResponseFidelity,\n type SceneMaterialResponseProfile,\n type SceneMaterialResponseRepresentation,\n type SceneRadianceDataArtifactReference,\n type SceneRadianceEvaluationBindingAssessment,\n type SceneRadianceEvaluationRequest,\n type SceneRadianceEvaluationResult,\n type SceneRadianceEvaluationTarget,\n type SceneRadianceProviderProfile,\n type SceneRadianceProviderSpectralFidelity,\n type SceneRadianceProviderTransportFidelity,\n type SceneRadianceProviderVisibilityFidelity,\n type SceneRadianceScientificStatus,\n type SceneRadianceUncertainty,\n type ValidateSceneRadianceEvaluationBindingsInput\n} from \"./schema/scene-radiance.js\";\n\nexport {\n calculateCaptureExtendedObjectTemporalProjection,\n calculateExtendedObjectProjectionTrajectory,\n type CalculateCaptureExtendedObjectTemporalProjectionInput,\n type CalculateExtendedObjectProjectionTrajectoryInput,\n type CaptureExtendedObjectMetricPoint,\n type CaptureExtendedObjectPointTrajectory,\n type CaptureExtendedObjectTemporalNode,\n type CaptureExtendedObjectTemporalProjection,\n type ExtendedObjectFrontoparallelPlaneDeclaration,\n type ExtendedObjectMetricPoint,\n type ExtendedObjectPlanarMagnificationDiagnostic,\n type ExtendedObjectPointProjectionTrajectory,\n type ExtendedObjectProjectionNode,\n type ExtendedObjectProjectionTrajectory\n} from \"./motion/extended-object-projection.js\";\n\nexport {\n calculateProjectedMotionBlur,\n type CalculateProjectedMotionBlurInput,\n type ProjectedMotionBlur\n} from \"./motion/projected-motion.js\";\n\nexport {\n calculateCameraRotationImageMapping,\n calculateInverseCameraRotationImageMapping,\n type AxisSamplingPitchMicrometers,\n type CalculateCameraRotationImageMappingInput,\n type CalculateInverseCameraRotationImageMappingInput,\n type CameraAngularVelocityRadPerSec,\n type CameraRotationImageMapping,\n type ImagePlanePointMm,\n type InverseCameraRotationImageMapping\n} from \"./motion/camera-rotation.js\";\n\nexport {\n calculateCaptureRotationTrajectories,\n type CalculateCaptureRotationTrajectoriesInput,\n type CaptureRotationTrajectories,\n type CaptureRotationTrajectoryEndpoint,\n type CaptureRotationTrajectorySample\n} from \"./motion/capture-rotation-trajectory.js\";\n\nexport {\n calculateCaptureRotationInverseMappings,\n type CalculateCaptureRotationInverseMappingsInput,\n type CaptureRotationInverseMappings,\n type CaptureRotationInverseMappingSample\n} from \"./motion/capture-rotation-inverse-mapping.js\";\n\nexport {\n calculateCaptureTranslationParallaxTemporalQuadrature,\n type CalculateCaptureTranslationParallaxTemporalQuadratureInput,\n type CaptureTranslationParallaxSceneSample,\n type CaptureTranslationParallaxTemporalNode,\n type CaptureTranslationParallaxTemporalQuadrature,\n type CaptureTranslationParallaxTemporalSample\n} from \"./motion/capture-translation-parallax-temporal-quadrature.js\";\n\nexport {\n calculateCaptureRotationTemporalQuadrature,\n type CalculateCaptureRotationTemporalQuadratureInput,\n type CaptureRotationTemporalQuadrature,\n type CaptureRotationTemporalQuadratureNode,\n type CaptureRotationTemporalQuadraturePoint\n} from \"./motion/capture-rotation-temporal-quadrature.js\";\n\nexport {\n FLASH_SYNC_CAPABILITY_SCHEMA_VERSION,\n MANUAL_FLASH_PROFILE_SCHEMA_VERSION,\n FLASH_SYNC_CAPABILITY_HSS_SCHEMA_VERSION,\n HIGH_SPEED_SYNC_MODEL,\n createHighSpeedSyncIlluminationOverlay,\n createManualFlashIlluminationOverlay,\n parseFlashSyncCapabilityProfile,\n parseManualFlashProfile,\n resolveHighSpeedFlashSync,\n resolveManualFlashSync,\n type FlashOverlaySyncRegistration,\n type ResolveHighSpeedFlashSyncInput,\n type ResolvedHighSpeedFlashSync,\n type CreateManualFlashIlluminationOverlayInput,\n type FlashSyncCapabilityProfile,\n type ManualFlashIlluminationOverlay,\n type ManualFlashProfile,\n type ManualFlashPulseProfile,\n type ManualFlashSyncMode,\n type RequestedFlashSyncMode,\n type ResolveManualFlashSyncInput,\n type ResolvedManualFlashSync\n} from \"./exposure/flash.js\";\n\nexport {\n TTL_FLASH_MODEL,\n createTtlScaledFlashProfile,\n calculateFlashGuideNumber,\n calculateFlashPowerForDistance,\n resolveTtlFlashExposure,\n type FlashGuideNumberInput,\n type FlashPowerForDistance,\n type FlashPowerForDistanceInput,\n type ResolveTtlFlashExposureInput,\n type TtlFlashExposure\n} from \"./exposure/flash-ttl.js\";\n\nexport {\n calculateEquivalentIso,\n calculateExposureValue100,\n calculateRelativeOpticalExposure,\n calculateRelativeRenderedExposure,\n type CalculateEquivalentIsoInput,\n type CalculateExposureValue100Input,\n type CalculateRelativeOpticalExposureInput,\n type CalculateRelativeRenderedExposureInput,\n type RelativeOpticalExposure,\n type RelativeRenderedExposure\n} from \"./exposure/exposure.js\";\n\nexport {\n EXPOSURE_DURATION_CONTROL_VERSION,\n bindResolvedExposureDurationToCaptureExposureInput,\n resolveExposureDurationControl,\n type BindResolvedExposureDurationToCaptureExposureInput,\n type ExposureDurationControl,\n type ExposureDurationControlResolution\n} from \"./exposure/exposure-duration-control.js\";\n\nexport {\n EXPOSURE_METERING_PROFILE_SCHEMA_VERSION,\n calculateHighlightPriorityPlacementSignal,\n meterRelativeExposure,\n parseExposureMeteringProfile,\n type HighlightPriorityMeteringDiagnostics,\n type ExposureMeteringPolicy,\n type ExposureMeteringProfile,\n type ExposureMeteringResult,\n type ExposureMeteringSampleSet,\n type ExposureMeteringZoneSample,\n type MeterRelativeExposureInput\n} from \"./exposure/metering.js\";\n\nexport {\n SCENE_RADIANCE_METERING_DERIVATION_SCHEMA_VERSION,\n createSceneRadianceDerivedExposureMeteringSampleSet,\n parseSceneRadianceMeteringDerivationProfile,\n type CreateSceneRadianceDerivedExposureMeteringSampleSetInput,\n type SceneRadianceDerivedExposureMeteringSampleSet,\n type SceneRadianceMeteringDerivationProfile,\n type SceneRadianceMeteringSourceContext,\n type SceneRadianceMeteringTemporalContext\n} from \"./exposure/metering-scene-radiance.js\";\n\nexport {\n meterSceneRadianceTemporalExposure,\n type MeterSceneRadianceTemporalExposureInput,\n type SceneRadianceTemporalExposureMeteringResult,\n type SceneRadianceTemporalMeteringSample\n} from \"./exposure/metering-temporal.js\";\n\nexport {\n EXPOSURE_METER_TARGET_SCHEMA_VERSION,\n createExposureMeterTargetFromMeteringResult,\n setExposureCompensationOnMeterTarget,\n type CreateExposureMeterTargetInput,\n type ExposureMeterSnapshotIdentity,\n type ExposureMeterTarget,\n type ExposureMeterTargetSourceKind,\n type ExposureMeterTargetSourceResult,\n type SetExposureCompensationOnMeterTargetInput\n} from \"./exposure/metering-target.js\";\n\nexport {\n ISO_CAPABILITY_PROFILE_SCHEMA_VERSION,\n bindIsoCapabilityToExposureCapabilities,\n parseIsoCapabilityProfile,\n resolveIsoCapability,\n type BindIsoCapabilityToExposureCapabilitiesInput,\n type BoundIsoExposureCapabilities,\n type IsoAutoIsoCapability,\n type IsoCapabilityAvailability,\n type IsoCapabilityProfile,\n type IsoCaptureModePolicy,\n type IsoExpandedSetting,\n type IsoExposureIndexRange,\n type IsoStandardSettingGrid,\n type RequestedIsoSetting,\n type ResolveIsoCapabilityInput,\n type ResolvedIsoCapability\n} from \"./equipment/iso-capabilities.js\";\n\nexport {\n GENERIC_EQUIPMENT_EXPOSURE_CAPABILITY_SCHEMA_VERSION,\n parseGenericBodyExposureCapabilityProfile,\n parseGenericLensExposureCapabilityProfile,\n resolveGenericEquipmentExposureCapabilities,\n type FocalLengthFNumberSample,\n type GenericBodyExposureCapabilityProfile,\n type GenericCapabilityAvailability,\n type GenericLensExposureCapabilityProfile,\n type NumericCapabilityRange,\n type NumericSettingGrid,\n type ResolveGenericEquipmentExposureCapabilitiesInput,\n type ResolvedGenericEquipmentExposureCapabilities,\n type ResolvedNumericSettingGrid,\n type WidestAvailableFNumberCapability\n} from \"./equipment/exposure-capabilities.js\";\n\nexport {\n GENERIC_RELEASE_CAPABILITY_SCHEMA_VERSION,\n parseGenericReleaseCapabilityProfile,\n type GenericExposureBracketAxis,\n type GenericReleaseCapabilityProfile,\n type GenericReleaseDriveMode\n} from \"./equipment/release-capabilities.js\";\n\nexport {\n FOCUS_CONTROL_PROFILE_SCHEMA_VERSION,\n FOCUS_CONTROL_STATE_VERSION,\n assessFocusReleaseGate,\n createFocusControlState,\n parseFocusControlProfile,\n resolveFocusTargetObservation,\n setFocusLock,\n setManualFocusState,\n type AssessFocusReleaseGateInput,\n type CreateFocusControlStateInput,\n type FocusAcquisitionState,\n type FocusControlMode,\n type FocusControlProfile,\n type FocusControlState,\n type FocusReleaseGateAssessment,\n type FocusReleasePriority,\n type FocusTargetControlEvent,\n type FocusTargetLossReason,\n type FocusTargetObservation,\n type FocusTargetResolution,\n type ResolveFocusTargetObservationInput,\n type SetFocusLockInput,\n type SetManualFocusStateInput\n} from \"./capture/focus-control.js\";\n\nexport {\n RELEASE_SEQUENCE_VERSION,\n createCancelledReleaseSequence,\n resolveReleaseSequence,\n type CancelledReleaseSequence,\n type CancelReleaseSequenceInput,\n type ReleaseAutomationState,\n type ReleaseBaseCaptureState,\n type ReleaseBracketPolicy,\n type ReleaseDrivePolicy,\n type ReleaseTimingConstraint,\n type ResolveReleaseSequenceInput,\n type ResolvedReleaseFrame,\n type ResolvedReleaseSequence\n} from \"./capture/release-sequence.js\";\n\nexport {\n VIDEO_FRAME_SEED_STREAM_ID,\n VIDEO_FRAME_SEQUENCE_MAXIMUM_FRAMES,\n VIDEO_FRAME_SEQUENCE_VERSION,\n assessShutterAngleRule,\n calculateShutterAngleExposureSeconds,\n calculateShutterAngleFromExposureSeconds,\n resolveVideoFrameSequence,\n type ResolveVideoFrameSequenceInput,\n type ShutterAngleRuleAssessment,\n type VideoFrameSequence\n} from \"./motion/video-sequence.js\";\n\nexport {\n GENERIC_BODY_METERING_CAPABILITY_SCHEMA_VERSION,\n assessExposureMeteringProfileCompatibility,\n parseGenericBodyMeteringCapabilityProfile,\n type AssessExposureMeteringProfileCompatibilityInput,\n type GenericBodyMeteringCapabilityProfile,\n type GenericSupportedMeteringProfile,\n type MeteringCapabilityCompatibilityAssessment,\n type MeteringCapabilityCompatibilityBlocker\n} from \"./equipment/metering-capabilities.js\";\n\nexport {\n EXPOSURE_PROGRAM_LINE_SCHEMA_VERSION,\n parseExposureProgramLineProfile,\n type ExposureProgramLineNode,\n type ExposureProgramLineProfile\n} from \"./exposure/program-line.js\";\n\nexport {\n EXPOSURE_MODE_RESOLVER_VERSION,\n resolveAperturePriorityAutoIsoExposureMode,\n resolveAperturePriorityExposureMode,\n resolveFullAutoExposureMode,\n resolveManualExposureMode,\n resolveProgramAutoExposureMode,\n resolveShutterPriorityExposureMode,\n type AperturePriorityAutoIsoExposureModeResolution,\n type AperturePriorityAutoIsoPolicy,\n type AperturePriorityExposureModeResolution,\n type AutoIsoBaselinePolicy,\n type ExposureResolutionConstraint,\n type ExposureTargetResidual,\n type ExposureTargetResidualState,\n type FullAutoExposureModeResolution,\n type FullAutoExposurePolicy,\n type ManualExposureModeResolution,\n type ManualIsoControl,\n type ProgramAutoExposureModeResolution,\n type ProgramAutoIsoControl,\n type ProgramLineSelectionDiagnostics,\n type RelativeExposureControlAnchor,\n type ResolveAperturePriorityAutoIsoExposureModeInput,\n type ResolveAperturePriorityExposureModeInput,\n type ResolveFullAutoExposureModeInput,\n type ResolveManualExposureModeInput,\n type ResolveProgramAutoExposureModeInput,\n type ResolveShutterPriorityExposureModeInput,\n type ShutterPriorityAutoIsoPolicy,\n type ShutterPriorityExposureModeResolution\n} from \"./exposure/exposure-mode-resolver.js\";\n\nexport {\n STABILIZATION_DISTURBANCE_TRAJECTORY_VERSION,\n STABILIZATION_SYSTEM_PROFILE_SCHEMA_VERSION,\n calculateStabilizedCaptureTemporalSamples,\n calculateStabilizedRotationTrajectory,\n parseStabilizationDisturbanceTrajectory,\n parseStabilizationSystemProfile,\n type CalculateStabilizedCaptureTemporalSamplesInput,\n type CalculateStabilizedRotationTrajectoryInput,\n type PhysicalStabilizationArchitecture,\n type StabilizationAngularStateRad,\n type StabilizationAxisResolution,\n type StabilizationAxisResponseProfile,\n type StabilizationCaptureKind,\n type StabilizationCoordinatedAllocation,\n type StabilizationDisturbanceSample,\n type StabilizationDisturbanceTrajectory,\n type StabilizationPanningPolicy,\n type StabilizationRotationAxis,\n type StabilizationSystemProfile,\n type StabilizedCaptureTemporalNode,\n type StabilizedCaptureTemporalPoint,\n type StabilizedCaptureTemporalSamples,\n type StabilizedRotationSample,\n type StabilizedRotationTrajectory\n} from \"./stabilization/system.js\";\n\nexport {\n estimateCameraShakeBlur,\n type CameraShakeBlurSample,\n type CameraShakeEstimate,\n type EstimateCameraShakeBlurInput\n} from \"./stabilization/camera-shake.js\";\n\nexport {\n calculatePhotoelectrons,\n calculateSignalToNoise,\n type CalculatePhotoelectronsInput,\n type CalculateSignalToNoiseInput,\n type SignalToNoise\n} from \"./sensor/signal-noise.js\";\n\nexport {\n assessRadiometryReadiness,\n parseRadiometryReadinessProfile,\n type CalibrationArtifactReference,\n type ExposureIntegrationRequirement,\n type OpticalTransmissionRequirement,\n type PhotositeCollectionAreaRequirement,\n type PupilVignettingRequirement,\n type RadiometryReadinessAssessment,\n type RadiometryReadinessProfile,\n type RadiometryRequirement,\n type RadiometryRequirementId,\n type RadiometryScientificStatus,\n type RadiometryUncertaintyDeclaration,\n type SceneSpectralRadianceRequirement,\n type SensorResponseRequirement\n} from \"./sensor/radiometry-readiness.js\";\n\nexport {\n POC_SIMULATION_API_VERSION,\n simulatePocCamera,\n type PocSimulationRequest,\n type PocSimulationResponse\n} from \"./simulation/poc-simulation.js\";\n\nexport {\n InvalidConfigurationError,\n parseCameraConfiguration,\n parseSceneDefinition\n} from \"./schema/validation.js\";\n\nexport { calculateSensorEqeLocalExposure, type CalculateSensorEqeLocalExposureInput,\n type SensorEqeLocalExposure } from \"./sensor/eqe-local-exposure.js\";\n\nexport { calculateSceneToSensorIrradianceQuadrature, type CalculateSceneToSensorIrradianceQuadratureInput,\n type SceneSensorQuadratureSample, type SceneToSensorIrradianceQuadrature } from \"./optics/scene-to-sensor-quadrature.js\";\n\nexport { calculateSceneSensorEqeTemporalExposure, type CalculateSceneSensorEqeTemporalExposureInput,\n type SceneSensorEqeTemporalExposure } from \"./sensor/scene-eqe-temporal-exposure.js\";\nexport { calculateSensorPsfIrradianceQuadrature, type CalculateSensorPsfIrradianceQuadratureInput,\n type SensorPsfSourceSample, type SensorPsfIrradianceQuadrature } from \"./optics/sensor-psf-quadrature.js\";\nexport { calculateSensorEnvironmentRadianceQuery, type CalculateSensorEnvironmentRadianceQueryInput,\n type EnvironmentLensFieldMapping, type SensorEnvironmentLensFieldMappingResult,\n type SensorEnvironmentRadianceQuery } from \"./optics/sensor-environment-query.js\";\nexport { calculateSensorEqeTemporalExposure, type CalculateSensorEqeTemporalExposureInput,\n type SensorEqeTemporalExposure } from \"./sensor/eqe-temporal-exposure.js\";\n\nexport { createSensorEqeTemporalPhotoSignal, parseSensorEqeTemporalPhotoSignal,\n type SensorEqeTemporalPhotoSignal, type SensorEqePhotoExposure } from \"./sensor/temporal-photo-signal.js\";\n\nexport type { SensorTemporalDarkCurrentCharge, SensorPhotoDarkCurrentCharge } from \"./sensor/dark-current.js\";\n\nexport { calculateEnvironmentSensorPhotoSignal, type CalculateEnvironmentSensorPhotoSignalInput,\n type EnvironmentSensorPhotoSignal, type EnvironmentRadianceEvaluator, type EnvironmentApertureRadianceEvaluator } from \"./sensor/environment-photo-signal.js\";\nexport { simulateEnvironmentSensorRawFrame, type SimulateEnvironmentSensorRawFrameInput,\n type EnvironmentSensorRawFrame } from \"./capture/environment-raw-producer.js\";\n\nexport { calculateProcessedSensorRaw, parseProcessedSensorRawInput, type ProcessedSensorRawInput,\n type ProcessedSensorRawResult } from \"./capture/photographic-export.js\";\nexport { calculatePrintPlan, calculatePrintSizeLimit, parsePrintPlanInput } from \"./output/print-plan.js\";\nexport type { PrintLength, PrintedImageSize, PrintSamplingCriterion, PrintNativeSource, PrintProviderConstraints, PrintPlanInput, PrintRasterSampling, PrintPlan, PrintSizeLimitInput, PrintSizeLimit } from \"./output/print-plan.js\";\nexport { PRINT_REGION_DETAIL_MODEL_VERSION, MAX_PRINT_DETAIL_REGION_SAMPLES, calculatePrintRegionDetail, parsePrintRegionDetailInput } from \"./output/print-detail.js\";\nexport type { PrintDetailSource, PrintDetailRegion, PrintSinusoidalTarget, PrintRegionDetailInput, PrintSinusoidalMeasurement, PrintRegionDetailAssessment } from \"./output/print-detail.js\";\nexport { PRINT_REGION_STATISTICS_MODEL_VERSION, MAX_PRINT_REGION_STATISTICS_SAMPLES,\n calculatePrintRegionDifference, calculatePrintRegionNoise, parsePrintRegionDifferenceInput, parsePrintRegionNoiseInput } from \"./output/print-region-statistics.js\";\nexport type { PrintRegionRaster, PrintRegionDifferenceInput, PrintRegionNoiseInput, PrintRegionDifferenceMeasurement,\n PrintRegionNoiseMeasurement, PrintRegionStatisticsAssessment } from \"./output/print-region-statistics.js\";\nexport { PRINT_CONTRAST_REFERENCE_MODEL_VERSION, PRINT_CONTRAST_REFERENCE_UPSTREAM_REVISION,\n calculatePrintContrastReference, parsePrintContrastReferenceInput } from \"./output/print-contrast-reference.js\";\nexport type { PrintContrastReferenceInput, PrintContrastReference } from \"./output/print-contrast-reference.js\";\nexport { NATIVE_RAW_SCHEMA_VERSION, NATIVE_RAW_LIMITS, calculateNativeRawPlan, createNativeRawTask } from \"./capture/native-raw.js\";\nexport { PRINT_JPEG_SCHEMA_VERSION, PRINT_JPEG_LIMITS, parsePrintJpegInput, createPrintJpegTask } from \"./output/print-jpeg.js\";\nexport type { PrintJpegSource, PrintJpegInput, PrintJpegTileRequest, PrintJpegTile, PrintJpegProvider, PrintJpegOutput, PrintJpegTask } from \"./output/print-jpeg.js\";\nexport { SRGB_ICC_PROFILE_VERSION, createSrgbIccProfile } from \"./color/srgb-icc.js\";\nexport { createNativeEnvironmentRawTask, createNativeEnvironmentSensorStageTask, calculateNativeRawRowBands, createNativeEnvironmentRawPartitionTask,\n composeNativeEnvironmentRawPartitions } from \"./capture/native-environment-raw.js\";\nexport type { NativeEnvironmentRawInput, NativeEnvironmentRawTile, NativeEnvironmentPhotoTile, NativeEnvironmentRawProvider, NativeEnvironmentRawOutput,\n NativeEnvironmentRawTask, NativeRawRowBand, NativeEnvironmentRawPartition, NativeEnvironmentRawPartitionTask, NativeEnvironmentRadianceQuery } from \"./capture/native-environment-raw.js\";\nexport { NATIVE_ENVIRONMENT_OPTICAL_STAGE_LIMITS } from \"./capture/native-environment-optical-stage.js\";\nexport type { NativeEnvironmentOpticalStage, NativeEnvironmentOpticalStageRetention, NativeEnvironmentSensorStageInput,\n NativeEnvironmentSensorStageProvider } from \"./capture/native-environment-optical-stage.js\";\nexport { createNativeRawDevelopmentTask } from \"./capture/native-raw-development.js\";\nexport type { NativeRawDevelopmentInput, NativeRawDevelopmentOutput, NativeRawDevelopmentProvider, NativeRawDevelopmentTask,\n RawHighlightDiagnostics } from \"./capture/native-raw-development.js\";\nexport type { NativeRawExposureInput, NativeRawExposure, NativeRawInput, NativeRawPlan, NativeRawTileRequest, NativeRawTile,\n NativeRawProvider, NativeRawOutput, NativeRawTaskState, NativeRawTask } from \"./capture/native-raw.js\";\nexport { NATIVE_CAPTURE_SDR_SCHEMA_VERSION, NATIVE_CAPTURE_SDR_LIMITS, calculateNativeCaptureSdrPlan, createNativeCaptureSdrTask } from \"./output/native-capture-sdr.js\";\nexport type { NativeCaptureSdrInput, NativeCaptureSdrTileRequest, NativeCaptureSdrTile, NativeCaptureSdrProvider, NativeCaptureSdrPlan,\n NativeCaptureSdrOutput, NativeCaptureSdrTaskState, NativeCaptureSdrTask, NativeTaskProgress } from \"./output/native-capture-sdr.js\";\n\nexport { IRRADIANCE_CONVOLUTION_SCHEMA_VERSION, IRRADIANCE_CONVOLUTION_LIMITS, calculateIrradianceConvolutionPlan, calculateIrradianceConvolution } from \"./optics/irradiance-convolution.js\";\nexport type { IrradianceConvolutionInput, IrradianceConvolutionPlan } from \"./optics/irradiance-convolution.js\";\nexport { LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION, LENS_PSF_CONVOLUTION_KERNELS_MAXIMUM_WAVELENGTHS, resolveLensPsfConvolutionKernels } from \"./optics/lens-psf-kernels.js\";\nexport type { LensPsfConvolutionKernelsInput, LensPsfConvolutionKernels } from \"./optics/lens-psf-kernels.js\";\nexport { DIFFRACTION_LIMITED_PSF_PROFILE_MODEL, DIFFRACTION_LIMITED_PSF_PROFILE_LIMITS, createDiffractionLimitedPsfProfile } from \"./optics/diffraction-psf-profile.js\";\nexport type { CreateDiffractionLimitedPsfProfileInput, DiffractionLimitedPsfProfile, DiffractionLimitedPsfWavelength } from \"./optics/diffraction-psf-profile.js\";\nexport { PACKED_SENSOR_RAW_SCHEMA_VERSION, PACKED_SENSOR_RAW_LIMITS, calculatePackedSensorRawPlan, simulatePackedSensorRaw } from \"./capture/packed-sensor-raw.js\";\nexport type { PackedSensorRawInput, PackedSensorRawPlan, PackedSensorRawDiagnostics, PackedSensorRawResult, PackedSensorFixedPatternNoise,\n PackedSensorAdditionalChargeComponent } from \"./capture/packed-sensor-raw.js\";\nexport { TEMPORAL_EXPOSURE_SUM_SCHEMA_VERSION, TEMPORAL_EXPOSURE_SUM_LIMITS, calculateTemporalExposureSumPlan, calculateTemporalExposureSum } from \"./motion/temporal-exposure-sum.js\";\nexport type { TemporalExposureSumInput, TemporalExposureSumNode, TemporalExposureSumPlan } from \"./motion/temporal-exposure-sum.js\";\nexport { ImageKernelExecutionError, WEBGPU_F32_UNIT_ROUNDOFF, WEBGPU_F32_TRANSFER_ABSOLUTE_BOUND, composeRelativeErrorBounds } from \"./gpu/image-kernel-execution.js\";\nexport type { ImageKernelBackend, ImageKernelFallbackReason, ImageKernelFailureReason, ImageKernelExecution, ImageKernelCodeErrorBound,\n ImageKernelRelativeErrorBound, ImageKernelSeededRealizationBound } from \"./gpu/image-kernel-execution.js\";\nexport { createImageKernelAccelerator } from \"./gpu/image-kernel-accelerator.js\";\nexport type { ImageKernelAccelerator, ImageKernelAcceleratorOptions, ImageKernelAcceleratorState, ImageKernelRunOptions,\n AcceleratedNativeCaptureSdrOutput, AcceleratedNativeRawDevelopmentOutput, IrradianceConvolutionResult, AcceleratedPackedSensorRawResult,\n TemporalExposureSumResult, ChartRadianceResult } from \"./gpu/image-kernel-accelerator.js\";\nexport { BUILT_IN_BAYER_DEMOSAIC_MODEL_VERSION, createBuiltInBayerDemosaicProfiles, type BuiltInBayerDemosaicKernel, type BuiltInBayerDemosaicProfiles,\n type CreateBuiltInBayerDemosaicProfilesInput, type RawReconstructionBorderHandling } from \"./sensor/raw-reconstruction.js\";\nexport { PROCESSING_MAX_PIXELS, PROCESSING_MAX_FRAMES, PROCESSING_DEFAULT_MAXIMUM_WORKING_BYTES, PROCESSING_MODEL_VERSION,\n type ProcessingProvider, type ProcessingTask, type ProcessingTaskState, type ProcessingRgbImage, type ProcessingLinearColorSpace,\n type ProcessingProvenance } from \"./processing/processing-task.js\";\nexport { createCfaPlaneReconstructionTask, createAhdDemosaicTask, type CfaMosaicPlane, type CfaPlaneReconstructionInput,\n type CfaPlaneReconstructionOutput, type AhdDemosaicInput, type AhdDemosaicOutput } from \"./processing/demosaic.js\";\nexport { createHdrBracketMergeTask, createHdrImageEncodingTask, type HdrBracketFrame, type HdrBracketMergeInput, type HdrBracketMergeOutput,\n type HdrTransfer, type HdrImageEncodingInput, type HdrImageEncodingOutput } from \"./processing/hdr.js\";\nexport { createReinhardGlobalToneMappingTask, createDurandDorseyToneMappingTask, createExposureFusionTask, type ToneMappedImage,\n type ReinhardGlobalToneMappingInput, type ReinhardGlobalToneMappingOutput, type DurandDorseyToneMappingInput, type DurandDorseyToneMappingOutput,\n type ExposureFusionInput, type ExposureFusionOutput } from \"./processing/tone-mapping.js\";\nexport { createFocusStackTask, type FocusStackInput, type FocusStackOutput } from \"./processing/focus-stacking.js\";\nexport { createPanoramaTask, type PanoramaFrame, type PanoramaCanvas, type PanoramaInput, type PanoramaOutput } from \"./processing/panorama.js\";\nexport { SYNTHETIC_FILM_GRAIN_STREAM_ID, createBilateralFilterTask, createNonLocalMeansTask, createUnsharpMaskTask, createSyntheticFilmGrainTask,\n type ProcessedRgbImage, type BilateralFilterInput, type NonLocalMeansInput, type UnsharpMaskInput, type SyntheticFilmGrainInput,\n type SyntheticFilmGrainOutput } from \"./processing/denoise.js\";\n\nexport { calculateSensorApertureRays, type CalculateSensorApertureRaysInput, type IdealCircularPupil, type SensorApertureRay, type SensorApertureRays } from \"./optics/sensor-aperture-rays.js\";\n\nexport { SIMULATE_CAPTURE_FACADE_VERSION, SIMULATE_CAPTURE_DEFAULT_ILLUMINANCE_LUX, SIMULATE_CAPTURE_COST_OPTIONS, simulateCapture,\n type SimulateCaptureOptions, type SimulateCaptureResult, type SimulateCaptureAssumption, type SimulateCaptureProgress,\n type SimulateCaptureExposureMode, type SimulateCaptureOutputFormat, type SimulateCaptureWhiteBalance, type SimulateCaptureColorEncoding,\n type SimulateCaptureDemosaic, type SimulateCaptureBorderHandling, type SimulateCaptureLensDistortion, type SimulateCaptureMotion,\n type SimulateCaptureSensorAntiAliasing, type SimulateCaptureCostOption, type SimulateCapturePixelAperture, SIMULATE_CAPTURE_BOX_APERTURE_DEFAULT_SAMPLES,\n simulateIdealReference, type IdealReferenceResult } from \"./facade/simulate-capture.js\";\nexport { GENERIC_PRIME_EQUIVALENT_FOCAL_LENGTHS_MM, GENERIC_PRIME_THIRD_STOP_F_NUMBERS, GENERIC_PRIME_MINIMUM_FOCUS, resolveGenericPrimeLens,\n calculateGenericPrimeMinimumFocusDistanceM, type GenericPrimeLens, type GenericPrimeEquivalentFocalLengthMm } from \"./equipment/generic-prime-lenses.js\";\nexport { calculateSubjectDistanceForFraming, type CalculateSubjectDistanceForFramingInput, type SubjectFraming, type SubjectFramingFit } from \"./facade/subject-framing.js\";\nexport { CHART_SCENE_PRESETS, CHART_SCENE_DEFAULTS, CHART_SPECTRAL_RANGE_NANOMETERS, resolveChartScene, calculateStepWedgeReflectances,\n calculatePointGridCenters, type ChartScene, type ChartScenePresetId, type ChartReflectance, type ResolvedChartScene, type UniformChartScene,\n type SlantedEdgeChartScene, type SiemensStarChartScene, type StepWedgeChartScene, type GreyRampChartScene, type CheckerboardChartScene,\n type PointGridChartScene, type PatchChartScene, CHART_CONTINUOUS_LEVELS, calculateBarGroupTargets, calculateSlantedSquareEdges,\n type DeadLeavesChartScene, type BarGroupsChartScene, type HyperbolicWedgeChartScene, type ZonePlateChartScene, type SlantedSquaresChartScene,\n type LineGridChartScene, type FiducialChartScene, type CompositeChartScene, type CompositeChartElement, type ChartElementScene,\n type ChartRectangle, type ChartBarGroupTarget, type ChartSlantedSquare } from \"./facade/chart-scenes.js\";\nexport { PHOTOPIC_MAXIMUM_LUMINOUS_EFFICACY_LM_PER_W, resolveCaptureIlluminant, createPlanarSceneRadianceProvider, CHART_SIZE_DEFAULT_SURROUND_REFLECTANCE, type ChartSizeOption,\n type CaptureIlluminant, type ResolvedCaptureIlluminant, type CallerReflectanceScene, type CallerRadianceScene, type ScenePlanePoint,\n type PlanarSceneRadianceProvider } from \"./facade/scene-radiance.js\";\nexport { CHART_RADIANCE_BATCH_SCHEMA_VERSION, CHART_RADIANCE_BATCH_LIMITS, calculateChartRadianceBatchPlan, calculateChartRadianceBatch,\n mapEnvironmentDirectionsToChartPoints, type ChartRadianceBatchInput, type ChartRadianceBatchPlan } from \"./facade/chart-radiance-batch.js\";\nexport { EXPORT_JPEG_ENCODER_ID } from \"./capture/export-jpeg.js\";\nexport { DNG_IMPORT_SCHEMA_VERSION, DNG_IMPORT_LIMITS, parseDngRawImage } from \"./capture/dng-import.js\";\nexport { NATIVE_RAW_DNG_SCHEMA_VERSION, serializeNativeRawDng, type SerializeNativeRawDngInput, type NativeRawDng, type NativeRawDngChannelNoise } from \"./capture/native-raw-dng.js\";\nexport type { DngImportInput, ImportedDngRaw, ImportedDngCfa, ImportedDngBlackLevel, ImportedDngRect } from \"./capture/dng-import.js\";\nexport { parseLosslessJpeg, type LosslessJpegImage, type LosslessJpegLimits } from \"./capture/lossless-jpeg.js\";\nexport { PNG_ENCODER_ID, PNG_ENCODER_LIMITS, serializePngImage } from \"./output/png-encoder.js\";\nexport type { PngEncodeInput, PngColourEncoding, PngCicpPrimaries, PngCicpTransfer, PngMasteringDisplay, PngContentLightLevel } from \"./output/png-encoder.js\";\n\ndeclare global {\n /**\n * Minimal global AbortSignal type. It lets the published declarations type-check with\n * `lib: [\"es2022\"]` and no DOM or `@types/node` types. (Task and yield callbacks receive a signal\n * the engine creates.) It merges cleanly with the DOM, WebWorker and Node declarations, which\n * declare the same `aborted` member.\n */\n interface AbortSignal {\n readonly aborted: boolean;\n }\n}\n"]}
@@ -7,7 +7,9 @@
7
7
  * PSF tap then maps to a site displacement with the per-site quadrature's inverse support
8
8
  * (`sensorPsfSourcePoint`): tap (kx, ky) is the source at native offset (−(kx − cx)·pₓ, +(ky − cy)·p_y)
9
9
  * from the destination, so its weight lands at displacement u = (kx − cx)·pₓ/sₓ, v = −(ky − cy)·p_y/s_y
10
- * sites (p: PSF sample pitch, s: site pitch).
10
+ * sites (p: PSF sample pitch, s: site pitch). When p equals s the displacement is taken as the tap offset itself
11
+ * (kx − cx, −(ky − cy)): the rounded quotient (n·p)/p misses the integer n by one unit in the last place for some
12
+ * pitches (for example 3 · 1.6 / 1.6), which split the tap bilinearly or reached one site past the window (2.2.1).
11
13
  *
12
14
  * - **Exact site sampling.** When every displacement is an integer (equal pitches, integer centre), each
13
15
  * tap's weight goes to one kernel cell. For a destination whose PSF equals its patch's, the
@@ -8,7 +8,9 @@
8
8
  * PSF tap then maps to a site displacement with the per-site quadrature's inverse support
9
9
  * (`sensorPsfSourcePoint`): tap (kx, ky) is the source at native offset (−(kx − cx)·pₓ, +(ky − cy)·p_y)
10
10
  * from the destination, so its weight lands at displacement u = (kx − cx)·pₓ/sₓ, v = −(ky − cy)·p_y/s_y
11
- * sites (p: PSF sample pitch, s: site pitch).
11
+ * sites (p: PSF sample pitch, s: site pitch). When p equals s the displacement is taken as the tap offset itself
12
+ * (kx − cx, −(ky − cy)): the rounded quotient (n·p)/p misses the integer n by one unit in the last place for some
13
+ * pitches (for example 3 · 1.6 / 1.6), which split the tap bilinearly or reached one site past the window (2.2.1).
12
14
  *
13
15
  * - **Exact site sampling.** When every displacement is an integer (equal pitches, integer centre), each
14
16
  * tap's weight goes to one kernel cell. For a destination whose PSF equals its patch's, the
@@ -105,12 +107,15 @@ export function resolveLensPsfConvolutionKernels(input) {
105
107
  throughput += share * resolved.relativePupilThroughputFactor;
106
108
  if (resolved.resolutionStatus !== "exact-grid-sample")
107
109
  interpolated = true;
110
+ const equalX = k.samplePitchMicrometersX === sx, equalY = k.samplePitchMicrometersY === sy;
108
111
  for (let ky = 0; ky < k.heightSamples; ky++)
109
112
  for (let kx = 0; kx < k.widthSamples; kx++) {
110
113
  const intensity = k.normalizedIntensity[ky * k.widthSamples + kx];
111
114
  if (intensity === 0)
112
115
  continue;
113
- const u = (kx - k.centerSampleX) * k.samplePitchMicrometersX / sx, v = -(ky - k.centerSampleY) * k.samplePitchMicrometersY / sy;
116
+ // With equal pitches the displacement is the tap offset itself: (n·p)/p can miss n by one unit in the last place.
117
+ const u = equalX ? kx - k.centerSampleX : (kx - k.centerSampleX) * k.samplePitchMicrometersX / sx;
118
+ const v = equalY ? -(ky - k.centerSampleY) : -(ky - k.centerSampleY) * k.samplePitchMicrometersY / sy;
114
119
  const u0 = Math.floor(u), v0 = Math.floor(v), fu = u - u0, fv = v - v0, w = share * intensity;
115
120
  if (fu !== 0 || fv !== 0)
116
121
  exact = false;
@@ -1 +1 @@
1
- {"version":3,"file":"lens-psf-kernels.js","sourceRoot":"","sources":["../../src/optics/lens-psf-kernels.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Samples the engine's lens PSFs (`LensSampledPsfProfile`, resolved with `resolveLensSampledPsf`) into\n * the per-patch kernels of the isoplanatic convolution (`calculateIrradianceConvolution`, #277).\n *\n * For each patch, the PSF is resolved at the patch centre's field point, in the per-site engine's own\n * coordinates: native sensor millimetres from the optical axis (+Y down), field point (x, −y). Every\n * PSF tap then maps to a site displacement with the per-site quadrature's inverse support\n * (`sensorPsfSourcePoint`): tap (kx, ky) is the source at native offset (−(kx − cx)·pₓ, +(ky − cy)·p_y)\n * from the destination, so its weight lands at displacement u = (kx − cx)·pₓ/sₓ, v = −(ky − cy)·p_y/s_y\n * sites (p: PSF sample pitch, s: site pitch).\n *\n * - **Exact site sampling.** When every displacement is an integer (equal pitches, integer centre), each\n * tap's weight goes to one kernel cell. For a destination whose PSF equals its patch's, the\n * convolution then equals the per-site PSF quadrature at site-centre sources term by term.\n * - **Otherwise (labelled approximation): bilinear splatting.** Each weight is split over the four\n * surrounding integer displacements with bilinear weights. This is the exact adjoint of bilinear\n * interpolation, so the convolution equals the per-site quadrature applied to the bilinear interpolant of\n * the site-centre samples (tested). Weights are conserved.\n *\n * With several wavelengths the kernel is the weight-normalized sum of the per-wavelength kernels. For a\n * spectrally neutral scene that is exactly the per-site engine's spectral sum when the weights are its\n * spectral quadrature weights times the scene spectrum (see docs/WEBGPU.md).\n *\n * The patch approximation (one PSF per patch, indexed by source site) is the caller's choice of patch\n * size; its method error is measured, not bounded (docs/WEBGPU.md, \"Per-fixture rollout\"). Relative\n * pupil throughput stays a separate factor and is reported, never folded into the unit-energy kernels.\n */\n\nimport { approximationResult, type CalculationResult } from \"../core/calculation-result.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport { requireAllowlistedRecord } from \"../core/record-validation.js\";\nimport { IRRADIANCE_CONVOLUTION_LIMITS } from \"./irradiance-convolution.js\";\nimport { markEngineOwnedLensSampledPsfProfile, resolveLensSampledPsf, type ResolveLensSampledPsfInput } from \"./lens-psf-profile.js\";\n\nexport const LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION = \"0.1.0\" as const;\n/** At most this many wavelengths per call. */\nexport const LENS_PSF_CONVOLUTION_KERNELS_MAXIMUM_WAVELENGTHS = 64;\n\nexport interface LensPsfConvolutionKernelsInput {\n schemaVersion: typeof LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION;\n /** The optical state, as for `resolveLensSampledPsf`, without the field point and wavelength. */\n psf: Omit<ResolveLensSampledPsfInput, \"fieldPointMm\" | \"wavelengthNm\">;\n /** One or more wavelengths with non-negative weights (at least one positive). */\n spectralWeights: readonly { wavelengthNm: number; weight: number }[];\n /** The convolution grid: sites, their pitch, and the optical axis in site units (site centres at i + 0.5). */\n grid: { width: number; height: number; sitePitchMicrometers: { x: number; y: number }; opticalAxisSite: { x: number; y: number } };\n /** Patch size in sites; the last row and column of patches may be partial. */\n patchWidth: number;\n patchHeight: number;\n /** Kernel radius to use; omitted, the smallest radius that holds every tap. A radius too small to hold the PSF is rejected. */\n kernelRadius?: number;\n}\n\nexport interface LensPsfConvolutionKernels {\n schemaVersion: typeof LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION;\n kernelRadius: number;\n patchWidth: number;\n patchHeight: number;\n patchColumns: number;\n patchRows: number;\n /** `[patchRow][patchColumn][v + r][u + r]`, ready for `IrradianceConvolutionInput.kernels`. */\n kernels: Float64Array;\n /** True when every tap landed on one integer displacement (no bilinear splatting). */\n exactSiteSampling: boolean;\n maximumKernelSum: number;\n /** Per patch, row-major: the field point used and the weight-averaged relative pupil throughput (not applied). */\n patches: readonly { fieldPointMm: { x: number; y: number }; relativePupilThroughputFactor: number; interpolated: boolean }[];\n}\n\nfunction positive(value: unknown, message: string): number {\n if (typeof value !== \"number\" || !(value > 0 && value <= Number.MAX_VALUE)) throw new InvalidConfigurationError(message);\n return value;\n}\nfunction integer(value: unknown, minimum: number, maximum: number, message: string): number {\n if (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < minimum || value > maximum) throw new InvalidConfigurationError(message);\n return value;\n}\n\n/**\n * Builds the per-patch convolution kernels from a sampled lens PSF profile.\n * @param input - See `LensPsfConvolutionKernelsInput`.\n * @returns The kernels and per-patch field points. Success does not imply calibration.\n * @see docs/WEBGPU.md, \"Kernels from a lens PSF profile\".\n */\nexport function resolveLensPsfConvolutionKernels(input: LensPsfConvolutionKernelsInput): CalculationResult<LensPsfConvolutionKernels> {\n const r = requireAllowlistedRecord(input, [\"schemaVersion\", \"psf\", \"spectralWeights\", \"grid\", \"patchWidth\", \"patchHeight\", \"kernelRadius\"],\n \"Invalid lens PSF convolution kernel input.\");\n if (r.schemaVersion !== LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION) throw new InvalidConfigurationError(\"Unsupported lens PSF convolution kernel schema.\");\n const L = IRRADIANCE_CONVOLUTION_LIMITS;\n const g = requireAllowlistedRecord(r.grid, [\"width\", \"height\", \"sitePitchMicrometers\", \"opticalAxisSite\"], \"Invalid convolution grid.\");\n const width = integer(g.width, 1, L.maximumDimension, \"Invalid convolution grid size.\"), height = integer(g.height, 1, L.maximumDimension, \"Invalid convolution grid size.\");\n const pitch = requireAllowlistedRecord(g.sitePitchMicrometers, [\"x\", \"y\"], \"Invalid site pitch.\");\n const sx = positive(pitch.x, \"Site pitch must be positive.\"), sy = positive(pitch.y, \"Site pitch must be positive.\");\n const axis = requireAllowlistedRecord(g.opticalAxisSite, [\"x\", \"y\"], \"Invalid optical axis.\");\n if (typeof axis.x !== \"number\" || typeof axis.y !== \"number\" || !Number.isFinite(axis.x) || !Number.isFinite(axis.y)) {\n throw new InvalidConfigurationError(\"The optical axis must be finite site coordinates.\");\n }\n const patchWidth = integer(r.patchWidth, 1, width, \"Invalid patch size.\"), patchHeight = integer(r.patchHeight, 1, height, \"Invalid patch size.\");\n const columns = Math.ceil(width / patchWidth), rows = Math.ceil(height / patchHeight);\n if (columns * rows > L.maximumPatchCount) throw new InvalidConfigurationError(\"Too many patches.\");\n const list = r.spectralWeights;\n if (!Array.isArray(list) || list.length < 1 || list.length > LENS_PSF_CONVOLUTION_KERNELS_MAXIMUM_WAVELENGTHS) {\n throw new InvalidConfigurationError(\"spectralWeights must list 1 to 64 wavelengths.\");\n }\n const spectral = list.map((entry: unknown) => {\n const e = requireAllowlistedRecord(entry, [\"wavelengthNm\", \"weight\"], \"Invalid spectral weight.\");\n if (typeof e.weight !== \"number\" || !(e.weight >= 0 && e.weight <= Number.MAX_VALUE)) throw new InvalidConfigurationError(\"Spectral weights must be finite and non-negative.\");\n return { wavelengthNm: positive(e.wavelengthNm, \"Wavelengths must be positive.\"), weight: e.weight };\n });\n const totalWeight = spectral.reduce((s, e) => s + e.weight, 0);\n if (!(totalWeight > 0 && totalWeight <= Number.MAX_VALUE)) throw new InvalidConfigurationError(\"At least one spectral weight must be positive.\");\n const psf = requireAllowlistedRecord(r.psf, [\"profile\", \"focalLengthMm\", \"focus\", \"apertureFNumber\", \"signedDefocusImagePlaneMicrometers\"], \"Invalid PSF state.\");\n // One private parse of the profile for every patch and wavelength.\n const profile = structuredClone(psf.profile);\n markEngineOwnedLensSampledPsfProfile(profile);\n const state = { ...(psf as unknown as Omit<ResolveLensSampledPsfInput, \"fieldPointMm\" | \"wavelengthNm\">), profile } as Omit<ResolveLensSampledPsfInput, \"fieldPointMm\" | \"wavelengthNm\">;\n\n // Resolve every patch and wavelength, splatting straight into one scratch displacement map sized for the largest\n // allowed radius; each patch keeps a copy cropped to its own reach. The common radius is known only at the end.\n // Every cell receives its weights in the same order as a direct sum (taps in kernel order, then the four\n // bilinear corners), so the kernels do not depend on the scratch layout.\n const M = L.maximumKernelRadius, scratchSize = 2 * M + 1, scratch = new Float64Array(scratchSize * scratchSize);\n const cropped: { reach: number; values: Float64Array }[] = [], patches: LensPsfConvolutionKernels[\"patches\"][number][] = [];\n let reach = 0, exact = true, overflow = false;\n for (let pr = 0; pr < rows; pr++) for (let pc = 0; pc < columns; pc++) {\n const x0 = pc * patchWidth, y0 = pr * patchHeight, x1 = Math.min(width, x0 + patchWidth), y1 = Math.min(height, y0 + patchHeight);\n const nativeX = ((x0 + x1) / 2 - axis.x) * sx / 1000, nativeY = ((y0 + y1) / 2 - axis.y) * sy / 1000;\n const fieldPointMm = { x: nativeX, y: -nativeY };\n let throughput = 0, interpolated = false, patchReach = 0;\n for (const { wavelengthNm, weight } of spectral) {\n if (weight === 0) continue;\n const resolved = resolveLensSampledPsf({ ...state, fieldPointMm, wavelengthNm }).value, k = resolved.kernel, share = weight / totalWeight;\n throughput += share * resolved.relativePupilThroughputFactor;\n if (resolved.resolutionStatus !== \"exact-grid-sample\") interpolated = true;\n for (let ky = 0; ky < k.heightSamples; ky++) for (let kx = 0; kx < k.widthSamples; kx++) {\n const intensity = k.normalizedIntensity[ky * k.widthSamples + kx]!;\n if (intensity === 0) continue;\n const u = (kx - k.centerSampleX) * k.samplePitchMicrometersX / sx, v = -(ky - k.centerSampleY) * k.samplePitchMicrometersY / sy;\n const u0 = Math.floor(u), v0 = Math.floor(v), fu = u - u0, fv = v - v0, w = share * intensity;\n if (fu !== 0 || fv !== 0) exact = false;\n for (let corner = 0; corner < 4; corner++) {\n const du = corner & 1, dv = corner >> 1;\n const b = du === 0 ? (dv === 0 ? (1 - fu) * (1 - fv) : (1 - fu) * fv) : (dv === 0 ? fu * (1 - fv) : fu * fv);\n if (b === 0) continue;\n const cu = u0 + du, cv = v0 + dv;\n patchReach = Math.max(patchReach, Math.abs(cu), Math.abs(cv));\n // Past the largest radius the call is rejected below; resolving continues so errors keep their order.\n if (patchReach > M) { overflow = true; continue; }\n if (!overflow) scratch[(cv + M) * scratchSize + cu + M]! += w * b;\n }\n }\n }\n reach = Math.max(reach, patchReach);\n if (!overflow) {\n const n = 2 * patchReach + 1, values = new Float64Array(n * n);\n for (let v = -patchReach; v <= patchReach; v++) {\n const row = (v + M) * scratchSize + M;\n values.set(scratch.subarray(row - patchReach, row + patchReach + 1), (v + patchReach) * n);\n scratch.fill(0, row - patchReach, row + patchReach + 1);\n }\n cropped.push({ reach: patchReach, values });\n }\n patches.push(Object.freeze({ fieldPointMm: Object.freeze(fieldPointMm), relativePupilThroughputFactor: throughput, interpolated }));\n }\n const radius = r.kernelRadius === undefined ? reach : integer(r.kernelRadius, 0, L.maximumKernelRadius, \"Invalid kernel radius.\");\n if (reach > radius) throw new InvalidConfigurationError(\"The kernel radius is too small for the PSF support; no tap is dropped.\");\n if (radius > L.maximumKernelRadius) throw new InvalidConfigurationError(\"The PSF support needs a kernel radius above 32 sites.\");\n const size = 2 * radius + 1, taps = size * size;\n if (columns * rows * taps > L.maximumKernelWeights) throw new InvalidConfigurationError(\"Too many kernel weights.\");\n const kernels = new Float64Array(columns * rows * taps);\n let maximumKernelSum = 0;\n cropped.forEach(({ reach: q, values }, p) => {\n const n = 2 * q + 1;\n let sum = 0;\n for (let v = 0; v < n; v++) kernels.set(values.subarray(v * n, (v + 1) * n), p * taps + (v - q + radius) * size + radius - q);\n for (let t = 0; t < taps; t++) sum += kernels[p * taps + t]!;\n maximumKernelSum = Math.max(maximumKernelSum, sum);\n });\n if (maximumKernelSum > L.maximumKernelSum) throw new InvalidConfigurationError(\"Sampled kernels exceed unit energy.\");\n return approximationResult({ schemaVersion: LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION, kernelRadius: radius, patchWidth, patchHeight,\n patchColumns: columns, patchRows: rows, kernels, exactSiteSampling: exact, maximumKernelSum, patches: Object.freeze(patches) },\n \"lens-psf-convolution-kernels\", LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION, [\n \"One PSF per patch, resolved at the patch centre with resolveLensSampledPsf; indexed by source site in the convolution (isoplanatic patches).\",\n exact ? \"Every PSF tap maps to one integer site displacement (exact site sampling).\" :\n \"PSF taps between sites are split bilinearly (the adjoint of bilinear interpolation of site-centre samples); a labelled approximation.\",\n \"Relative pupil throughput is reported per patch and not applied to the unit-energy kernels.\"\n ]);\n}\n"]}
1
+ {"version":3,"file":"lens-psf-kernels.js","sourceRoot":"","sources":["../../src/optics/lens-psf-kernels.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,mBAAmB,EAA0B,MAAM,+BAA+B,CAAC;AAC5F,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,oCAAoC,EAAE,qBAAqB,EAAmC,MAAM,uBAAuB,CAAC;AAErI,MAAM,CAAC,MAAM,2CAA2C,GAAG,OAAgB,CAAC;AAC5E,8CAA8C;AAC9C,MAAM,CAAC,MAAM,gDAAgD,GAAG,EAAE,CAAC;AAiCnE,SAAS,QAAQ,CAAC,KAAc,EAAE,OAAe;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACzH,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAS,OAAO,CAAC,KAAc,EAAE,OAAe,EAAE,OAAe,EAAE,OAAe;IAChF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,OAAO,IAAI,KAAK,GAAG,OAAO;QAAE,MAAM,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAClJ,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAAC,KAAqC;IACpF,MAAM,CAAC,GAAG,wBAAwB,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC,EACxI,4CAA4C,CAAC,CAAC;IAChD,IAAI,CAAC,CAAC,aAAa,KAAK,2CAA2C;QAAE,MAAM,IAAI,yBAAyB,CAAC,iDAAiD,CAAC,CAAC;IAC5J,MAAM,CAAC,GAAG,6BAA6B,CAAC;IACxC,MAAM,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,iBAAiB,CAAC,EAAE,2BAA2B,CAAC,CAAC;IACxI,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,gCAAgC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,gCAAgC,CAAC,CAAC;IAC7K,MAAM,KAAK,GAAG,wBAAwB,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAClG,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,8BAA8B,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC;IACrH,MAAM,IAAI,GAAG,wBAAwB,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,uBAAuB,CAAC,CAAC;IAC9F,IAAI,OAAO,IAAI,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACrH,MAAM,IAAI,yBAAyB,CAAC,mDAAmD,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,qBAAqB,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAClJ,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;IACtF,IAAI,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB;QAAE,MAAM,IAAI,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;IACnG,MAAM,IAAI,GAAG,CAAC,CAAC,eAAe,CAAC;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,gDAAgD,EAAE,CAAC;QAC9G,MAAM,IAAI,yBAAyB,CAAC,gDAAgD,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAc,EAAE,EAAE;QAC3C,MAAM,CAAC,GAAG,wBAAwB,CAAC,KAAK,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,0BAA0B,CAAC,CAAC;QAClG,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,yBAAyB,CAAC,mDAAmD,CAAC,CAAC;QAC/K,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,+BAA+B,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACvG,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,gDAAgD,CAAC,CAAC;IACjJ,MAAM,GAAG,GAAG,wBAAwB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,EAAE,oCAAoC,CAAC,EAAE,oBAAoB,CAAC,CAAC;IAClK,mEAAmE;IACnE,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C,oCAAoC,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,EAAE,GAAI,GAAoF,EAAE,OAAO,EAAuE,CAAC;IAEzL,iHAAiH;IACjH,gHAAgH;IAChH,yGAAyG;IACzG,yEAAyE;IACzE,MAAM,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,YAAY,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;IAChH,MAAM,OAAO,GAA8C,EAAE,EAAE,OAAO,GAAmD,EAAE,CAAC;IAC5H,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC9C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QAAE,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;YACtE,MAAM,EAAE,GAAG,EAAE,GAAG,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,UAAU,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,WAAW,CAAC,CAAC;YAClI,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YACrG,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;YACjD,IAAI,UAAU,GAAG,CAAC,EAAE,YAAY,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC;YACzD,KAAK,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAChD,IAAI,MAAM,KAAK,CAAC;oBAAE,SAAS;gBAC3B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,WAAW,CAAC;gBAC1I,UAAU,IAAI,KAAK,GAAG,QAAQ,CAAC,6BAA6B,CAAC;gBAC7D,IAAI,QAAQ,CAAC,gBAAgB,KAAK,mBAAmB;oBAAE,YAAY,GAAG,IAAI,CAAC;gBAC3E,MAAM,MAAM,GAAG,CAAC,CAAC,uBAAuB,KAAK,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,uBAAuB,KAAK,EAAE,CAAC;gBAC3F,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,EAAE;oBAAE,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC;wBACxF,MAAM,SAAS,GAAG,CAAC,CAAC,mBAAmB,CAAC,EAAE,GAAG,CAAC,CAAC,YAAY,GAAG,EAAE,CAAE,CAAC;wBACnE,IAAI,SAAS,KAAK,CAAC;4BAAE,SAAS;wBAC9B,kHAAkH;wBAClH,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,uBAAuB,GAAG,EAAE,CAAC;wBAClG,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,uBAAuB,GAAG,EAAE,CAAC;wBACtG,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC;wBAC9F,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;4BAAE,KAAK,GAAG,KAAK,CAAC;wBACxC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;4BAC1C,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC;4BACxC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;4BAC7G,IAAI,CAAC,KAAK,CAAC;gCAAE,SAAS;4BACtB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;4BACjC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;4BAC9D,sGAAsG;4BACtG,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gCAAC,QAAQ,GAAG,IAAI,CAAC;gCAAC,SAAS;4BAAC,CAAC;4BAClD,IAAI,CAAC,QAAQ;gCAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,EAAE,GAAG,CAAC,CAAE,IAAI,CAAC,GAAG,CAAC,CAAC;wBACpE,CAAC;oBACH,CAAC;YACH,CAAC;YACD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/C,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC;oBACtC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,UAAU,EAAE,GAAG,GAAG,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,GAAG,UAAU,EAAE,GAAG,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC;gBAC1D,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,6BAA6B,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QACtI,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,mBAAmB,EAAE,wBAAwB,CAAC,CAAC;IAClI,IAAI,KAAK,GAAG,MAAM;QAAE,MAAM,IAAI,yBAAyB,CAAC,wEAAwE,CAAC,CAAC;IAClI,IAAI,MAAM,GAAG,CAAC,CAAC,mBAAmB;QAAE,MAAM,IAAI,yBAAyB,CAAC,uDAAuD,CAAC,CAAC;IACjI,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChD,IAAI,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,oBAAoB;QAAE,MAAM,IAAI,yBAAyB,CAAC,0BAA0B,CAAC,CAAC;IACpH,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IACxD,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;QAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9H,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;YAAE,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAE,CAAC;QAC7D,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,IAAI,gBAAgB,GAAG,CAAC,CAAC,gBAAgB;QAAE,MAAM,IAAI,yBAAyB,CAAC,qCAAqC,CAAC,CAAC;IACtH,OAAO,mBAAmB,CAAC,EAAE,aAAa,EAAE,2CAA2C,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW;QACpI,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAChI,8BAA8B,EAAE,2CAA2C,EAAE;QAC3E,8IAA8I;QAC9I,KAAK,CAAC,CAAC,CAAC,4EAA4E,CAAC,CAAC;YACpF,uIAAuI;QACzI,6FAA6F;KAC9F,CAAC,CAAC;AACL,CAAC","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Samples the engine's lens PSFs (`LensSampledPsfProfile`, resolved with `resolveLensSampledPsf`) into\n * the per-patch kernels of the isoplanatic convolution (`calculateIrradianceConvolution`, #277).\n *\n * For each patch, the PSF is resolved at the patch centre's field point, in the per-site engine's own\n * coordinates: native sensor millimetres from the optical axis (+Y down), field point (x, −y). Every\n * PSF tap then maps to a site displacement with the per-site quadrature's inverse support\n * (`sensorPsfSourcePoint`): tap (kx, ky) is the source at native offset (−(kx − cx)·pₓ, +(ky − cy)·p_y)\n * from the destination, so its weight lands at displacement u = (kx − cx)·pₓ/sₓ, v = −(ky − cy)·p_y/s_y\n * sites (p: PSF sample pitch, s: site pitch). When p equals s the displacement is taken as the tap offset itself\n * (kx − cx, −(ky − cy)): the rounded quotient (n·p)/p misses the integer n by one unit in the last place for some\n * pitches (for example 3 · 1.6 / 1.6), which split the tap bilinearly or reached one site past the window (2.2.1).\n *\n * - **Exact site sampling.** When every displacement is an integer (equal pitches, integer centre), each\n * tap's weight goes to one kernel cell. For a destination whose PSF equals its patch's, the\n * convolution then equals the per-site PSF quadrature at site-centre sources term by term.\n * - **Otherwise (labelled approximation): bilinear splatting.** Each weight is split over the four\n * surrounding integer displacements with bilinear weights. This is the exact adjoint of bilinear\n * interpolation, so the convolution equals the per-site quadrature applied to the bilinear interpolant of\n * the site-centre samples (tested). Weights are conserved.\n *\n * With several wavelengths the kernel is the weight-normalized sum of the per-wavelength kernels. For a\n * spectrally neutral scene that is exactly the per-site engine's spectral sum when the weights are its\n * spectral quadrature weights times the scene spectrum (see docs/WEBGPU.md).\n *\n * The patch approximation (one PSF per patch, indexed by source site) is the caller's choice of patch\n * size; its method error is measured, not bounded (docs/WEBGPU.md, \"Per-fixture rollout\"). Relative\n * pupil throughput stays a separate factor and is reported, never folded into the unit-energy kernels.\n */\n\nimport { approximationResult, type CalculationResult } from \"../core/calculation-result.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport { requireAllowlistedRecord } from \"../core/record-validation.js\";\nimport { IRRADIANCE_CONVOLUTION_LIMITS } from \"./irradiance-convolution.js\";\nimport { markEngineOwnedLensSampledPsfProfile, resolveLensSampledPsf, type ResolveLensSampledPsfInput } from \"./lens-psf-profile.js\";\n\nexport const LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION = \"0.1.0\" as const;\n/** At most this many wavelengths per call. */\nexport const LENS_PSF_CONVOLUTION_KERNELS_MAXIMUM_WAVELENGTHS = 64;\n\nexport interface LensPsfConvolutionKernelsInput {\n schemaVersion: typeof LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION;\n /** The optical state, as for `resolveLensSampledPsf`, without the field point and wavelength. */\n psf: Omit<ResolveLensSampledPsfInput, \"fieldPointMm\" | \"wavelengthNm\">;\n /** One or more wavelengths with non-negative weights (at least one positive). */\n spectralWeights: readonly { wavelengthNm: number; weight: number }[];\n /** The convolution grid: sites, their pitch, and the optical axis in site units (site centres at i + 0.5). */\n grid: { width: number; height: number; sitePitchMicrometers: { x: number; y: number }; opticalAxisSite: { x: number; y: number } };\n /** Patch size in sites; the last row and column of patches may be partial. */\n patchWidth: number;\n patchHeight: number;\n /** Kernel radius to use; omitted, the smallest radius that holds every tap. A radius too small to hold the PSF is rejected. */\n kernelRadius?: number;\n}\n\nexport interface LensPsfConvolutionKernels {\n schemaVersion: typeof LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION;\n kernelRadius: number;\n patchWidth: number;\n patchHeight: number;\n patchColumns: number;\n patchRows: number;\n /** `[patchRow][patchColumn][v + r][u + r]`, ready for `IrradianceConvolutionInput.kernels`. */\n kernels: Float64Array;\n /** True when every tap landed on one integer displacement (no bilinear splatting). */\n exactSiteSampling: boolean;\n maximumKernelSum: number;\n /** Per patch, row-major: the field point used and the weight-averaged relative pupil throughput (not applied). */\n patches: readonly { fieldPointMm: { x: number; y: number }; relativePupilThroughputFactor: number; interpolated: boolean }[];\n}\n\nfunction positive(value: unknown, message: string): number {\n if (typeof value !== \"number\" || !(value > 0 && value <= Number.MAX_VALUE)) throw new InvalidConfigurationError(message);\n return value;\n}\nfunction integer(value: unknown, minimum: number, maximum: number, message: string): number {\n if (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < minimum || value > maximum) throw new InvalidConfigurationError(message);\n return value;\n}\n\n/**\n * Builds the per-patch convolution kernels from a sampled lens PSF profile.\n * @param input - See `LensPsfConvolutionKernelsInput`.\n * @returns The kernels and per-patch field points. Success does not imply calibration.\n * @see docs/WEBGPU.md, \"Kernels from a lens PSF profile\".\n */\nexport function resolveLensPsfConvolutionKernels(input: LensPsfConvolutionKernelsInput): CalculationResult<LensPsfConvolutionKernels> {\n const r = requireAllowlistedRecord(input, [\"schemaVersion\", \"psf\", \"spectralWeights\", \"grid\", \"patchWidth\", \"patchHeight\", \"kernelRadius\"],\n \"Invalid lens PSF convolution kernel input.\");\n if (r.schemaVersion !== LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION) throw new InvalidConfigurationError(\"Unsupported lens PSF convolution kernel schema.\");\n const L = IRRADIANCE_CONVOLUTION_LIMITS;\n const g = requireAllowlistedRecord(r.grid, [\"width\", \"height\", \"sitePitchMicrometers\", \"opticalAxisSite\"], \"Invalid convolution grid.\");\n const width = integer(g.width, 1, L.maximumDimension, \"Invalid convolution grid size.\"), height = integer(g.height, 1, L.maximumDimension, \"Invalid convolution grid size.\");\n const pitch = requireAllowlistedRecord(g.sitePitchMicrometers, [\"x\", \"y\"], \"Invalid site pitch.\");\n const sx = positive(pitch.x, \"Site pitch must be positive.\"), sy = positive(pitch.y, \"Site pitch must be positive.\");\n const axis = requireAllowlistedRecord(g.opticalAxisSite, [\"x\", \"y\"], \"Invalid optical axis.\");\n if (typeof axis.x !== \"number\" || typeof axis.y !== \"number\" || !Number.isFinite(axis.x) || !Number.isFinite(axis.y)) {\n throw new InvalidConfigurationError(\"The optical axis must be finite site coordinates.\");\n }\n const patchWidth = integer(r.patchWidth, 1, width, \"Invalid patch size.\"), patchHeight = integer(r.patchHeight, 1, height, \"Invalid patch size.\");\n const columns = Math.ceil(width / patchWidth), rows = Math.ceil(height / patchHeight);\n if (columns * rows > L.maximumPatchCount) throw new InvalidConfigurationError(\"Too many patches.\");\n const list = r.spectralWeights;\n if (!Array.isArray(list) || list.length < 1 || list.length > LENS_PSF_CONVOLUTION_KERNELS_MAXIMUM_WAVELENGTHS) {\n throw new InvalidConfigurationError(\"spectralWeights must list 1 to 64 wavelengths.\");\n }\n const spectral = list.map((entry: unknown) => {\n const e = requireAllowlistedRecord(entry, [\"wavelengthNm\", \"weight\"], \"Invalid spectral weight.\");\n if (typeof e.weight !== \"number\" || !(e.weight >= 0 && e.weight <= Number.MAX_VALUE)) throw new InvalidConfigurationError(\"Spectral weights must be finite and non-negative.\");\n return { wavelengthNm: positive(e.wavelengthNm, \"Wavelengths must be positive.\"), weight: e.weight };\n });\n const totalWeight = spectral.reduce((s, e) => s + e.weight, 0);\n if (!(totalWeight > 0 && totalWeight <= Number.MAX_VALUE)) throw new InvalidConfigurationError(\"At least one spectral weight must be positive.\");\n const psf = requireAllowlistedRecord(r.psf, [\"profile\", \"focalLengthMm\", \"focus\", \"apertureFNumber\", \"signedDefocusImagePlaneMicrometers\"], \"Invalid PSF state.\");\n // One private parse of the profile for every patch and wavelength.\n const profile = structuredClone(psf.profile);\n markEngineOwnedLensSampledPsfProfile(profile);\n const state = { ...(psf as unknown as Omit<ResolveLensSampledPsfInput, \"fieldPointMm\" | \"wavelengthNm\">), profile } as Omit<ResolveLensSampledPsfInput, \"fieldPointMm\" | \"wavelengthNm\">;\n\n // Resolve every patch and wavelength, splatting straight into one scratch displacement map sized for the largest\n // allowed radius; each patch keeps a copy cropped to its own reach. The common radius is known only at the end.\n // Every cell receives its weights in the same order as a direct sum (taps in kernel order, then the four\n // bilinear corners), so the kernels do not depend on the scratch layout.\n const M = L.maximumKernelRadius, scratchSize = 2 * M + 1, scratch = new Float64Array(scratchSize * scratchSize);\n const cropped: { reach: number; values: Float64Array }[] = [], patches: LensPsfConvolutionKernels[\"patches\"][number][] = [];\n let reach = 0, exact = true, overflow = false;\n for (let pr = 0; pr < rows; pr++) for (let pc = 0; pc < columns; pc++) {\n const x0 = pc * patchWidth, y0 = pr * patchHeight, x1 = Math.min(width, x0 + patchWidth), y1 = Math.min(height, y0 + patchHeight);\n const nativeX = ((x0 + x1) / 2 - axis.x) * sx / 1000, nativeY = ((y0 + y1) / 2 - axis.y) * sy / 1000;\n const fieldPointMm = { x: nativeX, y: -nativeY };\n let throughput = 0, interpolated = false, patchReach = 0;\n for (const { wavelengthNm, weight } of spectral) {\n if (weight === 0) continue;\n const resolved = resolveLensSampledPsf({ ...state, fieldPointMm, wavelengthNm }).value, k = resolved.kernel, share = weight / totalWeight;\n throughput += share * resolved.relativePupilThroughputFactor;\n if (resolved.resolutionStatus !== \"exact-grid-sample\") interpolated = true;\n const equalX = k.samplePitchMicrometersX === sx, equalY = k.samplePitchMicrometersY === sy;\n for (let ky = 0; ky < k.heightSamples; ky++) for (let kx = 0; kx < k.widthSamples; kx++) {\n const intensity = k.normalizedIntensity[ky * k.widthSamples + kx]!;\n if (intensity === 0) continue;\n // With equal pitches the displacement is the tap offset itself: (n·p)/p can miss n by one unit in the last place.\n const u = equalX ? kx - k.centerSampleX : (kx - k.centerSampleX) * k.samplePitchMicrometersX / sx;\n const v = equalY ? -(ky - k.centerSampleY) : -(ky - k.centerSampleY) * k.samplePitchMicrometersY / sy;\n const u0 = Math.floor(u), v0 = Math.floor(v), fu = u - u0, fv = v - v0, w = share * intensity;\n if (fu !== 0 || fv !== 0) exact = false;\n for (let corner = 0; corner < 4; corner++) {\n const du = corner & 1, dv = corner >> 1;\n const b = du === 0 ? (dv === 0 ? (1 - fu) * (1 - fv) : (1 - fu) * fv) : (dv === 0 ? fu * (1 - fv) : fu * fv);\n if (b === 0) continue;\n const cu = u0 + du, cv = v0 + dv;\n patchReach = Math.max(patchReach, Math.abs(cu), Math.abs(cv));\n // Past the largest radius the call is rejected below; resolving continues so errors keep their order.\n if (patchReach > M) { overflow = true; continue; }\n if (!overflow) scratch[(cv + M) * scratchSize + cu + M]! += w * b;\n }\n }\n }\n reach = Math.max(reach, patchReach);\n if (!overflow) {\n const n = 2 * patchReach + 1, values = new Float64Array(n * n);\n for (let v = -patchReach; v <= patchReach; v++) {\n const row = (v + M) * scratchSize + M;\n values.set(scratch.subarray(row - patchReach, row + patchReach + 1), (v + patchReach) * n);\n scratch.fill(0, row - patchReach, row + patchReach + 1);\n }\n cropped.push({ reach: patchReach, values });\n }\n patches.push(Object.freeze({ fieldPointMm: Object.freeze(fieldPointMm), relativePupilThroughputFactor: throughput, interpolated }));\n }\n const radius = r.kernelRadius === undefined ? reach : integer(r.kernelRadius, 0, L.maximumKernelRadius, \"Invalid kernel radius.\");\n if (reach > radius) throw new InvalidConfigurationError(\"The kernel radius is too small for the PSF support; no tap is dropped.\");\n if (radius > L.maximumKernelRadius) throw new InvalidConfigurationError(\"The PSF support needs a kernel radius above 32 sites.\");\n const size = 2 * radius + 1, taps = size * size;\n if (columns * rows * taps > L.maximumKernelWeights) throw new InvalidConfigurationError(\"Too many kernel weights.\");\n const kernels = new Float64Array(columns * rows * taps);\n let maximumKernelSum = 0;\n cropped.forEach(({ reach: q, values }, p) => {\n const n = 2 * q + 1;\n let sum = 0;\n for (let v = 0; v < n; v++) kernels.set(values.subarray(v * n, (v + 1) * n), p * taps + (v - q + radius) * size + radius - q);\n for (let t = 0; t < taps; t++) sum += kernels[p * taps + t]!;\n maximumKernelSum = Math.max(maximumKernelSum, sum);\n });\n if (maximumKernelSum > L.maximumKernelSum) throw new InvalidConfigurationError(\"Sampled kernels exceed unit energy.\");\n return approximationResult({ schemaVersion: LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION, kernelRadius: radius, patchWidth, patchHeight,\n patchColumns: columns, patchRows: rows, kernels, exactSiteSampling: exact, maximumKernelSum, patches: Object.freeze(patches) },\n \"lens-psf-convolution-kernels\", LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION, [\n \"One PSF per patch, resolved at the patch centre with resolveLensSampledPsf; indexed by source site in the convolution (isoplanatic patches).\",\n exact ? \"Every PSF tap maps to one integer site displacement (exact site sampling).\" :\n \"PSF taps between sites are split bilinearly (the adjoint of bilinear interpolation of site-centre samples); a labelled approximation.\",\n \"Relative pupil throughput is reported per patch and not applied to the unit-energy kernels.\"\n ]);\n}\n"]}