@neilberkman/sidereon 0.11.0 → 0.12.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.
package/pkg/sidereon.js CHANGED
@@ -3791,6 +3791,12 @@ export class DragForce {
3791
3791
  }
3792
3792
  if (Symbol.dispose) DragForce.prototype[Symbol.dispose] = DragForce.prototype.free;
3793
3793
 
3794
+ /**
3795
+ * A DTED terrain tile cache rooted at a directory of DTED Level 2 files.
3796
+ *
3797
+ * Heights are ORTHOMETRIC terrain elevations in meters. Point order is always
3798
+ * longitude first, then latitude, both in degrees.
3799
+ */
3794
3800
  export class DtedTerrain {
3795
3801
  __destroy_into_raw() {
3796
3802
  const ptr = this.__wbg_ptr;
@@ -3803,6 +3809,30 @@ export class DtedTerrain {
3803
3809
  wasm.__wbg_dtedterrain_free(ptr, 0);
3804
3810
  }
3805
3811
  /**
3812
+ * Batch terrain heights in ORTHOMETRIC meters for longitude-first points.
3813
+ *
3814
+ * `points` is an array of `[longitudeDeg, latitudeDeg]` pairs or
3815
+ * `{ longitudeDeg, latitudeDeg }` objects. `options.interpolation` is
3816
+ * `"bilinear"`, `"nearest"`, or `"nearestPosting"`. The return value is
3817
+ * index-aligned to `points`; each entry is `{ ok: true, heightM }` or
3818
+ * `{ ok: false, error }`. Missing tiles evaluate to `0.0`.
3819
+ * @param {any} points
3820
+ * @param {any} options
3821
+ * @returns {any}
3822
+ */
3823
+ heightBatch(points, options) {
3824
+ const ret = wasm.dtedterrain_heightBatch(this.__wbg_ptr, points, options);
3825
+ if (ret[2]) {
3826
+ throw takeFromExternrefTable0(ret[1]);
3827
+ }
3828
+ return takeFromExternrefTable0(ret[0]);
3829
+ }
3830
+ /**
3831
+ * Terrain height in ORTHOMETRIC meters at `(longitudeDeg, latitudeDeg)`.
3832
+ *
3833
+ * Longitude and latitude are degrees. The lookup uses bilinear
3834
+ * interpolation. Missing tiles evaluate to `0.0`, matching the core DTED
3835
+ * fallback.
3806
3836
  * @param {number} longitude_deg
3807
3837
  * @param {number} latitude_deg
3808
3838
  * @returns {number}
@@ -3815,6 +3845,11 @@ export class DtedTerrain {
3815
3845
  return ret[0];
3816
3846
  }
3817
3847
  /**
3848
+ * Terrain height in ORTHOMETRIC meters at `(longitudeDeg, latitudeDeg)`.
3849
+ *
3850
+ * Longitude and latitude are degrees. `options.interpolation` is
3851
+ * `"bilinear"`, `"nearest"`, or `"nearestPosting"`. Missing tiles evaluate
3852
+ * to `0.0`, matching the core DTED fallback.
3818
3853
  * @param {number} longitude_deg
3819
3854
  * @param {number} latitude_deg
3820
3855
  * @param {any} options
@@ -3828,6 +3863,10 @@ export class DtedTerrain {
3828
3863
  return ret[0];
3829
3864
  }
3830
3865
  /**
3866
+ * Create a DTED terrain reader rooted at `root`.
3867
+ *
3868
+ * The root may contain tile files directly or the nested block layout the
3869
+ * core reader recognizes. Height results are ORTHOMETRIC meters.
3831
3870
  * @param {string} root
3832
3871
  */
3833
3872
  constructor(root) {
@@ -3841,6 +3880,99 @@ export class DtedTerrain {
3841
3880
  }
3842
3881
  if (Symbol.dispose) DtedTerrain.prototype[Symbol.dispose] = DtedTerrain.prototype.free;
3843
3882
 
3883
+ /**
3884
+ * Loaded EGM96 15-arcminute geoid grid for explicit terrain datum conversion.
3885
+ */
3886
+ export class Egm96FifteenMinuteGeoid {
3887
+ static __wrap(ptr) {
3888
+ const obj = Object.create(Egm96FifteenMinuteGeoid.prototype);
3889
+ obj.__wbg_ptr = ptr;
3890
+ Egm96FifteenMinuteGeoidFinalization.register(obj, obj.__wbg_ptr, obj);
3891
+ return obj;
3892
+ }
3893
+ __destroy_into_raw() {
3894
+ const ptr = this.__wbg_ptr;
3895
+ this.__wbg_ptr = 0;
3896
+ Egm96FifteenMinuteGeoidFinalization.unregister(this);
3897
+ return ptr;
3898
+ }
3899
+ free() {
3900
+ const ptr = this.__destroy_into_raw();
3901
+ wasm.__wbg_egm96fifteenminutegeoid_free(ptr, 0);
3902
+ }
3903
+ /**
3904
+ * Load `WW15MGH.DAC` bytes as an EGM96 15-arcminute geoid grid.
3905
+ * @param {Uint8Array} bytes
3906
+ * @returns {Egm96FifteenMinuteGeoid}
3907
+ */
3908
+ static fromWw15mghDacBytes(bytes) {
3909
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
3910
+ const len0 = WASM_VECTOR_LEN;
3911
+ const ret = wasm.egm96fifteenminutegeoid_fromWw15mghDacBytes(ptr0, len0);
3912
+ if (ret[2]) {
3913
+ throw takeFromExternrefTable0(ret[1]);
3914
+ }
3915
+ return Egm96FifteenMinuteGeoid.__wrap(ret[0]);
3916
+ }
3917
+ /**
3918
+ * Read and load `WW15MGH.DAC` from disk. A missing file throws a typed
3919
+ * `MissingEgm96Dac` error with `path` and `remediation` fields.
3920
+ * @param {string} path
3921
+ * @returns {Egm96FifteenMinuteGeoid}
3922
+ */
3923
+ static fromWw15mghDacPath(path) {
3924
+ const ptr0 = passStringToWasm0(path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
3925
+ const len0 = WASM_VECTOR_LEN;
3926
+ const ret = wasm.egm96fifteenminutegeoid_fromWw15mghDacPath(ptr0, len0);
3927
+ if (ret[2]) {
3928
+ throw takeFromExternrefTable0(ret[1]);
3929
+ }
3930
+ return Egm96FifteenMinuteGeoid.__wrap(ret[0]);
3931
+ }
3932
+ }
3933
+ if (Symbol.dispose) Egm96FifteenMinuteGeoid.prototype[Symbol.dispose] = Egm96FifteenMinuteGeoid.prototype.free;
3934
+
3935
+ /**
3936
+ * Ellipsoidal height `h` in metres above the WGS84 reference ellipsoid.
3937
+ */
3938
+ export class EllipsoidalHeightM {
3939
+ static __wrap(ptr) {
3940
+ const obj = Object.create(EllipsoidalHeightM.prototype);
3941
+ obj.__wbg_ptr = ptr;
3942
+ EllipsoidalHeightMFinalization.register(obj, obj.__wbg_ptr, obj);
3943
+ return obj;
3944
+ }
3945
+ __destroy_into_raw() {
3946
+ const ptr = this.__wbg_ptr;
3947
+ this.__wbg_ptr = 0;
3948
+ EllipsoidalHeightMFinalization.unregister(this);
3949
+ return ptr;
3950
+ }
3951
+ free() {
3952
+ const ptr = this.__destroy_into_raw();
3953
+ wasm.__wbg_ellipsoidalheightm_free(ptr, 0);
3954
+ }
3955
+ /**
3956
+ * Build an ellipsoidal height `h` in metres.
3957
+ * @param {number} value_m
3958
+ */
3959
+ constructor(value_m) {
3960
+ const ret = wasm.ellipsoidalheightm_new(value_m);
3961
+ this.__wbg_ptr = ret;
3962
+ EllipsoidalHeightMFinalization.register(this, this.__wbg_ptr, this);
3963
+ return this;
3964
+ }
3965
+ /**
3966
+ * Ellipsoidal height `h`, metres above the WGS84 reference ellipsoid.
3967
+ * @returns {number}
3968
+ */
3969
+ get valueM() {
3970
+ const ret = wasm.ellipsoidalheightm_valueM(this.__wbg_ptr);
3971
+ return ret;
3972
+ }
3973
+ }
3974
+ if (Symbol.dispose) EllipsoidalHeightM.prototype[Symbol.dispose] = EllipsoidalHeightM.prototype.free;
3975
+
3844
3976
  /**
3845
3977
  * Orthonormal encounter frame built from two relative states.
3846
3978
  */
@@ -5456,6 +5588,24 @@ export class Ionex {
5456
5588
  const ret = wasm.ionex_baseRadiusKm(this.__wbg_ptr);
5457
5589
  return ret;
5458
5590
  }
5591
+ /**
5592
+ * Signed latitude grid step, degrees. Standard IONEX grids are
5593
+ * north-to-south, so this value is usually negative.
5594
+ * @returns {number}
5595
+ */
5596
+ get dlatDeg() {
5597
+ const ret = wasm.ionex_dlatDeg(this.__wbg_ptr);
5598
+ return ret;
5599
+ }
5600
+ /**
5601
+ * Signed longitude grid step, degrees. Standard IONEX grids are
5602
+ * west-to-east, so this value is usually positive.
5603
+ * @returns {number}
5604
+ */
5605
+ get dlonDeg() {
5606
+ const ret = wasm.ionex_dlonDeg(this.__wbg_ptr);
5607
+ return ret;
5608
+ }
5459
5609
  /**
5460
5610
  * The IONEX `EXPONENT` header field; the TEC scale is `10^exponent`.
5461
5611
  * @returns {number}
@@ -5529,6 +5679,36 @@ export class Ionex {
5529
5679
  }
5530
5680
  return ret[0];
5531
5681
  }
5682
+ /**
5683
+ * Extract the full IONEX vertical-TEC grids as plain sample data.
5684
+ *
5685
+ * Epochs are integer seconds since J2000. Latitude and longitude nodes and
5686
+ * grid steps are degrees. TEC and RMS maps are TECU and indexed
5687
+ * `[map][iLat][iLon]`. The shell height and base radius are kilometers.
5688
+ * @returns {any}
5689
+ */
5690
+ tecGridSamples() {
5691
+ const ret = wasm.ionex_tecGridSamples(this.__wbg_ptr);
5692
+ if (ret[2]) {
5693
+ throw takeFromExternrefTable0(ret[1]);
5694
+ }
5695
+ return takeFromExternrefTable0(ret[0]);
5696
+ }
5697
+ /**
5698
+ * Extract one IONEX vertical-TEC sample per grid node.
5699
+ *
5700
+ * Each sample is `{ epochJ2000S, latDeg, lonDeg, vtecTecu, rmsTecu }`.
5701
+ * Epochs are integer seconds since J2000, coordinates are degrees, and TEC
5702
+ * and RMS values are TECU.
5703
+ * @returns {any}
5704
+ */
5705
+ tecSamples() {
5706
+ const ret = wasm.ionex_tecSamples(this.__wbg_ptr);
5707
+ if (ret[2]) {
5708
+ throw takeFromExternrefTable0(ret[1]);
5709
+ }
5710
+ return takeFromExternrefTable0(ret[0]);
5711
+ }
5532
5712
  /**
5533
5713
  * Serialize to standard IONEX text. Deterministic: the same product always
5534
5714
  * produces byte-identical text, and re-parsing the output yields an equal
@@ -6830,6 +7010,255 @@ export class MappingFactors {
6830
7010
  }
6831
7011
  if (Symbol.dispose) MappingFactors.prototype[Symbol.dispose] = MappingFactors.prototype.free;
6832
7012
 
7013
+ /**
7014
+ * In-memory reader for memory-mappable terrain store bytes.
7015
+ *
7016
+ * Query results are orthometric terrain heights `H` in metres. Use the
7017
+ * ellipsoidal methods only when a geoid model is deliberately selected.
7018
+ */
7019
+ export class MmapTerrain {
7020
+ static __wrap(ptr) {
7021
+ const obj = Object.create(MmapTerrain.prototype);
7022
+ obj.__wbg_ptr = ptr;
7023
+ MmapTerrainFinalization.register(obj, obj.__wbg_ptr, obj);
7024
+ return obj;
7025
+ }
7026
+ __destroy_into_raw() {
7027
+ const ptr = this.__wbg_ptr;
7028
+ this.__wbg_ptr = 0;
7029
+ MmapTerrainFinalization.unregister(this);
7030
+ return ptr;
7031
+ }
7032
+ free() {
7033
+ const ptr = this.__destroy_into_raw();
7034
+ wasm.__wbg_mmapterrain_free(ptr, 0);
7035
+ }
7036
+ /**
7037
+ * FNV-1a checksum of the full terrain store byte span.
7038
+ * @returns {bigint}
7039
+ */
7040
+ checksum64() {
7041
+ const ret = wasm.mmapterrain_checksum64(this.__wbg_ptr);
7042
+ return BigInt.asUintN(64, ret);
7043
+ }
7044
+ /**
7045
+ * Ellipsoidal height `h = H + N` in metres at `(longitudeDeg, latitudeDeg)`
7046
+ * using the embedded EGM96 1-degree geoid grid.
7047
+ * @param {number} longitude_deg
7048
+ * @param {number} latitude_deg
7049
+ * @returns {EllipsoidalHeightM}
7050
+ */
7051
+ ellipsoidalHeightM(longitude_deg, latitude_deg) {
7052
+ const ret = wasm.mmapterrain_ellipsoidalHeightM(this.__wbg_ptr, longitude_deg, latitude_deg);
7053
+ if (ret[2]) {
7054
+ throw takeFromExternrefTable0(ret[1]);
7055
+ }
7056
+ return EllipsoidalHeightM.__wrap(ret[0]);
7057
+ }
7058
+ /**
7059
+ * Ellipsoidal height `h = H + N` in metres using an explicit geoid model.
7060
+ *
7061
+ * The terrain lookup input order is `(longitudeDeg, latitudeDeg)`. Choosing
7062
+ * the EGM96 15-arcminute model requires a loaded `WW15MGH.DAC` grid and
7063
+ * does not fall back to the embedded 1-degree grid.
7064
+ * @param {number} longitude_deg
7065
+ * @param {number} latitude_deg
7066
+ * @param {any} options
7067
+ * @param {TerrainGeoidModel} geoid
7068
+ * @returns {EllipsoidalHeightM}
7069
+ */
7070
+ ellipsoidalHeightMWithModel(longitude_deg, latitude_deg, options, geoid) {
7071
+ _assertClass(geoid, TerrainGeoidModel);
7072
+ const ret = wasm.mmapterrain_ellipsoidalHeightMWithModel(this.__wbg_ptr, longitude_deg, latitude_deg, options, geoid.__wbg_ptr);
7073
+ if (ret[2]) {
7074
+ throw takeFromExternrefTable0(ret[1]);
7075
+ }
7076
+ return EllipsoidalHeightM.__wrap(ret[0]);
7077
+ }
7078
+ /**
7079
+ * Ellipsoidal height `h = H + N` in metres using embedded EGM96 1-degree
7080
+ * geoid conversion and explicit terrain lookup options.
7081
+ * @param {number} longitude_deg
7082
+ * @param {number} latitude_deg
7083
+ * @param {any} options
7084
+ * @returns {EllipsoidalHeightM}
7085
+ */
7086
+ ellipsoidalHeightMWithOptions(longitude_deg, latitude_deg, options) {
7087
+ const ret = wasm.mmapterrain_ellipsoidalHeightMWithOptions(this.__wbg_ptr, longitude_deg, latitude_deg, options);
7088
+ if (ret[2]) {
7089
+ throw takeFromExternrefTable0(ret[1]);
7090
+ }
7091
+ return EllipsoidalHeightM.__wrap(ret[0]);
7092
+ }
7093
+ /**
7094
+ * Parse terrain store bytes from a `Uint8Array`.
7095
+ * @param {Uint8Array} bytes
7096
+ * @returns {MmapTerrain}
7097
+ */
7098
+ static fromBytes(bytes) {
7099
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
7100
+ const len0 = WASM_VECTOR_LEN;
7101
+ const ret = wasm.mmapterrain_fromBytes(ptr0, len0);
7102
+ if (ret[2]) {
7103
+ throw takeFromExternrefTable0(ret[1]);
7104
+ }
7105
+ return MmapTerrain.__wrap(ret[0]);
7106
+ }
7107
+ /**
7108
+ * Read a terrain store file from host I/O and parse it into memory.
7109
+ *
7110
+ * Browser runtimes should use [`MmapTerrain.fromBytes`] with fetched bytes.
7111
+ * @param {string} path
7112
+ * @returns {MmapTerrain}
7113
+ */
7114
+ static fromPath(path) {
7115
+ const ptr0 = passStringToWasm0(path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
7116
+ const len0 = WASM_VECTOR_LEN;
7117
+ const ret = wasm.mmapterrain_fromPath(ptr0, len0);
7118
+ if (ret[2]) {
7119
+ throw takeFromExternrefTable0(ret[1]);
7120
+ }
7121
+ return MmapTerrain.__wrap(ret[0]);
7122
+ }
7123
+ /**
7124
+ * Parse terrain store bytes from an owned `Uint8Array` copy.
7125
+ * @param {Uint8Array} bytes
7126
+ * @returns {MmapTerrain}
7127
+ */
7128
+ static fromVec(bytes) {
7129
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
7130
+ const len0 = WASM_VECTOR_LEN;
7131
+ const ret = wasm.mmapterrain_fromVec(ptr0, len0);
7132
+ if (ret[2]) {
7133
+ throw takeFromExternrefTable0(ret[1]);
7134
+ }
7135
+ return MmapTerrain.__wrap(ret[0]);
7136
+ }
7137
+ /**
7138
+ * Batch ORTHOMETRIC terrain heights for longitude-first points.
7139
+ *
7140
+ * `points` is an array of `[longitudeDeg, latitudeDeg]` pairs or
7141
+ * `{ longitudeDeg, latitudeDeg }` objects. Each entry is
7142
+ * `{ ok: true, heightM }` or `{ ok: false, error }`.
7143
+ * @param {any} points
7144
+ * @param {any} options
7145
+ * @returns {any}
7146
+ */
7147
+ heightBatch(points, options) {
7148
+ const ret = wasm.mmapterrain_heightBatch(this.__wbg_ptr, points, options);
7149
+ if (ret[2]) {
7150
+ throw takeFromExternrefTable0(ret[1]);
7151
+ }
7152
+ return takeFromExternrefTable0(ret[0]);
7153
+ }
7154
+ /**
7155
+ * Terrain height in ORTHOMETRIC metres at `(longitudeDeg, latitudeDeg)`.
7156
+ *
7157
+ * Longitude and latitude are degrees. The lookup uses bilinear
7158
+ * interpolation. Missing tiles evaluate to `0.0`.
7159
+ * @param {number} longitude_deg
7160
+ * @param {number} latitude_deg
7161
+ * @returns {number}
7162
+ */
7163
+ heightM(longitude_deg, latitude_deg) {
7164
+ const ret = wasm.mmapterrain_heightM(this.__wbg_ptr, longitude_deg, latitude_deg);
7165
+ if (ret[2]) {
7166
+ throw takeFromExternrefTable0(ret[1]);
7167
+ }
7168
+ return ret[0];
7169
+ }
7170
+ /**
7171
+ * Terrain height in ORTHOMETRIC metres at `(longitudeDeg, latitudeDeg)`.
7172
+ *
7173
+ * `options.interpolation` is `"bilinear"`, `"nearest"`, or
7174
+ * `"nearestPosting"`.
7175
+ * @param {number} longitude_deg
7176
+ * @param {number} latitude_deg
7177
+ * @param {any} options
7178
+ * @returns {number}
7179
+ */
7180
+ heightMWithOptions(longitude_deg, latitude_deg, options) {
7181
+ const ret = wasm.mmapterrain_heightMWithOptions(this.__wbg_ptr, longitude_deg, latitude_deg, options);
7182
+ if (ret[2]) {
7183
+ throw takeFromExternrefTable0(ret[1]);
7184
+ }
7185
+ return ret[0];
7186
+ }
7187
+ /**
7188
+ * Batch typed ORTHOMETRIC terrain heights for longitude-first points.
7189
+ *
7190
+ * Each entry is `{ ok: true, orthometricHeightM: { valueM } }` or
7191
+ * `{ ok: false, error }`.
7192
+ * @param {any} points
7193
+ * @param {any} options
7194
+ * @returns {any}
7195
+ */
7196
+ orthometricHeightBatch(points, options) {
7197
+ const ret = wasm.mmapterrain_orthometricHeightBatch(this.__wbg_ptr, points, options);
7198
+ if (ret[2]) {
7199
+ throw takeFromExternrefTable0(ret[1]);
7200
+ }
7201
+ return takeFromExternrefTable0(ret[0]);
7202
+ }
7203
+ /**
7204
+ * Typed ORTHOMETRIC terrain height `H` at `(longitudeDeg, latitudeDeg)`.
7205
+ * @param {number} longitude_deg
7206
+ * @param {number} latitude_deg
7207
+ * @returns {OrthometricHeightM}
7208
+ */
7209
+ orthometricHeightM(longitude_deg, latitude_deg) {
7210
+ const ret = wasm.mmapterrain_orthometricHeightM(this.__wbg_ptr, longitude_deg, latitude_deg);
7211
+ if (ret[2]) {
7212
+ throw takeFromExternrefTable0(ret[1]);
7213
+ }
7214
+ return OrthometricHeightM.__wrap(ret[0]);
7215
+ }
7216
+ /**
7217
+ * Typed ORTHOMETRIC terrain height `H` at `(longitudeDeg, latitudeDeg)`
7218
+ * with explicit lookup options.
7219
+ * @param {number} longitude_deg
7220
+ * @param {number} latitude_deg
7221
+ * @param {any} options
7222
+ * @returns {OrthometricHeightM}
7223
+ */
7224
+ orthometricHeightMWithOptions(longitude_deg, latitude_deg, options) {
7225
+ const ret = wasm.mmapterrain_orthometricHeightMWithOptions(this.__wbg_ptr, longitude_deg, latitude_deg, options);
7226
+ if (ret[2]) {
7227
+ throw takeFromExternrefTable0(ret[1]);
7228
+ }
7229
+ return OrthometricHeightM.__wrap(ret[0]);
7230
+ }
7231
+ /**
7232
+ * Parsed tile index records in store order.
7233
+ * @returns {TerrainStoreTileIndex[]}
7234
+ */
7235
+ tileIndex() {
7236
+ const ret = wasm.mmapterrain_tileIndex(this.__wbg_ptr);
7237
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
7238
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
7239
+ return v1;
7240
+ }
7241
+ /**
7242
+ * Canonical store bytes for this parsed terrain store.
7243
+ * @returns {Uint8Array}
7244
+ */
7245
+ toBytes() {
7246
+ const ret = wasm.mmapterrain_toBytes(this.__wbg_ptr);
7247
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
7248
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
7249
+ return v1;
7250
+ }
7251
+ /**
7252
+ * File-level vertical datum for the store's orthometric posting payloads.
7253
+ * @returns {VerticalDatum}
7254
+ */
7255
+ get verticalDatum() {
7256
+ const ret = wasm.mmapterrain_verticalDatum(this.__wbg_ptr);
7257
+ return ret;
7258
+ }
7259
+ }
7260
+ if (Symbol.dispose) MmapTerrain.prototype[Symbol.dispose] = MmapTerrain.prototype.free;
7261
+
6833
7262
  /**
6834
7263
  * One refined Moon elevation threshold crossing (moonrise / moonset).
6835
7264
  */
@@ -7763,10 +8192,228 @@ export const ObservationKind = Object.freeze({
7763
8192
  */
7764
8193
  SignalStrength: 3, "3": "SignalStrength",
7765
8194
  /**
7766
- * Unknown leading RINEX code letter.
8195
+ * Unknown leading RINEX code letter.
8196
+ */
8197
+ Unknown: 4, "4": "Unknown",
8198
+ });
8199
+
8200
+ /**
8201
+ * Aggregate observation QC report.
8202
+ */
8203
+ export class ObservationQcReport {
8204
+ static __wrap(ptr) {
8205
+ const obj = Object.create(ObservationQcReport.prototype);
8206
+ obj.__wbg_ptr = ptr;
8207
+ ObservationQcReportFinalization.register(obj, obj.__wbg_ptr, obj);
8208
+ return obj;
8209
+ }
8210
+ __destroy_into_raw() {
8211
+ const ptr = this.__wbg_ptr;
8212
+ this.__wbg_ptr = 0;
8213
+ ObservationQcReportFinalization.unregister(this);
8214
+ return ptr;
8215
+ }
8216
+ free() {
8217
+ const ptr = this.__destroy_into_raw();
8218
+ wasm.__wbg_observationqcreport_free(ptr, 0);
8219
+ }
8220
+ /**
8221
+ * @returns {any}
8222
+ */
8223
+ get clockJumps() {
8224
+ const ret = wasm.observationqcreport_clockJumps(this.__wbg_ptr);
8225
+ if (ret[2]) {
8226
+ throw takeFromExternrefTable0(ret[1]);
8227
+ }
8228
+ return takeFromExternrefTable0(ret[0]);
8229
+ }
8230
+ /**
8231
+ * @returns {any}
8232
+ */
8233
+ get cycleSlips() {
8234
+ const ret = wasm.observationqcreport_cycleSlips(this.__wbg_ptr);
8235
+ if (ret[2]) {
8236
+ throw takeFromExternrefTable0(ret[1]);
8237
+ }
8238
+ return takeFromExternrefTable0(ret[0]);
8239
+ }
8240
+ /**
8241
+ * @returns {any}
8242
+ */
8243
+ get dataGaps() {
8244
+ const ret = wasm.observationqcreport_dataGaps(this.__wbg_ptr);
8245
+ if (ret[2]) {
8246
+ throw takeFromExternrefTable0(ret[1]);
8247
+ }
8248
+ return takeFromExternrefTable0(ret[0]);
8249
+ }
8250
+ /**
8251
+ * @returns {number}
8252
+ */
8253
+ get eventRecords() {
8254
+ const ret = wasm.observationqcreport_eventRecords(this.__wbg_ptr);
8255
+ return ret >>> 0;
8256
+ }
8257
+ /**
8258
+ * @returns {number | undefined}
8259
+ */
8260
+ get intervalS() {
8261
+ const ret = wasm.observationqcreport_intervalS(this.__wbg_ptr);
8262
+ return ret[0] === 0 ? undefined : ret[1];
8263
+ }
8264
+ /**
8265
+ * @returns {string}
8266
+ */
8267
+ get intervalSource() {
8268
+ let deferred1_0;
8269
+ let deferred1_1;
8270
+ try {
8271
+ const ret = wasm.observationqcreport_intervalSource(this.__wbg_ptr);
8272
+ deferred1_0 = ret[0];
8273
+ deferred1_1 = ret[1];
8274
+ return getStringFromWasm0(ret[0], ret[1]);
8275
+ } finally {
8276
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
8277
+ }
8278
+ }
8279
+ /**
8280
+ * @returns {number}
8281
+ */
8282
+ get missingEpochs() {
8283
+ const ret = wasm.observationqcreport_missingEpochs(this.__wbg_ptr);
8284
+ return ret >>> 0;
8285
+ }
8286
+ /**
8287
+ * @returns {any}
8288
+ */
8289
+ get multipath() {
8290
+ const ret = wasm.observationqcreport_multipath(this.__wbg_ptr);
8291
+ if (ret[2]) {
8292
+ throw takeFromExternrefTable0(ret[1]);
8293
+ }
8294
+ return takeFromExternrefTable0(ret[0]);
8295
+ }
8296
+ /**
8297
+ * @returns {any}
8298
+ */
8299
+ get notes() {
8300
+ const ret = wasm.observationqcreport_notes(this.__wbg_ptr);
8301
+ if (ret[2]) {
8302
+ throw takeFromExternrefTable0(ret[1]);
8303
+ }
8304
+ return takeFromExternrefTable0(ret[0]);
8305
+ }
8306
+ /**
8307
+ * @returns {number}
8308
+ */
8309
+ get observationEpochs() {
8310
+ const ret = wasm.observationqcreport_observationEpochs(this.__wbg_ptr);
8311
+ return ret >>> 0;
8312
+ }
8313
+ /**
8314
+ * @returns {number}
8315
+ */
8316
+ get powerFailureEpochs() {
8317
+ const ret = wasm.observationqcreport_powerFailureEpochs(this.__wbg_ptr);
8318
+ return ret >>> 0;
8319
+ }
8320
+ /**
8321
+ * @returns {string}
8322
+ */
8323
+ renderHtml() {
8324
+ let deferred1_0;
8325
+ let deferred1_1;
8326
+ try {
8327
+ const ret = wasm.observationqcreport_renderHtml(this.__wbg_ptr);
8328
+ deferred1_0 = ret[0];
8329
+ deferred1_1 = ret[1];
8330
+ return getStringFromWasm0(ret[0], ret[1]);
8331
+ } finally {
8332
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
8333
+ }
8334
+ }
8335
+ /**
8336
+ * @returns {string}
8337
+ */
8338
+ renderText() {
8339
+ let deferred1_0;
8340
+ let deferred1_1;
8341
+ try {
8342
+ const ret = wasm.observationqcreport_renderText(this.__wbg_ptr);
8343
+ deferred1_0 = ret[0];
8344
+ deferred1_1 = ret[1];
8345
+ return getStringFromWasm0(ret[0], ret[1]);
8346
+ } finally {
8347
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
8348
+ }
8349
+ }
8350
+ /**
8351
+ * @returns {any}
8352
+ */
8353
+ get satelliteSignals() {
8354
+ const ret = wasm.observationqcreport_satelliteSignals(this.__wbg_ptr);
8355
+ if (ret[2]) {
8356
+ throw takeFromExternrefTable0(ret[1]);
8357
+ }
8358
+ return takeFromExternrefTable0(ret[0]);
8359
+ }
8360
+ /**
8361
+ * @returns {any}
8362
+ */
8363
+ get satellites() {
8364
+ const ret = wasm.observationqcreport_satellites(this.__wbg_ptr);
8365
+ if (ret[2]) {
8366
+ throw takeFromExternrefTable0(ret[1]);
8367
+ }
8368
+ return takeFromExternrefTable0(ret[0]);
8369
+ }
8370
+ /**
8371
+ * @returns {number}
8372
+ */
8373
+ get skippedRecords() {
8374
+ const ret = wasm.observationqcreport_skippedRecords(this.__wbg_ptr);
8375
+ return ret >>> 0;
8376
+ }
8377
+ /**
8378
+ * @returns {any}
8379
+ */
8380
+ get systemSignals() {
8381
+ const ret = wasm.observationqcreport_systemSignals(this.__wbg_ptr);
8382
+ if (ret[2]) {
8383
+ throw takeFromExternrefTable0(ret[1]);
8384
+ }
8385
+ return takeFromExternrefTable0(ret[0]);
8386
+ }
8387
+ /**
8388
+ * @returns {string}
8389
+ */
8390
+ toJson() {
8391
+ let deferred2_0;
8392
+ let deferred2_1;
8393
+ try {
8394
+ const ret = wasm.observationqcreport_toJson(this.__wbg_ptr);
8395
+ var ptr1 = ret[0];
8396
+ var len1 = ret[1];
8397
+ if (ret[3]) {
8398
+ ptr1 = 0; len1 = 0;
8399
+ throw takeFromExternrefTable0(ret[2]);
8400
+ }
8401
+ deferred2_0 = ptr1;
8402
+ deferred2_1 = len1;
8403
+ return getStringFromWasm0(ptr1, len1);
8404
+ } finally {
8405
+ wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);
8406
+ }
8407
+ }
8408
+ /**
8409
+ * @returns {number}
7767
8410
  */
7768
- Unknown: 4, "4": "Unknown",
7769
- });
8411
+ get totalEpochRecords() {
8412
+ const ret = wasm.observationqcreport_totalEpochRecords(this.__wbg_ptr);
8413
+ return ret >>> 0;
8414
+ }
8415
+ }
8416
+ if (Symbol.dispose) ObservationQcReport.prototype[Symbol.dispose] = ObservationQcReport.prototype.free;
7770
8417
 
7771
8418
  /**
7772
8419
  * Flattened raw observation rows from one RINEX OBS epoch. Numeric arrays are
@@ -9720,6 +10367,80 @@ export class OpmState {
9720
10367
  }
9721
10368
  if (Symbol.dispose) OpmState.prototype[Symbol.dispose] = OpmState.prototype.free;
9722
10369
 
10370
+ /**
10371
+ * Orthometric terrain height `H` in metres above the EGM96 mean sea level
10372
+ * geoid.
10373
+ */
10374
+ export class OrthometricHeightM {
10375
+ static __wrap(ptr) {
10376
+ const obj = Object.create(OrthometricHeightM.prototype);
10377
+ obj.__wbg_ptr = ptr;
10378
+ OrthometricHeightMFinalization.register(obj, obj.__wbg_ptr, obj);
10379
+ return obj;
10380
+ }
10381
+ __destroy_into_raw() {
10382
+ const ptr = this.__wbg_ptr;
10383
+ this.__wbg_ptr = 0;
10384
+ OrthometricHeightMFinalization.unregister(this);
10385
+ return ptr;
10386
+ }
10387
+ free() {
10388
+ const ptr = this.__destroy_into_raw();
10389
+ wasm.__wbg_orthometricheightm_free(ptr, 0);
10390
+ }
10391
+ /**
10392
+ * Build an orthometric height `H` in metres.
10393
+ * @param {number} value_m
10394
+ */
10395
+ constructor(value_m) {
10396
+ const ret = wasm.orthometricheightm_new(value_m);
10397
+ this.__wbg_ptr = ret;
10398
+ OrthometricHeightMFinalization.register(this, this.__wbg_ptr, this);
10399
+ return this;
10400
+ }
10401
+ /**
10402
+ * Convert to ellipsoidal height `h = H + N` using degree inputs in geoid
10403
+ * order `(latitudeDeg, longitudeDeg)` and an explicit geoid model.
10404
+ * @param {number} latitude_deg
10405
+ * @param {number} longitude_deg
10406
+ * @param {TerrainGeoidModel} geoid
10407
+ * @returns {EllipsoidalHeightM}
10408
+ */
10409
+ toEllipsoidalHeightDeg(latitude_deg, longitude_deg, geoid) {
10410
+ _assertClass(geoid, TerrainGeoidModel);
10411
+ const ret = wasm.orthometricheightm_toEllipsoidalHeightDeg(this.__wbg_ptr, latitude_deg, longitude_deg, geoid.__wbg_ptr);
10412
+ if (ret[2]) {
10413
+ throw takeFromExternrefTable0(ret[1]);
10414
+ }
10415
+ return EllipsoidalHeightM.__wrap(ret[0]);
10416
+ }
10417
+ /**
10418
+ * Convert to ellipsoidal height `h = H + N` using radian inputs in geoid
10419
+ * order `(latitudeRad, longitudeRad)` and an explicit geoid model.
10420
+ * @param {number} latitude_rad
10421
+ * @param {number} longitude_rad
10422
+ * @param {TerrainGeoidModel} geoid
10423
+ * @returns {EllipsoidalHeightM}
10424
+ */
10425
+ toEllipsoidalHeightRad(latitude_rad, longitude_rad, geoid) {
10426
+ _assertClass(geoid, TerrainGeoidModel);
10427
+ const ret = wasm.orthometricheightm_toEllipsoidalHeightRad(this.__wbg_ptr, latitude_rad, longitude_rad, geoid.__wbg_ptr);
10428
+ if (ret[2]) {
10429
+ throw takeFromExternrefTable0(ret[1]);
10430
+ }
10431
+ return EllipsoidalHeightM.__wrap(ret[0]);
10432
+ }
10433
+ /**
10434
+ * Orthometric height `H`, metres above the EGM96 mean sea level geoid.
10435
+ * @returns {number}
10436
+ */
10437
+ get valueM() {
10438
+ const ret = wasm.orthometricheightm_valueM(this.__wbg_ptr);
10439
+ return ret;
10440
+ }
10441
+ }
10442
+ if (Symbol.dispose) OrthometricHeightM.prototype[Symbol.dispose] = OrthometricHeightM.prototype.free;
10443
+
9723
10444
  /**
9724
10445
  * The result of [`parseTleFile`]: the satellites that parsed, plus a count of
9725
10446
  * complete records that were skipped because SGP4 initialization failed.
@@ -11696,6 +12417,12 @@ export class SatelliteVector {
11696
12417
  }
11697
12418
  if (Symbol.dispose) SatelliteVector.prototype[Symbol.dispose] = SatelliteVector.prototype.free;
11698
12419
 
12420
+ /**
12421
+ * Mutable SBAS correction store.
12422
+ *
12423
+ * Ingest raw SBAS messages with a source GEO and GNSS time, then query decoded
12424
+ * fast, long-term, ionospheric, and GEO navigation correction records.
12425
+ */
11699
12426
  export class SbasCorrectionStore {
11700
12427
  __destroy_into_raw() {
11701
12428
  const ptr = this.__wbg_ptr;
@@ -11708,6 +12435,49 @@ export class SbasCorrectionStore {
11708
12435
  wasm.__wbg_sbascorrectionstore_free(ptr, 0);
11709
12436
  }
11710
12437
  /**
12438
+ * Fast pseudorange correction for `(geo, sat)`, or `null`.
12439
+ *
12440
+ * `prcM` is meters, `rrcMS` is meters per second, and `tOfJ2000S` is
12441
+ * seconds since J2000.
12442
+ * @param {string} geo
12443
+ * @param {string} sat
12444
+ * @returns {any}
12445
+ */
12446
+ fastCorrection(geo, sat) {
12447
+ const ptr0 = passStringToWasm0(geo, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
12448
+ const len0 = WASM_VECTOR_LEN;
12449
+ const ptr1 = passStringToWasm0(sat, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
12450
+ const len1 = WASM_VECTOR_LEN;
12451
+ const ret = wasm.sbascorrectionstore_fastCorrection(this.__wbg_ptr, ptr0, len0, ptr1, len1);
12452
+ if (ret[2]) {
12453
+ throw takeFromExternrefTable0(ret[1]);
12454
+ }
12455
+ return takeFromExternrefTable0(ret[0]);
12456
+ }
12457
+ /**
12458
+ * SBAS GEO navigation state for `geo`, or `null`.
12459
+ *
12460
+ * Positions are ECEF meters, velocities are ECEF meters per second,
12461
+ * accelerations are ECEF meters per second squared, clock fields are
12462
+ * seconds and seconds per second, and `t0J2000S` is seconds since J2000.
12463
+ * @param {string} geo
12464
+ * @returns {any}
12465
+ */
12466
+ geoNavState(geo) {
12467
+ const ptr0 = passStringToWasm0(geo, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
12468
+ const len0 = WASM_VECTOR_LEN;
12469
+ const ret = wasm.sbascorrectionstore_geoNavState(this.__wbg_ptr, ptr0, len0);
12470
+ if (ret[2]) {
12471
+ throw takeFromExternrefTable0(ret[1]);
12472
+ }
12473
+ return takeFromExternrefTable0(ret[0]);
12474
+ }
12475
+ /**
12476
+ * Ingest one decoded SBAS message into the correction store.
12477
+ *
12478
+ * `geo` is the SBAS source satellite token such as `"S29"`. `week` and
12479
+ * `towS` are in the selected GNSS time scale. `form` is `"framed250"` or
12480
+ * `"body226"`.
11711
12481
  * @param {Uint8Array} bytes
11712
12482
  * @param {string | null | undefined} form
11713
12483
  * @param {string} geo
@@ -11730,6 +12500,27 @@ export class SbasCorrectionStore {
11730
12500
  }
11731
12501
  }
11732
12502
  /**
12503
+ * SBAS ionospheric grid for `geo`, or `null`.
12504
+ *
12505
+ * Grid point latitudes and longitudes are degrees, vertical delays are
12506
+ * meters, and GIVE variances are square meters when present.
12507
+ * @param {string} geo
12508
+ * @returns {any}
12509
+ */
12510
+ ionoGrid(geo) {
12511
+ const ptr0 = passStringToWasm0(geo, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
12512
+ const len0 = WASM_VECTOR_LEN;
12513
+ const ret = wasm.sbascorrectionstore_ionoGrid(this.__wbg_ptr, ptr0, len0);
12514
+ if (ret[2]) {
12515
+ throw takeFromExternrefTable0(ret[1]);
12516
+ }
12517
+ return takeFromExternrefTable0(ret[0]);
12518
+ }
12519
+ /**
12520
+ * SBAS ionospheric slant delay in meters, or `null`.
12521
+ *
12522
+ * Receiver latitude, longitude, elevation, and azimuth are radians.
12523
+ * `frequencyHz` is the carrier frequency for the reported group delay.
11733
12524
  * @param {string} geo
11734
12525
  * @param {number} receiver_lat_rad
11735
12526
  * @param {number} receiver_lon_rad
@@ -11748,6 +12539,30 @@ export class SbasCorrectionStore {
11748
12539
  }
11749
12540
  return ret[0] === 0 ? undefined : ret[1];
11750
12541
  }
12542
+ /**
12543
+ * Long-term orbit and clock correction for `(geo, sat)`, or `null`.
12544
+ *
12545
+ * Position deltas are ECEF meters, rates are ECEF meters per second, clock
12546
+ * deltas are seconds and seconds per second, and `t0J2000S` is seconds
12547
+ * since J2000.
12548
+ * @param {string} geo
12549
+ * @param {string} sat
12550
+ * @returns {any}
12551
+ */
12552
+ longTermCorrection(geo, sat) {
12553
+ const ptr0 = passStringToWasm0(geo, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
12554
+ const len0 = WASM_VECTOR_LEN;
12555
+ const ptr1 = passStringToWasm0(sat, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
12556
+ const len1 = WASM_VECTOR_LEN;
12557
+ const ret = wasm.sbascorrectionstore_longTermCorrection(this.__wbg_ptr, ptr0, len0, ptr1, len1);
12558
+ if (ret[2]) {
12559
+ throw takeFromExternrefTable0(ret[1]);
12560
+ }
12561
+ return takeFromExternrefTable0(ret[0]);
12562
+ }
12563
+ /**
12564
+ * Create an empty SBAS correction store.
12565
+ */
11751
12566
  constructor() {
11752
12567
  const ret = wasm.sbascorrectionstore_new();
11753
12568
  this.__wbg_ptr = ret;
@@ -11755,6 +12570,10 @@ export class SbasCorrectionStore {
11755
12570
  return this;
11756
12571
  }
11757
12572
  /**
12573
+ * Ready SBAS GEO source satellites at `tJ2000S`.
12574
+ *
12575
+ * The time is seconds since J2000. Returned tokens are strings such as
12576
+ * `"S29"`, sorted by most recent update first.
11758
12577
  * @param {number} t_j2000_s
11759
12578
  * @returns {string[]}
11760
12579
  */
@@ -11764,6 +12583,24 @@ export class SbasCorrectionStore {
11764
12583
  wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
11765
12584
  return v1;
11766
12585
  }
12586
+ /**
12587
+ * Allow or disallow partial SBAS corrections when building corrected
12588
+ * ephemeris states.
12589
+ * @param {boolean} yes
12590
+ */
12591
+ setAllowPartial(yes) {
12592
+ wasm.sbascorrectionstore_setAllowPartial(this.__wbg_ptr, yes);
12593
+ }
12594
+ /**
12595
+ * Set the maximum staleness for fresh SBAS corrections, in seconds.
12596
+ * @param {number} seconds
12597
+ */
12598
+ setStalenessSeconds(seconds) {
12599
+ const ret = wasm.sbascorrectionstore_setStalenessSeconds(this.__wbg_ptr, seconds);
12600
+ if (ret[1]) {
12601
+ throw takeFromExternrefTable0(ret[0]);
12602
+ }
12603
+ }
11767
12604
  }
11768
12605
  if (Symbol.dispose) SbasCorrectionStore.prototype[Symbol.dispose] = SbasCorrectionStore.prototype.free;
11769
12606
 
@@ -13628,69 +14465,302 @@ export const SsrSource = Object.freeze({
13628
14465
  * The frame (geocentric ECI of date vs Earth-fixed ITRS/ECEF) is fixed by which
13629
14466
  * function produced this object: [`sunMoonEci`] or [`sunMoonEcef`].
13630
14467
  */
13631
- export class SunMoon {
14468
+ export class SunMoon {
14469
+ static __wrap(ptr) {
14470
+ const obj = Object.create(SunMoon.prototype);
14471
+ obj.__wbg_ptr = ptr;
14472
+ SunMoonFinalization.register(obj, obj.__wbg_ptr, obj);
14473
+ return obj;
14474
+ }
14475
+ __destroy_into_raw() {
14476
+ const ptr = this.__wbg_ptr;
14477
+ this.__wbg_ptr = 0;
14478
+ SunMoonFinalization.unregister(this);
14479
+ return ptr;
14480
+ }
14481
+ free() {
14482
+ const ptr = this.__destroy_into_raw();
14483
+ wasm.__wbg_sunmoon_free(ptr, 0);
14484
+ }
14485
+ /**
14486
+ * Number of epochs in the batch.
14487
+ * @returns {number}
14488
+ */
14489
+ get epochCount() {
14490
+ const ret = wasm.sunmoon_epochCount(this.__wbg_ptr);
14491
+ return ret >>> 0;
14492
+ }
14493
+ /**
14494
+ * The frame these positions are in: `"eci"` or `"ecef"`.
14495
+ * @returns {string}
14496
+ */
14497
+ get frame() {
14498
+ let deferred1_0;
14499
+ let deferred1_1;
14500
+ try {
14501
+ const ret = wasm.sunmoon_frame(this.__wbg_ptr);
14502
+ deferred1_0 = ret[0];
14503
+ deferred1_1 = ret[1];
14504
+ return getStringFromWasm0(ret[0], ret[1]);
14505
+ } finally {
14506
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
14507
+ }
14508
+ }
14509
+ /**
14510
+ * Moon positions, metres, flat row-major `(n, 3)`.
14511
+ * @returns {Float64Array}
14512
+ */
14513
+ get moon() {
14514
+ const ret = wasm.sunmoon_moon(this.__wbg_ptr);
14515
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
14516
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
14517
+ return v1;
14518
+ }
14519
+ /**
14520
+ * Sun positions, metres, flat row-major `(n, 3)`.
14521
+ * @returns {Float64Array}
14522
+ */
14523
+ get sun() {
14524
+ const ret = wasm.sunmoon_sun(this.__wbg_ptr);
14525
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
14526
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
14527
+ return v1;
14528
+ }
14529
+ }
14530
+ if (Symbol.dispose) SunMoon.prototype[Symbol.dispose] = SunMoon.prototype.free;
14531
+
14532
+ /**
14533
+ * Terrain datum conversion and optional geoid-grid loading error variants.
14534
+ * @enum {0 | 1 | 2 | 3}
14535
+ */
14536
+ export const TerrainDatumError = Object.freeze({
14537
+ /**
14538
+ * Terrain lookup failed before datum conversion.
14539
+ */
14540
+ Terrain: 0, "0": "Terrain",
14541
+ /**
14542
+ * A geoid grid could not be parsed.
14543
+ */
14544
+ Geoid: 1, "1": "Geoid",
14545
+ /**
14546
+ * Reading a geoid grid failed for a reason other than absence.
14547
+ */
14548
+ Io: 2, "2": "Io",
14549
+ /**
14550
+ * The EGM96 15-arcminute `WW15MGH.DAC` grid was requested but is absent.
14551
+ */
14552
+ MissingEgm96Dac: 3, "3": "MissingEgm96Dac",
14553
+ });
14554
+
14555
+ /**
14556
+ * Geoid model used to convert terrain orthometric height `H` to ellipsoidal
14557
+ * height `h`.
14558
+ */
14559
+ export class TerrainGeoidModel {
14560
+ static __wrap(ptr) {
14561
+ const obj = Object.create(TerrainGeoidModel.prototype);
14562
+ obj.__wbg_ptr = ptr;
14563
+ TerrainGeoidModelFinalization.register(obj, obj.__wbg_ptr, obj);
14564
+ return obj;
14565
+ }
14566
+ __destroy_into_raw() {
14567
+ const ptr = this.__wbg_ptr;
14568
+ this.__wbg_ptr = 0;
14569
+ TerrainGeoidModelFinalization.unregister(this);
14570
+ return ptr;
14571
+ }
14572
+ free() {
14573
+ const ptr = this.__destroy_into_raw();
14574
+ wasm.__wbg_terraingeoidmodel_free(ptr, 0);
14575
+ }
14576
+ /**
14577
+ * Use a caller-supplied EGM96 15-arcminute geoid grid for `h = H + N`.
14578
+ * @param {Egm96FifteenMinuteGeoid} geoid
14579
+ * @returns {TerrainGeoidModel}
14580
+ */
14581
+ static egm96FifteenMinute(geoid) {
14582
+ _assertClass(geoid, Egm96FifteenMinuteGeoid);
14583
+ const ret = wasm.terraingeoidmodel_egm96FifteenMinute(geoid.__wbg_ptr);
14584
+ return TerrainGeoidModel.__wrap(ret);
14585
+ }
14586
+ /**
14587
+ * Use the embedded EGM96 1-degree geoid grid for `h = H + N`.
14588
+ * @returns {TerrainGeoidModel}
14589
+ */
14590
+ static egm96OneDegree() {
14591
+ const ret = wasm.terraingeoidmodel_egm96OneDegree();
14592
+ return TerrainGeoidModel.__wrap(ret);
14593
+ }
14594
+ /**
14595
+ * Model discriminator: `"egm96OneDegree"` or `"egm96FifteenMinute"`.
14596
+ * @returns {string}
14597
+ */
14598
+ get kind() {
14599
+ let deferred1_0;
14600
+ let deferred1_1;
14601
+ try {
14602
+ const ret = wasm.terraingeoidmodel_kind(this.__wbg_ptr);
14603
+ deferred1_0 = ret[0];
14604
+ deferred1_1 = ret[1];
14605
+ return getStringFromWasm0(ret[0], ret[1]);
14606
+ } finally {
14607
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
14608
+ }
14609
+ }
14610
+ }
14611
+ if (Symbol.dispose) TerrainGeoidModel.prototype[Symbol.dispose] = TerrainGeoidModel.prototype.free;
14612
+
14613
+ /**
14614
+ * Terrain store conversion, serialization, and parsing error variants.
14615
+ * @enum {0 | 1 | 2 | 3 | 4 | 5}
14616
+ */
14617
+ export const TerrainStoreError = Object.freeze({
14618
+ /**
14619
+ * File or directory I/O failed.
14620
+ */
14621
+ Io: 0, "0": "Io",
14622
+ /**
14623
+ * DTED or terrain store bytes could not be parsed.
14624
+ */
14625
+ Parse: 1, "1": "Parse",
14626
+ /**
14627
+ * The terrain store version is not supported.
14628
+ */
14629
+ UnsupportedVersion: 2, "2": "UnsupportedVersion",
14630
+ /**
14631
+ * The terrain store datum tag is not supported.
14632
+ */
14633
+ UnsupportedDatum: 3, "3": "UnsupportedDatum",
14634
+ /**
14635
+ * Two input DTED files resolved to the same integer tile id.
14636
+ */
14637
+ DuplicateTile: 4, "4": "DuplicateTile",
14638
+ /**
14639
+ * A tile payload checksum did not match its index record.
14640
+ */
14641
+ Checksum: 5, "5": "Checksum",
14642
+ });
14643
+
14644
+ /**
14645
+ * Metadata for one tile index record in a memory-mappable terrain store.
14646
+ */
14647
+ export class TerrainStoreTileIndex {
13632
14648
  static __wrap(ptr) {
13633
- const obj = Object.create(SunMoon.prototype);
14649
+ const obj = Object.create(TerrainStoreTileIndex.prototype);
13634
14650
  obj.__wbg_ptr = ptr;
13635
- SunMoonFinalization.register(obj, obj.__wbg_ptr, obj);
14651
+ TerrainStoreTileIndexFinalization.register(obj, obj.__wbg_ptr, obj);
13636
14652
  return obj;
13637
14653
  }
13638
14654
  __destroy_into_raw() {
13639
14655
  const ptr = this.__wbg_ptr;
13640
14656
  this.__wbg_ptr = 0;
13641
- SunMoonFinalization.unregister(this);
14657
+ TerrainStoreTileIndexFinalization.unregister(this);
13642
14658
  return ptr;
13643
14659
  }
13644
14660
  free() {
13645
14661
  const ptr = this.__destroy_into_raw();
13646
- wasm.__wbg_sunmoon_free(ptr, 0);
14662
+ wasm.__wbg_terrainstoretileindex_free(ptr, 0);
13647
14663
  }
13648
14664
  /**
13649
- * Number of epochs in the batch.
14665
+ * FNV-1a checksum of this tile's posting payload bytes.
14666
+ * @returns {bigint}
14667
+ */
14668
+ get checksum64() {
14669
+ const ret = wasm.terrainstoretileindex_checksum64(this.__wbg_ptr);
14670
+ return BigInt.asUintN(64, ret);
14671
+ }
14672
+ /**
14673
+ * Byte length of this tile's posting payload in the store.
14674
+ * @returns {bigint}
14675
+ */
14676
+ get dataLen() {
14677
+ const ret = wasm.terrainstoretileindex_dataLen(this.__wbg_ptr);
14678
+ return BigInt.asUintN(64, ret);
14679
+ }
14680
+ /**
14681
+ * Byte offset of this tile's posting payload in the store.
14682
+ * @returns {bigint}
14683
+ */
14684
+ get dataOffset() {
14685
+ const ret = wasm.terrainstoretileindex_dataOffset(this.__wbg_ptr);
14686
+ return BigInt.asUintN(64, ret);
14687
+ }
14688
+ /**
14689
+ * Number of latitude postings.
13650
14690
  * @returns {number}
13651
14691
  */
13652
- get epochCount() {
13653
- const ret = wasm.sunmoon_epochCount(this.__wbg_ptr);
14692
+ get latCount() {
14693
+ const ret = wasm.terrainstoretileindex_latCount(this.__wbg_ptr);
13654
14694
  return ret >>> 0;
13655
14695
  }
13656
14696
  /**
13657
- * The frame these positions are in: `"eci"` or `"ecef"`.
13658
- * @returns {string}
14697
+ * Integer latitude tile id, for example `36` for a tile covering
14698
+ * `36..37` degrees.
14699
+ * @returns {number}
13659
14700
  */
13660
- get frame() {
13661
- let deferred1_0;
13662
- let deferred1_1;
13663
- try {
13664
- const ret = wasm.sunmoon_frame(this.__wbg_ptr);
13665
- deferred1_0 = ret[0];
13666
- deferred1_1 = ret[1];
13667
- return getStringFromWasm0(ret[0], ret[1]);
13668
- } finally {
13669
- wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
13670
- }
14701
+ get latIndex() {
14702
+ const ret = wasm.terrainstoretileindex_latIndex(this.__wbg_ptr);
14703
+ return ret;
13671
14704
  }
13672
14705
  /**
13673
- * Moon positions, metres, flat row-major `(n, 3)`.
13674
- * @returns {Float64Array}
14706
+ * Number of longitude postings.
14707
+ * @returns {number}
13675
14708
  */
13676
- get moon() {
13677
- const ret = wasm.sunmoon_moon(this.__wbg_ptr);
13678
- var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
13679
- wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
13680
- return v1;
14709
+ get lonCount() {
14710
+ const ret = wasm.terrainstoretileindex_lonCount(this.__wbg_ptr);
14711
+ return ret >>> 0;
13681
14712
  }
13682
14713
  /**
13683
- * Sun positions, metres, flat row-major `(n, 3)`.
13684
- * @returns {Float64Array}
14714
+ * Integer longitude tile id, for example `-107` for a tile covering
14715
+ * `-107..-106` degrees.
14716
+ * @returns {number}
13685
14717
  */
13686
- get sun() {
13687
- const ret = wasm.sunmoon_sun(this.__wbg_ptr);
13688
- var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
13689
- wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
13690
- return v1;
14718
+ get lonIndex() {
14719
+ const ret = wasm.terrainstoretileindex_lonIndex(this.__wbg_ptr);
14720
+ return ret;
14721
+ }
14722
+ /**
14723
+ * Northern edge latitude, degrees.
14724
+ * @returns {number}
14725
+ */
14726
+ get maxLatitudeDeg() {
14727
+ const ret = wasm.terrainstoretileindex_maxLatitudeDeg(this.__wbg_ptr);
14728
+ return ret;
14729
+ }
14730
+ /**
14731
+ * Eastern edge longitude, degrees.
14732
+ * @returns {number}
14733
+ */
14734
+ get maxLongitudeDeg() {
14735
+ const ret = wasm.terrainstoretileindex_maxLongitudeDeg(this.__wbg_ptr);
14736
+ return ret;
14737
+ }
14738
+ /**
14739
+ * Southern edge latitude, degrees.
14740
+ * @returns {number}
14741
+ */
14742
+ get minLatitudeDeg() {
14743
+ const ret = wasm.terrainstoretileindex_minLatitudeDeg(this.__wbg_ptr);
14744
+ return ret;
14745
+ }
14746
+ /**
14747
+ * Western edge longitude, degrees.
14748
+ * @returns {number}
14749
+ */
14750
+ get minLongitudeDeg() {
14751
+ const ret = wasm.terrainstoretileindex_minLongitudeDeg(this.__wbg_ptr);
14752
+ return ret;
14753
+ }
14754
+ /**
14755
+ * Vertical datum for this tile's orthometric posting payload.
14756
+ * @returns {VerticalDatum}
14757
+ */
14758
+ get verticalDatum() {
14759
+ const ret = wasm.terrainstoretileindex_verticalDatum(this.__wbg_ptr);
14760
+ return ret;
13691
14761
  }
13692
14762
  }
13693
- if (Symbol.dispose) SunMoon.prototype[Symbol.dispose] = SunMoon.prototype.free;
14763
+ if (Symbol.dispose) TerrainStoreTileIndex.prototype[Symbol.dispose] = TerrainStoreTileIndex.prototype.free;
13694
14764
 
13695
14765
  /**
13696
14766
  * A named time scale. The JS value matches the variant order below.
@@ -14339,6 +15409,17 @@ export class VelocitySolution {
14339
15409
  }
14340
15410
  if (Symbol.dispose) VelocitySolution.prototype[Symbol.dispose] = VelocitySolution.prototype.free;
14341
15411
 
15412
+ /**
15413
+ * Vertical datum carried by a terrain store.
15414
+ * @enum {0}
15415
+ */
15416
+ export const VerticalDatum = Object.freeze({
15417
+ /**
15418
+ * Orthometric height `H` in metres above the EGM96 mean sea level geoid.
15419
+ */
15420
+ Egm96MslOrthometric: 0, "0": "Egm96MslOrthometric",
15421
+ });
15422
+
14342
15423
  /**
14343
15424
  * Per-epoch topocentric visibility plus the dense pass list over the grid
14344
15425
  * window.
@@ -14630,6 +15711,27 @@ export function acquire(samples, prn, options) {
14630
15711
  return AcquisitionResult.__wrap(ret[0]);
14631
15712
  }
14632
15713
 
15714
+ /**
15715
+ * Plain non-overlapping Allan deviation for explicit averaging factors.
15716
+ *
15717
+ * `series` is `{ kind, values }`, where `kind` is `"phaseSeconds"` or
15718
+ * `"fractionalFrequency"` and `values` are phase seconds or dimensionless
15719
+ * fractional-frequency samples. `tau0S` is the sample interval in seconds.
15720
+ * `averagingFactors` is an array of positive integer `m` values. Returns
15721
+ * `{ tauS, deviation, n }`.
15722
+ * @param {any} series
15723
+ * @param {number} tau0_s
15724
+ * @param {any} averaging_factors
15725
+ * @returns {any}
15726
+ */
15727
+ export function allanDeviation(series, tau0_s, averaging_factors) {
15728
+ const ret = wasm.allanDeviation(series, tau0_s, averaging_factors);
15729
+ if (ret[2]) {
15730
+ throw takeFromExternrefTable0(ret[1]);
15731
+ }
15732
+ return takeFromExternrefTable0(ret[0]);
15733
+ }
15734
+
14633
15735
  /**
14634
15736
  * On-sky angle in degrees between two direction vectors.
14635
15737
  * @param {Float64Array} a
@@ -14664,6 +15766,65 @@ export function angularSeparationCoords(a_lon_deg, a_lat_deg, b_lon_deg, b_lat_d
14664
15766
  return ret[0];
14665
15767
  }
14666
15768
 
15769
+ /**
15770
+ * Run ARAIM MHSS protection-level computation.
15771
+ *
15772
+ * `geometry.rows` contains satellite IDs, ECEF line-of-sight unit vectors,
15773
+ * optional constellation labels, and elevations in radians. `receiver` is WGS84
15774
+ * geodetic radians plus ellipsoidal height meters. `ism` contains
15775
+ * constellation defaults and optional satellite overrides. Satellite models may
15776
+ * provide paired `effectiveSigmaIntM` and `effectiveSigmaAccM` fields; omit both
15777
+ * to let the core derive them from elevation. `allocation` may be omitted to use
15778
+ * `araimLpv200Allocation()`. Returned `hplM`, `vplM`, `sigmaAccHM`,
15779
+ * `sigmaAccVM`, `emtM`, and per-mode ENU arrays are meters.
15780
+ * @param {any} geometry
15781
+ * @param {any} ism
15782
+ * @param {any} allocation
15783
+ * @returns {any}
15784
+ */
15785
+ export function araim(geometry, ism, allocation) {
15786
+ const ret = wasm.araim(geometry, ism, allocation);
15787
+ if (ret[2]) {
15788
+ throw takeFromExternrefTable0(ret[1]);
15789
+ }
15790
+ return takeFromExternrefTable0(ret[0]);
15791
+ }
15792
+
15793
+ /**
15794
+ * Enumerate ARAIM fault hypotheses for the given geometry, ISM, and allocation.
15795
+ *
15796
+ * Inputs mirror `araim`. The returned priors are probabilities. Excluded
15797
+ * satellites are string tokens such as `"G01"`, and excluded constellations are
15798
+ * labels such as `"GPS"`.
15799
+ * @param {any} geometry
15800
+ * @param {any} ism
15801
+ * @param {any} allocation
15802
+ * @returns {any}
15803
+ */
15804
+ export function araimFaultModes(geometry, ism, allocation) {
15805
+ const ret = wasm.araimFaultModes(geometry, ism, allocation);
15806
+ if (ret[2]) {
15807
+ throw takeFromExternrefTable0(ret[1]);
15808
+ }
15809
+ return takeFromExternrefTable0(ret[0]);
15810
+ }
15811
+
15812
+ /**
15813
+ * LPV-200 ARAIM integrity and continuity allocation.
15814
+ *
15815
+ * The returned object can be passed to `araim`. Probability fields are
15816
+ * dimensionless, `pEmt` defaults to `1e-5`, and `maxFaultOrder` is an integer
15817
+ * fault order.
15818
+ * @returns {any}
15819
+ */
15820
+ export function araimLpv200Allocation() {
15821
+ const ret = wasm.araimLpv200Allocation();
15822
+ if (ret[2]) {
15823
+ throw takeFromExternrefTable0(ret[1]);
15824
+ }
15825
+ return takeFromExternrefTable0(ret[0]);
15826
+ }
15827
+
14667
15828
  /**
14668
15829
  * Evaluate NRLMSISE-00 neutral-atmosphere density and temperature.
14669
15830
  *
@@ -14980,6 +16141,28 @@ export function collisionProbability(object1, object2, hard_body_radius_km, meth
14980
16141
  return CollisionProbability.__wrap(ret[0]);
14981
16142
  }
14982
16143
 
16144
+ /**
16145
+ * Compute one or more Allan-family curves with a selected tau grid and gap
16146
+ * policy.
16147
+ *
16148
+ * `input` is `{ series, tau0S, options? }`. `series.kind` may be
16149
+ * `"phaseSeconds"`, `"fractionalFrequency"`, `"phaseSecondsWithGaps"`, or
16150
+ * `"fractionalFrequencyWithGaps"`; gap series use `null` for missing samples.
16151
+ * `options.estimators` is `"standard"`, `"all"`, `"none"`, or a boolean flag
16152
+ * object. `options.tauGrid` is `"octave"`, `"all"`, or
16153
+ * `{ kind: "explicit", averagingFactors }`. `tau0S` and all returned `tauS`
16154
+ * values are seconds.
16155
+ * @param {any} input
16156
+ * @returns {any}
16157
+ */
16158
+ export function computeAllanDeviations(input) {
16159
+ const ret = wasm.computeAllanDeviations(input);
16160
+ if (ret[2]) {
16161
+ throw takeFromExternrefTable0(ret[1]);
16162
+ }
16163
+ return takeFromExternrefTable0(ret[0]);
16164
+ }
16165
+
14983
16166
  /**
14984
16167
  * Coherently correlate interleaved IQ samples against a GPS C/A PRN replica.
14985
16168
  * `iq` is `[i0, q0, i1, q1, ...]`.
@@ -15237,6 +16420,12 @@ export function decodeRtcmStream(bytes) {
15237
16420
  }
15238
16421
 
15239
16422
  /**
16423
+ * Decode a raw SBAS message.
16424
+ *
16425
+ * `form` is `"framed250"` for a 32-byte message with CRC or `"body226"` for a
16426
+ * 29-byte body. The result contains `messageType`, `form`, legacy debug
16427
+ * `kind`, and `message`, a structured decoded payload. Parse failures are
16428
+ * thrown as `Error`.
15240
16429
  * @param {Uint8Array} bytes
15241
16430
  * @param {string | null} [form]
15242
16431
  * @returns {any}
@@ -15470,6 +16659,26 @@ export function dopplerToRangeRate(doppler_hz, carrier_hz) {
15470
16659
  return ret[0];
15471
16660
  }
15472
16661
 
16662
+ /**
16663
+ * Convert a DTED tile tree into canonical memory-mappable terrain store bytes.
16664
+ *
16665
+ * The returned `Uint8Array` can be passed to [`MmapTerrain.fromBytes`] or
16666
+ * [`MmapTerrain.fromVec`]. Posting payloads are decoded orthometric metres.
16667
+ * @param {string} root
16668
+ * @returns {Uint8Array}
16669
+ */
16670
+ export function dtedTreeToMmapStore(root) {
16671
+ const ptr0 = passStringToWasm0(root, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
16672
+ const len0 = WASM_VECTOR_LEN;
16673
+ const ret = wasm.dtedTreeToMmapStore(ptr0, len0);
16674
+ if (ret[3]) {
16675
+ throw takeFromExternrefTable0(ret[2]);
16676
+ }
16677
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
16678
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
16679
+ return v2;
16680
+ }
16681
+
15473
16682
  /**
15474
16683
  * Angular radius in degrees of Earth as seen from each satellite position.
15475
16684
  * @param {Float64Array} satellite_position_km
@@ -16695,6 +17904,25 @@ export function gpsUtcOffsetS(year, month, day) {
16695
17904
  return ret;
16696
17905
  }
16697
17906
 
17907
+ /**
17908
+ * Overlapping Hadamard deviation for explicit averaging factors.
17909
+ *
17910
+ * `series` is `{ kind, values }`, `tau0S` is seconds, and
17911
+ * `averagingFactors` contains positive integer `m` values. Returns
17912
+ * `{ tauS, deviation, n }`.
17913
+ * @param {any} series
17914
+ * @param {number} tau0_s
17915
+ * @param {any} averaging_factors
17916
+ * @returns {any}
17917
+ */
17918
+ export function hadamardDeviation(series, tau0_s, averaging_factors) {
17919
+ const ret = wasm.hadamardDeviation(series, tau0_s, averaging_factors);
17920
+ if (ret[2]) {
17921
+ throw takeFromExternrefTable0(ret[1]);
17922
+ }
17923
+ return takeFromExternrefTable0(ret[0]);
17924
+ }
17925
+
16698
17926
  /**
16699
17927
  * Trace of the Gauss-Newton Hessian approximation `J^T J`: the sum of the
16700
17928
  * squared column norms of the Jacobian, with no inverse formed.
@@ -16804,6 +18032,47 @@ export function iodHerrickGibbs(r1, r2, r3, jd1, jd2, jd3) {
16804
18032
  return IodVelocity.__wrap(ret[0]);
16805
18033
  }
16806
18034
 
18035
+ /**
18036
+ * Build an IONEX vertical-TEC product from flat node samples.
18037
+ *
18038
+ * `samples` is an array of `{ epochJ2000S, latDeg, lonDeg, vtecTecu,
18039
+ * rmsTecu? }` objects. Epochs are integer seconds since J2000, coordinates are
18040
+ * degrees, and TEC/RMS values are TECU. `shellHeightKm` and `baseRadiusKm` are
18041
+ * kilometers. Validation errors from the core sample builder are thrown as
18042
+ * `RangeError`.
18043
+ * @param {any} samples
18044
+ * @param {number} shell_height_km
18045
+ * @param {number} base_radius_km
18046
+ * @param {number} exponent
18047
+ * @returns {Ionex}
18048
+ */
18049
+ export function ionexFromNodeSamples(samples, shell_height_km, base_radius_km, exponent) {
18050
+ const ret = wasm.ionexFromNodeSamples(samples, shell_height_km, base_radius_km, exponent);
18051
+ if (ret[2]) {
18052
+ throw takeFromExternrefTable0(ret[1]);
18053
+ }
18054
+ return Ionex.__wrap(ret[0]);
18055
+ }
18056
+
18057
+ /**
18058
+ * Build an IONEX vertical-TEC product from full-grid samples.
18059
+ *
18060
+ * `samples.mapEpochsJ2000S` are integer seconds since J2000. Latitude and
18061
+ * longitude nodes and `dlatDeg` / `dlonDeg` are degrees. `tecMaps` and
18062
+ * `rmsMaps` are TECU and indexed `[map][iLat][iLon]`. The shell height and
18063
+ * base radius are kilometers. Validation errors from the core sample builder
18064
+ * are thrown as `RangeError`.
18065
+ * @param {any} samples
18066
+ * @returns {Ionex}
18067
+ */
18068
+ export function ionexFromSamples(samples) {
18069
+ const ret = wasm.ionexFromSamples(samples);
18070
+ if (ret[2]) {
18071
+ throw takeFromExternrefTable0(ret[1]);
18072
+ }
18073
+ return Ionex.__wrap(ret[0]);
18074
+ }
18075
+
16807
18076
  /**
16808
18077
  * Ionosphere-free code or meter-valued phase combination, metres.
16809
18078
  * @param {number} obs1_m
@@ -17705,6 +18974,25 @@ export function meridianTransitsSpk(spk, body, station, start_unix_us, end_unix_
17705
18974
  return takeFromExternrefTable0(ret[0]);
17706
18975
  }
17707
18976
 
18977
+ /**
18978
+ * Modified Allan deviation for explicit averaging factors.
18979
+ *
18980
+ * `series` is `{ kind, values }`, `tau0S` is seconds, and
18981
+ * `averagingFactors` contains positive integer `m` values. Returns
18982
+ * `{ tauS, deviation, n }`.
18983
+ * @param {any} series
18984
+ * @param {number} tau0_s
18985
+ * @param {any} averaging_factors
18986
+ * @returns {any}
18987
+ */
18988
+ export function modifiedAdev(series, tau0_s, averaging_factors) {
18989
+ const ret = wasm.modifiedAdev(series, tau0_s, averaging_factors);
18990
+ if (ret[2]) {
18991
+ throw takeFromExternrefTable0(ret[1]);
18992
+ }
18993
+ return takeFromExternrefTable0(ret[0]);
18994
+ }
18995
+
17708
18996
  /**
17709
18997
  * Mean, variance, skewness, and excess kurtosis of a residual set in one pass.
17710
18998
  *
@@ -18083,7 +19371,7 @@ export function observationKindLabel(kind) {
18083
19371
  * Aggregate observation QC for a parsed RINEX OBS product.
18084
19372
  * @param {RinexObs} obs
18085
19373
  * @param {any} options
18086
- * @returns {any}
19374
+ * @returns {ObservationQcReport}
18087
19375
  */
18088
19376
  export function observationQc(obs, options) {
18089
19377
  _assertClass(obs, RinexObs);
@@ -18091,7 +19379,7 @@ export function observationQc(obs, options) {
18091
19379
  if (ret[2]) {
18092
19380
  throw takeFromExternrefTable0(ret[1]);
18093
19381
  }
18094
- return takeFromExternrefTable0(ret[0]);
19382
+ return ObservationQcReport.__wrap(ret[0]);
18095
19383
  }
18096
19384
 
18097
19385
  /**
@@ -18201,6 +19489,25 @@ export function orthometricHeightM(ellipsoidal_height_m, lat_rad, lon_rad) {
18201
19489
  return ret;
18202
19490
  }
18203
19491
 
19492
+ /**
19493
+ * Fully overlapping Allan deviation for explicit averaging factors.
19494
+ *
19495
+ * `series` is `{ kind, values }`, `tau0S` is seconds, and
19496
+ * `averagingFactors` contains positive integer `m` values. Returns
19497
+ * `{ tauS, deviation, n }`.
19498
+ * @param {any} series
19499
+ * @param {number} tau0_s
19500
+ * @param {any} averaging_factors
19501
+ * @returns {any}
19502
+ */
19503
+ export function overlappingAdev(series, tau0_s, averaging_factors) {
19504
+ const ret = wasm.overlappingAdev(series, tau0_s, averaging_factors);
19505
+ if (ret[2]) {
19506
+ throw takeFromExternrefTable0(ret[1]);
19507
+ }
19508
+ return takeFromExternrefTable0(ret[0]);
19509
+ }
19510
+
18204
19511
  /**
18205
19512
  * Parallactic angle (degrees) of a target at a station.
18206
19513
  *
@@ -19355,6 +20662,22 @@ export function sampleSp3Ephemeris(sp3, satellites, start_j2000_s, stop_j2000_s,
19355
20662
  return takeFromExternrefTable0(ret[0]);
19356
20663
  }
19357
20664
 
20665
+ /**
20666
+ * Convert an SBAS satellite token such as `"S29"` to broadcast PRN number
20667
+ * such as `129`. Returns `null` for non-SBAS satellites.
20668
+ * @param {string} sat
20669
+ * @returns {any}
20670
+ */
20671
+ export function satToSbasPrn(sat) {
20672
+ const ptr0 = passStringToWasm0(sat, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
20673
+ const len0 = WASM_VECTOR_LEN;
20674
+ const ret = wasm.satToSbasPrn(ptr0, len0);
20675
+ if (ret[2]) {
20676
+ throw takeFromExternrefTable0(ret[1]);
20677
+ }
20678
+ return takeFromExternrefTable0(ret[0]);
20679
+ }
20680
+
19358
20681
  /**
19359
20682
  * Apparent visual magnitude of a sunlit body from a diffuse-sphere phase law.
19360
20683
  *
@@ -19378,6 +20701,10 @@ export function satelliteVisualMagnitude(range_km, phase_angle_deg, standard_mag
19378
20701
  }
19379
20702
 
19380
20703
  /**
20704
+ * SBAS-corrected broadcast satellite position and clock.
20705
+ *
20706
+ * Position is ECEF meters and clock is seconds at `tJ2000S`, seconds since
20707
+ * J2000. Returns `null` when the selected SBAS mode cannot provide a state.
19381
20708
  * @param {BroadcastEphemeris} broadcast
19382
20709
  * @param {SbasCorrectionStore} store
19383
20710
  * @param {string} geo
@@ -19402,6 +20729,17 @@ export function sbasCorrectedState(broadcast, store, geo, sat, t_j2000_s, mode)
19402
20729
  return takeFromExternrefTable0(ret[0]);
19403
20730
  }
19404
20731
 
20732
+ /**
20733
+ * Convert an SBAS broadcast PRN number such as `129` to an SBAS satellite
20734
+ * token such as `"S29"`. Returns `null` when the PRN is outside the SBAS range.
20735
+ * @param {number} broadcast_prn
20736
+ * @returns {any}
20737
+ */
20738
+ export function sbasPrnToSat(broadcast_prn) {
20739
+ const ret = wasm.sbasPrnToSat(broadcast_prn);
20740
+ return ret;
20741
+ }
20742
+
19405
20743
  /**
19406
20744
  * Screen a primary satellite against a secondary TLE catalog for threshold TCAs.
19407
20745
  *
@@ -19959,6 +21297,11 @@ export function solveRtkFloat(config) {
19959
21297
  }
19960
21298
 
19961
21299
  /**
21300
+ * Solve SPP using an SBAS-corrected broadcast source and optional SBAS iono.
21301
+ *
21302
+ * The returned solution uses the same units as `solveSpp`: ECEF meters,
21303
+ * receiver clock seconds, residual meters, and optional geodetic radians plus
21304
+ * ellipsoidal height meters.
19962
21305
  * @param {BroadcastEphemeris} broadcast
19963
21306
  * @param {SbasCorrectionStore} store
19964
21307
  * @param {string} geo
@@ -20342,6 +21685,37 @@ export function terminatorLatitudeDeg(sub_solar_latitude_deg, sub_solar_longitud
20342
21685
  return ret[0];
20343
21686
  }
20344
21687
 
21688
+ /**
21689
+ * Return an FNV-1a checksum for terrain store bytes.
21690
+ * @param {Uint8Array} bytes
21691
+ * @returns {bigint}
21692
+ */
21693
+ export function terrainStoreChecksum64(bytes) {
21694
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
21695
+ const len0 = WASM_VECTOR_LEN;
21696
+ const ret = wasm.terrainStoreChecksum64(ptr0, len0);
21697
+ return BigInt.asUintN(64, ret);
21698
+ }
21699
+
21700
+ /**
21701
+ * Time deviation for explicit averaging factors.
21702
+ *
21703
+ * `series` is `{ kind, values }`, `tau0S` is seconds, and
21704
+ * `averagingFactors` contains positive integer `m` values. Returns
21705
+ * `{ tauS, deviation, n }`.
21706
+ * @param {any} series
21707
+ * @param {number} tau0_s
21708
+ * @param {any} averaging_factors
21709
+ * @returns {any}
21710
+ */
21711
+ export function timeDeviation(series, tau0_s, averaging_factors) {
21712
+ const ret = wasm.timeDeviation(series, tau0_s, averaging_factors);
21713
+ if (ret[2]) {
21714
+ throw takeFromExternrefTable0(ret[1]);
21715
+ }
21716
+ return takeFromExternrefTable0(ret[0]);
21717
+ }
21718
+
20345
21719
  /**
20346
21720
  * Short uppercase identifier for a time scale, e.g. `"GPST"`.
20347
21721
  * @param {TimeScale} scale
@@ -20692,6 +22066,22 @@ export function wideLaneWavelength(f1_hz, f2_hz) {
20692
22066
  }
20693
22067
  return ret[0];
20694
22068
  }
22069
+
22070
+ /**
22071
+ * Convert a DTED tile tree and write canonical terrain store bytes to a path.
22072
+ * @param {string} root
22073
+ * @param {string} out_path
22074
+ */
22075
+ export function writeDtedTreeToMmapStore(root, out_path) {
22076
+ const ptr0 = passStringToWasm0(root, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
22077
+ const len0 = WASM_VECTOR_LEN;
22078
+ const ptr1 = passStringToWasm0(out_path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
22079
+ const len1 = WASM_VECTOR_LEN;
22080
+ const ret = wasm.writeDtedTreeToMmapStore(ptr0, len0, ptr1, len1);
22081
+ if (ret[1]) {
22082
+ throw takeFromExternrefTable0(ret[0]);
22083
+ }
22084
+ }
20695
22085
  function __wbg_get_imports() {
20696
22086
  const import0 = {
20697
22087
  __proto__: null,
@@ -21072,6 +22462,10 @@ function __wbg_get_imports() {
21072
22462
  const ret = SpkSegment.__wrap(arg0);
21073
22463
  return ret;
21074
22464
  },
22465
+ __wbg_terrainstoretileindex_new: function(arg0) {
22466
+ const ret = TerrainStoreTileIndex.__wrap(arg0);
22467
+ return ret;
22468
+ },
21075
22469
  __wbg_tle_unwrap: function(arg0) {
21076
22470
  const ret = Tle.__unwrap(arg0);
21077
22471
  return ret;
@@ -21234,6 +22628,12 @@ const DragForceFinalization = (typeof FinalizationRegistry === 'undefined')
21234
22628
  const DtedTerrainFinalization = (typeof FinalizationRegistry === 'undefined')
21235
22629
  ? { register: () => {}, unregister: () => {} }
21236
22630
  : new FinalizationRegistry(ptr => wasm.__wbg_dtedterrain_free(ptr, 1));
22631
+ const Egm96FifteenMinuteGeoidFinalization = (typeof FinalizationRegistry === 'undefined')
22632
+ ? { register: () => {}, unregister: () => {} }
22633
+ : new FinalizationRegistry(ptr => wasm.__wbg_egm96fifteenminutegeoid_free(ptr, 1));
22634
+ const EllipsoidalHeightMFinalization = (typeof FinalizationRegistry === 'undefined')
22635
+ ? { register: () => {}, unregister: () => {} }
22636
+ : new FinalizationRegistry(ptr => wasm.__wbg_ellipsoidalheightm_free(ptr, 1));
21237
22637
  const EncounterFrameFinalization = (typeof FinalizationRegistry === 'undefined')
21238
22638
  ? { register: () => {}, unregister: () => {} }
21239
22639
  : new FinalizationRegistry(ptr => wasm.__wbg_encounterframe_free(ptr, 1));
@@ -21342,6 +22742,9 @@ const LookAnglesFinalization = (typeof FinalizationRegistry === 'undefined')
21342
22742
  const MappingFactorsFinalization = (typeof FinalizationRegistry === 'undefined')
21343
22743
  ? { register: () => {}, unregister: () => {} }
21344
22744
  : new FinalizationRegistry(ptr => wasm.__wbg_mappingfactors_free(ptr, 1));
22745
+ const MmapTerrainFinalization = (typeof FinalizationRegistry === 'undefined')
22746
+ ? { register: () => {}, unregister: () => {} }
22747
+ : new FinalizationRegistry(ptr => wasm.__wbg_mmapterrain_free(ptr, 1));
21345
22748
  const MoonElevationCrossingFinalization = (typeof FinalizationRegistry === 'undefined')
21346
22749
  ? { register: () => {}, unregister: () => {} }
21347
22750
  : new FinalizationRegistry(ptr => wasm.__wbg_moonelevationcrossing_free(ptr, 1));
@@ -21378,6 +22781,9 @@ const ObsPhaseShiftFinalization = (typeof FinalizationRegistry === 'undefined')
21378
22781
  const ObservationFilterFinalization = (typeof FinalizationRegistry === 'undefined')
21379
22782
  ? { register: () => {}, unregister: () => {} }
21380
22783
  : new FinalizationRegistry(ptr => wasm.__wbg_observationfilter_free(ptr, 1));
22784
+ const ObservationQcReportFinalization = (typeof FinalizationRegistry === 'undefined')
22785
+ ? { register: () => {}, unregister: () => {} }
22786
+ : new FinalizationRegistry(ptr => wasm.__wbg_observationqcreport_free(ptr, 1));
21381
22787
  const ObservationValueSeriesFinalization = (typeof FinalizationRegistry === 'undefined')
21382
22788
  ? { register: () => {}, unregister: () => {} }
21383
22789
  : new FinalizationRegistry(ptr => wasm.__wbg_observationvalueseries_free(ptr, 1));
@@ -21423,6 +22829,9 @@ const OpmSpacecraftFinalization = (typeof FinalizationRegistry === 'undefined')
21423
22829
  const OpmStateFinalization = (typeof FinalizationRegistry === 'undefined')
21424
22830
  ? { register: () => {}, unregister: () => {} }
21425
22831
  : new FinalizationRegistry(ptr => wasm.__wbg_opmstate_free(ptr, 1));
22832
+ const OrthometricHeightMFinalization = (typeof FinalizationRegistry === 'undefined')
22833
+ ? { register: () => {}, unregister: () => {} }
22834
+ : new FinalizationRegistry(ptr => wasm.__wbg_orthometricheightm_free(ptr, 1));
21426
22835
  const ParsedTleFileFinalization = (typeof FinalizationRegistry === 'undefined')
21427
22836
  ? { register: () => {}, unregister: () => {} }
21428
22837
  : new FinalizationRegistry(ptr => wasm.__wbg_parsedtlefile_free(ptr, 1));
@@ -21564,6 +22973,12 @@ const SsrCorrectionStoreFinalization = (typeof FinalizationRegistry === 'undefin
21564
22973
  const SunMoonFinalization = (typeof FinalizationRegistry === 'undefined')
21565
22974
  ? { register: () => {}, unregister: () => {} }
21566
22975
  : new FinalizationRegistry(ptr => wasm.__wbg_sunmoon_free(ptr, 1));
22976
+ const TerrainGeoidModelFinalization = (typeof FinalizationRegistry === 'undefined')
22977
+ ? { register: () => {}, unregister: () => {} }
22978
+ : new FinalizationRegistry(ptr => wasm.__wbg_terraingeoidmodel_free(ptr, 1));
22979
+ const TerrainStoreTileIndexFinalization = (typeof FinalizationRegistry === 'undefined')
22980
+ ? { register: () => {}, unregister: () => {} }
22981
+ : new FinalizationRegistry(ptr => wasm.__wbg_terrainstoretileindex_free(ptr, 1));
21567
22982
  const TleFinalization = (typeof FinalizationRegistry === 'undefined')
21568
22983
  ? { register: () => {}, unregister: () => {} }
21569
22984
  : new FinalizationRegistry(ptr => wasm.__wbg_tle_free(ptr, 1));