dexbot 1.3.3 → 1.4.1
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/dist/analysis/chart_utils.d.ts +11 -9
- package/dist/analysis/chart_utils.d.ts.map +1 -1
- package/dist/analysis/chart_utils.js +21 -16
- package/dist/analysis/chart_utils.js.map +1 -1
- package/dist/analysis/math_utils.d.ts +4 -13
- package/dist/analysis/math_utils.d.ts.map +1 -1
- package/dist/analysis/math_utils.js +16 -18
- package/dist/analysis/math_utils.js.map +1 -1
- package/dist/analysis/tradingview/tradingview_uplot_chart_generator.d.ts +3 -7
- package/dist/analysis/tradingview/tradingview_uplot_chart_generator.d.ts.map +1 -1
- package/dist/analysis/tradingview/tradingview_uplot_chart_generator.js +38 -34
- package/dist/analysis/tradingview/tradingview_uplot_chart_generator.js.map +1 -1
- package/dist/analysis/trend_detection/hurst_analyzer.d.ts +1 -4
- package/dist/analysis/trend_detection/hurst_analyzer.d.ts.map +1 -1
- package/dist/analysis/trend_detection/hurst_analyzer.js +10 -7
- package/dist/analysis/trend_detection/hurst_analyzer.js.map +1 -1
- package/dist/analysis/trend_detection/kalman_trend_analyzer.d.ts +6 -6
- package/dist/analysis/trend_detection/kalman_trend_analyzer.d.ts.map +1 -1
- package/dist/analysis/trend_detection/kalman_trend_analyzer.js +23 -15
- package/dist/analysis/trend_detection/kalman_trend_analyzer.js.map +1 -1
- package/dist/analysis/trend_detection/kalman_velocity_smoothing.d.ts +12 -13
- package/dist/analysis/trend_detection/kalman_velocity_smoothing.d.ts.map +1 -1
- package/dist/analysis/trend_detection/kalman_velocity_smoothing.js +16 -16
- package/dist/analysis/trend_detection/kalman_velocity_smoothing.js.map +1 -1
- package/dist/analysis/trend_detection/permutation_entropy_analyzer.d.ts +1 -4
- package/dist/analysis/trend_detection/permutation_entropy_analyzer.d.ts.map +1 -1
- package/dist/analysis/trend_detection/permutation_entropy_analyzer.js +10 -7
- package/dist/analysis/trend_detection/permutation_entropy_analyzer.js.map +1 -1
- package/dist/bot.d.ts.map +1 -1
- package/dist/bot.js +6 -13
- package/dist/bot.js.map +1 -1
- package/dist/credential-daemon.d.ts.map +1 -1
- package/dist/credential-daemon.js +21 -22
- package/dist/credential-daemon.js.map +1 -1
- package/dist/dexbot.d.ts.map +1 -1
- package/dist/dexbot.js +16 -15
- package/dist/dexbot.js.map +1 -1
- package/dist/market_adapter/ama_signal_runner.d.ts +1 -1
- package/dist/market_adapter/ama_signal_runner.d.ts.map +1 -1
- package/dist/market_adapter/ama_signal_runner.js +8 -20
- package/dist/market_adapter/ama_signal_runner.js.map +1 -1
- package/dist/market_adapter/candle_utils.d.ts +2 -10
- package/dist/market_adapter/candle_utils.d.ts.map +1 -1
- package/dist/market_adapter/candle_utils.js +7 -8
- package/dist/market_adapter/candle_utils.js.map +1 -1
- package/dist/market_adapter/core/asymmetric_bounds.d.ts +12 -7
- package/dist/market_adapter/core/asymmetric_bounds.d.ts.map +1 -1
- package/dist/market_adapter/core/asymmetric_bounds.js +4 -5
- package/dist/market_adapter/core/asymmetric_bounds.js.map +1 -1
- package/dist/market_adapter/core/config_normalizers.d.ts +4 -9
- package/dist/market_adapter/core/config_normalizers.d.ts.map +1 -1
- package/dist/market_adapter/core/config_normalizers.js +9 -9
- package/dist/market_adapter/core/config_normalizers.js.map +1 -1
- package/dist/market_adapter/core/kibana_candles.d.ts +16 -20
- package/dist/market_adapter/core/kibana_candles.d.ts.map +1 -1
- package/dist/market_adapter/core/kibana_candles.js +16 -15
- package/dist/market_adapter/core/kibana_candles.js.map +1 -1
- package/dist/market_adapter/core/kibana_client.d.ts +8 -11
- package/dist/market_adapter/core/kibana_client.d.ts.map +1 -1
- package/dist/market_adapter/core/kibana_client.js +13 -11
- package/dist/market_adapter/core/kibana_client.js.map +1 -1
- package/dist/market_adapter/core/kibana_market_candles.d.ts +5 -12
- package/dist/market_adapter/core/kibana_market_candles.d.ts.map +1 -1
- package/dist/market_adapter/core/kibana_market_candles.js +12 -21
- package/dist/market_adapter/core/kibana_market_candles.js.map +1 -1
- package/dist/market_adapter/core/market_adapter_service.d.ts +75 -53
- package/dist/market_adapter/core/market_adapter_service.d.ts.map +1 -1
- package/dist/market_adapter/core/market_adapter_service.js +102 -98
- package/dist/market_adapter/core/market_adapter_service.js.map +1 -1
- package/dist/market_adapter/core/strategies/ama.d.ts +21 -1
- package/dist/market_adapter/core/strategies/ama.d.ts.map +1 -1
- package/dist/market_adapter/core/strategies/ama.js +10 -10
- package/dist/market_adapter/core/strategies/ama.js.map +1 -1
- package/dist/market_adapter/core/strategies/ama_slope_model.d.ts +7 -11
- package/dist/market_adapter/core/strategies/ama_slope_model.d.ts.map +1 -1
- package/dist/market_adapter/core/strategies/ama_slope_model.js +23 -30
- package/dist/market_adapter/core/strategies/ama_slope_model.js.map +1 -1
- package/dist/market_adapter/core/strategies/atr/calculator.d.ts +5 -4
- package/dist/market_adapter/core/strategies/atr/calculator.d.ts.map +1 -1
- package/dist/market_adapter/core/strategies/atr/calculator.js +5 -3
- package/dist/market_adapter/core/strategies/atr/calculator.js.map +1 -1
- package/dist/market_adapter/core/strategies/collateral_manager.d.ts +4 -7
- package/dist/market_adapter/core/strategies/collateral_manager.d.ts.map +1 -1
- package/dist/market_adapter/core/strategies/collateral_manager.js +5 -4
- package/dist/market_adapter/core/strategies/collateral_manager.js.map +1 -1
- package/dist/market_adapter/core/strategies/regime_gate.d.ts +11 -19
- package/dist/market_adapter/core/strategies/regime_gate.d.ts.map +1 -1
- package/dist/market_adapter/core/strategies/regime_gate.js +22 -22
- package/dist/market_adapter/core/strategies/regime_gate.js.map +1 -1
- package/dist/market_adapter/index.d.ts +24 -2
- package/dist/market_adapter/index.d.ts.map +1 -1
- package/dist/market_adapter/index.js +82 -56
- package/dist/market_adapter/index.js.map +1 -1
- package/dist/market_adapter/inputs/fetch_cex_synthetic_data.js +26 -37
- package/dist/market_adapter/inputs/fetch_cex_synthetic_data.js.map +1 -1
- package/dist/market_adapter/inputs/fetch_lp_data.d.ts +4 -12
- package/dist/market_adapter/inputs/fetch_lp_data.d.ts.map +1 -1
- package/dist/market_adapter/inputs/fetch_lp_data.js +100 -66
- package/dist/market_adapter/inputs/fetch_lp_data.js.map +1 -1
- package/dist/market_adapter/inputs/kibana_source.d.ts +4 -9
- package/dist/market_adapter/inputs/kibana_source.d.ts.map +1 -1
- package/dist/market_adapter/inputs/kibana_source.js +17 -18
- package/dist/market_adapter/inputs/kibana_source.js.map +1 -1
- package/dist/market_adapter/interval_utils.d.ts +1 -4
- package/dist/market_adapter/interval_utils.d.ts.map +1 -1
- package/dist/market_adapter/interval_utils.js +2 -3
- package/dist/market_adapter/interval_utils.js.map +1 -1
- package/dist/market_adapter/log_format.d.ts +1 -9
- package/dist/market_adapter/log_format.d.ts.map +1 -1
- package/dist/market_adapter/log_format.js +7 -8
- package/dist/market_adapter/log_format.js.map +1 -1
- package/dist/market_adapter/lp_chart_core.d.ts +1 -4
- package/dist/market_adapter/lp_chart_core.d.ts.map +1 -1
- package/dist/market_adapter/lp_chart_core.js +22 -20
- package/dist/market_adapter/lp_chart_core.js.map +1 -1
- package/dist/market_adapter/lp_chart_runner.d.ts +13 -24
- package/dist/market_adapter/lp_chart_runner.d.ts.map +1 -1
- package/dist/market_adapter/lp_chart_runner.js +58 -56
- package/dist/market_adapter/lp_chart_runner.js.map +1 -1
- package/dist/market_adapter/lp_chart_strategy_loader.d.ts +4 -17
- package/dist/market_adapter/lp_chart_strategy_loader.d.ts.map +1 -1
- package/dist/market_adapter/lp_chart_strategy_loader.js +36 -36
- package/dist/market_adapter/lp_chart_strategy_loader.js.map +1 -1
- package/dist/market_adapter/market_adapter.d.ts +51 -72
- package/dist/market_adapter/market_adapter.d.ts.map +1 -1
- package/dist/market_adapter/market_adapter.js +227 -192
- package/dist/market_adapter/market_adapter.js.map +1 -1
- package/dist/market_adapter/merge_lp_data.js +17 -16
- package/dist/market_adapter/merge_lp_data.js.map +1 -1
- package/dist/market_adapter/test_helpers.d.ts +9 -13
- package/dist/market_adapter/test_helpers.d.ts.map +1 -1
- package/dist/market_adapter/test_helpers.js +14 -14
- package/dist/market_adapter/test_helpers.js.map +1 -1
- package/dist/market_adapter/utils/adapter_client.d.ts +6 -14
- package/dist/market_adapter/utils/adapter_client.d.ts.map +1 -1
- package/dist/market_adapter/utils/adapter_client.js +16 -15
- package/dist/market_adapter/utils/adapter_client.js.map +1 -1
- package/dist/market_adapter/utils/atomic_write.d.ts +2 -5
- package/dist/market_adapter/utils/atomic_write.d.ts.map +1 -1
- package/dist/market_adapter/utils/atomic_write.js +5 -5
- package/dist/market_adapter/utils/atomic_write.js.map +1 -1
- package/dist/market_adapter/utils/chain.d.ts +19 -21
- package/dist/market_adapter/utils/chain.d.ts.map +1 -1
- package/dist/market_adapter/utils/chain.js +15 -16
- package/dist/market_adapter/utils/chain.js.map +1 -1
- package/dist/market_adapter/utils/data_discovery.d.ts +1 -4
- package/dist/market_adapter/utils/data_discovery.d.ts.map +1 -1
- package/dist/market_adapter/utils/data_discovery.js +10 -10
- package/dist/market_adapter/utils/data_discovery.js.map +1 -1
- package/dist/market_adapter/utils/dynamic_grid_snapshot.d.ts +1 -6
- package/dist/market_adapter/utils/dynamic_grid_snapshot.d.ts.map +1 -1
- package/dist/market_adapter/utils/dynamic_grid_snapshot.js +14 -14
- package/dist/market_adapter/utils/dynamic_grid_snapshot.js.map +1 -1
- package/dist/market_adapter/utils/file_lock.d.ts +1 -7
- package/dist/market_adapter/utils/file_lock.d.ts.map +1 -1
- package/dist/market_adapter/utils/file_lock.js +21 -25
- package/dist/market_adapter/utils/file_lock.js.map +1 -1
- package/dist/market_adapter/utils/native_history.d.ts +12 -12
- package/dist/market_adapter/utils/native_history.d.ts.map +1 -1
- package/dist/market_adapter/utils/native_history.js +15 -15
- package/dist/market_adapter/utils/native_history.js.map +1 -1
- package/dist/market_adapter/utils/paths.d.ts +2 -4
- package/dist/market_adapter/utils/paths.d.ts.map +1 -1
- package/dist/market_adapter/utils/paths.js +6 -5
- package/dist/market_adapter/utils/paths.js.map +1 -1
- package/dist/modules/account_bots.d.ts +7 -8
- package/dist/modules/account_bots.d.ts.map +1 -1
- package/dist/modules/account_bots.js +92 -114
- package/dist/modules/account_bots.js.map +1 -1
- package/dist/modules/account_orders.d.ts +5 -9
- package/dist/modules/account_orders.d.ts.map +1 -1
- package/dist/modules/account_orders.js +69 -32
- package/dist/modules/account_orders.js.map +1 -1
- package/dist/modules/authority_resolver.d.ts +32 -1
- package/dist/modules/authority_resolver.d.ts.map +1 -1
- package/dist/modules/authority_resolver.js +18 -12
- package/dist/modules/authority_resolver.js.map +1 -1
- package/dist/modules/bitshares-native/chain_client.d.ts +3 -8
- package/dist/modules/bitshares-native/chain_client.d.ts.map +1 -1
- package/dist/modules/bitshares-native/chain_client.js +21 -16
- package/dist/modules/bitshares-native/chain_client.js.map +1 -1
- package/dist/modules/bitshares-native/crypto/ecc.browser.d.ts +21 -29
- package/dist/modules/bitshares-native/crypto/ecc.browser.d.ts.map +1 -1
- package/dist/modules/bitshares-native/crypto/ecc.browser.js +72 -38
- package/dist/modules/bitshares-native/crypto/ecc.browser.js.map +1 -1
- package/dist/modules/bitshares-native/crypto/ecc.d.ts +9 -36
- package/dist/modules/bitshares-native/crypto/ecc.d.ts.map +1 -1
- package/dist/modules/bitshares-native/crypto/ecc.js +40 -83
- package/dist/modules/bitshares-native/crypto/ecc.js.map +1 -1
- package/dist/modules/bitshares-native/crypto/ecc_selector.d.ts +14 -1
- package/dist/modules/bitshares-native/crypto/ecc_selector.d.ts.map +1 -1
- package/dist/modules/bitshares-native/crypto/ecc_selector.js +5 -3
- package/dist/modules/bitshares-native/crypto/ecc_selector.js.map +1 -1
- package/dist/modules/bitshares-native/index.d.ts +10 -2
- package/dist/modules/bitshares-native/index.d.ts.map +1 -1
- package/dist/modules/bitshares-native/index.js +68 -31
- package/dist/modules/bitshares-native/index.js.map +1 -1
- package/dist/modules/bitshares-native/lru_cache.d.ts +1 -4
- package/dist/modules/bitshares-native/lru_cache.d.ts.map +1 -1
- package/dist/modules/bitshares-native/lru_cache.js +6 -3
- package/dist/modules/bitshares-native/lru_cache.js.map +1 -1
- package/dist/modules/bitshares-native/resolvers.d.ts +3 -6
- package/dist/modules/bitshares-native/resolvers.d.ts.map +1 -1
- package/dist/modules/bitshares-native/resolvers.js +11 -9
- package/dist/modules/bitshares-native/resolvers.js.map +1 -1
- package/dist/modules/bitshares-native/serial/chain_constants.d.ts +53 -55
- package/dist/modules/bitshares-native/serial/chain_constants.d.ts.map +1 -1
- package/dist/modules/bitshares-native/serial/chain_constants.js +28 -27
- package/dist/modules/bitshares-native/serial/chain_constants.js.map +1 -1
- package/dist/modules/bitshares-native/serial/index.d.ts +5 -9
- package/dist/modules/bitshares-native/serial/index.d.ts.map +1 -1
- package/dist/modules/bitshares-native/serial/index.js +46 -12
- package/dist/modules/bitshares-native/serial/index.js.map +1 -1
- package/dist/modules/bitshares-native/serial/operations.d.ts +102 -100
- package/dist/modules/bitshares-native/serial/operations.d.ts.map +1 -1
- package/dist/modules/bitshares-native/serial/operations.js +473 -471
- package/dist/modules/bitshares-native/serial/operations.js.map +1 -1
- package/dist/modules/bitshares-native/serial/serializer.d.ts +2 -7
- package/dist/modules/bitshares-native/serial/serializer.d.ts.map +1 -1
- package/dist/modules/bitshares-native/serial/serializer.js +8 -3
- package/dist/modules/bitshares-native/serial/serializer.js.map +1 -1
- package/dist/modules/bitshares-native/serial/types.d.ts +26 -41
- package/dist/modules/bitshares-native/serial/types.d.ts.map +1 -1
- package/dist/modules/bitshares-native/serial/types.js +76 -42
- package/dist/modules/bitshares-native/serial/types.js.map +1 -1
- package/dist/modules/bitshares-native/signing_client.d.ts +1 -5
- package/dist/modules/bitshares-native/signing_client.d.ts.map +1 -1
- package/dist/modules/bitshares-native/signing_client.js +49 -11
- package/dist/modules/bitshares-native/signing_client.js.map +1 -1
- package/dist/modules/bitshares-native/subscriptions.d.ts +1 -4
- package/dist/modules/bitshares-native/subscriptions.d.ts.map +1 -1
- package/dist/modules/bitshares-native/subscriptions.js +47 -84
- package/dist/modules/bitshares-native/subscriptions.js.map +1 -1
- package/dist/modules/bitshares-native/transport.d.ts +1 -8
- package/dist/modules/bitshares-native/transport.d.ts.map +1 -1
- package/dist/modules/bitshares-native/transport.js +22 -15
- package/dist/modules/bitshares-native/transport.js.map +1 -1
- package/dist/modules/bitshares-native/tx/builder.d.ts +3 -8
- package/dist/modules/bitshares-native/tx/builder.d.ts.map +1 -1
- package/dist/modules/bitshares-native/tx/builder.js +61 -23
- package/dist/modules/bitshares-native/tx/builder.js.map +1 -1
- package/dist/modules/bitshares-native/tx/tx_cache.d.ts +1 -8
- package/dist/modules/bitshares-native/tx/tx_cache.d.ts.map +1 -1
- package/dist/modules/bitshares-native/tx/tx_cache.js +21 -17
- package/dist/modules/bitshares-native/tx/tx_cache.js.map +1 -1
- package/dist/modules/bitshares_client.d.ts +12 -23
- package/dist/modules/bitshares_client.d.ts.map +1 -1
- package/dist/modules/bitshares_client.js +109 -56
- package/dist/modules/bitshares_client.js.map +1 -1
- package/dist/modules/bot_settings.d.ts +1 -13
- package/dist/modules/bot_settings.d.ts.map +1 -1
- package/dist/modules/bot_settings.js +34 -34
- package/dist/modules/bot_settings.js.map +1 -1
- package/dist/modules/bots_file_lock.d.ts +3 -9
- package/dist/modules/bots_file_lock.d.ts.map +1 -1
- package/dist/modules/bots_file_lock.js +8 -9
- package/dist/modules/bots_file_lock.js.map +1 -1
- package/dist/modules/chain_keys.d.ts +7 -39
- package/dist/modules/chain_keys.d.ts.map +1 -1
- package/dist/modules/chain_keys.js +126 -90
- package/dist/modules/chain_keys.js.map +1 -1
- package/dist/modules/chain_orders.d.ts +46 -52
- package/dist/modules/chain_orders.d.ts.map +1 -1
- package/dist/modules/chain_orders.js +152 -104
- package/dist/modules/chain_orders.js.map +1 -1
- package/dist/modules/config.d.ts +50 -57
- package/dist/modules/config.d.ts.map +1 -1
- package/dist/modules/config.js +28 -24
- package/dist/modules/config.js.map +1 -1
- package/dist/modules/constants.d.ts +492 -494
- package/dist/modules/constants.d.ts.map +1 -1
- package/dist/modules/constants.js +69 -39
- package/dist/modules/constants.js.map +1 -1
- package/dist/modules/cr_planner.d.ts +1 -13
- package/dist/modules/cr_planner.d.ts.map +1 -1
- package/dist/modules/cr_planner.js +28 -28
- package/dist/modules/cr_planner.js.map +1 -1
- package/dist/modules/credential_policy.d.ts +18 -33
- package/dist/modules/credential_policy.d.ts.map +1 -1
- package/dist/modules/credential_policy.js +114 -87
- package/dist/modules/credential_policy.js.map +1 -1
- package/dist/modules/credential_runtime.d.ts +11 -21
- package/dist/modules/credential_runtime.d.ts.map +1 -1
- package/dist/modules/credential_runtime.js +40 -40
- package/dist/modules/credential_runtime.js.map +1 -1
- package/dist/modules/credential_session_cache.d.ts +8 -8
- package/dist/modules/credential_session_cache.d.ts.map +1 -1
- package/dist/modules/credential_session_cache.js +41 -8
- package/dist/modules/credential_session_cache.js.map +1 -1
- package/dist/modules/credit_runtime.d.ts +51 -316
- package/dist/modules/credit_runtime.d.ts.map +1 -1
- package/dist/modules/credit_runtime.js +257 -183
- package/dist/modules/credit_runtime.js.map +1 -1
- package/dist/modules/crypto/browser_provider.js +6 -6
- package/dist/modules/crypto/browser_provider.js.map +1 -1
- package/dist/modules/crypto/index.d.ts.map +1 -1
- package/dist/modules/crypto/index.js +2 -0
- package/dist/modules/crypto/index.js.map +1 -1
- package/dist/modules/crypto/sync.js +3 -3
- package/dist/modules/crypto/sync.js.map +1 -1
- package/dist/modules/dexbot_class.d.ts +262 -81
- package/dist/modules/dexbot_class.d.ts.map +1 -1
- package/dist/modules/dexbot_class.js +156 -123
- package/dist/modules/dexbot_class.js.map +1 -1
- package/dist/modules/dexbot_cow_runtime.d.ts +12 -9
- package/dist/modules/dexbot_cow_runtime.d.ts.map +1 -1
- package/dist/modules/dexbot_cow_runtime.js +144 -63
- package/dist/modules/dexbot_cow_runtime.js.map +1 -1
- package/dist/modules/dexbot_credential_client.d.ts +5 -11
- package/dist/modules/dexbot_credential_client.d.ts.map +1 -1
- package/dist/modules/dexbot_credential_client.js +32 -30
- package/dist/modules/dexbot_credential_client.js.map +1 -1
- package/dist/modules/dexbot_fill_runtime.d.ts +5 -20
- package/dist/modules/dexbot_fill_runtime.d.ts.map +1 -1
- package/dist/modules/dexbot_fill_runtime.js +55 -116
- package/dist/modules/dexbot_fill_runtime.js.map +1 -1
- package/dist/modules/dexbot_maintenance_runtime.d.ts +12 -12
- package/dist/modules/dexbot_maintenance_runtime.d.ts.map +1 -1
- package/dist/modules/dexbot_maintenance_runtime.js +55 -45
- package/dist/modules/dexbot_maintenance_runtime.js.map +1 -1
- package/dist/modules/dexbot_startup_runtime.d.ts +2 -6
- package/dist/modules/dexbot_startup_runtime.d.ts.map +1 -1
- package/dist/modules/dexbot_startup_runtime.js +122 -91
- package/dist/modules/dexbot_startup_runtime.js.map +1 -1
- package/dist/modules/dexbot_state_recovery.d.ts +11 -24
- package/dist/modules/dexbot_state_recovery.d.ts.map +1 -1
- package/dist/modules/dexbot_state_recovery.js +62 -28
- package/dist/modules/dexbot_state_recovery.js.map +1 -1
- package/dist/modules/fund_registry.d.ts +1 -13
- package/dist/modules/fund_registry.d.ts.map +1 -1
- package/dist/modules/fund_registry.js +23 -21
- package/dist/modules/fund_registry.js.map +1 -1
- package/dist/modules/general_settings.d.ts +3 -7
- package/dist/modules/general_settings.d.ts.map +1 -1
- package/dist/modules/general_settings.js +15 -14
- package/dist/modules/general_settings.js.map +1 -1
- package/dist/modules/graceful_shutdown.d.ts +1 -6
- package/dist/modules/graceful_shutdown.d.ts.map +1 -1
- package/dist/modules/graceful_shutdown.js +19 -16
- package/dist/modules/graceful_shutdown.js.map +1 -1
- package/dist/modules/key_store.d.ts.map +1 -1
- package/dist/modules/key_store.js +53 -19
- package/dist/modules/key_store.js.map +1 -1
- package/dist/modules/launcher/bot_supervisor.d.ts +23 -66
- package/dist/modules/launcher/bot_supervisor.d.ts.map +1 -1
- package/dist/modules/launcher/bot_supervisor.js +115 -107
- package/dist/modules/launcher/bot_supervisor.js.map +1 -1
- package/dist/modules/launcher/child_env.d.ts +2 -5
- package/dist/modules/launcher/child_env.d.ts.map +1 -1
- package/dist/modules/launcher/child_env.js +4 -4
- package/dist/modules/launcher/child_env.js.map +1 -1
- package/dist/modules/launcher/credential_bootstrap.d.ts +4 -8
- package/dist/modules/launcher/credential_bootstrap.d.ts.map +1 -1
- package/dist/modules/launcher/credential_bootstrap.js +30 -26
- package/dist/modules/launcher/credential_bootstrap.js.map +1 -1
- package/dist/modules/launcher/credential_daemon.d.ts +8 -15
- package/dist/modules/launcher/credential_daemon.d.ts.map +1 -1
- package/dist/modules/launcher/credential_daemon.js +72 -41
- package/dist/modules/launcher/credential_daemon.js.map +1 -1
- package/dist/modules/launcher/credential_secret.d.ts +1 -4
- package/dist/modules/launcher/credential_secret.d.ts.map +1 -1
- package/dist/modules/launcher/credential_secret.js +36 -4
- package/dist/modules/launcher/credential_secret.js.map +1 -1
- package/dist/modules/launcher/foreign_cred_daemon.d.ts +32 -1
- package/dist/modules/launcher/foreign_cred_daemon.d.ts.map +1 -1
- package/dist/modules/launcher/foreign_cred_daemon.js +25 -28
- package/dist/modules/launcher/foreign_cred_daemon.js.map +1 -1
- package/dist/modules/launcher/headless_password.d.ts +1 -4
- package/dist/modules/launcher/headless_password.d.ts.map +1 -1
- package/dist/modules/launcher/headless_password.js +11 -11
- package/dist/modules/launcher/headless_password.js.map +1 -1
- package/dist/modules/launcher/launch_modes.d.ts +15 -14
- package/dist/modules/launcher/launch_modes.d.ts.map +1 -1
- package/dist/modules/launcher/launch_modes.js +8 -8
- package/dist/modules/launcher/launch_modes.js.map +1 -1
- package/dist/modules/launcher/market_adapter_runtime.d.ts +10 -19
- package/dist/modules/launcher/market_adapter_runtime.d.ts.map +1 -1
- package/dist/modules/launcher/market_adapter_runtime.js +33 -33
- package/dist/modules/launcher/market_adapter_runtime.js.map +1 -1
- package/dist/modules/launcher/market_adapter_watchdog.d.ts +10 -17
- package/dist/modules/launcher/market_adapter_watchdog.d.ts.map +1 -1
- package/dist/modules/launcher/market_adapter_watchdog.js +42 -38
- package/dist/modules/launcher/market_adapter_watchdog.js.map +1 -1
- package/dist/modules/launcher/monolithic_runtime.d.ts +28 -57
- package/dist/modules/launcher/monolithic_runtime.d.ts.map +1 -1
- package/dist/modules/launcher/monolithic_runtime.js +135 -108
- package/dist/modules/launcher/monolithic_runtime.js.map +1 -1
- package/dist/modules/launcher/runtime_entry.d.ts +5 -10
- package/dist/modules/launcher/runtime_entry.d.ts.map +1 -1
- package/dist/modules/launcher/runtime_entry.js +14 -14
- package/dist/modules/launcher/runtime_entry.js.map +1 -1
- package/dist/modules/launcher/status_reporting.d.ts +17 -37
- package/dist/modules/launcher/status_reporting.d.ts.map +1 -1
- package/dist/modules/launcher/status_reporting.js +35 -34
- package/dist/modules/launcher/status_reporting.js.map +1 -1
- package/dist/modules/launcher/supervisor_control.d.ts +1 -4
- package/dist/modules/launcher/supervisor_control.d.ts.map +1 -1
- package/dist/modules/launcher/supervisor_control.js +9 -4
- package/dist/modules/launcher/supervisor_control.js.map +1 -1
- package/dist/modules/logger.d.ts +3 -1
- package/dist/modules/logger.d.ts.map +1 -1
- package/dist/modules/logger.js +38 -28
- package/dist/modules/logger.js.map +1 -1
- package/dist/modules/market_adapter_whitelist.d.ts +2 -10
- package/dist/modules/market_adapter_whitelist.d.ts.map +1 -1
- package/dist/modules/market_adapter_whitelist.js +18 -16
- package/dist/modules/market_adapter_whitelist.js.map +1 -1
- package/dist/modules/node_health_cache.d.ts +2 -12
- package/dist/modules/node_health_cache.d.ts.map +1 -1
- package/dist/modules/node_health_cache.js +24 -24
- package/dist/modules/node_health_cache.js.map +1 -1
- package/dist/modules/node_manager.d.ts +1 -1
- package/dist/modules/node_manager.d.ts.map +1 -1
- package/dist/modules/node_manager.js +44 -38
- package/dist/modules/node_manager.js.map +1 -1
- package/dist/modules/order/accounting.d.ts +12 -12
- package/dist/modules/order/accounting.d.ts.map +1 -1
- package/dist/modules/order/accounting.js +111 -76
- package/dist/modules/order/accounting.js.map +1 -1
- package/dist/modules/order/async_lock.d.ts +1 -2
- package/dist/modules/order/async_lock.d.ts.map +1 -1
- package/dist/modules/order/async_lock.js +4 -4
- package/dist/modules/order/async_lock.js.map +1 -1
- package/dist/modules/order/export.d.ts +8 -14
- package/dist/modules/order/export.d.ts.map +1 -1
- package/dist/modules/order/export.js +77 -42
- package/dist/modules/order/export.js.map +1 -1
- package/dist/modules/order/format.d.ts +17 -22
- package/dist/modules/order/format.d.ts.map +1 -1
- package/dist/modules/order/format.js +25 -31
- package/dist/modules/order/format.js.map +1 -1
- package/dist/modules/order/grid.d.ts +18 -104
- package/dist/modules/order/grid.d.ts.map +1 -1
- package/dist/modules/order/grid.js +346 -212
- package/dist/modules/order/grid.js.map +1 -1
- package/dist/modules/order/grid_reconcile.d.ts +8 -8
- package/dist/modules/order/grid_reconcile.d.ts.map +1 -1
- package/dist/modules/order/grid_reconcile.js +80 -23
- package/dist/modules/order/grid_reconcile.js.map +1 -1
- package/dist/modules/order/grid_reconcile_internal.d.ts +224 -1
- package/dist/modules/order/grid_reconcile_internal.d.ts.map +1 -1
- package/dist/modules/order/grid_reconcile_internal.js +159 -73
- package/dist/modules/order/grid_reconcile_internal.js.map +1 -1
- package/dist/modules/order/index.d.ts +1 -1
- package/dist/modules/order/index.d.ts.map +1 -1
- package/dist/modules/order/index.js +42 -7
- package/dist/modules/order/index.js.map +1 -1
- package/dist/modules/order/logger.d.ts +6 -16
- package/dist/modules/order/logger.d.ts.map +1 -1
- package/dist/modules/order/logger.js +76 -53
- package/dist/modules/order/logger.js.map +1 -1
- package/dist/modules/order/logger_state.d.ts +4 -4
- package/dist/modules/order/logger_state.d.ts.map +1 -1
- package/dist/modules/order/logger_state.js +3 -1
- package/dist/modules/order/logger_state.js.map +1 -1
- package/dist/modules/order/manager.d.ts +160 -37
- package/dist/modules/order/manager.d.ts.map +1 -1
- package/dist/modules/order/manager.js +166 -128
- package/dist/modules/order/manager.js.map +1 -1
- package/dist/modules/order/processed_fill_store.d.ts +6 -10
- package/dist/modules/order/processed_fill_store.d.ts.map +1 -1
- package/dist/modules/order/processed_fill_store.js +10 -9
- package/dist/modules/order/processed_fill_store.js.map +1 -1
- package/dist/modules/order/strategy.d.ts +3 -3
- package/dist/modules/order/strategy.d.ts.map +1 -1
- package/dist/modules/order/strategy.js +29 -27
- package/dist/modules/order/strategy.js.map +1 -1
- package/dist/modules/order/sync_engine.d.ts +9 -19
- package/dist/modules/order/sync_engine.d.ts.map +1 -1
- package/dist/modules/order/sync_engine.js +176 -126
- package/dist/modules/order/sync_engine.js.map +1 -1
- package/dist/modules/order/utils/math.d.ts +55 -85
- package/dist/modules/order/utils/math.d.ts.map +1 -1
- package/dist/modules/order/utils/math.js +155 -88
- package/dist/modules/order/utils/math.js.map +1 -1
- package/dist/modules/order/utils/order.d.ts +27 -72
- package/dist/modules/order/utils/order.d.ts.map +1 -1
- package/dist/modules/order/utils/order.js +144 -105
- package/dist/modules/order/utils/order.js.map +1 -1
- package/dist/modules/order/utils/system.d.ts +103 -45
- package/dist/modules/order/utils/system.d.ts.map +1 -1
- package/dist/modules/order/utils/system.js +271 -150
- package/dist/modules/order/utils/system.js.map +1 -1
- package/dist/modules/order/utils/validate.d.ts +35 -47
- package/dist/modules/order/utils/validate.d.ts.map +1 -1
- package/dist/modules/order/utils/validate.js +233 -116
- package/dist/modules/order/utils/validate.js.map +1 -1
- package/dist/modules/order/working_grid.d.ts +1 -4
- package/dist/modules/order/working_grid.d.ts.map +1 -1
- package/dist/modules/order/working_grid.js +9 -7
- package/dist/modules/order/working_grid.js.map +1 -1
- package/dist/modules/path_api.js +2 -2
- package/dist/modules/path_api.js.map +1 -1
- package/dist/modules/paths.d.ts +50 -56
- package/dist/modules/paths.d.ts.map +1 -1
- package/dist/modules/paths.js +66 -57
- package/dist/modules/paths.js.map +1 -1
- package/dist/modules/process_discovery.d.ts +1 -1
- package/dist/modules/process_discovery.d.ts.map +1 -1
- package/dist/modules/process_discovery.js +7 -7
- package/dist/modules/process_discovery.js.map +1 -1
- package/dist/modules/runtime.d.ts +1 -1
- package/dist/modules/runtime.d.ts.map +1 -1
- package/dist/modules/runtime.js +4 -4
- package/dist/modules/runtime.js.map +1 -1
- package/dist/modules/runtime_settings.d.ts +1 -0
- package/dist/modules/runtime_settings.d.ts.map +1 -1
- package/dist/modules/runtime_settings.js +15 -10
- package/dist/modules/runtime_settings.js.map +1 -1
- package/dist/modules/settings_merge.d.ts +1 -4
- package/dist/modules/settings_merge.d.ts.map +1 -1
- package/dist/modules/settings_merge.js +2 -1
- package/dist/modules/settings_merge.js.map +1 -1
- package/dist/modules/storage/browser_adapter.d.ts +7 -3
- package/dist/modules/storage/browser_adapter.d.ts.map +1 -1
- package/dist/modules/storage/browser_adapter.js +2 -0
- package/dist/modules/storage/browser_adapter.js.map +1 -1
- package/dist/modules/storage/index.d.ts +2 -2
- package/dist/modules/storage/index.d.ts.map +1 -1
- package/dist/modules/storage/index.js +2 -5
- package/dist/modules/storage/index.js.map +1 -1
- package/dist/modules/storage/node_adapter.d.ts +3 -3
- package/dist/modules/storage/node_adapter.d.ts.map +1 -1
- package/dist/modules/storage/node_adapter.js +9 -7
- package/dist/modules/storage/node_adapter.js.map +1 -1
- package/dist/modules/storage/types.d.ts +13 -10
- package/dist/modules/storage/types.d.ts.map +1 -1
- package/dist/modules/types.d.ts +0 -2
- package/dist/modules/types.d.ts.map +1 -1
- package/dist/modules/utils/base58check.d.ts +1 -9
- package/dist/modules/utils/base58check.d.ts.map +1 -1
- package/dist/modules/utils/base58check.js +14 -16
- package/dist/modules/utils/base58check.js.map +1 -1
- package/dist/modules/utils/build_dir.d.ts +2 -5
- package/dist/modules/utils/build_dir.d.ts.map +1 -1
- package/dist/modules/utils/build_dir.js +6 -3
- package/dist/modules/utils/build_dir.js.map +1 -1
- package/dist/modules/utils/errors.d.ts +2 -0
- package/dist/modules/utils/errors.d.ts.map +1 -0
- package/dist/modules/utils/errors.js +12 -0
- package/dist/modules/utils/errors.js.map +1 -0
- package/dist/modules/utils/fs_utils.d.ts +1 -8
- package/dist/modules/utils/fs_utils.d.ts.map +1 -1
- package/dist/modules/utils/fs_utils.js +8 -3
- package/dist/modules/utils/fs_utils.js.map +1 -1
- package/dist/modules/utils/math_utils.d.ts +2 -6
- package/dist/modules/utils/math_utils.d.ts.map +1 -1
- package/dist/modules/utils/math_utils.js +6 -2
- package/dist/modules/utils/math_utils.js.map +1 -1
- package/dist/modules/validate_profiles.d.ts +1 -11
- package/dist/modules/validate_profiles.d.ts.map +1 -1
- package/dist/modules/validate_profiles.js +25 -27
- package/dist/modules/validate_profiles.js.map +1 -1
- package/dist/pm2.d.ts +7 -6
- package/dist/pm2.d.ts.map +1 -1
- package/dist/pm2.js +132 -106
- package/dist/pm2.js.map +1 -1
- package/dist/scripts/analyze-git.d.ts.map +1 -1
- package/dist/scripts/analyze-git.js +15 -11
- package/dist/scripts/analyze-git.js.map +1 -1
- package/dist/scripts/analyze-orders.d.ts +146 -1
- package/dist/scripts/analyze-orders.d.ts.map +1 -1
- package/dist/scripts/analyze-orders.js +81 -105
- package/dist/scripts/analyze-orders.js.map +1 -1
- package/dist/scripts/diagnose-pool-history.d.ts.map +1 -1
- package/dist/scripts/diagnose-pool-history.js +9 -8
- package/dist/scripts/diagnose-pool-history.js.map +1 -1
- package/dist/scripts/divergence-calc.d.ts.map +1 -1
- package/dist/scripts/divergence-calc.js +11 -8
- package/dist/scripts/divergence-calc.js.map +1 -1
- package/dist/scripts/fix-err-message.d.ts +3 -0
- package/dist/scripts/fix-err-message.d.ts.map +1 -0
- package/dist/scripts/fix-err-message.js +198 -0
- package/dist/scripts/fix-err-message.js.map +1 -0
- package/dist/scripts/generate_lp_chart.d.ts +2 -9
- package/dist/scripts/generate_lp_chart.d.ts.map +1 -1
- package/dist/scripts/generate_lp_chart.js +14 -10
- package/dist/scripts/generate_lp_chart.js.map +1 -1
- package/dist/scripts/generate_mainnet_corpus_report.js +4 -4
- package/dist/scripts/generate_mainnet_corpus_report.js.map +1 -1
- package/dist/scripts/generate_market_adapter_whitelist.d.ts +17 -1
- package/dist/scripts/generate_market_adapter_whitelist.d.ts.map +1 -1
- package/dist/scripts/generate_market_adapter_whitelist.js +23 -20
- package/dist/scripts/generate_market_adapter_whitelist.js.map +1 -1
- package/dist/scripts/migrate_bot_keys.d.ts +1 -4
- package/dist/scripts/migrate_bot_keys.d.ts.map +1 -1
- package/dist/scripts/migrate_bot_keys.js +48 -124
- package/dist/scripts/migrate_bot_keys.js.map +1 -1
- package/dist/scripts/native_release_gates.d.ts.map +1 -1
- package/dist/scripts/native_release_gates.js +18 -14
- package/dist/scripts/native_release_gates.js.map +1 -1
- package/dist/scripts/print_grid.js +1 -1
- package/dist/scripts/print_grid.js.map +1 -1
- package/dist/scripts/run-tests.js +1 -0
- package/dist/scripts/run-tests.js.map +1 -1
- package/dist/scripts/runner.d.ts +1 -11
- package/dist/scripts/runner.d.ts.map +1 -1
- package/dist/scripts/runner.js +21 -19
- package/dist/scripts/runner.js.map +1 -1
- package/dist/scripts/test-credit-renewal.d.ts.map +1 -1
- package/dist/scripts/test-credit-renewal.js +2 -1
- package/dist/scripts/test-credit-renewal.js.map +1 -1
- package/dist/scripts/update.d.ts.map +1 -1
- package/dist/scripts/update.js +85 -79
- package/dist/scripts/update.js.map +1 -1
- package/dist/scripts/validate_bots.js +2 -2
- package/dist/scripts/validate_bots.js.map +1 -1
- package/dist/unlock.d.ts +4 -17
- package/dist/unlock.d.ts.map +1 -1
- package/dist/unlock.js +141 -108
- package/dist/unlock.js.map +1 -1
- package/package.json +1 -1
- package/dist/analysis/ama_fitting/analyze_ama_price_changes.d.ts +0 -3
- package/dist/analysis/ama_fitting/analyze_ama_price_changes.d.ts.map +0 -1
- package/dist/analysis/ama_fitting/analyze_ama_price_changes.js +0 -149
- package/dist/analysis/ama_fitting/analyze_ama_price_changes.js.map +0 -1
- package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.d.ts +0 -3
- package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.d.ts.map +0 -1
- package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.js +0 -387
- package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.js.map +0 -1
- package/dist/analysis/ama_fitting/calibrate_convergence_er.d.ts +0 -3
- package/dist/analysis/ama_fitting/calibrate_convergence_er.d.ts.map +0 -1
- package/dist/analysis/ama_fitting/calibrate_convergence_er.js +0 -200
- package/dist/analysis/ama_fitting/calibrate_convergence_er.js.map +0 -1
- package/dist/analysis/ama_fitting/fetch_lp_candles.d.ts +0 -3
- package/dist/analysis/ama_fitting/fetch_lp_candles.d.ts.map +0 -1
- package/dist/analysis/ama_fitting/fetch_lp_candles.js +0 -212
- package/dist/analysis/ama_fitting/fetch_lp_candles.js.map +0 -1
- package/dist/analysis/ama_fitting/generate_unified_comparison_chart.d.ts +0 -31
- package/dist/analysis/ama_fitting/generate_unified_comparison_chart.d.ts.map +0 -1
- package/dist/analysis/ama_fitting/generate_unified_comparison_chart.js +0 -249
- package/dist/analysis/ama_fitting/generate_unified_comparison_chart.js.map +0 -1
- package/dist/analysis/ama_fitting/optimizer_high_resolution.d.ts +0 -2
- package/dist/analysis/ama_fitting/optimizer_high_resolution.d.ts.map +0 -1
- package/dist/analysis/ama_fitting/optimizer_high_resolution.js +0 -782
- package/dist/analysis/ama_fitting/optimizer_high_resolution.js.map +0 -1
- package/dist/analysis/analyze_derivatives.d.ts +0 -95
- package/dist/analysis/analyze_derivatives.d.ts.map +0 -1
- package/dist/analysis/analyze_derivatives.js +0 -295
- package/dist/analysis/analyze_derivatives.js.map +0 -1
- package/dist/analysis/analyze_dynamic_weight.d.ts +0 -14
- package/dist/analysis/analyze_dynamic_weight.d.ts.map +0 -1
- package/dist/analysis/analyze_dynamic_weight.js +0 -207
- package/dist/analysis/analyze_dynamic_weight.js.map +0 -1
- package/dist/analysis/analyze_kalman.d.ts +0 -13
- package/dist/analysis/analyze_kalman.d.ts.map +0 -1
- package/dist/analysis/analyze_kalman.js +0 -123
- package/dist/analysis/analyze_kalman.js.map +0 -1
- package/dist/analysis/analyze_regime.d.ts +0 -20
- package/dist/analysis/analyze_regime.d.ts.map +0 -1
- package/dist/analysis/analyze_regime.js +0 -139
- package/dist/analysis/analyze_regime.js.map +0 -1
- package/dist/analysis/analyze_regime_windows.d.ts +0 -19
- package/dist/analysis/analyze_regime_windows.d.ts.map +0 -1
- package/dist/analysis/analyze_regime_windows.js +0 -413
- package/dist/analysis/analyze_regime_windows.js.map +0 -1
- package/dist/analysis/analyze_risk_profile.d.ts +0 -3
- package/dist/analysis/analyze_risk_profile.d.ts.map +0 -1
- package/dist/analysis/analyze_risk_profile.js +0 -159
- package/dist/analysis/analyze_risk_profile.js.map +0 -1
- package/dist/analysis/analyze_trade_heatmap.d.ts +0 -3
- package/dist/analysis/analyze_trade_heatmap.d.ts.map +0 -1
- package/dist/analysis/analyze_trade_heatmap.js +0 -367
- package/dist/analysis/analyze_trade_heatmap.js.map +0 -1
- package/dist/analysis/analyze_volatility.d.ts +0 -22
- package/dist/analysis/analyze_volatility.d.ts.map +0 -1
- package/dist/analysis/analyze_volatility.js +0 -172
- package/dist/analysis/analyze_volatility.js.map +0 -1
- package/dist/analysis/bot_fitting/backtest_ama_sweep.d.ts +0 -99
- package/dist/analysis/bot_fitting/backtest_ama_sweep.d.ts.map +0 -1
- package/dist/analysis/bot_fitting/backtest_ama_sweep.js +0 -804
- package/dist/analysis/bot_fitting/backtest_ama_sweep.js.map +0 -1
- package/dist/analysis/bot_fitting/backtest_bot_fitting.d.ts +0 -2
- package/dist/analysis/bot_fitting/backtest_bot_fitting.d.ts.map +0 -1
- package/dist/analysis/bot_fitting/backtest_bot_fitting.js +0 -347
- package/dist/analysis/bot_fitting/backtest_bot_fitting.js.map +0 -1
- package/dist/analysis/bot_fitting/shared_utils.d.ts +0 -15
- package/dist/analysis/bot_fitting/shared_utils.d.ts.map +0 -1
- package/dist/analysis/bot_fitting/shared_utils.js +0 -48
- package/dist/analysis/bot_fitting/shared_utils.js.map +0 -1
- package/dist/analysis/bot_key_utils.d.ts +0 -22
- package/dist/analysis/bot_key_utils.d.ts.map +0 -1
- package/dist/analysis/bot_key_utils.js +0 -162
- package/dist/analysis/bot_key_utils.js.map +0 -1
- package/dist/analysis/bot_usage/discover_bot_accounts.d.ts +0 -3
- package/dist/analysis/bot_usage/discover_bot_accounts.d.ts.map +0 -1
- package/dist/analysis/bot_usage/discover_bot_accounts.js +0 -498
- package/dist/analysis/bot_usage/discover_bot_accounts.js.map +0 -1
- package/dist/analysis/bot_usage/kibana_bot_queries.d.ts +0 -546
- package/dist/analysis/bot_usage/kibana_bot_queries.d.ts.map +0 -1
- package/dist/analysis/bot_usage/kibana_bot_queries.js +0 -427
- package/dist/analysis/bot_usage/kibana_bot_queries.js.map +0 -1
- package/dist/analysis/derivative_chart_generator.d.ts +0 -18
- package/dist/analysis/derivative_chart_generator.d.ts.map +0 -1
- package/dist/analysis/derivative_chart_generator.js +0 -896
- package/dist/analysis/derivative_chart_generator.js.map +0 -1
- package/dist/analysis/price_sources.d.ts +0 -34
- package/dist/analysis/price_sources.d.ts.map +0 -1
- package/dist/analysis/price_sources.js +0 -103
- package/dist/analysis/price_sources.js.map +0 -1
- package/dist/analysis/trade_profitability.d.ts +0 -115
- package/dist/analysis/trade_profitability.d.ts.map +0 -1
- package/dist/analysis/trade_profitability.js +0 -1247
- package/dist/analysis/trade_profitability.js.map +0 -1
- package/dist/analysis/tradingview/analyze_tradingview.d.ts +0 -36
- package/dist/analysis/tradingview/analyze_tradingview.d.ts.map +0 -1
- package/dist/analysis/tradingview/analyze_tradingview.js +0 -172
- package/dist/analysis/tradingview/analyze_tradingview.js.map +0 -1
- package/dist/analysis/trend_detection/derivative_analyzer.d.ts +0 -250
- package/dist/analysis/trend_detection/derivative_analyzer.d.ts.map +0 -1
- package/dist/analysis/trend_detection/derivative_analyzer.js +0 -903
- package/dist/analysis/trend_detection/derivative_analyzer.js.map +0 -1
- package/dist/analysis/trend_detection/dynamic_weight_chart_generator.d.ts +0 -6
- package/dist/analysis/trend_detection/dynamic_weight_chart_generator.d.ts.map +0 -1
- package/dist/analysis/trend_detection/dynamic_weight_chart_generator.js +0 -1450
- package/dist/analysis/trend_detection/dynamic_weight_chart_generator.js.map +0 -1
- package/dist/analysis/trend_detection/kalman_chart_generator.d.ts +0 -6
- package/dist/analysis/trend_detection/kalman_chart_generator.d.ts.map +0 -1
- package/dist/analysis/trend_detection/kalman_chart_generator.js +0 -408
- package/dist/analysis/trend_detection/kalman_chart_generator.js.map +0 -1
- package/dist/analysis/trend_detection/regime_chart_generator.d.ts +0 -6
- package/dist/analysis/trend_detection/regime_chart_generator.d.ts.map +0 -1
- package/dist/analysis/trend_detection/regime_chart_generator.js +0 -345
- package/dist/analysis/trend_detection/regime_chart_generator.js.map +0 -1
- package/dist/analysis/trend_detection/tests/test_kalman_trend.d.ts +0 -2
- package/dist/analysis/trend_detection/tests/test_kalman_trend.d.ts.map +0 -1
- package/dist/analysis/trend_detection/tests/test_kalman_trend.js +0 -130
- package/dist/analysis/trend_detection/tests/test_kalman_trend.js.map +0 -1
- package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.d.ts +0 -2
- package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.d.ts.map +0 -1
- package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.js +0 -38
- package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.js.map +0 -1
- package/dist/analysis/trend_detection/volatility_chart_generator.d.ts +0 -6
- package/dist/analysis/trend_detection/volatility_chart_generator.d.ts.map +0 -1
- package/dist/analysis/trend_detection/volatility_chart_generator.js +0 -732
- package/dist/analysis/trend_detection/volatility_chart_generator.js.map +0 -1
|
@@ -89,33 +89,71 @@
|
|
|
89
89
|
*
|
|
90
90
|
* ===============================================================================
|
|
91
91
|
*/
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
93
|
+
if (k2 === undefined) k2 = k;
|
|
94
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
95
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
96
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
97
|
+
}
|
|
98
|
+
Object.defineProperty(o, k2, desc);
|
|
99
|
+
}) : (function(o, m, k, k2) {
|
|
100
|
+
if (k2 === undefined) k2 = k;
|
|
101
|
+
o[k2] = m[k];
|
|
102
|
+
}));
|
|
103
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
104
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
105
|
+
}) : function(o, v) {
|
|
106
|
+
o["default"] = v;
|
|
107
|
+
});
|
|
108
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
109
|
+
var ownKeys = function(o) {
|
|
110
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
111
|
+
var ar = [];
|
|
112
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
113
|
+
return ar;
|
|
114
|
+
};
|
|
115
|
+
return ownKeys(o);
|
|
116
|
+
};
|
|
117
|
+
return function (mod) {
|
|
118
|
+
if (mod && mod.__esModule) return mod;
|
|
119
|
+
var result = {};
|
|
120
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
121
|
+
__setModuleDefault(result, mod);
|
|
122
|
+
return result;
|
|
123
|
+
};
|
|
124
|
+
})();
|
|
125
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
126
|
+
const constants_1 = require("../constants");
|
|
127
|
+
const Format = __importStar(require("./format"));
|
|
128
|
+
const system_1 = require("./utils/system");
|
|
129
|
+
const chainOrders = __importStar(require("../chain_orders"));
|
|
130
|
+
const client = __importStar(require("../bitshares_client"));
|
|
131
|
+
const { BitShares } = client;
|
|
132
|
+
const constants_2 = require("../constants");
|
|
94
133
|
const { toFiniteNumber } = Format;
|
|
95
|
-
const
|
|
96
|
-
const
|
|
97
|
-
const
|
|
98
|
-
const
|
|
99
|
-
const chainOrders = require('../chain_orders');
|
|
134
|
+
const math_1 = require("./utils/math");
|
|
135
|
+
const order_1 = require("./utils/order");
|
|
136
|
+
const processed_fill_store_1 = require("./processed_fill_store");
|
|
137
|
+
const errors_1 = require("../utils/errors");
|
|
100
138
|
function describeNearestAdoptionCandidates(mgr, chainOrder, precision, calcTolerance, matchedGridOrderIds = null) {
|
|
101
139
|
if (!mgr?.orders || !chainOrder || typeof precision !== 'number')
|
|
102
140
|
return 'candidate diagnostics unavailable';
|
|
103
141
|
const chainPrice = toFiniteNumber(chainOrder.price);
|
|
104
142
|
const chainSize = toFiniteNumber(chainOrder.size);
|
|
105
|
-
const chainInt = floatToBlockchainInt(chainSize, precision);
|
|
143
|
+
const chainInt = (0, math_1.floatToBlockchainInt)(chainSize, precision);
|
|
106
144
|
const candidates = [];
|
|
107
145
|
for (const slot of mgr.orders.values()) {
|
|
108
|
-
if (!slot || ![ORDER_STATES.ACTIVE, ORDER_STATES.PARTIAL, ORDER_STATES.VIRTUAL].includes(slot.state))
|
|
146
|
+
if (!slot || ![constants_1.ORDER_STATES.ACTIVE, constants_1.ORDER_STATES.PARTIAL, constants_1.ORDER_STATES.VIRTUAL].includes(slot.state))
|
|
109
147
|
continue;
|
|
110
148
|
const typeMatch = slot.type === chainOrder.type;
|
|
111
|
-
const spreadMatch = slot.type === ORDER_TYPES.SPREAD;
|
|
149
|
+
const spreadMatch = slot.type === constants_1.ORDER_TYPES.SPREAD;
|
|
112
150
|
if (!typeMatch && !spreadMatch)
|
|
113
151
|
continue;
|
|
114
152
|
const price = toFiniteNumber(slot.price);
|
|
115
153
|
const priceDiff = Math.abs(price - chainPrice);
|
|
116
154
|
const effectiveSize = slot.size > 0 ? toFiniteNumber(slot.size) : chainSize;
|
|
117
155
|
const tolerance = calcTolerance(price, effectiveSize, chainOrder.type) || 0;
|
|
118
|
-
const gridInt = floatToBlockchainInt(toFiniteNumber(slot.size), precision);
|
|
156
|
+
const gridInt = (0, math_1.floatToBlockchainInt)(toFiniteNumber(slot.size), precision);
|
|
119
157
|
const sizeDiffInt = chainInt - gridInt;
|
|
120
158
|
const hasOrderId = Boolean(slot.orderId);
|
|
121
159
|
const alreadyMatched = Boolean(matchedGridOrderIds?.has?.(slot.id));
|
|
@@ -196,17 +234,17 @@ function computeOutOfToleranceDriftTag(mgr, chainOrder, calcToleranceFn) {
|
|
|
196
234
|
return null;
|
|
197
235
|
const chainSize = toFiniteNumber(chainOrder.size);
|
|
198
236
|
const orderType = chainOrder.type;
|
|
199
|
-
if (orderType !== ORDER_TYPES.BUY && orderType !== ORDER_TYPES.SELL)
|
|
237
|
+
if (orderType !== constants_1.ORDER_TYPES.BUY && orderType !== constants_1.ORDER_TYPES.SELL)
|
|
200
238
|
return null;
|
|
201
239
|
let bestDrift = null;
|
|
202
240
|
for (const slot of mgr.orders.values()) {
|
|
203
241
|
if (!slot)
|
|
204
242
|
continue;
|
|
205
|
-
if (slot.type !== orderType && slot.type !== ORDER_TYPES.SPREAD)
|
|
243
|
+
if (slot.type !== orderType && slot.type !== constants_1.ORDER_TYPES.SPREAD)
|
|
206
244
|
continue;
|
|
207
245
|
if (slot.orderId)
|
|
208
246
|
continue;
|
|
209
|
-
if (![ORDER_STATES.ACTIVE, ORDER_STATES.PARTIAL, ORDER_STATES.VIRTUAL].includes(slot.state))
|
|
247
|
+
if (![constants_1.ORDER_STATES.ACTIVE, constants_1.ORDER_STATES.PARTIAL, constants_1.ORDER_STATES.VIRTUAL].includes(slot.state))
|
|
210
248
|
continue;
|
|
211
249
|
const slotPrice = toFiniteNumber(slot.price);
|
|
212
250
|
if (!Number.isFinite(slotPrice))
|
|
@@ -325,9 +363,8 @@ class SyncEngine {
|
|
|
325
363
|
return this.syncFromOpenOrders(chainOrders, options);
|
|
326
364
|
});
|
|
327
365
|
}
|
|
328
|
-
|
|
329
|
-
const
|
|
330
|
-
const forceReleaseMs = TIMING.SYNC_LOCK_FORCE_RELEASE_AGE_MS;
|
|
366
|
+
const timeoutMs = constants_1.TIMING.SYNC_LOCK_TIMEOUT_MS;
|
|
367
|
+
const forceReleaseMs = constants_1.TIMING.SYNC_LOCK_FORCE_RELEASE_AGE_MS;
|
|
331
368
|
let timedOut = false;
|
|
332
369
|
let timeoutHandle;
|
|
333
370
|
let forceReleaseHandle;
|
|
@@ -373,7 +410,7 @@ class SyncEngine {
|
|
|
373
410
|
? innerResult.unmatchedChainOrders.length
|
|
374
411
|
: 0;
|
|
375
412
|
mgr._lastUnmatchedChainOrders = unmatchedCount > 0
|
|
376
|
-
? innerResult.unmatchedChainOrders.map(order => ({ ...order }))
|
|
413
|
+
? innerResult.unmatchedChainOrders.map((order) => ({ ...order }))
|
|
377
414
|
: [];
|
|
378
415
|
mgr._lastUnmatchedChainOrdersAt = unmatchedCount > 0 ? Date.now() : 0;
|
|
379
416
|
mgr.logger?.log?.(`[SYNC] Synchronization complete: ${innerResult.filledOrders.length} filled, ` +
|
|
@@ -395,7 +432,7 @@ class SyncEngine {
|
|
|
395
432
|
catch (err) {
|
|
396
433
|
clearTimeout(timeoutHandle);
|
|
397
434
|
clearTimeout(forceReleaseHandle);
|
|
398
|
-
if (err
|
|
435
|
+
if ((0, errors_1.getErrorMessage)(err)?.includes('timed out')) {
|
|
399
436
|
// Gap 3: Schedule a force-release of the sync lock if the inner
|
|
400
437
|
// operation doesn't complete within the grace window. This prevents
|
|
401
438
|
// a single stuck sync from permanently blocking all subsequent syncs.
|
|
@@ -412,7 +449,7 @@ class SyncEngine {
|
|
|
412
449
|
}
|
|
413
450
|
mgr.logger?.log?.('[SYNC] Lock may be held by orphan after timeout; will release when inner work completes', 'warn');
|
|
414
451
|
}
|
|
415
|
-
mgr.logger?.log?.(`Sync lock error: ${err
|
|
452
|
+
mgr.logger?.log?.(`Sync lock error: ${(0, errors_1.getErrorMessage)(err)}`, 'error');
|
|
416
453
|
throw err;
|
|
417
454
|
}
|
|
418
455
|
}
|
|
@@ -476,7 +513,7 @@ class SyncEngine {
|
|
|
476
513
|
const rawChainOrders = new Map();
|
|
477
514
|
for (const order of chainOrders) {
|
|
478
515
|
try {
|
|
479
|
-
const parsed = parseChainOrder(order, mgr.assets);
|
|
516
|
+
const parsed = (0, order_1.parseChainOrder)(order, mgr.assets);
|
|
480
517
|
if (!parsed)
|
|
481
518
|
continue;
|
|
482
519
|
// Store parsed (converted) data in parsedChainOrders
|
|
@@ -485,10 +522,11 @@ class SyncEngine {
|
|
|
485
522
|
rawChainOrders.set(order.id, order);
|
|
486
523
|
}
|
|
487
524
|
catch (e) {
|
|
488
|
-
mgr.logger?.log?.(`Warning: Error parsing chain order ${order.id}: ${e
|
|
525
|
+
mgr.logger?.log?.(`Warning: Error parsing chain order ${order.id}: ${(0, errors_1.getErrorMessage)(e)}`, 'warn');
|
|
489
526
|
continue;
|
|
490
527
|
}
|
|
491
528
|
}
|
|
529
|
+
mgr.logger?.log?.(`[SYNC] Starting synchronization from ${parsedChainOrders.size} blockchain orders...`, 'info');
|
|
492
530
|
// Collect all order IDs that might be modified during reconciliation
|
|
493
531
|
// Lock them to prevent concurrent modifications from createOrder/cancelOrder
|
|
494
532
|
const orderIdsToLock = new Set();
|
|
@@ -499,7 +537,7 @@ class SyncEngine {
|
|
|
499
537
|
orderIdsToLock.add(gridOrder.orderId);
|
|
500
538
|
}
|
|
501
539
|
// Also lock ACTIVE/PARTIAL orders that might transition to/from SPREAD
|
|
502
|
-
if (gridOrder.state === ORDER_STATES.ACTIVE || gridOrder.state === ORDER_STATES.PARTIAL) {
|
|
540
|
+
if (gridOrder.state === constants_1.ORDER_STATES.ACTIVE || gridOrder.state === constants_1.ORDER_STATES.PARTIAL) {
|
|
503
541
|
orderIdsToLock.add(gridOrder.id);
|
|
504
542
|
}
|
|
505
543
|
}
|
|
@@ -527,9 +565,9 @@ class SyncEngine {
|
|
|
527
565
|
// Lock orders before reconciliation
|
|
528
566
|
mgr.lockOrders(orderIdsToLockFinal);
|
|
529
567
|
// Keep lock leases alive during long reconciliation runs.
|
|
530
|
-
const refreshEveryMs = Math.max(TIMING.LOCK_REFRESH_MIN_MS, Math.floor(TIMING.LOCK_TIMEOUT_MS / 3));
|
|
568
|
+
const refreshEveryMs = Math.max(constants_1.TIMING.LOCK_REFRESH_MIN_MS, Math.floor(constants_1.TIMING.LOCK_TIMEOUT_MS / 3));
|
|
531
569
|
const refreshLockLeases = () => {
|
|
532
|
-
const expiresAt = Date.now() + TIMING.LOCK_TIMEOUT_MS;
|
|
570
|
+
const expiresAt = Date.now() + constants_1.TIMING.LOCK_TIMEOUT_MS;
|
|
533
571
|
for (const id of orderIdsToLockFinal) {
|
|
534
572
|
mgr.shadowOrderIds.set(id, expiresAt);
|
|
535
573
|
}
|
|
@@ -630,7 +668,7 @@ class SyncEngine {
|
|
|
630
668
|
continue;
|
|
631
669
|
}
|
|
632
670
|
else {
|
|
633
|
-
const priceTolerance = calculatePriceTolerance(gridOrder.price, gridOrder.size, gridOrder.type, mgr.assets);
|
|
671
|
+
const priceTolerance = (0, math_1.calculatePriceTolerance)(gridOrder.price, gridOrder.size, gridOrder.type, mgr.assets);
|
|
634
672
|
const normalizedTolerance = (priceTolerance === null) ? 0 : priceTolerance;
|
|
635
673
|
// Null tolerance is strict mode (0).
|
|
636
674
|
if (Math.abs(chainOrder.price - gridOrder.price) > normalizedTolerance) {
|
|
@@ -645,14 +683,14 @@ class SyncEngine {
|
|
|
645
683
|
}
|
|
646
684
|
}
|
|
647
685
|
// Chain side determines which precision applies to for_sale.
|
|
648
|
-
const precision = (chainOrder.type === ORDER_TYPES.SELL) ? assetAPrecision : assetBPrecision;
|
|
649
|
-
const currentSizeInt = floatToBlockchainInt(gridOrder.size, precision);
|
|
650
|
-
const chainSizeInt = floatToBlockchainInt(chainOrder.size, precision);
|
|
686
|
+
const precision = (chainOrder.type === constants_1.ORDER_TYPES.SELL) ? assetAPrecision : assetBPrecision;
|
|
687
|
+
const currentSizeInt = (0, math_1.floatToBlockchainInt)(gridOrder.size, precision);
|
|
688
|
+
const chainSizeInt = (0, math_1.floatToBlockchainInt)(chainOrder.size, precision);
|
|
651
689
|
if (currentSizeInt !== chainSizeInt) {
|
|
652
|
-
const newSize = blockchainToFloat(chainSizeInt, precision
|
|
653
|
-
const newInt = floatToBlockchainInt(newSize, precision);
|
|
690
|
+
const newSize = (0, math_1.blockchainToFloat)(chainSizeInt, precision);
|
|
691
|
+
const newInt = (0, math_1.floatToBlockchainInt)(newSize, precision);
|
|
654
692
|
if (newInt > 0) {
|
|
655
|
-
const nextOrder = await applyChainSizeToGridOrder(mgr, updatedOrder, newSize);
|
|
693
|
+
const nextOrder = await (0, order_1.applyChainSizeToGridOrder)(mgr, updatedOrder, newSize);
|
|
656
694
|
if (nextOrder) {
|
|
657
695
|
// Merge updated state if size actually changed
|
|
658
696
|
updatedOrder = { ...updatedOrder, ...nextOrder };
|
|
@@ -662,19 +700,19 @@ class SyncEngine {
|
|
|
662
700
|
// downtime fills detected during open-orders sync must also update
|
|
663
701
|
// state so that checkWindowDust can identify dust orders.
|
|
664
702
|
updatedOrder.state = (chainSizeInt < currentSizeInt)
|
|
665
|
-
? ORDER_STATES.PARTIAL
|
|
703
|
+
? constants_1.ORDER_STATES.PARTIAL
|
|
666
704
|
: gridOrder.state;
|
|
667
705
|
await mgr._applyOrderUpdate(updatedOrder, 'sync-pass1-partial', { skipAccounting: skipAccounting, fee: 0 });
|
|
668
706
|
}
|
|
669
707
|
else {
|
|
670
|
-
const spreadOrder = convertToSpreadPlaceholder(gridOrder);
|
|
708
|
+
const spreadOrder = (0, order_1.convertToSpreadPlaceholder)(gridOrder);
|
|
671
709
|
await mgr._applyOrderUpdate(spreadOrder, 'sync-pass1-filled', { skipAccounting: skipAccounting, fee: 0 });
|
|
672
710
|
filledOrders.push(spreadOrder);
|
|
673
711
|
updatedOrders.push(spreadOrder);
|
|
674
712
|
}
|
|
675
713
|
}
|
|
676
714
|
}
|
|
677
|
-
else if (gridOrder.state === ORDER_STATES.ACTIVE || gridOrder.state === ORDER_STATES.PARTIAL) {
|
|
715
|
+
else if (gridOrder.state === constants_1.ORDER_STATES.ACTIVE || gridOrder.state === constants_1.ORDER_STATES.PARTIAL) {
|
|
678
716
|
// Don't virtualize orders placed by a successful COW commit.
|
|
679
717
|
// The chain snapshot may lag behind confirmed transactions,
|
|
680
718
|
// causing correctly-placed orders to appear missing. _committedOrderIds
|
|
@@ -710,14 +748,14 @@ class SyncEngine {
|
|
|
710
748
|
// this open-orders sync.
|
|
711
749
|
if (mgr._committedOrderIds?.has(gridOrder.orderId)) {
|
|
712
750
|
const commitAge = Date.now() - (mgr._committedOrderIdsBuiltAt || 0);
|
|
713
|
-
const isGhost = gridOrder.size <= 0 && gridOrder.state === ORDER_STATES.PARTIAL;
|
|
714
|
-
if (!isGhost && commitAge < TIMING.SYNC_LOCK_TIMEOUT_MS) {
|
|
751
|
+
const isGhost = gridOrder.size <= 0 && gridOrder.state === constants_1.ORDER_STATES.PARTIAL;
|
|
752
|
+
if (!isGhost && commitAge < constants_1.TIMING.SYNC_LOCK_TIMEOUT_MS) {
|
|
715
753
|
continue;
|
|
716
754
|
}
|
|
717
755
|
}
|
|
718
756
|
const currentGridOrder = mgr.orders.get(gridOrder.id) || gridOrder;
|
|
719
757
|
const hadOrderId = Boolean(currentGridOrder?.orderId);
|
|
720
|
-
const spreadOrder = convertToSpreadPlaceholder(currentGridOrder);
|
|
758
|
+
const spreadOrder = (0, order_1.convertToSpreadPlaceholder)(currentGridOrder);
|
|
721
759
|
await mgr._applyOrderUpdate(spreadOrder, 'sync-cleanup-phantom', { skipAccounting: skipAccounting, fee: 0 });
|
|
722
760
|
// Only genuine disappearances (had orderId) count as fills.
|
|
723
761
|
if (hadOrderId) {
|
|
@@ -736,11 +774,15 @@ class SyncEngine {
|
|
|
736
774
|
// this orphan is a stale duplicate — skip adoption so the reconcile
|
|
737
775
|
// layer cancels it. Size is irrelevant; any duplicate violates the
|
|
738
776
|
// invariant. Check BEFORE any adoption attempt, including the first
|
|
739
|
-
// match (line
|
|
777
|
+
// match (line 684), because a VIRTUAL slot at a nearby price can
|
|
740
778
|
// otherwise silently adopt the orphan before the duplicate guard runs.
|
|
741
|
-
const duplicatePriceOrder = Array.from(mgr.orders.values()).find((o) =>
|
|
742
|
-
|
|
743
|
-
|
|
779
|
+
const duplicatePriceOrder = Array.from(mgr.orders.values()).find((o) => {
|
|
780
|
+
const co = chainOrder;
|
|
781
|
+
return o.type === co.type &&
|
|
782
|
+
(0, order_1.isOrderPlaced)(o) &&
|
|
783
|
+
co != null &&
|
|
784
|
+
Math.abs(o.price - co.price) <= math_1.calculatePriceTolerance(Math.min(o.price, co.price), Math.max(o.size, co.size), o.type, mgr.assets);
|
|
785
|
+
});
|
|
744
786
|
if (duplicatePriceOrder) {
|
|
745
787
|
unmatchedChainOrders.push({
|
|
746
788
|
chainOrderId,
|
|
@@ -768,10 +810,10 @@ class SyncEngine {
|
|
|
768
810
|
});
|
|
769
811
|
continue;
|
|
770
812
|
}
|
|
771
|
-
const match = findMatchingGridOrderByOpenOrder({ orderId: chainOrderId, type: chainOrder.type, price: chainOrder.price, size: chainOrder.size }, {
|
|
813
|
+
const match = (0, order_1.findMatchingGridOrderByOpenOrder)({ orderId: chainOrderId, type: chainOrder.type, price: chainOrder.price, size: chainOrder.size }, {
|
|
772
814
|
orders: mgr.orders,
|
|
773
815
|
assets: mgr.assets,
|
|
774
|
-
calcToleranceFn: (p, s, t) => calculatePriceTolerance(p, s, t, mgr.assets),
|
|
816
|
+
calcToleranceFn: (p, s, t) => (0, math_1.calculatePriceTolerance)(p, s, t, mgr.assets),
|
|
775
817
|
logger: mgr.logger,
|
|
776
818
|
allowSmallerChainSize: true,
|
|
777
819
|
requireAvailableSlot: true,
|
|
@@ -779,10 +821,10 @@ class SyncEngine {
|
|
|
779
821
|
});
|
|
780
822
|
if (match && !matchedGridOrderIds.has(match.id)) {
|
|
781
823
|
let bestMatch = { ...match };
|
|
782
|
-
const wasVirtual = match.state === ORDER_STATES.VIRTUAL;
|
|
783
|
-
const wasPartial = match.state === ORDER_STATES.PARTIAL;
|
|
824
|
+
const wasVirtual = match.state === constants_1.ORDER_STATES.VIRTUAL;
|
|
825
|
+
const wasPartial = match.state === constants_1.ORDER_STATES.PARTIAL;
|
|
784
826
|
bestMatch.orderId = chainOrderId;
|
|
785
|
-
bestMatch.state = wasVirtual ? ORDER_STATES.ACTIVE : match.state;
|
|
827
|
+
bestMatch.state = wasVirtual ? constants_1.ORDER_STATES.ACTIVE : match.state;
|
|
786
828
|
const bestMatchRaw = rawChainOrders.get(chainOrderId);
|
|
787
829
|
bestMatch.rawOnChain = bestMatchRaw
|
|
788
830
|
? { ...bestMatchRaw, fetchedAt: Date.now() }
|
|
@@ -797,43 +839,43 @@ class SyncEngine {
|
|
|
797
839
|
// deletes btsFeeState when nextDeferred is 0, so setting it to 0 here
|
|
798
840
|
// would be an unnecessary set-then-delete cycle.
|
|
799
841
|
if (bestMatch.rawOnChain) {
|
|
800
|
-
const rawDeferredFee = toFiniteNumber(bestMatch.rawOnChain.deferred_fee,
|
|
842
|
+
const rawDeferredFee = toFiniteNumber(bestMatch.rawOnChain.deferred_fee, undefined);
|
|
801
843
|
if (rawDeferredFee !== null && rawDeferredFee > 0) {
|
|
802
|
-
bestMatch.btsFeeState = { deferredFee: blockchainToFloat(rawDeferredFee, BTS_PRECISION) };
|
|
844
|
+
bestMatch.btsFeeState = { deferredFee: (0, math_1.blockchainToFloat)(rawDeferredFee, constants_1.BTS_PRECISION) };
|
|
803
845
|
}
|
|
804
846
|
else if (wasVirtual && rawDeferredFee !== null && rawDeferredFee <= 0 && bestMatch.rawOnChain.for_sale > 0) {
|
|
805
847
|
// Core zeros deferred_fee on every fill (fill_limit_order db_market.cpp:1895).
|
|
806
848
|
// If deferred_fee is 0 while for_sale > 0, the order was partially filled.
|
|
807
|
-
bestMatch.state = ORDER_STATES.PARTIAL;
|
|
849
|
+
bestMatch.state = constants_1.ORDER_STATES.PARTIAL;
|
|
808
850
|
}
|
|
809
851
|
}
|
|
810
|
-
const precision = (bestMatch.type === ORDER_TYPES.SELL) ? assetAPrecision : assetBPrecision;
|
|
811
|
-
const targetInt = floatToBlockchainInt(match.size, precision);
|
|
812
|
-
const chainInt = floatToBlockchainInt(chainOrder.size, precision);
|
|
852
|
+
const precision = (bestMatch.type === constants_1.ORDER_TYPES.SELL) ? assetAPrecision : assetBPrecision;
|
|
853
|
+
const targetInt = (0, math_1.floatToBlockchainInt)(match.size, precision);
|
|
854
|
+
const chainInt = (0, math_1.floatToBlockchainInt)(chainOrder.size, precision);
|
|
813
855
|
if (targetInt !== chainInt) {
|
|
814
|
-
const updated = await applyChainSizeToGridOrder(mgr, bestMatch, chainOrder.size);
|
|
856
|
+
const updated = await (0, order_1.applyChainSizeToGridOrder)(mgr, bestMatch, chainOrder.size);
|
|
815
857
|
if (updated)
|
|
816
858
|
bestMatch = { ...bestMatch, ...updated };
|
|
817
859
|
if (chainInt > 0) {
|
|
818
860
|
if (wasVirtual) {
|
|
819
861
|
// Only override to ACTIVE if partial-fill check above didn't already
|
|
820
862
|
// set PARTIAL via deferred_fee === 0. Skip override to preserve signal.
|
|
821
|
-
if (bestMatch.state !== ORDER_STATES.PARTIAL) {
|
|
822
|
-
bestMatch.state = ORDER_STATES.ACTIVE;
|
|
863
|
+
if (bestMatch.state !== constants_1.ORDER_STATES.PARTIAL) {
|
|
864
|
+
bestMatch.state = constants_1.ORDER_STATES.ACTIVE;
|
|
823
865
|
}
|
|
824
866
|
}
|
|
825
867
|
else if (chainInt < targetInt) {
|
|
826
|
-
bestMatch.state = ORDER_STATES.PARTIAL;
|
|
868
|
+
bestMatch.state = constants_1.ORDER_STATES.PARTIAL;
|
|
827
869
|
}
|
|
828
870
|
else if (wasPartial) {
|
|
829
|
-
bestMatch.state = ORDER_STATES.PARTIAL;
|
|
871
|
+
bestMatch.state = constants_1.ORDER_STATES.PARTIAL;
|
|
830
872
|
}
|
|
831
873
|
else {
|
|
832
|
-
bestMatch.state = ORDER_STATES.ACTIVE;
|
|
874
|
+
bestMatch.state = constants_1.ORDER_STATES.ACTIVE;
|
|
833
875
|
}
|
|
834
876
|
}
|
|
835
877
|
else {
|
|
836
|
-
const spreadOrder = convertToSpreadPlaceholder(bestMatch);
|
|
878
|
+
const spreadOrder = (0, order_1.convertToSpreadPlaceholder)(bestMatch);
|
|
837
879
|
filledOrders.push({ ...bestMatch });
|
|
838
880
|
await mgr._applyOrderUpdate(spreadOrder, 'sync-pass2-filled', { skipAccounting: skipAccounting, fee: 0 });
|
|
839
881
|
updatedOrders.push(spreadOrder);
|
|
@@ -842,7 +884,7 @@ class SyncEngine {
|
|
|
842
884
|
}
|
|
843
885
|
}
|
|
844
886
|
else if (wasPartial) {
|
|
845
|
-
bestMatch.state = ORDER_STATES.PARTIAL;
|
|
887
|
+
bestMatch.state = constants_1.ORDER_STATES.PARTIAL;
|
|
846
888
|
}
|
|
847
889
|
await mgr._applyOrderUpdate(bestMatch, 'sync-pass2-orphan', { skipAccounting: skipAccounting, fee: 0 });
|
|
848
890
|
updatedOrders.push(bestMatch);
|
|
@@ -879,23 +921,23 @@ class SyncEngine {
|
|
|
879
921
|
// orphan becomes visible to checkWindowDust for dust auto-cancel.
|
|
880
922
|
// The duplicate-price-level guard already ran above so it is not
|
|
881
923
|
// repeated here.
|
|
882
|
-
const adoptedSlot = findMatchingGridOrderByOpenOrder({ orderId: chainOrderId, type: chainOrder.type, price: chainOrder.price, size: chainOrder.size }, {
|
|
924
|
+
const adoptedSlot = (0, order_1.findMatchingGridOrderByOpenOrder)({ orderId: chainOrderId, type: chainOrder.type, price: chainOrder.price, size: chainOrder.size }, {
|
|
883
925
|
orders: mgr.orders,
|
|
884
926
|
assets: mgr.assets,
|
|
885
|
-
calcToleranceFn: (p, s, t) => calculatePriceTolerance(p, s, t, mgr.assets),
|
|
927
|
+
calcToleranceFn: (p, s, t) => (0, math_1.calculatePriceTolerance)(p, s, t, mgr.assets),
|
|
886
928
|
allowSpreadType: true,
|
|
887
929
|
skipSizeMatch: true,
|
|
888
930
|
requireAvailableSlot: true,
|
|
889
931
|
excludeGridOrderIds: matchedGridOrderIds
|
|
890
932
|
});
|
|
891
933
|
if (adoptedSlot && !matchedGridOrderIds.has(adoptedSlot.id) && !adoptedSlot.orderId) {
|
|
892
|
-
const precision = (chainOrder.type === ORDER_TYPES.SELL) ? assetAPrecision : assetBPrecision;
|
|
893
|
-
const chainInt = floatToBlockchainInt(chainOrder.size, precision);
|
|
934
|
+
const precision = (chainOrder.type === constants_1.ORDER_TYPES.SELL) ? assetAPrecision : assetBPrecision;
|
|
935
|
+
const chainInt = (0, math_1.floatToBlockchainInt)(chainOrder.size, precision);
|
|
894
936
|
const adoptedRaw = rawChainOrders.get(chainOrderId);
|
|
895
|
-
const adoptedState = chainInt > 0 ? ORDER_STATES.PARTIAL : ORDER_STATES.VIRTUAL;
|
|
937
|
+
const adoptedState = chainInt > 0 ? constants_1.ORDER_STATES.PARTIAL : constants_1.ORDER_STATES.VIRTUAL;
|
|
896
938
|
const adoptedBtsFeeState = (adoptedRaw) ? (() => {
|
|
897
|
-
const rawFee = toFiniteNumber(adoptedRaw.deferred_fee,
|
|
898
|
-
return rawFee !== null && rawFee > 0 ? { deferredFee: blockchainToFloat(rawFee, BTS_PRECISION) } : undefined;
|
|
939
|
+
const rawFee = toFiniteNumber(adoptedRaw.deferred_fee, undefined);
|
|
940
|
+
return rawFee !== null && rawFee > 0 ? { deferredFee: (0, math_1.blockchainToFloat)(rawFee, constants_1.BTS_PRECISION) } : undefined;
|
|
899
941
|
})() : undefined;
|
|
900
942
|
const adoptedOrder = {
|
|
901
943
|
...adoptedSlot,
|
|
@@ -917,9 +959,9 @@ class SyncEngine {
|
|
|
917
959
|
`size=${chainOrder.size}) adopted into slot ${adoptedSlot.id} (was ${adoptedSlot.type})`, 'warn');
|
|
918
960
|
}
|
|
919
961
|
else {
|
|
920
|
-
const precision = (chainOrder.type === ORDER_TYPES.SELL) ? assetAPrecision : assetBPrecision;
|
|
921
|
-
const candidateDiagnostics = describeNearestAdoptionCandidates(mgr, chainOrder, precision, (p, s, t) => calculatePriceTolerance(p, s, t, mgr.assets), matchedGridOrderIds);
|
|
922
|
-
const driftTag = computeOutOfToleranceDriftTag(mgr, chainOrder, (p, s, t) => calculatePriceTolerance(p, s, t, mgr.assets));
|
|
962
|
+
const precision = (chainOrder.type === constants_1.ORDER_TYPES.SELL) ? assetAPrecision : assetBPrecision;
|
|
963
|
+
const candidateDiagnostics = describeNearestAdoptionCandidates(mgr, chainOrder, precision, (p, s, t) => (0, math_1.calculatePriceTolerance)(p, s, t, mgr.assets), matchedGridOrderIds);
|
|
964
|
+
const driftTag = computeOutOfToleranceDriftTag(mgr, chainOrder, (p, s, t) => (0, math_1.calculatePriceTolerance)(p, s, t, mgr.assets));
|
|
923
965
|
const unmatchedEntry = {
|
|
924
966
|
chainOrderId,
|
|
925
967
|
type: chainOrder.type,
|
|
@@ -951,7 +993,7 @@ class SyncEngine {
|
|
|
951
993
|
// ------------------------------------------------------------------
|
|
952
994
|
_findMatchingGridOrder(mgr, orderId) {
|
|
953
995
|
for (const gridOrder of mgr.orders.values()) {
|
|
954
|
-
if (gridOrder.orderId === orderId && (gridOrder.state === ORDER_STATES.ACTIVE || gridOrder.state === ORDER_STATES.PARTIAL)) {
|
|
996
|
+
if (gridOrder.orderId === orderId && (gridOrder.state === constants_1.ORDER_STATES.ACTIVE || gridOrder.state === constants_1.ORDER_STATES.PARTIAL)) {
|
|
955
997
|
return gridOrder;
|
|
956
998
|
}
|
|
957
999
|
}
|
|
@@ -960,23 +1002,24 @@ class SyncEngine {
|
|
|
960
1002
|
_computeFillContext(mgr, matchedGridOrder, paysAssetId, paysAmountRaw) {
|
|
961
1003
|
const orderType = matchedGridOrder.type;
|
|
962
1004
|
const currentSize = toFiniteNumber(matchedGridOrder.size);
|
|
963
|
-
const precision = (orderType === ORDER_TYPES.SELL) ? mgr.assets.assetA.precision : mgr.assets.assetB.precision;
|
|
1005
|
+
const precision = (orderType === constants_1.ORDER_TYPES.SELL) ? mgr.assets.assetA.precision : mgr.assets.assetB.precision;
|
|
964
1006
|
let filledAmount = 0;
|
|
965
|
-
if (orderType === ORDER_TYPES.SELL) {
|
|
1007
|
+
if (orderType === constants_1.ORDER_TYPES.SELL) {
|
|
966
1008
|
if (paysAssetId === mgr.assets.assetA.id)
|
|
967
|
-
filledAmount = blockchainToFloat(paysAmountRaw, precision
|
|
1009
|
+
filledAmount = (0, math_1.blockchainToFloat)(paysAmountRaw, precision);
|
|
968
1010
|
}
|
|
969
1011
|
else {
|
|
970
1012
|
if (paysAssetId === mgr.assets.assetB.id)
|
|
971
|
-
filledAmount = blockchainToFloat(paysAmountRaw, precision
|
|
1013
|
+
filledAmount = (0, math_1.blockchainToFloat)(paysAmountRaw, precision);
|
|
972
1014
|
}
|
|
973
|
-
const currentSizeIntFromGrid = floatToBlockchainInt(currentSize, precision);
|
|
974
|
-
const
|
|
1015
|
+
const currentSizeIntFromGrid = (0, math_1.floatToBlockchainInt)(currentSize, precision);
|
|
1016
|
+
const rawForSale = matchedGridOrder?.rawOnChain?.for_sale;
|
|
1017
|
+
const rawForSaleInt = rawForSale !== undefined && rawForSale !== null ? toFiniteNumber(rawForSale) : NaN;
|
|
975
1018
|
const driftSignal = Number.isFinite(rawForSaleInt) && Math.round(rawForSaleInt) < currentSizeIntFromGrid;
|
|
976
1019
|
return { orderType, currentSize, precision, filledAmount, currentSizeIntFromGrid, rawForSaleInt, driftSignal };
|
|
977
1020
|
}
|
|
978
1021
|
async _computeFillTransitionResult(mgr, params) {
|
|
979
|
-
const { matchedGridOrder, orderType, precision, filledAmount, filledAmountInt, currentSizeIntFromGrid,
|
|
1022
|
+
const { matchedGridOrder, orderType, precision, filledAmount, filledAmountInt, currentSizeIntFromGrid, chainRefetched, chainConfirmsEmpty, effectiveRawForSale, blockNum, historyId, isMaker } = params;
|
|
980
1023
|
let resolvedChainConfirmsEmpty = chainConfirmsEmpty;
|
|
981
1024
|
if (chainRefetched && Number.isFinite(effectiveRawForSale) && Math.round(effectiveRawForSale) <= 0) {
|
|
982
1025
|
resolvedChainConfirmsEmpty = true;
|
|
@@ -985,7 +1028,7 @@ class SyncEngine {
|
|
|
985
1028
|
? Math.max(0, Math.round(effectiveRawForSale))
|
|
986
1029
|
: currentSizeIntFromGrid;
|
|
987
1030
|
const newSizeInt = Math.max(0, currentSizeInt - filledAmountInt);
|
|
988
|
-
const newSize = blockchainToFloat(newSizeInt, precision
|
|
1031
|
+
const newSize = (0, math_1.blockchainToFloat)(newSizeInt, precision);
|
|
989
1032
|
if (Number.isFinite(effectiveRawForSale) && currentSizeInt !== currentSizeIntFromGrid) {
|
|
990
1033
|
mgr.logger.log(`[SYNC] Using rawOnChain.for_sale baseline for ${matchedGridOrder.orderId}: raw=${currentSizeInt}, grid=${currentSizeIntFromGrid}` +
|
|
991
1034
|
(chainRefetched ? ' (refetched)' : ''), 'debug');
|
|
@@ -993,11 +1036,22 @@ class SyncEngine {
|
|
|
993
1036
|
const gridAlsoEmpty = currentSizeIntFromGrid <= 0;
|
|
994
1037
|
let isEffectivelyFull = resolvedChainConfirmsEmpty || gridAlsoEmpty;
|
|
995
1038
|
let ghostOrderId;
|
|
1039
|
+
// P4: Inline dust detection — if remaining size is below the minimum
|
|
1040
|
+
// absolute order size, treat as full fill to trigger rotation instead
|
|
1041
|
+
// of leaving a sub-minimum remnant on chain that would accumulate as dust.
|
|
1042
|
+
if (!isEffectivelyFull && newSize > 0) {
|
|
1043
|
+
const minSize = (0, math_1.getMinAbsoluteOrderSize)(orderType, mgr.assets);
|
|
1044
|
+
if (newSize < minSize) {
|
|
1045
|
+
mgr.logger.log(`[SYNC] Order ${matchedGridOrder.orderId} (slot ${matchedGridOrder.id}) ` +
|
|
1046
|
+
`remaining size ${newSize} below minimum ${minSize}. Treating as full fill.`, 'info');
|
|
1047
|
+
isEffectivelyFull = true;
|
|
1048
|
+
}
|
|
1049
|
+
}
|
|
996
1050
|
if (!isEffectivelyFull) {
|
|
997
|
-
const otherPrecision = (orderType === ORDER_TYPES.SELL) ? mgr.assets.assetB.precision : mgr.assets.assetA.precision;
|
|
1051
|
+
const otherPrecision = (orderType === constants_1.ORDER_TYPES.SELL) ? mgr.assets.assetB.precision : mgr.assets.assetA.precision;
|
|
998
1052
|
const price = matchedGridOrder.price;
|
|
999
|
-
const otherSize = (orderType === ORDER_TYPES.SELL) ? newSize * price : newSize / price;
|
|
1000
|
-
if (floatToBlockchainInt(otherSize, otherPrecision) <= 0) {
|
|
1053
|
+
const otherSize = (orderType === constants_1.ORDER_TYPES.SELL) ? newSize * price : newSize / price;
|
|
1054
|
+
if ((0, math_1.floatToBlockchainInt)(otherSize, otherPrecision) <= 0) {
|
|
1001
1055
|
mgr.logger.log(`[SYNC] Order ${matchedGridOrder.orderId} (slot ${matchedGridOrder.id}) other-side (${otherSize}) rounds to 0. Treating as full fill to trigger rotation.`, 'info');
|
|
1002
1056
|
isEffectivelyFull = true;
|
|
1003
1057
|
ghostOrderId = matchedGridOrder.orderId;
|
|
@@ -1012,12 +1066,12 @@ class SyncEngine {
|
|
|
1012
1066
|
ghostUpdate = {
|
|
1013
1067
|
...matchedGridOrder,
|
|
1014
1068
|
size: 0,
|
|
1015
|
-
state: ORDER_STATES.PARTIAL,
|
|
1069
|
+
state: constants_1.ORDER_STATES.PARTIAL,
|
|
1016
1070
|
orderId: ghostOrderId,
|
|
1017
1071
|
};
|
|
1018
1072
|
}
|
|
1019
1073
|
else {
|
|
1020
|
-
fullUpdate = convertToSpreadPlaceholder(matchedGridOrder);
|
|
1074
|
+
fullUpdate = (0, order_1.convertToSpreadPlaceholder)(matchedGridOrder);
|
|
1021
1075
|
}
|
|
1022
1076
|
filledOrderResult = { ...matchedGridOrder, blockNum, historyId, isMaker };
|
|
1023
1077
|
}
|
|
@@ -1031,7 +1085,7 @@ class SyncEngine {
|
|
|
1031
1085
|
isMaker
|
|
1032
1086
|
};
|
|
1033
1087
|
const { btsFeeState, ...matchedWithoutDeferredFee } = matchedGridOrder;
|
|
1034
|
-
let updatedOrder = { ...matchedWithoutDeferredFee, state: ORDER_STATES.PARTIAL };
|
|
1088
|
+
let updatedOrder = { ...matchedWithoutDeferredFee, state: constants_1.ORDER_STATES.PARTIAL };
|
|
1035
1089
|
if (updatedOrder.rawOnChain && updatedOrder.rawOnChain.for_sale !== undefined) {
|
|
1036
1090
|
const baselineForSale = (chainRefetched && Number.isFinite(effectiveRawForSale))
|
|
1037
1091
|
? effectiveRawForSale
|
|
@@ -1043,7 +1097,7 @@ class SyncEngine {
|
|
|
1043
1097
|
fetchedAt: Date.now()
|
|
1044
1098
|
};
|
|
1045
1099
|
}
|
|
1046
|
-
const nextOrder = await applyChainSizeToGridOrder(mgr, updatedOrder, newSize);
|
|
1100
|
+
const nextOrder = await (0, order_1.applyChainSizeToGridOrder)(mgr, updatedOrder, newSize);
|
|
1047
1101
|
if (nextOrder) {
|
|
1048
1102
|
updatedOrder = { ...updatedOrder, ...nextOrder };
|
|
1049
1103
|
}
|
|
@@ -1068,7 +1122,7 @@ class SyncEngine {
|
|
|
1068
1122
|
*/
|
|
1069
1123
|
async syncFromFillHistory(fill, options = {}) {
|
|
1070
1124
|
const mgr = this.manager;
|
|
1071
|
-
const persistenceMode = resolveProcessedFillPersistenceMode(options);
|
|
1125
|
+
const persistenceMode = (0, processed_fill_store_1.resolveProcessedFillPersistenceMode)(options);
|
|
1072
1126
|
if (!fill || !fill.op || !fill.op[1])
|
|
1073
1127
|
return { filledOrders: [], updatedOrders: [], partialFill: false };
|
|
1074
1128
|
const fillOp = fill.op[1];
|
|
@@ -1079,7 +1133,7 @@ class SyncEngine {
|
|
|
1079
1133
|
mgr.logger.log(`[SYNC] is_maker flag missing from fill data for order ${orderId}; defaulting to maker`, 'warn');
|
|
1080
1134
|
}
|
|
1081
1135
|
const isMaker = fillOp.is_maker !== false;
|
|
1082
|
-
const fillKey = buildFillKey({ orderId, blockNum, historyId });
|
|
1136
|
+
const fillKey = (0, order_1.buildFillKey)({ orderId, blockNum, historyId });
|
|
1083
1137
|
const paysAmountRaw = toFiniteNumber(fillOp.pays?.amount);
|
|
1084
1138
|
const paysAssetId = fillOp.pays ? fillOp.pays.asset_id : null;
|
|
1085
1139
|
const receivesAmountRaw = toFiniteNumber(fillOp.receives?.amount);
|
|
@@ -1119,7 +1173,7 @@ class SyncEngine {
|
|
|
1119
1173
|
try {
|
|
1120
1174
|
const fresh = await chainOrders.readSingleOrder(orderId, 3000);
|
|
1121
1175
|
if (fresh) {
|
|
1122
|
-
const freshForSale = toFiniteNumber(fresh.for_sale,
|
|
1176
|
+
const freshForSale = toFiniteNumber(fresh.for_sale, undefined);
|
|
1123
1177
|
if (Number.isFinite(freshForSale)) {
|
|
1124
1178
|
effectiveRawForSale = freshForSale;
|
|
1125
1179
|
chainRefetched = true;
|
|
@@ -1141,7 +1195,7 @@ class SyncEngine {
|
|
|
1141
1195
|
orderType: ctx.orderType,
|
|
1142
1196
|
precision: ctx.precision,
|
|
1143
1197
|
filledAmount: ctx.filledAmount,
|
|
1144
|
-
filledAmountInt: floatToBlockchainInt(ctx.filledAmount, ctx.precision),
|
|
1198
|
+
filledAmountInt: (0, math_1.floatToBlockchainInt)(ctx.filledAmount, ctx.precision),
|
|
1145
1199
|
currentSizeIntFromGrid: ctx.currentSizeIntFromGrid,
|
|
1146
1200
|
rawForSaleInt: ctx.rawForSaleInt,
|
|
1147
1201
|
chainRefetched,
|
|
@@ -1161,7 +1215,7 @@ class SyncEngine {
|
|
|
1161
1215
|
mgr.logger.log(`[SYNC] Failed to apply ghost fill state for order ${orderId}`, 'warn');
|
|
1162
1216
|
}
|
|
1163
1217
|
filledOrders.push(result.filledOrder);
|
|
1164
|
-
return { filledOrders, updatedOrders, partialFill: false
|
|
1218
|
+
return { filledOrders, updatedOrders, partialFill: false };
|
|
1165
1219
|
}
|
|
1166
1220
|
mgr.logger.log(`[SYNC] Full fill for order ${orderId} (slot ${matchedGridOrder.id}).`, 'info');
|
|
1167
1221
|
const fullOk = await mgr._updateOrder(result.fullUpdate, 'handle-fill-full', { skipAccounting: false, fee: 0 });
|
|
@@ -1201,9 +1255,9 @@ class SyncEngine {
|
|
|
1201
1255
|
*/
|
|
1202
1256
|
async syncFromFillHistoryBatch(fills, options = {}) {
|
|
1203
1257
|
const mgr = this.manager;
|
|
1204
|
-
const persistenceMode = resolveProcessedFillPersistenceMode(options);
|
|
1258
|
+
const persistenceMode = (0, processed_fill_store_1.resolveProcessedFillPersistenceMode)(options);
|
|
1205
1259
|
if (!Array.isArray(fills) || fills.length === 0) {
|
|
1206
|
-
return { filledOrders: [], updatedOrders: [], partialFill: false
|
|
1260
|
+
return { filledOrders: [], updatedOrders: [], partialFill: false };
|
|
1207
1261
|
}
|
|
1208
1262
|
// Phase 1: Extract & validate fill data
|
|
1209
1263
|
const fillEntries = [];
|
|
@@ -1219,7 +1273,7 @@ class SyncEngine {
|
|
|
1219
1273
|
mgr.logger.log(`[SYNC] is_maker flag missing from fill data for order ${orderId}; defaulting to maker`, 'warn');
|
|
1220
1274
|
}
|
|
1221
1275
|
const isMaker = fillOp.is_maker !== false;
|
|
1222
|
-
const fillKey = buildFillKey({ orderId, blockNum, historyId });
|
|
1276
|
+
const fillKey = (0, order_1.buildFillKey)({ orderId, blockNum, historyId });
|
|
1223
1277
|
if (!fillKey) {
|
|
1224
1278
|
mgr.logger.log(`[SYNC] Missing replay-safe fill key for order ${orderId} block ${blockNum}; deferring to open-orders sync`, 'warn');
|
|
1225
1279
|
anyRequiresSync = true;
|
|
@@ -1236,7 +1290,7 @@ class SyncEngine {
|
|
|
1236
1290
|
});
|
|
1237
1291
|
}
|
|
1238
1292
|
if (fillEntries.length === 0) {
|
|
1239
|
-
return { filledOrders: [], updatedOrders: [], partialFill: false,
|
|
1293
|
+
return { filledOrders: [], updatedOrders: [], partialFill: false, requiresOpenOrdersSync: anyRequiresSync };
|
|
1240
1294
|
}
|
|
1241
1295
|
// Phase 2: Lock all unique order IDs once
|
|
1242
1296
|
const allOrderIds = [...new Set(fillEntries.map(e => e.orderId))];
|
|
@@ -1256,12 +1310,12 @@ class SyncEngine {
|
|
|
1256
1310
|
validEntries.push(entry);
|
|
1257
1311
|
}
|
|
1258
1312
|
catch (acctErr) {
|
|
1259
|
-
mgr.logger.log(`[SYNC] Accounting error for fill ${entry.fillKey}: ${acctErr
|
|
1313
|
+
mgr.logger.log(`[SYNC] Accounting error for fill ${entry.fillKey}: ${(0, errors_1.getErrorMessage)(acctErr)}`, 'error');
|
|
1260
1314
|
continue;
|
|
1261
1315
|
}
|
|
1262
1316
|
}
|
|
1263
1317
|
if (validEntries.length === 0) {
|
|
1264
|
-
return { filledOrders: [], updatedOrders: [], partialFill: false,
|
|
1318
|
+
return { filledOrders: [], updatedOrders: [], partialFill: false, requiresOpenOrdersSync: anyRequiresSync };
|
|
1265
1319
|
}
|
|
1266
1320
|
// Phase 4: Build per-fill context + identify drift candidates
|
|
1267
1321
|
const entryContexts = [];
|
|
@@ -1270,7 +1324,7 @@ class SyncEngine {
|
|
|
1270
1324
|
const assetBPrecision = mgr.assets?.assetB?.precision;
|
|
1271
1325
|
if (assetAPrecision === undefined || assetBPrecision === undefined) {
|
|
1272
1326
|
mgr.logger?.log?.('Error: manager.assets precision missing in syncFromFillHistoryBatch', 'error');
|
|
1273
|
-
return { filledOrders: [], updatedOrders: [], partialFill: false,
|
|
1327
|
+
return { filledOrders: [], updatedOrders: [], partialFill: false, requiresOpenOrdersSync: anyRequiresSync };
|
|
1274
1328
|
}
|
|
1275
1329
|
for (const entry of validEntries) {
|
|
1276
1330
|
const { orderId, paysAmountRaw, paysAssetId } = entry;
|
|
@@ -1290,7 +1344,7 @@ class SyncEngine {
|
|
|
1290
1344
|
orderType: ctx.orderType,
|
|
1291
1345
|
precision: ctx.precision,
|
|
1292
1346
|
filledAmount: ctx.filledAmount,
|
|
1293
|
-
filledAmountInt: floatToBlockchainInt(ctx.filledAmount, ctx.precision),
|
|
1347
|
+
filledAmountInt: (0, math_1.floatToBlockchainInt)(ctx.filledAmount, ctx.precision),
|
|
1294
1348
|
currentSizeIntFromGrid: ctx.currentSizeIntFromGrid,
|
|
1295
1349
|
rawForSaleInt: ctx.rawForSaleInt
|
|
1296
1350
|
});
|
|
@@ -1302,7 +1356,7 @@ class SyncEngine {
|
|
|
1302
1356
|
const batchResults = await chainOrders.batchReadOrders([...driftOrderIds], 3000);
|
|
1303
1357
|
for (const [orderId, freshOrder] of batchResults) {
|
|
1304
1358
|
if (freshOrder) {
|
|
1305
|
-
const freshForSale = toFiniteNumber(freshOrder.for_sale,
|
|
1359
|
+
const freshForSale = toFiniteNumber(freshOrder.for_sale, undefined);
|
|
1306
1360
|
if (Number.isFinite(freshForSale)) {
|
|
1307
1361
|
refetchMap.set(orderId, {
|
|
1308
1362
|
chainConfirmsEmpty: Math.round(freshForSale) <= 0,
|
|
@@ -1343,7 +1397,6 @@ class SyncEngine {
|
|
|
1343
1397
|
const gridUpdates = [];
|
|
1344
1398
|
const filledOrders = [];
|
|
1345
1399
|
const updatedOrders = [];
|
|
1346
|
-
const ghostOrderIds = [];
|
|
1347
1400
|
let anyPartialFill = false;
|
|
1348
1401
|
for (const ctx of entryContexts) {
|
|
1349
1402
|
const { entry, matchedGridOrder, orderType, precision, filledAmount, filledAmountInt, currentSizeIntFromGrid, rawForSaleInt } = ctx;
|
|
@@ -1372,7 +1425,6 @@ class SyncEngine {
|
|
|
1372
1425
|
mgr.logger.log(`[SYNC] Ghost full fill for order ${orderId} (slot ${matchedGridOrder.id}): ` +
|
|
1373
1426
|
`preserving orderId ${result.ghostOrderId} as PARTIAL to block duplicate CREATE.`, 'info');
|
|
1374
1427
|
gridUpdates.push({ id: matchedGridOrder.id, ...result.ghostUpdate, context: 'handle-fill-ghost' });
|
|
1375
|
-
ghostOrderIds.push(result.ghostOrderId);
|
|
1376
1428
|
}
|
|
1377
1429
|
else {
|
|
1378
1430
|
mgr.logger.log(`[SYNC] Full fill for order ${orderId} (slot ${matchedGridOrder.id}).`, 'info');
|
|
@@ -1399,7 +1451,7 @@ class SyncEngine {
|
|
|
1399
1451
|
mgr.logger.log('[SYNC] Batch grid update failed for some fills; next sync cycle will reconcile', 'warn');
|
|
1400
1452
|
}
|
|
1401
1453
|
}
|
|
1402
|
-
return { filledOrders, updatedOrders, partialFill: anyPartialFill,
|
|
1454
|
+
return { filledOrders, updatedOrders, partialFill: anyPartialFill, requiresOpenOrdersSync: anyRequiresSync };
|
|
1403
1455
|
}
|
|
1404
1456
|
finally {
|
|
1405
1457
|
await mgr.resumeFundRecalc();
|
|
@@ -1480,25 +1532,25 @@ class SyncEngine {
|
|
|
1480
1532
|
const isRotation = !!existingOrder;
|
|
1481
1533
|
// For rotation: transition the old order to VIRTUAL, freeing its capital
|
|
1482
1534
|
if (isRotation && existingOrder) {
|
|
1483
|
-
if (!isOrderVirtual(existingOrder)) {
|
|
1484
|
-
const oldVirtualOrder = { ...virtualizeOrder(existingOrder), size: 0 };
|
|
1535
|
+
if (!(0, order_1.isOrderVirtual)(existingOrder)) {
|
|
1536
|
+
const oldVirtualOrder = { ...(0, order_1.virtualizeOrder)(existingOrder), size: 0 };
|
|
1485
1537
|
await mgr._applyOrderUpdate(oldVirtualOrder, 'rotation-cleanup', {
|
|
1486
1538
|
skipAccounting: chainData.skipAccounting || false,
|
|
1487
1539
|
fee: 0
|
|
1488
1540
|
});
|
|
1489
1541
|
}
|
|
1490
|
-
else if (hasOnChainId(existingOrder)) {
|
|
1542
|
+
else if ((0, order_1.hasOnChainId)(existingOrder)) {
|
|
1491
1543
|
// Already VIRTUAL but still has orderId (from rebalance)
|
|
1492
1544
|
// Just clear the orderId to reflect blockchain state
|
|
1493
|
-
const clearedOrder = { ...virtualizeOrder(existingOrder), size: 0 };
|
|
1545
|
+
const clearedOrder = { ...(0, order_1.virtualizeOrder)(existingOrder), size: 0 };
|
|
1494
1546
|
await mgr._applyOrderUpdate(clearedOrder, 'fill-cleanup', {
|
|
1495
1547
|
skipAccounting: chainData.skipAccounting || false,
|
|
1496
1548
|
fee: 0
|
|
1497
1549
|
});
|
|
1498
1550
|
}
|
|
1499
1551
|
}
|
|
1500
|
-
const newState = isPartialPlacement ? ORDER_STATES.PARTIAL : ORDER_STATES.ACTIVE;
|
|
1501
|
-
const normalizedExpectedType = (expectedType === ORDER_TYPES.BUY || expectedType === ORDER_TYPES.SELL)
|
|
1552
|
+
const newState = isPartialPlacement ? constants_1.ORDER_STATES.PARTIAL : constants_1.ORDER_STATES.ACTIVE;
|
|
1553
|
+
const normalizedExpectedType = (expectedType === constants_1.ORDER_TYPES.BUY || expectedType === constants_1.ORDER_TYPES.SELL)
|
|
1502
1554
|
? expectedType
|
|
1503
1555
|
: null;
|
|
1504
1556
|
const updatedOrder = {
|
|
@@ -1548,10 +1600,10 @@ class SyncEngine {
|
|
|
1548
1600
|
const clearSize = !!chainData.clearSize;
|
|
1549
1601
|
let btsFeeData;
|
|
1550
1602
|
try {
|
|
1551
|
-
btsFeeData = getAssetFees('BTS');
|
|
1603
|
+
btsFeeData = (0, math_1.getAssetFees)('BTS');
|
|
1552
1604
|
}
|
|
1553
1605
|
catch (err) {
|
|
1554
|
-
mgr.logger?.log?.(`[FILL-FEE] Failed to load BTS cancel fee cache: ${err
|
|
1606
|
+
mgr.logger?.log?.(`[FILL-FEE] Failed to load BTS cancel fee cache: ${(0, errors_1.getErrorMessage)(err)}. Using zero-fee fallback.`, 'warn');
|
|
1555
1607
|
btsFeeData = {
|
|
1556
1608
|
total: 0,
|
|
1557
1609
|
createFee: 0,
|
|
@@ -1564,7 +1616,7 @@ class SyncEngine {
|
|
|
1564
1616
|
};
|
|
1565
1617
|
}
|
|
1566
1618
|
const runCancel = async () => {
|
|
1567
|
-
const gridOrder = findMatchingGridOrderByOpenOrder({ orderId }, { orders: mgr.orders, assets: mgr.assets, calcToleranceFn: (p, s, t) => calculatePriceTolerance(p, s, t, mgr.assets), logger: mgr.logger });
|
|
1619
|
+
const gridOrder = (0, order_1.findMatchingGridOrderByOpenOrder)({ orderId }, { orders: mgr.orders, assets: mgr.assets, calcToleranceFn: (p, s, t) => (0, math_1.calculatePriceTolerance)(p, s, t, mgr.assets), logger: mgr.logger });
|
|
1568
1620
|
if (gridOrder) {
|
|
1569
1621
|
// Lock both chain orderId and grid order ID to prevent concurrent modifications
|
|
1570
1622
|
const orderIds = [orderId, gridOrder.id].filter(Boolean);
|
|
@@ -1574,8 +1626,8 @@ class SyncEngine {
|
|
|
1574
1626
|
const currentGridOrder = mgr.orders.get(gridOrder.id);
|
|
1575
1627
|
if (currentGridOrder && currentGridOrder.orderId === orderId) {
|
|
1576
1628
|
const nextOrder = clearSize
|
|
1577
|
-
? { ...virtualizeOrder(currentGridOrder), size: 0 }
|
|
1578
|
-
: virtualizeOrder(currentGridOrder);
|
|
1629
|
+
? { ...(0, order_1.virtualizeOrder)(currentGridOrder), size: 0 }
|
|
1630
|
+
: (0, order_1.virtualizeOrder)(currentGridOrder);
|
|
1579
1631
|
await mgr._applyOrderUpdate(nextOrder, 'cancel-order', {
|
|
1580
1632
|
skipAccounting: false,
|
|
1581
1633
|
fee: btsFeeData?.cancelFee || 0
|
|
@@ -1589,7 +1641,7 @@ class SyncEngine {
|
|
|
1589
1641
|
else {
|
|
1590
1642
|
// CRITICAL: Even if order not in grid, the cancellation fee was still paid on blockchain
|
|
1591
1643
|
// Deduct it from account totals to prevent drift.
|
|
1592
|
-
const btsSide = (mgr.config.assetA === 'BTS') ? ORDER_TYPES.SELL : (mgr.config.assetB === 'BTS') ? ORDER_TYPES.BUY : null;
|
|
1644
|
+
const btsSide = (mgr.config.assetA === 'BTS') ? constants_1.ORDER_TYPES.SELL : (mgr.config.assetB === 'BTS') ? constants_1.ORDER_TYPES.BUY : null;
|
|
1593
1645
|
if (btsSide && btsFeeData?.cancelFee > 0) {
|
|
1594
1646
|
await mgr.accountant.adjustTotalBalance(btsSide, -btsFeeData.cancelFee, 'cancel-order-unmatched-fee');
|
|
1595
1647
|
}
|
|
@@ -1678,7 +1730,6 @@ class SyncEngine {
|
|
|
1678
1730
|
async fetchAccountBalancesAndSetTotals() {
|
|
1679
1731
|
const mgr = this.manager;
|
|
1680
1732
|
try {
|
|
1681
|
-
const { BitShares } = require('../bitshares_client');
|
|
1682
1733
|
if (!BitShares || !BitShares.db)
|
|
1683
1734
|
return;
|
|
1684
1735
|
const accountIdOrName = mgr.accountId || mgr.account || null;
|
|
@@ -1688,17 +1739,16 @@ class SyncEngine {
|
|
|
1688
1739
|
await this.initializeAssets();
|
|
1689
1740
|
}
|
|
1690
1741
|
catch (err) {
|
|
1691
|
-
mgr.logger.log(`[SYNC] initializeAssets failed: ${err
|
|
1742
|
+
mgr.logger.log(`[SYNC] initializeAssets failed: ${(0, errors_1.getErrorMessage)(err)}`, 'warn');
|
|
1692
1743
|
}
|
|
1693
1744
|
const assetAId = mgr.assets?.assetA?.id;
|
|
1694
1745
|
const assetBId = mgr.assets?.assetB?.id;
|
|
1695
1746
|
if (!assetAId || !assetBId)
|
|
1696
1747
|
return;
|
|
1697
|
-
const { NATIVE_CLIENT } = require('../constants');
|
|
1698
1748
|
const assetList = [assetAId, assetBId];
|
|
1699
1749
|
// For non-BTS pairs, also fetch core asset (BTS) balance for fee management
|
|
1700
1750
|
if (mgr.config.assetA !== 'BTS' && mgr.config.assetB !== 'BTS') {
|
|
1701
|
-
assetList.push(NATIVE_CLIENT.CHAIN.CORE_ASSET_ID);
|
|
1751
|
+
assetList.push(constants_2.NATIVE_CLIENT.CHAIN.CORE_ASSET_ID);
|
|
1702
1752
|
}
|
|
1703
1753
|
const lookup = await chainOrders.getOnChainAssetBalances(accountIdOrName, assetList);
|
|
1704
1754
|
const aInfo = lookup?.[assetAId] || lookup?.[mgr.config.assetA];
|
|
@@ -1708,14 +1758,14 @@ class SyncEngine {
|
|
|
1708
1758
|
}
|
|
1709
1759
|
// Store BTS balance for non-BTS pairs
|
|
1710
1760
|
if (mgr.config.assetA !== 'BTS' && mgr.config.assetB !== 'BTS') {
|
|
1711
|
-
const btsInfo = lookup?.[NATIVE_CLIENT.CHAIN.CORE_ASSET_ID];
|
|
1761
|
+
const btsInfo = lookup?.[constants_2.NATIVE_CLIENT.CHAIN.CORE_ASSET_ID];
|
|
1712
1762
|
if (btsInfo) {
|
|
1713
1763
|
mgr.btsBalance = { free: btsInfo.free, total: btsInfo.total, locked: 0 };
|
|
1714
1764
|
}
|
|
1715
1765
|
}
|
|
1716
1766
|
}
|
|
1717
1767
|
catch (err) {
|
|
1718
|
-
mgr.logger.log(`Failed to fetch on-chain balances: ${err
|
|
1768
|
+
mgr.logger.log(`Failed to fetch on-chain balances: ${(0, errors_1.getErrorMessage)(err)}`, 'warn');
|
|
1719
1769
|
}
|
|
1720
1770
|
}
|
|
1721
1771
|
/**
|
|
@@ -1767,10 +1817,9 @@ class SyncEngine {
|
|
|
1767
1817
|
const mgr = this.manager;
|
|
1768
1818
|
if (mgr.assets)
|
|
1769
1819
|
return;
|
|
1770
|
-
const { BitShares } = require('../bitshares_client');
|
|
1771
1820
|
const fetchAssetWithFallback = async (symbol, side) => {
|
|
1772
1821
|
try {
|
|
1773
|
-
return await lookupAsset(BitShares, symbol);
|
|
1822
|
+
return await (0, system_1.lookupAsset)(BitShares, symbol);
|
|
1774
1823
|
}
|
|
1775
1824
|
catch (err) {
|
|
1776
1825
|
// If blockchain lookup fails, check for persisted fallback
|
|
@@ -1778,7 +1827,7 @@ class SyncEngine {
|
|
|
1778
1827
|
const persistedAssets = mgr.accountOrders.loadPersistedAssets();
|
|
1779
1828
|
const assetData = (side === 'A') ? persistedAssets?.assetA : persistedAssets?.assetB;
|
|
1780
1829
|
if (assetData && assetData.symbol === symbol && typeof assetData.precision === 'number') {
|
|
1781
|
-
mgr.logger.log(`Blockchain lookup failed for ${symbol}: ${err
|
|
1830
|
+
mgr.logger.log(`Blockchain lookup failed for ${symbol}: ${(0, errors_1.getErrorMessage)(err)}. Persisted data: id=${assetData.id}, precision=${assetData.precision} — refusing stale fallback`, 'error');
|
|
1782
1831
|
}
|
|
1783
1832
|
}
|
|
1784
1833
|
throw err;
|
|
@@ -1791,10 +1840,11 @@ class SyncEngine {
|
|
|
1791
1840
|
};
|
|
1792
1841
|
}
|
|
1793
1842
|
catch (err) {
|
|
1794
|
-
mgr.logger.log(`Asset metadata lookup failed: ${err
|
|
1843
|
+
mgr.logger.log(`Asset metadata lookup failed: ${(0, errors_1.getErrorMessage)(err)}`, 'error');
|
|
1795
1844
|
throw err;
|
|
1796
1845
|
}
|
|
1797
1846
|
}
|
|
1798
1847
|
}
|
|
1848
|
+
exports.default = SyncEngine;
|
|
1799
1849
|
module.exports = SyncEngine;
|
|
1800
1850
|
//# sourceMappingURL=sync_engine.js.map
|