@neilberkman/sidereon 0.14.0 → 0.16.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,86 @@ export class CoverageGrid {
1221
1249
  readonly stationCount: number;
1222
1250
  }
1223
1251
 
1252
+ /**
1253
+ * Stateful opt-in latch for SGP4 decay-like failures.
1254
+ *
1255
+ * Pass one latch per satellite to [`Tle.propagateWithDecayLatch`]. The first
1256
+ * decay-like SGP4 failure records the requested epoch in minutes since the TLE
1257
+ * epoch; later requests at the same or a later epoch throw immediately through
1258
+ * the core latch instead of returning a raw post-decay state.
1259
+ */
1260
+ export class DecayLatch {
1261
+ free(): void;
1262
+ [Symbol.dispose](): void;
1263
+ /**
1264
+ * Clear the recorded decay state.
1265
+ */
1266
+ clear(): void;
1267
+ /**
1268
+ * Construct an empty decay latch.
1269
+ */
1270
+ constructor();
1271
+ /**
1272
+ * First observed decay-like epoch, in minutes since the TLE epoch.
1273
+ */
1274
+ readonly firstFailingEpochMinutes: number | undefined;
1275
+ }
1276
+
1277
+ /**
1278
+ * SBAS degradation terms used when deriving an error model from a store.
1279
+ */
1280
+ export class DegradationParams {
1281
+ free(): void;
1282
+ [Symbol.dispose](): void;
1283
+ /**
1284
+ * Default degradation parameters.
1285
+ */
1286
+ static defaultParams(): DegradationParams;
1287
+ /**
1288
+ * True when all degradation parameters are inside the valid domain.
1289
+ */
1290
+ isValid(): boolean;
1291
+ /**
1292
+ * Construct SBAS degradation parameters.
1293
+ *
1294
+ * Omitted numeric fields use the no-degradation defaults. Invalid values
1295
+ * throw a `RangeError`.
1296
+ */
1297
+ 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);
1298
+ /**
1299
+ * No extra degradation and no UDRE inflation.
1300
+ */
1301
+ static none(): DegradationParams;
1302
+ /**
1303
+ * Variance multiplier applied to the UDRE variance table.
1304
+ */
1305
+ readonly deltaUdre: number;
1306
+ /**
1307
+ * En-route degradation term, metres.
1308
+ */
1309
+ readonly epsErM: number;
1310
+ /**
1311
+ * Fast-correction degradation term, metres.
1312
+ */
1313
+ readonly epsFcM: number;
1314
+ /**
1315
+ * Ionospheric degradation term added to UIRE, metres.
1316
+ */
1317
+ readonly epsIonoM: number;
1318
+ /**
1319
+ * Long-term-correction degradation term, metres.
1320
+ */
1321
+ readonly epsLtcM: number;
1322
+ /**
1323
+ * Range-rate-correction degradation term, metres.
1324
+ */
1325
+ readonly epsRrcM: number;
1326
+ /**
1327
+ * Whether UDRE degradation terms are combined by root-sum-square.
1328
+ */
1329
+ readonly rssUdre: boolean;
1330
+ }
1331
+
1224
1332
  /**
1225
1333
  * A DGNSS rover solve: the corrected SPP solution plus the base-relative
1226
1334
  * baseline.
@@ -1517,6 +1625,34 @@ export class DtedTerrain {
1517
1625
  constructor(root: string);
1518
1626
  }
1519
1627
 
1628
+ /**
1629
+ * Earth figure used for conical eclipse shadow geometry.
1630
+ */
1631
+ export enum EarthShadowModel {
1632
+ /**
1633
+ * Spherical Earth using the core mean Earth radius.
1634
+ */
1635
+ Spherical = 0,
1636
+ /**
1637
+ * WGS84 oblate Earth approximation by polar-axis scaling.
1638
+ */
1639
+ Wgs84Oblate = 1,
1640
+ }
1641
+
1642
+ /**
1643
+ * EGM2008 raster spacing for NGA row-framed interpolation grids.
1644
+ */
1645
+ export enum Egm2008GridSpacing {
1646
+ /**
1647
+ * The 1-arcminute EGM2008 grid.
1648
+ */
1649
+ OneMinute = 0,
1650
+ /**
1651
+ * The 2.5-arcminute EGM2008 grid.
1652
+ */
1653
+ TwoPointFiveMinute = 1,
1654
+ }
1655
+
1520
1656
  /**
1521
1657
  * Loaded EGM96 15-arcminute geoid grid for explicit terrain datum conversion.
1522
1658
  */
@@ -1619,6 +1755,27 @@ export class Ephemeris {
1619
1755
  readonly velocityKmS: Float64Array;
1620
1756
  }
1621
1757
 
1758
+ /**
1759
+ * A horizontal one-sigma error ellipse.
1760
+ */
1761
+ export class ErrorEllipse {
1762
+ private constructor();
1763
+ free(): void;
1764
+ [Symbol.dispose](): void;
1765
+ /**
1766
+ * Semi-major-axis orientation in radians, from east toward north.
1767
+ */
1768
+ readonly orientationRad: number;
1769
+ /**
1770
+ * Semi-major axis length, metres.
1771
+ */
1772
+ readonly semiMajorM: number;
1773
+ /**
1774
+ * Semi-minor axis length, metres.
1775
+ */
1776
+ readonly semiMinorM: number;
1777
+ }
1778
+
1622
1779
  /**
1623
1780
  * A confidence ellipse from a 2x2 covariance block: semi-axes scaled by the
1624
1781
  * two-degree-of-freedom chi-square quantile `-2 ln(1 - confidence)`.
@@ -1801,6 +1958,17 @@ export class FrameStates {
1801
1958
  readonly velocityKmS: Float64Array;
1802
1959
  }
1803
1960
 
1961
+ /**
1962
+ * WGS84 geodesic input failure class exposed as a stable enum symbol.
1963
+ */
1964
+ export enum GeodesicError {
1965
+ /**
1966
+ * A latitude, longitude, azimuth, or distance was outside the accepted
1967
+ * numeric domain.
1968
+ */
1969
+ InvalidInput = 0,
1970
+ }
1971
+
1804
1972
  /**
1805
1973
  * A regular latitude/longitude grid of geoid undulation samples with bilinear
1806
1974
  * interpolation, wrapping a real (loaded) geoid model.
@@ -1816,6 +1984,23 @@ export class GeoidGrid {
1816
1984
  * Ellipsoidal height from orthometric height and radians.
1817
1985
  */
1818
1986
  ellipsoidalHeightRad(orthometric_height_m: number, lat_rad: number, lon_rad: number): number;
1987
+ /**
1988
+ * Parse a full NGA EGM2008 row-framed interpolation raster.
1989
+ *
1990
+ * The byte stream must contain one north-to-south Fortran sequential record
1991
+ * per latitude row at the requested spacing. Use
1992
+ * [`fromEgm2008RasterWindow`] for small cropped fixtures or partial loads.
1993
+ */
1994
+ static fromEgm2008Raster(bytes: Uint8Array, spacing: Egm2008GridSpacing): GeoidGrid;
1995
+ /**
1996
+ * Parse a cropped NGA EGM2008 row-framed interpolation raster window.
1997
+ *
1998
+ * `latMinDeg` and `lonMinDeg` are the southwest node of the loaded grid.
1999
+ * `nLat` and `nLon` are the latitude and longitude node counts in the byte
2000
+ * stream. Queries use the same undulation methods as every other
2001
+ * [`GeoidGrid`].
2002
+ */
2003
+ static fromEgm2008RasterWindow(bytes: Uint8Array, spacing: Egm2008GridSpacing, lat_min_deg: number, lon_min_deg: number, n_lat: number, n_lon: number): GeoidGrid;
1819
2004
  /**
1820
2005
  * Parse an EGM96 `WW15MGH.DAC` byte buffer into a full-resolution grid.
1821
2006
  */
@@ -2126,6 +2311,93 @@ export class GroundTrack {
2126
2311
  readonly lonDeg: Float64Array;
2127
2312
  }
2128
2313
 
2314
+ /**
2315
+ * Helmert parameters in the units used by the published catalog tables.
2316
+ */
2317
+ export class HelmertParameters {
2318
+ free(): void;
2319
+ [Symbol.dispose](): void;
2320
+ /**
2321
+ * Construct Helmert parameters from translation millimetres, scale parts
2322
+ * per billion, and rotation milliarcseconds.
2323
+ */
2324
+ constructor(translation_mm: Float64Array, scale_ppb: number, rotation_mas: Float64Array);
2325
+ /**
2326
+ * Rotation components `[Rx, Ry, Rz]`, in milliarcseconds.
2327
+ */
2328
+ readonly rotationMas: Float64Array;
2329
+ /**
2330
+ * Scale difference, in parts per billion.
2331
+ */
2332
+ readonly scalePpb: number;
2333
+ /**
2334
+ * Translation components `[Tx, Ty, Tz]`, in millimetres.
2335
+ */
2336
+ readonly translationMm: Float64Array;
2337
+ }
2338
+
2339
+ /**
2340
+ * Helmert parameter rates in the units used by the published catalog tables.
2341
+ */
2342
+ export class HelmertRates {
2343
+ free(): void;
2344
+ [Symbol.dispose](): void;
2345
+ /**
2346
+ * Construct Helmert parameter rates from translation millimetres per year,
2347
+ * scale parts per billion per year, and rotation milliarcseconds per year.
2348
+ */
2349
+ constructor(translation_mm_per_year: Float64Array, scale_ppb_per_year: number, rotation_mas_per_year: Float64Array);
2350
+ /**
2351
+ * Rotation rates `[Rx, Ry, Rz]`, in milliarcseconds per year.
2352
+ */
2353
+ readonly rotationMasPerYear: Float64Array;
2354
+ /**
2355
+ * Scale rate, in parts per billion per year.
2356
+ */
2357
+ readonly scalePpbPerYear: number;
2358
+ /**
2359
+ * Translation rates `[Tx, Ty, Tz]`, in millimetres per year.
2360
+ */
2361
+ readonly translationMmPerYear: Float64Array;
2362
+ }
2363
+
2364
+ /**
2365
+ * One published 14-parameter Helmert catalog entry.
2366
+ */
2367
+ export class HelmertTransform {
2368
+ private constructor();
2369
+ free(): void;
2370
+ [Symbol.dispose](): void;
2371
+ /**
2372
+ * Evaluate the seven Helmert parameters at a decimal year.
2373
+ */
2374
+ parametersAt(epoch_year: number): HelmertParameters;
2375
+ /**
2376
+ * Published source frame for the forward transform.
2377
+ */
2378
+ readonly from: TerrestrialFrame;
2379
+ /**
2380
+ * Parameters at `referenceEpochYear`.
2381
+ */
2382
+ readonly parameters: HelmertParameters;
2383
+ /**
2384
+ * Published table or memo that supplied this entry.
2385
+ */
2386
+ readonly provenance: string;
2387
+ /**
2388
+ * Linear rates of the seven Helmert parameters.
2389
+ */
2390
+ readonly rates: HelmertRates;
2391
+ /**
2392
+ * Parameter reference epoch, expressed as a decimal year.
2393
+ */
2394
+ readonly referenceEpochYear: number;
2395
+ /**
2396
+ * Published target frame for the forward transform.
2397
+ */
2398
+ readonly to: TerrestrialFrame;
2399
+ }
2400
+
2129
2401
  /**
2130
2402
  * A point in time, tagged UTC, with the precise time scales resolved.
2131
2403
  *
@@ -4110,6 +4382,31 @@ export class ParsedTleFile {
4110
4382
  readonly skipped: number;
4111
4383
  }
4112
4384
 
4385
+ /**
4386
+ * A percentile circle or sphere radius.
4387
+ */
4388
+ export class PercentileRadius {
4389
+ private constructor();
4390
+ free(): void;
4391
+ [Symbol.dispose](): void;
4392
+ /**
4393
+ * Approximate named radius, metres, when applicable.
4394
+ */
4395
+ readonly approxM: number;
4396
+ /**
4397
+ * Whether `approxM` is valid for the covariance ratio.
4398
+ */
4399
+ readonly approxValid: boolean;
4400
+ /**
4401
+ * Probability mass inside this radius.
4402
+ */
4403
+ readonly probability: number;
4404
+ /**
4405
+ * Exact circle or sphere radius, metres.
4406
+ */
4407
+ readonly radiusM: number;
4408
+ }
4409
+
4113
4410
  /**
4114
4411
  * A long span represented by contiguous independently-fitted reduced-orbit
4115
4412
  * segments. Carries the fitted segments and the time scale they were fitted in;
@@ -4189,6 +4486,89 @@ export class PiecewiseOrbitSourceFit {
4189
4486
  readonly usedSamples: number;
4190
4487
  }
4191
4488
 
4489
+ /**
4490
+ * Standard position-error metrics derived from a position covariance.
4491
+ */
4492
+ export class PositionErrorMetrics {
4493
+ private constructor();
4494
+ free(): void;
4495
+ [Symbol.dispose](): void;
4496
+ /**
4497
+ * Horizontal 50 percent circle radius.
4498
+ */
4499
+ readonly cepM: PercentileRadius;
4500
+ /**
4501
+ * Distance root mean square, metres.
4502
+ */
4503
+ readonly drmsM: number;
4504
+ /**
4505
+ * Horizontal one-sigma covariance ellipse.
4506
+ */
4507
+ readonly ellipse: ErrorEllipse;
4508
+ /**
4509
+ * Mean radial spherical error, metres.
4510
+ */
4511
+ readonly mrseM: number;
4512
+ /**
4513
+ * Horizontal 95 percent circle radius.
4514
+ */
4515
+ readonly r95M: PercentileRadius;
4516
+ /**
4517
+ * Horizontal 99 percent circle radius.
4518
+ */
4519
+ readonly r99M: PercentileRadius;
4520
+ /**
4521
+ * Three-dimensional 50 percent sphere radius.
4522
+ */
4523
+ readonly sepM: PercentileRadius;
4524
+ /**
4525
+ * East standard deviation, metres.
4526
+ */
4527
+ readonly sigmaEM: number;
4528
+ /**
4529
+ * North standard deviation, metres.
4530
+ */
4531
+ readonly sigmaNM: number;
4532
+ /**
4533
+ * Up standard deviation, metres.
4534
+ */
4535
+ readonly sigmaUM: number;
4536
+ /**
4537
+ * Two times distance root mean square, metres.
4538
+ */
4539
+ readonly twoDrmsM: number;
4540
+ /**
4541
+ * Vertical 50 percent one-dimensional radius, metres.
4542
+ */
4543
+ readonly vepM: number;
4544
+ }
4545
+
4546
+ /**
4547
+ * IEEE 1139 fractional-frequency PSD power-law noise type.
4548
+ */
4549
+ export enum PowerLawNoiseType {
4550
+ /**
4551
+ * Random-walk frequency modulation, `S_y(f) = h_-2 f^-2`.
4552
+ */
4553
+ RandomWalkFM = 0,
4554
+ /**
4555
+ * Flicker frequency modulation, `S_y(f) = h_-1 f^-1`.
4556
+ */
4557
+ FlickerFM = 1,
4558
+ /**
4559
+ * White frequency modulation, `S_y(f) = h_0`.
4560
+ */
4561
+ WhiteFM = 2,
4562
+ /**
4563
+ * Flicker phase modulation, `S_y(f) = h_1 f`.
4564
+ */
4565
+ FlickerPM = 3,
4566
+ /**
4567
+ * White phase modulation, `S_y(f) = h_2 f^2`.
4568
+ */
4569
+ WhitePM = 4,
4570
+ }
4571
+
4192
4572
  /**
4193
4573
  * Static integer-fixed PPP solution.
4194
4574
  */
@@ -5024,82 +5404,246 @@ export class SbasCorrectionStore {
5024
5404
  }
5025
5405
 
5026
5406
  /**
5027
- * Per-constellation single-frequency pseudorange code-selection policy. Build
5028
- * with `new SignalPolicy()` then chain `.withSystem(system, codes)`, or use
5029
- * the static `defaultFor(version)`.
5407
+ * Index-aligned SBAS error model for protection-level geometry rows.
5030
5408
  */
5031
- export class SignalPolicy {
5409
+ export class SbasErrorModel {
5032
5410
  free(): void;
5033
5411
  [Symbol.dispose](): void;
5034
5412
  /**
5035
- * The core default pseudorange policy for a RINEX version.
5036
- */
5037
- static defaultFor(version: number): SignalPolicy;
5038
- /**
5039
- * An empty policy with no constellation preferences.
5040
- */
5041
- constructor();
5042
- /**
5043
- * Return a copy with one constellation's preference list set.
5413
+ * Build an SBAS error model from a decoded correction store.
5414
+ *
5415
+ * `geo` is an SBAS satellite token, `geometry` is protection geometry, and
5416
+ * `epochJ2000S` is the receive epoch used for freshness checks. Omit
5417
+ * `airborne` or `degradation` to use their defaults.
5044
5418
  */
5045
- withSystem(system: GnssSystem, codes: string[]): SignalPolicy;
5046
- }
5047
-
5048
- /**
5049
- * Reason a carrier-phase arc split was flagged.
5050
- */
5051
- export enum SlipReason {
5419
+ static fromStore(store: SbasCorrectionStore, geo: string, geometry: any, airborne: AirborneModel | null | undefined, epoch_j2000_s: number, degradation?: DegradationParams | null): SbasErrorModel;
5052
5420
  /**
5053
- * Loss-of-lock indicator bit 0 set on either band.
5421
+ * Construct an SBAS error model from rows.
5422
+ *
5423
+ * `rows` is an array of `{ id, sigmaFltM, sigmaUireM?, sigmaAirM?,
5424
+ * sigmaTropoM? }` objects. As a shorthand, a row may provide only
5425
+ * `{ id, sigmaM }`, which is stored as the total one-sigma range term.
5054
5426
  */
5055
- Lli = 0,
5427
+ constructor(rows: any);
5056
5428
  /**
5057
- * Gap to the previous usable sample exceeded the threshold.
5429
+ * Return the row for a satellite token, or `undefined` if it is absent.
5058
5430
  */
5059
- DataGap = 1,
5431
+ rowFor(id: string): SbasSisError | undefined;
5060
5432
  /**
5061
- * Geometry-free phase step exceeded the threshold.
5433
+ * Number of range-error rows in the model.
5062
5434
  */
5063
- GeometryFree = 2,
5435
+ readonly rowCount: number;
5064
5436
  /**
5065
- * Melbourne-Wubbena step exceeded the threshold.
5437
+ * Error-model rows as plain objects.
5066
5438
  */
5067
- MelbourneWubbena = 3,
5439
+ readonly rows: any;
5068
5440
  }
5069
5441
 
5070
5442
  /**
5071
- * Cycle-slip classification for one input epoch.
5443
+ * Fixed SBAS protection-level multipliers.
5072
5444
  */
5073
- export class SlipResult {
5074
- private constructor();
5445
+ export class SbasKMultipliers {
5075
5446
  free(): void;
5076
5447
  [Symbol.dispose](): void;
5077
5448
  /**
5078
- * Current geometry-free phase, metres, or `undefined`.
5449
+ * En-route through non-precision-approach SBAS K multipliers.
5079
5450
  */
5080
- readonly gfM: number | undefined;
5451
+ static enRouteNpa(): SbasKMultipliers;
5081
5452
  /**
5082
- * Current Melbourne-Wubbena combination, metres, or `undefined`.
5453
+ * Construct SBAS horizontal and vertical K multipliers.
5454
+ *
5455
+ * Both values must be positive finite numbers.
5083
5456
  */
5084
- readonly mwM: number | undefined;
5457
+ constructor(k_h: number, k_v: number);
5085
5458
  /**
5086
- * Slip reasons in deterministic API order.
5459
+ * Precision-approach SBAS K multipliers.
5087
5460
  */
5088
- readonly reasons: any[];
5461
+ static precisionApproach(): SbasKMultipliers;
5089
5462
  /**
5090
- * Whether the epoch was skipped because a frequency was unavailable.
5463
+ * Horizontal K multiplier.
5091
5464
  */
5092
- readonly skipped: boolean;
5465
+ readonly kH: number;
5093
5466
  /**
5094
- * Whether any slip reason was flagged.
5467
+ * Vertical K multiplier.
5095
5468
  */
5096
- readonly slip: boolean;
5469
+ readonly kV: number;
5097
5470
  }
5098
5471
 
5099
5472
  /**
5100
- * Hatch-smoothed single-frequency code output for one epoch.
5473
+ * SBAS protection-level input or numerical failure.
5101
5474
  */
5102
- export class SmoothCodeResult {
5475
+ export enum SbasPlError {
5476
+ /**
5477
+ * The geometry lacks enough independent rows for the active clocks.
5478
+ */
5479
+ InsufficientGeometry = 0,
5480
+ /**
5481
+ * Matrix projection or covariance processing failed.
5482
+ */
5483
+ NumericalFailure = 1,
5484
+ /**
5485
+ * The supplied error model or K multipliers are outside their domain.
5486
+ */
5487
+ InvalidErrorModel = 2,
5488
+ }
5489
+
5490
+ /**
5491
+ * SBAS protection-level output for one geometry snapshot.
5492
+ */
5493
+ export class SbasProtection {
5494
+ private constructor();
5495
+ free(): void;
5496
+ [Symbol.dispose](): void;
5497
+ /**
5498
+ * East one-sigma standard deviation, metres.
5499
+ */
5500
+ readonly dEastM: number;
5501
+ /**
5502
+ * East-north covariance term, square metres.
5503
+ */
5504
+ readonly dEnM2: number;
5505
+ /**
5506
+ * Horizontal one-sigma semi-major axis, metres.
5507
+ */
5508
+ readonly dMajorM: number;
5509
+ /**
5510
+ * North one-sigma standard deviation, metres.
5511
+ */
5512
+ readonly dNorthM: number;
5513
+ /**
5514
+ * Horizontal protection level, metres.
5515
+ */
5516
+ readonly hplM: number;
5517
+ /**
5518
+ * Vertical one-sigma standard deviation, metres.
5519
+ */
5520
+ readonly sigmaUM: number;
5521
+ /**
5522
+ * Vertical protection level, metres.
5523
+ */
5524
+ readonly vplM: number;
5525
+ }
5526
+
5527
+ /**
5528
+ * One satellite's SBAS one-sigma range-error budget.
5529
+ */
5530
+ export class SbasSisError {
5531
+ free(): void;
5532
+ [Symbol.dispose](): void;
5533
+ /**
5534
+ * Construct one SBAS range-error row.
5535
+ *
5536
+ * Component sigmas are metres. They are combined by root-sum-square when
5537
+ * the model is evaluated.
5538
+ */
5539
+ constructor(id: string, sigma_flt_m: number, sigma_uire_m: number, sigma_air_m: number, sigma_tropo_m: number);
5540
+ /**
5541
+ * Total one-sigma range error, metres, or `null` if invalid.
5542
+ */
5543
+ sigmaM(): any;
5544
+ /**
5545
+ * Sum-of-squares range variance, square metres, or `null` if invalid.
5546
+ */
5547
+ varianceM2(): any;
5548
+ /**
5549
+ * Satellite token for this range-error row.
5550
+ */
5551
+ readonly id: string;
5552
+ /**
5553
+ * Airborne receiver noise, divergence, and multipath sigma, metres.
5554
+ */
5555
+ readonly sigmaAirM: number;
5556
+ /**
5557
+ * Fast and long-term correction residual sigma, metres.
5558
+ */
5559
+ readonly sigmaFltM: number;
5560
+ /**
5561
+ * Tropospheric residual sigma, metres.
5562
+ */
5563
+ readonly sigmaTropoM: number;
5564
+ /**
5565
+ * User ionospheric range-error sigma, metres.
5566
+ */
5567
+ readonly sigmaUireM: number;
5568
+ }
5569
+
5570
+ /**
5571
+ * Per-constellation single-frequency pseudorange code-selection policy. Build
5572
+ * with `new SignalPolicy()` then chain `.withSystem(system, codes)`, or use
5573
+ * the static `defaultFor(version)`.
5574
+ */
5575
+ export class SignalPolicy {
5576
+ free(): void;
5577
+ [Symbol.dispose](): void;
5578
+ /**
5579
+ * The core default pseudorange policy for a RINEX version.
5580
+ */
5581
+ static defaultFor(version: number): SignalPolicy;
5582
+ /**
5583
+ * An empty policy with no constellation preferences.
5584
+ */
5585
+ constructor();
5586
+ /**
5587
+ * Return a copy with one constellation's preference list set.
5588
+ */
5589
+ withSystem(system: GnssSystem, codes: string[]): SignalPolicy;
5590
+ }
5591
+
5592
+ /**
5593
+ * Reason a carrier-phase arc split was flagged.
5594
+ */
5595
+ export enum SlipReason {
5596
+ /**
5597
+ * Loss-of-lock indicator bit 0 set on either band.
5598
+ */
5599
+ Lli = 0,
5600
+ /**
5601
+ * Gap to the previous usable sample exceeded the threshold.
5602
+ */
5603
+ DataGap = 1,
5604
+ /**
5605
+ * Geometry-free phase step exceeded the threshold.
5606
+ */
5607
+ GeometryFree = 2,
5608
+ /**
5609
+ * Melbourne-Wubbena step exceeded the threshold.
5610
+ */
5611
+ MelbourneWubbena = 3,
5612
+ }
5613
+
5614
+ /**
5615
+ * Cycle-slip classification for one input epoch.
5616
+ */
5617
+ export class SlipResult {
5618
+ private constructor();
5619
+ free(): void;
5620
+ [Symbol.dispose](): void;
5621
+ /**
5622
+ * Current geometry-free phase, metres, or `undefined`.
5623
+ */
5624
+ readonly gfM: number | undefined;
5625
+ /**
5626
+ * Current Melbourne-Wubbena combination, metres, or `undefined`.
5627
+ */
5628
+ readonly mwM: number | undefined;
5629
+ /**
5630
+ * Slip reasons in deterministic API order.
5631
+ */
5632
+ readonly reasons: any[];
5633
+ /**
5634
+ * Whether the epoch was skipped because a frequency was unavailable.
5635
+ */
5636
+ readonly skipped: boolean;
5637
+ /**
5638
+ * Whether any slip reason was flagged.
5639
+ */
5640
+ readonly slip: boolean;
5641
+ }
5642
+
5643
+ /**
5644
+ * Hatch-smoothed single-frequency code output for one epoch.
5645
+ */
5646
+ export class SmoothCodeResult {
5103
5647
  private constructor();
5104
5648
  free(): void;
5105
5649
  [Symbol.dispose](): void;
@@ -5827,6 +6371,247 @@ export class SunMoon {
5827
6371
  readonly sun: Float64Array;
5828
6372
  }
5829
6373
 
6374
+ /**
6375
+ * A parsed CCSDS Tracking Data Message.
6376
+ */
6377
+ export class Tdm {
6378
+ private constructor();
6379
+ free(): void;
6380
+ [Symbol.dispose](): void;
6381
+ /**
6382
+ * Encode this TDM as canonical CCSDS KVN text.
6383
+ */
6384
+ toKvnString(): string;
6385
+ /**
6386
+ * Header comments in parse order.
6387
+ */
6388
+ readonly comments: string[];
6389
+ /**
6390
+ * Optional `CREATION_DATE` header value.
6391
+ */
6392
+ readonly creationDate: string | undefined;
6393
+ /**
6394
+ * Header fields not part of the common modeled header.
6395
+ */
6396
+ readonly headerFields: TdmField[];
6397
+ /**
6398
+ * Optional `MESSAGE_ID` header value.
6399
+ */
6400
+ readonly messageId: string | undefined;
6401
+ /**
6402
+ * Optional `ORIGINATOR` header value.
6403
+ */
6404
+ readonly originator: string | undefined;
6405
+ /**
6406
+ * Number of segments in the message.
6407
+ */
6408
+ readonly segmentCount: number;
6409
+ /**
6410
+ * Metadata/data segments in message order.
6411
+ */
6412
+ readonly segments: TdmSegment[];
6413
+ /**
6414
+ * The `CCSDS_TDM_VERS` header value.
6415
+ */
6416
+ readonly version: string;
6417
+ }
6418
+
6419
+ /**
6420
+ * One time-tagged TDM tracking data record.
6421
+ */
6422
+ export class TdmDataRecord {
6423
+ private constructor();
6424
+ free(): void;
6425
+ [Symbol.dispose](): void;
6426
+ /**
6427
+ * Raw epoch string.
6428
+ */
6429
+ readonly epoch: string;
6430
+ /**
6431
+ * Original data keyword.
6432
+ */
6433
+ readonly keyword: string;
6434
+ /**
6435
+ * Observable family label such as `"range"` or `"receiveFreq"`.
6436
+ */
6437
+ readonly observableKind: string;
6438
+ /**
6439
+ * Participant suffix for frequency records, or `undefined`.
6440
+ */
6441
+ readonly observableParticipant: number | undefined;
6442
+ /**
6443
+ * Original name for a table-defined keyword modeled as `other`.
6444
+ */
6445
+ readonly otherObservable: string | undefined;
6446
+ /**
6447
+ * Numeric value plus exact decimal token.
6448
+ */
6449
+ readonly scalar: TdmScalar;
6450
+ /**
6451
+ * Canonical unit label assigned by CCSDS 503.0-B-2.
6452
+ */
6453
+ readonly unit: string;
6454
+ /**
6455
+ * Parsed numeric observable value.
6456
+ */
6457
+ readonly value: number;
6458
+ /**
6459
+ * Exact decimal token used for KVN encoding.
6460
+ */
6461
+ readonly valueText: string;
6462
+ }
6463
+
6464
+ /**
6465
+ * A TDM data block.
6466
+ */
6467
+ export class TdmDataSection {
6468
+ private constructor();
6469
+ free(): void;
6470
+ [Symbol.dispose](): void;
6471
+ /**
6472
+ * Data-section comments in parse order.
6473
+ */
6474
+ readonly comments: string[];
6475
+ /**
6476
+ * Data records in parse order.
6477
+ */
6478
+ readonly records: TdmDataRecord[];
6479
+ }
6480
+
6481
+ /**
6482
+ * A KVN key/value field preserved in parse order.
6483
+ */
6484
+ export class TdmField {
6485
+ private constructor();
6486
+ free(): void;
6487
+ [Symbol.dispose](): void;
6488
+ /**
6489
+ * The KVN keyword.
6490
+ */
6491
+ readonly key: string;
6492
+ /**
6493
+ * The trimmed KVN value.
6494
+ */
6495
+ readonly value: string;
6496
+ }
6497
+
6498
+ /**
6499
+ * Metadata extracted from a TDM `META_START` / `META_STOP` block.
6500
+ */
6501
+ export class TdmMetadata {
6502
+ private constructor();
6503
+ free(): void;
6504
+ [Symbol.dispose](): void;
6505
+ /**
6506
+ * Return the last metadata value for `key`, or `undefined`.
6507
+ */
6508
+ getLast(key: string): string | undefined;
6509
+ /**
6510
+ * Metadata comments in parse order.
6511
+ */
6512
+ readonly comments: string[];
6513
+ /**
6514
+ * Raw metadata fields in parse order.
6515
+ */
6516
+ readonly fields: TdmField[];
6517
+ /**
6518
+ * Optional `MODE` value.
6519
+ */
6520
+ readonly mode: string | undefined;
6521
+ /**
6522
+ * Parsed `PARTICIPANT_n` entries.
6523
+ */
6524
+ readonly participants: TdmParticipant[];
6525
+ /**
6526
+ * Parsed `PATH`, `PATH_1`, and `PATH_2` entries.
6527
+ */
6528
+ readonly paths: TdmPath[];
6529
+ /**
6530
+ * Range unit label used by `RANGE` records.
6531
+ */
6532
+ readonly rangeUnits: string;
6533
+ /**
6534
+ * Optional `TIME_SYSTEM` value.
6535
+ */
6536
+ readonly timeSystem: string | undefined;
6537
+ /**
6538
+ * Optional `TIMETAG_REF` value.
6539
+ */
6540
+ readonly timetagRef: string | undefined;
6541
+ }
6542
+
6543
+ /**
6544
+ * One named TDM tracking participant.
6545
+ */
6546
+ export class TdmParticipant {
6547
+ private constructor();
6548
+ free(): void;
6549
+ [Symbol.dispose](): void;
6550
+ /**
6551
+ * Numeric suffix from `PARTICIPANT_n`.
6552
+ */
6553
+ readonly index: number;
6554
+ /**
6555
+ * Participant name.
6556
+ */
6557
+ readonly name: string;
6558
+ }
6559
+
6560
+ /**
6561
+ * A parsed TDM signal path from `PATH`, `PATH_1`, or `PATH_2`.
6562
+ */
6563
+ export class TdmPath {
6564
+ private constructor();
6565
+ free(): void;
6566
+ [Symbol.dispose](): void;
6567
+ /**
6568
+ * Path suffix for `PATH_n`, or `undefined` for unindexed `PATH`.
6569
+ */
6570
+ readonly index: number | undefined;
6571
+ /**
6572
+ * Original path keyword.
6573
+ */
6574
+ readonly key: string;
6575
+ /**
6576
+ * Participant indices listed in path order.
6577
+ */
6578
+ readonly participants: Uint8Array;
6579
+ }
6580
+
6581
+ /**
6582
+ * A numeric TDM record value plus its exact decimal token.
6583
+ */
6584
+ export class TdmScalar {
6585
+ private constructor();
6586
+ free(): void;
6587
+ [Symbol.dispose](): void;
6588
+ /**
6589
+ * Exact decimal or scientific-notation token read from the message.
6590
+ */
6591
+ readonly text: string;
6592
+ /**
6593
+ * Parsed finite `f64` value.
6594
+ */
6595
+ readonly value: number;
6596
+ }
6597
+
6598
+ /**
6599
+ * One TDM segment, consisting of metadata and data blocks.
6600
+ */
6601
+ export class TdmSegment {
6602
+ private constructor();
6603
+ free(): void;
6604
+ [Symbol.dispose](): void;
6605
+ /**
6606
+ * Tracking data records for this segment.
6607
+ */
6608
+ readonly data: TdmDataSection;
6609
+ /**
6610
+ * Metadata describing this segment's records.
6611
+ */
6612
+ readonly metadata: TdmMetadata;
6613
+ }
6614
+
5830
6615
  /**
5831
6616
  * Terrain datum conversion and optional geoid-grid loading error variants.
5832
6617
  */
@@ -5960,6 +6745,28 @@ export class TerrainStoreTileIndex {
5960
6745
  readonly verticalDatum: VerticalDatum;
5961
6746
  }
5962
6747
 
6748
+ /**
6749
+ * A supported terrestrial reference-frame realization.
6750
+ */
6751
+ export enum TerrestrialFrame {
6752
+ /**
6753
+ * International Terrestrial Reference Frame 2020.
6754
+ */
6755
+ Itrf2020 = 0,
6756
+ /**
6757
+ * International Terrestrial Reference Frame 2014.
6758
+ */
6759
+ Itrf2014 = 1,
6760
+ /**
6761
+ * International Terrestrial Reference Frame 2008.
6762
+ */
6763
+ Itrf2008 = 2,
6764
+ /**
6765
+ * European Terrestrial Reference Frame 2020.
6766
+ */
6767
+ Etrf2020 = 3,
6768
+ }
6769
+
5963
6770
  /**
5964
6771
  * A named time scale. The JS value matches the variant order below.
5965
6772
  */
@@ -6000,6 +6807,14 @@ export enum TimeScale {
6000
6807
  * QZSS system time (steered to GPST).
6001
6808
  */
6002
6809
  Qzsst = 8,
6810
+ /**
6811
+ * Geocentric Coordinate Time.
6812
+ */
6813
+ Tcg = 9,
6814
+ /**
6815
+ * Barycentric Coordinate Time.
6816
+ */
6817
+ Tcb = 10,
6003
6818
  }
6004
6819
 
6005
6820
  /**
@@ -6039,6 +6854,15 @@ export class Tle {
6039
6854
  * position (km) and velocity (km/s). Throws an `Error` on SGP4 failure.
6040
6855
  */
6041
6856
  propagate(epochs_unix_us: BigInt64Array): TlePropagation;
6857
+ /**
6858
+ * Propagate over unix-microsecond epochs with an opt-in decay latch.
6859
+ *
6860
+ * The returned TEME arrays match [`propagate`] until the first decay-like
6861
+ * SGP4 failure. At that point the core latch records the failing epoch and
6862
+ * this method throws. Later calls using the same latch at that epoch or a
6863
+ * later one also throw, while raw [`propagate`] remains stateless.
6864
+ */
6865
+ propagateWithDecayLatch(epochs_unix_us: BigInt64Array, latch: DecayLatch): TlePropagation;
6042
6866
  /**
6043
6867
  * Re-encode the parsed elements as the two 69-character TLE lines (with
6044
6868
  * checksums), as a `[line1, line2]` string array. For a well-formed input
@@ -6363,6 +7187,16 @@ export function acquire(samples: Float64Array, prn: bigint, options: any): Acqui
6363
7187
  */
6364
7188
  export function allanDeviation(series: any, tau0_s: number, averaging_factors: any): any;
6365
7189
 
7190
+ /**
7191
+ * Exact ADEV log-log slope for a power-law noise type.
7192
+ */
7193
+ export function allanDeviationPowerLawSlope(noise_type: PowerLawNoiseType): number;
7194
+
7195
+ /**
7196
+ * Exact Allan-variance tau exponent for a power-law noise type.
7197
+ */
7198
+ export function allanVariancePowerLawTauExponent(noise_type: PowerLawNoiseType): number;
7199
+
6366
7200
  /**
6367
7201
  * Alpha-beta measurement update applied to a predicted scalar state.
6368
7202
  *
@@ -6727,6 +7561,14 @@ export function defaultSppFrequencyHz(system: GnssSystem): number | undefined;
6727
7561
  */
6728
7562
  export function detectCycleSlips(arc: any, options: any): SlipResult[];
6729
7563
 
7564
+ /**
7565
+ * Detect candidate displacement steps in a station position series.
7566
+ *
7567
+ * `options` may set `windowYears`, `scoreThreshold`, `minOffsetM`,
7568
+ * `minSamplesEachSide`, `minSeparationYears`, and nested `midas` controls.
7569
+ */
7570
+ export function detectSteps(series: any, options: any): any;
7571
+
6730
7572
  /**
6731
7573
  * Apply base pseudorange corrections to rover observations by satellite token.
6732
7574
  *
@@ -6999,6 +7841,14 @@ export function findTcaCandidates(primary_line1: string, primary_line2: string,
6999
7841
  */
7000
7842
  export function findTcaConjunctions(primary_line1: string, primary_line2: string, secondary_line1: string, secondary_line2: string, window_start_unix_micros: bigint, window_end_unix_micros: bigint, pc_options: any, options: any): any;
7001
7843
 
7844
+ /**
7845
+ * Fit every satellite declared in a parsed ECEF SP3 precise product.
7846
+ *
7847
+ * The residual ledger is computed against the original Earth-fixed SP3
7848
+ * observations by the core fit path.
7849
+ */
7850
+ export function fitAllSp3EcefPreciseOrbits(sp3: Sp3, options: any): any;
7851
+
7002
7852
  /**
7003
7853
  * Fit a piecewise reduced-orbit model: tile `[t0, t1]` into segments of
7004
7854
  * `segmentSeconds` and fit each independently.
@@ -7028,6 +7878,25 @@ export function fitPiecewiseReducedOrbitSp3(sp3: Sp3, satellite: string, options
7028
7878
  */
7029
7879
  export function fitPiecewiseReducedOrbitTle(tle: Tle, options: any): PiecewiseOrbitSourceFit;
7030
7880
 
7881
+ /**
7882
+ * Identify power-law clock-noise regions from ADEV and MDEV curves.
7883
+ *
7884
+ * `adev` and `mdev` are `{ tauS, deviation, n }` objects, matching the output
7885
+ * from the Allan-family functions. `options` may set `basicTauS`,
7886
+ * `measurementBandwidthHz`, `minPointsPerOctave`, `slopeTolerance`, and
7887
+ * `scatterTolerance`.
7888
+ */
7889
+ export function fitPowerLawNoise(adev: any, mdev: any, options: any): any;
7890
+
7891
+ /**
7892
+ * Fit one satellite orbit from caller-supplied precise ephemeris samples.
7893
+ *
7894
+ * `samples` is the same array accepted by `preciseEphemerisSamplesFromSamples`:
7895
+ * `{ sat, epoch, positionEcefM, clockS?, clockEvent? }` with epochs in seconds
7896
+ * since J2000.
7897
+ */
7898
+ export function fitPreciseEphemerisSampleOrbit(samples: any, satellite: string, options: any): any;
7899
+
7031
7900
  /**
7032
7901
  * Fit a reduced-orbit model to ECEF position samples.
7033
7902
  *
@@ -7054,11 +7923,46 @@ export function fitReducedOrbitSp3(sp3: Sp3, satellite: string, options: any): R
7054
7923
  */
7055
7924
  export function fitReducedOrbitTle(tle: Tle, options: any): ReducedOrbitSourceFit;
7056
7925
 
7926
+ /**
7927
+ * Fit one satellite orbit from a parsed ECEF SP3 precise product.
7928
+ *
7929
+ * `satellite` is an IGS token such as `"G01"`. SP3 position and optional
7930
+ * velocity records are transformed from Earth-fixed coordinates through the
7931
+ * core `TdbEarthOrientationProvider` before fitting.
7932
+ */
7933
+ export function fitSp3EcefPreciseOrbit(sp3: Sp3, satellite: string, options: any): any;
7934
+
7935
+ /**
7936
+ * Fit selected satellite orbits from a parsed ECEF SP3 precise product.
7937
+ *
7938
+ * `satellites` is a string array of IGS tokens such as `["G01", "G02"]`.
7939
+ * The Earth-fixed to inertial conversion is handled by the core provider.
7940
+ */
7941
+ export function fitSp3EcefPreciseOrbits(sp3: Sp3, satellites: any, options: any): any;
7942
+
7943
+ /**
7944
+ * Fit one satellite orbit from a parsed SP3 precise product.
7945
+ *
7946
+ * `satellite` is an IGS token such as `"G01"`. `options` may set
7947
+ * `forceModel`, `integrator`, `integratorOptions`, `solverOptions`,
7948
+ * `linearSolve`, `minLedgerSamples`, and `drag`.
7949
+ */
7950
+ export function fitSp3PreciseOrbit(sp3: Sp3, satellite: string, options: any): any;
7951
+
7057
7952
  /**
7058
7953
  * Fit SGP4 mean elements and optional B* to TEME state samples.
7059
7954
  */
7060
7955
  export function fitTle(samples: any, config: any): TleFit;
7061
7956
 
7957
+ /**
7958
+ * Fit a geodetic trajectory model with velocity, seasonal, and step terms.
7959
+ *
7960
+ * `model` may set `referenceEpochYear`, `includeAnnual`,
7961
+ * `includeSemiannual`, and `offsetEpochsYear`. `options` may set `loss`,
7962
+ * `fScaleM`, and `maxNfev`.
7963
+ */
7964
+ export function fitTrajectory(series: any, model: any, options: any): any;
7965
+
7062
7966
  /**
7063
7967
  * Fix Melbourne-Wubbena wide-lane ambiguities over a dual-frequency RTK arc.
7064
7968
  *
@@ -7089,6 +7993,43 @@ export function forceJ2Acceleration(position_km: Float64Array, velocity_km_s: Fl
7089
7993
  */
7090
7994
  export function forceTwoBodyAcceleration(position_km: Float64Array, velocity_km_s: Float64Array): Float64Array;
7091
7995
 
7996
+ /**
7997
+ * Return the built-in terrestrial frame catalog entries.
7998
+ */
7999
+ export function frameCatalog(): HelmertTransform[];
8000
+
8001
+ /**
8002
+ * Return the published catalog entry for the requested forward direction.
8003
+ */
8004
+ export function frameCatalogEntry(from: TerrestrialFrame, to: TerrestrialFrame): HelmertTransform | undefined;
8005
+
8006
+ /**
8007
+ * Propagate a station position from one decimal year to another.
8008
+ *
8009
+ * `positionM` and `velocityMPerYear` are length-3 arrays in metres and metres
8010
+ * per year. Returns a length-3 array in metres. Delegates to
8011
+ * `sidereon_core::frame_catalog::propagate_position`.
8012
+ */
8013
+ export function frameCatalogPropagatePosition(position_m: Float64Array, velocity_m_per_year: Float64Array, from_epoch_year: number, to_epoch_year: number): Float64Array;
8014
+
8015
+ /**
8016
+ * Transform a Cartesian station position and optional velocity between frames.
8017
+ *
8018
+ * `positionM` is a length-3 metre array. `velocityMPerYear` may be `undefined`
8019
+ * or a length-3 metres-per-year array. Returns a plain object with
8020
+ * `positionM` and `velocityMPerYear` (`null` when no velocity was supplied).
8021
+ */
8022
+ export function frameCatalogTransform(position_m: Float64Array, velocity_m_per_year: Float64Array | null | undefined, from: TerrestrialFrame, to: TerrestrialFrame, epoch_year: number): any;
8023
+
8024
+ /**
8025
+ * Propagate a station to a transform epoch, then transform it between frames.
8026
+ *
8027
+ * `positionEpochYear` is the epoch of the input coordinates. The transform is
8028
+ * evaluated at `transformEpochYear`. Returns a plain object with `positionM`
8029
+ * and `velocityMPerYear`.
8030
+ */
8031
+ export function frameCatalogTransformFromEpoch(position_m: Float64Array, velocity_m_per_year: Float64Array, position_epoch_year: number, from: TerrestrialFrame, to: TerrestrialFrame, transform_epoch_year: number): any;
8032
+
7092
8033
  /**
7093
8034
  * Build constellation identity records from a CelesTrak OMM JSON-array text.
7094
8035
  *
@@ -7148,6 +8089,32 @@ export function gamma(f1_hz: number, f2_hz: number): number;
7148
8089
  */
7149
8090
  export function gcrsToItrs(position_km: Float64Array, epochs_unix_us: BigInt64Array, skyfield_compat?: boolean | null): Float64Array;
7150
8091
 
8092
+ /**
8093
+ * Solve the WGS84 direct geodesic problem.
8094
+ *
8095
+ * Inputs are point 1 latitude, longitude, forward azimuth, and geodesic
8096
+ * distance. Angles are degrees and `distanceM` is metres. Returns
8097
+ * `{ lat2Deg, lon2Deg, finalAzimuthDeg }`. Delegates to
8098
+ * `sidereon_core::geodesic::geodesic_direct`.
8099
+ */
8100
+ export function geodesicDirect(lat1_deg: number, lon1_deg: number, initial_azimuth_deg: number, distance_m: number): any;
8101
+
8102
+ /**
8103
+ * Stable string label for a [`GeodesicError`] enum value.
8104
+ */
8105
+ export function geodesicErrorLabel(error: GeodesicError): string;
8106
+
8107
+ /**
8108
+ * Solve the WGS84 inverse geodesic problem.
8109
+ *
8110
+ * Inputs are point 1 latitude and longitude followed by point 2 latitude and
8111
+ * longitude, all in degrees. Longitudes may be outside `[-180, 180]`. Returns
8112
+ * `{ distanceM, initialAzimuthDeg, finalAzimuthDeg }`, with distance in metres
8113
+ * and azimuths in degrees. Delegates to
8114
+ * `sidereon_core::geodesic::geodesic_inverse`.
8115
+ */
8116
+ export function geodesicInverse(lat1_deg: number, lon1_deg: number, lat2_deg: number, lon2_deg: number): any;
8117
+
7151
8118
  /**
7152
8119
  * Convert a batch of geodetic coordinates to ITRS (ECEF).
7153
8120
  *
@@ -7690,6 +8657,26 @@ export function meridianTransits(body: string, station: any, start_unix_us: bigi
7690
8657
 
7691
8658
  export function meridianTransitsSpk(spk: Spk, body: string, station: any, start_unix_us: bigint, end_unix_us: bigint, step_s: number, tolerance_s: number): any;
7692
8659
 
8660
+ /**
8661
+ * Rotate an ECEF covariance to ENU and compute position-error metrics.
8662
+ *
8663
+ * `receiver` is `{ latRad, lonRad, heightM? }` with radians and metres.
8664
+ */
8665
+ export function metricsFromEcefCovarianceM2(covariance_ecef_m2: any, receiver: any): PositionErrorMetrics;
8666
+
8667
+ /**
8668
+ * Compute position-error metrics from an ENU covariance in square metres.
8669
+ */
8670
+ export function metricsFromEnuCovarianceM2(covariance_enu_m2: any): PositionErrorMetrics;
8671
+
8672
+ /**
8673
+ * Compute position-error metrics from a kinematic solution object.
8674
+ *
8675
+ * The object must include `positionM` and `positionCovarianceM2`; optional
8676
+ * extra kinematic fields are accepted and ignored by this metric calculation.
8677
+ */
8678
+ export function metricsFromKinematicSolution(solution: any): PositionErrorMetrics;
8679
+
7693
8680
  /**
7694
8681
  * Modified Allan deviation for explicit averaging factors.
7695
8682
  *
@@ -7699,6 +8686,11 @@ export function meridianTransitsSpk(spk: Spk, body: string, station: any, start_
7699
8686
  */
7700
8687
  export function modifiedAdev(series: any, tau0_s: number, averaging_factors: any): any;
7701
8688
 
8689
+ /**
8690
+ * Exact MDEV log-log slope for a power-law noise type.
8691
+ */
8692
+ export function modifiedAllanDeviationPowerLawSlope(noise_type: PowerLawNoiseType): number;
8693
+
7702
8694
  /**
7703
8695
  * Mean, variance, skewness, and excess kurtosis of a residual set in one pass.
7704
8696
  *
@@ -7781,6 +8773,15 @@ export function nequickGDelayM(_eval: any, frequency_hz: number): number;
7781
8773
  */
7782
8774
  export function nequickGStecTecu(_eval: any): number;
7783
8775
 
8776
+ /**
8777
+ * Estimate a station network velocity field in one local ENU frame.
8778
+ *
8779
+ * The input is `{ frame: { origin, removeCommonMode? }, stations }`. Each
8780
+ * station has `{ id, reference, series }`, and each series follows
8781
+ * `velocityMidas`.
8782
+ */
8783
+ export function networkField(input: any): any;
8784
+
7784
8785
  /**
7785
8786
  * Scalar normalized innovation squared statistic.
7786
8787
  */
@@ -7908,6 +8909,14 @@ export function observeSpkBody(station: any, epoch_unix_us: bigint, spk: Spk, na
7908
8909
  */
7909
8910
  export function oceanTideLoading(station_ecef_m: Float64Array, year: number, month: number, day: number, fractional_hour: number, amplitude_m: Float64Array, phase_deg: Float64Array): Float64Array;
7910
8911
 
8912
+ /**
8913
+ * Broadcast-derived per-satellite orbit-repeat lag, in seconds.
8914
+ *
8915
+ * `satellite` is an IGS token such as `"G01"`, and `nearEpochJ2000S` is the
8916
+ * broadcast-selection epoch in seconds since J2000.
8917
+ */
8918
+ export function orbitRepeatLag(ephemeris: BroadcastEphemeris, satellite: string, near_epoch_j2000_s: number): number;
8919
+
7911
8920
  /**
7912
8921
  * Orthometric height `H = h - N` (metres above mean sea level) from an
7913
8922
  * ellipsoidal height and a geodetic position in radians, using the built-in
@@ -8060,6 +9069,11 @@ export function parseSpaceWeatherCsv(text: string): SpaceWeatherTable;
8060
9069
  */
8061
9070
  export function parseSpaceWeatherTxt(text: string): SpaceWeatherTable;
8062
9071
 
9072
+ /**
9073
+ * Parse a CCSDS Tracking Data Message in KVN form.
9074
+ */
9075
+ export function parseTdmKvn(text: string): Tdm;
9076
+
8063
9077
  /**
8064
9078
  * Parse a multi-record TLE file (CelesTrak / Space-Track style) into named,
8065
9079
  * initialized [`Tle`] instances. Handles bare 2-line sets, 3-line name+line1+line2
@@ -8070,6 +9084,14 @@ export function parseSpaceWeatherTxt(text: string): SpaceWeatherTable;
8070
9084
  */
8071
9085
  export function parseTleFile(text: string, ops_mode_label?: string | null): ParsedTleFile;
8072
9086
 
9087
+ /**
9088
+ * Score repeating components at candidate periods.
9089
+ *
9090
+ * `series` and `candidatePeriodsS` are JS number arrays. `sampleIntervalS`
9091
+ * defaults to one second. The result is an array of `{ periodS, strength }`.
9092
+ */
9093
+ export function periodicityStrength(series: any, candidate_periods_s: any, sample_interval_s?: number | null): any;
9094
+
8073
9095
  /**
8074
9096
  * Sun-satellite-observer phase angle in degrees.
8075
9097
  */
@@ -8181,7 +9203,7 @@ export function propagateKepler(coe: any, mu_km3_s2: number, dt_s: number): any;
8181
9203
  * epochs.
8182
9204
  *
8183
9205
  * `request` is a plain object; see the `PropagateStateRequest` TypeScript type.
8184
- * Throws a `TypeError` for malformed input (wrong shape, unknown selector), a
9206
+ * Throws a `TypeError` for malformed input (wrong layout, unknown selector), a
8185
9207
  * `RangeError` for a non-positive initial step, and an `Error` if the engine's
8186
9208
  * propagation fails.
8187
9209
  */
@@ -8218,6 +9240,25 @@ export function rangeRateToDoppler(range_rate_m_s: number, carrier_hz: number):
8218
9240
 
8219
9241
  export function relativeState(chief: any, deputy: any): any;
8220
9242
 
9243
+ /**
9244
+ * Compute pre-data ARAIM reliability using an ARAIM ISM range-error model.
9245
+ *
9246
+ * `geometry` and `ism` use the same plain objects accepted by `araim`.
9247
+ * `options` follows `reliabilityDesign`. External effects are returned in local
9248
+ * east, north, up metres. Uncheckable rows return `null` for optional fields.
9249
+ */
9250
+ export function reliabilityAraim(geometry: any, ism: any, options: any): any;
9251
+
9252
+ /**
9253
+ * Compute pre-data reliability from supplied range design rows.
9254
+ *
9255
+ * `rows` is an array of `{ id, designRow, sigmaM }` objects. `options` may set
9256
+ * `{ alpha?, power?, beta?, lambda0Override?, lambda0?, minRedundancy? }`.
9257
+ * `power` is converted to the core missed-detection probability. Rows below
9258
+ * `minRedundancy` return `null` for `mdbM`, `externalEnuM`, and `biasToNoise`.
9259
+ */
9260
+ export function reliabilityDesign(rows: any, options: any): any;
9261
+
8221
9262
  /**
8222
9263
  * Repair RINEX navigation text.
8223
9264
  */
@@ -8228,6 +9269,11 @@ export function repairRinexNav(bytes: Uint8Array, options: any): RinexNavRepair;
8228
9269
  */
8229
9270
  export function repairRinexObs(bytes: Uint8Array, options: any): RinexObsRepair;
8230
9271
 
9272
+ /**
9273
+ * Default ground-track repeat period for a GNSS constellation, in seconds.
9274
+ */
9275
+ export function repeatPeriod(system: GnssSystem): number;
9276
+
8231
9277
  /**
8232
9278
  * Build a sampled GPS C/A code replica, an `Int8Array`.
8233
9279
  */
@@ -8341,12 +9387,26 @@ export function satelliteVisualMagnitude(range_km: number, phase_angle_deg: numb
8341
9387
  */
8342
9388
  export function sbasCorrectedState(broadcast: BroadcastEphemeris, store: SbasCorrectionStore, geo: string, sat: string, t_j2000_s: number, mode?: string | null): any;
8343
9389
 
9390
+ /**
9391
+ * Stable string label for an [`SbasPlError`] enum value.
9392
+ */
9393
+ export function sbasPlErrorLabel(error: SbasPlError): string;
9394
+
8344
9395
  /**
8345
9396
  * Convert an SBAS broadcast PRN number such as `129` to an SBAS satellite
8346
9397
  * token such as `"S29"`. Returns `null` when the PRN is outside the SBAS range.
8347
9398
  */
8348
9399
  export function sbasPrnToSat(broadcast_prn: number): any;
8349
9400
 
9401
+ /**
9402
+ * Compute SBAS horizontal and vertical protection levels.
9403
+ *
9404
+ * `geometry` is the ARAIM protection geometry object with rows, receiver, and
9405
+ * clock systems. `model` supplies one range-error row per satellite. `k`
9406
+ * supplies the fixed SBAS multipliers.
9407
+ */
9408
+ export function sbasProtectionLevels(geometry: any, model: SbasErrorModel, k: SbasKMultipliers): SbasProtection;
9409
+
8350
9410
  /**
8351
9411
  * Screen a primary satellite against a secondary TLE catalog for threshold TCAs.
8352
9412
  *
@@ -8408,6 +9468,16 @@ export function selectSp3OverRange(products: Sp3[], start_epoch_j2000_s: number,
8408
9468
  */
8409
9469
  export function shadowFraction(satellite_position_km: Float64Array, sun_position_km: Float64Array): Float64Array;
8410
9470
 
9471
+ /**
9472
+ * Shadow fraction in `[0, 1]` for position batches with an explicit Earth
9473
+ * shadow model.
9474
+ *
9475
+ * `satellitePositionKm` and `sunPositionKm` are flat row-major `(n, 3)`
9476
+ * `Float64Array`s. `EarthShadowModel.Spherical` is bit-identical to
9477
+ * [`shadowFraction`].
9478
+ */
9479
+ export function shadowFractionWithModel(satellite_position_km: Float64Array, sun_position_km: Float64Array, model: EarthShadowModel): Float64Array;
9480
+
8411
9481
  /**
8412
9482
  * Shapiro-Wilk normality test on a residual set.
8413
9483
  *
@@ -8418,6 +9488,15 @@ export function shadowFraction(satellite_position_km: Float64Array, sun_position
8418
9488
  */
8419
9489
  export function shapiroWilk(x: Float64Array): any;
8420
9490
 
9491
+ /**
9492
+ * Apply a sidereal residual filter to a scalar series.
9493
+ *
9494
+ * `series` is a JS number array, `periodS` is seconds, and `options` may set
9495
+ * `sampleIntervalS`, `priorPeriods`, `minCoverage`, and `templateMethod`.
9496
+ * Returns `{ filtered, template, coverage, underCovered }`.
9497
+ */
9498
+ export function siderealFilter(series: any, period_s: number, options: any): any;
9499
+
8421
9500
  /**
8422
9501
  * Build satellite-keyed pseudorange sigmas in metres from `{ satelliteId,
8423
9502
  * elevationDeg, cn0Dbhz? }` entries. Invalid entries are dropped by the core.
@@ -8746,6 +9825,11 @@ export function terminatorLatitudeDeg(sub_solar_latitude_deg: number, sub_solar_
8746
9825
  */
8747
9826
  export function terrainStoreChecksum64(bytes: Uint8Array): bigint;
8748
9827
 
9828
+ /**
9829
+ * Stable string label for a [`TerrestrialFrame`] enum value.
9830
+ */
9831
+ export function terrestrialFrameLabel(frame: TerrestrialFrame): string;
9832
+
8749
9833
  /**
8750
9834
  * Time deviation for explicit averaging factors.
8751
9835
  *
@@ -8853,6 +9937,15 @@ export function validate(records: any): any;
8853
9937
  */
8854
9938
  export function validateAgainstSp3Ids(records: any, ids: any): any;
8855
9939
 
9940
+ /**
9941
+ * Estimate robust station velocity with the MIDAS method.
9942
+ *
9943
+ * `series` is `{ samples, frame? }`, where samples are
9944
+ * `{ epochYear, positionM, covarianceM2? }`. The frame is `"enu"` by default
9945
+ * or `{ kind: "ecef", reference }`.
9946
+ */
9947
+ export function velocityMidas(series: any, options: any): any;
9948
+
8856
9949
  /**
8857
9950
  * Satellites visible above `minElevationDeg` from `station` at a single instant,
8858
9951
  * from already-initialized [`Tle`]s: the opsmode-preserving constellation
@@ -8901,3 +9994,12 @@ export function wideLaneWavelength(f1_hz: number, f2_hz: number): number;
8901
9994
  * Convert a DTED tile tree and write canonical terrain store bytes to a path.
8902
9995
  */
8903
9996
  export function writeDtedTreeToMmapStore(root: string, out_path: string): void;
9997
+
9998
+ /**
9999
+ * Compute Baarda's w-test noncentrality from false-alarm probability and power.
10000
+ *
10001
+ * `alpha` is the two-sided false-alarm probability. `power` is detection power,
10002
+ * so the core missed-detection probability is `1 - power`. The returned object
10003
+ * contains the core-provided `delta0` and `lambda0` values.
10004
+ */
10005
+ export function wtestNoncentrality(alpha: number, power: number): any;