@neilberkman/sidereon 0.14.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)`.
@@ -10755,6 +10999,62 @@ class ParsedTleFile {
10755
10999
  if (Symbol.dispose) ParsedTleFile.prototype[Symbol.dispose] = ParsedTleFile.prototype.free;
10756
11000
  exports.ParsedTleFile = ParsedTleFile;
10757
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
+
10758
11058
  /**
10759
11059
  * A long span represented by contiguous independently-fitted reduced-orbit
10760
11060
  * segments. Carries the fitted segments and the time scale they were fitted in;
@@ -10960,6 +11260,154 @@ class PiecewiseOrbitSourceFit {
10960
11260
  if (Symbol.dispose) PiecewiseOrbitSourceFit.prototype[Symbol.dispose] = PiecewiseOrbitSourceFit.prototype.free;
10961
11261
  exports.PiecewiseOrbitSourceFit = PiecewiseOrbitSourceFit;
10962
11262
 
11263
+ /**
11264
+ * Standard position-error metrics derived from a position covariance.
11265
+ */
11266
+ class PositionErrorMetrics {
11267
+ static __wrap(ptr) {
11268
+ const obj = Object.create(PositionErrorMetrics.prototype);
11269
+ obj.__wbg_ptr = ptr;
11270
+ PositionErrorMetricsFinalization.register(obj, obj.__wbg_ptr, obj);
11271
+ return obj;
11272
+ }
11273
+ __destroy_into_raw() {
11274
+ const ptr = this.__wbg_ptr;
11275
+ this.__wbg_ptr = 0;
11276
+ PositionErrorMetricsFinalization.unregister(this);
11277
+ return ptr;
11278
+ }
11279
+ free() {
11280
+ const ptr = this.__destroy_into_raw();
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);
11290
+ }
11291
+ /**
11292
+ * Distance root mean square, metres.
11293
+ * @returns {number}
11294
+ */
11295
+ get drmsM() {
11296
+ const ret = wasm.positionerrormetrics_drmsM(this.__wbg_ptr);
11297
+ return ret;
11298
+ }
11299
+ /**
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
+
10963
11411
  /**
10964
11412
  * Static integer-fixed PPP solution.
10965
11413
  */
@@ -13125,18 +13573,408 @@ class SbasCorrectionStore {
13125
13573
  wasm.sbascorrectionstore_setAllowPartial(this.__wbg_ptr, yes);
13126
13574
  }
13127
13575
  /**
13128
- * Set the maximum staleness for fresh SBAS corrections, in seconds.
13129
- * @param {number} seconds
13576
+ * Set the maximum staleness for fresh SBAS corrections, in seconds.
13577
+ * @param {number} seconds
13578
+ */
13579
+ setStalenessSeconds(seconds) {
13580
+ const ret = wasm.sbascorrectionstore_setStalenessSeconds(this.__wbg_ptr, seconds);
13581
+ if (ret[1]) {
13582
+ throw takeFromExternrefTable0(ret[0]);
13583
+ }
13584
+ }
13585
+ }
13586
+ if (Symbol.dispose) SbasCorrectionStore.prototype[Symbol.dispose] = SbasCorrectionStore.prototype.free;
13587
+ exports.SbasCorrectionStore = SbasCorrectionStore;
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}
13130
13970
  */
13131
- setStalenessSeconds(seconds) {
13132
- const ret = wasm.sbascorrectionstore_setStalenessSeconds(this.__wbg_ptr, seconds);
13133
- if (ret[1]) {
13134
- throw takeFromExternrefTable0(ret[0]);
13135
- }
13971
+ varianceM2() {
13972
+ const ret = wasm.sbassiserror_varianceM2(this.__wbg_ptr);
13973
+ return ret;
13136
13974
  }
13137
13975
  }
13138
- if (Symbol.dispose) SbasCorrectionStore.prototype[Symbol.dispose] = SbasCorrectionStore.prototype.free;
13139
- exports.SbasCorrectionStore = SbasCorrectionStore;
13976
+ if (Symbol.dispose) SbasSisError.prototype[Symbol.dispose] = SbasSisError.prototype.free;
13977
+ exports.SbasSisError = SbasSisError;
13140
13978
 
13141
13979
  /**
13142
13980
  * Per-constellation single-frequency pseudorange code-selection policy. Build
@@ -15719,6 +16557,9 @@ class Tle {
15719
16557
  */
15720
16558
  toLines() {
15721
16559
  const ret = wasm.tle_toLines(this.__wbg_ptr);
16560
+ if (ret[3]) {
16561
+ throw takeFromExternrefTable0(ret[2]);
16562
+ }
15722
16563
  var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
15723
16564
  wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
15724
16565
  return v1;
@@ -16373,6 +17214,28 @@ function allanDeviation(series, tau0_s, averaging_factors) {
16373
17214
  }
16374
17215
  exports.allanDeviation = allanDeviation;
16375
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
+
16376
17239
  /**
16377
17240
  * Alpha-beta measurement update applied to a predicted scalar state.
16378
17241
  *
@@ -17341,6 +18204,24 @@ function detectCycleSlips(arc, options) {
17341
18204
  }
17342
18205
  exports.detectCycleSlips = detectCycleSlips;
17343
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
+
17344
18225
  /**
17345
18226
  * Apply base pseudorange corrections to rover observations by satellite token.
17346
18227
  *
@@ -18180,6 +19061,49 @@ function fitPiecewiseReducedOrbitTle(tle, options) {
18180
19061
  }
18181
19062
  exports.fitPiecewiseReducedOrbitTle = fitPiecewiseReducedOrbitTle;
18182
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
+
18183
19107
  /**
18184
19108
  * Fit a reduced-orbit model to ECEF position samples.
18185
19109
  *
@@ -18244,6 +19168,29 @@ function fitReducedOrbitTle(tle, options) {
18244
19168
  }
18245
19169
  exports.fitReducedOrbitTle = fitReducedOrbitTle;
18246
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
+
18247
19194
  /**
18248
19195
  * Fit SGP4 mean elements and optional B* to TEME state samples.
18249
19196
  * @param {any} samples
@@ -18259,6 +19206,26 @@ function fitTle(samples, config) {
18259
19206
  }
18260
19207
  exports.fitTle = fitTle;
18261
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
+
18262
19229
  /**
18263
19230
  * Fix Melbourne-Wubbena wide-lane ambiguities over a dual-frequency RTK arc.
18264
19231
  *
@@ -20054,6 +21021,54 @@ function meridianTransitsSpk(spk, body, station, start_unix_us, end_unix_us, ste
20054
21021
  }
20055
21022
  exports.meridianTransitsSpk = meridianTransitsSpk;
20056
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
+
20057
21072
  /**
20058
21073
  * Modified Allan deviation for explicit averaging factors.
20059
21074
  *
@@ -20074,6 +21089,17 @@ function modifiedAdev(series, tau0_s, averaging_factors) {
20074
21089
  }
20075
21090
  exports.modifiedAdev = modifiedAdev;
20076
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
+
20077
21103
  /**
20078
21104
  * Mean, variance, skewness, and excess kurtosis of a residual set in one pass.
20079
21105
  *
@@ -20296,6 +21322,24 @@ function nequickGStecTecu(_eval) {
20296
21322
  }
20297
21323
  exports.nequickGStecTecu = nequickGStecTecu;
20298
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
+
20299
21343
  /**
20300
21344
  * Scalar normalized innovation squared statistic.
20301
21345
  * @param {number} innovation
@@ -20694,6 +21738,28 @@ function oceanTideLoading(station_ecef_m, year, month, day, fractional_hour, amp
20694
21738
  }
20695
21739
  exports.oceanTideLoading = oceanTideLoading;
20696
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
+
20697
21763
  /**
20698
21764
  * Orthometric height `H = h - N` (metres above mean sea level) from an
20699
21765
  * ellipsoidal height and a geodetic position in radians, using the built-in
@@ -21154,6 +22220,25 @@ function parseTleFile(text, ops_mode_label) {
21154
22220
  }
21155
22221
  exports.parseTleFile = parseTleFile;
21156
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
+
21157
22242
  /**
21158
22243
  * Sun-satellite-observer phase angle in degrees.
21159
22244
  * @param {Float64Array} satellite_position_km
@@ -21459,7 +22544,7 @@ exports.propagateKepler = propagateKepler;
21459
22544
  * epochs.
21460
22545
  *
21461
22546
  * `request` is a plain object; see the `PropagateStateRequest` TypeScript type.
21462
- * Throws a `TypeError` for malformed input (wrong shape, unknown selector), a
22547
+ * Throws a `TypeError` for malformed input (wrong layout, unknown selector), a
21463
22548
  * `RangeError` for a non-positive initial step, and an `Error` if the engine's
21464
22549
  * propagation fails.
21465
22550
  * @param {any} request
@@ -21561,6 +22646,46 @@ function relativeState(chief, deputy) {
21561
22646
  }
21562
22647
  exports.relativeState = relativeState;
21563
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
+
21564
22689
  /**
21565
22690
  * Repair RINEX navigation text.
21566
22691
  * @param {Uint8Array} bytes
@@ -21595,6 +22720,17 @@ function repairRinexObs(bytes, options) {
21595
22720
  }
21596
22721
  exports.repairRinexObs = repairRinexObs;
21597
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
+
21598
22734
  /**
21599
22735
  * Build a sampled GPS C/A code replica, an `Int8Array`.
21600
22736
  * @param {bigint} prn
@@ -22018,6 +23154,25 @@ function sbasCorrectedState(broadcast, store, geo, sat, t_j2000_s, mode) {
22018
23154
  }
22019
23155
  exports.sbasCorrectedState = sbasCorrectedState;
22020
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
+
22021
23176
  /**
22022
23177
  * Convert an SBAS broadcast PRN number such as `129` to an SBAS satellite
22023
23178
  * token such as `"S29"`. Returns `null` when the PRN is outside the SBAS range.
@@ -22030,6 +23185,28 @@ function sbasPrnToSat(broadcast_prn) {
22030
23185
  }
22031
23186
  exports.sbasPrnToSat = sbasPrnToSat;
22032
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
+
22033
23210
  /**
22034
23211
  * Screen a primary satellite against a secondary TLE catalog for threshold TCAs.
22035
23212
  *
@@ -22251,6 +23428,26 @@ function shapiroWilk(x) {
22251
23428
  }
22252
23429
  exports.shapiroWilk = shapiroWilk;
22253
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
+
22254
23451
  /**
22255
23452
  * Build satellite-keyed pseudorange sigmas in metres from `{ satelliteId,
22256
23453
  * elevationDeg, cn0Dbhz? }` entries. Invalid entries are dropped by the core.
@@ -23382,6 +24579,25 @@ function validateAgainstSp3Ids(records, ids) {
23382
24579
  }
23383
24580
  exports.validateAgainstSp3Ids = validateAgainstSp3Ids;
23384
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
+
23385
24601
  /**
23386
24602
  * Satellites visible above `minElevationDeg` from `station` at a single instant,
23387
24603
  * from already-initialized [`Tle`]s: the opsmode-preserving constellation
@@ -23512,6 +24728,25 @@ function writeDtedTreeToMmapStore(root, out_path) {
23512
24728
  }
23513
24729
  }
23514
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;
23515
24750
  function __wbg_get_imports() {
23516
24751
  const import0 = {
23517
24752
  __proto__: null,
@@ -23950,6 +25185,9 @@ const AcquisitionGridFinalization = (typeof FinalizationRegistry === 'undefined'
23950
25185
  const AcquisitionResultFinalization = (typeof FinalizationRegistry === 'undefined')
23951
25186
  ? { register: () => {}, unregister: () => {} }
23952
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));
23953
25191
  const AntennaFinalization = (typeof FinalizationRegistry === 'undefined')
23954
25192
  ? { register: () => {}, unregister: () => {} }
23955
25193
  : new FinalizationRegistry(ptr => wasm.__wbg_antenna_free(ptr, 1));
@@ -24034,6 +25272,9 @@ const CovarianceTransportResultFinalization = (typeof FinalizationRegistry === '
24034
25272
  const CoverageGridFinalization = (typeof FinalizationRegistry === 'undefined')
24035
25273
  ? { register: () => {}, unregister: () => {} }
24036
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));
24037
25278
  const DgnssSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
24038
25279
  ? { register: () => {}, unregister: () => {} }
24039
25280
  : new FinalizationRegistry(ptr => wasm.__wbg_dgnsssolution_free(ptr, 1));
@@ -24070,6 +25311,9 @@ const EncounterFrameFinalization = (typeof FinalizationRegistry === 'undefined')
24070
25311
  const EphemerisFinalization = (typeof FinalizationRegistry === 'undefined')
24071
25312
  ? { register: () => {}, unregister: () => {} }
24072
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));
24073
25317
  const ErrorEllipse2Finalization = (typeof FinalizationRegistry === 'undefined')
24074
25318
  ? { register: () => {}, unregister: () => {} }
24075
25319
  : new FinalizationRegistry(ptr => wasm.__wbg_errorellipse2_free(ptr, 1));
@@ -24268,12 +25512,18 @@ const OrthometricHeightMFinalization = (typeof FinalizationRegistry === 'undefin
24268
25512
  const ParsedTleFileFinalization = (typeof FinalizationRegistry === 'undefined')
24269
25513
  ? { register: () => {}, unregister: () => {} }
24270
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));
24271
25518
  const PiecewiseOrbitFinalization = (typeof FinalizationRegistry === 'undefined')
24272
25519
  ? { register: () => {}, unregister: () => {} }
24273
25520
  : new FinalizationRegistry(ptr => wasm.__wbg_piecewiseorbit_free(ptr, 1));
24274
25521
  const PiecewiseOrbitSourceFitFinalization = (typeof FinalizationRegistry === 'undefined')
24275
25522
  ? { register: () => {}, unregister: () => {} }
24276
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));
24277
25527
  const PppFixedSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
24278
25528
  ? { register: () => {}, unregister: () => {} }
24279
25529
  : new FinalizationRegistry(ptr => wasm.__wbg_pppfixedsolution_free(ptr, 1));
@@ -24340,6 +25590,18 @@ const SatelliteVectorFinalization = (typeof FinalizationRegistry === 'undefined'
24340
25590
  const SbasCorrectionStoreFinalization = (typeof FinalizationRegistry === 'undefined')
24341
25591
  ? { register: () => {}, unregister: () => {} }
24342
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));
24343
25605
  const SignalPolicyFinalization = (typeof FinalizationRegistry === 'undefined')
24344
25606
  ? { register: () => {}, unregister: () => {} }
24345
25607
  : new FinalizationRegistry(ptr => wasm.__wbg_signalpolicy_free(ptr, 1));