ccxt 4.4.86 → 4.4.87

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 (70) hide show
  1. package/README.md +17 -5
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +11 -1
  4. package/dist/cjs/src/abstract/modetrade.js +9 -0
  5. package/dist/cjs/src/base/Exchange.js +10 -8
  6. package/dist/cjs/src/binance.js +1 -1
  7. package/dist/cjs/src/bitteam.js +31 -0
  8. package/dist/cjs/src/coinmetro.js +5 -1
  9. package/dist/cjs/src/derive.js +4 -5
  10. package/dist/cjs/src/ellipx.js +2 -3
  11. package/dist/cjs/src/gate.js +92 -76
  12. package/dist/cjs/src/htx.js +10 -8
  13. package/dist/cjs/src/hyperliquid.js +32 -16
  14. package/dist/cjs/src/kraken.js +5 -8
  15. package/dist/cjs/src/modetrade.js +2839 -0
  16. package/dist/cjs/src/okx.js +95 -2
  17. package/dist/cjs/src/okxus.js +53 -0
  18. package/dist/cjs/src/paradex.js +6 -1
  19. package/dist/cjs/src/phemex.js +4 -6
  20. package/dist/cjs/src/poloniex.js +181 -170
  21. package/dist/cjs/src/pro/modetrade.js +1334 -0
  22. package/dist/cjs/src/pro/okxus.js +38 -0
  23. package/dist/cjs/src/probit.js +18 -51
  24. package/dist/cjs/src/timex.js +5 -10
  25. package/dist/cjs/src/vertex.js +3 -4
  26. package/dist/cjs/src/whitebit.js +41 -11
  27. package/dist/cjs/src/woo.js +101 -77
  28. package/dist/cjs/src/woofipro.js +24 -21
  29. package/dist/cjs/src/xt.js +36 -44
  30. package/js/ccxt.d.ts +14 -2
  31. package/js/ccxt.js +10 -2
  32. package/js/src/abstract/modetrade.d.ts +122 -0
  33. package/js/src/abstract/modetrade.js +11 -0
  34. package/js/src/abstract/okxus.d.ts +352 -0
  35. package/js/src/abstract/okxus.js +11 -0
  36. package/js/src/base/Exchange.js +10 -8
  37. package/js/src/binance.js +1 -1
  38. package/js/src/bitteam.js +31 -0
  39. package/js/src/coinmetro.js +5 -1
  40. package/js/src/derive.js +4 -3
  41. package/js/src/ellipx.d.ts +1 -1
  42. package/js/src/ellipx.js +3 -5
  43. package/js/src/gate.js +92 -76
  44. package/js/src/htx.js +10 -8
  45. package/js/src/hyperliquid.js +32 -16
  46. package/js/src/kraken.js +5 -8
  47. package/js/src/modetrade.d.ts +475 -0
  48. package/js/src/modetrade.js +2840 -0
  49. package/js/src/okx.d.ts +24 -1
  50. package/js/src/okx.js +95 -2
  51. package/js/src/okxus.d.ts +4 -0
  52. package/js/src/okxus.js +54 -0
  53. package/js/src/paradex.js +6 -1
  54. package/js/src/phemex.js +4 -6
  55. package/js/src/poloniex.d.ts +2 -0
  56. package/js/src/poloniex.js +181 -170
  57. package/js/src/pro/modetrade.d.ts +155 -0
  58. package/js/src/pro/modetrade.js +1335 -0
  59. package/js/src/pro/okxus.d.ts +4 -0
  60. package/js/src/pro/okxus.js +39 -0
  61. package/js/src/probit.js +18 -51
  62. package/js/src/timex.js +5 -10
  63. package/js/src/vertex.js +3 -4
  64. package/js/src/whitebit.js +42 -11
  65. package/js/src/woo.d.ts +2 -0
  66. package/js/src/woo.js +101 -77
  67. package/js/src/woofipro.d.ts +2 -1
  68. package/js/src/woofipro.js +24 -21
  69. package/js/src/xt.js +36 -44
  70. package/package.json +1 -1
package/dist/cjs/ccxt.js CHANGED
@@ -89,12 +89,14 @@ var lbank = require('./src/lbank.js');
89
89
  var luno = require('./src/luno.js');
90
90
  var mercado = require('./src/mercado.js');
91
91
  var mexc = require('./src/mexc.js');
92
+ var modetrade = require('./src/modetrade.js');
92
93
  var myokx = require('./src/myokx.js');
93
94
  var ndax = require('./src/ndax.js');
94
95
  var novadax = require('./src/novadax.js');
95
96
  var oceanex = require('./src/oceanex.js');
96
97
  var okcoin = require('./src/okcoin.js');
97
98
  var okx = require('./src/okx.js');
99
+ var okxus = require('./src/okxus.js');
98
100
  var onetrading = require('./src/onetrading.js');
99
101
  var oxfun = require('./src/oxfun.js');
100
102
  var p2b = require('./src/p2b.js');
@@ -169,10 +171,12 @@ var kucoinfutures$1 = require('./src/pro/kucoinfutures.js');
169
171
  var lbank$1 = require('./src/pro/lbank.js');
170
172
  var luno$1 = require('./src/pro/luno.js');
171
173
  var mexc$1 = require('./src/pro/mexc.js');
174
+ var modetrade$1 = require('./src/pro/modetrade.js');
172
175
  var myokx$1 = require('./src/pro/myokx.js');
173
176
  var ndax$1 = require('./src/pro/ndax.js');
174
177
  var okcoin$1 = require('./src/pro/okcoin.js');
175
178
  var okx$1 = require('./src/pro/okx.js');
179
+ var okxus$1 = require('./src/pro/okxus.js');
176
180
  var onetrading$1 = require('./src/pro/onetrading.js');
177
181
  var oxfun$1 = require('./src/pro/oxfun.js');
178
182
  var p2b$1 = require('./src/pro/p2b.js');
@@ -190,7 +194,7 @@ var xt$1 = require('./src/pro/xt.js');
190
194
 
191
195
  //-----------------------------------------------------------------------------
192
196
  // this is updated by vss.js when building
193
- const version = '4.4.86';
197
+ const version = '4.4.87';
194
198
  Exchange["default"].ccxtVersion = version;
195
199
  const exchanges = {
196
200
  'alpaca': alpaca,
@@ -270,12 +274,14 @@ const exchanges = {
270
274
  'luno': luno,
271
275
  'mercado': mercado,
272
276
  'mexc': mexc,
277
+ 'modetrade': modetrade,
273
278
  'myokx': myokx,
274
279
  'ndax': ndax,
275
280
  'novadax': novadax,
276
281
  'oceanex': oceanex,
277
282
  'okcoin': okcoin,
278
283
  'okx': okx,
284
+ 'okxus': okxus,
279
285
  'onetrading': onetrading,
280
286
  'oxfun': oxfun,
281
287
  'p2b': p2b,
@@ -352,10 +358,12 @@ const pro = {
352
358
  'lbank': lbank$1,
353
359
  'luno': luno$1,
354
360
  'mexc': mexc$1,
361
+ 'modetrade': modetrade$1,
355
362
  'myokx': myokx$1,
356
363
  'ndax': ndax$1,
357
364
  'okcoin': okcoin$1,
358
365
  'okx': okx$1,
366
+ 'okxus': okxus$1,
359
367
  'onetrading': onetrading$1,
360
368
  'oxfun': oxfun$1,
361
369
  'p2b': p2b$1,
@@ -498,12 +506,14 @@ exports.lbank = lbank;
498
506
  exports.luno = luno;
499
507
  exports.mercado = mercado;
500
508
  exports.mexc = mexc;
509
+ exports.modetrade = modetrade;
501
510
  exports.myokx = myokx;
502
511
  exports.ndax = ndax;
503
512
  exports.novadax = novadax;
504
513
  exports.oceanex = oceanex;
505
514
  exports.okcoin = okcoin;
506
515
  exports.okx = okx;
516
+ exports.okxus = okxus;
507
517
  exports.onetrading = onetrading;
508
518
  exports.oxfun = oxfun;
509
519
  exports.p2b = p2b;
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var Exchange$1 = require('../base/Exchange.js');
4
+
5
+ // ----------------------------------------------------------------------------
6
+ class Exchange extends Exchange$1["default"] {
7
+ }
8
+
9
+ module.exports = Exchange;
@@ -743,8 +743,10 @@ class Exchange {
743
743
  // only call if exchange API provides endpoint (true), thus avoid emulated versions ('emulated')
744
744
  if (this.has['fetchCurrencies'] === true) {
745
745
  currencies = await this.fetchCurrencies();
746
+ this.options['cachedCurrencies'] = currencies;
746
747
  }
747
748
  const markets = await this.fetchMarkets(params);
749
+ delete this.options['cachedCurrencies'];
748
750
  return this.setMarkets(markets, currencies);
749
751
  }
750
752
  /**
@@ -3961,12 +3963,12 @@ class Exchange {
3961
3963
  }
3962
3964
  else {
3963
3965
  // if networkCode was provided by user, we should check it after response, as the referenced exchange doesn't support network-code during request
3964
- const networkId = isIndexedByUnifiedNetworkCode ? networkCode : this.networkCodeToId(networkCode, currencyCode);
3965
- if (networkId in indexedNetworkEntries) {
3966
- chosenNetworkId = networkId;
3966
+ const networkIdOrCode = isIndexedByUnifiedNetworkCode ? networkCode : this.networkCodeToId(networkCode, currencyCode);
3967
+ if (networkIdOrCode in indexedNetworkEntries) {
3968
+ chosenNetworkId = networkIdOrCode;
3967
3969
  }
3968
3970
  else {
3969
- throw new errors.NotSupported(this.id + ' - ' + networkId + ' network was not found for ' + currencyCode + ', use one of ' + availableNetworkIds.join(', '));
3971
+ throw new errors.NotSupported(this.id + ' - ' + networkIdOrCode + ' network was not found for ' + currencyCode + ', use one of ' + availableNetworkIds.join(', '));
3970
3972
  }
3971
3973
  }
3972
3974
  }
@@ -4308,15 +4310,15 @@ class Exchange {
4308
4310
  const cost = this.calculateRateLimiterCost(api, method, path, params, config);
4309
4311
  await this.throttle(cost);
4310
4312
  }
4313
+ let retries = undefined;
4314
+ [retries, params] = this.handleOptionAndParams(params, path, 'maxRetriesOnFailure', 0);
4315
+ let retryDelay = undefined;
4316
+ [retryDelay, params] = this.handleOptionAndParams(params, path, 'maxRetriesOnFailureDelay', 0);
4311
4317
  this.lastRestRequestTimestamp = this.milliseconds();
4312
4318
  const request = this.sign(path, api, method, params, headers, body);
4313
4319
  this.last_request_headers = request['headers'];
4314
4320
  this.last_request_body = request['body'];
4315
4321
  this.last_request_url = request['url'];
4316
- let retries = undefined;
4317
- [retries, params] = this.handleOptionAndParams(params, path, 'maxRetriesOnFailure', 0);
4318
- let retryDelay = undefined;
4319
- [retryDelay, params] = this.handleOptionAndParams(params, path, 'maxRetriesOnFailureDelay', 0);
4320
4322
  for (let i = 0; i < retries + 1; i++) {
4321
4323
  try {
4322
4324
  return await this.fetch(request['url'], request['method'], request['headers'], request['body']);
@@ -5195,7 +5195,6 @@ class binance extends binance$1 {
5195
5195
  if (postOnly) {
5196
5196
  uppercaseType = 'LIMIT_MAKER';
5197
5197
  }
5198
- request['type'] = uppercaseType;
5199
5198
  const triggerPrice = this.safeNumber2(params, 'stopPrice', 'triggerPrice');
5200
5199
  if (triggerPrice !== undefined) {
5201
5200
  if (uppercaseType === 'MARKET') {
@@ -5205,6 +5204,7 @@ class binance extends binance$1 {
5205
5204
  uppercaseType = 'STOP_LOSS_LIMIT';
5206
5205
  }
5207
5206
  }
5207
+ request['type'] = uppercaseType;
5208
5208
  const validOrderTypes = this.safeList(market['info'], 'orderTypes');
5209
5209
  if (!this.inArray(uppercaseType, validOrderTypes)) {
5210
5210
  if (initialUppercaseType !== uppercaseType) {
@@ -29,12 +29,18 @@ class bitteam extends bitteam$1 {
29
29
  'future': false,
30
30
  'option': false,
31
31
  'addMargin': false,
32
+ 'borrowCrossMargin': false,
33
+ 'borrowIsolatedMargin': false,
32
34
  'borrowMargin': false,
33
35
  'cancelAllOrders': true,
34
36
  'cancelOrder': true,
35
37
  'cancelOrders': false,
38
+ 'closeAllPositions': false,
39
+ 'closePosition': false,
36
40
  'createDepositAddress': false,
37
41
  'createOrder': true,
42
+ 'createOrderWithTakeProfitAndStopLoss': false,
43
+ 'createOrderWithTakeProfitAndStopLossWs': false,
38
44
  'createPostOnlyOrder': false,
39
45
  'createReduceOnlyOrder': false,
40
46
  'createStopLimitOrder': false,
@@ -46,8 +52,11 @@ class bitteam extends bitteam$1 {
46
52
  'fetchBalance': true,
47
53
  'fetchBidsAsks': false,
48
54
  'fetchBorrowInterest': false,
55
+ 'fetchBorrowRate': false,
49
56
  'fetchBorrowRateHistories': false,
50
57
  'fetchBorrowRateHistory': false,
58
+ 'fetchBorrowRates': false,
59
+ 'fetchBorrowRatesPerSymbol': false,
51
60
  'fetchCanceledOrders': true,
52
61
  'fetchClosedOrder': false,
53
62
  'fetchClosedOrders': true,
@@ -63,24 +72,42 @@ class bitteam extends bitteam$1 {
63
72
  'fetchDepositWithdrawFee': false,
64
73
  'fetchDepositWithdrawFees': false,
65
74
  'fetchFundingHistory': false,
75
+ 'fetchFundingInterval': false,
76
+ 'fetchFundingIntervals': false,
66
77
  'fetchFundingRate': false,
67
78
  'fetchFundingRateHistory': false,
68
79
  'fetchFundingRates': false,
80
+ 'fetchGreeks': false,
69
81
  'fetchIndexOHLCV': false,
70
82
  'fetchIsolatedBorrowRate': false,
71
83
  'fetchIsolatedBorrowRates': false,
84
+ 'fetchIsolatedPositions': false,
72
85
  'fetchL3OrderBook': false,
73
86
  'fetchLedger': false,
74
87
  'fetchLeverage': false,
88
+ 'fetchLeverages': false,
75
89
  'fetchLeverageTiers': false,
90
+ 'fetchLiquidations': false,
91
+ 'fetchLongShortRatio': false,
92
+ 'fetchLongShortRatioHistory': false,
93
+ 'fetchMarginAdjustmentHistory': false,
94
+ 'fetchMarginMode': false,
95
+ 'fetchMarginModes': false,
76
96
  'fetchMarketLeverageTiers': false,
77
97
  'fetchMarkets': true,
78
98
  'fetchMarkOHLCV': false,
99
+ 'fetchMarkPrices': false,
100
+ 'fetchMyLiquidations': false,
101
+ 'fetchMySettlementHistory': false,
79
102
  'fetchMyTrades': true,
80
103
  'fetchOHLCV': true,
104
+ 'fetchOpenInterest': false,
81
105
  'fetchOpenInterestHistory': false,
106
+ 'fetchOpenInterests': false,
82
107
  'fetchOpenOrder': false,
83
108
  'fetchOpenOrders': true,
109
+ 'fetchOption': false,
110
+ 'fetchOptionChain': false,
84
111
  'fetchOrder': true,
85
112
  'fetchOrderBook': true,
86
113
  'fetchOrderBooks': false,
@@ -94,6 +121,7 @@ class bitteam extends bitteam$1 {
94
121
  'fetchPositionsHistory': false,
95
122
  'fetchPositionsRisk': false,
96
123
  'fetchPremiumIndexOHLCV': false,
124
+ 'fetchSettlementHistory': false,
97
125
  'fetchStatus': false,
98
126
  'fetchTicker': true,
99
127
  'fetchTickers': true,
@@ -106,10 +134,13 @@ class bitteam extends bitteam$1 {
106
134
  'fetchTransactionFees': false,
107
135
  'fetchTransactions': true,
108
136
  'fetchTransfers': false,
137
+ 'fetchVolatilityHistory': false,
109
138
  'fetchWithdrawal': false,
110
139
  'fetchWithdrawals': false,
111
140
  'fetchWithdrawalWhitelist': false,
112
141
  'reduceMargin': false,
142
+ 'repayCrossMargin': false,
143
+ 'repayIsolatedMargin': false,
113
144
  'repayMargin': false,
114
145
  'setLeverage': false,
115
146
  'setMargin': false,
@@ -385,7 +385,11 @@ class coinmetro extends coinmetro$1 {
385
385
  else if (typeRaw === 'fiat') {
386
386
  type = 'fiat';
387
387
  }
388
- const precisionDigits = this.safeString2(currency, 'digits', 'notabeneDecimals');
388
+ let precisionDigits = this.safeString2(currency, 'digits', 'notabeneDecimals');
389
+ if (code === 'RENDER') {
390
+ // RENDER is an exception (with broken info)
391
+ precisionDigits = '4';
392
+ }
389
393
  result[code] = this.safeCurrencyStructure({
390
394
  'id': id,
391
395
  'code': code,
@@ -1,13 +1,12 @@
1
1
  'use strict';
2
2
 
3
- require('../ccxt.js');
4
3
  var derive$1 = require('./abstract/derive.js');
5
- var number = require('./base/functions/number.js');
4
+ var Precise = require('./base/Precise.js');
5
+ var errors = require('./base/errors.js');
6
+ var crypto = require('./base/functions/crypto.js');
6
7
  var sha3 = require('./static_dependencies/noble-hashes/sha3.js');
7
8
  var secp256k1 = require('./static_dependencies/noble-curves/secp256k1.js');
8
- var crypto = require('./base/functions/crypto.js');
9
- var errors = require('./base/errors.js');
10
- var Precise = require('./base/Precise.js');
9
+ var number = require('./base/functions/number.js');
11
10
 
12
11
  // ----------------------------------------------------------------------------
13
12
  // ---------------------------------------------------------------------------
@@ -2,12 +2,11 @@
2
2
 
3
3
  var ellipx$1 = require('./abstract/ellipx.js');
4
4
  var errors = require('./base/errors.js');
5
- var number = require('./base/functions/number.js');
6
- require('../ccxt.js');
7
- var sha256 = require('./static_dependencies/noble-hashes/sha256.js');
8
5
  var ed25519 = require('./static_dependencies/noble-curves/ed25519.js');
9
6
  var crypto = require('./base/functions/crypto.js');
10
7
  var Precise = require('./base/Precise.js');
8
+ var sha256 = require('./static_dependencies/noble-hashes/sha256.js');
9
+ var number = require('./base/functions/number.js');
11
10
 
12
11
  // ----------------------------------------------------------------------------
13
12
  // ---------------------------------------------------------------------------
@@ -108,7 +108,7 @@ class gate extends gate$1 {
108
108
  'fetchCurrencies': true,
109
109
  'fetchDepositAddress': true,
110
110
  'fetchDepositAddresses': false,
111
- 'fetchDepositAddressesByNetwork': false,
111
+ 'fetchDepositAddressesByNetwork': true,
112
112
  'fetchDeposits': true,
113
113
  'fetchDepositWithdrawFee': 'emulated',
114
114
  'fetchDepositWithdrawFees': true,
@@ -717,6 +717,16 @@ class gate extends gate$1 {
717
717
  },
718
718
  'networksById': {
719
719
  'OPETH': 'OP',
720
+ 'ETH': 'ERC20',
721
+ 'ERC20': 'ERC20',
722
+ 'TRX': 'TRC20',
723
+ 'TRC20': 'TRC20',
724
+ 'HT': 'HRC20',
725
+ 'HECO': 'HRC20',
726
+ 'BSC': 'BEP20',
727
+ 'BEP20': 'BEP20',
728
+ 'POLYGON': 'MATIC',
729
+ 'POL': 'MATIC',
720
730
  },
721
731
  'timeInForce': {
722
732
  'GTC': 'gtc',
@@ -1213,6 +1223,9 @@ class gate extends gate$1 {
1213
1223
  if (this.options['adjustForTimeDifference']) {
1214
1224
  await this.loadTimeDifference();
1215
1225
  }
1226
+ if (this.checkRequiredCredentials(false)) {
1227
+ await this.loadUnifiedStatus();
1228
+ }
1216
1229
  const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
1217
1230
  let rawPromises = [
1218
1231
  this.fetchContractMarkets(params),
@@ -1826,88 +1839,93 @@ class gate extends gate$1 {
1826
1839
  if (apiBackup !== undefined) {
1827
1840
  return undefined;
1828
1841
  }
1829
- if (this.checkRequiredCredentials(false)) {
1830
- await this.loadUnifiedStatus();
1831
- }
1832
1842
  const response = await this.publicSpotGetCurrencies(params);
1833
1843
  //
1834
- // [
1835
- // {
1836
- // "currency": "USDT_ETH",
1837
- // "name": "Tether",
1838
- // "delisted": false,
1839
- // "withdraw_disabled": false,
1840
- // "withdraw_delayed": false,
1841
- // "deposit_disabled": false,
1842
- // "trade_disabled": true,
1843
- // "chain": "ETH"
1844
- // },
1845
- // ]
1844
+ // [
1845
+ // {
1846
+ // "currency": "USDT",
1847
+ // "name": "Tether",
1848
+ // "delisted": false,
1849
+ // "withdraw_disabled": false,
1850
+ // "withdraw_delayed": false,
1851
+ // "deposit_disabled": false,
1852
+ // "trade_disabled": false,
1853
+ // "fixed_rate": "",
1854
+ // "chain": "ETH",
1855
+ // "chains": [
1856
+ // {
1857
+ // "name": "ETH",
1858
+ // "addr": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
1859
+ // "withdraw_disabled": false,
1860
+ // "withdraw_delayed": false,
1861
+ // "deposit_disabled": false
1862
+ // },
1863
+ // {
1864
+ // "name": "ARBEVM",
1865
+ // "addr": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
1866
+ // "withdraw_disabled": false,
1867
+ // "withdraw_delayed": false,
1868
+ // "deposit_disabled": false
1869
+ // },
1870
+ // {
1871
+ // "name": "BSC",
1872
+ // "addr": "0x55d398326f99059fF775485246999027B3197955",
1873
+ // "withdraw_disabled": false,
1874
+ // "withdraw_delayed": false,
1875
+ // "deposit_disabled": false
1876
+ // },
1877
+ // ]
1878
+ // },
1879
+ // ]
1846
1880
  //
1847
1881
  const indexedCurrencies = this.indexBy(response, 'currency');
1848
1882
  const result = {};
1849
1883
  for (let i = 0; i < response.length; i++) {
1850
1884
  const entry = response[i];
1851
1885
  const currencyId = this.safeString(entry, 'currency');
1852
- const parts = currencyId.split('_');
1853
- const partFirst = this.safeString(parts, 0);
1854
- // if there's an underscore then the second part is always the chain name (except the _OLD suffix)
1855
- const currencyName = currencyId.endsWith('_OLD') ? currencyId : partFirst;
1856
- const withdrawDisabled = this.safeBool(entry, 'withdraw_disabled', false);
1857
- const depositDisabled = this.safeBool(entry, 'deposit_disabled', false);
1858
- const tradeDisabled = this.safeBool(entry, 'trade_disabled', false);
1859
- const precision = this.parseNumber('0.0001'); // temporary safe default, because no value provided from API
1860
- const code = this.safeCurrencyCode(currencyName);
1886
+ const code = this.safeCurrencyCode(currencyId);
1861
1887
  // check leveraged tokens (e.g. BTC3S, ETH5L)
1862
- let isLeveragedToken = false;
1863
- if (currencyId.endsWith('3S') || currencyId.endsWith('3L') || currencyId.endsWith('5S') || currencyId.endsWith('5L')) {
1864
- const realCurrencyId = currencyId.slice(0, -2);
1865
- if (realCurrencyId in indexedCurrencies) {
1866
- isLeveragedToken = true;
1867
- }
1868
- }
1869
- const type = isLeveragedToken ? 'leveraged' : 'crypto';
1870
- // some networks are null, they are mostly obsolete & unsupported dead tokens, so we can default their networkId to their tokenname
1871
- const networkId = this.safeString(entry, 'chain', currencyId);
1872
- const networkCode = this.networkIdToCode(networkId, code);
1873
- const networkEntry = {
1874
- 'info': entry,
1875
- 'id': networkId,
1876
- 'network': networkCode,
1877
- 'limits': {
1878
- 'deposit': {
1879
- 'min': undefined,
1880
- 'max': undefined,
1881
- },
1882
- 'withdraw': {
1883
- 'min': undefined,
1884
- 'max': undefined,
1888
+ const type = this.isLeveragedCurrency(currencyId, true, indexedCurrencies) ? 'leveraged' : 'crypto';
1889
+ const chains = this.safeList(entry, 'chains', []);
1890
+ const networks = {};
1891
+ for (let j = 0; j < chains.length; j++) {
1892
+ const chain = chains[j];
1893
+ const networkId = this.safeString(chain, 'name');
1894
+ const networkCode = this.networkIdToCode(networkId);
1895
+ networks[networkCode] = {
1896
+ 'info': chain,
1897
+ 'id': networkId,
1898
+ 'network': networkCode,
1899
+ 'active': undefined,
1900
+ 'deposit': !this.safeBool(chain, 'deposit_disabled'),
1901
+ 'withdraw': !this.safeBool(chain, 'withdraw_disabled'),
1902
+ 'fee': undefined,
1903
+ 'precision': this.parseNumber('0.0001'),
1904
+ 'limits': {
1905
+ 'deposit': {
1906
+ 'min': undefined,
1907
+ 'max': undefined,
1908
+ },
1909
+ 'withdraw': {
1910
+ 'min': undefined,
1911
+ 'max': undefined,
1912
+ },
1885
1913
  },
1886
- },
1887
- 'active': !tradeDisabled,
1888
- 'deposit': !depositDisabled,
1889
- 'withdraw': !withdrawDisabled,
1890
- 'fee': undefined,
1891
- 'precision': precision,
1892
- };
1893
- // check if first entry for the specific currency
1894
- if (!(code in result)) {
1895
- result[code] = {
1896
- 'id': currencyName,
1897
- 'lowerCaseId': currencyName.toLowerCase(),
1898
- 'code': code,
1899
- 'type': type,
1900
- 'precision': precision,
1901
- 'limits': undefined,
1902
- 'networks': {},
1903
- 'info': [], // will be filled below
1904
1914
  };
1905
1915
  }
1906
- result[code]['networks'][networkCode] = networkEntry;
1907
- const info = this.safeList(result[code], 'info', []);
1908
- info.push(entry);
1909
- result[code]['info'] = info;
1910
- result[code] = this.safeCurrencyStructure(result[code]); // this is needed after adding network entry
1916
+ result[code] = this.safeCurrencyStructure({
1917
+ 'id': currencyId,
1918
+ 'code': code,
1919
+ 'name': this.safeString(entry, 'name'),
1920
+ 'type': type,
1921
+ 'active': !this.safeBool(entry, 'delisted'),
1922
+ 'deposit': !this.safeBool(entry, 'deposit_disabled'),
1923
+ 'withdraw': !this.safeBool(entry, 'withdraw_disabled'),
1924
+ 'fee': undefined,
1925
+ 'networks': networks,
1926
+ 'precision': this.parseNumber('0.0001'),
1927
+ 'info': entry,
1928
+ });
1911
1929
  }
1912
1930
  return result;
1913
1931
  }
@@ -2179,9 +2197,7 @@ class gate extends gate$1 {
2179
2197
  const chains = this.safeValue(response, 'multichain_addresses', []);
2180
2198
  const currencyId = this.safeString(response, 'currency');
2181
2199
  currency = this.safeCurrency(currencyId, currency);
2182
- const parsed = this.parseDepositAddresses(chains, [currency['code']], false, {
2183
- 'currency': currency['id'],
2184
- });
2200
+ const parsed = this.parseDepositAddresses(chains, undefined, false);
2185
2201
  return this.indexBy(parsed, 'network');
2186
2202
  }
2187
2203
  /**
@@ -2199,8 +2215,8 @@ class gate extends gate$1 {
2199
2215
  let networkCode = undefined;
2200
2216
  [networkCode, params] = this.handleNetworkCodeAndParams(params);
2201
2217
  const chainsIndexedById = await this.fetchDepositAddressesByNetwork(code, params);
2202
- const selectedNetworkId = this.selectNetworkCodeFromUnifiedNetworks(code, networkCode, chainsIndexedById);
2203
- return chainsIndexedById[selectedNetworkId];
2218
+ const selectedNetworkIdOrCode = this.selectNetworkCodeFromUnifiedNetworks(code, networkCode, chainsIndexedById);
2219
+ return chainsIndexedById[selectedNetworkIdOrCode];
2204
2220
  }
2205
2221
  parseDepositAddress(depositAddress, currency = undefined) {
2206
2222
  //
@@ -4540,6 +4540,8 @@ class htx extends htx$1 {
4540
4540
  const request = {};
4541
4541
  let marketType = undefined;
4542
4542
  [marketType, params] = this.handleMarketTypeAndParams('fetchOpenOrders', market, params);
4543
+ let subType = undefined;
4544
+ [subType, params] = this.handleSubTypeAndParams('fetchOpenOrders', market, params, 'linear');
4543
4545
  let response = undefined;
4544
4546
  if (marketType === 'spot') {
4545
4547
  if (symbol !== undefined) {
@@ -4568,18 +4570,18 @@ class htx extends htx$1 {
4568
4570
  response = await this.spotPrivateGetV1OrderOpenOrders(this.extend(request, params));
4569
4571
  }
4570
4572
  else {
4571
- if (symbol === undefined) {
4572
- throw new errors.ArgumentsRequired(this.id + ' fetchOpenOrders() requires a symbol argument');
4573
+ if (symbol !== undefined) {
4574
+ // throw new ArgumentsRequired (this.id + ' fetchOpenOrders() requires a symbol argument');
4575
+ request['contract_code'] = market['id'];
4573
4576
  }
4574
4577
  if (limit !== undefined) {
4575
4578
  request['page_size'] = limit;
4576
4579
  }
4577
- request['contract_code'] = market['id'];
4578
4580
  const trigger = this.safeBool2(params, 'stop', 'trigger');
4579
4581
  const stopLossTakeProfit = this.safeValue(params, 'stopLossTakeProfit');
4580
4582
  const trailing = this.safeBool(params, 'trailing', false);
4581
4583
  params = this.omit(params, ['stop', 'stopLossTakeProfit', 'trailing', 'trigger']);
4582
- if (market['linear']) {
4584
+ if (subType === 'linear') {
4583
4585
  let marginMode = undefined;
4584
4586
  [marginMode, params] = this.handleMarginModeAndParams('fetchOpenOrders', params);
4585
4587
  marginMode = (marginMode === undefined) ? 'cross' : marginMode;
@@ -4612,8 +4614,8 @@ class htx extends htx$1 {
4612
4614
  }
4613
4615
  }
4614
4616
  }
4615
- else if (market['inverse']) {
4616
- if (market['swap']) {
4617
+ else if (subType === 'inverse') {
4618
+ if (marketType === 'swap') {
4617
4619
  if (trigger) {
4618
4620
  response = await this.contractPrivatePostSwapApiV1SwapTriggerOpenorders(this.extend(request, params));
4619
4621
  }
@@ -4627,8 +4629,8 @@ class htx extends htx$1 {
4627
4629
  response = await this.contractPrivatePostSwapApiV1SwapOpenorders(this.extend(request, params));
4628
4630
  }
4629
4631
  }
4630
- else if (market['future']) {
4631
- request['symbol'] = market['settleId'];
4632
+ else if (marketType === 'future') {
4633
+ request['symbol'] = this.safeString(market, 'settleId', 'usdt');
4632
4634
  if (trigger) {
4633
4635
  response = await this.contractPrivatePostApiV1ContractTriggerOpenorders(this.extend(request, params));
4634
4636
  }