@3rd-eye-labs/openmm 0.1.1 → 0.1.3

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 (268) hide show
  1. package/dist/cli/cli.js +4 -0
  2. package/dist/cli/cli.js.map +1 -1
  3. package/dist/cli/commands/ohlcv.d.ts +3 -0
  4. package/dist/cli/commands/ohlcv.d.ts.map +1 -0
  5. package/dist/cli/commands/ohlcv.js +115 -0
  6. package/dist/cli/commands/ohlcv.js.map +1 -0
  7. package/dist/cli/commands/wallet.d.ts +7 -0
  8. package/dist/cli/commands/wallet.d.ts.map +1 -0
  9. package/dist/cli/commands/wallet.js +271 -0
  10. package/dist/cli/commands/wallet.js.map +1 -0
  11. package/dist/core/exchange/base-exchange-connector.d.ts +2 -1
  12. package/dist/core/exchange/base-exchange-connector.d.ts.map +1 -1
  13. package/dist/core/exchange/base-exchange-connector.js.map +1 -1
  14. package/dist/exchanges/bitget/bitget-connector.d.ts +11 -1
  15. package/dist/exchanges/bitget/bitget-connector.d.ts.map +1 -1
  16. package/dist/exchanges/bitget/bitget-connector.js +52 -0
  17. package/dist/exchanges/bitget/bitget-connector.js.map +1 -1
  18. package/dist/exchanges/gateio/gateio-connector.d.ts +11 -1
  19. package/dist/exchanges/gateio/gateio-connector.d.ts.map +1 -1
  20. package/dist/exchanges/gateio/gateio-connector.js +54 -0
  21. package/dist/exchanges/gateio/gateio-connector.js.map +1 -1
  22. package/dist/exchanges/kraken/kraken-connector.d.ts +6 -1
  23. package/dist/exchanges/kraken/kraken-connector.d.ts.map +1 -1
  24. package/dist/exchanges/kraken/kraken-connector.js +44 -0
  25. package/dist/exchanges/kraken/kraken-connector.js.map +1 -1
  26. package/dist/exchanges/mexc/mexc-auth.d.ts +1 -0
  27. package/dist/exchanges/mexc/mexc-auth.d.ts.map +1 -1
  28. package/dist/exchanges/mexc/mexc-auth.js +4 -1
  29. package/dist/exchanges/mexc/mexc-auth.js.map +1 -1
  30. package/dist/exchanges/mexc/mexc-connector.d.ts +6 -1
  31. package/dist/exchanges/mexc/mexc-connector.d.ts.map +1 -1
  32. package/dist/exchanges/mexc/mexc-connector.js +37 -0
  33. package/dist/exchanges/mexc/mexc-connector.js.map +1 -1
  34. package/dist/index.d.ts +1 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +25 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/types/market.d.ts +15 -0
  39. package/dist/types/market.d.ts.map +1 -1
  40. package/dist/x402/crypto.d.ts +79 -0
  41. package/dist/x402/crypto.d.ts.map +1 -0
  42. package/dist/x402/crypto.js +300 -0
  43. package/dist/x402/crypto.js.map +1 -0
  44. package/dist/x402/evm.d.ts +41 -0
  45. package/dist/x402/evm.d.ts.map +1 -0
  46. package/dist/x402/evm.js +229 -0
  47. package/dist/x402/evm.js.map +1 -0
  48. package/dist/x402/handler.d.ts +53 -0
  49. package/dist/x402/handler.d.ts.map +1 -0
  50. package/dist/x402/handler.js +233 -0
  51. package/dist/x402/handler.js.map +1 -0
  52. package/dist/x402/index.d.ts +29 -0
  53. package/dist/x402/index.d.ts.map +1 -0
  54. package/dist/x402/index.js +67 -0
  55. package/dist/x402/index.js.map +1 -0
  56. package/dist/x402/types.d.ts +185 -0
  57. package/dist/x402/types.d.ts.map +1 -0
  58. package/dist/x402/types.js +7 -0
  59. package/dist/x402/types.js.map +1 -0
  60. package/dist/x402/wallet.d.ts +65 -0
  61. package/dist/x402/wallet.d.ts.map +1 -0
  62. package/dist/x402/wallet.js +282 -0
  63. package/dist/x402/wallet.js.map +1 -0
  64. package/package.json +1 -1
  65. package/dist/cli/commands/grid.d.ts +0 -3
  66. package/dist/cli/commands/grid.d.ts.map +0 -1
  67. package/dist/cli/commands/grid.js +0 -103
  68. package/dist/cli/commands/grid.js.map +0 -1
  69. package/dist/cli/commands/multi-trade.d.ts +0 -3
  70. package/dist/cli/commands/multi-trade.d.ts.map +0 -1
  71. package/dist/cli/commands/multi-trade.js +0 -175
  72. package/dist/cli/commands/multi-trade.js.map +0 -1
  73. package/dist/cli/pool-discovery.d.ts +0 -56
  74. package/dist/cli/pool-discovery.d.ts.map +0 -1
  75. package/dist/cli/pool-discovery.js +0 -283
  76. package/dist/cli/pool-discovery.js.map +0 -1
  77. package/dist/core/price-aggregation/price-cache.d.ts +0 -55
  78. package/dist/core/price-aggregation/price-cache.d.ts.map +0 -1
  79. package/dist/core/price-aggregation/price-cache.js +0 -152
  80. package/dist/core/price-aggregation/price-cache.js.map +0 -1
  81. package/dist/examples/mexc-connector-comprehensive-test.d.ts +0 -15
  82. package/dist/examples/mexc-connector-comprehensive-test.d.ts.map +0 -1
  83. package/dist/examples/mexc-connector-comprehensive-test.js +0 -514
  84. package/dist/examples/mexc-connector-comprehensive-test.js.map +0 -1
  85. package/dist/examples/mexc-order-update-test.d.ts +0 -4
  86. package/dist/examples/mexc-order-update-test.d.ts.map +0 -1
  87. package/dist/examples/mexc-order-update-test.js +0 -186
  88. package/dist/examples/mexc-order-update-test.js.map +0 -1
  89. package/dist/examples/mexc-test.d.ts +0 -9
  90. package/dist/examples/mexc-test.d.ts.map +0 -1
  91. package/dist/examples/mexc-test.js +0 -218
  92. package/dist/examples/mexc-test.js.map +0 -1
  93. package/dist/examples/mexc-trades-debug.d.ts +0 -2
  94. package/dist/examples/mexc-trades-debug.d.ts.map +0 -1
  95. package/dist/examples/mexc-trades-debug.js +0 -101
  96. package/dist/examples/mexc-trades-debug.js.map +0 -1
  97. package/dist/examples/mexc-trades-subscription-debug.d.ts +0 -2
  98. package/dist/examples/mexc-trades-subscription-debug.d.ts.map +0 -1
  99. package/dist/examples/mexc-trades-subscription-debug.js +0 -150
  100. package/dist/examples/mexc-trades-subscription-debug.js.map +0 -1
  101. package/dist/examples/mexc-websocket-test.d.ts +0 -8
  102. package/dist/examples/mexc-websocket-test.d.ts.map +0 -1
  103. package/dist/examples/mexc-websocket-test.js +0 -115
  104. package/dist/examples/mexc-websocket-test.js.map +0 -1
  105. package/dist/examples/test-protobuf-status-detection.d.ts +0 -9
  106. package/dist/examples/test-protobuf-status-detection.d.ts.map +0 -1
  107. package/dist/examples/test-protobuf-status-detection.js +0 -83
  108. package/dist/examples/test-protobuf-status-detection.js.map +0 -1
  109. package/dist/exchanges/base-exchange-connector.d.ts +0 -33
  110. package/dist/exchanges/base-exchange-connector.d.ts.map +0 -1
  111. package/dist/exchanges/base-exchange-connector.js +0 -55
  112. package/dist/exchanges/base-exchange-connector.js.map +0 -1
  113. package/dist/exchanges/kraken/test-kraken-websocket.d.ts +0 -19
  114. package/dist/exchanges/kraken/test-kraken-websocket.d.ts.map +0 -1
  115. package/dist/exchanges/kraken/test-kraken-websocket.js +0 -413
  116. package/dist/exchanges/kraken/test-kraken-websocket.js.map +0 -1
  117. package/dist/mcp/resources/index.d.ts +0 -3
  118. package/dist/mcp/resources/index.d.ts.map +0 -1
  119. package/dist/mcp/resources/index.js +0 -11
  120. package/dist/mcp/resources/index.js.map +0 -1
  121. package/dist/mcp/server.d.ts +0 -4
  122. package/dist/mcp/server.d.ts.map +0 -1
  123. package/dist/mcp/server.js +0 -29
  124. package/dist/mcp/server.js.map +0 -1
  125. package/dist/mcp/tools/index.d.ts +0 -3
  126. package/dist/mcp/tools/index.d.ts.map +0 -1
  127. package/dist/mcp/tools/index.js +0 -12
  128. package/dist/mcp/tools/index.js.map +0 -1
  129. package/dist/tests/fixtures/test-helpers.d.ts +0 -5
  130. package/dist/tests/fixtures/test-helpers.d.ts.map +0 -1
  131. package/dist/tests/fixtures/test-helpers.js +0 -8
  132. package/dist/tests/fixtures/test-helpers.js.map +0 -1
  133. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts +0 -2
  134. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts.map +0 -1
  135. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js +0 -237
  136. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js.map +0 -1
  137. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts +0 -2
  138. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts.map +0 -1
  139. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js +0 -57
  140. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js.map +0 -1
  141. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts +0 -2
  142. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts.map +0 -1
  143. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js +0 -141
  144. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js.map +0 -1
  145. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts +0 -2
  146. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts.map +0 -1
  147. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js +0 -375
  148. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js.map +0 -1
  149. package/dist/tests/unit/cli/exchange-factory.test.d.ts +0 -2
  150. package/dist/tests/unit/cli/exchange-factory.test.d.ts.map +0 -1
  151. package/dist/tests/unit/cli/exchange-factory.test.js +0 -148
  152. package/dist/tests/unit/cli/exchange-factory.test.js.map +0 -1
  153. package/dist/tests/unit/config/environment.test.d.ts +0 -2
  154. package/dist/tests/unit/config/environment.test.d.ts.map +0 -1
  155. package/dist/tests/unit/config/environment.test.js +0 -158
  156. package/dist/tests/unit/config/environment.test.js.map +0 -1
  157. package/dist/tests/unit/config/launcher-config.test.d.ts +0 -2
  158. package/dist/tests/unit/config/launcher-config.test.d.ts.map +0 -1
  159. package/dist/tests/unit/config/launcher-config.test.js +0 -117
  160. package/dist/tests/unit/config/launcher-config.test.js.map +0 -1
  161. package/dist/tests/unit/config/price-aggregation.test.d.ts +0 -2
  162. package/dist/tests/unit/config/price-aggregation.test.d.ts.map +0 -1
  163. package/dist/tests/unit/config/price-aggregation.test.js +0 -144
  164. package/dist/tests/unit/config/price-aggregation.test.js.map +0 -1
  165. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts +0 -2
  166. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts.map +0 -1
  167. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js +0 -191
  168. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js.map +0 -1
  169. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts +0 -2
  170. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts.map +0 -1
  171. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js +0 -324
  172. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js.map +0 -1
  173. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts +0 -2
  174. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts.map +0 -1
  175. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js +0 -177
  176. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js.map +0 -1
  177. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts +0 -2
  178. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts.map +0 -1
  179. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js +0 -168
  180. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js.map +0 -1
  181. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts +0 -2
  182. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts.map +0 -1
  183. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js +0 -217
  184. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js.map +0 -1
  185. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts +0 -2
  186. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts.map +0 -1
  187. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js +0 -229
  188. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js.map +0 -1
  189. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts +0 -2
  190. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts.map +0 -1
  191. package/dist/tests/unit/core/risk-management/risk-manager.test.js +0 -194
  192. package/dist/tests/unit/core/risk-management/risk-manager.test.js.map +0 -1
  193. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts +0 -2
  194. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts.map +0 -1
  195. package/dist/tests/unit/core/strategy/base-strategy.test.js +0 -254
  196. package/dist/tests/unit/core/strategy/base-strategy.test.js.map +0 -1
  197. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts +0 -2
  198. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts.map +0 -1
  199. package/dist/tests/unit/core/strategy/strategy-factory.test.js +0 -213
  200. package/dist/tests/unit/core/strategy/strategy-factory.test.js.map +0 -1
  201. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts +0 -2
  202. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts.map +0 -1
  203. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js +0 -452
  204. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js.map +0 -1
  205. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts +0 -2
  206. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts.map +0 -1
  207. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js +0 -1419
  208. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js.map +0 -1
  209. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts +0 -2
  210. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts.map +0 -1
  211. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js +0 -435
  212. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js.map +0 -1
  213. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts +0 -2
  214. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts.map +0 -1
  215. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js +0 -314
  216. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js.map +0 -1
  217. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts +0 -2
  218. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts.map +0 -1
  219. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js +0 -178
  220. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js.map +0 -1
  221. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts +0 -2
  222. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts.map +0 -1
  223. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js +0 -502
  224. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js.map +0 -1
  225. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts +0 -2
  226. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts.map +0 -1
  227. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js +0 -317
  228. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js.map +0 -1
  229. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts +0 -2
  230. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts.map +0 -1
  231. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js +0 -843
  232. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js.map +0 -1
  233. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts +0 -2
  234. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts.map +0 -1
  235. package/dist/tests/unit/strategies/grid/grid-calculator.test.js +0 -67
  236. package/dist/tests/unit/strategies/grid/grid-calculator.test.js.map +0 -1
  237. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts +0 -2
  238. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts.map +0 -1
  239. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js +0 -211
  240. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js.map +0 -1
  241. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts +0 -2
  242. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts.map +0 -1
  243. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js +0 -197
  244. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js.map +0 -1
  245. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts +0 -2
  246. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts.map +0 -1
  247. package/dist/tests/unit/strategies/grid/grid-strategy.test.js +0 -429
  248. package/dist/tests/unit/strategies/grid/grid-strategy.test.js.map +0 -1
  249. package/dist/tests/unit/utils/logger.test.d.ts +0 -2
  250. package/dist/tests/unit/utils/logger.test.d.ts.map +0 -1
  251. package/dist/tests/unit/utils/logger.test.js +0 -260
  252. package/dist/tests/unit/utils/logger.test.js.map +0 -1
  253. package/dist/tests/unit/utils/symbol-utils.test.d.ts +0 -2
  254. package/dist/tests/unit/utils/symbol-utils.test.d.ts.map +0 -1
  255. package/dist/tests/unit/utils/symbol-utils.test.js +0 -178
  256. package/dist/tests/unit/utils/symbol-utils.test.js.map +0 -1
  257. package/dist/types/price-aggregation.d.ts +0 -31
  258. package/dist/types/price-aggregation.d.ts.map +0 -1
  259. package/dist/types/price-aggregation.js +0 -6
  260. package/dist/types/price-aggregation.js.map +0 -1
  261. package/dist/utils/crypto.d.ts +0 -15
  262. package/dist/utils/crypto.d.ts.map +0 -1
  263. package/dist/utils/crypto.js +0 -50
  264. package/dist/utils/crypto.js.map +0 -1
  265. package/dist/utils/validation.d.ts +0 -36
  266. package/dist/utils/validation.d.ts.map +0 -1
  267. package/dist/utils/validation.js +0 -174
  268. package/dist/utils/validation.js.map +0 -1
@@ -1,375 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"grid-strategy-e2e.test.js","sourceRoot":"","sources":["../../../../../src/tests/integration/strategies/grid/grid-strategy-e2e.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=exchange-factory.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exchange-factory.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/unit/cli/exchange-factory.test.ts"],"names":[],"mappings":""}
@@ -1,148 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"exchange-factory.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/cli/exchange-factory.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=environment.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"environment.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/unit/config/environment.test.ts"],"names":[],"mappings":""}