@3rd-eye-labs/openmm 0.0.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 (207) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -0
  3. package/dist/cli/cli.d.ts +3 -0
  4. package/dist/cli/cli.d.ts.map +1 -0
  5. package/dist/cli/cli.js +43 -0
  6. package/dist/cli/cli.js.map +1 -0
  7. package/dist/cli/commands/balance.d.ts +3 -0
  8. package/dist/cli/commands/balance.d.ts.map +1 -0
  9. package/dist/cli/commands/balance.js +51 -0
  10. package/dist/cli/commands/balance.js.map +1 -0
  11. package/dist/cli/commands/orderbook.d.ts +3 -0
  12. package/dist/cli/commands/orderbook.d.ts.map +1 -0
  13. package/dist/cli/commands/orderbook.js +83 -0
  14. package/dist/cli/commands/orderbook.js.map +1 -0
  15. package/dist/cli/commands/orders.d.ts +3 -0
  16. package/dist/cli/commands/orders.d.ts.map +1 -0
  17. package/dist/cli/commands/orders.js +196 -0
  18. package/dist/cli/commands/orders.js.map +1 -0
  19. package/dist/cli/commands/pool-discovery.d.ts +3 -0
  20. package/dist/cli/commands/pool-discovery.d.ts.map +1 -0
  21. package/dist/cli/commands/pool-discovery.js +60 -0
  22. package/dist/cli/commands/pool-discovery.js.map +1 -0
  23. package/dist/cli/commands/ticker.d.ts +3 -0
  24. package/dist/cli/commands/ticker.d.ts.map +1 -0
  25. package/dist/cli/commands/ticker.js +51 -0
  26. package/dist/cli/commands/ticker.js.map +1 -0
  27. package/dist/cli/commands/trade.d.ts +3 -0
  28. package/dist/cli/commands/trade.d.ts.map +1 -0
  29. package/dist/cli/commands/trade.js +110 -0
  30. package/dist/cli/commands/trade.js.map +1 -0
  31. package/dist/cli/commands/trades.d.ts +3 -0
  32. package/dist/cli/commands/trades.d.ts.map +1 -0
  33. package/dist/cli/commands/trades.js +73 -0
  34. package/dist/cli/commands/trades.js.map +1 -0
  35. package/dist/cli/exchange-factory.d.ts +40 -0
  36. package/dist/cli/exchange-factory.d.ts.map +1 -0
  37. package/dist/cli/exchange-factory.js +77 -0
  38. package/dist/cli/exchange-factory.js.map +1 -0
  39. package/dist/cli/pool-discovery-core.d.ts +54 -0
  40. package/dist/cli/pool-discovery-core.d.ts.map +1 -0
  41. package/dist/cli/pool-discovery-core.js +193 -0
  42. package/dist/cli/pool-discovery-core.js.map +1 -0
  43. package/dist/cli/utils/error-handler.d.ts +40 -0
  44. package/dist/cli/utils/error-handler.d.ts.map +1 -0
  45. package/dist/cli/utils/error-handler.js +117 -0
  46. package/dist/cli/utils/error-handler.js.map +1 -0
  47. package/dist/cli/utils/validation.d.ts +45 -0
  48. package/dist/cli/utils/validation.d.ts.map +1 -0
  49. package/dist/cli/utils/validation.js +118 -0
  50. package/dist/cli/utils/validation.js.map +1 -0
  51. package/dist/config/environment.d.ts +25 -0
  52. package/dist/config/environment.d.ts.map +1 -0
  53. package/dist/config/environment.js +72 -0
  54. package/dist/config/environment.js.map +1 -0
  55. package/dist/config/index.d.ts +3 -0
  56. package/dist/config/index.d.ts.map +1 -0
  57. package/dist/config/index.js +21 -0
  58. package/dist/config/index.js.map +1 -0
  59. package/dist/config/launcher-config.d.ts +17 -0
  60. package/dist/config/launcher-config.d.ts.map +1 -0
  61. package/dist/config/launcher-config.js +14 -0
  62. package/dist/config/launcher-config.js.map +1 -0
  63. package/dist/config/price-aggregation.d.ts +49 -0
  64. package/dist/config/price-aggregation.d.ts.map +1 -0
  65. package/dist/config/price-aggregation.js +89 -0
  66. package/dist/config/price-aggregation.js.map +1 -0
  67. package/dist/core/exchange/base-exchange-connector.d.ts +45 -0
  68. package/dist/core/exchange/base-exchange-connector.d.ts.map +1 -0
  69. package/dist/core/exchange/base-exchange-connector.js +43 -0
  70. package/dist/core/exchange/base-exchange-connector.js.map +1 -0
  71. package/dist/core/exchange/base-exchange-data-mapper.d.ts +58 -0
  72. package/dist/core/exchange/base-exchange-data-mapper.d.ts.map +1 -0
  73. package/dist/core/exchange/base-exchange-data-mapper.js +60 -0
  74. package/dist/core/exchange/base-exchange-data-mapper.js.map +1 -0
  75. package/dist/core/price-aggregation/cardano-price-service.d.ts +31 -0
  76. package/dist/core/price-aggregation/cardano-price-service.d.ts.map +1 -0
  77. package/dist/core/price-aggregation/cardano-price-service.js +157 -0
  78. package/dist/core/price-aggregation/cardano-price-service.js.map +1 -0
  79. package/dist/core/price-aggregation/index.d.ts +11 -0
  80. package/dist/core/price-aggregation/index.d.ts.map +1 -0
  81. package/dist/core/price-aggregation/index.js +21 -0
  82. package/dist/core/price-aggregation/index.js.map +1 -0
  83. package/dist/core/price-aggregation/iris-api-client.d.ts +16 -0
  84. package/dist/core/price-aggregation/iris-api-client.d.ts.map +1 -0
  85. package/dist/core/price-aggregation/iris-api-client.js +62 -0
  86. package/dist/core/price-aggregation/iris-api-client.js.map +1 -0
  87. package/dist/core/price-aggregation/iris-pool-discovery.d.ts +37 -0
  88. package/dist/core/price-aggregation/iris-pool-discovery.d.ts.map +1 -0
  89. package/dist/core/price-aggregation/iris-pool-discovery.js +123 -0
  90. package/dist/core/price-aggregation/iris-pool-discovery.js.map +1 -0
  91. package/dist/core/price-aggregation/price-calculator.d.ts +27 -0
  92. package/dist/core/price-aggregation/price-calculator.d.ts.map +1 -0
  93. package/dist/core/price-aggregation/price-calculator.js +84 -0
  94. package/dist/core/price-aggregation/price-calculator.js.map +1 -0
  95. package/dist/core/risk-management/risk-manager.d.ts +14 -0
  96. package/dist/core/risk-management/risk-manager.d.ts.map +1 -0
  97. package/dist/core/risk-management/risk-manager.js +40 -0
  98. package/dist/core/risk-management/risk-manager.js.map +1 -0
  99. package/dist/core/strategy/base-strategy.d.ts +26 -0
  100. package/dist/core/strategy/base-strategy.d.ts.map +1 -0
  101. package/dist/core/strategy/base-strategy.js +46 -0
  102. package/dist/core/strategy/base-strategy.js.map +1 -0
  103. package/dist/core/strategy/strategy-factory.d.ts +7 -0
  104. package/dist/core/strategy/strategy-factory.d.ts.map +1 -0
  105. package/dist/core/strategy/strategy-factory.js +64 -0
  106. package/dist/core/strategy/strategy-factory.js.map +1 -0
  107. package/dist/exchanges/mexc/mexc-auth.d.ts +42 -0
  108. package/dist/exchanges/mexc/mexc-auth.d.ts.map +1 -0
  109. package/dist/exchanges/mexc/mexc-auth.js +122 -0
  110. package/dist/exchanges/mexc/mexc-auth.js.map +1 -0
  111. package/dist/exchanges/mexc/mexc-connector.d.ts +125 -0
  112. package/dist/exchanges/mexc/mexc-connector.d.ts.map +1 -0
  113. package/dist/exchanges/mexc/mexc-connector.js +422 -0
  114. package/dist/exchanges/mexc/mexc-connector.js.map +1 -0
  115. package/dist/exchanges/mexc/mexc-data-mapper.d.ts +50 -0
  116. package/dist/exchanges/mexc/mexc-data-mapper.d.ts.map +1 -0
  117. package/dist/exchanges/mexc/mexc-data-mapper.js +127 -0
  118. package/dist/exchanges/mexc/mexc-data-mapper.js.map +1 -0
  119. package/dist/exchanges/mexc/mexc-protobuf-decoder.d.ts +43 -0
  120. package/dist/exchanges/mexc/mexc-protobuf-decoder.d.ts.map +1 -0
  121. package/dist/exchanges/mexc/mexc-protobuf-decoder.js +235 -0
  122. package/dist/exchanges/mexc/mexc-protobuf-decoder.js.map +1 -0
  123. package/dist/exchanges/mexc/mexc-user-stream.d.ts +81 -0
  124. package/dist/exchanges/mexc/mexc-user-stream.d.ts.map +1 -0
  125. package/dist/exchanges/mexc/mexc-user-stream.js +253 -0
  126. package/dist/exchanges/mexc/mexc-user-stream.js.map +1 -0
  127. package/dist/exchanges/mexc/mexc-utils.d.ts +31 -0
  128. package/dist/exchanges/mexc/mexc-utils.d.ts.map +1 -0
  129. package/dist/exchanges/mexc/mexc-utils.js +186 -0
  130. package/dist/exchanges/mexc/mexc-utils.js.map +1 -0
  131. package/dist/exchanges/mexc/mexc-websocket.d.ts +124 -0
  132. package/dist/exchanges/mexc/mexc-websocket.d.ts.map +1 -0
  133. package/dist/exchanges/mexc/mexc-websocket.js +496 -0
  134. package/dist/exchanges/mexc/mexc-websocket.js.map +1 -0
  135. package/dist/index.d.ts +12 -0
  136. package/dist/index.d.ts.map +1 -0
  137. package/dist/index.js +42 -0
  138. package/dist/index.js.map +1 -0
  139. package/dist/strategies/grid/grid-calculator.d.ts +7 -0
  140. package/dist/strategies/grid/grid-calculator.d.ts.map +1 -0
  141. package/dist/strategies/grid/grid-calculator.js +34 -0
  142. package/dist/strategies/grid/grid-calculator.js.map +1 -0
  143. package/dist/strategies/grid/grid-order-manager.d.ts +23 -0
  144. package/dist/strategies/grid/grid-order-manager.d.ts.map +1 -0
  145. package/dist/strategies/grid/grid-order-manager.js +99 -0
  146. package/dist/strategies/grid/grid-order-manager.js.map +1 -0
  147. package/dist/strategies/grid/grid-strategy.d.ts +29 -0
  148. package/dist/strategies/grid/grid-strategy.d.ts.map +1 -0
  149. package/dist/strategies/grid/grid-strategy.js +185 -0
  150. package/dist/strategies/grid/grid-strategy.js.map +1 -0
  151. package/dist/types/account.d.ts +21 -0
  152. package/dist/types/account.d.ts.map +1 -0
  153. package/dist/types/account.js +3 -0
  154. package/dist/types/account.js.map +1 -0
  155. package/dist/types/exchange.d.ts +67 -0
  156. package/dist/types/exchange.d.ts.map +1 -0
  157. package/dist/types/exchange.js +3 -0
  158. package/dist/types/exchange.js.map +1 -0
  159. package/dist/types/grid.d.ts +10 -0
  160. package/dist/types/grid.d.ts.map +1 -0
  161. package/dist/types/grid.js +3 -0
  162. package/dist/types/grid.js.map +1 -0
  163. package/dist/types/index.d.ts +11 -0
  164. package/dist/types/index.d.ts.map +1 -0
  165. package/dist/types/index.js +27 -0
  166. package/dist/types/index.js.map +1 -0
  167. package/dist/types/iris.d.ts +58 -0
  168. package/dist/types/iris.d.ts.map +1 -0
  169. package/dist/types/iris.js +7 -0
  170. package/dist/types/iris.js.map +1 -0
  171. package/dist/types/market.d.ts +16 -0
  172. package/dist/types/market.d.ts.map +1 -0
  173. package/dist/types/market.js +3 -0
  174. package/dist/types/market.js.map +1 -0
  175. package/dist/types/mexc-raw.d.ts +87 -0
  176. package/dist/types/mexc-raw.d.ts.map +1 -0
  177. package/dist/types/mexc-raw.js +7 -0
  178. package/dist/types/mexc-raw.js.map +1 -0
  179. package/dist/types/mexc.d.ts +57 -0
  180. package/dist/types/mexc.d.ts.map +1 -0
  181. package/dist/types/mexc.js +8 -0
  182. package/dist/types/mexc.js.map +1 -0
  183. package/dist/types/price.d.ts +37 -0
  184. package/dist/types/price.d.ts.map +1 -0
  185. package/dist/types/price.js +7 -0
  186. package/dist/types/price.js.map +1 -0
  187. package/dist/types/risk.d.ts +22 -0
  188. package/dist/types/risk.d.ts.map +1 -0
  189. package/dist/types/risk.js +6 -0
  190. package/dist/types/risk.js.map +1 -0
  191. package/dist/types/strategy.d.ts +46 -0
  192. package/dist/types/strategy.d.ts.map +1 -0
  193. package/dist/types/strategy.js +3 -0
  194. package/dist/types/strategy.js.map +1 -0
  195. package/dist/utils/index.d.ts +2 -0
  196. package/dist/utils/index.d.ts.map +1 -0
  197. package/dist/utils/index.js +8 -0
  198. package/dist/utils/index.js.map +1 -0
  199. package/dist/utils/logger.d.ts +29 -0
  200. package/dist/utils/logger.d.ts.map +1 -0
  201. package/dist/utils/logger.js +108 -0
  202. package/dist/utils/logger.js.map +1 -0
  203. package/dist/utils/symbol-utils.d.ts +17 -0
  204. package/dist/utils/symbol-utils.d.ts.map +1 -0
  205. package/dist/utils/symbol-utils.js +41 -0
  206. package/dist/utils/symbol-utils.js.map +1 -0
  207. package/package.json +53 -0
@@ -0,0 +1,51 @@
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.tickerCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const exchange_factory_1 = require("../exchange-factory");
10
+ const validation_1 = require("../utils/validation");
11
+ const error_handler_1 = require("../utils/error-handler");
12
+ exports.tickerCommand = new commander_1.Command('ticker')
13
+ .description('Get ticker data for a trading pair')
14
+ .requiredOption('-e, --exchange <exchange>', 'Exchange to query')
15
+ .requiredOption('-s, --symbol <symbol>', 'Trading pair symbol (e.g., BTC/USDT)')
16
+ .option('--json', 'Output in JSON format')
17
+ .action(async (options) => {
18
+ await (0, error_handler_1.executeCommand)(async () => {
19
+ const exchange = (0, validation_1.validateExchange)(options.exchange);
20
+ const symbol = (0, validation_1.validateSymbol)(options.symbol);
21
+ try {
22
+ const connector = await exchange_factory_1.ExchangeFactory.getExchange(exchange);
23
+ const ticker = await connector.getTicker(symbol);
24
+ if (options.json) {
25
+ console.log(JSON.stringify(ticker, null, 2));
26
+ }
27
+ else {
28
+ const [base, quote] = ticker.symbol.split('/');
29
+ console.log(`\n${chalk_1.default.bold.cyan(`${ticker.symbol} Ticker`)}:`);
30
+ console.log(` Last Price: ${chalk_1.default.bold.green('$' + ticker.last.toFixed(8))}`);
31
+ console.log(` Bid Price: ${chalk_1.default.green('$' + ticker.bid.toFixed(8))}`);
32
+ console.log(` Ask Price: ${chalk_1.default.red('$' + ticker.ask.toFixed(8))}`);
33
+ console.log(` Spread: ${chalk_1.default.yellow('$' + (ticker.ask - ticker.bid).toFixed(8))}`);
34
+ console.log(` 24h Volume (${base}): ${chalk_1.default.blue(ticker.baseVolume.toLocaleString())}`);
35
+ if (ticker.quoteVolume) {
36
+ console.log(` 24h Volume (${quote}): ${chalk_1.default.blue('$' + ticker.quoteVolume.toLocaleString())}`);
37
+ }
38
+ console.log(` Updated: ${new Date(ticker.timestamp).toLocaleString()}`);
39
+ }
40
+ }
41
+ catch (error) {
42
+ (0, error_handler_1.handleError)(error, 'Ticker Query');
43
+ }
44
+ }, 'ticker command');
45
+ });
46
+ exports.tickerCommand.addHelpText('after', `
47
+ Examples:
48
+ $ openmm ticker --exchange mexc --symbol BTC/USDT # Get BTC/USDT ticker
49
+ $ openmm ticker --exchange mexc --symbol ETH/USDT --json # Get ticker in JSON format
50
+ `);
51
+ //# sourceMappingURL=ticker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticker.js","sourceRoot":"","sources":["../../../src/cli/commands/ticker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const tradeCommand: Command;
3
+ //# sourceMappingURL=trade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trade.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/trade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,YAAY,SA8FrB,CAAC"}
@@ -0,0 +1,110 @@
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.tradeCommand = 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.tradeCommand = new commander_1.Command('trade')
13
+ .description('Start trading with specified strategy and parameters')
14
+ .requiredOption('-s, --strategy <strategy>', 'Trading strategy to use (grid)')
15
+ .requiredOption('-e, --exchange <exchange>', 'Exchange to trade on (mexc)')
16
+ .requiredOption('--symbol <symbol>', 'Trading pair (INDYUSDT, INDY/USDT, BTCUSDT, 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
+ .action(async (options) => {
27
+ let strategy = null;
28
+ const shutdown = async (signal) => {
29
+ console.log(chalk_1.default.yellow(`\n${signal} received. Stopping strategy...`));
30
+ if (strategy) {
31
+ try {
32
+ await strategy.stop();
33
+ console.log(chalk_1.default.green('Strategy stopped successfully.'));
34
+ }
35
+ catch (error) {
36
+ console.error(chalk_1.default.red('Error stopping strategy:'), error);
37
+ }
38
+ }
39
+ await exchange_factory_1.ExchangeFactory.disconnectAll();
40
+ process.exit(0);
41
+ };
42
+ process.on('SIGTERM', () => shutdown('SIGTERM'));
43
+ process.on('SIGINT', () => shutdown('SIGINT'));
44
+ await (0, error_handler_1.executeCommand)(async () => {
45
+ const strategyType = options.strategy.toLowerCase();
46
+ try {
47
+ console.log(chalk_1.default.blue('🚀 Starting Trading Strategy'));
48
+ console.log(chalk_1.default.gray(`Strategy: ${options.strategy.toUpperCase()}`));
49
+ console.log(chalk_1.default.gray(`Exchange: ${options.exchange.toUpperCase()}`));
50
+ console.log(chalk_1.default.gray(`Symbol: ${options.symbol.toUpperCase()}`));
51
+ if (options.dryRun) {
52
+ console.log(chalk_1.default.yellow('⚠️ DRY RUN MODE - No real orders will be placed'));
53
+ }
54
+ const config = {
55
+ strategy: strategyType,
56
+ exchange: options.exchange,
57
+ symbol: options.symbol
58
+ };
59
+ let params = {};
60
+ if (strategyType === 'grid') {
61
+ console.log(chalk_1.default.gray(`Grid Levels: ${options.levels} each side`));
62
+ console.log(chalk_1.default.gray(`Grid Spacing: ${(parseFloat(options.spacing) * 100).toFixed(1)}%`));
63
+ console.log(chalk_1.default.gray(`Order Size: $${options.size}`));
64
+ console.log(chalk_1.default.gray(`Max Position: ${(parseFloat(options.maxPosition) * 100).toFixed(0)}%`));
65
+ console.log(chalk_1.default.gray(`Safety Reserve: ${(parseFloat(options.safetyReserve) * 100).toFixed(0)}%`));
66
+ params = {
67
+ gridLevels: parseInt(options.levels),
68
+ gridSpacing: parseFloat(options.spacing),
69
+ orderSize: parseFloat(options.size),
70
+ minConfidence: parseFloat(options.confidence),
71
+ priceDeviationThreshold: parseFloat(options.deviation),
72
+ adjustmentDebounce: parseInt(options.debounce),
73
+ maxPositionSize: parseFloat(options.maxPosition),
74
+ safetyReservePercentage: parseFloat(options.safetyReserve)
75
+ };
76
+ }
77
+ console.log(chalk_1.default.blue('⚙️ Creating strategy...'));
78
+ strategy = await strategy_factory_1.StrategyFactory.create(config, params);
79
+ console.log(chalk_1.default.green('✅ Strategy initialized successfully'));
80
+ console.log(chalk_1.default.blue('🔄 Starting strategy...'));
81
+ await strategy.start();
82
+ console.log(chalk_1.default.green('✅ Strategy is now running!'));
83
+ console.log(chalk_1.default.gray('Press Ctrl+C to stop the strategy gracefully'));
84
+ await new Promise(() => { });
85
+ }
86
+ catch (error) {
87
+ (0, error_handler_1.handleError)(error, 'Trading Strategy');
88
+ }
89
+ }, 'trading strategy');
90
+ });
91
+ exports.tradeCommand.addHelpText('after', `
92
+ Examples:
93
+ $ openmm trade --strategy grid --exchange mexc --symbol INDYUSDT # Start INDY/USDT grid with defaults
94
+ $ openmm trade --strategy grid --exchange mexc --symbol INDY/USDT --levels 7 --size 100 # Custom parameters
95
+ $ openmm trade --strategy grid --exchange mexc --symbol BTCUSDT --spacing 0.015 # BTC grid with 1.5% spacing
96
+ $ openmm trade --strategy grid --exchange mexc --symbol INDYUSDT --dry-run # Test mode (no real orders)
97
+
98
+ Grid Strategy Parameters:
99
+ --levels: Number of buy and sell orders each side (default: 5, range: 1-20)
100
+ --spacing: Price spacing between grid levels (default: 0.02 = 2%)
101
+ --size: Order size in quote currency like USDT (default: 50)
102
+ --confidence: Minimum price confidence to trade (default: 0.6 = 60%)
103
+ --deviation: Price movement % to trigger grid recreation (default: 0.015 = 1.5%)
104
+ --debounce: Delay between grid adjustments in ms (default: 2000ms)
105
+ --max-position: Maximum position size as % of balance (default: 0.8 = 80%)
106
+ --safety-reserve: Safety reserve as % of balance (default: 0.2 = 20%)
107
+
108
+ Note: Ensure exchange-specific environment variables are set (e.g., MEXC_API_KEY and MEXC_SECRET_KEY for MEXC).
109
+ `);
110
+ //# sourceMappingURL=trade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trade.js","sourceRoot":"","sources":["../../../src/cli/commands/trade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const tradesCommand: Command;
3
+ //# sourceMappingURL=trades.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trades.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/trades.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,aAAa,SA8DtB,CAAC"}
@@ -0,0 +1,73 @@
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.tradesCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const exchange_factory_1 = require("../exchange-factory");
10
+ const validation_1 = require("../utils/validation");
11
+ const error_handler_1 = require("../utils/error-handler");
12
+ exports.tradesCommand = new commander_1.Command('trades')
13
+ .description('Get recent trades for a trading pair')
14
+ .requiredOption('-e, --exchange <exchange>', 'Exchange to query')
15
+ .requiredOption('-s, --symbol <symbol>', 'Trading pair symbol (e.g., BTC/USDT)')
16
+ .option('-l, --limit <limit>', 'Number of trades to display (default: 20)', '20')
17
+ .option('--json', 'Output in JSON format')
18
+ .action(async (options) => {
19
+ await (0, error_handler_1.executeCommand)(async () => {
20
+ const exchange = (0, validation_1.validateExchange)(options.exchange);
21
+ const symbol = (0, validation_1.validateSymbol)(options.symbol);
22
+ const limit = parseInt(options.limit);
23
+ if (isNaN(limit) || limit <= 0) {
24
+ console.error(chalk_1.default.red('❌ Limit must be a positive number'));
25
+ process.exit(1);
26
+ }
27
+ try {
28
+ const connector = await exchange_factory_1.ExchangeFactory.getExchange(exchange);
29
+ const trades = await connector.getRecentTrades(symbol);
30
+ const limitedTrades = trades.slice(0, limit);
31
+ if (options.json) {
32
+ console.log(JSON.stringify(limitedTrades, null, 2));
33
+ }
34
+ else {
35
+ if (limitedTrades.length === 0) {
36
+ console.log(chalk_1.default.yellow(`No recent trades found for ${symbol}`));
37
+ return;
38
+ }
39
+ console.log(`\n${chalk_1.default.bold.cyan(`Recent Trades for ${symbol}`)} (Latest ${limitedTrades.length}):`);
40
+ console.log(chalk_1.default.gray('ID │ Side │ Price │ Amount │ Total │ Time'));
41
+ console.log(chalk_1.default.gray('─────────┼──────┼──────────────┼──────────────┼──────────────┼─────────────'));
42
+ limitedTrades.forEach(trade => {
43
+ const id = trade.id.padEnd(8);
44
+ const side = trade.side === 'buy' ?
45
+ chalk_1.default.green('BUY ') : chalk_1.default.red('SELL');
46
+ const price = `$${trade.price.toFixed(8)}`.padEnd(13);
47
+ const amount = trade.amount.toFixed(8).padEnd(13);
48
+ const total = `$${(trade.price * trade.amount).toFixed(8)}`.padEnd(13);
49
+ const time = new Date(trade.timestamp).toLocaleTimeString().padEnd(11);
50
+ console.log(`${id} │ ${side} │ ${price} │ ${amount} │ ${total} │ ${time}`);
51
+ });
52
+ const buyTrades = limitedTrades.filter(t => t.side === 'buy');
53
+ const sellTrades = limitedTrades.filter(t => t.side === 'sell');
54
+ const totalVolume = limitedTrades.reduce((sum, trade) => sum + (trade.price * trade.amount), 0);
55
+ console.log(`\n${chalk_1.default.bold('Summary')}:`);
56
+ console.log(` Total Trades: ${limitedTrades.length}`);
57
+ console.log(` Buy Trades: ${chalk_1.default.green(buyTrades.length)}`);
58
+ console.log(` Sell Trades: ${chalk_1.default.red(sellTrades.length)}`);
59
+ console.log(` Total Volume: ${chalk_1.default.blue('$' + totalVolume.toLocaleString(undefined, { maximumFractionDigits: 2 }))}`);
60
+ }
61
+ }
62
+ catch (error) {
63
+ (0, error_handler_1.handleError)(error, 'Recent Trades Query');
64
+ }
65
+ }, 'trades command');
66
+ });
67
+ exports.tradesCommand.addHelpText('after', `
68
+ Examples:
69
+ $ openmm trades --exchange mexc --symbol BTC/USDT # Get 20 recent trades
70
+ $ openmm trades --exchange mexc --symbol BTC/USDT --limit 50 # Get 50 recent trades
71
+ $ openmm trades --exchange mexc --symbol ETH/USDT --json # Get trades in JSON format
72
+ `);
73
+ //# sourceMappingURL=trades.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trades.js","sourceRoot":"","sources":["../../../src/cli/commands/trades.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { BaseExchangeConnector } from '../core/exchange/base-exchange-connector';
2
+ /**
3
+ * Supported exchanges
4
+ */
5
+ export type SupportedExchange = 'mexc' | 'gateio' | 'bitget' | 'kraken';
6
+ /**
7
+ * Exchange Factory
8
+ * Creates exchange connector instances dynamically based on exchange name
9
+ */
10
+ export declare class ExchangeFactory {
11
+ private static connectors;
12
+ /**
13
+ * Get exchange connector instance
14
+ * @param exchangeName Name of the exchange
15
+ * @returns Exchange connector instance
16
+ */
17
+ static getExchange(exchangeName: SupportedExchange): Promise<BaseExchangeConnector>;
18
+ /**
19
+ * Create exchange connector based on exchange name
20
+ * @param exchangeName Name of the exchange
21
+ * @returns Exchange connector instance
22
+ */
23
+ private static createExchangeConnector;
24
+ /**
25
+ * Get list of supported exchanges
26
+ * @returns Array of supported exchange names
27
+ */
28
+ static getSupportedExchanges(): SupportedExchange[];
29
+ /**
30
+ * Check if exchange is supported
31
+ * @param exchangeName Exchange name to check
32
+ * @returns True if exchange is supported
33
+ */
34
+ static isSupported(exchangeName: string): exchangeName is SupportedExchange;
35
+ /**
36
+ * Disconnect all cached connectors
37
+ */
38
+ static disconnectAll(): Promise<void>;
39
+ }
40
+ //# sourceMappingURL=exchange-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange-factory.d.ts","sourceRoot":"","sources":["../../src/cli/exchange-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAGjF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExE;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,UAAU,CAA4D;IAErF;;;;OAIG;WACU,WAAW,CAAC,YAAY,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAazF;;;;OAIG;mBACkB,uBAAuB;IAsB5C;;;OAGG;IACH,MAAM,CAAC,qBAAqB,IAAI,iBAAiB,EAAE;IAInD;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,IAAI,iBAAiB;IAI3E;;OAEG;WACU,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAW5C"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExchangeFactory = void 0;
4
+ const mexc_connector_1 = require("../exchanges/mexc/mexc-connector");
5
+ /**
6
+ * Exchange Factory
7
+ * Creates exchange connector instances dynamically based on exchange name
8
+ */
9
+ class ExchangeFactory {
10
+ /**
11
+ * Get exchange connector instance
12
+ * @param exchangeName Name of the exchange
13
+ * @returns Exchange connector instance
14
+ */
15
+ static async getExchange(exchangeName) {
16
+ if (this.connectors.has(exchangeName)) {
17
+ return this.connectors.get(exchangeName);
18
+ }
19
+ const connector = await this.createExchangeConnector(exchangeName);
20
+ await connector.connect();
21
+ this.connectors.set(exchangeName, connector);
22
+ return connector;
23
+ }
24
+ /**
25
+ * Create exchange connector based on exchange name
26
+ * @param exchangeName Name of the exchange
27
+ * @returns Exchange connector instance
28
+ */
29
+ static async createExchangeConnector(exchangeName) {
30
+ switch (exchangeName) {
31
+ case 'mexc':
32
+ return new mexc_connector_1.MexcConnector();
33
+ case 'gateio':
34
+ // TODO: Implement GateIO connector
35
+ throw new Error('GateIO connector not yet implemented');
36
+ case 'bitget':
37
+ // TODO: Implement Bitget connector
38
+ throw new Error('Bitget connector not yet implemented');
39
+ case 'kraken':
40
+ // TODO: Implement Kraken connector
41
+ throw new Error('Kraken connector not yet implemented');
42
+ default:
43
+ throw new Error(`Unsupported exchange: ${exchangeName}`);
44
+ }
45
+ }
46
+ /**
47
+ * Get list of supported exchanges
48
+ * @returns Array of supported exchange names
49
+ */
50
+ static getSupportedExchanges() {
51
+ return ['mexc', 'gateio', 'bitget', 'kraken'];
52
+ }
53
+ /**
54
+ * Check if exchange is supported
55
+ * @param exchangeName Exchange name to check
56
+ * @returns True if exchange is supported
57
+ */
58
+ static isSupported(exchangeName) {
59
+ return this.getSupportedExchanges().includes(exchangeName);
60
+ }
61
+ /**
62
+ * Disconnect all cached connectors
63
+ */
64
+ static async disconnectAll() {
65
+ const disconnectPromises = Array.from(this.connectors.values()).map(connector => {
66
+ if (connector.disconnect) {
67
+ return connector.disconnect();
68
+ }
69
+ return Promise.resolve();
70
+ });
71
+ await Promise.all(disconnectPromises);
72
+ this.connectors.clear();
73
+ }
74
+ }
75
+ exports.ExchangeFactory = ExchangeFactory;
76
+ ExchangeFactory.connectors = new Map();
77
+ //# sourceMappingURL=exchange-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange-factory.js","sourceRoot":"","sources":["../../src/cli/exchange-factory.ts"],"names":[],"mappings":";;;AACA,qEAAiE;AAOjE;;;GAGG;AACH,MAAa,eAAe;IAG1B;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,YAA+B;QACtD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;QAC5C,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;QACnE,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QAE1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAE7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,YAA+B;QAC1E,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,MAAM;gBACT,OAAO,IAAI,8BAAa,EAAE,CAAC;YAE7B,KAAK,QAAQ;gBACX,mCAAmC;gBACnC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAE1D,KAAK,QAAQ;gBACX,mCAAmC;gBACnC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAE1D,KAAK,QAAQ;gBACX,mCAAmC;gBACnC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAE1D;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,qBAAqB;QAC1B,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,YAAoB;QACrC,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,YAAiC,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,aAAa;QACxB,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YAC9E,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBACzB,OAAO,SAAS,CAAC,UAAU,EAAE,CAAC;YAChC,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;;AA9EH,0CA+EC;AA9EgB,0BAAU,GAAkD,IAAI,GAAG,EAAE,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Pool Discovery Core Logic
3
+ * Core functionality for discovering Cardano liquidity pools
4
+ */
5
+ import { CardanoTokenConfig } from '../types';
6
+ export interface PoolInfo {
7
+ identifier: string;
8
+ dex: string;
9
+ tvl: number;
10
+ reserveA: number;
11
+ reserveB: number;
12
+ address: string;
13
+ isActive: boolean;
14
+ }
15
+ export interface DiscoveryResult {
16
+ token: string;
17
+ policyId: string;
18
+ assetName: string;
19
+ totalPools: number;
20
+ totalLiquidity: number;
21
+ pools: PoolInfo[];
22
+ recommendedIdentifiers: string[];
23
+ }
24
+ export declare class PoolDiscoveryCLI {
25
+ private poolDiscovery;
26
+ private irisClient;
27
+ private priceService;
28
+ constructor();
29
+ /**
30
+ * Main discovery function for any Cardano native token
31
+ */
32
+ discoverTokenPools(tokenSymbol: string, options?: {
33
+ limit?: number;
34
+ minLiquidity?: number;
35
+ showAll?: boolean;
36
+ }): Promise<DiscoveryResult>;
37
+ /**
38
+ * Display discovery results in a formatted table
39
+ */
40
+ displayResults(result: DiscoveryResult): void;
41
+ /**
42
+ * Get live price information for discovered pools
43
+ */
44
+ getPoolPrices(identifiers: string[], tokenSymbol: string): Promise<void>;
45
+ /**
46
+ * Format currency with K/M suffixes
47
+ */
48
+ private formatCurrency;
49
+ /**
50
+ * Add a new token configuration (for advanced users)
51
+ */
52
+ suggestTokenConfig(policyId: string, assetNameHex: string, symbol: string): CardanoTokenConfig;
53
+ }
54
+ //# sourceMappingURL=pool-discovery-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool-discovery-core.d.ts","sourceRoot":"","sources":["../../src/cli/pool-discovery-core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,QAAQ;IACvB,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,MAAM,WAAW,eAAe;IAC9B,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,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,YAAY,CAAsB;;IAQ1C;;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;IA2DjC;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAkD7C;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C9E;;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"}