@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.
@@ -59,6 +59,34 @@ export class AcquisitionResult {
59
59
  readonly peakPower: number;
60
60
  }
61
61
 
62
+ /**
63
+ * Airborne receiver and multipath contribution model.
64
+ */
65
+ export class AirborneModel {
66
+ free(): void;
67
+ [Symbol.dispose](): void;
68
+ /**
69
+ * AAD-A airborne model.
70
+ */
71
+ static aadA(): AirborneModel;
72
+ /**
73
+ * Default airborne model.
74
+ */
75
+ static defaultModel(): AirborneModel;
76
+ /**
77
+ * Construct an airborne model from a receiver noise term in metres.
78
+ */
79
+ constructor(sigma_noise_divergence_m: number);
80
+ /**
81
+ * Airborne receiver, divergence, and multipath sigma, metres, or `null`.
82
+ */
83
+ sigmaAirM(elevation_rad: number): any;
84
+ /**
85
+ * Receiver noise and code-carrier divergence sigma, metres.
86
+ */
87
+ readonly sigmaNoiseDivergenceM: number;
88
+ }
89
+
62
90
  /**
63
91
  * A receiver or satellite ANTEX antenna calibration block.
64
92
  */
@@ -1221,6 +1249,61 @@ export class CoverageGrid {
1221
1249
  readonly stationCount: number;
1222
1250
  }
1223
1251
 
1252
+ /**
1253
+ * SBAS degradation terms used when deriving an error model from a store.
1254
+ */
1255
+ export class DegradationParams {
1256
+ free(): void;
1257
+ [Symbol.dispose](): void;
1258
+ /**
1259
+ * Default degradation parameters.
1260
+ */
1261
+ static defaultParams(): DegradationParams;
1262
+ /**
1263
+ * True when all degradation parameters are inside the valid domain.
1264
+ */
1265
+ isValid(): boolean;
1266
+ /**
1267
+ * Construct SBAS degradation parameters.
1268
+ *
1269
+ * Omitted numeric fields use the no-degradation defaults. Invalid values
1270
+ * throw a `RangeError`.
1271
+ */
1272
+ constructor(delta_udre?: number | null, eps_fc_m?: number | null, eps_rrc_m?: number | null, eps_ltc_m?: number | null, eps_er_m?: number | null, eps_iono_m?: number | null, rss_udre?: boolean | null);
1273
+ /**
1274
+ * No extra degradation and no UDRE inflation.
1275
+ */
1276
+ static none(): DegradationParams;
1277
+ /**
1278
+ * Variance multiplier applied to the UDRE variance table.
1279
+ */
1280
+ readonly deltaUdre: number;
1281
+ /**
1282
+ * En-route degradation term, metres.
1283
+ */
1284
+ readonly epsErM: number;
1285
+ /**
1286
+ * Fast-correction degradation term, metres.
1287
+ */
1288
+ readonly epsFcM: number;
1289
+ /**
1290
+ * Ionospheric degradation term added to UIRE, metres.
1291
+ */
1292
+ readonly epsIonoM: number;
1293
+ /**
1294
+ * Long-term-correction degradation term, metres.
1295
+ */
1296
+ readonly epsLtcM: number;
1297
+ /**
1298
+ * Range-rate-correction degradation term, metres.
1299
+ */
1300
+ readonly epsRrcM: number;
1301
+ /**
1302
+ * Whether UDRE degradation terms are combined by root-sum-square.
1303
+ */
1304
+ readonly rssUdre: boolean;
1305
+ }
1306
+
1224
1307
  /**
1225
1308
  * A DGNSS rover solve: the corrected SPP solution plus the base-relative
1226
1309
  * baseline.
@@ -1619,6 +1702,27 @@ export class Ephemeris {
1619
1702
  readonly velocityKmS: Float64Array;
1620
1703
  }
1621
1704
 
1705
+ /**
1706
+ * A horizontal one-sigma error ellipse.
1707
+ */
1708
+ export class ErrorEllipse {
1709
+ private constructor();
1710
+ free(): void;
1711
+ [Symbol.dispose](): void;
1712
+ /**
1713
+ * Semi-major-axis orientation in radians, from east toward north.
1714
+ */
1715
+ readonly orientationRad: number;
1716
+ /**
1717
+ * Semi-major axis length, metres.
1718
+ */
1719
+ readonly semiMajorM: number;
1720
+ /**
1721
+ * Semi-minor axis length, metres.
1722
+ */
1723
+ readonly semiMinorM: number;
1724
+ }
1725
+
1622
1726
  /**
1623
1727
  * A confidence ellipse from a 2x2 covariance block: semi-axes scaled by the
1624
1728
  * two-degree-of-freedom chi-square quantile `-2 ln(1 - confidence)`.
@@ -1864,6 +1968,43 @@ export class GeoidGrid {
1864
1968
  undulationsRad(points_rad: Float64Array): Float64Array;
1865
1969
  }
1866
1970
 
1971
+ /**
1972
+ * Geometry observability and covariance-validation diagnostics.
1973
+ */
1974
+ export class GeometryQuality {
1975
+ private constructor();
1976
+ free(): void;
1977
+ [Symbol.dispose](): void;
1978
+ /**
1979
+ * Singular-value condition number of the design matrix.
1980
+ */
1981
+ readonly conditionNumber: number;
1982
+ /**
1983
+ * Whether residuals or a propagated prior validated the covariance bound.
1984
+ */
1985
+ readonly covarianceValidated: boolean;
1986
+ /**
1987
+ * Geometric dilution of precision for the solved state.
1988
+ */
1989
+ readonly gdop: number;
1990
+ /**
1991
+ * Whether residual-based RAIM can test the solve.
1992
+ */
1993
+ readonly raimCheckable: boolean;
1994
+ /**
1995
+ * Rank of the design matrix used by the solve.
1996
+ */
1997
+ readonly rank: number;
1998
+ /**
1999
+ * Observation redundancy, `nObs - nParams`.
2000
+ */
2001
+ readonly redundancy: number;
2002
+ /**
2003
+ * Observability and validation tier.
2004
+ */
2005
+ readonly tier: ObservabilityTier;
2006
+ }
2007
+
1867
2008
  /**
1868
2009
  * One GLONASS broadcast state-vector record. `toeUtcJ2000S` is UTC seconds past
1869
2010
  * J2000; position is PZ-90.11 ECEF metres, velocity m/s, acceleration m/s^2.
@@ -3276,6 +3417,34 @@ export class ObsPhaseShift {
3276
3417
  readonly system: GnssSystem;
3277
3418
  }
3278
3419
 
3420
+ /**
3421
+ * Observability and validation tier for an estimation design.
3422
+ *
3423
+ * `ZeroRedundancy` means the design is full rank but has no residual degrees of
3424
+ * freedom, so snapshot-solve covariance bounds are unvalidated unless a
3425
+ * propagated prior is present. `Weak` means the design exceeded the configured
3426
+ * condition-number or GDOP cutoff; the returned bounds are reported as computed
3427
+ * and are not clamped.
3428
+ */
3429
+ export enum ObservabilityTier {
3430
+ /**
3431
+ * At least one estimated parameter is not observable.
3432
+ */
3433
+ RankDeficient = 0,
3434
+ /**
3435
+ * Full rank with no residual degrees of freedom.
3436
+ */
3437
+ ZeroRedundancy = 1,
3438
+ /**
3439
+ * Full rank with residual degrees of freedom, but above a cutoff.
3440
+ */
3441
+ Weak = 2,
3442
+ /**
3443
+ * Full rank and within the configured cutoffs.
3444
+ */
3445
+ Nominal = 3,
3446
+ }
3447
+
3279
3448
  /**
3280
3449
  * Optional observation-code allow-list for raw and carrier-phase rows. Build
3281
3450
  * with `new ObservationFilter()` then chain `.withSystem(system, codes)`.
@@ -4045,6 +4214,31 @@ export class ParsedTleFile {
4045
4214
  readonly skipped: number;
4046
4215
  }
4047
4216
 
4217
+ /**
4218
+ * A percentile circle or sphere radius.
4219
+ */
4220
+ export class PercentileRadius {
4221
+ private constructor();
4222
+ free(): void;
4223
+ [Symbol.dispose](): void;
4224
+ /**
4225
+ * Approximate named radius, metres, when applicable.
4226
+ */
4227
+ readonly approxM: number;
4228
+ /**
4229
+ * Whether `approxM` is valid for the covariance ratio.
4230
+ */
4231
+ readonly approxValid: boolean;
4232
+ /**
4233
+ * Probability mass inside this radius.
4234
+ */
4235
+ readonly probability: number;
4236
+ /**
4237
+ * Exact circle or sphere radius, metres.
4238
+ */
4239
+ readonly radiusM: number;
4240
+ }
4241
+
4048
4242
  /**
4049
4243
  * A long span represented by contiguous independently-fitted reduced-orbit
4050
4244
  * segments. Carries the fitted segments and the time scale they were fitted in;
@@ -4124,6 +4318,89 @@ export class PiecewiseOrbitSourceFit {
4124
4318
  readonly usedSamples: number;
4125
4319
  }
4126
4320
 
4321
+ /**
4322
+ * Standard position-error metrics derived from a position covariance.
4323
+ */
4324
+ export class PositionErrorMetrics {
4325
+ private constructor();
4326
+ free(): void;
4327
+ [Symbol.dispose](): void;
4328
+ /**
4329
+ * Horizontal 50 percent circle radius.
4330
+ */
4331
+ readonly cepM: PercentileRadius;
4332
+ /**
4333
+ * Distance root mean square, metres.
4334
+ */
4335
+ readonly drmsM: number;
4336
+ /**
4337
+ * Horizontal one-sigma covariance ellipse.
4338
+ */
4339
+ readonly ellipse: ErrorEllipse;
4340
+ /**
4341
+ * Mean radial spherical error, metres.
4342
+ */
4343
+ readonly mrseM: number;
4344
+ /**
4345
+ * Horizontal 95 percent circle radius.
4346
+ */
4347
+ readonly r95M: PercentileRadius;
4348
+ /**
4349
+ * Horizontal 99 percent circle radius.
4350
+ */
4351
+ readonly r99M: PercentileRadius;
4352
+ /**
4353
+ * Three-dimensional 50 percent sphere radius.
4354
+ */
4355
+ readonly sepM: PercentileRadius;
4356
+ /**
4357
+ * East standard deviation, metres.
4358
+ */
4359
+ readonly sigmaEM: number;
4360
+ /**
4361
+ * North standard deviation, metres.
4362
+ */
4363
+ readonly sigmaNM: number;
4364
+ /**
4365
+ * Up standard deviation, metres.
4366
+ */
4367
+ readonly sigmaUM: number;
4368
+ /**
4369
+ * Two times distance root mean square, metres.
4370
+ */
4371
+ readonly twoDrmsM: number;
4372
+ /**
4373
+ * Vertical 50 percent one-dimensional radius, metres.
4374
+ */
4375
+ readonly vepM: number;
4376
+ }
4377
+
4378
+ /**
4379
+ * IEEE 1139 fractional-frequency PSD power-law noise type.
4380
+ */
4381
+ export enum PowerLawNoiseType {
4382
+ /**
4383
+ * Random-walk frequency modulation, `S_y(f) = h_-2 f^-2`.
4384
+ */
4385
+ RandomWalkFM = 0,
4386
+ /**
4387
+ * Flicker frequency modulation, `S_y(f) = h_-1 f^-1`.
4388
+ */
4389
+ FlickerFM = 1,
4390
+ /**
4391
+ * White frequency modulation, `S_y(f) = h_0`.
4392
+ */
4393
+ WhiteFM = 2,
4394
+ /**
4395
+ * Flicker phase modulation, `S_y(f) = h_1 f`.
4396
+ */
4397
+ FlickerPM = 3,
4398
+ /**
4399
+ * White phase modulation, `S_y(f) = h_2 f^2`.
4400
+ */
4401
+ WhitePM = 4,
4402
+ }
4403
+
4127
4404
  /**
4128
4405
  * Static integer-fixed PPP solution.
4129
4406
  */
@@ -4770,6 +5047,11 @@ export class RtkFixedSolution {
4770
5047
  * The underlying float baseline as a `Float64Array` `[dx, dy, dz]`, metres.
4771
5048
  */
4772
5049
  readonly floatBaselineM: Float64Array;
5050
+ /**
5051
+ * Geometry observability and covariance-validation diagnostics for the
5052
+ * float design used by the integer-fixed solve.
5053
+ */
5054
+ readonly geometryQuality: GeometryQuality;
4773
5055
  readonly integerCandidates: number;
4774
5056
  /**
4775
5057
  * Integer ambiguity ratio, or `undefined` when no ratio was computed.
@@ -4779,6 +5061,16 @@ export class RtkFixedSolution {
4779
5061
  * Integer ambiguity-fix status: `"Fixed"` or `"NotFixed"`.
4780
5062
  */
4781
5063
  readonly integerStatus: string;
5064
+ /**
5065
+ * Whether residual-based RAIM can test the float design used by the
5066
+ * integer-fixed solve.
5067
+ */
5068
+ readonly raimCheckable: boolean;
5069
+ /**
5070
+ * Observation redundancy, `nObs - nParams`, for the float design used by
5071
+ * the integer-fixed solve.
5072
+ */
5073
+ readonly redundancy: number;
4782
5074
  }
4783
5075
 
4784
5076
  /**
@@ -4798,9 +5090,24 @@ export class RtkFloatSolution {
4798
5090
  readonly baselineM: Float64Array;
4799
5091
  readonly codeRmsM: number;
4800
5092
  readonly converged: boolean;
5093
+ /**
5094
+ * Geometry observability and covariance-validation diagnostics for the
5095
+ * final double-difference design. `ZeroRedundancy` bounds are unvalidated
5096
+ * for snapshot solves, `Weak` bounds are unclamped, and rank-deficient
5097
+ * designs are returned as a singular-geometry `Error`.
5098
+ */
5099
+ readonly geometryQuality: GeometryQuality;
4801
5100
  readonly iterations: number;
4802
5101
  readonly nObservations: number;
4803
5102
  readonly phaseRmsM: number;
5103
+ /**
5104
+ * Whether residual-based RAIM can test the float design.
5105
+ */
5106
+ readonly raimCheckable: boolean;
5107
+ /**
5108
+ * Observation redundancy, `nObs - nParams`, for the float design.
5109
+ */
5110
+ readonly redundancy: number;
4804
5111
  readonly weightedRmsM: number;
4805
5112
  }
4806
5113
 
@@ -4928,6 +5235,170 @@ export class SbasCorrectionStore {
4928
5235
  setStalenessSeconds(seconds: number): void;
4929
5236
  }
4930
5237
 
5238
+ /**
5239
+ * Index-aligned SBAS error model for protection-level geometry rows.
5240
+ */
5241
+ export class SbasErrorModel {
5242
+ free(): void;
5243
+ [Symbol.dispose](): void;
5244
+ /**
5245
+ * Build an SBAS error model from a decoded correction store.
5246
+ *
5247
+ * `geo` is an SBAS satellite token, `geometry` is protection geometry, and
5248
+ * `epochJ2000S` is the receive epoch used for freshness checks. Omit
5249
+ * `airborne` or `degradation` to use their defaults.
5250
+ */
5251
+ static fromStore(store: SbasCorrectionStore, geo: string, geometry: any, airborne: AirborneModel | null | undefined, epoch_j2000_s: number, degradation?: DegradationParams | null): SbasErrorModel;
5252
+ /**
5253
+ * Construct an SBAS error model from rows.
5254
+ *
5255
+ * `rows` is an array of `{ id, sigmaFltM, sigmaUireM?, sigmaAirM?,
5256
+ * sigmaTropoM? }` objects. As a shorthand, a row may provide only
5257
+ * `{ id, sigmaM }`, which is stored as the total one-sigma range term.
5258
+ */
5259
+ constructor(rows: any);
5260
+ /**
5261
+ * Return the row for a satellite token, or `undefined` if it is absent.
5262
+ */
5263
+ rowFor(id: string): SbasSisError | undefined;
5264
+ /**
5265
+ * Number of range-error rows in the model.
5266
+ */
5267
+ readonly rowCount: number;
5268
+ /**
5269
+ * Error-model rows as plain objects.
5270
+ */
5271
+ readonly rows: any;
5272
+ }
5273
+
5274
+ /**
5275
+ * Fixed SBAS protection-level multipliers.
5276
+ */
5277
+ export class SbasKMultipliers {
5278
+ free(): void;
5279
+ [Symbol.dispose](): void;
5280
+ /**
5281
+ * En-route through non-precision-approach SBAS K multipliers.
5282
+ */
5283
+ static enRouteNpa(): SbasKMultipliers;
5284
+ /**
5285
+ * Construct SBAS horizontal and vertical K multipliers.
5286
+ *
5287
+ * Both values must be positive finite numbers.
5288
+ */
5289
+ constructor(k_h: number, k_v: number);
5290
+ /**
5291
+ * Precision-approach SBAS K multipliers.
5292
+ */
5293
+ static precisionApproach(): SbasKMultipliers;
5294
+ /**
5295
+ * Horizontal K multiplier.
5296
+ */
5297
+ readonly kH: number;
5298
+ /**
5299
+ * Vertical K multiplier.
5300
+ */
5301
+ readonly kV: number;
5302
+ }
5303
+
5304
+ /**
5305
+ * SBAS protection-level input or numerical failure.
5306
+ */
5307
+ export enum SbasPlError {
5308
+ /**
5309
+ * The geometry lacks enough independent rows for the active clocks.
5310
+ */
5311
+ InsufficientGeometry = 0,
5312
+ /**
5313
+ * Matrix projection or covariance processing failed.
5314
+ */
5315
+ NumericalFailure = 1,
5316
+ /**
5317
+ * The supplied error model or K multipliers are outside their domain.
5318
+ */
5319
+ InvalidErrorModel = 2,
5320
+ }
5321
+
5322
+ /**
5323
+ * SBAS protection-level output for one geometry snapshot.
5324
+ */
5325
+ export class SbasProtection {
5326
+ private constructor();
5327
+ free(): void;
5328
+ [Symbol.dispose](): void;
5329
+ /**
5330
+ * East one-sigma standard deviation, metres.
5331
+ */
5332
+ readonly dEastM: number;
5333
+ /**
5334
+ * East-north covariance term, square metres.
5335
+ */
5336
+ readonly dEnM2: number;
5337
+ /**
5338
+ * Horizontal one-sigma semi-major axis, metres.
5339
+ */
5340
+ readonly dMajorM: number;
5341
+ /**
5342
+ * North one-sigma standard deviation, metres.
5343
+ */
5344
+ readonly dNorthM: number;
5345
+ /**
5346
+ * Horizontal protection level, metres.
5347
+ */
5348
+ readonly hplM: number;
5349
+ /**
5350
+ * Vertical one-sigma standard deviation, metres.
5351
+ */
5352
+ readonly sigmaUM: number;
5353
+ /**
5354
+ * Vertical protection level, metres.
5355
+ */
5356
+ readonly vplM: number;
5357
+ }
5358
+
5359
+ /**
5360
+ * One satellite's SBAS one-sigma range-error budget.
5361
+ */
5362
+ export class SbasSisError {
5363
+ free(): void;
5364
+ [Symbol.dispose](): void;
5365
+ /**
5366
+ * Construct one SBAS range-error row.
5367
+ *
5368
+ * Component sigmas are metres. They are combined by root-sum-square when
5369
+ * the model is evaluated.
5370
+ */
5371
+ constructor(id: string, sigma_flt_m: number, sigma_uire_m: number, sigma_air_m: number, sigma_tropo_m: number);
5372
+ /**
5373
+ * Total one-sigma range error, metres, or `null` if invalid.
5374
+ */
5375
+ sigmaM(): any;
5376
+ /**
5377
+ * Sum-of-squares range variance, square metres, or `null` if invalid.
5378
+ */
5379
+ varianceM2(): any;
5380
+ /**
5381
+ * Satellite token for this range-error row.
5382
+ */
5383
+ readonly id: string;
5384
+ /**
5385
+ * Airborne receiver noise, divergence, and multipath sigma, metres.
5386
+ */
5387
+ readonly sigmaAirM: number;
5388
+ /**
5389
+ * Fast and long-term correction residual sigma, metres.
5390
+ */
5391
+ readonly sigmaFltM: number;
5392
+ /**
5393
+ * Tropospheric residual sigma, metres.
5394
+ */
5395
+ readonly sigmaTropoM: number;
5396
+ /**
5397
+ * User ionospheric range-error sigma, metres.
5398
+ */
5399
+ readonly sigmaUireM: number;
5400
+ }
5401
+
4931
5402
  /**
4932
5403
  * Per-constellation single-frequency pseudorange code-selection policy. Build
4933
5404
  * with `new SignalPolicy()` then chain `.withSystem(system, codes)`, or use
@@ -5627,10 +6098,25 @@ export class SppSolution {
5627
6098
  * for geodetic output, otherwise `undefined`.
5628
6099
  */
5629
6100
  readonly geodetic: Float64Array | undefined;
6101
+ /**
6102
+ * Geometry observability and covariance-validation diagnostics for this
6103
+ * solved design. `ZeroRedundancy` marks unvalidated snapshot covariance
6104
+ * bounds, `Weak` leaves large bounds unclamped, and rank-deficient designs
6105
+ * are returned as a singular-geometry `Error` rather than a solution.
6106
+ */
6107
+ readonly geometryQuality: GeometryQuality;
5630
6108
  /**
5631
6109
  * ECEF position as a `Float64Array` `[x, y, z]`, metres.
5632
6110
  */
5633
6111
  readonly positionM: Float64Array;
6112
+ /**
6113
+ * Whether residual-based RAIM can test the accepted solve.
6114
+ */
6115
+ readonly raimCheckable: boolean;
6116
+ /**
6117
+ * Degrees of freedom in the accepted solve: `usedCount - (3 + clocks)`.
6118
+ */
6119
+ readonly redundancy: number;
5634
6120
  /**
5635
6121
  * Post-fit residuals, metres, index-aligned to `usedSats`.
5636
6122
  */
@@ -6253,6 +6739,16 @@ export function acquire(samples: Float64Array, prn: bigint, options: any): Acqui
6253
6739
  */
6254
6740
  export function allanDeviation(series: any, tau0_s: number, averaging_factors: any): any;
6255
6741
 
6742
+ /**
6743
+ * Exact ADEV log-log slope for a power-law noise type.
6744
+ */
6745
+ export function allanDeviationPowerLawSlope(noise_type: PowerLawNoiseType): number;
6746
+
6747
+ /**
6748
+ * Exact Allan-variance tau exponent for a power-law noise type.
6749
+ */
6750
+ export function allanVariancePowerLawTauExponent(noise_type: PowerLawNoiseType): number;
6751
+
6256
6752
  /**
6257
6753
  * Alpha-beta measurement update applied to a predicted scalar state.
6258
6754
  *
@@ -6617,6 +7113,14 @@ export function defaultSppFrequencyHz(system: GnssSystem): number | undefined;
6617
7113
  */
6618
7114
  export function detectCycleSlips(arc: any, options: any): SlipResult[];
6619
7115
 
7116
+ /**
7117
+ * Detect candidate displacement steps in a station position series.
7118
+ *
7119
+ * `options` may set `windowYears`, `scoreThreshold`, `minOffsetM`,
7120
+ * `minSamplesEachSide`, `minSeparationYears`, and nested `midas` controls.
7121
+ */
7122
+ export function detectSteps(series: any, options: any): any;
7123
+
6620
7124
  /**
6621
7125
  * Apply base pseudorange corrections to rover observations by satellite token.
6622
7126
  *
@@ -6918,6 +7422,25 @@ export function fitPiecewiseReducedOrbitSp3(sp3: Sp3, satellite: string, options
6918
7422
  */
6919
7423
  export function fitPiecewiseReducedOrbitTle(tle: Tle, options: any): PiecewiseOrbitSourceFit;
6920
7424
 
7425
+ /**
7426
+ * Identify power-law clock-noise regions from ADEV and MDEV curves.
7427
+ *
7428
+ * `adev` and `mdev` are `{ tauS, deviation, n }` objects, matching the output
7429
+ * from the Allan-family functions. `options` may set `basicTauS`,
7430
+ * `measurementBandwidthHz`, `minPointsPerOctave`, `slopeTolerance`, and
7431
+ * `scatterTolerance`.
7432
+ */
7433
+ export function fitPowerLawNoise(adev: any, mdev: any, options: any): any;
7434
+
7435
+ /**
7436
+ * Fit one satellite orbit from caller-supplied precise ephemeris samples.
7437
+ *
7438
+ * `samples` is the same array accepted by `preciseEphemerisSamplesFromSamples`:
7439
+ * `{ sat, epoch, positionEcefM, clockS?, clockEvent? }` with epochs in seconds
7440
+ * since J2000.
7441
+ */
7442
+ export function fitPreciseEphemerisSampleOrbit(samples: any, satellite: string, options: any): any;
7443
+
6921
7444
  /**
6922
7445
  * Fit a reduced-orbit model to ECEF position samples.
6923
7446
  *
@@ -6944,11 +7467,29 @@ export function fitReducedOrbitSp3(sp3: Sp3, satellite: string, options: any): R
6944
7467
  */
6945
7468
  export function fitReducedOrbitTle(tle: Tle, options: any): ReducedOrbitSourceFit;
6946
7469
 
7470
+ /**
7471
+ * Fit one satellite orbit from a parsed SP3 precise product.
7472
+ *
7473
+ * `satellite` is an IGS token such as `"G01"`. `options` may set
7474
+ * `forceModel`, `integrator`, `integratorOptions`, `solverOptions`,
7475
+ * `linearSolve`, `minLedgerSamples`, and `drag`.
7476
+ */
7477
+ export function fitSp3PreciseOrbit(sp3: Sp3, satellite: string, options: any): any;
7478
+
6947
7479
  /**
6948
7480
  * Fit SGP4 mean elements and optional B* to TEME state samples.
6949
7481
  */
6950
7482
  export function fitTle(samples: any, config: any): TleFit;
6951
7483
 
7484
+ /**
7485
+ * Fit a geodetic trajectory model with velocity, seasonal, and step terms.
7486
+ *
7487
+ * `model` may set `referenceEpochYear`, `includeAnnual`,
7488
+ * `includeSemiannual`, and `offsetEpochsYear`. `options` may set `loss`,
7489
+ * `fScaleM`, and `maxNfev`.
7490
+ */
7491
+ export function fitTrajectory(series: any, model: any, options: any): any;
7492
+
6952
7493
  /**
6953
7494
  * Fix Melbourne-Wubbena wide-lane ambiguities over a dual-frequency RTK arc.
6954
7495
  *
@@ -7580,6 +8121,26 @@ export function meridianTransits(body: string, station: any, start_unix_us: bigi
7580
8121
 
7581
8122
  export function meridianTransitsSpk(spk: Spk, body: string, station: any, start_unix_us: bigint, end_unix_us: bigint, step_s: number, tolerance_s: number): any;
7582
8123
 
8124
+ /**
8125
+ * Rotate an ECEF covariance to ENU and compute position-error metrics.
8126
+ *
8127
+ * `receiver` is `{ latRad, lonRad, heightM? }` with radians and metres.
8128
+ */
8129
+ export function metricsFromEcefCovarianceM2(covariance_ecef_m2: any, receiver: any): PositionErrorMetrics;
8130
+
8131
+ /**
8132
+ * Compute position-error metrics from an ENU covariance in square metres.
8133
+ */
8134
+ export function metricsFromEnuCovarianceM2(covariance_enu_m2: any): PositionErrorMetrics;
8135
+
8136
+ /**
8137
+ * Compute position-error metrics from a kinematic solution object.
8138
+ *
8139
+ * The object must include `positionM` and `positionCovarianceM2`; optional
8140
+ * extra kinematic fields are accepted and ignored by this metric calculation.
8141
+ */
8142
+ export function metricsFromKinematicSolution(solution: any): PositionErrorMetrics;
8143
+
7583
8144
  /**
7584
8145
  * Modified Allan deviation for explicit averaging factors.
7585
8146
  *
@@ -7589,6 +8150,11 @@ export function meridianTransitsSpk(spk: Spk, body: string, station: any, start_
7589
8150
  */
7590
8151
  export function modifiedAdev(series: any, tau0_s: number, averaging_factors: any): any;
7591
8152
 
8153
+ /**
8154
+ * Exact MDEV log-log slope for a power-law noise type.
8155
+ */
8156
+ export function modifiedAllanDeviationPowerLawSlope(noise_type: PowerLawNoiseType): number;
8157
+
7592
8158
  /**
7593
8159
  * Mean, variance, skewness, and excess kurtosis of a residual set in one pass.
7594
8160
  *
@@ -7671,6 +8237,15 @@ export function nequickGDelayM(_eval: any, frequency_hz: number): number;
7671
8237
  */
7672
8238
  export function nequickGStecTecu(_eval: any): number;
7673
8239
 
8240
+ /**
8241
+ * Estimate a station network velocity field in one local ENU frame.
8242
+ *
8243
+ * The input is `{ frame: { origin, removeCommonMode? }, stations }`. Each
8244
+ * station has `{ id, reference, series }`, and each series follows
8245
+ * `velocityMidas`.
8246
+ */
8247
+ export function networkField(input: any): any;
8248
+
7674
8249
  /**
7675
8250
  * Scalar normalized innovation squared statistic.
7676
8251
  */
@@ -7733,6 +8308,11 @@ export function normalizedInnovation(innovation: number, innovation_variance: nu
7733
8308
  */
7734
8309
  export function ntripRequestBytes(config: any): Uint8Array;
7735
8310
 
8311
+ /**
8312
+ * Stable string label for an [`ObservabilityTier`] enum value.
8313
+ */
8314
+ export function observabilityTierLabel(tier: ObservabilityTier): string;
8315
+
7736
8316
  /**
7737
8317
  * Missing-position sentinel used in failed observable-state batch elements.
7738
8318
  *
@@ -7793,6 +8373,14 @@ export function observeSpkBody(station: any, epoch_unix_us: bigint, spk: Spk, na
7793
8373
  */
7794
8374
  export function oceanTideLoading(station_ecef_m: Float64Array, year: number, month: number, day: number, fractional_hour: number, amplitude_m: Float64Array, phase_deg: Float64Array): Float64Array;
7795
8375
 
8376
+ /**
8377
+ * Broadcast-derived per-satellite orbit-repeat lag, in seconds.
8378
+ *
8379
+ * `satellite` is an IGS token such as `"G01"`, and `nearEpochJ2000S` is the
8380
+ * broadcast-selection epoch in seconds since J2000.
8381
+ */
8382
+ export function orbitRepeatLag(ephemeris: BroadcastEphemeris, satellite: string, near_epoch_j2000_s: number): number;
8383
+
7796
8384
  /**
7797
8385
  * Orthometric height `H = h - N` (metres above mean sea level) from an
7798
8386
  * ellipsoidal height and a geodetic position in radians, using the built-in
@@ -7955,6 +8543,14 @@ export function parseSpaceWeatherTxt(text: string): SpaceWeatherTable;
7955
8543
  */
7956
8544
  export function parseTleFile(text: string, ops_mode_label?: string | null): ParsedTleFile;
7957
8545
 
8546
+ /**
8547
+ * Score repeating components at candidate periods.
8548
+ *
8549
+ * `series` and `candidatePeriodsS` are JS number arrays. `sampleIntervalS`
8550
+ * defaults to one second. The result is an array of `{ periodS, strength }`.
8551
+ */
8552
+ export function periodicityStrength(series: any, candidate_periods_s: any, sample_interval_s?: number | null): any;
8553
+
7958
8554
  /**
7959
8555
  * Sun-satellite-observer phase angle in degrees.
7960
8556
  */
@@ -8066,7 +8662,7 @@ export function propagateKepler(coe: any, mu_km3_s2: number, dt_s: number): any;
8066
8662
  * epochs.
8067
8663
  *
8068
8664
  * `request` is a plain object; see the `PropagateStateRequest` TypeScript type.
8069
- * Throws a `TypeError` for malformed input (wrong shape, unknown selector), a
8665
+ * Throws a `TypeError` for malformed input (wrong layout, unknown selector), a
8070
8666
  * `RangeError` for a non-positive initial step, and an `Error` if the engine's
8071
8667
  * propagation fails.
8072
8668
  */
@@ -8103,6 +8699,25 @@ export function rangeRateToDoppler(range_rate_m_s: number, carrier_hz: number):
8103
8699
 
8104
8700
  export function relativeState(chief: any, deputy: any): any;
8105
8701
 
8702
+ /**
8703
+ * Compute pre-data ARAIM reliability using an ARAIM ISM range-error model.
8704
+ *
8705
+ * `geometry` and `ism` use the same plain objects accepted by `araim`.
8706
+ * `options` follows `reliabilityDesign`. External effects are returned in local
8707
+ * east, north, up metres. Uncheckable rows return `null` for optional fields.
8708
+ */
8709
+ export function reliabilityAraim(geometry: any, ism: any, options: any): any;
8710
+
8711
+ /**
8712
+ * Compute pre-data reliability from supplied range design rows.
8713
+ *
8714
+ * `rows` is an array of `{ id, designRow, sigmaM }` objects. `options` may set
8715
+ * `{ alpha?, power?, beta?, lambda0Override?, lambda0?, minRedundancy? }`.
8716
+ * `power` is converted to the core missed-detection probability. Rows below
8717
+ * `minRedundancy` return `null` for `mdbM`, `externalEnuM`, and `biasToNoise`.
8718
+ */
8719
+ export function reliabilityDesign(rows: any, options: any): any;
8720
+
8106
8721
  /**
8107
8722
  * Repair RINEX navigation text.
8108
8723
  */
@@ -8113,6 +8728,11 @@ export function repairRinexNav(bytes: Uint8Array, options: any): RinexNavRepair;
8113
8728
  */
8114
8729
  export function repairRinexObs(bytes: Uint8Array, options: any): RinexObsRepair;
8115
8730
 
8731
+ /**
8732
+ * Default ground-track repeat period for a GNSS constellation, in seconds.
8733
+ */
8734
+ export function repeatPeriod(system: GnssSystem): number;
8735
+
8116
8736
  /**
8117
8737
  * Build a sampled GPS C/A code replica, an `Int8Array`.
8118
8738
  */
@@ -8226,12 +8846,26 @@ export function satelliteVisualMagnitude(range_km: number, phase_angle_deg: numb
8226
8846
  */
8227
8847
  export function sbasCorrectedState(broadcast: BroadcastEphemeris, store: SbasCorrectionStore, geo: string, sat: string, t_j2000_s: number, mode?: string | null): any;
8228
8848
 
8849
+ /**
8850
+ * Stable string label for an [`SbasPlError`] enum value.
8851
+ */
8852
+ export function sbasPlErrorLabel(error: SbasPlError): string;
8853
+
8229
8854
  /**
8230
8855
  * Convert an SBAS broadcast PRN number such as `129` to an SBAS satellite
8231
8856
  * token such as `"S29"`. Returns `null` when the PRN is outside the SBAS range.
8232
8857
  */
8233
8858
  export function sbasPrnToSat(broadcast_prn: number): any;
8234
8859
 
8860
+ /**
8861
+ * Compute SBAS horizontal and vertical protection levels.
8862
+ *
8863
+ * `geometry` is the ARAIM protection geometry object with rows, receiver, and
8864
+ * clock systems. `model` supplies one range-error row per satellite. `k`
8865
+ * supplies the fixed SBAS multipliers.
8866
+ */
8867
+ export function sbasProtectionLevels(geometry: any, model: SbasErrorModel, k: SbasKMultipliers): SbasProtection;
8868
+
8235
8869
  /**
8236
8870
  * Screen a primary satellite against a secondary TLE catalog for threshold TCAs.
8237
8871
  *
@@ -8303,6 +8937,15 @@ export function shadowFraction(satellite_position_km: Float64Array, sun_position
8303
8937
  */
8304
8938
  export function shapiroWilk(x: Float64Array): any;
8305
8939
 
8940
+ /**
8941
+ * Apply a sidereal residual filter to a scalar series.
8942
+ *
8943
+ * `series` is a JS number array, `periodS` is seconds, and `options` may set
8944
+ * `sampleIntervalS`, `priorPeriods`, `minCoverage`, and `templateMethod`.
8945
+ * Returns `{ filtered, template, coverage, underCovered }`.
8946
+ */
8947
+ export function siderealFilter(series: any, period_s: number, options: any): any;
8948
+
8306
8949
  /**
8307
8950
  * Build satellite-keyed pseudorange sigmas in metres from `{ satelliteId,
8308
8951
  * elevationDeg, cn0Dbhz? }` entries. Invalid entries are dropped by the core.
@@ -8738,6 +9381,15 @@ export function validate(records: any): any;
8738
9381
  */
8739
9382
  export function validateAgainstSp3Ids(records: any, ids: any): any;
8740
9383
 
9384
+ /**
9385
+ * Estimate robust station velocity with the MIDAS method.
9386
+ *
9387
+ * `series` is `{ samples, frame? }`, where samples are
9388
+ * `{ epochYear, positionM, covarianceM2? }`. The frame is `"enu"` by default
9389
+ * or `{ kind: "ecef", reference }`.
9390
+ */
9391
+ export function velocityMidas(series: any, options: any): any;
9392
+
8741
9393
  /**
8742
9394
  * Satellites visible above `minElevationDeg` from `station` at a single instant,
8743
9395
  * from already-initialized [`Tle`]s: the opsmode-preserving constellation
@@ -8786,3 +9438,12 @@ export function wideLaneWavelength(f1_hz: number, f2_hz: number): number;
8786
9438
  * Convert a DTED tile tree and write canonical terrain store bytes to a path.
8787
9439
  */
8788
9440
  export function writeDtedTreeToMmapStore(root: string, out_path: string): void;
9441
+
9442
+ /**
9443
+ * Compute Baarda's w-test noncentrality from false-alarm probability and power.
9444
+ *
9445
+ * `alpha` is the two-sided false-alarm probability. `power` is detection power,
9446
+ * so the core missed-detection probability is `1 - power`. The returned object
9447
+ * contains `delta0` and `lambda0 = delta0 * delta0`.
9448
+ */
9449
+ export function wtestNoncentrality(alpha: number, power: number): any;