@neilberkman/sidereon 0.11.1 → 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.
@@ -3832,6 +3832,12 @@ class DragForce {
3832
3832
  if (Symbol.dispose) DragForce.prototype[Symbol.dispose] = DragForce.prototype.free;
3833
3833
  exports.DragForce = DragForce;
3834
3834
 
3835
+ /**
3836
+ * A DTED terrain tile cache rooted at a directory of DTED Level 2 files.
3837
+ *
3838
+ * Heights are ORTHOMETRIC terrain elevations in meters. Point order is always
3839
+ * longitude first, then latitude, both in degrees.
3840
+ */
3835
3841
  class DtedTerrain {
3836
3842
  __destroy_into_raw() {
3837
3843
  const ptr = this.__wbg_ptr;
@@ -3844,6 +3850,30 @@ class DtedTerrain {
3844
3850
  wasm.__wbg_dtedterrain_free(ptr, 0);
3845
3851
  }
3846
3852
  /**
3853
+ * Batch terrain heights in ORTHOMETRIC meters for longitude-first points.
3854
+ *
3855
+ * `points` is an array of `[longitudeDeg, latitudeDeg]` pairs or
3856
+ * `{ longitudeDeg, latitudeDeg }` objects. `options.interpolation` is
3857
+ * `"bilinear"`, `"nearest"`, or `"nearestPosting"`. The return value is
3858
+ * index-aligned to `points`; each entry is `{ ok: true, heightM }` or
3859
+ * `{ ok: false, error }`. Missing tiles evaluate to `0.0`.
3860
+ * @param {any} points
3861
+ * @param {any} options
3862
+ * @returns {any}
3863
+ */
3864
+ heightBatch(points, options) {
3865
+ const ret = wasm.dtedterrain_heightBatch(this.__wbg_ptr, points, options);
3866
+ if (ret[2]) {
3867
+ throw takeFromExternrefTable0(ret[1]);
3868
+ }
3869
+ return takeFromExternrefTable0(ret[0]);
3870
+ }
3871
+ /**
3872
+ * Terrain height in ORTHOMETRIC meters at `(longitudeDeg, latitudeDeg)`.
3873
+ *
3874
+ * Longitude and latitude are degrees. The lookup uses bilinear
3875
+ * interpolation. Missing tiles evaluate to `0.0`, matching the core DTED
3876
+ * fallback.
3847
3877
  * @param {number} longitude_deg
3848
3878
  * @param {number} latitude_deg
3849
3879
  * @returns {number}
@@ -3856,6 +3886,11 @@ class DtedTerrain {
3856
3886
  return ret[0];
3857
3887
  }
3858
3888
  /**
3889
+ * Terrain height in ORTHOMETRIC meters at `(longitudeDeg, latitudeDeg)`.
3890
+ *
3891
+ * Longitude and latitude are degrees. `options.interpolation` is
3892
+ * `"bilinear"`, `"nearest"`, or `"nearestPosting"`. Missing tiles evaluate
3893
+ * to `0.0`, matching the core DTED fallback.
3859
3894
  * @param {number} longitude_deg
3860
3895
  * @param {number} latitude_deg
3861
3896
  * @param {any} options
@@ -3869,6 +3904,10 @@ class DtedTerrain {
3869
3904
  return ret[0];
3870
3905
  }
3871
3906
  /**
3907
+ * Create a DTED terrain reader rooted at `root`.
3908
+ *
3909
+ * The root may contain tile files directly or the nested block layout the
3910
+ * core reader recognizes. Height results are ORTHOMETRIC meters.
3872
3911
  * @param {string} root
3873
3912
  */
3874
3913
  constructor(root) {
@@ -3883,6 +3922,101 @@ class DtedTerrain {
3883
3922
  if (Symbol.dispose) DtedTerrain.prototype[Symbol.dispose] = DtedTerrain.prototype.free;
3884
3923
  exports.DtedTerrain = DtedTerrain;
3885
3924
 
3925
+ /**
3926
+ * Loaded EGM96 15-arcminute geoid grid for explicit terrain datum conversion.
3927
+ */
3928
+ class Egm96FifteenMinuteGeoid {
3929
+ static __wrap(ptr) {
3930
+ const obj = Object.create(Egm96FifteenMinuteGeoid.prototype);
3931
+ obj.__wbg_ptr = ptr;
3932
+ Egm96FifteenMinuteGeoidFinalization.register(obj, obj.__wbg_ptr, obj);
3933
+ return obj;
3934
+ }
3935
+ __destroy_into_raw() {
3936
+ const ptr = this.__wbg_ptr;
3937
+ this.__wbg_ptr = 0;
3938
+ Egm96FifteenMinuteGeoidFinalization.unregister(this);
3939
+ return ptr;
3940
+ }
3941
+ free() {
3942
+ const ptr = this.__destroy_into_raw();
3943
+ wasm.__wbg_egm96fifteenminutegeoid_free(ptr, 0);
3944
+ }
3945
+ /**
3946
+ * Load `WW15MGH.DAC` bytes as an EGM96 15-arcminute geoid grid.
3947
+ * @param {Uint8Array} bytes
3948
+ * @returns {Egm96FifteenMinuteGeoid}
3949
+ */
3950
+ static fromWw15mghDacBytes(bytes) {
3951
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
3952
+ const len0 = WASM_VECTOR_LEN;
3953
+ const ret = wasm.egm96fifteenminutegeoid_fromWw15mghDacBytes(ptr0, len0);
3954
+ if (ret[2]) {
3955
+ throw takeFromExternrefTable0(ret[1]);
3956
+ }
3957
+ return Egm96FifteenMinuteGeoid.__wrap(ret[0]);
3958
+ }
3959
+ /**
3960
+ * Read and load `WW15MGH.DAC` from disk. A missing file throws a typed
3961
+ * `MissingEgm96Dac` error with `path` and `remediation` fields.
3962
+ * @param {string} path
3963
+ * @returns {Egm96FifteenMinuteGeoid}
3964
+ */
3965
+ static fromWw15mghDacPath(path) {
3966
+ const ptr0 = passStringToWasm0(path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
3967
+ const len0 = WASM_VECTOR_LEN;
3968
+ const ret = wasm.egm96fifteenminutegeoid_fromWw15mghDacPath(ptr0, len0);
3969
+ if (ret[2]) {
3970
+ throw takeFromExternrefTable0(ret[1]);
3971
+ }
3972
+ return Egm96FifteenMinuteGeoid.__wrap(ret[0]);
3973
+ }
3974
+ }
3975
+ if (Symbol.dispose) Egm96FifteenMinuteGeoid.prototype[Symbol.dispose] = Egm96FifteenMinuteGeoid.prototype.free;
3976
+ exports.Egm96FifteenMinuteGeoid = Egm96FifteenMinuteGeoid;
3977
+
3978
+ /**
3979
+ * Ellipsoidal height `h` in metres above the WGS84 reference ellipsoid.
3980
+ */
3981
+ class EllipsoidalHeightM {
3982
+ static __wrap(ptr) {
3983
+ const obj = Object.create(EllipsoidalHeightM.prototype);
3984
+ obj.__wbg_ptr = ptr;
3985
+ EllipsoidalHeightMFinalization.register(obj, obj.__wbg_ptr, obj);
3986
+ return obj;
3987
+ }
3988
+ __destroy_into_raw() {
3989
+ const ptr = this.__wbg_ptr;
3990
+ this.__wbg_ptr = 0;
3991
+ EllipsoidalHeightMFinalization.unregister(this);
3992
+ return ptr;
3993
+ }
3994
+ free() {
3995
+ const ptr = this.__destroy_into_raw();
3996
+ wasm.__wbg_ellipsoidalheightm_free(ptr, 0);
3997
+ }
3998
+ /**
3999
+ * Build an ellipsoidal height `h` in metres.
4000
+ * @param {number} value_m
4001
+ */
4002
+ constructor(value_m) {
4003
+ const ret = wasm.ellipsoidalheightm_new(value_m);
4004
+ this.__wbg_ptr = ret;
4005
+ EllipsoidalHeightMFinalization.register(this, this.__wbg_ptr, this);
4006
+ return this;
4007
+ }
4008
+ /**
4009
+ * Ellipsoidal height `h`, metres above the WGS84 reference ellipsoid.
4010
+ * @returns {number}
4011
+ */
4012
+ get valueM() {
4013
+ const ret = wasm.ellipsoidalheightm_valueM(this.__wbg_ptr);
4014
+ return ret;
4015
+ }
4016
+ }
4017
+ if (Symbol.dispose) EllipsoidalHeightM.prototype[Symbol.dispose] = EllipsoidalHeightM.prototype.free;
4018
+ exports.EllipsoidalHeightM = EllipsoidalHeightM;
4019
+
3886
4020
  /**
3887
4021
  * Orthonormal encounter frame built from two relative states.
3888
4022
  */
@@ -5518,6 +5652,24 @@ class Ionex {
5518
5652
  const ret = wasm.ionex_baseRadiusKm(this.__wbg_ptr);
5519
5653
  return ret;
5520
5654
  }
5655
+ /**
5656
+ * Signed latitude grid step, degrees. Standard IONEX grids are
5657
+ * north-to-south, so this value is usually negative.
5658
+ * @returns {number}
5659
+ */
5660
+ get dlatDeg() {
5661
+ const ret = wasm.ionex_dlatDeg(this.__wbg_ptr);
5662
+ return ret;
5663
+ }
5664
+ /**
5665
+ * Signed longitude grid step, degrees. Standard IONEX grids are
5666
+ * west-to-east, so this value is usually positive.
5667
+ * @returns {number}
5668
+ */
5669
+ get dlonDeg() {
5670
+ const ret = wasm.ionex_dlonDeg(this.__wbg_ptr);
5671
+ return ret;
5672
+ }
5521
5673
  /**
5522
5674
  * The IONEX `EXPONENT` header field; the TEC scale is `10^exponent`.
5523
5675
  * @returns {number}
@@ -5591,6 +5743,36 @@ class Ionex {
5591
5743
  }
5592
5744
  return ret[0];
5593
5745
  }
5746
+ /**
5747
+ * Extract the full IONEX vertical-TEC grids as plain sample data.
5748
+ *
5749
+ * Epochs are integer seconds since J2000. Latitude and longitude nodes and
5750
+ * grid steps are degrees. TEC and RMS maps are TECU and indexed
5751
+ * `[map][iLat][iLon]`. The shell height and base radius are kilometers.
5752
+ * @returns {any}
5753
+ */
5754
+ tecGridSamples() {
5755
+ const ret = wasm.ionex_tecGridSamples(this.__wbg_ptr);
5756
+ if (ret[2]) {
5757
+ throw takeFromExternrefTable0(ret[1]);
5758
+ }
5759
+ return takeFromExternrefTable0(ret[0]);
5760
+ }
5761
+ /**
5762
+ * Extract one IONEX vertical-TEC sample per grid node.
5763
+ *
5764
+ * Each sample is `{ epochJ2000S, latDeg, lonDeg, vtecTecu, rmsTecu }`.
5765
+ * Epochs are integer seconds since J2000, coordinates are degrees, and TEC
5766
+ * and RMS values are TECU.
5767
+ * @returns {any}
5768
+ */
5769
+ tecSamples() {
5770
+ const ret = wasm.ionex_tecSamples(this.__wbg_ptr);
5771
+ if (ret[2]) {
5772
+ throw takeFromExternrefTable0(ret[1]);
5773
+ }
5774
+ return takeFromExternrefTable0(ret[0]);
5775
+ }
5594
5776
  /**
5595
5777
  * Serialize to standard IONEX text. Deterministic: the same product always
5596
5778
  * produces byte-identical text, and re-parsing the output yields an equal
@@ -6909,6 +7091,256 @@ class MappingFactors {
6909
7091
  if (Symbol.dispose) MappingFactors.prototype[Symbol.dispose] = MappingFactors.prototype.free;
6910
7092
  exports.MappingFactors = MappingFactors;
6911
7093
 
7094
+ /**
7095
+ * In-memory reader for memory-mappable terrain store bytes.
7096
+ *
7097
+ * Query results are orthometric terrain heights `H` in metres. Use the
7098
+ * ellipsoidal methods only when a geoid model is deliberately selected.
7099
+ */
7100
+ class MmapTerrain {
7101
+ static __wrap(ptr) {
7102
+ const obj = Object.create(MmapTerrain.prototype);
7103
+ obj.__wbg_ptr = ptr;
7104
+ MmapTerrainFinalization.register(obj, obj.__wbg_ptr, obj);
7105
+ return obj;
7106
+ }
7107
+ __destroy_into_raw() {
7108
+ const ptr = this.__wbg_ptr;
7109
+ this.__wbg_ptr = 0;
7110
+ MmapTerrainFinalization.unregister(this);
7111
+ return ptr;
7112
+ }
7113
+ free() {
7114
+ const ptr = this.__destroy_into_raw();
7115
+ wasm.__wbg_mmapterrain_free(ptr, 0);
7116
+ }
7117
+ /**
7118
+ * FNV-1a checksum of the full terrain store byte span.
7119
+ * @returns {bigint}
7120
+ */
7121
+ checksum64() {
7122
+ const ret = wasm.mmapterrain_checksum64(this.__wbg_ptr);
7123
+ return BigInt.asUintN(64, ret);
7124
+ }
7125
+ /**
7126
+ * Ellipsoidal height `h = H + N` in metres at `(longitudeDeg, latitudeDeg)`
7127
+ * using the embedded EGM96 1-degree geoid grid.
7128
+ * @param {number} longitude_deg
7129
+ * @param {number} latitude_deg
7130
+ * @returns {EllipsoidalHeightM}
7131
+ */
7132
+ ellipsoidalHeightM(longitude_deg, latitude_deg) {
7133
+ const ret = wasm.mmapterrain_ellipsoidalHeightM(this.__wbg_ptr, longitude_deg, latitude_deg);
7134
+ if (ret[2]) {
7135
+ throw takeFromExternrefTable0(ret[1]);
7136
+ }
7137
+ return EllipsoidalHeightM.__wrap(ret[0]);
7138
+ }
7139
+ /**
7140
+ * Ellipsoidal height `h = H + N` in metres using an explicit geoid model.
7141
+ *
7142
+ * The terrain lookup input order is `(longitudeDeg, latitudeDeg)`. Choosing
7143
+ * the EGM96 15-arcminute model requires a loaded `WW15MGH.DAC` grid and
7144
+ * does not fall back to the embedded 1-degree grid.
7145
+ * @param {number} longitude_deg
7146
+ * @param {number} latitude_deg
7147
+ * @param {any} options
7148
+ * @param {TerrainGeoidModel} geoid
7149
+ * @returns {EllipsoidalHeightM}
7150
+ */
7151
+ ellipsoidalHeightMWithModel(longitude_deg, latitude_deg, options, geoid) {
7152
+ _assertClass(geoid, TerrainGeoidModel);
7153
+ const ret = wasm.mmapterrain_ellipsoidalHeightMWithModel(this.__wbg_ptr, longitude_deg, latitude_deg, options, geoid.__wbg_ptr);
7154
+ if (ret[2]) {
7155
+ throw takeFromExternrefTable0(ret[1]);
7156
+ }
7157
+ return EllipsoidalHeightM.__wrap(ret[0]);
7158
+ }
7159
+ /**
7160
+ * Ellipsoidal height `h = H + N` in metres using embedded EGM96 1-degree
7161
+ * geoid conversion and explicit terrain lookup options.
7162
+ * @param {number} longitude_deg
7163
+ * @param {number} latitude_deg
7164
+ * @param {any} options
7165
+ * @returns {EllipsoidalHeightM}
7166
+ */
7167
+ ellipsoidalHeightMWithOptions(longitude_deg, latitude_deg, options) {
7168
+ const ret = wasm.mmapterrain_ellipsoidalHeightMWithOptions(this.__wbg_ptr, longitude_deg, latitude_deg, options);
7169
+ if (ret[2]) {
7170
+ throw takeFromExternrefTable0(ret[1]);
7171
+ }
7172
+ return EllipsoidalHeightM.__wrap(ret[0]);
7173
+ }
7174
+ /**
7175
+ * Parse terrain store bytes from a `Uint8Array`.
7176
+ * @param {Uint8Array} bytes
7177
+ * @returns {MmapTerrain}
7178
+ */
7179
+ static fromBytes(bytes) {
7180
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
7181
+ const len0 = WASM_VECTOR_LEN;
7182
+ const ret = wasm.mmapterrain_fromBytes(ptr0, len0);
7183
+ if (ret[2]) {
7184
+ throw takeFromExternrefTable0(ret[1]);
7185
+ }
7186
+ return MmapTerrain.__wrap(ret[0]);
7187
+ }
7188
+ /**
7189
+ * Read a terrain store file from host I/O and parse it into memory.
7190
+ *
7191
+ * Browser runtimes should use [`MmapTerrain.fromBytes`] with fetched bytes.
7192
+ * @param {string} path
7193
+ * @returns {MmapTerrain}
7194
+ */
7195
+ static fromPath(path) {
7196
+ const ptr0 = passStringToWasm0(path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
7197
+ const len0 = WASM_VECTOR_LEN;
7198
+ const ret = wasm.mmapterrain_fromPath(ptr0, len0);
7199
+ if (ret[2]) {
7200
+ throw takeFromExternrefTable0(ret[1]);
7201
+ }
7202
+ return MmapTerrain.__wrap(ret[0]);
7203
+ }
7204
+ /**
7205
+ * Parse terrain store bytes from an owned `Uint8Array` copy.
7206
+ * @param {Uint8Array} bytes
7207
+ * @returns {MmapTerrain}
7208
+ */
7209
+ static fromVec(bytes) {
7210
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
7211
+ const len0 = WASM_VECTOR_LEN;
7212
+ const ret = wasm.mmapterrain_fromVec(ptr0, len0);
7213
+ if (ret[2]) {
7214
+ throw takeFromExternrefTable0(ret[1]);
7215
+ }
7216
+ return MmapTerrain.__wrap(ret[0]);
7217
+ }
7218
+ /**
7219
+ * Batch ORTHOMETRIC terrain heights for longitude-first points.
7220
+ *
7221
+ * `points` is an array of `[longitudeDeg, latitudeDeg]` pairs or
7222
+ * `{ longitudeDeg, latitudeDeg }` objects. Each entry is
7223
+ * `{ ok: true, heightM }` or `{ ok: false, error }`.
7224
+ * @param {any} points
7225
+ * @param {any} options
7226
+ * @returns {any}
7227
+ */
7228
+ heightBatch(points, options) {
7229
+ const ret = wasm.mmapterrain_heightBatch(this.__wbg_ptr, points, options);
7230
+ if (ret[2]) {
7231
+ throw takeFromExternrefTable0(ret[1]);
7232
+ }
7233
+ return takeFromExternrefTable0(ret[0]);
7234
+ }
7235
+ /**
7236
+ * Terrain height in ORTHOMETRIC metres at `(longitudeDeg, latitudeDeg)`.
7237
+ *
7238
+ * Longitude and latitude are degrees. The lookup uses bilinear
7239
+ * interpolation. Missing tiles evaluate to `0.0`.
7240
+ * @param {number} longitude_deg
7241
+ * @param {number} latitude_deg
7242
+ * @returns {number}
7243
+ */
7244
+ heightM(longitude_deg, latitude_deg) {
7245
+ const ret = wasm.mmapterrain_heightM(this.__wbg_ptr, longitude_deg, latitude_deg);
7246
+ if (ret[2]) {
7247
+ throw takeFromExternrefTable0(ret[1]);
7248
+ }
7249
+ return ret[0];
7250
+ }
7251
+ /**
7252
+ * Terrain height in ORTHOMETRIC metres at `(longitudeDeg, latitudeDeg)`.
7253
+ *
7254
+ * `options.interpolation` is `"bilinear"`, `"nearest"`, or
7255
+ * `"nearestPosting"`.
7256
+ * @param {number} longitude_deg
7257
+ * @param {number} latitude_deg
7258
+ * @param {any} options
7259
+ * @returns {number}
7260
+ */
7261
+ heightMWithOptions(longitude_deg, latitude_deg, options) {
7262
+ const ret = wasm.mmapterrain_heightMWithOptions(this.__wbg_ptr, longitude_deg, latitude_deg, options);
7263
+ if (ret[2]) {
7264
+ throw takeFromExternrefTable0(ret[1]);
7265
+ }
7266
+ return ret[0];
7267
+ }
7268
+ /**
7269
+ * Batch typed ORTHOMETRIC terrain heights for longitude-first points.
7270
+ *
7271
+ * Each entry is `{ ok: true, orthometricHeightM: { valueM } }` or
7272
+ * `{ ok: false, error }`.
7273
+ * @param {any} points
7274
+ * @param {any} options
7275
+ * @returns {any}
7276
+ */
7277
+ orthometricHeightBatch(points, options) {
7278
+ const ret = wasm.mmapterrain_orthometricHeightBatch(this.__wbg_ptr, points, options);
7279
+ if (ret[2]) {
7280
+ throw takeFromExternrefTable0(ret[1]);
7281
+ }
7282
+ return takeFromExternrefTable0(ret[0]);
7283
+ }
7284
+ /**
7285
+ * Typed ORTHOMETRIC terrain height `H` at `(longitudeDeg, latitudeDeg)`.
7286
+ * @param {number} longitude_deg
7287
+ * @param {number} latitude_deg
7288
+ * @returns {OrthometricHeightM}
7289
+ */
7290
+ orthometricHeightM(longitude_deg, latitude_deg) {
7291
+ const ret = wasm.mmapterrain_orthometricHeightM(this.__wbg_ptr, longitude_deg, latitude_deg);
7292
+ if (ret[2]) {
7293
+ throw takeFromExternrefTable0(ret[1]);
7294
+ }
7295
+ return OrthometricHeightM.__wrap(ret[0]);
7296
+ }
7297
+ /**
7298
+ * Typed ORTHOMETRIC terrain height `H` at `(longitudeDeg, latitudeDeg)`
7299
+ * with explicit lookup options.
7300
+ * @param {number} longitude_deg
7301
+ * @param {number} latitude_deg
7302
+ * @param {any} options
7303
+ * @returns {OrthometricHeightM}
7304
+ */
7305
+ orthometricHeightMWithOptions(longitude_deg, latitude_deg, options) {
7306
+ const ret = wasm.mmapterrain_orthometricHeightMWithOptions(this.__wbg_ptr, longitude_deg, latitude_deg, options);
7307
+ if (ret[2]) {
7308
+ throw takeFromExternrefTable0(ret[1]);
7309
+ }
7310
+ return OrthometricHeightM.__wrap(ret[0]);
7311
+ }
7312
+ /**
7313
+ * Parsed tile index records in store order.
7314
+ * @returns {TerrainStoreTileIndex[]}
7315
+ */
7316
+ tileIndex() {
7317
+ const ret = wasm.mmapterrain_tileIndex(this.__wbg_ptr);
7318
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
7319
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
7320
+ return v1;
7321
+ }
7322
+ /**
7323
+ * Canonical store bytes for this parsed terrain store.
7324
+ * @returns {Uint8Array}
7325
+ */
7326
+ toBytes() {
7327
+ const ret = wasm.mmapterrain_toBytes(this.__wbg_ptr);
7328
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
7329
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
7330
+ return v1;
7331
+ }
7332
+ /**
7333
+ * File-level vertical datum for the store's orthometric posting payloads.
7334
+ * @returns {VerticalDatum}
7335
+ */
7336
+ get verticalDatum() {
7337
+ const ret = wasm.mmapterrain_verticalDatum(this.__wbg_ptr);
7338
+ return ret;
7339
+ }
7340
+ }
7341
+ if (Symbol.dispose) MmapTerrain.prototype[Symbol.dispose] = MmapTerrain.prototype.free;
7342
+ exports.MmapTerrain = MmapTerrain;
7343
+
6912
7344
  /**
6913
7345
  * One refined Moon elevation threshold crossing (moonrise / moonset).
6914
7346
  */
@@ -10049,6 +10481,81 @@ class OpmState {
10049
10481
  if (Symbol.dispose) OpmState.prototype[Symbol.dispose] = OpmState.prototype.free;
10050
10482
  exports.OpmState = OpmState;
10051
10483
 
10484
+ /**
10485
+ * Orthometric terrain height `H` in metres above the EGM96 mean sea level
10486
+ * geoid.
10487
+ */
10488
+ class OrthometricHeightM {
10489
+ static __wrap(ptr) {
10490
+ const obj = Object.create(OrthometricHeightM.prototype);
10491
+ obj.__wbg_ptr = ptr;
10492
+ OrthometricHeightMFinalization.register(obj, obj.__wbg_ptr, obj);
10493
+ return obj;
10494
+ }
10495
+ __destroy_into_raw() {
10496
+ const ptr = this.__wbg_ptr;
10497
+ this.__wbg_ptr = 0;
10498
+ OrthometricHeightMFinalization.unregister(this);
10499
+ return ptr;
10500
+ }
10501
+ free() {
10502
+ const ptr = this.__destroy_into_raw();
10503
+ wasm.__wbg_orthometricheightm_free(ptr, 0);
10504
+ }
10505
+ /**
10506
+ * Build an orthometric height `H` in metres.
10507
+ * @param {number} value_m
10508
+ */
10509
+ constructor(value_m) {
10510
+ const ret = wasm.orthometricheightm_new(value_m);
10511
+ this.__wbg_ptr = ret;
10512
+ OrthometricHeightMFinalization.register(this, this.__wbg_ptr, this);
10513
+ return this;
10514
+ }
10515
+ /**
10516
+ * Convert to ellipsoidal height `h = H + N` using degree inputs in geoid
10517
+ * order `(latitudeDeg, longitudeDeg)` and an explicit geoid model.
10518
+ * @param {number} latitude_deg
10519
+ * @param {number} longitude_deg
10520
+ * @param {TerrainGeoidModel} geoid
10521
+ * @returns {EllipsoidalHeightM}
10522
+ */
10523
+ toEllipsoidalHeightDeg(latitude_deg, longitude_deg, geoid) {
10524
+ _assertClass(geoid, TerrainGeoidModel);
10525
+ const ret = wasm.orthometricheightm_toEllipsoidalHeightDeg(this.__wbg_ptr, latitude_deg, longitude_deg, geoid.__wbg_ptr);
10526
+ if (ret[2]) {
10527
+ throw takeFromExternrefTable0(ret[1]);
10528
+ }
10529
+ return EllipsoidalHeightM.__wrap(ret[0]);
10530
+ }
10531
+ /**
10532
+ * Convert to ellipsoidal height `h = H + N` using radian inputs in geoid
10533
+ * order `(latitudeRad, longitudeRad)` and an explicit geoid model.
10534
+ * @param {number} latitude_rad
10535
+ * @param {number} longitude_rad
10536
+ * @param {TerrainGeoidModel} geoid
10537
+ * @returns {EllipsoidalHeightM}
10538
+ */
10539
+ toEllipsoidalHeightRad(latitude_rad, longitude_rad, geoid) {
10540
+ _assertClass(geoid, TerrainGeoidModel);
10541
+ const ret = wasm.orthometricheightm_toEllipsoidalHeightRad(this.__wbg_ptr, latitude_rad, longitude_rad, geoid.__wbg_ptr);
10542
+ if (ret[2]) {
10543
+ throw takeFromExternrefTable0(ret[1]);
10544
+ }
10545
+ return EllipsoidalHeightM.__wrap(ret[0]);
10546
+ }
10547
+ /**
10548
+ * Orthometric height `H`, metres above the EGM96 mean sea level geoid.
10549
+ * @returns {number}
10550
+ */
10551
+ get valueM() {
10552
+ const ret = wasm.orthometricheightm_valueM(this.__wbg_ptr);
10553
+ return ret;
10554
+ }
10555
+ }
10556
+ if (Symbol.dispose) OrthometricHeightM.prototype[Symbol.dispose] = OrthometricHeightM.prototype.free;
10557
+ exports.OrthometricHeightM = OrthometricHeightM;
10558
+
10052
10559
  /**
10053
10560
  * The result of [`parseTleFile`]: the satellites that parsed, plus a count of
10054
10561
  * complete records that were skipped because SGP4 initialization failed.
@@ -12050,6 +12557,12 @@ class SatelliteVector {
12050
12557
  if (Symbol.dispose) SatelliteVector.prototype[Symbol.dispose] = SatelliteVector.prototype.free;
12051
12558
  exports.SatelliteVector = SatelliteVector;
12052
12559
 
12560
+ /**
12561
+ * Mutable SBAS correction store.
12562
+ *
12563
+ * Ingest raw SBAS messages with a source GEO and GNSS time, then query decoded
12564
+ * fast, long-term, ionospheric, and GEO navigation correction records.
12565
+ */
12053
12566
  class SbasCorrectionStore {
12054
12567
  __destroy_into_raw() {
12055
12568
  const ptr = this.__wbg_ptr;
@@ -12062,6 +12575,49 @@ class SbasCorrectionStore {
12062
12575
  wasm.__wbg_sbascorrectionstore_free(ptr, 0);
12063
12576
  }
12064
12577
  /**
12578
+ * Fast pseudorange correction for `(geo, sat)`, or `null`.
12579
+ *
12580
+ * `prcM` is meters, `rrcMS` is meters per second, and `tOfJ2000S` is
12581
+ * seconds since J2000.
12582
+ * @param {string} geo
12583
+ * @param {string} sat
12584
+ * @returns {any}
12585
+ */
12586
+ fastCorrection(geo, sat) {
12587
+ const ptr0 = passStringToWasm0(geo, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
12588
+ const len0 = WASM_VECTOR_LEN;
12589
+ const ptr1 = passStringToWasm0(sat, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
12590
+ const len1 = WASM_VECTOR_LEN;
12591
+ const ret = wasm.sbascorrectionstore_fastCorrection(this.__wbg_ptr, ptr0, len0, ptr1, len1);
12592
+ if (ret[2]) {
12593
+ throw takeFromExternrefTable0(ret[1]);
12594
+ }
12595
+ return takeFromExternrefTable0(ret[0]);
12596
+ }
12597
+ /**
12598
+ * SBAS GEO navigation state for `geo`, or `null`.
12599
+ *
12600
+ * Positions are ECEF meters, velocities are ECEF meters per second,
12601
+ * accelerations are ECEF meters per second squared, clock fields are
12602
+ * seconds and seconds per second, and `t0J2000S` is seconds since J2000.
12603
+ * @param {string} geo
12604
+ * @returns {any}
12605
+ */
12606
+ geoNavState(geo) {
12607
+ const ptr0 = passStringToWasm0(geo, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
12608
+ const len0 = WASM_VECTOR_LEN;
12609
+ const ret = wasm.sbascorrectionstore_geoNavState(this.__wbg_ptr, ptr0, len0);
12610
+ if (ret[2]) {
12611
+ throw takeFromExternrefTable0(ret[1]);
12612
+ }
12613
+ return takeFromExternrefTable0(ret[0]);
12614
+ }
12615
+ /**
12616
+ * Ingest one decoded SBAS message into the correction store.
12617
+ *
12618
+ * `geo` is the SBAS source satellite token such as `"S29"`. `week` and
12619
+ * `towS` are in the selected GNSS time scale. `form` is `"framed250"` or
12620
+ * `"body226"`.
12065
12621
  * @param {Uint8Array} bytes
12066
12622
  * @param {string | null | undefined} form
12067
12623
  * @param {string} geo
@@ -12084,6 +12640,27 @@ class SbasCorrectionStore {
12084
12640
  }
12085
12641
  }
12086
12642
  /**
12643
+ * SBAS ionospheric grid for `geo`, or `null`.
12644
+ *
12645
+ * Grid point latitudes and longitudes are degrees, vertical delays are
12646
+ * meters, and GIVE variances are square meters when present.
12647
+ * @param {string} geo
12648
+ * @returns {any}
12649
+ */
12650
+ ionoGrid(geo) {
12651
+ const ptr0 = passStringToWasm0(geo, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
12652
+ const len0 = WASM_VECTOR_LEN;
12653
+ const ret = wasm.sbascorrectionstore_ionoGrid(this.__wbg_ptr, ptr0, len0);
12654
+ if (ret[2]) {
12655
+ throw takeFromExternrefTable0(ret[1]);
12656
+ }
12657
+ return takeFromExternrefTable0(ret[0]);
12658
+ }
12659
+ /**
12660
+ * SBAS ionospheric slant delay in meters, or `null`.
12661
+ *
12662
+ * Receiver latitude, longitude, elevation, and azimuth are radians.
12663
+ * `frequencyHz` is the carrier frequency for the reported group delay.
12087
12664
  * @param {string} geo
12088
12665
  * @param {number} receiver_lat_rad
12089
12666
  * @param {number} receiver_lon_rad
@@ -12102,6 +12679,30 @@ class SbasCorrectionStore {
12102
12679
  }
12103
12680
  return ret[0] === 0 ? undefined : ret[1];
12104
12681
  }
12682
+ /**
12683
+ * Long-term orbit and clock correction for `(geo, sat)`, or `null`.
12684
+ *
12685
+ * Position deltas are ECEF meters, rates are ECEF meters per second, clock
12686
+ * deltas are seconds and seconds per second, and `t0J2000S` is seconds
12687
+ * since J2000.
12688
+ * @param {string} geo
12689
+ * @param {string} sat
12690
+ * @returns {any}
12691
+ */
12692
+ longTermCorrection(geo, sat) {
12693
+ const ptr0 = passStringToWasm0(geo, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
12694
+ const len0 = WASM_VECTOR_LEN;
12695
+ const ptr1 = passStringToWasm0(sat, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
12696
+ const len1 = WASM_VECTOR_LEN;
12697
+ const ret = wasm.sbascorrectionstore_longTermCorrection(this.__wbg_ptr, ptr0, len0, ptr1, len1);
12698
+ if (ret[2]) {
12699
+ throw takeFromExternrefTable0(ret[1]);
12700
+ }
12701
+ return takeFromExternrefTable0(ret[0]);
12702
+ }
12703
+ /**
12704
+ * Create an empty SBAS correction store.
12705
+ */
12105
12706
  constructor() {
12106
12707
  const ret = wasm.sbascorrectionstore_new();
12107
12708
  this.__wbg_ptr = ret;
@@ -12109,6 +12710,10 @@ class SbasCorrectionStore {
12109
12710
  return this;
12110
12711
  }
12111
12712
  /**
12713
+ * Ready SBAS GEO source satellites at `tJ2000S`.
12714
+ *
12715
+ * The time is seconds since J2000. Returned tokens are strings such as
12716
+ * `"S29"`, sorted by most recent update first.
12112
12717
  * @param {number} t_j2000_s
12113
12718
  * @returns {string[]}
12114
12719
  */
@@ -12118,6 +12723,24 @@ class SbasCorrectionStore {
12118
12723
  wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
12119
12724
  return v1;
12120
12725
  }
12726
+ /**
12727
+ * Allow or disallow partial SBAS corrections when building corrected
12728
+ * ephemeris states.
12729
+ * @param {boolean} yes
12730
+ */
12731
+ setAllowPartial(yes) {
12732
+ wasm.sbascorrectionstore_setAllowPartial(this.__wbg_ptr, yes);
12733
+ }
12734
+ /**
12735
+ * Set the maximum staleness for fresh SBAS corrections, in seconds.
12736
+ * @param {number} seconds
12737
+ */
12738
+ setStalenessSeconds(seconds) {
12739
+ const ret = wasm.sbascorrectionstore_setStalenessSeconds(this.__wbg_ptr, seconds);
12740
+ if (ret[1]) {
12741
+ throw takeFromExternrefTable0(ret[0]);
12742
+ }
12743
+ }
12121
12744
  }
12122
12745
  if (Symbol.dispose) SbasCorrectionStore.prototype[Symbol.dispose] = SbasCorrectionStore.prototype.free;
12123
12746
  exports.SbasCorrectionStore = SbasCorrectionStore;
@@ -14007,70 +14630,307 @@ exports.SsrSource = SsrSource;
14007
14630
  * The frame (geocentric ECI of date vs Earth-fixed ITRS/ECEF) is fixed by which
14008
14631
  * function produced this object: [`sunMoonEci`] or [`sunMoonEcef`].
14009
14632
  */
14010
- class SunMoon {
14633
+ class SunMoon {
14634
+ static __wrap(ptr) {
14635
+ const obj = Object.create(SunMoon.prototype);
14636
+ obj.__wbg_ptr = ptr;
14637
+ SunMoonFinalization.register(obj, obj.__wbg_ptr, obj);
14638
+ return obj;
14639
+ }
14640
+ __destroy_into_raw() {
14641
+ const ptr = this.__wbg_ptr;
14642
+ this.__wbg_ptr = 0;
14643
+ SunMoonFinalization.unregister(this);
14644
+ return ptr;
14645
+ }
14646
+ free() {
14647
+ const ptr = this.__destroy_into_raw();
14648
+ wasm.__wbg_sunmoon_free(ptr, 0);
14649
+ }
14650
+ /**
14651
+ * Number of epochs in the batch.
14652
+ * @returns {number}
14653
+ */
14654
+ get epochCount() {
14655
+ const ret = wasm.sunmoon_epochCount(this.__wbg_ptr);
14656
+ return ret >>> 0;
14657
+ }
14658
+ /**
14659
+ * The frame these positions are in: `"eci"` or `"ecef"`.
14660
+ * @returns {string}
14661
+ */
14662
+ get frame() {
14663
+ let deferred1_0;
14664
+ let deferred1_1;
14665
+ try {
14666
+ const ret = wasm.sunmoon_frame(this.__wbg_ptr);
14667
+ deferred1_0 = ret[0];
14668
+ deferred1_1 = ret[1];
14669
+ return getStringFromWasm0(ret[0], ret[1]);
14670
+ } finally {
14671
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
14672
+ }
14673
+ }
14674
+ /**
14675
+ * Moon positions, metres, flat row-major `(n, 3)`.
14676
+ * @returns {Float64Array}
14677
+ */
14678
+ get moon() {
14679
+ const ret = wasm.sunmoon_moon(this.__wbg_ptr);
14680
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
14681
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
14682
+ return v1;
14683
+ }
14684
+ /**
14685
+ * Sun positions, metres, flat row-major `(n, 3)`.
14686
+ * @returns {Float64Array}
14687
+ */
14688
+ get sun() {
14689
+ const ret = wasm.sunmoon_sun(this.__wbg_ptr);
14690
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
14691
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
14692
+ return v1;
14693
+ }
14694
+ }
14695
+ if (Symbol.dispose) SunMoon.prototype[Symbol.dispose] = SunMoon.prototype.free;
14696
+ exports.SunMoon = SunMoon;
14697
+
14698
+ /**
14699
+ * Terrain datum conversion and optional geoid-grid loading error variants.
14700
+ * @enum {0 | 1 | 2 | 3}
14701
+ */
14702
+ const TerrainDatumError = Object.freeze({
14703
+ /**
14704
+ * Terrain lookup failed before datum conversion.
14705
+ */
14706
+ Terrain: 0, "0": "Terrain",
14707
+ /**
14708
+ * A geoid grid could not be parsed.
14709
+ */
14710
+ Geoid: 1, "1": "Geoid",
14711
+ /**
14712
+ * Reading a geoid grid failed for a reason other than absence.
14713
+ */
14714
+ Io: 2, "2": "Io",
14715
+ /**
14716
+ * The EGM96 15-arcminute `WW15MGH.DAC` grid was requested but is absent.
14717
+ */
14718
+ MissingEgm96Dac: 3, "3": "MissingEgm96Dac",
14719
+ });
14720
+ exports.TerrainDatumError = TerrainDatumError;
14721
+
14722
+ /**
14723
+ * Geoid model used to convert terrain orthometric height `H` to ellipsoidal
14724
+ * height `h`.
14725
+ */
14726
+ class TerrainGeoidModel {
14727
+ static __wrap(ptr) {
14728
+ const obj = Object.create(TerrainGeoidModel.prototype);
14729
+ obj.__wbg_ptr = ptr;
14730
+ TerrainGeoidModelFinalization.register(obj, obj.__wbg_ptr, obj);
14731
+ return obj;
14732
+ }
14733
+ __destroy_into_raw() {
14734
+ const ptr = this.__wbg_ptr;
14735
+ this.__wbg_ptr = 0;
14736
+ TerrainGeoidModelFinalization.unregister(this);
14737
+ return ptr;
14738
+ }
14739
+ free() {
14740
+ const ptr = this.__destroy_into_raw();
14741
+ wasm.__wbg_terraingeoidmodel_free(ptr, 0);
14742
+ }
14743
+ /**
14744
+ * Use a caller-supplied EGM96 15-arcminute geoid grid for `h = H + N`.
14745
+ * @param {Egm96FifteenMinuteGeoid} geoid
14746
+ * @returns {TerrainGeoidModel}
14747
+ */
14748
+ static egm96FifteenMinute(geoid) {
14749
+ _assertClass(geoid, Egm96FifteenMinuteGeoid);
14750
+ const ret = wasm.terraingeoidmodel_egm96FifteenMinute(geoid.__wbg_ptr);
14751
+ return TerrainGeoidModel.__wrap(ret);
14752
+ }
14753
+ /**
14754
+ * Use the embedded EGM96 1-degree geoid grid for `h = H + N`.
14755
+ * @returns {TerrainGeoidModel}
14756
+ */
14757
+ static egm96OneDegree() {
14758
+ const ret = wasm.terraingeoidmodel_egm96OneDegree();
14759
+ return TerrainGeoidModel.__wrap(ret);
14760
+ }
14761
+ /**
14762
+ * Model discriminator: `"egm96OneDegree"` or `"egm96FifteenMinute"`.
14763
+ * @returns {string}
14764
+ */
14765
+ get kind() {
14766
+ let deferred1_0;
14767
+ let deferred1_1;
14768
+ try {
14769
+ const ret = wasm.terraingeoidmodel_kind(this.__wbg_ptr);
14770
+ deferred1_0 = ret[0];
14771
+ deferred1_1 = ret[1];
14772
+ return getStringFromWasm0(ret[0], ret[1]);
14773
+ } finally {
14774
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
14775
+ }
14776
+ }
14777
+ }
14778
+ if (Symbol.dispose) TerrainGeoidModel.prototype[Symbol.dispose] = TerrainGeoidModel.prototype.free;
14779
+ exports.TerrainGeoidModel = TerrainGeoidModel;
14780
+
14781
+ /**
14782
+ * Terrain store conversion, serialization, and parsing error variants.
14783
+ * @enum {0 | 1 | 2 | 3 | 4 | 5}
14784
+ */
14785
+ const TerrainStoreError = Object.freeze({
14786
+ /**
14787
+ * File or directory I/O failed.
14788
+ */
14789
+ Io: 0, "0": "Io",
14790
+ /**
14791
+ * DTED or terrain store bytes could not be parsed.
14792
+ */
14793
+ Parse: 1, "1": "Parse",
14794
+ /**
14795
+ * The terrain store version is not supported.
14796
+ */
14797
+ UnsupportedVersion: 2, "2": "UnsupportedVersion",
14798
+ /**
14799
+ * The terrain store datum tag is not supported.
14800
+ */
14801
+ UnsupportedDatum: 3, "3": "UnsupportedDatum",
14802
+ /**
14803
+ * Two input DTED files resolved to the same integer tile id.
14804
+ */
14805
+ DuplicateTile: 4, "4": "DuplicateTile",
14806
+ /**
14807
+ * A tile payload checksum did not match its index record.
14808
+ */
14809
+ Checksum: 5, "5": "Checksum",
14810
+ });
14811
+ exports.TerrainStoreError = TerrainStoreError;
14812
+
14813
+ /**
14814
+ * Metadata for one tile index record in a memory-mappable terrain store.
14815
+ */
14816
+ class TerrainStoreTileIndex {
14011
14817
  static __wrap(ptr) {
14012
- const obj = Object.create(SunMoon.prototype);
14818
+ const obj = Object.create(TerrainStoreTileIndex.prototype);
14013
14819
  obj.__wbg_ptr = ptr;
14014
- SunMoonFinalization.register(obj, obj.__wbg_ptr, obj);
14820
+ TerrainStoreTileIndexFinalization.register(obj, obj.__wbg_ptr, obj);
14015
14821
  return obj;
14016
14822
  }
14017
14823
  __destroy_into_raw() {
14018
14824
  const ptr = this.__wbg_ptr;
14019
14825
  this.__wbg_ptr = 0;
14020
- SunMoonFinalization.unregister(this);
14826
+ TerrainStoreTileIndexFinalization.unregister(this);
14021
14827
  return ptr;
14022
14828
  }
14023
14829
  free() {
14024
14830
  const ptr = this.__destroy_into_raw();
14025
- wasm.__wbg_sunmoon_free(ptr, 0);
14831
+ wasm.__wbg_terrainstoretileindex_free(ptr, 0);
14026
14832
  }
14027
14833
  /**
14028
- * Number of epochs in the batch.
14834
+ * FNV-1a checksum of this tile's posting payload bytes.
14835
+ * @returns {bigint}
14836
+ */
14837
+ get checksum64() {
14838
+ const ret = wasm.terrainstoretileindex_checksum64(this.__wbg_ptr);
14839
+ return BigInt.asUintN(64, ret);
14840
+ }
14841
+ /**
14842
+ * Byte length of this tile's posting payload in the store.
14843
+ * @returns {bigint}
14844
+ */
14845
+ get dataLen() {
14846
+ const ret = wasm.terrainstoretileindex_dataLen(this.__wbg_ptr);
14847
+ return BigInt.asUintN(64, ret);
14848
+ }
14849
+ /**
14850
+ * Byte offset of this tile's posting payload in the store.
14851
+ * @returns {bigint}
14852
+ */
14853
+ get dataOffset() {
14854
+ const ret = wasm.terrainstoretileindex_dataOffset(this.__wbg_ptr);
14855
+ return BigInt.asUintN(64, ret);
14856
+ }
14857
+ /**
14858
+ * Number of latitude postings.
14029
14859
  * @returns {number}
14030
14860
  */
14031
- get epochCount() {
14032
- const ret = wasm.sunmoon_epochCount(this.__wbg_ptr);
14861
+ get latCount() {
14862
+ const ret = wasm.terrainstoretileindex_latCount(this.__wbg_ptr);
14033
14863
  return ret >>> 0;
14034
14864
  }
14035
14865
  /**
14036
- * The frame these positions are in: `"eci"` or `"ecef"`.
14037
- * @returns {string}
14866
+ * Integer latitude tile id, for example `36` for a tile covering
14867
+ * `36..37` degrees.
14868
+ * @returns {number}
14038
14869
  */
14039
- get frame() {
14040
- let deferred1_0;
14041
- let deferred1_1;
14042
- try {
14043
- const ret = wasm.sunmoon_frame(this.__wbg_ptr);
14044
- deferred1_0 = ret[0];
14045
- deferred1_1 = ret[1];
14046
- return getStringFromWasm0(ret[0], ret[1]);
14047
- } finally {
14048
- wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
14049
- }
14870
+ get latIndex() {
14871
+ const ret = wasm.terrainstoretileindex_latIndex(this.__wbg_ptr);
14872
+ return ret;
14050
14873
  }
14051
14874
  /**
14052
- * Moon positions, metres, flat row-major `(n, 3)`.
14053
- * @returns {Float64Array}
14875
+ * Number of longitude postings.
14876
+ * @returns {number}
14054
14877
  */
14055
- get moon() {
14056
- const ret = wasm.sunmoon_moon(this.__wbg_ptr);
14057
- var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
14058
- wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
14059
- return v1;
14878
+ get lonCount() {
14879
+ const ret = wasm.terrainstoretileindex_lonCount(this.__wbg_ptr);
14880
+ return ret >>> 0;
14060
14881
  }
14061
14882
  /**
14062
- * Sun positions, metres, flat row-major `(n, 3)`.
14063
- * @returns {Float64Array}
14883
+ * Integer longitude tile id, for example `-107` for a tile covering
14884
+ * `-107..-106` degrees.
14885
+ * @returns {number}
14064
14886
  */
14065
- get sun() {
14066
- const ret = wasm.sunmoon_sun(this.__wbg_ptr);
14067
- var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
14068
- wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
14069
- return v1;
14887
+ get lonIndex() {
14888
+ const ret = wasm.terrainstoretileindex_lonIndex(this.__wbg_ptr);
14889
+ return ret;
14890
+ }
14891
+ /**
14892
+ * Northern edge latitude, degrees.
14893
+ * @returns {number}
14894
+ */
14895
+ get maxLatitudeDeg() {
14896
+ const ret = wasm.terrainstoretileindex_maxLatitudeDeg(this.__wbg_ptr);
14897
+ return ret;
14898
+ }
14899
+ /**
14900
+ * Eastern edge longitude, degrees.
14901
+ * @returns {number}
14902
+ */
14903
+ get maxLongitudeDeg() {
14904
+ const ret = wasm.terrainstoretileindex_maxLongitudeDeg(this.__wbg_ptr);
14905
+ return ret;
14906
+ }
14907
+ /**
14908
+ * Southern edge latitude, degrees.
14909
+ * @returns {number}
14910
+ */
14911
+ get minLatitudeDeg() {
14912
+ const ret = wasm.terrainstoretileindex_minLatitudeDeg(this.__wbg_ptr);
14913
+ return ret;
14914
+ }
14915
+ /**
14916
+ * Western edge longitude, degrees.
14917
+ * @returns {number}
14918
+ */
14919
+ get minLongitudeDeg() {
14920
+ const ret = wasm.terrainstoretileindex_minLongitudeDeg(this.__wbg_ptr);
14921
+ return ret;
14922
+ }
14923
+ /**
14924
+ * Vertical datum for this tile's orthometric posting payload.
14925
+ * @returns {VerticalDatum}
14926
+ */
14927
+ get verticalDatum() {
14928
+ const ret = wasm.terrainstoretileindex_verticalDatum(this.__wbg_ptr);
14929
+ return ret;
14070
14930
  }
14071
14931
  }
14072
- if (Symbol.dispose) SunMoon.prototype[Symbol.dispose] = SunMoon.prototype.free;
14073
- exports.SunMoon = SunMoon;
14932
+ if (Symbol.dispose) TerrainStoreTileIndex.prototype[Symbol.dispose] = TerrainStoreTileIndex.prototype.free;
14933
+ exports.TerrainStoreTileIndex = TerrainStoreTileIndex;
14074
14934
 
14075
14935
  /**
14076
14936
  * A named time scale. The JS value matches the variant order below.
@@ -14725,6 +15585,18 @@ class VelocitySolution {
14725
15585
  if (Symbol.dispose) VelocitySolution.prototype[Symbol.dispose] = VelocitySolution.prototype.free;
14726
15586
  exports.VelocitySolution = VelocitySolution;
14727
15587
 
15588
+ /**
15589
+ * Vertical datum carried by a terrain store.
15590
+ * @enum {0}
15591
+ */
15592
+ const VerticalDatum = Object.freeze({
15593
+ /**
15594
+ * Orthometric height `H` in metres above the EGM96 mean sea level geoid.
15595
+ */
15596
+ Egm96MslOrthometric: 0, "0": "Egm96MslOrthometric",
15597
+ });
15598
+ exports.VerticalDatum = VerticalDatum;
15599
+
14728
15600
  /**
14729
15601
  * Per-epoch topocentric visibility plus the dense pass list over the grid
14730
15602
  * window.
@@ -15021,6 +15893,28 @@ function acquire(samples, prn, options) {
15021
15893
  }
15022
15894
  exports.acquire = acquire;
15023
15895
 
15896
+ /**
15897
+ * Plain non-overlapping Allan deviation for explicit averaging factors.
15898
+ *
15899
+ * `series` is `{ kind, values }`, where `kind` is `"phaseSeconds"` or
15900
+ * `"fractionalFrequency"` and `values` are phase seconds or dimensionless
15901
+ * fractional-frequency samples. `tau0S` is the sample interval in seconds.
15902
+ * `averagingFactors` is an array of positive integer `m` values. Returns
15903
+ * `{ tauS, deviation, n }`.
15904
+ * @param {any} series
15905
+ * @param {number} tau0_s
15906
+ * @param {any} averaging_factors
15907
+ * @returns {any}
15908
+ */
15909
+ function allanDeviation(series, tau0_s, averaging_factors) {
15910
+ const ret = wasm.allanDeviation(series, tau0_s, averaging_factors);
15911
+ if (ret[2]) {
15912
+ throw takeFromExternrefTable0(ret[1]);
15913
+ }
15914
+ return takeFromExternrefTable0(ret[0]);
15915
+ }
15916
+ exports.allanDeviation = allanDeviation;
15917
+
15024
15918
  /**
15025
15919
  * On-sky angle in degrees between two direction vectors.
15026
15920
  * @param {Float64Array} a
@@ -15057,6 +15951,68 @@ function angularSeparationCoords(a_lon_deg, a_lat_deg, b_lon_deg, b_lat_deg) {
15057
15951
  }
15058
15952
  exports.angularSeparationCoords = angularSeparationCoords;
15059
15953
 
15954
+ /**
15955
+ * Run ARAIM MHSS protection-level computation.
15956
+ *
15957
+ * `geometry.rows` contains satellite IDs, ECEF line-of-sight unit vectors,
15958
+ * optional constellation labels, and elevations in radians. `receiver` is WGS84
15959
+ * geodetic radians plus ellipsoidal height meters. `ism` contains
15960
+ * constellation defaults and optional satellite overrides. Satellite models may
15961
+ * provide paired `effectiveSigmaIntM` and `effectiveSigmaAccM` fields; omit both
15962
+ * to let the core derive them from elevation. `allocation` may be omitted to use
15963
+ * `araimLpv200Allocation()`. Returned `hplM`, `vplM`, `sigmaAccHM`,
15964
+ * `sigmaAccVM`, `emtM`, and per-mode ENU arrays are meters.
15965
+ * @param {any} geometry
15966
+ * @param {any} ism
15967
+ * @param {any} allocation
15968
+ * @returns {any}
15969
+ */
15970
+ function araim(geometry, ism, allocation) {
15971
+ const ret = wasm.araim(geometry, ism, allocation);
15972
+ if (ret[2]) {
15973
+ throw takeFromExternrefTable0(ret[1]);
15974
+ }
15975
+ return takeFromExternrefTable0(ret[0]);
15976
+ }
15977
+ exports.araim = araim;
15978
+
15979
+ /**
15980
+ * Enumerate ARAIM fault hypotheses for the given geometry, ISM, and allocation.
15981
+ *
15982
+ * Inputs mirror `araim`. The returned priors are probabilities. Excluded
15983
+ * satellites are string tokens such as `"G01"`, and excluded constellations are
15984
+ * labels such as `"GPS"`.
15985
+ * @param {any} geometry
15986
+ * @param {any} ism
15987
+ * @param {any} allocation
15988
+ * @returns {any}
15989
+ */
15990
+ function araimFaultModes(geometry, ism, allocation) {
15991
+ const ret = wasm.araimFaultModes(geometry, ism, allocation);
15992
+ if (ret[2]) {
15993
+ throw takeFromExternrefTable0(ret[1]);
15994
+ }
15995
+ return takeFromExternrefTable0(ret[0]);
15996
+ }
15997
+ exports.araimFaultModes = araimFaultModes;
15998
+
15999
+ /**
16000
+ * LPV-200 ARAIM integrity and continuity allocation.
16001
+ *
16002
+ * The returned object can be passed to `araim`. Probability fields are
16003
+ * dimensionless, `pEmt` defaults to `1e-5`, and `maxFaultOrder` is an integer
16004
+ * fault order.
16005
+ * @returns {any}
16006
+ */
16007
+ function araimLpv200Allocation() {
16008
+ const ret = wasm.araimLpv200Allocation();
16009
+ if (ret[2]) {
16010
+ throw takeFromExternrefTable0(ret[1]);
16011
+ }
16012
+ return takeFromExternrefTable0(ret[0]);
16013
+ }
16014
+ exports.araimLpv200Allocation = araimLpv200Allocation;
16015
+
15060
16016
  /**
15061
16017
  * Evaluate NRLMSISE-00 neutral-atmosphere density and temperature.
15062
16018
  *
@@ -15392,6 +16348,29 @@ function collisionProbability(object1, object2, hard_body_radius_km, method) {
15392
16348
  }
15393
16349
  exports.collisionProbability = collisionProbability;
15394
16350
 
16351
+ /**
16352
+ * Compute one or more Allan-family curves with a selected tau grid and gap
16353
+ * policy.
16354
+ *
16355
+ * `input` is `{ series, tau0S, options? }`. `series.kind` may be
16356
+ * `"phaseSeconds"`, `"fractionalFrequency"`, `"phaseSecondsWithGaps"`, or
16357
+ * `"fractionalFrequencyWithGaps"`; gap series use `null` for missing samples.
16358
+ * `options.estimators` is `"standard"`, `"all"`, `"none"`, or a boolean flag
16359
+ * object. `options.tauGrid` is `"octave"`, `"all"`, or
16360
+ * `{ kind: "explicit", averagingFactors }`. `tau0S` and all returned `tauS`
16361
+ * values are seconds.
16362
+ * @param {any} input
16363
+ * @returns {any}
16364
+ */
16365
+ function computeAllanDeviations(input) {
16366
+ const ret = wasm.computeAllanDeviations(input);
16367
+ if (ret[2]) {
16368
+ throw takeFromExternrefTable0(ret[1]);
16369
+ }
16370
+ return takeFromExternrefTable0(ret[0]);
16371
+ }
16372
+ exports.computeAllanDeviations = computeAllanDeviations;
16373
+
15395
16374
  /**
15396
16375
  * Coherently correlate interleaved IQ samples against a GPS C/A PRN replica.
15397
16376
  * `iq` is `[i0, q0, i1, q1, ...]`.
@@ -15662,6 +16641,12 @@ function decodeRtcmStream(bytes) {
15662
16641
  exports.decodeRtcmStream = decodeRtcmStream;
15663
16642
 
15664
16643
  /**
16644
+ * Decode a raw SBAS message.
16645
+ *
16646
+ * `form` is `"framed250"` for a 32-byte message with CRC or `"body226"` for a
16647
+ * 29-byte body. The result contains `messageType`, `form`, legacy debug
16648
+ * `kind`, and `message`, a structured decoded payload. Parse failures are
16649
+ * thrown as `Error`.
15665
16650
  * @param {Uint8Array} bytes
15666
16651
  * @param {string | null} [form]
15667
16652
  * @returns {any}
@@ -15907,6 +16892,27 @@ function dopplerToRangeRate(doppler_hz, carrier_hz) {
15907
16892
  }
15908
16893
  exports.dopplerToRangeRate = dopplerToRangeRate;
15909
16894
 
16895
+ /**
16896
+ * Convert a DTED tile tree into canonical memory-mappable terrain store bytes.
16897
+ *
16898
+ * The returned `Uint8Array` can be passed to [`MmapTerrain.fromBytes`] or
16899
+ * [`MmapTerrain.fromVec`]. Posting payloads are decoded orthometric metres.
16900
+ * @param {string} root
16901
+ * @returns {Uint8Array}
16902
+ */
16903
+ function dtedTreeToMmapStore(root) {
16904
+ const ptr0 = passStringToWasm0(root, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
16905
+ const len0 = WASM_VECTOR_LEN;
16906
+ const ret = wasm.dtedTreeToMmapStore(ptr0, len0);
16907
+ if (ret[3]) {
16908
+ throw takeFromExternrefTable0(ret[2]);
16909
+ }
16910
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
16911
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
16912
+ return v2;
16913
+ }
16914
+ exports.dtedTreeToMmapStore = dtedTreeToMmapStore;
16915
+
15910
16916
  /**
15911
16917
  * Angular radius in degrees of Earth as seen from each satellite position.
15912
16918
  * @param {Float64Array} satellite_position_km
@@ -17192,6 +18198,26 @@ function gpsUtcOffsetS(year, month, day) {
17192
18198
  }
17193
18199
  exports.gpsUtcOffsetS = gpsUtcOffsetS;
17194
18200
 
18201
+ /**
18202
+ * Overlapping Hadamard deviation for explicit averaging factors.
18203
+ *
18204
+ * `series` is `{ kind, values }`, `tau0S` is seconds, and
18205
+ * `averagingFactors` contains positive integer `m` values. Returns
18206
+ * `{ tauS, deviation, n }`.
18207
+ * @param {any} series
18208
+ * @param {number} tau0_s
18209
+ * @param {any} averaging_factors
18210
+ * @returns {any}
18211
+ */
18212
+ function hadamardDeviation(series, tau0_s, averaging_factors) {
18213
+ const ret = wasm.hadamardDeviation(series, tau0_s, averaging_factors);
18214
+ if (ret[2]) {
18215
+ throw takeFromExternrefTable0(ret[1]);
18216
+ }
18217
+ return takeFromExternrefTable0(ret[0]);
18218
+ }
18219
+ exports.hadamardDeviation = hadamardDeviation;
18220
+
17195
18221
  /**
17196
18222
  * Trace of the Gauss-Newton Hessian approximation `J^T J`: the sum of the
17197
18223
  * squared column norms of the Jacobian, with no inverse formed.
@@ -17305,6 +18331,49 @@ function iodHerrickGibbs(r1, r2, r3, jd1, jd2, jd3) {
17305
18331
  }
17306
18332
  exports.iodHerrickGibbs = iodHerrickGibbs;
17307
18333
 
18334
+ /**
18335
+ * Build an IONEX vertical-TEC product from flat node samples.
18336
+ *
18337
+ * `samples` is an array of `{ epochJ2000S, latDeg, lonDeg, vtecTecu,
18338
+ * rmsTecu? }` objects. Epochs are integer seconds since J2000, coordinates are
18339
+ * degrees, and TEC/RMS values are TECU. `shellHeightKm` and `baseRadiusKm` are
18340
+ * kilometers. Validation errors from the core sample builder are thrown as
18341
+ * `RangeError`.
18342
+ * @param {any} samples
18343
+ * @param {number} shell_height_km
18344
+ * @param {number} base_radius_km
18345
+ * @param {number} exponent
18346
+ * @returns {Ionex}
18347
+ */
18348
+ function ionexFromNodeSamples(samples, shell_height_km, base_radius_km, exponent) {
18349
+ const ret = wasm.ionexFromNodeSamples(samples, shell_height_km, base_radius_km, exponent);
18350
+ if (ret[2]) {
18351
+ throw takeFromExternrefTable0(ret[1]);
18352
+ }
18353
+ return Ionex.__wrap(ret[0]);
18354
+ }
18355
+ exports.ionexFromNodeSamples = ionexFromNodeSamples;
18356
+
18357
+ /**
18358
+ * Build an IONEX vertical-TEC product from full-grid samples.
18359
+ *
18360
+ * `samples.mapEpochsJ2000S` are integer seconds since J2000. Latitude and
18361
+ * longitude nodes and `dlatDeg` / `dlonDeg` are degrees. `tecMaps` and
18362
+ * `rmsMaps` are TECU and indexed `[map][iLat][iLon]`. The shell height and
18363
+ * base radius are kilometers. Validation errors from the core sample builder
18364
+ * are thrown as `RangeError`.
18365
+ * @param {any} samples
18366
+ * @returns {Ionex}
18367
+ */
18368
+ function ionexFromSamples(samples) {
18369
+ const ret = wasm.ionexFromSamples(samples);
18370
+ if (ret[2]) {
18371
+ throw takeFromExternrefTable0(ret[1]);
18372
+ }
18373
+ return Ionex.__wrap(ret[0]);
18374
+ }
18375
+ exports.ionexFromSamples = ionexFromSamples;
18376
+
17308
18377
  /**
17309
18378
  * Ionosphere-free code or meter-valued phase combination, metres.
17310
18379
  * @param {number} obs1_m
@@ -18257,6 +19326,26 @@ function meridianTransitsSpk(spk, body, station, start_unix_us, end_unix_us, ste
18257
19326
  }
18258
19327
  exports.meridianTransitsSpk = meridianTransitsSpk;
18259
19328
 
19329
+ /**
19330
+ * Modified Allan deviation for explicit averaging factors.
19331
+ *
19332
+ * `series` is `{ kind, values }`, `tau0S` is seconds, and
19333
+ * `averagingFactors` contains positive integer `m` values. Returns
19334
+ * `{ tauS, deviation, n }`.
19335
+ * @param {any} series
19336
+ * @param {number} tau0_s
19337
+ * @param {any} averaging_factors
19338
+ * @returns {any}
19339
+ */
19340
+ function modifiedAdev(series, tau0_s, averaging_factors) {
19341
+ const ret = wasm.modifiedAdev(series, tau0_s, averaging_factors);
19342
+ if (ret[2]) {
19343
+ throw takeFromExternrefTable0(ret[1]);
19344
+ }
19345
+ return takeFromExternrefTable0(ret[0]);
19346
+ }
19347
+ exports.modifiedAdev = modifiedAdev;
19348
+
18260
19349
  /**
18261
19350
  * Mean, variance, skewness, and excess kurtosis of a residual set in one pass.
18262
19351
  *
@@ -18778,6 +19867,26 @@ function orthometricHeightM(ellipsoidal_height_m, lat_rad, lon_rad) {
18778
19867
  }
18779
19868
  exports.orthometricHeightM = orthometricHeightM;
18780
19869
 
19870
+ /**
19871
+ * Fully overlapping Allan deviation for explicit averaging factors.
19872
+ *
19873
+ * `series` is `{ kind, values }`, `tau0S` is seconds, and
19874
+ * `averagingFactors` contains positive integer `m` values. Returns
19875
+ * `{ tauS, deviation, n }`.
19876
+ * @param {any} series
19877
+ * @param {number} tau0_s
19878
+ * @param {any} averaging_factors
19879
+ * @returns {any}
19880
+ */
19881
+ function overlappingAdev(series, tau0_s, averaging_factors) {
19882
+ const ret = wasm.overlappingAdev(series, tau0_s, averaging_factors);
19883
+ if (ret[2]) {
19884
+ throw takeFromExternrefTable0(ret[1]);
19885
+ }
19886
+ return takeFromExternrefTable0(ret[0]);
19887
+ }
19888
+ exports.overlappingAdev = overlappingAdev;
19889
+
18781
19890
  /**
18782
19891
  * Parallactic angle (degrees) of a target at a station.
18783
19892
  *
@@ -19996,6 +21105,23 @@ function sampleSp3Ephemeris(sp3, satellites, start_j2000_s, stop_j2000_s, step_s
19996
21105
  }
19997
21106
  exports.sampleSp3Ephemeris = sampleSp3Ephemeris;
19998
21107
 
21108
+ /**
21109
+ * Convert an SBAS satellite token such as `"S29"` to broadcast PRN number
21110
+ * such as `129`. Returns `null` for non-SBAS satellites.
21111
+ * @param {string} sat
21112
+ * @returns {any}
21113
+ */
21114
+ function satToSbasPrn(sat) {
21115
+ const ptr0 = passStringToWasm0(sat, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
21116
+ const len0 = WASM_VECTOR_LEN;
21117
+ const ret = wasm.satToSbasPrn(ptr0, len0);
21118
+ if (ret[2]) {
21119
+ throw takeFromExternrefTable0(ret[1]);
21120
+ }
21121
+ return takeFromExternrefTable0(ret[0]);
21122
+ }
21123
+ exports.satToSbasPrn = satToSbasPrn;
21124
+
19999
21125
  /**
20000
21126
  * Apparent visual magnitude of a sunlit body from a diffuse-sphere phase law.
20001
21127
  *
@@ -20020,6 +21146,10 @@ function satelliteVisualMagnitude(range_km, phase_angle_deg, standard_magnitude,
20020
21146
  exports.satelliteVisualMagnitude = satelliteVisualMagnitude;
20021
21147
 
20022
21148
  /**
21149
+ * SBAS-corrected broadcast satellite position and clock.
21150
+ *
21151
+ * Position is ECEF meters and clock is seconds at `tJ2000S`, seconds since
21152
+ * J2000. Returns `null` when the selected SBAS mode cannot provide a state.
20023
21153
  * @param {BroadcastEphemeris} broadcast
20024
21154
  * @param {SbasCorrectionStore} store
20025
21155
  * @param {string} geo
@@ -20045,6 +21175,18 @@ function sbasCorrectedState(broadcast, store, geo, sat, t_j2000_s, mode) {
20045
21175
  }
20046
21176
  exports.sbasCorrectedState = sbasCorrectedState;
20047
21177
 
21178
+ /**
21179
+ * Convert an SBAS broadcast PRN number such as `129` to an SBAS satellite
21180
+ * token such as `"S29"`. Returns `null` when the PRN is outside the SBAS range.
21181
+ * @param {number} broadcast_prn
21182
+ * @returns {any}
21183
+ */
21184
+ function sbasPrnToSat(broadcast_prn) {
21185
+ const ret = wasm.sbasPrnToSat(broadcast_prn);
21186
+ return ret;
21187
+ }
21188
+ exports.sbasPrnToSat = sbasPrnToSat;
21189
+
20048
21190
  /**
20049
21191
  * Screen a primary satellite against a secondary TLE catalog for threshold TCAs.
20050
21192
  *
@@ -20629,6 +21771,11 @@ function solveRtkFloat(config) {
20629
21771
  exports.solveRtkFloat = solveRtkFloat;
20630
21772
 
20631
21773
  /**
21774
+ * Solve SPP using an SBAS-corrected broadcast source and optional SBAS iono.
21775
+ *
21776
+ * The returned solution uses the same units as `solveSpp`: ECEF meters,
21777
+ * receiver clock seconds, residual meters, and optional geodetic radians plus
21778
+ * ellipsoidal height meters.
20632
21779
  * @param {BroadcastEphemeris} broadcast
20633
21780
  * @param {SbasCorrectionStore} store
20634
21781
  * @param {string} geo
@@ -21031,6 +22178,39 @@ function terminatorLatitudeDeg(sub_solar_latitude_deg, sub_solar_longitude_deg,
21031
22178
  }
21032
22179
  exports.terminatorLatitudeDeg = terminatorLatitudeDeg;
21033
22180
 
22181
+ /**
22182
+ * Return an FNV-1a checksum for terrain store bytes.
22183
+ * @param {Uint8Array} bytes
22184
+ * @returns {bigint}
22185
+ */
22186
+ function terrainStoreChecksum64(bytes) {
22187
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
22188
+ const len0 = WASM_VECTOR_LEN;
22189
+ const ret = wasm.terrainStoreChecksum64(ptr0, len0);
22190
+ return BigInt.asUintN(64, ret);
22191
+ }
22192
+ exports.terrainStoreChecksum64 = terrainStoreChecksum64;
22193
+
22194
+ /**
22195
+ * Time deviation for explicit averaging factors.
22196
+ *
22197
+ * `series` is `{ kind, values }`, `tau0S` is seconds, and
22198
+ * `averagingFactors` contains positive integer `m` values. Returns
22199
+ * `{ tauS, deviation, n }`.
22200
+ * @param {any} series
22201
+ * @param {number} tau0_s
22202
+ * @param {any} averaging_factors
22203
+ * @returns {any}
22204
+ */
22205
+ function timeDeviation(series, tau0_s, averaging_factors) {
22206
+ const ret = wasm.timeDeviation(series, tau0_s, averaging_factors);
22207
+ if (ret[2]) {
22208
+ throw takeFromExternrefTable0(ret[1]);
22209
+ }
22210
+ return takeFromExternrefTable0(ret[0]);
22211
+ }
22212
+ exports.timeDeviation = timeDeviation;
22213
+
21034
22214
  /**
21035
22215
  * Short uppercase identifier for a time scale, e.g. `"GPST"`.
21036
22216
  * @param {TimeScale} scale
@@ -21400,6 +22580,23 @@ function wideLaneWavelength(f1_hz, f2_hz) {
21400
22580
  return ret[0];
21401
22581
  }
21402
22582
  exports.wideLaneWavelength = wideLaneWavelength;
22583
+
22584
+ /**
22585
+ * Convert a DTED tile tree and write canonical terrain store bytes to a path.
22586
+ * @param {string} root
22587
+ * @param {string} out_path
22588
+ */
22589
+ function writeDtedTreeToMmapStore(root, out_path) {
22590
+ const ptr0 = passStringToWasm0(root, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
22591
+ const len0 = WASM_VECTOR_LEN;
22592
+ const ptr1 = passStringToWasm0(out_path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
22593
+ const len1 = WASM_VECTOR_LEN;
22594
+ const ret = wasm.writeDtedTreeToMmapStore(ptr0, len0, ptr1, len1);
22595
+ if (ret[1]) {
22596
+ throw takeFromExternrefTable0(ret[0]);
22597
+ }
22598
+ }
22599
+ exports.writeDtedTreeToMmapStore = writeDtedTreeToMmapStore;
21403
22600
  function __wbg_get_imports() {
21404
22601
  const import0 = {
21405
22602
  __proto__: null,
@@ -21780,6 +22977,10 @@ function __wbg_get_imports() {
21780
22977
  const ret = SpkSegment.__wrap(arg0);
21781
22978
  return ret;
21782
22979
  },
22980
+ __wbg_terrainstoretileindex_new: function(arg0) {
22981
+ const ret = TerrainStoreTileIndex.__wrap(arg0);
22982
+ return ret;
22983
+ },
21783
22984
  __wbg_tle_unwrap: function(arg0) {
21784
22985
  const ret = Tle.__unwrap(arg0);
21785
22986
  return ret;
@@ -21942,6 +23143,12 @@ const DragForceFinalization = (typeof FinalizationRegistry === 'undefined')
21942
23143
  const DtedTerrainFinalization = (typeof FinalizationRegistry === 'undefined')
21943
23144
  ? { register: () => {}, unregister: () => {} }
21944
23145
  : new FinalizationRegistry(ptr => wasm.__wbg_dtedterrain_free(ptr, 1));
23146
+ const Egm96FifteenMinuteGeoidFinalization = (typeof FinalizationRegistry === 'undefined')
23147
+ ? { register: () => {}, unregister: () => {} }
23148
+ : new FinalizationRegistry(ptr => wasm.__wbg_egm96fifteenminutegeoid_free(ptr, 1));
23149
+ const EllipsoidalHeightMFinalization = (typeof FinalizationRegistry === 'undefined')
23150
+ ? { register: () => {}, unregister: () => {} }
23151
+ : new FinalizationRegistry(ptr => wasm.__wbg_ellipsoidalheightm_free(ptr, 1));
21945
23152
  const EncounterFrameFinalization = (typeof FinalizationRegistry === 'undefined')
21946
23153
  ? { register: () => {}, unregister: () => {} }
21947
23154
  : new FinalizationRegistry(ptr => wasm.__wbg_encounterframe_free(ptr, 1));
@@ -22050,6 +23257,9 @@ const LookAnglesFinalization = (typeof FinalizationRegistry === 'undefined')
22050
23257
  const MappingFactorsFinalization = (typeof FinalizationRegistry === 'undefined')
22051
23258
  ? { register: () => {}, unregister: () => {} }
22052
23259
  : new FinalizationRegistry(ptr => wasm.__wbg_mappingfactors_free(ptr, 1));
23260
+ const MmapTerrainFinalization = (typeof FinalizationRegistry === 'undefined')
23261
+ ? { register: () => {}, unregister: () => {} }
23262
+ : new FinalizationRegistry(ptr => wasm.__wbg_mmapterrain_free(ptr, 1));
22053
23263
  const MoonElevationCrossingFinalization = (typeof FinalizationRegistry === 'undefined')
22054
23264
  ? { register: () => {}, unregister: () => {} }
22055
23265
  : new FinalizationRegistry(ptr => wasm.__wbg_moonelevationcrossing_free(ptr, 1));
@@ -22134,6 +23344,9 @@ const OpmSpacecraftFinalization = (typeof FinalizationRegistry === 'undefined')
22134
23344
  const OpmStateFinalization = (typeof FinalizationRegistry === 'undefined')
22135
23345
  ? { register: () => {}, unregister: () => {} }
22136
23346
  : new FinalizationRegistry(ptr => wasm.__wbg_opmstate_free(ptr, 1));
23347
+ const OrthometricHeightMFinalization = (typeof FinalizationRegistry === 'undefined')
23348
+ ? { register: () => {}, unregister: () => {} }
23349
+ : new FinalizationRegistry(ptr => wasm.__wbg_orthometricheightm_free(ptr, 1));
22137
23350
  const ParsedTleFileFinalization = (typeof FinalizationRegistry === 'undefined')
22138
23351
  ? { register: () => {}, unregister: () => {} }
22139
23352
  : new FinalizationRegistry(ptr => wasm.__wbg_parsedtlefile_free(ptr, 1));
@@ -22275,6 +23488,12 @@ const SsrCorrectionStoreFinalization = (typeof FinalizationRegistry === 'undefin
22275
23488
  const SunMoonFinalization = (typeof FinalizationRegistry === 'undefined')
22276
23489
  ? { register: () => {}, unregister: () => {} }
22277
23490
  : new FinalizationRegistry(ptr => wasm.__wbg_sunmoon_free(ptr, 1));
23491
+ const TerrainGeoidModelFinalization = (typeof FinalizationRegistry === 'undefined')
23492
+ ? { register: () => {}, unregister: () => {} }
23493
+ : new FinalizationRegistry(ptr => wasm.__wbg_terraingeoidmodel_free(ptr, 1));
23494
+ const TerrainStoreTileIndexFinalization = (typeof FinalizationRegistry === 'undefined')
23495
+ ? { register: () => {}, unregister: () => {} }
23496
+ : new FinalizationRegistry(ptr => wasm.__wbg_terrainstoretileindex_free(ptr, 1));
22278
23497
  const TleFinalization = (typeof FinalizationRegistry === 'undefined')
22279
23498
  ? { register: () => {}, unregister: () => {} }
22280
23499
  : new FinalizationRegistry(ptr => wasm.__wbg_tle_free(ptr, 1));