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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/dist/cli/cli.js +4 -0
  2. package/dist/cli/cli.js.map +1 -1
  3. package/dist/cli/commands/ohlcv.d.ts +3 -0
  4. package/dist/cli/commands/ohlcv.d.ts.map +1 -0
  5. package/dist/cli/commands/ohlcv.js +115 -0
  6. package/dist/cli/commands/ohlcv.js.map +1 -0
  7. package/dist/cli/commands/wallet.d.ts +7 -0
  8. package/dist/cli/commands/wallet.d.ts.map +1 -0
  9. package/dist/cli/commands/wallet.js +271 -0
  10. package/dist/cli/commands/wallet.js.map +1 -0
  11. package/dist/core/exchange/base-exchange-connector.d.ts +2 -1
  12. package/dist/core/exchange/base-exchange-connector.d.ts.map +1 -1
  13. package/dist/core/exchange/base-exchange-connector.js.map +1 -1
  14. package/dist/exchanges/bitget/bitget-connector.d.ts +11 -1
  15. package/dist/exchanges/bitget/bitget-connector.d.ts.map +1 -1
  16. package/dist/exchanges/bitget/bitget-connector.js +52 -0
  17. package/dist/exchanges/bitget/bitget-connector.js.map +1 -1
  18. package/dist/exchanges/gateio/gateio-connector.d.ts +11 -1
  19. package/dist/exchanges/gateio/gateio-connector.d.ts.map +1 -1
  20. package/dist/exchanges/gateio/gateio-connector.js +54 -0
  21. package/dist/exchanges/gateio/gateio-connector.js.map +1 -1
  22. package/dist/exchanges/kraken/kraken-connector.d.ts +6 -1
  23. package/dist/exchanges/kraken/kraken-connector.d.ts.map +1 -1
  24. package/dist/exchanges/kraken/kraken-connector.js +44 -0
  25. package/dist/exchanges/kraken/kraken-connector.js.map +1 -1
  26. package/dist/exchanges/mexc/mexc-auth.d.ts +1 -0
  27. package/dist/exchanges/mexc/mexc-auth.d.ts.map +1 -1
  28. package/dist/exchanges/mexc/mexc-auth.js +4 -1
  29. package/dist/exchanges/mexc/mexc-auth.js.map +1 -1
  30. package/dist/exchanges/mexc/mexc-connector.d.ts +6 -1
  31. package/dist/exchanges/mexc/mexc-connector.d.ts.map +1 -1
  32. package/dist/exchanges/mexc/mexc-connector.js +37 -0
  33. package/dist/exchanges/mexc/mexc-connector.js.map +1 -1
  34. package/dist/index.d.ts +1 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +25 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/types/market.d.ts +15 -0
  39. package/dist/types/market.d.ts.map +1 -1
  40. package/dist/x402/crypto.d.ts +79 -0
  41. package/dist/x402/crypto.d.ts.map +1 -0
  42. package/dist/x402/crypto.js +300 -0
  43. package/dist/x402/crypto.js.map +1 -0
  44. package/dist/x402/evm.d.ts +41 -0
  45. package/dist/x402/evm.d.ts.map +1 -0
  46. package/dist/x402/evm.js +229 -0
  47. package/dist/x402/evm.js.map +1 -0
  48. package/dist/x402/handler.d.ts +53 -0
  49. package/dist/x402/handler.d.ts.map +1 -0
  50. package/dist/x402/handler.js +233 -0
  51. package/dist/x402/handler.js.map +1 -0
  52. package/dist/x402/index.d.ts +29 -0
  53. package/dist/x402/index.d.ts.map +1 -0
  54. package/dist/x402/index.js +67 -0
  55. package/dist/x402/index.js.map +1 -0
  56. package/dist/x402/types.d.ts +185 -0
  57. package/dist/x402/types.d.ts.map +1 -0
  58. package/dist/x402/types.js +7 -0
  59. package/dist/x402/types.js.map +1 -0
  60. package/dist/x402/wallet.d.ts +65 -0
  61. package/dist/x402/wallet.d.ts.map +1 -0
  62. package/dist/x402/wallet.js +282 -0
  63. package/dist/x402/wallet.js.map +1 -0
  64. package/package.json +1 -1
  65. package/dist/cli/commands/grid.d.ts +0 -3
  66. package/dist/cli/commands/grid.d.ts.map +0 -1
  67. package/dist/cli/commands/grid.js +0 -103
  68. package/dist/cli/commands/grid.js.map +0 -1
  69. package/dist/cli/commands/multi-trade.d.ts +0 -3
  70. package/dist/cli/commands/multi-trade.d.ts.map +0 -1
  71. package/dist/cli/commands/multi-trade.js +0 -175
  72. package/dist/cli/commands/multi-trade.js.map +0 -1
  73. package/dist/cli/pool-discovery.d.ts +0 -56
  74. package/dist/cli/pool-discovery.d.ts.map +0 -1
  75. package/dist/cli/pool-discovery.js +0 -283
  76. package/dist/cli/pool-discovery.js.map +0 -1
  77. package/dist/core/price-aggregation/price-cache.d.ts +0 -55
  78. package/dist/core/price-aggregation/price-cache.d.ts.map +0 -1
  79. package/dist/core/price-aggregation/price-cache.js +0 -152
  80. package/dist/core/price-aggregation/price-cache.js.map +0 -1
  81. package/dist/examples/mexc-connector-comprehensive-test.d.ts +0 -15
  82. package/dist/examples/mexc-connector-comprehensive-test.d.ts.map +0 -1
  83. package/dist/examples/mexc-connector-comprehensive-test.js +0 -514
  84. package/dist/examples/mexc-connector-comprehensive-test.js.map +0 -1
  85. package/dist/examples/mexc-order-update-test.d.ts +0 -4
  86. package/dist/examples/mexc-order-update-test.d.ts.map +0 -1
  87. package/dist/examples/mexc-order-update-test.js +0 -186
  88. package/dist/examples/mexc-order-update-test.js.map +0 -1
  89. package/dist/examples/mexc-test.d.ts +0 -9
  90. package/dist/examples/mexc-test.d.ts.map +0 -1
  91. package/dist/examples/mexc-test.js +0 -218
  92. package/dist/examples/mexc-test.js.map +0 -1
  93. package/dist/examples/mexc-trades-debug.d.ts +0 -2
  94. package/dist/examples/mexc-trades-debug.d.ts.map +0 -1
  95. package/dist/examples/mexc-trades-debug.js +0 -101
  96. package/dist/examples/mexc-trades-debug.js.map +0 -1
  97. package/dist/examples/mexc-trades-subscription-debug.d.ts +0 -2
  98. package/dist/examples/mexc-trades-subscription-debug.d.ts.map +0 -1
  99. package/dist/examples/mexc-trades-subscription-debug.js +0 -150
  100. package/dist/examples/mexc-trades-subscription-debug.js.map +0 -1
  101. package/dist/examples/mexc-websocket-test.d.ts +0 -8
  102. package/dist/examples/mexc-websocket-test.d.ts.map +0 -1
  103. package/dist/examples/mexc-websocket-test.js +0 -115
  104. package/dist/examples/mexc-websocket-test.js.map +0 -1
  105. package/dist/examples/test-protobuf-status-detection.d.ts +0 -9
  106. package/dist/examples/test-protobuf-status-detection.d.ts.map +0 -1
  107. package/dist/examples/test-protobuf-status-detection.js +0 -83
  108. package/dist/examples/test-protobuf-status-detection.js.map +0 -1
  109. package/dist/exchanges/base-exchange-connector.d.ts +0 -33
  110. package/dist/exchanges/base-exchange-connector.d.ts.map +0 -1
  111. package/dist/exchanges/base-exchange-connector.js +0 -55
  112. package/dist/exchanges/base-exchange-connector.js.map +0 -1
  113. package/dist/exchanges/kraken/test-kraken-websocket.d.ts +0 -19
  114. package/dist/exchanges/kraken/test-kraken-websocket.d.ts.map +0 -1
  115. package/dist/exchanges/kraken/test-kraken-websocket.js +0 -413
  116. package/dist/exchanges/kraken/test-kraken-websocket.js.map +0 -1
  117. package/dist/mcp/resources/index.d.ts +0 -3
  118. package/dist/mcp/resources/index.d.ts.map +0 -1
  119. package/dist/mcp/resources/index.js +0 -11
  120. package/dist/mcp/resources/index.js.map +0 -1
  121. package/dist/mcp/server.d.ts +0 -4
  122. package/dist/mcp/server.d.ts.map +0 -1
  123. package/dist/mcp/server.js +0 -29
  124. package/dist/mcp/server.js.map +0 -1
  125. package/dist/mcp/tools/index.d.ts +0 -3
  126. package/dist/mcp/tools/index.d.ts.map +0 -1
  127. package/dist/mcp/tools/index.js +0 -12
  128. package/dist/mcp/tools/index.js.map +0 -1
  129. package/dist/tests/fixtures/test-helpers.d.ts +0 -5
  130. package/dist/tests/fixtures/test-helpers.d.ts.map +0 -1
  131. package/dist/tests/fixtures/test-helpers.js +0 -8
  132. package/dist/tests/fixtures/test-helpers.js.map +0 -1
  133. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts +0 -2
  134. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts.map +0 -1
  135. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js +0 -237
  136. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js.map +0 -1
  137. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts +0 -2
  138. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts.map +0 -1
  139. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js +0 -57
  140. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js.map +0 -1
  141. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts +0 -2
  142. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts.map +0 -1
  143. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js +0 -141
  144. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js.map +0 -1
  145. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts +0 -2
  146. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts.map +0 -1
  147. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js +0 -375
  148. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js.map +0 -1
  149. package/dist/tests/unit/cli/exchange-factory.test.d.ts +0 -2
  150. package/dist/tests/unit/cli/exchange-factory.test.d.ts.map +0 -1
  151. package/dist/tests/unit/cli/exchange-factory.test.js +0 -148
  152. package/dist/tests/unit/cli/exchange-factory.test.js.map +0 -1
  153. package/dist/tests/unit/config/environment.test.d.ts +0 -2
  154. package/dist/tests/unit/config/environment.test.d.ts.map +0 -1
  155. package/dist/tests/unit/config/environment.test.js +0 -158
  156. package/dist/tests/unit/config/environment.test.js.map +0 -1
  157. package/dist/tests/unit/config/launcher-config.test.d.ts +0 -2
  158. package/dist/tests/unit/config/launcher-config.test.d.ts.map +0 -1
  159. package/dist/tests/unit/config/launcher-config.test.js +0 -117
  160. package/dist/tests/unit/config/launcher-config.test.js.map +0 -1
  161. package/dist/tests/unit/config/price-aggregation.test.d.ts +0 -2
  162. package/dist/tests/unit/config/price-aggregation.test.d.ts.map +0 -1
  163. package/dist/tests/unit/config/price-aggregation.test.js +0 -144
  164. package/dist/tests/unit/config/price-aggregation.test.js.map +0 -1
  165. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts +0 -2
  166. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts.map +0 -1
  167. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js +0 -191
  168. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js.map +0 -1
  169. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts +0 -2
  170. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts.map +0 -1
  171. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js +0 -324
  172. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js.map +0 -1
  173. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts +0 -2
  174. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts.map +0 -1
  175. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js +0 -177
  176. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js.map +0 -1
  177. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts +0 -2
  178. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts.map +0 -1
  179. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js +0 -168
  180. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js.map +0 -1
  181. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts +0 -2
  182. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts.map +0 -1
  183. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js +0 -217
  184. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js.map +0 -1
  185. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts +0 -2
  186. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts.map +0 -1
  187. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js +0 -229
  188. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js.map +0 -1
  189. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts +0 -2
  190. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts.map +0 -1
  191. package/dist/tests/unit/core/risk-management/risk-manager.test.js +0 -194
  192. package/dist/tests/unit/core/risk-management/risk-manager.test.js.map +0 -1
  193. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts +0 -2
  194. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts.map +0 -1
  195. package/dist/tests/unit/core/strategy/base-strategy.test.js +0 -254
  196. package/dist/tests/unit/core/strategy/base-strategy.test.js.map +0 -1
  197. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts +0 -2
  198. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts.map +0 -1
  199. package/dist/tests/unit/core/strategy/strategy-factory.test.js +0 -213
  200. package/dist/tests/unit/core/strategy/strategy-factory.test.js.map +0 -1
  201. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts +0 -2
  202. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts.map +0 -1
  203. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js +0 -452
  204. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js.map +0 -1
  205. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts +0 -2
  206. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts.map +0 -1
  207. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js +0 -1419
  208. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js.map +0 -1
  209. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts +0 -2
  210. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts.map +0 -1
  211. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js +0 -435
  212. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js.map +0 -1
  213. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts +0 -2
  214. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts.map +0 -1
  215. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js +0 -314
  216. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js.map +0 -1
  217. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts +0 -2
  218. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts.map +0 -1
  219. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js +0 -178
  220. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js.map +0 -1
  221. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts +0 -2
  222. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts.map +0 -1
  223. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js +0 -502
  224. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js.map +0 -1
  225. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts +0 -2
  226. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts.map +0 -1
  227. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js +0 -317
  228. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js.map +0 -1
  229. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts +0 -2
  230. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts.map +0 -1
  231. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js +0 -843
  232. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js.map +0 -1
  233. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts +0 -2
  234. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts.map +0 -1
  235. package/dist/tests/unit/strategies/grid/grid-calculator.test.js +0 -67
  236. package/dist/tests/unit/strategies/grid/grid-calculator.test.js.map +0 -1
  237. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts +0 -2
  238. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts.map +0 -1
  239. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js +0 -211
  240. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js.map +0 -1
  241. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts +0 -2
  242. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts.map +0 -1
  243. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js +0 -197
  244. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js.map +0 -1
  245. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts +0 -2
  246. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts.map +0 -1
  247. package/dist/tests/unit/strategies/grid/grid-strategy.test.js +0 -429
  248. package/dist/tests/unit/strategies/grid/grid-strategy.test.js.map +0 -1
  249. package/dist/tests/unit/utils/logger.test.d.ts +0 -2
  250. package/dist/tests/unit/utils/logger.test.d.ts.map +0 -1
  251. package/dist/tests/unit/utils/logger.test.js +0 -260
  252. package/dist/tests/unit/utils/logger.test.js.map +0 -1
  253. package/dist/tests/unit/utils/symbol-utils.test.d.ts +0 -2
  254. package/dist/tests/unit/utils/symbol-utils.test.d.ts.map +0 -1
  255. package/dist/tests/unit/utils/symbol-utils.test.js +0 -178
  256. package/dist/tests/unit/utils/symbol-utils.test.js.map +0 -1
  257. package/dist/types/price-aggregation.d.ts +0 -31
  258. package/dist/types/price-aggregation.d.ts.map +0 -1
  259. package/dist/types/price-aggregation.js +0 -6
  260. package/dist/types/price-aggregation.js.map +0 -1
  261. package/dist/utils/crypto.d.ts +0 -15
  262. package/dist/utils/crypto.d.ts.map +0 -1
  263. package/dist/utils/crypto.js +0 -50
  264. package/dist/utils/crypto.js.map +0 -1
  265. package/dist/utils/validation.d.ts +0 -36
  266. package/dist/utils/validation.d.ts.map +0 -1
  267. package/dist/utils/validation.js +0 -174
  268. package/dist/utils/validation.js.map +0 -1
@@ -1,103 +0,0 @@
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.gridCommand = void 0;
7
- const commander_1 = require("commander");
8
- const exchange_factory_1 = require("../exchange-factory");
9
- const error_handler_1 = require("../utils/error-handler");
10
- const strategy_factory_1 = require("../../core/strategy/strategy-factory");
11
- const chalk_1 = __importDefault(require("chalk"));
12
- exports.gridCommand = new commander_1.Command('grid')
13
- .description('Start grid trading strategy on specified exchange and symbol')
14
- .requiredOption('-e, --exchange <exchange>', 'Exchange to trade on (mexc)')
15
- .requiredOption('-s, --symbol <symbol>', 'Trading pair (INDYUSDT, INDY/USDT, BTCUSDT, etc.)')
16
- .option('--levels <number>', 'Number of grid levels each side', '5')
17
- .option('--spacing <decimal>', 'Spacing between levels as decimal (0.02 = 2%)', '0.02')
18
- .option('--size <number>', 'Order size in quote currency', '50')
19
- .option('--confidence <decimal>', 'Minimum price confidence (0.6 = 60%)', '0.6')
20
- .option('--deviation <decimal>', 'Price deviation threshold (0.015 = 1.5%)', '0.015')
21
- .option('--debounce <ms>', 'Adjustment debounce time in ms', '2000')
22
- .option('--max-position <decimal>', 'Maximum position size as % of balance (0.8 = 80%)', '0.8')
23
- .option('--safety-reserve <decimal>', 'Safety reserve as % of balance (0.2 = 20%)', '0.2')
24
- .option('--dry-run', 'Simulate trading without placing real orders')
25
- .action(async (options) => {
26
- let strategy = null;
27
- const shutdown = async (signal) => {
28
- console.log(chalk_1.default.yellow(`\n${signal} received. Stopping grid strategy...`));
29
- if (strategy) {
30
- try {
31
- await strategy.stop();
32
- console.log(chalk_1.default.green('Grid strategy stopped successfully.'));
33
- }
34
- catch (error) {
35
- console.error(chalk_1.default.red('Error stopping strategy:'), error);
36
- }
37
- }
38
- await exchange_factory_1.ExchangeFactory.disconnectAll();
39
- process.exit(0);
40
- };
41
- process.on('SIGTERM', () => shutdown('SIGTERM'));
42
- process.on('SIGINT', () => shutdown('SIGINT'));
43
- await (0, error_handler_1.executeCommand)(async () => {
44
- try {
45
- console.log(chalk_1.default.blue('🚀 Starting Grid Trading Strategy'));
46
- console.log(chalk_1.default.gray(`Exchange: ${options.exchange.toUpperCase()}`));
47
- console.log(chalk_1.default.gray(`Symbol: ${options.symbol.toUpperCase()}`));
48
- console.log(chalk_1.default.gray(`Grid Levels: ${options.levels} each side`));
49
- console.log(chalk_1.default.gray(`Grid Spacing: ${(parseFloat(options.spacing) * 100).toFixed(1)}%`));
50
- console.log(chalk_1.default.gray(`Order Size: $${options.size}`));
51
- console.log(chalk_1.default.gray(`Max Position: ${(parseFloat(options.maxPosition) * 100).toFixed(0)}%`));
52
- console.log(chalk_1.default.gray(`Safety Reserve: ${(parseFloat(options.safetyReserve) * 100).toFixed(0)}%`));
53
- if (options.dryRun) {
54
- console.log(chalk_1.default.yellow('⚠️ DRY RUN MODE - No real orders will be placed'));
55
- }
56
- const config = {
57
- strategy: 'grid',
58
- exchange: options.exchange,
59
- symbol: options.symbol
60
- };
61
- const params = {
62
- gridLevels: parseInt(options.levels),
63
- gridSpacing: parseFloat(options.spacing),
64
- orderSize: parseFloat(options.size),
65
- minConfidence: parseFloat(options.confidence),
66
- priceDeviationThreshold: parseFloat(options.deviation),
67
- adjustmentDebounce: parseInt(options.debounce),
68
- maxPositionSize: parseFloat(options.maxPosition),
69
- safetyReservePercentage: parseFloat(options.safetyReserve)
70
- };
71
- strategy = await strategy_factory_1.StrategyFactory.create(config, params);
72
- console.log(chalk_1.default.green('✅ Grid strategy initialized successfully'));
73
- console.log(chalk_1.default.blue('🔄 Starting grid strategy...'));
74
- await strategy.start();
75
- console.log(chalk_1.default.green('✅ Grid strategy is now running!'));
76
- console.log(chalk_1.default.gray('Press Ctrl+C to stop the strategy gracefully'));
77
- await new Promise(() => { });
78
- }
79
- catch (error) {
80
- (0, error_handler_1.handleError)(error, 'Grid Strategy');
81
- }
82
- }, 'grid strategy');
83
- });
84
- exports.gridCommand.addHelpText('after', `
85
- Examples:
86
- $ openmm grid --exchange mexc --symbol INDYUSDT # Start INDY/USDT grid with defaults
87
- $ openmm grid --exchange mexc --symbol INDY/USDT --levels 7 --size 100 # Custom parameters
88
- $ openmm grid --exchange mexc --symbol BTCUSDT --spacing 0.015 # BTC grid with 1.5% spacing
89
- $ openmm grid --exchange mexc --symbol INDYUSDT --dry-run # Test mode (no real orders)
90
-
91
- Grid Strategy Parameters:
92
- --levels: Number of buy and sell orders each side (default: 5, range: 1-20)
93
- --spacing: Price spacing between grid levels (default: 0.02 = 2%)
94
- --size: Order size in quote currency like USDT (default: 50)
95
- --confidence: Minimum price confidence to trade (default: 0.6 = 60%)
96
- --deviation: Price movement % to trigger grid recreation (default: 0.015 = 1.5%)
97
- --debounce: Delay between grid adjustments in ms (default: 2000ms)
98
- --max-position: Maximum position size as % of balance (default: 0.8 = 80%)
99
- --safety-reserve: Safety reserve as % of balance (default: 0.2 = 20%)
100
-
101
- Note: Ensure MEXC_API_KEY and MEXC_SECRET_KEY environment variables are set.
102
- `);
103
- //# sourceMappingURL=grid.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"grid.js","sourceRoot":"","sources":["../../../src/cli/commands/grid.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const multiTradeCommand: Command;
3
- //# sourceMappingURL=multi-trade.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multi-trade.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/multi-trade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,eAAO,MAAM,iBAAiB,SA+J1B,CAAC"}
@@ -1,175 +0,0 @@
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.multiTradeCommand = void 0;
7
- const commander_1 = require("commander");
8
- const exchange_factory_1 = require("../exchange-factory");
9
- const error_handler_1 = require("../utils/error-handler");
10
- const strategy_factory_1 = require("../../core/strategy/strategy-factory");
11
- const chalk_1 = __importDefault(require("chalk"));
12
- exports.multiTradeCommand = new commander_1.Command('multi-trade')
13
- .description('Start trading with the same strategy across multiple exchanges simultaneously')
14
- .requiredOption('-s, --strategy <strategy>', 'Trading strategy to use (grid)')
15
- .requiredOption('--exchanges <exchanges>', 'Comma-separated exchanges (e.g., mexc,bitget,gateio)')
16
- .requiredOption('--symbol <symbol>', 'Trading pair (SNEK/USDT, INDY/USDT, etc.)')
17
- .option('--levels <number>', 'Grid: Number of levels each side (default: 5)', '5')
18
- .option('--spacing <decimal>', 'Grid: Spacing between levels as decimal (0.02 = 2%)', '0.02')
19
- .option('--size <number>', 'Grid: Order size in quote currency (default: 50)', '50')
20
- .option('--confidence <decimal>', 'Grid: Minimum price confidence (0.6 = 60%)', '0.6')
21
- .option('--deviation <decimal>', 'Grid: Price deviation threshold (0.015 = 1.5%)', '0.015')
22
- .option('--debounce <ms>', 'Grid: Adjustment debounce time in ms (default: 2000)', '2000')
23
- .option('--max-position <decimal>', 'Grid: Maximum position size as % of balance (0.8 = 80%)', '0.8')
24
- .option('--safety-reserve <decimal>', 'Grid: Safety reserve as % of balance (0.2 = 20%)', '0.2')
25
- .option('--dry-run', 'Simulate trading without placing real orders')
26
- .option('--stagger <ms>', 'Stagger start time between exchanges in ms (default: 1000)', '1000')
27
- .action(async (options) => {
28
- const strategies = [];
29
- let isShuttingDown = false;
30
- const shutdown = async (signal) => {
31
- if (isShuttingDown)
32
- return;
33
- isShuttingDown = true;
34
- console.log(chalk_1.default.yellow(`\n${signal} received. Stopping all strategies...`));
35
- const stopPromises = strategies.map(async ({ exchange, strategy }) => {
36
- try {
37
- console.log(chalk_1.default.gray(`Stopping ${exchange.toUpperCase()} strategy...`));
38
- await strategy.stop();
39
- console.log(chalk_1.default.green(`✅ ${exchange.toUpperCase()} strategy stopped`));
40
- }
41
- catch (error) {
42
- console.error(chalk_1.default.red(`❌ Error stopping ${exchange.toUpperCase()} strategy:`), error);
43
- }
44
- });
45
- await Promise.allSettled(stopPromises);
46
- await exchange_factory_1.ExchangeFactory.disconnectAll();
47
- console.log(chalk_1.default.green('All strategies stopped successfully.'));
48
- process.exit(0);
49
- };
50
- process.on('SIGTERM', () => shutdown('SIGTERM'));
51
- process.on('SIGINT', () => shutdown('SIGINT'));
52
- await (0, error_handler_1.executeCommand)(async () => {
53
- const strategyType = options.strategy.toLowerCase();
54
- const exchanges = options.exchanges.split(',').map((ex) => ex.trim());
55
- const staggerMs = parseInt(options.stagger);
56
- const validExchanges = ['mexc', 'bitget', 'gateio'];
57
- for (const exchange of exchanges) {
58
- if (!validExchanges.includes(exchange)) {
59
- throw new Error(`Invalid exchange: ${exchange}. Supported: ${validExchanges.join(', ')}`);
60
- }
61
- }
62
- try {
63
- console.log(chalk_1.default.blue('🚀 Starting Multi-Exchange Trading Strategy'));
64
- console.log(chalk_1.default.gray(`Strategy: ${options.strategy.toUpperCase()}`));
65
- console.log(chalk_1.default.gray(`Exchanges: ${exchanges.map(ex => ex.toUpperCase()).join(', ')}`));
66
- console.log(chalk_1.default.gray(`Symbol: ${options.symbol.toUpperCase()}`));
67
- if (options.dryRun) {
68
- console.log(chalk_1.default.yellow('⚠️ DRY RUN MODE - No real orders will be placed'));
69
- }
70
- if (staggerMs > 0) {
71
- console.log(chalk_1.default.gray(`Stagger Time: ${staggerMs}ms between exchanges`));
72
- }
73
- let params = {};
74
- if (strategyType === 'grid') {
75
- console.log(chalk_1.default.gray(`Grid Levels: ${options.levels} each side`));
76
- console.log(chalk_1.default.gray(`Grid Spacing: ${(parseFloat(options.spacing) * 100).toFixed(1)}%`));
77
- console.log(chalk_1.default.gray(`Order Size: $${options.size} per exchange`));
78
- console.log(chalk_1.default.gray(`Max Position: ${(parseFloat(options.maxPosition) * 100).toFixed(0)}%`));
79
- console.log(chalk_1.default.gray(`Safety Reserve: ${(parseFloat(options.safetyReserve) * 100).toFixed(0)}%`));
80
- params = {
81
- gridLevels: parseInt(options.levels),
82
- gridSpacing: parseFloat(options.spacing),
83
- orderSize: parseFloat(options.size),
84
- minConfidence: parseFloat(options.confidence),
85
- priceDeviationThreshold: parseFloat(options.deviation),
86
- adjustmentDebounce: parseInt(options.debounce),
87
- maxPositionSize: parseFloat(options.maxPosition),
88
- safetyReservePercentage: parseFloat(options.safetyReserve),
89
- };
90
- }
91
- console.log(chalk_1.default.blue('⚙️ Creating strategies for all exchanges...'));
92
- for (const exchange of exchanges) {
93
- const config = {
94
- strategy: strategyType,
95
- exchange,
96
- symbol: options.symbol,
97
- };
98
- console.log(chalk_1.default.gray(`Creating ${exchange.toUpperCase()} strategy...`));
99
- const strategy = await strategy_factory_1.StrategyFactory.create(config, params);
100
- strategies.push({
101
- exchange,
102
- strategy,
103
- config,
104
- params,
105
- });
106
- console.log(chalk_1.default.green(`✅ ${exchange.toUpperCase()} strategy initialized`));
107
- }
108
- console.log(chalk_1.default.green(`✅ All ${strategies.length} strategies initialized successfully`));
109
- console.log(chalk_1.default.blue('🔄 Starting all strategies...'));
110
- for (let i = 0; i < strategies.length; i++) {
111
- const { exchange, strategy } = strategies[i];
112
- if (i > 0 && staggerMs > 0) {
113
- console.log(chalk_1.default.gray(`Waiting ${staggerMs}ms before starting ${exchange.toUpperCase()}...`));
114
- await new Promise(resolve => setTimeout(resolve, staggerMs));
115
- }
116
- console.log(chalk_1.default.blue(`🚀 Starting ${exchange.toUpperCase()} strategy...`));
117
- await strategy.start();
118
- console.log(chalk_1.default.green(`✅ ${exchange.toUpperCase()} strategy is running!`));
119
- }
120
- console.log(chalk_1.default.green('🎉 All strategies are now running simultaneously!'));
121
- console.log(chalk_1.default.gray('Press Ctrl+C to stop all strategies gracefully'));
122
- console.log(chalk_1.default.blue('\n📊 Active Strategies:'));
123
- strategies.forEach(({ exchange }) => {
124
- console.log(chalk_1.default.green(` ✅ ${exchange.toUpperCase()}: ${options.symbol} ${options.strategy.toUpperCase()}`));
125
- });
126
- console.log('');
127
- await new Promise(() => { });
128
- }
129
- catch (error) {
130
- isShuttingDown = true;
131
- await Promise.allSettled(strategies.map(({ strategy }) => strategy.stop().catch(() => { })));
132
- (0, error_handler_1.handleError)(error, 'Multi-Exchange Trading Strategy');
133
- }
134
- }, 'multi-exchange trading strategy');
135
- });
136
- exports.multiTradeCommand.addHelpText('after', `
137
- Examples:
138
- $ openmm multi-trade --strategy grid --exchanges mexc,bitget,gateio --symbol SNEK/USDT
139
- # Run SNEK/USDT grid on all three exchanges simultaneously
140
-
141
- $ openmm multi-trade --strategy grid --exchanges mexc,bitget --symbol INDY/USDT --levels 10
142
- # Run INDY/USDT grid on MEXC and Bitget with 10 levels
143
-
144
- $ openmm multi-trade --strategy grid --exchanges bitget,gateio --symbol BTC/USDT --size 100 --spacing 0.01
145
- # Run BTC/USDT grid on Bitget and Gate.io with $100 orders and 1% spacing
146
-
147
- $ openmm multi-trade --strategy grid --exchanges mexc,gateio --symbol SNEK/USDT --stagger 2000
148
- # Start MEXC first, then Gate.io 2 seconds later
149
-
150
- $ openmm multi-trade --strategy grid --exchanges mexc,bitget,gateio --symbol SNEK/USDT --dry-run
151
- # Test mode across all exchanges without real orders
152
-
153
- Multi-Exchange Strategy Features:
154
- • Simultaneous execution across multiple exchanges
155
- • Independent risk management per exchange
156
- • Coordinated shutdown with Ctrl+C
157
- • Optional staggered start times
158
- • Real-time status monitoring
159
- • Unified parameter configuration
160
-
161
- Stagger Option:
162
- --stagger: Delay between starting each exchange (in milliseconds)
163
- Use this to avoid hitting API rate limits during initialization
164
-
165
- Exchange Combinations:
166
- • All three: mexc,bitget,gateio
167
- • Any two: mexc,bitget or mexc,gateio or bitget,gateio
168
- • Single exchange: Use regular 'trade' command instead
169
-
170
- Note: Each exchange requires its own API credentials:
171
- - MEXC: MEXC_API_KEY and MEXC_SECRET_KEY
172
- - Bitget: BITGET_API_KEY, BITGET_SECRET, and BITGET_PASSPHRASE
173
- - Gate.io: GATEIO_API_KEY and GATEIO_SECRET
174
- `);
175
- //# sourceMappingURL=multi-trade.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multi-trade.js","sourceRoot":"","sources":["../../../src/cli/commands/multi-trade.ts"],"names":[],"mappings":"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"}
@@ -1,56 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Pool Discovery CLI
4
- * Command-line tool to discover Cardano liquidity pool identifiers and metrics
5
- * for any native token to be used in Market Making strategies
6
- */
7
- import { CardanoTokenConfig } from '../types/price';
8
- interface PoolInfo {
9
- identifier: string;
10
- dex: string;
11
- tvl: number;
12
- reserveA: number;
13
- reserveB: number;
14
- address: string;
15
- isActive: boolean;
16
- }
17
- interface DiscoveryResult {
18
- token: string;
19
- policyId: string;
20
- assetName: string;
21
- totalPools: number;
22
- totalLiquidity: number;
23
- pools: PoolInfo[];
24
- recommendedIdentifiers: string[];
25
- }
26
- declare class PoolDiscoveryCLI {
27
- private poolDiscovery;
28
- private irisClient;
29
- constructor();
30
- /**
31
- * Main discovery function for any Cardano native token
32
- */
33
- discoverTokenPools(tokenSymbol: string, options?: {
34
- limit?: number;
35
- minLiquidity?: number;
36
- showAll?: boolean;
37
- }): Promise<DiscoveryResult>;
38
- /**
39
- * Display discovery results in a formatted table
40
- */
41
- displayResults(result: DiscoveryResult): void;
42
- /**
43
- * Get live price information for discovered pools
44
- */
45
- getPoolPrices(identifiers: string[]): Promise<void>;
46
- /**
47
- * Format currency with K/M suffixes
48
- */
49
- private formatCurrency;
50
- /**
51
- * Add a new token configuration (for advanced users)
52
- */
53
- suggestTokenConfig(policyId: string, assetNameHex: string, symbol: string): CardanoTokenConfig;
54
- }
55
- export { PoolDiscoveryCLI, DiscoveryResult, PoolInfo };
56
- //# sourceMappingURL=pool-discovery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pool-discovery.d.ts","sourceRoot":"","sources":["../../src/cli/pool-discovery.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAKH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,UAAU,QAAQ;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,sBAAsB,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,cAAM,gBAAgB;IACpB,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,UAAU,CAAgB;;IAOlC;;OAEG;IACG,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE;QACrD,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;KACd,GAAG,OAAO,CAAC,eAAe,CAAC;IAgEjC;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAkD7C;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BzD;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB;CAsB/F;AAiHD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC"}
@@ -1,283 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- /**
4
- * Pool Discovery CLI
5
- * Command-line tool to discover Cardano liquidity pool identifiers and metrics
6
- * for any native token to be used in Market Making strategies
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.PoolDiscoveryCLI = void 0;
10
- const iris_pool_discovery_1 = require("../core/price-aggregation/iris-pool-discovery");
11
- const iris_api_client_1 = require("../core/price-aggregation/iris-api-client");
12
- const price_aggregation_1 = require("../config/price-aggregation");
13
- class PoolDiscoveryCLI {
14
- constructor() {
15
- this.poolDiscovery = new iris_pool_discovery_1.IrisPoolDiscovery();
16
- this.irisClient = new iris_api_client_1.IrisApiClient();
17
- }
18
- /**
19
- * Main discovery function for any Cardano native token
20
- */
21
- async discoverTokenPools(tokenSymbol, options = {}) {
22
- const symbol = tokenSymbol.toUpperCase();
23
- if (!(0, price_aggregation_1.isTokenSupported)(symbol)) {
24
- throw new Error(`Unsupported token: ${symbol}. Supported tokens: ${(0, price_aggregation_1.getSupportedTokens)().join(', ')}`);
25
- }
26
- const tokenConfig = (0, price_aggregation_1.getTokenConfig)(symbol);
27
- const { limit = 10, minLiquidity, showAll = false } = options;
28
- console.log(`🔍 Discovering liquidity pools for ${symbol} token...`);
29
- console.log(`Policy ID: ${tokenConfig.policyId}`);
30
- console.log(`Asset Name (hex): ${tokenConfig.assetName}`);
31
- console.log('─'.repeat(80));
32
- try {
33
- // Discover all pools for the token
34
- const pools = await this.poolDiscovery.discoverPools('lovelace', tokenConfig);
35
- // Filter by minimum liquidity if specified
36
- const filteredPools = minLiquidity
37
- ? pools.filter(pool => Number(pool.state?.tvl || 0) >= minLiquidity)
38
- : pools;
39
- // Sort by TVL (highest first) and apply limit
40
- const sortedPools = filteredPools
41
- .sort((a, b) => Number(b.state?.tvl || 0) - Number(a.state?.tvl || 0))
42
- .slice(0, showAll ? filteredPools.length : limit);
43
- const totalLiquidity = pools.reduce((sum, pool) => sum + Number(pool.state?.tvl || 0), 0);
44
- // Convert to CLI-friendly format
45
- const poolInfos = sortedPools.map(pool => ({
46
- identifier: pool.identifier || 'N/A',
47
- dex: pool.dex || 'Unknown',
48
- tvl: Number(pool.state?.tvl || 0),
49
- reserveA: Number(pool.state?.reserveA || 0),
50
- reserveB: Number(pool.state?.reserveB || 0),
51
- address: pool.address || 'N/A',
52
- isActive: pool.isActive || false
53
- }));
54
- // Get recommended identifiers (top 3 by TVL)
55
- const recommendedIdentifiers = poolInfos
56
- .slice(0, 3)
57
- .filter(pool => pool.isActive)
58
- .map(pool => pool.identifier);
59
- return {
60
- token: symbol,
61
- policyId: tokenConfig.policyId,
62
- assetName: tokenConfig.assetName,
63
- totalPools: pools.length,
64
- totalLiquidity,
65
- pools: poolInfos,
66
- recommendedIdentifiers
67
- };
68
- }
69
- catch (error) {
70
- throw new Error(`Pool discovery failed for ${symbol}: ${error}`);
71
- }
72
- }
73
- /**
74
- * Display discovery results in a formatted table
75
- */
76
- displayResults(result) {
77
- console.log(`\n📊 ${result.token} Liquidity Pool Discovery Results`);
78
- console.log('═'.repeat(80));
79
- console.log(`Total Pools Found: ${result.totalPools}`);
80
- console.log(`Total Liquidity: ${this.formatCurrency(result.totalLiquidity)}`);
81
- console.log(`Token Policy ID: ${result.policyId}`);
82
- console.log(`Asset Name (hex): ${result.assetName}`);
83
- if (result.pools.length === 0) {
84
- console.log('\n❌ No liquidity pools found for this token.');
85
- return;
86
- }
87
- console.log('\n🏊 Pool Details:');
88
- console.log('─'.repeat(80));
89
- console.log('Rank | DEX | TVL | Identifier | Active');
90
- console.log('─'.repeat(80));
91
- result.pools.forEach((pool, index) => {
92
- const rank = `${index + 1}`.padStart(4);
93
- const dex = pool.dex.substring(0, 12).padEnd(12);
94
- const tvl = this.formatCurrency(pool.tvl).padStart(12);
95
- const identifier = pool.identifier.substring(0, 29).padEnd(29);
96
- const status = pool.isActive ? '✅' : '❌';
97
- console.log(`${rank} | ${dex} | ${tvl} | ${identifier} | ${status}`);
98
- });
99
- console.log('\n🎯 Recommended Pool Identifiers for Market Making:');
100
- console.log('─'.repeat(60));
101
- if (result.recommendedIdentifiers.length === 0) {
102
- console.log('❌ No active pools with sufficient liquidity found.');
103
- }
104
- else {
105
- result.recommendedIdentifiers.forEach((id, index) => {
106
- const pool = result.pools.find(p => p.identifier === id);
107
- console.log(`${index + 1}. ${id}`);
108
- console.log(` DEX: ${pool?.dex}, TVL: ${this.formatCurrency(pool?.tvl || 0)}`);
109
- });
110
- }
111
- console.log('\n💡 Usage Instructions:');
112
- console.log('─'.repeat(40));
113
- console.log('1. Use the recommended pool identifiers in your market making strategy');
114
- console.log('2. Higher TVL pools typically offer better price stability');
115
- console.log('3. Monitor multiple pools for price aggregation and arbitrage opportunities');
116
- console.log(`4. Current minimum liquidity threshold: ${this.formatCurrency((0, price_aggregation_1.getTokenConfig)(result.token).minLiquidityThreshold || 0)}`);
117
- }
118
- /**
119
- * Get live price information for discovered pools
120
- */
121
- async getPoolPrices(identifiers) {
122
- if (identifiers.length === 0) {
123
- console.log('❌ No pool identifiers provided');
124
- return;
125
- }
126
- console.log('\n💰 Getting live prices from Iris API...');
127
- try {
128
- const prices = await this.irisClient.fetchPrices(identifiers, 'OpenMM-PoolDiscovery/1.0');
129
- console.log('─'.repeat(50));
130
- console.log('Pool ID | Price (ADA)');
131
- console.log('─'.repeat(50));
132
- identifiers.forEach((id, index) => {
133
- const price = prices[index] || 0;
134
- const shortId = id.substring(0, 33).padEnd(33);
135
- console.log(`${shortId} | ${price.toFixed(8)}`);
136
- });
137
- const avgPrice = prices.reduce((sum, p) => sum + p, 0) / prices.length;
138
- console.log('─'.repeat(50));
139
- console.log(`Average Price: ${avgPrice.toFixed(8)} ADA per token`);
140
- }
141
- catch (error) {
142
- console.log(`❌ Failed to fetch prices: ${error}`);
143
- }
144
- }
145
- /**
146
- * Format currency with K/M suffixes
147
- */
148
- formatCurrency(amount) {
149
- if (amount === 0)
150
- return '$0';
151
- if (amount >= 1000000) {
152
- return `$${(amount / 1000000).toFixed(1)}M`;
153
- }
154
- if (amount >= 1000) {
155
- return `$${(amount / 1000).toFixed(1)}K`;
156
- }
157
- return `$${amount.toFixed(0)}`;
158
- }
159
- /**
160
- * Add a new token configuration (for advanced users)
161
- */
162
- suggestTokenConfig(policyId, assetNameHex, symbol) {
163
- console.log('\n🔧 Token Configuration for Custom Token:');
164
- console.log('─'.repeat(50));
165
- console.log(`Symbol: ${symbol.toUpperCase()}`);
166
- console.log(`Policy ID: ${policyId}`);
167
- console.log(`Asset Name (hex): ${assetNameHex}`);
168
- console.log('\nAdd this to your src/config/price-aggregation.ts:');
169
- console.log('─'.repeat(50));
170
- console.log(`'${symbol.toUpperCase()}': {`);
171
- console.log(` symbol: '${symbol.toUpperCase()}',`);
172
- console.log(` policyId: '${policyId}',`);
173
- console.log(` assetName: '${assetNameHex}',`);
174
- console.log(` minLiquidityThreshold: 25000 // Adjust as needed`);
175
- console.log(`}`);
176
- return {
177
- symbol: symbol.toUpperCase(),
178
- policyId,
179
- assetName: assetNameHex,
180
- minLiquidityThreshold: 25000
181
- };
182
- }
183
- }
184
- exports.PoolDiscoveryCLI = PoolDiscoveryCLI;
185
- /**
186
- * CLI Entry Point
187
- */
188
- async function main() {
189
- const args = process.argv.slice(2);
190
- const cli = new PoolDiscoveryCLI();
191
- if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
192
- console.log('🔍 OpenMM Pool Discovery CLI');
193
- console.log('═'.repeat(40));
194
- console.log('Usage: npm run pool-discovery <command> [options]');
195
- console.log('\nCommands:');
196
- console.log(' discover <TOKEN> Discover pools for a supported token');
197
- console.log(' supported List all supported tokens');
198
- console.log(' prices <TOKEN> Get live prices for token pools');
199
- console.log(' custom <POLICY> <HEX> <SYMBOL> Generate config for custom token');
200
- console.log('\nOptions:');
201
- console.log(' --limit <N> Limit number of pools shown (default: 10)');
202
- console.log(' --min-liquidity <N> Filter pools by minimum TVL');
203
- console.log(' --show-all Show all pools (ignore limit)');
204
- console.log('\nExamples:');
205
- console.log(' npm run pool-discovery discover NIGHT');
206
- console.log(' npm run pool-discovery discover SNEK --limit 5');
207
- console.log(' npm run pool-discovery discover INDY --min-liquidity 100000');
208
- console.log(' npm run pool-discovery prices NIGHT');
209
- console.log(' npm run pool-discovery supported');
210
- return;
211
- }
212
- const command = args[0];
213
- try {
214
- switch (command) {
215
- case 'discover': {
216
- if (args.length < 2) {
217
- console.log('❌ Token symbol required. Usage: npm run pool-discovery discover <TOKEN>');
218
- return;
219
- }
220
- const token = args[1];
221
- const options = {};
222
- // Parse options
223
- for (let i = 2; i < args.length; i += 2) {
224
- switch (args[i]) {
225
- case '--limit':
226
- options.limit = parseInt(args[i + 1]);
227
- break;
228
- case '--min-liquidity':
229
- options.minLiquidity = parseInt(args[i + 1]);
230
- break;
231
- case '--show-all':
232
- options.showAll = true;
233
- i--; // No value to consume
234
- break;
235
- }
236
- }
237
- const result = await cli.discoverTokenPools(token, options);
238
- cli.displayResults(result);
239
- break;
240
- }
241
- case 'supported': {
242
- console.log('🎯 Supported Tokens:');
243
- console.log('─'.repeat(20));
244
- (0, price_aggregation_1.getSupportedTokens)().forEach(token => {
245
- const config = (0, price_aggregation_1.getTokenConfig)(token);
246
- console.log(`${token} (Min Liquidity: ${cli['formatCurrency'](config.minLiquidityThreshold || 0)})`);
247
- });
248
- break;
249
- }
250
- case 'prices': {
251
- if (args.length < 2) {
252
- console.log('❌ Token symbol required. Usage: npm run pool-discovery prices <TOKEN>');
253
- return;
254
- }
255
- const token = args[1];
256
- const result = await cli.discoverTokenPools(token, { limit: 3 });
257
- await cli.getPoolPrices(result.recommendedIdentifiers);
258
- break;
259
- }
260
- case 'custom': {
261
- if (args.length < 4) {
262
- console.log('❌ Usage: npm run pool-discovery custom <POLICY_ID> <ASSET_NAME_HEX> <SYMBOL>');
263
- return;
264
- }
265
- const [, policyId, assetNameHex, symbol] = args;
266
- cli.suggestTokenConfig(policyId, assetNameHex, symbol);
267
- break;
268
- }
269
- default:
270
- console.log(`❌ Unknown command: ${command}`);
271
- console.log('Run "npm run pool-discovery --help" for usage information.');
272
- }
273
- }
274
- catch (error) {
275
- console.error('❌ Error:', error.message);
276
- process.exit(1);
277
- }
278
- }
279
- // Run CLI if this file is executed directly
280
- if (require.main === module) {
281
- main().catch(console.error);
282
- }
283
- //# sourceMappingURL=pool-discovery.js.map