@3rd-eye-labs/openmm 0.1.5 → 0.1.7

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 (271) hide show
  1. package/dist/api/index.d.ts +3 -0
  2. package/dist/api/index.d.ts.map +1 -0
  3. package/dist/api/index.js +9 -0
  4. package/dist/api/index.js.map +1 -0
  5. package/dist/api/openapi.d.ts +3 -0
  6. package/dist/api/openapi.d.ts.map +1 -0
  7. package/dist/api/openapi.js +214 -0
  8. package/dist/api/openapi.js.map +1 -0
  9. package/dist/api/routes/balance.d.ts +3 -0
  10. package/dist/api/routes/balance.d.ts.map +1 -0
  11. package/dist/api/routes/balance.js +101 -0
  12. package/dist/api/routes/balance.js.map +1 -0
  13. package/dist/api/routes/cardano.d.ts +3 -0
  14. package/dist/api/routes/cardano.d.ts.map +1 -0
  15. package/dist/api/routes/cardano.js +177 -0
  16. package/dist/api/routes/cardano.js.map +1 -0
  17. package/dist/api/routes/health.d.ts +3 -0
  18. package/dist/api/routes/health.d.ts.map +1 -0
  19. package/dist/api/routes/health.js +115 -0
  20. package/dist/api/routes/health.js.map +1 -0
  21. package/dist/api/routes/index.d.ts +3 -0
  22. package/dist/api/routes/index.d.ts.map +1 -0
  23. package/dist/api/routes/index.js +39 -0
  24. package/dist/api/routes/index.js.map +1 -0
  25. package/dist/api/routes/orderbook.d.ts +3 -0
  26. package/dist/api/routes/orderbook.d.ts.map +1 -0
  27. package/dist/api/routes/orderbook.js +123 -0
  28. package/dist/api/routes/orderbook.js.map +1 -0
  29. package/dist/api/routes/orders.d.ts +3 -0
  30. package/dist/api/routes/orders.d.ts.map +1 -0
  31. package/dist/api/routes/orders.js +214 -0
  32. package/dist/api/routes/orders.js.map +1 -0
  33. package/dist/api/routes/price.d.ts +3 -0
  34. package/dist/api/routes/price.d.ts.map +1 -0
  35. package/dist/api/routes/price.js +124 -0
  36. package/dist/api/routes/price.js.map +1 -0
  37. package/dist/api/routes/strategy.d.ts +3 -0
  38. package/dist/api/routes/strategy.d.ts.map +1 -0
  39. package/dist/api/routes/strategy.js +345 -0
  40. package/dist/api/routes/strategy.js.map +1 -0
  41. package/dist/api/routes/ticker.d.ts +3 -0
  42. package/dist/api/routes/ticker.d.ts.map +1 -0
  43. package/dist/api/routes/ticker.js +91 -0
  44. package/dist/api/routes/ticker.js.map +1 -0
  45. package/dist/api/routes/trades.d.ts +3 -0
  46. package/dist/api/routes/trades.d.ts.map +1 -0
  47. package/dist/api/routes/trades.js +129 -0
  48. package/dist/api/routes/trades.js.map +1 -0
  49. package/dist/api/server.d.ts +11 -0
  50. package/dist/api/server.d.ts.map +1 -0
  51. package/dist/api/server.js +65 -0
  52. package/dist/api/server.js.map +1 -0
  53. package/dist/cli/cli.js +3 -1
  54. package/dist/cli/cli.js.map +1 -1
  55. package/dist/cli/commands/grid.d.ts +3 -0
  56. package/dist/cli/commands/grid.d.ts.map +1 -0
  57. package/dist/cli/commands/grid.js +103 -0
  58. package/dist/cli/commands/grid.js.map +1 -0
  59. package/dist/cli/commands/multi-trade.d.ts +3 -0
  60. package/dist/cli/commands/multi-trade.d.ts.map +1 -0
  61. package/dist/cli/commands/multi-trade.js +175 -0
  62. package/dist/cli/commands/multi-trade.js.map +1 -0
  63. package/dist/cli/commands/serve.d.ts +3 -0
  64. package/dist/cli/commands/serve.d.ts.map +1 -0
  65. package/dist/cli/commands/serve.js +53 -0
  66. package/dist/cli/commands/serve.js.map +1 -0
  67. package/dist/cli/pool-discovery.d.ts +56 -0
  68. package/dist/cli/pool-discovery.d.ts.map +1 -0
  69. package/dist/cli/pool-discovery.js +283 -0
  70. package/dist/cli/pool-discovery.js.map +1 -0
  71. package/dist/config/environment.d.ts +19 -0
  72. package/dist/config/environment.d.ts.map +1 -1
  73. package/dist/config/environment.js +87 -51
  74. package/dist/config/environment.js.map +1 -1
  75. package/dist/core/price-aggregation/price-cache.d.ts +55 -0
  76. package/dist/core/price-aggregation/price-cache.d.ts.map +1 -0
  77. package/dist/core/price-aggregation/price-cache.js +152 -0
  78. package/dist/core/price-aggregation/price-cache.js.map +1 -0
  79. package/dist/examples/mexc-connector-comprehensive-test.d.ts +15 -0
  80. package/dist/examples/mexc-connector-comprehensive-test.d.ts.map +1 -0
  81. package/dist/examples/mexc-connector-comprehensive-test.js +514 -0
  82. package/dist/examples/mexc-connector-comprehensive-test.js.map +1 -0
  83. package/dist/examples/mexc-order-update-test.d.ts +4 -0
  84. package/dist/examples/mexc-order-update-test.d.ts.map +1 -0
  85. package/dist/examples/mexc-order-update-test.js +186 -0
  86. package/dist/examples/mexc-order-update-test.js.map +1 -0
  87. package/dist/examples/mexc-test.d.ts +9 -0
  88. package/dist/examples/mexc-test.d.ts.map +1 -0
  89. package/dist/examples/mexc-test.js +218 -0
  90. package/dist/examples/mexc-test.js.map +1 -0
  91. package/dist/examples/mexc-trades-debug.d.ts +2 -0
  92. package/dist/examples/mexc-trades-debug.d.ts.map +1 -0
  93. package/dist/examples/mexc-trades-debug.js +101 -0
  94. package/dist/examples/mexc-trades-debug.js.map +1 -0
  95. package/dist/examples/mexc-trades-subscription-debug.d.ts +2 -0
  96. package/dist/examples/mexc-trades-subscription-debug.d.ts.map +1 -0
  97. package/dist/examples/mexc-trades-subscription-debug.js +150 -0
  98. package/dist/examples/mexc-trades-subscription-debug.js.map +1 -0
  99. package/dist/examples/mexc-websocket-test.d.ts +8 -0
  100. package/dist/examples/mexc-websocket-test.d.ts.map +1 -0
  101. package/dist/examples/mexc-websocket-test.js +115 -0
  102. package/dist/examples/mexc-websocket-test.js.map +1 -0
  103. package/dist/examples/test-protobuf-status-detection.d.ts +9 -0
  104. package/dist/examples/test-protobuf-status-detection.d.ts.map +1 -0
  105. package/dist/examples/test-protobuf-status-detection.js +83 -0
  106. package/dist/examples/test-protobuf-status-detection.js.map +1 -0
  107. package/dist/exchanges/base-exchange-connector.d.ts +33 -0
  108. package/dist/exchanges/base-exchange-connector.d.ts.map +1 -0
  109. package/dist/exchanges/base-exchange-connector.js +55 -0
  110. package/dist/exchanges/base-exchange-connector.js.map +1 -0
  111. package/dist/exchanges/kraken/test-kraken-websocket.d.ts +19 -0
  112. package/dist/exchanges/kraken/test-kraken-websocket.d.ts.map +1 -0
  113. package/dist/exchanges/kraken/test-kraken-websocket.js +413 -0
  114. package/dist/exchanges/kraken/test-kraken-websocket.js.map +1 -0
  115. package/dist/index.d.ts +1 -0
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +2 -0
  118. package/dist/index.js.map +1 -1
  119. package/dist/mcp/resources/index.d.ts +3 -0
  120. package/dist/mcp/resources/index.d.ts.map +1 -0
  121. package/dist/mcp/resources/index.js +11 -0
  122. package/dist/mcp/resources/index.js.map +1 -0
  123. package/dist/mcp/server.d.ts +4 -0
  124. package/dist/mcp/server.d.ts.map +1 -0
  125. package/dist/mcp/server.js +29 -0
  126. package/dist/mcp/server.js.map +1 -0
  127. package/dist/mcp/tools/index.d.ts +3 -0
  128. package/dist/mcp/tools/index.d.ts.map +1 -0
  129. package/dist/mcp/tools/index.js +12 -0
  130. package/dist/mcp/tools/index.js.map +1 -0
  131. package/dist/tests/fixtures/test-helpers.d.ts +5 -0
  132. package/dist/tests/fixtures/test-helpers.d.ts.map +1 -0
  133. package/dist/tests/fixtures/test-helpers.js +8 -0
  134. package/dist/tests/fixtures/test-helpers.js.map +1 -0
  135. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts +2 -0
  136. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts.map +1 -0
  137. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js +237 -0
  138. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js.map +1 -0
  139. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts +2 -0
  140. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
  141. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js +57 -0
  142. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js.map +1 -0
  143. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts +2 -0
  144. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts.map +1 -0
  145. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js +141 -0
  146. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js.map +1 -0
  147. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts +2 -0
  148. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts.map +1 -0
  149. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js +375 -0
  150. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js.map +1 -0
  151. package/dist/tests/unit/cli/exchange-factory.test.d.ts +2 -0
  152. package/dist/tests/unit/cli/exchange-factory.test.d.ts.map +1 -0
  153. package/dist/tests/unit/cli/exchange-factory.test.js +148 -0
  154. package/dist/tests/unit/cli/exchange-factory.test.js.map +1 -0
  155. package/dist/tests/unit/config/environment.test.d.ts +2 -0
  156. package/dist/tests/unit/config/environment.test.d.ts.map +1 -0
  157. package/dist/tests/unit/config/environment.test.js +158 -0
  158. package/dist/tests/unit/config/environment.test.js.map +1 -0
  159. package/dist/tests/unit/config/launcher-config.test.d.ts +2 -0
  160. package/dist/tests/unit/config/launcher-config.test.d.ts.map +1 -0
  161. package/dist/tests/unit/config/launcher-config.test.js +117 -0
  162. package/dist/tests/unit/config/launcher-config.test.js.map +1 -0
  163. package/dist/tests/unit/config/price-aggregation.test.d.ts +2 -0
  164. package/dist/tests/unit/config/price-aggregation.test.d.ts.map +1 -0
  165. package/dist/tests/unit/config/price-aggregation.test.js +144 -0
  166. package/dist/tests/unit/config/price-aggregation.test.js.map +1 -0
  167. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts +2 -0
  168. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts.map +1 -0
  169. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js +191 -0
  170. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js.map +1 -0
  171. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts +2 -0
  172. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts.map +1 -0
  173. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js +324 -0
  174. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js.map +1 -0
  175. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts +2 -0
  176. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
  177. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js +177 -0
  178. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js.map +1 -0
  179. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts +2 -0
  180. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts.map +1 -0
  181. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js +168 -0
  182. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js.map +1 -0
  183. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts +2 -0
  184. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts.map +1 -0
  185. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js +217 -0
  186. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js.map +1 -0
  187. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts +2 -0
  188. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts.map +1 -0
  189. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js +229 -0
  190. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js.map +1 -0
  191. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts +2 -0
  192. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts.map +1 -0
  193. package/dist/tests/unit/core/risk-management/risk-manager.test.js +194 -0
  194. package/dist/tests/unit/core/risk-management/risk-manager.test.js.map +1 -0
  195. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts +2 -0
  196. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts.map +1 -0
  197. package/dist/tests/unit/core/strategy/base-strategy.test.js +254 -0
  198. package/dist/tests/unit/core/strategy/base-strategy.test.js.map +1 -0
  199. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts +2 -0
  200. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts.map +1 -0
  201. package/dist/tests/unit/core/strategy/strategy-factory.test.js +213 -0
  202. package/dist/tests/unit/core/strategy/strategy-factory.test.js.map +1 -0
  203. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts +2 -0
  204. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts.map +1 -0
  205. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js +452 -0
  206. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js.map +1 -0
  207. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts +2 -0
  208. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts.map +1 -0
  209. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js +1419 -0
  210. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js.map +1 -0
  211. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts +2 -0
  212. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts.map +1 -0
  213. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js +435 -0
  214. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js.map +1 -0
  215. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts +2 -0
  216. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts.map +1 -0
  217. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js +314 -0
  218. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js.map +1 -0
  219. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts +2 -0
  220. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts.map +1 -0
  221. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js +178 -0
  222. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js.map +1 -0
  223. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts +2 -0
  224. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts.map +1 -0
  225. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js +502 -0
  226. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js.map +1 -0
  227. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts +2 -0
  228. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts.map +1 -0
  229. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js +317 -0
  230. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js.map +1 -0
  231. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts +2 -0
  232. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts.map +1 -0
  233. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js +843 -0
  234. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js.map +1 -0
  235. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts +2 -0
  236. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts.map +1 -0
  237. package/dist/tests/unit/strategies/grid/grid-calculator.test.js +67 -0
  238. package/dist/tests/unit/strategies/grid/grid-calculator.test.js.map +1 -0
  239. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts +2 -0
  240. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts.map +1 -0
  241. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js +211 -0
  242. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js.map +1 -0
  243. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts +2 -0
  244. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts.map +1 -0
  245. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js +197 -0
  246. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js.map +1 -0
  247. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts +2 -0
  248. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts.map +1 -0
  249. package/dist/tests/unit/strategies/grid/grid-strategy.test.js +429 -0
  250. package/dist/tests/unit/strategies/grid/grid-strategy.test.js.map +1 -0
  251. package/dist/tests/unit/utils/logger.test.d.ts +2 -0
  252. package/dist/tests/unit/utils/logger.test.d.ts.map +1 -0
  253. package/dist/tests/unit/utils/logger.test.js +260 -0
  254. package/dist/tests/unit/utils/logger.test.js.map +1 -0
  255. package/dist/tests/unit/utils/symbol-utils.test.d.ts +2 -0
  256. package/dist/tests/unit/utils/symbol-utils.test.d.ts.map +1 -0
  257. package/dist/tests/unit/utils/symbol-utils.test.js +178 -0
  258. package/dist/tests/unit/utils/symbol-utils.test.js.map +1 -0
  259. package/dist/types/price-aggregation.d.ts +31 -0
  260. package/dist/types/price-aggregation.d.ts.map +1 -0
  261. package/dist/types/price-aggregation.js +6 -0
  262. package/dist/types/price-aggregation.js.map +1 -0
  263. package/dist/utils/crypto.d.ts +15 -0
  264. package/dist/utils/crypto.d.ts.map +1 -0
  265. package/dist/utils/crypto.js +50 -0
  266. package/dist/utils/crypto.js.map +1 -0
  267. package/dist/utils/validation.d.ts +36 -0
  268. package/dist/utils/validation.d.ts.map +1 -0
  269. package/dist/utils/validation.js +174 -0
  270. package/dist/utils/validation.js.map +1 -0
  271. package/package.json +6 -2
@@ -0,0 +1,514 @@
1
+ "use strict";
2
+ /**
3
+ * MEXC Connector Comprehensive Test Suite
4
+ *
5
+ * Tests every method in MexcConnector to ensure they work as intended.
6
+ * This single test file validates the complete base SDK architecture implementation.
7
+ *
8
+ * Coverage:
9
+ * - Connection Management
10
+ * - REST API Methods (Balance, Orders, Market Data)
11
+ * - WebSocket Methods (Real-time Market Data with Direct Protobuf Processing)
12
+ * - User Data Stream Methods (Real-time Account Updates)
13
+ * - Error Handling and Edge Cases
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ require("dotenv/config");
17
+ const mexc_connector_1 = require("../exchanges/mexc/mexc-connector");
18
+ class MexcConnectorTest {
19
+ constructor() {
20
+ this.testResults = {};
21
+ this.subscriptionIds = [];
22
+ this.mexc = new mexc_connector_1.MexcConnector();
23
+ }
24
+ /**
25
+ * Run all tests in sequence
26
+ */
27
+ async runAllTests() {
28
+ console.log('🎯 MEXC Connector Comprehensive Test Suite');
29
+ console.log('='.repeat(70));
30
+ console.log('Purpose: Validate every method in MexcConnector for production readiness');
31
+ console.log('Scope: Complete base SDK architecture implementation\n');
32
+ try {
33
+ await this.testConnectionManagement();
34
+ await this.testRestAPIBalance();
35
+ await this.testRestAPIMarketData();
36
+ await this.testRestAPIOrders();
37
+ await this.testWebSocketMethods();
38
+ await this.testUserDataStreamMethods();
39
+ await this.testErrorHandling();
40
+ this.printSummary();
41
+ }
42
+ catch (error) {
43
+ console.error('❌ Test suite failed with fatal error:', error);
44
+ }
45
+ }
46
+ /**
47
+ * Test Connection Management methods
48
+ */
49
+ async testConnectionManagement() {
50
+ console.log('🔌 Testing Connection Management\n');
51
+ // Test setCredentials and getCredentials
52
+ this.testMethod('setCredentials', () => {
53
+ const credentials = {
54
+ apiKey: process.env.MEXC_API_KEY || 'test_key',
55
+ secret: process.env.MEXC_SECRET || 'test_secret'
56
+ };
57
+ this.mexc.setCredentials(credentials);
58
+ return true;
59
+ });
60
+ // Test basic getters
61
+ this.testMethod('id getter', () => {
62
+ const result = this.mexc.id === 'mexc';
63
+ console.log(` Exchange ID: ${this.mexc.id}`);
64
+ return result;
65
+ });
66
+ this.testMethod('name getter', () => {
67
+ const result = this.mexc.name === 'MEXC';
68
+ console.log(` Exchange Name: ${this.mexc.name}`);
69
+ return result;
70
+ });
71
+ this.testMethod('isConnected (before connect)', () => {
72
+ const result = this.mexc.isConnected() === false;
73
+ console.log(` Connected Status: ${this.mexc.isConnected()}`);
74
+ return result;
75
+ });
76
+ // Test connect method
77
+ await this.testAsyncMethod('connect', async () => {
78
+ await this.mexc.connect();
79
+ return this.mexc.isConnected();
80
+ });
81
+ this.testMethod('isConnected (after connect)', () => {
82
+ const result = this.mexc.isConnected() === true;
83
+ console.log(` Connected Status: ${this.mexc.isConnected()}`);
84
+ return result;
85
+ });
86
+ console.log();
87
+ }
88
+ /**
89
+ * Test REST API Balance methods
90
+ */
91
+ async testRestAPIBalance() {
92
+ console.log('💰 Testing REST API - Balance Methods\n');
93
+ // Test getBalance() - all balances
94
+ await this.testAsyncMethod('getBalance() - all balances', async () => {
95
+ const balances = await this.mexc.getBalance();
96
+ console.log(` Found ${Object.keys(balances).length} non-zero balances`);
97
+ // Show sample balances
98
+ const sampleAssets = Object.keys(balances).slice(0, 3);
99
+ sampleAssets.forEach(asset => {
100
+ const balance = balances[asset];
101
+ console.log(` ${asset}: Free=${balance.free}, Used=${balance.used}, Total=${balance.total}`);
102
+ });
103
+ return Object.keys(balances).length > 0;
104
+ });
105
+ // Test getBalance(asset) - specific asset
106
+ await this.testAsyncMethod('getBalance("USDT") - specific asset', async () => {
107
+ const balance = await this.mexc.getBalance('USDT');
108
+ console.log(` USDT Balance: Free=${balance.free}, Used=${balance.used}, Total=${balance.total}`);
109
+ return balance.asset === 'USDT' && typeof balance.free === 'number';
110
+ });
111
+ console.log();
112
+ }
113
+ /**
114
+ * Test REST API Market Data methods
115
+ */
116
+ async testRestAPIMarketData() {
117
+ console.log('📊 Testing REST API - Market Data Methods\n');
118
+ // Test getTicker
119
+ await this.testAsyncMethod('getTicker("INDY/USDT")', async () => {
120
+ const ticker = await this.mexc.getTicker('INDY/USDT');
121
+ console.log(` Ticker: Symbol=${ticker.symbol}, Last=${ticker.last}, Bid=${ticker.bid}, Ask=${ticker.ask}`);
122
+ return ticker.symbol === 'INDY/USDT' && ticker.last > 0;
123
+ });
124
+ // Test getOrderBook
125
+ await this.testAsyncMethod('getOrderBook("INDY/USDT")', async () => {
126
+ const orderBook = await this.mexc.getOrderBook('INDY/USDT');
127
+ console.log(` Order Book: Symbol=${orderBook.symbol}, Bids=${orderBook.bids.length}, Asks=${orderBook.asks.length}`);
128
+ if (orderBook.bids.length > 0) {
129
+ console.log(` Best Bid: ${orderBook.bids[0].price} × ${orderBook.bids[0].amount}`);
130
+ }
131
+ if (orderBook.asks.length > 0) {
132
+ console.log(` Best Ask: ${orderBook.asks[0].price} × ${orderBook.asks[0].amount}`);
133
+ }
134
+ return orderBook.symbol === 'INDY/USDT' && orderBook.bids.length > 0 && orderBook.asks.length > 0;
135
+ });
136
+ // Test getRecentTrades
137
+ await this.testAsyncMethod('getRecentTrades("INDY/USDT")', async () => {
138
+ const trades = await this.mexc.getRecentTrades('INDY/USDT');
139
+ console.log(` Recent Trades: ${trades.length} trades retrieved`);
140
+ if (trades.length > 0) {
141
+ const recent = trades[0];
142
+ console.log(` Most Recent: ${recent.side} ${recent.amount} at ${recent.price} (ID: ${recent.id})`);
143
+ }
144
+ return trades.length > 0 && trades[0].symbol === 'INDY/USDT';
145
+ });
146
+ console.log();
147
+ }
148
+ /**
149
+ * Test REST API Order methods
150
+ */
151
+ async testRestAPIOrders() {
152
+ console.log('📋 Testing REST API - Order Methods\n');
153
+ // Test getOpenOrders - all symbols
154
+ await this.testAsyncMethod('getOpenOrders() - all symbols', async () => {
155
+ const orders = await this.mexc.getOpenOrders();
156
+ console.log(` Open Orders (all): ${orders.length} orders`);
157
+ if (orders.length > 0) {
158
+ const sample = orders[0];
159
+ console.log(` Sample Order: ${sample.id} - ${sample.symbol} ${sample.side} ${sample.amount} at ${sample.price}`);
160
+ }
161
+ return Array.isArray(orders);
162
+ });
163
+ // Test getOpenOrders - specific symbol
164
+ await this.testAsyncMethod('getOpenOrders("INDY/USDT") - specific symbol', async () => {
165
+ const orders = await this.mexc.getOpenOrders('INDY/USDT');
166
+ console.log(` Open Orders (INDY/USDT): ${orders.length} orders`);
167
+ orders.slice(0, 3).forEach((order, index) => {
168
+ console.log(` Order ${index + 1}: ${order.side} ${order.amount} at ${order.price} (${order.status})`);
169
+ });
170
+ return Array.isArray(orders);
171
+ });
172
+ // Test createOrder - limit order (small amount)
173
+ let testOrderId;
174
+ await this.testAsyncMethod('createOrder() - limit buy order', async () => {
175
+ const ticker = await this.mexc.getTicker('INDY/USDT');
176
+ const bidPrice = ticker.bid * 0.99; // 1% below current bid
177
+ const amount = Math.ceil(1.5 / bidPrice); // Ensure order value is > 1 USDT
178
+ const order = await this.mexc.createOrder('INDY/USDT', 'limit', 'buy', amount, bidPrice);
179
+ testOrderId = order.id;
180
+ console.log(` Created Order: ID=${order.id}, Side=${order.side}, Amount=${order.amount}, Price=${order.price}`);
181
+ console.log(` Status: ${order.status}, Symbol: ${order.symbol}`);
182
+ return !!(order.id && order.symbol === 'INDY/USDT' && order.side === 'buy');
183
+ });
184
+ // Test getOrder - specific order
185
+ if (testOrderId) {
186
+ await this.testAsyncMethod('getOrder() - specific order', async () => {
187
+ const order = await this.mexc.getOrder(testOrderId, 'INDY/USDT');
188
+ console.log(` Retrieved Order: ID=${order.id}, Status=${order.status}, Filled=${order.filled || 0}/${order.amount}`);
189
+ return order.id === testOrderId;
190
+ });
191
+ // Test cancelOrder
192
+ await this.testAsyncMethod('cancelOrder() - cancel test order', async () => {
193
+ await this.mexc.cancelOrder(testOrderId, 'INDY/USDT');
194
+ console.log(` Cancelled Order: ${testOrderId}`);
195
+ return true;
196
+ });
197
+ }
198
+ else {
199
+ this.testResults['getOrder() - specific order'] = 'SKIP';
200
+ this.testResults['cancelOrder() - cancel test order'] = 'SKIP';
201
+ console.log(' ⏭️ SKIPPED: getOrder() and cancelOrder() - no test order created');
202
+ }
203
+ console.log();
204
+ }
205
+ /**
206
+ * Test WebSocket methods
207
+ */
208
+ async testWebSocketMethods() {
209
+ console.log('🌐 Testing WebSocket Methods\n');
210
+ // Test WebSocket status before connection
211
+ this.testMethod('getWebSocketStatus (before connect)', () => {
212
+ const status = this.mexc.getWebSocketStatus();
213
+ console.log(` WebSocket Status: ${status}`);
214
+ return status === 'disconnected';
215
+ });
216
+ this.testMethod('isWebSocketConnected (before connect)', () => {
217
+ const connected = this.mexc.isWebSocketConnected();
218
+ console.log(` WebSocket Connected: ${connected}`);
219
+ return connected === false;
220
+ });
221
+ // Test connectWebSocket
222
+ await this.testAsyncMethod('connectWebSocket()', async () => {
223
+ await this.mexc.connectWebSocket();
224
+ // Give it a moment to establish connection
225
+ await new Promise(resolve => setTimeout(resolve, 1000));
226
+ return this.mexc.isWebSocketConnected();
227
+ });
228
+ // Test WebSocket status after connection
229
+ this.testMethod('getWebSocketStatus (after connect)', () => {
230
+ const status = this.mexc.getWebSocketStatus();
231
+ console.log(` WebSocket Status: ${status}`);
232
+ return status === 'connected';
233
+ });
234
+ this.testMethod('isWebSocketConnected (after connect)', () => {
235
+ const connected = this.mexc.isWebSocketConnected();
236
+ console.log(` WebSocket Connected: ${connected}`);
237
+ return connected;
238
+ });
239
+ // Test subscribeTicker
240
+ await this.testAsyncMethod('subscribeTicker("INDY/USDT")', async () => {
241
+ let tickerReceived = false;
242
+ const subscriptionId = await this.mexc.subscribeTicker('INDY/USDT', (ticker) => {
243
+ if (!tickerReceived) {
244
+ console.log(` 📊 Ticker Update: ${ticker.symbol} Last=${ticker.last}, Bid=${ticker.bid}, Ask=${ticker.ask}`);
245
+ tickerReceived = true;
246
+ }
247
+ });
248
+ this.subscriptionIds.push(subscriptionId);
249
+ console.log(` Subscription ID: ${subscriptionId}`);
250
+ // Wait for at least one ticker update - direct implementation is faster
251
+ await this.waitForCondition(() => tickerReceived, 10000, 'ticker update');
252
+ return tickerReceived;
253
+ });
254
+ // Test subscribeOrderBook
255
+ await this.testAsyncMethod('subscribeOrderBook("INDY/USDT")', async () => {
256
+ let orderBookReceived = false;
257
+ const subscriptionId = await this.mexc.subscribeOrderBook('INDY/USDT', (orderBook) => {
258
+ if (!orderBookReceived) {
259
+ console.log(` 📈 Order Book Update: ${orderBook.symbol} Bids=${orderBook.bids.length}, Asks=${orderBook.asks.length}`);
260
+ if (orderBook.bids.length > 0 && orderBook.asks.length > 0) {
261
+ console.log(` Best: ${orderBook.bids[0].price} × ${orderBook.bids[0].amount} / ${orderBook.asks[0].price} × ${orderBook.asks[0].amount}`);
262
+ }
263
+ orderBookReceived = true;
264
+ }
265
+ });
266
+ this.subscriptionIds.push(subscriptionId);
267
+ console.log(` Subscription ID: ${subscriptionId}`);
268
+ // Wait for at least one order book update
269
+ await this.waitForCondition(() => orderBookReceived, 30000, 'order book update');
270
+ return orderBookReceived;
271
+ });
272
+ // Test subscribeTrades with extended timeout and fallback
273
+ await this.testAsyncMethod('subscribeTrades("INDY/USDT")', async () => {
274
+ let tradeReceived = false;
275
+ let tradeSymbol = 'INDY/USDT';
276
+ // First attempt with INDY/USDT and longer timeout (60s)
277
+ let subscriptionId = await this.mexc.subscribeTrades(tradeSymbol, (trade) => {
278
+ if (!tradeReceived) {
279
+ console.log(` 💱 Trade Update: ${trade.symbol} ${trade.side} ${trade.amount} at ${trade.price} (ID: ${trade.id})`);
280
+ tradeReceived = true;
281
+ }
282
+ });
283
+ this.subscriptionIds.push(subscriptionId);
284
+ console.log(` Subscription ID: ${subscriptionId}`);
285
+ // Wait for trade update with extended 60-second timeout for low-volume pairs
286
+ console.log(` ⏰ Waiting up to 60 seconds for trade (${tradeSymbol} has low trading volume)...`);
287
+ try {
288
+ await this.waitForCondition(() => tradeReceived, 60000, 'trade update');
289
+ return tradeReceived;
290
+ }
291
+ catch (timeoutError) {
292
+ console.log(` ⚠️ INDY/USDT timeout after 60s, trying BTCUSDT (higher volume)...`);
293
+ // Unsubscribe from INDY/USDT
294
+ await this.mexc.unsubscribe(subscriptionId);
295
+ // Try with BTCUSDT (much higher trading volume)
296
+ tradeSymbol = 'BTC/USDT';
297
+ tradeReceived = false;
298
+ subscriptionId = await this.mexc.subscribeTrades(tradeSymbol, (trade) => {
299
+ if (!tradeReceived) {
300
+ console.log(` 💱 Trade Update: ${trade.symbol} ${trade.side} ${trade.amount} at ${trade.price} (ID: ${trade.id})`);
301
+ tradeReceived = true;
302
+ }
303
+ });
304
+ // Update subscription list
305
+ this.subscriptionIds[this.subscriptionIds.length - 1] = subscriptionId;
306
+ console.log(` 📊 Fallback Subscription ID: ${subscriptionId}`);
307
+ // Wait for trade with shorter timeout (BTCUSDT should have frequent trades)
308
+ await this.waitForCondition(() => tradeReceived, 15000, 'trade update (BTC/USDT)');
309
+ return tradeReceived;
310
+ }
311
+ });
312
+ console.log();
313
+ }
314
+ /**
315
+ * Test User Data Stream methods
316
+ */
317
+ async testUserDataStreamMethods() {
318
+ console.log('👤 Testing User Data Stream Methods\n');
319
+ // Test User Data Stream status before connection
320
+ this.testMethod('isUserDataStreamConnected (before connect)', () => {
321
+ const connected = this.mexc.isUserDataStreamConnected();
322
+ console.log(` User Data Stream Connected: ${connected}`);
323
+ return connected === false;
324
+ });
325
+ // Test connectUserDataStream
326
+ await this.testAsyncMethod('connectUserDataStream()', async () => {
327
+ await this.mexc.connectUserDataStream();
328
+ // Give it a moment to establish connection
329
+ await new Promise(resolve => setTimeout(resolve, 2000));
330
+ return this.mexc.isUserDataStreamConnected();
331
+ });
332
+ // Test User Data Stream status after connection
333
+ this.testMethod('isUserDataStreamConnected (after connect)', () => {
334
+ const connected = this.mexc.isUserDataStreamConnected();
335
+ console.log(` User Data Stream Connected: ${connected}`);
336
+ return connected === true;
337
+ });
338
+ // Test subscribeUserOrders
339
+ await this.testAsyncMethod('subscribeUserOrders()', async () => {
340
+ let orderReceived = false;
341
+ const subscriptionId = await this.mexc.subscribeUserOrders((order) => {
342
+ if (!orderReceived) {
343
+ console.log(` 📋 User Order Update: ${order.id} - ${order.symbol} ${order.side} ${order.amount} at ${order.price} (${order.status})`);
344
+ orderReceived = true;
345
+ }
346
+ });
347
+ this.subscriptionIds.push(subscriptionId);
348
+ console.log(` Subscription ID: ${subscriptionId}`);
349
+ // Wait a bit for order updates (may not receive any if no trading activity)
350
+ await new Promise(resolve => setTimeout(resolve, 5000));
351
+ return true; // Success if no errors
352
+ });
353
+ // Test subscribeUserTrades
354
+ await this.testAsyncMethod('subscribeUserTrades()', async () => {
355
+ let tradeReceived = false;
356
+ const subscriptionId = await this.mexc.subscribeUserTrades((trade) => {
357
+ if (!tradeReceived) {
358
+ console.log(` 🎯 User Trade Execution: ${trade.id} - ${trade.symbol} ${trade.side} ${trade.amount} at ${trade.price}`);
359
+ tradeReceived = true;
360
+ }
361
+ });
362
+ this.subscriptionIds.push(subscriptionId);
363
+ console.log(` Subscription ID: ${subscriptionId}`);
364
+ // Wait a bit for trade executions (may not receive any if no trading activity)
365
+ await new Promise(resolve => setTimeout(resolve, 5000));
366
+ return true; // Success if no errors
367
+ });
368
+ console.log();
369
+ }
370
+ /**
371
+ * Test Error Handling
372
+ */
373
+ async testErrorHandling() {
374
+ console.log('🛡️ Testing Error Handling\n');
375
+ // Test invalid symbol
376
+ await this.testAsyncMethod('getTicker("INVALID/SYMBOL") - error handling', async () => {
377
+ try {
378
+ await this.mexc.getTicker('INVALID/SYMBOL');
379
+ return false; // Should have thrown an error
380
+ }
381
+ catch (error) {
382
+ console.log(` ✅ Correctly handled invalid symbol error: ${error instanceof Error ? error.message : 'Unknown error'}`);
383
+ return true;
384
+ }
385
+ });
386
+ console.log();
387
+ }
388
+ /**
389
+ * Test cleanup and disconnect
390
+ */
391
+ async testCleanup() {
392
+ console.log('🧹 Testing Cleanup and Disconnect\n');
393
+ // Test unsubscribe for all subscriptions
394
+ for (const subscriptionId of this.subscriptionIds) {
395
+ await this.testAsyncMethod(`unsubscribe(${subscriptionId.substring(0, 20)}...)`, async () => {
396
+ await this.mexc.unsubscribe(subscriptionId);
397
+ return true;
398
+ });
399
+ }
400
+ // Test disconnectWebSocket
401
+ await this.testAsyncMethod('disconnectWebSocket()', async () => {
402
+ await this.mexc.disconnectWebSocket();
403
+ await new Promise(resolve => setTimeout(resolve, 1000));
404
+ return !this.mexc.isWebSocketConnected();
405
+ });
406
+ // Test disconnectUserDataStream
407
+ await this.testAsyncMethod('disconnectUserDataStream()', async () => {
408
+ await this.mexc.disconnectUserDataStream();
409
+ await new Promise(resolve => setTimeout(resolve, 1000));
410
+ return !this.mexc.isUserDataStreamConnected();
411
+ });
412
+ // Test disconnect
413
+ await this.testAsyncMethod('disconnect()', async () => {
414
+ await this.mexc.disconnect();
415
+ return !this.mexc.isConnected();
416
+ });
417
+ console.log();
418
+ }
419
+ /**
420
+ * Helper method to test synchronous methods
421
+ */
422
+ testMethod(methodName, testFn) {
423
+ try {
424
+ const result = testFn();
425
+ this.testResults[methodName] = result ? 'PASS' : 'FAIL';
426
+ console.log(` ${result ? '✅' : '❌'} ${methodName}: ${result ? 'PASS' : 'FAIL'}`);
427
+ }
428
+ catch (error) {
429
+ this.testResults[methodName] = 'FAIL';
430
+ console.log(` ❌ ${methodName}: FAIL - ${error instanceof Error ? error.message : 'Unknown error'}`);
431
+ }
432
+ }
433
+ /**
434
+ * Helper method to test asynchronous methods
435
+ */
436
+ async testAsyncMethod(methodName, testFn) {
437
+ try {
438
+ const result = await testFn();
439
+ this.testResults[methodName] = result ? 'PASS' : 'FAIL';
440
+ console.log(` ${result ? '✅' : '❌'} ${methodName}: ${result ? 'PASS' : 'FAIL'}`);
441
+ }
442
+ catch (error) {
443
+ this.testResults[methodName] = 'FAIL';
444
+ console.log(` ❌ ${methodName}: FAIL - ${error instanceof Error ? error.message : 'Unknown error'}`);
445
+ }
446
+ }
447
+ /**
448
+ * Helper method to wait for a condition
449
+ */
450
+ async waitForCondition(condition, timeout, description) {
451
+ const start = Date.now();
452
+ while (Date.now() - start < timeout) {
453
+ if (condition()) {
454
+ return true;
455
+ }
456
+ await new Promise(resolve => setTimeout(resolve, 100));
457
+ }
458
+ console.log(` ⚠️ Timeout waiting for ${description}`);
459
+ return false;
460
+ }
461
+ /**
462
+ * Print test summary
463
+ */
464
+ printSummary() {
465
+ const results = Object.values(this.testResults);
466
+ const passed = results.filter(r => r === 'PASS').length;
467
+ const failed = results.filter(r => r === 'FAIL').length;
468
+ const skipped = results.filter(r => r === 'SKIP').length;
469
+ const total = results.length;
470
+ console.log('='.repeat(70));
471
+ console.log('📊 TEST SUMMARY');
472
+ console.log('='.repeat(70));
473
+ console.log(`✅ PASSED: ${passed}/${total} tests`);
474
+ console.log(`❌ FAILED: ${failed}/${total} tests`);
475
+ console.log(`⏭️ SKIPPED: ${skipped}/${total} tests`);
476
+ console.log(`📈 SUCCESS RATE: ${((passed / (total - skipped)) * 100).toFixed(1)}%`);
477
+ if (failed > 0) {
478
+ console.log('\n❌ FAILED TESTS:');
479
+ Object.entries(this.testResults)
480
+ .filter(([_, result]) => result === 'FAIL')
481
+ .forEach(([method, _]) => console.log(` - ${method}`));
482
+ }
483
+ if (skipped > 0) {
484
+ console.log('\n⏭️ SKIPPED TESTS:');
485
+ Object.entries(this.testResults)
486
+ .filter(([_, result]) => result === 'SKIP')
487
+ .forEach(([method, _]) => console.log(` - ${method}`));
488
+ }
489
+ console.log('\n🏗️ BASE SDK ARCHITECTURE STATUS:');
490
+ const coreMethodsPassed = [
491
+ 'connect', 'getBalance() - all balances', 'getTicker("INDY/USDT")',
492
+ 'connectWebSocket()', 'connectUserDataStream()', 'disconnect()'
493
+ ].every(method => this.testResults[method] === 'PASS');
494
+ console.log(` ${coreMethodsPassed ? '✅' : '❌'} Core Methods: ${coreMethodsPassed ? 'ALL WORKING' : 'ISSUES DETECTED'}`);
495
+ console.log(` ${passed >= total * 0.8 ? '✅' : '❌'} Overall Health: ${passed >= total * 0.8 ? 'PRODUCTION READY' : 'NEEDS ATTENTION'}`);
496
+ console.log('\n🎯 MEXC CONNECTOR COMPREHENSIVE TEST COMPLETED');
497
+ }
498
+ }
499
+ /**
500
+ * Run the comprehensive test
501
+ */
502
+ async function runComprehensiveTest() {
503
+ const test = new MexcConnectorTest();
504
+ try {
505
+ await test.runAllTests();
506
+ await test.testCleanup();
507
+ }
508
+ catch (error) {
509
+ console.error('Fatal test error:', error);
510
+ }
511
+ }
512
+ // Run the test
513
+ runComprehensiveTest();
514
+ //# sourceMappingURL=mexc-connector-comprehensive-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mexc-connector-comprehensive-test.js","sourceRoot":"","sources":["../../src/examples/mexc-connector-comprehensive-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import 'dotenv/config';
2
+ declare function testMexcOrderUpdates(): Promise<void>;
3
+ export { testMexcOrderUpdates };
4
+ //# sourceMappingURL=mexc-order-update-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mexc-order-update-test.d.ts","sourceRoot":"","sources":["../../src/examples/mexc-order-update-test.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAevB,iBAAe,oBAAoB,kBAuMlC;AAQD,OAAO,EAAE,oBAAoB,EAAE,CAAC"}