@neilberkman/sidereon 0.17.0 → 0.19.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
@@ -3507,6 +3507,21 @@ export class DgnssSolution {
3507
3507
  }
3508
3508
  if (Symbol.dispose) DgnssSolution.prototype[Symbol.dispose] = DgnssSolution.prototype.free;
3509
3509
 
3510
+ /**
3511
+ * Early-late DLL processing mode for thermal-noise jitter.
3512
+ * @enum {0 | 1}
3513
+ */
3514
+ export const DllProcessing = Object.freeze({
3515
+ /**
3516
+ * Coherent early-minus-late processing.
3517
+ */
3518
+ Coherent: 0, "0": "Coherent",
3519
+ /**
3520
+ * Non-coherent early-minus-late power processing with squaring loss.
3521
+ */
3522
+ NonCoherent: 1, "1": "NonCoherent",
3523
+ });
3524
+
3510
3525
  /**
3511
3526
  * GNSS dilution-of-precision scalars.
3512
3527
  */
@@ -5645,6 +5660,229 @@ export class GlonassRecordJs {
5645
5660
  }
5646
5661
  if (Symbol.dispose) GlonassRecordJs.prototype[Symbol.dispose] = GlonassRecordJs.prototype.free;
5647
5662
 
5663
+ /**
5664
+ * Stateful GNSS/INS filter resource.
5665
+ */
5666
+ export class GnssInsFilter {
5667
+ static __wrap(ptr) {
5668
+ const obj = Object.create(GnssInsFilter.prototype);
5669
+ obj.__wbg_ptr = ptr;
5670
+ GnssInsFilterFinalization.register(obj, obj.__wbg_ptr, obj);
5671
+ return obj;
5672
+ }
5673
+ __destroy_into_raw() {
5674
+ const ptr = this.__wbg_ptr;
5675
+ this.__wbg_ptr = 0;
5676
+ GnssInsFilterFinalization.unregister(this);
5677
+ return ptr;
5678
+ }
5679
+ free() {
5680
+ const ptr = this.__destroy_into_raw();
5681
+ wasm.__wbg_gnssinsfilter_free(ptr, 0);
5682
+ }
5683
+ /**
5684
+ * Replace retained-history capacities for later time-sync replay.
5685
+ * @param {any} config
5686
+ */
5687
+ configureTimeSync(config) {
5688
+ const ret = wasm.gnssinsfilter_configureTimeSync(this.__wbg_ptr, config);
5689
+ if (ret[1]) {
5690
+ throw takeFromExternrefTable0(ret[0]);
5691
+ }
5692
+ }
5693
+ /**
5694
+ * Encode the current fusion state with the core versioned binary codec.
5695
+ * @returns {Uint8Array}
5696
+ */
5697
+ encodeState() {
5698
+ const ret = wasm.gnssinsfilter_encodeState(this.__wbg_ptr);
5699
+ if (ret[3]) {
5700
+ throw takeFromExternrefTable0(ret[2]);
5701
+ }
5702
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
5703
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
5704
+ return v1;
5705
+ }
5706
+ /**
5707
+ * Build a filter, then restore its state from versioned fusion-state bytes.
5708
+ * @param {any} config
5709
+ * @param {Uint8Array} bytes
5710
+ * @returns {GnssInsFilter}
5711
+ */
5712
+ static fromStateBytes(config, bytes) {
5713
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
5714
+ const len0 = WASM_VECTOR_LEN;
5715
+ const ret = wasm.gnssinsfilter_fromStateBytes(config, ptr0, len0);
5716
+ if (ret[2]) {
5717
+ throw takeFromExternrefTable0(ret[1]);
5718
+ }
5719
+ return GnssInsFilter.__wrap(ret[0]);
5720
+ }
5721
+ /**
5722
+ * Build a filter from a JS configuration object.
5723
+ * @param {any} config
5724
+ */
5725
+ constructor(config) {
5726
+ const ret = wasm.gnssinsfilter_new(config);
5727
+ if (ret[2]) {
5728
+ throw takeFromExternrefTable0(ret[1]);
5729
+ }
5730
+ this.__wbg_ptr = ret[0];
5731
+ GnssInsFilterFinalization.register(this, this.__wbg_ptr, this);
5732
+ return this;
5733
+ }
5734
+ /**
5735
+ * Propagate the filter with one IMU rate or increment sample.
5736
+ * @param {any} sample
5737
+ * @returns {any}
5738
+ */
5739
+ propagate(sample) {
5740
+ const ret = wasm.gnssinsfilter_propagate(this.__wbg_ptr, sample);
5741
+ if (ret[2]) {
5742
+ throw takeFromExternrefTable0(ret[1]);
5743
+ }
5744
+ return takeFromExternrefTable0(ret[0]);
5745
+ }
5746
+ /**
5747
+ * Propagate the filter with a JS array of IMU samples.
5748
+ * @param {any} samples
5749
+ * @returns {any}
5750
+ */
5751
+ propagateBatch(samples) {
5752
+ const ret = wasm.gnssinsfilter_propagateBatch(this.__wbg_ptr, samples);
5753
+ if (ret[2]) {
5754
+ throw takeFromExternrefTable0(ret[1]);
5755
+ }
5756
+ return takeFromExternrefTable0(ret[0]);
5757
+ }
5758
+ /**
5759
+ * Restore this filter from versioned fusion-state bytes.
5760
+ * @param {Uint8Array} bytes
5761
+ */
5762
+ restoreState(bytes) {
5763
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
5764
+ const len0 = WASM_VECTOR_LEN;
5765
+ const ret = wasm.gnssinsfilter_restoreState(this.__wbg_ptr, ptr0, len0);
5766
+ if (ret[1]) {
5767
+ throw takeFromExternrefTable0(ret[0]);
5768
+ }
5769
+ }
5770
+ /**
5771
+ * Current INS state, covariance, and last body-rate diagnostic.
5772
+ * @returns {any}
5773
+ */
5774
+ state() {
5775
+ const ret = wasm.gnssinsfilter_state(this.__wbg_ptr);
5776
+ if (ret[2]) {
5777
+ throw takeFromExternrefTable0(ret[1]);
5778
+ }
5779
+ return takeFromExternrefTable0(ret[0]);
5780
+ }
5781
+ /**
5782
+ * Current tight-coupling receiver-clock state.
5783
+ * @returns {any}
5784
+ */
5785
+ tightClockState() {
5786
+ const ret = wasm.gnssinsfilter_tightClockState(this.__wbg_ptr);
5787
+ if (ret[2]) {
5788
+ throw takeFromExternrefTable0(ret[1]);
5789
+ }
5790
+ return takeFromExternrefTable0(ret[0]);
5791
+ }
5792
+ /**
5793
+ * Current retained-history capacity and occupancy.
5794
+ * @returns {any}
5795
+ */
5796
+ timeSyncStatus() {
5797
+ const ret = wasm.gnssinsfilter_timeSyncStatus(this.__wbg_ptr);
5798
+ if (ret[2]) {
5799
+ throw takeFromExternrefTable0(ret[1]);
5800
+ }
5801
+ return takeFromExternrefTable0(ret[0]);
5802
+ }
5803
+ /**
5804
+ * Apply a loose position or position-velocity GNSS fix at the current epoch.
5805
+ * @param {any} measurement
5806
+ * @returns {any}
5807
+ */
5808
+ updateLoose(measurement) {
5809
+ const ret = wasm.gnssinsfilter_updateLoose(this.__wbg_ptr, measurement);
5810
+ if (ret[2]) {
5811
+ throw takeFromExternrefTable0(ret[1]);
5812
+ }
5813
+ return takeFromExternrefTable0(ret[0]);
5814
+ }
5815
+ /**
5816
+ * Apply a loose GNSS fix, replaying retained IMU checkpoints when it is late.
5817
+ * @param {any} measurement
5818
+ * @returns {any}
5819
+ */
5820
+ updateLooseTimeSync(measurement) {
5821
+ const ret = wasm.gnssinsfilter_updateLooseTimeSync(this.__wbg_ptr, measurement);
5822
+ if (ret[2]) {
5823
+ throw takeFromExternrefTable0(ret[1]);
5824
+ }
5825
+ return takeFromExternrefTable0(ret[0]);
5826
+ }
5827
+ /**
5828
+ * Apply a tight raw-observation epoch against a broadcast ephemeris source.
5829
+ * @param {BroadcastEphemeris} broadcast
5830
+ * @param {any} epoch
5831
+ * @returns {any}
5832
+ */
5833
+ updateTightBroadcast(broadcast, epoch) {
5834
+ _assertClass(broadcast, BroadcastEphemeris);
5835
+ const ret = wasm.gnssinsfilter_updateTightBroadcast(this.__wbg_ptr, broadcast.__wbg_ptr, epoch);
5836
+ if (ret[2]) {
5837
+ throw takeFromExternrefTable0(ret[1]);
5838
+ }
5839
+ return takeFromExternrefTable0(ret[0]);
5840
+ }
5841
+ /**
5842
+ * Apply a tight broadcast update, replaying retained IMU checkpoints when it is late.
5843
+ * @param {BroadcastEphemeris} broadcast
5844
+ * @param {any} epoch
5845
+ * @returns {any}
5846
+ */
5847
+ updateTightBroadcastTimeSync(broadcast, epoch) {
5848
+ _assertClass(broadcast, BroadcastEphemeris);
5849
+ const ret = wasm.gnssinsfilter_updateTightBroadcastTimeSync(this.__wbg_ptr, broadcast.__wbg_ptr, epoch);
5850
+ if (ret[2]) {
5851
+ throw takeFromExternrefTable0(ret[1]);
5852
+ }
5853
+ return takeFromExternrefTable0(ret[0]);
5854
+ }
5855
+ /**
5856
+ * Apply a tight raw-observation epoch against an SP3 source.
5857
+ * @param {Sp3} sp3
5858
+ * @param {any} epoch
5859
+ * @returns {any}
5860
+ */
5861
+ updateTightSp3(sp3, epoch) {
5862
+ _assertClass(sp3, Sp3);
5863
+ const ret = wasm.gnssinsfilter_updateTightSp3(this.__wbg_ptr, sp3.__wbg_ptr, epoch);
5864
+ if (ret[2]) {
5865
+ throw takeFromExternrefTable0(ret[1]);
5866
+ }
5867
+ return takeFromExternrefTable0(ret[0]);
5868
+ }
5869
+ /**
5870
+ * Apply a tight SP3 update, replaying retained IMU checkpoints when it is late.
5871
+ * @param {Sp3} sp3
5872
+ * @param {any} epoch
5873
+ * @returns {any}
5874
+ */
5875
+ updateTightSp3TimeSync(sp3, epoch) {
5876
+ _assertClass(sp3, Sp3);
5877
+ const ret = wasm.gnssinsfilter_updateTightSp3TimeSync(this.__wbg_ptr, sp3.__wbg_ptr, epoch);
5878
+ if (ret[2]) {
5879
+ throw takeFromExternrefTable0(ret[1]);
5880
+ }
5881
+ return takeFromExternrefTable0(ret[0]);
5882
+ }
5883
+ }
5884
+ if (Symbol.dispose) GnssInsFilter.prototype[Symbol.dispose] = GnssInsFilter.prototype.free;
5885
+
5648
5886
  /**
5649
5887
  * One sampled rise/set/peak visibility pass, from `gnssPasses`.
5650
5888
  */
@@ -14650,109 +14888,342 @@ export class SbasSisError {
14650
14888
  if (Symbol.dispose) SbasSisError.prototype[Symbol.dispose] = SbasSisError.prototype.free;
14651
14889
 
14652
14890
  /**
14653
- * Per-constellation single-frequency pseudorange code-selection policy. Build
14654
- * with `new SignalPolicy()` then chain `.withSystem(system, codes)`, or use
14655
- * the static `defaultFor(version)`.
14891
+ * Stable GNSS signal modulation used by the analysis functions.
14656
14892
  */
14657
- export class SignalPolicy {
14893
+ export class SignalAnalysisModulation {
14658
14894
  static __wrap(ptr) {
14659
- const obj = Object.create(SignalPolicy.prototype);
14895
+ const obj = Object.create(SignalAnalysisModulation.prototype);
14660
14896
  obj.__wbg_ptr = ptr;
14661
- SignalPolicyFinalization.register(obj, obj.__wbg_ptr, obj);
14897
+ SignalAnalysisModulationFinalization.register(obj, obj.__wbg_ptr, obj);
14662
14898
  return obj;
14663
14899
  }
14664
14900
  __destroy_into_raw() {
14665
14901
  const ptr = this.__wbg_ptr;
14666
14902
  this.__wbg_ptr = 0;
14667
- SignalPolicyFinalization.unregister(this);
14903
+ SignalAnalysisModulationFinalization.unregister(this);
14668
14904
  return ptr;
14669
14905
  }
14670
14906
  free() {
14671
14907
  const ptr = this.__destroy_into_raw();
14672
- wasm.__wbg_signalpolicy_free(ptr, 0);
14908
+ wasm.__wbg_signalanalysismodulation_free(ptr, 0);
14673
14909
  }
14674
14910
  /**
14675
- * The core default pseudorange policy for a RINEX version.
14676
- * @param {number} version
14677
- * @returns {SignalPolicy}
14911
+ * Normalized in-band autocorrelation at a delay.
14912
+ * @param {number} delay_s
14913
+ * @param {number} receiver_bandwidth_hz
14914
+ * @returns {number}
14678
14915
  */
14679
- static defaultFor(version) {
14680
- const ret = wasm.signalpolicy_defaultFor(version);
14916
+ autocorrelation(delay_s, receiver_bandwidth_hz) {
14917
+ const ret = wasm.signalanalysismodulation_autocorrelation(this.__wbg_ptr, delay_s, receiver_bandwidth_hz);
14681
14918
  if (ret[2]) {
14682
14919
  throw takeFromExternrefTable0(ret[1]);
14683
14920
  }
14684
- return SignalPolicy.__wrap(ret[0]);
14921
+ return ret[0];
14685
14922
  }
14686
14923
  /**
14687
- * An empty policy with no constellation preferences.
14924
+ * Build a BPSK(n) modulation, where the code rate is `n * 1.023 MHz`.
14925
+ * @param {number} order
14926
+ * @returns {SignalAnalysisModulation}
14688
14927
  */
14689
- constructor() {
14690
- const ret = wasm.signalpolicy_new();
14691
- this.__wbg_ptr = ret;
14692
- SignalPolicyFinalization.register(this, this.__wbg_ptr, this);
14693
- return this;
14928
+ static bpsk(order) {
14929
+ const ret = wasm.signalanalysismodulation_bpsk(order);
14930
+ if (ret[2]) {
14931
+ throw takeFromExternrefTable0(ret[1]);
14932
+ }
14933
+ return SignalAnalysisModulation.__wrap(ret[0]);
14694
14934
  }
14695
14935
  /**
14696
- * Return a copy with one constellation's preference list set.
14697
- * @param {GnssSystem} system
14698
- * @param {string[]} codes
14699
- * @returns {SignalPolicy}
14936
+ * Build Galileo E1 CBOC(6,1,1/11) with the minus chip-pulse convention.
14937
+ * @returns {SignalAnalysisModulation}
14700
14938
  */
14701
- withSystem(system, codes) {
14702
- const ptr0 = passArrayJsValueToWasm0(codes, wasm.__wbindgen_malloc);
14703
- const len0 = WASM_VECTOR_LEN;
14704
- const ret = wasm.signalpolicy_withSystem(this.__wbg_ptr, system, ptr0, len0);
14705
- return SignalPolicy.__wrap(ret);
14939
+ static cboc611Over11Minus() {
14940
+ const ret = wasm.signalanalysismodulation_cboc611Over11Minus();
14941
+ return SignalAnalysisModulation.__wrap(ret);
14706
14942
  }
14707
- }
14708
- if (Symbol.dispose) SignalPolicy.prototype[Symbol.dispose] = SignalPolicy.prototype.free;
14709
-
14710
- /**
14711
- * Reason a carrier-phase arc split was flagged.
14712
- * @enum {0 | 1 | 2 | 3}
14713
- */
14714
- export const SlipReason = Object.freeze({
14715
14943
  /**
14716
- * Loss-of-lock indicator bit 0 set on either band.
14944
+ * Build Galileo E1 CBOC(6,1,1/11) with the plus chip-pulse convention.
14945
+ * @returns {SignalAnalysisModulation}
14717
14946
  */
14718
- Lli: 0, "0": "Lli",
14947
+ static cboc611Over11Plus() {
14948
+ const ret = wasm.signalanalysismodulation_cboc611Over11Plus();
14949
+ return SignalAnalysisModulation.__wrap(ret);
14950
+ }
14719
14951
  /**
14720
- * Gap to the previous usable sample exceeded the threshold.
14952
+ * Code rate in hertz when the modulation has one unambiguous rate.
14953
+ * @returns {number}
14721
14954
  */
14722
- DataGap: 1, "1": "DataGap",
14955
+ get codeRateHz() {
14956
+ const ret = wasm.signalanalysismodulation_codeRateHz(this.__wbg_ptr);
14957
+ if (ret[2]) {
14958
+ throw takeFromExternrefTable0(ret[1]);
14959
+ }
14960
+ return ret[0];
14961
+ }
14723
14962
  /**
14724
- * Geometry-free phase step exceeded the threshold.
14963
+ * Build a cosine-phased BOC(m,n) modulation.
14964
+ * @param {number} m
14965
+ * @param {number} n
14966
+ * @returns {SignalAnalysisModulation}
14725
14967
  */
14726
- GeometryFree: 2, "2": "GeometryFree",
14968
+ static cosineBoc(m, n) {
14969
+ const ret = wasm.signalanalysismodulation_cosineBoc(m, n);
14970
+ if (ret[2]) {
14971
+ throw takeFromExternrefTable0(ret[1]);
14972
+ }
14973
+ return SignalAnalysisModulation.__wrap(ret[0]);
14974
+ }
14727
14975
  /**
14728
- * Melbourne-Wubbena step exceeded the threshold.
14976
+ * Published lower bound for DLL code-delay jitter.
14977
+ * @param {any} options
14978
+ * @returns {any}
14729
14979
  */
14730
- MelbourneWubbena: 3, "3": "MelbourneWubbena",
14731
- });
14732
-
14733
- /**
14734
- * Cycle-slip classification for one input epoch.
14735
- */
14736
- export class SlipResult {
14737
- static __wrap(ptr) {
14738
- const obj = Object.create(SlipResult.prototype);
14739
- obj.__wbg_ptr = ptr;
14740
- SlipResultFinalization.register(obj, obj.__wbg_ptr, obj);
14741
- return obj;
14742
- }
14743
- __destroy_into_raw() {
14744
- const ptr = this.__wbg_ptr;
14745
- this.__wbg_ptr = 0;
14746
- SlipResultFinalization.unregister(this);
14747
- return ptr;
14748
- }
14749
- free() {
14750
- const ptr = this.__destroy_into_raw();
14751
- wasm.__wbg_slipresult_free(ptr, 0);
14980
+ dllLowerBound(options) {
14981
+ const ret = wasm.signalanalysismodulation_dllLowerBound(this.__wbg_ptr, options);
14982
+ if (ret[2]) {
14983
+ throw takeFromExternrefTable0(ret[1]);
14984
+ }
14985
+ return takeFromExternrefTable0(ret[0]);
14752
14986
  }
14753
14987
  /**
14754
- * Current geometry-free phase, metres, or `undefined`.
14755
- * @returns {number | undefined}
14988
+ * Early-late DLL thermal-noise jitter for this modulation.
14989
+ * @param {any} options
14990
+ * @param {DllProcessing} processing
14991
+ * @returns {any}
14992
+ */
14993
+ dllThermalNoiseJitter(options, processing) {
14994
+ const ret = wasm.signalanalysismodulation_dllThermalNoiseJitter(this.__wbg_ptr, options, processing);
14995
+ if (ret[2]) {
14996
+ throw takeFromExternrefTable0(ret[1]);
14997
+ }
14998
+ return takeFromExternrefTable0(ret[0]);
14999
+ }
15000
+ /**
15001
+ * Fraction of total signal power inside a two-sided receiver bandwidth.
15002
+ * @param {number} receiver_bandwidth_hz
15003
+ * @returns {number}
15004
+ */
15005
+ fractionPowerInBand(receiver_bandwidth_hz) {
15006
+ const ret = wasm.signalanalysismodulation_fractionPowerInBand(this.__wbg_ptr, receiver_bandwidth_hz);
15007
+ if (ret[2]) {
15008
+ throw takeFromExternrefTable0(ret[1]);
15009
+ }
15010
+ return ret[0];
15011
+ }
15012
+ /**
15013
+ * Stable core label for this modulation.
15014
+ * @returns {string}
15015
+ */
15016
+ get label() {
15017
+ let deferred1_0;
15018
+ let deferred1_1;
15019
+ try {
15020
+ const ret = wasm.signalanalysismodulation_label(this.__wbg_ptr);
15021
+ deferred1_0 = ret[0];
15022
+ deferred1_1 = ret[1];
15023
+ return getStringFromWasm0(ret[0], ret[1]);
15024
+ } finally {
15025
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
15026
+ }
15027
+ }
15028
+ /**
15029
+ * Build the normalized MBOC(6,1,1/11) spectrum.
15030
+ * @returns {SignalAnalysisModulation}
15031
+ */
15032
+ static mboc611Over11() {
15033
+ const ret = wasm.signalanalysismodulation_mboc611Over11();
15034
+ return SignalAnalysisModulation.__wrap(ret);
15035
+ }
15036
+ /**
15037
+ * One-path early-late multipath error envelope on a delay grid.
15038
+ * @param {any} options
15039
+ * @param {Float64Array} delay_chips
15040
+ * @returns {any}
15041
+ */
15042
+ multipathErrorEnvelope(options, delay_chips) {
15043
+ const ptr0 = passArrayF64ToWasm0(delay_chips, wasm.__wbindgen_malloc);
15044
+ const len0 = WASM_VECTOR_LEN;
15045
+ const ret = wasm.signalanalysismodulation_multipathErrorEnvelope(this.__wbg_ptr, options, ptr0, len0);
15046
+ if (ret[2]) {
15047
+ throw takeFromExternrefTable0(ret[1]);
15048
+ }
15049
+ return takeFromExternrefTable0(ret[0]);
15050
+ }
15051
+ /**
15052
+ * Signal power inside a two-sided receiver bandwidth.
15053
+ * @param {number} receiver_bandwidth_hz
15054
+ * @returns {number}
15055
+ */
15056
+ powerInBand(receiver_bandwidth_hz) {
15057
+ const ret = wasm.signalanalysismodulation_powerInBand(this.__wbg_ptr, receiver_bandwidth_hz);
15058
+ if (ret[2]) {
15059
+ throw takeFromExternrefTable0(ret[1]);
15060
+ }
15061
+ return ret[0];
15062
+ }
15063
+ /**
15064
+ * Normalized power spectral density at an offset frequency, in `1/Hz`.
15065
+ * @param {number} offset_hz
15066
+ * @returns {number}
15067
+ */
15068
+ psdHz(offset_hz) {
15069
+ const ret = wasm.signalanalysismodulation_psdHz(this.__wbg_ptr, offset_hz);
15070
+ if (ret[2]) {
15071
+ throw takeFromExternrefTable0(ret[1]);
15072
+ }
15073
+ return ret[0];
15074
+ }
15075
+ /**
15076
+ * RMS, or Gabor, bandwidth over a two-sided receiver bandwidth.
15077
+ * @param {number} receiver_bandwidth_hz
15078
+ * @returns {number}
15079
+ */
15080
+ rmsBandwidthHz(receiver_bandwidth_hz) {
15081
+ const ret = wasm.signalanalysismodulation_rmsBandwidthHz(this.__wbg_ptr, receiver_bandwidth_hz);
15082
+ if (ret[2]) {
15083
+ throw takeFromExternrefTable0(ret[1]);
15084
+ }
15085
+ return ret[0];
15086
+ }
15087
+ /**
15088
+ * Build a sine-phased BOC(m,n) modulation.
15089
+ * @param {number} m
15090
+ * @param {number} n
15091
+ * @returns {SignalAnalysisModulation}
15092
+ */
15093
+ static sineBoc(m, n) {
15094
+ const ret = wasm.signalanalysismodulation_sineBoc(m, n);
15095
+ if (ret[2]) {
15096
+ throw takeFromExternrefTable0(ret[1]);
15097
+ }
15098
+ return SignalAnalysisModulation.__wrap(ret[0]);
15099
+ }
15100
+ /**
15101
+ * Build the GPS L1C pilot TMBOC(6,1,4/33) spectrum.
15102
+ * @returns {SignalAnalysisModulation}
15103
+ */
15104
+ static tmboc614Over33() {
15105
+ const ret = wasm.signalanalysismodulation_tmboc614Over33();
15106
+ return SignalAnalysisModulation.__wrap(ret);
15107
+ }
15108
+ /**
15109
+ * SSC against white interference normalized over the receiver bandwidth.
15110
+ * @param {number} receiver_bandwidth_hz
15111
+ * @returns {number}
15112
+ */
15113
+ whiteNoiseSpectralSeparationHz(receiver_bandwidth_hz) {
15114
+ const ret = wasm.signalanalysismodulation_whiteNoiseSpectralSeparationHz(this.__wbg_ptr, receiver_bandwidth_hz);
15115
+ if (ret[2]) {
15116
+ throw takeFromExternrefTable0(ret[1]);
15117
+ }
15118
+ return ret[0];
15119
+ }
15120
+ }
15121
+ if (Symbol.dispose) SignalAnalysisModulation.prototype[Symbol.dispose] = SignalAnalysisModulation.prototype.free;
15122
+
15123
+ /**
15124
+ * Per-constellation single-frequency pseudorange code-selection policy. Build
15125
+ * with `new SignalPolicy()` then chain `.withSystem(system, codes)`, or use
15126
+ * the static `defaultFor(version)`.
15127
+ */
15128
+ export class SignalPolicy {
15129
+ static __wrap(ptr) {
15130
+ const obj = Object.create(SignalPolicy.prototype);
15131
+ obj.__wbg_ptr = ptr;
15132
+ SignalPolicyFinalization.register(obj, obj.__wbg_ptr, obj);
15133
+ return obj;
15134
+ }
15135
+ __destroy_into_raw() {
15136
+ const ptr = this.__wbg_ptr;
15137
+ this.__wbg_ptr = 0;
15138
+ SignalPolicyFinalization.unregister(this);
15139
+ return ptr;
15140
+ }
15141
+ free() {
15142
+ const ptr = this.__destroy_into_raw();
15143
+ wasm.__wbg_signalpolicy_free(ptr, 0);
15144
+ }
15145
+ /**
15146
+ * The core default pseudorange policy for a RINEX version.
15147
+ * @param {number} version
15148
+ * @returns {SignalPolicy}
15149
+ */
15150
+ static defaultFor(version) {
15151
+ const ret = wasm.signalpolicy_defaultFor(version);
15152
+ if (ret[2]) {
15153
+ throw takeFromExternrefTable0(ret[1]);
15154
+ }
15155
+ return SignalPolicy.__wrap(ret[0]);
15156
+ }
15157
+ /**
15158
+ * An empty policy with no constellation preferences.
15159
+ */
15160
+ constructor() {
15161
+ const ret = wasm.signalpolicy_new();
15162
+ this.__wbg_ptr = ret;
15163
+ SignalPolicyFinalization.register(this, this.__wbg_ptr, this);
15164
+ return this;
15165
+ }
15166
+ /**
15167
+ * Return a copy with one constellation's preference list set.
15168
+ * @param {GnssSystem} system
15169
+ * @param {string[]} codes
15170
+ * @returns {SignalPolicy}
15171
+ */
15172
+ withSystem(system, codes) {
15173
+ const ptr0 = passArrayJsValueToWasm0(codes, wasm.__wbindgen_malloc);
15174
+ const len0 = WASM_VECTOR_LEN;
15175
+ const ret = wasm.signalpolicy_withSystem(this.__wbg_ptr, system, ptr0, len0);
15176
+ return SignalPolicy.__wrap(ret);
15177
+ }
15178
+ }
15179
+ if (Symbol.dispose) SignalPolicy.prototype[Symbol.dispose] = SignalPolicy.prototype.free;
15180
+
15181
+ /**
15182
+ * Reason a carrier-phase arc split was flagged.
15183
+ * @enum {0 | 1 | 2 | 3}
15184
+ */
15185
+ export const SlipReason = Object.freeze({
15186
+ /**
15187
+ * Loss-of-lock indicator bit 0 set on either band.
15188
+ */
15189
+ Lli: 0, "0": "Lli",
15190
+ /**
15191
+ * Gap to the previous usable sample exceeded the threshold.
15192
+ */
15193
+ DataGap: 1, "1": "DataGap",
15194
+ /**
15195
+ * Geometry-free phase step exceeded the threshold.
15196
+ */
15197
+ GeometryFree: 2, "2": "GeometryFree",
15198
+ /**
15199
+ * Melbourne-Wubbena step exceeded the threshold.
15200
+ */
15201
+ MelbourneWubbena: 3, "3": "MelbourneWubbena",
15202
+ });
15203
+
15204
+ /**
15205
+ * Cycle-slip classification for one input epoch.
15206
+ */
15207
+ export class SlipResult {
15208
+ static __wrap(ptr) {
15209
+ const obj = Object.create(SlipResult.prototype);
15210
+ obj.__wbg_ptr = ptr;
15211
+ SlipResultFinalization.register(obj, obj.__wbg_ptr, obj);
15212
+ return obj;
15213
+ }
15214
+ __destroy_into_raw() {
15215
+ const ptr = this.__wbg_ptr;
15216
+ this.__wbg_ptr = 0;
15217
+ SlipResultFinalization.unregister(this);
15218
+ return ptr;
15219
+ }
15220
+ free() {
15221
+ const ptr = this.__destroy_into_raw();
15222
+ wasm.__wbg_slipresult_free(ptr, 0);
15223
+ }
15224
+ /**
15225
+ * Current geometry-free phase, metres, or `undefined`.
15226
+ * @returns {number | undefined}
14756
15227
  */
14757
15228
  get gfM() {
14758
15229
  const ret = wasm.slipresult_gfM(this.__wbg_ptr);
@@ -14842,6 +15313,43 @@ export class SmoothCodeResult {
14842
15313
  }
14843
15314
  if (Symbol.dispose) SmoothCodeResult.prototype[Symbol.dispose] = SmoothCodeResult.prototype.free;
14844
15315
 
15316
+ export class SmoothedTrack {
15317
+ static __wrap(ptr) {
15318
+ const obj = Object.create(SmoothedTrack.prototype);
15319
+ obj.__wbg_ptr = ptr;
15320
+ SmoothedTrackFinalization.register(obj, obj.__wbg_ptr, obj);
15321
+ return obj;
15322
+ }
15323
+ __destroy_into_raw() {
15324
+ const ptr = this.__wbg_ptr;
15325
+ this.__wbg_ptr = 0;
15326
+ SmoothedTrackFinalization.unregister(this);
15327
+ return ptr;
15328
+ }
15329
+ free() {
15330
+ const ptr = this.__destroy_into_raw();
15331
+ wasm.__wbg_smoothedtrack_free(ptr, 0);
15332
+ }
15333
+ /**
15334
+ * @returns {number}
15335
+ */
15336
+ get epochCount() {
15337
+ const ret = wasm.smoothedtrack_epochCount(this.__wbg_ptr);
15338
+ return ret >>> 0;
15339
+ }
15340
+ /**
15341
+ * @returns {any}
15342
+ */
15343
+ get epochs() {
15344
+ const ret = wasm.smoothedtrack_epochs(this.__wbg_ptr);
15345
+ if (ret[2]) {
15346
+ throw takeFromExternrefTable0(ret[1]);
15347
+ }
15348
+ return takeFromExternrefTable0(ret[0]);
15349
+ }
15350
+ }
15351
+ if (Symbol.dispose) SmoothedTrack.prototype[Symbol.dispose] = SmoothedTrack.prototype.free;
15352
+
14845
15353
  /**
14846
15354
  * A receiver solution paired with the provenance of the ephemeris that produced
14847
15355
  * it. Returned by [`solveWithFallback`].
@@ -18406,44 +18914,364 @@ export class Tle {
18406
18914
  }
18407
18915
  if (Symbol.dispose) Tle.prototype[Symbol.dispose] = Tle.prototype.free;
18408
18916
 
18409
- /**
18410
- * Result of fitting a TLE to TEME samples.
18411
- */
18412
- export class TleFit {
18917
+ /**
18918
+ * Result of fitting a TLE to TEME samples.
18919
+ */
18920
+ export class TleFit {
18921
+ static __wrap(ptr) {
18922
+ const obj = Object.create(TleFit.prototype);
18923
+ obj.__wbg_ptr = ptr;
18924
+ TleFitFinalization.register(obj, obj.__wbg_ptr, obj);
18925
+ return obj;
18926
+ }
18927
+ __destroy_into_raw() {
18928
+ const ptr = this.__wbg_ptr;
18929
+ this.__wbg_ptr = 0;
18930
+ TleFitFinalization.unregister(this);
18931
+ return ptr;
18932
+ }
18933
+ free() {
18934
+ const ptr = this.__destroy_into_raw();
18935
+ wasm.__wbg_tlefit_free(ptr, 0);
18936
+ }
18937
+ /**
18938
+ * @returns {any}
18939
+ */
18940
+ get elements() {
18941
+ const ret = wasm.tlefit_elements(this.__wbg_ptr);
18942
+ if (ret[2]) {
18943
+ throw takeFromExternrefTable0(ret[1]);
18944
+ }
18945
+ return takeFromExternrefTable0(ret[0]);
18946
+ }
18947
+ /**
18948
+ * @returns {string}
18949
+ */
18950
+ get line1() {
18951
+ let deferred1_0;
18952
+ let deferred1_1;
18953
+ try {
18954
+ const ret = wasm.tlefit_line1(this.__wbg_ptr);
18955
+ deferred1_0 = ret[0];
18956
+ deferred1_1 = ret[1];
18957
+ return getStringFromWasm0(ret[0], ret[1]);
18958
+ } finally {
18959
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
18960
+ }
18961
+ }
18962
+ /**
18963
+ * @returns {string}
18964
+ */
18965
+ get line2() {
18966
+ let deferred1_0;
18967
+ let deferred1_1;
18968
+ try {
18969
+ const ret = wasm.tlefit_line2(this.__wbg_ptr);
18970
+ deferred1_0 = ret[0];
18971
+ deferred1_1 = ret[1];
18972
+ return getStringFromWasm0(ret[0], ret[1]);
18973
+ } finally {
18974
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
18975
+ }
18976
+ }
18977
+ /**
18978
+ * @returns {Omm}
18979
+ */
18980
+ get omm() {
18981
+ const ret = wasm.tlefit_omm(this.__wbg_ptr);
18982
+ return Omm.__wrap(ret);
18983
+ }
18984
+ /**
18985
+ * @returns {any}
18986
+ */
18987
+ get stats() {
18988
+ const ret = wasm.tlefit_stats(this.__wbg_ptr);
18989
+ if (ret[2]) {
18990
+ throw takeFromExternrefTable0(ret[1]);
18991
+ }
18992
+ return takeFromExternrefTable0(ret[0]);
18993
+ }
18994
+ /**
18995
+ * @returns {string[]}
18996
+ */
18997
+ toLines() {
18998
+ const ret = wasm.tlefit_toLines(this.__wbg_ptr);
18999
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
19000
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
19001
+ return v1;
19002
+ }
19003
+ }
19004
+ if (Symbol.dispose) TleFit.prototype[Symbol.dispose] = TleFit.prototype.free;
19005
+
19006
+ /**
19007
+ * TEME states from a batched SGP4 propagation. Each array is flat row-major,
19008
+ * length `3 * epochCount`.
19009
+ */
19010
+ export class TlePropagation {
19011
+ static __wrap(ptr) {
19012
+ const obj = Object.create(TlePropagation.prototype);
19013
+ obj.__wbg_ptr = ptr;
19014
+ TlePropagationFinalization.register(obj, obj.__wbg_ptr, obj);
19015
+ return obj;
19016
+ }
19017
+ __destroy_into_raw() {
19018
+ const ptr = this.__wbg_ptr;
19019
+ this.__wbg_ptr = 0;
19020
+ TlePropagationFinalization.unregister(this);
19021
+ return ptr;
19022
+ }
19023
+ free() {
19024
+ const ptr = this.__destroy_into_raw();
19025
+ wasm.__wbg_tlepropagation_free(ptr, 0);
19026
+ }
19027
+ /**
19028
+ * Number of epochs propagated.
19029
+ * @returns {number}
19030
+ */
19031
+ get epochCount() {
19032
+ const ret = wasm.tlepropagation_epochCount(this.__wbg_ptr);
19033
+ return ret >>> 0;
19034
+ }
19035
+ /**
19036
+ * TEME positions, km, flat `[x0, y0, z0, x1, ...]`.
19037
+ * @returns {Float64Array}
19038
+ */
19039
+ get positionKm() {
19040
+ const ret = wasm.tlepropagation_positionKm(this.__wbg_ptr);
19041
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
19042
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
19043
+ return v1;
19044
+ }
19045
+ /**
19046
+ * TEME velocities, km/s, flat `[vx0, vy0, vz0, ...]`.
19047
+ * @returns {Float64Array}
19048
+ */
19049
+ get velocityKmS() {
19050
+ const ret = wasm.tlepropagation_velocityKmS(this.__wbg_ptr);
19051
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
19052
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
19053
+ return v1;
19054
+ }
19055
+ }
19056
+ if (Symbol.dispose) TlePropagation.prototype[Symbol.dispose] = TlePropagation.prototype.free;
19057
+
19058
+ export class TrackFilter {
19059
+ static __wrap(ptr) {
19060
+ const obj = Object.create(TrackFilter.prototype);
19061
+ obj.__wbg_ptr = ptr;
19062
+ TrackFilterFinalization.register(obj, obj.__wbg_ptr, obj);
19063
+ return obj;
19064
+ }
19065
+ __destroy_into_raw() {
19066
+ const ptr = this.__wbg_ptr;
19067
+ this.__wbg_ptr = 0;
19068
+ TrackFilterFinalization.unregister(this);
19069
+ return ptr;
19070
+ }
19071
+ free() {
19072
+ const ptr = this.__destroy_into_raw();
19073
+ wasm.__wbg_trackfilter_free(ptr, 0);
19074
+ }
19075
+ /**
19076
+ * @returns {number}
19077
+ */
19078
+ get accelerationVarianceSpectralDensityM2S3() {
19079
+ const ret = wasm.trackfilter_accelerationVarianceSpectralDensityM2S3(this.__wbg_ptr);
19080
+ return ret;
19081
+ }
19082
+ /**
19083
+ * @returns {number}
19084
+ */
19085
+ get dimension() {
19086
+ const ret = wasm.trackfilter_dimension(this.__wbg_ptr);
19087
+ return ret >>> 0;
19088
+ }
19089
+ /**
19090
+ * Build a filter from a position fix and uncertain zero initial velocity.
19091
+ * @param {any} config
19092
+ * @returns {TrackFilter}
19093
+ */
19094
+ static fromPosition(config) {
19095
+ const ret = wasm.trackfilter_fromPosition(config);
19096
+ if (ret[2]) {
19097
+ throw takeFromExternrefTable0(ret[1]);
19098
+ }
19099
+ return TrackFilter.__wrap(ret[0]);
19100
+ }
19101
+ /**
19102
+ * Build a stateful no-IMU track filter from a `TrackFilterConfig`.
19103
+ * @param {TrackFilterConfig} config
19104
+ */
19105
+ constructor(config) {
19106
+ _assertClass(config, TrackFilterConfig);
19107
+ const ret = wasm.trackfilter_new(config.__wbg_ptr);
19108
+ if (ret[2]) {
19109
+ throw takeFromExternrefTable0(ret[1]);
19110
+ }
19111
+ this.__wbg_ptr = ret[0];
19112
+ TrackFilterFinalization.register(this, this.__wbg_ptr, this);
19113
+ return this;
19114
+ }
19115
+ /**
19116
+ * @param {any} request
19117
+ * @returns {any}
19118
+ */
19119
+ positionInnovation(request) {
19120
+ const ret = wasm.trackfilter_positionInnovation(this.__wbg_ptr, request);
19121
+ if (ret[2]) {
19122
+ throw takeFromExternrefTable0(ret[1]);
19123
+ }
19124
+ return takeFromExternrefTable0(ret[0]);
19125
+ }
19126
+ /**
19127
+ * @param {number} dt_s
19128
+ * @returns {any}
19129
+ */
19130
+ predict(dt_s) {
19131
+ const ret = wasm.trackfilter_predict(this.__wbg_ptr, dt_s);
19132
+ if (ret[2]) {
19133
+ throw takeFromExternrefTable0(ret[1]);
19134
+ }
19135
+ return takeFromExternrefTable0(ret[0]);
19136
+ }
19137
+ /**
19138
+ * @param {number} dt_s
19139
+ * @param {TrackRtsHistoryBuilder} history
19140
+ * @returns {any}
19141
+ */
19142
+ predictRecorded(dt_s, history) {
19143
+ _assertClass(history, TrackRtsHistoryBuilder);
19144
+ const ret = wasm.trackfilter_predictRecorded(this.__wbg_ptr, dt_s, history.__wbg_ptr);
19145
+ if (ret[2]) {
19146
+ throw takeFromExternrefTable0(ret[1]);
19147
+ }
19148
+ return takeFromExternrefTable0(ret[0]);
19149
+ }
19150
+ /**
19151
+ * @param {TrackRtsHistoryBuilder} history
19152
+ */
19153
+ recordPredictionOnly(history) {
19154
+ _assertClass(history, TrackRtsHistoryBuilder);
19155
+ const ret = wasm.trackfilter_recordPredictionOnly(this.__wbg_ptr, history.__wbg_ptr);
19156
+ if (ret[1]) {
19157
+ throw takeFromExternrefTable0(ret[0]);
19158
+ }
19159
+ }
19160
+ /**
19161
+ * @returns {any}
19162
+ */
19163
+ get state() {
19164
+ const ret = wasm.trackfilter_state(this.__wbg_ptr);
19165
+ if (ret[2]) {
19166
+ throw takeFromExternrefTable0(ret[1]);
19167
+ }
19168
+ return takeFromExternrefTable0(ret[0]);
19169
+ }
19170
+ /**
19171
+ * @param {any} request
19172
+ * @returns {any}
19173
+ */
19174
+ stateInnovation(request) {
19175
+ const ret = wasm.trackfilter_stateInnovation(this.__wbg_ptr, request);
19176
+ if (ret[2]) {
19177
+ throw takeFromExternrefTable0(ret[1]);
19178
+ }
19179
+ return takeFromExternrefTable0(ret[0]);
19180
+ }
19181
+ /**
19182
+ * @param {any} request
19183
+ * @returns {any}
19184
+ */
19185
+ updatePosition(request) {
19186
+ const ret = wasm.trackfilter_updatePosition(this.__wbg_ptr, request);
19187
+ if (ret[2]) {
19188
+ throw takeFromExternrefTable0(ret[1]);
19189
+ }
19190
+ return takeFromExternrefTable0(ret[0]);
19191
+ }
19192
+ /**
19193
+ * @param {any} request
19194
+ * @returns {any}
19195
+ */
19196
+ updatePositionGated(request) {
19197
+ const ret = wasm.trackfilter_updatePositionGated(this.__wbg_ptr, request);
19198
+ if (ret[2]) {
19199
+ throw takeFromExternrefTable0(ret[1]);
19200
+ }
19201
+ return takeFromExternrefTable0(ret[0]);
19202
+ }
19203
+ /**
19204
+ * @param {any} request
19205
+ * @param {TrackRtsHistoryBuilder} history
19206
+ * @returns {any}
19207
+ */
19208
+ updatePositionGatedRecorded(request, history) {
19209
+ _assertClass(history, TrackRtsHistoryBuilder);
19210
+ const ret = wasm.trackfilter_updatePositionGatedRecorded(this.__wbg_ptr, request, history.__wbg_ptr);
19211
+ if (ret[2]) {
19212
+ throw takeFromExternrefTable0(ret[1]);
19213
+ }
19214
+ return takeFromExternrefTable0(ret[0]);
19215
+ }
19216
+ /**
19217
+ * @param {any} request
19218
+ * @param {TrackRtsHistoryBuilder} history
19219
+ * @returns {any}
19220
+ */
19221
+ updatePositionRecorded(request, history) {
19222
+ _assertClass(history, TrackRtsHistoryBuilder);
19223
+ const ret = wasm.trackfilter_updatePositionRecorded(this.__wbg_ptr, request, history.__wbg_ptr);
19224
+ if (ret[2]) {
19225
+ throw takeFromExternrefTable0(ret[1]);
19226
+ }
19227
+ return takeFromExternrefTable0(ret[0]);
19228
+ }
19229
+ /**
19230
+ * @param {any} request
19231
+ * @returns {any}
19232
+ */
19233
+ updateState(request) {
19234
+ const ret = wasm.trackfilter_updateState(this.__wbg_ptr, request);
19235
+ if (ret[2]) {
19236
+ throw takeFromExternrefTable0(ret[1]);
19237
+ }
19238
+ return takeFromExternrefTable0(ret[0]);
19239
+ }
19240
+ }
19241
+ if (Symbol.dispose) TrackFilter.prototype[Symbol.dispose] = TrackFilter.prototype.free;
19242
+
19243
+ export class TrackFilterConfig {
18413
19244
  static __wrap(ptr) {
18414
- const obj = Object.create(TleFit.prototype);
19245
+ const obj = Object.create(TrackFilterConfig.prototype);
18415
19246
  obj.__wbg_ptr = ptr;
18416
- TleFitFinalization.register(obj, obj.__wbg_ptr, obj);
19247
+ TrackFilterConfigFinalization.register(obj, obj.__wbg_ptr, obj);
18417
19248
  return obj;
18418
19249
  }
18419
19250
  __destroy_into_raw() {
18420
19251
  const ptr = this.__wbg_ptr;
18421
19252
  this.__wbg_ptr = 0;
18422
- TleFitFinalization.unregister(this);
19253
+ TrackFilterConfigFinalization.unregister(this);
18423
19254
  return ptr;
18424
19255
  }
18425
19256
  free() {
18426
19257
  const ptr = this.__destroy_into_raw();
18427
- wasm.__wbg_tlefit_free(ptr, 0);
19258
+ wasm.__wbg_trackfilterconfig_free(ptr, 0);
18428
19259
  }
18429
19260
  /**
18430
- * @returns {any}
19261
+ * @returns {number}
18431
19262
  */
18432
- get elements() {
18433
- const ret = wasm.tlefit_elements(this.__wbg_ptr);
18434
- if (ret[2]) {
18435
- throw takeFromExternrefTable0(ret[1]);
18436
- }
18437
- return takeFromExternrefTable0(ret[0]);
19263
+ get dimension() {
19264
+ const ret = wasm.trackfilterconfig_dimension(this.__wbg_ptr);
19265
+ return ret >>> 0;
18438
19266
  }
18439
19267
  /**
18440
19268
  * @returns {string}
18441
19269
  */
18442
- get line1() {
19270
+ get frame() {
18443
19271
  let deferred1_0;
18444
19272
  let deferred1_1;
18445
19273
  try {
18446
- const ret = wasm.tlefit_line1(this.__wbg_ptr);
19274
+ const ret = wasm.trackfilterconfig_frame(this.__wbg_ptr);
18447
19275
  deferred1_0 = ret[0];
18448
19276
  deferred1_1 = ret[1];
18449
19277
  return getStringFromWasm0(ret[0], ret[1]);
@@ -18452,100 +19280,138 @@ export class TleFit {
18452
19280
  }
18453
19281
  }
18454
19282
  /**
18455
- * @returns {string}
19283
+ * Build a config from a position fix and uncertain zero initial velocity.
19284
+ * @param {any} config
19285
+ * @returns {TrackFilterConfig}
18456
19286
  */
18457
- get line2() {
18458
- let deferred1_0;
18459
- let deferred1_1;
18460
- try {
18461
- const ret = wasm.tlefit_line2(this.__wbg_ptr);
18462
- deferred1_0 = ret[0];
18463
- deferred1_1 = ret[1];
18464
- return getStringFromWasm0(ret[0], ret[1]);
18465
- } finally {
18466
- wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
19287
+ static fromPosition(config) {
19288
+ const ret = wasm.trackfilterconfig_fromPosition(config);
19289
+ if (ret[2]) {
19290
+ throw takeFromExternrefTable0(ret[1]);
18467
19291
  }
19292
+ return TrackFilterConfig.__wrap(ret[0]);
18468
19293
  }
18469
19294
  /**
18470
- * @returns {Omm}
19295
+ * @returns {number}
18471
19296
  */
18472
- get omm() {
18473
- const ret = wasm.tlefit_omm(this.__wbg_ptr);
18474
- return Omm.__wrap(ret);
19297
+ get initialTS() {
19298
+ const ret = wasm.trackfilterconfig_initialTS(this.__wbg_ptr);
19299
+ return ret;
18475
19300
  }
18476
19301
  /**
18477
- * @returns {any}
19302
+ * Build a no-IMU track filter config from a JS object.
19303
+ * @param {any} config
18478
19304
  */
18479
- get stats() {
18480
- const ret = wasm.tlefit_stats(this.__wbg_ptr);
19305
+ constructor(config) {
19306
+ const ret = wasm.trackfilterconfig_new(config);
18481
19307
  if (ret[2]) {
18482
19308
  throw takeFromExternrefTable0(ret[1]);
18483
19309
  }
18484
- return takeFromExternrefTable0(ret[0]);
19310
+ this.__wbg_ptr = ret[0];
19311
+ TrackFilterConfigFinalization.register(this, this.__wbg_ptr, this);
19312
+ return this;
18485
19313
  }
18486
19314
  /**
18487
- * @returns {string[]}
19315
+ * @returns {any}
18488
19316
  */
18489
- toLines() {
18490
- const ret = wasm.tlefit_toLines(this.__wbg_ptr);
18491
- var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
18492
- wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
18493
- return v1;
19317
+ toObject() {
19318
+ const ret = wasm.trackfilterconfig_toObject(this.__wbg_ptr);
19319
+ if (ret[2]) {
19320
+ throw takeFromExternrefTable0(ret[1]);
19321
+ }
19322
+ return takeFromExternrefTable0(ret[0]);
18494
19323
  }
18495
19324
  }
18496
- if (Symbol.dispose) TleFit.prototype[Symbol.dispose] = TleFit.prototype.free;
19325
+ if (Symbol.dispose) TrackFilterConfig.prototype[Symbol.dispose] = TrackFilterConfig.prototype.free;
18497
19326
 
18498
- /**
18499
- * TEME states from a batched SGP4 propagation. Each array is flat row-major,
18500
- * length `3 * epochCount`.
18501
- */
18502
- export class TlePropagation {
19327
+ export class TrackRtsHistory {
18503
19328
  static __wrap(ptr) {
18504
- const obj = Object.create(TlePropagation.prototype);
19329
+ const obj = Object.create(TrackRtsHistory.prototype);
18505
19330
  obj.__wbg_ptr = ptr;
18506
- TlePropagationFinalization.register(obj, obj.__wbg_ptr, obj);
19331
+ TrackRtsHistoryFinalization.register(obj, obj.__wbg_ptr, obj);
18507
19332
  return obj;
18508
19333
  }
18509
19334
  __destroy_into_raw() {
18510
19335
  const ptr = this.__wbg_ptr;
18511
19336
  this.__wbg_ptr = 0;
18512
- TlePropagationFinalization.unregister(this);
19337
+ TrackRtsHistoryFinalization.unregister(this);
18513
19338
  return ptr;
18514
19339
  }
18515
19340
  free() {
18516
19341
  const ptr = this.__destroy_into_raw();
18517
- wasm.__wbg_tlepropagation_free(ptr, 0);
19342
+ wasm.__wbg_trackrtshistory_free(ptr, 0);
18518
19343
  }
18519
19344
  /**
18520
- * Number of epochs propagated.
18521
19345
  * @returns {number}
18522
19346
  */
18523
19347
  get epochCount() {
18524
- const ret = wasm.tlepropagation_epochCount(this.__wbg_ptr);
19348
+ const ret = wasm.trackrtshistory_epochCount(this.__wbg_ptr);
18525
19349
  return ret >>> 0;
18526
19350
  }
18527
19351
  /**
18528
- * TEME positions, km, flat `[x0, y0, z0, x1, ...]`.
18529
- * @returns {Float64Array}
19352
+ * @returns {any}
18530
19353
  */
18531
- get positionKm() {
18532
- const ret = wasm.tlepropagation_positionKm(this.__wbg_ptr);
18533
- var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
18534
- wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
18535
- return v1;
19354
+ get epochs() {
19355
+ const ret = wasm.trackrtshistory_epochs(this.__wbg_ptr);
19356
+ if (ret[2]) {
19357
+ throw takeFromExternrefTable0(ret[1]);
19358
+ }
19359
+ return takeFromExternrefTable0(ret[0]);
19360
+ }
19361
+ }
19362
+ if (Symbol.dispose) TrackRtsHistory.prototype[Symbol.dispose] = TrackRtsHistory.prototype.free;
19363
+
19364
+ export class TrackRtsHistoryBuilder {
19365
+ static __wrap(ptr) {
19366
+ const obj = Object.create(TrackRtsHistoryBuilder.prototype);
19367
+ obj.__wbg_ptr = ptr;
19368
+ TrackRtsHistoryBuilderFinalization.register(obj, obj.__wbg_ptr, obj);
19369
+ return obj;
19370
+ }
19371
+ __destroy_into_raw() {
19372
+ const ptr = this.__wbg_ptr;
19373
+ this.__wbg_ptr = 0;
19374
+ TrackRtsHistoryBuilderFinalization.unregister(this);
19375
+ return ptr;
19376
+ }
19377
+ free() {
19378
+ const ptr = this.__destroy_into_raw();
19379
+ wasm.__wbg_trackrtshistorybuilder_free(ptr, 0);
18536
19380
  }
18537
19381
  /**
18538
- * TEME velocities, km/s, flat `[vx0, vy0, vz0, ...]`.
18539
- * @returns {Float64Array}
19382
+ * @returns {TrackRtsHistory}
18540
19383
  */
18541
- get velocityKmS() {
18542
- const ret = wasm.tlepropagation_velocityKmS(this.__wbg_ptr);
18543
- var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
18544
- wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
18545
- return v1;
19384
+ finish() {
19385
+ const ret = wasm.trackrtshistorybuilder_finish(this.__wbg_ptr);
19386
+ if (ret[2]) {
19387
+ throw takeFromExternrefTable0(ret[1]);
19388
+ }
19389
+ return TrackRtsHistory.__wrap(ret[0]);
19390
+ }
19391
+ /**
19392
+ * Start a history from the filter's current state.
19393
+ * @param {TrackFilter} filter
19394
+ * @returns {TrackRtsHistoryBuilder}
19395
+ */
19396
+ static fromFilter(filter) {
19397
+ _assertClass(filter, TrackFilter);
19398
+ const ret = wasm.trackrtshistorybuilder_fromFilter(filter.__wbg_ptr);
19399
+ if (ret[2]) {
19400
+ throw takeFromExternrefTable0(ret[1]);
19401
+ }
19402
+ return TrackRtsHistoryBuilder.__wrap(ret[0]);
19403
+ }
19404
+ /**
19405
+ * Start an empty history for manual recording.
19406
+ */
19407
+ constructor() {
19408
+ const ret = wasm.trackrtshistorybuilder_new();
19409
+ this.__wbg_ptr = ret;
19410
+ TrackRtsHistoryBuilderFinalization.register(this, this.__wbg_ptr, this);
19411
+ return this;
18546
19412
  }
18547
19413
  }
18548
- if (Symbol.dispose) TlePropagation.prototype[Symbol.dispose] = TlePropagation.prototype.free;
19414
+ if (Symbol.dispose) TrackRtsHistoryBuilder.prototype[Symbol.dispose] = TrackRtsHistoryBuilder.prototype.free;
18549
19415
 
18550
19416
  /**
18551
19417
  * Provenance and coverage of the embedded UT1-UTC / delta-T (EOP) table.
@@ -19936,6 +20802,23 @@ export function defaultPair(system) {
19936
20802
  return ret === 0 ? undefined : CarrierPair.__wrap(ret);
19937
20803
  }
19938
20804
 
20805
+ /**
20806
+ * Default scenario seed as a hexadecimal string.
20807
+ * @returns {string}
20808
+ */
20809
+ export function defaultScenarioSeedHex() {
20810
+ let deferred1_0;
20811
+ let deferred1_1;
20812
+ try {
20813
+ const ret = wasm.defaultScenarioSeedHex();
20814
+ deferred1_0 = ret[0];
20815
+ deferred1_1 = ret[1];
20816
+ return getStringFromWasm0(ret[0], ret[1]);
20817
+ } finally {
20818
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
20819
+ }
20820
+ }
20821
+
19939
20822
  /**
19940
20823
  * Single-frequency carrier used by the SPP ionosphere-scaling policy.
19941
20824
  * @param {GnssSystem} system
@@ -20250,6 +21133,25 @@ export function eclipseStatus(satellite_position_km, sun_position_km) {
20250
21133
  return v3;
20251
21134
  }
20252
21135
 
21136
+ /**
21137
+ * Effective C/N0 degradation for one finite-band interference term.
21138
+ * @param {SignalAnalysisModulation} desired
21139
+ * @param {SignalAnalysisModulation} interference
21140
+ * @param {number} cn0_db_hz
21141
+ * @param {number} receiver_bandwidth_hz
21142
+ * @param {number} power_ratio_to_carrier
21143
+ * @returns {any}
21144
+ */
21145
+ export function effectiveCn0Degradation(desired, interference, cn0_db_hz, receiver_bandwidth_hz, power_ratio_to_carrier) {
21146
+ _assertClass(desired, SignalAnalysisModulation);
21147
+ _assertClass(interference, SignalAnalysisModulation);
21148
+ const ret = wasm.effectiveCn0Degradation(desired.__wbg_ptr, interference.__wbg_ptr, cn0_db_hz, receiver_bandwidth_hz, power_ratio_to_carrier);
21149
+ if (ret[2]) {
21150
+ throw takeFromExternrefTable0(ret[1]);
21151
+ }
21152
+ return takeFromExternrefTable0(ret[0]);
21153
+ }
21154
+
20253
21155
  /**
20254
21156
  * Ellipsoidal height `h = H + N` (metres above the WGS84 ellipsoid) from an
20255
21157
  * orthometric height and a geodetic position in radians, using the embedded
@@ -21252,6 +22154,23 @@ export function fspl(distance_km, frequency_mhz) {
21252
22154
  return ret[0];
21253
22155
  }
21254
22156
 
22157
+ /**
22158
+ * Decode and re-encode fusion-state bytes through the core codec.
22159
+ * @param {Uint8Array} bytes
22160
+ * @returns {Uint8Array}
22161
+ */
22162
+ export function fusionStateBytesRoundTrip(bytes) {
22163
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);
22164
+ const len0 = WASM_VECTOR_LEN;
22165
+ const ret = wasm.fusionStateBytesRoundTrip(ptr0, len0);
22166
+ if (ret[3]) {
22167
+ throw takeFromExternrefTable0(ret[2]);
22168
+ }
22169
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
22170
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
22171
+ return v2;
22172
+ }
22173
+
21255
22174
  /**
21256
22175
  * Galileo NeQuick-G single-frequency ionospheric group delay (positive metres).
21257
22176
  *
@@ -25157,6 +26076,32 @@ export function sbasProtectionLevels(geometry, model, k) {
25157
26076
  return SbasProtection.__wrap(ret[0]);
25158
26077
  }
25159
26078
 
26079
+ /**
26080
+ * Core scenario engine version string used in deterministic outputs.
26081
+ * @returns {string}
26082
+ */
26083
+ export function scenarioEngineVersion() {
26084
+ let deferred1_0;
26085
+ let deferred1_1;
26086
+ try {
26087
+ const ret = wasm.scenarioEngineVersion();
26088
+ deferred1_0 = ret[0];
26089
+ deferred1_1 = ret[1];
26090
+ return getStringFromWasm0(ret[0], ret[1]);
26091
+ } finally {
26092
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
26093
+ }
26094
+ }
26095
+
26096
+ /**
26097
+ * Core scenario schema version accepted by the binding.
26098
+ * @returns {number}
26099
+ */
26100
+ export function scenarioSchemaVersion() {
26101
+ const ret = wasm.scenarioSchemaVersion();
26102
+ return ret >>> 0;
26103
+ }
26104
+
25160
26105
  /**
25161
26106
  * Screen a primary satellite against a secondary TLE catalog for threshold TCAs.
25162
26107
  *
@@ -25428,6 +26373,66 @@ export function sigmas(entries, options) {
25428
26373
  return SatelliteVector.__wrap(ret[0]);
25429
26374
  }
25430
26375
 
26376
+ /**
26377
+ * Simulate a scenario from a JS object or JSON string and return JS arrays.
26378
+ * @param {any} value
26379
+ * @returns {any}
26380
+ */
26381
+ export function simulateScenario(value) {
26382
+ const ret = wasm.simulateScenario(value);
26383
+ if (ret[2]) {
26384
+ throw takeFromExternrefTable0(ret[1]);
26385
+ }
26386
+ return takeFromExternrefTable0(ret[0]);
26387
+ }
26388
+
26389
+ /**
26390
+ * Simulate a scenario from a JS object or JSON string and return deterministic JSON bytes.
26391
+ * @param {any} value
26392
+ * @returns {Uint8Array}
26393
+ */
26394
+ export function simulateScenarioBytes(value) {
26395
+ const ret = wasm.simulateScenarioBytes(value);
26396
+ if (ret[3]) {
26397
+ throw takeFromExternrefTable0(ret[2]);
26398
+ }
26399
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
26400
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
26401
+ return v1;
26402
+ }
26403
+
26404
+ /**
26405
+ * Simulate a scenario from JSON text and return JS arrays.
26406
+ * @param {string} text
26407
+ * @returns {any}
26408
+ */
26409
+ export function simulateScenarioJson(text) {
26410
+ const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
26411
+ const len0 = WASM_VECTOR_LEN;
26412
+ const ret = wasm.simulateScenarioJson(ptr0, len0);
26413
+ if (ret[2]) {
26414
+ throw takeFromExternrefTable0(ret[1]);
26415
+ }
26416
+ return takeFromExternrefTable0(ret[0]);
26417
+ }
26418
+
26419
+ /**
26420
+ * Simulate a scenario from JSON text and return deterministic JSON bytes.
26421
+ * @param {string} text
26422
+ * @returns {Uint8Array}
26423
+ */
26424
+ export function simulateScenarioJsonBytes(text) {
26425
+ const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
26426
+ const len0 = WASM_VECTOR_LEN;
26427
+ const ret = wasm.simulateScenarioJsonBytes(ptr0, len0);
26428
+ if (ret[3]) {
26429
+ throw takeFromExternrefTable0(ret[2]);
26430
+ }
26431
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
26432
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
26433
+ return v2;
26434
+ }
26435
+
25431
26436
  /**
25432
26437
  * Sample skewness of a residual set.
25433
26438
  *
@@ -25501,6 +26506,19 @@ export function smoothIonoFreeCode(arc, options, hatch_window_cap) {
25501
26506
  return v1;
25502
26507
  }
25503
26508
 
26509
+ /**
26510
+ * @param {TrackRtsHistory} history
26511
+ * @returns {SmoothedTrack}
26512
+ */
26513
+ export function smoothTrackRts(history) {
26514
+ _assertClass(history, TrackRtsHistory);
26515
+ const ret = wasm.smoothTrackRts(history.__wbg_ptr);
26516
+ if (ret[2]) {
26517
+ throw takeFromExternrefTable0(ret[1]);
26518
+ }
26519
+ return SmoothedTrack.__wrap(ret[0]);
26520
+ }
26521
+
25504
26522
  /**
25505
26523
  * Post-correlation predetection SNR in decibels.
25506
26524
  * @param {number} cn0_dbhz
@@ -25982,6 +27000,40 @@ export function sp3PreciseEphemerisSamples(sp3) {
25982
27000
  return takeFromExternrefTable0(ret[0]);
25983
27001
  }
25984
27002
 
27003
+ /**
27004
+ * Spectral separation coefficient between two modulations, in dB-Hz.
27005
+ * @param {SignalAnalysisModulation} desired
27006
+ * @param {SignalAnalysisModulation} interference
27007
+ * @param {number} receiver_bandwidth_hz
27008
+ * @returns {number}
27009
+ */
27010
+ export function spectralSeparationCoefficientDbHz(desired, interference, receiver_bandwidth_hz) {
27011
+ _assertClass(desired, SignalAnalysisModulation);
27012
+ _assertClass(interference, SignalAnalysisModulation);
27013
+ const ret = wasm.spectralSeparationCoefficientDbHz(desired.__wbg_ptr, interference.__wbg_ptr, receiver_bandwidth_hz);
27014
+ if (ret[2]) {
27015
+ throw takeFromExternrefTable0(ret[1]);
27016
+ }
27017
+ return ret[0];
27018
+ }
27019
+
27020
+ /**
27021
+ * Spectral separation coefficient between two modulations, in hertz.
27022
+ * @param {SignalAnalysisModulation} desired
27023
+ * @param {SignalAnalysisModulation} interference
27024
+ * @param {number} receiver_bandwidth_hz
27025
+ * @returns {number}
27026
+ */
27027
+ export function spectralSeparationCoefficientHz(desired, interference, receiver_bandwidth_hz) {
27028
+ _assertClass(desired, SignalAnalysisModulation);
27029
+ _assertClass(interference, SignalAnalysisModulation);
27030
+ const ret = wasm.spectralSeparationCoefficientHz(desired.__wbg_ptr, interference.__wbg_ptr, receiver_bandwidth_hz);
27031
+ if (ret[2]) {
27032
+ throw takeFromExternrefTable0(ret[1]);
27033
+ }
27034
+ return ret[0];
27035
+ }
27036
+
25985
27037
  /**
25986
27038
  * Continuous seconds since J2000 for a split Julian date.
25987
27039
  * @param {number} jd_whole
@@ -27331,6 +28383,9 @@ const GeometryQualityFinalization = (typeof FinalizationRegistry === 'undefined'
27331
28383
  const GlonassRecordJsFinalization = (typeof FinalizationRegistry === 'undefined')
27332
28384
  ? { register: () => {}, unregister: () => {} }
27333
28385
  : new FinalizationRegistry(ptr => wasm.__wbg_glonassrecordjs_free(ptr, 1));
28386
+ const GnssInsFilterFinalization = (typeof FinalizationRegistry === 'undefined')
28387
+ ? { register: () => {}, unregister: () => {} }
28388
+ : new FinalizationRegistry(ptr => wasm.__wbg_gnssinsfilter_free(ptr, 1));
27334
28389
  const GnssPassFinalization = (typeof FinalizationRegistry === 'undefined')
27335
28390
  ? { register: () => {}, unregister: () => {} }
27336
28391
  : new FinalizationRegistry(ptr => wasm.__wbg_gnsspass_free(ptr, 1));
@@ -27604,6 +28659,9 @@ const SbasProtectionFinalization = (typeof FinalizationRegistry === 'undefined')
27604
28659
  const SbasSisErrorFinalization = (typeof FinalizationRegistry === 'undefined')
27605
28660
  ? { register: () => {}, unregister: () => {} }
27606
28661
  : new FinalizationRegistry(ptr => wasm.__wbg_sbassiserror_free(ptr, 1));
28662
+ const SignalAnalysisModulationFinalization = (typeof FinalizationRegistry === 'undefined')
28663
+ ? { register: () => {}, unregister: () => {} }
28664
+ : new FinalizationRegistry(ptr => wasm.__wbg_signalanalysismodulation_free(ptr, 1));
27607
28665
  const SignalPolicyFinalization = (typeof FinalizationRegistry === 'undefined')
27608
28666
  ? { register: () => {}, unregister: () => {} }
27609
28667
  : new FinalizationRegistry(ptr => wasm.__wbg_signalpolicy_free(ptr, 1));
@@ -27613,6 +28671,9 @@ const SlipResultFinalization = (typeof FinalizationRegistry === 'undefined')
27613
28671
  const SmoothCodeResultFinalization = (typeof FinalizationRegistry === 'undefined')
27614
28672
  ? { register: () => {}, unregister: () => {} }
27615
28673
  : new FinalizationRegistry(ptr => wasm.__wbg_smoothcoderesult_free(ptr, 1));
28674
+ const SmoothedTrackFinalization = (typeof FinalizationRegistry === 'undefined')
28675
+ ? { register: () => {}, unregister: () => {} }
28676
+ : new FinalizationRegistry(ptr => wasm.__wbg_smoothedtrack_free(ptr, 1));
27616
28677
  const SourcedSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
27617
28678
  ? { register: () => {}, unregister: () => {} }
27618
28679
  : new FinalizationRegistry(ptr => wasm.__wbg_sourcedsolution_free(ptr, 1));
@@ -27721,6 +28782,18 @@ const TleFitFinalization = (typeof FinalizationRegistry === 'undefined')
27721
28782
  const TlePropagationFinalization = (typeof FinalizationRegistry === 'undefined')
27722
28783
  ? { register: () => {}, unregister: () => {} }
27723
28784
  : new FinalizationRegistry(ptr => wasm.__wbg_tlepropagation_free(ptr, 1));
28785
+ const TrackFilterFinalization = (typeof FinalizationRegistry === 'undefined')
28786
+ ? { register: () => {}, unregister: () => {} }
28787
+ : new FinalizationRegistry(ptr => wasm.__wbg_trackfilter_free(ptr, 1));
28788
+ const TrackFilterConfigFinalization = (typeof FinalizationRegistry === 'undefined')
28789
+ ? { register: () => {}, unregister: () => {} }
28790
+ : new FinalizationRegistry(ptr => wasm.__wbg_trackfilterconfig_free(ptr, 1));
28791
+ const TrackRtsHistoryFinalization = (typeof FinalizationRegistry === 'undefined')
28792
+ ? { register: () => {}, unregister: () => {} }
28793
+ : new FinalizationRegistry(ptr => wasm.__wbg_trackrtshistory_free(ptr, 1));
28794
+ const TrackRtsHistoryBuilderFinalization = (typeof FinalizationRegistry === 'undefined')
28795
+ ? { register: () => {}, unregister: () => {} }
28796
+ : new FinalizationRegistry(ptr => wasm.__wbg_trackrtshistorybuilder_free(ptr, 1));
27724
28797
  const Ut1CoverageFinalization = (typeof FinalizationRegistry === 'undefined')
27725
28798
  ? { register: () => {}, unregister: () => {} }
27726
28799
  : new FinalizationRegistry(ptr => wasm.__wbg_ut1coverage_free(ptr, 1));