@neilberkman/sidereon 1.1.1 → 1.2.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.
@@ -6623,6 +6623,34 @@ export class RinexClock {
6623
6623
  readonly series: ClockSeries[];
6624
6624
  }
6625
6625
 
6626
+ /**
6627
+ * Result of lenient RINEX NAV parsing.
6628
+ *
6629
+ * `records` contains the supported records in file order and `skipped`
6630
+ * contains malformed supported blocks reported by the core parser.
6631
+ */
6632
+ export class RinexNavParse {
6633
+ private constructor();
6634
+ free(): void;
6635
+ [Symbol.dispose](): void;
6636
+ /**
6637
+ * Number of supported records returned by the parser.
6638
+ */
6639
+ readonly recordCount: number;
6640
+ /**
6641
+ * Supported broadcast records in file order.
6642
+ */
6643
+ readonly records: BroadcastRecordJs[];
6644
+ /**
6645
+ * Supported blocks skipped by the lenient core parser, in file order.
6646
+ */
6647
+ readonly skipped: SkippedNavBlock[];
6648
+ /**
6649
+ * Number of supported blocks skipped by the parser.
6650
+ */
6651
+ readonly skippedCount: number;
6652
+ }
6653
+
6626
6654
  /**
6627
6655
  * Navigation repair result.
6628
6656
  */
@@ -7019,6 +7047,43 @@ export class SbasKMultipliers {
7019
7047
  readonly kV: number;
7020
7048
  }
7021
7049
 
7050
+ /**
7051
+ * One timestamped SBAS message row parsed from an EMS or RTKLIB text log.
7052
+ */
7053
+ export class SbasLogBlock {
7054
+ private constructor();
7055
+ free(): void;
7056
+ [Symbol.dispose](): void;
7057
+ /**
7058
+ * Decode this raw message using its parsed wire form.
7059
+ */
7060
+ decode(): any;
7061
+ /**
7062
+ * Raw SBAS bytes in the form selected by the core parser.
7063
+ */
7064
+ readonly bytes: Uint8Array;
7065
+ /**
7066
+ * Core-selected wire form: `"framed250"` or `"body226"`.
7067
+ */
7068
+ readonly form: string;
7069
+ /**
7070
+ * SBAS satellite token, such as `"S20"`.
7071
+ */
7072
+ readonly satellite: string;
7073
+ /**
7074
+ * SBAS satellite token, such as `"S20"`.
7075
+ */
7076
+ readonly satelliteId: string;
7077
+ /**
7078
+ * Seconds of GPS week of the parsed message epoch.
7079
+ */
7080
+ readonly towS: number;
7081
+ /**
7082
+ * GPS week of the parsed message epoch.
7083
+ */
7084
+ readonly week: number;
7085
+ }
7086
+
7022
7087
  /**
7023
7088
  * SBAS protection-level input or numerical failure.
7024
7089
  */
@@ -7220,6 +7285,26 @@ export class SignalPolicy {
7220
7285
  withSystem(system: GnssSystem, codes: string[]): SignalPolicy;
7221
7286
  }
7222
7287
 
7288
+ /**
7289
+ * One supported RINEX NAV block that the core parser could not represent.
7290
+ *
7291
+ * The diagnostic is retained by [`parseRinexNavLenient`] instead of turning a
7292
+ * malformed supported block into a fatal whole-file error.
7293
+ */
7294
+ export class SkippedNavBlock {
7295
+ private constructor();
7296
+ free(): void;
7297
+ [Symbol.dispose](): void;
7298
+ /**
7299
+ * Core parser diagnostic explaining why the block was skipped.
7300
+ */
7301
+ readonly message: string;
7302
+ /**
7303
+ * Satellite token from the skipped block, such as `"G01"`.
7304
+ */
7305
+ readonly satellite: string;
7306
+ }
7307
+
7223
7308
  /**
7224
7309
  * Reason a carrier-phase arc split was flagged.
7225
7310
  */
@@ -9614,6 +9699,18 @@ export function correlateAgainst(iq: Float64Array, code: Int8Array, sample_rate_
9614
9699
  */
9615
9700
  export function correlationAt(code_a: Int8Array, code_b: Int8Array, lag: bigint): number;
9616
9701
 
9702
+ /**
9703
+ * Convert a validated flat row-major 6x6 covariance from km²-based state
9704
+ * units to m²-based state units.
9705
+ */
9706
+ export function covariance6KmToM(covariance: Float64Array): Float64Array;
9707
+
9708
+ /**
9709
+ * Convert a validated flat row-major 6x6 covariance from m²-based state
9710
+ * units to km²-based state units.
9711
+ */
9712
+ export function covariance6MToKm(covariance: Float64Array): Float64Array;
9713
+
9617
9714
  /**
9618
9715
  * Fitted parameter covariance from a converged solve, scaling `(J^T J)^-1` by
9619
9716
  * the post-fit reduced chi-square `s_sq = 2 * cost / (m - n)` (the same scale
@@ -9657,6 +9754,16 @@ export function cwPropagate(rel: any, n_rad_s: number, dt_s: number): any;
9657
9754
 
9658
9755
  export function cwStm(n_rad_s: number, dt_s: number): Float64Array;
9659
9756
 
9757
+ /**
9758
+ * Integer day-of-year from a validated product date.
9759
+ */
9760
+ export function dataDayOfYear(year: number, month: number, day: number): number;
9761
+
9762
+ /**
9763
+ * Fractional day-of-year from a civil calendar date and time.
9764
+ */
9765
+ export function dayOfYear(year: number, month: number, day: number, hour: number, minute: number, second: number): number;
9766
+
9660
9767
  /**
9661
9768
  * Decode Compact RINEX (Hatanaka) bytes into plain RINEX OBS text. Throws a
9662
9769
  * `TypeError` on non-UTF-8 input and an `Error` on a decode failure.
@@ -9858,6 +9965,12 @@ export function eccentricToTrue(eccentric_anomaly_rad: number, eccentricity: num
9858
9965
  */
9859
9966
  export function ecefToGeodetic(position_km: Float64Array): Float64Array;
9860
9967
 
9968
+ /**
9969
+ * Transform a flat row-major 6x6 ECI state covariance into RTN coordinates.
9970
+ * Position is in km and velocity is in km/s.
9971
+ */
9972
+ export function eciToRtnCovariance6(covariance: Float64Array, position_km: Float64Array, velocity_km_s: Float64Array): Float64Array;
9973
+
9861
9974
  /**
9862
9975
  * Eclipse status for satellite and Sun position batches, km. Returns a
9863
9976
  * `string[]` of `"sunlit"` / `"penumbra"` / `"umbra"`.
@@ -9935,6 +10048,13 @@ export function emissionMediaStatusLabel(status: EmissionMediaStatus): string;
9935
10048
  */
9936
10049
  export function encodeCrinex(rinex_text: string): string;
9937
10050
 
10051
+ /**
10052
+ * Encode an arbitrary caller-supplied list of broadcast records as RINEX NAV
10053
+ * text. The list is consumed by the WASM boundary and the bytes are produced
10054
+ * by the core's deterministic encoder.
10055
+ */
10056
+ export function encodeRinexNav(records: BroadcastRecordJs[]): string;
10057
+
9938
10058
  /**
9939
10059
  * Encode a constructed RTCM message into a message body (without the transport
9940
10060
  * frame).
@@ -10531,6 +10651,12 @@ export function hessianTrace(jacobian: Float64Array, m: number, n: number): numb
10531
10651
  */
10532
10652
  export function horizontalRadiusAt(covariance_enu_m2: any, probability: number): PercentileRadius;
10533
10653
 
10654
+ /**
10655
+ * Interpolate two validated same-frame flat row-major 6x6 covariances with
10656
+ * the core PSD-preserving interpolation.
10657
+ */
10658
+ export function interpolateCovariance6(covariance_a: Float64Array, covariance_b: Float64Array, u: number): Float64Array;
10659
+
10534
10660
  /**
10535
10661
  * Gauss angles-only orbit determination.
10536
10662
  *
@@ -11380,6 +11506,16 @@ export function parseRinexLeapSeconds(bytes: Uint8Array): number | undefined;
11380
11506
  */
11381
11507
  export function parseRinexNav(bytes: Uint8Array): BroadcastEphemeris;
11382
11508
 
11509
+ /**
11510
+ * Parse RINEX NAV bytes leniently through the core parser.
11511
+ *
11512
+ * Header failures remain fatal. Malformed supported record blocks are
11513
+ * returned in `skipped` with their satellite token and core diagnostic;
11514
+ * unsupported systems and message rosters retain the core parser's skip
11515
+ * policy. Non-UTF-8 input throws a `TypeError`.
11516
+ */
11517
+ export function parseRinexNavLenient(bytes: Uint8Array): RinexNavParse;
11518
+
11383
11519
  /**
11384
11520
  * Parse all supported GPS, Galileo, and BeiDou broadcast records from NAV
11385
11521
  * bytes, before the store's default health and message-policy filter.
@@ -11392,6 +11528,16 @@ export function parseRinexNavRecords(bytes: Uint8Array): BroadcastRecordJs[];
11392
11528
  */
11393
11529
  export function parseRinexObs(bytes: Uint8Array): RinexObs;
11394
11530
 
11531
+ /**
11532
+ * Parse timestamped SBAS EMS log lines into raw message blocks.
11533
+ */
11534
+ export function parseSbasEmsLines(text: string): SbasLogBlock[];
11535
+
11536
+ /**
11537
+ * Parse timestamped RTKLIB SBAS log lines into raw message blocks.
11538
+ */
11539
+ export function parseSbasRtklibLines(text: string): SbasLogBlock[];
11540
+
11395
11541
  /**
11396
11542
  * Parse either CSV or fixed-width TXT space-weather bytes.
11397
11543
  */
@@ -11714,6 +11860,25 @@ export function rinexBandFrequencyHz(system: GnssSystem, band: string, glonass_c
11714
11860
  */
11715
11861
  export function rinexBandWavelengthM(system: GnssSystem, band: string, glonass_channel?: number | null): number | undefined;
11716
11862
 
11863
+ /**
11864
+ * RINEX observation-code frequency in hertz for a system and full code.
11865
+ *
11866
+ * `rinex_version` is passed to the core policy because some constellation
11867
+ * band meanings depend on the RINEX minor version. GLONASS G1/G2 codes also
11868
+ * require the FDMA channel number. Returns `undefined` when the core has no
11869
+ * mapping for the supplied system/code combination.
11870
+ */
11871
+ export function rinexObservationFrequencyHz(system: GnssSystem, code: string, rinex_version: number, glonass_channel?: number | null): number | undefined;
11872
+
11873
+ /**
11874
+ * RINEX observation-code wavelength in metres for a system and full code.
11875
+ *
11876
+ * This uses the same version-aware observation-code policy as
11877
+ * [`rinexObservationFrequencyHz`]. Returns `undefined` when no core mapping
11878
+ * exists.
11879
+ */
11880
+ export function rinexObservationWavelengthM(system: GnssSystem, code: string, rinex_version: number, glonass_channel?: number | null): number | undefined;
11881
+
11717
11882
  export function rswRotation(position_km: Float64Array, velocity_km_s: Float64Array): Float64Array;
11718
11883
 
11719
11884
  /**
@@ -11765,6 +11930,12 @@ export function rtnRotation(position_km: Float64Array, velocity_km_s: Float64Arr
11765
11930
  */
11766
11931
  export function rtnToEciCovariance(covariance_rtn: Float64Array, position_km: Float64Array, velocity_km_s: Float64Array): Float64Array;
11767
11932
 
11933
+ /**
11934
+ * Transform a flat row-major 6x6 RTN state covariance into ECI coordinates.
11935
+ * Position is in km and velocity is in km/s.
11936
+ */
11937
+ export function rtnToEciCovariance6(covariance: Float64Array, position_km: Float64Array, velocity_km_s: Float64Array): Float64Array;
11938
+
11768
11939
  /**
11769
11940
  * Convert an inertial Cartesian state to classical orbital elements.
11770
11941
  *
@@ -11865,6 +12036,11 @@ export function seasons(start_unix_us: bigint, end_unix_us: bigint, step_s: numb
11865
12036
 
11866
12037
  export function seasonsSpk(spk: Spk, start_unix_us: bigint, end_unix_us: bigint, step_s: number, tolerance_s: number): any;
11867
12038
 
12039
+ /**
12040
+ * Seconds elapsed since the beginning of a civil day.
12041
+ */
12042
+ export function secondOfDay(hour: number, minute: number, second: number): number;
12043
+
11868
12044
  /**
11869
12045
  * Select an IONEX product usable at `requestedEpochJ2000S`, degrading to a
11870
12046
  * diurnal-shifted prior product within `policy`.