@neilberkman/sidereon 0.13.0 → 0.15.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.
@@ -130,6 +130,76 @@ class AcquisitionResult {
130
130
  if (Symbol.dispose) AcquisitionResult.prototype[Symbol.dispose] = AcquisitionResult.prototype.free;
131
131
  exports.AcquisitionResult = AcquisitionResult;
132
132
 
133
+ /**
134
+ * Airborne receiver and multipath contribution model.
135
+ */
136
+ class AirborneModel {
137
+ static __wrap(ptr) {
138
+ const obj = Object.create(AirborneModel.prototype);
139
+ obj.__wbg_ptr = ptr;
140
+ AirborneModelFinalization.register(obj, obj.__wbg_ptr, obj);
141
+ return obj;
142
+ }
143
+ __destroy_into_raw() {
144
+ const ptr = this.__wbg_ptr;
145
+ this.__wbg_ptr = 0;
146
+ AirborneModelFinalization.unregister(this);
147
+ return ptr;
148
+ }
149
+ free() {
150
+ const ptr = this.__destroy_into_raw();
151
+ wasm.__wbg_airbornemodel_free(ptr, 0);
152
+ }
153
+ /**
154
+ * AAD-A airborne model.
155
+ * @returns {AirborneModel}
156
+ */
157
+ static aadA() {
158
+ const ret = wasm.airbornemodel_aadA();
159
+ return AirborneModel.__wrap(ret);
160
+ }
161
+ /**
162
+ * Default airborne model.
163
+ * @returns {AirborneModel}
164
+ */
165
+ static defaultModel() {
166
+ const ret = wasm.airbornemodel_defaultModel();
167
+ return AirborneModel.__wrap(ret);
168
+ }
169
+ /**
170
+ * Construct an airborne model from a receiver noise term in metres.
171
+ * @param {number} sigma_noise_divergence_m
172
+ */
173
+ constructor(sigma_noise_divergence_m) {
174
+ const ret = wasm.airbornemodel_new(sigma_noise_divergence_m);
175
+ if (ret[2]) {
176
+ throw takeFromExternrefTable0(ret[1]);
177
+ }
178
+ this.__wbg_ptr = ret[0];
179
+ AirborneModelFinalization.register(this, this.__wbg_ptr, this);
180
+ return this;
181
+ }
182
+ /**
183
+ * Airborne receiver, divergence, and multipath sigma, metres, or `null`.
184
+ * @param {number} elevation_rad
185
+ * @returns {any}
186
+ */
187
+ sigmaAirM(elevation_rad) {
188
+ const ret = wasm.airbornemodel_sigmaAirM(this.__wbg_ptr, elevation_rad);
189
+ return ret;
190
+ }
191
+ /**
192
+ * Receiver noise and code-carrier divergence sigma, metres.
193
+ * @returns {number}
194
+ */
195
+ get sigmaNoiseDivergenceM() {
196
+ const ret = wasm.airbornemodel_sigmaNoiseDivergenceM(this.__wbg_ptr);
197
+ return ret;
198
+ }
199
+ }
200
+ if (Symbol.dispose) AirborneModel.prototype[Symbol.dispose] = AirborneModel.prototype.free;
201
+ exports.AirborneModel = AirborneModel;
202
+
133
203
  /**
134
204
  * A receiver or satellite ANTEX antenna calibration block.
135
205
  */
@@ -3199,6 +3269,132 @@ class CoverageGrid {
3199
3269
  if (Symbol.dispose) CoverageGrid.prototype[Symbol.dispose] = CoverageGrid.prototype.free;
3200
3270
  exports.CoverageGrid = CoverageGrid;
3201
3271
 
3272
+ /**
3273
+ * SBAS degradation terms used when deriving an error model from a store.
3274
+ */
3275
+ class DegradationParams {
3276
+ static __wrap(ptr) {
3277
+ const obj = Object.create(DegradationParams.prototype);
3278
+ obj.__wbg_ptr = ptr;
3279
+ DegradationParamsFinalization.register(obj, obj.__wbg_ptr, obj);
3280
+ return obj;
3281
+ }
3282
+ __destroy_into_raw() {
3283
+ const ptr = this.__wbg_ptr;
3284
+ this.__wbg_ptr = 0;
3285
+ DegradationParamsFinalization.unregister(this);
3286
+ return ptr;
3287
+ }
3288
+ free() {
3289
+ const ptr = this.__destroy_into_raw();
3290
+ wasm.__wbg_degradationparams_free(ptr, 0);
3291
+ }
3292
+ /**
3293
+ * Default degradation parameters.
3294
+ * @returns {DegradationParams}
3295
+ */
3296
+ static defaultParams() {
3297
+ const ret = wasm.degradationparams_defaultParams();
3298
+ return DegradationParams.__wrap(ret);
3299
+ }
3300
+ /**
3301
+ * Variance multiplier applied to the UDRE variance table.
3302
+ * @returns {number}
3303
+ */
3304
+ get deltaUdre() {
3305
+ const ret = wasm.degradationparams_deltaUdre(this.__wbg_ptr);
3306
+ return ret;
3307
+ }
3308
+ /**
3309
+ * En-route degradation term, metres.
3310
+ * @returns {number}
3311
+ */
3312
+ get epsErM() {
3313
+ const ret = wasm.degradationparams_epsErM(this.__wbg_ptr);
3314
+ return ret;
3315
+ }
3316
+ /**
3317
+ * Fast-correction degradation term, metres.
3318
+ * @returns {number}
3319
+ */
3320
+ get epsFcM() {
3321
+ const ret = wasm.degradationparams_epsFcM(this.__wbg_ptr);
3322
+ return ret;
3323
+ }
3324
+ /**
3325
+ * Ionospheric degradation term added to UIRE, metres.
3326
+ * @returns {number}
3327
+ */
3328
+ get epsIonoM() {
3329
+ const ret = wasm.degradationparams_epsIonoM(this.__wbg_ptr);
3330
+ return ret;
3331
+ }
3332
+ /**
3333
+ * Long-term-correction degradation term, metres.
3334
+ * @returns {number}
3335
+ */
3336
+ get epsLtcM() {
3337
+ const ret = wasm.degradationparams_epsLtcM(this.__wbg_ptr);
3338
+ return ret;
3339
+ }
3340
+ /**
3341
+ * Range-rate-correction degradation term, metres.
3342
+ * @returns {number}
3343
+ */
3344
+ get epsRrcM() {
3345
+ const ret = wasm.degradationparams_epsRrcM(this.__wbg_ptr);
3346
+ return ret;
3347
+ }
3348
+ /**
3349
+ * True when all degradation parameters are inside the valid domain.
3350
+ * @returns {boolean}
3351
+ */
3352
+ isValid() {
3353
+ const ret = wasm.degradationparams_isValid(this.__wbg_ptr);
3354
+ return ret !== 0;
3355
+ }
3356
+ /**
3357
+ * Construct SBAS degradation parameters.
3358
+ *
3359
+ * Omitted numeric fields use the no-degradation defaults. Invalid values
3360
+ * throw a `RangeError`.
3361
+ * @param {number | null} [delta_udre]
3362
+ * @param {number | null} [eps_fc_m]
3363
+ * @param {number | null} [eps_rrc_m]
3364
+ * @param {number | null} [eps_ltc_m]
3365
+ * @param {number | null} [eps_er_m]
3366
+ * @param {number | null} [eps_iono_m]
3367
+ * @param {boolean | null} [rss_udre]
3368
+ */
3369
+ constructor(delta_udre, eps_fc_m, eps_rrc_m, eps_ltc_m, eps_er_m, eps_iono_m, rss_udre) {
3370
+ const ret = wasm.degradationparams_new(!isLikeNone(delta_udre), isLikeNone(delta_udre) ? 0 : delta_udre, !isLikeNone(eps_fc_m), isLikeNone(eps_fc_m) ? 0 : eps_fc_m, !isLikeNone(eps_rrc_m), isLikeNone(eps_rrc_m) ? 0 : eps_rrc_m, !isLikeNone(eps_ltc_m), isLikeNone(eps_ltc_m) ? 0 : eps_ltc_m, !isLikeNone(eps_er_m), isLikeNone(eps_er_m) ? 0 : eps_er_m, !isLikeNone(eps_iono_m), isLikeNone(eps_iono_m) ? 0 : eps_iono_m, isLikeNone(rss_udre) ? 0xFFFFFF : rss_udre ? 1 : 0);
3371
+ if (ret[2]) {
3372
+ throw takeFromExternrefTable0(ret[1]);
3373
+ }
3374
+ this.__wbg_ptr = ret[0];
3375
+ DegradationParamsFinalization.register(this, this.__wbg_ptr, this);
3376
+ return this;
3377
+ }
3378
+ /**
3379
+ * No extra degradation and no UDRE inflation.
3380
+ * @returns {DegradationParams}
3381
+ */
3382
+ static none() {
3383
+ const ret = wasm.degradationparams_none();
3384
+ return DegradationParams.__wrap(ret);
3385
+ }
3386
+ /**
3387
+ * Whether UDRE degradation terms are combined by root-sum-square.
3388
+ * @returns {boolean}
3389
+ */
3390
+ get rssUdre() {
3391
+ const ret = wasm.degradationparams_rssUdre(this.__wbg_ptr);
3392
+ return ret !== 0;
3393
+ }
3394
+ }
3395
+ if (Symbol.dispose) DegradationParams.prototype[Symbol.dispose] = DegradationParams.prototype.free;
3396
+ exports.DegradationParams = DegradationParams;
3397
+
3202
3398
  /**
3203
3399
  * A DGNSS rover solve: the corrected SPP solution plus the base-relative
3204
3400
  * baseline.
@@ -4218,6 +4414,54 @@ class Ephemeris {
4218
4414
  if (Symbol.dispose) Ephemeris.prototype[Symbol.dispose] = Ephemeris.prototype.free;
4219
4415
  exports.Ephemeris = Ephemeris;
4220
4416
 
4417
+ /**
4418
+ * A horizontal one-sigma error ellipse.
4419
+ */
4420
+ class ErrorEllipse {
4421
+ static __wrap(ptr) {
4422
+ const obj = Object.create(ErrorEllipse.prototype);
4423
+ obj.__wbg_ptr = ptr;
4424
+ ErrorEllipseFinalization.register(obj, obj.__wbg_ptr, obj);
4425
+ return obj;
4426
+ }
4427
+ __destroy_into_raw() {
4428
+ const ptr = this.__wbg_ptr;
4429
+ this.__wbg_ptr = 0;
4430
+ ErrorEllipseFinalization.unregister(this);
4431
+ return ptr;
4432
+ }
4433
+ free() {
4434
+ const ptr = this.__destroy_into_raw();
4435
+ wasm.__wbg_errorellipse_free(ptr, 0);
4436
+ }
4437
+ /**
4438
+ * Semi-major-axis orientation in radians, from east toward north.
4439
+ * @returns {number}
4440
+ */
4441
+ get orientationRad() {
4442
+ const ret = wasm.errorellipse_orientationRad(this.__wbg_ptr);
4443
+ return ret;
4444
+ }
4445
+ /**
4446
+ * Semi-major axis length, metres.
4447
+ * @returns {number}
4448
+ */
4449
+ get semiMajorM() {
4450
+ const ret = wasm.errorellipse_semiMajorM(this.__wbg_ptr);
4451
+ return ret;
4452
+ }
4453
+ /**
4454
+ * Semi-minor axis length, metres.
4455
+ * @returns {number}
4456
+ */
4457
+ get semiMinorM() {
4458
+ const ret = wasm.errorellipse_semiMinorM(this.__wbg_ptr);
4459
+ return ret;
4460
+ }
4461
+ }
4462
+ if (Symbol.dispose) ErrorEllipse.prototype[Symbol.dispose] = ErrorEllipse.prototype.free;
4463
+ exports.ErrorEllipse = ErrorEllipse;
4464
+
4221
4465
  /**
4222
4466
  * A confidence ellipse from a 2x2 covariance block: semi-axes scaled by the
4223
4467
  * two-degree-of-freedom chi-square quantile `-2 ln(1 - confidence)`.
@@ -4798,6 +5042,86 @@ class GeoidGrid {
4798
5042
  if (Symbol.dispose) GeoidGrid.prototype[Symbol.dispose] = GeoidGrid.prototype.free;
4799
5043
  exports.GeoidGrid = GeoidGrid;
4800
5044
 
5045
+ /**
5046
+ * Geometry observability and covariance-validation diagnostics.
5047
+ */
5048
+ class GeometryQuality {
5049
+ static __wrap(ptr) {
5050
+ const obj = Object.create(GeometryQuality.prototype);
5051
+ obj.__wbg_ptr = ptr;
5052
+ GeometryQualityFinalization.register(obj, obj.__wbg_ptr, obj);
5053
+ return obj;
5054
+ }
5055
+ __destroy_into_raw() {
5056
+ const ptr = this.__wbg_ptr;
5057
+ this.__wbg_ptr = 0;
5058
+ GeometryQualityFinalization.unregister(this);
5059
+ return ptr;
5060
+ }
5061
+ free() {
5062
+ const ptr = this.__destroy_into_raw();
5063
+ wasm.__wbg_geometryquality_free(ptr, 0);
5064
+ }
5065
+ /**
5066
+ * Singular-value condition number of the design matrix.
5067
+ * @returns {number}
5068
+ */
5069
+ get conditionNumber() {
5070
+ const ret = wasm.geometryquality_conditionNumber(this.__wbg_ptr);
5071
+ return ret;
5072
+ }
5073
+ /**
5074
+ * Whether residuals or a propagated prior validated the covariance bound.
5075
+ * @returns {boolean}
5076
+ */
5077
+ get covarianceValidated() {
5078
+ const ret = wasm.geometryquality_covarianceValidated(this.__wbg_ptr);
5079
+ return ret !== 0;
5080
+ }
5081
+ /**
5082
+ * Geometric dilution of precision for the solved state.
5083
+ * @returns {number}
5084
+ */
5085
+ get gdop() {
5086
+ const ret = wasm.geometryquality_gdop(this.__wbg_ptr);
5087
+ return ret;
5088
+ }
5089
+ /**
5090
+ * Whether residual-based RAIM can test the solve.
5091
+ * @returns {boolean}
5092
+ */
5093
+ get raimCheckable() {
5094
+ const ret = wasm.geometryquality_raimCheckable(this.__wbg_ptr);
5095
+ return ret !== 0;
5096
+ }
5097
+ /**
5098
+ * Rank of the design matrix used by the solve.
5099
+ * @returns {number}
5100
+ */
5101
+ get rank() {
5102
+ const ret = wasm.geometryquality_rank(this.__wbg_ptr);
5103
+ return ret >>> 0;
5104
+ }
5105
+ /**
5106
+ * Observation redundancy, `nObs - nParams`.
5107
+ * @returns {number}
5108
+ */
5109
+ get redundancy() {
5110
+ const ret = wasm.geometryquality_redundancy(this.__wbg_ptr);
5111
+ return ret;
5112
+ }
5113
+ /**
5114
+ * Observability and validation tier.
5115
+ * @returns {ObservabilityTier}
5116
+ */
5117
+ get tier() {
5118
+ const ret = wasm.geometryquality_tier(this.__wbg_ptr);
5119
+ return ret;
5120
+ }
5121
+ }
5122
+ if (Symbol.dispose) GeometryQuality.prototype[Symbol.dispose] = GeometryQuality.prototype.free;
5123
+ exports.GeometryQuality = GeometryQuality;
5124
+
4801
5125
  /**
4802
5126
  * One GLONASS broadcast state-vector record. `toeUtcJ2000S` is UTC seconds past
4803
5127
  * J2000; position is PZ-90.11 ECEF metres, velocity m/s, acceleration m/s^2.
@@ -8258,6 +8582,36 @@ class ObsPhaseShift {
8258
8582
  if (Symbol.dispose) ObsPhaseShift.prototype[Symbol.dispose] = ObsPhaseShift.prototype.free;
8259
8583
  exports.ObsPhaseShift = ObsPhaseShift;
8260
8584
 
8585
+ /**
8586
+ * Observability and validation tier for an estimation design.
8587
+ *
8588
+ * `ZeroRedundancy` means the design is full rank but has no residual degrees of
8589
+ * freedom, so snapshot-solve covariance bounds are unvalidated unless a
8590
+ * propagated prior is present. `Weak` means the design exceeded the configured
8591
+ * condition-number or GDOP cutoff; the returned bounds are reported as computed
8592
+ * and are not clamped.
8593
+ * @enum {0 | 1 | 2 | 3}
8594
+ */
8595
+ const ObservabilityTier = Object.freeze({
8596
+ /**
8597
+ * At least one estimated parameter is not observable.
8598
+ */
8599
+ RankDeficient: 0, "0": "RankDeficient",
8600
+ /**
8601
+ * Full rank with no residual degrees of freedom.
8602
+ */
8603
+ ZeroRedundancy: 1, "1": "ZeroRedundancy",
8604
+ /**
8605
+ * Full rank with residual degrees of freedom, but above a cutoff.
8606
+ */
8607
+ Weak: 2, "2": "Weak",
8608
+ /**
8609
+ * Full rank and within the configured cutoffs.
8610
+ */
8611
+ Nominal: 3, "3": "Nominal",
8612
+ });
8613
+ exports.ObservabilityTier = ObservabilityTier;
8614
+
8261
8615
  /**
8262
8616
  * Optional observation-code allow-list for raw and carrier-phase rows. Build
8263
8617
  * with `new ObservationFilter()` then chain `.withSystem(system, codes)`.
@@ -10645,6 +10999,62 @@ class ParsedTleFile {
10645
10999
  if (Symbol.dispose) ParsedTleFile.prototype[Symbol.dispose] = ParsedTleFile.prototype.free;
10646
11000
  exports.ParsedTleFile = ParsedTleFile;
10647
11001
 
11002
+ /**
11003
+ * A percentile circle or sphere radius.
11004
+ */
11005
+ class PercentileRadius {
11006
+ static __wrap(ptr) {
11007
+ const obj = Object.create(PercentileRadius.prototype);
11008
+ obj.__wbg_ptr = ptr;
11009
+ PercentileRadiusFinalization.register(obj, obj.__wbg_ptr, obj);
11010
+ return obj;
11011
+ }
11012
+ __destroy_into_raw() {
11013
+ const ptr = this.__wbg_ptr;
11014
+ this.__wbg_ptr = 0;
11015
+ PercentileRadiusFinalization.unregister(this);
11016
+ return ptr;
11017
+ }
11018
+ free() {
11019
+ const ptr = this.__destroy_into_raw();
11020
+ wasm.__wbg_percentileradius_free(ptr, 0);
11021
+ }
11022
+ /**
11023
+ * Approximate named radius, metres, when applicable.
11024
+ * @returns {number}
11025
+ */
11026
+ get approxM() {
11027
+ const ret = wasm.percentileradius_approxM(this.__wbg_ptr);
11028
+ return ret;
11029
+ }
11030
+ /**
11031
+ * Whether `approxM` is valid for the covariance ratio.
11032
+ * @returns {boolean}
11033
+ */
11034
+ get approxValid() {
11035
+ const ret = wasm.percentileradius_approxValid(this.__wbg_ptr);
11036
+ return ret !== 0;
11037
+ }
11038
+ /**
11039
+ * Probability mass inside this radius.
11040
+ * @returns {number}
11041
+ */
11042
+ get probability() {
11043
+ const ret = wasm.percentileradius_probability(this.__wbg_ptr);
11044
+ return ret;
11045
+ }
11046
+ /**
11047
+ * Exact circle or sphere radius, metres.
11048
+ * @returns {number}
11049
+ */
11050
+ get radiusM() {
11051
+ const ret = wasm.percentileradius_radiusM(this.__wbg_ptr);
11052
+ return ret;
11053
+ }
11054
+ }
11055
+ if (Symbol.dispose) PercentileRadius.prototype[Symbol.dispose] = PercentileRadius.prototype.free;
11056
+ exports.PercentileRadius = PercentileRadius;
11057
+
10648
11058
  /**
10649
11059
  * A long span represented by contiguous independently-fitted reduced-orbit
10650
11060
  * segments. Carries the fitted segments and the time scale they were fitted in;
@@ -10851,34 +11261,182 @@ if (Symbol.dispose) PiecewiseOrbitSourceFit.prototype[Symbol.dispose] = Piecewis
10851
11261
  exports.PiecewiseOrbitSourceFit = PiecewiseOrbitSourceFit;
10852
11262
 
10853
11263
  /**
10854
- * Static integer-fixed PPP solution.
11264
+ * Standard position-error metrics derived from a position covariance.
10855
11265
  */
10856
- class PppFixedSolution {
11266
+ class PositionErrorMetrics {
10857
11267
  static __wrap(ptr) {
10858
- const obj = Object.create(PppFixedSolution.prototype);
11268
+ const obj = Object.create(PositionErrorMetrics.prototype);
10859
11269
  obj.__wbg_ptr = ptr;
10860
- PppFixedSolutionFinalization.register(obj, obj.__wbg_ptr, obj);
11270
+ PositionErrorMetricsFinalization.register(obj, obj.__wbg_ptr, obj);
10861
11271
  return obj;
10862
11272
  }
10863
11273
  __destroy_into_raw() {
10864
11274
  const ptr = this.__wbg_ptr;
10865
11275
  this.__wbg_ptr = 0;
10866
- PppFixedSolutionFinalization.unregister(this);
11276
+ PositionErrorMetricsFinalization.unregister(this);
10867
11277
  return ptr;
10868
11278
  }
10869
11279
  free() {
10870
11280
  const ptr = this.__destroy_into_raw();
10871
- wasm.__wbg_pppfixedsolution_free(ptr, 0);
11281
+ wasm.__wbg_positionerrormetrics_free(ptr, 0);
11282
+ }
11283
+ /**
11284
+ * Horizontal 50 percent circle radius.
11285
+ * @returns {PercentileRadius}
11286
+ */
11287
+ get cepM() {
11288
+ const ret = wasm.positionerrormetrics_cepM(this.__wbg_ptr);
11289
+ return PercentileRadius.__wrap(ret);
10872
11290
  }
10873
11291
  /**
11292
+ * Distance root mean square, metres.
10874
11293
  * @returns {number}
10875
11294
  */
10876
- get codeRmsM() {
10877
- const ret = wasm.pppfixedsolution_codeRmsM(this.__wbg_ptr);
11295
+ get drmsM() {
11296
+ const ret = wasm.positionerrormetrics_drmsM(this.__wbg_ptr);
10878
11297
  return ret;
10879
11298
  }
10880
11299
  /**
10881
- * @returns {boolean}
11300
+ * Horizontal one-sigma covariance ellipse.
11301
+ * @returns {ErrorEllipse}
11302
+ */
11303
+ get ellipse() {
11304
+ const ret = wasm.positionerrormetrics_ellipse(this.__wbg_ptr);
11305
+ return ErrorEllipse.__wrap(ret);
11306
+ }
11307
+ /**
11308
+ * Mean radial spherical error, metres.
11309
+ * @returns {number}
11310
+ */
11311
+ get mrseM() {
11312
+ const ret = wasm.positionerrormetrics_mrseM(this.__wbg_ptr);
11313
+ return ret;
11314
+ }
11315
+ /**
11316
+ * Horizontal 95 percent circle radius.
11317
+ * @returns {PercentileRadius}
11318
+ */
11319
+ get r95M() {
11320
+ const ret = wasm.positionerrormetrics_r95M(this.__wbg_ptr);
11321
+ return PercentileRadius.__wrap(ret);
11322
+ }
11323
+ /**
11324
+ * Horizontal 99 percent circle radius.
11325
+ * @returns {PercentileRadius}
11326
+ */
11327
+ get r99M() {
11328
+ const ret = wasm.positionerrormetrics_r99M(this.__wbg_ptr);
11329
+ return PercentileRadius.__wrap(ret);
11330
+ }
11331
+ /**
11332
+ * Three-dimensional 50 percent sphere radius.
11333
+ * @returns {PercentileRadius}
11334
+ */
11335
+ get sepM() {
11336
+ const ret = wasm.positionerrormetrics_sepM(this.__wbg_ptr);
11337
+ return PercentileRadius.__wrap(ret);
11338
+ }
11339
+ /**
11340
+ * East standard deviation, metres.
11341
+ * @returns {number}
11342
+ */
11343
+ get sigmaEM() {
11344
+ const ret = wasm.positionerrormetrics_sigmaEM(this.__wbg_ptr);
11345
+ return ret;
11346
+ }
11347
+ /**
11348
+ * North standard deviation, metres.
11349
+ * @returns {number}
11350
+ */
11351
+ get sigmaNM() {
11352
+ const ret = wasm.positionerrormetrics_sigmaNM(this.__wbg_ptr);
11353
+ return ret;
11354
+ }
11355
+ /**
11356
+ * Up standard deviation, metres.
11357
+ * @returns {number}
11358
+ */
11359
+ get sigmaUM() {
11360
+ const ret = wasm.positionerrormetrics_sigmaUM(this.__wbg_ptr);
11361
+ return ret;
11362
+ }
11363
+ /**
11364
+ * Two times distance root mean square, metres.
11365
+ * @returns {number}
11366
+ */
11367
+ get twoDrmsM() {
11368
+ const ret = wasm.positionerrormetrics_twoDrmsM(this.__wbg_ptr);
11369
+ return ret;
11370
+ }
11371
+ /**
11372
+ * Vertical 50 percent one-dimensional radius, metres.
11373
+ * @returns {number}
11374
+ */
11375
+ get vepM() {
11376
+ const ret = wasm.positionerrormetrics_vepM(this.__wbg_ptr);
11377
+ return ret;
11378
+ }
11379
+ }
11380
+ if (Symbol.dispose) PositionErrorMetrics.prototype[Symbol.dispose] = PositionErrorMetrics.prototype.free;
11381
+ exports.PositionErrorMetrics = PositionErrorMetrics;
11382
+
11383
+ /**
11384
+ * IEEE 1139 fractional-frequency PSD power-law noise type.
11385
+ * @enum {0 | 1 | 2 | 3 | 4}
11386
+ */
11387
+ const PowerLawNoiseType = Object.freeze({
11388
+ /**
11389
+ * Random-walk frequency modulation, `S_y(f) = h_-2 f^-2`.
11390
+ */
11391
+ RandomWalkFM: 0, "0": "RandomWalkFM",
11392
+ /**
11393
+ * Flicker frequency modulation, `S_y(f) = h_-1 f^-1`.
11394
+ */
11395
+ FlickerFM: 1, "1": "FlickerFM",
11396
+ /**
11397
+ * White frequency modulation, `S_y(f) = h_0`.
11398
+ */
11399
+ WhiteFM: 2, "2": "WhiteFM",
11400
+ /**
11401
+ * Flicker phase modulation, `S_y(f) = h_1 f`.
11402
+ */
11403
+ FlickerPM: 3, "3": "FlickerPM",
11404
+ /**
11405
+ * White phase modulation, `S_y(f) = h_2 f^2`.
11406
+ */
11407
+ WhitePM: 4, "4": "WhitePM",
11408
+ });
11409
+ exports.PowerLawNoiseType = PowerLawNoiseType;
11410
+
11411
+ /**
11412
+ * Static integer-fixed PPP solution.
11413
+ */
11414
+ class PppFixedSolution {
11415
+ static __wrap(ptr) {
11416
+ const obj = Object.create(PppFixedSolution.prototype);
11417
+ obj.__wbg_ptr = ptr;
11418
+ PppFixedSolutionFinalization.register(obj, obj.__wbg_ptr, obj);
11419
+ return obj;
11420
+ }
11421
+ __destroy_into_raw() {
11422
+ const ptr = this.__wbg_ptr;
11423
+ this.__wbg_ptr = 0;
11424
+ PppFixedSolutionFinalization.unregister(this);
11425
+ return ptr;
11426
+ }
11427
+ free() {
11428
+ const ptr = this.__destroy_into_raw();
11429
+ wasm.__wbg_pppfixedsolution_free(ptr, 0);
11430
+ }
11431
+ /**
11432
+ * @returns {number}
11433
+ */
11434
+ get codeRmsM() {
11435
+ const ret = wasm.pppfixedsolution_codeRmsM(this.__wbg_ptr);
11436
+ return ret;
11437
+ }
11438
+ /**
11439
+ * @returns {boolean}
10882
11440
  */
10883
11441
  get converged() {
10884
11442
  const ret = wasm.pppfixedsolution_converged(this.__wbg_ptr);
@@ -12557,6 +13115,15 @@ class RtkFixedSolution {
12557
13115
  wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
12558
13116
  return v1;
12559
13117
  }
13118
+ /**
13119
+ * Geometry observability and covariance-validation diagnostics for the
13120
+ * float design used by the integer-fixed solve.
13121
+ * @returns {GeometryQuality}
13122
+ */
13123
+ get geometryQuality() {
13124
+ const ret = wasm.rtkfixedsolution_geometryQuality(this.__wbg_ptr);
13125
+ return GeometryQuality.__wrap(ret);
13126
+ }
12560
13127
  /**
12561
13128
  * @returns {number}
12562
13129
  */
@@ -12588,6 +13155,24 @@ class RtkFixedSolution {
12588
13155
  wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
12589
13156
  }
12590
13157
  }
13158
+ /**
13159
+ * Whether residual-based RAIM can test the float design used by the
13160
+ * integer-fixed solve.
13161
+ * @returns {boolean}
13162
+ */
13163
+ get raimCheckable() {
13164
+ const ret = wasm.rtkfixedsolution_raimCheckable(this.__wbg_ptr);
13165
+ return ret !== 0;
13166
+ }
13167
+ /**
13168
+ * Observation redundancy, `nObs - nParams`, for the float design used by
13169
+ * the integer-fixed solve.
13170
+ * @returns {number}
13171
+ */
13172
+ get redundancy() {
13173
+ const ret = wasm.rtkfixedsolution_redundancy(this.__wbg_ptr);
13174
+ return ret;
13175
+ }
12591
13176
  }
12592
13177
  if (Symbol.dispose) RtkFixedSolution.prototype[Symbol.dispose] = RtkFixedSolution.prototype.free;
12593
13178
  exports.RtkFixedSolution = RtkFixedSolution;
@@ -12644,6 +13229,17 @@ class RtkFloatSolution {
12644
13229
  const ret = wasm.rtkfloatsolution_converged(this.__wbg_ptr);
12645
13230
  return ret !== 0;
12646
13231
  }
13232
+ /**
13233
+ * Geometry observability and covariance-validation diagnostics for the
13234
+ * final double-difference design. `ZeroRedundancy` bounds are unvalidated
13235
+ * for snapshot solves, `Weak` bounds are unclamped, and rank-deficient
13236
+ * designs are returned as a singular-geometry `Error`.
13237
+ * @returns {GeometryQuality}
13238
+ */
13239
+ get geometryQuality() {
13240
+ const ret = wasm.rtkfloatsolution_geometryQuality(this.__wbg_ptr);
13241
+ return GeometryQuality.__wrap(ret);
13242
+ }
12647
13243
  /**
12648
13244
  * @returns {number}
12649
13245
  */
@@ -12665,6 +13261,22 @@ class RtkFloatSolution {
12665
13261
  const ret = wasm.rtkfloatsolution_phaseRmsM(this.__wbg_ptr);
12666
13262
  return ret;
12667
13263
  }
13264
+ /**
13265
+ * Whether residual-based RAIM can test the float design.
13266
+ * @returns {boolean}
13267
+ */
13268
+ get raimCheckable() {
13269
+ const ret = wasm.rtkfloatsolution_raimCheckable(this.__wbg_ptr);
13270
+ return ret !== 0;
13271
+ }
13272
+ /**
13273
+ * Observation redundancy, `nObs - nParams`, for the float design.
13274
+ * @returns {number}
13275
+ */
13276
+ get redundancy() {
13277
+ const ret = wasm.rtkfloatsolution_redundancy(this.__wbg_ptr);
13278
+ return ret;
13279
+ }
12668
13280
  /**
12669
13281
  * @returns {number}
12670
13282
  */
@@ -12974,6 +13586,396 @@ class SbasCorrectionStore {
12974
13586
  if (Symbol.dispose) SbasCorrectionStore.prototype[Symbol.dispose] = SbasCorrectionStore.prototype.free;
12975
13587
  exports.SbasCorrectionStore = SbasCorrectionStore;
12976
13588
 
13589
+ /**
13590
+ * Index-aligned SBAS error model for protection-level geometry rows.
13591
+ */
13592
+ class SbasErrorModel {
13593
+ static __wrap(ptr) {
13594
+ const obj = Object.create(SbasErrorModel.prototype);
13595
+ obj.__wbg_ptr = ptr;
13596
+ SbasErrorModelFinalization.register(obj, obj.__wbg_ptr, obj);
13597
+ return obj;
13598
+ }
13599
+ __destroy_into_raw() {
13600
+ const ptr = this.__wbg_ptr;
13601
+ this.__wbg_ptr = 0;
13602
+ SbasErrorModelFinalization.unregister(this);
13603
+ return ptr;
13604
+ }
13605
+ free() {
13606
+ const ptr = this.__destroy_into_raw();
13607
+ wasm.__wbg_sbaserrormodel_free(ptr, 0);
13608
+ }
13609
+ /**
13610
+ * Build an SBAS error model from a decoded correction store.
13611
+ *
13612
+ * `geo` is an SBAS satellite token, `geometry` is protection geometry, and
13613
+ * `epochJ2000S` is the receive epoch used for freshness checks. Omit
13614
+ * `airborne` or `degradation` to use their defaults.
13615
+ * @param {SbasCorrectionStore} store
13616
+ * @param {string} geo
13617
+ * @param {any} geometry
13618
+ * @param {AirborneModel | null | undefined} airborne
13619
+ * @param {number} epoch_j2000_s
13620
+ * @param {DegradationParams | null} [degradation]
13621
+ * @returns {SbasErrorModel}
13622
+ */
13623
+ static fromStore(store, geo, geometry, airborne, epoch_j2000_s, degradation) {
13624
+ _assertClass(store, SbasCorrectionStore);
13625
+ const ptr0 = passStringToWasm0(geo, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
13626
+ const len0 = WASM_VECTOR_LEN;
13627
+ let ptr1 = 0;
13628
+ if (!isLikeNone(airborne)) {
13629
+ _assertClass(airborne, AirborneModel);
13630
+ ptr1 = airborne.__destroy_into_raw();
13631
+ }
13632
+ let ptr2 = 0;
13633
+ if (!isLikeNone(degradation)) {
13634
+ _assertClass(degradation, DegradationParams);
13635
+ ptr2 = degradation.__destroy_into_raw();
13636
+ }
13637
+ const ret = wasm.sbaserrormodel_fromStore(store.__wbg_ptr, ptr0, len0, geometry, ptr1, epoch_j2000_s, ptr2);
13638
+ if (ret[2]) {
13639
+ throw takeFromExternrefTable0(ret[1]);
13640
+ }
13641
+ return SbasErrorModel.__wrap(ret[0]);
13642
+ }
13643
+ /**
13644
+ * Construct an SBAS error model from rows.
13645
+ *
13646
+ * `rows` is an array of `{ id, sigmaFltM, sigmaUireM?, sigmaAirM?,
13647
+ * sigmaTropoM? }` objects. As a shorthand, a row may provide only
13648
+ * `{ id, sigmaM }`, which is stored as the total one-sigma range term.
13649
+ * @param {any} rows
13650
+ */
13651
+ constructor(rows) {
13652
+ const ret = wasm.sbaserrormodel_new(rows);
13653
+ if (ret[2]) {
13654
+ throw takeFromExternrefTable0(ret[1]);
13655
+ }
13656
+ this.__wbg_ptr = ret[0];
13657
+ SbasErrorModelFinalization.register(this, this.__wbg_ptr, this);
13658
+ return this;
13659
+ }
13660
+ /**
13661
+ * Number of range-error rows in the model.
13662
+ * @returns {number}
13663
+ */
13664
+ get rowCount() {
13665
+ const ret = wasm.sbaserrormodel_rowCount(this.__wbg_ptr);
13666
+ return ret >>> 0;
13667
+ }
13668
+ /**
13669
+ * Return the row for a satellite token, or `undefined` if it is absent.
13670
+ * @param {string} id
13671
+ * @returns {SbasSisError | undefined}
13672
+ */
13673
+ rowFor(id) {
13674
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
13675
+ const len0 = WASM_VECTOR_LEN;
13676
+ const ret = wasm.sbaserrormodel_rowFor(this.__wbg_ptr, ptr0, len0);
13677
+ if (ret[2]) {
13678
+ throw takeFromExternrefTable0(ret[1]);
13679
+ }
13680
+ return ret[0] === 0 ? undefined : SbasSisError.__wrap(ret[0]);
13681
+ }
13682
+ /**
13683
+ * Error-model rows as plain objects.
13684
+ * @returns {any}
13685
+ */
13686
+ get rows() {
13687
+ const ret = wasm.sbaserrormodel_rows(this.__wbg_ptr);
13688
+ if (ret[2]) {
13689
+ throw takeFromExternrefTable0(ret[1]);
13690
+ }
13691
+ return takeFromExternrefTable0(ret[0]);
13692
+ }
13693
+ }
13694
+ if (Symbol.dispose) SbasErrorModel.prototype[Symbol.dispose] = SbasErrorModel.prototype.free;
13695
+ exports.SbasErrorModel = SbasErrorModel;
13696
+
13697
+ /**
13698
+ * Fixed SBAS protection-level multipliers.
13699
+ */
13700
+ class SbasKMultipliers {
13701
+ static __wrap(ptr) {
13702
+ const obj = Object.create(SbasKMultipliers.prototype);
13703
+ obj.__wbg_ptr = ptr;
13704
+ SbasKMultipliersFinalization.register(obj, obj.__wbg_ptr, obj);
13705
+ return obj;
13706
+ }
13707
+ __destroy_into_raw() {
13708
+ const ptr = this.__wbg_ptr;
13709
+ this.__wbg_ptr = 0;
13710
+ SbasKMultipliersFinalization.unregister(this);
13711
+ return ptr;
13712
+ }
13713
+ free() {
13714
+ const ptr = this.__destroy_into_raw();
13715
+ wasm.__wbg_sbaskmultipliers_free(ptr, 0);
13716
+ }
13717
+ /**
13718
+ * En-route through non-precision-approach SBAS K multipliers.
13719
+ * @returns {SbasKMultipliers}
13720
+ */
13721
+ static enRouteNpa() {
13722
+ const ret = wasm.sbaskmultipliers_enRouteNpa();
13723
+ return SbasKMultipliers.__wrap(ret);
13724
+ }
13725
+ /**
13726
+ * Horizontal K multiplier.
13727
+ * @returns {number}
13728
+ */
13729
+ get kH() {
13730
+ const ret = wasm.sbaskmultipliers_kH(this.__wbg_ptr);
13731
+ return ret;
13732
+ }
13733
+ /**
13734
+ * Vertical K multiplier.
13735
+ * @returns {number}
13736
+ */
13737
+ get kV() {
13738
+ const ret = wasm.sbaskmultipliers_kV(this.__wbg_ptr);
13739
+ return ret;
13740
+ }
13741
+ /**
13742
+ * Construct SBAS horizontal and vertical K multipliers.
13743
+ *
13744
+ * Both values must be positive finite numbers.
13745
+ * @param {number} k_h
13746
+ * @param {number} k_v
13747
+ */
13748
+ constructor(k_h, k_v) {
13749
+ const ret = wasm.sbaskmultipliers_new(k_h, k_v);
13750
+ if (ret[2]) {
13751
+ throw takeFromExternrefTable0(ret[1]);
13752
+ }
13753
+ this.__wbg_ptr = ret[0];
13754
+ SbasKMultipliersFinalization.register(this, this.__wbg_ptr, this);
13755
+ return this;
13756
+ }
13757
+ /**
13758
+ * Precision-approach SBAS K multipliers.
13759
+ * @returns {SbasKMultipliers}
13760
+ */
13761
+ static precisionApproach() {
13762
+ const ret = wasm.sbaskmultipliers_precisionApproach();
13763
+ return SbasKMultipliers.__wrap(ret);
13764
+ }
13765
+ }
13766
+ if (Symbol.dispose) SbasKMultipliers.prototype[Symbol.dispose] = SbasKMultipliers.prototype.free;
13767
+ exports.SbasKMultipliers = SbasKMultipliers;
13768
+
13769
+ /**
13770
+ * SBAS protection-level input or numerical failure.
13771
+ * @enum {0 | 1 | 2}
13772
+ */
13773
+ const SbasPlError = Object.freeze({
13774
+ /**
13775
+ * The geometry lacks enough independent rows for the active clocks.
13776
+ */
13777
+ InsufficientGeometry: 0, "0": "InsufficientGeometry",
13778
+ /**
13779
+ * Matrix projection or covariance processing failed.
13780
+ */
13781
+ NumericalFailure: 1, "1": "NumericalFailure",
13782
+ /**
13783
+ * The supplied error model or K multipliers are outside their domain.
13784
+ */
13785
+ InvalidErrorModel: 2, "2": "InvalidErrorModel",
13786
+ });
13787
+ exports.SbasPlError = SbasPlError;
13788
+
13789
+ /**
13790
+ * SBAS protection-level output for one geometry snapshot.
13791
+ */
13792
+ class SbasProtection {
13793
+ static __wrap(ptr) {
13794
+ const obj = Object.create(SbasProtection.prototype);
13795
+ obj.__wbg_ptr = ptr;
13796
+ SbasProtectionFinalization.register(obj, obj.__wbg_ptr, obj);
13797
+ return obj;
13798
+ }
13799
+ __destroy_into_raw() {
13800
+ const ptr = this.__wbg_ptr;
13801
+ this.__wbg_ptr = 0;
13802
+ SbasProtectionFinalization.unregister(this);
13803
+ return ptr;
13804
+ }
13805
+ free() {
13806
+ const ptr = this.__destroy_into_raw();
13807
+ wasm.__wbg_sbasprotection_free(ptr, 0);
13808
+ }
13809
+ /**
13810
+ * East one-sigma standard deviation, metres.
13811
+ * @returns {number}
13812
+ */
13813
+ get dEastM() {
13814
+ const ret = wasm.sbasprotection_dEastM(this.__wbg_ptr);
13815
+ return ret;
13816
+ }
13817
+ /**
13818
+ * East-north covariance term, square metres.
13819
+ * @returns {number}
13820
+ */
13821
+ get dEnM2() {
13822
+ const ret = wasm.sbasprotection_dEnM2(this.__wbg_ptr);
13823
+ return ret;
13824
+ }
13825
+ /**
13826
+ * Horizontal one-sigma semi-major axis, metres.
13827
+ * @returns {number}
13828
+ */
13829
+ get dMajorM() {
13830
+ const ret = wasm.sbasprotection_dMajorM(this.__wbg_ptr);
13831
+ return ret;
13832
+ }
13833
+ /**
13834
+ * North one-sigma standard deviation, metres.
13835
+ * @returns {number}
13836
+ */
13837
+ get dNorthM() {
13838
+ const ret = wasm.sbasprotection_dNorthM(this.__wbg_ptr);
13839
+ return ret;
13840
+ }
13841
+ /**
13842
+ * Horizontal protection level, metres.
13843
+ * @returns {number}
13844
+ */
13845
+ get hplM() {
13846
+ const ret = wasm.sbasprotection_hplM(this.__wbg_ptr);
13847
+ return ret;
13848
+ }
13849
+ /**
13850
+ * Vertical one-sigma standard deviation, metres.
13851
+ * @returns {number}
13852
+ */
13853
+ get sigmaUM() {
13854
+ const ret = wasm.sbasprotection_sigmaUM(this.__wbg_ptr);
13855
+ return ret;
13856
+ }
13857
+ /**
13858
+ * Vertical protection level, metres.
13859
+ * @returns {number}
13860
+ */
13861
+ get vplM() {
13862
+ const ret = wasm.sbasprotection_vplM(this.__wbg_ptr);
13863
+ return ret;
13864
+ }
13865
+ }
13866
+ if (Symbol.dispose) SbasProtection.prototype[Symbol.dispose] = SbasProtection.prototype.free;
13867
+ exports.SbasProtection = SbasProtection;
13868
+
13869
+ /**
13870
+ * One satellite's SBAS one-sigma range-error budget.
13871
+ */
13872
+ class SbasSisError {
13873
+ static __wrap(ptr) {
13874
+ const obj = Object.create(SbasSisError.prototype);
13875
+ obj.__wbg_ptr = ptr;
13876
+ SbasSisErrorFinalization.register(obj, obj.__wbg_ptr, obj);
13877
+ return obj;
13878
+ }
13879
+ __destroy_into_raw() {
13880
+ const ptr = this.__wbg_ptr;
13881
+ this.__wbg_ptr = 0;
13882
+ SbasSisErrorFinalization.unregister(this);
13883
+ return ptr;
13884
+ }
13885
+ free() {
13886
+ const ptr = this.__destroy_into_raw();
13887
+ wasm.__wbg_sbassiserror_free(ptr, 0);
13888
+ }
13889
+ /**
13890
+ * Satellite token for this range-error row.
13891
+ * @returns {string}
13892
+ */
13893
+ get id() {
13894
+ let deferred1_0;
13895
+ let deferred1_1;
13896
+ try {
13897
+ const ret = wasm.sbassiserror_id(this.__wbg_ptr);
13898
+ deferred1_0 = ret[0];
13899
+ deferred1_1 = ret[1];
13900
+ return getStringFromWasm0(ret[0], ret[1]);
13901
+ } finally {
13902
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
13903
+ }
13904
+ }
13905
+ /**
13906
+ * Construct one SBAS range-error row.
13907
+ *
13908
+ * Component sigmas are metres. They are combined by root-sum-square when
13909
+ * the model is evaluated.
13910
+ * @param {string} id
13911
+ * @param {number} sigma_flt_m
13912
+ * @param {number} sigma_uire_m
13913
+ * @param {number} sigma_air_m
13914
+ * @param {number} sigma_tropo_m
13915
+ */
13916
+ constructor(id, sigma_flt_m, sigma_uire_m, sigma_air_m, sigma_tropo_m) {
13917
+ const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
13918
+ const len0 = WASM_VECTOR_LEN;
13919
+ const ret = wasm.sbassiserror_new(ptr0, len0, sigma_flt_m, sigma_uire_m, sigma_air_m, sigma_tropo_m);
13920
+ if (ret[2]) {
13921
+ throw takeFromExternrefTable0(ret[1]);
13922
+ }
13923
+ this.__wbg_ptr = ret[0];
13924
+ SbasSisErrorFinalization.register(this, this.__wbg_ptr, this);
13925
+ return this;
13926
+ }
13927
+ /**
13928
+ * Airborne receiver noise, divergence, and multipath sigma, metres.
13929
+ * @returns {number}
13930
+ */
13931
+ get sigmaAirM() {
13932
+ const ret = wasm.sbassiserror_sigmaAirM(this.__wbg_ptr);
13933
+ return ret;
13934
+ }
13935
+ /**
13936
+ * Fast and long-term correction residual sigma, metres.
13937
+ * @returns {number}
13938
+ */
13939
+ get sigmaFltM() {
13940
+ const ret = wasm.sbassiserror_sigmaFltM(this.__wbg_ptr);
13941
+ return ret;
13942
+ }
13943
+ /**
13944
+ * Total one-sigma range error, metres, or `null` if invalid.
13945
+ * @returns {any}
13946
+ */
13947
+ sigmaM() {
13948
+ const ret = wasm.sbassiserror_sigmaM(this.__wbg_ptr);
13949
+ return ret;
13950
+ }
13951
+ /**
13952
+ * Tropospheric residual sigma, metres.
13953
+ * @returns {number}
13954
+ */
13955
+ get sigmaTropoM() {
13956
+ const ret = wasm.sbassiserror_sigmaTropoM(this.__wbg_ptr);
13957
+ return ret;
13958
+ }
13959
+ /**
13960
+ * User ionospheric range-error sigma, metres.
13961
+ * @returns {number}
13962
+ */
13963
+ get sigmaUireM() {
13964
+ const ret = wasm.sbassiserror_sigmaUireM(this.__wbg_ptr);
13965
+ return ret;
13966
+ }
13967
+ /**
13968
+ * Sum-of-squares range variance, square metres, or `null` if invalid.
13969
+ * @returns {any}
13970
+ */
13971
+ varianceM2() {
13972
+ const ret = wasm.sbassiserror_varianceM2(this.__wbg_ptr);
13973
+ return ret;
13974
+ }
13975
+ }
13976
+ if (Symbol.dispose) SbasSisError.prototype[Symbol.dispose] = SbasSisError.prototype.free;
13977
+ exports.SbasSisError = SbasSisError;
13978
+
12977
13979
  /**
12978
13980
  * Per-constellation single-frequency pseudorange code-selection policy. Build
12979
13981
  * with `new SignalPolicy()` then chain `.withSystem(system, codes)`, or use
@@ -14717,6 +15719,17 @@ class SppSolution {
14717
15719
  }
14718
15720
  return v1;
14719
15721
  }
15722
+ /**
15723
+ * Geometry observability and covariance-validation diagnostics for this
15724
+ * solved design. `ZeroRedundancy` marks unvalidated snapshot covariance
15725
+ * bounds, `Weak` leaves large bounds unclamped, and rank-deficient designs
15726
+ * are returned as a singular-geometry `Error` rather than a solution.
15727
+ * @returns {GeometryQuality}
15728
+ */
15729
+ get geometryQuality() {
15730
+ const ret = wasm.sppsolution_geometryQuality(this.__wbg_ptr);
15731
+ return GeometryQuality.__wrap(ret);
15732
+ }
14720
15733
  /**
14721
15734
  * ECEF position as a `Float64Array` `[x, y, z]`, metres.
14722
15735
  * @returns {Float64Array}
@@ -14727,6 +15740,22 @@ class SppSolution {
14727
15740
  wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
14728
15741
  return v1;
14729
15742
  }
15743
+ /**
15744
+ * Whether residual-based RAIM can test the accepted solve.
15745
+ * @returns {boolean}
15746
+ */
15747
+ get raimCheckable() {
15748
+ const ret = wasm.sppsolution_raimCheckable(this.__wbg_ptr);
15749
+ return ret !== 0;
15750
+ }
15751
+ /**
15752
+ * Degrees of freedom in the accepted solve: `usedCount - (3 + clocks)`.
15753
+ * @returns {number}
15754
+ */
15755
+ get redundancy() {
15756
+ const ret = wasm.sppsolution_redundancy(this.__wbg_ptr);
15757
+ return ret;
15758
+ }
14730
15759
  /**
14731
15760
  * Post-fit residuals, metres, index-aligned to `usedSats`.
14732
15761
  * @returns {Float64Array}
@@ -15528,6 +16557,9 @@ class Tle {
15528
16557
  */
15529
16558
  toLines() {
15530
16559
  const ret = wasm.tle_toLines(this.__wbg_ptr);
16560
+ if (ret[3]) {
16561
+ throw takeFromExternrefTable0(ret[2]);
16562
+ }
15531
16563
  var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
15532
16564
  wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
15533
16565
  return v1;
@@ -16182,6 +17214,28 @@ function allanDeviation(series, tau0_s, averaging_factors) {
16182
17214
  }
16183
17215
  exports.allanDeviation = allanDeviation;
16184
17216
 
17217
+ /**
17218
+ * Exact ADEV log-log slope for a power-law noise type.
17219
+ * @param {PowerLawNoiseType} noise_type
17220
+ * @returns {number}
17221
+ */
17222
+ function allanDeviationPowerLawSlope(noise_type) {
17223
+ const ret = wasm.allanDeviationPowerLawSlope(noise_type);
17224
+ return ret;
17225
+ }
17226
+ exports.allanDeviationPowerLawSlope = allanDeviationPowerLawSlope;
17227
+
17228
+ /**
17229
+ * Exact Allan-variance tau exponent for a power-law noise type.
17230
+ * @param {PowerLawNoiseType} noise_type
17231
+ * @returns {number}
17232
+ */
17233
+ function allanVariancePowerLawTauExponent(noise_type) {
17234
+ const ret = wasm.allanVariancePowerLawTauExponent(noise_type);
17235
+ return ret;
17236
+ }
17237
+ exports.allanVariancePowerLawTauExponent = allanVariancePowerLawTauExponent;
17238
+
16185
17239
  /**
16186
17240
  * Alpha-beta measurement update applied to a predicted scalar state.
16187
17241
  *
@@ -17150,6 +18204,24 @@ function detectCycleSlips(arc, options) {
17150
18204
  }
17151
18205
  exports.detectCycleSlips = detectCycleSlips;
17152
18206
 
18207
+ /**
18208
+ * Detect candidate displacement steps in a station position series.
18209
+ *
18210
+ * `options` may set `windowYears`, `scoreThreshold`, `minOffsetM`,
18211
+ * `minSamplesEachSide`, `minSeparationYears`, and nested `midas` controls.
18212
+ * @param {any} series
18213
+ * @param {any} options
18214
+ * @returns {any}
18215
+ */
18216
+ function detectSteps(series, options) {
18217
+ const ret = wasm.detectSteps(series, options);
18218
+ if (ret[2]) {
18219
+ throw takeFromExternrefTable0(ret[1]);
18220
+ }
18221
+ return takeFromExternrefTable0(ret[0]);
18222
+ }
18223
+ exports.detectSteps = detectSteps;
18224
+
17153
18225
  /**
17154
18226
  * Apply base pseudorange corrections to rover observations by satellite token.
17155
18227
  *
@@ -17989,6 +19061,49 @@ function fitPiecewiseReducedOrbitTle(tle, options) {
17989
19061
  }
17990
19062
  exports.fitPiecewiseReducedOrbitTle = fitPiecewiseReducedOrbitTle;
17991
19063
 
19064
+ /**
19065
+ * Identify power-law clock-noise regions from ADEV and MDEV curves.
19066
+ *
19067
+ * `adev` and `mdev` are `{ tauS, deviation, n }` objects, matching the output
19068
+ * from the Allan-family functions. `options` may set `basicTauS`,
19069
+ * `measurementBandwidthHz`, `minPointsPerOctave`, `slopeTolerance`, and
19070
+ * `scatterTolerance`.
19071
+ * @param {any} adev
19072
+ * @param {any} mdev
19073
+ * @param {any} options
19074
+ * @returns {any}
19075
+ */
19076
+ function fitPowerLawNoise(adev, mdev, options) {
19077
+ const ret = wasm.fitPowerLawNoise(adev, mdev, options);
19078
+ if (ret[2]) {
19079
+ throw takeFromExternrefTable0(ret[1]);
19080
+ }
19081
+ return takeFromExternrefTable0(ret[0]);
19082
+ }
19083
+ exports.fitPowerLawNoise = fitPowerLawNoise;
19084
+
19085
+ /**
19086
+ * Fit one satellite orbit from caller-supplied precise ephemeris samples.
19087
+ *
19088
+ * `samples` is the same array accepted by `preciseEphemerisSamplesFromSamples`:
19089
+ * `{ sat, epoch, positionEcefM, clockS?, clockEvent? }` with epochs in seconds
19090
+ * since J2000.
19091
+ * @param {any} samples
19092
+ * @param {string} satellite
19093
+ * @param {any} options
19094
+ * @returns {any}
19095
+ */
19096
+ function fitPreciseEphemerisSampleOrbit(samples, satellite, options) {
19097
+ const ptr0 = passStringToWasm0(satellite, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
19098
+ const len0 = WASM_VECTOR_LEN;
19099
+ const ret = wasm.fitPreciseEphemerisSampleOrbit(samples, ptr0, len0, options);
19100
+ if (ret[2]) {
19101
+ throw takeFromExternrefTable0(ret[1]);
19102
+ }
19103
+ return takeFromExternrefTable0(ret[0]);
19104
+ }
19105
+ exports.fitPreciseEphemerisSampleOrbit = fitPreciseEphemerisSampleOrbit;
19106
+
17992
19107
  /**
17993
19108
  * Fit a reduced-orbit model to ECEF position samples.
17994
19109
  *
@@ -18053,6 +19168,29 @@ function fitReducedOrbitTle(tle, options) {
18053
19168
  }
18054
19169
  exports.fitReducedOrbitTle = fitReducedOrbitTle;
18055
19170
 
19171
+ /**
19172
+ * Fit one satellite orbit from a parsed SP3 precise product.
19173
+ *
19174
+ * `satellite` is an IGS token such as `"G01"`. `options` may set
19175
+ * `forceModel`, `integrator`, `integratorOptions`, `solverOptions`,
19176
+ * `linearSolve`, `minLedgerSamples`, and `drag`.
19177
+ * @param {Sp3} sp3
19178
+ * @param {string} satellite
19179
+ * @param {any} options
19180
+ * @returns {any}
19181
+ */
19182
+ function fitSp3PreciseOrbit(sp3, satellite, options) {
19183
+ _assertClass(sp3, Sp3);
19184
+ const ptr0 = passStringToWasm0(satellite, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
19185
+ const len0 = WASM_VECTOR_LEN;
19186
+ const ret = wasm.fitSp3PreciseOrbit(sp3.__wbg_ptr, ptr0, len0, options);
19187
+ if (ret[2]) {
19188
+ throw takeFromExternrefTable0(ret[1]);
19189
+ }
19190
+ return takeFromExternrefTable0(ret[0]);
19191
+ }
19192
+ exports.fitSp3PreciseOrbit = fitSp3PreciseOrbit;
19193
+
18056
19194
  /**
18057
19195
  * Fit SGP4 mean elements and optional B* to TEME state samples.
18058
19196
  * @param {any} samples
@@ -18068,6 +19206,26 @@ function fitTle(samples, config) {
18068
19206
  }
18069
19207
  exports.fitTle = fitTle;
18070
19208
 
19209
+ /**
19210
+ * Fit a geodetic trajectory model with velocity, seasonal, and step terms.
19211
+ *
19212
+ * `model` may set `referenceEpochYear`, `includeAnnual`,
19213
+ * `includeSemiannual`, and `offsetEpochsYear`. `options` may set `loss`,
19214
+ * `fScaleM`, and `maxNfev`.
19215
+ * @param {any} series
19216
+ * @param {any} model
19217
+ * @param {any} options
19218
+ * @returns {any}
19219
+ */
19220
+ function fitTrajectory(series, model, options) {
19221
+ const ret = wasm.fitTrajectory(series, model, options);
19222
+ if (ret[2]) {
19223
+ throw takeFromExternrefTable0(ret[1]);
19224
+ }
19225
+ return takeFromExternrefTable0(ret[0]);
19226
+ }
19227
+ exports.fitTrajectory = fitTrajectory;
19228
+
18071
19229
  /**
18072
19230
  * Fix Melbourne-Wubbena wide-lane ambiguities over a dual-frequency RTK arc.
18073
19231
  *
@@ -19863,6 +21021,54 @@ function meridianTransitsSpk(spk, body, station, start_unix_us, end_unix_us, ste
19863
21021
  }
19864
21022
  exports.meridianTransitsSpk = meridianTransitsSpk;
19865
21023
 
21024
+ /**
21025
+ * Rotate an ECEF covariance to ENU and compute position-error metrics.
21026
+ *
21027
+ * `receiver` is `{ latRad, lonRad, heightM? }` with radians and metres.
21028
+ * @param {any} covariance_ecef_m2
21029
+ * @param {any} receiver
21030
+ * @returns {PositionErrorMetrics}
21031
+ */
21032
+ function metricsFromEcefCovarianceM2(covariance_ecef_m2, receiver) {
21033
+ const ret = wasm.metricsFromEcefCovarianceM2(covariance_ecef_m2, receiver);
21034
+ if (ret[2]) {
21035
+ throw takeFromExternrefTable0(ret[1]);
21036
+ }
21037
+ return PositionErrorMetrics.__wrap(ret[0]);
21038
+ }
21039
+ exports.metricsFromEcefCovarianceM2 = metricsFromEcefCovarianceM2;
21040
+
21041
+ /**
21042
+ * Compute position-error metrics from an ENU covariance in square metres.
21043
+ * @param {any} covariance_enu_m2
21044
+ * @returns {PositionErrorMetrics}
21045
+ */
21046
+ function metricsFromEnuCovarianceM2(covariance_enu_m2) {
21047
+ const ret = wasm.metricsFromEnuCovarianceM2(covariance_enu_m2);
21048
+ if (ret[2]) {
21049
+ throw takeFromExternrefTable0(ret[1]);
21050
+ }
21051
+ return PositionErrorMetrics.__wrap(ret[0]);
21052
+ }
21053
+ exports.metricsFromEnuCovarianceM2 = metricsFromEnuCovarianceM2;
21054
+
21055
+ /**
21056
+ * Compute position-error metrics from a kinematic solution object.
21057
+ *
21058
+ * The object must include `positionM` and `positionCovarianceM2`; optional
21059
+ * extra kinematic fields are accepted and ignored by this metric calculation.
21060
+ * @param {any} solution
21061
+ * @returns {PositionErrorMetrics}
21062
+ */
21063
+ function metricsFromKinematicSolution(solution) {
21064
+ const ret = wasm.metricsFromKinematicSolution(solution);
21065
+ if (ret[2]) {
21066
+ throw takeFromExternrefTable0(ret[1]);
21067
+ }
21068
+ return PositionErrorMetrics.__wrap(ret[0]);
21069
+ }
21070
+ exports.metricsFromKinematicSolution = metricsFromKinematicSolution;
21071
+
19866
21072
  /**
19867
21073
  * Modified Allan deviation for explicit averaging factors.
19868
21074
  *
@@ -19883,6 +21089,17 @@ function modifiedAdev(series, tau0_s, averaging_factors) {
19883
21089
  }
19884
21090
  exports.modifiedAdev = modifiedAdev;
19885
21091
 
21092
+ /**
21093
+ * Exact MDEV log-log slope for a power-law noise type.
21094
+ * @param {PowerLawNoiseType} noise_type
21095
+ * @returns {number}
21096
+ */
21097
+ function modifiedAllanDeviationPowerLawSlope(noise_type) {
21098
+ const ret = wasm.modifiedAllanDeviationPowerLawSlope(noise_type);
21099
+ return ret;
21100
+ }
21101
+ exports.modifiedAllanDeviationPowerLawSlope = modifiedAllanDeviationPowerLawSlope;
21102
+
19886
21103
  /**
19887
21104
  * Mean, variance, skewness, and excess kurtosis of a residual set in one pass.
19888
21105
  *
@@ -20105,6 +21322,24 @@ function nequickGStecTecu(_eval) {
20105
21322
  }
20106
21323
  exports.nequickGStecTecu = nequickGStecTecu;
20107
21324
 
21325
+ /**
21326
+ * Estimate a station network velocity field in one local ENU frame.
21327
+ *
21328
+ * The input is `{ frame: { origin, removeCommonMode? }, stations }`. Each
21329
+ * station has `{ id, reference, series }`, and each series follows
21330
+ * `velocityMidas`.
21331
+ * @param {any} input
21332
+ * @returns {any}
21333
+ */
21334
+ function networkField(input) {
21335
+ const ret = wasm.networkField(input);
21336
+ if (ret[2]) {
21337
+ throw takeFromExternrefTable0(ret[1]);
21338
+ }
21339
+ return takeFromExternrefTable0(ret[0]);
21340
+ }
21341
+ exports.networkField = networkField;
21342
+
20108
21343
  /**
20109
21344
  * Scalar normalized innovation squared statistic.
20110
21345
  * @param {number} innovation
@@ -20286,6 +21521,25 @@ function ntripRequestBytes(config) {
20286
21521
  }
20287
21522
  exports.ntripRequestBytes = ntripRequestBytes;
20288
21523
 
21524
+ /**
21525
+ * Stable string label for an [`ObservabilityTier`] enum value.
21526
+ * @param {ObservabilityTier} tier
21527
+ * @returns {string}
21528
+ */
21529
+ function observabilityTierLabel(tier) {
21530
+ let deferred1_0;
21531
+ let deferred1_1;
21532
+ try {
21533
+ const ret = wasm.observabilityTierLabel(tier);
21534
+ deferred1_0 = ret[0];
21535
+ deferred1_1 = ret[1];
21536
+ return getStringFromWasm0(ret[0], ret[1]);
21537
+ } finally {
21538
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
21539
+ }
21540
+ }
21541
+ exports.observabilityTierLabel = observabilityTierLabel;
21542
+
20289
21543
  /**
20290
21544
  * Missing-position sentinel used in failed observable-state batch elements.
20291
21545
  *
@@ -20484,6 +21738,28 @@ function oceanTideLoading(station_ecef_m, year, month, day, fractional_hour, amp
20484
21738
  }
20485
21739
  exports.oceanTideLoading = oceanTideLoading;
20486
21740
 
21741
+ /**
21742
+ * Broadcast-derived per-satellite orbit-repeat lag, in seconds.
21743
+ *
21744
+ * `satellite` is an IGS token such as `"G01"`, and `nearEpochJ2000S` is the
21745
+ * broadcast-selection epoch in seconds since J2000.
21746
+ * @param {BroadcastEphemeris} ephemeris
21747
+ * @param {string} satellite
21748
+ * @param {number} near_epoch_j2000_s
21749
+ * @returns {number}
21750
+ */
21751
+ function orbitRepeatLag(ephemeris, satellite, near_epoch_j2000_s) {
21752
+ _assertClass(ephemeris, BroadcastEphemeris);
21753
+ const ptr0 = passStringToWasm0(satellite, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
21754
+ const len0 = WASM_VECTOR_LEN;
21755
+ const ret = wasm.orbitRepeatLag(ephemeris.__wbg_ptr, ptr0, len0, near_epoch_j2000_s);
21756
+ if (ret[2]) {
21757
+ throw takeFromExternrefTable0(ret[1]);
21758
+ }
21759
+ return ret[0];
21760
+ }
21761
+ exports.orbitRepeatLag = orbitRepeatLag;
21762
+
20487
21763
  /**
20488
21764
  * Orthometric height `H = h - N` (metres above mean sea level) from an
20489
21765
  * ellipsoidal height and a geodetic position in radians, using the built-in
@@ -20944,6 +22220,25 @@ function parseTleFile(text, ops_mode_label) {
20944
22220
  }
20945
22221
  exports.parseTleFile = parseTleFile;
20946
22222
 
22223
+ /**
22224
+ * Score repeating components at candidate periods.
22225
+ *
22226
+ * `series` and `candidatePeriodsS` are JS number arrays. `sampleIntervalS`
22227
+ * defaults to one second. The result is an array of `{ periodS, strength }`.
22228
+ * @param {any} series
22229
+ * @param {any} candidate_periods_s
22230
+ * @param {number | null} [sample_interval_s]
22231
+ * @returns {any}
22232
+ */
22233
+ function periodicityStrength(series, candidate_periods_s, sample_interval_s) {
22234
+ const ret = wasm.periodicityStrength(series, candidate_periods_s, !isLikeNone(sample_interval_s), isLikeNone(sample_interval_s) ? 0 : sample_interval_s);
22235
+ if (ret[2]) {
22236
+ throw takeFromExternrefTable0(ret[1]);
22237
+ }
22238
+ return takeFromExternrefTable0(ret[0]);
22239
+ }
22240
+ exports.periodicityStrength = periodicityStrength;
22241
+
20947
22242
  /**
20948
22243
  * Sun-satellite-observer phase angle in degrees.
20949
22244
  * @param {Float64Array} satellite_position_km
@@ -21249,7 +22544,7 @@ exports.propagateKepler = propagateKepler;
21249
22544
  * epochs.
21250
22545
  *
21251
22546
  * `request` is a plain object; see the `PropagateStateRequest` TypeScript type.
21252
- * Throws a `TypeError` for malformed input (wrong shape, unknown selector), a
22547
+ * Throws a `TypeError` for malformed input (wrong layout, unknown selector), a
21253
22548
  * `RangeError` for a non-positive initial step, and an `Error` if the engine's
21254
22549
  * propagation fails.
21255
22550
  * @param {any} request
@@ -21351,6 +22646,46 @@ function relativeState(chief, deputy) {
21351
22646
  }
21352
22647
  exports.relativeState = relativeState;
21353
22648
 
22649
+ /**
22650
+ * Compute pre-data ARAIM reliability using an ARAIM ISM range-error model.
22651
+ *
22652
+ * `geometry` and `ism` use the same plain objects accepted by `araim`.
22653
+ * `options` follows `reliabilityDesign`. External effects are returned in local
22654
+ * east, north, up metres. Uncheckable rows return `null` for optional fields.
22655
+ * @param {any} geometry
22656
+ * @param {any} ism
22657
+ * @param {any} options
22658
+ * @returns {any}
22659
+ */
22660
+ function reliabilityAraim(geometry, ism, options) {
22661
+ const ret = wasm.reliabilityAraim(geometry, ism, options);
22662
+ if (ret[2]) {
22663
+ throw takeFromExternrefTable0(ret[1]);
22664
+ }
22665
+ return takeFromExternrefTable0(ret[0]);
22666
+ }
22667
+ exports.reliabilityAraim = reliabilityAraim;
22668
+
22669
+ /**
22670
+ * Compute pre-data reliability from supplied range design rows.
22671
+ *
22672
+ * `rows` is an array of `{ id, designRow, sigmaM }` objects. `options` may set
22673
+ * `{ alpha?, power?, beta?, lambda0Override?, lambda0?, minRedundancy? }`.
22674
+ * `power` is converted to the core missed-detection probability. Rows below
22675
+ * `minRedundancy` return `null` for `mdbM`, `externalEnuM`, and `biasToNoise`.
22676
+ * @param {any} rows
22677
+ * @param {any} options
22678
+ * @returns {any}
22679
+ */
22680
+ function reliabilityDesign(rows, options) {
22681
+ const ret = wasm.reliabilityDesign(rows, options);
22682
+ if (ret[2]) {
22683
+ throw takeFromExternrefTable0(ret[1]);
22684
+ }
22685
+ return takeFromExternrefTable0(ret[0]);
22686
+ }
22687
+ exports.reliabilityDesign = reliabilityDesign;
22688
+
21354
22689
  /**
21355
22690
  * Repair RINEX navigation text.
21356
22691
  * @param {Uint8Array} bytes
@@ -21385,6 +22720,17 @@ function repairRinexObs(bytes, options) {
21385
22720
  }
21386
22721
  exports.repairRinexObs = repairRinexObs;
21387
22722
 
22723
+ /**
22724
+ * Default ground-track repeat period for a GNSS constellation, in seconds.
22725
+ * @param {GnssSystem} system
22726
+ * @returns {number}
22727
+ */
22728
+ function repeatPeriod(system) {
22729
+ const ret = wasm.repeatPeriod(system);
22730
+ return ret;
22731
+ }
22732
+ exports.repeatPeriod = repeatPeriod;
22733
+
21388
22734
  /**
21389
22735
  * Build a sampled GPS C/A code replica, an `Int8Array`.
21390
22736
  * @param {bigint} prn
@@ -21808,6 +23154,25 @@ function sbasCorrectedState(broadcast, store, geo, sat, t_j2000_s, mode) {
21808
23154
  }
21809
23155
  exports.sbasCorrectedState = sbasCorrectedState;
21810
23156
 
23157
+ /**
23158
+ * Stable string label for an [`SbasPlError`] enum value.
23159
+ * @param {SbasPlError} error
23160
+ * @returns {string}
23161
+ */
23162
+ function sbasPlErrorLabel(error) {
23163
+ let deferred1_0;
23164
+ let deferred1_1;
23165
+ try {
23166
+ const ret = wasm.sbasPlErrorLabel(error);
23167
+ deferred1_0 = ret[0];
23168
+ deferred1_1 = ret[1];
23169
+ return getStringFromWasm0(ret[0], ret[1]);
23170
+ } finally {
23171
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
23172
+ }
23173
+ }
23174
+ exports.sbasPlErrorLabel = sbasPlErrorLabel;
23175
+
21811
23176
  /**
21812
23177
  * Convert an SBAS broadcast PRN number such as `129` to an SBAS satellite
21813
23178
  * token such as `"S29"`. Returns `null` when the PRN is outside the SBAS range.
@@ -21820,6 +23185,28 @@ function sbasPrnToSat(broadcast_prn) {
21820
23185
  }
21821
23186
  exports.sbasPrnToSat = sbasPrnToSat;
21822
23187
 
23188
+ /**
23189
+ * Compute SBAS horizontal and vertical protection levels.
23190
+ *
23191
+ * `geometry` is the ARAIM protection geometry object with rows, receiver, and
23192
+ * clock systems. `model` supplies one range-error row per satellite. `k`
23193
+ * supplies the fixed SBAS multipliers.
23194
+ * @param {any} geometry
23195
+ * @param {SbasErrorModel} model
23196
+ * @param {SbasKMultipliers} k
23197
+ * @returns {SbasProtection}
23198
+ */
23199
+ function sbasProtectionLevels(geometry, model, k) {
23200
+ _assertClass(model, SbasErrorModel);
23201
+ _assertClass(k, SbasKMultipliers);
23202
+ const ret = wasm.sbasProtectionLevels(geometry, model.__wbg_ptr, k.__wbg_ptr);
23203
+ if (ret[2]) {
23204
+ throw takeFromExternrefTable0(ret[1]);
23205
+ }
23206
+ return SbasProtection.__wrap(ret[0]);
23207
+ }
23208
+ exports.sbasProtectionLevels = sbasProtectionLevels;
23209
+
21823
23210
  /**
21824
23211
  * Screen a primary satellite against a secondary TLE catalog for threshold TCAs.
21825
23212
  *
@@ -22041,6 +23428,26 @@ function shapiroWilk(x) {
22041
23428
  }
22042
23429
  exports.shapiroWilk = shapiroWilk;
22043
23430
 
23431
+ /**
23432
+ * Apply a sidereal residual filter to a scalar series.
23433
+ *
23434
+ * `series` is a JS number array, `periodS` is seconds, and `options` may set
23435
+ * `sampleIntervalS`, `priorPeriods`, `minCoverage`, and `templateMethod`.
23436
+ * Returns `{ filtered, template, coverage, underCovered }`.
23437
+ * @param {any} series
23438
+ * @param {number} period_s
23439
+ * @param {any} options
23440
+ * @returns {any}
23441
+ */
23442
+ function siderealFilter(series, period_s, options) {
23443
+ const ret = wasm.siderealFilter(series, period_s, options);
23444
+ if (ret[2]) {
23445
+ throw takeFromExternrefTable0(ret[1]);
23446
+ }
23447
+ return takeFromExternrefTable0(ret[0]);
23448
+ }
23449
+ exports.siderealFilter = siderealFilter;
23450
+
22044
23451
  /**
22045
23452
  * Build satellite-keyed pseudorange sigmas in metres from `{ satelliteId,
22046
23453
  * elevationDeg, cn0Dbhz? }` entries. Invalid entries are dropped by the core.
@@ -23172,6 +24579,25 @@ function validateAgainstSp3Ids(records, ids) {
23172
24579
  }
23173
24580
  exports.validateAgainstSp3Ids = validateAgainstSp3Ids;
23174
24581
 
24582
+ /**
24583
+ * Estimate robust station velocity with the MIDAS method.
24584
+ *
24585
+ * `series` is `{ samples, frame? }`, where samples are
24586
+ * `{ epochYear, positionM, covarianceM2? }`. The frame is `"enu"` by default
24587
+ * or `{ kind: "ecef", reference }`.
24588
+ * @param {any} series
24589
+ * @param {any} options
24590
+ * @returns {any}
24591
+ */
24592
+ function velocityMidas(series, options) {
24593
+ const ret = wasm.velocityMidas(series, options);
24594
+ if (ret[2]) {
24595
+ throw takeFromExternrefTable0(ret[1]);
24596
+ }
24597
+ return takeFromExternrefTable0(ret[0]);
24598
+ }
24599
+ exports.velocityMidas = velocityMidas;
24600
+
23175
24601
  /**
23176
24602
  * Satellites visible above `minElevationDeg` from `station` at a single instant,
23177
24603
  * from already-initialized [`Tle`]s: the opsmode-preserving constellation
@@ -23302,6 +24728,25 @@ function writeDtedTreeToMmapStore(root, out_path) {
23302
24728
  }
23303
24729
  }
23304
24730
  exports.writeDtedTreeToMmapStore = writeDtedTreeToMmapStore;
24731
+
24732
+ /**
24733
+ * Compute Baarda's w-test noncentrality from false-alarm probability and power.
24734
+ *
24735
+ * `alpha` is the two-sided false-alarm probability. `power` is detection power,
24736
+ * so the core missed-detection probability is `1 - power`. The returned object
24737
+ * contains `delta0` and `lambda0 = delta0 * delta0`.
24738
+ * @param {number} alpha
24739
+ * @param {number} power
24740
+ * @returns {any}
24741
+ */
24742
+ function wtestNoncentrality(alpha, power) {
24743
+ const ret = wasm.wtestNoncentrality(alpha, power);
24744
+ if (ret[2]) {
24745
+ throw takeFromExternrefTable0(ret[1]);
24746
+ }
24747
+ return takeFromExternrefTable0(ret[0]);
24748
+ }
24749
+ exports.wtestNoncentrality = wtestNoncentrality;
23305
24750
  function __wbg_get_imports() {
23306
24751
  const import0 = {
23307
24752
  __proto__: null,
@@ -23740,6 +25185,9 @@ const AcquisitionGridFinalization = (typeof FinalizationRegistry === 'undefined'
23740
25185
  const AcquisitionResultFinalization = (typeof FinalizationRegistry === 'undefined')
23741
25186
  ? { register: () => {}, unregister: () => {} }
23742
25187
  : new FinalizationRegistry(ptr => wasm.__wbg_acquisitionresult_free(ptr, 1));
25188
+ const AirborneModelFinalization = (typeof FinalizationRegistry === 'undefined')
25189
+ ? { register: () => {}, unregister: () => {} }
25190
+ : new FinalizationRegistry(ptr => wasm.__wbg_airbornemodel_free(ptr, 1));
23743
25191
  const AntennaFinalization = (typeof FinalizationRegistry === 'undefined')
23744
25192
  ? { register: () => {}, unregister: () => {} }
23745
25193
  : new FinalizationRegistry(ptr => wasm.__wbg_antenna_free(ptr, 1));
@@ -23824,6 +25272,9 @@ const CovarianceTransportResultFinalization = (typeof FinalizationRegistry === '
23824
25272
  const CoverageGridFinalization = (typeof FinalizationRegistry === 'undefined')
23825
25273
  ? { register: () => {}, unregister: () => {} }
23826
25274
  : new FinalizationRegistry(ptr => wasm.__wbg_coveragegrid_free(ptr, 1));
25275
+ const DegradationParamsFinalization = (typeof FinalizationRegistry === 'undefined')
25276
+ ? { register: () => {}, unregister: () => {} }
25277
+ : new FinalizationRegistry(ptr => wasm.__wbg_degradationparams_free(ptr, 1));
23827
25278
  const DgnssSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
23828
25279
  ? { register: () => {}, unregister: () => {} }
23829
25280
  : new FinalizationRegistry(ptr => wasm.__wbg_dgnsssolution_free(ptr, 1));
@@ -23860,6 +25311,9 @@ const EncounterFrameFinalization = (typeof FinalizationRegistry === 'undefined')
23860
25311
  const EphemerisFinalization = (typeof FinalizationRegistry === 'undefined')
23861
25312
  ? { register: () => {}, unregister: () => {} }
23862
25313
  : new FinalizationRegistry(ptr => wasm.__wbg_ephemeris_free(ptr, 1));
25314
+ const ErrorEllipseFinalization = (typeof FinalizationRegistry === 'undefined')
25315
+ ? { register: () => {}, unregister: () => {} }
25316
+ : new FinalizationRegistry(ptr => wasm.__wbg_errorellipse_free(ptr, 1));
23863
25317
  const ErrorEllipse2Finalization = (typeof FinalizationRegistry === 'undefined')
23864
25318
  ? { register: () => {}, unregister: () => {} }
23865
25319
  : new FinalizationRegistry(ptr => wasm.__wbg_errorellipse2_free(ptr, 1));
@@ -23881,6 +25335,9 @@ const FrameStatesFinalization = (typeof FinalizationRegistry === 'undefined')
23881
25335
  const GeoidGridFinalization = (typeof FinalizationRegistry === 'undefined')
23882
25336
  ? { register: () => {}, unregister: () => {} }
23883
25337
  : new FinalizationRegistry(ptr => wasm.__wbg_geoidgrid_free(ptr, 1));
25338
+ const GeometryQualityFinalization = (typeof FinalizationRegistry === 'undefined')
25339
+ ? { register: () => {}, unregister: () => {} }
25340
+ : new FinalizationRegistry(ptr => wasm.__wbg_geometryquality_free(ptr, 1));
23884
25341
  const GlonassRecordJsFinalization = (typeof FinalizationRegistry === 'undefined')
23885
25342
  ? { register: () => {}, unregister: () => {} }
23886
25343
  : new FinalizationRegistry(ptr => wasm.__wbg_glonassrecordjs_free(ptr, 1));
@@ -24055,12 +25512,18 @@ const OrthometricHeightMFinalization = (typeof FinalizationRegistry === 'undefin
24055
25512
  const ParsedTleFileFinalization = (typeof FinalizationRegistry === 'undefined')
24056
25513
  ? { register: () => {}, unregister: () => {} }
24057
25514
  : new FinalizationRegistry(ptr => wasm.__wbg_parsedtlefile_free(ptr, 1));
25515
+ const PercentileRadiusFinalization = (typeof FinalizationRegistry === 'undefined')
25516
+ ? { register: () => {}, unregister: () => {} }
25517
+ : new FinalizationRegistry(ptr => wasm.__wbg_percentileradius_free(ptr, 1));
24058
25518
  const PiecewiseOrbitFinalization = (typeof FinalizationRegistry === 'undefined')
24059
25519
  ? { register: () => {}, unregister: () => {} }
24060
25520
  : new FinalizationRegistry(ptr => wasm.__wbg_piecewiseorbit_free(ptr, 1));
24061
25521
  const PiecewiseOrbitSourceFitFinalization = (typeof FinalizationRegistry === 'undefined')
24062
25522
  ? { register: () => {}, unregister: () => {} }
24063
25523
  : new FinalizationRegistry(ptr => wasm.__wbg_piecewiseorbitsourcefit_free(ptr, 1));
25524
+ const PositionErrorMetricsFinalization = (typeof FinalizationRegistry === 'undefined')
25525
+ ? { register: () => {}, unregister: () => {} }
25526
+ : new FinalizationRegistry(ptr => wasm.__wbg_positionerrormetrics_free(ptr, 1));
24064
25527
  const PppFixedSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
24065
25528
  ? { register: () => {}, unregister: () => {} }
24066
25529
  : new FinalizationRegistry(ptr => wasm.__wbg_pppfixedsolution_free(ptr, 1));
@@ -24127,6 +25590,18 @@ const SatelliteVectorFinalization = (typeof FinalizationRegistry === 'undefined'
24127
25590
  const SbasCorrectionStoreFinalization = (typeof FinalizationRegistry === 'undefined')
24128
25591
  ? { register: () => {}, unregister: () => {} }
24129
25592
  : new FinalizationRegistry(ptr => wasm.__wbg_sbascorrectionstore_free(ptr, 1));
25593
+ const SbasErrorModelFinalization = (typeof FinalizationRegistry === 'undefined')
25594
+ ? { register: () => {}, unregister: () => {} }
25595
+ : new FinalizationRegistry(ptr => wasm.__wbg_sbaserrormodel_free(ptr, 1));
25596
+ const SbasKMultipliersFinalization = (typeof FinalizationRegistry === 'undefined')
25597
+ ? { register: () => {}, unregister: () => {} }
25598
+ : new FinalizationRegistry(ptr => wasm.__wbg_sbaskmultipliers_free(ptr, 1));
25599
+ const SbasProtectionFinalization = (typeof FinalizationRegistry === 'undefined')
25600
+ ? { register: () => {}, unregister: () => {} }
25601
+ : new FinalizationRegistry(ptr => wasm.__wbg_sbasprotection_free(ptr, 1));
25602
+ const SbasSisErrorFinalization = (typeof FinalizationRegistry === 'undefined')
25603
+ ? { register: () => {}, unregister: () => {} }
25604
+ : new FinalizationRegistry(ptr => wasm.__wbg_sbassiserror_free(ptr, 1));
24130
25605
  const SignalPolicyFinalization = (typeof FinalizationRegistry === 'undefined')
24131
25606
  ? { register: () => {}, unregister: () => {} }
24132
25607
  : new FinalizationRegistry(ptr => wasm.__wbg_signalpolicy_free(ptr, 1));