@3rd-eye-labs/openmm 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/dist/cli/cli.js +4 -5
  2. package/dist/cli/cli.js.map +1 -1
  3. package/dist/cli/commands/balance.d.ts.map +1 -1
  4. package/dist/cli/commands/balance.js +1 -1
  5. package/dist/cli/commands/balance.js.map +1 -1
  6. package/dist/cli/commands/grid.d.ts +3 -0
  7. package/dist/cli/commands/grid.d.ts.map +1 -0
  8. package/dist/cli/commands/grid.js +103 -0
  9. package/dist/cli/commands/grid.js.map +1 -0
  10. package/dist/cli/commands/multi-trade.d.ts +3 -0
  11. package/dist/cli/commands/multi-trade.d.ts.map +1 -0
  12. package/dist/cli/commands/multi-trade.js +175 -0
  13. package/dist/cli/commands/multi-trade.js.map +1 -0
  14. package/dist/cli/commands/orderbook.js +1 -1
  15. package/dist/cli/commands/orderbook.js.map +1 -1
  16. package/dist/cli/commands/orders.d.ts.map +1 -1
  17. package/dist/cli/commands/orders.js +3 -4
  18. package/dist/cli/commands/orders.js.map +1 -1
  19. package/dist/cli/commands/pool-discovery.d.ts.map +1 -1
  20. package/dist/cli/commands/pool-discovery.js +2 -4
  21. package/dist/cli/commands/pool-discovery.js.map +1 -1
  22. package/dist/cli/commands/price-comparison.d.ts +3 -0
  23. package/dist/cli/commands/price-comparison.d.ts.map +1 -0
  24. package/dist/cli/commands/price-comparison.js +103 -0
  25. package/dist/cli/commands/price-comparison.js.map +1 -0
  26. package/dist/cli/commands/ticker.d.ts.map +1 -1
  27. package/dist/cli/commands/ticker.js.map +1 -1
  28. package/dist/cli/commands/trade.d.ts.map +1 -1
  29. package/dist/cli/commands/trade.js +135 -18
  30. package/dist/cli/commands/trade.js.map +1 -1
  31. package/dist/cli/commands/trades.d.ts.map +1 -1
  32. package/dist/cli/commands/trades.js +2 -3
  33. package/dist/cli/commands/trades.js.map +1 -1
  34. package/dist/cli/exchange-factory.d.ts.map +1 -1
  35. package/dist/cli/exchange-factory.js +6 -6
  36. package/dist/cli/exchange-factory.js.map +1 -1
  37. package/dist/cli/pool-discovery-core.d.ts.map +1 -1
  38. package/dist/cli/pool-discovery-core.js +3 -9
  39. package/dist/cli/pool-discovery-core.js.map +1 -1
  40. package/dist/cli/pool-discovery.d.ts +56 -0
  41. package/dist/cli/pool-discovery.d.ts.map +1 -0
  42. package/dist/cli/pool-discovery.js +283 -0
  43. package/dist/cli/pool-discovery.js.map +1 -0
  44. package/dist/cli/utils/error-handler.d.ts.map +1 -1
  45. package/dist/cli/utils/error-handler.js +6 -5
  46. package/dist/cli/utils/error-handler.js.map +1 -1
  47. package/dist/config/environment.d.ts.map +1 -1
  48. package/dist/config/environment.js +3 -1
  49. package/dist/config/environment.js.map +1 -1
  50. package/dist/config/launcher-config.d.ts +13 -0
  51. package/dist/config/launcher-config.d.ts.map +1 -1
  52. package/dist/config/launcher-config.js +3 -1
  53. package/dist/config/launcher-config.js.map +1 -1
  54. package/dist/config/price-aggregation.d.ts +1 -1
  55. package/dist/config/price-aggregation.d.ts.map +1 -1
  56. package/dist/config/price-aggregation.js +20 -20
  57. package/dist/config/price-aggregation.js.map +1 -1
  58. package/dist/core/exchange/base-exchange-connector.d.ts.map +1 -1
  59. package/dist/core/exchange/base-exchange-connector.js +1 -5
  60. package/dist/core/exchange/base-exchange-connector.js.map +1 -1
  61. package/dist/core/exchange/base-exchange-data-mapper.d.ts.map +1 -1
  62. package/dist/core/exchange/base-exchange-data-mapper.js +1 -1
  63. package/dist/core/exchange/base-exchange-data-mapper.js.map +1 -1
  64. package/dist/core/price-aggregation/cardano-price-service.d.ts +2 -2
  65. package/dist/core/price-aggregation/cardano-price-service.d.ts.map +1 -1
  66. package/dist/core/price-aggregation/cardano-price-service.js +13 -13
  67. package/dist/core/price-aggregation/cardano-price-service.js.map +1 -1
  68. package/dist/core/price-aggregation/index.d.ts +1 -1
  69. package/dist/core/price-aggregation/index.d.ts.map +1 -1
  70. package/dist/core/price-aggregation/iris-api-client.d.ts.map +1 -1
  71. package/dist/core/price-aggregation/iris-api-client.js +5 -5
  72. package/dist/core/price-aggregation/iris-api-client.js.map +1 -1
  73. package/dist/core/price-aggregation/iris-pool-discovery.d.ts +2 -2
  74. package/dist/core/price-aggregation/iris-pool-discovery.d.ts.map +1 -1
  75. package/dist/core/price-aggregation/iris-pool-discovery.js +3 -3
  76. package/dist/core/price-aggregation/iris-pool-discovery.js.map +1 -1
  77. package/dist/core/price-aggregation/multi-exchange-price-service.d.ts +38 -0
  78. package/dist/core/price-aggregation/multi-exchange-price-service.d.ts.map +1 -0
  79. package/dist/core/price-aggregation/multi-exchange-price-service.js +123 -0
  80. package/dist/core/price-aggregation/multi-exchange-price-service.js.map +1 -0
  81. package/dist/core/price-aggregation/price-cache.d.ts +55 -0
  82. package/dist/core/price-aggregation/price-cache.d.ts.map +1 -0
  83. package/dist/core/price-aggregation/price-cache.js +152 -0
  84. package/dist/core/price-aggregation/price-cache.js.map +1 -0
  85. package/dist/core/price-aggregation/price-calculator.d.ts.map +1 -1
  86. package/dist/core/price-aggregation/price-calculator.js +3 -3
  87. package/dist/core/price-aggregation/price-calculator.js.map +1 -1
  88. package/dist/core/risk-management/risk-manager.d.ts.map +1 -1
  89. package/dist/core/risk-management/risk-manager.js +2 -2
  90. package/dist/core/risk-management/risk-manager.js.map +1 -1
  91. package/dist/core/strategy/strategy-factory.d.ts +5 -0
  92. package/dist/core/strategy/strategy-factory.d.ts.map +1 -1
  93. package/dist/core/strategy/strategy-factory.js +127 -5
  94. package/dist/core/strategy/strategy-factory.js.map +1 -1
  95. package/dist/examples/mexc-connector-comprehensive-test.d.ts +15 -0
  96. package/dist/examples/mexc-connector-comprehensive-test.d.ts.map +1 -0
  97. package/dist/examples/mexc-connector-comprehensive-test.js +514 -0
  98. package/dist/examples/mexc-connector-comprehensive-test.js.map +1 -0
  99. package/dist/examples/mexc-order-update-test.d.ts +4 -0
  100. package/dist/examples/mexc-order-update-test.d.ts.map +1 -0
  101. package/dist/examples/mexc-order-update-test.js +186 -0
  102. package/dist/examples/mexc-order-update-test.js.map +1 -0
  103. package/dist/examples/mexc-test.d.ts +9 -0
  104. package/dist/examples/mexc-test.d.ts.map +1 -0
  105. package/dist/examples/mexc-test.js +218 -0
  106. package/dist/examples/mexc-test.js.map +1 -0
  107. package/dist/examples/mexc-trades-debug.d.ts +2 -0
  108. package/dist/examples/mexc-trades-debug.d.ts.map +1 -0
  109. package/dist/examples/mexc-trades-debug.js +101 -0
  110. package/dist/examples/mexc-trades-debug.js.map +1 -0
  111. package/dist/examples/mexc-trades-subscription-debug.d.ts +2 -0
  112. package/dist/examples/mexc-trades-subscription-debug.d.ts.map +1 -0
  113. package/dist/examples/mexc-trades-subscription-debug.js +150 -0
  114. package/dist/examples/mexc-trades-subscription-debug.js.map +1 -0
  115. package/dist/examples/mexc-websocket-test.d.ts +8 -0
  116. package/dist/examples/mexc-websocket-test.d.ts.map +1 -0
  117. package/dist/examples/mexc-websocket-test.js +115 -0
  118. package/dist/examples/mexc-websocket-test.js.map +1 -0
  119. package/dist/examples/test-protobuf-status-detection.d.ts +9 -0
  120. package/dist/examples/test-protobuf-status-detection.d.ts.map +1 -0
  121. package/dist/examples/test-protobuf-status-detection.js +83 -0
  122. package/dist/examples/test-protobuf-status-detection.js.map +1 -0
  123. package/dist/exchanges/base-exchange-connector.d.ts +33 -0
  124. package/dist/exchanges/base-exchange-connector.d.ts.map +1 -0
  125. package/dist/exchanges/base-exchange-connector.js +55 -0
  126. package/dist/exchanges/base-exchange-connector.js.map +1 -0
  127. package/dist/exchanges/bitget/bitget-auth.d.ts +66 -0
  128. package/dist/exchanges/bitget/bitget-auth.d.ts.map +1 -0
  129. package/dist/exchanges/bitget/bitget-auth.js +203 -0
  130. package/dist/exchanges/bitget/bitget-auth.js.map +1 -0
  131. package/dist/exchanges/bitget/bitget-connector.d.ts +255 -0
  132. package/dist/exchanges/bitget/bitget-connector.d.ts.map +1 -0
  133. package/dist/exchanges/bitget/bitget-connector.js +709 -0
  134. package/dist/exchanges/bitget/bitget-connector.js.map +1 -0
  135. package/dist/exchanges/bitget/bitget-data-mapper.d.ts +47 -0
  136. package/dist/exchanges/bitget/bitget-data-mapper.d.ts.map +1 -0
  137. package/dist/exchanges/bitget/bitget-data-mapper.js +147 -0
  138. package/dist/exchanges/bitget/bitget-data-mapper.js.map +1 -0
  139. package/dist/exchanges/bitget/bitget-user-stream.d.ts +126 -0
  140. package/dist/exchanges/bitget/bitget-user-stream.d.ts.map +1 -0
  141. package/dist/exchanges/bitget/bitget-user-stream.js +474 -0
  142. package/dist/exchanges/bitget/bitget-user-stream.js.map +1 -0
  143. package/dist/exchanges/bitget/bitget-utils.d.ts +17 -0
  144. package/dist/exchanges/bitget/bitget-utils.d.ts.map +1 -0
  145. package/dist/exchanges/bitget/bitget-utils.js +60 -0
  146. package/dist/exchanges/bitget/bitget-utils.js.map +1 -0
  147. package/dist/exchanges/bitget/bitget-websocket.d.ts +124 -0
  148. package/dist/exchanges/bitget/bitget-websocket.d.ts.map +1 -0
  149. package/dist/exchanges/bitget/bitget-websocket.js +434 -0
  150. package/dist/exchanges/bitget/bitget-websocket.js.map +1 -0
  151. package/dist/exchanges/gateio/gateio-auth.d.ts +69 -0
  152. package/dist/exchanges/gateio/gateio-auth.d.ts.map +1 -0
  153. package/dist/exchanges/gateio/gateio-auth.js +205 -0
  154. package/dist/exchanges/gateio/gateio-auth.js.map +1 -0
  155. package/dist/exchanges/gateio/gateio-connector.d.ts +182 -0
  156. package/dist/exchanges/gateio/gateio-connector.d.ts.map +1 -0
  157. package/dist/exchanges/gateio/gateio-connector.js +605 -0
  158. package/dist/exchanges/gateio/gateio-connector.js.map +1 -0
  159. package/dist/exchanges/gateio/gateio-data-mapper.d.ts +57 -0
  160. package/dist/exchanges/gateio/gateio-data-mapper.d.ts.map +1 -0
  161. package/dist/exchanges/gateio/gateio-data-mapper.js +184 -0
  162. package/dist/exchanges/gateio/gateio-data-mapper.js.map +1 -0
  163. package/dist/exchanges/gateio/gateio-user-stream.d.ts +120 -0
  164. package/dist/exchanges/gateio/gateio-user-stream.d.ts.map +1 -0
  165. package/dist/exchanges/gateio/gateio-user-stream.js +384 -0
  166. package/dist/exchanges/gateio/gateio-user-stream.js.map +1 -0
  167. package/dist/exchanges/gateio/gateio-utils.d.ts +45 -0
  168. package/dist/exchanges/gateio/gateio-utils.d.ts.map +1 -0
  169. package/dist/exchanges/gateio/gateio-utils.js +138 -0
  170. package/dist/exchanges/gateio/gateio-utils.js.map +1 -0
  171. package/dist/exchanges/gateio/gateio-websocket.d.ts +145 -0
  172. package/dist/exchanges/gateio/gateio-websocket.d.ts.map +1 -0
  173. package/dist/exchanges/gateio/gateio-websocket.js +469 -0
  174. package/dist/exchanges/gateio/gateio-websocket.js.map +1 -0
  175. package/dist/exchanges/kraken/kraken-auth.d.ts +12 -0
  176. package/dist/exchanges/kraken/kraken-auth.d.ts.map +1 -0
  177. package/dist/exchanges/kraken/kraken-auth.js +68 -0
  178. package/dist/exchanges/kraken/kraken-auth.js.map +1 -0
  179. package/dist/exchanges/kraken/kraken-connector.d.ts +38 -0
  180. package/dist/exchanges/kraken/kraken-connector.d.ts.map +1 -0
  181. package/dist/exchanges/kraken/kraken-connector.js +355 -0
  182. package/dist/exchanges/kraken/kraken-connector.js.map +1 -0
  183. package/dist/exchanges/kraken/kraken-data-mapper.d.ts +14 -0
  184. package/dist/exchanges/kraken/kraken-data-mapper.d.ts.map +1 -0
  185. package/dist/exchanges/kraken/kraken-data-mapper.js +169 -0
  186. package/dist/exchanges/kraken/kraken-data-mapper.js.map +1 -0
  187. package/dist/exchanges/kraken/kraken-utils.d.ts +52 -0
  188. package/dist/exchanges/kraken/kraken-utils.d.ts.map +1 -0
  189. package/dist/exchanges/kraken/kraken-utils.js +206 -0
  190. package/dist/exchanges/kraken/kraken-utils.js.map +1 -0
  191. package/dist/exchanges/kraken/kraken-websocket.d.ts +64 -0
  192. package/dist/exchanges/kraken/kraken-websocket.d.ts.map +1 -0
  193. package/dist/exchanges/kraken/kraken-websocket.js +667 -0
  194. package/dist/exchanges/kraken/kraken-websocket.js.map +1 -0
  195. package/dist/exchanges/kraken/test-kraken-websocket.d.ts +19 -0
  196. package/dist/exchanges/kraken/test-kraken-websocket.d.ts.map +1 -0
  197. package/dist/exchanges/kraken/test-kraken-websocket.js +413 -0
  198. package/dist/exchanges/kraken/test-kraken-websocket.js.map +1 -0
  199. package/dist/exchanges/mexc/mexc-auth.d.ts.map +1 -1
  200. package/dist/exchanges/mexc/mexc-auth.js +5 -5
  201. package/dist/exchanges/mexc/mexc-auth.js.map +1 -1
  202. package/dist/exchanges/mexc/mexc-connector.d.ts.map +1 -1
  203. package/dist/exchanges/mexc/mexc-connector.js +12 -13
  204. package/dist/exchanges/mexc/mexc-connector.js.map +1 -1
  205. package/dist/exchanges/mexc/mexc-data-mapper.d.ts.map +1 -1
  206. package/dist/exchanges/mexc/mexc-data-mapper.js +6 -6
  207. package/dist/exchanges/mexc/mexc-data-mapper.js.map +1 -1
  208. package/dist/exchanges/mexc/mexc-protobuf-decoder.d.ts.map +1 -1
  209. package/dist/exchanges/mexc/mexc-protobuf-decoder.js +14 -13
  210. package/dist/exchanges/mexc/mexc-protobuf-decoder.js.map +1 -1
  211. package/dist/exchanges/mexc/mexc-user-stream.d.ts.map +1 -1
  212. package/dist/exchanges/mexc/mexc-user-stream.js +5 -5
  213. package/dist/exchanges/mexc/mexc-user-stream.js.map +1 -1
  214. package/dist/exchanges/mexc/mexc-utils.d.ts +1 -5
  215. package/dist/exchanges/mexc/mexc-utils.d.ts.map +1 -1
  216. package/dist/exchanges/mexc/mexc-utils.js +33 -39
  217. package/dist/exchanges/mexc/mexc-utils.js.map +1 -1
  218. package/dist/exchanges/mexc/mexc-websocket.d.ts.map +1 -1
  219. package/dist/exchanges/mexc/mexc-websocket.js +45 -31
  220. package/dist/exchanges/mexc/mexc-websocket.js.map +1 -1
  221. package/dist/index.d.ts +4 -0
  222. package/dist/index.d.ts.map +1 -1
  223. package/dist/index.js +10 -1
  224. package/dist/index.js.map +1 -1
  225. package/dist/mcp/resources/index.d.ts +3 -0
  226. package/dist/mcp/resources/index.d.ts.map +1 -0
  227. package/dist/mcp/resources/index.js +11 -0
  228. package/dist/mcp/resources/index.js.map +1 -0
  229. package/dist/mcp/server.d.ts +4 -0
  230. package/dist/mcp/server.d.ts.map +1 -0
  231. package/dist/mcp/server.js +29 -0
  232. package/dist/mcp/server.js.map +1 -0
  233. package/dist/mcp/tools/index.d.ts +3 -0
  234. package/dist/mcp/tools/index.d.ts.map +1 -0
  235. package/dist/mcp/tools/index.js +12 -0
  236. package/dist/mcp/tools/index.js.map +1 -0
  237. package/dist/strategies/grid/grid-calculator.d.ts +63 -4
  238. package/dist/strategies/grid/grid-calculator.d.ts.map +1 -1
  239. package/dist/strategies/grid/grid-calculator.js +190 -15
  240. package/dist/strategies/grid/grid-calculator.js.map +1 -1
  241. package/dist/strategies/grid/grid-order-manager.d.ts +9 -4
  242. package/dist/strategies/grid/grid-order-manager.d.ts.map +1 -1
  243. package/dist/strategies/grid/grid-order-manager.js +58 -15
  244. package/dist/strategies/grid/grid-order-manager.js.map +1 -1
  245. package/dist/strategies/grid/grid-strategy.d.ts +11 -0
  246. package/dist/strategies/grid/grid-strategy.d.ts.map +1 -1
  247. package/dist/strategies/grid/grid-strategy.js +127 -20
  248. package/dist/strategies/grid/grid-strategy.js.map +1 -1
  249. package/dist/strategies/grid/volatility-tracker.d.ts +67 -0
  250. package/dist/strategies/grid/volatility-tracker.d.ts.map +1 -0
  251. package/dist/strategies/grid/volatility-tracker.js +109 -0
  252. package/dist/strategies/grid/volatility-tracker.js.map +1 -0
  253. package/dist/tests/fixtures/test-helpers.d.ts +5 -0
  254. package/dist/tests/fixtures/test-helpers.d.ts.map +1 -0
  255. package/dist/tests/fixtures/test-helpers.js +8 -0
  256. package/dist/tests/fixtures/test-helpers.js.map +1 -0
  257. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts +2 -0
  258. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts.map +1 -0
  259. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js +237 -0
  260. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js.map +1 -0
  261. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts +2 -0
  262. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
  263. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js +57 -0
  264. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js.map +1 -0
  265. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts +2 -0
  266. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts.map +1 -0
  267. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js +141 -0
  268. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js.map +1 -0
  269. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts +2 -0
  270. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts.map +1 -0
  271. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js +375 -0
  272. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js.map +1 -0
  273. package/dist/tests/unit/cli/exchange-factory.test.d.ts +2 -0
  274. package/dist/tests/unit/cli/exchange-factory.test.d.ts.map +1 -0
  275. package/dist/tests/unit/cli/exchange-factory.test.js +148 -0
  276. package/dist/tests/unit/cli/exchange-factory.test.js.map +1 -0
  277. package/dist/tests/unit/config/environment.test.d.ts +2 -0
  278. package/dist/tests/unit/config/environment.test.d.ts.map +1 -0
  279. package/dist/tests/unit/config/environment.test.js +158 -0
  280. package/dist/tests/unit/config/environment.test.js.map +1 -0
  281. package/dist/tests/unit/config/launcher-config.test.d.ts +2 -0
  282. package/dist/tests/unit/config/launcher-config.test.d.ts.map +1 -0
  283. package/dist/tests/unit/config/launcher-config.test.js +117 -0
  284. package/dist/tests/unit/config/launcher-config.test.js.map +1 -0
  285. package/dist/tests/unit/config/price-aggregation.test.d.ts +2 -0
  286. package/dist/tests/unit/config/price-aggregation.test.d.ts.map +1 -0
  287. package/dist/tests/unit/config/price-aggregation.test.js +144 -0
  288. package/dist/tests/unit/config/price-aggregation.test.js.map +1 -0
  289. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts +2 -0
  290. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts.map +1 -0
  291. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js +191 -0
  292. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js.map +1 -0
  293. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts +2 -0
  294. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts.map +1 -0
  295. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js +324 -0
  296. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js.map +1 -0
  297. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts +2 -0
  298. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
  299. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js +177 -0
  300. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js.map +1 -0
  301. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts +2 -0
  302. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts.map +1 -0
  303. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js +168 -0
  304. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js.map +1 -0
  305. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts +2 -0
  306. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts.map +1 -0
  307. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js +217 -0
  308. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js.map +1 -0
  309. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts +2 -0
  310. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts.map +1 -0
  311. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js +229 -0
  312. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js.map +1 -0
  313. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts +2 -0
  314. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts.map +1 -0
  315. package/dist/tests/unit/core/risk-management/risk-manager.test.js +194 -0
  316. package/dist/tests/unit/core/risk-management/risk-manager.test.js.map +1 -0
  317. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts +2 -0
  318. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts.map +1 -0
  319. package/dist/tests/unit/core/strategy/base-strategy.test.js +254 -0
  320. package/dist/tests/unit/core/strategy/base-strategy.test.js.map +1 -0
  321. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts +2 -0
  322. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts.map +1 -0
  323. package/dist/tests/unit/core/strategy/strategy-factory.test.js +213 -0
  324. package/dist/tests/unit/core/strategy/strategy-factory.test.js.map +1 -0
  325. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts +2 -0
  326. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts.map +1 -0
  327. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js +452 -0
  328. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js.map +1 -0
  329. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts +2 -0
  330. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts.map +1 -0
  331. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js +1419 -0
  332. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js.map +1 -0
  333. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts +2 -0
  334. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts.map +1 -0
  335. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js +435 -0
  336. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js.map +1 -0
  337. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts +2 -0
  338. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts.map +1 -0
  339. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js +314 -0
  340. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js.map +1 -0
  341. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts +2 -0
  342. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts.map +1 -0
  343. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js +178 -0
  344. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js.map +1 -0
  345. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts +2 -0
  346. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts.map +1 -0
  347. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js +502 -0
  348. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js.map +1 -0
  349. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts +2 -0
  350. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts.map +1 -0
  351. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js +317 -0
  352. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js.map +1 -0
  353. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts +2 -0
  354. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts.map +1 -0
  355. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js +843 -0
  356. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js.map +1 -0
  357. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts +2 -0
  358. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts.map +1 -0
  359. package/dist/tests/unit/strategies/grid/grid-calculator.test.js +67 -0
  360. package/dist/tests/unit/strategies/grid/grid-calculator.test.js.map +1 -0
  361. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts +2 -0
  362. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts.map +1 -0
  363. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js +211 -0
  364. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js.map +1 -0
  365. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts +2 -0
  366. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts.map +1 -0
  367. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js +197 -0
  368. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js.map +1 -0
  369. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts +2 -0
  370. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts.map +1 -0
  371. package/dist/tests/unit/strategies/grid/grid-strategy.test.js +429 -0
  372. package/dist/tests/unit/strategies/grid/grid-strategy.test.js.map +1 -0
  373. package/dist/tests/unit/utils/logger.test.d.ts +2 -0
  374. package/dist/tests/unit/utils/logger.test.d.ts.map +1 -0
  375. package/dist/tests/unit/utils/logger.test.js +260 -0
  376. package/dist/tests/unit/utils/logger.test.js.map +1 -0
  377. package/dist/tests/unit/utils/symbol-utils.test.d.ts +2 -0
  378. package/dist/tests/unit/utils/symbol-utils.test.d.ts.map +1 -0
  379. package/dist/tests/unit/utils/symbol-utils.test.js +178 -0
  380. package/dist/tests/unit/utils/symbol-utils.test.js.map +1 -0
  381. package/dist/types/bitget-raw.d.ts +75 -0
  382. package/dist/types/bitget-raw.d.ts.map +1 -0
  383. package/dist/types/bitget-raw.js +10 -0
  384. package/dist/types/bitget-raw.js.map +1 -0
  385. package/dist/types/bitget.d.ts +35 -0
  386. package/dist/types/bitget.d.ts.map +1 -0
  387. package/dist/types/bitget.js +8 -0
  388. package/dist/types/bitget.js.map +1 -0
  389. package/dist/types/gateio-raw.d.ts +104 -0
  390. package/dist/types/gateio-raw.d.ts.map +1 -0
  391. package/dist/types/gateio-raw.js +7 -0
  392. package/dist/types/gateio-raw.js.map +1 -0
  393. package/dist/types/gateio.d.ts +41 -0
  394. package/dist/types/gateio.d.ts.map +1 -0
  395. package/dist/types/gateio.js +8 -0
  396. package/dist/types/gateio.js.map +1 -0
  397. package/dist/types/grid.d.ts +77 -0
  398. package/dist/types/grid.d.ts.map +1 -1
  399. package/dist/types/index.d.ts +6 -0
  400. package/dist/types/index.d.ts.map +1 -1
  401. package/dist/types/index.js +6 -0
  402. package/dist/types/index.js.map +1 -1
  403. package/dist/types/kraken-raw.d.ts +89 -0
  404. package/dist/types/kraken-raw.d.ts.map +1 -0
  405. package/dist/types/kraken-raw.js +10 -0
  406. package/dist/types/kraken-raw.js.map +1 -0
  407. package/dist/types/kraken.d.ts +44 -0
  408. package/dist/types/kraken.d.ts.map +1 -0
  409. package/dist/types/kraken.js +3 -0
  410. package/dist/types/kraken.js.map +1 -0
  411. package/dist/types/mexc.d.ts +9 -0
  412. package/dist/types/mexc.d.ts.map +1 -1
  413. package/dist/types/price-aggregation.d.ts +31 -0
  414. package/dist/types/price-aggregation.d.ts.map +1 -0
  415. package/dist/types/price-aggregation.js +6 -0
  416. package/dist/types/price-aggregation.js.map +1 -0
  417. package/dist/types/price.d.ts +23 -0
  418. package/dist/types/price.d.ts.map +1 -1
  419. package/dist/types/strategy.d.ts +5 -0
  420. package/dist/types/strategy.d.ts.map +1 -1
  421. package/dist/utils/crypto.d.ts +15 -0
  422. package/dist/utils/crypto.d.ts.map +1 -0
  423. package/dist/utils/crypto.js +50 -0
  424. package/dist/utils/crypto.js.map +1 -0
  425. package/dist/utils/exchange-utils.d.ts +194 -0
  426. package/dist/utils/exchange-utils.d.ts.map +1 -0
  427. package/dist/utils/exchange-utils.js +455 -0
  428. package/dist/utils/exchange-utils.js.map +1 -0
  429. package/dist/utils/index.d.ts +1 -0
  430. package/dist/utils/index.d.ts.map +1 -1
  431. package/dist/utils/index.js +3 -1
  432. package/dist/utils/index.js.map +1 -1
  433. package/dist/utils/logger.d.ts +1 -1
  434. package/dist/utils/logger.d.ts.map +1 -1
  435. package/dist/utils/logger.js +7 -7
  436. package/dist/utils/logger.js.map +1 -1
  437. package/dist/utils/validation.d.ts +36 -0
  438. package/dist/utils/validation.d.ts.map +1 -0
  439. package/dist/utils/validation.js +174 -0
  440. package/dist/utils/validation.js.map +1 -0
  441. package/package.json +7 -1
@@ -0,0 +1,375 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const grid_strategy_1 = require("../../../../strategies/grid/grid-strategy");
4
+ const base_exchange_connector_1 = require("../../../../core/exchange/base-exchange-connector");
5
+ /**
6
+ * Mock Exchange Connector for End-to-End Testing
7
+ * Simulates MEXC exchange behavior with real protobuf message patterns
8
+ */
9
+ class MockExchangeConnector extends base_exchange_connector_1.BaseExchangeConnector {
10
+ constructor() {
11
+ super('mock-exchange', 'Mock Exchange');
12
+ this.orderIdCounter = 1000;
13
+ this.openOrders = [];
14
+ this.orderUpdateCallbacks = [];
15
+ this.balances = {
16
+ USDT: { asset: 'USDT', free: 1000, used: 0, total: 1000, available: 1000 },
17
+ INDY: { asset: 'INDY', free: 0, used: 0, total: 0, available: 0 }
18
+ };
19
+ this.userDataStreamConnected = false;
20
+ this.testProtobufMessages = [];
21
+ this.pendingTimeouts = [];
22
+ }
23
+ async connect() {
24
+ this.connected = true;
25
+ }
26
+ async disconnect() {
27
+ this.connected = false;
28
+ this.userDataStreamConnected = false;
29
+ this.pendingTimeouts.forEach(timeout => clearTimeout(timeout));
30
+ this.pendingTimeouts = [];
31
+ }
32
+ async connectUserDataStream() {
33
+ this.userDataStreamConnected = true;
34
+ }
35
+ async disconnectUserDataStream() {
36
+ this.userDataStreamConnected = false;
37
+ }
38
+ isUserDataStreamConnected() {
39
+ return this.userDataStreamConnected;
40
+ }
41
+ async subscribeUserOrders(callback) {
42
+ this.orderUpdateCallbacks.push(callback);
43
+ return 'subscription-id-' + Date.now();
44
+ }
45
+ async createOrder(symbol, type, side, amount, price) {
46
+ const orderId = `C02__${this.orderIdCounter++}`;
47
+ const order = {
48
+ id: orderId,
49
+ symbol,
50
+ type,
51
+ side,
52
+ amount,
53
+ price: price || 0,
54
+ filled: 0,
55
+ remaining: amount,
56
+ status: 'open',
57
+ timestamp: Date.now()
58
+ };
59
+ this.openOrders.push(order);
60
+ const timeout = setTimeout(() => {
61
+ this.simulateProtobufOrderUpdate(order, 'new');
62
+ }, 100);
63
+ this.pendingTimeouts.push(timeout);
64
+ return order;
65
+ }
66
+ async cancelOrder(orderId, symbol) {
67
+ const orderIndex = this.openOrders.findIndex(o => o.id === orderId);
68
+ if (orderIndex === -1) {
69
+ throw new Error(`Order ${orderId} not found`);
70
+ }
71
+ const order = this.openOrders[orderIndex];
72
+ order.status = 'cancelled';
73
+ this.openOrders.splice(orderIndex, 1);
74
+ const timeout = setTimeout(() => {
75
+ this.simulateProtobufOrderUpdate(order, 'cancelled_with_filled_indicators');
76
+ }, 100);
77
+ this.pendingTimeouts.push(timeout);
78
+ }
79
+ async cancelAllOrders(symbol) {
80
+ const symbolOrders = this.openOrders.filter(o => o.symbol === symbol);
81
+ for (const order of symbolOrders) {
82
+ await this.cancelOrder(order.id, symbol);
83
+ }
84
+ }
85
+ async getOpenOrders(symbol) {
86
+ return symbol ?
87
+ this.openOrders.filter(o => o.symbol === symbol) :
88
+ this.openOrders;
89
+ }
90
+ async getBalance() {
91
+ return { ...this.balances };
92
+ }
93
+ async getOrder(orderId, symbol) {
94
+ const order = this.openOrders.find(o => o.id === orderId && o.symbol === symbol);
95
+ if (!order)
96
+ throw new Error(`Order ${orderId} not found`);
97
+ return order;
98
+ }
99
+ async getTicker(symbol) {
100
+ return {
101
+ symbol,
102
+ last: 0.30,
103
+ bid: 0.299,
104
+ ask: 0.301,
105
+ baseVolume: 100000,
106
+ quoteVolume: 30000,
107
+ timestamp: Date.now()
108
+ };
109
+ }
110
+ async getOrderBook(symbol) {
111
+ return {
112
+ symbol,
113
+ bids: [{ price: 0.299, amount: 1000 }, { price: 0.298, amount: 2000 }],
114
+ asks: [{ price: 0.301, amount: 1500 }, { price: 0.302, amount: 1200 }],
115
+ timestamp: Date.now()
116
+ };
117
+ }
118
+ async getRecentTrades(symbol) {
119
+ return [{
120
+ id: 'trade-1',
121
+ symbol,
122
+ side: 'buy',
123
+ amount: 100,
124
+ price: 0.30,
125
+ timestamp: Date.now()
126
+ }];
127
+ }
128
+ async connectWebSocket() {
129
+ }
130
+ async disconnectWebSocket() {
131
+ }
132
+ async subscribeTicker() {
133
+ return 'ticker-sub-1';
134
+ }
135
+ async subscribeOrderBook() {
136
+ return 'orderbook-sub-1';
137
+ }
138
+ async subscribeTrades() {
139
+ return 'trades-sub-1';
140
+ }
141
+ async subscribeOrders() {
142
+ return 'orders-sub-1';
143
+ }
144
+ async unsubscribe() {
145
+ }
146
+ isWebSocketConnected() {
147
+ return true;
148
+ }
149
+ getWebSocketStatus() {
150
+ return 'connected';
151
+ }
152
+ async subscribeUserTrades() {
153
+ return 'user-trades-sub-1';
154
+ }
155
+ simulateOrderFill(orderId, fillAmount) {
156
+ const order = this.openOrders.find(o => o.id === orderId);
157
+ if (!order)
158
+ return;
159
+ const actualFillAmount = fillAmount || order.remaining;
160
+ order.filled += actualFillAmount;
161
+ order.remaining -= actualFillAmount;
162
+ if (order.remaining <= 0) {
163
+ order.status = 'filled';
164
+ const index = this.openOrders.findIndex(o => o.id === orderId);
165
+ if (index !== -1)
166
+ this.openOrders.splice(index, 1);
167
+ }
168
+ else {
169
+ order.status = 'partially_filled';
170
+ }
171
+ if (order.side === 'sell') {
172
+ const price = order.price || 0;
173
+ this.balances.USDT.free += actualFillAmount * price;
174
+ this.balances.USDT.available += actualFillAmount * price;
175
+ this.balances.USDT.total += actualFillAmount * price;
176
+ this.balances.INDY.free -= actualFillAmount;
177
+ this.balances.INDY.available -= actualFillAmount;
178
+ this.balances.INDY.total -= actualFillAmount;
179
+ }
180
+ else {
181
+ const price = order.price || 0;
182
+ this.balances.USDT.free -= actualFillAmount * price;
183
+ this.balances.USDT.available -= actualFillAmount * price;
184
+ this.balances.USDT.total -= actualFillAmount * price;
185
+ this.balances.INDY.free += actualFillAmount;
186
+ this.balances.INDY.available += actualFillAmount;
187
+ this.balances.INDY.total += actualFillAmount;
188
+ }
189
+ const timeout = setTimeout(() => {
190
+ this.simulateProtobufOrderUpdate(order, order.status);
191
+ }, 100);
192
+ this.pendingTimeouts.push(timeout);
193
+ }
194
+ simulateProtobufOrderUpdate(order, statusType) {
195
+ if (!this.connected) {
196
+ return;
197
+ }
198
+ let protobufMessage;
199
+ let actualStatus;
200
+ switch (statusType) {
201
+ case 'new':
202
+ protobufMessage = `\nspot@private.orders.v3.api.pb\u001a\bINDYUSDT0����3�\u0013Z\n\u001a${order.id}\u001a\u00050.323"\u000528.98*\u00079.360542\u000108\u0001@\u0001R\u00079.36054Z\u000528.98j\u00010r\u00010x\u0001�\u0001�����3`;
203
+ actualStatus = 'open';
204
+ break;
205
+ case 'filled':
206
+ case 'partially_filled':
207
+ protobufMessage = `\nspot@private.orders.v3.api.pb\u001a\bINDYUSDT0����3�\u0013i\n\u001a${order.id}\u001a\u00060.3229"\u000528.98*\b3.87942\u00060.32298\u0001@\u0002R\u00063.8794Z\u000511.41j\u00010r\u00010x\u0002�\u0001����3`;
208
+ actualStatus = statusType;
209
+ break;
210
+ case 'cancelled_with_filled_indicators':
211
+ protobufMessage = `\nspot@private.orders.v3.api.pb\u001a\bINDYUSDT0����3�\u0013]\n\u001a${order.id}\u001a\u00060.3328"\u000528.98*\b9.6445442\u000108\u0001@\u0002R\b9.644544Z\u000528.98j\u00010r\u00010x\u0004�\u0001����3`;
212
+ actualStatus = 'cancelled';
213
+ break;
214
+ default:
215
+ protobufMessage = '';
216
+ actualStatus = 'cancelled';
217
+ }
218
+ this.testProtobufMessages.push(protobufMessage);
219
+ const orderUpdate = {
220
+ ...order,
221
+ status: actualStatus
222
+ };
223
+ this.orderUpdateCallbacks.forEach(callback => {
224
+ callback(orderUpdate);
225
+ });
226
+ }
227
+ getTestProtobufMessages() {
228
+ return [...this.testProtobufMessages];
229
+ }
230
+ }
231
+ describe('Grid Strategy End-to-End Workflow', () => {
232
+ let gridStrategy;
233
+ let mockExchange;
234
+ let orderUpdates = [];
235
+ let gridRecreationCount = 0;
236
+ const testConfig = {
237
+ id: 'test-grid-strategy',
238
+ type: 'grid',
239
+ symbol: 'INDY/USDT',
240
+ exchange: 'mock-exchange',
241
+ accountId: 'test-account',
242
+ enabled: true,
243
+ gridConfig: {
244
+ symbol: 'INDY/USDT',
245
+ gridLevels: 5,
246
+ gridSpacing: 0.02,
247
+ orderSize: 10,
248
+ minConfidence: 0.6,
249
+ priceDeviationThreshold: 0.015,
250
+ adjustmentDebounce: 1000
251
+ },
252
+ parameters: {
253
+ gridLevels: 5,
254
+ gridSpacing: 0.02,
255
+ orderSize: 10,
256
+ upperPrice: 999999,
257
+ lowerPrice: 0
258
+ }
259
+ };
260
+ beforeEach(async () => {
261
+ orderUpdates = [];
262
+ gridRecreationCount = 0;
263
+ mockExchange = new MockExchangeConnector();
264
+ await mockExchange.connect();
265
+ await mockExchange.connectUserDataStream();
266
+ gridStrategy = new grid_strategy_1.GridStrategy('test-grid-1');
267
+ gridStrategy.setExchangeConnector(mockExchange);
268
+ const originalOnOrderUpdate = gridStrategy.onOrderUpdate.bind(gridStrategy);
269
+ gridStrategy.onOrderUpdate = async (order) => {
270
+ orderUpdates.push({ ...order });
271
+ if (order.status === 'filled') {
272
+ const ordersBefore = await mockExchange.getOpenOrders(order.symbol);
273
+ const orderCountBefore = ordersBefore.length;
274
+ await originalOnOrderUpdate(order);
275
+ await new Promise(resolve => setTimeout(resolve, 200));
276
+ const ordersAfter = await mockExchange.getOpenOrders(order.symbol);
277
+ if (ordersAfter.length >= orderCountBefore) {
278
+ gridRecreationCount++;
279
+ }
280
+ }
281
+ else {
282
+ await originalOnOrderUpdate(order);
283
+ }
284
+ };
285
+ await gridStrategy.initialize(testConfig);
286
+ });
287
+ afterEach(async () => {
288
+ if (gridStrategy && gridStrategy.currentStatus === 'running') {
289
+ await gridStrategy.stop();
290
+ await new Promise(resolve => setTimeout(resolve, 200));
291
+ }
292
+ if (mockExchange) {
293
+ await mockExchange.disconnect();
294
+ }
295
+ await new Promise(resolve => setTimeout(resolve, 300));
296
+ });
297
+ describe('Complete Order Lifecycle Flow', () => {
298
+ test('should handle order placement → fill → grid recreation correctly', async () => {
299
+ await gridStrategy.start();
300
+ expect(gridStrategy.currentStatus).toBe('running');
301
+ await new Promise(resolve => setTimeout(resolve, 500));
302
+ const initialOrders = await mockExchange.getOpenOrders('INDY/USDT');
303
+ expect(initialOrders.length).toBeGreaterThan(0);
304
+ const orderToFill = initialOrders[0];
305
+ mockExchange.simulateOrderFill(orderToFill.id);
306
+ await new Promise(resolve => setTimeout(resolve, 2000));
307
+ const fillUpdate = orderUpdates.find(update => update.id === orderToFill.id && update.status === 'filled');
308
+ expect(fillUpdate).toBeDefined();
309
+ expect(fillUpdate?.status).toBe('filled');
310
+ expect(fillUpdate).toBeDefined();
311
+ expect(fillUpdate?.status).toBe('filled');
312
+ expect(orderUpdates.length).toBeGreaterThanOrEqual(1);
313
+ }, 10000);
314
+ test('should handle order cancellation → NO grid recreation (fixed behavior)', async () => {
315
+ await gridStrategy.start();
316
+ await new Promise(resolve => setTimeout(resolve, 500));
317
+ const initialOrders = await mockExchange.getOpenOrders('INDY/USDT');
318
+ const initialGridRecreationCount = gridRecreationCount;
319
+ const orderToCancel = initialOrders[0];
320
+ await mockExchange.cancelOrder(orderToCancel.id, 'INDY/USDT');
321
+ await new Promise(resolve => setTimeout(resolve, 1000));
322
+ const cancelUpdate = orderUpdates.find(update => update.id === orderToCancel.id && update.status === 'cancelled');
323
+ expect(cancelUpdate).toBeDefined();
324
+ expect(cancelUpdate?.status).toBe('cancelled');
325
+ expect(gridRecreationCount).toBe(initialGridRecreationCount);
326
+ const protobufMessages = mockExchange.getTestProtobufMessages();
327
+ const cancelMessage = protobufMessages[protobufMessages.length - 1];
328
+ expect(cancelMessage).toContain('\u0002');
329
+ expect(cancelMessage).toContain('\u0004');
330
+ }, 10000);
331
+ test('should handle multiple order updates without infinite loops', async () => {
332
+ await gridStrategy.start();
333
+ await new Promise(resolve => setTimeout(resolve, 500));
334
+ const initialOrders = await mockExchange.getOpenOrders('INDY/USDT');
335
+ const testSequence = [
336
+ { action: 'fill', orderId: initialOrders[0]?.id },
337
+ { action: 'cancel', orderId: initialOrders[1]?.id },
338
+ { action: 'fill', orderId: initialOrders[2]?.id }
339
+ ];
340
+ for (const step of testSequence) {
341
+ if (step.action === 'fill' && step.orderId) {
342
+ mockExchange.simulateOrderFill(step.orderId);
343
+ await new Promise(resolve => setTimeout(resolve, 1200));
344
+ }
345
+ else if (step.action === 'cancel' && step.orderId) {
346
+ await mockExchange.cancelOrder(step.orderId, 'INDY/USDT');
347
+ await new Promise(resolve => setTimeout(resolve, 300));
348
+ }
349
+ }
350
+ await new Promise(resolve => setTimeout(resolve, 3000));
351
+ expect(orderUpdates.length).toBeGreaterThanOrEqual(3);
352
+ expect(gridRecreationCount).toBe(2);
353
+ expect(gridStrategy.currentStatus).toBe('running');
354
+ }, 15000);
355
+ });
356
+ describe('WebSocket Message Flow Integration', () => {
357
+ test('should correctly route protobuf messages through the complete pipeline', async () => {
358
+ await gridStrategy.start();
359
+ await new Promise(resolve => setTimeout(resolve, 500));
360
+ const initialOrders = await mockExchange.getOpenOrders('INDY/USDT');
361
+ mockExchange.simulateOrderFill(initialOrders[0].id);
362
+ await new Promise(resolve => setTimeout(resolve, 500));
363
+ await mockExchange.cancelOrder(initialOrders[1].id, 'INDY/USDT');
364
+ await new Promise(resolve => setTimeout(resolve, 500));
365
+ const protobufMessages = mockExchange.getTestProtobufMessages();
366
+ expect(protobufMessages.length).toBeGreaterThanOrEqual(3);
367
+ expect(orderUpdates.length).toBeGreaterThanOrEqual(3);
368
+ const fillMessage = protobufMessages.find(msg => msg.includes('\u0002') && !msg.includes('\u0004'));
369
+ const cancelMessage = protobufMessages.find(msg => msg.includes('\u0004'));
370
+ expect(fillMessage).toBeDefined();
371
+ expect(cancelMessage).toBeDefined();
372
+ });
373
+ });
374
+ });
375
+ //# sourceMappingURL=grid-strategy-e2e.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-strategy-e2e.test.js","sourceRoot":"","sources":["../../../../../src/tests/integration/strategies/grid/grid-strategy-e2e.test.ts"],"names":[],"mappings":";;AAAA,6EAAyE;AAEzE,+FAA0F;AAC1F;;;GAGG;AACH,MAAM,qBAAsB,SAAQ,+CAAqB;IAWvD;QACE,KAAK,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;QAXlC,mBAAc,GAAG,IAAI,CAAC;QACtB,eAAU,GAAY,EAAE,CAAC;QACzB,yBAAoB,GAA+B,EAAE,CAAC;QACtD,aAAQ,GAA4B;YAC1C,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;YAC1E,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;SAClE,CAAC;QACQ,4BAAuB,GAAG,KAAK,CAAC;QAClC,yBAAoB,GAAa,EAAE,CAAC;QACpC,oBAAe,GAAqB,EAAE,CAAC;IAG/C,CAAC;IACD,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAC5B,CAAC;IACD,KAAK,CAAC,qBAAqB;QACzB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;IACtC,CAAC;IACD,KAAK,CAAC,wBAAwB;QAC5B,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;IACvC,CAAC;IACD,yBAAyB;QACvB,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACtC,CAAC;IACD,KAAK,CAAC,mBAAmB,CAAC,QAAgC;QACxD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzC,CAAC;IACD,KAAK,CAAC,WAAW,CACf,MAAc,EACd,IAAe,EACf,IAAe,EACf,MAAc,EACd,KAAc;QAEd,MAAM,OAAO,GAAG,QAAQ,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAChD,MAAM,KAAK,GAAU;YACnB,EAAE,EAAE,OAAO;YACX,MAAM;YACN,IAAI;YACJ,IAAI;YACJ,MAAM;YACN,KAAK,EAAE,KAAK,IAAI,CAAC;YACjB,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,MAAqB;YAC7B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,MAAe;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;QACpE,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,YAAY,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1C,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC;QAC9E,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACtE,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,MAAe;QACjC,OAAO,MAAM,CAAC,CAAC;YACb,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC;IACpB,CAAC;IACD,KAAK,CAAC,UAAU;QACd,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,MAAc;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACjF,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,YAAY,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,OAAO;YACL,MAAM;YACN,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,UAAU,EAAE,MAAM;YAClB,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,OAAO;YACL,MAAM;YACN,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACtE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACtE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,OAAO,CAAC;gBACN,EAAE,EAAE,SAAS;gBACb,MAAM;gBACN,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,gBAAgB;IACtB,CAAC;IACD,KAAK,CAAC,mBAAmB;IACzB,CAAC;IACD,KAAK,CAAC,eAAe;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,KAAK,CAAC,kBAAkB;QACtB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,eAAe;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,KAAK,CAAC,eAAe;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,KAAK,CAAC,WAAW;IACjB,CAAC;IACD,oBAAoB;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,kBAAkB;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,KAAK,CAAC,mBAAmB;QACvB,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,iBAAiB,CAAC,OAAe,EAAE,UAAmB;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,gBAAgB,GAAG,UAAU,IAAI,KAAK,CAAC,SAAS,CAAC;QACvD,KAAK,CAAC,MAAM,IAAI,gBAAgB,CAAC;QACjC,KAAK,CAAC,SAAS,IAAI,gBAAgB,CAAC;QACpC,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YAC/D,IAAI,KAAK,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,MAAM,GAAG,kBAAkB,CAAC;QACpC,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,gBAAgB,GAAG,KAAK,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,gBAAgB,GAAG,KAAK,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,gBAAgB,GAAG,KAAK,CAAC;YACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,gBAAgB,CAAC;YAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,gBAAgB,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,gBAAgB,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,gBAAgB,GAAG,KAAK,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,gBAAgB,GAAG,KAAK,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,gBAAgB,GAAG,KAAK,CAAC;YACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,gBAAgB,CAAC;YAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,gBAAgB,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,gBAAgB,CAAC;QAC/C,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IACO,2BAA2B,CAAC,KAAY,EAAE,UAAkB;QAClE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,IAAI,eAAuB,CAAC;QAC5B,IAAI,YAAyB,CAAC;QAC9B,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,KAAK;gBACR,eAAe,GAAG,wEAAwE,KAAK,CAAC,EAAE,iIAAiI,CAAC;gBACpO,YAAY,GAAG,MAAM,CAAC;gBACtB,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,kBAAkB;gBACrB,eAAe,GAAG,wEAAwE,KAAK,CAAC,EAAE,gIAAgI,CAAC;gBACnO,YAAY,GAAG,UAAyB,CAAC;gBACzC,MAAM;YACR,KAAK,kCAAkC;gBACrC,eAAe,GAAG,wEAAwE,KAAK,CAAC,EAAE,2HAA2H,CAAC;gBAC9N,YAAY,GAAG,WAAW,CAAC;gBAC3B,MAAM;YACR;gBACE,eAAe,GAAG,EAAE,CAAC;gBACrB,YAAY,GAAG,WAAW,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChD,MAAM,WAAW,GAAU;YACzB,GAAG,KAAK;YACR,MAAM,EAAE,YAAY;SACrB,CAAC;QACF,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3C,QAAQ,CAAC,WAAW,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IACD,uBAAuB;QACrB,OAAO,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;CACF;AAED,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,IAAI,YAA0B,CAAC;IAC/B,IAAI,YAAmC,CAAC;IACxC,IAAI,YAAY,GAAY,EAAE,CAAC;IAC/B,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,MAAM,UAAU,GAAuB;QACrC,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,eAAe;QACzB,SAAS,EAAE,cAAc;QACzB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE;YACV,MAAM,EAAE,WAAW;YACnB,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,EAAE;YACb,aAAa,EAAE,GAAG;YAClB,uBAAuB,EAAE,KAAK;YAC9B,kBAAkB,EAAE,IAAI;SACzB;QACD,UAAU,EAAE;YACV,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,EAAE;YACb,UAAU,EAAE,MAAM;YAClB,UAAU,EAAE,CAAC;SACd;KACF,CAAC;IACF,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,YAAY,GAAG,EAAE,CAAC;QAClB,mBAAmB,GAAG,CAAC,CAAC;QACxB,YAAY,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAC3C,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;QAC7B,MAAM,YAAY,CAAC,qBAAqB,EAAE,CAAC;QAC3C,YAAY,GAAG,IAAI,4BAAY,CAAC,aAAa,CAAC,CAAC;QAC/C,YAAY,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,qBAAqB,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5E,YAAY,CAAC,aAAa,GAAG,KAAK,EAAE,KAAY,EAAE,EAAE;YAClD,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAChC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACpE,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC;gBAC7C,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBACnC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACvD,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACnE,IAAI,WAAW,CAAC,MAAM,IAAI,gBAAgB,EAAE,CAAC;oBAC3C,mBAAmB,EAAE,CAAC;gBACxB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;QACF,MAAM,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,YAAY,IAAI,YAAY,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YAC7D,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC7C,IAAI,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAClF,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACpE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACrC,YAAY,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAC5C,MAAM,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAC3D,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,IAAI,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACxF,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACpE,MAAM,0BAA0B,GAAG,mBAAmB,CAAC;YACvD,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAC9D,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAC9C,MAAM,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,CAChE,CAAC;YACF,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/C,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC7D,MAAM,gBAAgB,GAAG,YAAY,CAAC,uBAAuB,EAAE,CAAC;YAChE,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACpE,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,IAAI,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACpE,MAAM,YAAY,GAAG;gBACnB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;gBACjD,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;gBACnD,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;aAClD,CAAC;YACF,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC3C,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC7C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC1D,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACpD,MAAM,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;oBAC1D,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAClD,IAAI,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACxF,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACpE,YAAY,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACvD,MAAM,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YACjE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACvD,MAAM,gBAAgB,GAAG,YAAY,CAAC,uBAAuB,EAAE,CAAC;YAChE,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpG,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3E,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=exchange-factory.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange-factory.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/unit/cli/exchange-factory.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const exchange_factory_1 = require("../../../cli/exchange-factory");
4
+ const mexc_connector_1 = require("../../../exchanges/mexc/mexc-connector");
5
+ jest.mock('../../../exchanges/mexc/mexc-connector');
6
+ const MockMexcConnector = mexc_connector_1.MexcConnector;
7
+ describe('ExchangeFactory', () => {
8
+ let mockConnector;
9
+ beforeEach(() => {
10
+ jest.clearAllMocks();
11
+ mockConnector = {
12
+ connect: jest.fn().mockResolvedValue(undefined),
13
+ disconnect: jest.fn().mockResolvedValue(undefined),
14
+ };
15
+ MockMexcConnector.mockImplementation(() => mockConnector);
16
+ exchange_factory_1.ExchangeFactory.connectors.clear();
17
+ });
18
+ describe('isSupported', () => {
19
+ it('should return true for supported exchanges', () => {
20
+ expect(exchange_factory_1.ExchangeFactory.isSupported('mexc')).toBe(true);
21
+ expect(exchange_factory_1.ExchangeFactory.isSupported('gateio')).toBe(true);
22
+ expect(exchange_factory_1.ExchangeFactory.isSupported('bitget')).toBe(true);
23
+ expect(exchange_factory_1.ExchangeFactory.isSupported('kraken')).toBe(true);
24
+ });
25
+ it('should return false for unsupported exchanges', () => {
26
+ expect(exchange_factory_1.ExchangeFactory.isSupported('binance')).toBe(false);
27
+ expect(exchange_factory_1.ExchangeFactory.isSupported('coinbase')).toBe(false);
28
+ expect(exchange_factory_1.ExchangeFactory.isSupported('unknown')).toBe(false);
29
+ expect(exchange_factory_1.ExchangeFactory.isSupported('')).toBe(false);
30
+ });
31
+ });
32
+ describe('getSupportedExchanges', () => {
33
+ it('should return array of all supported exchanges', () => {
34
+ const supported = exchange_factory_1.ExchangeFactory.getSupportedExchanges();
35
+ expect(supported).toEqual(['mexc', 'gateio', 'bitget', 'kraken']);
36
+ expect(supported).toHaveLength(4);
37
+ });
38
+ });
39
+ describe('getExchange', () => {
40
+ it('should create and return new mexc connector', async () => {
41
+ const connector = await exchange_factory_1.ExchangeFactory.getExchange('mexc');
42
+ expect(MockMexcConnector).toHaveBeenCalledTimes(1);
43
+ expect(mockConnector.connect).toHaveBeenCalledTimes(1);
44
+ expect(connector).toBe(mockConnector);
45
+ });
46
+ it('should return cached connector on subsequent calls', async () => {
47
+ const connector1 = await exchange_factory_1.ExchangeFactory.getExchange('mexc');
48
+ const connector2 = await exchange_factory_1.ExchangeFactory.getExchange('mexc');
49
+ expect(MockMexcConnector).toHaveBeenCalledTimes(1);
50
+ expect(mockConnector.connect).toHaveBeenCalledTimes(1);
51
+ expect(connector1).toBe(connector2);
52
+ expect(connector1).toBe(mockConnector);
53
+ });
54
+ it('should throw error for gateio exchange', async () => {
55
+ await expect(exchange_factory_1.ExchangeFactory.getExchange('gateio'))
56
+ .rejects.toThrow('GateIO connector not yet implemented');
57
+ });
58
+ it('should throw error for bitget exchange', async () => {
59
+ await expect(exchange_factory_1.ExchangeFactory.getExchange('bitget'))
60
+ .rejects.toThrow('Bitget connector not yet implemented');
61
+ });
62
+ it('should throw error for kraken exchange', async () => {
63
+ await expect(exchange_factory_1.ExchangeFactory.getExchange('kraken'))
64
+ .rejects.toThrow('Kraken connector not yet implemented');
65
+ });
66
+ it('should handle connector creation errors', async () => {
67
+ MockMexcConnector.mockImplementationOnce(() => {
68
+ throw new Error('Connector creation failed');
69
+ });
70
+ await expect(exchange_factory_1.ExchangeFactory.getExchange('mexc'))
71
+ .rejects.toThrow('Connector creation failed');
72
+ });
73
+ it('should handle connection errors', async () => {
74
+ mockConnector.connect.mockRejectedValueOnce(new Error('Connection failed'));
75
+ await expect(exchange_factory_1.ExchangeFactory.getExchange('mexc'))
76
+ .rejects.toThrow('Connection failed');
77
+ });
78
+ });
79
+ describe('createExchangeConnector - all branches', () => {
80
+ it('should create MexcConnector for mexc', async () => {
81
+ await exchange_factory_1.ExchangeFactory.getExchange('mexc');
82
+ expect(MockMexcConnector).toHaveBeenCalledTimes(1);
83
+ });
84
+ it('should handle default case in switch statement', async () => {
85
+ await expect(exchange_factory_1.ExchangeFactory.getExchange('gateio')).rejects.toThrow();
86
+ await expect(exchange_factory_1.ExchangeFactory.getExchange('bitget')).rejects.toThrow();
87
+ await expect(exchange_factory_1.ExchangeFactory.getExchange('kraken')).rejects.toThrow();
88
+ });
89
+ });
90
+ describe('disconnectAll', () => {
91
+ it('should disconnect all cached connectors', async () => {
92
+ await exchange_factory_1.ExchangeFactory.getExchange('mexc');
93
+ const mockConnector2 = {
94
+ disconnect: jest.fn().mockResolvedValue(undefined),
95
+ };
96
+ exchange_factory_1.ExchangeFactory.connectors.set('test', mockConnector2);
97
+ await exchange_factory_1.ExchangeFactory.disconnectAll();
98
+ expect(mockConnector.disconnect).toHaveBeenCalledTimes(1);
99
+ expect(mockConnector2.disconnect).toHaveBeenCalledTimes(1);
100
+ expect(exchange_factory_1.ExchangeFactory.connectors.size).toBe(0);
101
+ });
102
+ it('should handle connectors without disconnect method', async () => {
103
+ const connectorWithoutDisconnect = {};
104
+ exchange_factory_1.ExchangeFactory.connectors.set('test', connectorWithoutDisconnect);
105
+ await expect(exchange_factory_1.ExchangeFactory.disconnectAll()).resolves.not.toThrow();
106
+ expect(exchange_factory_1.ExchangeFactory.connectors.size).toBe(0);
107
+ });
108
+ it('should handle disconnect errors gracefully', async () => {
109
+ await exchange_factory_1.ExchangeFactory.getExchange('mexc');
110
+ mockConnector.disconnect.mockRejectedValueOnce(new Error('Disconnect failed'));
111
+ await expect(exchange_factory_1.ExchangeFactory.disconnectAll()).rejects.toThrow('Disconnect failed');
112
+ expect(exchange_factory_1.ExchangeFactory.connectors.size).toBe(1);
113
+ });
114
+ it('should handle empty connector cache', async () => {
115
+ await expect(exchange_factory_1.ExchangeFactory.disconnectAll()).resolves.not.toThrow();
116
+ expect(exchange_factory_1.ExchangeFactory.connectors.size).toBe(0);
117
+ });
118
+ it('should handle mixed connector types', async () => {
119
+ await exchange_factory_1.ExchangeFactory.getExchange('mexc');
120
+ const mockConnector2 = {
121
+ disconnect: jest.fn().mockResolvedValue(undefined),
122
+ };
123
+ const mockConnector3 = {};
124
+ exchange_factory_1.ExchangeFactory.connectors.set('test1', mockConnector2);
125
+ exchange_factory_1.ExchangeFactory.connectors.set('test2', mockConnector3);
126
+ await exchange_factory_1.ExchangeFactory.disconnectAll();
127
+ expect(mockConnector.disconnect).toHaveBeenCalledTimes(1);
128
+ expect(mockConnector2.disconnect).toHaveBeenCalledTimes(1);
129
+ expect(exchange_factory_1.ExchangeFactory.connectors.size).toBe(0);
130
+ });
131
+ });
132
+ describe('caching behavior', () => {
133
+ it('should maintain separate instances for different exchange types', async () => {
134
+ const mexcConnector = await exchange_factory_1.ExchangeFactory.getExchange('mexc');
135
+ const mexcConnector2 = await exchange_factory_1.ExchangeFactory.getExchange('mexc');
136
+ expect(mexcConnector).toBe(mexcConnector2);
137
+ expect(MockMexcConnector).toHaveBeenCalledTimes(1);
138
+ });
139
+ it('should create new instance after disconnectAll', async () => {
140
+ await exchange_factory_1.ExchangeFactory.getExchange('mexc');
141
+ await exchange_factory_1.ExchangeFactory.disconnectAll();
142
+ await exchange_factory_1.ExchangeFactory.getExchange('mexc');
143
+ expect(MockMexcConnector).toHaveBeenCalledTimes(2);
144
+ expect(mockConnector.connect).toHaveBeenCalledTimes(2);
145
+ });
146
+ });
147
+ });
148
+ //# sourceMappingURL=exchange-factory.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange-factory.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/cli/exchange-factory.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=environment.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/unit/config/environment.test.ts"],"names":[],"mappings":""}