@neilberkman/sidereon 0.16.1 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/pkg/sidereon.js CHANGED
@@ -3507,6 +3507,21 @@ export class DgnssSolution {
3507
3507
  }
3508
3508
  if (Symbol.dispose) DgnssSolution.prototype[Symbol.dispose] = DgnssSolution.prototype.free;
3509
3509
 
3510
+ /**
3511
+ * Early-late DLL processing mode for thermal-noise jitter.
3512
+ * @enum {0 | 1}
3513
+ */
3514
+ export const DllProcessing = Object.freeze({
3515
+ /**
3516
+ * Coherent early-minus-late processing.
3517
+ */
3518
+ Coherent: 0, "0": "Coherent",
3519
+ /**
3520
+ * Non-coherent early-minus-late power processing with squaring loss.
3521
+ */
3522
+ NonCoherent: 1, "1": "NonCoherent",
3523
+ });
3524
+
3510
3525
  /**
3511
3526
  * GNSS dilution-of-precision scalars.
3512
3527
  */
@@ -4279,6 +4294,151 @@ export class EllipsoidalHeightM {
4279
4294
  }
4280
4295
  if (Symbol.dispose) EllipsoidalHeightM.prototype[Symbol.dispose] = EllipsoidalHeightM.prototype.free;
4281
4296
 
4297
+ /**
4298
+ * Contiguous state and media-correction arrays from one emission batch.
4299
+ */
4300
+ export class EmissionMediaBatch {
4301
+ static __wrap(ptr) {
4302
+ const obj = Object.create(EmissionMediaBatch.prototype);
4303
+ obj.__wbg_ptr = ptr;
4304
+ EmissionMediaBatchFinalization.register(obj, obj.__wbg_ptr, obj);
4305
+ return obj;
4306
+ }
4307
+ __destroy_into_raw() {
4308
+ const ptr = this.__wbg_ptr;
4309
+ this.__wbg_ptr = 0;
4310
+ EmissionMediaBatchFinalization.unregister(this);
4311
+ return ptr;
4312
+ }
4313
+ free() {
4314
+ const ptr = this.__destroy_into_raw();
4315
+ wasm.__wbg_emissionmediabatch_free(ptr, 0);
4316
+ }
4317
+ /**
4318
+ * Satellite clock offsets in seconds, with `NaN` for unavailable rows.
4319
+ * @returns {Float64Array}
4320
+ */
4321
+ get clockS() {
4322
+ const ret = wasm.emissionmediabatch_clockS(this.__wbg_ptr);
4323
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
4324
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
4325
+ return v1;
4326
+ }
4327
+ /**
4328
+ * Number of satellite rows in the batch.
4329
+ * @returns {number}
4330
+ */
4331
+ get count() {
4332
+ const ret = wasm.emissionmediabatch_count(this.__wbg_ptr);
4333
+ return ret >>> 0;
4334
+ }
4335
+ /**
4336
+ * Per-row success and error messages as `{ ok, error }[]`.
4337
+ * @returns {any}
4338
+ */
4339
+ get elementResults() {
4340
+ const ret = wasm.emissionmediabatch_elementResults(this.__wbg_ptr);
4341
+ if (ret[2]) {
4342
+ throw takeFromExternrefTable0(ret[1]);
4343
+ }
4344
+ return takeFromExternrefTable0(ret[0]);
4345
+ }
4346
+ /**
4347
+ * Error message for row `index`, or `undefined` when the row has no error.
4348
+ * @param {number} index
4349
+ * @returns {string | undefined}
4350
+ */
4351
+ error(index) {
4352
+ const ret = wasm.emissionmediabatch_error(this.__wbg_ptr, index);
4353
+ if (ret[3]) {
4354
+ throw takeFromExternrefTable0(ret[2]);
4355
+ }
4356
+ let v1;
4357
+ if (ret[0] !== 0) {
4358
+ v1 = getStringFromWasm0(ret[0], ret[1]).slice();
4359
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
4360
+ }
4361
+ return v1;
4362
+ }
4363
+ /**
4364
+ * Ionospheric slant group delays in metres, with `NaN` for unavailable rows.
4365
+ * @returns {Float64Array}
4366
+ */
4367
+ get ionosphereSlantDelayM() {
4368
+ const ret = wasm.emissionmediabatch_ionosphereSlantDelayM(this.__wbg_ptr);
4369
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
4370
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
4371
+ return v1;
4372
+ }
4373
+ /**
4374
+ * Satellite ECEF positions as flat `[x0, y0, z0, ...]`, metres.
4375
+ *
4376
+ * Rows without a usable position are filled with `NaN`; check `statuses`
4377
+ * before consuming the corresponding row.
4378
+ * @returns {Float64Array}
4379
+ */
4380
+ get positionEcefM() {
4381
+ const ret = wasm.emissionmediabatch_positionEcefM(this.__wbg_ptr);
4382
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
4383
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
4384
+ return v1;
4385
+ }
4386
+ /**
4387
+ * Per-row status labels, index-aligned with the numeric arrays.
4388
+ * @returns {string[]}
4389
+ */
4390
+ get statusLabels() {
4391
+ const ret = wasm.emissionmediabatch_statusLabels(this.__wbg_ptr);
4392
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
4393
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
4394
+ return v1;
4395
+ }
4396
+ /**
4397
+ * Per-row typed status values, index-aligned with the numeric arrays.
4398
+ * @returns {any[]}
4399
+ */
4400
+ get statuses() {
4401
+ const ret = wasm.emissionmediabatch_statuses(this.__wbg_ptr);
4402
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
4403
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
4404
+ return v1;
4405
+ }
4406
+ /**
4407
+ * Tropospheric slant delays in metres, with `NaN` for unavailable rows.
4408
+ * @returns {Float64Array}
4409
+ */
4410
+ get troposphereDelayM() {
4411
+ const ret = wasm.emissionmediabatch_troposphereDelayM(this.__wbg_ptr);
4412
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
4413
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
4414
+ return v1;
4415
+ }
4416
+ }
4417
+ if (Symbol.dispose) EmissionMediaBatch.prototype[Symbol.dispose] = EmissionMediaBatch.prototype.free;
4418
+
4419
+ /**
4420
+ * Per-satellite status for an emission media batch row.
4421
+ * @enum {0 | 1 | 2 | 3}
4422
+ */
4423
+ export const EmissionMediaStatus = Object.freeze({
4424
+ /**
4425
+ * State, clock, and requested media corrections were produced.
4426
+ */
4427
+ Valid: 0, "0": "Valid",
4428
+ /**
4429
+ * The ephemeris product has no usable state for this satellite and epoch.
4430
+ */
4431
+ Gap: 1, "1": "Gap",
4432
+ /**
4433
+ * A state was available, but elevation was below the requested cutoff.
4434
+ */
4435
+ BelowElevationCutoff: 2, "2": "BelowElevationCutoff",
4436
+ /**
4437
+ * A non-gap scalar evaluation error occurred.
4438
+ */
4439
+ Error: 3, "3": "Error",
4440
+ });
4441
+
4282
4442
  /**
4283
4443
  * Orthonormal encounter frame built from two relative states.
4284
4444
  */
@@ -4894,6 +5054,201 @@ export const GeodesicError = Object.freeze({
4894
5054
  InvalidInput: 0, "0": "InvalidInput",
4895
5055
  });
4896
5056
 
5057
+ /**
5058
+ * A geodesic polygon fence on WGS84.
5059
+ */
5060
+ export class Geofence {
5061
+ static __wrap(ptr) {
5062
+ const obj = Object.create(Geofence.prototype);
5063
+ obj.__wbg_ptr = ptr;
5064
+ GeofenceFinalization.register(obj, obj.__wbg_ptr, obj);
5065
+ return obj;
5066
+ }
5067
+ __destroy_into_raw() {
5068
+ const ptr = this.__wbg_ptr;
5069
+ this.__wbg_ptr = 0;
5070
+ GeofenceFinalization.unregister(this);
5071
+ return ptr;
5072
+ }
5073
+ free() {
5074
+ const ptr = this.__destroy_into_raw();
5075
+ wasm.__wbg_geofence_free(ptr, 0);
5076
+ }
5077
+ /**
5078
+ * Containment probability for one position and uncertainty object.
5079
+ *
5080
+ * `uncertainty.kind` is one of `"enuCovarianceM2"`, `"ecefCovarianceM2"`,
5081
+ * `"cepRadiusM"`, or `"horizontalRadius"`. `options.method` is
5082
+ * `"boundaryNormal"` or `"planarQuadrature"`.
5083
+ * @param {number} lat_rad
5084
+ * @param {number} lon_rad
5085
+ * @param {number} height_m
5086
+ * @param {any} uncertainty_value
5087
+ * @param {any} options
5088
+ * @returns {number}
5089
+ */
5090
+ containmentProbability(lat_rad, lon_rad, height_m, uncertainty_value, options) {
5091
+ const ret = wasm.geofence_containmentProbability(this.__wbg_ptr, lat_rad, lon_rad, height_m, uncertainty_value, options);
5092
+ if (ret[2]) {
5093
+ throw takeFromExternrefTable0(ret[1]);
5094
+ }
5095
+ return ret[0];
5096
+ }
5097
+ /**
5098
+ * Boolean containment for one WGS84 geodetic position.
5099
+ * @param {number} lat_rad
5100
+ * @param {number} lon_rad
5101
+ * @param {number} height_m
5102
+ * @returns {boolean}
5103
+ */
5104
+ contains(lat_rad, lon_rad, height_m) {
5105
+ const ret = wasm.geofence_contains(this.__wbg_ptr, lat_rad, lon_rad, height_m);
5106
+ if (ret[2]) {
5107
+ throw takeFromExternrefTable0(ret[1]);
5108
+ }
5109
+ return ret[0] !== 0;
5110
+ }
5111
+ /**
5112
+ * Probabilistic crossing detection over geodetic position estimates.
5113
+ *
5114
+ * `samples` is an array of `{ latRad, lonRad, heightM?, uncertainty }`.
5115
+ * `options.enterConfidence` and `options.leaveConfidence` configure
5116
+ * hysteresis; absent values use the core defaults.
5117
+ * @param {any} samples
5118
+ * @param {any} options
5119
+ * @returns {any}
5120
+ */
5121
+ crossingProbability(samples, options) {
5122
+ const ret = wasm.geofence_crossingProbability(this.__wbg_ptr, samples, options);
5123
+ if (ret[2]) {
5124
+ throw takeFromExternrefTable0(ret[1]);
5125
+ }
5126
+ return takeFromExternrefTable0(ret[0]);
5127
+ }
5128
+ /**
5129
+ * Signed distance to the fence boundary in metres.
5130
+ * @param {number} lat_rad
5131
+ * @param {number} lon_rad
5132
+ * @param {number} height_m
5133
+ * @returns {number}
5134
+ */
5135
+ distanceToBoundary(lat_rad, lon_rad, height_m) {
5136
+ const ret = wasm.geofence_distanceToBoundary(this.__wbg_ptr, lat_rad, lon_rad, height_m);
5137
+ if (ret[2]) {
5138
+ throw takeFromExternrefTable0(ret[1]);
5139
+ }
5140
+ return ret[0];
5141
+ }
5142
+ /**
5143
+ * Number of polygon edges.
5144
+ * @returns {number}
5145
+ */
5146
+ get edgeCount() {
5147
+ const ret = wasm.geofence_edgeCount(this.__wbg_ptr);
5148
+ return ret >>> 0;
5149
+ }
5150
+ /**
5151
+ * Construct a geodesic WGS84 polygon from flat 2D radian vertices.
5152
+ *
5153
+ * `vertices` is `[latRad, lonRad, ...]`. Use `geofenceFromVertices3d`
5154
+ * for `[latRad, lonRad, heightM, ...]` rows.
5155
+ * @param {Float64Array} vertices
5156
+ */
5157
+ constructor(vertices) {
5158
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
5159
+ const len0 = WASM_VECTOR_LEN;
5160
+ const ret = wasm.geofence_new(ptr0, len0);
5161
+ if (ret[2]) {
5162
+ throw takeFromExternrefTable0(ret[1]);
5163
+ }
5164
+ this.__wbg_ptr = ret[0];
5165
+ GeofenceFinalization.register(this, this.__wbg_ptr, this);
5166
+ return this;
5167
+ }
5168
+ /**
5169
+ * Whether the core small-region planar path can evaluate this position.
5170
+ * @param {number} lat_rad
5171
+ * @param {number} lon_rad
5172
+ * @param {number} height_m
5173
+ * @returns {boolean}
5174
+ */
5175
+ planarFastPathApplies(lat_rad, lon_rad, height_m) {
5176
+ const ret = wasm.geofence_planarFastPathApplies(this.__wbg_ptr, lat_rad, lon_rad, height_m);
5177
+ if (ret[2]) {
5178
+ throw takeFromExternrefTable0(ret[1]);
5179
+ }
5180
+ return ret[0] !== 0;
5181
+ }
5182
+ /**
5183
+ * Fence vertices in open-polygon form as flat `[latRad, lonRad, heightM]` rows.
5184
+ * @returns {Float64Array}
5185
+ */
5186
+ get vertices() {
5187
+ const ret = wasm.geofence_vertices(this.__wbg_ptr);
5188
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
5189
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
5190
+ return v1;
5191
+ }
5192
+ }
5193
+ if (Symbol.dispose) Geofence.prototype[Symbol.dispose] = Geofence.prototype.free;
5194
+
5195
+ /**
5196
+ * Geofence crossing event direction.
5197
+ * @enum {0 | 1}
5198
+ */
5199
+ export const GeofenceCrossingKind = Object.freeze({
5200
+ /**
5201
+ * The sample sequence entered the fence.
5202
+ */
5203
+ Entered: 0, "0": "Entered",
5204
+ /**
5205
+ * The sample sequence left the fence.
5206
+ */
5207
+ Left: 1, "1": "Left",
5208
+ });
5209
+
5210
+ /**
5211
+ * Geofence construction and evaluation error variants.
5212
+ * @enum {0 | 1 | 2 | 3 | 4}
5213
+ */
5214
+ export const GeofenceError = Object.freeze({
5215
+ /**
5216
+ * Fewer than three distinct vertices were supplied.
5217
+ */
5218
+ TooFewVertices: 0, "0": "TooFewVertices",
5219
+ /**
5220
+ * A geofence input value was outside its domain.
5221
+ */
5222
+ InvalidInput: 1, "1": "InvalidInput",
5223
+ /**
5224
+ * The geodesic direct or inverse calculation failed.
5225
+ */
5226
+ Geodesic: 2, "2": "Geodesic",
5227
+ /**
5228
+ * ECEF covariance rotation failed.
5229
+ */
5230
+ Dop: 3, "3": "Dop",
5231
+ /**
5232
+ * Covariance or radius validation failed.
5233
+ */
5234
+ ErrorMetrics: 4, "4": "ErrorMetrics",
5235
+ });
5236
+
5237
+ /**
5238
+ * Probability integration method for geofence uncertainty.
5239
+ * @enum {0 | 1}
5240
+ */
5241
+ export const GeofenceProbabilityMethod = Object.freeze({
5242
+ /**
5243
+ * Gaussian half-space approximation from boundary distance and normal variance.
5244
+ */
5245
+ BoundaryNormal: 0, "0": "BoundaryNormal",
5246
+ /**
5247
+ * Fixed quadrature over the local planarized fence.
5248
+ */
5249
+ PlanarQuadrature: 1, "1": "PlanarQuadrature",
5250
+ });
5251
+
4897
5252
  /**
4898
5253
  * A regular latitude/longitude grid of geoid undulation samples with bilinear
4899
5254
  * interpolation, wrapping a real (loaded) geoid model.
@@ -5305,6 +5660,229 @@ export class GlonassRecordJs {
5305
5660
  }
5306
5661
  if (Symbol.dispose) GlonassRecordJs.prototype[Symbol.dispose] = GlonassRecordJs.prototype.free;
5307
5662
 
5663
+ /**
5664
+ * Stateful GNSS/INS filter resource.
5665
+ */
5666
+ export class GnssInsFilter {
5667
+ static __wrap(ptr) {
5668
+ const obj = Object.create(GnssInsFilter.prototype);
5669
+ obj.__wbg_ptr = ptr;
5670
+ GnssInsFilterFinalization.register(obj, obj.__wbg_ptr, obj);
5671
+ return obj;
5672
+ }
5673
+ __destroy_into_raw() {
5674
+ const ptr = this.__wbg_ptr;
5675
+ this.__wbg_ptr = 0;
5676
+ GnssInsFilterFinalization.unregister(this);
5677
+ return ptr;
5678
+ }
5679
+ free() {
5680
+ const ptr = this.__destroy_into_raw();
5681
+ wasm.__wbg_gnssinsfilter_free(ptr, 0);
5682
+ }
5683
+ /**
5684
+ * Replace retained-history capacities for later time-sync replay.
5685
+ * @param {any} config
5686
+ */
5687
+ configureTimeSync(config) {
5688
+ const ret = wasm.gnssinsfilter_configureTimeSync(this.__wbg_ptr, config);
5689
+ if (ret[1]) {
5690
+ throw takeFromExternrefTable0(ret[0]);
5691
+ }
5692
+ }
5693
+ /**
5694
+ * Encode the current fusion state with the core versioned binary codec.
5695
+ * @returns {Uint8Array}
5696
+ */
5697
+ encodeState() {
5698
+ const ret = wasm.gnssinsfilter_encodeState(this.__wbg_ptr);
5699
+ if (ret[3]) {
5700
+ throw takeFromExternrefTable0(ret[2]);
5701
+ }
5702
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
5703
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
5704
+ return v1;
5705
+ }
5706
+ /**
5707
+ * Build a filter, then restore its state from versioned fusion-state bytes.
5708
+ * @param {any} config
5709
+ * @param {Uint8Array} bytes
5710
+ * @returns {GnssInsFilter}
5711
+ */
5712
+ static fromStateBytes(config, bytes) {
5713
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
5714
+ const len0 = WASM_VECTOR_LEN;
5715
+ const ret = wasm.gnssinsfilter_fromStateBytes(config, ptr0, len0);
5716
+ if (ret[2]) {
5717
+ throw takeFromExternrefTable0(ret[1]);
5718
+ }
5719
+ return GnssInsFilter.__wrap(ret[0]);
5720
+ }
5721
+ /**
5722
+ * Build a filter from a JS configuration object.
5723
+ * @param {any} config
5724
+ */
5725
+ constructor(config) {
5726
+ const ret = wasm.gnssinsfilter_new(config);
5727
+ if (ret[2]) {
5728
+ throw takeFromExternrefTable0(ret[1]);
5729
+ }
5730
+ this.__wbg_ptr = ret[0];
5731
+ GnssInsFilterFinalization.register(this, this.__wbg_ptr, this);
5732
+ return this;
5733
+ }
5734
+ /**
5735
+ * Propagate the filter with one IMU rate or increment sample.
5736
+ * @param {any} sample
5737
+ * @returns {any}
5738
+ */
5739
+ propagate(sample) {
5740
+ const ret = wasm.gnssinsfilter_propagate(this.__wbg_ptr, sample);
5741
+ if (ret[2]) {
5742
+ throw takeFromExternrefTable0(ret[1]);
5743
+ }
5744
+ return takeFromExternrefTable0(ret[0]);
5745
+ }
5746
+ /**
5747
+ * Propagate the filter with a JS array of IMU samples.
5748
+ * @param {any} samples
5749
+ * @returns {any}
5750
+ */
5751
+ propagateBatch(samples) {
5752
+ const ret = wasm.gnssinsfilter_propagateBatch(this.__wbg_ptr, samples);
5753
+ if (ret[2]) {
5754
+ throw takeFromExternrefTable0(ret[1]);
5755
+ }
5756
+ return takeFromExternrefTable0(ret[0]);
5757
+ }
5758
+ /**
5759
+ * Restore this filter from versioned fusion-state bytes.
5760
+ * @param {Uint8Array} bytes
5761
+ */
5762
+ restoreState(bytes) {
5763
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
5764
+ const len0 = WASM_VECTOR_LEN;
5765
+ const ret = wasm.gnssinsfilter_restoreState(this.__wbg_ptr, ptr0, len0);
5766
+ if (ret[1]) {
5767
+ throw takeFromExternrefTable0(ret[0]);
5768
+ }
5769
+ }
5770
+ /**
5771
+ * Current INS state, covariance, and last body-rate diagnostic.
5772
+ * @returns {any}
5773
+ */
5774
+ state() {
5775
+ const ret = wasm.gnssinsfilter_state(this.__wbg_ptr);
5776
+ if (ret[2]) {
5777
+ throw takeFromExternrefTable0(ret[1]);
5778
+ }
5779
+ return takeFromExternrefTable0(ret[0]);
5780
+ }
5781
+ /**
5782
+ * Current tight-coupling receiver-clock state.
5783
+ * @returns {any}
5784
+ */
5785
+ tightClockState() {
5786
+ const ret = wasm.gnssinsfilter_tightClockState(this.__wbg_ptr);
5787
+ if (ret[2]) {
5788
+ throw takeFromExternrefTable0(ret[1]);
5789
+ }
5790
+ return takeFromExternrefTable0(ret[0]);
5791
+ }
5792
+ /**
5793
+ * Current retained-history capacity and occupancy.
5794
+ * @returns {any}
5795
+ */
5796
+ timeSyncStatus() {
5797
+ const ret = wasm.gnssinsfilter_timeSyncStatus(this.__wbg_ptr);
5798
+ if (ret[2]) {
5799
+ throw takeFromExternrefTable0(ret[1]);
5800
+ }
5801
+ return takeFromExternrefTable0(ret[0]);
5802
+ }
5803
+ /**
5804
+ * Apply a loose position or position-velocity GNSS fix at the current epoch.
5805
+ * @param {any} measurement
5806
+ * @returns {any}
5807
+ */
5808
+ updateLoose(measurement) {
5809
+ const ret = wasm.gnssinsfilter_updateLoose(this.__wbg_ptr, measurement);
5810
+ if (ret[2]) {
5811
+ throw takeFromExternrefTable0(ret[1]);
5812
+ }
5813
+ return takeFromExternrefTable0(ret[0]);
5814
+ }
5815
+ /**
5816
+ * Apply a loose GNSS fix, replaying retained IMU checkpoints when it is late.
5817
+ * @param {any} measurement
5818
+ * @returns {any}
5819
+ */
5820
+ updateLooseTimeSync(measurement) {
5821
+ const ret = wasm.gnssinsfilter_updateLooseTimeSync(this.__wbg_ptr, measurement);
5822
+ if (ret[2]) {
5823
+ throw takeFromExternrefTable0(ret[1]);
5824
+ }
5825
+ return takeFromExternrefTable0(ret[0]);
5826
+ }
5827
+ /**
5828
+ * Apply a tight raw-observation epoch against a broadcast ephemeris source.
5829
+ * @param {BroadcastEphemeris} broadcast
5830
+ * @param {any} epoch
5831
+ * @returns {any}
5832
+ */
5833
+ updateTightBroadcast(broadcast, epoch) {
5834
+ _assertClass(broadcast, BroadcastEphemeris);
5835
+ const ret = wasm.gnssinsfilter_updateTightBroadcast(this.__wbg_ptr, broadcast.__wbg_ptr, epoch);
5836
+ if (ret[2]) {
5837
+ throw takeFromExternrefTable0(ret[1]);
5838
+ }
5839
+ return takeFromExternrefTable0(ret[0]);
5840
+ }
5841
+ /**
5842
+ * Apply a tight broadcast update, replaying retained IMU checkpoints when it is late.
5843
+ * @param {BroadcastEphemeris} broadcast
5844
+ * @param {any} epoch
5845
+ * @returns {any}
5846
+ */
5847
+ updateTightBroadcastTimeSync(broadcast, epoch) {
5848
+ _assertClass(broadcast, BroadcastEphemeris);
5849
+ const ret = wasm.gnssinsfilter_updateTightBroadcastTimeSync(this.__wbg_ptr, broadcast.__wbg_ptr, epoch);
5850
+ if (ret[2]) {
5851
+ throw takeFromExternrefTable0(ret[1]);
5852
+ }
5853
+ return takeFromExternrefTable0(ret[0]);
5854
+ }
5855
+ /**
5856
+ * Apply a tight raw-observation epoch against an SP3 source.
5857
+ * @param {Sp3} sp3
5858
+ * @param {any} epoch
5859
+ * @returns {any}
5860
+ */
5861
+ updateTightSp3(sp3, epoch) {
5862
+ _assertClass(sp3, Sp3);
5863
+ const ret = wasm.gnssinsfilter_updateTightSp3(this.__wbg_ptr, sp3.__wbg_ptr, epoch);
5864
+ if (ret[2]) {
5865
+ throw takeFromExternrefTable0(ret[1]);
5866
+ }
5867
+ return takeFromExternrefTable0(ret[0]);
5868
+ }
5869
+ /**
5870
+ * Apply a tight SP3 update, replaying retained IMU checkpoints when it is late.
5871
+ * @param {Sp3} sp3
5872
+ * @param {any} epoch
5873
+ * @returns {any}
5874
+ */
5875
+ updateTightSp3TimeSync(sp3, epoch) {
5876
+ _assertClass(sp3, Sp3);
5877
+ const ret = wasm.gnssinsfilter_updateTightSp3TimeSync(this.__wbg_ptr, sp3.__wbg_ptr, epoch);
5878
+ if (ret[2]) {
5879
+ throw takeFromExternrefTable0(ret[1]);
5880
+ }
5881
+ return takeFromExternrefTable0(ret[0]);
5882
+ }
5883
+ }
5884
+ if (Symbol.dispose) GnssInsFilter.prototype[Symbol.dispose] = GnssInsFilter.prototype.free;
5885
+
5308
5886
  /**
5309
5887
  * One sampled rise/set/peak visibility pass, from `gnssPasses`.
5310
5888
  */
@@ -12095,32 +12673,151 @@ export class PreciseEphemerisSampleSource {
12095
12673
  return takeFromExternrefTable0(ret[0]);
12096
12674
  }
12097
12675
  /**
12098
- * Predict geometric ranges for many requests in one call. See the shared
12099
- * [`predictRanges`](crate::precise_samples::predict_ranges_over) contract;
12100
- * this is the sample-source entry point.
12101
- * @param {any} requests
12102
- * @param {any} options
12103
- * @returns {any}
12676
+ * Predict geometric ranges for many requests in one call. See the shared
12677
+ * [`predictRanges`](crate::precise_samples::predict_ranges_over) contract;
12678
+ * this is the sample-source entry point.
12679
+ * @param {any} requests
12680
+ * @param {any} options
12681
+ * @returns {any}
12682
+ */
12683
+ predictRanges(requests, options) {
12684
+ const ret = wasm.preciseephemerissamplesource_predictRanges(this.__wbg_ptr, requests, options);
12685
+ if (ret[2]) {
12686
+ throw takeFromExternrefTable0(ret[1]);
12687
+ }
12688
+ return takeFromExternrefTable0(ret[0]);
12689
+ }
12690
+ /**
12691
+ * The satellites this source can interpolate (e.g. `"G01"`), ascending.
12692
+ * @returns {string[]}
12693
+ */
12694
+ get satellites() {
12695
+ const ret = wasm.preciseephemerissamplesource_satellites(this.__wbg_ptr);
12696
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
12697
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
12698
+ return v1;
12699
+ }
12700
+ }
12701
+ if (Symbol.dispose) PreciseEphemerisSampleSource.prototype[Symbol.dispose] = PreciseEphemerisSampleSource.prototype.free;
12702
+
12703
+ /**
12704
+ * Evaluable precise-interpolant artifact opened from canonical store bytes.
12705
+ */
12706
+ export class PreciseInterpolantArtifact {
12707
+ static __wrap(ptr) {
12708
+ const obj = Object.create(PreciseInterpolantArtifact.prototype);
12709
+ obj.__wbg_ptr = ptr;
12710
+ PreciseInterpolantArtifactFinalization.register(obj, obj.__wbg_ptr, obj);
12711
+ return obj;
12712
+ }
12713
+ __destroy_into_raw() {
12714
+ const ptr = this.__wbg_ptr;
12715
+ this.__wbg_ptr = 0;
12716
+ PreciseInterpolantArtifactFinalization.unregister(this);
12717
+ return ptr;
12718
+ }
12719
+ free() {
12720
+ const ptr = this.__destroy_into_raw();
12721
+ wasm.__wbg_preciseinterpolantartifact_free(ptr, 0);
12722
+ }
12723
+ /**
12724
+ * Number of bytes retained by this artifact handle.
12725
+ * @returns {number}
12726
+ */
12727
+ get byteLength() {
12728
+ const ret = wasm.preciseinterpolantartifact_byteLength(this.__wbg_ptr);
12729
+ return ret >>> 0;
12730
+ }
12731
+ /**
12732
+ * File-level artifact checksum.
12733
+ * @returns {bigint}
12734
+ */
12735
+ get checksum64() {
12736
+ const ret = wasm.preciseinterpolantartifact_checksum64(this.__wbg_ptr);
12737
+ return BigInt.asUintN(64, ret);
12738
+ }
12739
+ /**
12740
+ * Evaluate one satellite state at a J2000-second epoch.
12741
+ * @param {string} satellite
12742
+ * @param {number} j2000_seconds
12743
+ * @returns {Sp3State}
12744
+ */
12745
+ evaluate(satellite, j2000_seconds) {
12746
+ const ptr0 = passStringToWasm0(satellite, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
12747
+ const len0 = WASM_VECTOR_LEN;
12748
+ const ret = wasm.preciseinterpolantartifact_evaluate(this.__wbg_ptr, ptr0, len0, j2000_seconds);
12749
+ if (ret[2]) {
12750
+ throw takeFromExternrefTable0(ret[1]);
12751
+ }
12752
+ return Sp3State.__wrap(ret[0]);
12753
+ }
12754
+ /**
12755
+ * Satellite tokens present in the artifact, ascending.
12756
+ * @returns {string[]}
12757
+ */
12758
+ get satellites() {
12759
+ const ret = wasm.preciseinterpolantartifact_satellites(this.__wbg_ptr);
12760
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
12761
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
12762
+ return v1;
12763
+ }
12764
+ /**
12765
+ * Artifact time scale label from the stored epoch axis.
12766
+ * @returns {string}
12767
+ */
12768
+ get timeScale() {
12769
+ let deferred1_0;
12770
+ let deferred1_1;
12771
+ try {
12772
+ const ret = wasm.preciseinterpolantartifact_timeScale(this.__wbg_ptr);
12773
+ deferred1_0 = ret[0];
12774
+ deferred1_1 = ret[1];
12775
+ return getStringFromWasm0(ret[0], ret[1]);
12776
+ } finally {
12777
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
12778
+ }
12779
+ }
12780
+ }
12781
+ if (Symbol.dispose) PreciseInterpolantArtifact.prototype[Symbol.dispose] = PreciseInterpolantArtifact.prototype.free;
12782
+
12783
+ /**
12784
+ * Error category for precise-interpolant artifact open or serialization.
12785
+ * @enum {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7}
12786
+ */
12787
+ export const PreciseInterpolantArtifactError = Object.freeze({
12788
+ /**
12789
+ * File I/O failed in the core artifact API.
12790
+ */
12791
+ Io: 0, "0": "Io",
12792
+ /**
12793
+ * Artifact bytes could not be parsed.
12794
+ */
12795
+ Parse: 1, "1": "Parse",
12796
+ /**
12797
+ * The artifact version tag is unsupported.
12798
+ */
12799
+ UnsupportedVersion: 2, "2": "UnsupportedVersion",
12800
+ /**
12801
+ * The artifact time-scale tag is unsupported.
12104
12802
  */
12105
- predictRanges(requests, options) {
12106
- const ret = wasm.preciseephemerissamplesource_predictRanges(this.__wbg_ptr, requests, options);
12107
- if (ret[2]) {
12108
- throw takeFromExternrefTable0(ret[1]);
12109
- }
12110
- return takeFromExternrefTable0(ret[0]);
12111
- }
12803
+ UnsupportedTimeScale: 3, "3": "UnsupportedTimeScale",
12112
12804
  /**
12113
- * The satellites this source can interpolate (e.g. `"G01"`), ascending.
12114
- * @returns {string[]}
12805
+ * A satellite-system tag is unsupported.
12115
12806
  */
12116
- get satellites() {
12117
- const ret = wasm.preciseephemerissamplesource_satellites(this.__wbg_ptr);
12118
- var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
12119
- wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
12120
- return v1;
12121
- }
12122
- }
12123
- if (Symbol.dispose) PreciseEphemerisSampleSource.prototype[Symbol.dispose] = PreciseEphemerisSampleSource.prototype.free;
12807
+ UnsupportedSatelliteSystem: 4, "4": "UnsupportedSatelliteSystem",
12808
+ /**
12809
+ * A satellite appears more than once in the artifact index.
12810
+ */
12811
+ DuplicateSatellite: 5, "5": "DuplicateSatellite",
12812
+ /**
12813
+ * The artifact file-level checksum did not match.
12814
+ */
12815
+ Checksum: 6, "6": "Checksum",
12816
+ /**
12817
+ * A satellite payload checksum did not match its index record.
12818
+ */
12819
+ SatelliteChecksum: 7, "7": "SatelliteChecksum",
12820
+ });
12124
12821
 
12125
12822
  /**
12126
12823
  * The per-request results of a batch observable prediction, index-aligned to
@@ -14190,6 +14887,239 @@ export class SbasSisError {
14190
14887
  }
14191
14888
  if (Symbol.dispose) SbasSisError.prototype[Symbol.dispose] = SbasSisError.prototype.free;
14192
14889
 
14890
+ /**
14891
+ * Stable GNSS signal modulation used by the analysis functions.
14892
+ */
14893
+ export class SignalAnalysisModulation {
14894
+ static __wrap(ptr) {
14895
+ const obj = Object.create(SignalAnalysisModulation.prototype);
14896
+ obj.__wbg_ptr = ptr;
14897
+ SignalAnalysisModulationFinalization.register(obj, obj.__wbg_ptr, obj);
14898
+ return obj;
14899
+ }
14900
+ __destroy_into_raw() {
14901
+ const ptr = this.__wbg_ptr;
14902
+ this.__wbg_ptr = 0;
14903
+ SignalAnalysisModulationFinalization.unregister(this);
14904
+ return ptr;
14905
+ }
14906
+ free() {
14907
+ const ptr = this.__destroy_into_raw();
14908
+ wasm.__wbg_signalanalysismodulation_free(ptr, 0);
14909
+ }
14910
+ /**
14911
+ * Normalized in-band autocorrelation at a delay.
14912
+ * @param {number} delay_s
14913
+ * @param {number} receiver_bandwidth_hz
14914
+ * @returns {number}
14915
+ */
14916
+ autocorrelation(delay_s, receiver_bandwidth_hz) {
14917
+ const ret = wasm.signalanalysismodulation_autocorrelation(this.__wbg_ptr, delay_s, receiver_bandwidth_hz);
14918
+ if (ret[2]) {
14919
+ throw takeFromExternrefTable0(ret[1]);
14920
+ }
14921
+ return ret[0];
14922
+ }
14923
+ /**
14924
+ * Build a BPSK(n) modulation, where the code rate is `n * 1.023 MHz`.
14925
+ * @param {number} order
14926
+ * @returns {SignalAnalysisModulation}
14927
+ */
14928
+ static bpsk(order) {
14929
+ const ret = wasm.signalanalysismodulation_bpsk(order);
14930
+ if (ret[2]) {
14931
+ throw takeFromExternrefTable0(ret[1]);
14932
+ }
14933
+ return SignalAnalysisModulation.__wrap(ret[0]);
14934
+ }
14935
+ /**
14936
+ * Build Galileo E1 CBOC(6,1,1/11) with the minus chip-pulse convention.
14937
+ * @returns {SignalAnalysisModulation}
14938
+ */
14939
+ static cboc611Over11Minus() {
14940
+ const ret = wasm.signalanalysismodulation_cboc611Over11Minus();
14941
+ return SignalAnalysisModulation.__wrap(ret);
14942
+ }
14943
+ /**
14944
+ * Build Galileo E1 CBOC(6,1,1/11) with the plus chip-pulse convention.
14945
+ * @returns {SignalAnalysisModulation}
14946
+ */
14947
+ static cboc611Over11Plus() {
14948
+ const ret = wasm.signalanalysismodulation_cboc611Over11Plus();
14949
+ return SignalAnalysisModulation.__wrap(ret);
14950
+ }
14951
+ /**
14952
+ * Code rate in hertz when the modulation has one unambiguous rate.
14953
+ * @returns {number}
14954
+ */
14955
+ get codeRateHz() {
14956
+ const ret = wasm.signalanalysismodulation_codeRateHz(this.__wbg_ptr);
14957
+ if (ret[2]) {
14958
+ throw takeFromExternrefTable0(ret[1]);
14959
+ }
14960
+ return ret[0];
14961
+ }
14962
+ /**
14963
+ * Build a cosine-phased BOC(m,n) modulation.
14964
+ * @param {number} m
14965
+ * @param {number} n
14966
+ * @returns {SignalAnalysisModulation}
14967
+ */
14968
+ static cosineBoc(m, n) {
14969
+ const ret = wasm.signalanalysismodulation_cosineBoc(m, n);
14970
+ if (ret[2]) {
14971
+ throw takeFromExternrefTable0(ret[1]);
14972
+ }
14973
+ return SignalAnalysisModulation.__wrap(ret[0]);
14974
+ }
14975
+ /**
14976
+ * Published lower bound for DLL code-delay jitter.
14977
+ * @param {any} options
14978
+ * @returns {any}
14979
+ */
14980
+ dllLowerBound(options) {
14981
+ const ret = wasm.signalanalysismodulation_dllLowerBound(this.__wbg_ptr, options);
14982
+ if (ret[2]) {
14983
+ throw takeFromExternrefTable0(ret[1]);
14984
+ }
14985
+ return takeFromExternrefTable0(ret[0]);
14986
+ }
14987
+ /**
14988
+ * Early-late DLL thermal-noise jitter for this modulation.
14989
+ * @param {any} options
14990
+ * @param {DllProcessing} processing
14991
+ * @returns {any}
14992
+ */
14993
+ dllThermalNoiseJitter(options, processing) {
14994
+ const ret = wasm.signalanalysismodulation_dllThermalNoiseJitter(this.__wbg_ptr, options, processing);
14995
+ if (ret[2]) {
14996
+ throw takeFromExternrefTable0(ret[1]);
14997
+ }
14998
+ return takeFromExternrefTable0(ret[0]);
14999
+ }
15000
+ /**
15001
+ * Fraction of total signal power inside a two-sided receiver bandwidth.
15002
+ * @param {number} receiver_bandwidth_hz
15003
+ * @returns {number}
15004
+ */
15005
+ fractionPowerInBand(receiver_bandwidth_hz) {
15006
+ const ret = wasm.signalanalysismodulation_fractionPowerInBand(this.__wbg_ptr, receiver_bandwidth_hz);
15007
+ if (ret[2]) {
15008
+ throw takeFromExternrefTable0(ret[1]);
15009
+ }
15010
+ return ret[0];
15011
+ }
15012
+ /**
15013
+ * Stable core label for this modulation.
15014
+ * @returns {string}
15015
+ */
15016
+ get label() {
15017
+ let deferred1_0;
15018
+ let deferred1_1;
15019
+ try {
15020
+ const ret = wasm.signalanalysismodulation_label(this.__wbg_ptr);
15021
+ deferred1_0 = ret[0];
15022
+ deferred1_1 = ret[1];
15023
+ return getStringFromWasm0(ret[0], ret[1]);
15024
+ } finally {
15025
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
15026
+ }
15027
+ }
15028
+ /**
15029
+ * Build the normalized MBOC(6,1,1/11) spectrum.
15030
+ * @returns {SignalAnalysisModulation}
15031
+ */
15032
+ static mboc611Over11() {
15033
+ const ret = wasm.signalanalysismodulation_mboc611Over11();
15034
+ return SignalAnalysisModulation.__wrap(ret);
15035
+ }
15036
+ /**
15037
+ * One-path early-late multipath error envelope on a delay grid.
15038
+ * @param {any} options
15039
+ * @param {Float64Array} delay_chips
15040
+ * @returns {any}
15041
+ */
15042
+ multipathErrorEnvelope(options, delay_chips) {
15043
+ const ptr0 = passArrayF64ToWasm0(delay_chips, wasm.__wbindgen_malloc);
15044
+ const len0 = WASM_VECTOR_LEN;
15045
+ const ret = wasm.signalanalysismodulation_multipathErrorEnvelope(this.__wbg_ptr, options, ptr0, len0);
15046
+ if (ret[2]) {
15047
+ throw takeFromExternrefTable0(ret[1]);
15048
+ }
15049
+ return takeFromExternrefTable0(ret[0]);
15050
+ }
15051
+ /**
15052
+ * Signal power inside a two-sided receiver bandwidth.
15053
+ * @param {number} receiver_bandwidth_hz
15054
+ * @returns {number}
15055
+ */
15056
+ powerInBand(receiver_bandwidth_hz) {
15057
+ const ret = wasm.signalanalysismodulation_powerInBand(this.__wbg_ptr, receiver_bandwidth_hz);
15058
+ if (ret[2]) {
15059
+ throw takeFromExternrefTable0(ret[1]);
15060
+ }
15061
+ return ret[0];
15062
+ }
15063
+ /**
15064
+ * Normalized power spectral density at an offset frequency, in `1/Hz`.
15065
+ * @param {number} offset_hz
15066
+ * @returns {number}
15067
+ */
15068
+ psdHz(offset_hz) {
15069
+ const ret = wasm.signalanalysismodulation_psdHz(this.__wbg_ptr, offset_hz);
15070
+ if (ret[2]) {
15071
+ throw takeFromExternrefTable0(ret[1]);
15072
+ }
15073
+ return ret[0];
15074
+ }
15075
+ /**
15076
+ * RMS, or Gabor, bandwidth over a two-sided receiver bandwidth.
15077
+ * @param {number} receiver_bandwidth_hz
15078
+ * @returns {number}
15079
+ */
15080
+ rmsBandwidthHz(receiver_bandwidth_hz) {
15081
+ const ret = wasm.signalanalysismodulation_rmsBandwidthHz(this.__wbg_ptr, receiver_bandwidth_hz);
15082
+ if (ret[2]) {
15083
+ throw takeFromExternrefTable0(ret[1]);
15084
+ }
15085
+ return ret[0];
15086
+ }
15087
+ /**
15088
+ * Build a sine-phased BOC(m,n) modulation.
15089
+ * @param {number} m
15090
+ * @param {number} n
15091
+ * @returns {SignalAnalysisModulation}
15092
+ */
15093
+ static sineBoc(m, n) {
15094
+ const ret = wasm.signalanalysismodulation_sineBoc(m, n);
15095
+ if (ret[2]) {
15096
+ throw takeFromExternrefTable0(ret[1]);
15097
+ }
15098
+ return SignalAnalysisModulation.__wrap(ret[0]);
15099
+ }
15100
+ /**
15101
+ * Build the GPS L1C pilot TMBOC(6,1,4/33) spectrum.
15102
+ * @returns {SignalAnalysisModulation}
15103
+ */
15104
+ static tmboc614Over33() {
15105
+ const ret = wasm.signalanalysismodulation_tmboc614Over33();
15106
+ return SignalAnalysisModulation.__wrap(ret);
15107
+ }
15108
+ /**
15109
+ * SSC against white interference normalized over the receiver bandwidth.
15110
+ * @param {number} receiver_bandwidth_hz
15111
+ * @returns {number}
15112
+ */
15113
+ whiteNoiseSpectralSeparationHz(receiver_bandwidth_hz) {
15114
+ const ret = wasm.signalanalysismodulation_whiteNoiseSpectralSeparationHz(this.__wbg_ptr, receiver_bandwidth_hz);
15115
+ if (ret[2]) {
15116
+ throw takeFromExternrefTable0(ret[1]);
15117
+ }
15118
+ return ret[0];
15119
+ }
15120
+ }
15121
+ if (Symbol.dispose) SignalAnalysisModulation.prototype[Symbol.dispose] = SignalAnalysisModulation.prototype.free;
15122
+
14193
15123
  /**
14194
15124
  * Per-constellation single-frequency pseudorange code-selection policy. Build
14195
15125
  * with `new SignalPolicy()` then chain `.withSystem(system, codes)`, or use
@@ -14522,6 +15452,57 @@ export class Sp3 {
14522
15452
  }
14523
15453
  return DgnssSolution.__wrap(ret[0]);
14524
15454
  }
15455
+ /**
15456
+ * Evaluate emission-time state and media corrections for index-aligned satellites.
15457
+ *
15458
+ * `satellites` and `emissionEpochsJ2000S` share a row count. `receiverEcefM`
15459
+ * is `[x, y, z]` metres. Without an IONEX product this can still request
15460
+ * troposphere corrections by passing `{ troposphere: true }`.
15461
+ * @param {string[]} satellites
15462
+ * @param {Float64Array} emission_epochs_j2000_s
15463
+ * @param {Float64Array} receiver_ecef_m
15464
+ * @param {any} options
15465
+ * @returns {EmissionMediaBatch}
15466
+ */
15467
+ emissionMediaBatch(satellites, emission_epochs_j2000_s, receiver_ecef_m, options) {
15468
+ const ptr0 = passArrayJsValueToWasm0(satellites, wasm.__wbindgen_malloc);
15469
+ const len0 = WASM_VECTOR_LEN;
15470
+ const ptr1 = passArrayF64ToWasm0(emission_epochs_j2000_s, wasm.__wbindgen_malloc);
15471
+ const len1 = WASM_VECTOR_LEN;
15472
+ const ptr2 = passArrayF64ToWasm0(receiver_ecef_m, wasm.__wbindgen_malloc);
15473
+ const len2 = WASM_VECTOR_LEN;
15474
+ const ret = wasm.sp3_emissionMediaBatch(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, options);
15475
+ if (ret[2]) {
15476
+ throw takeFromExternrefTable0(ret[1]);
15477
+ }
15478
+ return EmissionMediaBatch.__wrap(ret[0]);
15479
+ }
15480
+ /**
15481
+ * Evaluate emission-time state plus IONEX/troposphere media corrections.
15482
+ *
15483
+ * `options.ionosphere` defaults to `true` on this IONEX-bearing path.
15484
+ * `options.troposphere` defaults to `false`.
15485
+ * @param {Ionex} ionex
15486
+ * @param {string[]} satellites
15487
+ * @param {Float64Array} emission_epochs_j2000_s
15488
+ * @param {Float64Array} receiver_ecef_m
15489
+ * @param {any} options
15490
+ * @returns {EmissionMediaBatch}
15491
+ */
15492
+ emissionMediaBatchIonex(ionex, satellites, emission_epochs_j2000_s, receiver_ecef_m, options) {
15493
+ _assertClass(ionex, Ionex);
15494
+ const ptr0 = passArrayJsValueToWasm0(satellites, wasm.__wbindgen_malloc);
15495
+ const len0 = WASM_VECTOR_LEN;
15496
+ const ptr1 = passArrayF64ToWasm0(emission_epochs_j2000_s, wasm.__wbindgen_malloc);
15497
+ const len1 = WASM_VECTOR_LEN;
15498
+ const ptr2 = passArrayF64ToWasm0(receiver_ecef_m, wasm.__wbindgen_malloc);
15499
+ const len2 = WASM_VECTOR_LEN;
15500
+ const ret = wasm.sp3_emissionMediaBatchIonex(this.__wbg_ptr, ionex.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, options);
15501
+ if (ret[2]) {
15502
+ throw takeFromExternrefTable0(ret[1]);
15503
+ }
15504
+ return EmissionMediaBatch.__wrap(ret[0]);
15505
+ }
14525
15506
  /**
14526
15507
  * Number of epochs in the product.
14527
15508
  * @returns {number}
@@ -14620,6 +15601,19 @@ export class Sp3 {
14620
15601
  }
14621
15602
  return takeFromExternrefTable0(ret[0]);
14622
15603
  }
15604
+ /**
15605
+ * Build deterministic precise-interpolant artifact bytes from this SP3 product.
15606
+ * @returns {Uint8Array}
15607
+ */
15608
+ preciseInterpolantArtifactBytes() {
15609
+ const ret = wasm.sp3_preciseInterpolantArtifactBytes(this.__wbg_ptr);
15610
+ if (ret[3]) {
15611
+ throw takeFromExternrefTable0(ret[2]);
15612
+ }
15613
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
15614
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
15615
+ return v1;
15616
+ }
14623
15617
  /**
14624
15618
  * Predict geometric ranges for many `(satellite, receiver, epoch)` requests
14625
15619
  * against this ephemeris in one call. `requests` is an array of
@@ -14683,6 +15677,40 @@ export class Sp3 {
14683
15677
  }
14684
15678
  return SppBatchSolution.__wrap(ret[0]);
14685
15679
  }
15680
+ /**
15681
+ * Run SPP and attach a Doppler velocity/clock-drift solve when Doppler rows solve.
15682
+ *
15683
+ * `request` is the normal SPP request object. `dopplerObservations` is an
15684
+ * array of `{ satelliteId, dopplerHz, carrierHz, satClockDriftSS? }`. The
15685
+ * returned receiver solution carries `rxClockDriftSS` when velocity solved.
15686
+ * @param {any} request
15687
+ * @param {any} doppler_observations
15688
+ * @returns {SppDopplerSolution}
15689
+ */
15690
+ solveSppWithDopplerVelocity(request, doppler_observations) {
15691
+ const ret = wasm.sp3_solveSppWithDopplerVelocity(this.__wbg_ptr, request, doppler_observations);
15692
+ if (ret[2]) {
15693
+ throw takeFromExternrefTable0(ret[1]);
15694
+ }
15695
+ return SppDopplerSolution.__wrap(ret[0]);
15696
+ }
15697
+ /**
15698
+ * Solve one static receiver position from multiple SPP-shaped epochs.
15699
+ *
15700
+ * `epochs` is an array of SPP request objects. `options` accepts
15701
+ * `{ initialPositionM?, withGeodetic?, robust? }` and returns shared
15702
+ * position, per-epoch clocks, covariance, residual, and influence surfaces.
15703
+ * @param {any} epochs
15704
+ * @param {any} options
15705
+ * @returns {StaticSolution}
15706
+ */
15707
+ solveStatic(epochs, options) {
15708
+ const ret = wasm.sp3_solveStatic(this.__wbg_ptr, epochs, options);
15709
+ if (ret[2]) {
15710
+ throw takeFromExternrefTable0(ret[1]);
15711
+ }
15712
+ return StaticSolution.__wrap(ret[0]);
15713
+ }
14686
15714
  /**
14687
15715
  * Run the core robust-reweighted SPP driver under the RAIM/FDE exclusion loop.
14688
15716
  *
@@ -15863,10 +16891,62 @@ export class SppBatchSolution {
15863
16891
  if (ret[2]) {
15864
16892
  throw takeFromExternrefTable0(ret[1]);
15865
16893
  }
15866
- return SppSolution.__wrap(ret[0]);
16894
+ return SppSolution.__wrap(ret[0]);
16895
+ }
16896
+ }
16897
+ if (Symbol.dispose) SppBatchSolution.prototype[Symbol.dispose] = SppBatchSolution.prototype.free;
16898
+
16899
+ /**
16900
+ * Position solution with an optional Doppler velocity solve.
16901
+ */
16902
+ export class SppDopplerSolution {
16903
+ static __wrap(ptr) {
16904
+ const obj = Object.create(SppDopplerSolution.prototype);
16905
+ obj.__wbg_ptr = ptr;
16906
+ SppDopplerSolutionFinalization.register(obj, obj.__wbg_ptr, obj);
16907
+ return obj;
16908
+ }
16909
+ __destroy_into_raw() {
16910
+ const ptr = this.__wbg_ptr;
16911
+ this.__wbg_ptr = 0;
16912
+ SppDopplerSolutionFinalization.unregister(this);
16913
+ return ptr;
16914
+ }
16915
+ free() {
16916
+ const ptr = this.__destroy_into_raw();
16917
+ wasm.__wbg_sppdopplersolution_free(ptr, 0);
16918
+ }
16919
+ /**
16920
+ * Receiver position, clock, and covariance solution.
16921
+ * @returns {SppSolution}
16922
+ */
16923
+ get receiver() {
16924
+ const ret = wasm.sppdopplersolution_receiver(this.__wbg_ptr);
16925
+ return SppSolution.__wrap(ret);
16926
+ }
16927
+ /**
16928
+ * Doppler-derived receiver velocity and clock drift, if the velocity rows solved.
16929
+ * @returns {VelocitySolution | undefined}
16930
+ */
16931
+ get velocity() {
16932
+ const ret = wasm.sppdopplersolution_velocity(this.__wbg_ptr);
16933
+ return ret === 0 ? undefined : VelocitySolution.__wrap(ret);
16934
+ }
16935
+ /**
16936
+ * Velocity-solve failure text when Doppler rows were present but unusable.
16937
+ * @returns {string | undefined}
16938
+ */
16939
+ get velocityError() {
16940
+ const ret = wasm.sppdopplersolution_velocityError(this.__wbg_ptr);
16941
+ let v1;
16942
+ if (ret[0] !== 0) {
16943
+ v1 = getStringFromWasm0(ret[0], ret[1]).slice();
16944
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
16945
+ }
16946
+ return v1;
15867
16947
  }
15868
16948
  }
15869
- if (Symbol.dispose) SppBatchSolution.prototype[Symbol.dispose] = SppBatchSolution.prototype.free;
16949
+ if (Symbol.dispose) SppDopplerSolution.prototype[Symbol.dispose] = SppDopplerSolution.prototype.free;
15870
16950
 
15871
16951
  /**
15872
16952
  * The result of an SPP solve.
@@ -15923,6 +17003,26 @@ export class SppSolution {
15923
17003
  const ret = wasm.sppsolution_geometryQuality(this.__wbg_ptr);
15924
17004
  return GeometryQuality.__wrap(ret);
15925
17005
  }
17006
+ /**
17007
+ * ECEF position covariance, flat row-major 3-by-3 in square metres.
17008
+ * @returns {Float64Array}
17009
+ */
17010
+ get positionCovarianceEcefM2() {
17011
+ const ret = wasm.sppsolution_positionCovarianceEcefM2(this.__wbg_ptr);
17012
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
17013
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
17014
+ return v1;
17015
+ }
17016
+ /**
17017
+ * ENU position covariance, flat row-major 3-by-3 in square metres.
17018
+ * @returns {Float64Array}
17019
+ */
17020
+ get positionCovarianceEnuM2() {
17021
+ const ret = wasm.sppsolution_positionCovarianceEnuM2(this.__wbg_ptr);
17022
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
17023
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
17024
+ return v1;
17025
+ }
15926
17026
  /**
15927
17027
  * ECEF position as a `Float64Array` `[x, y, z]`, metres.
15928
17028
  * @returns {Float64Array}
@@ -15959,6 +17059,14 @@ export class SppSolution {
15959
17059
  wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
15960
17060
  return v1;
15961
17061
  }
17062
+ /**
17063
+ * Receiver clock drift in seconds per second when a Doppler solve was fused.
17064
+ * @returns {number | undefined}
17065
+ */
17066
+ get rxClockDriftSS() {
17067
+ const ret = wasm.sppsolution_rxClockDriftSS(this.__wbg_ptr);
17068
+ return ret[0] === 0 ? undefined : ret[1];
17069
+ }
15962
17070
  /**
15963
17071
  * Receiver clock bias, seconds.
15964
17072
  * @returns {number}
@@ -16109,6 +17217,249 @@ export const SsrSource = Object.freeze({
16109
17217
  GalileoHas: 1, "1": "GalileoHas",
16110
17218
  });
16111
17219
 
17220
+ /**
17221
+ * Status for a leave-one-out static positioning diagnostic.
17222
+ * @enum {0 | 1 | 2 | 3 | 4 | 5}
17223
+ */
17224
+ export const StaticInfluenceStatus = Object.freeze({
17225
+ /**
17226
+ * The diagnostic solve completed.
17227
+ */
17228
+ Solved: 0, "0": "Solved",
17229
+ /**
17230
+ * The omitted subset left too few measurements.
17231
+ */
17232
+ TooFewMeasurements: 1, "1": "TooFewMeasurements",
17233
+ /**
17234
+ * The diagnostic geometry was singular.
17235
+ */
17236
+ SingularGeometry: 2, "2": "SingularGeometry",
17237
+ /**
17238
+ * Input validation failed for the diagnostic subset.
17239
+ */
17240
+ InvalidInput: 3, "3": "InvalidInput",
17241
+ /**
17242
+ * Ephemeris was unavailable for the diagnostic subset.
17243
+ */
17244
+ EphemerisUnavailable: 4, "4": "EphemerisUnavailable",
17245
+ /**
17246
+ * The diagnostic subset failed for another reason.
17247
+ */
17248
+ SolveFailed: 5, "5": "SolveFailed",
17249
+ });
17250
+
17251
+ /**
17252
+ * Multi-epoch static receiver solution.
17253
+ */
17254
+ export class StaticSolution {
17255
+ static __wrap(ptr) {
17256
+ const obj = Object.create(StaticSolution.prototype);
17257
+ obj.__wbg_ptr = ptr;
17258
+ StaticSolutionFinalization.register(obj, obj.__wbg_ptr, obj);
17259
+ return obj;
17260
+ }
17261
+ __destroy_into_raw() {
17262
+ const ptr = this.__wbg_ptr;
17263
+ this.__wbg_ptr = 0;
17264
+ StaticSolutionFinalization.unregister(this);
17265
+ return ptr;
17266
+ }
17267
+ free() {
17268
+ const ptr = this.__destroy_into_raw();
17269
+ wasm.__wbg_staticsolution_free(ptr, 0);
17270
+ }
17271
+ /**
17272
+ * `[latRad, lonRad, heightM]` when geodetic output was requested.
17273
+ * @returns {Float64Array | undefined}
17274
+ */
17275
+ get geodetic() {
17276
+ const ret = wasm.staticsolution_geodetic(this.__wbg_ptr);
17277
+ let v1;
17278
+ if (ret[0] !== 0) {
17279
+ v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
17280
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
17281
+ }
17282
+ return v1;
17283
+ }
17284
+ /**
17285
+ * Geometry observability and covariance-validation diagnostics.
17286
+ * @returns {GeometryQuality}
17287
+ */
17288
+ get geometryQuality() {
17289
+ const ret = wasm.staticsolution_geometryQuality(this.__wbg_ptr);
17290
+ return GeometryQuality.__wrap(ret);
17291
+ }
17292
+ /**
17293
+ * Solver iteration, convergence, and redundancy metadata.
17294
+ * @returns {any}
17295
+ */
17296
+ get metadata() {
17297
+ const ret = wasm.staticsolution_metadata(this.__wbg_ptr);
17298
+ if (ret[2]) {
17299
+ throw takeFromExternrefTable0(ret[1]);
17300
+ }
17301
+ return takeFromExternrefTable0(ret[0]);
17302
+ }
17303
+ /**
17304
+ * Epoch-local receiver clocks as `{ epochIndex, system, clockS }[]`.
17305
+ * @returns {any}
17306
+ */
17307
+ get perEpochClocks() {
17308
+ const ret = wasm.staticsolution_perEpochClocks(this.__wbg_ptr);
17309
+ if (ret[2]) {
17310
+ throw takeFromExternrefTable0(ret[1]);
17311
+ }
17312
+ return takeFromExternrefTable0(ret[0]);
17313
+ }
17314
+ /**
17315
+ * Leave-one-epoch-out diagnostics.
17316
+ * @returns {any}
17317
+ */
17318
+ get perEpochInfluence() {
17319
+ const ret = wasm.staticsolution_perEpochInfluence(this.__wbg_ptr);
17320
+ if (ret[2]) {
17321
+ throw takeFromExternrefTable0(ret[1]);
17322
+ }
17323
+ return takeFromExternrefTable0(ret[0]);
17324
+ }
17325
+ /**
17326
+ * Leave-one-satellite-out diagnostics across every epoch.
17327
+ * @returns {any}
17328
+ */
17329
+ get perSatelliteBatchInfluence() {
17330
+ const ret = wasm.staticsolution_perSatelliteBatchInfluence(this.__wbg_ptr);
17331
+ if (ret[2]) {
17332
+ throw takeFromExternrefTable0(ret[1]);
17333
+ }
17334
+ return takeFromExternrefTable0(ret[0]);
17335
+ }
17336
+ /**
17337
+ * Leave-one-satellite-out diagnostics per epoch.
17338
+ * @returns {any}
17339
+ */
17340
+ get perSatelliteInfluence() {
17341
+ const ret = wasm.staticsolution_perSatelliteInfluence(this.__wbg_ptr);
17342
+ if (ret[2]) {
17343
+ throw takeFromExternrefTable0(ret[1]);
17344
+ }
17345
+ return takeFromExternrefTable0(ret[0]);
17346
+ }
17347
+ /**
17348
+ * ECEF position covariance, flat row-major 3-by-3 in square metres.
17349
+ * @returns {Float64Array}
17350
+ */
17351
+ get positionCovarianceEcefM2() {
17352
+ const ret = wasm.staticsolution_positionCovarianceEcefM2(this.__wbg_ptr);
17353
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
17354
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
17355
+ return v1;
17356
+ }
17357
+ /**
17358
+ * ENU position covariance, flat row-major 3-by-3 in square metres.
17359
+ * @returns {Float64Array}
17360
+ */
17361
+ get positionCovarianceEnuM2() {
17362
+ const ret = wasm.staticsolution_positionCovarianceEnuM2(this.__wbg_ptr);
17363
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
17364
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
17365
+ return v1;
17366
+ }
17367
+ /**
17368
+ * ECEF position as `[x, y, z]`, metres.
17369
+ * @returns {Float64Array}
17370
+ */
17371
+ get positionM() {
17372
+ const ret = wasm.staticsolution_positionM(this.__wbg_ptr);
17373
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
17374
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
17375
+ return v1;
17376
+ }
17377
+ /**
17378
+ * Rejected satellites grouped by input epoch.
17379
+ * @returns {any}
17380
+ */
17381
+ get rejectedSats() {
17382
+ const ret = wasm.staticsolution_rejectedSats(this.__wbg_ptr);
17383
+ if (ret[2]) {
17384
+ throw takeFromExternrefTable0(ret[1]);
17385
+ }
17386
+ return takeFromExternrefTable0(ret[0]);
17387
+ }
17388
+ /**
17389
+ * Root-mean-square of the unweighted post-fit residuals, metres.
17390
+ * @returns {number}
17391
+ */
17392
+ get residualRmsM() {
17393
+ const ret = wasm.staticsolution_residualRmsM(this.__wbg_ptr);
17394
+ return ret;
17395
+ }
17396
+ /**
17397
+ * Post-fit residuals as `{ epochIndex, satelliteId, residualM, ... }[]`.
17398
+ * @returns {any}
17399
+ */
17400
+ get residuals() {
17401
+ const ret = wasm.staticsolution_residuals(this.__wbg_ptr);
17402
+ if (ret[2]) {
17403
+ throw takeFromExternrefTable0(ret[1]);
17404
+ }
17405
+ return takeFromExternrefTable0(ret[0]);
17406
+ }
17407
+ /**
17408
+ * Full state covariance, flat row-major square matrix in square metres.
17409
+ * @returns {Float64Array}
17410
+ */
17411
+ get stateCovarianceM2() {
17412
+ const ret = wasm.staticsolution_stateCovarianceM2(this.__wbg_ptr);
17413
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
17414
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
17415
+ return v1;
17416
+ }
17417
+ /**
17418
+ * State covariance matrix dimension.
17419
+ * @returns {number}
17420
+ */
17421
+ get stateParameterCount() {
17422
+ const ret = wasm.staticsolution_stateParameterCount(this.__wbg_ptr);
17423
+ return ret >>> 0;
17424
+ }
17425
+ /**
17426
+ * Used satellite tokens grouped by input epoch.
17427
+ * @returns {any}
17428
+ */
17429
+ get usedSats() {
17430
+ const ret = wasm.staticsolution_usedSats(this.__wbg_ptr);
17431
+ if (ret[2]) {
17432
+ throw takeFromExternrefTable0(ret[1]);
17433
+ }
17434
+ return takeFromExternrefTable0(ret[0]);
17435
+ }
17436
+ /**
17437
+ * ECEF X, metres.
17438
+ * @returns {number}
17439
+ */
17440
+ get xM() {
17441
+ const ret = wasm.staticsolution_xM(this.__wbg_ptr);
17442
+ return ret;
17443
+ }
17444
+ /**
17445
+ * ECEF Y, metres.
17446
+ * @returns {number}
17447
+ */
17448
+ get yM() {
17449
+ const ret = wasm.staticsolution_yM(this.__wbg_ptr);
17450
+ return ret;
17451
+ }
17452
+ /**
17453
+ * ECEF Z, metres.
17454
+ * @returns {number}
17455
+ */
17456
+ get zM() {
17457
+ const ret = wasm.staticsolution_zM(this.__wbg_ptr);
17458
+ return ret;
17459
+ }
17460
+ }
17461
+ if (Symbol.dispose) StaticSolution.prototype[Symbol.dispose] = StaticSolution.prototype.free;
17462
+
16112
17463
  /**
16113
17464
  * A batch of Sun and Moon positions, one per epoch: flat row-major `sun` and
16114
17465
  * `moon` `Float64Array`s of length `3 * epochCount`, in **metres**.
@@ -17792,6 +19143,16 @@ export class VelocitySolution {
17792
19143
  const ret = wasm.velocitysolution_speedMS(this.__wbg_ptr);
17793
19144
  return ret;
17794
19145
  }
19146
+ /**
19147
+ * Unit-variance covariance of `[vx, vy, vz, clockDrift]`, flat row-major.
19148
+ * @returns {Float64Array}
19149
+ */
19150
+ get stateCovariance() {
19151
+ const ret = wasm.velocitysolution_stateCovariance(this.__wbg_ptr);
19152
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
19153
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
19154
+ return v1;
19155
+ }
17795
19156
  /**
17796
19157
  * Satellite tokens contributing rows, in residual order.
17797
19158
  * @returns {string[]}
@@ -19046,6 +20407,23 @@ export function defaultPair(system) {
19046
20407
  return ret === 0 ? undefined : CarrierPair.__wrap(ret);
19047
20408
  }
19048
20409
 
20410
+ /**
20411
+ * Default scenario seed as a hexadecimal string.
20412
+ * @returns {string}
20413
+ */
20414
+ export function defaultScenarioSeedHex() {
20415
+ let deferred1_0;
20416
+ let deferred1_1;
20417
+ try {
20418
+ const ret = wasm.defaultScenarioSeedHex();
20419
+ deferred1_0 = ret[0];
20420
+ deferred1_1 = ret[1];
20421
+ return getStringFromWasm0(ret[0], ret[1]);
20422
+ } finally {
20423
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
20424
+ }
20425
+ }
20426
+
19049
20427
  /**
19050
20428
  * Single-frequency carrier used by the SPP ionosphere-scaling policy.
19051
20429
  * @param {GnssSystem} system
@@ -19360,6 +20738,25 @@ export function eclipseStatus(satellite_position_km, sun_position_km) {
19360
20738
  return v3;
19361
20739
  }
19362
20740
 
20741
+ /**
20742
+ * Effective C/N0 degradation for one finite-band interference term.
20743
+ * @param {SignalAnalysisModulation} desired
20744
+ * @param {SignalAnalysisModulation} interference
20745
+ * @param {number} cn0_db_hz
20746
+ * @param {number} receiver_bandwidth_hz
20747
+ * @param {number} power_ratio_to_carrier
20748
+ * @returns {any}
20749
+ */
20750
+ export function effectiveCn0Degradation(desired, interference, cn0_db_hz, receiver_bandwidth_hz, power_ratio_to_carrier) {
20751
+ _assertClass(desired, SignalAnalysisModulation);
20752
+ _assertClass(interference, SignalAnalysisModulation);
20753
+ const ret = wasm.effectiveCn0Degradation(desired.__wbg_ptr, interference.__wbg_ptr, cn0_db_hz, receiver_bandwidth_hz, power_ratio_to_carrier);
20754
+ if (ret[2]) {
20755
+ throw takeFromExternrefTable0(ret[1]);
20756
+ }
20757
+ return takeFromExternrefTable0(ret[0]);
20758
+ }
20759
+
19363
20760
  /**
19364
20761
  * Ellipsoidal height `h = H + N` (metres above the WGS84 ellipsoid) from an
19365
20762
  * orthometric height and a geodetic position in radians, using the embedded
@@ -19470,6 +20867,24 @@ export function ellipsoidalHeightM(orthometric_height_m, lat_rad, lon_rad) {
19470
20867
  return ret;
19471
20868
  }
19472
20869
 
20870
+ /**
20871
+ * Stable string label for an [`EmissionMediaStatus`] enum value.
20872
+ * @param {EmissionMediaStatus} status
20873
+ * @returns {string}
20874
+ */
20875
+ export function emissionMediaStatusLabel(status) {
20876
+ let deferred1_0;
20877
+ let deferred1_1;
20878
+ try {
20879
+ const ret = wasm.emissionMediaStatusLabel(status);
20880
+ deferred1_0 = ret[0];
20881
+ deferred1_1 = ret[1];
20882
+ return getStringFromWasm0(ret[0], ret[1]);
20883
+ } finally {
20884
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
20885
+ }
20886
+ }
20887
+
19473
20888
  /**
19474
20889
  * Encode plain RINEX observation text into a Compact RINEX (Hatanaka) stream,
19475
20890
  * the inverse of [`decodeCrinex`]. RINEX 2 is emitted as CRINEX 1.0 and RINEX 3
@@ -20341,7 +21756,24 @@ export function fspl(distance_km, frequency_mhz) {
20341
21756
  if (ret[2]) {
20342
21757
  throw takeFromExternrefTable0(ret[1]);
20343
21758
  }
20344
- return ret[0];
21759
+ return ret[0];
21760
+ }
21761
+
21762
+ /**
21763
+ * Decode and re-encode fusion-state bytes through the core codec.
21764
+ * @param {Uint8Array} bytes
21765
+ * @returns {Uint8Array}
21766
+ */
21767
+ export function fusionStateBytesRoundTrip(bytes) {
21768
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
21769
+ const len0 = WASM_VECTOR_LEN;
21770
+ const ret = wasm.fusionStateBytesRoundTrip(ptr0, len0);
21771
+ if (ret[3]) {
21772
+ throw takeFromExternrefTable0(ret[2]);
21773
+ }
21774
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
21775
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
21776
+ return v2;
20345
21777
  }
20346
21778
 
20347
21779
  /**
@@ -20497,6 +21929,147 @@ export function geodeticToEcef(geodetic) {
20497
21929
  return v2;
20498
21930
  }
20499
21931
 
21932
+ /**
21933
+ * Containment probability using default probability options.
21934
+ * @param {Float64Array} vertices
21935
+ * @param {number} lat_rad
21936
+ * @param {number} lon_rad
21937
+ * @param {number} height_m
21938
+ * @param {any} uncertainty_value
21939
+ * @returns {number}
21940
+ */
21941
+ export function geofenceContainmentProbability(vertices, lat_rad, lon_rad, height_m, uncertainty_value) {
21942
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
21943
+ const len0 = WASM_VECTOR_LEN;
21944
+ const ret = wasm.geofenceContainmentProbability(ptr0, len0, lat_rad, lon_rad, height_m, uncertainty_value);
21945
+ if (ret[2]) {
21946
+ throw takeFromExternrefTable0(ret[1]);
21947
+ }
21948
+ return ret[0];
21949
+ }
21950
+
21951
+ /**
21952
+ * Boolean containment for one position and flat vertex array.
21953
+ * @param {Float64Array} vertices
21954
+ * @param {number} lat_rad
21955
+ * @param {number} lon_rad
21956
+ * @param {number} height_m
21957
+ * @returns {boolean}
21958
+ */
21959
+ export function geofenceContains(vertices, lat_rad, lon_rad, height_m) {
21960
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
21961
+ const len0 = WASM_VECTOR_LEN;
21962
+ const ret = wasm.geofenceContains(ptr0, len0, lat_rad, lon_rad, height_m);
21963
+ if (ret[2]) {
21964
+ throw takeFromExternrefTable0(ret[1]);
21965
+ }
21966
+ return ret[0] !== 0;
21967
+ }
21968
+
21969
+ /**
21970
+ * Stable string label for a [`GeofenceCrossingKind`] enum value.
21971
+ * @param {GeofenceCrossingKind} kind
21972
+ * @returns {string}
21973
+ */
21974
+ export function geofenceCrossingKindLabel(kind) {
21975
+ let deferred1_0;
21976
+ let deferred1_1;
21977
+ try {
21978
+ const ret = wasm.geofenceCrossingKindLabel(kind);
21979
+ deferred1_0 = ret[0];
21980
+ deferred1_1 = ret[1];
21981
+ return getStringFromWasm0(ret[0], ret[1]);
21982
+ } finally {
21983
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
21984
+ }
21985
+ }
21986
+
21987
+ /**
21988
+ * Probabilistic crossing detection with default hysteresis.
21989
+ * @param {Float64Array} vertices
21990
+ * @param {any} samples
21991
+ * @param {any} options
21992
+ * @returns {any}
21993
+ */
21994
+ export function geofenceCrossingProbability(vertices, samples, options) {
21995
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
21996
+ const len0 = WASM_VECTOR_LEN;
21997
+ const ret = wasm.geofenceCrossingProbability(ptr0, len0, samples, options);
21998
+ if (ret[2]) {
21999
+ throw takeFromExternrefTable0(ret[1]);
22000
+ }
22001
+ return takeFromExternrefTable0(ret[0]);
22002
+ }
22003
+
22004
+ /**
22005
+ * Stable string label for a [`GeofenceError`] enum value.
22006
+ * @param {GeofenceError} error
22007
+ * @returns {string}
22008
+ */
22009
+ export function geofenceErrorLabel(error) {
22010
+ let deferred1_0;
22011
+ let deferred1_1;
22012
+ try {
22013
+ const ret = wasm.geofenceErrorLabel(error);
22014
+ deferred1_0 = ret[0];
22015
+ deferred1_1 = ret[1];
22016
+ return getStringFromWasm0(ret[0], ret[1]);
22017
+ } finally {
22018
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
22019
+ }
22020
+ }
22021
+
22022
+ /**
22023
+ * Construct a geodesic WGS84 polygon from flat 2D radian vertices.
22024
+ * @param {Float64Array} vertices
22025
+ * @returns {Geofence}
22026
+ */
22027
+ export function geofenceFromVertices(vertices) {
22028
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
22029
+ const len0 = WASM_VECTOR_LEN;
22030
+ const ret = wasm.geofenceFromVertices(ptr0, len0);
22031
+ if (ret[2]) {
22032
+ throw takeFromExternrefTable0(ret[1]);
22033
+ }
22034
+ return Geofence.__wrap(ret[0]);
22035
+ }
22036
+
22037
+ /**
22038
+ * Construct a geodesic WGS84 polygon from flat 3D radian vertices.
22039
+ *
22040
+ * `vertices` is `[latRad, lonRad, heightM, ...]`. Heights are accepted but
22041
+ * ignored by the core geofence model.
22042
+ * @param {Float64Array} vertices
22043
+ * @returns {Geofence}
22044
+ */
22045
+ export function geofenceFromVertices3d(vertices) {
22046
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
22047
+ const len0 = WASM_VECTOR_LEN;
22048
+ const ret = wasm.geofenceFromVertices3d(ptr0, len0);
22049
+ if (ret[2]) {
22050
+ throw takeFromExternrefTable0(ret[1]);
22051
+ }
22052
+ return Geofence.__wrap(ret[0]);
22053
+ }
22054
+
22055
+ /**
22056
+ * Stable string label for a [`GeofenceProbabilityMethod`] enum value.
22057
+ * @param {GeofenceProbabilityMethod} method
22058
+ * @returns {string}
22059
+ */
22060
+ export function geofenceProbabilityMethodLabel(method) {
22061
+ let deferred1_0;
22062
+ let deferred1_1;
22063
+ try {
22064
+ const ret = wasm.geofenceProbabilityMethodLabel(method);
22065
+ deferred1_0 = ret[0];
22066
+ deferred1_1 = ret[1];
22067
+ return getStringFromWasm0(ret[0], ret[1]);
22068
+ } finally {
22069
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
22070
+ }
22071
+ }
22072
+
20500
22073
  /**
20501
22074
  * Geoid undulation `N` (metres above the WGS84 ellipsoid) at a geodetic
20502
22075
  * position in radians, from the COARSE built-in global grid. Latitude is
@@ -22653,6 +24226,24 @@ export function oceanTideLoading(station_ecef_m, year, month, day, fractional_ho
22653
24226
  return v4;
22654
24227
  }
22655
24228
 
24229
+ /**
24230
+ * Open precise-interpolant artifact bytes as an evaluable in-memory product.
24231
+ *
24232
+ * The returned handle owns its byte buffer because JS byte slices cannot be
24233
+ * borrowed across calls by this class boundary.
24234
+ * @param {Uint8Array} bytes
24235
+ * @returns {PreciseInterpolantArtifact}
24236
+ */
24237
+ export function openPreciseInterpolantArtifact(bytes) {
24238
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
24239
+ const len0 = WASM_VECTOR_LEN;
24240
+ const ret = wasm.openPreciseInterpolantArtifact(ptr0, len0);
24241
+ if (ret[2]) {
24242
+ throw takeFromExternrefTable0(ret[1]);
24243
+ }
24244
+ return PreciseInterpolantArtifact.__wrap(ret[0]);
24245
+ }
24246
+
22656
24247
  /**
22657
24248
  * Broadcast-derived per-satellite orbit-repeat lag, in seconds.
22658
24249
  *
@@ -23287,6 +24878,36 @@ export function preciseEphemerisSamplesFromSamples(samples) {
23287
24878
  return PreciseEphemerisSampleSource.__wrap(ret[0]);
23288
24879
  }
23289
24880
 
24881
+ /**
24882
+ * Compute the precise-interpolant artifact file-level checksum for byte content.
24883
+ * @param {Uint8Array} bytes
24884
+ * @returns {bigint}
24885
+ */
24886
+ export function preciseInterpolantArtifactChecksum64(bytes) {
24887
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
24888
+ const len0 = WASM_VECTOR_LEN;
24889
+ const ret = wasm.preciseInterpolantArtifactChecksum64(ptr0, len0);
24890
+ return BigInt.asUintN(64, ret);
24891
+ }
24892
+
24893
+ /**
24894
+ * Stable string label for a [`PreciseInterpolantArtifactError`] enum value.
24895
+ * @param {PreciseInterpolantArtifactError} error
24896
+ * @returns {string}
24897
+ */
24898
+ export function preciseInterpolantArtifactErrorLabel(error) {
24899
+ let deferred1_0;
24900
+ let deferred1_1;
24901
+ try {
24902
+ const ret = wasm.preciseInterpolantArtifactErrorLabel(error);
24903
+ deferred1_0 = ret[0];
24904
+ deferred1_1 = ret[1];
24905
+ return getStringFromWasm0(ret[0], ret[1]);
24906
+ } finally {
24907
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
24908
+ }
24909
+ }
24910
+
23290
24911
  /**
23291
24912
  * Predict observables for many `(satellite, receiver, epoch)` requests from a
23292
24913
  * broadcast ephemeris store, serially. See [`predictBatchSp3`] for the argument
@@ -24060,6 +25681,32 @@ export function sbasProtectionLevels(geometry, model, k) {
24060
25681
  return SbasProtection.__wrap(ret[0]);
24061
25682
  }
24062
25683
 
25684
+ /**
25685
+ * Core scenario engine version string used in deterministic outputs.
25686
+ * @returns {string}
25687
+ */
25688
+ export function scenarioEngineVersion() {
25689
+ let deferred1_0;
25690
+ let deferred1_1;
25691
+ try {
25692
+ const ret = wasm.scenarioEngineVersion();
25693
+ deferred1_0 = ret[0];
25694
+ deferred1_1 = ret[1];
25695
+ return getStringFromWasm0(ret[0], ret[1]);
25696
+ } finally {
25697
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
25698
+ }
25699
+ }
25700
+
25701
+ /**
25702
+ * Core scenario schema version accepted by the binding.
25703
+ * @returns {number}
25704
+ */
25705
+ export function scenarioSchemaVersion() {
25706
+ const ret = wasm.scenarioSchemaVersion();
25707
+ return ret >>> 0;
25708
+ }
25709
+
24063
25710
  /**
24064
25711
  * Screen a primary satellite against a secondary TLE catalog for threshold TCAs.
24065
25712
  *
@@ -24331,6 +25978,66 @@ export function sigmas(entries, options) {
24331
25978
  return SatelliteVector.__wrap(ret[0]);
24332
25979
  }
24333
25980
 
25981
+ /**
25982
+ * Simulate a scenario from a JS object or JSON string and return JS arrays.
25983
+ * @param {any} value
25984
+ * @returns {any}
25985
+ */
25986
+ export function simulateScenario(value) {
25987
+ const ret = wasm.simulateScenario(value);
25988
+ if (ret[2]) {
25989
+ throw takeFromExternrefTable0(ret[1]);
25990
+ }
25991
+ return takeFromExternrefTable0(ret[0]);
25992
+ }
25993
+
25994
+ /**
25995
+ * Simulate a scenario from a JS object or JSON string and return deterministic JSON bytes.
25996
+ * @param {any} value
25997
+ * @returns {Uint8Array}
25998
+ */
25999
+ export function simulateScenarioBytes(value) {
26000
+ const ret = wasm.simulateScenarioBytes(value);
26001
+ if (ret[3]) {
26002
+ throw takeFromExternrefTable0(ret[2]);
26003
+ }
26004
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
26005
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
26006
+ return v1;
26007
+ }
26008
+
26009
+ /**
26010
+ * Simulate a scenario from JSON text and return JS arrays.
26011
+ * @param {string} text
26012
+ * @returns {any}
26013
+ */
26014
+ export function simulateScenarioJson(text) {
26015
+ const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
26016
+ const len0 = WASM_VECTOR_LEN;
26017
+ const ret = wasm.simulateScenarioJson(ptr0, len0);
26018
+ if (ret[2]) {
26019
+ throw takeFromExternrefTable0(ret[1]);
26020
+ }
26021
+ return takeFromExternrefTable0(ret[0]);
26022
+ }
26023
+
26024
+ /**
26025
+ * Simulate a scenario from JSON text and return deterministic JSON bytes.
26026
+ * @param {string} text
26027
+ * @returns {Uint8Array}
26028
+ */
26029
+ export function simulateScenarioJsonBytes(text) {
26030
+ const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
26031
+ const len0 = WASM_VECTOR_LEN;
26032
+ const ret = wasm.simulateScenarioJsonBytes(ptr0, len0);
26033
+ if (ret[3]) {
26034
+ throw takeFromExternrefTable0(ret[2]);
26035
+ }
26036
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
26037
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
26038
+ return v2;
26039
+ }
26040
+
24334
26041
  /**
24335
26042
  * Sample skewness of a residual set.
24336
26043
  *
@@ -24688,6 +26395,22 @@ export function solveSppSbas(broadcast, store, geo, request, mode) {
24688
26395
  return SppSolution.__wrap(ret[0]);
24689
26396
  }
24690
26397
 
26398
+ /**
26399
+ * Solve one static receiver position from multiple SPP-shaped epochs over SP3.
26400
+ * @param {Sp3} sp3
26401
+ * @param {any} epochs
26402
+ * @param {any} options
26403
+ * @returns {StaticSolution}
26404
+ */
26405
+ export function solveStatic(sp3, epochs, options) {
26406
+ _assertClass(sp3, Sp3);
26407
+ const ret = wasm.solveStatic(sp3.__wbg_ptr, epochs, options);
26408
+ if (ret[2]) {
26409
+ throw takeFromExternrefTable0(ret[1]);
26410
+ }
26411
+ return StaticSolution.__wrap(ret[0]);
26412
+ }
26413
+
24691
26414
  /**
24692
26415
  * Solve a static RTK arc with one batch float solution and one validated fixed
24693
26416
  * solution over the whole arc.
@@ -24869,6 +26592,40 @@ export function sp3PreciseEphemerisSamples(sp3) {
24869
26592
  return takeFromExternrefTable0(ret[0]);
24870
26593
  }
24871
26594
 
26595
+ /**
26596
+ * Spectral separation coefficient between two modulations, in dB-Hz.
26597
+ * @param {SignalAnalysisModulation} desired
26598
+ * @param {SignalAnalysisModulation} interference
26599
+ * @param {number} receiver_bandwidth_hz
26600
+ * @returns {number}
26601
+ */
26602
+ export function spectralSeparationCoefficientDbHz(desired, interference, receiver_bandwidth_hz) {
26603
+ _assertClass(desired, SignalAnalysisModulation);
26604
+ _assertClass(interference, SignalAnalysisModulation);
26605
+ const ret = wasm.spectralSeparationCoefficientDbHz(desired.__wbg_ptr, interference.__wbg_ptr, receiver_bandwidth_hz);
26606
+ if (ret[2]) {
26607
+ throw takeFromExternrefTable0(ret[1]);
26608
+ }
26609
+ return ret[0];
26610
+ }
26611
+
26612
+ /**
26613
+ * Spectral separation coefficient between two modulations, in hertz.
26614
+ * @param {SignalAnalysisModulation} desired
26615
+ * @param {SignalAnalysisModulation} interference
26616
+ * @param {number} receiver_bandwidth_hz
26617
+ * @returns {number}
26618
+ */
26619
+ export function spectralSeparationCoefficientHz(desired, interference, receiver_bandwidth_hz) {
26620
+ _assertClass(desired, SignalAnalysisModulation);
26621
+ _assertClass(interference, SignalAnalysisModulation);
26622
+ const ret = wasm.spectralSeparationCoefficientHz(desired.__wbg_ptr, interference.__wbg_ptr, receiver_bandwidth_hz);
26623
+ if (ret[2]) {
26624
+ throw takeFromExternrefTable0(ret[1]);
26625
+ }
26626
+ return ret[0];
26627
+ }
26628
+
24872
26629
  /**
24873
26630
  * Continuous seconds since J2000 for a split Julian date.
24874
26631
  * @param {number} jd_whole
@@ -24919,6 +26676,24 @@ export function ssrSourceLabel(source) {
24919
26676
  }
24920
26677
  }
24921
26678
 
26679
+ /**
26680
+ * Stable string label for a [`StaticInfluenceStatus`] enum value.
26681
+ * @param {StaticInfluenceStatus} status
26682
+ * @returns {string}
26683
+ */
26684
+ export function staticInfluenceStatusLabel(status) {
26685
+ let deferred1_0;
26686
+ let deferred1_1;
26687
+ try {
26688
+ const ret = wasm.staticInfluenceStatusLabel(status);
26689
+ deferred1_0 = ret[0];
26690
+ deferred1_1 = ret[1];
26691
+ return getStringFromWasm0(ret[0], ret[1]);
26692
+ } finally {
26693
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
26694
+ }
26695
+ }
26696
+
24922
26697
  /**
24923
26698
  * Sub-observer point (planetary central meridian) on a rotating body.
24924
26699
  *
@@ -25695,6 +27470,10 @@ function __wbg_get_imports() {
25695
27470
  const ret = String.fromCodePoint(arg0 >>> 0);
25696
27471
  return ret;
25697
27472
  }, arguments); },
27473
+ __wbg_from_13e323c65fc8f464: function(arg0) {
27474
+ const ret = Array.from(arg0);
27475
+ return ret;
27476
+ },
25698
27477
  __wbg_get_507a50627bffa49b: function(arg0, arg1) {
25699
27478
  const ret = arg0[arg1 >>> 0];
25700
27479
  return ret;
@@ -26154,6 +27933,9 @@ const Egm96FifteenMinuteGeoidFinalization = (typeof FinalizationRegistry === 'un
26154
27933
  const EllipsoidalHeightMFinalization = (typeof FinalizationRegistry === 'undefined')
26155
27934
  ? { register: () => {}, unregister: () => {} }
26156
27935
  : new FinalizationRegistry(ptr => wasm.__wbg_ellipsoidalheightm_free(ptr, 1));
27936
+ const EmissionMediaBatchFinalization = (typeof FinalizationRegistry === 'undefined')
27937
+ ? { register: () => {}, unregister: () => {} }
27938
+ : new FinalizationRegistry(ptr => wasm.__wbg_emissionmediabatch_free(ptr, 1));
26157
27939
  const EncounterFrameFinalization = (typeof FinalizationRegistry === 'undefined')
26158
27940
  ? { register: () => {}, unregister: () => {} }
26159
27941
  : new FinalizationRegistry(ptr => wasm.__wbg_encounterframe_free(ptr, 1));
@@ -26181,6 +27963,9 @@ const FrameScannerFinalization = (typeof FinalizationRegistry === 'undefined')
26181
27963
  const FrameStatesFinalization = (typeof FinalizationRegistry === 'undefined')
26182
27964
  ? { register: () => {}, unregister: () => {} }
26183
27965
  : new FinalizationRegistry(ptr => wasm.__wbg_framestates_free(ptr, 1));
27966
+ const GeofenceFinalization = (typeof FinalizationRegistry === 'undefined')
27967
+ ? { register: () => {}, unregister: () => {} }
27968
+ : new FinalizationRegistry(ptr => wasm.__wbg_geofence_free(ptr, 1));
26184
27969
  const GeoidGridFinalization = (typeof FinalizationRegistry === 'undefined')
26185
27970
  ? { register: () => {}, unregister: () => {} }
26186
27971
  : new FinalizationRegistry(ptr => wasm.__wbg_geoidgrid_free(ptr, 1));
@@ -26190,6 +27975,9 @@ const GeometryQualityFinalization = (typeof FinalizationRegistry === 'undefined'
26190
27975
  const GlonassRecordJsFinalization = (typeof FinalizationRegistry === 'undefined')
26191
27976
  ? { register: () => {}, unregister: () => {} }
26192
27977
  : new FinalizationRegistry(ptr => wasm.__wbg_glonassrecordjs_free(ptr, 1));
27978
+ const GnssInsFilterFinalization = (typeof FinalizationRegistry === 'undefined')
27979
+ ? { register: () => {}, unregister: () => {} }
27980
+ : new FinalizationRegistry(ptr => wasm.__wbg_gnssinsfilter_free(ptr, 1));
26193
27981
  const GnssPassFinalization = (typeof FinalizationRegistry === 'undefined')
26194
27982
  ? { register: () => {}, unregister: () => {} }
26195
27983
  : new FinalizationRegistry(ptr => wasm.__wbg_gnsspass_free(ptr, 1));
@@ -26394,6 +28182,9 @@ const PreciseEphemerisInterpolantFinalization = (typeof FinalizationRegistry ===
26394
28182
  const PreciseEphemerisSampleSourceFinalization = (typeof FinalizationRegistry === 'undefined')
26395
28183
  ? { register: () => {}, unregister: () => {} }
26396
28184
  : new FinalizationRegistry(ptr => wasm.__wbg_preciseephemerissamplesource_free(ptr, 1));
28185
+ const PreciseInterpolantArtifactFinalization = (typeof FinalizationRegistry === 'undefined')
28186
+ ? { register: () => {}, unregister: () => {} }
28187
+ : new FinalizationRegistry(ptr => wasm.__wbg_preciseinterpolantartifact_free(ptr, 1));
26397
28188
  const PredictBatchFinalization = (typeof FinalizationRegistry === 'undefined')
26398
28189
  ? { register: () => {}, unregister: () => {} }
26399
28190
  : new FinalizationRegistry(ptr => wasm.__wbg_predictbatch_free(ptr, 1));
@@ -26460,6 +28251,9 @@ const SbasProtectionFinalization = (typeof FinalizationRegistry === 'undefined')
26460
28251
  const SbasSisErrorFinalization = (typeof FinalizationRegistry === 'undefined')
26461
28252
  ? { register: () => {}, unregister: () => {} }
26462
28253
  : new FinalizationRegistry(ptr => wasm.__wbg_sbassiserror_free(ptr, 1));
28254
+ const SignalAnalysisModulationFinalization = (typeof FinalizationRegistry === 'undefined')
28255
+ ? { register: () => {}, unregister: () => {} }
28256
+ : new FinalizationRegistry(ptr => wasm.__wbg_signalanalysismodulation_free(ptr, 1));
26463
28257
  const SignalPolicyFinalization = (typeof FinalizationRegistry === 'undefined')
26464
28258
  ? { register: () => {}, unregister: () => {} }
26465
28259
  : new FinalizationRegistry(ptr => wasm.__wbg_signalpolicy_free(ptr, 1));
@@ -26520,12 +28314,18 @@ const SpkStateFinalization = (typeof FinalizationRegistry === 'undefined')
26520
28314
  const SppBatchSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
26521
28315
  ? { register: () => {}, unregister: () => {} }
26522
28316
  : new FinalizationRegistry(ptr => wasm.__wbg_sppbatchsolution_free(ptr, 1));
28317
+ const SppDopplerSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
28318
+ ? { register: () => {}, unregister: () => {} }
28319
+ : new FinalizationRegistry(ptr => wasm.__wbg_sppdopplersolution_free(ptr, 1));
26523
28320
  const SppSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
26524
28321
  ? { register: () => {}, unregister: () => {} }
26525
28322
  : new FinalizationRegistry(ptr => wasm.__wbg_sppsolution_free(ptr, 1));
26526
28323
  const SsrCorrectionStoreFinalization = (typeof FinalizationRegistry === 'undefined')
26527
28324
  ? { register: () => {}, unregister: () => {} }
26528
28325
  : new FinalizationRegistry(ptr => wasm.__wbg_ssrcorrectionstore_free(ptr, 1));
28326
+ const StaticSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
28327
+ ? { register: () => {}, unregister: () => {} }
28328
+ : new FinalizationRegistry(ptr => wasm.__wbg_staticsolution_free(ptr, 1));
26529
28329
  const SunMoonFinalization = (typeof FinalizationRegistry === 'undefined')
26530
28330
  ? { register: () => {}, unregister: () => {} }
26531
28331
  : new FinalizationRegistry(ptr => wasm.__wbg_sunmoon_free(ptr, 1));