@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,186 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MexcUtils = void 0;
4
+ const mexc_data_mapper_1 = require("./mexc-data-mapper");
5
+ const symbol_utils_1 = require("../../utils/symbol-utils");
6
+ /**
7
+ * MEXC Utility Functions
8
+ * Handles MEXC-specific operations like symbol formatting, order parameters, and WebSocket data processing
9
+ *
10
+ * This class focuses on MEXC-specific utilities and WebSocket message processing
11
+ */
12
+ class MexcUtils {
13
+ /**
14
+ * Unified order transformation function
15
+ * Handles all MEXC order formats: REST API, WebSocket, Protobuf, User Data
16
+ */
17
+ static transformOrder(orderData) {
18
+ if (!orderData) {
19
+ throw new Error('Order data is required');
20
+ }
21
+ if (this.isProtobufOrder(orderData)) {
22
+ return this.transformProtobufOrderInternal(orderData);
23
+ }
24
+ else if (this.isUserDataOrder(orderData)) {
25
+ return this.transformUserDataOrderInternal(orderData);
26
+ }
27
+ else if (this.isWebSocketUserOrder(orderData)) {
28
+ return this.transformWebSocketUserOrderInternal(orderData);
29
+ }
30
+ else if (this.isRestApiOrder(orderData)) {
31
+ return this.transformRestApiOrderInternal(orderData);
32
+ }
33
+ else {
34
+ // Fallback to REST API format for broader compatibility
35
+ return this.transformRestApiOrderInternal(orderData);
36
+ }
37
+ }
38
+ static isProtobufOrder(data) {
39
+ return data && typeof data.orderId === 'string' && typeof data.symbol === 'string' &&
40
+ typeof data.price === 'number' && typeof data.quantity === 'number' &&
41
+ typeof data.side === 'string' && typeof data.status === 'string';
42
+ }
43
+ static isUserDataOrder(data) {
44
+ return data && (data.i !== undefined || data.c !== undefined) &&
45
+ (data.S !== undefined || data.s !== undefined);
46
+ }
47
+ static isRestApiOrder(data) {
48
+ return data && (data.orderId !== undefined || data.id !== undefined) &&
49
+ typeof data.symbol === 'string' &&
50
+ (data.origQty !== undefined || data.quantity !== undefined || data.status !== undefined);
51
+ }
52
+ static isWebSocketUserOrder(data) {
53
+ return data && (data.i !== undefined || data.orderId !== undefined) &&
54
+ (data.s !== undefined || data.symbol !== undefined) &&
55
+ (data.q !== undefined || data.origQty !== undefined) &&
56
+ (data.X !== undefined || data.orderStatus !== undefined);
57
+ }
58
+ static transformProtobufOrderInternal(decodedOrder) {
59
+ const status = mexc_data_mapper_1.MexcDataMapper.mapToOrderStatus(decodedOrder.status);
60
+ let filled = 0;
61
+ if (status === 'filled') {
62
+ filled = decodedOrder.quantity;
63
+ }
64
+ else if (status === 'open' && decodedOrder.status.includes('partial')) {
65
+ filled = decodedOrder.quantity;
66
+ }
67
+ else if (decodedOrder.status === 'filled' || decodedOrder.status.toLowerCase().includes('fill')) {
68
+ filled = decodedOrder.quantity;
69
+ }
70
+ const remaining = Math.max(0, decodedOrder.quantity - filled);
71
+ return {
72
+ id: decodedOrder.orderId,
73
+ symbol: decodedOrder.symbol,
74
+ type: 'limit',
75
+ side: decodedOrder.side,
76
+ amount: decodedOrder.quantity,
77
+ price: decodedOrder.price,
78
+ filled,
79
+ remaining,
80
+ status,
81
+ timestamp: decodedOrder.timestamp
82
+ };
83
+ }
84
+ static transformUserDataOrderInternal(userDataOrder) {
85
+ const statusMap = {
86
+ 1: 'new',
87
+ 2: 'filled',
88
+ 3: 'partially_filled',
89
+ 4: 'cancelled',
90
+ 5: 'cancelled'
91
+ };
92
+ const statusCode = userDataOrder.s;
93
+ const mexcStatus = statusMap[statusCode || 1] || 'new';
94
+ const status = mexc_data_mapper_1.MexcDataMapper.mapToOrderStatus(mexcStatus);
95
+ const mexcSymbol = userDataOrder.c || userDataOrder.symbol;
96
+ const symbol = mexcSymbol ? (() => {
97
+ try {
98
+ return (0, symbol_utils_1.toStandardFormat)(mexcSymbol);
99
+ }
100
+ catch {
101
+ return mexcSymbol;
102
+ }
103
+ })() : '';
104
+ return {
105
+ id: userDataOrder.i?.toString() || Date.now().toString(),
106
+ symbol: symbol,
107
+ type: 'limit',
108
+ side: userDataOrder.S === 1 ? 'buy' : 'sell',
109
+ amount: parseFloat(userDataOrder.v || '0'),
110
+ price: parseFloat(userDataOrder.p || '0'),
111
+ filled: parseFloat(userDataOrder.z || '0'),
112
+ remaining: parseFloat(userDataOrder.v || '0') - parseFloat(userDataOrder.z || '0'),
113
+ status,
114
+ timestamp: Date.now()
115
+ };
116
+ }
117
+ static transformRestApiOrderInternal(mexcOrder) {
118
+ const status = mexc_data_mapper_1.MexcDataMapper.mapToOrderStatus(mexcOrder.status || 'NEW');
119
+ const filled = parseFloat(mexcOrder.executedQty || '0');
120
+ const amount = parseFloat(mexcOrder.origQty || mexcOrder.quantity || '0');
121
+ return {
122
+ id: (mexcOrder.orderId || mexcOrder.id || mexcOrder.i)?.toString() || '',
123
+ symbol: mexcOrder.symbol || '',
124
+ type: (mexcOrder.type || 'LIMIT').toLowerCase(),
125
+ side: (mexcOrder.side || 'BUY').toLowerCase(),
126
+ amount,
127
+ price: mexcOrder.price ? parseFloat(mexcOrder.price) : 0,
128
+ filled,
129
+ remaining: amount - filled,
130
+ status,
131
+ timestamp: parseInt(mexcOrder.time || mexcOrder.updateTime) || Date.now()
132
+ };
133
+ }
134
+ static transformWebSocketUserOrderInternal(data) {
135
+ const mexcSymbol = data.s || data.symbol || '';
136
+ let symbol;
137
+ try {
138
+ symbol = (0, symbol_utils_1.toStandardFormat)(mexcSymbol);
139
+ }
140
+ catch {
141
+ symbol = mexcSymbol;
142
+ }
143
+ return {
144
+ id: data.i?.toString() || data.orderId?.toString() || Date.now().toString(),
145
+ symbol: symbol,
146
+ type: (data.o?.toLowerCase() || 'limit'),
147
+ side: (data.S?.toLowerCase() || 'buy'),
148
+ amount: parseFloat(data.q || data.origQty || '0'),
149
+ price: parseFloat(data.p || data.price || '0'),
150
+ filled: parseFloat(data.z || data.executedQty || '0'),
151
+ remaining: parseFloat(data.q || '0') - parseFloat(data.z || '0'),
152
+ status: mexc_data_mapper_1.MexcDataMapper.mapToOrderStatus(data.X || data.orderStatus || 'NEW'),
153
+ timestamp: parseInt(data.T || data.transactTime) || Date.now()
154
+ };
155
+ }
156
+ /**
157
+ * Create order parameters in MEXC format
158
+ */
159
+ static createOrderParams(symbol, type, side, amount, price) {
160
+ const params = {
161
+ symbol: (0, symbol_utils_1.toExchangeFormat)(symbol),
162
+ side: side.toUpperCase(),
163
+ type: type.toUpperCase(),
164
+ quantity: amount.toString()
165
+ };
166
+ if (type === 'limit' && price) {
167
+ params.price = price.toString();
168
+ params.timeInForce = 'GTC';
169
+ }
170
+ return params;
171
+ }
172
+ /**
173
+ * Determine order side from protobuf message patterns
174
+ */
175
+ static determineSide(message) {
176
+ if (message.includes('R ') || message.includes('@R')) {
177
+ return 'buy';
178
+ }
179
+ else if (message.includes('H') || message.includes('@H')) {
180
+ return 'sell';
181
+ }
182
+ return 'buy';
183
+ }
184
+ }
185
+ exports.MexcUtils = MexcUtils;
186
+ //# sourceMappingURL=mexc-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mexc-utils.js","sourceRoot":"","sources":["../../../src/exchanges/mexc/mexc-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ import { Order, OrderBook, Ticker, Trade, WebSocketStatus } from '../../types';
2
+ /**
3
+ * MEXC WebSocket
4
+ *
5
+ * Provides real-time market data streaming and user order updates
6
+ */
7
+ export declare class MexcWebSocket {
8
+ private ws?;
9
+ private subscriptions;
10
+ private status;
11
+ private readonly wsUrl;
12
+ private logger;
13
+ private reconnectTimer?;
14
+ private reconnectAttempts;
15
+ private maxReconnectAttempts;
16
+ private reconnectDelay;
17
+ private autoReconnect;
18
+ constructor(wsUrl?: string);
19
+ /**
20
+ * Connect to MEXC WebSocket
21
+ */
22
+ connectWebSocket(): Promise<void>;
23
+ /**
24
+ * WebSocket open event handler
25
+ */
26
+ private onOpen;
27
+ /**
28
+ * WebSocket close event handler
29
+ */
30
+ private onClose;
31
+ /**
32
+ * WebSocket error event handler
33
+ */
34
+ private onError;
35
+ /**
36
+ * Message handler
37
+ */
38
+ private onMessage;
39
+ /**
40
+ * Handle protobuf user data stream messages
41
+ */
42
+ private handleProtobufUserDataMessage;
43
+ /**
44
+ * Handle user data stream messages
45
+ */
46
+ private handleUserDataMessage;
47
+ /**
48
+ * Transform MEXC user data order update to Order format
49
+ */
50
+ private transformUserOrderUpdate;
51
+ /**
52
+ * Process decoded message directly based on type
53
+ */
54
+ private processDecodedMessage;
55
+ /**
56
+ * Handle order updates directly from protobuf
57
+ */
58
+ private onOrderUpdate;
59
+ /**
60
+ * Handle ticker updates directly from protobuf
61
+ */
62
+ private onTickerUpdate;
63
+ /**
64
+ * Handle trades updates directly from protobuf
65
+ */
66
+ private onTradesUpdate;
67
+ /**
68
+ * Handle order book updates directly from protobuf
69
+ */
70
+ private onOrderBookUpdate;
71
+ /**
72
+ * Disconnect WebSocket
73
+ */
74
+ disconnectWebSocket(): Promise<void>;
75
+ /**
76
+ * Subscribe to ticker updates
77
+ */
78
+ subscribeTicker(symbol: string, callback: (ticker: Ticker) => void): Promise<string>;
79
+ /**
80
+ * Subscribe to trades updates
81
+ */
82
+ subscribeTrades(symbol: string, callback: (trade: Trade) => void): Promise<string>;
83
+ /**
84
+ * Subscribe to order book updates
85
+ */
86
+ subscribeOrderBook(symbol: string, callback: (orderbook: OrderBook) => void): Promise<string>;
87
+ /**
88
+ * Subscribe to user orders
89
+ */
90
+ subscribeOrders(callback: (order: Order) => void): Promise<string>;
91
+ /**
92
+ * Subscribe to user data
93
+ */
94
+ subscribeToUserData(callback: (order: Order) => void): Promise<string>;
95
+ /**
96
+ * Send subscription message to MEXC
97
+ */
98
+ private subscribe;
99
+ /**
100
+ * Unsubscribe from a subscription
101
+ */
102
+ unsubscribe(subscriptionId: string): Promise<void>;
103
+ /**
104
+ * Check if WebSocket is connected
105
+ */
106
+ isConnected(): boolean;
107
+ /**
108
+ * Get WebSocket status
109
+ */
110
+ getWebSocketStatus(): WebSocketStatus;
111
+ /**
112
+ * Schedule reconnection attempt
113
+ */
114
+ private scheduleReconnect;
115
+ /**
116
+ * Attempt to reconnect
117
+ */
118
+ private reconnect;
119
+ /**
120
+ * Clear reconnection timer
121
+ */
122
+ private clearReconnectTimer;
123
+ }
124
+ //# sourceMappingURL=mexc-websocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mexc-websocket.d.ts","sourceRoot":"","sources":["../../../src/exchanges/mexc/mexc-websocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAgJ,MAAM,aAAa,CAAC;AAO7N;;;;GAIG;AAEH,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAC,CAAY;IACvB,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,aAAa,CAAQ;gBAEjB,KAAK,GAAE,MAAoC;IAIvD;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBvC;;OAEG;IACH,OAAO,CAAC,MAAM;IAOd;;OAEG;IACH,OAAO,CAAC,OAAO;IAUf;;OAEG;IACH,OAAO,CAAC,OAAO;IASf;;OAEG;IACH,OAAO,CAAC,SAAS;IA0BjB;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAyBrC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAsBhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiB7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACH,OAAO,CAAC,cAAc;IA+BtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoCtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmCzB;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAa1C;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB1F;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBxF;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBnG;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAaxE;;OAEG;IACG,mBAAmB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB5E;;OAEG;YACW,SAAS;IAavB;;OAEG;IACG,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxD;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,kBAAkB,IAAI,eAAe;IAIrC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;YACW,SAAS;IAavB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAM5B"}