@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,605 @@
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.GateioConnector = void 0;
7
+ const base_exchange_connector_1 = require("../../core/exchange/base-exchange-connector");
8
+ const gateio_auth_1 = require("./gateio-auth");
9
+ const gateio_utils_1 = require("./gateio-utils");
10
+ const gateio_data_mapper_1 = require("./gateio-data-mapper");
11
+ const gateio_websocket_1 = require("./gateio-websocket");
12
+ const gateio_user_stream_1 = require("./gateio-user-stream");
13
+ const utils_1 = require("../../utils");
14
+ const environment_1 = __importDefault(require("../../config/environment"));
15
+ /**
16
+ * Gate.io Exchange Connector
17
+ *
18
+ * Implements the BaseExchangeConnector interface for Gate.io exchange.
19
+ * Provides trading operations, market data access, and WebSocket streaming.
20
+ */
21
+ class GateioConnector extends base_exchange_connector_1.BaseExchangeConnector {
22
+ constructor(credentials) {
23
+ super('gateio', 'Gate.io');
24
+ this.logger = (0, utils_1.createLogger)('gateio-connector');
25
+ this.baseUrl = 'https://api.gateio.ws';
26
+ this.dataMapper = new gateio_data_mapper_1.GateioDataMapper();
27
+ this.logger.info('GateioConnector initialized');
28
+ if (credentials) {
29
+ this.setCredentials(credentials);
30
+ }
31
+ else if (environment_1.default.gateio) {
32
+ this.setCredentials({
33
+ apiKey: environment_1.default.gateio.apiKey,
34
+ secret: environment_1.default.gateio.secret,
35
+ });
36
+ }
37
+ }
38
+ /**
39
+ * Set API credentials and initialize authentication handler
40
+ *
41
+ * @param credentials - Gate.io API credentials (apiKey and secret only)
42
+ * @throws Error if credentials are missing required fields
43
+ */
44
+ setCredentials(credentials) {
45
+ super.setCredentials(credentials);
46
+ if (!credentials.apiKey || !credentials.secret) {
47
+ throw new Error('Invalid Gate.io credentials: missing apiKey or secret');
48
+ }
49
+ this.auth = new gateio_auth_1.GateioAuth(credentials, this.baseUrl);
50
+ }
51
+ /**
52
+ * Connect to Gate.io API by testing server time and validating credentials
53
+ *
54
+ * @returns Promise that resolves when successfully connected to Gate.io API
55
+ * @throws Error if connection fails or credentials are invalid
56
+ */
57
+ async connect() {
58
+ try {
59
+ const credentials = this.getCredentials();
60
+ this.auth = new gateio_auth_1.GateioAuth(credentials, this.baseUrl);
61
+ const timeResponse = await this.auth.makePublicRequest('/spot/time');
62
+ if (!timeResponse || !timeResponse.server_time) {
63
+ throw new Error('Invalid response from Gate.io time endpoint');
64
+ }
65
+ if (!this.auth.validateCredentialsExist()) {
66
+ this.connected = false;
67
+ this.handleError(new Error('Invalid Gate.io credentials'), 'connect');
68
+ return;
69
+ }
70
+ try {
71
+ await this.auth.makeRequest('/spot/accounts');
72
+ }
73
+ catch (credError) {
74
+ if (credError instanceof Error) {
75
+ const errorMessage = gateio_utils_1.GateioUtils.mapErrorMessage(credError);
76
+ throw new Error(`Credentials validation failed: ${errorMessage}`);
77
+ }
78
+ }
79
+ this.connected = true;
80
+ }
81
+ catch (error) {
82
+ this.connected = false;
83
+ this.handleError(error, 'connect');
84
+ }
85
+ }
86
+ /**
87
+ * Disconnect from Gate.io API and clean up resources
88
+ *
89
+ * @returns Promise that resolves when successfully disconnected from Gate.io API
90
+ */
91
+ async disconnect() {
92
+ try {
93
+ await this.disconnectWebSocket();
94
+ await this.disconnectUserDataStream();
95
+ this.connected = false;
96
+ this.auth = undefined;
97
+ }
98
+ catch (error) {
99
+ this.handleError(error, 'disconnect');
100
+ }
101
+ }
102
+ // =============================================================================
103
+ // REST API Methods Implementation
104
+ // =============================================================================
105
+ /**
106
+ * Get account balance for all assets
107
+ *
108
+ * @returns Promise resolving to balance data for all assets
109
+ * @throws Error if API request fails or credentials are invalid
110
+ */
111
+ async getBalance() {
112
+ try {
113
+ if (!this.auth) {
114
+ throw new Error('Gate.io connector not authenticated');
115
+ }
116
+ const response = await this.auth.makeRequest('/spot/accounts');
117
+ if (!Array.isArray(response)) {
118
+ throw new Error('Invalid response from Gate.io accounts endpoint - expected array');
119
+ }
120
+ return this.dataMapper.mapAccountBalances(response);
121
+ }
122
+ catch (error) {
123
+ const errorMessage = gateio_utils_1.GateioUtils.mapErrorMessage(error);
124
+ this.logger.error('Get balance failed', { error: errorMessage });
125
+ this.handleError(new Error(errorMessage), 'getBalance');
126
+ }
127
+ }
128
+ /**
129
+ * Create a new order on Gate.io exchange
130
+ *
131
+ * @param symbol - Trading pair symbol (e.g., 'SNEK/USDT')
132
+ * @param type - Order type ('market' or 'limit')
133
+ * @param side - Order side ('buy' or 'sell')
134
+ * @param amount - Order quantity/amount
135
+ * @param price - Optional. Price for limit orders (required for limit orders)
136
+ * @returns Promise resolving to the created order details
137
+ * @throws Error if order creation fails or parameters are invalid
138
+ */
139
+ async createOrder(symbol, type, side, amount, price) {
140
+ try {
141
+ if (!this.auth) {
142
+ throw new Error('Gate.io connector not authenticated');
143
+ }
144
+ if (!gateio_utils_1.GateioUtils.isValidSymbol(symbol)) {
145
+ throw new Error(`Invalid symbol format: ${symbol}`);
146
+ }
147
+ const orderRequest = utils_1.ExchangeUtils.createGateioOrderParams(symbol, type, side, amount, price);
148
+ const response = await this.auth.makeRequest('/spot/orders', {}, 'POST', orderRequest);
149
+ if (!response || !gateio_utils_1.GateioUtils.isValidOrderResponse(response)) {
150
+ throw new Error('Invalid response from Gate.io place-order endpoint');
151
+ }
152
+ this.logger.info('Order created successfully', {
153
+ orderId: response.id,
154
+ symbol: orderRequest.currency_pair,
155
+ side,
156
+ amount,
157
+ price,
158
+ });
159
+ return this.dataMapper.mapOrder(response);
160
+ }
161
+ catch (error) {
162
+ const errorMessage = gateio_utils_1.GateioUtils.mapErrorMessage(error);
163
+ this.logger.error('Create order failed', {
164
+ symbol,
165
+ type,
166
+ side,
167
+ amount,
168
+ price,
169
+ error: errorMessage,
170
+ });
171
+ this.handleError(new Error(errorMessage), 'createOrder');
172
+ }
173
+ }
174
+ /**
175
+ * Cancel an existing order on Gate.io exchange
176
+ *
177
+ * @param orderId - The ID of the order to cancel
178
+ * @param symbol - Trading pair symbol (e.g., 'SNEK/USDT')
179
+ * @returns Promise that resolves when order is successfully cancelled
180
+ * @throws Error if cancellation fails or order not found
181
+ */
182
+ async cancelOrder(orderId, symbol) {
183
+ try {
184
+ if (!this.auth) {
185
+ throw new Error('Gate.io connector not authenticated');
186
+ }
187
+ if (!orderId) {
188
+ throw new Error('Order ID is required');
189
+ }
190
+ if (!gateio_utils_1.GateioUtils.isValidSymbol(symbol)) {
191
+ throw new Error(`Invalid symbol format: ${symbol}`);
192
+ }
193
+ const currencyPair = gateio_utils_1.GateioUtils.toGateioSymbol(symbol);
194
+ await this.auth.makeRequest(`/spot/orders/${orderId}`, { currency_pair: currencyPair }, 'DELETE');
195
+ }
196
+ catch (error) {
197
+ const errorMessage = gateio_utils_1.GateioUtils.mapErrorMessage(error);
198
+ this.logger.error('Cancel order failed', { orderId, symbol, error: errorMessage });
199
+ this.handleError(new Error(errorMessage), 'cancelOrder');
200
+ }
201
+ }
202
+ /**
203
+ * Cancel all open orders for a specific symbol using batch delete endpoint
204
+ *
205
+ * Uses Gate.io's DELETE /spot/orders endpoint to cancel all orders in a single request,
206
+ * which is more efficient than canceling orders one by one.
207
+ *
208
+ * @param symbol - Trading pair symbol (e.g., 'SNEK/USDT')
209
+ * @returns Promise that resolves when all orders are cancelled
210
+ * @throws Error if cancellation fails
211
+ */
212
+ async cancelAllOrders(symbol) {
213
+ try {
214
+ if (!this.auth) {
215
+ throw new Error('Gate.io connector not authenticated');
216
+ }
217
+ if (!gateio_utils_1.GateioUtils.isValidSymbol(symbol)) {
218
+ throw new Error(`Invalid symbol format: ${symbol}`);
219
+ }
220
+ const currencyPair = gateio_utils_1.GateioUtils.toGateioSymbol(symbol);
221
+ await this.auth.makeRequest('/spot/orders', { currency_pair: currencyPair }, 'DELETE');
222
+ }
223
+ catch (error) {
224
+ const errorMessage = gateio_utils_1.GateioUtils.mapErrorMessage(error);
225
+ this.logger.error('Cancel all orders failed', { symbol, error: errorMessage });
226
+ this.handleError(new Error(errorMessage), 'cancelAllOrders');
227
+ }
228
+ }
229
+ /**
230
+ * Get details of a specific order by ID
231
+ *
232
+ * @param orderId - The ID of the order to retrieve
233
+ * @param symbol - Trading pair symbol (e.g., 'SNEK/USDT')
234
+ * @returns Promise resolving to order details
235
+ * @throws Error if order not found or request fails
236
+ */
237
+ async getOrder(orderId, symbol) {
238
+ try {
239
+ if (!this.auth) {
240
+ throw new Error('Gate.io connector not authenticated');
241
+ }
242
+ if (!orderId) {
243
+ throw new Error('Order ID is required');
244
+ }
245
+ if (!gateio_utils_1.GateioUtils.isValidSymbol(symbol)) {
246
+ throw new Error(`Invalid symbol format: ${symbol}`);
247
+ }
248
+ const currencyPair = gateio_utils_1.GateioUtils.toGateioSymbol(symbol);
249
+ const response = await this.auth.makeRequest(`/spot/orders/${orderId}`, {
250
+ currency_pair: currencyPair,
251
+ });
252
+ if (!response || !gateio_utils_1.GateioUtils.isValidOrderResponse(response)) {
253
+ throw new Error('Order not found or invalid response');
254
+ }
255
+ return this.dataMapper.mapOrder(response);
256
+ }
257
+ catch (error) {
258
+ const errorMessage = gateio_utils_1.GateioUtils.mapErrorMessage(error);
259
+ this.logger.error('Get order failed', { orderId, symbol, error: errorMessage });
260
+ this.handleError(new Error(errorMessage), 'getOrder');
261
+ }
262
+ }
263
+ /**
264
+ * Get all open orders, optionally filtered by symbol
265
+ *
266
+ * @param symbol - Optional. Trading pair symbol to filter orders (e.g., 'SNEK/USDT')
267
+ * @returns Promise resolving to array of open orders
268
+ * @throws Error if request fails
269
+ */
270
+ async getOpenOrders(symbol) {
271
+ try {
272
+ if (!this.auth) {
273
+ throw new Error('Gate.io connector not authenticated');
274
+ }
275
+ const params = {};
276
+ if (symbol) {
277
+ if (!gateio_utils_1.GateioUtils.isValidSymbol(symbol)) {
278
+ throw new Error(`Invalid symbol format: ${symbol}`);
279
+ }
280
+ params.currency_pair = gateio_utils_1.GateioUtils.toGateioSymbol(symbol);
281
+ }
282
+ const response = await this.auth.makeRequest('/spot/open_orders', params);
283
+ if (!Array.isArray(response)) {
284
+ this.logger.warn('Gate.io open orders returned unexpected format', { response });
285
+ return [];
286
+ }
287
+ const allOrders = gateio_utils_1.GateioUtils.extractOrdersFromOpenOrdersResponse(response);
288
+ return allOrders.map((orderData) => this.dataMapper.mapOrder(orderData));
289
+ }
290
+ catch (error) {
291
+ const errorMessage = gateio_utils_1.GateioUtils.mapErrorMessage(error);
292
+ this.logger.error('Get open orders failed', { symbol, error: errorMessage });
293
+ this.handleError(new Error(errorMessage), 'getOpenOrders');
294
+ }
295
+ }
296
+ /**
297
+ * Get ticker information for a trading pair
298
+ *
299
+ * @param symbol - Trading pair symbol (e.g., 'SNEK/USDT')
300
+ * @returns Promise resolving to ticker data including prices and volume
301
+ * @throws Error if ticker data not found or request fails
302
+ */
303
+ async getTicker(symbol) {
304
+ try {
305
+ if (!gateio_utils_1.GateioUtils.isValidSymbol(symbol)) {
306
+ throw new Error(`Invalid symbol format: ${symbol}`);
307
+ }
308
+ const currencyPair = gateio_utils_1.GateioUtils.toGateioSymbol(symbol);
309
+ const response = await this.makePublicRequest('/spot/tickers', {
310
+ currency_pair: currencyPair,
311
+ });
312
+ if (!Array.isArray(response) || response.length === 0) {
313
+ throw new Error('No ticker data found');
314
+ }
315
+ return this.dataMapper.mapTicker(response[0]);
316
+ }
317
+ catch (error) {
318
+ const errorMessage = gateio_utils_1.GateioUtils.mapErrorMessage(error);
319
+ this.logger.error('Get ticker failed', { symbol, error: errorMessage });
320
+ this.handleError(new Error(errorMessage), 'getTicker');
321
+ }
322
+ }
323
+ /**
324
+ * Get order book data for a trading pair
325
+ *
326
+ * @param symbol - Trading pair symbol (e.g., 'SNEK/USDT')
327
+ * @returns Promise resolving to order book with bids and asks
328
+ * @throws Error if order book data not found or request fails
329
+ */
330
+ async getOrderBook(symbol) {
331
+ try {
332
+ if (!gateio_utils_1.GateioUtils.isValidSymbol(symbol)) {
333
+ throw new Error(`Invalid symbol format: ${symbol}`);
334
+ }
335
+ const currencyPair = gateio_utils_1.GateioUtils.toGateioSymbol(symbol);
336
+ const response = await this.makePublicRequest('/spot/order_book', {
337
+ currency_pair: currencyPair,
338
+ limit: '100',
339
+ });
340
+ if (!response) {
341
+ throw new Error('No order book data found');
342
+ }
343
+ return this.dataMapper.mapOrderBook(response, currencyPair);
344
+ }
345
+ catch (error) {
346
+ const errorMessage = gateio_utils_1.GateioUtils.mapErrorMessage(error);
347
+ this.logger.error('Get order book failed', { symbol, error: errorMessage });
348
+ this.handleError(new Error(errorMessage), 'getOrderBook');
349
+ }
350
+ }
351
+ /**
352
+ * Get recent trades for a trading pair
353
+ *
354
+ * @param symbol - Trading pair symbol (e.g., 'SNEK/USDT')
355
+ * @returns Promise resolving to array of recent trade executions
356
+ * @throws Error if request fails
357
+ */
358
+ async getRecentTrades(symbol) {
359
+ try {
360
+ if (!gateio_utils_1.GateioUtils.isValidSymbol(symbol)) {
361
+ throw new Error(`Invalid symbol format: ${symbol}`);
362
+ }
363
+ const currencyPair = gateio_utils_1.GateioUtils.toGateioSymbol(symbol);
364
+ const response = await this.makePublicRequest('/spot/trades', {
365
+ currency_pair: currencyPair,
366
+ limit: '100',
367
+ });
368
+ if (!Array.isArray(response)) {
369
+ this.logger.warn('Gate.io recent trades returned unexpected format', { response });
370
+ return [];
371
+ }
372
+ return response.map((tradeData) => this.dataMapper.mapTrade(tradeData, currencyPair));
373
+ }
374
+ catch (error) {
375
+ const errorMessage = gateio_utils_1.GateioUtils.mapErrorMessage(error);
376
+ this.logger.error('Get recent trades failed', { symbol, error: errorMessage });
377
+ this.handleError(new Error(errorMessage), 'getRecentTrades');
378
+ }
379
+ }
380
+ // =============================================================================
381
+ // WebSocket Methods
382
+ // =============================================================================
383
+ /**
384
+ * Connect to Gate.io WebSocket for real-time data
385
+ */
386
+ async connectWebSocket() {
387
+ try {
388
+ if (this.webSocket?.isConnected()) {
389
+ return;
390
+ }
391
+ if (!this.webSocket) {
392
+ this.webSocket = new gateio_websocket_1.GateioWebSocket('wss://api.gateio.ws/ws/v4/');
393
+ }
394
+ await this.webSocket.connectWebSocket();
395
+ }
396
+ catch (error) {
397
+ this.logger.error('Failed to connect Gate.io WebSocket', { error });
398
+ this.handleError(error, 'connectWebSocket');
399
+ }
400
+ }
401
+ /**
402
+ * Disconnect from Gate.io WebSocket
403
+ */
404
+ async disconnectWebSocket() {
405
+ try {
406
+ if (!this.webSocket) {
407
+ return;
408
+ }
409
+ await this.webSocket.disconnectWebSocket();
410
+ this.webSocket = undefined;
411
+ }
412
+ catch (error) {
413
+ this.logger.error('Failed to disconnect Gate.io WebSocket', { error });
414
+ }
415
+ }
416
+ /**
417
+ * Subscribe to real-time ticker updates for a trading pair
418
+ */
419
+ async subscribeTicker(symbol, callback) {
420
+ try {
421
+ if (!this.webSocket) {
422
+ await this.connectWebSocket();
423
+ }
424
+ if (!this.webSocket) {
425
+ throw new Error('Failed to initialize WebSocket connection');
426
+ }
427
+ return this.webSocket.subscribeTicker(symbol, callback);
428
+ }
429
+ catch (error) {
430
+ this.logger.error('Failed to subscribe to ticker', { symbol, error });
431
+ this.handleError(error, 'subscribeTicker');
432
+ }
433
+ }
434
+ /**
435
+ * Subscribe to real-time order book updates for a trading pair
436
+ */
437
+ async subscribeOrderBook(symbol, callback) {
438
+ try {
439
+ if (!this.webSocket) {
440
+ await this.connectWebSocket();
441
+ }
442
+ if (!this.webSocket) {
443
+ throw new Error('Failed to initialize WebSocket connection');
444
+ }
445
+ return this.webSocket.subscribeOrderBook(symbol, callback);
446
+ }
447
+ catch (error) {
448
+ this.logger.error('Failed to subscribe to order book', { symbol, error });
449
+ this.handleError(error, 'subscribeOrderBook');
450
+ }
451
+ }
452
+ /**
453
+ * Subscribe to real-time trade updates for a trading pair
454
+ */
455
+ async subscribeTrades(symbol, callback) {
456
+ try {
457
+ if (!this.webSocket) {
458
+ await this.connectWebSocket();
459
+ }
460
+ if (!this.webSocket) {
461
+ throw new Error('Failed to initialize WebSocket connection');
462
+ }
463
+ return this.webSocket.subscribeTrades(symbol, callback);
464
+ }
465
+ catch (error) {
466
+ this.logger.error('Failed to subscribe to trades', { symbol, error });
467
+ this.handleError(error, 'subscribeTrades');
468
+ }
469
+ }
470
+ /**
471
+ * Subscribe to real-time order updates (user data)
472
+ * Uses Gate.io UserDataStream for authenticated order updates
473
+ */
474
+ async subscribeOrders(callback) {
475
+ try {
476
+ if (!this.userDataStream) {
477
+ await this.connectUserDataStream();
478
+ }
479
+ if (!this.userDataStream) {
480
+ throw new Error('User Data Stream not initialized. Call connectUserDataStream() first.');
481
+ }
482
+ return await this.userDataStream.subscribeUserOrders(callback);
483
+ }
484
+ catch (error) {
485
+ this.logger.error('Failed to subscribe to orders', { error });
486
+ this.handleError(error, 'subscribeOrders');
487
+ return '';
488
+ }
489
+ }
490
+ /**
491
+ * Unsubscribe from a WebSocket subscription
492
+ */
493
+ async unsubscribe(subscriptionId) {
494
+ try {
495
+ if (!this.webSocket) {
496
+ this.logger.warn('No WebSocket instance to unsubscribe from');
497
+ return;
498
+ }
499
+ this.webSocket.unsubscribe(subscriptionId);
500
+ }
501
+ catch (error) {
502
+ this.logger.error('Failed to unsubscribe', { subscriptionId, error });
503
+ }
504
+ }
505
+ /**
506
+ * Check if WebSocket connection is active
507
+ */
508
+ isWebSocketConnected() {
509
+ return this.webSocket?.isConnected() ?? false;
510
+ }
511
+ /**
512
+ * Get current WebSocket connection status
513
+ */
514
+ getWebSocketStatus() {
515
+ return this.webSocket?.getWebSocketStatus() ?? 'disconnected';
516
+ }
517
+ // =============================================================================
518
+ // User Data Stream Methods
519
+ // =============================================================================
520
+ /**
521
+ * Connect to user data stream for real-time account updates
522
+ * Uses dedicated GateioUserDataStream class following Bitget/MEXC pattern
523
+ */
524
+ async connectUserDataStream() {
525
+ try {
526
+ if (!this.auth) {
527
+ throw new Error('Authentication required. Call connect() first.');
528
+ }
529
+ const credentials = this.getCredentials();
530
+ if (!this.userDataStream) {
531
+ this.userDataStream = new gateio_user_stream_1.GateioUserDataStream(credentials);
532
+ }
533
+ await this.userDataStream.connectUserDataStream();
534
+ }
535
+ catch (error) {
536
+ this.handleError(error, 'connectUserDataStream');
537
+ }
538
+ }
539
+ /**
540
+ * Disconnect from user data stream
541
+ */
542
+ async disconnectUserDataStream() {
543
+ try {
544
+ if (this.userDataStream) {
545
+ await this.userDataStream.disconnectUserDataStream();
546
+ this.userDataStream = undefined;
547
+ }
548
+ }
549
+ catch (error) {
550
+ this.handleError(error, 'disconnectUserDataStream');
551
+ }
552
+ }
553
+ /**
554
+ * Subscribe to real-time user order updates
555
+ * Uses Gate.io's spot.orders channel for authenticated order updates
556
+ */
557
+ async subscribeUserOrders(callback) {
558
+ try {
559
+ if (!this.userDataStream) {
560
+ throw new Error('User Data Stream not initialized. Call connectUserDataStream() first.');
561
+ }
562
+ return await this.userDataStream.subscribeUserOrders(callback);
563
+ }
564
+ catch (error) {
565
+ this.handleError(error, 'subscribeUserOrders');
566
+ return '';
567
+ }
568
+ }
569
+ /**
570
+ * Subscribe to real-time user trade executions
571
+ * Uses Gate.io's spot.usertrades channel for authenticated trade updates
572
+ */
573
+ async subscribeUserTrades(callback) {
574
+ try {
575
+ if (!this.userDataStream) {
576
+ throw new Error('User Data Stream not initialized. Call connectUserDataStream() first.');
577
+ }
578
+ return await this.userDataStream.subscribeUserTrades(callback);
579
+ }
580
+ catch (error) {
581
+ this.handleError(error, 'subscribeUserTrades');
582
+ return '';
583
+ }
584
+ }
585
+ /**
586
+ * Check if user data stream is connected
587
+ */
588
+ isUserDataStreamConnected() {
589
+ return this.userDataStream ? this.userDataStream.isUserDataStreamConnected() : false;
590
+ }
591
+ // =============================================================================
592
+ // Private Helper Methods
593
+ // =============================================================================
594
+ /**
595
+ * Make public request to Gate.io API (no authentication required)
596
+ */
597
+ async makePublicRequest(endpoint, params = {}) {
598
+ if (!this.auth) {
599
+ throw new Error('Gate.io connector not authenticated');
600
+ }
601
+ return this.auth.makePublicRequest(endpoint, params);
602
+ }
603
+ }
604
+ exports.GateioConnector = GateioConnector;
605
+ //# sourceMappingURL=gateio-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateio-connector.js","sourceRoot":"","sources":["../../../src/exchanges/gateio/gateio-connector.ts"],"names":[],"mappings":"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"}