@neilberkman/sidereon 0.16.1 → 0.17.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.
@@ -4328,6 +4328,153 @@ class EllipsoidalHeightM {
4328
4328
  if (Symbol.dispose) EllipsoidalHeightM.prototype[Symbol.dispose] = EllipsoidalHeightM.prototype.free;
4329
4329
  exports.EllipsoidalHeightM = EllipsoidalHeightM;
4330
4330
 
4331
+ /**
4332
+ * Contiguous state and media-correction arrays from one emission batch.
4333
+ */
4334
+ class EmissionMediaBatch {
4335
+ static __wrap(ptr) {
4336
+ const obj = Object.create(EmissionMediaBatch.prototype);
4337
+ obj.__wbg_ptr = ptr;
4338
+ EmissionMediaBatchFinalization.register(obj, obj.__wbg_ptr, obj);
4339
+ return obj;
4340
+ }
4341
+ __destroy_into_raw() {
4342
+ const ptr = this.__wbg_ptr;
4343
+ this.__wbg_ptr = 0;
4344
+ EmissionMediaBatchFinalization.unregister(this);
4345
+ return ptr;
4346
+ }
4347
+ free() {
4348
+ const ptr = this.__destroy_into_raw();
4349
+ wasm.__wbg_emissionmediabatch_free(ptr, 0);
4350
+ }
4351
+ /**
4352
+ * Satellite clock offsets in seconds, with `NaN` for unavailable rows.
4353
+ * @returns {Float64Array}
4354
+ */
4355
+ get clockS() {
4356
+ const ret = wasm.emissionmediabatch_clockS(this.__wbg_ptr);
4357
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
4358
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
4359
+ return v1;
4360
+ }
4361
+ /**
4362
+ * Number of satellite rows in the batch.
4363
+ * @returns {number}
4364
+ */
4365
+ get count() {
4366
+ const ret = wasm.emissionmediabatch_count(this.__wbg_ptr);
4367
+ return ret >>> 0;
4368
+ }
4369
+ /**
4370
+ * Per-row success and error messages as `{ ok, error }[]`.
4371
+ * @returns {any}
4372
+ */
4373
+ get elementResults() {
4374
+ const ret = wasm.emissionmediabatch_elementResults(this.__wbg_ptr);
4375
+ if (ret[2]) {
4376
+ throw takeFromExternrefTable0(ret[1]);
4377
+ }
4378
+ return takeFromExternrefTable0(ret[0]);
4379
+ }
4380
+ /**
4381
+ * Error message for row `index`, or `undefined` when the row has no error.
4382
+ * @param {number} index
4383
+ * @returns {string | undefined}
4384
+ */
4385
+ error(index) {
4386
+ const ret = wasm.emissionmediabatch_error(this.__wbg_ptr, index);
4387
+ if (ret[3]) {
4388
+ throw takeFromExternrefTable0(ret[2]);
4389
+ }
4390
+ let v1;
4391
+ if (ret[0] !== 0) {
4392
+ v1 = getStringFromWasm0(ret[0], ret[1]).slice();
4393
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
4394
+ }
4395
+ return v1;
4396
+ }
4397
+ /**
4398
+ * Ionospheric slant group delays in metres, with `NaN` for unavailable rows.
4399
+ * @returns {Float64Array}
4400
+ */
4401
+ get ionosphereSlantDelayM() {
4402
+ const ret = wasm.emissionmediabatch_ionosphereSlantDelayM(this.__wbg_ptr);
4403
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
4404
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
4405
+ return v1;
4406
+ }
4407
+ /**
4408
+ * Satellite ECEF positions as flat `[x0, y0, z0, ...]`, metres.
4409
+ *
4410
+ * Rows without a usable position are filled with `NaN`; check `statuses`
4411
+ * before consuming the corresponding row.
4412
+ * @returns {Float64Array}
4413
+ */
4414
+ get positionEcefM() {
4415
+ const ret = wasm.emissionmediabatch_positionEcefM(this.__wbg_ptr);
4416
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
4417
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
4418
+ return v1;
4419
+ }
4420
+ /**
4421
+ * Per-row status labels, index-aligned with the numeric arrays.
4422
+ * @returns {string[]}
4423
+ */
4424
+ get statusLabels() {
4425
+ const ret = wasm.emissionmediabatch_statusLabels(this.__wbg_ptr);
4426
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
4427
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
4428
+ return v1;
4429
+ }
4430
+ /**
4431
+ * Per-row typed status values, index-aligned with the numeric arrays.
4432
+ * @returns {any[]}
4433
+ */
4434
+ get statuses() {
4435
+ const ret = wasm.emissionmediabatch_statuses(this.__wbg_ptr);
4436
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
4437
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
4438
+ return v1;
4439
+ }
4440
+ /**
4441
+ * Tropospheric slant delays in metres, with `NaN` for unavailable rows.
4442
+ * @returns {Float64Array}
4443
+ */
4444
+ get troposphereDelayM() {
4445
+ const ret = wasm.emissionmediabatch_troposphereDelayM(this.__wbg_ptr);
4446
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
4447
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
4448
+ return v1;
4449
+ }
4450
+ }
4451
+ if (Symbol.dispose) EmissionMediaBatch.prototype[Symbol.dispose] = EmissionMediaBatch.prototype.free;
4452
+ exports.EmissionMediaBatch = EmissionMediaBatch;
4453
+
4454
+ /**
4455
+ * Per-satellite status for an emission media batch row.
4456
+ * @enum {0 | 1 | 2 | 3}
4457
+ */
4458
+ const EmissionMediaStatus = Object.freeze({
4459
+ /**
4460
+ * State, clock, and requested media corrections were produced.
4461
+ */
4462
+ Valid: 0, "0": "Valid",
4463
+ /**
4464
+ * The ephemeris product has no usable state for this satellite and epoch.
4465
+ */
4466
+ Gap: 1, "1": "Gap",
4467
+ /**
4468
+ * A state was available, but elevation was below the requested cutoff.
4469
+ */
4470
+ BelowElevationCutoff: 2, "2": "BelowElevationCutoff",
4471
+ /**
4472
+ * A non-gap scalar evaluation error occurred.
4473
+ */
4474
+ Error: 3, "3": "Error",
4475
+ });
4476
+ exports.EmissionMediaStatus = EmissionMediaStatus;
4477
+
4331
4478
  /**
4332
4479
  * Orthonormal encounter frame built from two relative states.
4333
4480
  */
@@ -4953,6 +5100,205 @@ const GeodesicError = Object.freeze({
4953
5100
  });
4954
5101
  exports.GeodesicError = GeodesicError;
4955
5102
 
5103
+ /**
5104
+ * A geodesic polygon fence on WGS84.
5105
+ */
5106
+ class Geofence {
5107
+ static __wrap(ptr) {
5108
+ const obj = Object.create(Geofence.prototype);
5109
+ obj.__wbg_ptr = ptr;
5110
+ GeofenceFinalization.register(obj, obj.__wbg_ptr, obj);
5111
+ return obj;
5112
+ }
5113
+ __destroy_into_raw() {
5114
+ const ptr = this.__wbg_ptr;
5115
+ this.__wbg_ptr = 0;
5116
+ GeofenceFinalization.unregister(this);
5117
+ return ptr;
5118
+ }
5119
+ free() {
5120
+ const ptr = this.__destroy_into_raw();
5121
+ wasm.__wbg_geofence_free(ptr, 0);
5122
+ }
5123
+ /**
5124
+ * Containment probability for one position and uncertainty object.
5125
+ *
5126
+ * `uncertainty.kind` is one of `"enuCovarianceM2"`, `"ecefCovarianceM2"`,
5127
+ * `"cepRadiusM"`, or `"horizontalRadius"`. `options.method` is
5128
+ * `"boundaryNormal"` or `"planarQuadrature"`.
5129
+ * @param {number} lat_rad
5130
+ * @param {number} lon_rad
5131
+ * @param {number} height_m
5132
+ * @param {any} uncertainty_value
5133
+ * @param {any} options
5134
+ * @returns {number}
5135
+ */
5136
+ containmentProbability(lat_rad, lon_rad, height_m, uncertainty_value, options) {
5137
+ const ret = wasm.geofence_containmentProbability(this.__wbg_ptr, lat_rad, lon_rad, height_m, uncertainty_value, options);
5138
+ if (ret[2]) {
5139
+ throw takeFromExternrefTable0(ret[1]);
5140
+ }
5141
+ return ret[0];
5142
+ }
5143
+ /**
5144
+ * Boolean containment for one WGS84 geodetic position.
5145
+ * @param {number} lat_rad
5146
+ * @param {number} lon_rad
5147
+ * @param {number} height_m
5148
+ * @returns {boolean}
5149
+ */
5150
+ contains(lat_rad, lon_rad, height_m) {
5151
+ const ret = wasm.geofence_contains(this.__wbg_ptr, lat_rad, lon_rad, height_m);
5152
+ if (ret[2]) {
5153
+ throw takeFromExternrefTable0(ret[1]);
5154
+ }
5155
+ return ret[0] !== 0;
5156
+ }
5157
+ /**
5158
+ * Probabilistic crossing detection over geodetic position estimates.
5159
+ *
5160
+ * `samples` is an array of `{ latRad, lonRad, heightM?, uncertainty }`.
5161
+ * `options.enterConfidence` and `options.leaveConfidence` configure
5162
+ * hysteresis; absent values use the core defaults.
5163
+ * @param {any} samples
5164
+ * @param {any} options
5165
+ * @returns {any}
5166
+ */
5167
+ crossingProbability(samples, options) {
5168
+ const ret = wasm.geofence_crossingProbability(this.__wbg_ptr, samples, options);
5169
+ if (ret[2]) {
5170
+ throw takeFromExternrefTable0(ret[1]);
5171
+ }
5172
+ return takeFromExternrefTable0(ret[0]);
5173
+ }
5174
+ /**
5175
+ * Signed distance to the fence boundary in metres.
5176
+ * @param {number} lat_rad
5177
+ * @param {number} lon_rad
5178
+ * @param {number} height_m
5179
+ * @returns {number}
5180
+ */
5181
+ distanceToBoundary(lat_rad, lon_rad, height_m) {
5182
+ const ret = wasm.geofence_distanceToBoundary(this.__wbg_ptr, lat_rad, lon_rad, height_m);
5183
+ if (ret[2]) {
5184
+ throw takeFromExternrefTable0(ret[1]);
5185
+ }
5186
+ return ret[0];
5187
+ }
5188
+ /**
5189
+ * Number of polygon edges.
5190
+ * @returns {number}
5191
+ */
5192
+ get edgeCount() {
5193
+ const ret = wasm.geofence_edgeCount(this.__wbg_ptr);
5194
+ return ret >>> 0;
5195
+ }
5196
+ /**
5197
+ * Construct a geodesic WGS84 polygon from flat 2D radian vertices.
5198
+ *
5199
+ * `vertices` is `[latRad, lonRad, ...]`. Use `geofenceFromVertices3d`
5200
+ * for `[latRad, lonRad, heightM, ...]` rows.
5201
+ * @param {Float64Array} vertices
5202
+ */
5203
+ constructor(vertices) {
5204
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
5205
+ const len0 = WASM_VECTOR_LEN;
5206
+ const ret = wasm.geofence_new(ptr0, len0);
5207
+ if (ret[2]) {
5208
+ throw takeFromExternrefTable0(ret[1]);
5209
+ }
5210
+ this.__wbg_ptr = ret[0];
5211
+ GeofenceFinalization.register(this, this.__wbg_ptr, this);
5212
+ return this;
5213
+ }
5214
+ /**
5215
+ * Whether the core small-region planar path can evaluate this position.
5216
+ * @param {number} lat_rad
5217
+ * @param {number} lon_rad
5218
+ * @param {number} height_m
5219
+ * @returns {boolean}
5220
+ */
5221
+ planarFastPathApplies(lat_rad, lon_rad, height_m) {
5222
+ const ret = wasm.geofence_planarFastPathApplies(this.__wbg_ptr, lat_rad, lon_rad, height_m);
5223
+ if (ret[2]) {
5224
+ throw takeFromExternrefTable0(ret[1]);
5225
+ }
5226
+ return ret[0] !== 0;
5227
+ }
5228
+ /**
5229
+ * Fence vertices in open-polygon form as flat `[latRad, lonRad, heightM]` rows.
5230
+ * @returns {Float64Array}
5231
+ */
5232
+ get vertices() {
5233
+ const ret = wasm.geofence_vertices(this.__wbg_ptr);
5234
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
5235
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
5236
+ return v1;
5237
+ }
5238
+ }
5239
+ if (Symbol.dispose) Geofence.prototype[Symbol.dispose] = Geofence.prototype.free;
5240
+ exports.Geofence = Geofence;
5241
+
5242
+ /**
5243
+ * Geofence crossing event direction.
5244
+ * @enum {0 | 1}
5245
+ */
5246
+ const GeofenceCrossingKind = Object.freeze({
5247
+ /**
5248
+ * The sample sequence entered the fence.
5249
+ */
5250
+ Entered: 0, "0": "Entered",
5251
+ /**
5252
+ * The sample sequence left the fence.
5253
+ */
5254
+ Left: 1, "1": "Left",
5255
+ });
5256
+ exports.GeofenceCrossingKind = GeofenceCrossingKind;
5257
+
5258
+ /**
5259
+ * Geofence construction and evaluation error variants.
5260
+ * @enum {0 | 1 | 2 | 3 | 4}
5261
+ */
5262
+ const GeofenceError = Object.freeze({
5263
+ /**
5264
+ * Fewer than three distinct vertices were supplied.
5265
+ */
5266
+ TooFewVertices: 0, "0": "TooFewVertices",
5267
+ /**
5268
+ * A geofence input value was outside its domain.
5269
+ */
5270
+ InvalidInput: 1, "1": "InvalidInput",
5271
+ /**
5272
+ * The geodesic direct or inverse calculation failed.
5273
+ */
5274
+ Geodesic: 2, "2": "Geodesic",
5275
+ /**
5276
+ * ECEF covariance rotation failed.
5277
+ */
5278
+ Dop: 3, "3": "Dop",
5279
+ /**
5280
+ * Covariance or radius validation failed.
5281
+ */
5282
+ ErrorMetrics: 4, "4": "ErrorMetrics",
5283
+ });
5284
+ exports.GeofenceError = GeofenceError;
5285
+
5286
+ /**
5287
+ * Probability integration method for geofence uncertainty.
5288
+ * @enum {0 | 1}
5289
+ */
5290
+ const GeofenceProbabilityMethod = Object.freeze({
5291
+ /**
5292
+ * Gaussian half-space approximation from boundary distance and normal variance.
5293
+ */
5294
+ BoundaryNormal: 0, "0": "BoundaryNormal",
5295
+ /**
5296
+ * Fixed quadrature over the local planarized fence.
5297
+ */
5298
+ PlanarQuadrature: 1, "1": "PlanarQuadrature",
5299
+ });
5300
+ exports.GeofenceProbabilityMethod = GeofenceProbabilityMethod;
5301
+
4956
5302
  /**
4957
5303
  * A regular latitude/longitude grid of geoid undulation samples with bilinear
4958
5304
  * interpolation, wrapping a real (loaded) geoid model.
@@ -12260,53 +12606,174 @@ if (Symbol.dispose) PreciseEphemerisSampleSource.prototype[Symbol.dispose] = Pre
12260
12606
  exports.PreciseEphemerisSampleSource = PreciseEphemerisSampleSource;
12261
12607
 
12262
12608
  /**
12263
- * The per-request results of a batch observable prediction, index-aligned to
12264
- * the input requests. Each request independently either produced observables or
12265
- * failed; query a request with [`PredictBatch.isOk`] /
12266
- * [`PredictBatch.observables`] / [`PredictBatch.error`].
12609
+ * Evaluable precise-interpolant artifact opened from canonical store bytes.
12267
12610
  */
12268
- class PredictBatch {
12611
+ class PreciseInterpolantArtifact {
12269
12612
  static __wrap(ptr) {
12270
- const obj = Object.create(PredictBatch.prototype);
12613
+ const obj = Object.create(PreciseInterpolantArtifact.prototype);
12271
12614
  obj.__wbg_ptr = ptr;
12272
- PredictBatchFinalization.register(obj, obj.__wbg_ptr, obj);
12615
+ PreciseInterpolantArtifactFinalization.register(obj, obj.__wbg_ptr, obj);
12273
12616
  return obj;
12274
12617
  }
12275
12618
  __destroy_into_raw() {
12276
12619
  const ptr = this.__wbg_ptr;
12277
12620
  this.__wbg_ptr = 0;
12278
- PredictBatchFinalization.unregister(this);
12621
+ PreciseInterpolantArtifactFinalization.unregister(this);
12279
12622
  return ptr;
12280
12623
  }
12281
12624
  free() {
12282
12625
  const ptr = this.__destroy_into_raw();
12283
- wasm.__wbg_predictbatch_free(ptr, 0);
12626
+ wasm.__wbg_preciseinterpolantartifact_free(ptr, 0);
12284
12627
  }
12285
12628
  /**
12286
- * Number of requests in the batch.
12629
+ * Number of bytes retained by this artifact handle.
12287
12630
  * @returns {number}
12288
12631
  */
12289
- get count() {
12290
- const ret = wasm.predictbatch_count(this.__wbg_ptr);
12632
+ get byteLength() {
12633
+ const ret = wasm.preciseinterpolantartifact_byteLength(this.__wbg_ptr);
12291
12634
  return ret >>> 0;
12292
12635
  }
12293
12636
  /**
12294
- * The failure message for request `index`, or `undefined` when it
12295
- * succeeded. Throws a `RangeError` for an out-of-range index.
12296
- * @param {number} index
12297
- * @returns {string | undefined}
12637
+ * File-level artifact checksum.
12638
+ * @returns {bigint}
12298
12639
  */
12299
- error(index) {
12300
- const ret = wasm.predictbatch_error(this.__wbg_ptr, index);
12301
- if (ret[3]) {
12302
- throw takeFromExternrefTable0(ret[2]);
12303
- }
12304
- let v1;
12305
- if (ret[0] !== 0) {
12306
- v1 = getStringFromWasm0(ret[0], ret[1]).slice();
12307
- wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
12308
- }
12309
- return v1;
12640
+ get checksum64() {
12641
+ const ret = wasm.preciseinterpolantartifact_checksum64(this.__wbg_ptr);
12642
+ return BigInt.asUintN(64, ret);
12643
+ }
12644
+ /**
12645
+ * Evaluate one satellite state at a J2000-second epoch.
12646
+ * @param {string} satellite
12647
+ * @param {number} j2000_seconds
12648
+ * @returns {Sp3State}
12649
+ */
12650
+ evaluate(satellite, j2000_seconds) {
12651
+ const ptr0 = passStringToWasm0(satellite, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
12652
+ const len0 = WASM_VECTOR_LEN;
12653
+ const ret = wasm.preciseinterpolantartifact_evaluate(this.__wbg_ptr, ptr0, len0, j2000_seconds);
12654
+ if (ret[2]) {
12655
+ throw takeFromExternrefTable0(ret[1]);
12656
+ }
12657
+ return Sp3State.__wrap(ret[0]);
12658
+ }
12659
+ /**
12660
+ * Satellite tokens present in the artifact, ascending.
12661
+ * @returns {string[]}
12662
+ */
12663
+ get satellites() {
12664
+ const ret = wasm.preciseinterpolantartifact_satellites(this.__wbg_ptr);
12665
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
12666
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
12667
+ return v1;
12668
+ }
12669
+ /**
12670
+ * Artifact time scale label from the stored epoch axis.
12671
+ * @returns {string}
12672
+ */
12673
+ get timeScale() {
12674
+ let deferred1_0;
12675
+ let deferred1_1;
12676
+ try {
12677
+ const ret = wasm.preciseinterpolantartifact_timeScale(this.__wbg_ptr);
12678
+ deferred1_0 = ret[0];
12679
+ deferred1_1 = ret[1];
12680
+ return getStringFromWasm0(ret[0], ret[1]);
12681
+ } finally {
12682
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
12683
+ }
12684
+ }
12685
+ }
12686
+ if (Symbol.dispose) PreciseInterpolantArtifact.prototype[Symbol.dispose] = PreciseInterpolantArtifact.prototype.free;
12687
+ exports.PreciseInterpolantArtifact = PreciseInterpolantArtifact;
12688
+
12689
+ /**
12690
+ * Error category for precise-interpolant artifact open or serialization.
12691
+ * @enum {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7}
12692
+ */
12693
+ const PreciseInterpolantArtifactError = Object.freeze({
12694
+ /**
12695
+ * File I/O failed in the core artifact API.
12696
+ */
12697
+ Io: 0, "0": "Io",
12698
+ /**
12699
+ * Artifact bytes could not be parsed.
12700
+ */
12701
+ Parse: 1, "1": "Parse",
12702
+ /**
12703
+ * The artifact version tag is unsupported.
12704
+ */
12705
+ UnsupportedVersion: 2, "2": "UnsupportedVersion",
12706
+ /**
12707
+ * The artifact time-scale tag is unsupported.
12708
+ */
12709
+ UnsupportedTimeScale: 3, "3": "UnsupportedTimeScale",
12710
+ /**
12711
+ * A satellite-system tag is unsupported.
12712
+ */
12713
+ UnsupportedSatelliteSystem: 4, "4": "UnsupportedSatelliteSystem",
12714
+ /**
12715
+ * A satellite appears more than once in the artifact index.
12716
+ */
12717
+ DuplicateSatellite: 5, "5": "DuplicateSatellite",
12718
+ /**
12719
+ * The artifact file-level checksum did not match.
12720
+ */
12721
+ Checksum: 6, "6": "Checksum",
12722
+ /**
12723
+ * A satellite payload checksum did not match its index record.
12724
+ */
12725
+ SatelliteChecksum: 7, "7": "SatelliteChecksum",
12726
+ });
12727
+ exports.PreciseInterpolantArtifactError = PreciseInterpolantArtifactError;
12728
+
12729
+ /**
12730
+ * The per-request results of a batch observable prediction, index-aligned to
12731
+ * the input requests. Each request independently either produced observables or
12732
+ * failed; query a request with [`PredictBatch.isOk`] /
12733
+ * [`PredictBatch.observables`] / [`PredictBatch.error`].
12734
+ */
12735
+ class PredictBatch {
12736
+ static __wrap(ptr) {
12737
+ const obj = Object.create(PredictBatch.prototype);
12738
+ obj.__wbg_ptr = ptr;
12739
+ PredictBatchFinalization.register(obj, obj.__wbg_ptr, obj);
12740
+ return obj;
12741
+ }
12742
+ __destroy_into_raw() {
12743
+ const ptr = this.__wbg_ptr;
12744
+ this.__wbg_ptr = 0;
12745
+ PredictBatchFinalization.unregister(this);
12746
+ return ptr;
12747
+ }
12748
+ free() {
12749
+ const ptr = this.__destroy_into_raw();
12750
+ wasm.__wbg_predictbatch_free(ptr, 0);
12751
+ }
12752
+ /**
12753
+ * Number of requests in the batch.
12754
+ * @returns {number}
12755
+ */
12756
+ get count() {
12757
+ const ret = wasm.predictbatch_count(this.__wbg_ptr);
12758
+ return ret >>> 0;
12759
+ }
12760
+ /**
12761
+ * The failure message for request `index`, or `undefined` when it
12762
+ * succeeded. Throws a `RangeError` for an out-of-range index.
12763
+ * @param {number} index
12764
+ * @returns {string | undefined}
12765
+ */
12766
+ error(index) {
12767
+ const ret = wasm.predictbatch_error(this.__wbg_ptr, index);
12768
+ if (ret[3]) {
12769
+ throw takeFromExternrefTable0(ret[2]);
12770
+ }
12771
+ let v1;
12772
+ if (ret[0] !== 0) {
12773
+ v1 = getStringFromWasm0(ret[0], ret[1]).slice();
12774
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
12775
+ }
12776
+ return v1;
12310
12777
  }
12311
12778
  /**
12312
12779
  * Whether request `index` produced observables. Throws a `RangeError` for
@@ -14689,6 +15156,57 @@ class Sp3 {
14689
15156
  }
14690
15157
  return DgnssSolution.__wrap(ret[0]);
14691
15158
  }
15159
+ /**
15160
+ * Evaluate emission-time state and media corrections for index-aligned satellites.
15161
+ *
15162
+ * `satellites` and `emissionEpochsJ2000S` share a row count. `receiverEcefM`
15163
+ * is `[x, y, z]` metres. Without an IONEX product this can still request
15164
+ * troposphere corrections by passing `{ troposphere: true }`.
15165
+ * @param {string[]} satellites
15166
+ * @param {Float64Array} emission_epochs_j2000_s
15167
+ * @param {Float64Array} receiver_ecef_m
15168
+ * @param {any} options
15169
+ * @returns {EmissionMediaBatch}
15170
+ */
15171
+ emissionMediaBatch(satellites, emission_epochs_j2000_s, receiver_ecef_m, options) {
15172
+ const ptr0 = passArrayJsValueToWasm0(satellites, wasm.__wbindgen_malloc);
15173
+ const len0 = WASM_VECTOR_LEN;
15174
+ const ptr1 = passArrayF64ToWasm0(emission_epochs_j2000_s, wasm.__wbindgen_malloc);
15175
+ const len1 = WASM_VECTOR_LEN;
15176
+ const ptr2 = passArrayF64ToWasm0(receiver_ecef_m, wasm.__wbindgen_malloc);
15177
+ const len2 = WASM_VECTOR_LEN;
15178
+ const ret = wasm.sp3_emissionMediaBatch(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, options);
15179
+ if (ret[2]) {
15180
+ throw takeFromExternrefTable0(ret[1]);
15181
+ }
15182
+ return EmissionMediaBatch.__wrap(ret[0]);
15183
+ }
15184
+ /**
15185
+ * Evaluate emission-time state plus IONEX/troposphere media corrections.
15186
+ *
15187
+ * `options.ionosphere` defaults to `true` on this IONEX-bearing path.
15188
+ * `options.troposphere` defaults to `false`.
15189
+ * @param {Ionex} ionex
15190
+ * @param {string[]} satellites
15191
+ * @param {Float64Array} emission_epochs_j2000_s
15192
+ * @param {Float64Array} receiver_ecef_m
15193
+ * @param {any} options
15194
+ * @returns {EmissionMediaBatch}
15195
+ */
15196
+ emissionMediaBatchIonex(ionex, satellites, emission_epochs_j2000_s, receiver_ecef_m, options) {
15197
+ _assertClass(ionex, Ionex);
15198
+ const ptr0 = passArrayJsValueToWasm0(satellites, wasm.__wbindgen_malloc);
15199
+ const len0 = WASM_VECTOR_LEN;
15200
+ const ptr1 = passArrayF64ToWasm0(emission_epochs_j2000_s, wasm.__wbindgen_malloc);
15201
+ const len1 = WASM_VECTOR_LEN;
15202
+ const ptr2 = passArrayF64ToWasm0(receiver_ecef_m, wasm.__wbindgen_malloc);
15203
+ const len2 = WASM_VECTOR_LEN;
15204
+ const ret = wasm.sp3_emissionMediaBatchIonex(this.__wbg_ptr, ionex.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, options);
15205
+ if (ret[2]) {
15206
+ throw takeFromExternrefTable0(ret[1]);
15207
+ }
15208
+ return EmissionMediaBatch.__wrap(ret[0]);
15209
+ }
14692
15210
  /**
14693
15211
  * Number of epochs in the product.
14694
15212
  * @returns {number}
@@ -14787,6 +15305,19 @@ class Sp3 {
14787
15305
  }
14788
15306
  return takeFromExternrefTable0(ret[0]);
14789
15307
  }
15308
+ /**
15309
+ * Build deterministic precise-interpolant artifact bytes from this SP3 product.
15310
+ * @returns {Uint8Array}
15311
+ */
15312
+ preciseInterpolantArtifactBytes() {
15313
+ const ret = wasm.sp3_preciseInterpolantArtifactBytes(this.__wbg_ptr);
15314
+ if (ret[3]) {
15315
+ throw takeFromExternrefTable0(ret[2]);
15316
+ }
15317
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
15318
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
15319
+ return v1;
15320
+ }
14790
15321
  /**
14791
15322
  * Predict geometric ranges for many `(satellite, receiver, epoch)` requests
14792
15323
  * against this ephemeris in one call. `requests` is an array of
@@ -14850,6 +15381,40 @@ class Sp3 {
14850
15381
  }
14851
15382
  return SppBatchSolution.__wrap(ret[0]);
14852
15383
  }
15384
+ /**
15385
+ * Run SPP and attach a Doppler velocity/clock-drift solve when Doppler rows solve.
15386
+ *
15387
+ * `request` is the normal SPP request object. `dopplerObservations` is an
15388
+ * array of `{ satelliteId, dopplerHz, carrierHz, satClockDriftSS? }`. The
15389
+ * returned receiver solution carries `rxClockDriftSS` when velocity solved.
15390
+ * @param {any} request
15391
+ * @param {any} doppler_observations
15392
+ * @returns {SppDopplerSolution}
15393
+ */
15394
+ solveSppWithDopplerVelocity(request, doppler_observations) {
15395
+ const ret = wasm.sp3_solveSppWithDopplerVelocity(this.__wbg_ptr, request, doppler_observations);
15396
+ if (ret[2]) {
15397
+ throw takeFromExternrefTable0(ret[1]);
15398
+ }
15399
+ return SppDopplerSolution.__wrap(ret[0]);
15400
+ }
15401
+ /**
15402
+ * Solve one static receiver position from multiple SPP-shaped epochs.
15403
+ *
15404
+ * `epochs` is an array of SPP request objects. `options` accepts
15405
+ * `{ initialPositionM?, withGeodetic?, robust? }` and returns shared
15406
+ * position, per-epoch clocks, covariance, residual, and influence surfaces.
15407
+ * @param {any} epochs
15408
+ * @param {any} options
15409
+ * @returns {StaticSolution}
15410
+ */
15411
+ solveStatic(epochs, options) {
15412
+ const ret = wasm.sp3_solveStatic(this.__wbg_ptr, epochs, options);
15413
+ if (ret[2]) {
15414
+ throw takeFromExternrefTable0(ret[1]);
15415
+ }
15416
+ return StaticSolution.__wrap(ret[0]);
15417
+ }
14853
15418
  /**
14854
15419
  * Run the core robust-reweighted SPP driver under the RAIM/FDE exclusion loop.
14855
15420
  *
@@ -16051,6 +16616,59 @@ class SppBatchSolution {
16051
16616
  if (Symbol.dispose) SppBatchSolution.prototype[Symbol.dispose] = SppBatchSolution.prototype.free;
16052
16617
  exports.SppBatchSolution = SppBatchSolution;
16053
16618
 
16619
+ /**
16620
+ * Position solution with an optional Doppler velocity solve.
16621
+ */
16622
+ class SppDopplerSolution {
16623
+ static __wrap(ptr) {
16624
+ const obj = Object.create(SppDopplerSolution.prototype);
16625
+ obj.__wbg_ptr = ptr;
16626
+ SppDopplerSolutionFinalization.register(obj, obj.__wbg_ptr, obj);
16627
+ return obj;
16628
+ }
16629
+ __destroy_into_raw() {
16630
+ const ptr = this.__wbg_ptr;
16631
+ this.__wbg_ptr = 0;
16632
+ SppDopplerSolutionFinalization.unregister(this);
16633
+ return ptr;
16634
+ }
16635
+ free() {
16636
+ const ptr = this.__destroy_into_raw();
16637
+ wasm.__wbg_sppdopplersolution_free(ptr, 0);
16638
+ }
16639
+ /**
16640
+ * Receiver position, clock, and covariance solution.
16641
+ * @returns {SppSolution}
16642
+ */
16643
+ get receiver() {
16644
+ const ret = wasm.sppdopplersolution_receiver(this.__wbg_ptr);
16645
+ return SppSolution.__wrap(ret);
16646
+ }
16647
+ /**
16648
+ * Doppler-derived receiver velocity and clock drift, if the velocity rows solved.
16649
+ * @returns {VelocitySolution | undefined}
16650
+ */
16651
+ get velocity() {
16652
+ const ret = wasm.sppdopplersolution_velocity(this.__wbg_ptr);
16653
+ return ret === 0 ? undefined : VelocitySolution.__wrap(ret);
16654
+ }
16655
+ /**
16656
+ * Velocity-solve failure text when Doppler rows were present but unusable.
16657
+ * @returns {string | undefined}
16658
+ */
16659
+ get velocityError() {
16660
+ const ret = wasm.sppdopplersolution_velocityError(this.__wbg_ptr);
16661
+ let v1;
16662
+ if (ret[0] !== 0) {
16663
+ v1 = getStringFromWasm0(ret[0], ret[1]).slice();
16664
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
16665
+ }
16666
+ return v1;
16667
+ }
16668
+ }
16669
+ if (Symbol.dispose) SppDopplerSolution.prototype[Symbol.dispose] = SppDopplerSolution.prototype.free;
16670
+ exports.SppDopplerSolution = SppDopplerSolution;
16671
+
16054
16672
  /**
16055
16673
  * The result of an SPP solve.
16056
16674
  */
@@ -16106,6 +16724,26 @@ class SppSolution {
16106
16724
  const ret = wasm.sppsolution_geometryQuality(this.__wbg_ptr);
16107
16725
  return GeometryQuality.__wrap(ret);
16108
16726
  }
16727
+ /**
16728
+ * ECEF position covariance, flat row-major 3-by-3 in square metres.
16729
+ * @returns {Float64Array}
16730
+ */
16731
+ get positionCovarianceEcefM2() {
16732
+ const ret = wasm.sppsolution_positionCovarianceEcefM2(this.__wbg_ptr);
16733
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
16734
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
16735
+ return v1;
16736
+ }
16737
+ /**
16738
+ * ENU position covariance, flat row-major 3-by-3 in square metres.
16739
+ * @returns {Float64Array}
16740
+ */
16741
+ get positionCovarianceEnuM2() {
16742
+ const ret = wasm.sppsolution_positionCovarianceEnuM2(this.__wbg_ptr);
16743
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
16744
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
16745
+ return v1;
16746
+ }
16109
16747
  /**
16110
16748
  * ECEF position as a `Float64Array` `[x, y, z]`, metres.
16111
16749
  * @returns {Float64Array}
@@ -16142,6 +16780,14 @@ class SppSolution {
16142
16780
  wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
16143
16781
  return v1;
16144
16782
  }
16783
+ /**
16784
+ * Receiver clock drift in seconds per second when a Doppler solve was fused.
16785
+ * @returns {number | undefined}
16786
+ */
16787
+ get rxClockDriftSS() {
16788
+ const ret = wasm.sppsolution_rxClockDriftSS(this.__wbg_ptr);
16789
+ return ret[0] === 0 ? undefined : ret[1];
16790
+ }
16145
16791
  /**
16146
16792
  * Receiver clock bias, seconds.
16147
16793
  * @returns {number}
@@ -16243,57 +16889,302 @@ class SsrCorrectionStore {
16243
16889
  throw takeFromExternrefTable0(ret[0]);
16244
16890
  }
16245
16891
  }
16246
- constructor() {
16247
- const ret = wasm.ssrcorrectionstore_new();
16248
- this.__wbg_ptr = ret;
16249
- SsrCorrectionStoreFinalization.register(this, this.__wbg_ptr, this);
16250
- return this;
16892
+ constructor() {
16893
+ const ret = wasm.ssrcorrectionstore_new();
16894
+ this.__wbg_ptr = ret;
16895
+ SsrCorrectionStoreFinalization.register(this, this.__wbg_ptr, this);
16896
+ return this;
16897
+ }
16898
+ /**
16899
+ * @param {string} sat
16900
+ * @returns {any}
16901
+ */
16902
+ orbit(sat) {
16903
+ const ptr0 = passStringToWasm0(sat, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
16904
+ const len0 = WASM_VECTOR_LEN;
16905
+ const ret = wasm.ssrcorrectionstore_orbit(this.__wbg_ptr, ptr0, len0);
16906
+ if (ret[2]) {
16907
+ throw takeFromExternrefTable0(ret[1]);
16908
+ }
16909
+ return takeFromExternrefTable0(ret[0]);
16910
+ }
16911
+ /**
16912
+ * @param {string} sat
16913
+ * @returns {number | undefined}
16914
+ */
16915
+ uraIndex(sat) {
16916
+ const ptr0 = passStringToWasm0(sat, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
16917
+ const len0 = WASM_VECTOR_LEN;
16918
+ const ret = wasm.ssrcorrectionstore_uraIndex(this.__wbg_ptr, ptr0, len0);
16919
+ if (ret[2]) {
16920
+ throw takeFromExternrefTable0(ret[1]);
16921
+ }
16922
+ return ret[0] === 0xFFFFFF ? undefined : ret[0];
16923
+ }
16924
+ }
16925
+ if (Symbol.dispose) SsrCorrectionStore.prototype[Symbol.dispose] = SsrCorrectionStore.prototype.free;
16926
+ exports.SsrCorrectionStore = SsrCorrectionStore;
16927
+
16928
+ /**
16929
+ * Source stream for engineering-unit SSR corrections.
16930
+ * @enum {0 | 1}
16931
+ */
16932
+ const SsrSource = Object.freeze({
16933
+ /**
16934
+ * RTCM SSR messages.
16935
+ */
16936
+ RtcmSsr: 0, "0": "RtcmSsr",
16937
+ /**
16938
+ * Galileo High Accuracy Service messages.
16939
+ */
16940
+ GalileoHas: 1, "1": "GalileoHas",
16941
+ });
16942
+ exports.SsrSource = SsrSource;
16943
+
16944
+ /**
16945
+ * Status for a leave-one-out static positioning diagnostic.
16946
+ * @enum {0 | 1 | 2 | 3 | 4 | 5}
16947
+ */
16948
+ const StaticInfluenceStatus = Object.freeze({
16949
+ /**
16950
+ * The diagnostic solve completed.
16951
+ */
16952
+ Solved: 0, "0": "Solved",
16953
+ /**
16954
+ * The omitted subset left too few measurements.
16955
+ */
16956
+ TooFewMeasurements: 1, "1": "TooFewMeasurements",
16957
+ /**
16958
+ * The diagnostic geometry was singular.
16959
+ */
16960
+ SingularGeometry: 2, "2": "SingularGeometry",
16961
+ /**
16962
+ * Input validation failed for the diagnostic subset.
16963
+ */
16964
+ InvalidInput: 3, "3": "InvalidInput",
16965
+ /**
16966
+ * Ephemeris was unavailable for the diagnostic subset.
16967
+ */
16968
+ EphemerisUnavailable: 4, "4": "EphemerisUnavailable",
16969
+ /**
16970
+ * The diagnostic subset failed for another reason.
16971
+ */
16972
+ SolveFailed: 5, "5": "SolveFailed",
16973
+ });
16974
+ exports.StaticInfluenceStatus = StaticInfluenceStatus;
16975
+
16976
+ /**
16977
+ * Multi-epoch static receiver solution.
16978
+ */
16979
+ class StaticSolution {
16980
+ static __wrap(ptr) {
16981
+ const obj = Object.create(StaticSolution.prototype);
16982
+ obj.__wbg_ptr = ptr;
16983
+ StaticSolutionFinalization.register(obj, obj.__wbg_ptr, obj);
16984
+ return obj;
16985
+ }
16986
+ __destroy_into_raw() {
16987
+ const ptr = this.__wbg_ptr;
16988
+ this.__wbg_ptr = 0;
16989
+ StaticSolutionFinalization.unregister(this);
16990
+ return ptr;
16991
+ }
16992
+ free() {
16993
+ const ptr = this.__destroy_into_raw();
16994
+ wasm.__wbg_staticsolution_free(ptr, 0);
16995
+ }
16996
+ /**
16997
+ * `[latRad, lonRad, heightM]` when geodetic output was requested.
16998
+ * @returns {Float64Array | undefined}
16999
+ */
17000
+ get geodetic() {
17001
+ const ret = wasm.staticsolution_geodetic(this.__wbg_ptr);
17002
+ let v1;
17003
+ if (ret[0] !== 0) {
17004
+ v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
17005
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
17006
+ }
17007
+ return v1;
17008
+ }
17009
+ /**
17010
+ * Geometry observability and covariance-validation diagnostics.
17011
+ * @returns {GeometryQuality}
17012
+ */
17013
+ get geometryQuality() {
17014
+ const ret = wasm.staticsolution_geometryQuality(this.__wbg_ptr);
17015
+ return GeometryQuality.__wrap(ret);
17016
+ }
17017
+ /**
17018
+ * Solver iteration, convergence, and redundancy metadata.
17019
+ * @returns {any}
17020
+ */
17021
+ get metadata() {
17022
+ const ret = wasm.staticsolution_metadata(this.__wbg_ptr);
17023
+ if (ret[2]) {
17024
+ throw takeFromExternrefTable0(ret[1]);
17025
+ }
17026
+ return takeFromExternrefTable0(ret[0]);
17027
+ }
17028
+ /**
17029
+ * Epoch-local receiver clocks as `{ epochIndex, system, clockS }[]`.
17030
+ * @returns {any}
17031
+ */
17032
+ get perEpochClocks() {
17033
+ const ret = wasm.staticsolution_perEpochClocks(this.__wbg_ptr);
17034
+ if (ret[2]) {
17035
+ throw takeFromExternrefTable0(ret[1]);
17036
+ }
17037
+ return takeFromExternrefTable0(ret[0]);
17038
+ }
17039
+ /**
17040
+ * Leave-one-epoch-out diagnostics.
17041
+ * @returns {any}
17042
+ */
17043
+ get perEpochInfluence() {
17044
+ const ret = wasm.staticsolution_perEpochInfluence(this.__wbg_ptr);
17045
+ if (ret[2]) {
17046
+ throw takeFromExternrefTable0(ret[1]);
17047
+ }
17048
+ return takeFromExternrefTable0(ret[0]);
17049
+ }
17050
+ /**
17051
+ * Leave-one-satellite-out diagnostics across every epoch.
17052
+ * @returns {any}
17053
+ */
17054
+ get perSatelliteBatchInfluence() {
17055
+ const ret = wasm.staticsolution_perSatelliteBatchInfluence(this.__wbg_ptr);
17056
+ if (ret[2]) {
17057
+ throw takeFromExternrefTable0(ret[1]);
17058
+ }
17059
+ return takeFromExternrefTable0(ret[0]);
17060
+ }
17061
+ /**
17062
+ * Leave-one-satellite-out diagnostics per epoch.
17063
+ * @returns {any}
17064
+ */
17065
+ get perSatelliteInfluence() {
17066
+ const ret = wasm.staticsolution_perSatelliteInfluence(this.__wbg_ptr);
17067
+ if (ret[2]) {
17068
+ throw takeFromExternrefTable0(ret[1]);
17069
+ }
17070
+ return takeFromExternrefTable0(ret[0]);
17071
+ }
17072
+ /**
17073
+ * ECEF position covariance, flat row-major 3-by-3 in square metres.
17074
+ * @returns {Float64Array}
17075
+ */
17076
+ get positionCovarianceEcefM2() {
17077
+ const ret = wasm.staticsolution_positionCovarianceEcefM2(this.__wbg_ptr);
17078
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
17079
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
17080
+ return v1;
17081
+ }
17082
+ /**
17083
+ * ENU position covariance, flat row-major 3-by-3 in square metres.
17084
+ * @returns {Float64Array}
17085
+ */
17086
+ get positionCovarianceEnuM2() {
17087
+ const ret = wasm.staticsolution_positionCovarianceEnuM2(this.__wbg_ptr);
17088
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
17089
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
17090
+ return v1;
17091
+ }
17092
+ /**
17093
+ * ECEF position as `[x, y, z]`, metres.
17094
+ * @returns {Float64Array}
17095
+ */
17096
+ get positionM() {
17097
+ const ret = wasm.staticsolution_positionM(this.__wbg_ptr);
17098
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
17099
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
17100
+ return v1;
17101
+ }
17102
+ /**
17103
+ * Rejected satellites grouped by input epoch.
17104
+ * @returns {any}
17105
+ */
17106
+ get rejectedSats() {
17107
+ const ret = wasm.staticsolution_rejectedSats(this.__wbg_ptr);
17108
+ if (ret[2]) {
17109
+ throw takeFromExternrefTable0(ret[1]);
17110
+ }
17111
+ return takeFromExternrefTable0(ret[0]);
17112
+ }
17113
+ /**
17114
+ * Root-mean-square of the unweighted post-fit residuals, metres.
17115
+ * @returns {number}
17116
+ */
17117
+ get residualRmsM() {
17118
+ const ret = wasm.staticsolution_residualRmsM(this.__wbg_ptr);
17119
+ return ret;
16251
17120
  }
16252
17121
  /**
16253
- * @param {string} sat
17122
+ * Post-fit residuals as `{ epochIndex, satelliteId, residualM, ... }[]`.
16254
17123
  * @returns {any}
16255
17124
  */
16256
- orbit(sat) {
16257
- const ptr0 = passStringToWasm0(sat, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
16258
- const len0 = WASM_VECTOR_LEN;
16259
- const ret = wasm.ssrcorrectionstore_orbit(this.__wbg_ptr, ptr0, len0);
17125
+ get residuals() {
17126
+ const ret = wasm.staticsolution_residuals(this.__wbg_ptr);
16260
17127
  if (ret[2]) {
16261
17128
  throw takeFromExternrefTable0(ret[1]);
16262
17129
  }
16263
17130
  return takeFromExternrefTable0(ret[0]);
16264
17131
  }
16265
17132
  /**
16266
- * @param {string} sat
16267
- * @returns {number | undefined}
17133
+ * Full state covariance, flat row-major square matrix in square metres.
17134
+ * @returns {Float64Array}
16268
17135
  */
16269
- uraIndex(sat) {
16270
- const ptr0 = passStringToWasm0(sat, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
16271
- const len0 = WASM_VECTOR_LEN;
16272
- const ret = wasm.ssrcorrectionstore_uraIndex(this.__wbg_ptr, ptr0, len0);
17136
+ get stateCovarianceM2() {
17137
+ const ret = wasm.staticsolution_stateCovarianceM2(this.__wbg_ptr);
17138
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
17139
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
17140
+ return v1;
17141
+ }
17142
+ /**
17143
+ * State covariance matrix dimension.
17144
+ * @returns {number}
17145
+ */
17146
+ get stateParameterCount() {
17147
+ const ret = wasm.staticsolution_stateParameterCount(this.__wbg_ptr);
17148
+ return ret >>> 0;
17149
+ }
17150
+ /**
17151
+ * Used satellite tokens grouped by input epoch.
17152
+ * @returns {any}
17153
+ */
17154
+ get usedSats() {
17155
+ const ret = wasm.staticsolution_usedSats(this.__wbg_ptr);
16273
17156
  if (ret[2]) {
16274
17157
  throw takeFromExternrefTable0(ret[1]);
16275
17158
  }
16276
- return ret[0] === 0xFFFFFF ? undefined : ret[0];
17159
+ return takeFromExternrefTable0(ret[0]);
16277
17160
  }
16278
- }
16279
- if (Symbol.dispose) SsrCorrectionStore.prototype[Symbol.dispose] = SsrCorrectionStore.prototype.free;
16280
- exports.SsrCorrectionStore = SsrCorrectionStore;
16281
-
16282
- /**
16283
- * Source stream for engineering-unit SSR corrections.
16284
- * @enum {0 | 1}
16285
- */
16286
- const SsrSource = Object.freeze({
16287
17161
  /**
16288
- * RTCM SSR messages.
17162
+ * ECEF X, metres.
17163
+ * @returns {number}
16289
17164
  */
16290
- RtcmSsr: 0, "0": "RtcmSsr",
17165
+ get xM() {
17166
+ const ret = wasm.staticsolution_xM(this.__wbg_ptr);
17167
+ return ret;
17168
+ }
16291
17169
  /**
16292
- * Galileo High Accuracy Service messages.
17170
+ * ECEF Y, metres.
17171
+ * @returns {number}
16293
17172
  */
16294
- GalileoHas: 1, "1": "GalileoHas",
16295
- });
16296
- exports.SsrSource = SsrSource;
17173
+ get yM() {
17174
+ const ret = wasm.staticsolution_yM(this.__wbg_ptr);
17175
+ return ret;
17176
+ }
17177
+ /**
17178
+ * ECEF Z, metres.
17179
+ * @returns {number}
17180
+ */
17181
+ get zM() {
17182
+ const ret = wasm.staticsolution_zM(this.__wbg_ptr);
17183
+ return ret;
17184
+ }
17185
+ }
17186
+ if (Symbol.dispose) StaticSolution.prototype[Symbol.dispose] = StaticSolution.prototype.free;
17187
+ exports.StaticSolution = StaticSolution;
16297
17188
 
16298
17189
  /**
16299
17190
  * A batch of Sun and Moon positions, one per epoch: flat row-major `sun` and
@@ -17998,6 +18889,16 @@ class VelocitySolution {
17998
18889
  const ret = wasm.velocitysolution_speedMS(this.__wbg_ptr);
17999
18890
  return ret;
18000
18891
  }
18892
+ /**
18893
+ * Unit-variance covariance of `[vx, vy, vz, clockDrift]`, flat row-major.
18894
+ * @returns {Float64Array}
18895
+ */
18896
+ get stateCovariance() {
18897
+ const ret = wasm.velocitysolution_stateCovariance(this.__wbg_ptr);
18898
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
18899
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
18900
+ return v1;
18901
+ }
18001
18902
  /**
18002
18903
  * Satellite tokens contributing rows, in residual order.
18003
18904
  * @returns {string[]}
@@ -19759,6 +20660,25 @@ function ellipsoidalHeightM(orthometric_height_m, lat_rad, lon_rad) {
19759
20660
  }
19760
20661
  exports.ellipsoidalHeightM = ellipsoidalHeightM;
19761
20662
 
20663
+ /**
20664
+ * Stable string label for an [`EmissionMediaStatus`] enum value.
20665
+ * @param {EmissionMediaStatus} status
20666
+ * @returns {string}
20667
+ */
20668
+ function emissionMediaStatusLabel(status) {
20669
+ let deferred1_0;
20670
+ let deferred1_1;
20671
+ try {
20672
+ const ret = wasm.emissionMediaStatusLabel(status);
20673
+ deferred1_0 = ret[0];
20674
+ deferred1_1 = ret[1];
20675
+ return getStringFromWasm0(ret[0], ret[1]);
20676
+ } finally {
20677
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
20678
+ }
20679
+ }
20680
+ exports.emissionMediaStatusLabel = emissionMediaStatusLabel;
20681
+
19762
20682
  /**
19763
20683
  * Encode plain RINEX observation text into a Compact RINEX (Hatanaka) stream,
19764
20684
  * the inverse of [`decodeCrinex`]. RINEX 2 is emitted as CRINEX 1.0 and RINEX 3
@@ -20834,6 +21754,155 @@ function geodeticToEcef(geodetic) {
20834
21754
  }
20835
21755
  exports.geodeticToEcef = geodeticToEcef;
20836
21756
 
21757
+ /**
21758
+ * Containment probability using default probability options.
21759
+ * @param {Float64Array} vertices
21760
+ * @param {number} lat_rad
21761
+ * @param {number} lon_rad
21762
+ * @param {number} height_m
21763
+ * @param {any} uncertainty_value
21764
+ * @returns {number}
21765
+ */
21766
+ function geofenceContainmentProbability(vertices, lat_rad, lon_rad, height_m, uncertainty_value) {
21767
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
21768
+ const len0 = WASM_VECTOR_LEN;
21769
+ const ret = wasm.geofenceContainmentProbability(ptr0, len0, lat_rad, lon_rad, height_m, uncertainty_value);
21770
+ if (ret[2]) {
21771
+ throw takeFromExternrefTable0(ret[1]);
21772
+ }
21773
+ return ret[0];
21774
+ }
21775
+ exports.geofenceContainmentProbability = geofenceContainmentProbability;
21776
+
21777
+ /**
21778
+ * Boolean containment for one position and flat vertex array.
21779
+ * @param {Float64Array} vertices
21780
+ * @param {number} lat_rad
21781
+ * @param {number} lon_rad
21782
+ * @param {number} height_m
21783
+ * @returns {boolean}
21784
+ */
21785
+ function geofenceContains(vertices, lat_rad, lon_rad, height_m) {
21786
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
21787
+ const len0 = WASM_VECTOR_LEN;
21788
+ const ret = wasm.geofenceContains(ptr0, len0, lat_rad, lon_rad, height_m);
21789
+ if (ret[2]) {
21790
+ throw takeFromExternrefTable0(ret[1]);
21791
+ }
21792
+ return ret[0] !== 0;
21793
+ }
21794
+ exports.geofenceContains = geofenceContains;
21795
+
21796
+ /**
21797
+ * Stable string label for a [`GeofenceCrossingKind`] enum value.
21798
+ * @param {GeofenceCrossingKind} kind
21799
+ * @returns {string}
21800
+ */
21801
+ function geofenceCrossingKindLabel(kind) {
21802
+ let deferred1_0;
21803
+ let deferred1_1;
21804
+ try {
21805
+ const ret = wasm.geofenceCrossingKindLabel(kind);
21806
+ deferred1_0 = ret[0];
21807
+ deferred1_1 = ret[1];
21808
+ return getStringFromWasm0(ret[0], ret[1]);
21809
+ } finally {
21810
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
21811
+ }
21812
+ }
21813
+ exports.geofenceCrossingKindLabel = geofenceCrossingKindLabel;
21814
+
21815
+ /**
21816
+ * Probabilistic crossing detection with default hysteresis.
21817
+ * @param {Float64Array} vertices
21818
+ * @param {any} samples
21819
+ * @param {any} options
21820
+ * @returns {any}
21821
+ */
21822
+ function geofenceCrossingProbability(vertices, samples, options) {
21823
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
21824
+ const len0 = WASM_VECTOR_LEN;
21825
+ const ret = wasm.geofenceCrossingProbability(ptr0, len0, samples, options);
21826
+ if (ret[2]) {
21827
+ throw takeFromExternrefTable0(ret[1]);
21828
+ }
21829
+ return takeFromExternrefTable0(ret[0]);
21830
+ }
21831
+ exports.geofenceCrossingProbability = geofenceCrossingProbability;
21832
+
21833
+ /**
21834
+ * Stable string label for a [`GeofenceError`] enum value.
21835
+ * @param {GeofenceError} error
21836
+ * @returns {string}
21837
+ */
21838
+ function geofenceErrorLabel(error) {
21839
+ let deferred1_0;
21840
+ let deferred1_1;
21841
+ try {
21842
+ const ret = wasm.geofenceErrorLabel(error);
21843
+ deferred1_0 = ret[0];
21844
+ deferred1_1 = ret[1];
21845
+ return getStringFromWasm0(ret[0], ret[1]);
21846
+ } finally {
21847
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
21848
+ }
21849
+ }
21850
+ exports.geofenceErrorLabel = geofenceErrorLabel;
21851
+
21852
+ /**
21853
+ * Construct a geodesic WGS84 polygon from flat 2D radian vertices.
21854
+ * @param {Float64Array} vertices
21855
+ * @returns {Geofence}
21856
+ */
21857
+ function geofenceFromVertices(vertices) {
21858
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
21859
+ const len0 = WASM_VECTOR_LEN;
21860
+ const ret = wasm.geofenceFromVertices(ptr0, len0);
21861
+ if (ret[2]) {
21862
+ throw takeFromExternrefTable0(ret[1]);
21863
+ }
21864
+ return Geofence.__wrap(ret[0]);
21865
+ }
21866
+ exports.geofenceFromVertices = geofenceFromVertices;
21867
+
21868
+ /**
21869
+ * Construct a geodesic WGS84 polygon from flat 3D radian vertices.
21870
+ *
21871
+ * `vertices` is `[latRad, lonRad, heightM, ...]`. Heights are accepted but
21872
+ * ignored by the core geofence model.
21873
+ * @param {Float64Array} vertices
21874
+ * @returns {Geofence}
21875
+ */
21876
+ function geofenceFromVertices3d(vertices) {
21877
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
21878
+ const len0 = WASM_VECTOR_LEN;
21879
+ const ret = wasm.geofenceFromVertices3d(ptr0, len0);
21880
+ if (ret[2]) {
21881
+ throw takeFromExternrefTable0(ret[1]);
21882
+ }
21883
+ return Geofence.__wrap(ret[0]);
21884
+ }
21885
+ exports.geofenceFromVertices3d = geofenceFromVertices3d;
21886
+
21887
+ /**
21888
+ * Stable string label for a [`GeofenceProbabilityMethod`] enum value.
21889
+ * @param {GeofenceProbabilityMethod} method
21890
+ * @returns {string}
21891
+ */
21892
+ function geofenceProbabilityMethodLabel(method) {
21893
+ let deferred1_0;
21894
+ let deferred1_1;
21895
+ try {
21896
+ const ret = wasm.geofenceProbabilityMethodLabel(method);
21897
+ deferred1_0 = ret[0];
21898
+ deferred1_1 = ret[1];
21899
+ return getStringFromWasm0(ret[0], ret[1]);
21900
+ } finally {
21901
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
21902
+ }
21903
+ }
21904
+ exports.geofenceProbabilityMethodLabel = geofenceProbabilityMethodLabel;
21905
+
20837
21906
  /**
20838
21907
  * Geoid undulation `N` (metres above the WGS84 ellipsoid) at a geodetic
20839
21908
  * position in radians, from the COARSE built-in global grid. Latitude is
@@ -23106,6 +24175,25 @@ function oceanTideLoading(station_ecef_m, year, month, day, fractional_hour, amp
23106
24175
  }
23107
24176
  exports.oceanTideLoading = oceanTideLoading;
23108
24177
 
24178
+ /**
24179
+ * Open precise-interpolant artifact bytes as an evaluable in-memory product.
24180
+ *
24181
+ * The returned handle owns its byte buffer because JS byte slices cannot be
24182
+ * borrowed across calls by this class boundary.
24183
+ * @param {Uint8Array} bytes
24184
+ * @returns {PreciseInterpolantArtifact}
24185
+ */
24186
+ function openPreciseInterpolantArtifact(bytes) {
24187
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
24188
+ const len0 = WASM_VECTOR_LEN;
24189
+ const ret = wasm.openPreciseInterpolantArtifact(ptr0, len0);
24190
+ if (ret[2]) {
24191
+ throw takeFromExternrefTable0(ret[1]);
24192
+ }
24193
+ return PreciseInterpolantArtifact.__wrap(ret[0]);
24194
+ }
24195
+ exports.openPreciseInterpolantArtifact = openPreciseInterpolantArtifact;
24196
+
23109
24197
  /**
23110
24198
  * Broadcast-derived per-satellite orbit-repeat lag, in seconds.
23111
24199
  *
@@ -23777,6 +24865,38 @@ function preciseEphemerisSamplesFromSamples(samples) {
23777
24865
  }
23778
24866
  exports.preciseEphemerisSamplesFromSamples = preciseEphemerisSamplesFromSamples;
23779
24867
 
24868
+ /**
24869
+ * Compute the precise-interpolant artifact file-level checksum for byte content.
24870
+ * @param {Uint8Array} bytes
24871
+ * @returns {bigint}
24872
+ */
24873
+ function preciseInterpolantArtifactChecksum64(bytes) {
24874
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
24875
+ const len0 = WASM_VECTOR_LEN;
24876
+ const ret = wasm.preciseInterpolantArtifactChecksum64(ptr0, len0);
24877
+ return BigInt.asUintN(64, ret);
24878
+ }
24879
+ exports.preciseInterpolantArtifactChecksum64 = preciseInterpolantArtifactChecksum64;
24880
+
24881
+ /**
24882
+ * Stable string label for a [`PreciseInterpolantArtifactError`] enum value.
24883
+ * @param {PreciseInterpolantArtifactError} error
24884
+ * @returns {string}
24885
+ */
24886
+ function preciseInterpolantArtifactErrorLabel(error) {
24887
+ let deferred1_0;
24888
+ let deferred1_1;
24889
+ try {
24890
+ const ret = wasm.preciseInterpolantArtifactErrorLabel(error);
24891
+ deferred1_0 = ret[0];
24892
+ deferred1_1 = ret[1];
24893
+ return getStringFromWasm0(ret[0], ret[1]);
24894
+ } finally {
24895
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
24896
+ }
24897
+ }
24898
+ exports.preciseInterpolantArtifactErrorLabel = preciseInterpolantArtifactErrorLabel;
24899
+
23780
24900
  /**
23781
24901
  * Predict observables for many `(satellite, receiver, epoch)` requests from a
23782
24902
  * broadcast ephemeris store, serially. See [`predictBatchSp3`] for the argument
@@ -25249,6 +26369,23 @@ function solveSppSbas(broadcast, store, geo, request, mode) {
25249
26369
  }
25250
26370
  exports.solveSppSbas = solveSppSbas;
25251
26371
 
26372
+ /**
26373
+ * Solve one static receiver position from multiple SPP-shaped epochs over SP3.
26374
+ * @param {Sp3} sp3
26375
+ * @param {any} epochs
26376
+ * @param {any} options
26377
+ * @returns {StaticSolution}
26378
+ */
26379
+ function solveStatic(sp3, epochs, options) {
26380
+ _assertClass(sp3, Sp3);
26381
+ const ret = wasm.solveStatic(sp3.__wbg_ptr, epochs, options);
26382
+ if (ret[2]) {
26383
+ throw takeFromExternrefTable0(ret[1]);
26384
+ }
26385
+ return StaticSolution.__wrap(ret[0]);
26386
+ }
26387
+ exports.solveStatic = solveStatic;
26388
+
25252
26389
  /**
25253
26390
  * Solve a static RTK arc with one batch float solution and one validated fixed
25254
26391
  * solution over the whole arc.
@@ -25492,6 +26629,25 @@ function ssrSourceLabel(source) {
25492
26629
  }
25493
26630
  exports.ssrSourceLabel = ssrSourceLabel;
25494
26631
 
26632
+ /**
26633
+ * Stable string label for a [`StaticInfluenceStatus`] enum value.
26634
+ * @param {StaticInfluenceStatus} status
26635
+ * @returns {string}
26636
+ */
26637
+ function staticInfluenceStatusLabel(status) {
26638
+ let deferred1_0;
26639
+ let deferred1_1;
26640
+ try {
26641
+ const ret = wasm.staticInfluenceStatusLabel(status);
26642
+ deferred1_0 = ret[0];
26643
+ deferred1_1 = ret[1];
26644
+ return getStringFromWasm0(ret[0], ret[1]);
26645
+ } finally {
26646
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
26647
+ }
26648
+ }
26649
+ exports.staticInfluenceStatusLabel = staticInfluenceStatusLabel;
26650
+
25495
26651
  /**
25496
26652
  * Sub-observer point (planetary central meridian) on a rotating body.
25497
26653
  *
@@ -26303,6 +27459,10 @@ function __wbg_get_imports() {
26303
27459
  const ret = String.fromCodePoint(arg0 >>> 0);
26304
27460
  return ret;
26305
27461
  }, arguments); },
27462
+ __wbg_from_13e323c65fc8f464: function(arg0) {
27463
+ const ret = Array.from(arg0);
27464
+ return ret;
27465
+ },
26306
27466
  __wbg_get_507a50627bffa49b: function(arg0, arg1) {
26307
27467
  const ret = arg0[arg1 >>> 0];
26308
27468
  return ret;
@@ -26762,6 +27922,9 @@ const Egm96FifteenMinuteGeoidFinalization = (typeof FinalizationRegistry === 'un
26762
27922
  const EllipsoidalHeightMFinalization = (typeof FinalizationRegistry === 'undefined')
26763
27923
  ? { register: () => {}, unregister: () => {} }
26764
27924
  : new FinalizationRegistry(ptr => wasm.__wbg_ellipsoidalheightm_free(ptr, 1));
27925
+ const EmissionMediaBatchFinalization = (typeof FinalizationRegistry === 'undefined')
27926
+ ? { register: () => {}, unregister: () => {} }
27927
+ : new FinalizationRegistry(ptr => wasm.__wbg_emissionmediabatch_free(ptr, 1));
26765
27928
  const EncounterFrameFinalization = (typeof FinalizationRegistry === 'undefined')
26766
27929
  ? { register: () => {}, unregister: () => {} }
26767
27930
  : new FinalizationRegistry(ptr => wasm.__wbg_encounterframe_free(ptr, 1));
@@ -26789,6 +27952,9 @@ const FrameScannerFinalization = (typeof FinalizationRegistry === 'undefined')
26789
27952
  const FrameStatesFinalization = (typeof FinalizationRegistry === 'undefined')
26790
27953
  ? { register: () => {}, unregister: () => {} }
26791
27954
  : new FinalizationRegistry(ptr => wasm.__wbg_framestates_free(ptr, 1));
27955
+ const GeofenceFinalization = (typeof FinalizationRegistry === 'undefined')
27956
+ ? { register: () => {}, unregister: () => {} }
27957
+ : new FinalizationRegistry(ptr => wasm.__wbg_geofence_free(ptr, 1));
26792
27958
  const GeoidGridFinalization = (typeof FinalizationRegistry === 'undefined')
26793
27959
  ? { register: () => {}, unregister: () => {} }
26794
27960
  : new FinalizationRegistry(ptr => wasm.__wbg_geoidgrid_free(ptr, 1));
@@ -27002,6 +28168,9 @@ const PreciseEphemerisInterpolantFinalization = (typeof FinalizationRegistry ===
27002
28168
  const PreciseEphemerisSampleSourceFinalization = (typeof FinalizationRegistry === 'undefined')
27003
28169
  ? { register: () => {}, unregister: () => {} }
27004
28170
  : new FinalizationRegistry(ptr => wasm.__wbg_preciseephemerissamplesource_free(ptr, 1));
28171
+ const PreciseInterpolantArtifactFinalization = (typeof FinalizationRegistry === 'undefined')
28172
+ ? { register: () => {}, unregister: () => {} }
28173
+ : new FinalizationRegistry(ptr => wasm.__wbg_preciseinterpolantartifact_free(ptr, 1));
27005
28174
  const PredictBatchFinalization = (typeof FinalizationRegistry === 'undefined')
27006
28175
  ? { register: () => {}, unregister: () => {} }
27007
28176
  : new FinalizationRegistry(ptr => wasm.__wbg_predictbatch_free(ptr, 1));
@@ -27128,12 +28297,18 @@ const SpkStateFinalization = (typeof FinalizationRegistry === 'undefined')
27128
28297
  const SppBatchSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
27129
28298
  ? { register: () => {}, unregister: () => {} }
27130
28299
  : new FinalizationRegistry(ptr => wasm.__wbg_sppbatchsolution_free(ptr, 1));
28300
+ const SppDopplerSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
28301
+ ? { register: () => {}, unregister: () => {} }
28302
+ : new FinalizationRegistry(ptr => wasm.__wbg_sppdopplersolution_free(ptr, 1));
27131
28303
  const SppSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
27132
28304
  ? { register: () => {}, unregister: () => {} }
27133
28305
  : new FinalizationRegistry(ptr => wasm.__wbg_sppsolution_free(ptr, 1));
27134
28306
  const SsrCorrectionStoreFinalization = (typeof FinalizationRegistry === 'undefined')
27135
28307
  ? { register: () => {}, unregister: () => {} }
27136
28308
  : new FinalizationRegistry(ptr => wasm.__wbg_ssrcorrectionstore_free(ptr, 1));
28309
+ const StaticSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
28310
+ ? { register: () => {}, unregister: () => {} }
28311
+ : new FinalizationRegistry(ptr => wasm.__wbg_staticsolution_free(ptr, 1));
27137
28312
  const SunMoonFinalization = (typeof FinalizationRegistry === 'undefined')
27138
28313
  ? { register: () => {}, unregister: () => {} }
27139
28314
  : new FinalizationRegistry(ptr => wasm.__wbg_sunmoon_free(ptr, 1));