dexbot 1.4.10 → 1.4.12

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.
Files changed (502) hide show
  1. package/README.md +6 -5
  2. package/dist/analysis/chart_utils.d.ts.map +1 -1
  3. package/dist/analysis/chart_utils.js +9 -18
  4. package/dist/analysis/chart_utils.js.map +1 -1
  5. package/dist/analysis/math_utils.d.ts.map +1 -1
  6. package/dist/analysis/math_utils.js +6 -16
  7. package/dist/analysis/math_utils.js.map +1 -1
  8. package/dist/analysis/tradingview/tradingview_uplot_chart_generator.d.ts +1 -1
  9. package/dist/analysis/tradingview/tradingview_uplot_chart_generator.d.ts.map +1 -1
  10. package/dist/analysis/tradingview/tradingview_uplot_chart_generator.js +31 -38
  11. package/dist/analysis/tradingview/tradingview_uplot_chart_generator.js.map +1 -1
  12. package/dist/analysis/trend_detection/hurst_analyzer.js +7 -10
  13. package/dist/analysis/trend_detection/hurst_analyzer.js.map +1 -1
  14. package/dist/analysis/trend_detection/kalman_trend_analyzer.js +10 -14
  15. package/dist/analysis/trend_detection/kalman_trend_analyzer.js.map +1 -1
  16. package/dist/analysis/trend_detection/kalman_velocity_smoothing.js +10 -15
  17. package/dist/analysis/trend_detection/kalman_velocity_smoothing.js.map +1 -1
  18. package/dist/analysis/trend_detection/permutation_entropy_analyzer.js +7 -10
  19. package/dist/analysis/trend_detection/permutation_entropy_analyzer.js.map +1 -1
  20. package/dist/bot.d.ts.map +1 -1
  21. package/dist/bot.js +4 -12
  22. package/dist/bot.js.map +1 -1
  23. package/dist/credential-daemon.d.ts +0 -1
  24. package/dist/credential-daemon.d.ts.map +1 -1
  25. package/dist/credential-daemon.js +3 -123
  26. package/dist/credential-daemon.js.map +1 -1
  27. package/dist/dexbot.d.ts +0 -87
  28. package/dist/dexbot.d.ts.map +1 -1
  29. package/dist/dexbot.js +54 -23
  30. package/dist/dexbot.js.map +1 -1
  31. package/dist/market_adapter/ama_signal_runner.js +8 -9
  32. package/dist/market_adapter/ama_signal_runner.js.map +1 -1
  33. package/dist/market_adapter/candle_utils.js +1 -7
  34. package/dist/market_adapter/candle_utils.js.map +1 -1
  35. package/dist/market_adapter/core/asymmetric_bounds.js +1 -4
  36. package/dist/market_adapter/core/asymmetric_bounds.js.map +1 -1
  37. package/dist/market_adapter/core/config_normalizers.js +5 -9
  38. package/dist/market_adapter/core/config_normalizers.js.map +1 -1
  39. package/dist/market_adapter/core/kibana_candles.js +8 -15
  40. package/dist/market_adapter/core/kibana_candles.js.map +1 -1
  41. package/dist/market_adapter/core/kibana_client.js +7 -13
  42. package/dist/market_adapter/core/kibana_client.js.map +1 -1
  43. package/dist/market_adapter/core/kibana_market_candles.js +6 -12
  44. package/dist/market_adapter/core/kibana_market_candles.js.map +1 -1
  45. package/dist/market_adapter/core/market_adapter_service.d.ts +2 -0
  46. package/dist/market_adapter/core/market_adapter_service.d.ts.map +1 -1
  47. package/dist/market_adapter/core/market_adapter_service.js +100 -101
  48. package/dist/market_adapter/core/market_adapter_service.js.map +1 -1
  49. package/dist/market_adapter/core/strategies/ama.js +5 -10
  50. package/dist/market_adapter/core/strategies/ama.js.map +1 -1
  51. package/dist/market_adapter/core/strategies/ama_slope_model.js +21 -24
  52. package/dist/market_adapter/core/strategies/ama_slope_model.js.map +1 -1
  53. package/dist/market_adapter/core/strategies/atr/calculator.js +3 -5
  54. package/dist/market_adapter/core/strategies/atr/calculator.js.map +1 -1
  55. package/dist/market_adapter/core/strategies/collateral_manager.js +4 -6
  56. package/dist/market_adapter/core/strategies/collateral_manager.js.map +1 -1
  57. package/dist/market_adapter/core/strategies/regime_gate.js +15 -22
  58. package/dist/market_adapter/core/strategies/regime_gate.js.map +1 -1
  59. package/dist/market_adapter/index.d.ts +23 -23
  60. package/dist/market_adapter/index.d.ts.map +1 -1
  61. package/dist/market_adapter/index.js +24 -82
  62. package/dist/market_adapter/index.js.map +1 -1
  63. package/dist/market_adapter/inputs/fetch_cex_synthetic_data.js +2 -1
  64. package/dist/market_adapter/inputs/fetch_cex_synthetic_data.js.map +1 -1
  65. package/dist/market_adapter/inputs/fetch_lp_data.d.ts.map +1 -1
  66. package/dist/market_adapter/inputs/fetch_lp_data.js +59 -98
  67. package/dist/market_adapter/inputs/fetch_lp_data.js.map +1 -1
  68. package/dist/market_adapter/inputs/kibana_source.js +11 -17
  69. package/dist/market_adapter/inputs/kibana_source.js.map +1 -1
  70. package/dist/market_adapter/interval_utils.js +1 -2
  71. package/dist/market_adapter/interval_utils.js.map +1 -1
  72. package/dist/market_adapter/log_format.js +1 -7
  73. package/dist/market_adapter/log_format.js.map +1 -1
  74. package/dist/market_adapter/lp_chart_core.js +20 -22
  75. package/dist/market_adapter/lp_chart_core.js.map +1 -1
  76. package/dist/market_adapter/lp_chart_runner.d.ts +1 -1
  77. package/dist/market_adapter/lp_chart_runner.d.ts.map +1 -1
  78. package/dist/market_adapter/lp_chart_runner.js +41 -57
  79. package/dist/market_adapter/lp_chart_runner.js.map +1 -1
  80. package/dist/market_adapter/lp_chart_strategy_loader.js +30 -34
  81. package/dist/market_adapter/lp_chart_strategy_loader.js.map +1 -1
  82. package/dist/market_adapter/market_adapter.d.ts +2 -2
  83. package/dist/market_adapter/market_adapter.d.ts.map +1 -1
  84. package/dist/market_adapter/market_adapter.js +163 -222
  85. package/dist/market_adapter/market_adapter.js.map +1 -1
  86. package/dist/market_adapter/merge_lp_data.js +17 -18
  87. package/dist/market_adapter/merge_lp_data.js.map +1 -1
  88. package/dist/market_adapter/test_helpers.js +3 -14
  89. package/dist/market_adapter/test_helpers.js.map +1 -1
  90. package/dist/market_adapter/utils/adapter_client.js +7 -16
  91. package/dist/market_adapter/utils/adapter_client.js.map +1 -1
  92. package/dist/market_adapter/utils/atomic_write.js +3 -5
  93. package/dist/market_adapter/utils/atomic_write.js.map +1 -1
  94. package/dist/market_adapter/utils/chain.d.ts.map +1 -1
  95. package/dist/market_adapter/utils/chain.js +9 -17
  96. package/dist/market_adapter/utils/chain.js.map +1 -1
  97. package/dist/market_adapter/utils/data_discovery.js +8 -10
  98. package/dist/market_adapter/utils/data_discovery.js.map +1 -1
  99. package/dist/market_adapter/utils/dynamic_grid_snapshot.d.ts.map +1 -1
  100. package/dist/market_adapter/utils/dynamic_grid_snapshot.js +11 -14
  101. package/dist/market_adapter/utils/dynamic_grid_snapshot.js.map +1 -1
  102. package/dist/market_adapter/utils/file_lock.js +14 -19
  103. package/dist/market_adapter/utils/file_lock.js.map +1 -1
  104. package/dist/market_adapter/utils/native_history.js +8 -14
  105. package/dist/market_adapter/utils/native_history.js.map +1 -1
  106. package/dist/market_adapter/utils/paths.js +3 -6
  107. package/dist/market_adapter/utils/paths.js.map +1 -1
  108. package/dist/modules/account_bots.d.ts +1 -1
  109. package/dist/modules/account_bots.d.ts.map +1 -1
  110. package/dist/modules/account_bots.js +90 -97
  111. package/dist/modules/account_bots.js.map +1 -1
  112. package/dist/modules/account_orders.d.ts +0 -9
  113. package/dist/modules/account_orders.d.ts.map +1 -1
  114. package/dist/modules/account_orders.js +26 -121
  115. package/dist/modules/account_orders.js.map +1 -1
  116. package/dist/modules/authority_resolver.js +12 -18
  117. package/dist/modules/authority_resolver.js.map +1 -1
  118. package/dist/modules/bitshares-native/chain_client.js +16 -21
  119. package/dist/modules/bitshares-native/chain_client.js.map +1 -1
  120. package/dist/modules/bitshares-native/crypto/ecc.browser.js +12 -72
  121. package/dist/modules/bitshares-native/crypto/ecc.browser.js.map +1 -1
  122. package/dist/modules/bitshares-native/crypto/ecc.js +13 -40
  123. package/dist/modules/bitshares-native/crypto/ecc.js.map +1 -1
  124. package/dist/modules/bitshares-native/crypto/ecc_selector.d.ts.map +1 -1
  125. package/dist/modules/bitshares-native/crypto/ecc_selector.js +5 -6
  126. package/dist/modules/bitshares-native/crypto/ecc_selector.js.map +1 -1
  127. package/dist/modules/bitshares-native/index.d.ts +8 -8
  128. package/dist/modules/bitshares-native/index.d.ts.map +1 -1
  129. package/dist/modules/bitshares-native/index.js +11 -68
  130. package/dist/modules/bitshares-native/index.js.map +1 -1
  131. package/dist/modules/bitshares-native/lru_cache.js +3 -6
  132. package/dist/modules/bitshares-native/lru_cache.js.map +1 -1
  133. package/dist/modules/bitshares-native/resolvers.js +9 -11
  134. package/dist/modules/bitshares-native/resolvers.js.map +1 -1
  135. package/dist/modules/bitshares-native/serial/chain_constants.js +3 -28
  136. package/dist/modules/bitshares-native/serial/chain_constants.js.map +1 -1
  137. package/dist/modules/bitshares-native/serial/index.d.ts +4 -4
  138. package/dist/modules/bitshares-native/serial/index.d.ts.map +1 -1
  139. package/dist/modules/bitshares-native/serial/index.js +5 -46
  140. package/dist/modules/bitshares-native/serial/index.js.map +1 -1
  141. package/dist/modules/bitshares-native/serial/operations.d.ts +98 -98
  142. package/dist/modules/bitshares-native/serial/operations.d.ts.map +1 -1
  143. package/dist/modules/bitshares-native/serial/operations.js +372 -473
  144. package/dist/modules/bitshares-native/serial/operations.js.map +1 -1
  145. package/dist/modules/bitshares-native/serial/serializer.js +3 -8
  146. package/dist/modules/bitshares-native/serial/serializer.js.map +1 -1
  147. package/dist/modules/bitshares-native/serial/types.js +9 -74
  148. package/dist/modules/bitshares-native/serial/types.js.map +1 -1
  149. package/dist/modules/bitshares-native/signing_client.d.ts.map +1 -1
  150. package/dist/modules/bitshares-native/signing_client.js +11 -48
  151. package/dist/modules/bitshares-native/signing_client.js.map +1 -1
  152. package/dist/modules/bitshares-native/subscriptions.d.ts.map +1 -1
  153. package/dist/modules/bitshares-native/subscriptions.js +24 -27
  154. package/dist/modules/bitshares-native/subscriptions.js.map +1 -1
  155. package/dist/modules/bitshares-native/transport.d.ts.map +1 -1
  156. package/dist/modules/bitshares-native/transport.js +14 -26
  157. package/dist/modules/bitshares-native/transport.js.map +1 -1
  158. package/dist/modules/bitshares-native/tx/builder.js +29 -72
  159. package/dist/modules/bitshares-native/tx/builder.js.map +1 -1
  160. package/dist/modules/bitshares-native/tx/tx_cache.js +12 -21
  161. package/dist/modules/bitshares-native/tx/tx_cache.js.map +1 -1
  162. package/dist/modules/bitshares_client.d.ts +21 -0
  163. package/dist/modules/bitshares_client.d.ts.map +1 -1
  164. package/dist/modules/bitshares_client.js +32 -86
  165. package/dist/modules/bitshares_client.js.map +1 -1
  166. package/dist/modules/bot_settings.d.ts.map +1 -1
  167. package/dist/modules/bot_settings.js +30 -49
  168. package/dist/modules/bot_settings.js.map +1 -1
  169. package/dist/modules/bots_file_lock.d.ts.map +1 -1
  170. package/dist/modules/bots_file_lock.js +5 -13
  171. package/dist/modules/bots_file_lock.js.map +1 -1
  172. package/dist/modules/broadcast_failure.js +1 -3
  173. package/dist/modules/broadcast_failure.js.map +1 -1
  174. package/dist/modules/chain_keys.d.ts +4 -9
  175. package/dist/modules/chain_keys.d.ts.map +1 -1
  176. package/dist/modules/chain_keys.js +77 -182
  177. package/dist/modules/chain_keys.js.map +1 -1
  178. package/dist/modules/chain_orders.d.ts +2 -2
  179. package/dist/modules/chain_orders.d.ts.map +1 -1
  180. package/dist/modules/chain_orders.js +81 -144
  181. package/dist/modules/chain_orders.js.map +1 -1
  182. package/dist/modules/config.d.ts.map +1 -1
  183. package/dist/modules/config.js +23 -28
  184. package/dist/modules/config.js.map +1 -1
  185. package/dist/modules/constants.d.ts +4 -14
  186. package/dist/modules/constants.d.ts.map +1 -1
  187. package/dist/modules/constants.js +46 -78
  188. package/dist/modules/constants.js.map +1 -1
  189. package/dist/modules/cr_planner.js +15 -26
  190. package/dist/modules/cr_planner.js.map +1 -1
  191. package/dist/modules/credential_policy.d.ts +3 -6
  192. package/dist/modules/credential_policy.d.ts.map +1 -1
  193. package/dist/modules/credential_policy.js +62 -153
  194. package/dist/modules/credential_policy.js.map +1 -1
  195. package/dist/modules/credential_runtime.d.ts +1 -1
  196. package/dist/modules/credential_runtime.d.ts.map +1 -1
  197. package/dist/modules/credential_runtime.js +34 -41
  198. package/dist/modules/credential_runtime.js.map +1 -1
  199. package/dist/modules/credential_session_cache.d.ts +1 -1
  200. package/dist/modules/credential_session_cache.d.ts.map +1 -1
  201. package/dist/modules/credential_session_cache.js +5 -42
  202. package/dist/modules/credential_session_cache.js.map +1 -1
  203. package/dist/modules/credit_runtime.d.ts.map +1 -1
  204. package/dist/modules/credit_runtime.js +126 -162
  205. package/dist/modules/credit_runtime.js.map +1 -1
  206. package/dist/modules/crypto/browser_provider.d.ts +1 -1
  207. package/dist/modules/crypto/browser_provider.d.ts.map +1 -1
  208. package/dist/modules/crypto/browser_provider.js +7 -11
  209. package/dist/modules/crypto/browser_provider.js.map +1 -1
  210. package/dist/modules/crypto/index.d.ts +6 -6
  211. package/dist/modules/crypto/index.d.ts.map +1 -1
  212. package/dist/modules/crypto/index.js +12 -30
  213. package/dist/modules/crypto/index.js.map +1 -1
  214. package/dist/modules/crypto/node_provider.d.ts +1 -1
  215. package/dist/modules/crypto/node_provider.d.ts.map +1 -1
  216. package/dist/modules/crypto/node_provider.js +3 -5
  217. package/dist/modules/crypto/node_provider.js.map +1 -1
  218. package/dist/modules/crypto/provider.js +1 -2
  219. package/dist/modules/crypto/pure_ripemd160.js +1 -3
  220. package/dist/modules/crypto/pure_ripemd160.js.map +1 -1
  221. package/dist/modules/crypto/pure_scrypt.js +1 -4
  222. package/dist/modules/crypto/pure_scrypt.js.map +1 -1
  223. package/dist/modules/crypto/pure_secp256k1.d.ts +1 -1
  224. package/dist/modules/crypto/pure_secp256k1.d.ts.map +1 -1
  225. package/dist/modules/crypto/pure_secp256k1.js +1 -16
  226. package/dist/modules/crypto/pure_secp256k1.js.map +1 -1
  227. package/dist/modules/crypto/sync.d.ts.map +1 -1
  228. package/dist/modules/crypto/sync.js +16 -17
  229. package/dist/modules/crypto/sync.js.map +1 -1
  230. package/dist/modules/daemon_node_health.js +14 -16
  231. package/dist/modules/daemon_node_health.js.map +1 -1
  232. package/dist/modules/dexbot_class.d.ts +19 -14
  233. package/dist/modules/dexbot_class.d.ts.map +1 -1
  234. package/dist/modules/dexbot_class.js +127 -164
  235. package/dist/modules/dexbot_class.js.map +1 -1
  236. package/dist/modules/dexbot_cow_runtime.d.ts +28 -27
  237. package/dist/modules/dexbot_cow_runtime.d.ts.map +1 -1
  238. package/dist/modules/dexbot_cow_runtime.js +55 -45
  239. package/dist/modules/dexbot_cow_runtime.js.map +1 -1
  240. package/dist/modules/dexbot_credential_client.d.ts +6 -2
  241. package/dist/modules/dexbot_credential_client.d.ts.map +1 -1
  242. package/dist/modules/dexbot_credential_client.js +21 -31
  243. package/dist/modules/dexbot_credential_client.js.map +1 -1
  244. package/dist/modules/dexbot_fill_runtime.d.ts +23 -23
  245. package/dist/modules/dexbot_fill_runtime.d.ts.map +1 -1
  246. package/dist/modules/dexbot_fill_runtime.js +119 -77
  247. package/dist/modules/dexbot_fill_runtime.js.map +1 -1
  248. package/dist/modules/dexbot_maintenance_runtime.d.ts +46 -38
  249. package/dist/modules/dexbot_maintenance_runtime.d.ts.map +1 -1
  250. package/dist/modules/dexbot_maintenance_runtime.js +81 -81
  251. package/dist/modules/dexbot_maintenance_runtime.js.map +1 -1
  252. package/dist/modules/dexbot_startup_runtime.d.ts +3 -3
  253. package/dist/modules/dexbot_startup_runtime.d.ts.map +1 -1
  254. package/dist/modules/dexbot_startup_runtime.js +43 -81
  255. package/dist/modules/dexbot_startup_runtime.js.map +1 -1
  256. package/dist/modules/dexbot_state_recovery.d.ts +11 -11
  257. package/dist/modules/dexbot_state_recovery.js +32 -78
  258. package/dist/modules/dexbot_state_recovery.js.map +1 -1
  259. package/dist/modules/env.js +3 -7
  260. package/dist/modules/env.js.map +1 -1
  261. package/dist/modules/fund_registry.d.ts.map +1 -1
  262. package/dist/modules/fund_registry.js +12 -24
  263. package/dist/modules/fund_registry.js.map +1 -1
  264. package/dist/modules/general_settings.js +10 -16
  265. package/dist/modules/general_settings.js.map +1 -1
  266. package/dist/modules/graceful_shutdown.d.ts.map +1 -1
  267. package/dist/modules/graceful_shutdown.js +12 -19
  268. package/dist/modules/graceful_shutdown.js.map +1 -1
  269. package/dist/modules/key_store.d.ts.map +1 -1
  270. package/dist/modules/key_store.js +27 -65
  271. package/dist/modules/key_store.js.map +1 -1
  272. package/dist/modules/launcher/bot_supervisor.d.ts +1 -1
  273. package/dist/modules/launcher/bot_supervisor.d.ts.map +1 -1
  274. package/dist/modules/launcher/bot_supervisor.js +89 -118
  275. package/dist/modules/launcher/bot_supervisor.js.map +1 -1
  276. package/dist/modules/launcher/child_env.js +1 -5
  277. package/dist/modules/launcher/child_env.js.map +1 -1
  278. package/dist/modules/launcher/credential_bootstrap.js +22 -31
  279. package/dist/modules/launcher/credential_bootstrap.js.map +1 -1
  280. package/dist/modules/launcher/credential_daemon.js +37 -75
  281. package/dist/modules/launcher/credential_daemon.js.map +1 -1
  282. package/dist/modules/launcher/credential_secret.js +2 -37
  283. package/dist/modules/launcher/credential_secret.js.map +1 -1
  284. package/dist/modules/launcher/foreign_cred_daemon.js +25 -31
  285. package/dist/modules/launcher/foreign_cred_daemon.js.map +1 -1
  286. package/dist/modules/launcher/headless_password.js +10 -12
  287. package/dist/modules/launcher/headless_password.js.map +1 -1
  288. package/dist/modules/launcher/launch_modes.js +3 -9
  289. package/dist/modules/launcher/launch_modes.js.map +1 -1
  290. package/dist/modules/launcher/market_adapter_runtime.d.ts +1 -1
  291. package/dist/modules/launcher/market_adapter_runtime.d.ts.map +1 -1
  292. package/dist/modules/launcher/market_adapter_runtime.js +25 -35
  293. package/dist/modules/launcher/market_adapter_runtime.js.map +1 -1
  294. package/dist/modules/launcher/market_adapter_watchdog.d.ts.map +1 -1
  295. package/dist/modules/launcher/market_adapter_watchdog.js +42 -45
  296. package/dist/modules/launcher/market_adapter_watchdog.js.map +1 -1
  297. package/dist/modules/launcher/monolithic_runtime.d.ts +3 -2
  298. package/dist/modules/launcher/monolithic_runtime.d.ts.map +1 -1
  299. package/dist/modules/launcher/monolithic_runtime.js +97 -138
  300. package/dist/modules/launcher/monolithic_runtime.js.map +1 -1
  301. package/dist/modules/launcher/runtime_entry.d.ts +1 -11
  302. package/dist/modules/launcher/runtime_entry.d.ts.map +1 -1
  303. package/dist/modules/launcher/runtime_entry.js +12 -15
  304. package/dist/modules/launcher/runtime_entry.js.map +1 -1
  305. package/dist/modules/launcher/status_reporting.d.ts +1 -1
  306. package/dist/modules/launcher/status_reporting.d.ts.map +1 -1
  307. package/dist/modules/launcher/status_reporting.js +15 -36
  308. package/dist/modules/launcher/status_reporting.js.map +1 -1
  309. package/dist/modules/launcher/supervisor_control.js +4 -9
  310. package/dist/modules/launcher/supervisor_control.js.map +1 -1
  311. package/dist/modules/logger.d.ts +1 -1
  312. package/dist/modules/logger.d.ts.map +1 -1
  313. package/dist/modules/logger.js +3 -38
  314. package/dist/modules/logger.js.map +1 -1
  315. package/dist/modules/market_adapter_whitelist.js +9 -18
  316. package/dist/modules/market_adapter_whitelist.js.map +1 -1
  317. package/dist/modules/node_failure_ledger.js +1 -3
  318. package/dist/modules/node_failure_ledger.js.map +1 -1
  319. package/dist/modules/node_health_cache.d.ts.map +1 -1
  320. package/dist/modules/node_health_cache.js +15 -25
  321. package/dist/modules/node_health_cache.js.map +1 -1
  322. package/dist/modules/node_manager.d.ts +1 -1
  323. package/dist/modules/node_manager.d.ts.map +1 -1
  324. package/dist/modules/node_manager.js +44 -43
  325. package/dist/modules/node_manager.js.map +1 -1
  326. package/dist/modules/order/accounting.d.ts.map +1 -1
  327. package/dist/modules/order/accounting.js +102 -118
  328. package/dist/modules/order/accounting.js.map +1 -1
  329. package/dist/modules/order/async_lock.d.ts +3 -15
  330. package/dist/modules/order/async_lock.d.ts.map +1 -1
  331. package/dist/modules/order/async_lock.js +6 -26
  332. package/dist/modules/order/async_lock.js.map +1 -1
  333. package/dist/modules/order/export.js +34 -75
  334. package/dist/modules/order/export.js.map +1 -1
  335. package/dist/modules/order/format.d.ts +1 -3
  336. package/dist/modules/order/format.d.ts.map +1 -1
  337. package/dist/modules/order/format.js +4 -24
  338. package/dist/modules/order/format.js.map +1 -1
  339. package/dist/modules/order/grid.d.ts +8 -8
  340. package/dist/modules/order/grid.d.ts.map +1 -1
  341. package/dist/modules/order/grid.js +254 -266
  342. package/dist/modules/order/grid.js.map +1 -1
  343. package/dist/modules/order/grid_reconcile.d.ts.map +1 -1
  344. package/dist/modules/order/grid_reconcile.js +77 -94
  345. package/dist/modules/order/grid_reconcile.js.map +1 -1
  346. package/dist/modules/order/grid_reconcile_internal.d.ts.map +1 -1
  347. package/dist/modules/order/grid_reconcile_internal.js +117 -149
  348. package/dist/modules/order/grid_reconcile_internal.js.map +1 -1
  349. package/dist/modules/order/index.d.ts.map +1 -1
  350. package/dist/modules/order/index.js +11 -45
  351. package/dist/modules/order/index.js.map +1 -1
  352. package/dist/modules/order/logger.d.ts +0 -8
  353. package/dist/modules/order/logger.d.ts.map +1 -1
  354. package/dist/modules/order/logger.js +28 -141
  355. package/dist/modules/order/logger.js.map +1 -1
  356. package/dist/modules/order/logger_state.d.ts.map +1 -1
  357. package/dist/modules/order/logger_state.js +3 -4
  358. package/dist/modules/order/logger_state.js.map +1 -1
  359. package/dist/modules/order/manager.d.ts +10 -79
  360. package/dist/modules/order/manager.d.ts.map +1 -1
  361. package/dist/modules/order/manager.js +131 -247
  362. package/dist/modules/order/manager.js.map +1 -1
  363. package/dist/modules/order/processed_fill_store.js +2 -7
  364. package/dist/modules/order/processed_fill_store.js.map +1 -1
  365. package/dist/modules/order/strategy.js +23 -25
  366. package/dist/modules/order/strategy.js.map +1 -1
  367. package/dist/modules/order/sync_engine.d.ts +27 -0
  368. package/dist/modules/order/sync_engine.d.ts.map +1 -1
  369. package/dist/modules/order/sync_engine.js +232 -181
  370. package/dist/modules/order/sync_engine.js.map +1 -1
  371. package/dist/modules/order/utils/math.d.ts +1 -25
  372. package/dist/modules/order/utils/math.d.ts.map +1 -1
  373. package/dist/modules/order/utils/math.js +49 -172
  374. package/dist/modules/order/utils/math.js.map +1 -1
  375. package/dist/modules/order/utils/order.d.ts +46 -2
  376. package/dist/modules/order/utils/order.d.ts.map +1 -1
  377. package/dist/modules/order/utils/order.js +165 -143
  378. package/dist/modules/order/utils/order.js.map +1 -1
  379. package/dist/modules/order/utils/system.d.ts +3 -1
  380. package/dist/modules/order/utils/system.d.ts.map +1 -1
  381. package/dist/modules/order/utils/system.js +152 -211
  382. package/dist/modules/order/utils/system.js.map +1 -1
  383. package/dist/modules/order/utils/timeout.js +1 -4
  384. package/dist/modules/order/utils/timeout.js.map +1 -1
  385. package/dist/modules/order/utils/validate.js +91 -142
  386. package/dist/modules/order/utils/validate.js.map +1 -1
  387. package/dist/modules/order/utils/withPoolRef.js +21 -61
  388. package/dist/modules/order/utils/withPoolRef.js.map +1 -1
  389. package/dist/modules/order/working_grid.js +6 -9
  390. package/dist/modules/order/working_grid.js.map +1 -1
  391. package/dist/modules/path_api.d.ts.map +1 -1
  392. package/dist/modules/path_api.js +8 -11
  393. package/dist/modules/path_api.js.map +1 -1
  394. package/dist/modules/paths.d.ts.map +1 -1
  395. package/dist/modules/paths.js +61 -67
  396. package/dist/modules/paths.js.map +1 -1
  397. package/dist/modules/process_discovery.d.ts.map +1 -1
  398. package/dist/modules/process_discovery.js +14 -23
  399. package/dist/modules/process_discovery.js.map +1 -1
  400. package/dist/modules/runtime.js +7 -11
  401. package/dist/modules/runtime.js.map +1 -1
  402. package/dist/modules/runtime_settings.d.ts.map +1 -1
  403. package/dist/modules/runtime_settings.js +14 -16
  404. package/dist/modules/runtime_settings.js.map +1 -1
  405. package/dist/modules/settings_merge.js +1 -3
  406. package/dist/modules/settings_merge.js.map +1 -1
  407. package/dist/modules/socket_json_client.js +3 -5
  408. package/dist/modules/socket_json_client.js.map +1 -1
  409. package/dist/modules/storage/browser_adapter.js +1 -4
  410. package/dist/modules/storage/browser_adapter.js.map +1 -1
  411. package/dist/modules/storage/index.d.ts +3 -2
  412. package/dist/modules/storage/index.d.ts.map +1 -1
  413. package/dist/modules/storage/index.js +5 -8
  414. package/dist/modules/storage/index.js.map +1 -1
  415. package/dist/modules/storage/node_adapter.d.ts +3 -4
  416. package/dist/modules/storage/node_adapter.d.ts.map +1 -1
  417. package/dist/modules/storage/node_adapter.js +12 -16
  418. package/dist/modules/storage/node_adapter.js.map +1 -1
  419. package/dist/modules/storage/types.js +1 -2
  420. package/dist/modules/types.d.ts +0 -6
  421. package/dist/modules/types.d.ts.map +1 -1
  422. package/dist/modules/types.js +1 -2
  423. package/dist/modules/types.js.map +1 -1
  424. package/dist/modules/utils/base58check.js +8 -15
  425. package/dist/modules/utils/base58check.js.map +1 -1
  426. package/dist/modules/utils/build_dir.js +3 -7
  427. package/dist/modules/utils/build_dir.js.map +1 -1
  428. package/dist/modules/utils/errors.js +1 -5
  429. package/dist/modules/utils/errors.js.map +1 -1
  430. package/dist/modules/utils/math_utils.d.ts +1 -1
  431. package/dist/modules/utils/math_utils.d.ts.map +1 -1
  432. package/dist/modules/utils/math_utils.js +2 -7
  433. package/dist/modules/utils/math_utils.js.map +1 -1
  434. package/dist/modules/validate_profiles.d.ts.map +1 -1
  435. package/dist/modules/validate_profiles.js +18 -25
  436. package/dist/modules/validate_profiles.js.map +1 -1
  437. package/dist/pm2.d.ts +4 -70
  438. package/dist/pm2.d.ts.map +1 -1
  439. package/dist/pm2.js +106 -132
  440. package/dist/pm2.js.map +1 -1
  441. package/dist/scripts/analyze-git.js +13 -17
  442. package/dist/scripts/analyze-git.js.map +1 -1
  443. package/dist/scripts/analyze-orders.d.ts.map +1 -1
  444. package/dist/scripts/analyze-orders.js +48 -63
  445. package/dist/scripts/analyze-orders.js.map +1 -1
  446. package/dist/scripts/diagnose-kibana-candles.d.ts.map +1 -1
  447. package/dist/scripts/diagnose-kibana-candles.js +2 -1
  448. package/dist/scripts/diagnose-kibana-candles.js.map +1 -1
  449. package/dist/scripts/diagnose-pool-history.d.ts.map +1 -1
  450. package/dist/scripts/diagnose-pool-history.js +2 -1
  451. package/dist/scripts/diagnose-pool-history.js.map +1 -1
  452. package/dist/scripts/divergence-calc.d.ts.map +1 -1
  453. package/dist/scripts/divergence-calc.js +2 -2
  454. package/dist/scripts/divergence-calc.js.map +1 -1
  455. package/dist/scripts/fix-err-message.js +17 -22
  456. package/dist/scripts/fix-err-message.js.map +1 -1
  457. package/dist/scripts/generate_lp_chart.d.ts.map +1 -1
  458. package/dist/scripts/generate_lp_chart.js +7 -15
  459. package/dist/scripts/generate_lp_chart.js.map +1 -1
  460. package/dist/scripts/generate_mainnet_corpus_report.d.ts.map +1 -1
  461. package/dist/scripts/generate_mainnet_corpus_report.js +3 -2
  462. package/dist/scripts/generate_mainnet_corpus_report.js.map +1 -1
  463. package/dist/scripts/generate_market_adapter_whitelist.d.ts.map +1 -1
  464. package/dist/scripts/generate_market_adapter_whitelist.js +18 -24
  465. package/dist/scripts/generate_market_adapter_whitelist.js.map +1 -1
  466. package/dist/scripts/native_release_gates.js +15 -19
  467. package/dist/scripts/native_release_gates.js.map +1 -1
  468. package/dist/scripts/print_grid.d.ts.map +1 -1
  469. package/dist/scripts/print_grid.js +2 -2
  470. package/dist/scripts/print_grid.js.map +1 -1
  471. package/dist/scripts/run-tests.js +12 -17
  472. package/dist/scripts/run-tests.js.map +1 -1
  473. package/dist/scripts/runner.d.ts.map +1 -1
  474. package/dist/scripts/runner.js +18 -20
  475. package/dist/scripts/runner.js.map +1 -1
  476. package/dist/scripts/sync-version.js +2 -2
  477. package/dist/scripts/sync-version.js.map +1 -1
  478. package/dist/scripts/test-credit-renewal.d.ts.map +1 -1
  479. package/dist/scripts/test-credit-renewal.js +4 -3
  480. package/dist/scripts/test-credit-renewal.js.map +1 -1
  481. package/dist/scripts/update.js +93 -95
  482. package/dist/scripts/update.js.map +1 -1
  483. package/dist/scripts/validate_bots.d.ts.map +1 -1
  484. package/dist/scripts/validate_bots.js +2 -2
  485. package/dist/scripts/validate_bots.js.map +1 -1
  486. package/dist/scripts/verify-browser-bundle.js +12 -17
  487. package/dist/scripts/verify-browser-bundle.js.map +1 -1
  488. package/dist/unlock.d.ts +0 -30
  489. package/dist/unlock.d.ts.map +1 -1
  490. package/dist/unlock.js +258 -222
  491. package/dist/unlock.js.map +1 -1
  492. package/package.json +5 -8
  493. package/scripts/README.md +1 -1
  494. package/scripts/create-bot-symlinks.sh +2 -2
  495. package/dist/modules/utils/fs_utils.d.ts +0 -18
  496. package/dist/modules/utils/fs_utils.d.ts.map +0 -1
  497. package/dist/modules/utils/fs_utils.js +0 -32
  498. package/dist/modules/utils/fs_utils.js.map +0 -1
  499. package/dist/scripts/migrate_bot_keys.d.ts +0 -3
  500. package/dist/scripts/migrate_bot_keys.d.ts.map +0 -1
  501. package/dist/scripts/migrate_bot_keys.js +0 -225
  502. package/dist/scripts/migrate_bot_keys.js.map +0 -1
@@ -1,31 +1,21 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.AMA_SLOPE_PERCENT_MODE_PER_BAR = exports.MarketAdapterService = void 0;
7
- exports.normalizeAmaSlopePercentMode = normalizeAmaSlopePercentMode;
8
- exports.normalizeAmaSlopeLookbackBars = normalizeAmaSlopeLookbackBars;
9
- exports.convertSlopePercentToPerBar = convertSlopePercentToPerBar;
10
- const calculator_1 = require("./strategies/atr/calculator");
11
- const chain_1 = require("../utils/chain");
12
- const regime_gate_1 = require("./strategies/regime_gate");
13
- const ama_1 = require("./strategies/ama");
14
- const kalman_trend_analyzer_1 = require("../../analysis/trend_detection/kalman_trend_analyzer");
15
- const collateral_manager_1 = require("./strategies/collateral_manager");
16
- const constants_1 = require("../../modules/constants");
17
- const order_1 = require("../../modules/order/utils/order");
18
- const logger_1 = __importDefault(require("../../modules/logger"));
19
- const math_utils_1 = require("../../modules/utils/math_utils");
1
+ import { calculateATR } from './strategies/atr/calculator.js';
2
+ import { normalizeMarketSource, hasNumericStartPrice, resolveMarketSourceForBot } from '../utils/chain.js';
3
+ import { computeRegimeMultiplier } from './strategies/regime_gate.js';
4
+ import { calculateAMA, getAmaWarmupBars } from './strategies/ama.js';
5
+ import { KalmanTrendAnalyzer } from '../../analysis/trend_detection/kalman_trend_analyzer.js';
6
+ import { adjustCollateralRatio } from './strategies/collateral_manager.js';
7
+ import { DEFAULT_CONFIG, MARKET_ADAPTER } from '../../modules/constants.js';
8
+ import { resolveConfiguredPriceBound } from '../../modules/order/utils/order.js';
9
+ import Logger from '../../modules/logger.js';
10
+ import { roundTo } from '../../modules/utils/math_utils.js';
20
11
  'use strict';
21
- const ama_slope_model_js_1 = require("./strategies/ama_slope_model.js");
22
- const config_normalizers_js_1 = require("./config_normalizers.js");
23
- const kalman_velocity_smoothing_js_1 = require("../../analysis/trend_detection/kalman_velocity_smoothing.js");
24
- const asymmetric_bounds_js_1 = require("./asymmetric_bounds.js");
25
- const errors_1 = require("../../modules/utils/errors");
26
- const marketAdapterServiceLogger = new logger_1.default('MarketAdapterService');
12
+ import { computeAmaSlopeWeights, computeAverageAmaSlopePct, } from './strategies/ama_slope_model.js';
13
+ import { normalizeAtrPeriod, normalizeMaxVolatilityOffset, normalizeVolatilityThreshold, } from './config_normalizers.js';
14
+ import { buildKalmanVelocitySeries, computeAbsolutePercentileThreshold, } from '../../analysis/trend_detection/kalman_velocity_smoothing.js';
15
+ import { resolveMaxAsymmetryFactor, computeAsymmetricBoundsMetrics, } from './asymmetric_bounds.js';
16
+ import { getErrorMessage } from '../../modules/utils/errors.js';
17
+ const marketAdapterServiceLogger = new Logger('MarketAdapterService');
27
18
  const AMA_SLOPE_PERCENT_MODE_PER_BAR = 'perBar';
28
- exports.AMA_SLOPE_PERCENT_MODE_PER_BAR = AMA_SLOPE_PERCENT_MODE_PER_BAR;
29
19
  const AMA_SLOPE_PERCENT_MODE_WINDOW = 'window';
30
20
  function normalizeAmaSlopePercentMode(value) {
31
21
  const text = String(value || '').trim().toLowerCase();
@@ -37,7 +27,7 @@ function normalizeAmaSlopePercentMode(value) {
37
27
  }
38
28
  return null;
39
29
  }
40
- function normalizeAmaSlopeLookbackBars(value, fallback = constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_AMA_LOOKBACK_BARS) {
30
+ function normalizeAmaSlopeLookbackBars(value, fallback = MARKET_ADAPTER.DYNAMIC_WEIGHT_AMA_LOOKBACK_BARS) {
41
31
  const n = Number(value);
42
32
  if (Number.isFinite(n) && n > 0)
43
33
  return Math.ceil(n);
@@ -79,7 +69,7 @@ function computeGridPriceOffsetPlan(bot, amaSlope) {
79
69
  const targetSpreadPercentRaw = Number(bot?.targetSpreadPercent);
80
70
  const targetSpreadPercent = Number.isFinite(targetSpreadPercentRaw) && targetSpreadPercentRaw > 0
81
71
  ? targetSpreadPercentRaw
82
- : Number(constants_1.DEFAULT_CONFIG.targetSpreadPercent);
72
+ : Number(DEFAULT_CONFIG.targetSpreadPercent);
83
73
  const maxGridPriceOffsetPct = targetSpreadPercent / 2;
84
74
  const trend = amaSlope?.trend;
85
75
  const rawSlopeOffset = Number(amaSlope?.rawSlopeOffset);
@@ -91,14 +81,14 @@ function computeGridPriceOffsetPlan(bot, amaSlope) {
91
81
  ? Math.min(directionalSlope / maxSlopeOffset, 1)
92
82
  : 0;
93
83
  const direction = trend === 'UP' ? 1 : trend === 'DOWN' ? -1 : 0;
94
- const gridPriceOffsetPct = (0, math_utils_1.roundTo)(direction * slopeRatio * maxGridPriceOffsetPct, 1e6) || 0;
84
+ const gridPriceOffsetPct = roundTo(direction * slopeRatio * maxGridPriceOffsetPct, 1e6) || 0;
95
85
  return {
96
86
  trend: trend || 'NEUTRAL',
97
87
  rawSlopeOffset: Number.isFinite(rawSlopeOffset) ? rawSlopeOffset : null,
98
88
  maxSlopeOffset: Number.isFinite(maxSlopeOffset) ? maxSlopeOffset : null,
99
- slopeRatio: (0, math_utils_1.roundTo)(slopeRatio, 1e6) || 0,
100
- targetSpreadPercent: (0, math_utils_1.roundTo)(targetSpreadPercent, 1e6),
101
- maxGridPriceOffsetPct: (0, math_utils_1.roundTo)(maxGridPriceOffsetPct, 1e6),
89
+ slopeRatio: roundTo(slopeRatio, 1e6) || 0,
90
+ targetSpreadPercent: roundTo(targetSpreadPercent, 1e6),
91
+ maxGridPriceOffsetPct: roundTo(maxGridPriceOffsetPct, 1e6),
102
92
  gridPriceOffsetPct,
103
93
  };
104
94
  }
@@ -172,7 +162,7 @@ class MarketAdapterService {
172
162
  : 1;
173
163
  const maxCandles = Number.isFinite(cfg?.maxNativeGapFillCandles)
174
164
  ? cfg.maxNativeGapFillCandles
175
- : constants_1.MARKET_ADAPTER.STALE_TAIL_THRESHOLD_CANDLES;
165
+ : MARKET_ADAPTER.STALE_TAIL_THRESHOLD_CANDLES;
176
166
  // Include the candle before and after the missing run so Kibana repair
177
167
  // does not truncate a valid threshold-sized gap while still respecting
178
168
  // the configured "trust native no-trade up to N candles" threshold.
@@ -181,7 +171,7 @@ class MarketAdapterService {
181
171
  getTrustedNoTradeGapThresholdCandles(cfg) {
182
172
  return Number.isFinite(cfg?.maxNativeGapFillCandles)
183
173
  ? cfg.maxNativeGapFillCandles
184
- : constants_1.MARKET_ADAPTER.STALE_TAIL_THRESHOLD_CANDLES;
174
+ : MARKET_ADAPTER.STALE_TAIL_THRESHOLD_CANDLES;
185
175
  }
186
176
  fillNativeIncrementalClosedGaps(candles, previousLastTs, intervalSeconds, nowMs = this.getNowMs()) {
187
177
  const deps = this.deps;
@@ -344,29 +334,29 @@ class MarketAdapterService {
344
334
  return centerPrice;
345
335
  try {
346
336
  const startPrice = Number.isFinite(ref) && ref > 0 ? ref : base;
347
- const minP = (0, order_1.resolveConfiguredPriceBound)(bot?.minPrice, constants_1.DEFAULT_CONFIG.minPrice, startPrice, 'min') ?? 0;
348
- const maxP = (0, order_1.resolveConfiguredPriceBound)(bot?.maxPrice, constants_1.DEFAULT_CONFIG.maxPrice, startPrice, 'max') ?? 0;
337
+ const minP = resolveConfiguredPriceBound(bot?.minPrice, DEFAULT_CONFIG.minPrice, startPrice, 'min') ?? 0;
338
+ const maxP = resolveConfiguredPriceBound(bot?.maxPrice, DEFAULT_CONFIG.maxPrice, startPrice, 'max') ?? 0;
349
339
  if (!Number.isFinite(minP) || !Number.isFinite(maxP))
350
340
  return base;
351
341
  return Math.min(maxP, Math.max(minP, base));
352
342
  }
353
343
  catch (err) {
354
- throw new Error(`clampGridPriceToBounds: failed to resolve bounds: ${(0, errors_1.getErrorMessage)(err)}`);
344
+ throw new Error(`clampGridPriceToBounds: failed to resolve bounds: ${getErrorMessage(err)}`);
355
345
  }
356
346
  }
357
347
  computeAppliedAsymmetryMetrics(bot, centerPrice, dynamicWeights) {
358
- const maxAsymmetryFactor = (0, asymmetric_bounds_js_1.resolveMaxAsymmetryFactor)(bot?.asymmetricBounds?.maxAsymmetryFactor, dynamicWeights?.maxAsymmetryFactor, constants_1.MARKET_ADAPTER.ASYMMETRIC_BOUNDS_MAX_ASYMMETRY_FACTOR);
348
+ const maxAsymmetryFactor = resolveMaxAsymmetryFactor(bot?.asymmetricBounds?.maxAsymmetryFactor, dynamicWeights?.maxAsymmetryFactor, MARKET_ADAPTER.ASYMMETRIC_BOUNDS_MAX_ASYMMETRY_FACTOR);
359
349
  let minP = null;
360
350
  let maxP = null;
361
351
  try {
362
- minP = (0, order_1.resolveConfiguredPriceBound)(bot?.minPrice, constants_1.DEFAULT_CONFIG.minPrice, centerPrice, 'min');
363
- maxP = (0, order_1.resolveConfiguredPriceBound)(bot?.maxPrice, constants_1.DEFAULT_CONFIG.maxPrice, centerPrice, 'max');
352
+ minP = resolveConfiguredPriceBound(bot?.minPrice, DEFAULT_CONFIG.minPrice, centerPrice, 'min');
353
+ maxP = resolveConfiguredPriceBound(bot?.maxPrice, DEFAULT_CONFIG.maxPrice, centerPrice, 'max');
364
354
  }
365
355
  catch (_) {
366
356
  // Intentional: if bound resolution fails, minP/maxP stay null.
367
357
  // computeAsymmetricBoundsMetrics handles null bounds with safe defaults.
368
358
  }
369
- return (0, asymmetric_bounds_js_1.computeAsymmetricBoundsMetrics)({
359
+ return computeAsymmetricBoundsMetrics({
370
360
  centerPrice,
371
361
  minPrice: minP,
372
362
  maxPrice: maxP,
@@ -536,16 +526,16 @@ class MarketAdapterService {
536
526
  }
537
527
  _computeDynamicWeights(params) {
538
528
  const { closes, amaValues, lookbackBars, botAma, weightVariance, nowIso, cfg, bot, atrPeriod } = params;
539
- const clipPercentile = cfg.clipPercentile ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_CLIP_PERCENTILE;
540
- const nz = cfg.amaSlope?.neutralZonePct ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_AMA_NEUTRAL_ZONE_PCT;
541
- const amaMaxS = cfg.amaSlope?.maxSlopePct ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_AMA_MAX_SLOPE_PCT;
529
+ const clipPercentile = cfg.clipPercentile ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_CLIP_PERCENTILE;
530
+ const nz = cfg.amaSlope?.neutralZonePct ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_AMA_NEUTRAL_ZONE_PCT;
531
+ const amaMaxS = cfg.amaSlope?.maxSlopePct ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_AMA_MAX_SLOPE_PCT;
542
532
  const kalMaxS = cfg.kalmanSlope?.maxSlopePct
543
- ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_MAX_SLOPE_PCT;
544
- const mo = cfg.maxSlopeOffset ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_ASYMMETRIC_OFFSET_CLAMP;
545
- const volatilityClamp = (0, config_normalizers_js_1.normalizeMaxVolatilityOffset)(cfg.maxVolatilityOffset);
546
- const volatilityThreshold = (0, config_normalizers_js_1.normalizeVolatilityThreshold)(cfg.volatilityThreshold);
547
- const volatilityExponent = cfg.volatilityExponent ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_VOLATILITY_EXPONENT;
548
- const volatilityScaleX = cfg.volatilityScaleX ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_VOLATILITY_SCALE_X_DEFAULT;
533
+ ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_MAX_SLOPE_PCT;
534
+ const mo = cfg.maxSlopeOffset ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_ASYMMETRIC_OFFSET_CLAMP;
535
+ const volatilityClamp = normalizeMaxVolatilityOffset(cfg.maxVolatilityOffset);
536
+ const volatilityThreshold = normalizeVolatilityThreshold(cfg.volatilityThreshold);
537
+ const volatilityExponent = cfg.volatilityExponent ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_VOLATILITY_EXPONENT;
538
+ const volatilityScaleX = cfg.volatilityScaleX ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_VOLATILITY_SCALE_X_DEFAULT;
549
539
  // Compute separate clip thresholds for AMA (slopes) and Kalman (velocities)
550
540
  let amaClipThreshold = Infinity;
551
541
  let kalClipThreshold = Infinity;
@@ -557,7 +547,7 @@ class MarketAdapterService {
557
547
  for (let i = amaSlopeReadyBars; i < amaValues.length; i++) {
558
548
  const last = amaValues[i];
559
549
  const past = amaValues[i - lookbackBars];
560
- const slopePct = (0, ama_slope_model_js_1.computeAverageAmaSlopePct)(last, past, lookbackBars);
550
+ const slopePct = computeAverageAmaSlopePct(last, past, lookbackBars);
561
551
  if (Number.isFinite(slopePct))
562
552
  amaSlopes.push(Math.abs(slopePct));
563
553
  }
@@ -581,12 +571,12 @@ class MarketAdapterService {
581
571
  clipPercentile,
582
572
  clipThreshold: amaClipThreshold,
583
573
  };
584
- const slopeResult = (0, ama_slope_model_js_1.computeAmaSlopeWeights)(amaValues, weightVariance, slopeCfg);
574
+ const slopeResult = computeAmaSlopeWeights(amaValues, weightVariance, slopeCfg);
585
575
  // Kalman filter computation - collect per-bar results in single pass
586
- const kalman = new kalman_trend_analyzer_1.KalmanTrendAnalyzer({
587
- rNoise: cfg.kalman?.rNoise ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_R_NOISE_DEFAULT,
588
- qTactical: cfg.kalman?.qTactical ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_Q_TACTICAL_DEFAULT,
589
- qModal: cfg.kalman?.qModal ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_Q_MODAL_DEFAULT,
576
+ const kalman = new KalmanTrendAnalyzer({
577
+ rNoise: cfg.kalman?.rNoise ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_R_NOISE_DEFAULT,
578
+ qTactical: cfg.kalman?.qTactical ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_Q_TACTICAL_DEFAULT,
579
+ qModal: cfg.kalman?.qModal ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_Q_MODAL_DEFAULT,
590
580
  warmupBars: cfg.kalman?.warmupBars ?? 20,
591
581
  });
592
582
  const kalmanHistory = [];
@@ -597,13 +587,13 @@ class MarketAdapterService {
597
587
  const kalmanResult = kalmanHistory[kalmanHistory.length - 1];
598
588
  const kalmanWarmupBars = kalman.warmupBars ?? 20;
599
589
  // Regime gate (Hurst + PE bilinear multiplier)
600
- const regimeSensitivity = cfg.regimeSensitivity ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_REGIME_SENSITIVITY;
601
- const absoluteThreshold = cfg.absoluteThreshold ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_ABSOLUTE_THRESHOLD_DEFAULT;
590
+ const regimeSensitivity = cfg.regimeSensitivity ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_REGIME_SENSITIVITY;
591
+ const absoluteThreshold = cfg.absoluteThreshold ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_ABSOLUTE_THRESHOLD_DEFAULT;
602
592
  let regimeResult = null;
603
593
  let regimeMultiplier = 1.0;
604
594
  const regimeMultipliers = new Array(closes.length).fill(1.0);
605
595
  if (regimeSensitivity > 0) {
606
- regimeResult = (0, regime_gate_1.computeRegimeMultiplier)(closes, {
596
+ regimeResult = computeRegimeMultiplier(closes, {
607
597
  regimeSensitivity,
608
598
  regimeTable: cfg.regimeTable,
609
599
  hurstZoneBand: cfg.hurstZoneBand,
@@ -619,17 +609,17 @@ class MarketAdapterService {
619
609
  }
620
610
  }
621
611
  }
622
- const alpha = cfg.alpha ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_ALPHA;
623
- const dw = cfg.dw ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_DW;
624
- const gain = cfg.gain ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_GAIN;
625
- const kalmanSmoothPct = cfg.kalmanSmoothPct ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_SMOOTH_PCT_DEFAULT;
626
- const kalmanDispScaleMult = cfg.kalmanDispScaleMult ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_DISP_SCALE_MULT_DEFAULT;
627
- const kalmanDispThresholdMult = cfg.kalmanDispThresholdMult ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_DISP_THRESHOLD_MULT_DEFAULT;
628
- const kalmanSmoothSpanPct = cfg.kalmanSmoothSpanPct ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_SMOOTH_SPAN_PCT_DEFAULT;
629
- const signalConfirmBars = cfg.signalConfirmBars ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_SIGNAL_CONFIRM_BARS_DEFAULT;
612
+ const alpha = cfg.alpha ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_ALPHA;
613
+ const dw = cfg.dw ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_DW;
614
+ const gain = cfg.gain ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_GAIN;
615
+ const kalmanSmoothPct = cfg.kalmanSmoothPct ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_SMOOTH_PCT_DEFAULT;
616
+ const kalmanDispScaleMult = cfg.kalmanDispScaleMult ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_DISP_SCALE_MULT_DEFAULT;
617
+ const kalmanDispThresholdMult = cfg.kalmanDispThresholdMult ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_DISP_THRESHOLD_MULT_DEFAULT;
618
+ const kalmanSmoothSpanPct = cfg.kalmanSmoothSpanPct ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_KALMAN_SMOOTH_SPAN_PCT_DEFAULT;
619
+ const signalConfirmBars = cfg.signalConfirmBars ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_SIGNAL_CONFIRM_BARS_DEFAULT;
630
620
  const minOutputThreshold = cfg.minOutputThreshold
631
- ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_ASYMMETRIC_TREND_THRESHOLD;
632
- const dispScaleMinPct = cfg.dispScaleMinPct ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_DISP_SCALE_MIN_PCT;
621
+ ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_ASYMMETRIC_TREND_THRESHOLD;
622
+ const dispScaleMinPct = cfg.dispScaleMinPct ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_DISP_SCALE_MIN_PCT;
633
623
  const hasDirectionalOffset = mo > 0;
634
624
  const useAmaBlend = hasDirectionalOffset && alpha !== 0;
635
625
  const useKalmanBlend = hasDirectionalOffset && alpha !== 1;
@@ -640,14 +630,14 @@ class MarketAdapterService {
640
630
  let amaOffsets = new Array(closes.length).fill(0);
641
631
  let kalmanOffsets = new Array(closes.length).fill(0);
642
632
  if (useKalmanBlend) {
643
- kalmanSmoothedVelocityPct = (0, kalman_velocity_smoothing_js_1.buildKalmanVelocitySeries)(kalmanHistory, {
633
+ kalmanSmoothedVelocityPct = buildKalmanVelocitySeries(kalmanHistory, {
644
634
  kalmanSmoothPct,
645
635
  kalmanDispScaleMult,
646
636
  kalmanDispThresholdMult,
647
637
  kalmanSmoothSpanPct,
648
638
  });
649
639
  kalClipThreshold = useClipThreshold
650
- ? (0, kalman_velocity_smoothing_js_1.computeAbsolutePercentileThreshold)(kalmanSmoothedVelocityPct.slice(kalmanWarmupBars), clipPercentile, Infinity)
640
+ ? computeAbsolutePercentileThreshold(kalmanSmoothedVelocityPct.slice(kalmanWarmupBars), clipPercentile, Infinity)
651
641
  : Infinity;
652
642
  for (let i = 0; i < kalmanHistory.length; i++) {
653
643
  const kr = kalmanHistory[i];
@@ -673,7 +663,7 @@ class MarketAdapterService {
673
663
  const past = amaValues[i - lookbackBars];
674
664
  if (!Number.isFinite(last) || !Number.isFinite(past) || past === 0)
675
665
  continue;
676
- const sp = (0, ama_slope_model_js_1.computeAverageAmaSlopePct)(last, past, lookbackBars);
666
+ const sp = computeAverageAmaSlopePct(last, past, lookbackBars);
677
667
  if (!Number.isFinite(sp))
678
668
  continue;
679
669
  const csp = Math.max(-amaClipThreshold, Math.min(amaClipThreshold, sp));
@@ -682,7 +672,7 @@ class MarketAdapterService {
682
672
  : 0;
683
673
  }
684
674
  }
685
- const offsetClamp = cfg.maxSlopeOffset ?? constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_ASYMMETRIC_OFFSET_CLAMP;
675
+ const offsetClamp = cfg.maxSlopeOffset ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_ASYMMETRIC_OFFSET_CLAMP;
686
676
  const channelNorm = Math.max(Math.abs(offsetClamp), 1e-9);
687
677
  const outputThreshold = minOutputThreshold;
688
678
  const outputThresholdIsZero = zeroOutputThreshold;
@@ -708,7 +698,7 @@ class MarketAdapterService {
708
698
  : (Math.abs(regimeAdjusted) < outputThreshold ? 0 : regimeAdjusted);
709
699
  const off = Math.max(-offsetClamp, Math.min(offsetClamp, gatedOff * gain));
710
700
  gatedOffSeries[i] = gatedOff;
711
- combinedOffSeries[i] = (0, math_utils_1.roundTo)(off, 1000);
701
+ combinedOffSeries[i] = roundTo(off, 1000);
712
702
  }
713
703
  const confirmBars = Math.max(0, Math.min(5, Math.round(signalConfirmBars)));
714
704
  let echoedOffSeries = new Array(closes.length).fill(0);
@@ -758,7 +748,7 @@ class MarketAdapterService {
758
748
  const finalOff = echoedOffSeries[echoedOffSeries.length - 1] ?? rawFinalOff;
759
749
  const lastAmaOffset = useAmaBlend ? (amaOffsets[amaOffsets.length - 1] ?? 0) : 0;
760
750
  const amaSlopeGated = slopeResult.isReady
761
- ? (0, math_utils_1.roundTo)(alpha * (lastAmaOffset / channelNorm) * gain * regimeMultiplier, 1000)
751
+ ? roundTo(alpha * (lastAmaOffset / channelNorm) * gain * regimeMultiplier, 1000)
762
752
  : 0;
763
753
  const amaSlope = {
764
754
  trend: slopeResult.trend,
@@ -792,14 +782,14 @@ class MarketAdapterService {
792
782
  };
793
783
  const staticSell = bot.weightDistribution.sell;
794
784
  const staticBuy = bot.weightDistribution.buy;
795
- const MIN_W = constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_MIN_WEIGHT;
796
- const MAX_W = constants_1.MARKET_ADAPTER.DYNAMIC_WEIGHT_MAX_WEIGHT;
785
+ const MIN_W = MARKET_ADAPTER.DYNAMIC_WEIGHT_MIN_WEIGHT;
786
+ const MAX_W = MARKET_ADAPTER.DYNAMIC_WEIGHT_MAX_WEIGHT;
797
787
  const clamp = (v, lo, hi) => Math.max(lo, Math.min(hi, v));
798
788
  const belowMinOutputThreshold = Math.abs(finalPreGainOff) < outputThreshold;
799
789
  const volPenalty = slopeResult.isReady ? (slopeResult.symmetricDelta ?? 0) : 0;
800
790
  const trendOff = belowMinOutputThreshold ? 0 : finalOff;
801
- const effectiveSell = (0, math_utils_1.roundTo)(clamp(staticSell - trendOff + volPenalty, MIN_W, MAX_W), 100);
802
- const effectiveBuy = (0, math_utils_1.roundTo)(clamp(staticBuy + trendOff + volPenalty, MIN_W, MAX_W), 100);
791
+ const effectiveSell = roundTo(clamp(staticSell - trendOff + volPenalty, MIN_W, MAX_W), 100);
792
+ const effectiveBuy = roundTo(clamp(staticBuy + trendOff + volPenalty, MIN_W, MAX_W), 100);
803
793
  const weights = {
804
794
  sell: effectiveSell,
805
795
  buy: effectiveBuy,
@@ -829,6 +819,9 @@ class MarketAdapterService {
829
819
  maxAsymmetryFactor: (cfg.asymmetricBounds?.maxAsymmetryFactor != null)
830
820
  ? cfg.asymmetricBounds.maxAsymmetryFactor
831
821
  : null,
822
+ minScaleSlots: (cfg.asymmetricBounds?.minScaleSlots != null)
823
+ ? cfg.asymmetricBounds.minScaleSlots
824
+ : null,
832
825
  clipPercentile,
833
826
  neutralZonePct: nz,
834
827
  volatilityThreshold,
@@ -891,6 +884,9 @@ class MarketAdapterService {
891
884
  maxAsymmetryFactor: (cfg.asymmetricBounds?.maxAsymmetryFactor != null)
892
885
  ? cfg.asymmetricBounds.maxAsymmetryFactor
893
886
  : null,
887
+ minScaleSlots: (cfg.asymmetricBounds?.minScaleSlots != null)
888
+ ? cfg.asymmetricBounds.minScaleSlots
889
+ : null,
894
890
  amaChannelContribution: amaSlopeGated,
895
891
  trend: slopeResult.trend,
896
892
  confidence: slopeResult.confidence,
@@ -922,7 +918,7 @@ class MarketAdapterService {
922
918
  if ((!bot.assetA && !bot.assetAId) || (!bot.assetB && !bot.assetBId)) {
923
919
  return { ok: false, reason: 'missing asset pair' };
924
920
  }
925
- if ((0, chain_1.hasNumericStartPrice)(bot?.startPrice)) {
921
+ if (hasNumericStartPrice(bot?.startPrice)) {
926
922
  const nowIso = new Date().toISOString();
927
923
  const thresholdPercent = typeof deps.calculateBotThreshold === 'function'
928
924
  ? deps.calculateBotThreshold(cfg)
@@ -963,12 +959,12 @@ class MarketAdapterService {
963
959
  const existing = deps.loadJson(filePath, null);
964
960
  const existingMeta = existing?.meta && typeof existing.meta === 'object' ? existing.meta : {};
965
961
  let existingCandles = Array.isArray(existing?.candles) ? existing.candles : [];
966
- const existingMarketSource = (0, chain_1.normalizeMarketSource)(existingMeta.marketSource);
967
- const marketSource = (0, chain_1.resolveMarketSourceForBot)(bot) || 'pool';
962
+ const existingMarketSource = normalizeMarketSource(existingMeta.marketSource);
963
+ const marketSource = resolveMarketSourceForBot(bot) || 'pool';
968
964
  const isBookSource = marketSource === 'book';
969
965
  const kibanaRequestTimeoutMs = Number.isFinite(cfg.kibanaRequestTimeoutMs) && cfg.kibanaRequestTimeoutMs > 0
970
966
  ? cfg.kibanaRequestTimeoutMs
971
- : constants_1.MARKET_ADAPTER.KIBANA_REQUEST_TIMEOUT_MS;
967
+ : MARKET_ADAPTER.KIBANA_REQUEST_TIMEOUT_MS;
972
968
  const fetchKibanaCandles = async (options = {}) => {
973
969
  const kibanaOptions = {
974
970
  timeout: kibanaRequestTimeoutMs,
@@ -976,7 +972,7 @@ class MarketAdapterService {
976
972
  };
977
973
  if (isBookSource) {
978
974
  if (!deps.kibanaMarketSource || typeof deps.kibanaMarketSource.getMarketCandles !== 'function') {
979
- throw new Error('orderbook candle source unavailable');
975
+ throw new Error('order book candle source unavailable');
980
976
  }
981
977
  return deps.kibanaMarketSource.getMarketCandles(ctx.assetA, ctx.assetB, kibanaOptions);
982
978
  }
@@ -1057,7 +1053,7 @@ class MarketAdapterService {
1057
1053
  if (existingCandles.length > 0) {
1058
1054
  const staleThreshold = Number.isFinite(cfg.staleTailThreshold)
1059
1055
  ? cfg.staleTailThreshold
1060
- : constants_1.MARKET_ADAPTER.STALE_TAIL_THRESHOLD_CANDLES;
1056
+ : MARKET_ADAPTER.STALE_TAIL_THRESHOLD_CANDLES;
1061
1057
  const verified = await verifyAndPruneStaleTail(existingCandles, staleThreshold, staleTailVerifiedRangeFromMeta());
1062
1058
  existingCandles = verified.candles;
1063
1059
  applyStaleTailVerificationMeta(verified);
@@ -1074,7 +1070,7 @@ class MarketAdapterService {
1074
1070
  existingMeta.staleTailVerifiedEndTs = null;
1075
1071
  }
1076
1072
  const needBootstrap = existingCandles.length === 0;
1077
- const amaWarmupBars = (0, ama_1.getAmaWarmupBars)(botAma.erPeriod, botAma.slowPeriod, lookbackBars, botAma.fastPeriod, botAma.erSmoothPeriod ?? 0);
1073
+ const amaWarmupBars = getAmaWarmupBars(botAma.erPeriod, botAma.slowPeriod, lookbackBars, botAma.fastPeriod, botAma.erSmoothPeriod ?? 0);
1078
1074
  const analysisKeepCount = amaWarmupBars + 1;
1079
1075
  // Retain one extra raw candle so the closed-candle analysis window still keeps a
1080
1076
  // full warmup/history set when the newest bucket is the current in-progress bar.
@@ -1219,11 +1215,11 @@ class MarketAdapterService {
1219
1215
  consolidateByTimestamp: true,
1220
1216
  fillGapsToRequestedRange: false,
1221
1217
  apiKey: null,
1222
- }), cfg.sourceRetries, cfg.retryDelayMs, 'kibana orderbook bootstrap failed');
1218
+ }), cfg.sourceRetries, cfg.retryDelayMs, 'kibana order book bootstrap failed');
1223
1219
  }
1224
1220
  catch (_) {
1225
1221
  if (typeof deps.logger?.warn === 'function')
1226
- deps.logger.warn(`[market_adapter] ${ctx.botKey}: kibana orderbook bootstrap failed`);
1222
+ deps.logger.warn(`[market_adapter] ${ctx.botKey}: kibana order book bootstrap failed`);
1227
1223
  }
1228
1224
  if (Array.isArray(kibanaCandles) && kibanaCandles.length > 0) {
1229
1225
  nextCandles = kibanaCandles;
@@ -1248,7 +1244,7 @@ class MarketAdapterService {
1248
1244
  sourceLabel = 'native-book-bootstrap';
1249
1245
  }
1250
1246
  else {
1251
- throw new Error('both kibana and native orderbook bootstrap failed');
1247
+ throw new Error('both kibana and native order book bootstrap failed');
1252
1248
  }
1253
1249
  }
1254
1250
  }
@@ -1284,7 +1280,7 @@ class MarketAdapterService {
1284
1280
  : 0;
1285
1281
  const maxNativeGapFill = Number.isFinite(cfg.maxNativeGapFillCandles)
1286
1282
  ? cfg.maxNativeGapFillCandles
1287
- : constants_1.MARKET_ADAPTER.STALE_TAIL_THRESHOLD_CANDLES;
1283
+ : MARKET_ADAPTER.STALE_TAIL_THRESHOLD_CANDLES;
1288
1284
  if (gapBuckets > maxNativeGapFill) {
1289
1285
  const verifiedSilence = await verifyAndFillLongSilence(nextCandles, lastTs, latestClosedBucketTs, sourceLabel, nativeCandles);
1290
1286
  nextCandles = verifiedSilence.candles;
@@ -1298,7 +1294,7 @@ class MarketAdapterService {
1298
1294
  if (nextCandles.length > 0) {
1299
1295
  const staleThreshold = Number.isFinite(cfg.staleTailThreshold)
1300
1296
  ? cfg.staleTailThreshold
1301
- : constants_1.MARKET_ADAPTER.STALE_TAIL_THRESHOLD_CANDLES;
1297
+ : MARKET_ADAPTER.STALE_TAIL_THRESHOLD_CANDLES;
1302
1298
  const verified = await verifyAndPruneStaleTail(nextCandles, staleThreshold, staleTailVerifiedRangeFromMeta());
1303
1299
  nextCandles = verified.candles;
1304
1300
  applyStaleTailVerificationMeta(verified);
@@ -1412,7 +1408,7 @@ class MarketAdapterService {
1412
1408
  }
1413
1409
  catch (overlapErr) {
1414
1410
  if (typeof deps.logger?.log === 'function') {
1415
- deps.logger.log(`[market_adapter] ${bot.botKey}: overlap fetch exhausted (${(0, errors_1.getErrorMessage)(overlapErr)}), falling back to time-based`, 'warn');
1411
+ deps.logger.log(`[market_adapter] ${bot.botKey}: overlap fetch exhausted (${getErrorMessage(overlapErr)}), falling back to time-based`, 'warn');
1416
1412
  }
1417
1413
  // Fall through to time-based path below
1418
1414
  }
@@ -1465,7 +1461,7 @@ class MarketAdapterService {
1465
1461
  }
1466
1462
  catch (err) {
1467
1463
  if (typeof deps.logger?.warn === 'function') {
1468
- deps.logger.warn(`[market_adapter] Native fetch failed for ${bot.botKey}; continuing with cached candles (${(0, errors_1.getErrorMessage)(err)})`);
1464
+ deps.logger.warn(`[market_adapter] Native fetch failed for ${bot.botKey}; continuing with cached candles (${getErrorMessage(err)})`);
1469
1465
  }
1470
1466
  nativePagesFetched = 0;
1471
1467
  nativeOverlapCount = null;
@@ -1477,7 +1473,7 @@ class MarketAdapterService {
1477
1473
  // Verifies with Kibana first to avoid removing genuinely flat market periods.
1478
1474
  const staleThreshold = Number.isFinite(cfg.staleTailThreshold)
1479
1475
  ? cfg.staleTailThreshold
1480
- : constants_1.MARKET_ADAPTER.STALE_TAIL_THRESHOLD_CANDLES;
1476
+ : MARKET_ADAPTER.STALE_TAIL_THRESHOLD_CANDLES;
1481
1477
  const verified = await verifyAndPruneStaleTail(nextCandles, staleThreshold, staleTailVerifiedRangeFromMeta());
1482
1478
  nextCandles = verified.candles;
1483
1479
  applyStaleTailVerificationMeta(verified);
@@ -1549,7 +1545,7 @@ class MarketAdapterService {
1549
1545
  }
1550
1546
  }
1551
1547
  catch (err) {
1552
- logGapRepairEvent(`[market_adapter] ${bot.botKey}: Kibana gap repair failed (${(0, errors_1.getErrorMessage)(err) || String(err)})`, 'warn');
1548
+ logGapRepairEvent(`[market_adapter] ${bot.botKey}: Kibana gap repair failed (${getErrorMessage(err) || String(err)})`, 'warn');
1553
1549
  }
1554
1550
  }
1555
1551
  gapAnalysis = typeof deps.detectMissingCandleTimestamps === 'function'
@@ -1807,14 +1803,14 @@ class MarketAdapterService {
1807
1803
  // 1. AMA series and closes — used for price reference and signal computation
1808
1804
  const analysisCandles = closedCandles;
1809
1805
  const closes = analysisCandles.map((c) => Number(c[4])).filter((v) => Number.isFinite(v) && v > 0);
1810
- const amaValues = (0, ama_1.calculateAMA)(closes, botAma);
1806
+ const amaValues = calculateAMA(closes, botAma);
1811
1807
  // amaPrice is the last value of the full AMA series
1812
1808
  const amaPrice = amaValues[amaValues.length - 1];
1813
1809
  const lastCandle = latestClosedCandle || [0, 0, 0, 0, 0];
1814
1810
  // 2. ATR — used only for the symmetric volatility shift. The asymmetrical
1815
1811
  // trend/Kalman branch stays ATR-free to match the research HTML.
1816
- const atrPeriod = (0, config_normalizers_js_1.normalizeAtrPeriod)(cfg.atrPeriod);
1817
- const atr = (0, calculator_1.calculateATR)(analysisCandles, atrPeriod);
1812
+ const atrPeriod = normalizeAtrPeriod(cfg.atrPeriod);
1813
+ const atr = calculateATR(analysisCandles, atrPeriod);
1818
1814
  const warn = (message) => {
1819
1815
  if (typeof deps.logger?.log === 'function') {
1820
1816
  deps.logger.log(message, 'warn');
@@ -1886,7 +1882,7 @@ class MarketAdapterService {
1886
1882
  const amaSlopeDeltaPercent = amaSlopeResetDetails.deltaPercent;
1887
1883
  const amaSlopeThresholdPercent = amaSlopeResetDetails.thresholdPercent;
1888
1884
  // 4. Advisory collateral-ratio hint only; execution is owned by the debt runtime.
1889
- const collateralRecommendation = canExposeDynamicWeights ? (0, collateral_manager_1.adjustCollateralRatio)(slopeResult, 1.5, 2.0) : null;
1885
+ const collateralRecommendation = canExposeDynamicWeights ? adjustCollateralRatio(slopeResult, 1.5, 2.0) : null;
1890
1886
  const amaComparison = deps.calcAmaComparison(analysisCandles, bot, ctx);
1891
1887
  const closedCandleTs = lastCandle[0] || null;
1892
1888
  const { staleData, staleAgeHours } = deps.computeCandleStaleness(closedCandleTs, cfg.maxStaleHours);
@@ -1956,6 +1952,9 @@ class MarketAdapterService {
1956
1952
  rawAsymmetryFactor: asymmetryMetrics.rawAsymmetryFactor,
1957
1953
  appliedAsymmetryFactor: asymmetryMetrics.appliedAsymmetryFactor,
1958
1954
  trend: asymTrend,
1955
+ minScaleSlots: (cfg.asymmetricBounds?.minScaleSlots != null)
1956
+ ? cfg.asymmetricBounds.minScaleSlots
1957
+ : MARKET_ADAPTER.ASYMMETRIC_BOUNDS_MIN_SCALE_SLOTS,
1959
1958
  };
1960
1959
  }
1961
1960
  }
@@ -2009,7 +2008,7 @@ class MarketAdapterService {
2009
2008
  });
2010
2009
  }
2011
2010
  catch (err) {
2012
- triggerCallbackError = (0, errors_1.getErrorMessage)(err);
2011
+ triggerCallbackError = getErrorMessage(err);
2013
2012
  }
2014
2013
  }
2015
2014
  };
@@ -2334,5 +2333,5 @@ class MarketAdapterService {
2334
2333
  };
2335
2334
  }
2336
2335
  }
2337
- exports.MarketAdapterService = MarketAdapterService;
2336
+ export { MarketAdapterService, AMA_SLOPE_PERCENT_MODE_PER_BAR, normalizeAmaSlopePercentMode, normalizeAmaSlopeLookbackBars, convertSlopePercentToPerBar };
2338
2337
  //# sourceMappingURL=market_adapter_service.js.map