@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,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("dotenv/config");
4
+ const mexc_connector_1 = require("../exchanges/mexc/mexc-connector");
5
+ const utils_1 = require("../utils");
6
+ /**
7
+ * Debug trades subscription specifically to identify where it fails
8
+ */
9
+ async function debugTradesSubscription() {
10
+ const logger = (0, utils_1.createLogger)('trades-subscription-debug');
11
+ try {
12
+ logger.info('=== MEXC Trades Subscription Debug Test ===');
13
+ // Initialize connector
14
+ const mexc = new mexc_connector_1.MexcConnector();
15
+ mexc.setCredentials({
16
+ apiKey: process.env.MEXC_API_KEY,
17
+ secret: process.env.MEXC_SECRET
18
+ });
19
+ // Step 1: Connect to WebSocket
20
+ logger.info('Step 1: Connecting to WebSocket...');
21
+ await mexc.connectWebSocket();
22
+ logger.info('✅ WebSocket connected');
23
+ // Step 2: Set up detailed callback tracking
24
+ let tradesReceived = 0;
25
+ let firstTradeTime = null;
26
+ let lastTradeTime = null;
27
+ const tradeCallback = (trade) => {
28
+ tradesReceived++;
29
+ const now = Date.now();
30
+ if (!firstTradeTime) {
31
+ firstTradeTime = now;
32
+ logger.info(`🎯 FIRST TRADE RECEIVED after ${now - subscriptionTime}ms`);
33
+ }
34
+ lastTradeTime = now;
35
+ logger.info(`📊 Trade #${tradesReceived}:`, {
36
+ id: trade.id,
37
+ symbol: trade.symbol,
38
+ side: trade.side,
39
+ amount: trade.amount,
40
+ price: trade.price,
41
+ timestamp: trade.timestamp
42
+ });
43
+ };
44
+ // Step 3: Subscribe to trades with detailed logging
45
+ logger.info('Step 3: Subscribing to INDY/USDT trades...');
46
+ const subscriptionTime = Date.now();
47
+ const subscriptionId = await mexc.subscribeTrades('INDY/USDT', tradeCallback);
48
+ logger.info(`✅ Trades subscription created: ${subscriptionId}`);
49
+ // Step 4: Monitor for extended period with periodic status updates
50
+ const monitoringDuration = 60000; // 60 seconds
51
+ const statusInterval = 5000; // Log status every 5 seconds
52
+ logger.info(`⏰ Monitoring trades for ${monitoringDuration / 1000} seconds...`);
53
+ let statusTimer;
54
+ let statusCount = 0;
55
+ const monitoringPromise = new Promise((resolve) => {
56
+ statusTimer = setInterval(() => {
57
+ statusCount++;
58
+ const elapsed = statusCount * statusInterval;
59
+ logger.info(`📈 Status Update #${statusCount} (${elapsed / 1000}s elapsed):`, {
60
+ tradesReceived,
61
+ wsStatus: mexc.getWebSocketStatus(),
62
+ wsConnected: mexc.isWebSocketConnected(),
63
+ firstTradeDelay: firstTradeTime ? `${firstTradeTime - subscriptionTime}ms` : 'none',
64
+ lastTradeDelta: lastTradeTime ? `${Date.now() - lastTradeTime}ms ago` : 'none'
65
+ });
66
+ if (elapsed >= monitoringDuration) {
67
+ clearInterval(statusTimer);
68
+ resolve();
69
+ }
70
+ }, statusInterval);
71
+ });
72
+ await monitoringPromise;
73
+ // Step 5: Final analysis
74
+ logger.info('\n=== TRADES SUBSCRIPTION ANALYSIS ===');
75
+ logger.info(`Total monitoring time: ${monitoringDuration / 1000} seconds`);
76
+ logger.info(`Total trades received: ${tradesReceived}`);
77
+ if (tradesReceived === 0) {
78
+ logger.error('❌ NO TRADES RECEIVED - Possible issues:');
79
+ logger.error(' 1. WebSocket subscription not working');
80
+ logger.error(' 2. Protobuf decoding failing');
81
+ logger.error(' 3. Message routing not reaching callback');
82
+ logger.error(' 4. No actual trades happening on INDYUSDT');
83
+ }
84
+ else {
85
+ logger.info('✅ TRADES RECEIVED SUCCESSFULLY');
86
+ logger.info(` First trade delay: ${firstTradeTime - subscriptionTime}ms`);
87
+ logger.info(` Average trade frequency: ${tradesReceived / (monitoringDuration / 1000)} trades/sec`);
88
+ if (tradesReceived < 3) {
89
+ logger.warn('⚠️ Low trade frequency - this might explain comprehensive test timeouts');
90
+ }
91
+ }
92
+ // Step 6: Test direct WebSocket channel
93
+ logger.info('\n=== DIRECT WEBSOCKET TEST ===');
94
+ logger.info('Testing if we can receive raw trade messages...');
95
+ // Import WebSocket for direct testing
96
+ const WebSocket = require('ws');
97
+ const ws = new WebSocket('wss://wbs-api.mexc.com/ws');
98
+ let rawTradeMessages = 0;
99
+ const directTestPromise = new Promise((resolve) => {
100
+ ws.on('open', () => {
101
+ logger.info('✅ Direct WebSocket connected');
102
+ ws.send(JSON.stringify({
103
+ method: 'SUBSCRIPTION',
104
+ params: ['spot@public.aggre.deals.v3.api.pb@100ms@INDYUSDT']
105
+ }));
106
+ });
107
+ ws.on('message', (data) => {
108
+ const message = data.toString();
109
+ if (message.includes('spot@public.aggre.deals.v3.api.p')) {
110
+ rawTradeMessages++;
111
+ if (rawTradeMessages <= 3) {
112
+ logger.info(`🔍 Raw trade message #${rawTradeMessages} detected:`, {
113
+ length: message.length,
114
+ preview: message.substring(0, 100)
115
+ });
116
+ }
117
+ }
118
+ });
119
+ setTimeout(() => {
120
+ ws.close();
121
+ resolve();
122
+ }, 15000); // 15 second test
123
+ });
124
+ await directTestPromise;
125
+ logger.info(`Direct test result: ${rawTradeMessages} raw trade messages in 15 seconds`);
126
+ if (rawTradeMessages > 0 && tradesReceived === 0) {
127
+ logger.error('❌ ISSUE IDENTIFIED: Raw messages received but not processed by connector');
128
+ logger.error(' Problem is in protobuf decoding or message routing');
129
+ }
130
+ else if (rawTradeMessages === 0) {
131
+ logger.warn('⚠️ No raw trade messages - INDYUSDT might have low trading activity');
132
+ }
133
+ // Cleanup
134
+ logger.info('\n=== CLEANUP ===');
135
+ await mexc.unsubscribe(subscriptionId);
136
+ await mexc.disconnectWebSocket();
137
+ await mexc.disconnect();
138
+ logger.info('✅ Cleanup completed');
139
+ }
140
+ catch (error) {
141
+ if (error instanceof Error) {
142
+ logger.logError(error);
143
+ }
144
+ else {
145
+ logger.error('❌ Debug test failed', { error: String(error) });
146
+ }
147
+ }
148
+ }
149
+ debugTradesSubscription().catch(console.error);
150
+ //# sourceMappingURL=mexc-trades-subscription-debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mexc-trades-subscription-debug.js","sourceRoot":"","sources":["../../src/examples/mexc-trades-subscription-debug.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import 'dotenv/config';
2
+ /**
3
+ * MEXC WebSocket test script
4
+ * Demonstrates real-time data subscriptions
5
+ */
6
+ declare function testMexcWebSocket(): Promise<void>;
7
+ export { testMexcWebSocket };
8
+ //# sourceMappingURL=mexc-websocket-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mexc-websocket-test.d.ts","sourceRoot":"","sources":["../../src/examples/mexc-websocket-test.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAIvB;;;GAGG;AAEH,iBAAe,iBAAiB,kBA6G/B;AAWD,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.testMexcWebSocket = testMexcWebSocket;
4
+ require("dotenv/config");
5
+ const mexc_connector_1 = require("../exchanges/mexc/mexc-connector");
6
+ /**
7
+ * MEXC WebSocket test script
8
+ * Demonstrates real-time data subscriptions
9
+ */
10
+ async function testMexcWebSocket() {
11
+ // Test credentials loaded from .env
12
+ const testCredentials = {
13
+ apiKey: process.env.MEXC_API_KEY || '',
14
+ secret: process.env.MEXC_SECRET || '',
15
+ uid: process.env.MEXC_UID
16
+ };
17
+ // Validate credentials
18
+ if (!testCredentials.apiKey || !testCredentials.secret) {
19
+ console.error('❌ MEXC API credentials not found. Please check your .env file.');
20
+ return;
21
+ }
22
+ const mexc = new mexc_connector_1.MexcConnector();
23
+ let tickerSubscriptionId;
24
+ let tradesSubscriptionId;
25
+ try {
26
+ console.log('🔧 Setting up MEXC connector...');
27
+ mexc.setCredentials(testCredentials);
28
+ console.log('🔌 Connecting to MEXC REST API...');
29
+ await mexc.connect();
30
+ if (!mexc.isConnected()) {
31
+ throw new Error('Failed to connect to MEXC REST API');
32
+ }
33
+ console.log('✅ Connected to MEXC REST API successfully!');
34
+ // Connect to WebSocket
35
+ console.log('🔌 Connecting to MEXC WebSocket...');
36
+ await mexc.connectWebSocket();
37
+ if (!mexc.isWebSocketConnected()) {
38
+ throw new Error('Failed to connect to MEXC WebSocket');
39
+ }
40
+ console.log('✅ Connected to MEXC WebSocket successfully!');
41
+ console.log('📊 WebSocket Status:', mexc.getWebSocketStatus());
42
+ console.log('');
43
+ // Subscribe to ticker updates
44
+ console.log('📊 Subscribing to INDY/USDT ticker updates...');
45
+ tickerSubscriptionId = await mexc.subscribeTicker('INDY/USDT', (ticker) => {
46
+ console.log('🎯 Ticker Update:', {
47
+ symbol: ticker.symbol,
48
+ price: ticker.last,
49
+ bid: ticker.bid,
50
+ ask: ticker.ask,
51
+ time: new Date().toISOString()
52
+ });
53
+ });
54
+ console.log('✅ Ticker subscription ID:', tickerSubscriptionId);
55
+ console.log('');
56
+ // Subscribe to trade updates
57
+ console.log('📈 Subscribing to INDY/USDT trade updates...');
58
+ tradesSubscriptionId = await mexc.subscribeTrades('INDY/USDT', (trade) => {
59
+ console.log('💰 Trade Update:', {
60
+ id: trade.id,
61
+ symbol: trade.symbol,
62
+ side: trade.side,
63
+ amount: trade.amount,
64
+ price: trade.price,
65
+ time: new Date(trade.timestamp).toISOString()
66
+ });
67
+ });
68
+ console.log('✅ Trades subscription ID:', tradesSubscriptionId);
69
+ console.log('');
70
+ // Listen for updates for 30 seconds
71
+ console.log('👂 Listening for real-time updates for 30 seconds...');
72
+ console.log('📡 Press Ctrl+C to stop early');
73
+ await new Promise(resolve => setTimeout(resolve, 30000));
74
+ console.log('⏰ 30 seconds elapsed, stopping subscriptions...');
75
+ }
76
+ catch (error) {
77
+ console.error('❌ Error during WebSocket testing:', error);
78
+ }
79
+ finally {
80
+ // Cleanup subscriptions
81
+ if (tickerSubscriptionId) {
82
+ try {
83
+ console.log('🧹 Unsubscribing from ticker updates...');
84
+ await mexc.unsubscribe(tickerSubscriptionId);
85
+ console.log('✅ Ticker subscription cancelled');
86
+ }
87
+ catch (error) {
88
+ console.log('⚠️ Error unsubscribing from ticker:', error);
89
+ }
90
+ }
91
+ if (tradesSubscriptionId) {
92
+ try {
93
+ console.log('🧹 Unsubscribing from trade updates...');
94
+ await mexc.unsubscribe(tradesSubscriptionId);
95
+ console.log('✅ Trades subscription cancelled');
96
+ }
97
+ catch (error) {
98
+ console.log('⚠️ Error unsubscribing from trades:', error);
99
+ }
100
+ }
101
+ // Disconnect WebSocket and REST
102
+ console.log('🔌 Disconnecting from MEXC...');
103
+ await mexc.disconnect();
104
+ console.log('✅ WebSocket test completed and disconnected!');
105
+ }
106
+ }
107
+ // Run the test if this file is executed directly
108
+ if (require.main === module) {
109
+ console.log('🚀 Starting MEXC WebSocket test...\n');
110
+ testMexcWebSocket().catch((error) => {
111
+ console.error('❌ Fatal error:', error);
112
+ process.exit(1);
113
+ });
114
+ }
115
+ //# sourceMappingURL=mexc-websocket-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mexc-websocket-test.js","sourceRoot":"","sources":["../../src/examples/mexc-websocket-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ts-node
2
+ /**
3
+ * Test Example: MEXC Protobuf Status Detection
4
+ *
5
+ * This example tests the protobuf status detection with real message patterns
6
+ * from the user's logs to ensure cancelled orders are not misidentified as filled.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=test-protobuf-status-detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-protobuf-status-detection.d.ts","sourceRoot":"","sources":["../../src/examples/test-protobuf-status-detection.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env ts-node
2
+ "use strict";
3
+ /**
4
+ * Test Example: MEXC Protobuf Status Detection
5
+ *
6
+ * This example tests the protobuf status detection with real message patterns
7
+ * from the user's logs to ensure cancelled orders are not misidentified as filled.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const mexc_protobuf_decoder_1 = require("../exchanges/mexc/mexc-protobuf-decoder");
11
+ console.log('🧪 Testing MEXC Protobuf Status Detection\n');
12
+ // Test cases from the user's actual logs
13
+ const testCases = [
14
+ {
15
+ name: 'Cancelled Order (was incorrectly detected as filled)',
16
+ // This is the actual problematic message from the logs
17
+ message: '\n\x1Dspot@private.orders.v3.api.pb\x1A\bINDYUSDT0����3�\x13]\n\x1AC02__627797424542343168060\x1A\x060.3328"\x0528.98*\b9.6445442\x0108\x01@\x02R\b9.644544Z\x0528.98j\x010r\x010x\x04�\x01����3',
18
+ expectedStatus: 'cancelled',
19
+ description: 'Order that was cancelled during bulk operation but had both filled and cancelled indicators'
20
+ },
21
+ {
22
+ name: 'Genuine Filled Order',
23
+ // This is an actually filled order message
24
+ message: '\n\x1Dspot@private.orders.v3.api.pb\x1A\bINDYUSDT0����3�\x13i\n\x1AC02__627797402794909698060\x1A\x060.3229"\x0528.98*\b3.87942\x00608\x01@\x02R\x063.8794Z\x0511.41j\x010r\x010x\x02�\x01����3',
25
+ expectedStatus: 'filled',
26
+ description: 'Order that was actually filled (should trigger grid recreation)'
27
+ },
28
+ {
29
+ name: 'New Order',
30
+ // This is a new order message
31
+ message: '\n\x1Dspot@private.orders.v3.api.pb\x1A\bINDYUSDT0����3�\x13Z\n\x1AC02__627797420385812480060\x1A\x050.323"\x0528.98*\x079.360542\x0108\x01@\x01R\x079.36054Z\x0528.98j\x010r\x010x\x01�\x01�����3',
32
+ expectedStatus: 'new',
33
+ description: 'Newly created order (should be tracked but not trigger recreation)'
34
+ }
35
+ ];
36
+ console.log('Testing with actual problematic messages from user logs:\n');
37
+ let passedTests = 0;
38
+ let failedTests = 0;
39
+ testCases.forEach((testCase, index) => {
40
+ console.log(`${index + 1}. ${testCase.name}`);
41
+ console.log(` Description: ${testCase.description}`);
42
+ const result = mexc_protobuf_decoder_1.MexcProtobufDecoder.decode(testCase.message);
43
+ if (result.type === 'order' && result.decoded) {
44
+ const orderData = result.decoded;
45
+ const actualStatus = orderData.status;
46
+ console.log(` Order ID: ${orderData.orderId}`);
47
+ console.log(` Symbol: ${orderData.symbol}`);
48
+ console.log(` Expected Status: ${testCase.expectedStatus}`);
49
+ console.log(` Actual Status: ${actualStatus}`);
50
+ if (actualStatus === testCase.expectedStatus) {
51
+ console.log(` ✅ PASS - Status correctly detected`);
52
+ passedTests++;
53
+ }
54
+ else {
55
+ console.log(` ❌ FAIL - Status incorrectly detected`);
56
+ failedTests++;
57
+ }
58
+ }
59
+ else {
60
+ console.log(` ❌ FAIL - Could not decode message`);
61
+ failedTests++;
62
+ }
63
+ console.log('');
64
+ });
65
+ console.log(`\n📊 Test Results:`);
66
+ console.log(` ✅ Passed: ${passedTests}`);
67
+ console.log(` ❌ Failed: ${failedTests}`);
68
+ console.log(` Total: ${passedTests + failedTests}`);
69
+ if (failedTests === 0) {
70
+ console.log('\n🎉 All tests passed! Protobuf status detection is working correctly.');
71
+ console.log(' - Cancelled orders will be correctly identified as cancelled');
72
+ console.log(' - Grid strategy will only recreate on actual fills, not cancellations');
73
+ console.log(' - The infinite recreation loop issue should be resolved');
74
+ }
75
+ else {
76
+ console.log('\n⚠️ Some tests failed. The status detection issue may still exist.');
77
+ }
78
+ console.log('\n🔧 Grid Strategy Impact:');
79
+ console.log(' - ✅ Filled orders → Trigger grid recreation (correct behavior)');
80
+ console.log(' - ✅ Cancelled orders → No action taken (correct behavior)');
81
+ console.log(' - ✅ New orders → Tracked but no recreation (correct behavior)');
82
+ console.log(' - ✅ No more infinite recreation loops from misdetected cancellations');
83
+ //# sourceMappingURL=test-protobuf-status-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-protobuf-status-detection.js","sourceRoot":"","sources":["../../src/examples/test-protobuf-status-detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { Order, OrderBook, Ticker, Trade, OrderType, OrderSide } from '../types';
2
+ import { Balance, ExchangeCredentials } from '../types';
3
+ /**
4
+ * Abstract base class for all exchange connectors
5
+ * Provides common functionality and defines the interface that all exchanges must implement
6
+ */
7
+ export declare abstract class BaseExchangeConnector {
8
+ protected readonly exchangeId: string;
9
+ protected readonly exchangeName: string;
10
+ protected credentials?: ExchangeCredentials;
11
+ protected connected: boolean;
12
+ constructor(exchangeId: string, exchangeName: string);
13
+ get id(): string;
14
+ get name(): string;
15
+ abstract connect(): Promise<void>;
16
+ abstract disconnect(): Promise<void>;
17
+ isConnected(): boolean;
18
+ setCredentials(credentials: ExchangeCredentials): void;
19
+ protected getCredentials(): ExchangeCredentials;
20
+ abstract getBalance(): Promise<Record<string, Balance>>;
21
+ abstract createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number): Promise<Order>;
22
+ abstract cancelOrder(orderId: string, symbol: string): Promise<void>;
23
+ abstract getOrder(orderId: string, symbol: string): Promise<Order>;
24
+ abstract getOpenOrders(symbol?: string): Promise<Order[]>;
25
+ abstract getTicker(symbol: string): Promise<Ticker>;
26
+ abstract getOrderBook(symbol: string): Promise<OrderBook>;
27
+ abstract getRecentTrades(symbol: string): Promise<Trade[]>;
28
+ protected validateSymbol(symbol: string): void;
29
+ protected validateAmount(amount: number): void;
30
+ protected validatePrice(price: number | undefined, orderType: OrderType): void;
31
+ protected handleError(error: any, operation: string): never;
32
+ }
33
+ //# sourceMappingURL=base-exchange-connector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-exchange-connector.d.ts","sourceRoot":"","sources":["../../src/exchanges/base-exchange-connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAExD;;;GAGG;AACH,8BAAsB,qBAAqB;IACzC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IACxC,SAAS,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAC5C,SAAS,CAAC,SAAS,EAAE,OAAO,CAAS;gBAEzB,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAKpD,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IACjC,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAEpC,WAAW,IAAI,OAAO;IAItB,cAAc,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAItD,SAAS,CAAC,cAAc,IAAI,mBAAmB;IAO/C,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEvD,QAAQ,CAAC,WAAW,CAClB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,KAAK,CAAC;IAEjB,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACpE,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAClE,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAEzD,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACnD,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IACzD,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAG1D,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM9C,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM9C,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAO9E,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK;CAI5D"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseExchangeConnector = void 0;
4
+ /**
5
+ * Abstract base class for all exchange connectors
6
+ * Provides common functionality and defines the interface that all exchanges must implement
7
+ */
8
+ class BaseExchangeConnector {
9
+ constructor(exchangeId, exchangeName) {
10
+ this.connected = false;
11
+ this.exchangeId = exchangeId;
12
+ this.exchangeName = exchangeName;
13
+ }
14
+ get id() {
15
+ return this.exchangeId;
16
+ }
17
+ get name() {
18
+ return this.exchangeName;
19
+ }
20
+ isConnected() {
21
+ return this.connected;
22
+ }
23
+ setCredentials(credentials) {
24
+ this.credentials = credentials;
25
+ }
26
+ getCredentials() {
27
+ if (!this.credentials) {
28
+ throw new Error(`No credentials set for ${this.exchangeName}`);
29
+ }
30
+ return this.credentials;
31
+ }
32
+ // Common utility methods that can be overridden
33
+ validateSymbol(symbol) {
34
+ if (!symbol || typeof symbol !== 'string') {
35
+ throw new Error('Invalid symbol provided');
36
+ }
37
+ }
38
+ validateAmount(amount) {
39
+ if (!amount || amount <= 0) {
40
+ throw new Error('Invalid amount provided');
41
+ }
42
+ }
43
+ validatePrice(price, orderType) {
44
+ if (orderType === 'limit' && (!price || price <= 0)) {
45
+ throw new Error('Price required for limit orders');
46
+ }
47
+ }
48
+ // Error handling helper
49
+ handleError(error, operation) {
50
+ const message = error?.message || error?.toString() || 'Unknown error';
51
+ throw new Error(`${this.exchangeName} ${operation} failed: ${message}`);
52
+ }
53
+ }
54
+ exports.BaseExchangeConnector = BaseExchangeConnector;
55
+ //# sourceMappingURL=base-exchange-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-exchange-connector.js","sourceRoot":"","sources":["../../src/exchanges/base-exchange-connector.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,MAAsB,qBAAqB;IAMzC,YAAY,UAAkB,EAAE,YAAoB;QAF1C,cAAS,GAAY,KAAK,CAAC;QAGnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAKD,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,cAAc,CAAC,WAAgC;QAC7C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAES,cAAc;QACtB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAoBD,gDAAgD;IACtC,cAAc,CAAC,MAAc;QACrC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAES,cAAc,CAAC,MAAc;QACrC,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAES,aAAa,CAAC,KAAyB,EAAE,SAAoB;QACrE,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,wBAAwB;IACd,WAAW,CAAC,KAAU,EAAE,SAAiB;QACjD,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,QAAQ,EAAE,IAAI,eAAe,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,IAAI,SAAS,YAAY,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;CACF;AA/ED,sDA+EC"}
@@ -0,0 +1,66 @@
1
+ import { ExchangeCredentials } from '../../types';
2
+ /**
3
+ * Extended credentials for Bitget that includes passphrase
4
+ */
5
+ export interface BitgetCredentials extends ExchangeCredentials {
6
+ passphrase: string;
7
+ }
8
+ /**
9
+ * Bitget Authentication and Request Handler
10
+ *
11
+ * Handles API authentication, request signing, and HTTP requests to Bitget API.
12
+ * Implements Bitget's HMAC-SHA256 signature generation with BASE64 encoding.
13
+ *
14
+ * @see https://www.bitget.com/api-doc/common/signature
15
+ */
16
+ export declare class BitgetAuth {
17
+ private readonly credentials;
18
+ private readonly baseUrl;
19
+ private logger;
20
+ /**
21
+ * Initialize Bitget authentication handler
22
+ *
23
+ * @param credentials - Bitget API credentials including API key, secret, and passphrase
24
+ * @param baseUrl - Base URL for Bitget API (defaults to production)
25
+ */
26
+ constructor(credentials: BitgetCredentials, baseUrl?: string);
27
+ /**
28
+ * Generate HMAC-SHA256 signature for Bitget API requests
29
+ */
30
+ generateSignature(timestamp: number, method: string, requestPath: string, queryString?: string, body?: string): string;
31
+ /**
32
+ * Get required headers for authenticated Bitget API requests
33
+ */
34
+ getHeaders(method: string, requestPath: string, queryString?: string, body?: string, timestamp?: number): Record<string, string>;
35
+ /**
36
+ * Get headers for public API endpoints
37
+ */
38
+ getPublicHeaders(): Record<string, string>;
39
+ /**
40
+ * Make authenticated request to Bitget API
41
+ */
42
+ makeRequest(endpoint: string, params?: Record<string, unknown>, method?: 'GET' | 'POST' | 'PUT' | 'DELETE', body?: Record<string, unknown>): Promise<any>;
43
+ /**
44
+ * Make public request to Bitget API
45
+ */
46
+ makePublicRequest(endpoint: string, params?: Record<string, unknown>): Promise<any>;
47
+ /**
48
+ * Handle API response and extract meaningful error messages
49
+ */
50
+ private handleResponse;
51
+ /**
52
+ * Validate that all required credentials are provided
53
+ */
54
+ private validateCredentials;
55
+ /**
56
+ * Check if credentials are properly configured
57
+ */
58
+ validateCredentialsExist(): boolean;
59
+ /**
60
+ * Get credentials for WebSocket authentication
61
+ *
62
+ * @returns The BitgetCredentials object
63
+ */
64
+ getCredentials(): BitgetCredentials;
65
+ }
66
+ //# sourceMappingURL=bitget-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitget-auth.d.ts","sourceRoot":"","sources":["../../../src/exchanges/bitget/bitget-auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,MAAM,CAA+B;IAE7C;;;;;OAKG;gBACS,WAAW,EAAE,iBAAiB,EAAE,OAAO,GAAE,MAAiC;IAMtF;;OAEG;IACH,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAW,EACxB,IAAI,GAAE,MAAW,GAChB,MAAM;IAcT;;OAEG;IACH,UAAU,CACR,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAW,EACxB,IAAI,GAAE,MAAW,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAmBzB;;OAEG;IACH,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAM1C;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAgB,EACjD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,GAAG,CAAC;IA8Bf;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAsB7F;;OAEG;YACW,cAAc;IAqD5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,wBAAwB,IAAI,OAAO;IASnC;;;;OAIG;IACH,cAAc,IAAI,iBAAiB;CAGpC"}