@neilberkman/sidereon 0.16.0 → 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.
package/pkg/sidereon.js CHANGED
@@ -4279,6 +4279,151 @@ export class EllipsoidalHeightM {
4279
4279
  }
4280
4280
  if (Symbol.dispose) EllipsoidalHeightM.prototype[Symbol.dispose] = EllipsoidalHeightM.prototype.free;
4281
4281
 
4282
+ /**
4283
+ * Contiguous state and media-correction arrays from one emission batch.
4284
+ */
4285
+ export class EmissionMediaBatch {
4286
+ static __wrap(ptr) {
4287
+ const obj = Object.create(EmissionMediaBatch.prototype);
4288
+ obj.__wbg_ptr = ptr;
4289
+ EmissionMediaBatchFinalization.register(obj, obj.__wbg_ptr, obj);
4290
+ return obj;
4291
+ }
4292
+ __destroy_into_raw() {
4293
+ const ptr = this.__wbg_ptr;
4294
+ this.__wbg_ptr = 0;
4295
+ EmissionMediaBatchFinalization.unregister(this);
4296
+ return ptr;
4297
+ }
4298
+ free() {
4299
+ const ptr = this.__destroy_into_raw();
4300
+ wasm.__wbg_emissionmediabatch_free(ptr, 0);
4301
+ }
4302
+ /**
4303
+ * Satellite clock offsets in seconds, with `NaN` for unavailable rows.
4304
+ * @returns {Float64Array}
4305
+ */
4306
+ get clockS() {
4307
+ const ret = wasm.emissionmediabatch_clockS(this.__wbg_ptr);
4308
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
4309
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
4310
+ return v1;
4311
+ }
4312
+ /**
4313
+ * Number of satellite rows in the batch.
4314
+ * @returns {number}
4315
+ */
4316
+ get count() {
4317
+ const ret = wasm.emissionmediabatch_count(this.__wbg_ptr);
4318
+ return ret >>> 0;
4319
+ }
4320
+ /**
4321
+ * Per-row success and error messages as `{ ok, error }[]`.
4322
+ * @returns {any}
4323
+ */
4324
+ get elementResults() {
4325
+ const ret = wasm.emissionmediabatch_elementResults(this.__wbg_ptr);
4326
+ if (ret[2]) {
4327
+ throw takeFromExternrefTable0(ret[1]);
4328
+ }
4329
+ return takeFromExternrefTable0(ret[0]);
4330
+ }
4331
+ /**
4332
+ * Error message for row `index`, or `undefined` when the row has no error.
4333
+ * @param {number} index
4334
+ * @returns {string | undefined}
4335
+ */
4336
+ error(index) {
4337
+ const ret = wasm.emissionmediabatch_error(this.__wbg_ptr, index);
4338
+ if (ret[3]) {
4339
+ throw takeFromExternrefTable0(ret[2]);
4340
+ }
4341
+ let v1;
4342
+ if (ret[0] !== 0) {
4343
+ v1 = getStringFromWasm0(ret[0], ret[1]).slice();
4344
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
4345
+ }
4346
+ return v1;
4347
+ }
4348
+ /**
4349
+ * Ionospheric slant group delays in metres, with `NaN` for unavailable rows.
4350
+ * @returns {Float64Array}
4351
+ */
4352
+ get ionosphereSlantDelayM() {
4353
+ const ret = wasm.emissionmediabatch_ionosphereSlantDelayM(this.__wbg_ptr);
4354
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
4355
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
4356
+ return v1;
4357
+ }
4358
+ /**
4359
+ * Satellite ECEF positions as flat `[x0, y0, z0, ...]`, metres.
4360
+ *
4361
+ * Rows without a usable position are filled with `NaN`; check `statuses`
4362
+ * before consuming the corresponding row.
4363
+ * @returns {Float64Array}
4364
+ */
4365
+ get positionEcefM() {
4366
+ const ret = wasm.emissionmediabatch_positionEcefM(this.__wbg_ptr);
4367
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
4368
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
4369
+ return v1;
4370
+ }
4371
+ /**
4372
+ * Per-row status labels, index-aligned with the numeric arrays.
4373
+ * @returns {string[]}
4374
+ */
4375
+ get statusLabels() {
4376
+ const ret = wasm.emissionmediabatch_statusLabels(this.__wbg_ptr);
4377
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
4378
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
4379
+ return v1;
4380
+ }
4381
+ /**
4382
+ * Per-row typed status values, index-aligned with the numeric arrays.
4383
+ * @returns {any[]}
4384
+ */
4385
+ get statuses() {
4386
+ const ret = wasm.emissionmediabatch_statuses(this.__wbg_ptr);
4387
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
4388
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
4389
+ return v1;
4390
+ }
4391
+ /**
4392
+ * Tropospheric slant delays in metres, with `NaN` for unavailable rows.
4393
+ * @returns {Float64Array}
4394
+ */
4395
+ get troposphereDelayM() {
4396
+ const ret = wasm.emissionmediabatch_troposphereDelayM(this.__wbg_ptr);
4397
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
4398
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
4399
+ return v1;
4400
+ }
4401
+ }
4402
+ if (Symbol.dispose) EmissionMediaBatch.prototype[Symbol.dispose] = EmissionMediaBatch.prototype.free;
4403
+
4404
+ /**
4405
+ * Per-satellite status for an emission media batch row.
4406
+ * @enum {0 | 1 | 2 | 3}
4407
+ */
4408
+ export const EmissionMediaStatus = Object.freeze({
4409
+ /**
4410
+ * State, clock, and requested media corrections were produced.
4411
+ */
4412
+ Valid: 0, "0": "Valid",
4413
+ /**
4414
+ * The ephemeris product has no usable state for this satellite and epoch.
4415
+ */
4416
+ Gap: 1, "1": "Gap",
4417
+ /**
4418
+ * A state was available, but elevation was below the requested cutoff.
4419
+ */
4420
+ BelowElevationCutoff: 2, "2": "BelowElevationCutoff",
4421
+ /**
4422
+ * A non-gap scalar evaluation error occurred.
4423
+ */
4424
+ Error: 3, "3": "Error",
4425
+ });
4426
+
4282
4427
  /**
4283
4428
  * Orthonormal encounter frame built from two relative states.
4284
4429
  */
@@ -4894,6 +5039,201 @@ export const GeodesicError = Object.freeze({
4894
5039
  InvalidInput: 0, "0": "InvalidInput",
4895
5040
  });
4896
5041
 
5042
+ /**
5043
+ * A geodesic polygon fence on WGS84.
5044
+ */
5045
+ export class Geofence {
5046
+ static __wrap(ptr) {
5047
+ const obj = Object.create(Geofence.prototype);
5048
+ obj.__wbg_ptr = ptr;
5049
+ GeofenceFinalization.register(obj, obj.__wbg_ptr, obj);
5050
+ return obj;
5051
+ }
5052
+ __destroy_into_raw() {
5053
+ const ptr = this.__wbg_ptr;
5054
+ this.__wbg_ptr = 0;
5055
+ GeofenceFinalization.unregister(this);
5056
+ return ptr;
5057
+ }
5058
+ free() {
5059
+ const ptr = this.__destroy_into_raw();
5060
+ wasm.__wbg_geofence_free(ptr, 0);
5061
+ }
5062
+ /**
5063
+ * Containment probability for one position and uncertainty object.
5064
+ *
5065
+ * `uncertainty.kind` is one of `"enuCovarianceM2"`, `"ecefCovarianceM2"`,
5066
+ * `"cepRadiusM"`, or `"horizontalRadius"`. `options.method` is
5067
+ * `"boundaryNormal"` or `"planarQuadrature"`.
5068
+ * @param {number} lat_rad
5069
+ * @param {number} lon_rad
5070
+ * @param {number} height_m
5071
+ * @param {any} uncertainty_value
5072
+ * @param {any} options
5073
+ * @returns {number}
5074
+ */
5075
+ containmentProbability(lat_rad, lon_rad, height_m, uncertainty_value, options) {
5076
+ const ret = wasm.geofence_containmentProbability(this.__wbg_ptr, lat_rad, lon_rad, height_m, uncertainty_value, options);
5077
+ if (ret[2]) {
5078
+ throw takeFromExternrefTable0(ret[1]);
5079
+ }
5080
+ return ret[0];
5081
+ }
5082
+ /**
5083
+ * Boolean containment for one WGS84 geodetic position.
5084
+ * @param {number} lat_rad
5085
+ * @param {number} lon_rad
5086
+ * @param {number} height_m
5087
+ * @returns {boolean}
5088
+ */
5089
+ contains(lat_rad, lon_rad, height_m) {
5090
+ const ret = wasm.geofence_contains(this.__wbg_ptr, lat_rad, lon_rad, height_m);
5091
+ if (ret[2]) {
5092
+ throw takeFromExternrefTable0(ret[1]);
5093
+ }
5094
+ return ret[0] !== 0;
5095
+ }
5096
+ /**
5097
+ * Probabilistic crossing detection over geodetic position estimates.
5098
+ *
5099
+ * `samples` is an array of `{ latRad, lonRad, heightM?, uncertainty }`.
5100
+ * `options.enterConfidence` and `options.leaveConfidence` configure
5101
+ * hysteresis; absent values use the core defaults.
5102
+ * @param {any} samples
5103
+ * @param {any} options
5104
+ * @returns {any}
5105
+ */
5106
+ crossingProbability(samples, options) {
5107
+ const ret = wasm.geofence_crossingProbability(this.__wbg_ptr, samples, options);
5108
+ if (ret[2]) {
5109
+ throw takeFromExternrefTable0(ret[1]);
5110
+ }
5111
+ return takeFromExternrefTable0(ret[0]);
5112
+ }
5113
+ /**
5114
+ * Signed distance to the fence boundary in metres.
5115
+ * @param {number} lat_rad
5116
+ * @param {number} lon_rad
5117
+ * @param {number} height_m
5118
+ * @returns {number}
5119
+ */
5120
+ distanceToBoundary(lat_rad, lon_rad, height_m) {
5121
+ const ret = wasm.geofence_distanceToBoundary(this.__wbg_ptr, lat_rad, lon_rad, height_m);
5122
+ if (ret[2]) {
5123
+ throw takeFromExternrefTable0(ret[1]);
5124
+ }
5125
+ return ret[0];
5126
+ }
5127
+ /**
5128
+ * Number of polygon edges.
5129
+ * @returns {number}
5130
+ */
5131
+ get edgeCount() {
5132
+ const ret = wasm.geofence_edgeCount(this.__wbg_ptr);
5133
+ return ret >>> 0;
5134
+ }
5135
+ /**
5136
+ * Construct a geodesic WGS84 polygon from flat 2D radian vertices.
5137
+ *
5138
+ * `vertices` is `[latRad, lonRad, ...]`. Use `geofenceFromVertices3d`
5139
+ * for `[latRad, lonRad, heightM, ...]` rows.
5140
+ * @param {Float64Array} vertices
5141
+ */
5142
+ constructor(vertices) {
5143
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
5144
+ const len0 = WASM_VECTOR_LEN;
5145
+ const ret = wasm.geofence_new(ptr0, len0);
5146
+ if (ret[2]) {
5147
+ throw takeFromExternrefTable0(ret[1]);
5148
+ }
5149
+ this.__wbg_ptr = ret[0];
5150
+ GeofenceFinalization.register(this, this.__wbg_ptr, this);
5151
+ return this;
5152
+ }
5153
+ /**
5154
+ * Whether the core small-region planar path can evaluate this position.
5155
+ * @param {number} lat_rad
5156
+ * @param {number} lon_rad
5157
+ * @param {number} height_m
5158
+ * @returns {boolean}
5159
+ */
5160
+ planarFastPathApplies(lat_rad, lon_rad, height_m) {
5161
+ const ret = wasm.geofence_planarFastPathApplies(this.__wbg_ptr, lat_rad, lon_rad, height_m);
5162
+ if (ret[2]) {
5163
+ throw takeFromExternrefTable0(ret[1]);
5164
+ }
5165
+ return ret[0] !== 0;
5166
+ }
5167
+ /**
5168
+ * Fence vertices in open-polygon form as flat `[latRad, lonRad, heightM]` rows.
5169
+ * @returns {Float64Array}
5170
+ */
5171
+ get vertices() {
5172
+ const ret = wasm.geofence_vertices(this.__wbg_ptr);
5173
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
5174
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
5175
+ return v1;
5176
+ }
5177
+ }
5178
+ if (Symbol.dispose) Geofence.prototype[Symbol.dispose] = Geofence.prototype.free;
5179
+
5180
+ /**
5181
+ * Geofence crossing event direction.
5182
+ * @enum {0 | 1}
5183
+ */
5184
+ export const GeofenceCrossingKind = Object.freeze({
5185
+ /**
5186
+ * The sample sequence entered the fence.
5187
+ */
5188
+ Entered: 0, "0": "Entered",
5189
+ /**
5190
+ * The sample sequence left the fence.
5191
+ */
5192
+ Left: 1, "1": "Left",
5193
+ });
5194
+
5195
+ /**
5196
+ * Geofence construction and evaluation error variants.
5197
+ * @enum {0 | 1 | 2 | 3 | 4}
5198
+ */
5199
+ export const GeofenceError = Object.freeze({
5200
+ /**
5201
+ * Fewer than three distinct vertices were supplied.
5202
+ */
5203
+ TooFewVertices: 0, "0": "TooFewVertices",
5204
+ /**
5205
+ * A geofence input value was outside its domain.
5206
+ */
5207
+ InvalidInput: 1, "1": "InvalidInput",
5208
+ /**
5209
+ * The geodesic direct or inverse calculation failed.
5210
+ */
5211
+ Geodesic: 2, "2": "Geodesic",
5212
+ /**
5213
+ * ECEF covariance rotation failed.
5214
+ */
5215
+ Dop: 3, "3": "Dop",
5216
+ /**
5217
+ * Covariance or radius validation failed.
5218
+ */
5219
+ ErrorMetrics: 4, "4": "ErrorMetrics",
5220
+ });
5221
+
5222
+ /**
5223
+ * Probability integration method for geofence uncertainty.
5224
+ * @enum {0 | 1}
5225
+ */
5226
+ export const GeofenceProbabilityMethod = Object.freeze({
5227
+ /**
5228
+ * Gaussian half-space approximation from boundary distance and normal variance.
5229
+ */
5230
+ BoundaryNormal: 0, "0": "BoundaryNormal",
5231
+ /**
5232
+ * Fixed quadrature over the local planarized fence.
5233
+ */
5234
+ PlanarQuadrature: 1, "1": "PlanarQuadrature",
5235
+ });
5236
+
4897
5237
  /**
4898
5238
  * A regular latitude/longitude grid of geoid undulation samples with bilinear
4899
5239
  * interpolation, wrapping a real (loaded) geoid model.
@@ -12123,53 +12463,172 @@ export class PreciseEphemerisSampleSource {
12123
12463
  if (Symbol.dispose) PreciseEphemerisSampleSource.prototype[Symbol.dispose] = PreciseEphemerisSampleSource.prototype.free;
12124
12464
 
12125
12465
  /**
12126
- * The per-request results of a batch observable prediction, index-aligned to
12127
- * the input requests. Each request independently either produced observables or
12128
- * failed; query a request with [`PredictBatch.isOk`] /
12129
- * [`PredictBatch.observables`] / [`PredictBatch.error`].
12466
+ * Evaluable precise-interpolant artifact opened from canonical store bytes.
12130
12467
  */
12131
- export class PredictBatch {
12468
+ export class PreciseInterpolantArtifact {
12132
12469
  static __wrap(ptr) {
12133
- const obj = Object.create(PredictBatch.prototype);
12470
+ const obj = Object.create(PreciseInterpolantArtifact.prototype);
12134
12471
  obj.__wbg_ptr = ptr;
12135
- PredictBatchFinalization.register(obj, obj.__wbg_ptr, obj);
12472
+ PreciseInterpolantArtifactFinalization.register(obj, obj.__wbg_ptr, obj);
12136
12473
  return obj;
12137
12474
  }
12138
12475
  __destroy_into_raw() {
12139
12476
  const ptr = this.__wbg_ptr;
12140
12477
  this.__wbg_ptr = 0;
12141
- PredictBatchFinalization.unregister(this);
12478
+ PreciseInterpolantArtifactFinalization.unregister(this);
12142
12479
  return ptr;
12143
12480
  }
12144
12481
  free() {
12145
12482
  const ptr = this.__destroy_into_raw();
12146
- wasm.__wbg_predictbatch_free(ptr, 0);
12483
+ wasm.__wbg_preciseinterpolantartifact_free(ptr, 0);
12147
12484
  }
12148
12485
  /**
12149
- * Number of requests in the batch.
12486
+ * Number of bytes retained by this artifact handle.
12150
12487
  * @returns {number}
12151
12488
  */
12152
- get count() {
12153
- const ret = wasm.predictbatch_count(this.__wbg_ptr);
12489
+ get byteLength() {
12490
+ const ret = wasm.preciseinterpolantartifact_byteLength(this.__wbg_ptr);
12154
12491
  return ret >>> 0;
12155
12492
  }
12156
12493
  /**
12157
- * The failure message for request `index`, or `undefined` when it
12158
- * succeeded. Throws a `RangeError` for an out-of-range index.
12159
- * @param {number} index
12160
- * @returns {string | undefined}
12494
+ * File-level artifact checksum.
12495
+ * @returns {bigint}
12161
12496
  */
12162
- error(index) {
12163
- const ret = wasm.predictbatch_error(this.__wbg_ptr, index);
12164
- if (ret[3]) {
12165
- throw takeFromExternrefTable0(ret[2]);
12166
- }
12167
- let v1;
12168
- if (ret[0] !== 0) {
12169
- v1 = getStringFromWasm0(ret[0], ret[1]).slice();
12170
- wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
12171
- }
12172
- return v1;
12497
+ get checksum64() {
12498
+ const ret = wasm.preciseinterpolantartifact_checksum64(this.__wbg_ptr);
12499
+ return BigInt.asUintN(64, ret);
12500
+ }
12501
+ /**
12502
+ * Evaluate one satellite state at a J2000-second epoch.
12503
+ * @param {string} satellite
12504
+ * @param {number} j2000_seconds
12505
+ * @returns {Sp3State}
12506
+ */
12507
+ evaluate(satellite, j2000_seconds) {
12508
+ const ptr0 = passStringToWasm0(satellite, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
12509
+ const len0 = WASM_VECTOR_LEN;
12510
+ const ret = wasm.preciseinterpolantartifact_evaluate(this.__wbg_ptr, ptr0, len0, j2000_seconds);
12511
+ if (ret[2]) {
12512
+ throw takeFromExternrefTable0(ret[1]);
12513
+ }
12514
+ return Sp3State.__wrap(ret[0]);
12515
+ }
12516
+ /**
12517
+ * Satellite tokens present in the artifact, ascending.
12518
+ * @returns {string[]}
12519
+ */
12520
+ get satellites() {
12521
+ const ret = wasm.preciseinterpolantartifact_satellites(this.__wbg_ptr);
12522
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
12523
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
12524
+ return v1;
12525
+ }
12526
+ /**
12527
+ * Artifact time scale label from the stored epoch axis.
12528
+ * @returns {string}
12529
+ */
12530
+ get timeScale() {
12531
+ let deferred1_0;
12532
+ let deferred1_1;
12533
+ try {
12534
+ const ret = wasm.preciseinterpolantartifact_timeScale(this.__wbg_ptr);
12535
+ deferred1_0 = ret[0];
12536
+ deferred1_1 = ret[1];
12537
+ return getStringFromWasm0(ret[0], ret[1]);
12538
+ } finally {
12539
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
12540
+ }
12541
+ }
12542
+ }
12543
+ if (Symbol.dispose) PreciseInterpolantArtifact.prototype[Symbol.dispose] = PreciseInterpolantArtifact.prototype.free;
12544
+
12545
+ /**
12546
+ * Error category for precise-interpolant artifact open or serialization.
12547
+ * @enum {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7}
12548
+ */
12549
+ export const PreciseInterpolantArtifactError = Object.freeze({
12550
+ /**
12551
+ * File I/O failed in the core artifact API.
12552
+ */
12553
+ Io: 0, "0": "Io",
12554
+ /**
12555
+ * Artifact bytes could not be parsed.
12556
+ */
12557
+ Parse: 1, "1": "Parse",
12558
+ /**
12559
+ * The artifact version tag is unsupported.
12560
+ */
12561
+ UnsupportedVersion: 2, "2": "UnsupportedVersion",
12562
+ /**
12563
+ * The artifact time-scale tag is unsupported.
12564
+ */
12565
+ UnsupportedTimeScale: 3, "3": "UnsupportedTimeScale",
12566
+ /**
12567
+ * A satellite-system tag is unsupported.
12568
+ */
12569
+ UnsupportedSatelliteSystem: 4, "4": "UnsupportedSatelliteSystem",
12570
+ /**
12571
+ * A satellite appears more than once in the artifact index.
12572
+ */
12573
+ DuplicateSatellite: 5, "5": "DuplicateSatellite",
12574
+ /**
12575
+ * The artifact file-level checksum did not match.
12576
+ */
12577
+ Checksum: 6, "6": "Checksum",
12578
+ /**
12579
+ * A satellite payload checksum did not match its index record.
12580
+ */
12581
+ SatelliteChecksum: 7, "7": "SatelliteChecksum",
12582
+ });
12583
+
12584
+ /**
12585
+ * The per-request results of a batch observable prediction, index-aligned to
12586
+ * the input requests. Each request independently either produced observables or
12587
+ * failed; query a request with [`PredictBatch.isOk`] /
12588
+ * [`PredictBatch.observables`] / [`PredictBatch.error`].
12589
+ */
12590
+ export class PredictBatch {
12591
+ static __wrap(ptr) {
12592
+ const obj = Object.create(PredictBatch.prototype);
12593
+ obj.__wbg_ptr = ptr;
12594
+ PredictBatchFinalization.register(obj, obj.__wbg_ptr, obj);
12595
+ return obj;
12596
+ }
12597
+ __destroy_into_raw() {
12598
+ const ptr = this.__wbg_ptr;
12599
+ this.__wbg_ptr = 0;
12600
+ PredictBatchFinalization.unregister(this);
12601
+ return ptr;
12602
+ }
12603
+ free() {
12604
+ const ptr = this.__destroy_into_raw();
12605
+ wasm.__wbg_predictbatch_free(ptr, 0);
12606
+ }
12607
+ /**
12608
+ * Number of requests in the batch.
12609
+ * @returns {number}
12610
+ */
12611
+ get count() {
12612
+ const ret = wasm.predictbatch_count(this.__wbg_ptr);
12613
+ return ret >>> 0;
12614
+ }
12615
+ /**
12616
+ * The failure message for request `index`, or `undefined` when it
12617
+ * succeeded. Throws a `RangeError` for an out-of-range index.
12618
+ * @param {number} index
12619
+ * @returns {string | undefined}
12620
+ */
12621
+ error(index) {
12622
+ const ret = wasm.predictbatch_error(this.__wbg_ptr, index);
12623
+ if (ret[3]) {
12624
+ throw takeFromExternrefTable0(ret[2]);
12625
+ }
12626
+ let v1;
12627
+ if (ret[0] !== 0) {
12628
+ v1 = getStringFromWasm0(ret[0], ret[1]).slice();
12629
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
12630
+ }
12631
+ return v1;
12173
12632
  }
12174
12633
  /**
12175
12634
  * Whether request `index` produced observables. Throws a `RangeError` for
@@ -14522,6 +14981,57 @@ export class Sp3 {
14522
14981
  }
14523
14982
  return DgnssSolution.__wrap(ret[0]);
14524
14983
  }
14984
+ /**
14985
+ * Evaluate emission-time state and media corrections for index-aligned satellites.
14986
+ *
14987
+ * `satellites` and `emissionEpochsJ2000S` share a row count. `receiverEcefM`
14988
+ * is `[x, y, z]` metres. Without an IONEX product this can still request
14989
+ * troposphere corrections by passing `{ troposphere: true }`.
14990
+ * @param {string[]} satellites
14991
+ * @param {Float64Array} emission_epochs_j2000_s
14992
+ * @param {Float64Array} receiver_ecef_m
14993
+ * @param {any} options
14994
+ * @returns {EmissionMediaBatch}
14995
+ */
14996
+ emissionMediaBatch(satellites, emission_epochs_j2000_s, receiver_ecef_m, options) {
14997
+ const ptr0 = passArrayJsValueToWasm0(satellites, wasm.__wbindgen_malloc);
14998
+ const len0 = WASM_VECTOR_LEN;
14999
+ const ptr1 = passArrayF64ToWasm0(emission_epochs_j2000_s, wasm.__wbindgen_malloc);
15000
+ const len1 = WASM_VECTOR_LEN;
15001
+ const ptr2 = passArrayF64ToWasm0(receiver_ecef_m, wasm.__wbindgen_malloc);
15002
+ const len2 = WASM_VECTOR_LEN;
15003
+ const ret = wasm.sp3_emissionMediaBatch(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, options);
15004
+ if (ret[2]) {
15005
+ throw takeFromExternrefTable0(ret[1]);
15006
+ }
15007
+ return EmissionMediaBatch.__wrap(ret[0]);
15008
+ }
15009
+ /**
15010
+ * Evaluate emission-time state plus IONEX/troposphere media corrections.
15011
+ *
15012
+ * `options.ionosphere` defaults to `true` on this IONEX-bearing path.
15013
+ * `options.troposphere` defaults to `false`.
15014
+ * @param {Ionex} ionex
15015
+ * @param {string[]} satellites
15016
+ * @param {Float64Array} emission_epochs_j2000_s
15017
+ * @param {Float64Array} receiver_ecef_m
15018
+ * @param {any} options
15019
+ * @returns {EmissionMediaBatch}
15020
+ */
15021
+ emissionMediaBatchIonex(ionex, satellites, emission_epochs_j2000_s, receiver_ecef_m, options) {
15022
+ _assertClass(ionex, Ionex);
15023
+ const ptr0 = passArrayJsValueToWasm0(satellites, wasm.__wbindgen_malloc);
15024
+ const len0 = WASM_VECTOR_LEN;
15025
+ const ptr1 = passArrayF64ToWasm0(emission_epochs_j2000_s, wasm.__wbindgen_malloc);
15026
+ const len1 = WASM_VECTOR_LEN;
15027
+ const ptr2 = passArrayF64ToWasm0(receiver_ecef_m, wasm.__wbindgen_malloc);
15028
+ const len2 = WASM_VECTOR_LEN;
15029
+ const ret = wasm.sp3_emissionMediaBatchIonex(this.__wbg_ptr, ionex.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, options);
15030
+ if (ret[2]) {
15031
+ throw takeFromExternrefTable0(ret[1]);
15032
+ }
15033
+ return EmissionMediaBatch.__wrap(ret[0]);
15034
+ }
14525
15035
  /**
14526
15036
  * Number of epochs in the product.
14527
15037
  * @returns {number}
@@ -14620,6 +15130,19 @@ export class Sp3 {
14620
15130
  }
14621
15131
  return takeFromExternrefTable0(ret[0]);
14622
15132
  }
15133
+ /**
15134
+ * Build deterministic precise-interpolant artifact bytes from this SP3 product.
15135
+ * @returns {Uint8Array}
15136
+ */
15137
+ preciseInterpolantArtifactBytes() {
15138
+ const ret = wasm.sp3_preciseInterpolantArtifactBytes(this.__wbg_ptr);
15139
+ if (ret[3]) {
15140
+ throw takeFromExternrefTable0(ret[2]);
15141
+ }
15142
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
15143
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
15144
+ return v1;
15145
+ }
14623
15146
  /**
14624
15147
  * Predict geometric ranges for many `(satellite, receiver, epoch)` requests
14625
15148
  * against this ephemeris in one call. `requests` is an array of
@@ -14683,6 +15206,40 @@ export class Sp3 {
14683
15206
  }
14684
15207
  return SppBatchSolution.__wrap(ret[0]);
14685
15208
  }
15209
+ /**
15210
+ * Run SPP and attach a Doppler velocity/clock-drift solve when Doppler rows solve.
15211
+ *
15212
+ * `request` is the normal SPP request object. `dopplerObservations` is an
15213
+ * array of `{ satelliteId, dopplerHz, carrierHz, satClockDriftSS? }`. The
15214
+ * returned receiver solution carries `rxClockDriftSS` when velocity solved.
15215
+ * @param {any} request
15216
+ * @param {any} doppler_observations
15217
+ * @returns {SppDopplerSolution}
15218
+ */
15219
+ solveSppWithDopplerVelocity(request, doppler_observations) {
15220
+ const ret = wasm.sp3_solveSppWithDopplerVelocity(this.__wbg_ptr, request, doppler_observations);
15221
+ if (ret[2]) {
15222
+ throw takeFromExternrefTable0(ret[1]);
15223
+ }
15224
+ return SppDopplerSolution.__wrap(ret[0]);
15225
+ }
15226
+ /**
15227
+ * Solve one static receiver position from multiple SPP-shaped epochs.
15228
+ *
15229
+ * `epochs` is an array of SPP request objects. `options` accepts
15230
+ * `{ initialPositionM?, withGeodetic?, robust? }` and returns shared
15231
+ * position, per-epoch clocks, covariance, residual, and influence surfaces.
15232
+ * @param {any} epochs
15233
+ * @param {any} options
15234
+ * @returns {StaticSolution}
15235
+ */
15236
+ solveStatic(epochs, options) {
15237
+ const ret = wasm.sp3_solveStatic(this.__wbg_ptr, epochs, options);
15238
+ if (ret[2]) {
15239
+ throw takeFromExternrefTable0(ret[1]);
15240
+ }
15241
+ return StaticSolution.__wrap(ret[0]);
15242
+ }
14686
15243
  /**
14687
15244
  * Run the core robust-reweighted SPP driver under the RAIM/FDE exclusion loop.
14688
15245
  *
@@ -15868,6 +16425,58 @@ export class SppBatchSolution {
15868
16425
  }
15869
16426
  if (Symbol.dispose) SppBatchSolution.prototype[Symbol.dispose] = SppBatchSolution.prototype.free;
15870
16427
 
16428
+ /**
16429
+ * Position solution with an optional Doppler velocity solve.
16430
+ */
16431
+ export class SppDopplerSolution {
16432
+ static __wrap(ptr) {
16433
+ const obj = Object.create(SppDopplerSolution.prototype);
16434
+ obj.__wbg_ptr = ptr;
16435
+ SppDopplerSolutionFinalization.register(obj, obj.__wbg_ptr, obj);
16436
+ return obj;
16437
+ }
16438
+ __destroy_into_raw() {
16439
+ const ptr = this.__wbg_ptr;
16440
+ this.__wbg_ptr = 0;
16441
+ SppDopplerSolutionFinalization.unregister(this);
16442
+ return ptr;
16443
+ }
16444
+ free() {
16445
+ const ptr = this.__destroy_into_raw();
16446
+ wasm.__wbg_sppdopplersolution_free(ptr, 0);
16447
+ }
16448
+ /**
16449
+ * Receiver position, clock, and covariance solution.
16450
+ * @returns {SppSolution}
16451
+ */
16452
+ get receiver() {
16453
+ const ret = wasm.sppdopplersolution_receiver(this.__wbg_ptr);
16454
+ return SppSolution.__wrap(ret);
16455
+ }
16456
+ /**
16457
+ * Doppler-derived receiver velocity and clock drift, if the velocity rows solved.
16458
+ * @returns {VelocitySolution | undefined}
16459
+ */
16460
+ get velocity() {
16461
+ const ret = wasm.sppdopplersolution_velocity(this.__wbg_ptr);
16462
+ return ret === 0 ? undefined : VelocitySolution.__wrap(ret);
16463
+ }
16464
+ /**
16465
+ * Velocity-solve failure text when Doppler rows were present but unusable.
16466
+ * @returns {string | undefined}
16467
+ */
16468
+ get velocityError() {
16469
+ const ret = wasm.sppdopplersolution_velocityError(this.__wbg_ptr);
16470
+ let v1;
16471
+ if (ret[0] !== 0) {
16472
+ v1 = getStringFromWasm0(ret[0], ret[1]).slice();
16473
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
16474
+ }
16475
+ return v1;
16476
+ }
16477
+ }
16478
+ if (Symbol.dispose) SppDopplerSolution.prototype[Symbol.dispose] = SppDopplerSolution.prototype.free;
16479
+
15871
16480
  /**
15872
16481
  * The result of an SPP solve.
15873
16482
  */
@@ -15923,6 +16532,26 @@ export class SppSolution {
15923
16532
  const ret = wasm.sppsolution_geometryQuality(this.__wbg_ptr);
15924
16533
  return GeometryQuality.__wrap(ret);
15925
16534
  }
16535
+ /**
16536
+ * ECEF position covariance, flat row-major 3-by-3 in square metres.
16537
+ * @returns {Float64Array}
16538
+ */
16539
+ get positionCovarianceEcefM2() {
16540
+ const ret = wasm.sppsolution_positionCovarianceEcefM2(this.__wbg_ptr);
16541
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
16542
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
16543
+ return v1;
16544
+ }
16545
+ /**
16546
+ * ENU position covariance, flat row-major 3-by-3 in square metres.
16547
+ * @returns {Float64Array}
16548
+ */
16549
+ get positionCovarianceEnuM2() {
16550
+ const ret = wasm.sppsolution_positionCovarianceEnuM2(this.__wbg_ptr);
16551
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
16552
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
16553
+ return v1;
16554
+ }
15926
16555
  /**
15927
16556
  * ECEF position as a `Float64Array` `[x, y, z]`, metres.
15928
16557
  * @returns {Float64Array}
@@ -15959,6 +16588,14 @@ export class SppSolution {
15959
16588
  wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
15960
16589
  return v1;
15961
16590
  }
16591
+ /**
16592
+ * Receiver clock drift in seconds per second when a Doppler solve was fused.
16593
+ * @returns {number | undefined}
16594
+ */
16595
+ get rxClockDriftSS() {
16596
+ const ret = wasm.sppsolution_rxClockDriftSS(this.__wbg_ptr);
16597
+ return ret[0] === 0 ? undefined : ret[1];
16598
+ }
15962
16599
  /**
15963
16600
  * Receiver clock bias, seconds.
15964
16601
  * @returns {number}
@@ -16043,71 +16680,314 @@ export class SsrCorrectionStore {
16043
16680
  return takeFromExternrefTable0(ret[0]);
16044
16681
  }
16045
16682
  /**
16046
- * @param {Uint8Array} bytes
16047
- * @param {boolean | null | undefined} framed
16048
- * @param {number} week
16049
- * @param {number} tow_s
16050
- * @param {string | null} [time_scale]
16683
+ * @param {Uint8Array} bytes
16684
+ * @param {boolean | null | undefined} framed
16685
+ * @param {number} week
16686
+ * @param {number} tow_s
16687
+ * @param {string | null} [time_scale]
16688
+ */
16689
+ ingest(bytes, framed, week, tow_s, time_scale) {
16690
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
16691
+ const len0 = WASM_VECTOR_LEN;
16692
+ var ptr1 = isLikeNone(time_scale) ? 0 : passStringToWasm0(time_scale, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
16693
+ var len1 = WASM_VECTOR_LEN;
16694
+ const ret = wasm.ssrcorrectionstore_ingest(this.__wbg_ptr, ptr0, len0, isLikeNone(framed) ? 0xFFFFFF : framed ? 1 : 0, week, tow_s, ptr1, len1);
16695
+ if (ret[1]) {
16696
+ throw takeFromExternrefTable0(ret[0]);
16697
+ }
16698
+ }
16699
+ constructor() {
16700
+ const ret = wasm.ssrcorrectionstore_new();
16701
+ this.__wbg_ptr = ret;
16702
+ SsrCorrectionStoreFinalization.register(this, this.__wbg_ptr, this);
16703
+ return this;
16704
+ }
16705
+ /**
16706
+ * @param {string} sat
16707
+ * @returns {any}
16708
+ */
16709
+ orbit(sat) {
16710
+ const ptr0 = passStringToWasm0(sat, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
16711
+ const len0 = WASM_VECTOR_LEN;
16712
+ const ret = wasm.ssrcorrectionstore_orbit(this.__wbg_ptr, ptr0, len0);
16713
+ if (ret[2]) {
16714
+ throw takeFromExternrefTable0(ret[1]);
16715
+ }
16716
+ return takeFromExternrefTable0(ret[0]);
16717
+ }
16718
+ /**
16719
+ * @param {string} sat
16720
+ * @returns {number | undefined}
16721
+ */
16722
+ uraIndex(sat) {
16723
+ const ptr0 = passStringToWasm0(sat, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
16724
+ const len0 = WASM_VECTOR_LEN;
16725
+ const ret = wasm.ssrcorrectionstore_uraIndex(this.__wbg_ptr, ptr0, len0);
16726
+ if (ret[2]) {
16727
+ throw takeFromExternrefTable0(ret[1]);
16728
+ }
16729
+ return ret[0] === 0xFFFFFF ? undefined : ret[0];
16730
+ }
16731
+ }
16732
+ if (Symbol.dispose) SsrCorrectionStore.prototype[Symbol.dispose] = SsrCorrectionStore.prototype.free;
16733
+
16734
+ /**
16735
+ * Source stream for engineering-unit SSR corrections.
16736
+ * @enum {0 | 1}
16737
+ */
16738
+ export const SsrSource = Object.freeze({
16739
+ /**
16740
+ * RTCM SSR messages.
16741
+ */
16742
+ RtcmSsr: 0, "0": "RtcmSsr",
16743
+ /**
16744
+ * Galileo High Accuracy Service messages.
16745
+ */
16746
+ GalileoHas: 1, "1": "GalileoHas",
16747
+ });
16748
+
16749
+ /**
16750
+ * Status for a leave-one-out static positioning diagnostic.
16751
+ * @enum {0 | 1 | 2 | 3 | 4 | 5}
16752
+ */
16753
+ export const StaticInfluenceStatus = Object.freeze({
16754
+ /**
16755
+ * The diagnostic solve completed.
16756
+ */
16757
+ Solved: 0, "0": "Solved",
16758
+ /**
16759
+ * The omitted subset left too few measurements.
16760
+ */
16761
+ TooFewMeasurements: 1, "1": "TooFewMeasurements",
16762
+ /**
16763
+ * The diagnostic geometry was singular.
16764
+ */
16765
+ SingularGeometry: 2, "2": "SingularGeometry",
16766
+ /**
16767
+ * Input validation failed for the diagnostic subset.
16768
+ */
16769
+ InvalidInput: 3, "3": "InvalidInput",
16770
+ /**
16771
+ * Ephemeris was unavailable for the diagnostic subset.
16772
+ */
16773
+ EphemerisUnavailable: 4, "4": "EphemerisUnavailable",
16774
+ /**
16775
+ * The diagnostic subset failed for another reason.
16776
+ */
16777
+ SolveFailed: 5, "5": "SolveFailed",
16778
+ });
16779
+
16780
+ /**
16781
+ * Multi-epoch static receiver solution.
16782
+ */
16783
+ export class StaticSolution {
16784
+ static __wrap(ptr) {
16785
+ const obj = Object.create(StaticSolution.prototype);
16786
+ obj.__wbg_ptr = ptr;
16787
+ StaticSolutionFinalization.register(obj, obj.__wbg_ptr, obj);
16788
+ return obj;
16789
+ }
16790
+ __destroy_into_raw() {
16791
+ const ptr = this.__wbg_ptr;
16792
+ this.__wbg_ptr = 0;
16793
+ StaticSolutionFinalization.unregister(this);
16794
+ return ptr;
16795
+ }
16796
+ free() {
16797
+ const ptr = this.__destroy_into_raw();
16798
+ wasm.__wbg_staticsolution_free(ptr, 0);
16799
+ }
16800
+ /**
16801
+ * `[latRad, lonRad, heightM]` when geodetic output was requested.
16802
+ * @returns {Float64Array | undefined}
16803
+ */
16804
+ get geodetic() {
16805
+ const ret = wasm.staticsolution_geodetic(this.__wbg_ptr);
16806
+ let v1;
16807
+ if (ret[0] !== 0) {
16808
+ v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
16809
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
16810
+ }
16811
+ return v1;
16812
+ }
16813
+ /**
16814
+ * Geometry observability and covariance-validation diagnostics.
16815
+ * @returns {GeometryQuality}
16816
+ */
16817
+ get geometryQuality() {
16818
+ const ret = wasm.staticsolution_geometryQuality(this.__wbg_ptr);
16819
+ return GeometryQuality.__wrap(ret);
16820
+ }
16821
+ /**
16822
+ * Solver iteration, convergence, and redundancy metadata.
16823
+ * @returns {any}
16824
+ */
16825
+ get metadata() {
16826
+ const ret = wasm.staticsolution_metadata(this.__wbg_ptr);
16827
+ if (ret[2]) {
16828
+ throw takeFromExternrefTable0(ret[1]);
16829
+ }
16830
+ return takeFromExternrefTable0(ret[0]);
16831
+ }
16832
+ /**
16833
+ * Epoch-local receiver clocks as `{ epochIndex, system, clockS }[]`.
16834
+ * @returns {any}
16835
+ */
16836
+ get perEpochClocks() {
16837
+ const ret = wasm.staticsolution_perEpochClocks(this.__wbg_ptr);
16838
+ if (ret[2]) {
16839
+ throw takeFromExternrefTable0(ret[1]);
16840
+ }
16841
+ return takeFromExternrefTable0(ret[0]);
16842
+ }
16843
+ /**
16844
+ * Leave-one-epoch-out diagnostics.
16845
+ * @returns {any}
16846
+ */
16847
+ get perEpochInfluence() {
16848
+ const ret = wasm.staticsolution_perEpochInfluence(this.__wbg_ptr);
16849
+ if (ret[2]) {
16850
+ throw takeFromExternrefTable0(ret[1]);
16851
+ }
16852
+ return takeFromExternrefTable0(ret[0]);
16853
+ }
16854
+ /**
16855
+ * Leave-one-satellite-out diagnostics across every epoch.
16856
+ * @returns {any}
16857
+ */
16858
+ get perSatelliteBatchInfluence() {
16859
+ const ret = wasm.staticsolution_perSatelliteBatchInfluence(this.__wbg_ptr);
16860
+ if (ret[2]) {
16861
+ throw takeFromExternrefTable0(ret[1]);
16862
+ }
16863
+ return takeFromExternrefTable0(ret[0]);
16864
+ }
16865
+ /**
16866
+ * Leave-one-satellite-out diagnostics per epoch.
16867
+ * @returns {any}
16868
+ */
16869
+ get perSatelliteInfluence() {
16870
+ const ret = wasm.staticsolution_perSatelliteInfluence(this.__wbg_ptr);
16871
+ if (ret[2]) {
16872
+ throw takeFromExternrefTable0(ret[1]);
16873
+ }
16874
+ return takeFromExternrefTable0(ret[0]);
16875
+ }
16876
+ /**
16877
+ * ECEF position covariance, flat row-major 3-by-3 in square metres.
16878
+ * @returns {Float64Array}
16879
+ */
16880
+ get positionCovarianceEcefM2() {
16881
+ const ret = wasm.staticsolution_positionCovarianceEcefM2(this.__wbg_ptr);
16882
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
16883
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
16884
+ return v1;
16885
+ }
16886
+ /**
16887
+ * ENU position covariance, flat row-major 3-by-3 in square metres.
16888
+ * @returns {Float64Array}
16889
+ */
16890
+ get positionCovarianceEnuM2() {
16891
+ const ret = wasm.staticsolution_positionCovarianceEnuM2(this.__wbg_ptr);
16892
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
16893
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
16894
+ return v1;
16895
+ }
16896
+ /**
16897
+ * ECEF position as `[x, y, z]`, metres.
16898
+ * @returns {Float64Array}
16899
+ */
16900
+ get positionM() {
16901
+ const ret = wasm.staticsolution_positionM(this.__wbg_ptr);
16902
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
16903
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
16904
+ return v1;
16905
+ }
16906
+ /**
16907
+ * Rejected satellites grouped by input epoch.
16908
+ * @returns {any}
16909
+ */
16910
+ get rejectedSats() {
16911
+ const ret = wasm.staticsolution_rejectedSats(this.__wbg_ptr);
16912
+ if (ret[2]) {
16913
+ throw takeFromExternrefTable0(ret[1]);
16914
+ }
16915
+ return takeFromExternrefTable0(ret[0]);
16916
+ }
16917
+ /**
16918
+ * Root-mean-square of the unweighted post-fit residuals, metres.
16919
+ * @returns {number}
16920
+ */
16921
+ get residualRmsM() {
16922
+ const ret = wasm.staticsolution_residualRmsM(this.__wbg_ptr);
16923
+ return ret;
16924
+ }
16925
+ /**
16926
+ * Post-fit residuals as `{ epochIndex, satelliteId, residualM, ... }[]`.
16927
+ * @returns {any}
16928
+ */
16929
+ get residuals() {
16930
+ const ret = wasm.staticsolution_residuals(this.__wbg_ptr);
16931
+ if (ret[2]) {
16932
+ throw takeFromExternrefTable0(ret[1]);
16933
+ }
16934
+ return takeFromExternrefTable0(ret[0]);
16935
+ }
16936
+ /**
16937
+ * Full state covariance, flat row-major square matrix in square metres.
16938
+ * @returns {Float64Array}
16051
16939
  */
16052
- ingest(bytes, framed, week, tow_s, time_scale) {
16053
- const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
16054
- const len0 = WASM_VECTOR_LEN;
16055
- var ptr1 = isLikeNone(time_scale) ? 0 : passStringToWasm0(time_scale, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
16056
- var len1 = WASM_VECTOR_LEN;
16057
- const ret = wasm.ssrcorrectionstore_ingest(this.__wbg_ptr, ptr0, len0, isLikeNone(framed) ? 0xFFFFFF : framed ? 1 : 0, week, tow_s, ptr1, len1);
16058
- if (ret[1]) {
16059
- throw takeFromExternrefTable0(ret[0]);
16060
- }
16940
+ get stateCovarianceM2() {
16941
+ const ret = wasm.staticsolution_stateCovarianceM2(this.__wbg_ptr);
16942
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
16943
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
16944
+ return v1;
16061
16945
  }
16062
- constructor() {
16063
- const ret = wasm.ssrcorrectionstore_new();
16064
- this.__wbg_ptr = ret;
16065
- SsrCorrectionStoreFinalization.register(this, this.__wbg_ptr, this);
16066
- return this;
16946
+ /**
16947
+ * State covariance matrix dimension.
16948
+ * @returns {number}
16949
+ */
16950
+ get stateParameterCount() {
16951
+ const ret = wasm.staticsolution_stateParameterCount(this.__wbg_ptr);
16952
+ return ret >>> 0;
16067
16953
  }
16068
16954
  /**
16069
- * @param {string} sat
16955
+ * Used satellite tokens grouped by input epoch.
16070
16956
  * @returns {any}
16071
16957
  */
16072
- orbit(sat) {
16073
- const ptr0 = passStringToWasm0(sat, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
16074
- const len0 = WASM_VECTOR_LEN;
16075
- const ret = wasm.ssrcorrectionstore_orbit(this.__wbg_ptr, ptr0, len0);
16958
+ get usedSats() {
16959
+ const ret = wasm.staticsolution_usedSats(this.__wbg_ptr);
16076
16960
  if (ret[2]) {
16077
16961
  throw takeFromExternrefTable0(ret[1]);
16078
16962
  }
16079
16963
  return takeFromExternrefTable0(ret[0]);
16080
16964
  }
16081
16965
  /**
16082
- * @param {string} sat
16083
- * @returns {number | undefined}
16966
+ * ECEF X, metres.
16967
+ * @returns {number}
16084
16968
  */
16085
- uraIndex(sat) {
16086
- const ptr0 = passStringToWasm0(sat, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
16087
- const len0 = WASM_VECTOR_LEN;
16088
- const ret = wasm.ssrcorrectionstore_uraIndex(this.__wbg_ptr, ptr0, len0);
16089
- if (ret[2]) {
16090
- throw takeFromExternrefTable0(ret[1]);
16091
- }
16092
- return ret[0] === 0xFFFFFF ? undefined : ret[0];
16969
+ get xM() {
16970
+ const ret = wasm.staticsolution_xM(this.__wbg_ptr);
16971
+ return ret;
16093
16972
  }
16094
- }
16095
- if (Symbol.dispose) SsrCorrectionStore.prototype[Symbol.dispose] = SsrCorrectionStore.prototype.free;
16096
-
16097
- /**
16098
- * Source stream for engineering-unit SSR corrections.
16099
- * @enum {0 | 1}
16100
- */
16101
- export const SsrSource = Object.freeze({
16102
16973
  /**
16103
- * RTCM SSR messages.
16974
+ * ECEF Y, metres.
16975
+ * @returns {number}
16104
16976
  */
16105
- RtcmSsr: 0, "0": "RtcmSsr",
16977
+ get yM() {
16978
+ const ret = wasm.staticsolution_yM(this.__wbg_ptr);
16979
+ return ret;
16980
+ }
16106
16981
  /**
16107
- * Galileo High Accuracy Service messages.
16982
+ * ECEF Z, metres.
16983
+ * @returns {number}
16108
16984
  */
16109
- GalileoHas: 1, "1": "GalileoHas",
16110
- });
16985
+ get zM() {
16986
+ const ret = wasm.staticsolution_zM(this.__wbg_ptr);
16987
+ return ret;
16988
+ }
16989
+ }
16990
+ if (Symbol.dispose) StaticSolution.prototype[Symbol.dispose] = StaticSolution.prototype.free;
16111
16991
 
16112
16992
  /**
16113
16993
  * A batch of Sun and Moon positions, one per epoch: flat row-major `sun` and
@@ -17792,6 +18672,16 @@ export class VelocitySolution {
17792
18672
  const ret = wasm.velocitysolution_speedMS(this.__wbg_ptr);
17793
18673
  return ret;
17794
18674
  }
18675
+ /**
18676
+ * Unit-variance covariance of `[vx, vy, vz, clockDrift]`, flat row-major.
18677
+ * @returns {Float64Array}
18678
+ */
18679
+ get stateCovariance() {
18680
+ const ret = wasm.velocitysolution_stateCovariance(this.__wbg_ptr);
18681
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
18682
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
18683
+ return v1;
18684
+ }
17795
18685
  /**
17796
18686
  * Satellite tokens contributing rows, in residual order.
17797
18687
  * @returns {string[]}
@@ -19470,6 +20360,24 @@ export function ellipsoidalHeightM(orthometric_height_m, lat_rad, lon_rad) {
19470
20360
  return ret;
19471
20361
  }
19472
20362
 
20363
+ /**
20364
+ * Stable string label for an [`EmissionMediaStatus`] enum value.
20365
+ * @param {EmissionMediaStatus} status
20366
+ * @returns {string}
20367
+ */
20368
+ export function emissionMediaStatusLabel(status) {
20369
+ let deferred1_0;
20370
+ let deferred1_1;
20371
+ try {
20372
+ const ret = wasm.emissionMediaStatusLabel(status);
20373
+ deferred1_0 = ret[0];
20374
+ deferred1_1 = ret[1];
20375
+ return getStringFromWasm0(ret[0], ret[1]);
20376
+ } finally {
20377
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
20378
+ }
20379
+ }
20380
+
19473
20381
  /**
19474
20382
  * Encode plain RINEX observation text into a Compact RINEX (Hatanaka) stream,
19475
20383
  * the inverse of [`decodeCrinex`]. RINEX 2 is emitted as CRINEX 1.0 and RINEX 3
@@ -20497,6 +21405,147 @@ export function geodeticToEcef(geodetic) {
20497
21405
  return v2;
20498
21406
  }
20499
21407
 
21408
+ /**
21409
+ * Containment probability using default probability options.
21410
+ * @param {Float64Array} vertices
21411
+ * @param {number} lat_rad
21412
+ * @param {number} lon_rad
21413
+ * @param {number} height_m
21414
+ * @param {any} uncertainty_value
21415
+ * @returns {number}
21416
+ */
21417
+ export function geofenceContainmentProbability(vertices, lat_rad, lon_rad, height_m, uncertainty_value) {
21418
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
21419
+ const len0 = WASM_VECTOR_LEN;
21420
+ const ret = wasm.geofenceContainmentProbability(ptr0, len0, lat_rad, lon_rad, height_m, uncertainty_value);
21421
+ if (ret[2]) {
21422
+ throw takeFromExternrefTable0(ret[1]);
21423
+ }
21424
+ return ret[0];
21425
+ }
21426
+
21427
+ /**
21428
+ * Boolean containment for one position and flat vertex array.
21429
+ * @param {Float64Array} vertices
21430
+ * @param {number} lat_rad
21431
+ * @param {number} lon_rad
21432
+ * @param {number} height_m
21433
+ * @returns {boolean}
21434
+ */
21435
+ export function geofenceContains(vertices, lat_rad, lon_rad, height_m) {
21436
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
21437
+ const len0 = WASM_VECTOR_LEN;
21438
+ const ret = wasm.geofenceContains(ptr0, len0, lat_rad, lon_rad, height_m);
21439
+ if (ret[2]) {
21440
+ throw takeFromExternrefTable0(ret[1]);
21441
+ }
21442
+ return ret[0] !== 0;
21443
+ }
21444
+
21445
+ /**
21446
+ * Stable string label for a [`GeofenceCrossingKind`] enum value.
21447
+ * @param {GeofenceCrossingKind} kind
21448
+ * @returns {string}
21449
+ */
21450
+ export function geofenceCrossingKindLabel(kind) {
21451
+ let deferred1_0;
21452
+ let deferred1_1;
21453
+ try {
21454
+ const ret = wasm.geofenceCrossingKindLabel(kind);
21455
+ deferred1_0 = ret[0];
21456
+ deferred1_1 = ret[1];
21457
+ return getStringFromWasm0(ret[0], ret[1]);
21458
+ } finally {
21459
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
21460
+ }
21461
+ }
21462
+
21463
+ /**
21464
+ * Probabilistic crossing detection with default hysteresis.
21465
+ * @param {Float64Array} vertices
21466
+ * @param {any} samples
21467
+ * @param {any} options
21468
+ * @returns {any}
21469
+ */
21470
+ export function geofenceCrossingProbability(vertices, samples, options) {
21471
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
21472
+ const len0 = WASM_VECTOR_LEN;
21473
+ const ret = wasm.geofenceCrossingProbability(ptr0, len0, samples, options);
21474
+ if (ret[2]) {
21475
+ throw takeFromExternrefTable0(ret[1]);
21476
+ }
21477
+ return takeFromExternrefTable0(ret[0]);
21478
+ }
21479
+
21480
+ /**
21481
+ * Stable string label for a [`GeofenceError`] enum value.
21482
+ * @param {GeofenceError} error
21483
+ * @returns {string}
21484
+ */
21485
+ export function geofenceErrorLabel(error) {
21486
+ let deferred1_0;
21487
+ let deferred1_1;
21488
+ try {
21489
+ const ret = wasm.geofenceErrorLabel(error);
21490
+ deferred1_0 = ret[0];
21491
+ deferred1_1 = ret[1];
21492
+ return getStringFromWasm0(ret[0], ret[1]);
21493
+ } finally {
21494
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
21495
+ }
21496
+ }
21497
+
21498
+ /**
21499
+ * Construct a geodesic WGS84 polygon from flat 2D radian vertices.
21500
+ * @param {Float64Array} vertices
21501
+ * @returns {Geofence}
21502
+ */
21503
+ export function geofenceFromVertices(vertices) {
21504
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
21505
+ const len0 = WASM_VECTOR_LEN;
21506
+ const ret = wasm.geofenceFromVertices(ptr0, len0);
21507
+ if (ret[2]) {
21508
+ throw takeFromExternrefTable0(ret[1]);
21509
+ }
21510
+ return Geofence.__wrap(ret[0]);
21511
+ }
21512
+
21513
+ /**
21514
+ * Construct a geodesic WGS84 polygon from flat 3D radian vertices.
21515
+ *
21516
+ * `vertices` is `[latRad, lonRad, heightM, ...]`. Heights are accepted but
21517
+ * ignored by the core geofence model.
21518
+ * @param {Float64Array} vertices
21519
+ * @returns {Geofence}
21520
+ */
21521
+ export function geofenceFromVertices3d(vertices) {
21522
+ const ptr0 = passArrayF64ToWasm0(vertices, wasm.__wbindgen_malloc);
21523
+ const len0 = WASM_VECTOR_LEN;
21524
+ const ret = wasm.geofenceFromVertices3d(ptr0, len0);
21525
+ if (ret[2]) {
21526
+ throw takeFromExternrefTable0(ret[1]);
21527
+ }
21528
+ return Geofence.__wrap(ret[0]);
21529
+ }
21530
+
21531
+ /**
21532
+ * Stable string label for a [`GeofenceProbabilityMethod`] enum value.
21533
+ * @param {GeofenceProbabilityMethod} method
21534
+ * @returns {string}
21535
+ */
21536
+ export function geofenceProbabilityMethodLabel(method) {
21537
+ let deferred1_0;
21538
+ let deferred1_1;
21539
+ try {
21540
+ const ret = wasm.geofenceProbabilityMethodLabel(method);
21541
+ deferred1_0 = ret[0];
21542
+ deferred1_1 = ret[1];
21543
+ return getStringFromWasm0(ret[0], ret[1]);
21544
+ } finally {
21545
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
21546
+ }
21547
+ }
21548
+
20500
21549
  /**
20501
21550
  * Geoid undulation `N` (metres above the WGS84 ellipsoid) at a geodetic
20502
21551
  * position in radians, from the COARSE built-in global grid. Latitude is
@@ -22653,6 +23702,24 @@ export function oceanTideLoading(station_ecef_m, year, month, day, fractional_ho
22653
23702
  return v4;
22654
23703
  }
22655
23704
 
23705
+ /**
23706
+ * Open precise-interpolant artifact bytes as an evaluable in-memory product.
23707
+ *
23708
+ * The returned handle owns its byte buffer because JS byte slices cannot be
23709
+ * borrowed across calls by this class boundary.
23710
+ * @param {Uint8Array} bytes
23711
+ * @returns {PreciseInterpolantArtifact}
23712
+ */
23713
+ export function openPreciseInterpolantArtifact(bytes) {
23714
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
23715
+ const len0 = WASM_VECTOR_LEN;
23716
+ const ret = wasm.openPreciseInterpolantArtifact(ptr0, len0);
23717
+ if (ret[2]) {
23718
+ throw takeFromExternrefTable0(ret[1]);
23719
+ }
23720
+ return PreciseInterpolantArtifact.__wrap(ret[0]);
23721
+ }
23722
+
22656
23723
  /**
22657
23724
  * Broadcast-derived per-satellite orbit-repeat lag, in seconds.
22658
23725
  *
@@ -23287,6 +24354,36 @@ export function preciseEphemerisSamplesFromSamples(samples) {
23287
24354
  return PreciseEphemerisSampleSource.__wrap(ret[0]);
23288
24355
  }
23289
24356
 
24357
+ /**
24358
+ * Compute the precise-interpolant artifact file-level checksum for byte content.
24359
+ * @param {Uint8Array} bytes
24360
+ * @returns {bigint}
24361
+ */
24362
+ export function preciseInterpolantArtifactChecksum64(bytes) {
24363
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
24364
+ const len0 = WASM_VECTOR_LEN;
24365
+ const ret = wasm.preciseInterpolantArtifactChecksum64(ptr0, len0);
24366
+ return BigInt.asUintN(64, ret);
24367
+ }
24368
+
24369
+ /**
24370
+ * Stable string label for a [`PreciseInterpolantArtifactError`] enum value.
24371
+ * @param {PreciseInterpolantArtifactError} error
24372
+ * @returns {string}
24373
+ */
24374
+ export function preciseInterpolantArtifactErrorLabel(error) {
24375
+ let deferred1_0;
24376
+ let deferred1_1;
24377
+ try {
24378
+ const ret = wasm.preciseInterpolantArtifactErrorLabel(error);
24379
+ deferred1_0 = ret[0];
24380
+ deferred1_1 = ret[1];
24381
+ return getStringFromWasm0(ret[0], ret[1]);
24382
+ } finally {
24383
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
24384
+ }
24385
+ }
24386
+
23290
24387
  /**
23291
24388
  * Predict observables for many `(satellite, receiver, epoch)` requests from a
23292
24389
  * broadcast ephemeris store, serially. See [`predictBatchSp3`] for the argument
@@ -24688,6 +25785,22 @@ export function solveSppSbas(broadcast, store, geo, request, mode) {
24688
25785
  return SppSolution.__wrap(ret[0]);
24689
25786
  }
24690
25787
 
25788
+ /**
25789
+ * Solve one static receiver position from multiple SPP-shaped epochs over SP3.
25790
+ * @param {Sp3} sp3
25791
+ * @param {any} epochs
25792
+ * @param {any} options
25793
+ * @returns {StaticSolution}
25794
+ */
25795
+ export function solveStatic(sp3, epochs, options) {
25796
+ _assertClass(sp3, Sp3);
25797
+ const ret = wasm.solveStatic(sp3.__wbg_ptr, epochs, options);
25798
+ if (ret[2]) {
25799
+ throw takeFromExternrefTable0(ret[1]);
25800
+ }
25801
+ return StaticSolution.__wrap(ret[0]);
25802
+ }
25803
+
24691
25804
  /**
24692
25805
  * Solve a static RTK arc with one batch float solution and one validated fixed
24693
25806
  * solution over the whole arc.
@@ -24919,6 +26032,24 @@ export function ssrSourceLabel(source) {
24919
26032
  }
24920
26033
  }
24921
26034
 
26035
+ /**
26036
+ * Stable string label for a [`StaticInfluenceStatus`] enum value.
26037
+ * @param {StaticInfluenceStatus} status
26038
+ * @returns {string}
26039
+ */
26040
+ export function staticInfluenceStatusLabel(status) {
26041
+ let deferred1_0;
26042
+ let deferred1_1;
26043
+ try {
26044
+ const ret = wasm.staticInfluenceStatusLabel(status);
26045
+ deferred1_0 = ret[0];
26046
+ deferred1_1 = ret[1];
26047
+ return getStringFromWasm0(ret[0], ret[1]);
26048
+ } finally {
26049
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
26050
+ }
26051
+ }
26052
+
24922
26053
  /**
24923
26054
  * Sub-observer point (planetary central meridian) on a rotating body.
24924
26055
  *
@@ -25695,6 +26826,10 @@ function __wbg_get_imports() {
25695
26826
  const ret = String.fromCodePoint(arg0 >>> 0);
25696
26827
  return ret;
25697
26828
  }, arguments); },
26829
+ __wbg_from_13e323c65fc8f464: function(arg0) {
26830
+ const ret = Array.from(arg0);
26831
+ return ret;
26832
+ },
25698
26833
  __wbg_get_507a50627bffa49b: function(arg0, arg1) {
25699
26834
  const ret = arg0[arg1 >>> 0];
25700
26835
  return ret;
@@ -26154,6 +27289,9 @@ const Egm96FifteenMinuteGeoidFinalization = (typeof FinalizationRegistry === 'un
26154
27289
  const EllipsoidalHeightMFinalization = (typeof FinalizationRegistry === 'undefined')
26155
27290
  ? { register: () => {}, unregister: () => {} }
26156
27291
  : new FinalizationRegistry(ptr => wasm.__wbg_ellipsoidalheightm_free(ptr, 1));
27292
+ const EmissionMediaBatchFinalization = (typeof FinalizationRegistry === 'undefined')
27293
+ ? { register: () => {}, unregister: () => {} }
27294
+ : new FinalizationRegistry(ptr => wasm.__wbg_emissionmediabatch_free(ptr, 1));
26157
27295
  const EncounterFrameFinalization = (typeof FinalizationRegistry === 'undefined')
26158
27296
  ? { register: () => {}, unregister: () => {} }
26159
27297
  : new FinalizationRegistry(ptr => wasm.__wbg_encounterframe_free(ptr, 1));
@@ -26181,6 +27319,9 @@ const FrameScannerFinalization = (typeof FinalizationRegistry === 'undefined')
26181
27319
  const FrameStatesFinalization = (typeof FinalizationRegistry === 'undefined')
26182
27320
  ? { register: () => {}, unregister: () => {} }
26183
27321
  : new FinalizationRegistry(ptr => wasm.__wbg_framestates_free(ptr, 1));
27322
+ const GeofenceFinalization = (typeof FinalizationRegistry === 'undefined')
27323
+ ? { register: () => {}, unregister: () => {} }
27324
+ : new FinalizationRegistry(ptr => wasm.__wbg_geofence_free(ptr, 1));
26184
27325
  const GeoidGridFinalization = (typeof FinalizationRegistry === 'undefined')
26185
27326
  ? { register: () => {}, unregister: () => {} }
26186
27327
  : new FinalizationRegistry(ptr => wasm.__wbg_geoidgrid_free(ptr, 1));
@@ -26394,6 +27535,9 @@ const PreciseEphemerisInterpolantFinalization = (typeof FinalizationRegistry ===
26394
27535
  const PreciseEphemerisSampleSourceFinalization = (typeof FinalizationRegistry === 'undefined')
26395
27536
  ? { register: () => {}, unregister: () => {} }
26396
27537
  : new FinalizationRegistry(ptr => wasm.__wbg_preciseephemerissamplesource_free(ptr, 1));
27538
+ const PreciseInterpolantArtifactFinalization = (typeof FinalizationRegistry === 'undefined')
27539
+ ? { register: () => {}, unregister: () => {} }
27540
+ : new FinalizationRegistry(ptr => wasm.__wbg_preciseinterpolantartifact_free(ptr, 1));
26397
27541
  const PredictBatchFinalization = (typeof FinalizationRegistry === 'undefined')
26398
27542
  ? { register: () => {}, unregister: () => {} }
26399
27543
  : new FinalizationRegistry(ptr => wasm.__wbg_predictbatch_free(ptr, 1));
@@ -26520,12 +27664,18 @@ const SpkStateFinalization = (typeof FinalizationRegistry === 'undefined')
26520
27664
  const SppBatchSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
26521
27665
  ? { register: () => {}, unregister: () => {} }
26522
27666
  : new FinalizationRegistry(ptr => wasm.__wbg_sppbatchsolution_free(ptr, 1));
27667
+ const SppDopplerSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
27668
+ ? { register: () => {}, unregister: () => {} }
27669
+ : new FinalizationRegistry(ptr => wasm.__wbg_sppdopplersolution_free(ptr, 1));
26523
27670
  const SppSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
26524
27671
  ? { register: () => {}, unregister: () => {} }
26525
27672
  : new FinalizationRegistry(ptr => wasm.__wbg_sppsolution_free(ptr, 1));
26526
27673
  const SsrCorrectionStoreFinalization = (typeof FinalizationRegistry === 'undefined')
26527
27674
  ? { register: () => {}, unregister: () => {} }
26528
27675
  : new FinalizationRegistry(ptr => wasm.__wbg_ssrcorrectionstore_free(ptr, 1));
27676
+ const StaticSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
27677
+ ? { register: () => {}, unregister: () => {} }
27678
+ : new FinalizationRegistry(ptr => wasm.__wbg_staticsolution_free(ptr, 1));
26529
27679
  const SunMoonFinalization = (typeof FinalizationRegistry === 'undefined')
26530
27680
  ? { register: () => {}, unregister: () => {} }
26531
27681
  : new FinalizationRegistry(ptr => wasm.__wbg_sunmoon_free(ptr, 1));