@neilberkman/sidereon 0.15.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.
@@ -1249,6 +1249,31 @@ export class CoverageGrid {
1249
1249
  readonly stationCount: number;
1250
1250
  }
1251
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
+
1252
1277
  /**
1253
1278
  * SBAS degradation terms used when deriving an error model from a store.
1254
1279
  */
@@ -1600,6 +1625,34 @@ export class DtedTerrain {
1600
1625
  constructor(root: string);
1601
1626
  }
1602
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
+
1603
1656
  /**
1604
1657
  * Loaded EGM96 15-arcminute geoid grid for explicit terrain datum conversion.
1605
1658
  */
@@ -1905,6 +1958,17 @@ export class FrameStates {
1905
1958
  readonly velocityKmS: Float64Array;
1906
1959
  }
1907
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
+
1908
1972
  /**
1909
1973
  * A regular latitude/longitude grid of geoid undulation samples with bilinear
1910
1974
  * interpolation, wrapping a real (loaded) geoid model.
@@ -1920,6 +1984,23 @@ export class GeoidGrid {
1920
1984
  * Ellipsoidal height from orthometric height and radians.
1921
1985
  */
1922
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;
1923
2004
  /**
1924
2005
  * Parse an EGM96 `WW15MGH.DAC` byte buffer into a full-resolution grid.
1925
2006
  */
@@ -2230,6 +2311,93 @@ export class GroundTrack {
2230
2311
  readonly lonDeg: Float64Array;
2231
2312
  }
2232
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
+
2233
2401
  /**
2234
2402
  * A point in time, tagged UTC, with the precise time scales resolved.
2235
2403
  *
@@ -6203,6 +6371,247 @@ export class SunMoon {
6203
6371
  readonly sun: Float64Array;
6204
6372
  }
6205
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
+
6206
6615
  /**
6207
6616
  * Terrain datum conversion and optional geoid-grid loading error variants.
6208
6617
  */
@@ -6336,6 +6745,28 @@ export class TerrainStoreTileIndex {
6336
6745
  readonly verticalDatum: VerticalDatum;
6337
6746
  }
6338
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
+
6339
6770
  /**
6340
6771
  * A named time scale. The JS value matches the variant order below.
6341
6772
  */
@@ -6376,6 +6807,14 @@ export enum TimeScale {
6376
6807
  * QZSS system time (steered to GPST).
6377
6808
  */
6378
6809
  Qzsst = 8,
6810
+ /**
6811
+ * Geocentric Coordinate Time.
6812
+ */
6813
+ Tcg = 9,
6814
+ /**
6815
+ * Barycentric Coordinate Time.
6816
+ */
6817
+ Tcb = 10,
6379
6818
  }
6380
6819
 
6381
6820
  /**
@@ -6415,6 +6854,15 @@ export class Tle {
6415
6854
  * position (km) and velocity (km/s). Throws an `Error` on SGP4 failure.
6416
6855
  */
6417
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;
6418
6866
  /**
6419
6867
  * Re-encode the parsed elements as the two 69-character TLE lines (with
6420
6868
  * checksums), as a `[line1, line2]` string array. For a well-formed input
@@ -7393,6 +7841,14 @@ export function findTcaCandidates(primary_line1: string, primary_line2: string,
7393
7841
  */
7394
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;
7395
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
+
7396
7852
  /**
7397
7853
  * Fit a piecewise reduced-orbit model: tile `[t0, t1]` into segments of
7398
7854
  * `segmentSeconds` and fit each independently.
@@ -7467,6 +7923,23 @@ export function fitReducedOrbitSp3(sp3: Sp3, satellite: string, options: any): R
7467
7923
  */
7468
7924
  export function fitReducedOrbitTle(tle: Tle, options: any): ReducedOrbitSourceFit;
7469
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
+
7470
7943
  /**
7471
7944
  * Fit one satellite orbit from a parsed SP3 precise product.
7472
7945
  *
@@ -7520,6 +7993,43 @@ export function forceJ2Acceleration(position_km: Float64Array, velocity_km_s: Fl
7520
7993
  */
7521
7994
  export function forceTwoBodyAcceleration(position_km: Float64Array, velocity_km_s: Float64Array): Float64Array;
7522
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
+
7523
8033
  /**
7524
8034
  * Build constellation identity records from a CelesTrak OMM JSON-array text.
7525
8035
  *
@@ -7579,6 +8089,32 @@ export function gamma(f1_hz: number, f2_hz: number): number;
7579
8089
  */
7580
8090
  export function gcrsToItrs(position_km: Float64Array, epochs_unix_us: BigInt64Array, skyfield_compat?: boolean | null): Float64Array;
7581
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
+
7582
8118
  /**
7583
8119
  * Convert a batch of geodetic coordinates to ITRS (ECEF).
7584
8120
  *
@@ -8533,6 +9069,11 @@ export function parseSpaceWeatherCsv(text: string): SpaceWeatherTable;
8533
9069
  */
8534
9070
  export function parseSpaceWeatherTxt(text: string): SpaceWeatherTable;
8535
9071
 
9072
+ /**
9073
+ * Parse a CCSDS Tracking Data Message in KVN form.
9074
+ */
9075
+ export function parseTdmKvn(text: string): Tdm;
9076
+
8536
9077
  /**
8537
9078
  * Parse a multi-record TLE file (CelesTrak / Space-Track style) into named,
8538
9079
  * initialized [`Tle`] instances. Handles bare 2-line sets, 3-line name+line1+line2
@@ -8927,6 +9468,16 @@ export function selectSp3OverRange(products: Sp3[], start_epoch_j2000_s: number,
8927
9468
  */
8928
9469
  export function shadowFraction(satellite_position_km: Float64Array, sun_position_km: Float64Array): Float64Array;
8929
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
+
8930
9481
  /**
8931
9482
  * Shapiro-Wilk normality test on a residual set.
8932
9483
  *
@@ -9274,6 +9825,11 @@ export function terminatorLatitudeDeg(sub_solar_latitude_deg: number, sub_solar_
9274
9825
  */
9275
9826
  export function terrainStoreChecksum64(bytes: Uint8Array): bigint;
9276
9827
 
9828
+ /**
9829
+ * Stable string label for a [`TerrestrialFrame`] enum value.
9830
+ */
9831
+ export function terrestrialFrameLabel(frame: TerrestrialFrame): string;
9832
+
9277
9833
  /**
9278
9834
  * Time deviation for explicit averaging factors.
9279
9835
  *
@@ -9444,6 +10000,6 @@ export function writeDtedTreeToMmapStore(root: string, out_path: string): void;
9444
10000
  *
9445
10001
  * `alpha` is the two-sided false-alarm probability. `power` is detection power,
9446
10002
  * so the core missed-detection probability is `1 - power`. The returned object
9447
- * contains `delta0` and `lambda0 = delta0 * delta0`.
10003
+ * contains the core-provided `delta0` and `lambda0` values.
9448
10004
  */
9449
10005
  export function wtestNoncentrality(alpha: number, power: number): any;