ccxt 4.1.13 → 4.1.16

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 (152) hide show
  1. package/CHANGELOG.md +219 -0
  2. package/CONTRIBUTING.md +1 -0
  3. package/README.md +3 -3
  4. package/dist/ccxt.browser.js +539 -189
  5. package/dist/ccxt.browser.min.js +9 -9
  6. package/dist/cjs/ccxt.js +1 -1
  7. package/dist/cjs/src/ascendex.js +1 -0
  8. package/dist/cjs/src/base/Exchange.js +3 -0
  9. package/dist/cjs/src/binance.js +6 -2
  10. package/dist/cjs/src/bingx.js +5 -3
  11. package/dist/cjs/src/bitget.js +357 -64
  12. package/dist/cjs/src/bitmart.js +2 -0
  13. package/dist/cjs/src/bitmex.js +6 -3
  14. package/dist/cjs/src/bittrex.js +7 -0
  15. package/dist/cjs/src/btcalpha.js +2 -1
  16. package/dist/cjs/src/btcturk.js +3 -0
  17. package/dist/cjs/src/cex.js +1 -0
  18. package/dist/cjs/src/coinbase.js +1 -0
  19. package/dist/cjs/src/coinbasepro.js +1 -0
  20. package/dist/cjs/src/coinex.js +2 -0
  21. package/dist/cjs/src/coinfalcon.js +1 -0
  22. package/dist/cjs/src/coinmate.js +1 -0
  23. package/dist/cjs/src/coinone.js +15 -5
  24. package/dist/cjs/src/cryptocom.js +25 -87
  25. package/dist/cjs/src/currencycom.js +1 -0
  26. package/dist/cjs/src/delta.js +1 -0
  27. package/dist/cjs/src/deribit.js +1 -0
  28. package/dist/cjs/src/digifinex.js +10 -8
  29. package/dist/cjs/src/exmo.js +1 -0
  30. package/dist/cjs/src/gate.js +3 -0
  31. package/dist/cjs/src/gemini.js +1 -0
  32. package/dist/cjs/src/hitbtc.js +1 -0
  33. package/dist/cjs/src/hollaex.js +1 -0
  34. package/dist/cjs/src/huobi.js +8 -0
  35. package/dist/cjs/src/huobijp.js +1 -0
  36. package/dist/cjs/src/idex.js +1 -0
  37. package/dist/cjs/src/independentreserve.js +1 -0
  38. package/dist/cjs/src/indodax.js +1 -0
  39. package/dist/cjs/src/kraken.js +10 -0
  40. package/dist/cjs/src/krakenfutures.js +1 -0
  41. package/dist/cjs/src/kucoin.js +1 -0
  42. package/dist/cjs/src/kucoinfutures.js +1 -0
  43. package/dist/cjs/src/kuna.js +1 -0
  44. package/dist/cjs/src/latoken.js +1 -0
  45. package/dist/cjs/src/lbank.js +1 -0
  46. package/dist/cjs/src/lbank2.js +2 -0
  47. package/dist/cjs/src/luno.js +1 -0
  48. package/dist/cjs/src/lykke.js +2 -1
  49. package/dist/cjs/src/mercado.js +1 -0
  50. package/dist/cjs/src/mexc.js +4 -1
  51. package/dist/cjs/src/ndax.js +1 -0
  52. package/dist/cjs/src/novadax.js +1 -0
  53. package/dist/cjs/src/oceanex.js +1 -0
  54. package/dist/cjs/src/phemex.js +2 -0
  55. package/dist/cjs/src/poloniex.js +1 -0
  56. package/dist/cjs/src/poloniexfutures.js +8 -2
  57. package/dist/cjs/src/pro/krakenfutures.js +14 -10
  58. package/dist/cjs/src/probit.js +1 -0
  59. package/dist/cjs/src/tidex.js +1 -0
  60. package/dist/cjs/src/timex.js +1 -0
  61. package/dist/cjs/src/tokocrypto.js +1 -0
  62. package/dist/cjs/src/upbit.js +1 -0
  63. package/dist/cjs/src/wavesexchange.js +1 -0
  64. package/dist/cjs/src/wazirx.js +2 -1
  65. package/dist/cjs/src/whitebit.js +1 -0
  66. package/dist/cjs/src/woo.js +1 -0
  67. package/dist/cjs/src/yobit.js +1 -0
  68. package/dist/cjs/src/zaif.js +1 -0
  69. package/dist/cjs/src/zonda.js +1 -0
  70. package/js/ccxt.d.ts +1 -1
  71. package/js/ccxt.js +1 -1
  72. package/js/src/abstract/binance.d.ts +4 -0
  73. package/js/src/abstract/binancecoinm.d.ts +4 -0
  74. package/js/src/abstract/binanceus.d.ts +4 -0
  75. package/js/src/abstract/binanceusdm.d.ts +4 -0
  76. package/js/src/abstract/btcturk.d.ts +3 -0
  77. package/js/src/abstract/kraken.d.ts +8 -0
  78. package/js/src/abstract/poloniexfutures.d.ts +6 -1
  79. package/js/src/ascendex.js +1 -0
  80. package/js/src/base/Exchange.d.ts +1 -0
  81. package/js/src/base/Exchange.js +3 -0
  82. package/js/src/binance.js +6 -2
  83. package/js/src/bingx.js +5 -3
  84. package/js/src/bitget.d.ts +28 -0
  85. package/js/src/bitget.js +357 -64
  86. package/js/src/bitmart.js +2 -0
  87. package/js/src/bitmex.js +6 -3
  88. package/js/src/bittrex.d.ts +2 -2
  89. package/js/src/bittrex.js +7 -0
  90. package/js/src/btcalpha.js +2 -1
  91. package/js/src/btcturk.js +3 -0
  92. package/js/src/cex.js +1 -0
  93. package/js/src/coinbase.js +1 -0
  94. package/js/src/coinbasepro.js +1 -0
  95. package/js/src/coinex.js +2 -0
  96. package/js/src/coinfalcon.js +1 -0
  97. package/js/src/coinmate.js +1 -0
  98. package/js/src/coinone.js +15 -5
  99. package/js/src/cryptocom.d.ts +0 -2
  100. package/js/src/cryptocom.js +25 -87
  101. package/js/src/currencycom.js +1 -0
  102. package/js/src/delta.js +1 -0
  103. package/js/src/deribit.js +1 -0
  104. package/js/src/digifinex.d.ts +3 -28
  105. package/js/src/digifinex.js +10 -8
  106. package/js/src/exmo.js +1 -0
  107. package/js/src/gate.d.ts +1 -0
  108. package/js/src/gate.js +3 -0
  109. package/js/src/gemini.d.ts +1 -0
  110. package/js/src/gemini.js +1 -0
  111. package/js/src/hitbtc.js +1 -0
  112. package/js/src/hollaex.js +1 -0
  113. package/js/src/huobi.js +8 -0
  114. package/js/src/huobijp.js +1 -0
  115. package/js/src/idex.js +1 -0
  116. package/js/src/independentreserve.js +1 -0
  117. package/js/src/indodax.js +1 -0
  118. package/js/src/kraken.js +10 -0
  119. package/js/src/krakenfutures.js +1 -0
  120. package/js/src/kucoin.js +1 -0
  121. package/js/src/kucoinfutures.js +1 -0
  122. package/js/src/kuna.js +1 -0
  123. package/js/src/latoken.js +1 -0
  124. package/js/src/lbank.js +1 -0
  125. package/js/src/lbank2.js +2 -0
  126. package/js/src/luno.js +1 -0
  127. package/js/src/lykke.js +2 -1
  128. package/js/src/mercado.js +1 -0
  129. package/js/src/mexc.js +4 -1
  130. package/js/src/ndax.js +1 -0
  131. package/js/src/novadax.js +1 -0
  132. package/js/src/oceanex.js +1 -0
  133. package/js/src/phemex.d.ts +2 -0
  134. package/js/src/phemex.js +2 -0
  135. package/js/src/poloniex.js +1 -0
  136. package/js/src/poloniexfutures.js +8 -2
  137. package/js/src/pro/krakenfutures.js +14 -10
  138. package/js/src/probit.js +1 -0
  139. package/js/src/tidex.js +1 -0
  140. package/js/src/timex.d.ts +1 -0
  141. package/js/src/timex.js +1 -0
  142. package/js/src/tokocrypto.js +1 -0
  143. package/js/src/upbit.js +1 -0
  144. package/js/src/wavesexchange.js +1 -0
  145. package/js/src/wazirx.js +2 -1
  146. package/js/src/whitebit.js +1 -0
  147. package/js/src/woo.js +1 -0
  148. package/js/src/yobit.js +1 -0
  149. package/js/src/zaif.js +1 -0
  150. package/js/src/zonda.js +1 -0
  151. package/package.json +1 -1
  152. package/skip-tests.json +141 -12
@@ -4049,6 +4049,7 @@ class ascendex extends _abstract_ascendex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
4049
4049
  'max': this.safeNumber(market, 'maxNotional'),
4050
4050
  },
4051
4051
  },
4052
+ 'created': this.safeInteger(market, 'tradingStartTime'),
4052
4053
  'info': market,
4053
4054
  });
4054
4055
  }
@@ -7584,6 +7585,9 @@ class Exchange {
7584
7585
  convertToBigInt(value) {
7585
7586
  return BigInt(value); // used on XT
7586
7587
  }
7588
+ stringToCharsArray(value) {
7589
+ return value.split('');
7590
+ }
7587
7591
  valueIsDefined(value) {
7588
7592
  return value !== undefined && value !== null;
7589
7593
  }
@@ -16262,7 +16266,8 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
16262
16266
  'margin/exchange-small-liability-history': 0.6667,
16263
16267
  'margin/next-hourly-interest-rate': 0.6667,
16264
16268
  'margin/capital-flow': 10,
16265
- 'margin/delist-schedule': 0.6667,
16269
+ 'margin/delist-schedule': 10,
16270
+ 'margin/available-inventory': 0.3334,
16266
16271
  'loan/vip/loanable/data': 40,
16267
16272
  'loan/vip/collateral/data': 40,
16268
16273
  'loan/vip/request/data': 2.6668,
@@ -16653,7 +16658,8 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
16653
16658
  'premiumIndexKlines': { 'cost': 1, 'byLimit': [[99, 1], [499, 2], [1000, 5], [10000, 10]] },
16654
16659
  'ticker/24hr': { 'cost': 1, 'noSymbol': 40 },
16655
16660
  'ticker/price': { 'cost': 1, 'noSymbol': 2 },
16656
- 'ticker/bookTicker': { 'cost': 1, 'noSymbol': 2 },
16661
+ 'ticker/bookTicker': { 'cost': 2, 'noSymbol': 5 },
16662
+ 'constituents': 2,
16657
16663
  'openInterest': 1,
16658
16664
  },
16659
16665
  },
@@ -16738,6 +16744,8 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
16738
16744
  'ticker/bookTicker': { 'cost': 1, 'noSymbol': 2 },
16739
16745
  'openInterest': 1,
16740
16746
  'indexInfo': 1,
16747
+ 'assetIndex': { 'cost': 1, 'noSymbol': 10 },
16748
+ 'constituents': 2,
16741
16749
  'apiTradingStatus': { 'cost': 1, 'noSymbol': 10 },
16742
16750
  'lvtKlines': 1,
16743
16751
  },
@@ -27208,7 +27216,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
27208
27216
  'info': position,
27209
27217
  'id': this.safeString(position, 'positionId'),
27210
27218
  'symbol': this.safeSymbol(marketId, market, '-', 'swap'),
27211
- 'notional': this.safeString(position, 'positionAmt'),
27219
+ 'notional': this.safeNumber(position, 'positionAmt'),
27212
27220
  'marginMode': marginMode,
27213
27221
  'liquidationPrice': undefined,
27214
27222
  'entryPrice': this.safeNumber2(position, 'avgPrice', 'entryPrice'),
@@ -28352,8 +28360,10 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
28352
28360
  const network = this.safeString(transaction, 'network');
28353
28361
  const currencyId = this.safeString(transaction, 'coin');
28354
28362
  let code = this.safeCurrencyCode(currencyId, currency);
28355
- if (code !== undefined && code.indexOf(network) >= 0) {
28356
- code = code.replace(network, '');
28363
+ if ((code !== undefined) && (code !== network) && code.indexOf(network) >= 0) {
28364
+ if (network !== undefined) {
28365
+ code = code.replace(network, '');
28366
+ }
28357
28367
  }
28358
28368
  const rawType = this.safeString(transaction, 'transferType');
28359
28369
  const type = (rawType === '0') ? 'deposit' : 'withdrawal';
@@ -38597,11 +38607,12 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
38597
38607
  'has': {
38598
38608
  'CORS': undefined,
38599
38609
  'spot': true,
38600
- 'margin': false,
38610
+ 'margin': undefined,
38601
38611
  'swap': true,
38602
38612
  'future': true,
38603
38613
  'option': false,
38604
38614
  'addMargin': true,
38615
+ 'borrowMargin': true,
38605
38616
  'cancelAllOrders': true,
38606
38617
  'cancelOrder': true,
38607
38618
  'cancelOrders': true,
@@ -38660,6 +38671,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
38660
38671
  'fetchWithdrawal': false,
38661
38672
  'fetchWithdrawals': true,
38662
38673
  'reduceMargin': true,
38674
+ 'repayMargin': true,
38663
38675
  'setLeverage': true,
38664
38676
  'setMarginMode': true,
38665
38677
  'setPositionMode': true,
@@ -39864,6 +39876,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
39864
39876
  'max': undefined,
39865
39877
  },
39866
39878
  },
39879
+ 'created': undefined,
39867
39880
  'info': market,
39868
39881
  };
39869
39882
  }
@@ -41210,18 +41223,20 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
41210
41223
  * @description query for balance and get the amount of funds available for trading or funds locked in orders
41211
41224
  * @see https://bitgetlimited.github.io/apidoc/en/spot/#get-account-assets
41212
41225
  * @see https://bitgetlimited.github.io/apidoc/en/mix/#get-account-list
41226
+ * @see https://bitgetlimited.github.io/apidoc/en/margin/#get-cross-assets
41227
+ * @see https://bitgetlimited.github.io/apidoc/en/margin/#get-isolated-assets
41213
41228
  * @param {object} [params] extra parameters specific to the bitget api endpoint
41214
41229
  * @returns {object} a [balance structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#balance-structure}
41215
41230
  */
41216
41231
  const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
41217
41232
  await this.loadMarkets();
41218
- const [marketType, query] = this.handleMarketTypeAndParams('fetchBalance', undefined, params);
41219
- const method = this.getSupportedMapping(marketType, {
41220
- 'spot': 'privateSpotGetAccountAssets',
41221
- 'swap': 'privateMixGetAccountAccounts',
41222
- });
41223
41233
  const request = {};
41224
- if (marketType === 'swap') {
41234
+ let marketType = undefined;
41235
+ let marginMode = undefined;
41236
+ let response = undefined;
41237
+ [marketType, params] = this.handleMarketTypeAndParams('fetchBalance', undefined, params);
41238
+ [marginMode, params] = this.handleMarginModeAndParams('fetchBalance', params);
41239
+ if ((marketType === 'swap') || (marketType === 'future')) {
41225
41240
  let subType = undefined;
41226
41241
  [subType, params] = this.handleSubTypeAndParams('fetchBalance', undefined, params);
41227
41242
  let productType = (subType === 'linear') ? 'UMCBL' : 'DMCBL';
@@ -41229,45 +41244,106 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
41229
41244
  productType = 'S' + productType;
41230
41245
  }
41231
41246
  request['productType'] = productType;
41247
+ response = await this.privateMixGetAccountAccounts(this.extend(request, params));
41248
+ }
41249
+ else if (marginMode === 'isolated') {
41250
+ response = await this.privateMarginGetIsolatedAccountAssets(this.extend(request, params));
41251
+ }
41252
+ else if (marginMode === 'cross') {
41253
+ response = await this.privateMarginGetCrossAccountAssets(this.extend(request, params));
41254
+ }
41255
+ else if (marketType === 'spot') {
41256
+ response = await this.privateSpotGetAccountAssets(this.extend(request, params));
41257
+ }
41258
+ else {
41259
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.NotSupported(this.id + ' fetchBalance() does not support ' + marketType + ' accounts');
41232
41260
  }
41233
- const response = await this[method](this.extend(request, query));
41234
41261
  // spot
41262
+ //
41235
41263
  // {
41236
- // code: '00000',
41237
- // msg: 'success',
41238
- // requestTime: 1645928868827,
41239
- // data: [
41240
- // {
41241
- // coinId: 1,
41242
- // coinName: 'BTC',
41243
- // available: '0.00070000',
41244
- // frozen: '0.00000000',
41245
- // lock: '0.00000000',
41246
- // uTime: '1645921706000'
41247
- // }
41248
- // ]
41264
+ // "code": "00000",
41265
+ // "msg": "success",
41266
+ // "requestTime": 1697507299139,
41267
+ // "data": [
41268
+ // {
41269
+ // "coinId": 1,
41270
+ // "coinName": "BTC",
41271
+ // "available": "0.00000000",
41272
+ // "frozen": "0.00000000",
41273
+ // "lock": "0.00000000",
41274
+ // "uTime": "1697248128000"
41275
+ // },
41276
+ // ]
41249
41277
  // }
41250
41278
  //
41251
41279
  // swap
41280
+ //
41252
41281
  // {
41253
- // code: '00000',
41254
- // msg: 'success',
41255
- // requestTime: 1645928929251,
41256
- // data: [
41257
- // {
41258
- // marginCoin: 'USDT',
41259
- // locked: '0',
41260
- // available: '8.078525',
41261
- // crossMaxAvailable: '8.078525',
41262
- // fixedMaxAvailable: '8.078525',
41263
- // maxTransferOut: '8.078525',
41264
- // equity: '10.02508',
41265
- // usdtEquity: '10.02508',
41266
- // btcEquity: '0.00026057027'
41267
- // }
41268
- // ]
41282
+ // "code": "00000",
41283
+ // "msg": "success",
41284
+ // "requestTime": 1697507505367,
41285
+ // "data": [
41286
+ // {
41287
+ // "marginCoin": "STETH",
41288
+ // "locked": "0",
41289
+ // "available": "0",
41290
+ // "crossMaxAvailable": "0",
41291
+ // "fixedMaxAvailable": "0",
41292
+ // "maxTransferOut": "0",
41293
+ // "equity": "0",
41294
+ // "usdtEquity": "0",
41295
+ // "btcEquity": "0",
41296
+ // "crossRiskRate": "0",
41297
+ // "unrealizedPL": "0",
41298
+ // "bonus": "0"
41299
+ // },
41300
+ // ]
41269
41301
  // }
41270
- const data = this.safeValue(response, 'data');
41302
+ //
41303
+ // isolated margin
41304
+ //
41305
+ // {
41306
+ // "code": "00000",
41307
+ // "msg": "success",
41308
+ // "requestTime": 1697501436571,
41309
+ // "data": [
41310
+ // {
41311
+ // "symbol": "BTCUSDT",
41312
+ // "coin": "BTC",
41313
+ // "totalAmount": "0.00021654",
41314
+ // "available": "0.00021654",
41315
+ // "transferable": "0.00021654",
41316
+ // "frozen": "0",
41317
+ // "borrow": "0",
41318
+ // "interest": "0",
41319
+ // "net": "0.00021654",
41320
+ // "ctime": "1697248128071"
41321
+ // },
41322
+ // ]
41323
+ // }
41324
+ //
41325
+ // cross margin
41326
+ //
41327
+ // {
41328
+ // "code": "00000",
41329
+ // "msg": "success",
41330
+ // "requestTime": 1697515463804,
41331
+ // "data": [
41332
+ // {
41333
+ // "coin": "BTC",
41334
+ // "totalAmount": "0.00024996",
41335
+ // "available": "0.00024996",
41336
+ // "transferable": "0.00004994",
41337
+ // "frozen": "0",
41338
+ // "borrow": "0.0001",
41339
+ // "interest": "0.00000001",
41340
+ // "net": "0.00014995",
41341
+ // "ctime": "1697251265504"
41342
+ // },
41343
+ // ]
41344
+ // }
41345
+ //
41346
+ const data = this.safeValue(response, 'data', []);
41271
41347
  return this.parseBalance(data);
41272
41348
  }
41273
41349
  parseBalance(balance) {
@@ -41276,42 +41352,81 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
41276
41352
  // spot
41277
41353
  //
41278
41354
  // {
41279
- // coinId: '1',
41280
- // coinName: 'BTC',
41281
- // available: '0.00099900',
41282
- // frozen: '0.00000000',
41283
- // lock: '0.00000000',
41284
- // uTime: '1661595535000'
41355
+ // "coinId": 1,
41356
+ // "coinName": "BTC",
41357
+ // "available": "0.00000000",
41358
+ // "frozen": "0.00000000",
41359
+ // "lock": "0.00000000",
41360
+ // "uTime": "1697248128000"
41285
41361
  // }
41286
41362
  //
41287
41363
  // swap
41288
41364
  //
41289
41365
  // {
41290
- // marginCoin: 'BTC',
41291
- // locked: '0.00001948',
41292
- // available: '0.00006622',
41293
- // crossMaxAvailable: '0.00004674',
41294
- // fixedMaxAvailable: '0.00004674',
41295
- // maxTransferOut: '0.00004674',
41296
- // equity: '0.00006622',
41297
- // usdtEquity: '1.734307497491',
41298
- // btcEquity: '0.000066229058',
41299
- // crossRiskRate: '0.066308887072',
41300
- // unrealizedPL: '0',
41301
- // bonus: '0'
41366
+ // "marginCoin": "STETH",
41367
+ // "locked": "0",
41368
+ // "available": "0",
41369
+ // "crossMaxAvailable": "0",
41370
+ // "fixedMaxAvailable": "0",
41371
+ // "maxTransferOut": "0",
41372
+ // "equity": "0",
41373
+ // "usdtEquity": "0",
41374
+ // "btcEquity": "0",
41375
+ // "crossRiskRate": "0",
41376
+ // "unrealizedPL": "0",
41377
+ // "bonus": "0"
41378
+ // }
41379
+ //
41380
+ // isolated margin
41381
+ //
41382
+ // {
41383
+ // "symbol": "BTCUSDT",
41384
+ // "coin": "BTC",
41385
+ // "totalAmount": "0.00021654",
41386
+ // "available": "0.00021654",
41387
+ // "transferable": "0.00021654",
41388
+ // "frozen": "0",
41389
+ // "borrow": "0",
41390
+ // "interest": "0",
41391
+ // "net": "0.00021654",
41392
+ // "ctime": "1697248128071"
41393
+ // }
41394
+ //
41395
+ // cross margin
41396
+ //
41397
+ // {
41398
+ // "coin": "BTC",
41399
+ // "totalAmount": "0.00024995",
41400
+ // "available": "0.00024995",
41401
+ // "transferable": "0.00004993",
41402
+ // "frozen": "0",
41403
+ // "borrow": "0.0001",
41404
+ // "interest": "0.00000001",
41405
+ // "net": "0.00014994",
41406
+ // "ctime": "1697251265504"
41302
41407
  // }
41303
41408
  //
41304
41409
  for (let i = 0; i < balance.length; i++) {
41305
41410
  const entry = balance[i];
41306
- const currencyId = this.safeString2(entry, 'coinName', 'marginCoin');
41307
- const code = this.safeCurrencyCode(currencyId);
41308
41411
  const account = this.account();
41309
- const spotAccountFree = this.safeString(entry, 'available');
41310
- const contractAccountFree = this.safeString(entry, 'maxTransferOut');
41311
- account['free'] = (contractAccountFree !== undefined) ? contractAccountFree : spotAccountFree;
41312
- const frozen = this.safeString(entry, 'frozen');
41313
- const locked = this.safeString2(entry, 'lock', 'locked');
41314
- account['used'] = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAdd */ .O.stringAdd(frozen, locked);
41412
+ const currencyId = this.safeStringN(entry, ['coinName', 'marginCoin', 'coin']);
41413
+ const code = this.safeCurrencyCode(currencyId);
41414
+ const borrow = this.safeString(entry, 'borrow');
41415
+ if (borrow !== undefined) {
41416
+ const interest = this.safeString(entry, 'interest');
41417
+ account['free'] = this.safeString(entry, 'transferable');
41418
+ account['total'] = this.safeString(entry, 'totalAmount');
41419
+ account['debt'] = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAdd */ .O.stringAdd(borrow, interest);
41420
+ }
41421
+ else {
41422
+ // Use transferable instead of available for swap and margin https://github.com/ccxt/ccxt/pull/19127
41423
+ const spotAccountFree = this.safeString(entry, 'available');
41424
+ const contractAccountFree = this.safeString(entry, 'maxTransferOut');
41425
+ account['free'] = (contractAccountFree !== undefined) ? contractAccountFree : spotAccountFree;
41426
+ const frozen = this.safeString(entry, 'frozen');
41427
+ const locked = this.safeString2(entry, 'lock', 'locked');
41428
+ account['used'] = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAdd */ .O.stringAdd(frozen, locked);
41429
+ }
41315
41430
  result[code] = account;
41316
41431
  }
41317
41432
  return this.safeBalance(result);
@@ -43770,6 +43885,194 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
43770
43885
  'info': interest,
43771
43886
  }, market);
43772
43887
  }
43888
+ async borrowMargin(code, amount, symbol = undefined, params = {}) {
43889
+ /**
43890
+ * @method
43891
+ * @name bitget#borrowMargin
43892
+ * @description create a loan to borrow margin
43893
+ * @see https://bitgetlimited.github.io/apidoc/en/margin/#cross-borrow
43894
+ * @see https://bitgetlimited.github.io/apidoc/en/margin/#isolated-borrow
43895
+ * @param {string} code unified currency code of the currency to borrow
43896
+ * @param {string} amount the amount to borrow
43897
+ * @param {string} [symbol] unified market symbol
43898
+ * @param {object} [params] extra parameters specific to the bitget api endpoint
43899
+ * @param {string} [params.marginMode] 'isolated' or 'cross', symbol is required for 'isolated'
43900
+ * @returns {object} a [margin loan structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#margin-loan-structure}
43901
+ */
43902
+ await this.loadMarkets();
43903
+ const currency = this.currency(code);
43904
+ const request = {
43905
+ 'coin': currency['info']['coinName'],
43906
+ 'borrowAmount': this.currencyToPrecision(code, amount),
43907
+ };
43908
+ let response = undefined;
43909
+ let marginMode = undefined;
43910
+ [marginMode, params] = this.handleMarginModeAndParams('borrowMargin', params);
43911
+ if ((symbol !== undefined) || (marginMode === 'isolated')) {
43912
+ this.checkRequiredSymbol('borrowMargin', symbol);
43913
+ const market = this.market(symbol);
43914
+ const marketId = market['id'];
43915
+ const parts = marketId.split('_');
43916
+ const marginMarketId = this.safeStringUpper(parts, 0);
43917
+ request['symbol'] = marginMarketId;
43918
+ response = await this.privateMarginPostIsolatedAccountBorrow(this.extend(request, params));
43919
+ }
43920
+ else {
43921
+ response = await this.privateMarginPostCrossAccountBorrow(this.extend(request, params));
43922
+ }
43923
+ //
43924
+ // isolated
43925
+ //
43926
+ // {
43927
+ // "code": "00000",
43928
+ // "msg": "success",
43929
+ // "requestTime": 1697250952516,
43930
+ // "data": {
43931
+ // "clientOid": null,
43932
+ // "symbol": "BTCUSDT",
43933
+ // "coin": "BTC",
43934
+ // "borrowAmount": "0.001"
43935
+ // }
43936
+ // }
43937
+ //
43938
+ // cross
43939
+ //
43940
+ // {
43941
+ // "code": "00000",
43942
+ // "msg": "success",
43943
+ // "requestTime": 1697251314271,
43944
+ // "data": {
43945
+ // "clientOid": null,
43946
+ // "coin": "BTC",
43947
+ // "borrowAmount": "0.0001"
43948
+ // }
43949
+ // }
43950
+ //
43951
+ const data = this.safeValue(response, 'data', {});
43952
+ return this.parseMarginLoan(data, currency);
43953
+ }
43954
+ async repayMargin(code, amount, symbol = undefined, params = {}) {
43955
+ /**
43956
+ * @method
43957
+ * @name bitget#repayMargin
43958
+ * @description repay borrowed margin and interest
43959
+ * @see https://bitgetlimited.github.io/apidoc/en/margin/#cross-repay
43960
+ * @see https://bitgetlimited.github.io/apidoc/en/margin/#isolated-repay
43961
+ * @param {string} code unified currency code of the currency to repay
43962
+ * @param {string} amount the amount to repay
43963
+ * @param {string} [symbol] unified market symbol
43964
+ * @param {object} [params] extra parameters specific to the bitget api endpoint
43965
+ * @param {string} [params.marginMode] 'isolated' or 'cross', symbol is required for 'isolated'
43966
+ * @returns {object} a [margin loan structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#margin-loan-structure}
43967
+ */
43968
+ await this.loadMarkets();
43969
+ const currency = this.currency(code);
43970
+ const request = {
43971
+ 'coin': currency['info']['coinName'],
43972
+ 'repayAmount': this.currencyToPrecision(code, amount),
43973
+ };
43974
+ let response = undefined;
43975
+ let marginMode = undefined;
43976
+ [marginMode, params] = this.handleMarginModeAndParams('repayMargin', params);
43977
+ if ((symbol !== undefined) || (marginMode === 'isolated')) {
43978
+ this.checkRequiredSymbol('repayMargin', symbol);
43979
+ const market = this.market(symbol);
43980
+ const marketId = market['id'];
43981
+ const parts = marketId.split('_');
43982
+ const marginMarketId = this.safeStringUpper(parts, 0);
43983
+ request['symbol'] = marginMarketId;
43984
+ response = await this.privateMarginPostIsolatedAccountRepay(this.extend(request, params));
43985
+ }
43986
+ else {
43987
+ response = await this.privateMarginPostCrossAccountRepay(this.extend(request, params));
43988
+ }
43989
+ //
43990
+ // isolated
43991
+ //
43992
+ // {
43993
+ // "code": "00000",
43994
+ // "msg": "success",
43995
+ // "requestTime": 1697251988593,
43996
+ // "data": {
43997
+ // "remainDebtAmount": "0",
43998
+ // "clientOid": null,
43999
+ // "symbol": "BTCUSDT",
44000
+ // "coin": "BTC",
44001
+ // "repayAmount": "0.00100001"
44002
+ // }
44003
+ // }
44004
+ //
44005
+ // cross
44006
+ //
44007
+ // {
44008
+ // "code": "00000",
44009
+ // "msg": "success",
44010
+ // "requestTime": 1697252151042,
44011
+ // "data": {
44012
+ // "remainDebtAmount": "0",
44013
+ // "clientOid": null,
44014
+ // "coin": "BTC",
44015
+ // "repayAmount": "0.00010001"
44016
+ // }
44017
+ // }
44018
+ //
44019
+ const data = this.safeValue(response, 'data', {});
44020
+ return this.parseMarginLoan(data, currency);
44021
+ }
44022
+ parseMarginLoan(info, currency = undefined) {
44023
+ //
44024
+ // isolated: borrowMargin
44025
+ //
44026
+ // {
44027
+ // "clientOid": null,
44028
+ // "symbol": "BTCUSDT",
44029
+ // "coin": "BTC",
44030
+ // "borrowAmount": "0.001"
44031
+ // }
44032
+ //
44033
+ // cross: borrowMargin
44034
+ //
44035
+ // {
44036
+ // "clientOid": null,
44037
+ // "coin": "BTC",
44038
+ // "borrowAmount": "0.0001"
44039
+ // }
44040
+ //
44041
+ // isolated: repayMargin
44042
+ //
44043
+ // {
44044
+ // "remainDebtAmount": "0",
44045
+ // "clientOid": null,
44046
+ // "symbol": "BTCUSDT",
44047
+ // "coin": "BTC",
44048
+ // "repayAmount": "0.00100001"
44049
+ // }
44050
+ //
44051
+ // cross: repayMargin
44052
+ //
44053
+ // {
44054
+ // "remainDebtAmount": "0",
44055
+ // "clientOid": null,
44056
+ // "coin": "BTC",
44057
+ // "repayAmount": "0.00010001"
44058
+ // }
44059
+ //
44060
+ const currencyId = this.safeString(info, 'coin');
44061
+ const marketId = this.safeString(info, 'symbol');
44062
+ let symbol = undefined;
44063
+ if (marketId !== undefined) {
44064
+ symbol = this.safeSymbol(marketId);
44065
+ }
44066
+ return {
44067
+ 'id': this.safeString(info, 'clientOid'),
44068
+ 'currency': this.safeCurrencyCode(currencyId, currency),
44069
+ 'amount': this.safeNumber2(info, 'borrowAmount', 'repayAmount'),
44070
+ 'symbol': symbol,
44071
+ 'timestamp': undefined,
44072
+ 'datetime': undefined,
44073
+ 'info': info,
44074
+ };
44075
+ }
43773
44076
  handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
43774
44077
  if (!response) {
43775
44078
  return undefined; // fallback to default error handler
@@ -45746,6 +46049,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
45746
46049
  'max': undefined,
45747
46050
  },
45748
46051
  },
46052
+ 'created': undefined,
45749
46053
  'info': market,
45750
46054
  });
45751
46055
  }
@@ -45852,6 +46156,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
45852
46156
  'max': undefined,
45853
46157
  },
45854
46158
  },
46159
+ 'created': this.safeInteger(market, 'open_timestamp'),
45855
46160
  'info': market,
45856
46161
  });
45857
46162
  }
@@ -49764,6 +50069,7 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
49764
50069
  'max': positionIsQuote ? maxOrderQty : undefined,
49765
50070
  },
49766
50071
  },
50072
+ 'created': this.parse8601(this.safeString(market, 'listing')),
49767
50073
  'info': market,
49768
50074
  });
49769
50075
  }
@@ -50144,6 +50450,7 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
50144
50450
  'Deposit': 'transaction',
50145
50451
  'Transfer': 'transfer',
50146
50452
  'AffiliatePayout': 'referral',
50453
+ 'SpotTrade': 'trade',
50147
50454
  };
50148
50455
  return this.safeString(types, type, type);
50149
50456
  }
@@ -50681,9 +50988,9 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
50681
50988
  const feeCurrencyCode = this.safeCurrencyCode(currencyId);
50682
50989
  const feeRateString = this.safeString(trade, 'commission');
50683
50990
  fee = {
50684
- 'cost': feeCostString,
50991
+ 'cost': _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAbs */ .O.stringAbs(feeCostString),
50685
50992
  'currency': feeCurrencyCode,
50686
- 'rate': feeRateString,
50993
+ 'rate': _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAbs */ .O.stringAbs(feeRateString),
50687
50994
  };
50688
50995
  }
50689
50996
  // Trade or Funding
@@ -51211,7 +51518,8 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
51211
51518
  // }
51212
51519
  // ]
51213
51520
  //
51214
- return this.parsePositions(response, symbols);
51521
+ const results = this.parsePositions(response, symbols);
51522
+ return this.filterByArrayPositions(results, 'symbol', symbols, false);
51215
51523
  }
51216
51524
  parsePosition(position, market = undefined) {
51217
51525
  //
@@ -62409,6 +62717,7 @@ class bittrex extends _abstract_bittrex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
62409
62717
  'max': undefined,
62410
62718
  },
62411
62719
  },
62720
+ 'created': this.parse8601(this.safeString(market, 'createdAt')),
62412
62721
  'info': market,
62413
62722
  });
62414
62723
  }
@@ -62948,8 +63257,14 @@ class bittrex extends _abstract_bittrex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
62948
63257
  * @param {int} [since] timestamp in ms of the earliest candle to fetch
62949
63258
  * @param {int} [limit] the maximum amount of candles to fetch
62950
63259
  * @param {object} [params] extra parameters specific to the bittrex api endpoint
63260
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
62951
63261
  * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
62952
63262
  */
63263
+ let paginate = false;
63264
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'paginate', false);
63265
+ if (paginate) {
63266
+ return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, 1440);
63267
+ }
62953
63268
  await this.loadMarkets();
62954
63269
  const market = this.market(symbol);
62955
63270
  const reverseId = market['baseId'] + '-' + market['quoteId'];
@@ -68212,7 +68527,8 @@ class btcalpha extends _abstract_btcalpha_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
68212
68527
  // sell: '22521.11'
68213
68528
  // }
68214
68529
  //
68215
- const timestamp = this.safeIntegerProduct(ticker, 'timestamp', 1000000);
68530
+ const timestampStr = this.safeString(ticker, 'timestamp');
68531
+ const timestamp = parseInt(_base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringMul */ .O.stringMul(timestampStr, '1000000'));
68216
68532
  const marketId = this.safeString(ticker, 'pair');
68217
68533
  market = this.safeMarket(marketId, market, '_');
68218
68534
  const last = this.safeString(ticker, 'last');
@@ -71335,6 +71651,7 @@ class btcturk extends _abstract_btcturk_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
71335
71651
  'orderbook': 1,
71336
71652
  'ticker': 0.1,
71337
71653
  'trades': 1,
71654
+ 'ohlc': 1,
71338
71655
  'server/exchangeinfo': 1,
71339
71656
  },
71340
71657
  },
@@ -71346,6 +71663,8 @@ class btcturk extends _abstract_btcturk_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
71346
71663
  'users/transactions/trade': 1,
71347
71664
  },
71348
71665
  'post': {
71666
+ 'users/transactions/crypto': 1,
71667
+ 'users/transactions/fiat': 1,
71349
71668
  'order': 1,
71350
71669
  'cancelOrder': 1,
71351
71670
  },
@@ -80169,6 +80488,7 @@ class cex extends _abstract_cex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
80169
80488
  'max': undefined,
80170
80489
  },
80171
80490
  },
80491
+ 'created': undefined,
80172
80492
  'info': market,
80173
80493
  });
80174
80494
  }
@@ -82431,6 +82751,7 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
82431
82751
  'max': this.safeNumber(market, 'quote_max_size'),
82432
82752
  },
82433
82753
  },
82754
+ 'created': undefined,
82434
82755
  'info': market,
82435
82756
  });
82436
82757
  }
@@ -84819,6 +85140,7 @@ class coinbasepro extends _abstract_coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/
84819
85140
  'max': undefined,
84820
85141
  },
84821
85142
  },
85143
+ 'created': undefined,
84822
85144
  'info': market,
84823
85145
  }));
84824
85146
  }
@@ -87691,6 +88013,7 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
87691
88013
  'max': undefined,
87692
88014
  },
87693
88015
  },
88016
+ 'created': undefined,
87694
88017
  'info': market,
87695
88018
  });
87696
88019
  }
@@ -87787,6 +88110,7 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
87787
88110
  'max': undefined,
87788
88111
  },
87789
88112
  },
88113
+ 'created': undefined,
87790
88114
  'info': entry,
87791
88115
  });
87792
88116
  }
@@ -92238,6 +92562,7 @@ class coinfalcon extends _abstract_coinfalcon_js__WEBPACK_IMPORTED_MODULE_0__/*
92238
92562
  'max': undefined,
92239
92563
  },
92240
92564
  },
92565
+ 'created': undefined,
92241
92566
  'info': market,
92242
92567
  });
92243
92568
  }
@@ -93336,6 +93661,7 @@ class coinmate extends _abstract_coinmate_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
93336
93661
  'max': undefined,
93337
93662
  },
93338
93663
  },
93664
+ 'created': undefined,
93339
93665
  'info': market,
93340
93666
  });
93341
93667
  }
@@ -94271,6 +94597,7 @@ class coinone extends _abstract_coinone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
94271
94597
  'max': undefined,
94272
94598
  },
94273
94599
  },
94600
+ 'created': undefined,
94274
94601
  'info': ticker,
94275
94602
  });
94276
94603
  }
@@ -94665,10 +94992,19 @@ class coinone extends _abstract_coinone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
94665
94992
  const id = this.safeString(order, 'orderId');
94666
94993
  const baseId = this.safeString(order, 'baseCurrency');
94667
94994
  const quoteId = this.safeString(order, 'targetCurrency');
94668
- const base = this.safeCurrencyCode(baseId, market['base']);
94669
- const quote = this.safeCurrencyCode(quoteId, market['quote']);
94670
- const symbol = base + '/' + quote;
94671
- market = this.safeMarket(symbol, market, '/');
94995
+ let base = undefined;
94996
+ let quote = undefined;
94997
+ if (baseId !== undefined) {
94998
+ base = this.safeCurrencyCode(baseId, this.safeString(market, 'base'));
94999
+ }
95000
+ if (quoteId !== undefined) {
95001
+ quote = this.safeCurrencyCode(quoteId, this.safeString(market, 'quote'));
95002
+ }
95003
+ let symbol = undefined;
95004
+ if ((base !== undefined) && (quote !== undefined)) {
95005
+ symbol = base + '/' + quote;
95006
+ market = this.safeMarket(symbol, market, '/');
95007
+ }
94672
95008
  const timestamp = this.safeTimestamp2(order, 'timestamp', 'updatedAt');
94673
95009
  let side = this.safeString2(order, 'type', 'side');
94674
95010
  if (side === 'ask') {
@@ -94928,7 +95264,7 @@ class coinone extends _abstract_coinone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
94928
95264
  const payload = this.stringToBase64(json);
94929
95265
  body = payload;
94930
95266
  const secret = this.secret.toUpperCase();
94931
- const signature = this.hmac(payload, this.encode(secret), _static_dependencies_noble_hashes_sha512_js__WEBPACK_IMPORTED_MODULE_4__/* .sha512 */ .o);
95267
+ const signature = this.hmac(this.encode(payload), this.encode(secret), _static_dependencies_noble_hashes_sha512_js__WEBPACK_IMPORTED_MODULE_4__/* .sha512 */ .o);
94932
95268
  headers = {
94933
95269
  'Content-Type': 'application/json',
94934
95270
  'X-COINONE-PAYLOAD': payload,
@@ -97507,11 +97843,11 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
97507
97843
  'fetchAccounts': true,
97508
97844
  'fetchBalance': true,
97509
97845
  'fetchBidsAsks': false,
97510
- 'fetchBorrowInterest': true,
97846
+ 'fetchBorrowInterest': false,
97511
97847
  'fetchBorrowRate': false,
97512
97848
  'fetchBorrowRateHistories': false,
97513
97849
  'fetchBorrowRateHistory': false,
97514
- 'fetchBorrowRates': true,
97850
+ 'fetchBorrowRates': false,
97515
97851
  'fetchClosedOrders': 'emulated',
97516
97852
  'fetchCurrencies': false,
97517
97853
  'fetchDepositAddress': true,
@@ -97805,6 +98141,7 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
97805
98141
  'precisionMode': _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__/* .TICK_SIZE */ .sh,
97806
98142
  'exceptions': {
97807
98143
  'exact': {
98144
+ '219': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
97808
98145
  '10001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
97809
98146
  '10002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
97810
98147
  '10003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
@@ -98034,6 +98371,7 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
98034
98371
  'max': undefined,
98035
98372
  },
98036
98373
  },
98374
+ 'created': undefined,
98037
98375
  'info': market,
98038
98376
  });
98039
98377
  }
@@ -98526,7 +98864,7 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
98526
98864
  }
98527
98865
  const postOnly = this.safeValue(params, 'postOnly', false);
98528
98866
  if ((postOnly) || (timeInForce === 'PO')) {
98529
- request['exec_inst'] = 'POST_ONLY';
98867
+ request['exec_inst'] = ['POST_ONLY'];
98530
98868
  request['time_in_force'] = 'GOOD_TILL_CANCEL';
98531
98869
  }
98532
98870
  const triggerPrice = this.safeStringN(params, ['stopPrice', 'triggerPrice', 'ref_price']);
@@ -99334,8 +99672,8 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
99334
99672
  'close': last,
99335
99673
  'last': last,
99336
99674
  'previousClose': undefined,
99337
- 'change': this.safeString(ticker, 'c'),
99338
- 'percentage': undefined,
99675
+ 'change': undefined,
99676
+ 'percentage': this.safeString(ticker, 'c'),
99339
99677
  'average': undefined,
99340
99678
  'baseVolume': this.safeString(ticker, 'v'),
99341
99679
  'quoteVolume': this.safeString(ticker, 'vv'),
@@ -99479,10 +99817,16 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
99479
99817
  const created = this.safeInteger(order, 'create_time');
99480
99818
  const marketId = this.safeString(order, 'instrument_name');
99481
99819
  const symbol = this.safeSymbol(marketId, market);
99482
- const execInst = this.safeString(order, 'exec_inst');
99483
- let postOnly = undefined;
99820
+ const execInst = this.safeValue(order, 'exec_inst');
99821
+ let postOnly = false;
99484
99822
  if (execInst !== undefined) {
99485
- postOnly = (execInst === 'POST_ONLY');
99823
+ for (let i = 0; i < execInst.length; i++) {
99824
+ const inst = execInst[i];
99825
+ if (inst === 'POST_ONLY') {
99826
+ postOnly = true;
99827
+ break;
99828
+ }
99829
+ }
99486
99830
  }
99487
99831
  const feeCurrency = this.safeString(order, 'fee_instrument_name');
99488
99832
  return this.safeOrder({
@@ -99715,52 +100059,6 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
99715
100059
  'info': info,
99716
100060
  };
99717
100061
  }
99718
- async fetchBorrowInterest(code = undefined, symbol = undefined, since = undefined, limit = undefined, params = {}) {
99719
- await this.loadMarkets();
99720
- const request = {};
99721
- let market = undefined;
99722
- let currency = undefined;
99723
- if (symbol !== undefined) {
99724
- market = this.market(symbol);
99725
- }
99726
- if (code !== undefined) {
99727
- currency = this.currency(code);
99728
- request['currency'] = currency['id'];
99729
- }
99730
- if (since !== undefined) {
99731
- request['start_ts'] = since;
99732
- }
99733
- if (limit !== undefined) {
99734
- request['page_size'] = limit;
99735
- }
99736
- const response = await this.v2PrivatePostPrivateMarginGetInterestHistory(this.extend(request, params));
99737
- //
99738
- // {
99739
- // "id": 1656705829020,
99740
- // "method": "private/margin/get-interest-history",
99741
- // "code": 0,
99742
- // "result": {
99743
- // "list": [
99744
- // {
99745
- // "loan_id": "2643528867803765921",
99746
- // "currency": "USDT",
99747
- // "interest": 0.00000004,
99748
- // "time": 1656702899559,
99749
- // "stake_amount": 6,
99750
- // "interest_rate": 0.000025
99751
- // },
99752
- // ]
99753
- // }
99754
- // }
99755
- //
99756
- const data = this.safeValue(response, 'result', {});
99757
- const rows = this.safeValue(data, 'list', []);
99758
- let interest = undefined;
99759
- for (let i = 0; i < rows.length; i++) {
99760
- interest = this.parseBorrowInterests(rows, market);
99761
- }
99762
- return this.filterByCurrencySinceLimit(interest, code, since, limit);
99763
- }
99764
100062
  parseBorrowInterest(info, market = undefined) {
99765
100063
  //
99766
100064
  // {
@@ -99789,38 +100087,6 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
99789
100087
  'info': info,
99790
100088
  };
99791
100089
  }
99792
- async fetchBorrowRates(params = {}) {
99793
- /**
99794
- * @method
99795
- * @name cryptocom#fetchBorrowRates
99796
- * @description fetch the borrow interest rates of all currencies
99797
- * @param {object} [params] extra parameters specific to the cryptocom api endpoint
99798
- * @returns {object} a list of [borrow rate structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#borrow-rate-structure}
99799
- */
99800
- await this.loadMarkets();
99801
- const response = await this.v2PrivatePostPrivateMarginGetUserConfig(params);
99802
- //
99803
- // {
99804
- // "id": 1656707947456,
99805
- // "method": "private/margin/get-user-config",
99806
- // "code": 0,
99807
- // "result": {
99808
- // "stake_amount": 6,
99809
- // "currency_configs": [
99810
- // {
99811
- // "currency": "AGLD",
99812
- // "hourly_rate": 0.00003334,
99813
- // "max_borrow_limit": 342.4032393,
99814
- // "min_borrow_limit": 30
99815
- // },
99816
- // ]
99817
- // }
99818
- // }
99819
- //
99820
- const data = this.safeValue(response, 'result', {});
99821
- const rates = this.safeValue(data, 'currency_configs', []);
99822
- return this.parseBorrowRates(rates, 'currency');
99823
- }
99824
100090
  parseBorrowRates(info, codeKey) {
99825
100091
  //
99826
100092
  // {
@@ -100493,7 +100759,15 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
100493
100759
  const paramsKeys = Object.keys(keysorted);
100494
100760
  let strSortKey = '';
100495
100761
  for (let i = 0; i < paramsKeys.length; i++) {
100496
- strSortKey = strSortKey + paramsKeys[i].toString() + requestParams[paramsKeys[i]].toString();
100762
+ const key = paramsKeys[i].toString();
100763
+ let value = requestParams[paramsKeys[i]];
100764
+ if (Array.isArray(value)) {
100765
+ value = value.join(',');
100766
+ }
100767
+ else {
100768
+ value = value.toString();
100769
+ }
100770
+ strSortKey = strSortKey + key + value;
100497
100771
  }
100498
100772
  const payload = path + nonce + this.apiKey + strSortKey + nonce;
100499
100773
  const signature = this.hmac(this.encode(payload), this.encode(this.secret), _static_dependencies_noble_hashes_sha256_js__WEBPACK_IMPORTED_MODULE_4__/* .sha256 */ .J);
@@ -101113,6 +101387,7 @@ class currencycom extends _abstract_currencycom_js__WEBPACK_IMPORTED_MODULE_0__/
101113
101387
  'max': undefined,
101114
101388
  },
101115
101389
  },
101390
+ 'created': undefined,
101116
101391
  'info': market,
101117
101392
  });
101118
101393
  }
@@ -103374,6 +103649,7 @@ class delta extends _abstract_delta_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
103374
103649
  'max': undefined,
103375
103650
  },
103376
103651
  },
103652
+ 'created': this.parse8601(this.safeString(market, 'launch_time')),
103377
103653
  'info': market,
103378
103654
  });
103379
103655
  }
@@ -106452,6 +106728,7 @@ class deribit extends _abstract_deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
106452
106728
  'max': undefined,
106453
106729
  },
106454
106730
  },
106731
+ 'created': this.safeInteger(market, 'creation_timestamp'),
106455
106732
  'info': market,
106456
106733
  });
106457
106734
  }
@@ -109441,6 +109718,7 @@ class digifinex extends _abstract_digifinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["
109441
109718
  'max': undefined,
109442
109719
  },
109443
109720
  },
109721
+ 'created': undefined,
109444
109722
  'info': market,
109445
109723
  });
109446
109724
  }
@@ -111595,14 +111873,16 @@ class digifinex extends _abstract_digifinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["
111595
111873
  // "leverage_ratio": 3
111596
111874
  // }
111597
111875
  //
111598
- const symbol = this.safeString(info, 'symbol');
111876
+ const marketId = this.safeString(info, 'symbol');
111599
111877
  const amountString = this.safeString(info, 'amount');
111600
111878
  const leverageString = this.safeString(info, 'leverage_ratio');
111601
111879
  const amountInvested = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringDiv */ .O.stringDiv(amountString, leverageString);
111602
111880
  const amountBorrowed = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringSub */ .O.stringSub(amountString, amountInvested);
111603
111881
  const currency = (market === undefined) ? undefined : market['base'];
111882
+ const symbol = this.safeSymbol(marketId, market);
111604
111883
  return {
111605
- 'account': this.safeSymbol(symbol, market),
111884
+ 'account': symbol,
111885
+ 'symbol': symbol,
111606
111886
  'currency': currency,
111607
111887
  'interest': undefined,
111608
111888
  'interestRate': 0.001,
@@ -112082,10 +112362,9 @@ class digifinex extends _abstract_digifinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["
112082
112362
  return position;
112083
112363
  }
112084
112364
  else {
112085
- return this.extend(position, {
112086
- 'collateral': this.safeNumber(response, 'margin'),
112087
- 'marginRatio': this.safeNumber(response, 'margin_rate'),
112088
- });
112365
+ position['collateral'] = this.safeNumber(response, 'margin');
112366
+ position['marginRatio'] = this.safeNumber(response, 'margin_rate');
112367
+ return position;
112089
112368
  }
112090
112369
  }
112091
112370
  parsePosition(position, market = undefined) {
@@ -112145,7 +112424,7 @@ class digifinex extends _abstract_digifinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["
112145
112424
  else if (side === 'go_short') {
112146
112425
  side = 'short';
112147
112426
  }
112148
- return {
112427
+ return this.safePosition({
112149
112428
  'info': position,
112150
112429
  'id': undefined,
112151
112430
  'symbol': symbol,
@@ -112171,7 +112450,7 @@ class digifinex extends _abstract_digifinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["
112171
112450
  'percentage': undefined,
112172
112451
  'stopLossPrice': undefined,
112173
112452
  'takeProfitPrice': undefined,
112174
- };
112453
+ });
112175
112454
  }
112176
112455
  async setLeverage(leverage, symbol = undefined, params = {}) {
112177
112456
  /**
@@ -113511,6 +113790,7 @@ class exmo extends _abstract_exmo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
113511
113790
  'max': this.safeNumber(market, 'max_amount'),
113512
113791
  },
113513
113792
  },
113793
+ 'created': undefined,
113514
113794
  'info': market,
113515
113795
  });
113516
113796
  }
@@ -116469,6 +116749,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
116469
116749
  'max': margin ? this.safeNumber(market, 'max_quote_amount') : undefined,
116470
116750
  },
116471
116751
  },
116752
+ 'created': undefined,
116472
116753
  'info': market,
116473
116754
  });
116474
116755
  }
@@ -116666,6 +116947,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
116666
116947
  'max': undefined,
116667
116948
  },
116668
116949
  },
116950
+ 'created': undefined,
116669
116951
  'info': market,
116670
116952
  };
116671
116953
  }
@@ -116786,6 +117068,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
116786
117068
  'max': undefined,
116787
117069
  },
116788
117070
  },
117071
+ 'created': this.safeIntegerProduct(market, 'create_time', 1000),
116789
117072
  'info': market,
116790
117073
  });
116791
117074
  }
@@ -122587,6 +122870,7 @@ class gemini extends _abstract_gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
122587
122870
  'max': undefined,
122588
122871
  },
122589
122872
  },
122873
+ 'created': undefined,
122590
122874
  'info': response,
122591
122875
  };
122592
122876
  }
@@ -124475,6 +124759,7 @@ class hitbtc extends _abstract_hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
124475
124759
  'max': undefined,
124476
124760
  },
124477
124761
  },
124762
+ 'created': undefined,
124478
124763
  'info': market,
124479
124764
  });
124480
124765
  }
@@ -127214,6 +127499,7 @@ class hollaex extends _abstract_hollaex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
127214
127499
  'max': undefined,
127215
127500
  },
127216
127501
  },
127502
+ 'created': this.parse8601(this.safeString(market, 'created_at')),
127217
127503
  'info': market,
127218
127504
  });
127219
127505
  }
@@ -130494,6 +130780,13 @@ class huobi extends _abstract_huobi_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
130494
130780
  // 7 Settlement Completed
130495
130781
  // 8 Delivered
130496
130782
  // 9 Suspending of Trade
130783
+ let created = undefined;
130784
+ let createdDate = this.safeString(market, 'create_date'); // i.e 20230101
130785
+ if (createdDate !== undefined) {
130786
+ const createdArray = this.stringToCharsArray(createdDate);
130787
+ createdDate = createdArray[0] + createdArray[1] + createdArray[2] + createdArray[3] + '-' + createdArray[4] + createdArray[5] + '-' + createdArray[6] + createdArray[7] + ' 00:00:00';
130788
+ created = this.parse8601(createdDate);
130789
+ }
130497
130790
  result.push({
130498
130791
  'id': id,
130499
130792
  'lowercaseId': lowercaseId,
@@ -130546,6 +130839,7 @@ class huobi extends _abstract_huobi_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
130546
130839
  'max': undefined,
130547
130840
  },
130548
130841
  },
130842
+ 'created': created,
130549
130843
  'info': market,
130550
130844
  });
130551
130845
  }
@@ -137648,6 +137942,7 @@ class huobijp extends _abstract_huobijp_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
137648
137942
  'max': undefined,
137649
137943
  },
137650
137944
  },
137945
+ 'created': undefined,
137651
137946
  'info': market,
137652
137947
  });
137653
137948
  }
@@ -139369,6 +139664,7 @@ class idex extends _abstract_idex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
139369
139664
  'max': undefined,
139370
139665
  },
139371
139666
  },
139667
+ 'created': undefined,
139372
139668
  'info': entry,
139373
139669
  });
139374
139670
  }
@@ -141035,6 +141331,7 @@ class independentreserve extends _abstract_independentreserve_js__WEBPACK_IMPORT
141035
141331
  'max': undefined,
141036
141332
  },
141037
141333
  },
141334
+ 'created': undefined,
141038
141335
  'info': id,
141039
141336
  });
141040
141337
  }
@@ -141867,6 +142164,7 @@ class indodax extends _abstract_indodax_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
141867
142164
  'max': undefined,
141868
142165
  },
141869
142166
  },
142167
+ 'created': undefined,
141870
142168
  'info': market,
141871
142169
  });
141872
142170
  }
@@ -142818,6 +143116,7 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
142818
143116
  'Depth': 1,
142819
143117
  'OHLC': 1,
142820
143118
  'Spread': 1,
143119
+ 'SystemStatus': 1,
142821
143120
  'Ticker': 1,
142822
143121
  'Time': 1,
142823
143122
  'Trades': 1,
@@ -142830,6 +143129,7 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
142830
143129
  'AddExport': 3,
142831
143130
  'Balance': 3,
142832
143131
  'CancelAll': 3,
143132
+ 'CancelAllOrdersAfter': 3,
142833
143133
  'CancelOrder': 0,
142834
143134
  'CancelOrderBatch': 0,
142835
143135
  'ClosedOrders': 6,
@@ -142865,6 +143165,13 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
142865
143165
  // sub accounts
142866
143166
  'CreateSubaccount': 3,
142867
143167
  'AccountTransfer': 3,
143168
+ // earn
143169
+ 'Earn/Allocate': 3,
143170
+ 'Earn/Deallocate': 3,
143171
+ 'Earn/AllocateStatus': 3,
143172
+ 'Earn/DeallocateStatus': 3,
143173
+ 'Earn/Strategies': 3,
143174
+ 'Earn/Allocations': 3,
142868
143175
  },
142869
143176
  },
142870
143177
  },
@@ -143152,6 +143459,7 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
143152
143459
  'max': undefined,
143153
143460
  },
143154
143461
  },
143462
+ 'created': undefined,
143155
143463
  'info': market,
143156
143464
  });
143157
143465
  }
@@ -145739,6 +146047,7 @@ class krakenfutures extends _abstract_krakenfutures_js__WEBPACK_IMPORTED_MODULE_
145739
146047
  'max': undefined,
145740
146048
  },
145741
146049
  },
146050
+ 'created': this.parse8601(this.safeString(market, 'openingDate')),
145742
146051
  'info': market,
145743
146052
  });
145744
146053
  }
@@ -148523,6 +148832,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
148523
148832
  'max': this.safeNumber(market, 'quoteMaxSize'),
148524
148833
  },
148525
148834
  },
148835
+ 'created': undefined,
148526
148836
  'info': market,
148527
148837
  });
148528
148838
  }
@@ -152293,6 +152603,7 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
152293
152603
  'max': this.safeNumber(market, 'quoteMaxSize'),
152294
152604
  },
152295
152605
  },
152606
+ 'created': this.safeInteger(market, 'firstOpenDate'),
152296
152607
  'info': market,
152297
152608
  });
152298
152609
  }
@@ -154640,6 +154951,7 @@ class kuna extends _abstract_kuna_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
154640
154951
  'max': undefined,
154641
154952
  },
154642
154953
  },
154954
+ 'created': undefined,
154643
154955
  'info': undefined,
154644
154956
  });
154645
154957
  }
@@ -155564,6 +155876,7 @@ class latoken extends _abstract_latoken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
155564
155876
  'max': this.safeNumber(market, 'maxOrderCost' + capitalizedQuote),
155565
155877
  },
155566
155878
  },
155879
+ 'created': this.safeInteger(market, 'created'),
155567
155880
  'info': market,
155568
155881
  });
155569
155882
  }
@@ -157157,6 +157470,7 @@ class lbank extends _abstract_lbank_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
157157
157470
  'max': undefined,
157158
157471
  },
157159
157472
  },
157473
+ 'created': undefined,
157160
157474
  'info': id,
157161
157475
  });
157162
157476
  }
@@ -158247,6 +158561,7 @@ class lbank2 extends _abstract_lbank2_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
158247
158561
  'max': undefined,
158248
158562
  },
158249
158563
  },
158564
+ 'created': undefined,
158250
158565
  'info': market,
158251
158566
  });
158252
158567
  }
@@ -158343,6 +158658,7 @@ class lbank2 extends _abstract_lbank2_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
158343
158658
  'max': undefined,
158344
158659
  },
158345
158660
  },
158661
+ 'created': undefined,
158346
158662
  'info': market,
158347
158663
  });
158348
158664
  }
@@ -160848,6 +161164,7 @@ class luno extends _abstract_luno_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
160848
161164
  'max': undefined,
160849
161165
  },
160850
161166
  },
161167
+ 'created': undefined,
160851
161168
  'info': market,
160852
161169
  });
160853
161170
  }
@@ -161969,7 +162286,6 @@ class lykke extends _abstract_lykke_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
161969
162286
  'option': false,
161970
162287
  'contract': false,
161971
162288
  'active': true,
161972
- 'info': market,
161973
162289
  'linear': undefined,
161974
162290
  'inverse': undefined,
161975
162291
  'contractSize': undefined,
@@ -161999,6 +162315,8 @@ class lykke extends _abstract_lykke_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
161999
162315
  'max': undefined,
162000
162316
  },
162001
162317
  },
162318
+ 'created': undefined,
162319
+ 'info': market,
162002
162320
  });
162003
162321
  }
162004
162322
  return result;
@@ -163190,6 +163508,7 @@ class mercado extends _abstract_mercado_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
163190
163508
  'max': undefined,
163191
163509
  },
163192
163510
  },
163511
+ 'created': undefined,
163193
163512
  'info': coin,
163194
163513
  });
163195
163514
  }
@@ -165020,6 +165339,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
165020
165339
  'max': maxQuoteAmount,
165021
165340
  },
165022
165341
  },
165342
+ 'created': undefined,
165023
165343
  'info': market,
165024
165344
  });
165025
165345
  }
@@ -165131,6 +165451,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
165131
165451
  'max': undefined,
165132
165452
  },
165133
165453
  },
165454
+ 'created': undefined,
165134
165455
  'info': market,
165135
165456
  });
165136
165457
  }
@@ -166593,7 +166914,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
166593
166914
  }
166594
166915
  const [marketType] = this.handleMarketTypeAndParams('fetchOrdersByState', market, params);
166595
166916
  if (marketType === 'spot') {
166596
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest(this.id + ' fetchOrdersByState() is not supported for ' + marketType);
166917
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' fetchOrdersByState() is not supported for ' + marketType);
166597
166918
  }
166598
166919
  else {
166599
166920
  request['states'] = state;
@@ -167898,6 +168219,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
167898
168219
  * @returns {object} a dictionary of [leverage tiers structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#leverage-tiers-structure}, indexed by market symbols
167899
168220
  */
167900
168221
  await this.loadMarkets();
168222
+ symbols = this.marketSymbols(symbols, 'swap', true, true);
167901
168223
  const response = await this.contractPublicGetDetail(params);
167902
168224
  //
167903
168225
  // {
@@ -169731,6 +170053,7 @@ class ndax extends _abstract_ndax_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
169731
170053
  'max': undefined,
169732
170054
  },
169733
170055
  },
170056
+ 'created': undefined,
169734
170057
  'info': market,
169735
170058
  });
169736
170059
  }
@@ -171975,6 +172298,7 @@ class novadax extends _abstract_novadax_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
171975
172298
  'max': undefined,
171976
172299
  },
171977
172300
  },
172301
+ 'created': undefined,
171978
172302
  'info': market,
171979
172303
  });
171980
172304
  }
@@ -173453,6 +173777,7 @@ class oceanex extends _abstract_oceanex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
173453
173777
  'max': undefined,
173454
173778
  },
173455
173779
  },
173780
+ 'created': undefined,
173456
173781
  'info': market,
173457
173782
  });
173458
173783
  }
@@ -186240,6 +186565,7 @@ class phemex extends _abstract_phemex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
186240
186565
  'max': this.parseNumber(this.safeString(market, 'maxOrderQty')),
186241
186566
  },
186242
186567
  },
186568
+ 'created': undefined,
186243
186569
  'info': market,
186244
186570
  };
186245
186571
  }
@@ -186338,6 +186664,7 @@ class phemex extends _abstract_phemex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
186338
186664
  'max': this.parseSafeNumber(this.safeString(market, 'maxOrderValue')),
186339
186665
  },
186340
186666
  },
186667
+ 'created': undefined,
186341
186668
  'info': market,
186342
186669
  };
186343
186670
  }
@@ -190638,6 +190965,7 @@ class poloniex extends _abstract_poloniex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
190638
190965
  'max': undefined,
190639
190966
  },
190640
190967
  },
190968
+ 'created': this.safeInteger(market, 'tradableStartTime'),
190641
190969
  'info': market,
190642
190970
  });
190643
190971
  }
@@ -192525,22 +192853,27 @@ class poloniexfutures extends _abstract_poloniexfutures_js__WEBPACK_IMPORTED_MOD
192525
192853
  'get': {
192526
192854
  'account-overview': 1,
192527
192855
  'transaction-history': 1,
192856
+ 'maxActiveOrders': 1,
192857
+ 'maxRiskLimit': 1,
192858
+ 'userFeeRate': 1,
192859
+ 'marginType/query': 1,
192528
192860
  'orders': 1,
192529
192861
  'stopOrders': 1,
192530
192862
  'recentDoneOrders': 1,
192531
192863
  'orders/{order-id}': 1,
192864
+ 'clientOrderId/{clientOid}': 1,
192532
192865
  'fills': 1,
192533
192866
  'openOrderStatistics': 1,
192534
192867
  'position': 1.5,
192535
192868
  'positions': 1.5,
192536
192869
  'funding-history': 1,
192537
- 'marginType/query': 1,
192538
192870
  },
192539
192871
  'post': {
192540
192872
  'orders': 1.5,
192541
192873
  'batchOrders': 1.5,
192542
192874
  'position/margin/auto-deposit-status': 1.5,
192543
192875
  'position/margin/deposit-margin': 1.5,
192876
+ 'position/margin/withdraw-margin': 1.5,
192544
192877
  'bullet-private': 1,
192545
192878
  'marginType/change': 1,
192546
192879
  },
@@ -192757,6 +193090,7 @@ class poloniexfutures extends _abstract_poloniexfutures_js__WEBPACK_IMPORTED_MOD
192757
193090
  'max': undefined,
192758
193091
  },
192759
193092
  },
193093
+ 'created': this.safeInteger(market, 'firstOpenDate'),
192760
193094
  'info': market,
192761
193095
  });
192762
193096
  }
@@ -193681,7 +194015,7 @@ class poloniexfutures extends _abstract_poloniexfutures_js__WEBPACK_IMPORTED_MOD
193681
194015
  }
193682
194016
  const request = {};
193683
194017
  if (!stop) {
193684
- request['status'] = status === 'open' ? 'active' : 'done';
194018
+ request['status'] = (status === 'open') ? 'active' : 'done';
193685
194019
  }
193686
194020
  else if (status !== 'open') {
193687
194021
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest(this.id + ' fetchOrdersByStatus() can only fetch untriggered stop orders');
@@ -227516,6 +227850,9 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
227516
227850
  };
227517
227851
  const marketIds = [];
227518
227852
  let messageHash = name;
227853
+ if (symbols === undefined) {
227854
+ symbols = [];
227855
+ }
227519
227856
  for (let i = 0; i < symbols.length; i++) {
227520
227857
  const symbol = symbols[i];
227521
227858
  marketIds.push(this.marketId(symbol));
@@ -227581,6 +227918,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
227581
227918
  const method = this.safeString(this.options, 'watchTickerMethod', 'ticker'); // or ticker_lite
227582
227919
  const name = this.safeString2(params, 'method', 'watchTickerMethod', method);
227583
227920
  params = this.omit(params, ['watchTickerMethod', 'method']);
227921
+ symbols = this.marketSymbols(symbols, undefined, false);
227584
227922
  return await this.subscribePublic(name, symbols, params);
227585
227923
  }
227586
227924
  async watchTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -227732,7 +228070,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
227732
228070
  // }
227733
228071
  //
227734
228072
  const channel = this.safeString(message, 'feed');
227735
- const marketId = this.safeStringLower(message, 'product_id');
228073
+ const marketId = this.safeString(message, 'product_id');
227736
228074
  if (marketId !== undefined) {
227737
228075
  const market = this.market(marketId);
227738
228076
  const symbol = market['symbol'];
@@ -227773,7 +228111,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
227773
228111
  // "price": 34893
227774
228112
  // }
227775
228113
  //
227776
- const marketId = this.safeStringLower(trade, 'product_id');
228114
+ const marketId = this.safeString(trade, 'product_id');
227777
228115
  market = this.safeMarket(marketId, market);
227778
228116
  const timestamp = this.safeInteger(trade, 'time');
227779
228117
  return this.safeTrade({
@@ -227826,7 +228164,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
227826
228164
  // }
227827
228165
  //
227828
228166
  const timestamp = this.safeInteger(trade, 'tradeTime');
227829
- const marketId = this.safeStringLower(trade, 'symbol');
228167
+ const marketId = this.safeString(trade, 'symbol');
227830
228168
  return this.safeTrade({
227831
228169
  'info': trade,
227832
228170
  'id': this.safeString(trade, 'tradeId'),
@@ -227905,7 +228243,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
227905
228243
  }
227906
228244
  const order = this.safeValue(message, 'order');
227907
228245
  if (order !== undefined) {
227908
- const marketId = this.safeStringLower(order, 'instrument');
228246
+ const marketId = this.safeString(order, 'instrument');
227909
228247
  const messageHash = 'orders';
227910
228248
  const symbol = this.safeSymbol(marketId);
227911
228249
  const orderId = this.safeString(order, 'order_id');
@@ -228098,7 +228436,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
228098
228436
  status = 'cancelled';
228099
228437
  }
228100
228438
  }
228101
- const marketId = this.safeStringLower(unparsedOrder, 'instrument');
228439
+ const marketId = this.safeString(unparsedOrder, 'instrument');
228102
228440
  const timestamp = this.safeString(unparsedOrder, 'time');
228103
228441
  const direction = this.safeInteger(unparsedOrder, 'direction');
228104
228442
  return this.safeOrder({
@@ -228179,7 +228517,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
228179
228517
  // "volumeQuote": 6899673.0
228180
228518
  // }
228181
228519
  //
228182
- const marketId = this.safeStringLower(message, 'product_id');
228520
+ const marketId = this.safeString(message, 'product_id');
228183
228521
  const feed = this.safeString(message, 'feed');
228184
228522
  if (marketId !== undefined) {
228185
228523
  const ticker = this.parseWsTicker(message);
@@ -228240,7 +228578,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
228240
228578
  // "volumeQuote": 6899673.0
228241
228579
  // }
228242
228580
  //
228243
- const marketId = this.safeStringLower(ticker, 'product_id');
228581
+ const marketId = this.safeString(ticker, 'product_id');
228244
228582
  market = this.safeMarket(marketId, market);
228245
228583
  const symbol = market['symbol'];
228246
228584
  const timestamp = this.parse8601(this.safeString(ticker, 'lastTime'));
@@ -228298,7 +228636,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
228298
228636
  // ]
228299
228637
  // }
228300
228638
  //
228301
- const marketId = this.safeStringLower(message, 'product_id');
228639
+ const marketId = this.safeString(message, 'product_id');
228302
228640
  const market = this.safeMarket(marketId);
228303
228641
  const symbol = market['symbol'];
228304
228642
  const messageHash = 'book:' + symbol;
@@ -228338,7 +228676,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
228338
228676
  // "timestamp": 1612269953629
228339
228677
  // }
228340
228678
  //
228341
- const marketId = this.safeStringLower(message, 'product_id');
228679
+ const marketId = this.safeString(message, 'product_id');
228342
228680
  const market = this.safeMarket(marketId);
228343
228681
  const symbol = market['symbol'];
228344
228682
  const messageHash = 'book:' + symbol;
@@ -228642,7 +228980,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
228642
228980
  // }
228643
228981
  //
228644
228982
  const timestamp = this.safeInteger(trade, 'time');
228645
- const marketId = this.safeStringLower(trade, 'instrument');
228983
+ const marketId = this.safeString(trade, 'instrument');
228646
228984
  market = this.safeMarket(marketId, market);
228647
228985
  const isBuy = this.safeValue(trade, 'buy');
228648
228986
  const feeCurrencyId = this.safeString(trade, 'fee_currency');
@@ -242120,6 +242458,7 @@ class probit extends _abstract_probit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
242120
242458
  'max': this.safeNumber(market, 'max_cost'),
242121
242459
  },
242122
242460
  },
242461
+ 'created': undefined,
242123
242462
  'info': market,
242124
242463
  });
242125
242464
  }
@@ -252879,6 +253218,7 @@ class tidex extends _abstract_tidex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
252879
253218
  'max': undefined,
252880
253219
  },
252881
253220
  },
253221
+ 'created': undefined,
252882
253222
  'info': market,
252883
253223
  });
252884
253224
  }
@@ -254852,6 +255192,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
254852
255192
  'max': undefined,
254853
255193
  },
254854
255194
  },
255195
+ 'created': undefined,
254855
255196
  'info': market,
254856
255197
  };
254857
255198
  }
@@ -255925,6 +256266,7 @@ class tokocrypto extends _abstract_tokocrypto_js__WEBPACK_IMPORTED_MODULE_0__/*
255925
256266
  'max': undefined,
255926
256267
  },
255927
256268
  },
256269
+ 'created': undefined,
255928
256270
  'info': market,
255929
256271
  };
255930
256272
  if ('PRICE_FILTER' in filtersByType) {
@@ -258195,6 +258537,7 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
258195
258537
  'max': undefined,
258196
258538
  },
258197
258539
  },
258540
+ 'created': undefined,
258198
258541
  'info': market,
258199
258542
  });
258200
258543
  }
@@ -260145,6 +260488,7 @@ class wavesexchange extends _abstract_wavesexchange_js__WEBPACK_IMPORTED_MODULE_
260145
260488
  'max': undefined,
260146
260489
  },
260147
260490
  },
260491
+ 'created': undefined,
260148
260492
  'info': entry,
260149
260493
  });
260150
260494
  }
@@ -262441,6 +262785,7 @@ class wazirx extends _abstract_wazirx_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
262441
262785
  'max': undefined,
262442
262786
  },
262443
262787
  },
262788
+ 'created': undefined,
262444
262789
  'info': market,
262445
262790
  });
262446
262791
  }
@@ -262769,7 +263114,7 @@ class wazirx extends _abstract_wazirx_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
262769
263114
  }, market);
262770
263115
  }
262771
263116
  parseBalance(response) {
262772
- const result = {};
263117
+ const result = { 'info': response };
262773
263118
  for (let i = 0; i < response.length; i++) {
262774
263119
  const balance = response[i];
262775
263120
  const id = this.safeString(balance, 'asset');
@@ -263497,6 +263842,7 @@ class whitebit extends _abstract_whitebit_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
263497
263842
  'max': this.safeNumber(market, 'maxTotal'),
263498
263843
  },
263499
263844
  },
263845
+ 'created': undefined,
263500
263846
  'info': market,
263501
263847
  };
263502
263848
  result.push(entry);
@@ -265796,6 +266142,7 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
265796
266142
  'max': undefined,
265797
266143
  },
265798
266144
  },
266145
+ 'created': this.safeIntegerProduct(market, 'created_time', 1000),
265799
266146
  'info': market,
265800
266147
  });
265801
266148
  }
@@ -268448,6 +268795,7 @@ class yobit extends _abstract_yobit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
268448
268795
  'max': undefined,
268449
268796
  },
268450
268797
  },
268798
+ 'created': undefined,
268451
268799
  'info': market,
268452
268800
  });
268453
268801
  }
@@ -269577,6 +269925,7 @@ class zaif extends _abstract_zaif_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
269577
269925
  'max': undefined,
269578
269926
  },
269579
269927
  },
269928
+ 'created': undefined,
269580
269929
  'info': market,
269581
269930
  });
269582
269931
  }
@@ -270485,6 +270834,7 @@ class zonda extends _abstract_zonda_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
270485
270834
  'max': undefined,
270486
270835
  },
270487
270836
  },
270837
+ 'created': undefined,
270488
270838
  'info': item,
270489
270839
  });
270490
270840
  }
@@ -277545,7 +277895,7 @@ SOFTWARE.
277545
277895
 
277546
277896
  //-----------------------------------------------------------------------------
277547
277897
  // this is updated by vss.js when building
277548
- const version = '4.1.13';
277898
+ const version = '4.1.16';
277549
277899
  _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange.ccxtVersion */ .e.ccxtVersion = version;
277550
277900
  //-----------------------------------------------------------------------------
277551
277901