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

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 (443) hide show
  1. package/README.md +6 -1
  2. package/dist/cli/cli.js +4 -5
  3. package/dist/cli/cli.js.map +1 -1
  4. package/dist/cli/commands/balance.d.ts.map +1 -1
  5. package/dist/cli/commands/balance.js +1 -1
  6. package/dist/cli/commands/balance.js.map +1 -1
  7. package/dist/cli/commands/grid.d.ts +3 -0
  8. package/dist/cli/commands/grid.d.ts.map +1 -0
  9. package/dist/cli/commands/grid.js +103 -0
  10. package/dist/cli/commands/grid.js.map +1 -0
  11. package/dist/cli/commands/multi-trade.d.ts +3 -0
  12. package/dist/cli/commands/multi-trade.d.ts.map +1 -0
  13. package/dist/cli/commands/multi-trade.js +175 -0
  14. package/dist/cli/commands/multi-trade.js.map +1 -0
  15. package/dist/cli/commands/orderbook.js +1 -1
  16. package/dist/cli/commands/orderbook.js.map +1 -1
  17. package/dist/cli/commands/orders.d.ts.map +1 -1
  18. package/dist/cli/commands/orders.js +3 -4
  19. package/dist/cli/commands/orders.js.map +1 -1
  20. package/dist/cli/commands/pool-discovery.d.ts.map +1 -1
  21. package/dist/cli/commands/pool-discovery.js +15 -8
  22. package/dist/cli/commands/pool-discovery.js.map +1 -1
  23. package/dist/cli/commands/price-comparison.d.ts +3 -0
  24. package/dist/cli/commands/price-comparison.d.ts.map +1 -0
  25. package/dist/cli/commands/price-comparison.js +103 -0
  26. package/dist/cli/commands/price-comparison.js.map +1 -0
  27. package/dist/cli/commands/ticker.d.ts.map +1 -1
  28. package/dist/cli/commands/ticker.js.map +1 -1
  29. package/dist/cli/commands/trade.d.ts.map +1 -1
  30. package/dist/cli/commands/trade.js +135 -18
  31. package/dist/cli/commands/trade.js.map +1 -1
  32. package/dist/cli/commands/trades.d.ts.map +1 -1
  33. package/dist/cli/commands/trades.js +2 -3
  34. package/dist/cli/commands/trades.js.map +1 -1
  35. package/dist/cli/exchange-factory.d.ts.map +1 -1
  36. package/dist/cli/exchange-factory.js +6 -6
  37. package/dist/cli/exchange-factory.js.map +1 -1
  38. package/dist/cli/pool-discovery-core.d.ts +2 -1
  39. package/dist/cli/pool-discovery-core.d.ts.map +1 -1
  40. package/dist/cli/pool-discovery-core.js +69 -39
  41. package/dist/cli/pool-discovery-core.js.map +1 -1
  42. package/dist/cli/pool-discovery.d.ts +56 -0
  43. package/dist/cli/pool-discovery.d.ts.map +1 -0
  44. package/dist/cli/pool-discovery.js +283 -0
  45. package/dist/cli/pool-discovery.js.map +1 -0
  46. package/dist/cli/utils/error-handler.d.ts.map +1 -1
  47. package/dist/cli/utils/error-handler.js +6 -5
  48. package/dist/cli/utils/error-handler.js.map +1 -1
  49. package/dist/config/environment.d.ts.map +1 -1
  50. package/dist/config/environment.js +3 -1
  51. package/dist/config/environment.js.map +1 -1
  52. package/dist/config/launcher-config.d.ts +13 -0
  53. package/dist/config/launcher-config.d.ts.map +1 -1
  54. package/dist/config/launcher-config.js +3 -1
  55. package/dist/config/launcher-config.js.map +1 -1
  56. package/dist/config/price-aggregation.d.ts +1 -1
  57. package/dist/config/price-aggregation.d.ts.map +1 -1
  58. package/dist/config/price-aggregation.js +20 -20
  59. package/dist/config/price-aggregation.js.map +1 -1
  60. package/dist/core/exchange/base-exchange-connector.d.ts.map +1 -1
  61. package/dist/core/exchange/base-exchange-connector.js +1 -5
  62. package/dist/core/exchange/base-exchange-connector.js.map +1 -1
  63. package/dist/core/exchange/base-exchange-data-mapper.d.ts.map +1 -1
  64. package/dist/core/exchange/base-exchange-data-mapper.js +1 -1
  65. package/dist/core/exchange/base-exchange-data-mapper.js.map +1 -1
  66. package/dist/core/price-aggregation/cardano-price-service.d.ts +2 -2
  67. package/dist/core/price-aggregation/cardano-price-service.d.ts.map +1 -1
  68. package/dist/core/price-aggregation/cardano-price-service.js +13 -13
  69. package/dist/core/price-aggregation/cardano-price-service.js.map +1 -1
  70. package/dist/core/price-aggregation/index.d.ts +1 -1
  71. package/dist/core/price-aggregation/index.d.ts.map +1 -1
  72. package/dist/core/price-aggregation/iris-api-client.d.ts.map +1 -1
  73. package/dist/core/price-aggregation/iris-api-client.js +5 -5
  74. package/dist/core/price-aggregation/iris-api-client.js.map +1 -1
  75. package/dist/core/price-aggregation/iris-pool-discovery.d.ts +2 -2
  76. package/dist/core/price-aggregation/iris-pool-discovery.d.ts.map +1 -1
  77. package/dist/core/price-aggregation/iris-pool-discovery.js +3 -3
  78. package/dist/core/price-aggregation/iris-pool-discovery.js.map +1 -1
  79. package/dist/core/price-aggregation/multi-exchange-price-service.d.ts +38 -0
  80. package/dist/core/price-aggregation/multi-exchange-price-service.d.ts.map +1 -0
  81. package/dist/core/price-aggregation/multi-exchange-price-service.js +123 -0
  82. package/dist/core/price-aggregation/multi-exchange-price-service.js.map +1 -0
  83. package/dist/core/price-aggregation/price-cache.d.ts +55 -0
  84. package/dist/core/price-aggregation/price-cache.d.ts.map +1 -0
  85. package/dist/core/price-aggregation/price-cache.js +152 -0
  86. package/dist/core/price-aggregation/price-cache.js.map +1 -0
  87. package/dist/core/price-aggregation/price-calculator.d.ts.map +1 -1
  88. package/dist/core/price-aggregation/price-calculator.js +3 -3
  89. package/dist/core/price-aggregation/price-calculator.js.map +1 -1
  90. package/dist/core/risk-management/risk-manager.d.ts.map +1 -1
  91. package/dist/core/risk-management/risk-manager.js +2 -2
  92. package/dist/core/risk-management/risk-manager.js.map +1 -1
  93. package/dist/core/strategy/strategy-factory.d.ts +5 -0
  94. package/dist/core/strategy/strategy-factory.d.ts.map +1 -1
  95. package/dist/core/strategy/strategy-factory.js +127 -5
  96. package/dist/core/strategy/strategy-factory.js.map +1 -1
  97. package/dist/examples/mexc-connector-comprehensive-test.d.ts +15 -0
  98. package/dist/examples/mexc-connector-comprehensive-test.d.ts.map +1 -0
  99. package/dist/examples/mexc-connector-comprehensive-test.js +514 -0
  100. package/dist/examples/mexc-connector-comprehensive-test.js.map +1 -0
  101. package/dist/examples/mexc-order-update-test.d.ts +4 -0
  102. package/dist/examples/mexc-order-update-test.d.ts.map +1 -0
  103. package/dist/examples/mexc-order-update-test.js +186 -0
  104. package/dist/examples/mexc-order-update-test.js.map +1 -0
  105. package/dist/examples/mexc-test.d.ts +9 -0
  106. package/dist/examples/mexc-test.d.ts.map +1 -0
  107. package/dist/examples/mexc-test.js +218 -0
  108. package/dist/examples/mexc-test.js.map +1 -0
  109. package/dist/examples/mexc-trades-debug.d.ts +2 -0
  110. package/dist/examples/mexc-trades-debug.d.ts.map +1 -0
  111. package/dist/examples/mexc-trades-debug.js +101 -0
  112. package/dist/examples/mexc-trades-debug.js.map +1 -0
  113. package/dist/examples/mexc-trades-subscription-debug.d.ts +2 -0
  114. package/dist/examples/mexc-trades-subscription-debug.d.ts.map +1 -0
  115. package/dist/examples/mexc-trades-subscription-debug.js +150 -0
  116. package/dist/examples/mexc-trades-subscription-debug.js.map +1 -0
  117. package/dist/examples/mexc-websocket-test.d.ts +8 -0
  118. package/dist/examples/mexc-websocket-test.d.ts.map +1 -0
  119. package/dist/examples/mexc-websocket-test.js +115 -0
  120. package/dist/examples/mexc-websocket-test.js.map +1 -0
  121. package/dist/examples/test-protobuf-status-detection.d.ts +9 -0
  122. package/dist/examples/test-protobuf-status-detection.d.ts.map +1 -0
  123. package/dist/examples/test-protobuf-status-detection.js +83 -0
  124. package/dist/examples/test-protobuf-status-detection.js.map +1 -0
  125. package/dist/exchanges/base-exchange-connector.d.ts +33 -0
  126. package/dist/exchanges/base-exchange-connector.d.ts.map +1 -0
  127. package/dist/exchanges/base-exchange-connector.js +55 -0
  128. package/dist/exchanges/base-exchange-connector.js.map +1 -0
  129. package/dist/exchanges/bitget/bitget-auth.d.ts +66 -0
  130. package/dist/exchanges/bitget/bitget-auth.d.ts.map +1 -0
  131. package/dist/exchanges/bitget/bitget-auth.js +203 -0
  132. package/dist/exchanges/bitget/bitget-auth.js.map +1 -0
  133. package/dist/exchanges/bitget/bitget-connector.d.ts +255 -0
  134. package/dist/exchanges/bitget/bitget-connector.d.ts.map +1 -0
  135. package/dist/exchanges/bitget/bitget-connector.js +709 -0
  136. package/dist/exchanges/bitget/bitget-connector.js.map +1 -0
  137. package/dist/exchanges/bitget/bitget-data-mapper.d.ts +47 -0
  138. package/dist/exchanges/bitget/bitget-data-mapper.d.ts.map +1 -0
  139. package/dist/exchanges/bitget/bitget-data-mapper.js +147 -0
  140. package/dist/exchanges/bitget/bitget-data-mapper.js.map +1 -0
  141. package/dist/exchanges/bitget/bitget-user-stream.d.ts +126 -0
  142. package/dist/exchanges/bitget/bitget-user-stream.d.ts.map +1 -0
  143. package/dist/exchanges/bitget/bitget-user-stream.js +474 -0
  144. package/dist/exchanges/bitget/bitget-user-stream.js.map +1 -0
  145. package/dist/exchanges/bitget/bitget-utils.d.ts +17 -0
  146. package/dist/exchanges/bitget/bitget-utils.d.ts.map +1 -0
  147. package/dist/exchanges/bitget/bitget-utils.js +60 -0
  148. package/dist/exchanges/bitget/bitget-utils.js.map +1 -0
  149. package/dist/exchanges/bitget/bitget-websocket.d.ts +124 -0
  150. package/dist/exchanges/bitget/bitget-websocket.d.ts.map +1 -0
  151. package/dist/exchanges/bitget/bitget-websocket.js +434 -0
  152. package/dist/exchanges/bitget/bitget-websocket.js.map +1 -0
  153. package/dist/exchanges/gateio/gateio-auth.d.ts +69 -0
  154. package/dist/exchanges/gateio/gateio-auth.d.ts.map +1 -0
  155. package/dist/exchanges/gateio/gateio-auth.js +205 -0
  156. package/dist/exchanges/gateio/gateio-auth.js.map +1 -0
  157. package/dist/exchanges/gateio/gateio-connector.d.ts +182 -0
  158. package/dist/exchanges/gateio/gateio-connector.d.ts.map +1 -0
  159. package/dist/exchanges/gateio/gateio-connector.js +605 -0
  160. package/dist/exchanges/gateio/gateio-connector.js.map +1 -0
  161. package/dist/exchanges/gateio/gateio-data-mapper.d.ts +57 -0
  162. package/dist/exchanges/gateio/gateio-data-mapper.d.ts.map +1 -0
  163. package/dist/exchanges/gateio/gateio-data-mapper.js +184 -0
  164. package/dist/exchanges/gateio/gateio-data-mapper.js.map +1 -0
  165. package/dist/exchanges/gateio/gateio-user-stream.d.ts +120 -0
  166. package/dist/exchanges/gateio/gateio-user-stream.d.ts.map +1 -0
  167. package/dist/exchanges/gateio/gateio-user-stream.js +384 -0
  168. package/dist/exchanges/gateio/gateio-user-stream.js.map +1 -0
  169. package/dist/exchanges/gateio/gateio-utils.d.ts +45 -0
  170. package/dist/exchanges/gateio/gateio-utils.d.ts.map +1 -0
  171. package/dist/exchanges/gateio/gateio-utils.js +138 -0
  172. package/dist/exchanges/gateio/gateio-utils.js.map +1 -0
  173. package/dist/exchanges/gateio/gateio-websocket.d.ts +145 -0
  174. package/dist/exchanges/gateio/gateio-websocket.d.ts.map +1 -0
  175. package/dist/exchanges/gateio/gateio-websocket.js +469 -0
  176. package/dist/exchanges/gateio/gateio-websocket.js.map +1 -0
  177. package/dist/exchanges/kraken/kraken-auth.d.ts +12 -0
  178. package/dist/exchanges/kraken/kraken-auth.d.ts.map +1 -0
  179. package/dist/exchanges/kraken/kraken-auth.js +68 -0
  180. package/dist/exchanges/kraken/kraken-auth.js.map +1 -0
  181. package/dist/exchanges/kraken/kraken-connector.d.ts +38 -0
  182. package/dist/exchanges/kraken/kraken-connector.d.ts.map +1 -0
  183. package/dist/exchanges/kraken/kraken-connector.js +355 -0
  184. package/dist/exchanges/kraken/kraken-connector.js.map +1 -0
  185. package/dist/exchanges/kraken/kraken-data-mapper.d.ts +14 -0
  186. package/dist/exchanges/kraken/kraken-data-mapper.d.ts.map +1 -0
  187. package/dist/exchanges/kraken/kraken-data-mapper.js +169 -0
  188. package/dist/exchanges/kraken/kraken-data-mapper.js.map +1 -0
  189. package/dist/exchanges/kraken/kraken-utils.d.ts +52 -0
  190. package/dist/exchanges/kraken/kraken-utils.d.ts.map +1 -0
  191. package/dist/exchanges/kraken/kraken-utils.js +206 -0
  192. package/dist/exchanges/kraken/kraken-utils.js.map +1 -0
  193. package/dist/exchanges/kraken/kraken-websocket.d.ts +64 -0
  194. package/dist/exchanges/kraken/kraken-websocket.d.ts.map +1 -0
  195. package/dist/exchanges/kraken/kraken-websocket.js +667 -0
  196. package/dist/exchanges/kraken/kraken-websocket.js.map +1 -0
  197. package/dist/exchanges/kraken/test-kraken-websocket.d.ts +19 -0
  198. package/dist/exchanges/kraken/test-kraken-websocket.d.ts.map +1 -0
  199. package/dist/exchanges/kraken/test-kraken-websocket.js +413 -0
  200. package/dist/exchanges/kraken/test-kraken-websocket.js.map +1 -0
  201. package/dist/exchanges/mexc/mexc-auth.d.ts.map +1 -1
  202. package/dist/exchanges/mexc/mexc-auth.js +5 -5
  203. package/dist/exchanges/mexc/mexc-auth.js.map +1 -1
  204. package/dist/exchanges/mexc/mexc-connector.d.ts.map +1 -1
  205. package/dist/exchanges/mexc/mexc-connector.js +12 -13
  206. package/dist/exchanges/mexc/mexc-connector.js.map +1 -1
  207. package/dist/exchanges/mexc/mexc-data-mapper.d.ts.map +1 -1
  208. package/dist/exchanges/mexc/mexc-data-mapper.js +6 -6
  209. package/dist/exchanges/mexc/mexc-data-mapper.js.map +1 -1
  210. package/dist/exchanges/mexc/mexc-protobuf-decoder.d.ts.map +1 -1
  211. package/dist/exchanges/mexc/mexc-protobuf-decoder.js +14 -13
  212. package/dist/exchanges/mexc/mexc-protobuf-decoder.js.map +1 -1
  213. package/dist/exchanges/mexc/mexc-user-stream.d.ts.map +1 -1
  214. package/dist/exchanges/mexc/mexc-user-stream.js +5 -5
  215. package/dist/exchanges/mexc/mexc-user-stream.js.map +1 -1
  216. package/dist/exchanges/mexc/mexc-utils.d.ts +1 -5
  217. package/dist/exchanges/mexc/mexc-utils.d.ts.map +1 -1
  218. package/dist/exchanges/mexc/mexc-utils.js +33 -39
  219. package/dist/exchanges/mexc/mexc-utils.js.map +1 -1
  220. package/dist/exchanges/mexc/mexc-websocket.d.ts.map +1 -1
  221. package/dist/exchanges/mexc/mexc-websocket.js +45 -31
  222. package/dist/exchanges/mexc/mexc-websocket.js.map +1 -1
  223. package/dist/index.d.ts +4 -0
  224. package/dist/index.d.ts.map +1 -1
  225. package/dist/index.js +10 -1
  226. package/dist/index.js.map +1 -1
  227. package/dist/mcp/resources/index.d.ts +3 -0
  228. package/dist/mcp/resources/index.d.ts.map +1 -0
  229. package/dist/mcp/resources/index.js +11 -0
  230. package/dist/mcp/resources/index.js.map +1 -0
  231. package/dist/mcp/server.d.ts +4 -0
  232. package/dist/mcp/server.d.ts.map +1 -0
  233. package/dist/mcp/server.js +29 -0
  234. package/dist/mcp/server.js.map +1 -0
  235. package/dist/mcp/tools/index.d.ts +3 -0
  236. package/dist/mcp/tools/index.d.ts.map +1 -0
  237. package/dist/mcp/tools/index.js +12 -0
  238. package/dist/mcp/tools/index.js.map +1 -0
  239. package/dist/strategies/grid/grid-calculator.d.ts +63 -4
  240. package/dist/strategies/grid/grid-calculator.d.ts.map +1 -1
  241. package/dist/strategies/grid/grid-calculator.js +190 -15
  242. package/dist/strategies/grid/grid-calculator.js.map +1 -1
  243. package/dist/strategies/grid/grid-order-manager.d.ts +9 -4
  244. package/dist/strategies/grid/grid-order-manager.d.ts.map +1 -1
  245. package/dist/strategies/grid/grid-order-manager.js +58 -15
  246. package/dist/strategies/grid/grid-order-manager.js.map +1 -1
  247. package/dist/strategies/grid/grid-strategy.d.ts +11 -0
  248. package/dist/strategies/grid/grid-strategy.d.ts.map +1 -1
  249. package/dist/strategies/grid/grid-strategy.js +127 -20
  250. package/dist/strategies/grid/grid-strategy.js.map +1 -1
  251. package/dist/strategies/grid/volatility-tracker.d.ts +67 -0
  252. package/dist/strategies/grid/volatility-tracker.d.ts.map +1 -0
  253. package/dist/strategies/grid/volatility-tracker.js +109 -0
  254. package/dist/strategies/grid/volatility-tracker.js.map +1 -0
  255. package/dist/tests/fixtures/test-helpers.d.ts +5 -0
  256. package/dist/tests/fixtures/test-helpers.d.ts.map +1 -0
  257. package/dist/tests/fixtures/test-helpers.js +8 -0
  258. package/dist/tests/fixtures/test-helpers.js.map +1 -0
  259. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts +2 -0
  260. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts.map +1 -0
  261. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js +237 -0
  262. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js.map +1 -0
  263. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts +2 -0
  264. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
  265. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js +57 -0
  266. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js.map +1 -0
  267. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts +2 -0
  268. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts.map +1 -0
  269. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js +141 -0
  270. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js.map +1 -0
  271. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts +2 -0
  272. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts.map +1 -0
  273. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js +375 -0
  274. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js.map +1 -0
  275. package/dist/tests/unit/cli/exchange-factory.test.d.ts +2 -0
  276. package/dist/tests/unit/cli/exchange-factory.test.d.ts.map +1 -0
  277. package/dist/tests/unit/cli/exchange-factory.test.js +148 -0
  278. package/dist/tests/unit/cli/exchange-factory.test.js.map +1 -0
  279. package/dist/tests/unit/config/environment.test.d.ts +2 -0
  280. package/dist/tests/unit/config/environment.test.d.ts.map +1 -0
  281. package/dist/tests/unit/config/environment.test.js +158 -0
  282. package/dist/tests/unit/config/environment.test.js.map +1 -0
  283. package/dist/tests/unit/config/launcher-config.test.d.ts +2 -0
  284. package/dist/tests/unit/config/launcher-config.test.d.ts.map +1 -0
  285. package/dist/tests/unit/config/launcher-config.test.js +117 -0
  286. package/dist/tests/unit/config/launcher-config.test.js.map +1 -0
  287. package/dist/tests/unit/config/price-aggregation.test.d.ts +2 -0
  288. package/dist/tests/unit/config/price-aggregation.test.d.ts.map +1 -0
  289. package/dist/tests/unit/config/price-aggregation.test.js +144 -0
  290. package/dist/tests/unit/config/price-aggregation.test.js.map +1 -0
  291. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts +2 -0
  292. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts.map +1 -0
  293. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js +191 -0
  294. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js.map +1 -0
  295. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts +2 -0
  296. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts.map +1 -0
  297. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js +324 -0
  298. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js.map +1 -0
  299. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts +2 -0
  300. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
  301. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js +177 -0
  302. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js.map +1 -0
  303. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts +2 -0
  304. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts.map +1 -0
  305. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js +168 -0
  306. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js.map +1 -0
  307. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts +2 -0
  308. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts.map +1 -0
  309. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js +217 -0
  310. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js.map +1 -0
  311. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts +2 -0
  312. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts.map +1 -0
  313. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js +229 -0
  314. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js.map +1 -0
  315. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts +2 -0
  316. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts.map +1 -0
  317. package/dist/tests/unit/core/risk-management/risk-manager.test.js +194 -0
  318. package/dist/tests/unit/core/risk-management/risk-manager.test.js.map +1 -0
  319. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts +2 -0
  320. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts.map +1 -0
  321. package/dist/tests/unit/core/strategy/base-strategy.test.js +254 -0
  322. package/dist/tests/unit/core/strategy/base-strategy.test.js.map +1 -0
  323. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts +2 -0
  324. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts.map +1 -0
  325. package/dist/tests/unit/core/strategy/strategy-factory.test.js +213 -0
  326. package/dist/tests/unit/core/strategy/strategy-factory.test.js.map +1 -0
  327. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts +2 -0
  328. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts.map +1 -0
  329. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js +452 -0
  330. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js.map +1 -0
  331. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts +2 -0
  332. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts.map +1 -0
  333. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js +1419 -0
  334. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js.map +1 -0
  335. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts +2 -0
  336. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts.map +1 -0
  337. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js +435 -0
  338. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js.map +1 -0
  339. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts +2 -0
  340. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts.map +1 -0
  341. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js +314 -0
  342. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js.map +1 -0
  343. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts +2 -0
  344. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts.map +1 -0
  345. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js +178 -0
  346. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js.map +1 -0
  347. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts +2 -0
  348. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts.map +1 -0
  349. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js +502 -0
  350. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js.map +1 -0
  351. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts +2 -0
  352. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts.map +1 -0
  353. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js +317 -0
  354. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js.map +1 -0
  355. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts +2 -0
  356. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts.map +1 -0
  357. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js +843 -0
  358. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js.map +1 -0
  359. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts +2 -0
  360. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts.map +1 -0
  361. package/dist/tests/unit/strategies/grid/grid-calculator.test.js +67 -0
  362. package/dist/tests/unit/strategies/grid/grid-calculator.test.js.map +1 -0
  363. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts +2 -0
  364. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts.map +1 -0
  365. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js +211 -0
  366. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js.map +1 -0
  367. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts +2 -0
  368. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts.map +1 -0
  369. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js +197 -0
  370. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js.map +1 -0
  371. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts +2 -0
  372. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts.map +1 -0
  373. package/dist/tests/unit/strategies/grid/grid-strategy.test.js +429 -0
  374. package/dist/tests/unit/strategies/grid/grid-strategy.test.js.map +1 -0
  375. package/dist/tests/unit/utils/logger.test.d.ts +2 -0
  376. package/dist/tests/unit/utils/logger.test.d.ts.map +1 -0
  377. package/dist/tests/unit/utils/logger.test.js +260 -0
  378. package/dist/tests/unit/utils/logger.test.js.map +1 -0
  379. package/dist/tests/unit/utils/symbol-utils.test.d.ts +2 -0
  380. package/dist/tests/unit/utils/symbol-utils.test.d.ts.map +1 -0
  381. package/dist/tests/unit/utils/symbol-utils.test.js +178 -0
  382. package/dist/tests/unit/utils/symbol-utils.test.js.map +1 -0
  383. package/dist/types/bitget-raw.d.ts +75 -0
  384. package/dist/types/bitget-raw.d.ts.map +1 -0
  385. package/dist/types/bitget-raw.js +10 -0
  386. package/dist/types/bitget-raw.js.map +1 -0
  387. package/dist/types/bitget.d.ts +35 -0
  388. package/dist/types/bitget.d.ts.map +1 -0
  389. package/dist/types/bitget.js +8 -0
  390. package/dist/types/bitget.js.map +1 -0
  391. package/dist/types/gateio-raw.d.ts +104 -0
  392. package/dist/types/gateio-raw.d.ts.map +1 -0
  393. package/dist/types/gateio-raw.js +7 -0
  394. package/dist/types/gateio-raw.js.map +1 -0
  395. package/dist/types/gateio.d.ts +41 -0
  396. package/dist/types/gateio.d.ts.map +1 -0
  397. package/dist/types/gateio.js +8 -0
  398. package/dist/types/gateio.js.map +1 -0
  399. package/dist/types/grid.d.ts +77 -0
  400. package/dist/types/grid.d.ts.map +1 -1
  401. package/dist/types/index.d.ts +6 -0
  402. package/dist/types/index.d.ts.map +1 -1
  403. package/dist/types/index.js +6 -0
  404. package/dist/types/index.js.map +1 -1
  405. package/dist/types/kraken-raw.d.ts +89 -0
  406. package/dist/types/kraken-raw.d.ts.map +1 -0
  407. package/dist/types/kraken-raw.js +10 -0
  408. package/dist/types/kraken-raw.js.map +1 -0
  409. package/dist/types/kraken.d.ts +44 -0
  410. package/dist/types/kraken.d.ts.map +1 -0
  411. package/dist/types/kraken.js +3 -0
  412. package/dist/types/kraken.js.map +1 -0
  413. package/dist/types/mexc.d.ts +9 -0
  414. package/dist/types/mexc.d.ts.map +1 -1
  415. package/dist/types/price-aggregation.d.ts +31 -0
  416. package/dist/types/price-aggregation.d.ts.map +1 -0
  417. package/dist/types/price-aggregation.js +6 -0
  418. package/dist/types/price-aggregation.js.map +1 -0
  419. package/dist/types/price.d.ts +23 -0
  420. package/dist/types/price.d.ts.map +1 -1
  421. package/dist/types/strategy.d.ts +5 -0
  422. package/dist/types/strategy.d.ts.map +1 -1
  423. package/dist/utils/crypto.d.ts +15 -0
  424. package/dist/utils/crypto.d.ts.map +1 -0
  425. package/dist/utils/crypto.js +50 -0
  426. package/dist/utils/crypto.js.map +1 -0
  427. package/dist/utils/exchange-utils.d.ts +194 -0
  428. package/dist/utils/exchange-utils.d.ts.map +1 -0
  429. package/dist/utils/exchange-utils.js +455 -0
  430. package/dist/utils/exchange-utils.js.map +1 -0
  431. package/dist/utils/index.d.ts +1 -0
  432. package/dist/utils/index.d.ts.map +1 -1
  433. package/dist/utils/index.js +3 -1
  434. package/dist/utils/index.js.map +1 -1
  435. package/dist/utils/logger.d.ts +1 -1
  436. package/dist/utils/logger.d.ts.map +1 -1
  437. package/dist/utils/logger.js +7 -7
  438. package/dist/utils/logger.js.map +1 -1
  439. package/dist/utils/validation.d.ts +36 -0
  440. package/dist/utils/validation.d.ts.map +1 -0
  441. package/dist/utils/validation.js +174 -0
  442. package/dist/utils/validation.js.map +1 -0
  443. package/package.json +7 -1
@@ -0,0 +1,124 @@
1
+ import { OrderBook, Ticker, Trade, WebSocketStatus } from '../../types';
2
+ /**
3
+ * Bitget WebSocket Client
4
+ *
5
+ * Provides real-time market data streaming for Bitget exchange.
6
+ * Implements public market data channels including ticker, orderbook, and trades.
7
+ */
8
+ export declare class BitgetWebSocket {
9
+ private ws?;
10
+ private subscriptions;
11
+ private status;
12
+ private readonly wsUrl;
13
+ private logger;
14
+ private reconnectTimer?;
15
+ private pingTimer?;
16
+ private reconnectAttempts;
17
+ private maxReconnectAttempts;
18
+ private reconnectDelay;
19
+ private autoReconnect;
20
+ private pingInterval;
21
+ private readonly dataMapper;
22
+ constructor(wsUrl?: string);
23
+ /**
24
+ * Connect to Bitget WebSocket
25
+ *
26
+ * @returns Promise that resolves when connection is established
27
+ */
28
+ connectWebSocket(): Promise<void>;
29
+ /**
30
+ * WebSocket open event handler
31
+ */
32
+ private onOpen;
33
+ /**
34
+ * WebSocket close event handler
35
+ */
36
+ private onClose;
37
+ /**
38
+ * WebSocket error event handler
39
+ */
40
+ private onError;
41
+ /**
42
+ * WebSocket message handler
43
+ */
44
+ private onMessage;
45
+ /**
46
+ * Process subscription data messages
47
+ */
48
+ private processSubscriptionData;
49
+ /**
50
+ * Handle ticker data
51
+ */
52
+ private handleTickerData;
53
+ /**
54
+ * Handle order book data
55
+ */
56
+ private handleOrderBookData;
57
+ /**
58
+ * Handle trade data
59
+ */
60
+ private handleTradeData;
61
+ /**
62
+ * Subscribe to ticker updates for a symbol
63
+ *
64
+ * @param symbol - Trading pair symbol (e.g., 'SNEK/USDT')
65
+ * @param callback - Function called when ticker updates are received
66
+ * @returns Promise resolving to subscription ID
67
+ */
68
+ subscribeTicker(symbol: string, callback: (ticker: Ticker) => void): Promise<string>;
69
+ /**
70
+ * Subscribe to order book updates for a symbol
71
+ *
72
+ * @param symbol - Trading pair symbol (e.g., 'SNEK/USDT')
73
+ * @param callback - Function called when order book updates are received
74
+ * @returns Promise resolving to subscription ID
75
+ */
76
+ subscribeOrderBook(symbol: string, callback: (orderbook: OrderBook) => void): Promise<string>;
77
+ /**
78
+ * Subscribe to trade updates for a symbol
79
+ *
80
+ * @param symbol - Trading pair symbol (e.g., 'SNEK/USDT')
81
+ * @param callback - Function called when new trades are received
82
+ * @returns Promise resolving to subscription ID
83
+ */
84
+ subscribeTrades(symbol: string, callback: (trade: Trade) => void): Promise<string>;
85
+ /**
86
+ * Unsubscribe from a subscription
87
+ *
88
+ * @param subscriptionId - The ID of the subscription to cancel
89
+ */
90
+ unsubscribe(subscriptionId: string): Promise<void>;
91
+ /**
92
+ * Send subscription/unsubscription message
93
+ */
94
+ private subscribe;
95
+ /**
96
+ * Schedule reconnection attempt
97
+ */
98
+ private scheduleReconnect;
99
+ /**
100
+ * Resubscribe to all active subscriptions
101
+ */
102
+ private resubscribeAll;
103
+ /**
104
+ * Start ping interval to keep connection alive
105
+ */
106
+ private startPing;
107
+ /**
108
+ * Stop ping interval
109
+ */
110
+ private stopPing;
111
+ /**
112
+ * Disconnect from WebSocket
113
+ */
114
+ disconnectWebSocket(): Promise<void>;
115
+ /**
116
+ * Check if WebSocket is connected
117
+ */
118
+ isConnected(): boolean;
119
+ /**
120
+ * Get current WebSocket status
121
+ */
122
+ getWebSocketStatus(): WebSocketStatus;
123
+ }
124
+ //# sourceMappingURL=bitget-websocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitget-websocket.d.ts","sourceRoot":"","sources":["../../../src/exchanges/bitget/bitget-websocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMxE;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAC,CAAY;IACvB,OAAO,CAAC,aAAa,CAA6C;IAClE,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;gBAEzC,KAAK,GAAE,MAA2C;IAI9D;;;;OAIG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBvC;;OAEG;IACH,OAAO,CAAC,MAAM;IAWd;;OAEG;IACH,OAAO,CAAC,OAAO;IAaf;;OAEG;IACH,OAAO,CAAC,OAAO;IASf;;OAEG;IACH,OAAO,CAAC,SAAS;IAyBjB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqB/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;;;;;OAMG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAyB1F;;;;;;OAMG;IACG,kBAAkB,CACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,GACvC,OAAO,CAAC,MAAM,CAAC;IAyBlB;;;;;;OAMG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBxF;;;;OAIG;IACG,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCxD;;OAEG;YACW,SAAS;IAQvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;OAEG;YACW,cAAc;IAoC5B;;OAEG;IACH,OAAO,CAAC,SAAS;IAQjB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAOhB;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB1C;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,kBAAkB,IAAI,eAAe;CAGtC"}
@@ -0,0 +1,434 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BitgetWebSocket = void 0;
7
+ const ws_1 = __importDefault(require("ws"));
8
+ const bitget_data_mapper_1 = require("./bitget-data-mapper");
9
+ const utils_1 = require("../../utils");
10
+ const symbol_utils_1 = require("../../utils/symbol-utils");
11
+ /**
12
+ * Bitget WebSocket Client
13
+ *
14
+ * Provides real-time market data streaming for Bitget exchange.
15
+ * Implements public market data channels including ticker, orderbook, and trades.
16
+ */
17
+ class BitgetWebSocket {
18
+ constructor(wsUrl = 'wss://ws.bitget.com/v2/ws/public') {
19
+ this.subscriptions = new Map();
20
+ this.status = 'disconnected';
21
+ this.logger = (0, utils_1.createLogger)('bitget-websocket');
22
+ this.reconnectAttempts = 0;
23
+ this.maxReconnectAttempts = 5;
24
+ this.reconnectDelay = 5000;
25
+ this.autoReconnect = true;
26
+ this.pingInterval = 30000;
27
+ this.dataMapper = new bitget_data_mapper_1.BitgetDataMapper();
28
+ this.wsUrl = wsUrl;
29
+ }
30
+ /**
31
+ * Connect to Bitget WebSocket
32
+ *
33
+ * @returns Promise that resolves when connection is established
34
+ */
35
+ async connectWebSocket() {
36
+ return new Promise((resolve, reject) => {
37
+ try {
38
+ this.autoReconnect = true;
39
+ this.ws = new ws_1.default(this.wsUrl);
40
+ this.status = 'connecting';
41
+ this.ws.on('open', () => this.onOpen(resolve));
42
+ this.ws.on('message', (data) => this.onMessage(data));
43
+ this.ws.on('close', () => this.onClose());
44
+ this.ws.on('error', error => this.onError(error, reject));
45
+ }
46
+ catch (error) {
47
+ this.status = 'error';
48
+ reject(error);
49
+ }
50
+ });
51
+ }
52
+ /**
53
+ * WebSocket open event handler
54
+ */
55
+ onOpen(resolve) {
56
+ this.status = 'connected';
57
+ this.reconnectAttempts = 0;
58
+ this.startPing();
59
+ this.logger.info('✅ Bitget WebSocket connected successfully');
60
+ this.resubscribeAll();
61
+ resolve();
62
+ }
63
+ /**
64
+ * WebSocket close event handler
65
+ */
66
+ onClose() {
67
+ this.status = 'disconnected';
68
+ this.stopPing();
69
+ this.logger.warn('🔌 WebSocket connection closed');
70
+ if (this.autoReconnect && this.reconnectAttempts < this.maxReconnectAttempts) {
71
+ this.scheduleReconnect();
72
+ }
73
+ else if (this.reconnectAttempts >= this.maxReconnectAttempts) {
74
+ this.logger.error('❌ Max reconnection attempts reached, giving up');
75
+ }
76
+ }
77
+ /**
78
+ * WebSocket error event handler
79
+ */
80
+ onError(error, reject) {
81
+ this.status = 'error';
82
+ this.logger.error('❌ Bitget WebSocket error:', { error: error.message });
83
+ if (this.reconnectAttempts === 0 && reject) {
84
+ reject(error);
85
+ }
86
+ }
87
+ /**
88
+ * WebSocket message handler
89
+ */
90
+ onMessage(data) {
91
+ try {
92
+ const message = data.toString();
93
+ const parsedMessage = JSON.parse(message);
94
+ if (parsedMessage.event === 'pong') {
95
+ return;
96
+ }
97
+ if (parsedMessage.event === 'subscribe') {
98
+ this.logger.info('✅ Subscription confirmed:', { arg: parsedMessage.arg });
99
+ return;
100
+ }
101
+ if (parsedMessage.data) {
102
+ this.processSubscriptionData(parsedMessage);
103
+ }
104
+ }
105
+ catch (error) {
106
+ this.logger.error('❌ Error processing message:', {
107
+ error,
108
+ message: data.toString().substring(0, 200),
109
+ });
110
+ }
111
+ }
112
+ /**
113
+ * Process subscription data messages
114
+ */
115
+ processSubscriptionData(message) {
116
+ try {
117
+ const { arg, data } = message;
118
+ if (!arg || !data) {
119
+ this.logger.warn('⚠️ Invalid message format:', { arg, hasData: !!data });
120
+ return;
121
+ }
122
+ if (arg.channel === 'ticker') {
123
+ this.handleTickerData(arg.instId, data);
124
+ }
125
+ else if (arg.channel === 'books15') {
126
+ this.handleOrderBookData(arg.instId, data);
127
+ }
128
+ else if (arg.channel === 'trade') {
129
+ this.handleTradeData(arg.instId, data);
130
+ }
131
+ }
132
+ catch (error) {
133
+ this.logger.error('❌ Error processing subscription data:', { error, message });
134
+ }
135
+ }
136
+ /**
137
+ * Handle ticker data
138
+ */
139
+ handleTickerData(instId, data) {
140
+ try {
141
+ if (!Array.isArray(data) || data.length === 0)
142
+ return;
143
+ const tickerData = data[0];
144
+ const tickerForMapping = {
145
+ ...tickerData,
146
+ symbol: tickerData.instId || instId,
147
+ };
148
+ const ticker = this.dataMapper.mapTicker(tickerForMapping);
149
+ this.subscriptions.forEach((subscription, id) => {
150
+ if (subscription.type === 'ticker' && id.includes(instId)) {
151
+ subscription.callback(ticker);
152
+ }
153
+ });
154
+ }
155
+ catch (error) {
156
+ this.logger.error('❌ Error handling ticker data:', { error, instId, data });
157
+ }
158
+ }
159
+ /**
160
+ * Handle order book data
161
+ */
162
+ handleOrderBookData(instId, data) {
163
+ try {
164
+ if (!Array.isArray(data) || data.length === 0)
165
+ return;
166
+ const orderBookData = data[0];
167
+ const orderBook = this.dataMapper.mapOrderBook(orderBookData, instId);
168
+ this.subscriptions.forEach((subscription, id) => {
169
+ if (subscription.type === 'orderbook' && id.includes(instId)) {
170
+ subscription.callback(orderBook);
171
+ }
172
+ });
173
+ }
174
+ catch (error) {
175
+ this.logger.error('❌ Error handling order book data:', { error, instId, data });
176
+ }
177
+ }
178
+ /**
179
+ * Handle trade data
180
+ */
181
+ handleTradeData(instId, data) {
182
+ try {
183
+ if (!Array.isArray(data) || data.length === 0)
184
+ return;
185
+ data.forEach(tradeData => {
186
+ const trade = this.dataMapper.mapTrade(tradeData, instId);
187
+ this.subscriptions.forEach((subscription, id) => {
188
+ if (subscription.type === 'trades' && id.includes(instId)) {
189
+ subscription.callback(trade);
190
+ }
191
+ });
192
+ });
193
+ }
194
+ catch (error) {
195
+ this.logger.error('❌ Error handling trade data:', { error, instId, data });
196
+ }
197
+ }
198
+ /**
199
+ * Subscribe to ticker updates for a symbol
200
+ *
201
+ * @param symbol - Trading pair symbol (e.g., 'SNEK/USDT')
202
+ * @param callback - Function called when ticker updates are received
203
+ * @returns Promise resolving to subscription ID
204
+ */
205
+ async subscribeTicker(symbol, callback) {
206
+ const bitgetSymbol = (0, symbol_utils_1.toExchangeFormat)(symbol);
207
+ const subscriptionId = `ticker_${bitgetSymbol}_${Date.now()}`;
208
+ this.subscriptions.set(subscriptionId, {
209
+ callback,
210
+ type: 'ticker',
211
+ symbol: bitgetSymbol,
212
+ });
213
+ await this.subscribe({
214
+ op: 'subscribe',
215
+ args: [
216
+ {
217
+ instType: 'SPOT',
218
+ channel: 'ticker',
219
+ instId: bitgetSymbol,
220
+ },
221
+ ],
222
+ });
223
+ this.logger.info(`📈 Subscribed to ticker: ${symbol} (${bitgetSymbol})`);
224
+ return subscriptionId;
225
+ }
226
+ /**
227
+ * Subscribe to order book updates for a symbol
228
+ *
229
+ * @param symbol - Trading pair symbol (e.g., 'SNEK/USDT')
230
+ * @param callback - Function called when order book updates are received
231
+ * @returns Promise resolving to subscription ID
232
+ */
233
+ async subscribeOrderBook(symbol, callback) {
234
+ const bitgetSymbol = (0, symbol_utils_1.toExchangeFormat)(symbol);
235
+ const subscriptionId = `orderbook_${bitgetSymbol}_${Date.now()}`;
236
+ this.subscriptions.set(subscriptionId, {
237
+ callback,
238
+ type: 'orderbook',
239
+ symbol: bitgetSymbol,
240
+ });
241
+ await this.subscribe({
242
+ op: 'subscribe',
243
+ args: [
244
+ {
245
+ instType: 'SPOT',
246
+ channel: 'books15',
247
+ instId: bitgetSymbol,
248
+ },
249
+ ],
250
+ });
251
+ this.logger.info(`📊 Subscribed to order book: ${symbol} (${bitgetSymbol})`);
252
+ return subscriptionId;
253
+ }
254
+ /**
255
+ * Subscribe to trade updates for a symbol
256
+ *
257
+ * @param symbol - Trading pair symbol (e.g., 'SNEK/USDT')
258
+ * @param callback - Function called when new trades are received
259
+ * @returns Promise resolving to subscription ID
260
+ */
261
+ async subscribeTrades(symbol, callback) {
262
+ const bitgetSymbol = (0, symbol_utils_1.toExchangeFormat)(symbol);
263
+ const subscriptionId = `trades_${bitgetSymbol}_${Date.now()}`;
264
+ this.subscriptions.set(subscriptionId, {
265
+ callback,
266
+ type: 'trades',
267
+ symbol: bitgetSymbol,
268
+ });
269
+ await this.subscribe({
270
+ op: 'subscribe',
271
+ args: [
272
+ {
273
+ instType: 'SPOT',
274
+ channel: 'trade',
275
+ instId: bitgetSymbol,
276
+ },
277
+ ],
278
+ });
279
+ this.logger.info(`💱 Subscribed to trades: ${symbol} (${bitgetSymbol})`);
280
+ return subscriptionId;
281
+ }
282
+ /**
283
+ * Unsubscribe from a subscription
284
+ *
285
+ * @param subscriptionId - The ID of the subscription to cancel
286
+ */
287
+ async unsubscribe(subscriptionId) {
288
+ const subscription = this.subscriptions.get(subscriptionId);
289
+ if (!subscription) {
290
+ this.logger.warn('⚠️ Subscription not found:', { subscriptionId });
291
+ return;
292
+ }
293
+ const { symbol } = subscription;
294
+ this.subscriptions.delete(subscriptionId);
295
+ let channel;
296
+ if (subscriptionId.startsWith('ticker_')) {
297
+ channel = 'ticker';
298
+ }
299
+ else if (subscriptionId.startsWith('orderbook_')) {
300
+ channel = 'books15';
301
+ }
302
+ else if (subscriptionId.startsWith('trades_')) {
303
+ channel = 'trade';
304
+ }
305
+ else {
306
+ this.logger.warn('⚠️ Unknown subscription type:', { subscriptionId });
307
+ return;
308
+ }
309
+ await this.subscribe({
310
+ op: 'unsubscribe',
311
+ args: [
312
+ {
313
+ instType: 'SPOT',
314
+ channel,
315
+ instId: symbol,
316
+ },
317
+ ],
318
+ });
319
+ this.logger.info(`❌ Unsubscribed: ${subscriptionId}`);
320
+ }
321
+ /**
322
+ * Send subscription/unsubscription message
323
+ */
324
+ async subscribe(message) {
325
+ if (this.status !== 'connected' || !this.ws) {
326
+ throw new Error('WebSocket not connected');
327
+ }
328
+ this.ws.send(JSON.stringify(message));
329
+ }
330
+ /**
331
+ * Schedule reconnection attempt
332
+ */
333
+ scheduleReconnect() {
334
+ this.reconnectAttempts++;
335
+ this.reconnectTimer = setTimeout(async () => {
336
+ try {
337
+ await this.connectWebSocket();
338
+ }
339
+ catch (error) {
340
+ this.logger.error('❌ Reconnection failed:', { error });
341
+ }
342
+ }, this.reconnectDelay);
343
+ }
344
+ /**
345
+ * Resubscribe to all active subscriptions
346
+ */
347
+ async resubscribeAll() {
348
+ if (this.subscriptions.size === 0)
349
+ return;
350
+ this.logger.info(`🔄 Resubscribing to ${this.subscriptions.size} subscriptions`);
351
+ for (const [id, subscription] of this.subscriptions) {
352
+ try {
353
+ const { symbol, type } = subscription;
354
+ let channel;
355
+ if (type === 'ticker') {
356
+ channel = 'ticker';
357
+ }
358
+ else if (type === 'orderbook') {
359
+ channel = 'books15';
360
+ }
361
+ else if (type === 'trades') {
362
+ channel = 'trade';
363
+ }
364
+ else {
365
+ continue;
366
+ }
367
+ await this.subscribe({
368
+ op: 'subscribe',
369
+ args: [
370
+ {
371
+ instType: 'SPOT',
372
+ channel,
373
+ instId: symbol,
374
+ },
375
+ ],
376
+ });
377
+ }
378
+ catch (error) {
379
+ this.logger.error('❌ Failed to resubscribe:', { id, error });
380
+ }
381
+ }
382
+ }
383
+ /**
384
+ * Start ping interval to keep connection alive
385
+ */
386
+ startPing() {
387
+ this.pingTimer = setInterval(() => {
388
+ if (this.ws && this.status === 'connected') {
389
+ this.ws.send(JSON.stringify({ op: 'ping' }));
390
+ }
391
+ }, this.pingInterval);
392
+ }
393
+ /**
394
+ * Stop ping interval
395
+ */
396
+ stopPing() {
397
+ if (this.pingTimer) {
398
+ clearInterval(this.pingTimer);
399
+ this.pingTimer = undefined;
400
+ }
401
+ }
402
+ /**
403
+ * Disconnect from WebSocket
404
+ */
405
+ async disconnectWebSocket() {
406
+ this.autoReconnect = false;
407
+ if (this.reconnectTimer) {
408
+ clearTimeout(this.reconnectTimer);
409
+ this.reconnectTimer = undefined;
410
+ }
411
+ this.stopPing();
412
+ if (this.ws) {
413
+ this.ws.close();
414
+ this.ws = undefined;
415
+ }
416
+ this.subscriptions.clear();
417
+ this.status = 'disconnected';
418
+ this.logger.info('🔌 Bitget WebSocket disconnected');
419
+ }
420
+ /**
421
+ * Check if WebSocket is connected
422
+ */
423
+ isConnected() {
424
+ return this.status === 'connected';
425
+ }
426
+ /**
427
+ * Get current WebSocket status
428
+ */
429
+ getWebSocketStatus() {
430
+ return this.status;
431
+ }
432
+ }
433
+ exports.BitgetWebSocket = BitgetWebSocket;
434
+ //# sourceMappingURL=bitget-websocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitget-websocket.js","sourceRoot":"","sources":["../../../src/exchanges/bitget/bitget-websocket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import { ExchangeCredentials } from '../../types';
2
+ /**
3
+ * Gate.io Authentication and Request Handler
4
+ *
5
+ * Handles API authentication, request signing, and HTTP requests to Gate.io API.
6
+ * Implements Gate.io's HMAC-SHA512 signature generation with hex encoding.
7
+ *
8
+ * @see https://www.gate.io/docs/developers/apiv4/en/
9
+ */
10
+ export declare class GateioAuth {
11
+ private readonly credentials;
12
+ private readonly baseUrl;
13
+ private logger;
14
+ /**
15
+ * Initialize Gate.io authentication handler
16
+ *
17
+ * @param credentials - Gate.io API credentials including API key and secret
18
+ * @param baseUrl - Base URL for Gate.io API (defaults to production)
19
+ */
20
+ constructor(credentials: ExchangeCredentials, baseUrl?: string);
21
+ /**
22
+ * Generate HMAC-SHA512 signature for Gate.io API requests
23
+ *
24
+ * Signature format: HMAC-SHA512 of (method + "\n" + "/api/v4" + url_path + "\n" + query_string + "\n" + payload_hash + "\n" + timestamp)
25
+ * - url_path MUST include "/api/v4" prefix
26
+ * - payload_hash: SHA512 hash of request body (empty string if no body) - hex encoded
27
+ * - timestamp: Unix timestamp in SECONDS (not milliseconds)
28
+ */
29
+ generateSignature(timestamp: number, method: string, requestPath: string, queryString?: string, body?: string): string;
30
+ /**
31
+ * Generate signature for Gate.io WebSocket authentication
32
+ * WebSocket signature format: channel=<channel>&event=<event>&time=<timestamp>
33
+ *
34
+ * @param channel - WebSocket channel name (e.g., 'spot.orders')
35
+ * @param event - Event type (e.g., 'subscribe')
36
+ * @param timestamp - Unix timestamp in seconds
37
+ * @returns HMAC-SHA512 hex signature
38
+ */
39
+ generateWebSocketSignature(channel: string, event: string, timestamp: number): string;
40
+ /**
41
+ * Get required headers for authenticated Gate.io API requests
42
+ */
43
+ getHeaders(method: string, requestPath: string, queryString?: string, body?: string, timestamp?: number): Record<string, string>;
44
+ /**
45
+ * Get headers for public API endpoints
46
+ */
47
+ getPublicHeaders(): Record<string, string>;
48
+ /**
49
+ * Make authenticated request to Gate.io API
50
+ */
51
+ makeRequest(endpoint: string, params?: Record<string, unknown>, method?: 'GET' | 'POST' | 'PUT' | 'DELETE', body?: Record<string, unknown>): Promise<any>;
52
+ /**
53
+ * Make public request to Gate.io API
54
+ */
55
+ makePublicRequest(endpoint: string, params?: Record<string, unknown>): Promise<any>;
56
+ /**
57
+ * Handle API response and extract meaningful error messages
58
+ */
59
+ private handleResponse;
60
+ /**
61
+ * Validate that all required credentials are provided
62
+ */
63
+ private validateCredentials;
64
+ /**
65
+ * Check if credentials are properly configured
66
+ */
67
+ validateCredentialsExist(): boolean;
68
+ }
69
+ //# sourceMappingURL=gateio-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateio-auth.d.ts","sourceRoot":"","sources":["../../../src/exchanges/gateio/gateio-auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD;;;;;;;GAOG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,MAAM,CAA+B;IAE7C;;;;;OAKG;gBACS,WAAW,EAAE,mBAAmB,EAAE,OAAO,GAAE,MAAgC;IAMvF;;;;;;;OAOG;IACH,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAW,EACxB,IAAI,GAAE,MAAW,GAChB,MAAM;IAiBT;;;;;;;;OAQG;IACH,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAarF;;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;IAkBzB;;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;IAoC5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;IACH,wBAAwB,IAAI,OAAO;CAQpC"}