dexbot 1.1.10

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 (807) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +287 -0
  3. package/claw/README.md +513 -0
  4. package/claw/scripts/memu_runner.py +385 -0
  5. package/claw/skills/bitshares-guide/SKILL.md +14 -0
  6. package/claw/skills/bitshares-guide/references/example-skill-shells.md +18 -0
  7. package/claw/skills/bitshares-guide/references/presentation-patterns.md +19 -0
  8. package/claw/skills/bitshares-guide/references/scope-guardrails.md +9 -0
  9. package/claw/skills/launcher-ops/SKILL.md +18 -0
  10. package/claw/skills/launcher-ops/references/launcher-workflow.md +23 -0
  11. package/claw/skills/margin-trading/SKILL.md +23 -0
  12. package/claw/skills/margin-trading/references/honest-asset-list.md +74 -0
  13. package/claw/skills/margin-trading/references/honest-assets.md +44 -0
  14. package/claw/skills/margin-trading/references/position-management.md +203 -0
  15. package/claw/skills/margin-trading/references/trading-concepts.md +80 -0
  16. package/claw/skills/memu-memory/SKILL.md +218 -0
  17. package/claw/skills/shared/references/js-automation-overview.md +24 -0
  18. package/claw/skills/shared/references/safety-and-staleness.md +11 -0
  19. package/claw/skills/shared/references/skill-boundaries.md +17 -0
  20. package/claw/skills/trend-detection/SKILL.md +33 -0
  21. package/claw/skills/trend-detection/agents/openai.yaml +3 -0
  22. package/claw/skills/trend-detection/references/service.md +45 -0
  23. package/dist/analysis/ama_fitting/analyze_ama_price_changes.d.ts +3 -0
  24. package/dist/analysis/ama_fitting/analyze_ama_price_changes.d.ts.map +1 -0
  25. package/dist/analysis/ama_fitting/analyze_ama_price_changes.js +149 -0
  26. package/dist/analysis/ama_fitting/analyze_ama_price_changes.js.map +1 -0
  27. package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.d.ts +3 -0
  28. package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.d.ts.map +1 -0
  29. package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.js +387 -0
  30. package/dist/analysis/ama_fitting/analyze_lambda_vs_slow.js.map +1 -0
  31. package/dist/analysis/ama_fitting/calibrate_convergence_er.d.ts +3 -0
  32. package/dist/analysis/ama_fitting/calibrate_convergence_er.d.ts.map +1 -0
  33. package/dist/analysis/ama_fitting/calibrate_convergence_er.js +200 -0
  34. package/dist/analysis/ama_fitting/calibrate_convergence_er.js.map +1 -0
  35. package/dist/analysis/ama_fitting/fetch_lp_candles.d.ts +3 -0
  36. package/dist/analysis/ama_fitting/fetch_lp_candles.d.ts.map +1 -0
  37. package/dist/analysis/ama_fitting/fetch_lp_candles.js +212 -0
  38. package/dist/analysis/ama_fitting/fetch_lp_candles.js.map +1 -0
  39. package/dist/analysis/ama_fitting/generate_unified_comparison_chart.d.ts +31 -0
  40. package/dist/analysis/ama_fitting/generate_unified_comparison_chart.d.ts.map +1 -0
  41. package/dist/analysis/ama_fitting/generate_unified_comparison_chart.js +249 -0
  42. package/dist/analysis/ama_fitting/generate_unified_comparison_chart.js.map +1 -0
  43. package/dist/analysis/ama_fitting/optimizer_high_resolution.d.ts +2 -0
  44. package/dist/analysis/ama_fitting/optimizer_high_resolution.d.ts.map +1 -0
  45. package/dist/analysis/ama_fitting/optimizer_high_resolution.js +782 -0
  46. package/dist/analysis/ama_fitting/optimizer_high_resolution.js.map +1 -0
  47. package/dist/analysis/analyze_derivatives.d.ts +95 -0
  48. package/dist/analysis/analyze_derivatives.d.ts.map +1 -0
  49. package/dist/analysis/analyze_derivatives.js +295 -0
  50. package/dist/analysis/analyze_derivatives.js.map +1 -0
  51. package/dist/analysis/analyze_dynamic_weight.d.ts +14 -0
  52. package/dist/analysis/analyze_dynamic_weight.d.ts.map +1 -0
  53. package/dist/analysis/analyze_dynamic_weight.js +208 -0
  54. package/dist/analysis/analyze_dynamic_weight.js.map +1 -0
  55. package/dist/analysis/analyze_kalman.d.ts +13 -0
  56. package/dist/analysis/analyze_kalman.d.ts.map +1 -0
  57. package/dist/analysis/analyze_kalman.js +123 -0
  58. package/dist/analysis/analyze_kalman.js.map +1 -0
  59. package/dist/analysis/analyze_regime.d.ts +20 -0
  60. package/dist/analysis/analyze_regime.d.ts.map +1 -0
  61. package/dist/analysis/analyze_regime.js +139 -0
  62. package/dist/analysis/analyze_regime.js.map +1 -0
  63. package/dist/analysis/analyze_regime_windows.d.ts +19 -0
  64. package/dist/analysis/analyze_regime_windows.d.ts.map +1 -0
  65. package/dist/analysis/analyze_regime_windows.js +413 -0
  66. package/dist/analysis/analyze_regime_windows.js.map +1 -0
  67. package/dist/analysis/analyze_risk_profile.d.ts +3 -0
  68. package/dist/analysis/analyze_risk_profile.d.ts.map +1 -0
  69. package/dist/analysis/analyze_risk_profile.js +159 -0
  70. package/dist/analysis/analyze_risk_profile.js.map +1 -0
  71. package/dist/analysis/analyze_trade_heatmap.d.ts +3 -0
  72. package/dist/analysis/analyze_trade_heatmap.d.ts.map +1 -0
  73. package/dist/analysis/analyze_trade_heatmap.js +367 -0
  74. package/dist/analysis/analyze_trade_heatmap.js.map +1 -0
  75. package/dist/analysis/analyze_volatility.d.ts +22 -0
  76. package/dist/analysis/analyze_volatility.d.ts.map +1 -0
  77. package/dist/analysis/analyze_volatility.js +172 -0
  78. package/dist/analysis/analyze_volatility.js.map +1 -0
  79. package/dist/analysis/bot_fitting/backtest_ama_sweep.d.ts +99 -0
  80. package/dist/analysis/bot_fitting/backtest_ama_sweep.d.ts.map +1 -0
  81. package/dist/analysis/bot_fitting/backtest_ama_sweep.js +804 -0
  82. package/dist/analysis/bot_fitting/backtest_ama_sweep.js.map +1 -0
  83. package/dist/analysis/bot_fitting/backtest_bot_fitting.d.ts +2 -0
  84. package/dist/analysis/bot_fitting/backtest_bot_fitting.d.ts.map +1 -0
  85. package/dist/analysis/bot_fitting/backtest_bot_fitting.js +347 -0
  86. package/dist/analysis/bot_fitting/backtest_bot_fitting.js.map +1 -0
  87. package/dist/analysis/bot_fitting/shared_utils.d.ts +15 -0
  88. package/dist/analysis/bot_fitting/shared_utils.d.ts.map +1 -0
  89. package/dist/analysis/bot_fitting/shared_utils.js +48 -0
  90. package/dist/analysis/bot_fitting/shared_utils.js.map +1 -0
  91. package/dist/analysis/bot_key_utils.d.ts +16 -0
  92. package/dist/analysis/bot_key_utils.d.ts.map +1 -0
  93. package/dist/analysis/bot_key_utils.js +61 -0
  94. package/dist/analysis/bot_key_utils.js.map +1 -0
  95. package/dist/analysis/bot_usage/discover_bot_accounts.d.ts +3 -0
  96. package/dist/analysis/bot_usage/discover_bot_accounts.d.ts.map +1 -0
  97. package/dist/analysis/bot_usage/discover_bot_accounts.js +498 -0
  98. package/dist/analysis/bot_usage/discover_bot_accounts.js.map +1 -0
  99. package/dist/analysis/bot_usage/kibana_bot_queries.d.ts +546 -0
  100. package/dist/analysis/bot_usage/kibana_bot_queries.d.ts.map +1 -0
  101. package/dist/analysis/bot_usage/kibana_bot_queries.js +427 -0
  102. package/dist/analysis/bot_usage/kibana_bot_queries.js.map +1 -0
  103. package/dist/analysis/chart_utils.d.ts +13 -0
  104. package/dist/analysis/chart_utils.d.ts.map +1 -0
  105. package/dist/analysis/chart_utils.js +142 -0
  106. package/dist/analysis/chart_utils.js.map +1 -0
  107. package/dist/analysis/derivative_chart_generator.d.ts +18 -0
  108. package/dist/analysis/derivative_chart_generator.d.ts.map +1 -0
  109. package/dist/analysis/derivative_chart_generator.js +896 -0
  110. package/dist/analysis/derivative_chart_generator.js.map +1 -0
  111. package/dist/analysis/math_utils.d.ts +35 -0
  112. package/dist/analysis/math_utils.d.ts.map +1 -0
  113. package/dist/analysis/math_utils.js +121 -0
  114. package/dist/analysis/math_utils.js.map +1 -0
  115. package/dist/analysis/price_sources.d.ts +34 -0
  116. package/dist/analysis/price_sources.d.ts.map +1 -0
  117. package/dist/analysis/price_sources.js +103 -0
  118. package/dist/analysis/price_sources.js.map +1 -0
  119. package/dist/analysis/trade_profitability.d.ts +115 -0
  120. package/dist/analysis/trade_profitability.d.ts.map +1 -0
  121. package/dist/analysis/trade_profitability.js +1247 -0
  122. package/dist/analysis/trade_profitability.js.map +1 -0
  123. package/dist/analysis/tradingview/analyze_tradingview.d.ts +38 -0
  124. package/dist/analysis/tradingview/analyze_tradingview.d.ts.map +1 -0
  125. package/dist/analysis/tradingview/analyze_tradingview.js +212 -0
  126. package/dist/analysis/tradingview/analyze_tradingview.js.map +1 -0
  127. package/dist/analysis/tradingview/tradingview_uplot_chart_generator.d.ts +9 -0
  128. package/dist/analysis/tradingview/tradingview_uplot_chart_generator.d.ts.map +1 -0
  129. package/dist/analysis/tradingview/tradingview_uplot_chart_generator.js +1717 -0
  130. package/dist/analysis/tradingview/tradingview_uplot_chart_generator.js.map +1 -0
  131. package/dist/analysis/trend_detection/derivative_analyzer.d.ts +250 -0
  132. package/dist/analysis/trend_detection/derivative_analyzer.d.ts.map +1 -0
  133. package/dist/analysis/trend_detection/derivative_analyzer.js +903 -0
  134. package/dist/analysis/trend_detection/derivative_analyzer.js.map +1 -0
  135. package/dist/analysis/trend_detection/dynamic_weight_chart_generator.d.ts +6 -0
  136. package/dist/analysis/trend_detection/dynamic_weight_chart_generator.d.ts.map +1 -0
  137. package/dist/analysis/trend_detection/dynamic_weight_chart_generator.js +1449 -0
  138. package/dist/analysis/trend_detection/dynamic_weight_chart_generator.js.map +1 -0
  139. package/dist/analysis/trend_detection/hurst_analyzer.d.ts +42 -0
  140. package/dist/analysis/trend_detection/hurst_analyzer.d.ts.map +1 -0
  141. package/dist/analysis/trend_detection/hurst_analyzer.js +159 -0
  142. package/dist/analysis/trend_detection/hurst_analyzer.js.map +1 -0
  143. package/dist/analysis/trend_detection/kalman_chart_generator.d.ts +6 -0
  144. package/dist/analysis/trend_detection/kalman_chart_generator.d.ts.map +1 -0
  145. package/dist/analysis/trend_detection/kalman_chart_generator.js +408 -0
  146. package/dist/analysis/trend_detection/kalman_chart_generator.js.map +1 -0
  147. package/dist/analysis/trend_detection/kalman_trend_analyzer.d.ts +103 -0
  148. package/dist/analysis/trend_detection/kalman_trend_analyzer.d.ts.map +1 -0
  149. package/dist/analysis/trend_detection/kalman_trend_analyzer.js +229 -0
  150. package/dist/analysis/trend_detection/kalman_trend_analyzer.js.map +1 -0
  151. package/dist/analysis/trend_detection/kalman_velocity_smoothing.d.ts +34 -0
  152. package/dist/analysis/trend_detection/kalman_velocity_smoothing.d.ts.map +1 -0
  153. package/dist/analysis/trend_detection/kalman_velocity_smoothing.js +89 -0
  154. package/dist/analysis/trend_detection/kalman_velocity_smoothing.js.map +1 -0
  155. package/dist/analysis/trend_detection/permutation_entropy_analyzer.d.ts +39 -0
  156. package/dist/analysis/trend_detection/permutation_entropy_analyzer.d.ts.map +1 -0
  157. package/dist/analysis/trend_detection/permutation_entropy_analyzer.js +132 -0
  158. package/dist/analysis/trend_detection/permutation_entropy_analyzer.js.map +1 -0
  159. package/dist/analysis/trend_detection/regime_chart_generator.d.ts +6 -0
  160. package/dist/analysis/trend_detection/regime_chart_generator.d.ts.map +1 -0
  161. package/dist/analysis/trend_detection/regime_chart_generator.js +345 -0
  162. package/dist/analysis/trend_detection/regime_chart_generator.js.map +1 -0
  163. package/dist/analysis/trend_detection/tests/test_kalman_trend.d.ts +2 -0
  164. package/dist/analysis/trend_detection/tests/test_kalman_trend.d.ts.map +1 -0
  165. package/dist/analysis/trend_detection/tests/test_kalman_trend.js +130 -0
  166. package/dist/analysis/trend_detection/tests/test_kalman_trend.js.map +1 -0
  167. package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.d.ts +2 -0
  168. package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.d.ts.map +1 -0
  169. package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.js +38 -0
  170. package/dist/analysis/trend_detection/tests/test_kalman_velocity_smoothing.js.map +1 -0
  171. package/dist/analysis/trend_detection/volatility_chart_generator.d.ts +6 -0
  172. package/dist/analysis/trend_detection/volatility_chart_generator.d.ts.map +1 -0
  173. package/dist/analysis/trend_detection/volatility_chart_generator.js +732 -0
  174. package/dist/analysis/trend_detection/volatility_chart_generator.js.map +1 -0
  175. package/dist/bot.d.ts +49 -0
  176. package/dist/bot.d.ts.map +1 -0
  177. package/dist/bot.js +221 -0
  178. package/dist/bot.js.map +1 -0
  179. package/dist/credential-daemon.d.ts +64 -0
  180. package/dist/credential-daemon.d.ts.map +1 -0
  181. package/dist/credential-daemon.js +987 -0
  182. package/dist/credential-daemon.js.map +1 -0
  183. package/dist/dexbot.d.ts +87 -0
  184. package/dist/dexbot.d.ts.map +1 -0
  185. package/dist/dexbot.js +1222 -0
  186. package/dist/dexbot.js.map +1 -0
  187. package/dist/market_adapter/ama_signal_runner.d.ts +3 -0
  188. package/dist/market_adapter/ama_signal_runner.d.ts.map +1 -0
  189. package/dist/market_adapter/ama_signal_runner.js +175 -0
  190. package/dist/market_adapter/ama_signal_runner.js.map +1 -0
  191. package/dist/market_adapter/candle_utils.d.ts +57 -0
  192. package/dist/market_adapter/candle_utils.d.ts.map +1 -0
  193. package/dist/market_adapter/candle_utils.js +252 -0
  194. package/dist/market_adapter/candle_utils.js.map +1 -0
  195. package/dist/market_adapter/core/asymmetric_bounds.d.ts +20 -0
  196. package/dist/market_adapter/core/asymmetric_bounds.d.ts.map +1 -0
  197. package/dist/market_adapter/core/asymmetric_bounds.js +88 -0
  198. package/dist/market_adapter/core/asymmetric_bounds.js.map +1 -0
  199. package/dist/market_adapter/core/config_normalizers.d.ts +10 -0
  200. package/dist/market_adapter/core/config_normalizers.d.ts.map +1 -0
  201. package/dist/market_adapter/core/config_normalizers.js +24 -0
  202. package/dist/market_adapter/core/config_normalizers.js.map +1 -0
  203. package/dist/market_adapter/core/kibana_candles.d.ts +74 -0
  204. package/dist/market_adapter/core/kibana_candles.d.ts.map +1 -0
  205. package/dist/market_adapter/core/kibana_candles.js +249 -0
  206. package/dist/market_adapter/core/kibana_candles.js.map +1 -0
  207. package/dist/market_adapter/core/kibana_client.d.ts +27 -0
  208. package/dist/market_adapter/core/kibana_client.d.ts.map +1 -0
  209. package/dist/market_adapter/core/kibana_client.js +120 -0
  210. package/dist/market_adapter/core/kibana_client.js.map +1 -0
  211. package/dist/market_adapter/core/kibana_market_candles.d.ts +143 -0
  212. package/dist/market_adapter/core/kibana_market_candles.d.ts.map +1 -0
  213. package/dist/market_adapter/core/kibana_market_candles.js +170 -0
  214. package/dist/market_adapter/core/kibana_market_candles.js.map +1 -0
  215. package/dist/market_adapter/core/market_adapter_service.d.ts +210 -0
  216. package/dist/market_adapter/core/market_adapter_service.d.ts.map +1 -0
  217. package/dist/market_adapter/core/market_adapter_service.js +2328 -0
  218. package/dist/market_adapter/core/market_adapter_service.js.map +1 -0
  219. package/dist/market_adapter/core/strategies/ama.d.ts +2 -0
  220. package/dist/market_adapter/core/strategies/ama.d.ts.map +1 -0
  221. package/dist/market_adapter/core/strategies/ama.js +138 -0
  222. package/dist/market_adapter/core/strategies/ama.js.map +1 -0
  223. package/dist/market_adapter/core/strategies/ama_slope_model.d.ts +50 -0
  224. package/dist/market_adapter/core/strategies/ama_slope_model.d.ts.map +1 -0
  225. package/dist/market_adapter/core/strategies/ama_slope_model.js +143 -0
  226. package/dist/market_adapter/core/strategies/ama_slope_model.js.map +1 -0
  227. package/dist/market_adapter/core/strategies/atr/calculator.d.ts +12 -0
  228. package/dist/market_adapter/core/strategies/atr/calculator.d.ts.map +1 -0
  229. package/dist/market_adapter/core/strategies/atr/calculator.js +47 -0
  230. package/dist/market_adapter/core/strategies/atr/calculator.js.map +1 -0
  231. package/dist/market_adapter/core/strategies/collateral_manager.d.ts +32 -0
  232. package/dist/market_adapter/core/strategies/collateral_manager.d.ts.map +1 -0
  233. package/dist/market_adapter/core/strategies/collateral_manager.js +68 -0
  234. package/dist/market_adapter/core/strategies/collateral_manager.js.map +1 -0
  235. package/dist/market_adapter/core/strategies/regime_gate.d.ts +66 -0
  236. package/dist/market_adapter/core/strategies/regime_gate.d.ts.map +1 -0
  237. package/dist/market_adapter/core/strategies/regime_gate.js +189 -0
  238. package/dist/market_adapter/core/strategies/regime_gate.js.map +1 -0
  239. package/dist/market_adapter/index.d.ts +10 -0
  240. package/dist/market_adapter/index.d.ts.map +1 -0
  241. package/dist/market_adapter/index.js +71 -0
  242. package/dist/market_adapter/index.js.map +1 -0
  243. package/dist/market_adapter/inputs/fetch_cex_synthetic_data.d.ts +3 -0
  244. package/dist/market_adapter/inputs/fetch_cex_synthetic_data.d.ts.map +1 -0
  245. package/dist/market_adapter/inputs/fetch_cex_synthetic_data.js +1165 -0
  246. package/dist/market_adapter/inputs/fetch_cex_synthetic_data.js.map +1 -0
  247. package/dist/market_adapter/inputs/fetch_lp_data.d.ts +54 -0
  248. package/dist/market_adapter/inputs/fetch_lp_data.d.ts.map +1 -0
  249. package/dist/market_adapter/inputs/fetch_lp_data.js +743 -0
  250. package/dist/market_adapter/inputs/fetch_lp_data.js.map +1 -0
  251. package/dist/market_adapter/inputs/kibana_source.d.ts +68 -0
  252. package/dist/market_adapter/inputs/kibana_source.d.ts.map +1 -0
  253. package/dist/market_adapter/inputs/kibana_source.js +143 -0
  254. package/dist/market_adapter/inputs/kibana_source.js.map +1 -0
  255. package/dist/market_adapter/interval_utils.d.ts +6 -0
  256. package/dist/market_adapter/interval_utils.d.ts.map +1 -0
  257. package/dist/market_adapter/interval_utils.js +14 -0
  258. package/dist/market_adapter/interval_utils.js.map +1 -0
  259. package/dist/market_adapter/log_format.d.ts +16 -0
  260. package/dist/market_adapter/log_format.d.ts.map +1 -0
  261. package/dist/market_adapter/log_format.js +72 -0
  262. package/dist/market_adapter/log_format.js.map +1 -0
  263. package/dist/market_adapter/lp_chart_core.d.ts +6 -0
  264. package/dist/market_adapter/lp_chart_core.d.ts.map +1 -0
  265. package/dist/market_adapter/lp_chart_core.js +874 -0
  266. package/dist/market_adapter/lp_chart_core.js.map +1 -0
  267. package/dist/market_adapter/lp_chart_runner.d.ts +135 -0
  268. package/dist/market_adapter/lp_chart_runner.d.ts.map +1 -0
  269. package/dist/market_adapter/lp_chart_runner.js +337 -0
  270. package/dist/market_adapter/lp_chart_runner.js.map +1 -0
  271. package/dist/market_adapter/lp_chart_strategy_loader.d.ts +23 -0
  272. package/dist/market_adapter/lp_chart_strategy_loader.d.ts.map +1 -0
  273. package/dist/market_adapter/lp_chart_strategy_loader.js +169 -0
  274. package/dist/market_adapter/lp_chart_strategy_loader.js.map +1 -0
  275. package/dist/market_adapter/market_adapter.d.ts +133 -0
  276. package/dist/market_adapter/market_adapter.d.ts.map +1 -0
  277. package/dist/market_adapter/market_adapter.js +1331 -0
  278. package/dist/market_adapter/market_adapter.js.map +1 -0
  279. package/dist/market_adapter/merge_lp_data.d.ts +3 -0
  280. package/dist/market_adapter/merge_lp_data.d.ts.map +1 -0
  281. package/dist/market_adapter/merge_lp_data.js +125 -0
  282. package/dist/market_adapter/merge_lp_data.js.map +1 -0
  283. package/dist/market_adapter/test_helpers.d.ts +14 -0
  284. package/dist/market_adapter/test_helpers.d.ts.map +1 -0
  285. package/dist/market_adapter/test_helpers.js +22 -0
  286. package/dist/market_adapter/test_helpers.js.map +1 -0
  287. package/dist/market_adapter/utils/adapter_client.d.ts +20 -0
  288. package/dist/market_adapter/utils/adapter_client.d.ts.map +1 -0
  289. package/dist/market_adapter/utils/adapter_client.js +88 -0
  290. package/dist/market_adapter/utils/adapter_client.js.map +1 -0
  291. package/dist/market_adapter/utils/atomic_write.d.ts +9 -0
  292. package/dist/market_adapter/utils/atomic_write.d.ts.map +1 -0
  293. package/dist/market_adapter/utils/atomic_write.js +13 -0
  294. package/dist/market_adapter/utils/atomic_write.js.map +1 -0
  295. package/dist/market_adapter/utils/chain.d.ts +50 -0
  296. package/dist/market_adapter/utils/chain.d.ts.map +1 -0
  297. package/dist/market_adapter/utils/chain.js +196 -0
  298. package/dist/market_adapter/utils/chain.js.map +1 -0
  299. package/dist/market_adapter/utils/data_discovery.d.ts +6 -0
  300. package/dist/market_adapter/utils/data_discovery.d.ts.map +1 -0
  301. package/dist/market_adapter/utils/data_discovery.js +35 -0
  302. package/dist/market_adapter/utils/data_discovery.js.map +1 -0
  303. package/dist/market_adapter/utils/dynamic_grid_snapshot.d.ts +15 -0
  304. package/dist/market_adapter/utils/dynamic_grid_snapshot.d.ts.map +1 -0
  305. package/dist/market_adapter/utils/dynamic_grid_snapshot.js +60 -0
  306. package/dist/market_adapter/utils/dynamic_grid_snapshot.js.map +1 -0
  307. package/dist/market_adapter/utils/file_lock.d.ts +19 -0
  308. package/dist/market_adapter/utils/file_lock.d.ts.map +1 -0
  309. package/dist/market_adapter/utils/file_lock.js +191 -0
  310. package/dist/market_adapter/utils/file_lock.js.map +1 -0
  311. package/dist/market_adapter/utils/native_history.d.ts +19 -0
  312. package/dist/market_adapter/utils/native_history.d.ts.map +1 -0
  313. package/dist/market_adapter/utils/native_history.js +172 -0
  314. package/dist/market_adapter/utils/native_history.js.map +1 -0
  315. package/dist/market_adapter/utils/paths.d.ts +5 -0
  316. package/dist/market_adapter/utils/paths.d.ts.map +1 -0
  317. package/dist/market_adapter/utils/paths.js +7 -0
  318. package/dist/market_adapter/utils/paths.js.map +1 -0
  319. package/dist/modules/account_bots.d.ts +112 -0
  320. package/dist/modules/account_bots.d.ts.map +1 -0
  321. package/dist/modules/account_bots.js +1259 -0
  322. package/dist/modules/account_bots.js.map +1 -0
  323. package/dist/modules/account_orders.d.ts +273 -0
  324. package/dist/modules/account_orders.d.ts.map +1 -0
  325. package/dist/modules/account_orders.js +662 -0
  326. package/dist/modules/account_orders.js.map +1 -0
  327. package/dist/modules/authority_resolver.d.ts +2 -0
  328. package/dist/modules/authority_resolver.d.ts.map +1 -0
  329. package/dist/modules/authority_resolver.js +231 -0
  330. package/dist/modules/authority_resolver.js.map +1 -0
  331. package/dist/modules/bitshares-native/chain_client.d.ts +38 -0
  332. package/dist/modules/bitshares-native/chain_client.d.ts.map +1 -0
  333. package/dist/modules/bitshares-native/chain_client.js +322 -0
  334. package/dist/modules/bitshares-native/chain_client.js.map +1 -0
  335. package/dist/modules/bitshares-native/crypto/ecc.browser.d.ts +59 -0
  336. package/dist/modules/bitshares-native/crypto/ecc.browser.d.ts.map +1 -0
  337. package/dist/modules/bitshares-native/crypto/ecc.browser.js +456 -0
  338. package/dist/modules/bitshares-native/crypto/ecc.browser.js.map +1 -0
  339. package/dist/modules/bitshares-native/crypto/ecc.d.ts +66 -0
  340. package/dist/modules/bitshares-native/crypto/ecc.d.ts.map +1 -0
  341. package/dist/modules/bitshares-native/crypto/ecc.js +557 -0
  342. package/dist/modules/bitshares-native/crypto/ecc.js.map +1 -0
  343. package/dist/modules/bitshares-native/crypto/ecc_selector.d.ts +2 -0
  344. package/dist/modules/bitshares-native/crypto/ecc_selector.d.ts.map +1 -0
  345. package/dist/modules/bitshares-native/crypto/ecc_selector.js +20 -0
  346. package/dist/modules/bitshares-native/crypto/ecc_selector.js.map +1 -0
  347. package/dist/modules/bitshares-native/index.d.ts +3 -0
  348. package/dist/modules/bitshares-native/index.d.ts.map +1 -0
  349. package/dist/modules/bitshares-native/index.js +32 -0
  350. package/dist/modules/bitshares-native/index.js.map +1 -0
  351. package/dist/modules/bitshares-native/resolvers.d.ts +40 -0
  352. package/dist/modules/bitshares-native/resolvers.d.ts.map +1 -0
  353. package/dist/modules/bitshares-native/resolvers.js +161 -0
  354. package/dist/modules/bitshares-native/resolvers.js.map +1 -0
  355. package/dist/modules/bitshares-native/serial/chain_constants.d.ts +56 -0
  356. package/dist/modules/bitshares-native/serial/chain_constants.d.ts.map +1 -0
  357. package/dist/modules/bitshares-native/serial/chain_constants.js +92 -0
  358. package/dist/modules/bitshares-native/serial/chain_constants.js.map +1 -0
  359. package/dist/modules/bitshares-native/serial/index.d.ts +10 -0
  360. package/dist/modules/bitshares-native/serial/index.d.ts.map +1 -0
  361. package/dist/modules/bitshares-native/serial/index.js +14 -0
  362. package/dist/modules/bitshares-native/serial/index.js.map +1 -0
  363. package/dist/modules/bitshares-native/serial/operations.d.ts +102 -0
  364. package/dist/modules/bitshares-native/serial/operations.d.ts.map +1 -0
  365. package/dist/modules/bitshares-native/serial/operations.js +615 -0
  366. package/dist/modules/bitshares-native/serial/operations.js.map +1 -0
  367. package/dist/modules/bitshares-native/serial/serializer.d.ts +64 -0
  368. package/dist/modules/bitshares-native/serial/serializer.d.ts.map +1 -0
  369. package/dist/modules/bitshares-native/serial/serializer.js +252 -0
  370. package/dist/modules/bitshares-native/serial/serializer.js.map +1 -0
  371. package/dist/modules/bitshares-native/serial/types.d.ts +120 -0
  372. package/dist/modules/bitshares-native/serial/types.d.ts.map +1 -0
  373. package/dist/modules/bitshares-native/serial/types.js +837 -0
  374. package/dist/modules/bitshares-native/serial/types.js.map +1 -0
  375. package/dist/modules/bitshares-native/signing_client.d.ts +6 -0
  376. package/dist/modules/bitshares-native/signing_client.d.ts.map +1 -0
  377. package/dist/modules/bitshares-native/signing_client.js +141 -0
  378. package/dist/modules/bitshares-native/signing_client.js.map +1 -0
  379. package/dist/modules/bitshares-native/subscriptions.d.ts +6 -0
  380. package/dist/modules/bitshares-native/subscriptions.d.ts.map +1 -0
  381. package/dist/modules/bitshares-native/subscriptions.js +865 -0
  382. package/dist/modules/bitshares-native/subscriptions.js.map +1 -0
  383. package/dist/modules/bitshares-native/transport.d.ts +51 -0
  384. package/dist/modules/bitshares-native/transport.d.ts.map +1 -0
  385. package/dist/modules/bitshares-native/transport.js +447 -0
  386. package/dist/modules/bitshares-native/transport.js.map +1 -0
  387. package/dist/modules/bitshares-native/tx/builder.d.ts +30 -0
  388. package/dist/modules/bitshares-native/tx/builder.d.ts.map +1 -0
  389. package/dist/modules/bitshares-native/tx/builder.js +262 -0
  390. package/dist/modules/bitshares-native/tx/builder.js.map +1 -0
  391. package/dist/modules/bitshares_client.d.ts +129 -0
  392. package/dist/modules/bitshares_client.d.ts.map +1 -0
  393. package/dist/modules/bitshares_client.js +627 -0
  394. package/dist/modules/bitshares_client.js.map +1 -0
  395. package/dist/modules/bot_settings.d.ts +33 -0
  396. package/dist/modules/bot_settings.d.ts.map +1 -0
  397. package/dist/modules/bot_settings.js +328 -0
  398. package/dist/modules/bot_settings.js.map +1 -0
  399. package/dist/modules/bots_file_lock.d.ts +88 -0
  400. package/dist/modules/bots_file_lock.d.ts.map +1 -0
  401. package/dist/modules/bots_file_lock.js +161 -0
  402. package/dist/modules/bots_file_lock.js.map +1 -0
  403. package/dist/modules/chain_keys.d.ts +302 -0
  404. package/dist/modules/chain_keys.d.ts.map +1 -0
  405. package/dist/modules/chain_keys.js +1095 -0
  406. package/dist/modules/chain_keys.js.map +1 -0
  407. package/dist/modules/chain_orders.d.ts +423 -0
  408. package/dist/modules/chain_orders.d.ts.map +1 -0
  409. package/dist/modules/chain_orders.js +1201 -0
  410. package/dist/modules/chain_orders.js.map +1 -0
  411. package/dist/modules/cli_whitelist_args.d.ts +6 -0
  412. package/dist/modules/cli_whitelist_args.d.ts.map +1 -0
  413. package/dist/modules/cli_whitelist_args.js +13 -0
  414. package/dist/modules/cli_whitelist_args.js.map +1 -0
  415. package/dist/modules/config.d.ts +57 -0
  416. package/dist/modules/config.d.ts.map +1 -0
  417. package/dist/modules/config.js +107 -0
  418. package/dist/modules/config.js.map +1 -0
  419. package/dist/modules/constants.d.ts +635 -0
  420. package/dist/modules/constants.d.ts.map +1 -0
  421. package/dist/modules/constants.js +1464 -0
  422. package/dist/modules/constants.js.map +1 -0
  423. package/dist/modules/cr_planner.d.ts +51 -0
  424. package/dist/modules/cr_planner.d.ts.map +1 -0
  425. package/dist/modules/cr_planner.js +299 -0
  426. package/dist/modules/cr_planner.js.map +1 -0
  427. package/dist/modules/credential_policy.d.ts +188 -0
  428. package/dist/modules/credential_policy.d.ts.map +1 -0
  429. package/dist/modules/credential_policy.js +1452 -0
  430. package/dist/modules/credential_policy.js.map +1 -0
  431. package/dist/modules/credential_runtime.d.ts +42 -0
  432. package/dist/modules/credential_runtime.d.ts.map +1 -0
  433. package/dist/modules/credential_runtime.js +148 -0
  434. package/dist/modules/credential_runtime.js.map +1 -0
  435. package/dist/modules/credential_session_cache.d.ts +36 -0
  436. package/dist/modules/credential_session_cache.d.ts.map +1 -0
  437. package/dist/modules/credential_session_cache.js +106 -0
  438. package/dist/modules/credential_session_cache.js.map +1 -0
  439. package/dist/modules/credit_runtime.d.ts +412 -0
  440. package/dist/modules/credit_runtime.d.ts.map +1 -0
  441. package/dist/modules/credit_runtime.js +2866 -0
  442. package/dist/modules/credit_runtime.js.map +1 -0
  443. package/dist/modules/crypto/browser_provider.d.ts +15 -0
  444. package/dist/modules/crypto/browser_provider.d.ts.map +1 -0
  445. package/dist/modules/crypto/browser_provider.js +113 -0
  446. package/dist/modules/crypto/browser_provider.js.map +1 -0
  447. package/dist/modules/crypto/index.d.ts +9 -0
  448. package/dist/modules/crypto/index.d.ts.map +1 -0
  449. package/dist/modules/crypto/index.js +44 -0
  450. package/dist/modules/crypto/index.js.map +1 -0
  451. package/dist/modules/crypto/node_provider.d.ts +15 -0
  452. package/dist/modules/crypto/node_provider.d.ts.map +1 -0
  453. package/dist/modules/crypto/node_provider.js +74 -0
  454. package/dist/modules/crypto/node_provider.js.map +1 -0
  455. package/dist/modules/crypto/provider.d.ts +34 -0
  456. package/dist/modules/crypto/provider.d.ts.map +1 -0
  457. package/dist/modules/crypto/provider.js +3 -0
  458. package/dist/modules/crypto/provider.js.map +1 -0
  459. package/dist/modules/crypto/pure_ripemd160.d.ts +8 -0
  460. package/dist/modules/crypto/pure_ripemd160.d.ts.map +1 -0
  461. package/dist/modules/crypto/pure_ripemd160.js +142 -0
  462. package/dist/modules/crypto/pure_ripemd160.js.map +1 -0
  463. package/dist/modules/crypto/pure_scrypt.d.ts +23 -0
  464. package/dist/modules/crypto/pure_scrypt.d.ts.map +1 -0
  465. package/dist/modules/crypto/pure_scrypt.js +161 -0
  466. package/dist/modules/crypto/pure_scrypt.js.map +1 -0
  467. package/dist/modules/crypto/pure_secp256k1.d.ts +29 -0
  468. package/dist/modules/crypto/pure_secp256k1.d.ts.map +1 -0
  469. package/dist/modules/crypto/pure_secp256k1.js +195 -0
  470. package/dist/modules/crypto/pure_secp256k1.js.map +1 -0
  471. package/dist/modules/crypto/sync.d.ts +13 -0
  472. package/dist/modules/crypto/sync.d.ts.map +1 -0
  473. package/dist/modules/crypto/sync.js +37 -0
  474. package/dist/modules/crypto/sync.js.map +1 -0
  475. package/dist/modules/dexbot_class.d.ts +1074 -0
  476. package/dist/modules/dexbot_class.d.ts.map +1 -0
  477. package/dist/modules/dexbot_class.js +4613 -0
  478. package/dist/modules/dexbot_class.js.map +1 -0
  479. package/dist/modules/dexbot_credential_client.d.ts +71 -0
  480. package/dist/modules/dexbot_credential_client.d.ts.map +1 -0
  481. package/dist/modules/dexbot_credential_client.js +224 -0
  482. package/dist/modules/dexbot_credential_client.js.map +1 -0
  483. package/dist/modules/dexbot_fill_runtime.d.ts +173 -0
  484. package/dist/modules/dexbot_fill_runtime.d.ts.map +1 -0
  485. package/dist/modules/dexbot_fill_runtime.js +217 -0
  486. package/dist/modules/dexbot_fill_runtime.js.map +1 -0
  487. package/dist/modules/dexbot_maintenance_runtime.d.ts +279 -0
  488. package/dist/modules/dexbot_maintenance_runtime.d.ts.map +1 -0
  489. package/dist/modules/dexbot_maintenance_runtime.js +1613 -0
  490. package/dist/modules/dexbot_maintenance_runtime.js.map +1 -0
  491. package/dist/modules/env.d.ts +12 -0
  492. package/dist/modules/env.d.ts.map +1 -0
  493. package/dist/modules/env.js +57 -0
  494. package/dist/modules/env.js.map +1 -0
  495. package/dist/modules/fund_registry.d.ts +96 -0
  496. package/dist/modules/fund_registry.d.ts.map +1 -0
  497. package/dist/modules/fund_registry.js +261 -0
  498. package/dist/modules/fund_registry.js.map +1 -0
  499. package/dist/modules/general_settings.d.ts +36 -0
  500. package/dist/modules/general_settings.d.ts.map +1 -0
  501. package/dist/modules/general_settings.js +63 -0
  502. package/dist/modules/general_settings.js.map +1 -0
  503. package/dist/modules/graceful_shutdown.d.ts +86 -0
  504. package/dist/modules/graceful_shutdown.d.ts.map +1 -0
  505. package/dist/modules/graceful_shutdown.js +164 -0
  506. package/dist/modules/graceful_shutdown.js.map +1 -0
  507. package/dist/modules/key_store.d.ts +60 -0
  508. package/dist/modules/key_store.d.ts.map +1 -0
  509. package/dist/modules/key_store.js +215 -0
  510. package/dist/modules/key_store.js.map +1 -0
  511. package/dist/modules/launcher/bot_supervisor.d.ts +84 -0
  512. package/dist/modules/launcher/bot_supervisor.d.ts.map +1 -0
  513. package/dist/modules/launcher/bot_supervisor.js +1067 -0
  514. package/dist/modules/launcher/bot_supervisor.js.map +1 -0
  515. package/dist/modules/launcher/child_env.d.ts +9 -0
  516. package/dist/modules/launcher/child_env.d.ts.map +1 -0
  517. package/dist/modules/launcher/child_env.js +78 -0
  518. package/dist/modules/launcher/child_env.js.map +1 -0
  519. package/dist/modules/launcher/credential_bootstrap.d.ts +22 -0
  520. package/dist/modules/launcher/credential_bootstrap.d.ts.map +1 -0
  521. package/dist/modules/launcher/credential_bootstrap.js +303 -0
  522. package/dist/modules/launcher/credential_bootstrap.js.map +1 -0
  523. package/dist/modules/launcher/credential_daemon.d.ts +32 -0
  524. package/dist/modules/launcher/credential_daemon.d.ts.map +1 -0
  525. package/dist/modules/launcher/credential_daemon.js +173 -0
  526. package/dist/modules/launcher/credential_daemon.js.map +1 -0
  527. package/dist/modules/launcher/credential_secret.d.ts +6 -0
  528. package/dist/modules/launcher/credential_secret.d.ts.map +1 -0
  529. package/dist/modules/launcher/credential_secret.js +15 -0
  530. package/dist/modules/launcher/credential_secret.js.map +1 -0
  531. package/dist/modules/launcher/foreign_cred_daemon.d.ts +2 -0
  532. package/dist/modules/launcher/foreign_cred_daemon.d.ts.map +1 -0
  533. package/dist/modules/launcher/foreign_cred_daemon.js +166 -0
  534. package/dist/modules/launcher/foreign_cred_daemon.js.map +1 -0
  535. package/dist/modules/launcher/headless_password.d.ts +8 -0
  536. package/dist/modules/launcher/headless_password.d.ts.map +1 -0
  537. package/dist/modules/launcher/headless_password.js +33 -0
  538. package/dist/modules/launcher/headless_password.js.map +1 -0
  539. package/dist/modules/launcher/launch_modes.d.ts +36 -0
  540. package/dist/modules/launcher/launch_modes.d.ts.map +1 -0
  541. package/dist/modules/launcher/launch_modes.js +129 -0
  542. package/dist/modules/launcher/launch_modes.js.map +1 -0
  543. package/dist/modules/launcher/market_adapter_runtime.d.ts +43 -0
  544. package/dist/modules/launcher/market_adapter_runtime.d.ts.map +1 -0
  545. package/dist/modules/launcher/market_adapter_runtime.js +217 -0
  546. package/dist/modules/launcher/market_adapter_runtime.js.map +1 -0
  547. package/dist/modules/launcher/market_adapter_watchdog.d.ts +26 -0
  548. package/dist/modules/launcher/market_adapter_watchdog.d.ts.map +1 -0
  549. package/dist/modules/launcher/market_adapter_watchdog.js +214 -0
  550. package/dist/modules/launcher/market_adapter_watchdog.js.map +1 -0
  551. package/dist/modules/launcher/monolithic_runtime.d.ts +89 -0
  552. package/dist/modules/launcher/monolithic_runtime.d.ts.map +1 -0
  553. package/dist/modules/launcher/monolithic_runtime.js +425 -0
  554. package/dist/modules/launcher/monolithic_runtime.js.map +1 -0
  555. package/dist/modules/launcher/runtime_entry.d.ts +26 -0
  556. package/dist/modules/launcher/runtime_entry.d.ts.map +1 -0
  557. package/dist/modules/launcher/runtime_entry.js +49 -0
  558. package/dist/modules/launcher/runtime_entry.js.map +1 -0
  559. package/dist/modules/launcher/status_reporting.d.ts +48 -0
  560. package/dist/modules/launcher/status_reporting.d.ts.map +1 -0
  561. package/dist/modules/launcher/status_reporting.js +113 -0
  562. package/dist/modules/launcher/status_reporting.js.map +1 -0
  563. package/dist/modules/launcher/supervisor_control.d.ts +6 -0
  564. package/dist/modules/launcher/supervisor_control.d.ts.map +1 -0
  565. package/dist/modules/launcher/supervisor_control.js +59 -0
  566. package/dist/modules/launcher/supervisor_control.js.map +1 -0
  567. package/dist/modules/logger.d.ts +2 -0
  568. package/dist/modules/logger.d.ts.map +1 -0
  569. package/dist/modules/logger.js +71 -0
  570. package/dist/modules/logger.js.map +1 -0
  571. package/dist/modules/market_adapter_whitelist.d.ts +22 -0
  572. package/dist/modules/market_adapter_whitelist.d.ts.map +1 -0
  573. package/dist/modules/market_adapter_whitelist.js +82 -0
  574. package/dist/modules/market_adapter_whitelist.js.map +1 -0
  575. package/dist/modules/node_health_cache.d.ts +55 -0
  576. package/dist/modules/node_health_cache.d.ts.map +1 -0
  577. package/dist/modules/node_health_cache.js +134 -0
  578. package/dist/modules/node_health_cache.js.map +1 -0
  579. package/dist/modules/node_manager.d.ts +215 -0
  580. package/dist/modules/node_manager.d.ts.map +1 -0
  581. package/dist/modules/node_manager.js +628 -0
  582. package/dist/modules/node_manager.js.map +1 -0
  583. package/dist/modules/order/accounting.d.ts +349 -0
  584. package/dist/modules/order/accounting.d.ts.map +1 -0
  585. package/dist/modules/order/accounting.js +1191 -0
  586. package/dist/modules/order/accounting.js.map +1 -0
  587. package/dist/modules/order/async_lock.d.ts +126 -0
  588. package/dist/modules/order/async_lock.d.ts.map +1 -0
  589. package/dist/modules/order/async_lock.js +195 -0
  590. package/dist/modules/order/async_lock.js.map +1 -0
  591. package/dist/modules/order/export.d.ts +129 -0
  592. package/dist/modules/order/export.d.ts.map +1 -0
  593. package/dist/modules/order/export.js +316 -0
  594. package/dist/modules/order/export.js.map +1 -0
  595. package/dist/modules/order/format.d.ts +158 -0
  596. package/dist/modules/order/format.d.ts.map +1 -0
  597. package/dist/modules/order/format.js +232 -0
  598. package/dist/modules/order/format.js.map +1 -0
  599. package/dist/modules/order/grid.d.ts +549 -0
  600. package/dist/modules/order/grid.d.ts.map +1 -0
  601. package/dist/modules/order/grid.js +1746 -0
  602. package/dist/modules/order/grid.js.map +1 -0
  603. package/dist/modules/order/grid_reconcile.d.ts +154 -0
  604. package/dist/modules/order/grid_reconcile.d.ts.map +1 -0
  605. package/dist/modules/order/grid_reconcile.js +1192 -0
  606. package/dist/modules/order/grid_reconcile.js.map +1 -0
  607. package/dist/modules/order/index.d.ts +55 -0
  608. package/dist/modules/order/index.d.ts.map +1 -0
  609. package/dist/modules/order/index.js +79 -0
  610. package/dist/modules/order/index.js.map +1 -0
  611. package/dist/modules/order/logger.d.ts +136 -0
  612. package/dist/modules/order/logger.d.ts.map +1 -0
  613. package/dist/modules/order/logger.js +614 -0
  614. package/dist/modules/order/logger.js.map +1 -0
  615. package/dist/modules/order/logger_state.d.ts +133 -0
  616. package/dist/modules/order/logger_state.d.ts.map +1 -0
  617. package/dist/modules/order/logger_state.js +170 -0
  618. package/dist/modules/order/logger_state.js.map +1 -0
  619. package/dist/modules/order/manager.d.ts +413 -0
  620. package/dist/modules/order/manager.d.ts.map +1 -0
  621. package/dist/modules/order/manager.js +1605 -0
  622. package/dist/modules/order/manager.js.map +1 -0
  623. package/dist/modules/order/processed_fill_store.d.ts +135 -0
  624. package/dist/modules/order/processed_fill_store.d.ts.map +1 -0
  625. package/dist/modules/order/processed_fill_store.js +288 -0
  626. package/dist/modules/order/processed_fill_store.js.map +1 -0
  627. package/dist/modules/order/runner.d.ts +70 -0
  628. package/dist/modules/order/runner.d.ts.map +1 -0
  629. package/dist/modules/order/runner.js +140 -0
  630. package/dist/modules/order/runner.js.map +1 -0
  631. package/dist/modules/order/strategy.d.ts +196 -0
  632. package/dist/modules/order/strategy.d.ts.map +1 -0
  633. package/dist/modules/order/strategy.js +398 -0
  634. package/dist/modules/order/strategy.js.map +1 -0
  635. package/dist/modules/order/sync_engine.d.ts +386 -0
  636. package/dist/modules/order/sync_engine.d.ts.map +1 -0
  637. package/dist/modules/order/sync_engine.js +1459 -0
  638. package/dist/modules/order/sync_engine.js.map +1 -0
  639. package/dist/modules/order/utils/math.d.ts +677 -0
  640. package/dist/modules/order/utils/math.d.ts.map +1 -0
  641. package/dist/modules/order/utils/math.js +1172 -0
  642. package/dist/modules/order/utils/math.js.map +1 -0
  643. package/dist/modules/order/utils/order.d.ts +572 -0
  644. package/dist/modules/order/utils/order.d.ts.map +1 -0
  645. package/dist/modules/order/utils/order.js +1145 -0
  646. package/dist/modules/order/utils/order.js.map +1 -0
  647. package/dist/modules/order/utils/system.d.ts +268 -0
  648. package/dist/modules/order/utils/system.d.ts.map +1 -0
  649. package/dist/modules/order/utils/system.js +1261 -0
  650. package/dist/modules/order/utils/system.js.map +1 -0
  651. package/dist/modules/order/utils/validate.d.ts +280 -0
  652. package/dist/modules/order/utils/validate.d.ts.map +1 -0
  653. package/dist/modules/order/utils/validate.js +918 -0
  654. package/dist/modules/order/utils/validate.js.map +1 -0
  655. package/dist/modules/order/working_grid.d.ts +212 -0
  656. package/dist/modules/order/working_grid.d.ts.map +1 -0
  657. package/dist/modules/order/working_grid.js +279 -0
  658. package/dist/modules/order/working_grid.js.map +1 -0
  659. package/dist/modules/path_api.d.ts +32 -0
  660. package/dist/modules/path_api.d.ts.map +1 -0
  661. package/dist/modules/path_api.js +148 -0
  662. package/dist/modules/path_api.js.map +1 -0
  663. package/dist/modules/paths.d.ts +58 -0
  664. package/dist/modules/paths.d.ts.map +1 -0
  665. package/dist/modules/paths.js +82 -0
  666. package/dist/modules/paths.js.map +1 -0
  667. package/dist/modules/process_discovery.d.ts +58 -0
  668. package/dist/modules/process_discovery.d.ts.map +1 -0
  669. package/dist/modules/process_discovery.js +265 -0
  670. package/dist/modules/process_discovery.js.map +1 -0
  671. package/dist/modules/runtime.d.ts +34 -0
  672. package/dist/modules/runtime.d.ts.map +1 -0
  673. package/dist/modules/runtime.js +98 -0
  674. package/dist/modules/runtime.js.map +1 -0
  675. package/dist/modules/runtime_settings.d.ts +12 -0
  676. package/dist/modules/runtime_settings.d.ts.map +1 -0
  677. package/dist/modules/runtime_settings.js +122 -0
  678. package/dist/modules/runtime_settings.js.map +1 -0
  679. package/dist/modules/settings_merge.d.ts +38 -0
  680. package/dist/modules/settings_merge.d.ts.map +1 -0
  681. package/dist/modules/settings_merge.js +246 -0
  682. package/dist/modules/settings_merge.js.map +1 -0
  683. package/dist/modules/storage/browser_adapter.d.ts +56 -0
  684. package/dist/modules/storage/browser_adapter.d.ts.map +1 -0
  685. package/dist/modules/storage/browser_adapter.js +231 -0
  686. package/dist/modules/storage/browser_adapter.js.map +1 -0
  687. package/dist/modules/storage/index.d.ts +28 -0
  688. package/dist/modules/storage/index.d.ts.map +1 -0
  689. package/dist/modules/storage/index.js +52 -0
  690. package/dist/modules/storage/index.js.map +1 -0
  691. package/dist/modules/storage/node_adapter.d.ts +49 -0
  692. package/dist/modules/storage/node_adapter.d.ts.map +1 -0
  693. package/dist/modules/storage/node_adapter.js +167 -0
  694. package/dist/modules/storage/node_adapter.js.map +1 -0
  695. package/dist/modules/storage/types.d.ts +92 -0
  696. package/dist/modules/storage/types.d.ts.map +1 -0
  697. package/dist/modules/storage/types.js +3 -0
  698. package/dist/modules/storage/types.js.map +1 -0
  699. package/dist/modules/types.d.ts +1382 -0
  700. package/dist/modules/types.d.ts.map +1 -0
  701. package/dist/modules/types.js +11 -0
  702. package/dist/modules/types.js.map +1 -0
  703. package/dist/modules/utils/base58check.d.ts +12 -0
  704. package/dist/modules/utils/base58check.d.ts.map +1 -0
  705. package/dist/modules/utils/base58check.js +112 -0
  706. package/dist/modules/utils/base58check.js.map +1 -0
  707. package/dist/modules/utils/build_dir.d.ts +7 -0
  708. package/dist/modules/utils/build_dir.d.ts.map +1 -0
  709. package/dist/modules/utils/build_dir.js +8 -0
  710. package/dist/modules/utils/build_dir.js.map +1 -0
  711. package/dist/modules/utils/fs_utils.d.ts +25 -0
  712. package/dist/modules/utils/fs_utils.d.ts.map +1 -0
  713. package/dist/modules/utils/fs_utils.js +27 -0
  714. package/dist/modules/utils/fs_utils.js.map +1 -0
  715. package/dist/modules/utils/math_utils.d.ts +10 -0
  716. package/dist/modules/utils/math_utils.d.ts.map +1 -0
  717. package/dist/modules/utils/math_utils.js +17 -0
  718. package/dist/modules/utils/math_utils.js.map +1 -0
  719. package/dist/modules/validate_profiles.d.ts +37 -0
  720. package/dist/modules/validate_profiles.d.ts.map +1 -0
  721. package/dist/modules/validate_profiles.js +369 -0
  722. package/dist/modules/validate_profiles.js.map +1 -0
  723. package/dist/pm2.d.ts +167 -0
  724. package/dist/pm2.d.ts.map +1 -0
  725. package/dist/pm2.js +998 -0
  726. package/dist/pm2.js.map +1 -0
  727. package/dist/scripts/analyze-git.d.ts +11 -0
  728. package/dist/scripts/analyze-git.d.ts.map +1 -0
  729. package/dist/scripts/analyze-git.js +851 -0
  730. package/dist/scripts/analyze-git.js.map +1 -0
  731. package/dist/scripts/analyze-orders.d.ts +17 -0
  732. package/dist/scripts/analyze-orders.d.ts.map +1 -0
  733. package/dist/scripts/analyze-orders.js +1568 -0
  734. package/dist/scripts/analyze-orders.js.map +1 -0
  735. package/dist/scripts/diagnose-kibana-candles.d.ts +3 -0
  736. package/dist/scripts/diagnose-kibana-candles.d.ts.map +1 -0
  737. package/dist/scripts/diagnose-kibana-candles.js +82 -0
  738. package/dist/scripts/diagnose-kibana-candles.js.map +1 -0
  739. package/dist/scripts/diagnose-pool-history.d.ts +3 -0
  740. package/dist/scripts/diagnose-pool-history.d.ts.map +1 -0
  741. package/dist/scripts/diagnose-pool-history.js +296 -0
  742. package/dist/scripts/diagnose-pool-history.js.map +1 -0
  743. package/dist/scripts/divergence-calc.d.ts +26 -0
  744. package/dist/scripts/divergence-calc.d.ts.map +1 -0
  745. package/dist/scripts/divergence-calc.js +119 -0
  746. package/dist/scripts/divergence-calc.js.map +1 -0
  747. package/dist/scripts/generate_lp_chart.d.ts +31 -0
  748. package/dist/scripts/generate_lp_chart.d.ts.map +1 -0
  749. package/dist/scripts/generate_lp_chart.js +92 -0
  750. package/dist/scripts/generate_lp_chart.js.map +1 -0
  751. package/dist/scripts/generate_mainnet_corpus_report.d.ts +24 -0
  752. package/dist/scripts/generate_mainnet_corpus_report.d.ts.map +1 -0
  753. package/dist/scripts/generate_mainnet_corpus_report.js +237 -0
  754. package/dist/scripts/generate_mainnet_corpus_report.js.map +1 -0
  755. package/dist/scripts/generate_market_adapter_whitelist.d.ts +2 -0
  756. package/dist/scripts/generate_market_adapter_whitelist.d.ts.map +1 -0
  757. package/dist/scripts/generate_market_adapter_whitelist.js +111 -0
  758. package/dist/scripts/generate_market_adapter_whitelist.js.map +1 -0
  759. package/dist/scripts/migrate_bot_keys.d.ts +6 -0
  760. package/dist/scripts/migrate_bot_keys.d.ts.map +1 -0
  761. package/dist/scripts/migrate_bot_keys.js +301 -0
  762. package/dist/scripts/migrate_bot_keys.js.map +1 -0
  763. package/dist/scripts/native_release_gates.d.ts +3 -0
  764. package/dist/scripts/native_release_gates.d.ts.map +1 -0
  765. package/dist/scripts/native_release_gates.js +52 -0
  766. package/dist/scripts/native_release_gates.js.map +1 -0
  767. package/dist/scripts/print_grid.d.ts +16 -0
  768. package/dist/scripts/print_grid.d.ts.map +1 -0
  769. package/dist/scripts/print_grid.js +80 -0
  770. package/dist/scripts/print_grid.js.map +1 -0
  771. package/dist/scripts/run-tests.d.ts +2 -0
  772. package/dist/scripts/run-tests.d.ts.map +1 -0
  773. package/dist/scripts/run-tests.js +49 -0
  774. package/dist/scripts/run-tests.js.map +1 -0
  775. package/dist/scripts/sync-version.d.ts +14 -0
  776. package/dist/scripts/sync-version.d.ts.map +1 -0
  777. package/dist/scripts/sync-version.js +158 -0
  778. package/dist/scripts/sync-version.js.map +1 -0
  779. package/dist/scripts/test-credit-renewal.d.ts +2 -0
  780. package/dist/scripts/test-credit-renewal.d.ts.map +1 -0
  781. package/dist/scripts/test-credit-renewal.js +329 -0
  782. package/dist/scripts/test-credit-renewal.js.map +1 -0
  783. package/dist/scripts/update.d.ts +24 -0
  784. package/dist/scripts/update.d.ts.map +1 -0
  785. package/dist/scripts/update.js +650 -0
  786. package/dist/scripts/update.js.map +1 -0
  787. package/dist/scripts/validate_bots.d.ts +16 -0
  788. package/dist/scripts/validate_bots.d.ts.map +1 -0
  789. package/dist/scripts/validate_bots.js +106 -0
  790. package/dist/scripts/validate_bots.js.map +1 -0
  791. package/dist/scripts/verify-browser-bundle.d.ts +22 -0
  792. package/dist/scripts/verify-browser-bundle.d.ts.map +1 -0
  793. package/dist/scripts/verify-browser-bundle.js +339 -0
  794. package/dist/scripts/verify-browser-bundle.js.map +1 -0
  795. package/dist/unlock.d.ts +48 -0
  796. package/dist/unlock.d.ts.map +1 -0
  797. package/dist/unlock.js +925 -0
  798. package/dist/unlock.js.map +1 -0
  799. package/package.json +112 -0
  800. package/scripts/README.md +356 -0
  801. package/scripts/clear-all.sh +195 -0
  802. package/scripts/clear-logs.sh +95 -0
  803. package/scripts/clear-market-adapter.sh +196 -0
  804. package/scripts/clear-orders.sh +113 -0
  805. package/scripts/create-bot-symlinks.sh +51 -0
  806. package/scripts/postinstall.js +9 -0
  807. package/scripts/reset-settings.sh +118 -0
@@ -0,0 +1,732 @@
1
+ 'use strict';
2
+ const { MARKET_ADAPTER } = require('../../modules/constants');
3
+ const { escapeHtml, serializeJsonForScript, toEpochSeconds, UPLOT_SHARED_SCRIPT } = require('../chart_utils');
4
+ const { roundTo } = require('../../modules/utils/math_utils');
5
+ function generateHTML(data, title = 'ATR Volatility Research') {
6
+ const results = data.allResults || [];
7
+ if (results.length === 0)
8
+ throw new Error('No analysis results in input');
9
+ const volatilityCfg = data.volatilityConfig || {};
10
+ const defaultThreshold = data.volatilityThreshold ?? volatilityCfg.volatilityThreshold
11
+ ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_SYMMETRIC_SHIFT_THRESHOLD;
12
+ const defaultAtrPeriod = data.atrPeriod ?? volatilityCfg.atrPeriod ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_ATR_PERIOD_DEFAULT;
13
+ const defaultExponent = data.volatilityExponent ?? volatilityCfg.volatilityExponent ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_VOLATILITY_EXPONENT;
14
+ const defaultScaleX = data.volatilityScaleX ?? volatilityCfg.volatilityScaleX ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_VOLATILITY_SCALE_X_DEFAULT;
15
+ const defaultClamp = data.volatilityClamp ?? volatilityCfg.volatilityClamp ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_SYMMETRIC_SHIFT_CLAMP;
16
+ const defaultMinWeight = data.minWeight ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_MIN_WEIGHT;
17
+ const defaultMaxWeight = data.maxWeight ?? MARKET_ADAPTER.DYNAMIC_WEIGHT_MAX_WEIGHT;
18
+ const interval = results.length > 1
19
+ ? (new Date(results[1].timestamp).getTime() - new Date(results[0].timestamp).getTime()) / 1000
20
+ : 3600;
21
+ const dates = results.map((r, i) => toEpochSeconds(r.timestamp || Date.now(), i));
22
+ const prices = results.map((r) => r.price);
23
+ const ama3Prices = results.map((r) => r.ama3Price ?? null);
24
+ const baseVarianceSeries = results.map((r) => r.weightVariance ?? null);
25
+ const candleRows = Array.isArray(data.candles) ? data.candles : [];
26
+ const realBarCount = results.length;
27
+ const lastDate = dates[dates.length - 1];
28
+ for (let i = 1; i <= 120; i++) {
29
+ dates.push(lastDate + (i * interval));
30
+ prices.push(null);
31
+ ama3Prices.push(null);
32
+ baseVarianceSeries.push(null);
33
+ }
34
+ const payload = {
35
+ dates,
36
+ prices,
37
+ ama3Prices,
38
+ candles: candleRows,
39
+ atrPeriod: defaultAtrPeriod,
40
+ varianceSeries: baseVarianceSeries,
41
+ realBarCount,
42
+ volatilityThreshold: defaultThreshold,
43
+ volatilityExponent: defaultExponent,
44
+ volatilityScaleX: defaultScaleX,
45
+ volatilityClamp: defaultClamp,
46
+ minWeight: defaultMinWeight,
47
+ maxWeight: defaultMaxWeight,
48
+ marketAdapter: MARKET_ADAPTER,
49
+ };
50
+ return `<!DOCTYPE html>
51
+ <html lang="en">
52
+ <head>
53
+ <meta charset="UTF-8">
54
+ <meta name="color-scheme" content="dark">
55
+ <meta name="darkreader-lock">
56
+ <title>${escapeHtml(title)}</title>
57
+ <link rel="stylesheet" href="../uplot/uPlot.min.css">
58
+ <script src="../uplot/uPlot.iife.min.js"></script>
59
+ <style>
60
+ * { box-sizing: border-box; }
61
+ :root { color-scheme: dark; }
62
+ body { background: #0b0e14; color: #d1d5db; font-family: 'Segoe UI', sans-serif; margin: 0; padding: 0; overflow: hidden; }
63
+ #header { padding: 10px 18px; background: #161b22; border-bottom: 1px solid #30363d; display: flex; align-items: center; justify-content: space-between; gap: 16px; height: 48px; }
64
+ #header-left { font-weight: bold; color: #fff; }
65
+ #hint { font-size: 11px; color: #8b949e; text-transform: uppercase; letter-spacing: 0.4px; white-space: nowrap; }
66
+ #panels { display: flex; flex-direction: column; height: calc(100vh - 48px); width: 100vw; }
67
+ #price-panel { flex: 0 0 33%; min-height: 0; position: relative; border-bottom: 1px solid #30363d; }
68
+ #variance-panel { flex: 0 0 27%; min-height: 0; position: relative; border-bottom: 1px solid #30363d; }
69
+ #variance-panel .legend { top: 10px; }
70
+ #variance-chart { margin-top: 0; height: 100%; }
71
+ #shift-panel { flex: 0 0 40%; min-height: 0; position: relative; }
72
+ #shift-panel .legend { top: 18px; }
73
+ #shift-chart { margin-top: 0; height: calc(100% - 30px); }
74
+ .uplot { background: #0b0e14; }
75
+ .legend { position: absolute; top: 8px; left: 12px; right: 12px; font-size: 11px; pointer-events: none; z-index: 10; display: flex; gap: 12px; color: #adbac7; white-space: nowrap; align-items: center; flex-wrap: wrap; }
76
+ .legend-item { display: flex; align-items: center; gap: 5px; }
77
+ .legend-val { font-family: monospace; font-weight: bold; }
78
+ .dot { width: 10px; height: 10px; border-radius: 2px; flex-shrink: 0; }
79
+ .u-cursor-x { border-left: 1px dashed rgba(255,255,255,0.3) !important; }
80
+ .u-cursor-y { border-top: 1px dashed rgba(255,255,255,0.3) !important; display: none; }
81
+ .is-hovered .u-cursor-y { display: block; }
82
+ .section-label { position: absolute; top: 8px; right: 12px; font-size: 9px; color: #30363d; text-transform: uppercase; letter-spacing: 1px; z-index: 10; pointer-events: none; }
83
+ .ctrl { pointer-events: auto; display: inline-flex; align-items: center; gap: 3px; margin-left: 0; }
84
+ .ctrl label { color: #8b949e; font-size: 11px; min-width: 34px; text-align: right; }
85
+ .ctrl input[type="range"] { width: 138px; height: 3px; margin-right: 0; }
86
+ .ctrl .val { font-weight: bold; font-size: 11px; min-width: 36px; display: inline-block; text-align: right; margin-left: 0; }
87
+ .ctrl.thr label { min-width: 26px; }
88
+ .ctrl.atr label { min-width: 28px; }
89
+ .ctrl.exp label { min-width: 24px; }
90
+ .ctrl.scale label { min-width: 38px; }
91
+ .ctrl.clamp label { min-width: 36px; }
92
+ .ctrl.thr input[type="range"] { accent-color: #8b949e; }
93
+ .ctrl.thr .val { color: #8b949e; }
94
+ .ctrl.atr input[type="range"] { accent-color: #3fb950; }
95
+ .ctrl.atr .val { color: #3fb950; }
96
+ .ctrl.atr input[type="range"] { margin-right: -6px; }
97
+ .ctrl.exp input[type="range"] { accent-color: #58a6ff; }
98
+ .ctrl.exp .val { color: #58a6ff; }
99
+ .ctrl.thr input[type="range"],
100
+ .ctrl.atr input[type="range"],
101
+ .ctrl.exp input[type="range"],
102
+ .ctrl.scale input[type="range"],
103
+ .ctrl.clamp input[type="range"] { width: 138px; }
104
+ .ctrl.scale input[type="range"] { accent-color: #f0883e; }
105
+ .ctrl.scale input[type="range"] { margin-right: 8px; }
106
+ .ctrl.scale .val { color: #f0883e; }
107
+ .ctrl.clamp input[type="range"] { accent-color: #a371f7; }
108
+ .ctrl.clamp .val { color: #a371f7; }
109
+ .group-sep { border-left: 1px solid #30363d; margin-left: 2px; padding-left: 2px; display: inline-flex; align-items: center; height: 18px; }
110
+ .signal-summary { margin-left: 8px; min-width: 313px; max-width: 450px; flex: 0 0 338px; display: flex; flex-direction: column; gap: 4px; align-items: flex-start; justify-content: center; }
111
+ .signal-bar { display: flex; width: 100%; height: 15px; overflow: hidden; border-radius: 999px; background: #10151d; border: 1px solid #30363d; box-shadow: inset 0 0 0 1px rgba(255,255,255,0.03), 0 0 10px rgba(88,166,255,0.08); }
112
+ .signal-seg { position: relative; height: 100%; min-width: 1px; transition: width 0.18s ease; box-shadow: inset 0 0 8px rgba(255,255,255,0.14), 0 0 8px currentColor; }
113
+ .signal-seg:not(:last-child) { border-right: 1px solid rgba(255,255,255,0.34); }
114
+ .signal-seg.below { color: #58a6ff; background: linear-gradient(90deg, #3b82f6 0%, #7dd3fc 100%); box-shadow: inset 0 0 4px rgba(255,255,255,0.14); }
115
+ .signal-seg.mid { color: #ffd24a; background: linear-gradient(90deg, #ffe066 0%, #fff3a0 100%); box-shadow: inset 0 0 4px rgba(255,255,255,0.18); }
116
+ .signal-seg.over { color: #f85149; background: linear-gradient(90deg, #ff4d4d 0%, #ff8a8a 100%); box-shadow: inset 0 0 4px rgba(255,255,255,0.12); }
117
+ .signal-labels { position: relative; width: 100%; height: 12px; font-size: 10px; color: #8b949e; white-space: nowrap; }
118
+ .signal-labels span { position: absolute; top: 0; transform: translateY(0); pointer-events: none; }
119
+ .signal-labels span:nth-child(1) { left: 2px; color: #58a6ff; }
120
+ .signal-labels span:nth-child(2) { left: 50%; transform: translate(-50%, 0); color: #ffd24a; }
121
+ .signal-labels span:nth-child(3) { right: 2px; color: #f85149; }
122
+ </style>
123
+ </head>
124
+ <body>
125
+ <div id="header">
126
+ <div id="header-left">${escapeHtml(title)}</div>
127
+ <div id="hint">Log price only · weight variance · symmetric shift · wheel zoom · drag pan · Ctrl+0 reset</div>
128
+ </div>
129
+
130
+ <div id="panels">
131
+ <div id="price-panel">
132
+ <div class="section-label">PRICE (LOG)</div>
133
+ <div class="legend">
134
+ <div class="legend-item"><div class="dot" style="background:#58a6ff;"></div>Price: <span id="l-price" class="legend-val" style="color:#58a6ff;">-</span></div>
135
+ <div class="legend-item"><div class="dot" style="background:#e3b341;"></div>AMA3: <span id="l-ama3" class="legend-val" style="color:#e3b341;">-</span></div>
136
+ </div>
137
+ <div id="price-chart"></div>
138
+ </div>
139
+ <div id="variance-panel">
140
+ <div class="section-label">WEIGHT VARIANCE</div>
141
+ <div class="legend">
142
+ <div class="legend-item"><div class="dot" style="background:#d2a8ff;"></div>Weight variance: <span id="l-var" class="legend-val" style="color:#d2a8ff;">-</span></div>
143
+ </div>
144
+ <div id="variance-chart"></div>
145
+ </div>
146
+ <div id="shift-panel">
147
+ <div class="section-label">SYMMETRIC SHIFT</div>
148
+ <div class="legend" style="gap: 10px;">
149
+ <div class="legend-item"><div class="dot" style="background:#f85149;"></div>Δ: <span id="l-delta" class="legend-val" style="color:#f85149;">-</span></div>
150
+ <div class="legend-item">Weff: <span id="l-weff" class="legend-val" style="color:#3fb950;">-</span></div>
151
+ <div class="group-sep"></div>
152
+ <div class="ctrl thr"><label for="threshold-slider">thr</label><input type="range" id="threshold-slider" min="0" max="500" step="1" value="${Math.round(defaultThreshold * 1000)}"><span class="val" id="threshold-value">${defaultThreshold.toFixed(3)}</span></div>
153
+ <div class="ctrl atr"><label for="atr-slider">atr</label><input type="range" id="atr-slider" min="3" max="30" step="1" value="${Math.round(defaultAtrPeriod)}"><span class="val" id="atr-value">${Math.round(defaultAtrPeriod)}</span></div>
154
+ <div class="ctrl clamp"><label for="clamp-slider">clamp</label><input type="range" id="clamp-slider" min="100" max="1000" step="1" value="${Math.round(defaultClamp * 1000)}"><span class="val" id="clamp-value">${defaultClamp.toFixed(3)}</span></div>
155
+ <div class="ctrl exp"><label for="exponent-slider">exp</label><input type="range" id="exponent-slider" min="500" max="1000" step="1" value="${Math.round(defaultExponent * 1000)}"><span class="val" id="exponent-value">${defaultExponent.toFixed(3)}</span></div>
156
+ <div class="ctrl scale"><label for="scale-slider">scaleX</label><input type="range" id="scale-slider" min="100" max="10000" step="1" value="${Math.round(defaultScaleX * 100)}"><span class="val" id="scale-value">${defaultScaleX.toFixed(2)}x</span></div>
157
+ <div class="signal-summary">
158
+ <div class="signal-bar" id="signal-bar" title="Signal distribution">
159
+ <div id="signal-below" class="signal-seg below" style="width:0%"></div>
160
+ <div id="signal-mid" class="signal-seg mid" style="width:0%"></div>
161
+ <div id="signal-over" class="signal-seg over" style="width:0%"></div>
162
+ </div>
163
+ <div class="signal-labels">
164
+ <span id="signal-below-label">below 0%</span>
165
+ <span id="signal-mid-label">in 0%</span>
166
+ <span id="signal-over-label">over 0%</span>
167
+ </div>
168
+ </div>
169
+ </div>
170
+ <div id="shift-chart"></div>
171
+ </div>
172
+ </div>
173
+
174
+ <script id="payload" type="application/json">${serializeJsonForScript(payload)}</script>
175
+ <script>
176
+ (function () {
177
+ const data = JSON.parse(document.getElementById('payload').textContent);
178
+ const SYNC_KEY = 'volatility-det-v1';
179
+ const Y_AXIS_SIZE = 58;
180
+ const MARKET_ADAPTER = data.marketAdapter || {};
181
+ const MIN_WEIGHT = data.minWeight ?? ${JSON.stringify(defaultMinWeight)};
182
+ const MAX_WEIGHT = data.maxWeight ?? ${JSON.stringify(defaultMaxWeight)};
183
+ const BASELINE_WEIGHT = 0.5;
184
+ const EXP_LOG_MIN = Math.log(0.5);
185
+ const EXP_LOG_MAX = Math.log(1.0);
186
+ const SCALE_LOG_MIN = Math.log(1.0);
187
+ const SCALE_LOG_MAX = Math.log(100.0);
188
+ const candleRows = Array.isArray(data.candles) ? data.candles : [];
189
+ const baseVarianceSeries = Array.isArray(data.varianceSeries) ? data.varianceSeries : [];
190
+
191
+ function getCandleClose(c) { return Array.isArray(c) ? c[4] : c?.close; }
192
+ function getCandleHigh(c) { return Array.isArray(c) ? c[2] : c?.high; }
193
+ function getCandleLow(c) { return Array.isArray(c) ? c[3] : c?.low; }
194
+
195
+ let currentAtrPeriod = Math.max(3, Math.min(30, Math.round(data.atrPeriod ?? ${JSON.stringify(defaultAtrPeriod)})));
196
+ let currentThreshold = data.volatilityThreshold;
197
+ let currentExponent = data.volatilityExponent;
198
+ let currentScaleX = data.volatilityScaleX;
199
+ let currentClamp = Math.max(0.1, data.volatilityClamp ?? ${JSON.stringify(defaultClamp)});
200
+
201
+ const xMin = data.dates[0];
202
+ const xMax = data.dates[data.dates.length - 1];
203
+ let pendingRange = null;
204
+ let pendingRangeRaf = 0;
205
+ let priceChart, varianceChart, shiftChart;
206
+ let charts;
207
+
208
+ ${UPLOT_SHARED_SCRIPT}
209
+
210
+ function clamp(v, lo, hi) {
211
+ return Math.max(lo, Math.min(hi, v));
212
+ }
213
+
214
+ function fmtNum(v, digits = 4) {
215
+ if (v == null || !Number.isFinite(v)) return '-';
216
+ const abs = Math.abs(v);
217
+ if (abs >= 1000) return v.toFixed(2);
218
+ if (abs >= 1) return v.toFixed(Math.min(4, digits));
219
+ return v.toPrecision(Math.min(6, digits + 2));
220
+ }
221
+
222
+ function fmtSigned(v, digits = 3) {
223
+ if (v == null || !Number.isFinite(v)) return '-';
224
+ const s = v >= 0 ? '+' : '';
225
+ return s + v.toFixed(digits);
226
+ }
227
+
228
+ function fmtDate(ts) {
229
+ if (ts == null) return '-';
230
+ const d = new Date(ts * 1000);
231
+ return d.toLocaleDateString('en-GB', { day: '2-digit', month: 'short', year: '2-digit' })
232
+ + ' ' + d.toLocaleTimeString('en-GB', { hour: '2-digit', minute: '2-digit' });
233
+ }
234
+
235
+ function expSliderToVal(pos) {
236
+ return Math.exp(EXP_LOG_MIN + (pos / 1000) * (EXP_LOG_MAX - EXP_LOG_MIN));
237
+ }
238
+
239
+ function expValToSlider(val) {
240
+ const clamped = Math.max(Math.exp(EXP_LOG_MIN), Math.min(Math.exp(EXP_LOG_MAX), val));
241
+ return Math.round((Math.log(clamped) - EXP_LOG_MIN) / (EXP_LOG_MAX - EXP_LOG_MIN) * 1000);
242
+ }
243
+
244
+ function scaleSliderToVal(pos) {
245
+ return Math.exp(SCALE_LOG_MIN + (pos / 1000) * (SCALE_LOG_MAX - SCALE_LOG_MIN));
246
+ }
247
+
248
+ function scaleValToSlider(val) {
249
+ const clamped = Math.max(Math.exp(SCALE_LOG_MIN), Math.min(Math.exp(SCALE_LOG_MAX), val));
250
+ return Math.round((Math.log(clamped) - SCALE_LOG_MIN) / (SCALE_LOG_MAX - SCALE_LOG_MIN) * 1000);
251
+ }
252
+
253
+ function clampValToSlider(val) {
254
+ const clamped = Math.max(0.1, Math.min(1.0, val));
255
+ return Math.round(clamped * 1000);
256
+ }
257
+
258
+ function clampSliderToVal(pos) {
259
+ return Math.max(0.1, Math.min(1.0, pos / 1000));
260
+ }
261
+
262
+ /* Sync with analysis/math_utils.ts computeATR() — keep in sync when changing ATR logic */
263
+ function computeATRSeries(candles, period = 14) {
264
+ const atrs = [];
265
+ if (!Array.isArray(candles) || candles.length === 0) return atrs;
266
+
267
+ const safePeriod = Math.max(1, Math.round(period));
268
+ let prevClose = Number(getCandleClose(candles[0]) ?? 0);
269
+ let atrVal = 0;
270
+
271
+ for (let i = 0; i < candles.length; i++) {
272
+ const c = candles[i];
273
+ const high = Number(getCandleHigh(c) ?? 0);
274
+ const low = Number(getCandleLow(c) ?? 0);
275
+ const close = Number(getCandleClose(c) ?? 0);
276
+ if (i === 0) {
277
+ atrs.push(0);
278
+ prevClose = close;
279
+ continue;
280
+ }
281
+ const tr = Math.max(high - low, Math.abs(high - prevClose), Math.abs(low - prevClose));
282
+ if (i <= safePeriod) {
283
+ atrVal = atrVal === 0 ? tr : (atrVal * (i - 1) + tr) / i;
284
+ } else {
285
+ atrVal = (atrVal * (safePeriod - 1) + tr) / safePeriod;
286
+ }
287
+ atrs.push(atrVal);
288
+ prevClose = close;
289
+ }
290
+
291
+ return atrs;
292
+ }
293
+
294
+ function rebuildVarianceSeries() {
295
+ if (!candleRows.length) return baseVarianceSeries.slice();
296
+
297
+ const atrSeries = computeATRSeries(candleRows, currentAtrPeriod);
298
+ const next = new Array(data.dates.length).fill(null);
299
+ for (let i = 0; i < data.realBarCount; i++) {
300
+ const amaPrice = data.ama3Prices[i];
301
+ const atr = atrSeries[i] ?? 0;
302
+ next[i] = amaPrice > 0 ? atr / amaPrice : 0;
303
+ }
304
+ return next;
305
+ }
306
+
307
+ function toPlotLog(values) {
308
+ return values.map((v) => (v != null && v > 0 ? v : null));
309
+ }
310
+
311
+ let varianceSeries = rebuildVarianceSeries();
312
+ const variancePlot = toPlotLog(varianceSeries);
313
+
314
+ let rawDeltaArr = new Array(data.dates.length).fill(null);
315
+ let deltaArr = new Array(data.dates.length).fill(null);
316
+ let weffArr = new Array(data.dates.length).fill(null);
317
+ let signalSummary = { below: 0, mid: 0, over: 0, total: 0 };
318
+
319
+ function calcShift(weightVariance) {
320
+ const safeVariance = Number.isFinite(weightVariance) && weightVariance > 0 ? weightVariance : 0;
321
+ const effectiveExponent = Math.max(Math.exp(EXP_LOG_MIN), Math.min(Math.exp(EXP_LOG_MAX), currentExponent));
322
+ const effectiveScaleX = Math.max(Math.exp(SCALE_LOG_MIN), Math.min(Math.exp(SCALE_LOG_MAX), currentScaleX));
323
+ const effectiveClamp = Number.isFinite(currentClamp) && currentClamp >= 0.1 ? currentClamp : ${JSON.stringify(defaultClamp)};
324
+ const raw = -Math.pow(safeVariance, effectiveExponent) * effectiveScaleX;
325
+ const rawAbs = Math.abs(raw);
326
+ const clampedRaw = clamp(raw, -effectiveClamp, 0);
327
+ const delta = Math.abs(clampedRaw) < currentThreshold ? 0 : clampedRaw;
328
+ const weff = clamp(BASELINE_WEIGHT + delta, MIN_WEIGHT, MAX_WEIGHT);
329
+ return { raw: clampedRaw, rawAbs, delta, weff, sellW: weff, buyW: weff };
330
+ }
331
+
332
+ function recalcShift() {
333
+ varianceSeries = rebuildVarianceSeries();
334
+ const effectiveClamp = Number.isFinite(currentClamp) && currentClamp >= 0.1 ? currentClamp : ${JSON.stringify(defaultClamp)};
335
+ let below = 0;
336
+ let mid = 0;
337
+ let over = 0;
338
+ let total = 0;
339
+ for (let i = 0; i < data.dates.length; i++) {
340
+ if (i >= data.realBarCount) {
341
+ rawDeltaArr[i] = null;
342
+ deltaArr[i] = null;
343
+ weffArr[i] = null;
344
+ continue;
345
+ }
346
+ const r = calcShift(varianceSeries[i]);
347
+ rawDeltaArr[i] = r.raw;
348
+ deltaArr[i] = r.delta;
349
+ weffArr[i] = r.weff;
350
+ if (Number.isFinite(r.rawAbs)) {
351
+ total++;
352
+ if (r.rawAbs >= effectiveClamp) over++;
353
+ else if (r.rawAbs < currentThreshold) below++;
354
+ else mid++;
355
+ }
356
+ }
357
+ signalSummary = { below, mid, over, total };
358
+ }
359
+
360
+ function updateSignalSummary() {
361
+ const total = signalSummary.total || 0;
362
+ const belowPct = total > 0 ? (signalSummary.below / total) * 100 : 0;
363
+ const midPct = total > 0 ? (signalSummary.mid / total) * 100 : 0;
364
+ const overPct = total > 0 ? (signalSummary.over / total) * 100 : 0;
365
+
366
+ const belowEl = document.getElementById('signal-below');
367
+ const midEl = document.getElementById('signal-mid');
368
+ const overEl = document.getElementById('signal-over');
369
+ belowEl.style.width = belowPct + '%';
370
+ midEl.style.width = midPct + '%';
371
+ overEl.style.width = overPct + '%';
372
+ belowEl.title = 'below: ' + signalSummary.below + '/' + total + ' (' + belowPct.toFixed(1) + '%)';
373
+ midEl.title = 'in: ' + signalSummary.mid + '/' + total + ' (' + midPct.toFixed(1) + '%)';
374
+ overEl.title = 'over: ' + signalSummary.over + '/' + total + ' (' + overPct.toFixed(1) + '%)';
375
+
376
+ const title = 'below: ' + signalSummary.below + '/' + total + ' (' + belowPct.toFixed(1) + '%) | in: ' + signalSummary.mid + '/' + total + ' (' + midPct.toFixed(1) + '%) | over: ' + signalSummary.over + '/' + total + ' (' + overPct.toFixed(1) + '%)';
377
+ document.getElementById('signal-bar').title = title;
378
+ document.getElementById('signal-below-label').textContent = 'below ' + belowPct.toFixed(1) + '%';
379
+ document.getElementById('signal-mid-label').textContent = 'in ' + midPct.toFixed(1) + '%';
380
+ document.getElementById('signal-over-label').textContent = 'over ' + overPct.toFixed(1) + '%';
381
+ }
382
+
383
+ function rangeFrom(values, fallbackMin, fallbackMax, padFrac = 0.12) {
384
+ let min = Infinity;
385
+ let max = -Infinity;
386
+ for (let i = 0; i < values.length; i++) {
387
+ const v = values[i];
388
+ if (v == null || !Number.isFinite(v)) continue;
389
+ if (v < min) min = v;
390
+ if (v > max) max = v;
391
+ }
392
+ if (!Number.isFinite(min) || !Number.isFinite(max)) return [fallbackMin, fallbackMax];
393
+ if (min === max) {
394
+ const pad = Math.max(Math.abs(min) * padFrac, 0.02);
395
+ return [min - pad, max + pad];
396
+ }
397
+ const span = max - min;
398
+ const pad = span * padFrac;
399
+ return [min - pad, max + pad];
400
+ }
401
+
402
+ function buildRawDeltaSplits(u) {
403
+ const scale = u.scales.d || {};
404
+ const r = rangeFrom(rawDeltaArr, -0.5, 0.04);
405
+ const min = Number.isFinite(scale.min) ? scale.min : r[0];
406
+ const max = Number.isFinite(scale.max) ? scale.max : r[1];
407
+ const lo = Math.min(min, max);
408
+ const hi = Math.max(min, max);
409
+ const step = 0.05;
410
+ const start = Math.floor(lo / step) * step;
411
+ const end = Math.ceil(hi / step) * step;
412
+ const splits = [];
413
+ for (let v = start; v <= end + 1e-9; v += step) {
414
+ const rounded = roundTo(v, 100);
415
+ if (!splits.includes(rounded)) splits.push(rounded);
416
+ }
417
+ if (!splits.includes(0)) splits.push(0);
418
+ if (!splits.includes(-currentThreshold)) splits.push(-currentThreshold);
419
+ return splits.sort((a, b) => a - b);
420
+ }
421
+
422
+ function makeDeltaHook(values, scaleKey, thresholdGetter) {
423
+ return (u) => {
424
+ const { ctx, bbox } = u;
425
+ ctx.save();
426
+ ctx.beginPath();
427
+ ctx.rect(bbox.left, bbox.top, bbox.width, bbox.height);
428
+ ctx.clip();
429
+
430
+ const zeroY = u.valToPos(0, scaleKey, true);
431
+ const thresholdY = u.valToPos(-thresholdGetter(), scaleKey, true);
432
+
433
+ ctx.strokeStyle = '#ffd24a';
434
+ ctx.shadowColor = 'rgba(255,210,74,0.85)';
435
+ ctx.shadowBlur = 6;
436
+ ctx.lineWidth = 2.5;
437
+ ctx.setLineDash([4, 3]);
438
+ ctx.beginPath();
439
+ ctx.moveTo(bbox.left, thresholdY);
440
+ ctx.lineTo(bbox.left + bbox.width, thresholdY);
441
+ ctx.stroke();
442
+ ctx.shadowBlur = 0;
443
+ ctx.shadowColor = 'transparent';
444
+ ctx.font = 'bold 10px Segoe UI, sans-serif';
445
+ ctx.textBaseline = 'middle';
446
+ const label = 'threshold';
447
+ const labelX = Math.max(bbox.left + 4, bbox.left + bbox.width - 60);
448
+ const labelY = thresholdY - 8;
449
+ const labelW = ctx.measureText(label).width + 8;
450
+ ctx.fillStyle = 'rgba(11,14,20,0.82)';
451
+ ctx.fillRect(labelX - 4, labelY - 7, labelW, 14);
452
+ ctx.fillStyle = '#ffd24a';
453
+ ctx.fillText(label, labelX, labelY);
454
+
455
+ const clampY = u.valToPos(-currentClamp, scaleKey, true);
456
+ ctx.strokeStyle = '#a371f7';
457
+ ctx.shadowColor = 'rgba(163,113,247,0.85)';
458
+ ctx.shadowBlur = 6;
459
+ ctx.lineWidth = 2;
460
+ ctx.setLineDash([4, 3]);
461
+ ctx.beginPath();
462
+ ctx.moveTo(bbox.left, clampY);
463
+ ctx.lineTo(bbox.left + bbox.width, clampY);
464
+ ctx.stroke();
465
+ ctx.shadowBlur = 0;
466
+ ctx.shadowColor = 'transparent';
467
+ ctx.font = 'bold 10px Segoe UI, sans-serif';
468
+ ctx.textBaseline = 'middle';
469
+ const clampLabel = 'clamp';
470
+ const clampLabelX = Math.max(bbox.left + 4, bbox.left + bbox.width - 52);
471
+ const clampLabelY = clampY - 8;
472
+ const clampLabelW = ctx.measureText(clampLabel).width + 8;
473
+ ctx.fillStyle = 'rgba(11,14,20,0.82)';
474
+ ctx.fillRect(clampLabelX - 4, clampLabelY - 7, clampLabelW, 14);
475
+ ctx.fillStyle = '#a371f7';
476
+ ctx.fillText(clampLabel, clampLabelX, clampLabelY);
477
+
478
+ ctx.strokeStyle = 'rgba(139,148,158,0.4)';
479
+ ctx.setLineDash([4, 4]);
480
+ ctx.beginPath();
481
+ ctx.moveTo(bbox.left, zeroY);
482
+ ctx.lineTo(bbox.left + bbox.width, zeroY);
483
+ ctx.stroke();
484
+ ctx.setLineDash([]);
485
+
486
+ const path = new Path2D();
487
+ let started = false;
488
+ let lastX = 0;
489
+ for (let i = 0; i < values.length; i++) {
490
+ const v = values[i];
491
+ if (v == null) { if (started) { path.lineTo(lastX, zeroY); started = false; } continue; }
492
+ const x = u.valToPos(data.dates[i], 'x', true);
493
+ const y = u.valToPos(v, scaleKey, true);
494
+ if (!started) {
495
+ path.moveTo(x, zeroY);
496
+ path.lineTo(x, y);
497
+ started = true;
498
+ } else {
499
+ path.lineTo(x, y);
500
+ }
501
+ lastX = x;
502
+ }
503
+ if (started) path.lineTo(lastX, zeroY);
504
+
505
+ ctx.save();
506
+ ctx.beginPath();
507
+ ctx.rect(bbox.left, zeroY, bbox.width, bbox.top + bbox.height - zeroY);
508
+ ctx.clip();
509
+ ctx.fillStyle = 'rgba(248,81,73,0.16)';
510
+ ctx.fill(path);
511
+ ctx.restore();
512
+
513
+ ctx.strokeStyle = 'rgba(248,81,73,0.9)';
514
+ ctx.lineWidth = 1.7;
515
+ ctx.stroke(path);
516
+ ctx.restore();
517
+ };
518
+ }
519
+
520
+ const cursorCfg = {
521
+ show: true,
522
+ x: true,
523
+ y: true,
524
+ points: { show: false },
525
+ drag: { x: false, y: false, setScale: false },
526
+ sync: { key: SYNC_KEY, setSeries: false, scales: ['x', null] },
527
+ focus: { prox: -1 },
528
+ };
529
+
530
+ function updateLegend(idx) {
531
+ if (idx == null || idx >= data.realBarCount) return;
532
+ document.getElementById('l-price').textContent = fmtNum(data.prices[idx], 6);
533
+ document.getElementById('l-ama3').textContent = fmtNum(data.ama3Prices[idx], 6);
534
+ const variance = varianceSeries[idx];
535
+ document.getElementById('l-var').textContent = variance == null ? '-' : fmtNum(variance, 6) + ' (' + fmtNum(variance * 100, 4) + '%)';
536
+ document.getElementById('l-delta').textContent = fmtSigned(deltaArr[idx], 3);
537
+ document.getElementById('l-weff').textContent = fmtNum(weffArr[idx], 3);
538
+ }
539
+
540
+ function init() {
541
+ currentAtrPeriod = Math.max(3, Math.min(30, Math.round(currentAtrPeriod)));
542
+ currentExponent = Math.max(Math.exp(EXP_LOG_MIN), Math.min(Math.exp(EXP_LOG_MAX), currentExponent));
543
+ currentScaleX = Math.max(Math.exp(SCALE_LOG_MIN), Math.min(Math.exp(SCALE_LOG_MAX), currentScaleX));
544
+ currentClamp = Math.max(0.1, Math.min(1.0, currentClamp));
545
+ document.getElementById('atr-slider').value = currentAtrPeriod;
546
+ document.getElementById('atr-value').textContent = String(currentAtrPeriod);
547
+ document.getElementById('threshold-slider').value = Math.round(currentThreshold * 1000);
548
+ document.getElementById('exponent-slider').value = expValToSlider(currentExponent);
549
+ document.getElementById('scale-slider').value = scaleValToSlider(currentScaleX);
550
+ document.getElementById('clamp-slider').value = clampValToSlider(currentClamp);
551
+ document.getElementById('exponent-value').textContent = currentExponent.toFixed(3);
552
+ document.getElementById('scale-value').textContent = currentScaleX.toFixed(2) + 'x';
553
+ document.getElementById('clamp-value').textContent = currentClamp.toFixed(3);
554
+
555
+ const priceEl = document.getElementById('price-panel');
556
+ const varianceEl = document.getElementById('variance-panel');
557
+ const shiftEl = document.getElementById('shift-panel');
558
+
559
+ recalcShift();
560
+ updateSignalSummary();
561
+
562
+ priceChart = new uPlot({
563
+ width: priceEl.offsetWidth,
564
+ height: priceEl.offsetHeight,
565
+ padding: [4, 8, 2, 4],
566
+ select: { show: false },
567
+ legend: { show: false },
568
+ scales: {
569
+ x: { time: true },
570
+ y: { auto: true, distr: 3, log: 10, range: (u, min, max) => [min * 0.95, max * 1.05] },
571
+ },
572
+ series: [
573
+ { label: 'Time' },
574
+ { label: 'Price', stroke: '#58a6ff', width: 1.5, scale: 'y', points: { show: false } },
575
+ { label: 'AMA3', stroke: '#e3b341', width: 1.5, scale: 'y', points: { show: false } },
576
+ ],
577
+ axes: [
578
+ { show: false, stroke: '#545d68', grid: { stroke: '#1c2128' }, ticks: { stroke: '#30363d', width: 1 }, size: 28, font: '11px Segoe UI, sans-serif' },
579
+ { scale: 'y', stroke: '#545d68', grid: { stroke: '#1c2128' }, ticks: { stroke: '#30363d', width: 1 }, size: Y_AXIS_SIZE, font: '11px Segoe UI, sans-serif',
580
+ values: (u, v) => v.map(x => x != null ? fmtNum(x, 6) : '') },
581
+ ],
582
+ cursor: cursorCfg,
583
+ }, [data.dates, data.prices, data.ama3Prices], document.getElementById('price-chart'));
584
+
585
+ varianceChart = new uPlot({
586
+ width: varianceEl.offsetWidth,
587
+ height: varianceEl.offsetHeight,
588
+ padding: [14, 8, 2, 4],
589
+ select: { show: false },
590
+ legend: { show: false },
591
+ scales: {
592
+ x: { time: true },
593
+ v: { auto: true, range: (u, min, max) => [min * 0.95, max * 1.05] },
594
+ },
595
+ series: [
596
+ { label: 'Time' },
597
+ { label: 'Weight variance', stroke: '#d2a8ff', width: 1.5, scale: 'v', points: { show: false } },
598
+ ],
599
+ axes: [
600
+ { show: false, stroke: '#545d68', grid: { stroke: '#1c2128' }, ticks: { stroke: '#30363d', width: 1 }, size: 28, font: '11px Segoe UI, sans-serif' },
601
+ { scale: 'v', stroke: '#545d68', grid: { stroke: '#1c2128' }, ticks: { stroke: '#30363d', width: 1 }, size: Y_AXIS_SIZE, font: '11px Segoe UI, sans-serif',
602
+ values: (u, v) => v.map(x => x != null ? fmtNum(x, 6) : '') },
603
+ ],
604
+ cursor: cursorCfg,
605
+ }, [data.dates, variancePlot], document.getElementById('variance-chart'));
606
+
607
+ shiftChart = new uPlot({
608
+ width: shiftEl.offsetWidth,
609
+ height: shiftEl.offsetHeight,
610
+ padding: [26, 8, 4, 4],
611
+ select: { show: false },
612
+ legend: { show: false },
613
+ scales: {
614
+ x: { time: true },
615
+ d: { auto: true, range: () => rangeFrom(rawDeltaArr, -0.5, 0.04) },
616
+ },
617
+ series: [
618
+ { label: 'Time' },
619
+ { label: 'Raw Δ', stroke: '#8b949e', width: 1.2, dash: [5, 4], scale: 'd', points: { show: false } },
620
+ { label: 'Δ', stroke: '#f85149', width: 1.7, scale: 'd', points: { show: false } },
621
+ ],
622
+ axes: [
623
+ { show: true, stroke: '#545d68', grid: { stroke: '#1c2128' }, ticks: { stroke: '#30363d', width: 1 }, size: 28, font: '11px Segoe UI, sans-serif' },
624
+ { scale: 'd', stroke: '#545d68', grid: { stroke: '#1c2128', dash: [4, 4] }, ticks: { stroke: '#30363d', width: 1 }, size: Y_AXIS_SIZE, font: '11px Segoe UI, sans-serif',
625
+ values: (u, v) => v.map(x => x != null ? fmtSigned(x, 3) : ''),
626
+ splits: buildRawDeltaSplits },
627
+ ],
628
+ cursor: cursorCfg,
629
+ hooks: {
630
+ draw: [makeDeltaHook(deltaArr, 'd', () => currentThreshold)],
631
+ },
632
+ }, [data.dates, rawDeltaArr, deltaArr], document.getElementById('shift-chart'));
633
+
634
+ charts = [priceChart, varianceChart, shiftChart];
635
+ let leavePending = null;
636
+ charts.forEach(chart => {
637
+ chart.over.addEventListener('mousemove', () => {
638
+ if (leavePending !== null) {
639
+ clearTimeout(leavePending);
640
+ leavePending = null;
641
+ }
642
+ updateLegend(chart.cursor.idx);
643
+ });
644
+ chart.over.addEventListener('mouseleave', () => {
645
+ leavePending = setTimeout(() => {
646
+ leavePending = null;
647
+ updateLegend(shiftChart.cursor.idx ?? data.realBarCount - 1);
648
+ }, 60);
649
+ });
650
+ chart.root.addEventListener('mouseenter', () => chart.root.classList.add('is-hovered'));
651
+ chart.root.addEventListener('mouseleave', () => chart.root.classList.remove('is-hovered'));
652
+ bindWheelZoom(chart);
653
+ bindPan(chart);
654
+ });
655
+
656
+ function refreshChartsPreservingZoom() {
657
+ const xs = shiftChart.scales.x;
658
+ const savedX = xs ? { min: Number.isFinite(xs.min) ? xs.min : xMin, max: Number.isFinite(xs.max) ? xs.max : xMax } : null;
659
+ varianceChart.setData([data.dates, toPlotLog(varianceSeries)], false);
660
+ shiftChart.setData([data.dates, rawDeltaArr, deltaArr], false);
661
+ if (savedX) {
662
+ [varianceChart, shiftChart].forEach((chart) => chart.batch(() => chart.setScale('x', savedX)));
663
+ }
664
+ }
665
+
666
+ function applyShiftFromSliders() {
667
+ recalcShift();
668
+ updateSignalSummary();
669
+ refreshChartsPreservingZoom();
670
+ updateLegend(shiftChart.cursor.idx ?? data.realBarCount - 1);
671
+ }
672
+
673
+ document.getElementById('atr-slider').addEventListener('input', (e) => {
674
+ currentAtrPeriod = parseInt(e.target.value, 10);
675
+ document.getElementById('atr-value').textContent = String(currentAtrPeriod);
676
+ applyShiftFromSliders();
677
+ });
678
+
679
+ document.getElementById('threshold-slider').addEventListener('input', (e) => {
680
+ currentThreshold = parseInt(e.target.value, 10) / 1000;
681
+ document.getElementById('threshold-value').textContent = currentThreshold.toFixed(3);
682
+ applyShiftFromSliders();
683
+ });
684
+
685
+ document.getElementById('exponent-slider').addEventListener('input', (e) => {
686
+ currentExponent = expSliderToVal(parseInt(e.target.value, 10));
687
+ document.getElementById('exponent-value').textContent = currentExponent.toFixed(3);
688
+ applyShiftFromSliders();
689
+ });
690
+
691
+ document.getElementById('scale-slider').addEventListener('input', (e) => {
692
+ currentScaleX = scaleSliderToVal(parseInt(e.target.value, 10));
693
+ document.getElementById('scale-value').textContent = currentScaleX.toFixed(2) + 'x';
694
+ applyShiftFromSliders();
695
+ });
696
+
697
+ document.getElementById('clamp-slider').addEventListener('input', (e) => {
698
+ currentClamp = clampSliderToVal(parseInt(e.target.value, 10));
699
+ document.getElementById('clamp-value').textContent = currentClamp.toFixed(3);
700
+ applyShiftFromSliders();
701
+ });
702
+ }
703
+
704
+ function sizeCharts() {
705
+ if (!priceChart || !varianceChart || !shiftChart) return;
706
+ [
707
+ [priceChart, 'price-panel'],
708
+ [varianceChart, 'variance-panel'],
709
+ [shiftChart, 'shift-panel'],
710
+ ].forEach(([chart, id]) => {
711
+ const el = document.getElementById(id);
712
+ chart.setSize({ width: el.offsetWidth, height: el.offsetHeight });
713
+ });
714
+ }
715
+
716
+ window.addEventListener('resize', sizeCharts);
717
+ window.addEventListener('keydown', (e) => {
718
+ if ((e.ctrlKey || e.metaKey) && e.key === '0') syncXRange(xMin, xMax);
719
+ });
720
+
721
+ init();
722
+ requestAnimationFrame(() => requestAnimationFrame(() => {
723
+ sizeCharts();
724
+ updateLegend(data.realBarCount - 1);
725
+ }));
726
+ })();
727
+ </script>
728
+ </body>
729
+ </html>`;
730
+ }
731
+ module.exports = { generateHTML };
732
+ //# sourceMappingURL=volatility_chart_generator.js.map