ccxt 4.5.63 → 4.5.64

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 (124) hide show
  1. package/README.md +6 -8
  2. package/dist/ccxt.browser.min.js +4 -4
  3. package/dist/cjs/ccxt.js +6 -12
  4. package/dist/cjs/src/aster.js +2 -2
  5. package/dist/cjs/src/base/Exchange.js +34 -3
  6. package/dist/cjs/src/bitget.js +5 -3
  7. package/dist/cjs/src/bitmex.js +1 -1
  8. package/dist/cjs/src/bitstamp.js +2 -1
  9. package/dist/cjs/src/bitvavo.js +1 -0
  10. package/dist/cjs/src/btcbox.js +1 -1
  11. package/dist/cjs/src/bullish.js +1 -1
  12. package/dist/cjs/src/bybiteu.js +3 -0
  13. package/dist/cjs/src/coinbase.js +3 -2
  14. package/dist/cjs/src/coinbaseinternational.js +1 -1
  15. package/dist/cjs/src/delta.js +23 -1
  16. package/dist/cjs/src/derive.js +1 -1
  17. package/dist/cjs/src/digifinex.js +12 -0
  18. package/dist/cjs/src/dydx.js +2 -2
  19. package/dist/cjs/src/extended.js +1 -1
  20. package/dist/cjs/src/gateeu.js +1 -0
  21. package/dist/cjs/src/grvt.js +1 -1
  22. package/dist/cjs/src/hashkey.js +127 -6
  23. package/dist/cjs/src/hibachi.js +20 -10
  24. package/dist/cjs/src/hyperliquid.js +1 -1
  25. package/dist/cjs/src/kraken.js +2 -0
  26. package/dist/cjs/src/kucoin.js +1 -1
  27. package/dist/cjs/src/kucoineu.js +3 -0
  28. package/dist/cjs/src/lighter.js +6 -4
  29. package/dist/cjs/src/mudrex.js +1328 -0
  30. package/dist/cjs/src/myokx.js +3 -0
  31. package/dist/cjs/src/okxus.js +1 -5
  32. package/dist/cjs/src/onetrading.js +1 -0
  33. package/dist/cjs/src/pacifica.js +1 -1
  34. package/dist/cjs/src/poloniex.js +1 -1
  35. package/dist/cjs/src/pro/bingx.js +4 -2
  36. package/dist/cjs/src/pro/bitget.js +9 -7
  37. package/dist/cjs/src/pro/grvt.js +1 -1
  38. package/dist/cjs/src/pro/hashkey.js +1 -1
  39. package/dist/cjs/src/pro/kraken.js +1 -1
  40. package/dist/cjs/src/pro/mudrex.js +226 -0
  41. package/dist/cjs/src/pro/okxus.js +1 -1
  42. package/js/ccxt.d.ts +8 -14
  43. package/js/ccxt.js +6 -10
  44. package/js/src/abstract/binance.d.ts +3 -0
  45. package/js/src/abstract/binancecoinm.d.ts +3 -0
  46. package/js/src/abstract/binanceus.d.ts +3 -0
  47. package/js/src/abstract/binanceusdm.d.ts +3 -0
  48. package/js/src/abstract/bybit.d.ts +39 -0
  49. package/js/src/abstract/bybiteu.d.ts +39 -0
  50. package/js/src/abstract/coincheck.d.ts +3 -0
  51. package/js/src/abstract/coinsph.d.ts +8 -1
  52. package/js/src/abstract/kucoineu.js +0 -6
  53. package/js/src/abstract/mudrex.d.ts +33 -0
  54. package/js/src/aster.js +2 -2
  55. package/js/src/base/Exchange.d.ts +10 -1
  56. package/js/src/base/Exchange.js +34 -3
  57. package/js/src/bitget.js +5 -3
  58. package/js/src/bitmex.js +1 -1
  59. package/js/src/bitstamp.js +2 -1
  60. package/js/src/bitvavo.js +1 -0
  61. package/js/src/btcbox.js +1 -1
  62. package/js/src/bullish.js +1 -1
  63. package/js/src/bybiteu.js +3 -0
  64. package/js/src/coinbase.js +3 -2
  65. package/js/src/coinbaseinternational.js +1 -1
  66. package/js/src/delta.d.ts +12 -0
  67. package/js/src/delta.js +23 -1
  68. package/js/src/derive.js +1 -1
  69. package/js/src/digifinex.d.ts +12 -0
  70. package/js/src/digifinex.js +12 -0
  71. package/js/src/dydx.d.ts +2 -2
  72. package/js/src/dydx.js +2 -2
  73. package/js/src/extended.js +1 -1
  74. package/js/src/gateeu.js +1 -0
  75. package/js/src/grvt.d.ts +1 -1
  76. package/js/src/grvt.js +1 -1
  77. package/js/src/hashkey.d.ts +40 -3
  78. package/js/src/hashkey.js +127 -6
  79. package/js/src/hibachi.d.ts +9 -5
  80. package/js/src/hibachi.js +20 -10
  81. package/js/src/hyperliquid.js +1 -1
  82. package/js/src/kraken.js +2 -0
  83. package/js/src/kucoin.js +1 -1
  84. package/js/src/kucoineu.js +3 -0
  85. package/js/src/lighter.js +6 -4
  86. package/js/src/mudrex.d.ts +310 -0
  87. package/js/src/mudrex.js +1321 -0
  88. package/js/src/myokx.js +3 -0
  89. package/js/src/okxus.js +1 -5
  90. package/js/src/onetrading.js +1 -0
  91. package/js/src/pacifica.js +1 -1
  92. package/js/src/poloniex.js +1 -1
  93. package/js/src/pro/bingx.js +4 -2
  94. package/js/src/pro/bitget.js +9 -7
  95. package/js/src/pro/grvt.d.ts +1 -1
  96. package/js/src/pro/grvt.js +1 -1
  97. package/js/src/pro/hashkey.d.ts +1 -1
  98. package/js/src/pro/hashkey.js +1 -1
  99. package/js/src/pro/kraken.js +1 -1
  100. package/js/src/pro/mudrex.d.ts +23 -0
  101. package/js/src/pro/mudrex.js +219 -0
  102. package/js/src/pro/okxus.js +1 -1
  103. package/package.json +3 -3
  104. package/dist/cjs/src/abstract/coinmetro.js +0 -11
  105. package/dist/cjs/src/abstract/novadax.js +0 -11
  106. package/dist/cjs/src/ascendex.js +0 -3780
  107. package/dist/cjs/src/coinmetro.js +0 -2030
  108. package/dist/cjs/src/novadax.js +0 -1678
  109. package/dist/cjs/src/pro/ascendex.js +0 -1013
  110. package/js/src/abstract/ascendex.d.ts +0 -80
  111. package/js/src/abstract/coinmetro.d.ts +0 -37
  112. package/js/src/abstract/coinmetro.js +0 -5
  113. package/js/src/abstract/novadax.d.ts +0 -32
  114. package/js/src/abstract/novadax.js +0 -5
  115. package/js/src/ascendex.d.ts +0 -436
  116. package/js/src/ascendex.js +0 -3773
  117. package/js/src/coinmetro.d.ts +0 -245
  118. package/js/src/coinmetro.js +0 -2023
  119. package/js/src/novadax.d.ts +0 -279
  120. package/js/src/novadax.js +0 -1671
  121. package/js/src/pro/ascendex.d.ts +0 -99
  122. package/js/src/pro/ascendex.js +0 -1006
  123. /package/dist/cjs/src/abstract/{ascendex.js → mudrex.js} +0 -0
  124. /package/js/src/abstract/{ascendex.js → mudrex.js} +0 -0
@@ -48,6 +48,9 @@ class myokx extends okx["default"] {
48
48
  'inverse': undefined,
49
49
  },
50
50
  },
51
+ 'options': {
52
+ 'mica': true,
53
+ },
51
54
  });
52
55
  }
53
56
  }
@@ -34,15 +34,11 @@ class okxus extends okx["default"] {
34
34
  'CORS': undefined,
35
35
  'spot': true,
36
36
  'margin': undefined,
37
- 'swap': false,
37
+ 'swap': true,
38
38
  'future': false,
39
39
  'option': false,
40
40
  },
41
41
  'features': {
42
- 'swap': {
43
- 'linear': undefined,
44
- 'inverse': undefined,
45
- },
46
42
  'future': {
47
43
  'linear': undefined,
48
44
  'inverse': undefined,
@@ -319,6 +319,7 @@ class onetrading extends onetrading$1["default"] {
319
319
  },
320
320
  // exchange-specific options
321
321
  'options': {
322
+ 'mica': true,
322
323
  'fetchTradingFees': {
323
324
  'method': 'fetchPrivateTradingFees', // or 'fetchPublicTradingFees'
324
325
  },
@@ -32,7 +32,7 @@ class pacifica extends pacifica$1["default"] {
32
32
  'spot': false,
33
33
  'margin': false,
34
34
  'swap': true,
35
- 'future': true,
35
+ 'future': false,
36
36
  'option': false,
37
37
  'addMargin': false,
38
38
  'borrowCrossMargin': false,
@@ -29,7 +29,7 @@ class poloniex extends poloniex$1["default"] {
29
29
  'spot': true,
30
30
  'margin': undefined, // has but not fully implemented
31
31
  'swap': true,
32
- 'future': true,
32
+ 'future': false,
33
33
  'option': false,
34
34
  'addMargin': true,
35
35
  'cancelAllOrders': true,
@@ -985,7 +985,7 @@ class bingx extends bingx$1["default"] {
985
985
  }
986
986
  const uuid = this.uuid();
987
987
  let baseUrl = undefined;
988
- let request = {};
988
+ let request = undefined;
989
989
  if (type === 'swap') {
990
990
  if (subType === 'inverse') {
991
991
  throw new errors.NotSupported(this.id + ' watchOrders is not supported for inverse swap markets yet');
@@ -1098,13 +1098,15 @@ class bingx extends bingx$1["default"] {
1098
1098
  const swapMessageHash = 'swap:balance';
1099
1099
  const messageHash = isSpot ? spotMessageHash : swapMessageHash;
1100
1100
  const subscriptionHash = isSpot ? spotSubHash : swapSubHash;
1101
- let request = {};
1101
+ let request = undefined;
1102
1102
  let baseUrl = undefined;
1103
1103
  const uuid = this.uuid();
1104
1104
  if (type === 'swap') {
1105
1105
  if (subType === 'inverse') {
1106
1106
  throw new errors.NotSupported(this.id + ' watchBalance is not supported for inverse swap markets yet');
1107
1107
  }
1108
+ // swap balance updates are pushed automatically over the listenKey connection,
1109
+ // so we must not send a subscription message (an empty one is rejected with 80014)
1108
1110
  baseUrl = this.safeString(this.urls['api']['ws'], subType);
1109
1111
  }
1110
1112
  else {
@@ -886,7 +886,10 @@ class bitget extends bitget$1["default"] {
886
886
  storedOrderBook['datetime'] = this.iso8601(timestamp);
887
887
  const checksum = this.handleOption('watchOrderBook', 'checksum', true);
888
888
  const isSnapshot = this.safeString(message, 'action') === 'snapshot'; // snapshot does not have a checksum
889
- if (!isSnapshot && checksum) {
889
+ // UTA order books do not provide a crc32 checksum (they rely on seq/pseq for integrity),
890
+ // so only validate the checksum when the exchange actually sends one
891
+ const responseChecksum = this.safeInteger(rawOrderBook, 'checksum');
892
+ if (!isSnapshot && checksum && (responseChecksum !== undefined)) {
890
893
  const storedAsks = storedOrderBook['asks'];
891
894
  const storedBids = storedOrderBook['bids'];
892
895
  const asksLength = storedAsks.length;
@@ -904,12 +907,7 @@ class bitget extends bitget$1["default"] {
904
907
  }
905
908
  const payload = payloadArray.join(':');
906
909
  const calculatedChecksum = this.crc32(payload, true);
907
- const responseChecksum = this.safeInteger(rawOrderBook, 'checksum');
908
910
  if (calculatedChecksum !== responseChecksum) {
909
- // if (messageHash in client.subscriptions) {
910
- // // delete client.subscriptions[messageHash];
911
- // // delete this.orderbooks[symbol];
912
- // }
913
911
  this.spawn(this.handleCheckSumError, client, symbol, messageHash);
914
912
  return;
915
913
  }
@@ -2698,10 +2696,14 @@ class bitget extends bitget$1["default"] {
2698
2696
  //
2699
2697
  // {"event":"unsubscribe","arg":{"instType":"SPOT","channel":"books","instId":"BTCUSDT"}}
2700
2698
  //
2699
+ // UTA
2700
+ //
2701
+ // {"event":"unsubscribe","arg":{"instType":"spot","topic":"books","symbol":"BTCUSDT"}}
2702
+ //
2701
2703
  const arg = this.safeDict(message, 'arg', {});
2702
2704
  const instType = this.safeStringLower(arg, 'instType');
2703
2705
  const type = (instType === 'spot') ? 'spot' : 'contract';
2704
- const instId = this.safeString(arg, 'instId');
2706
+ const instId = this.safeString2(arg, 'instId', 'symbol');
2705
2707
  const market = this.safeMarket(instId, undefined, undefined, type);
2706
2708
  const symbol = market['symbol'];
2707
2709
  const messageHash = 'unsubscribe:orderbook:' + market['symbol'];
@@ -144,7 +144,7 @@ class grvt extends grvt$1["default"] {
144
144
  * @method
145
145
  * @name grvt#watchTickers
146
146
  * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
147
- * @see https://docs.backpack.exchange/#tag/Streams/Public/Ticker
147
+ * @see https://api-docs.grvt.io/market_data_streams/#mini-ticker-snap-feed-selector
148
148
  * @param {string[]} symbols unified symbol of the market to fetch the ticker for
149
149
  * @param {object} [params] extra parameters specific to the exchange API endpoint
150
150
  * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/?id=ticker-structure}
@@ -166,7 +166,7 @@ class hashkey extends hashkey$1["default"] {
166
166
  }
167
167
  /**
168
168
  * @method
169
- * @name hahskey#watchTicker
169
+ * @name hashkey#watchTicker
170
170
  * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
171
171
  * @see https://hashkeyglobal-apidoc.readme.io/reference/websocket-api#public-stream
172
172
  * @param {string} symbol unified symbol of the market to fetch the ticker for
@@ -631,7 +631,7 @@ class kraken extends kraken$1["default"] {
631
631
  const ohlcvsLength = data.length;
632
632
  for (let i = 0; i < ohlcvsLength; i++) {
633
633
  const candle = data[ohlcvsLength - i - 1];
634
- const datetime = this.safeString(candle, 'timestamp');
634
+ const datetime = this.safeString(candle, 'interval_begin');
635
635
  const timestamp = this.parse8601(datetime);
636
636
  const parsed = [
637
637
  timestamp,
@@ -0,0 +1,226 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var mudrex$1 = require('../mudrex.js');
6
+ var errors = require('../base/errors.js');
7
+ var Cache = require('../base/ws/Cache.js');
8
+
9
+ // ---------------------------------------------------------------------------
10
+ // ---------------------------------------------------------------------------
11
+ class mudrex extends mudrex$1["default"] {
12
+ describe() {
13
+ return this.deepExtend(super.describe(), {
14
+ 'has': {
15
+ 'ws': true,
16
+ 'watchOHLCV': true,
17
+ 'watchTicker': true,
18
+ 'watchTickers': true,
19
+ },
20
+ 'urls': {
21
+ 'api': {
22
+ 'ws': 'wss://trade.mudrex.com/fapi/v1/price/ws/linear',
23
+ },
24
+ },
25
+ 'options': {
26
+ 'broker': '42ce8902-8585-448c-a1e8-0371a6ca7ca8',
27
+ },
28
+ 'streaming': {
29
+ 'ping': this.ping,
30
+ 'keepAlive': 20000,
31
+ },
32
+ });
33
+ }
34
+ ping(client) {
35
+ return {
36
+ 'id': this.requestId(),
37
+ 'method': 'PING',
38
+ };
39
+ }
40
+ requestId() {
41
+ const reqid = this.sum(this.safeInteger(this.options, 'correlationId', 0), 1);
42
+ this.options['correlationId'] = reqid;
43
+ return reqid;
44
+ }
45
+ /**
46
+ * @ignore
47
+ * @method
48
+ * @description injects the broker Partner-Id into the websocket connection headers
49
+ */
50
+ setBrokerHeaders() {
51
+ const brokerId = this.safeString(this.options, 'broker');
52
+ if (brokerId === undefined) {
53
+ return;
54
+ }
55
+ const wsOptions = this.safeDict(this.options, 'ws', {});
56
+ const innerOptions = this.safeDict(wsOptions, 'options', {});
57
+ const headers = this.safeDict(innerOptions, 'headers', {});
58
+ headers['Partner-Id'] = brokerId;
59
+ innerOptions['headers'] = headers;
60
+ wsOptions['options'] = innerOptions;
61
+ this.options['ws'] = wsOptions;
62
+ }
63
+ async watchTicker(symbol, params = {}) {
64
+ await this.loadMarkets();
65
+ const market = this.market(symbol);
66
+ symbol = market['symbol'];
67
+ const messageHash = 'ticker:' + symbol;
68
+ const url = this.urls['api']['ws'];
69
+ this.setBrokerHeaders();
70
+ const subscribe = {
71
+ 'id': this.requestId(),
72
+ 'method': 'SUBSCRIBE',
73
+ 'params': ['ticker@1s'],
74
+ 'assets': [market['baseId'].toLowerCase() + market['quoteId'].toLowerCase()],
75
+ };
76
+ const request = this.extend(subscribe, params);
77
+ return await this.watch(url, messageHash, request, messageHash);
78
+ }
79
+ async watchTickers(symbols = undefined, params = {}) {
80
+ await this.loadMarkets();
81
+ symbols = this.marketSymbols(symbols);
82
+ const messageHashes = [];
83
+ const assets = [];
84
+ if (symbols !== undefined) {
85
+ for (let i = 0; i < symbols.length; i++) {
86
+ const market = this.market(symbols[i]);
87
+ messageHashes.push('ticker:' + market['symbol']);
88
+ assets.push(market['baseId'].toLowerCase() + market['quoteId'].toLowerCase());
89
+ }
90
+ }
91
+ const url = this.urls['api']['ws'];
92
+ this.setBrokerHeaders();
93
+ const subscribe = {
94
+ 'id': this.requestId(),
95
+ 'method': 'SUBSCRIBE',
96
+ 'params': ['ticker@1s'],
97
+ 'assets': assets,
98
+ };
99
+ const request = this.extend(subscribe, params);
100
+ const ticker = await this.watchMultiple(url, messageHashes, request, messageHashes);
101
+ if (this.newUpdates) {
102
+ const result = {};
103
+ result[ticker['symbol']] = ticker;
104
+ return result;
105
+ }
106
+ return this.filterByArrayTickers(this.tickers, 'symbol', symbols);
107
+ }
108
+ async watchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
109
+ await this.loadMarkets();
110
+ const market = this.market(symbol);
111
+ symbol = market['symbol'];
112
+ const priceType = this.safeString(params, 'price');
113
+ params = this.omit(params, 'price');
114
+ const interval = this.safeString(this.timeframes, timeframe, timeframe);
115
+ if (interval !== '1s' && interval !== '1m') {
116
+ throw new errors.NotSupported(this.id + ' watchOHLCV() supports 1s and 1m timeframes only');
117
+ }
118
+ let prefix = 'kline';
119
+ if (priceType === 'mark') {
120
+ prefix = 'markKline';
121
+ }
122
+ const stream = prefix + '@' + interval + '@' + market['baseId'].toLowerCase() + market['quoteId'].toLowerCase();
123
+ const messageHash = stream;
124
+ const url = this.urls['api']['ws'];
125
+ this.setBrokerHeaders();
126
+ const subscribe = {
127
+ 'id': this.requestId(),
128
+ 'method': 'SUBSCRIBE',
129
+ 'params': [stream],
130
+ };
131
+ const request = this.extend(subscribe, params);
132
+ const ohlcv = await this.watch(url, messageHash, request, messageHash);
133
+ if (this.newUpdates) {
134
+ limit = ohlcv.getLimit(symbol, limit);
135
+ }
136
+ return this.filterBySinceLimit(ohlcv, since, limit, 0, true);
137
+ }
138
+ handleMessage(client, message) {
139
+ if (this.safeString(message, 'method') === 'PONG') {
140
+ return;
141
+ }
142
+ const error = this.safeDict(message, 'error');
143
+ if (error !== undefined) {
144
+ this.handleErrorMessage(client, message);
145
+ return;
146
+ }
147
+ const stream = this.safeString(message, 'stream');
148
+ if (stream !== undefined) {
149
+ if (stream.indexOf('kline') >= 0 || stream.indexOf('markKline') >= 0) {
150
+ this.handleOHLCV(client, message);
151
+ }
152
+ else if (stream.indexOf('ticker') >= 0) {
153
+ this.handleTicker(client, message);
154
+ }
155
+ }
156
+ }
157
+ handleErrorMessage(client, message) {
158
+ const error = this.safeDict(message, 'error', {});
159
+ const code = this.safeString(error, 'code');
160
+ const msg = this.safeString(error, 'msg');
161
+ const feedback = this.id + ' ' + msg;
162
+ if (code === '429') {
163
+ throw new errors.RateLimitExceeded(feedback);
164
+ }
165
+ throw new errors.ExchangeError(feedback);
166
+ }
167
+ handleOHLCV(client, message) {
168
+ const stream = this.safeString(message, 'stream');
169
+ const parts = stream.split('@');
170
+ const interval = parts[1];
171
+ const tf = this.findTimeframe(interval);
172
+ const data = this.safeDict(message, 'data', {});
173
+ const s = this.safeString(data, 's');
174
+ if (s === undefined) {
175
+ return;
176
+ }
177
+ const market = this.safeMarket(s.toUpperCase());
178
+ const symbol = market['symbol'];
179
+ const parsed = [
180
+ this.safeTimestamp(data, 't'),
181
+ this.safeNumber(data, 'o'),
182
+ this.safeNumber(data, 'h'),
183
+ this.safeNumber(data, 'l'),
184
+ this.safeNumber(data, 'c'),
185
+ this.safeNumber(data, 'v'),
186
+ ];
187
+ this.ohlcvs[symbol] = this.safeValue(this.ohlcvs, symbol, {});
188
+ let stored = this.safeValue(this.ohlcvs[symbol], tf);
189
+ if (stored === undefined) {
190
+ const limit = this.safeInteger(this.options, 'OHLCVLimit', 1000);
191
+ stored = new Cache.ArrayCacheByTimestamp(limit);
192
+ this.ohlcvs[symbol][tf] = stored;
193
+ }
194
+ stored.append(parsed);
195
+ const messageHash = stream;
196
+ client.resolve(stored, messageHash);
197
+ }
198
+ handleTicker(client, message) {
199
+ const data = this.safeList(message, 'data', []);
200
+ for (let i = 0; i < data.length; i++) {
201
+ const t = data[i];
202
+ const s = this.safeString(t, 's');
203
+ if (s === undefined) {
204
+ continue;
205
+ }
206
+ const market = this.safeMarket(s.toUpperCase());
207
+ const symbol = market['symbol'];
208
+ const timestamp = this.milliseconds();
209
+ const last = this.safeNumber(t, 'p');
210
+ const result = this.safeTicker({
211
+ 'symbol': symbol,
212
+ 'timestamp': timestamp,
213
+ 'datetime': this.iso8601(timestamp),
214
+ 'last': last,
215
+ 'close': last,
216
+ 'info': t,
217
+ });
218
+ this.tickers[symbol] = result;
219
+ const messageHash = 'ticker:' + symbol;
220
+ client.resolve(result, messageHash);
221
+ client.resolve(result, 'tickers');
222
+ }
223
+ }
224
+ }
225
+
226
+ exports["default"] = mudrex;
@@ -29,7 +29,7 @@ class okxus extends okx["default"] {
29
29
  },
30
30
  },
31
31
  'has': {
32
- 'swap': false,
32
+ 'swap': true,
33
33
  'future': false,
34
34
  'option': false,
35
35
  },
package/js/ccxt.d.ts CHANGED
@@ -4,11 +4,10 @@ import * as functions from './src/base/functions.js';
4
4
  import * as errors from './src/base/errors.js';
5
5
  import type { Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, Dictionary, NestedDictionary, MinMax, FeeInterface, TradingFeeInterface, MarketInterface, Trade, Order, OrderBook, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarketMarginModes, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, LeverageTiers, LongShortRatio, OrderBooks, OpenInterests, ConstructorArgs, ADL } from './src/base/types.js';
6
6
  import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError } from './src/base/errors.js';
7
- declare const version = "4.5.62";
7
+ declare const version = "4.5.63";
8
8
  import aftermath from './src/aftermath.js';
9
9
  import alpaca from './src/alpaca.js';
10
10
  import apex from './src/apex.js';
11
- import ascendex from './src/ascendex.js';
12
11
  import aster from './src/aster.js';
13
12
  import backpack from './src/backpack.js';
14
13
  import bequant from './src/bequant.js';
@@ -50,7 +49,6 @@ import coinbaseinternational from './src/coinbaseinternational.js';
50
49
  import coincheck from './src/coincheck.js';
51
50
  import coinex from './src/coinex.js';
52
51
  import coinmate from './src/coinmate.js';
53
- import coinmetro from './src/coinmetro.js';
54
52
  import coinone from './src/coinone.js';
55
53
  import coinsph from './src/coinsph.js';
56
54
  import coinspot from './src/coinspot.js';
@@ -90,9 +88,9 @@ import luno from './src/luno.js';
90
88
  import mercado from './src/mercado.js';
91
89
  import mexc from './src/mexc.js';
92
90
  import modetrade from './src/modetrade.js';
91
+ import mudrex from './src/mudrex.js';
93
92
  import myokx from './src/myokx.js';
94
93
  import ndax from './src/ndax.js';
95
- import novadax from './src/novadax.js';
96
94
  import okx from './src/okx.js';
97
95
  import okxus from './src/okxus.js';
98
96
  import onetrading from './src/onetrading.js';
@@ -115,7 +113,6 @@ import zebpay from './src/zebpay.js';
115
113
  import aftermathPro from './src/pro/aftermath.js';
116
114
  import alpacaPro from './src/pro/alpaca.js';
117
115
  import apexPro from './src/pro/apex.js';
118
- import ascendexPro from './src/pro/ascendex.js';
119
116
  import asterPro from './src/pro/aster.js';
120
117
  import backpackPro from './src/pro/backpack.js';
121
118
  import bequantPro from './src/pro/bequant.js';
@@ -174,6 +171,7 @@ import lighterPro from './src/pro/lighter.js';
174
171
  import lunoPro from './src/pro/luno.js';
175
172
  import mexcPro from './src/pro/mexc.js';
176
173
  import modetradePro from './src/pro/modetrade.js';
174
+ import mudrexPro from './src/pro/mudrex.js';
177
175
  import myokxPro from './src/pro/myokx.js';
178
176
  import ndaxPro from './src/pro/ndax.js';
179
177
  import okxPro from './src/pro/okx.js';
@@ -195,7 +193,6 @@ declare const exchanges: {
195
193
  aftermath: typeof aftermath;
196
194
  alpaca: typeof alpaca;
197
195
  apex: typeof apex;
198
- ascendex: typeof ascendex;
199
196
  aster: typeof aster;
200
197
  backpack: typeof backpack;
201
198
  bequant: typeof bequant;
@@ -237,7 +234,6 @@ declare const exchanges: {
237
234
  coincheck: typeof coincheck;
238
235
  coinex: typeof coinex;
239
236
  coinmate: typeof coinmate;
240
- coinmetro: typeof coinmetro;
241
237
  coinone: typeof coinone;
242
238
  coinsph: typeof coinsph;
243
239
  coinspot: typeof coinspot;
@@ -277,9 +273,9 @@ declare const exchanges: {
277
273
  mercado: typeof mercado;
278
274
  mexc: typeof mexc;
279
275
  modetrade: typeof modetrade;
276
+ mudrex: typeof mudrex;
280
277
  myokx: typeof myokx;
281
278
  ndax: typeof ndax;
282
- novadax: typeof novadax;
283
279
  okx: typeof okx;
284
280
  okxus: typeof okxus;
285
281
  onetrading: typeof onetrading;
@@ -304,7 +300,6 @@ declare const pro: {
304
300
  aftermath: typeof aftermathPro;
305
301
  alpaca: typeof alpacaPro;
306
302
  apex: typeof apexPro;
307
- ascendex: typeof ascendexPro;
308
303
  aster: typeof asterPro;
309
304
  backpack: typeof backpackPro;
310
305
  bequant: typeof bequantPro;
@@ -363,6 +358,7 @@ declare const pro: {
363
358
  luno: typeof lunoPro;
364
359
  mexc: typeof mexcPro;
365
360
  modetrade: typeof modetradePro;
361
+ mudrex: typeof mudrexPro;
366
362
  myokx: typeof myokxPro;
367
363
  ndax: typeof ndaxPro;
368
364
  okx: typeof okxPro;
@@ -390,7 +386,6 @@ declare const ccxt: {
390
386
  aftermath: typeof aftermathPro;
391
387
  alpaca: typeof alpacaPro;
392
388
  apex: typeof apexPro;
393
- ascendex: typeof ascendexPro;
394
389
  aster: typeof asterPro;
395
390
  backpack: typeof backpackPro;
396
391
  bequant: typeof bequantPro;
@@ -449,6 +444,7 @@ declare const ccxt: {
449
444
  luno: typeof lunoPro;
450
445
  mexc: typeof mexcPro;
451
446
  modetrade: typeof modetradePro;
447
+ mudrex: typeof mudrexPro;
452
448
  myokx: typeof myokxPro;
453
449
  ndax: typeof ndaxPro;
454
450
  okx: typeof okxPro;
@@ -471,7 +467,6 @@ declare const ccxt: {
471
467
  aftermath: typeof aftermath;
472
468
  alpaca: typeof alpaca;
473
469
  apex: typeof apex;
474
- ascendex: typeof ascendex;
475
470
  aster: typeof aster;
476
471
  backpack: typeof backpack;
477
472
  bequant: typeof bequant;
@@ -513,7 +508,6 @@ declare const ccxt: {
513
508
  coincheck: typeof coincheck;
514
509
  coinex: typeof coinex;
515
510
  coinmate: typeof coinmate;
516
- coinmetro: typeof coinmetro;
517
511
  coinone: typeof coinone;
518
512
  coinsph: typeof coinsph;
519
513
  coinspot: typeof coinspot;
@@ -553,9 +547,9 @@ declare const ccxt: {
553
547
  mercado: typeof mercado;
554
548
  mexc: typeof mexc;
555
549
  modetrade: typeof modetrade;
550
+ mudrex: typeof mudrex;
556
551
  myokx: typeof myokx;
557
552
  ndax: typeof ndax;
558
- novadax: typeof novadax;
559
553
  okx: typeof okx;
560
554
  okxus: typeof okxus;
561
555
  onetrading: typeof onetrading;
@@ -576,5 +570,5 @@ declare const ccxt: {
576
570
  zaif: typeof zaif;
577
571
  zebpay: typeof zebpay;
578
572
  } & typeof functions & typeof errors;
579
- export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError, Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, ConstructorArgs, Dictionary, NestedDictionary, MinMax, FeeInterface, TradingFeeInterface, MarketMarginModes, MarketInterface, Trade, Order, OrderBook, OrderBooks, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, OpenInterests, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, LongShortRatio, ADL, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, LeverageTiers, aftermath, alpaca, apex, ascendex, aster, backpack, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbns, bitfinex, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitrue, bitso, bitstamp, bitteam, bittrade, bitvavo, blockchaincom, blofin, btcbox, btcmarkets, btcturk, bullish, bybit, bybiteu, bydfi, cex, coinbase, coinbaseexchange, coinbaseinternational, coincheck, coinex, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, cryptomus, deepcoin, delta, deribit, derive, digifinex, dydx, exmo, extended, fmfwio, foxbit, gate, gateeu, gemini, grvt, hashkey, hibachi, hitbtc, hollaex, htx, hyperliquid, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoineu, kucoinfutures, latoken, lbank, lighter, luno, mercado, mexc, modetrade, myokx, ndax, novadax, okx, okxus, onetrading, p2b, pacifica, paradex, paymium, phemex, poloniex, tokocrypto, toobit, upbit, weex, whitebit, woo, woofipro, xt, zaif, zebpay, };
573
+ export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError, Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, ConstructorArgs, Dictionary, NestedDictionary, MinMax, FeeInterface, TradingFeeInterface, MarketMarginModes, MarketInterface, Trade, Order, OrderBook, OrderBooks, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, OpenInterests, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, LongShortRatio, ADL, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, LeverageTiers, aftermath, alpaca, apex, aster, backpack, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbns, bitfinex, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitrue, bitso, bitstamp, bitteam, bittrade, bitvavo, blockchaincom, blofin, btcbox, btcmarkets, btcturk, bullish, bybit, bybiteu, bydfi, cex, coinbase, coinbaseexchange, coinbaseinternational, coincheck, coinex, coinmate, coinone, coinsph, coinspot, cryptocom, cryptomus, deepcoin, delta, deribit, derive, digifinex, dydx, exmo, extended, fmfwio, foxbit, gate, gateeu, gemini, grvt, hashkey, hibachi, hitbtc, hollaex, htx, hyperliquid, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoineu, kucoinfutures, latoken, lbank, lighter, luno, mercado, mexc, modetrade, mudrex, myokx, ndax, okx, okxus, onetrading, p2b, pacifica, paradex, paymium, phemex, poloniex, tokocrypto, toobit, upbit, weex, whitebit, woo, woofipro, xt, zaif, zebpay, };
580
574
  export default ccxt;
package/js/ccxt.js CHANGED
@@ -32,12 +32,11 @@ import * as errors from './src/base/errors.js';
32
32
  import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError } from './src/base/errors.js';
33
33
  //-----------------------------------------------------------------------------
34
34
  // this is updated by vss.js when building
35
- const version = '4.5.62';
35
+ const version = '4.5.63';
36
36
  //-----------------------------------------------------------------------------
37
37
  import aftermath from './src/aftermath.js';
38
38
  import alpaca from './src/alpaca.js';
39
39
  import apex from './src/apex.js';
40
- import ascendex from './src/ascendex.js';
41
40
  import aster from './src/aster.js';
42
41
  import backpack from './src/backpack.js';
43
42
  import bequant from './src/bequant.js';
@@ -79,7 +78,6 @@ import coinbaseinternational from './src/coinbaseinternational.js';
79
78
  import coincheck from './src/coincheck.js';
80
79
  import coinex from './src/coinex.js';
81
80
  import coinmate from './src/coinmate.js';
82
- import coinmetro from './src/coinmetro.js';
83
81
  import coinone from './src/coinone.js';
84
82
  import coinsph from './src/coinsph.js';
85
83
  import coinspot from './src/coinspot.js';
@@ -119,9 +117,9 @@ import luno from './src/luno.js';
119
117
  import mercado from './src/mercado.js';
120
118
  import mexc from './src/mexc.js';
121
119
  import modetrade from './src/modetrade.js';
120
+ import mudrex from './src/mudrex.js';
122
121
  import myokx from './src/myokx.js';
123
122
  import ndax from './src/ndax.js';
124
- import novadax from './src/novadax.js';
125
123
  import okx from './src/okx.js';
126
124
  import okxus from './src/okxus.js';
127
125
  import onetrading from './src/onetrading.js';
@@ -145,7 +143,6 @@ import zebpay from './src/zebpay.js';
145
143
  import aftermathPro from './src/pro/aftermath.js';
146
144
  import alpacaPro from './src/pro/alpaca.js';
147
145
  import apexPro from './src/pro/apex.js';
148
- import ascendexPro from './src/pro/ascendex.js';
149
146
  import asterPro from './src/pro/aster.js';
150
147
  import backpackPro from './src/pro/backpack.js';
151
148
  import bequantPro from './src/pro/bequant.js';
@@ -204,6 +201,7 @@ import lighterPro from './src/pro/lighter.js';
204
201
  import lunoPro from './src/pro/luno.js';
205
202
  import mexcPro from './src/pro/mexc.js';
206
203
  import modetradePro from './src/pro/modetrade.js';
204
+ import mudrexPro from './src/pro/mudrex.js';
207
205
  import myokxPro from './src/pro/myokx.js';
208
206
  import ndaxPro from './src/pro/ndax.js';
209
207
  import okxPro from './src/pro/okx.js';
@@ -225,7 +223,6 @@ const exchanges = {
225
223
  'aftermath': aftermath,
226
224
  'alpaca': alpaca,
227
225
  'apex': apex,
228
- 'ascendex': ascendex,
229
226
  'aster': aster,
230
227
  'backpack': backpack,
231
228
  'bequant': bequant,
@@ -267,7 +264,6 @@ const exchanges = {
267
264
  'coincheck': coincheck,
268
265
  'coinex': coinex,
269
266
  'coinmate': coinmate,
270
- 'coinmetro': coinmetro,
271
267
  'coinone': coinone,
272
268
  'coinsph': coinsph,
273
269
  'coinspot': coinspot,
@@ -307,9 +303,9 @@ const exchanges = {
307
303
  'mercado': mercado,
308
304
  'mexc': mexc,
309
305
  'modetrade': modetrade,
306
+ 'mudrex': mudrex,
310
307
  'myokx': myokx,
311
308
  'ndax': ndax,
312
- 'novadax': novadax,
313
309
  'okx': okx,
314
310
  'okxus': okxus,
315
311
  'onetrading': onetrading,
@@ -334,7 +330,6 @@ const pro = {
334
330
  'aftermath': aftermathPro,
335
331
  'alpaca': alpacaPro,
336
332
  'apex': apexPro,
337
- 'ascendex': ascendexPro,
338
333
  'aster': asterPro,
339
334
  'backpack': backpackPro,
340
335
  'bequant': bequantPro,
@@ -393,6 +388,7 @@ const pro = {
393
388
  'luno': lunoPro,
394
389
  'mexc': mexcPro,
395
390
  'modetrade': modetradePro,
391
+ 'mudrex': mudrexPro,
396
392
  'myokx': myokxPro,
397
393
  'ndax': ndaxPro,
398
394
  'okx': okxPro,
@@ -423,6 +419,6 @@ pro.exchanges = Object.keys(pro);
423
419
  pro['Exchange'] = Exchange; // now the same for rest and ts
424
420
  //-----------------------------------------------------------------------------
425
421
  const ccxt = Object.assign({ version, Exchange, Precise, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, functions, errors);
426
- export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError, aftermath, alpaca, apex, ascendex, aster, backpack, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbns, bitfinex, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitrue, bitso, bitstamp, bitteam, bittrade, bitvavo, blockchaincom, blofin, btcbox, btcmarkets, btcturk, bullish, bybit, bybiteu, bydfi, cex, coinbase, coinbaseexchange, coinbaseinternational, coincheck, coinex, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, cryptomus, deepcoin, delta, deribit, derive, digifinex, dydx, exmo, extended, fmfwio, foxbit, gate, gateeu, gemini, grvt, hashkey, hibachi, hitbtc, hollaex, htx, hyperliquid, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoineu, kucoinfutures, latoken, lbank, lighter, luno, mercado, mexc, modetrade, myokx, ndax, novadax, okx, okxus, onetrading, p2b, pacifica, paradex, paymium, phemex, poloniex, tokocrypto, toobit, upbit, weex, whitebit, woo, woofipro, xt, zaif, zebpay, };
422
+ export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError, aftermath, alpaca, apex, aster, backpack, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbns, bitfinex, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitrue, bitso, bitstamp, bitteam, bittrade, bitvavo, blockchaincom, blofin, btcbox, btcmarkets, btcturk, bullish, bybit, bybiteu, bydfi, cex, coinbase, coinbaseexchange, coinbaseinternational, coincheck, coinex, coinmate, coinone, coinsph, coinspot, cryptocom, cryptomus, deepcoin, delta, deribit, derive, digifinex, dydx, exmo, extended, fmfwio, foxbit, gate, gateeu, gemini, grvt, hashkey, hibachi, hitbtc, hollaex, htx, hyperliquid, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoineu, kucoinfutures, latoken, lbank, lighter, luno, mercado, mexc, modetrade, mudrex, myokx, ndax, okx, okxus, onetrading, p2b, pacifica, paradex, paymium, phemex, poloniex, tokocrypto, toobit, upbit, weex, whitebit, woo, woofipro, xt, zaif, zebpay, };
427
423
  export default ccxt;
428
424
  //-----------------------------------------------------------------------------