ccxt 4.0.100 → 4.0.102

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 (73) hide show
  1. package/README.md +5 -6
  2. package/dist/ccxt.browser.js +965 -2559
  3. package/dist/ccxt.browser.min.js +2 -2
  4. package/dist/cjs/ccxt.js +1 -4
  5. package/dist/cjs/src/binance.js +36 -1
  6. package/dist/cjs/src/bingx.js +41 -4
  7. package/dist/cjs/src/bitbank.js +11 -0
  8. package/dist/cjs/src/bitfinex.js +12 -8
  9. package/dist/cjs/src/bitflyer.js +39 -10
  10. package/dist/cjs/src/bitforex.js +0 -8
  11. package/dist/cjs/src/bitget.js +15 -5
  12. package/dist/cjs/src/bitmart.js +69 -0
  13. package/dist/cjs/src/bitstamp1.js +22 -0
  14. package/dist/cjs/src/bl3p.js +32 -0
  15. package/dist/cjs/src/bybit.js +147 -48
  16. package/dist/cjs/src/coinbasepro.js +11 -0
  17. package/dist/cjs/src/currencycom.js +1 -1
  18. package/dist/cjs/src/gemini.js +1 -0
  19. package/dist/cjs/src/huobi.js +1 -1
  20. package/dist/cjs/src/huobijp.js +1 -1
  21. package/dist/cjs/src/idex.js +1 -1
  22. package/dist/cjs/src/kucoinfutures.js +46 -51
  23. package/dist/cjs/src/lbank.js +1 -1
  24. package/dist/cjs/src/lbank2.js +1 -1
  25. package/dist/cjs/src/pro/binance.js +7 -7
  26. package/dist/cjs/src/pro/bybit.js +18 -17
  27. package/dist/cjs/src/pro/coinbasepro.js +10 -10
  28. package/dist/cjs/src/pro/huobijp.js +1 -2
  29. package/dist/cjs/src/pro/krakenfutures.js +7 -7
  30. package/dist/cjs/src/pro/kucoin.js +51 -2
  31. package/dist/cjs/src/pro/kucoinfutures.js +3 -3
  32. package/dist/cjs/src/pro/phemex.js +2 -2
  33. package/js/ccxt.d.ts +2 -5
  34. package/js/ccxt.js +2 -4
  35. package/js/src/abstract/binance.d.ts +8 -0
  36. package/js/src/abstract/binancecoinm.d.ts +8 -0
  37. package/js/src/abstract/binanceus.d.ts +8 -0
  38. package/js/src/abstract/binanceusdm.d.ts +8 -0
  39. package/js/src/abstract/bingx.d.ts +16 -1
  40. package/js/src/binance.js +36 -1
  41. package/js/src/bingx.js +41 -4
  42. package/js/src/bitbank.js +11 -0
  43. package/js/src/bitfinex.js +12 -8
  44. package/js/src/bitflyer.js +39 -10
  45. package/js/src/bitforex.js +0 -8
  46. package/js/src/bitget.js +15 -5
  47. package/js/src/bitmart.d.ts +38 -0
  48. package/js/src/bitmart.js +69 -0
  49. package/js/src/bitstamp1.js +22 -0
  50. package/js/src/bl3p.js +32 -0
  51. package/js/src/bybit.js +147 -48
  52. package/js/src/coinbasepro.js +11 -0
  53. package/js/src/currencycom.js +1 -1
  54. package/js/src/gemini.js +1 -0
  55. package/js/src/huobi.js +1 -1
  56. package/js/src/huobijp.js +1 -1
  57. package/js/src/idex.js +1 -1
  58. package/js/src/kucoinfutures.js +46 -51
  59. package/js/src/lbank.js +1 -1
  60. package/js/src/lbank2.js +1 -1
  61. package/js/src/pro/binance.js +7 -7
  62. package/js/src/pro/bybit.js +18 -17
  63. package/js/src/pro/coinbasepro.js +10 -10
  64. package/js/src/pro/huobijp.js +1 -2
  65. package/js/src/pro/krakenfutures.js +7 -7
  66. package/js/src/pro/kucoin.d.ts +1 -0
  67. package/js/src/pro/kucoin.js +51 -2
  68. package/js/src/pro/kucoinfutures.js +3 -3
  69. package/js/src/pro/phemex.js +2 -2
  70. package/package.json +1 -1
  71. package/skip-tests.json +3 -7
  72. package/js/src/abstract/bkex.d.ts +0 -61
  73. package/js/src/abstract/bkex.js +0 -11
@@ -400,22 +400,6 @@ class Exchange extends _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchang
400
400
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Exchange);
401
401
 
402
402
 
403
- /***/ }),
404
-
405
- /***/ 5569:
406
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
407
-
408
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
409
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
410
- /* harmony export */ });
411
- /* harmony import */ var _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
412
- // -------------------------------------------------------------------------------
413
-
414
- class Exchange extends _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e {
415
- }
416
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Exchange);
417
-
418
-
419
403
  /***/ }),
420
404
 
421
405
  /***/ 858:
@@ -16075,6 +16059,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
16075
16059
  'portfolio/interest-history': 0.6667,
16076
16060
  'portfolio/asset-index-price': 0.1,
16077
16061
  'portfolio/repay-futures-switch': 3,
16062
+ 'portfolio/margin-asset-leverage': 5,
16078
16063
  // staking
16079
16064
  'staking/productList': 0.1,
16080
16065
  'staking/position': 0.1,
@@ -16087,6 +16072,11 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
16087
16072
  'lending/auto-invest/plan/list': 0.1,
16088
16073
  'lending/auto-invest/plan/id': 0.1,
16089
16074
  'lending/auto-invest/history/list': 0.1,
16075
+ 'lending/auto-invest/index/info': 0.1,
16076
+ 'lending/auto-invest/index/user-summary': 0.1,
16077
+ 'lending/auto-invest/one-off/status': 0.1,
16078
+ 'lending/auto-invest/redeem/history': 0.1,
16079
+ 'lending/auto-invest/rebalance/history': 0.1,
16090
16080
  // simple earn
16091
16081
  'simple-earn/flexible/list': 15,
16092
16082
  'simple-earn/locked/list': 15,
@@ -16214,6 +16204,8 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
16214
16204
  'lending/auto-invest/plan/add': 0.1,
16215
16205
  'lending/auto-invest/plan/edit': 0.1,
16216
16206
  'lending/auto-invest/plan/edit-status': 0.1,
16207
+ 'lending/auto-invest/one-off': 0.1,
16208
+ 'lending/auto-invest/redeem': 0.1,
16217
16209
  // simple earn
16218
16210
  'simple-earn/flexible/subscribe': 0.1,
16219
16211
  'simple-earn/locked/subscribe': 0.1,
@@ -19095,6 +19087,18 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
19095
19087
  // "M": true // Was the trade the best price match?
19096
19088
  // }
19097
19089
  //
19090
+ // REST: aggregate trades for swap & future (both linear and inverse)
19091
+ //
19092
+ // {
19093
+ // "a": "269772814",
19094
+ // "p": "25864.1",
19095
+ // "q": "3",
19096
+ // "f": "662149354",
19097
+ // "l": "662149355",
19098
+ // "T": "1694209776022",
19099
+ // "m": false,
19100
+ // }
19101
+ //
19098
19102
  // recent public trades and old public trades
19099
19103
  // https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md#recent-trades-list
19100
19104
  // https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md#old-trade-lookup-market_data
@@ -19348,7 +19352,8 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
19348
19352
  }
19349
19353
  }
19350
19354
  if (limit !== undefined) {
19351
- request['limit'] = limit; // default = 500, maximum = 1000
19355
+ const isFutureOrSwap = (market['swap'] || market['future']);
19356
+ request['limit'] = isFutureOrSwap ? Math.min(limit, 1000) : limit; // default = 500, maximum = 1000
19352
19357
  }
19353
19358
  params = this.omit(params, ['until', 'fetchTradesMethod']);
19354
19359
  //
@@ -19377,6 +19382,20 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
19377
19382
  // }
19378
19383
  // ]
19379
19384
  //
19385
+ // inverse (swap & future)
19386
+ //
19387
+ // [
19388
+ // {
19389
+ // "a": "269772814",
19390
+ // "p": "25864.1",
19391
+ // "q": "3",
19392
+ // "f": "662149354",
19393
+ // "l": "662149355",
19394
+ // "T": "1694209776022",
19395
+ // "m": false,
19396
+ // },
19397
+ // ]
19398
+ //
19380
19399
  // recent public trades and historical public trades
19381
19400
  //
19382
19401
  // [
@@ -24857,6 +24876,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
24857
24876
  'quote/klines': 1,
24858
24877
  'quote/openInterest': 1,
24859
24878
  'quote/ticker': 1,
24879
+ 'quote/bookTicker': 1,
24860
24880
  },
24861
24881
  },
24862
24882
  'private': {
@@ -24908,11 +24928,17 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
24908
24928
  'private': {
24909
24929
  'get': {
24910
24930
  'capital/config/getall': 3,
24931
+ 'capital/deposit/address': 1,
24932
+ 'capital/innerTransfer/records': 1,
24933
+ 'capital/subAccount/deposit/address': 1,
24934
+ 'capital/deposit/subHisrec': 1,
24935
+ 'capital/subAccount/innerTransfer/records': 1,
24911
24936
  },
24912
24937
  'post': {
24913
24938
  'capital/withdraw/apply': 3,
24914
24939
  'capital/innerTransfer/apply': 3,
24915
24940
  'capital/subAccountInnerTransfer/apply': 3,
24941
+ 'capital/deposit/createSubAddress': 1,
24916
24942
  },
24917
24943
  },
24918
24944
  },
@@ -24923,6 +24949,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
24923
24949
  'get': {
24924
24950
  'list': 3,
24925
24951
  'assets': 3,
24952
+ 'apiKey/query': 1,
24926
24953
  },
24927
24954
  'post': {
24928
24955
  'create': 3,
@@ -24937,13 +24964,42 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
24937
24964
  'account': {
24938
24965
  'v1': {
24939
24966
  'private': {
24967
+ 'get': {
24968
+ 'uid': 1,
24969
+ },
24940
24970
  'post': {
24941
- 'uid': 3,
24942
24971
  'innerTransfer/authorizeSubAccount': 3,
24943
24972
  },
24944
24973
  },
24945
24974
  },
24946
24975
  },
24976
+ 'copyTrading': {
24977
+ 'v1': {
24978
+ 'private': {
24979
+ 'get': {
24980
+ 'swap/trace/currentTrack': 1,
24981
+ },
24982
+ 'post': {
24983
+ 'swap/trace/closeTrackOrder': 1,
24984
+ 'swap/trace/setTPSL': 1,
24985
+ },
24986
+ },
24987
+ },
24988
+ },
24989
+ 'api': {
24990
+ 'v3': {
24991
+ 'private': {
24992
+ 'get': {
24993
+ 'asset/transfer': 1,
24994
+ 'capital/deposit/hisrec': 1,
24995
+ 'capital/withdraw/history': 1,
24996
+ },
24997
+ 'post': {
24998
+ 'post/asset/transfer': 1,
24999
+ },
25000
+ },
25001
+ },
25002
+ },
24947
25003
  },
24948
25004
  'timeframes': {
24949
25005
  '1m': '1m',
@@ -26207,9 +26263,9 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
26207
26263
  * @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
26208
26264
  * @param {object} [params] extra parameters specific to the bingx api endpoint
26209
26265
  * @param {bool} [params.postOnly] true to place a post only order
26210
- * @param {object} [params.triggerPrice] triggerPrice at which the attached take profit / stop loss order will be triggered (swap markets only)
26211
- * @param {float} [params.stopLossPrice] stop loss trigger price (swap markets only)
26212
- * @param {float} [params.takeProfitPrice] take profit trigger price (swap markets only)
26266
+ * @param {float} [params.triggerPrice] *swap only* triggerPrice at which the attached take profit / stop loss order will be triggered
26267
+ * @param {float} [params.stopLossPrice] *swap only* stop loss trigger price
26268
+ * @param {float} [params.takeProfitPrice] *swap only* take profit trigger price
26213
26269
  * @returns {object} an [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
26214
26270
  */
26215
26271
  await this.loadMarkets();
@@ -28891,6 +28947,17 @@ class bitbank extends _abstract_bitbank_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
28891
28947
  return this.parseOrderBook(orderbook, market['symbol'], timestamp);
28892
28948
  }
28893
28949
  parseTrade(trade, market = undefined) {
28950
+ //
28951
+ // fetchTrades
28952
+ //
28953
+ // {
28954
+ // "transaction_id": "1143247037",
28955
+ // "side": "buy",
28956
+ // "price": "3836025",
28957
+ // "amount": "0.0005",
28958
+ // "executed_at": "1694249441593"
28959
+ // }
28960
+ //
28894
28961
  const timestamp = this.safeInteger(trade, 'executed_at');
28895
28962
  market = this.safeMarket(undefined, market);
28896
28963
  const priceString = this.safeString(trade, 'price');
@@ -31725,14 +31792,6 @@ class bitfinex extends _abstract_bitfinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
31725
31792
  // "type":"sell"
31726
31793
  // }
31727
31794
  //
31728
- // { "timestamp":1637258238,
31729
- // "tid":894452800,
31730
- // "price":"0.99958",
31731
- // "amount":"261.90514",
31732
- // "exchange":"bitfinex",
31733
- // "type":"buy"
31734
- // }
31735
- //
31736
31795
  // fetchMyTrades (private) v1
31737
31796
  //
31738
31797
  // {
@@ -31811,6 +31870,18 @@ class bitfinex extends _abstract_bitfinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
31811
31870
  request['timestamp'] = this.parseToInt(since / 1000);
31812
31871
  }
31813
31872
  const response = await this.publicGetTradesSymbol(this.extend(request, params));
31873
+ //
31874
+ // [
31875
+ // {
31876
+ // "timestamp": "1694284565",
31877
+ // "tid": "1415415034",
31878
+ // "price": "25862.0",
31879
+ // "amount": "0.00020685",
31880
+ // "exchange": "bitfinex",
31881
+ // "type": "buy"
31882
+ // },
31883
+ // ]
31884
+ //
31814
31885
  return this.parseTrades(response, market, since, limit);
31815
31886
  }
31816
31887
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -35803,7 +35874,7 @@ class bitflyer extends _abstract_bitflyer_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
35803
35874
  //
35804
35875
  // fetchTrades (public) v1
35805
35876
  //
35806
- // {
35877
+ // {
35807
35878
  // "id":2278466664,
35808
35879
  // "side":"SELL",
35809
35880
  // "price":56810.7,
@@ -35813,16 +35884,18 @@ class bitflyer extends _abstract_bitflyer_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
35813
35884
  // "sell_child_order_acceptance_id":"JRF20211119-114639-236919"
35814
35885
  // }
35815
35886
  //
35816
- // {
35817
- // "id":2278463423,
35818
- // "side":"BUY",
35819
- // "price":56757.83,
35820
- // "size":0.6003,"exec_date":"2021-11-19T11:28:00.523",
35821
- // "buy_child_order_acceptance_id":"JRF20211119-112800-236526",
35822
- // "sell_child_order_acceptance_id":"JRF20211119-112734-062017"
35823
- // }
35824
- //
35887
+ // fetchMyTrades
35825
35888
  //
35889
+ // {
35890
+ // "id": 37233,
35891
+ // "side": "BUY",
35892
+ // "price": 33470,
35893
+ // "size": 0.01,
35894
+ // "exec_date": "2015-07-07T09:57:40.397",
35895
+ // "child_order_id": "JOR20150707-060559-021935",
35896
+ // "child_order_acceptance_id": "JRF20150707-060559-396699"
35897
+ // "commission": 0,
35898
+ // },
35826
35899
  //
35827
35900
  let side = this.safeStringLower(trade, 'side');
35828
35901
  if (side !== undefined) {
@@ -35881,6 +35954,19 @@ class bitflyer extends _abstract_bitflyer_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
35881
35954
  request['count'] = limit;
35882
35955
  }
35883
35956
  const response = await this.publicGetGetexecutions(this.extend(request, params));
35957
+ //
35958
+ // [
35959
+ // {
35960
+ // "id": 39287,
35961
+ // "side": "BUY",
35962
+ // "price": 31690,
35963
+ // "size": 27.04,
35964
+ // "exec_date": "2015-07-08T02:43:34.823",
35965
+ // "buy_child_order_acceptance_id": "JRF20150707-200203-452209",
35966
+ // "sell_child_order_acceptance_id": "JRF20150708-024334-060234"
35967
+ // },
35968
+ // ]
35969
+ //
35884
35970
  return this.parseTrades(response, market, since, limit);
35885
35971
  }
35886
35972
  async fetchTradingFee(symbol, params = {}) {
@@ -36117,6 +36203,20 @@ class bitflyer extends _abstract_bitflyer_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
36117
36203
  request['count'] = limit;
36118
36204
  }
36119
36205
  const response = await this.privateGetGetexecutions(this.extend(request, params));
36206
+ //
36207
+ // [
36208
+ // {
36209
+ // "id": 37233,
36210
+ // "side": "BUY",
36211
+ // "price": 33470,
36212
+ // "size": 0.01,
36213
+ // "exec_date": "2015-07-07T09:57:40.397",
36214
+ // "child_order_id": "JOR20150707-060559-021935",
36215
+ // "child_order_acceptance_id": "JRF20150707-060559-396699"
36216
+ // "commission": 0,
36217
+ // },
36218
+ // ]
36219
+ //
36120
36220
  return this.parseTrades(response, market, since, limit);
36121
36221
  }
36122
36222
  async fetchPositions(symbols = undefined, params = {}) {
@@ -36649,14 +36749,6 @@ class bitforex extends _abstract_bitforex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
36649
36749
  // "tid":"1131019666"
36650
36750
  // }
36651
36751
  //
36652
- // {
36653
- // "price":57591.33,
36654
- // "amount":0.002,
36655
- // "time":1637329685322,
36656
- // "direction":1,
36657
- // "tid":"1131019639"
36658
- // }
36659
- //
36660
36752
  // fetchMyTrades (private)
36661
36753
  //
36662
36754
  // {
@@ -39384,7 +39476,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
39384
39476
  // "fillTime": "1692073691000"
39385
39477
  // }
39386
39478
  //
39387
- // swap
39479
+ // swap (public trades)
39388
39480
  //
39389
39481
  // {
39390
39482
  // "tradeId": "1075199767891652609",
@@ -39516,6 +39608,16 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
39516
39608
  params = this.omit(params, 'method');
39517
39609
  if (swapMethod === 'publicMixGetMarketFillsHistory') {
39518
39610
  response = await this.publicMixGetMarketFillsHistory(this.extend(request, params));
39611
+ //
39612
+ // {
39613
+ // "tradeId": "1084459062491590657",
39614
+ // "price": "25874",
39615
+ // "size": "1.624",
39616
+ // "side": "Buy",
39617
+ // "timestamp": "1694281109000",
39618
+ // "symbol": "BTCUSDT_UMCBL",
39619
+ // }
39620
+ //
39519
39621
  }
39520
39622
  else if (swapMethod === 'publicMixGetMarketFills') {
39521
39623
  response = await this.publicMixGetMarketFills(this.extend(request, params));
@@ -40216,12 +40318,12 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
40216
40318
  }
40217
40319
  else if (isStopLossOrTakeProfit) {
40218
40320
  if (isStopLoss) {
40219
- const stopLossTriggerPrice = this.safeValue2(stopLoss, 'triggerPrice', 'stopPrice');
40220
- request['presetStopLossPrice'] = this.priceToPrecision(symbol, stopLossTriggerPrice);
40321
+ const slTriggerPrice = this.safeValue2(stopLoss, 'triggerPrice', 'stopPrice');
40322
+ request['presetStopLossPrice'] = this.priceToPrecision(symbol, slTriggerPrice);
40221
40323
  }
40222
40324
  if (isTakeProfit) {
40223
- const takeProfitTriggerPrice = this.safeValue2(takeProfit, 'triggerPrice', 'stopPrice');
40224
- request['presetTakeProfitPrice'] = this.priceToPrecision(symbol, takeProfitTriggerPrice);
40325
+ const tpTriggerPrice = this.safeValue2(takeProfit, 'triggerPrice', 'stopPrice');
40326
+ request['presetTakeProfitPrice'] = this.priceToPrecision(symbol, tpTriggerPrice);
40225
40327
  }
40226
40328
  }
40227
40329
  }
@@ -43503,6 +43605,9 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
43503
43605
  'fetchDepositWithdrawFee': true,
43504
43606
  'fetchDepositWithdrawFees': false,
43505
43607
  'fetchFundingHistory': undefined,
43608
+ 'fetchFundingRate': true,
43609
+ 'fetchFundingRateHistory': false,
43610
+ 'fetchFundingRates': false,
43506
43611
  'fetchMarginMode': false,
43507
43612
  'fetchMarkets': true,
43508
43613
  'fetchMyTrades': true,
@@ -46696,6 +46801,72 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
46696
46801
  };
46697
46802
  return await this.privatePostContractPrivateSubmitLeverage(this.extend(request, params));
46698
46803
  }
46804
+ async fetchFundingRate(symbol, params = {}) {
46805
+ /**
46806
+ * @method
46807
+ * @name bitmart#fetchFundingRate
46808
+ * @description fetch the current funding rate
46809
+ * @see https://developer-pro.bitmart.com/en/futures/#get-current-funding-rate
46810
+ * @param {string} symbol unified market symbol
46811
+ * @param {object} [params] extra parameters specific to the bitmart api endpoint
46812
+ * @returns {object} a [funding rate structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#funding-rate-structure}
46813
+ */
46814
+ await this.loadMarkets();
46815
+ const market = this.market(symbol);
46816
+ if (!market['swap']) {
46817
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol(this.id + ' fetchFundingRate() supports swap contracts only');
46818
+ }
46819
+ const request = {
46820
+ 'symbol': market['id'],
46821
+ };
46822
+ const response = await this.publicGetContractPublicFundingRate(this.extend(request, params));
46823
+ //
46824
+ // {
46825
+ // "code": 1000,
46826
+ // "message": "Ok",
46827
+ // "data": {
46828
+ // "timestamp": 1695184410697,
46829
+ // "symbol": "BTCUSDT",
46830
+ // "rate_value": "-0.00002614",
46831
+ // "expected_rate": "-0.00002"
46832
+ // },
46833
+ // "trace": "4cad855074654097ac7ba5257c47305d.54.16951844206655589"
46834
+ // }
46835
+ //
46836
+ const data = this.safeValue(response, 'data', {});
46837
+ return this.parseFundingRate(data, market);
46838
+ }
46839
+ parseFundingRate(contract, market = undefined) {
46840
+ //
46841
+ // {
46842
+ // "timestamp": 1695184410697,
46843
+ // "symbol": "BTCUSDT",
46844
+ // "rate_value": "-0.00002614",
46845
+ // "expected_rate": "-0.00002"
46846
+ // }
46847
+ //
46848
+ const marketId = this.safeString(contract, 'symbol');
46849
+ const timestamp = this.safeInteger(contract, 'timestamp');
46850
+ return {
46851
+ 'info': contract,
46852
+ 'symbol': this.safeSymbol(marketId, market),
46853
+ 'markPrice': undefined,
46854
+ 'indexPrice': undefined,
46855
+ 'interestRate': undefined,
46856
+ 'estimatedSettlePrice': undefined,
46857
+ 'timestamp': timestamp,
46858
+ 'datetime': this.iso8601(timestamp),
46859
+ 'fundingRate': this.safeNumber(contract, 'expected_rate'),
46860
+ 'fundingTimestamp': undefined,
46861
+ 'fundingDatetime': undefined,
46862
+ 'nextFundingRate': undefined,
46863
+ 'nextFundingTimestamp': undefined,
46864
+ 'nextFundingDatetime': undefined,
46865
+ 'previousFundingRate': this.safeNumber(contract, 'rate_value'),
46866
+ 'previousFundingTimestamp': undefined,
46867
+ 'previousFundingDatetime': undefined,
46868
+ };
46869
+ }
46699
46870
  nonce() {
46700
46871
  return this.milliseconds();
46701
46872
  }
@@ -59359,6 +59530,17 @@ class bitstamp1 extends _abstract_bitstamp1_js__WEBPACK_IMPORTED_MODULE_0__/* ["
59359
59530
  return this.parseTicker(ticker, market);
59360
59531
  }
59361
59532
  parseTrade(trade, market = undefined) {
59533
+ //
59534
+ // public trade
59535
+ //
59536
+ // {
59537
+ // "amount": "0.00114000",
59538
+ // "date": "1694287856",
59539
+ // "price": "25865",
59540
+ // "tid": 298730788,
59541
+ // "type": 0
59542
+ // }
59543
+ //
59362
59544
  const timestamp = this.safeTimestamp2(trade, 'date', 'datetime');
59363
59545
  const side = (trade['type'] === 0) ? 'buy' : 'sell';
59364
59546
  const orderId = this.safeString(trade, 'order_id');
@@ -59403,6 +59585,17 @@ class bitstamp1 extends _abstract_bitstamp1_js__WEBPACK_IMPORTED_MODULE_0__/* ["
59403
59585
  'time': 'minute',
59404
59586
  };
59405
59587
  const response = await this.publicGetTransactions(this.extend(request, params));
59588
+ //
59589
+ // [
59590
+ // {
59591
+ // "amount": "0.00114000",
59592
+ // "date": "1694287856",
59593
+ // "price": "25865",
59594
+ // "tid": 298730788,
59595
+ // "type": 0
59596
+ // },
59597
+ // ]
59598
+ //
59406
59599
  return this.parseTrades(response, market, since, limit);
59407
59600
  }
59408
59601
  parseBalance(response) {
@@ -63746,1976 +63939,6 @@ class bitvavo extends _abstract_bitvavo_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
63746
63939
  }
63747
63940
 
63748
63941
 
63749
- /***/ }),
63750
-
63751
- /***/ 2574:
63752
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63753
-
63754
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
63755
- /* harmony export */ "Z": () => (/* binding */ bkex)
63756
- /* harmony export */ });
63757
- /* harmony import */ var _abstract_bkex_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5569);
63758
- /* harmony import */ var _base_errors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6689);
63759
- /* harmony import */ var _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9292);
63760
- /* harmony import */ var _static_dependencies_noble_hashes_sha256_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1372);
63761
- // ---------------------------------------------------------------------------
63762
-
63763
-
63764
-
63765
-
63766
- // ---------------------------------------------------------------------------
63767
- /**
63768
- * @class bkex
63769
- * @extends Exchange
63770
- */
63771
- class bkex extends _abstract_bkex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
63772
- describe() {
63773
- return this.deepExtend(super.describe(), {
63774
- 'id': 'bkex',
63775
- 'name': 'BKEX',
63776
- 'countries': ['BVI'],
63777
- 'rateLimit': 100,
63778
- 'version': 'v2',
63779
- 'certified': false,
63780
- 'has': {
63781
- 'CORS': undefined,
63782
- 'spot': true,
63783
- 'margin': undefined,
63784
- 'swap': true,
63785
- 'future': undefined,
63786
- 'option': undefined,
63787
- 'addMargin': undefined,
63788
- 'cancelAllOrders': undefined,
63789
- 'cancelOrder': true,
63790
- 'cancelOrders': true,
63791
- 'createDepositAddress': undefined,
63792
- 'createLimitOrder': undefined,
63793
- 'createMarketOrder': undefined,
63794
- 'createOrder': true,
63795
- 'editOrder': undefined,
63796
- 'fetchAccounts': undefined,
63797
- 'fetchBalance': true,
63798
- 'fetchBidsAsks': undefined,
63799
- 'fetchBorrowRate': undefined,
63800
- 'fetchBorrowRateHistory': undefined,
63801
- 'fetchBorrowRates': undefined,
63802
- 'fetchBorrowRatesPerSymbol': undefined,
63803
- 'fetchCanceledOrders': undefined,
63804
- 'fetchClosedOrder': undefined,
63805
- 'fetchClosedOrders': true,
63806
- 'fetchCurrencies': true,
63807
- 'fetchDeposit': false,
63808
- 'fetchDepositAddress': true,
63809
- 'fetchDepositAddresses': undefined,
63810
- 'fetchDepositAddressesByNetwork': undefined,
63811
- 'fetchDeposits': true,
63812
- 'fetchDepositWithdrawFee': 'emulated',
63813
- 'fetchDepositWithdrawFees': true,
63814
- 'fetchFundingHistory': undefined,
63815
- 'fetchFundingRate': undefined,
63816
- 'fetchFundingRateHistory': true,
63817
- 'fetchFundingRates': undefined,
63818
- 'fetchIndexOHLCV': undefined,
63819
- 'fetchL2OrderBook': undefined,
63820
- 'fetchLedger': undefined,
63821
- 'fetchLedgerEntry': undefined,
63822
- 'fetchLeverageTiers': undefined,
63823
- 'fetchMarginMode': false,
63824
- 'fetchMarketLeverageTiers': true,
63825
- 'fetchMarkets': true,
63826
- 'fetchMarkOHLCV': undefined,
63827
- 'fetchMyTrades': undefined,
63828
- 'fetchOHLCV': true,
63829
- 'fetchOpenOrder': true,
63830
- 'fetchOpenOrders': true,
63831
- 'fetchOrder': false,
63832
- 'fetchOrderBook': true,
63833
- 'fetchOrderBooks': undefined,
63834
- 'fetchOrders': undefined,
63835
- 'fetchOrderTrades': undefined,
63836
- 'fetchPosition': undefined,
63837
- 'fetchPositionMode': false,
63838
- 'fetchPositions': undefined,
63839
- 'fetchPositionsRisk': undefined,
63840
- 'fetchPremiumIndexOHLCV': undefined,
63841
- 'fetchStatus': true,
63842
- 'fetchTicker': true,
63843
- 'fetchTickers': true,
63844
- 'fetchTime': true,
63845
- 'fetchTrades': true,
63846
- 'fetchTradingFee': false,
63847
- 'fetchTradingFees': false,
63848
- 'fetchTradingLimits': undefined,
63849
- 'fetchTransactionFee': 'emulated',
63850
- 'fetchTransactionFees': true,
63851
- 'fetchTransactions': undefined,
63852
- 'fetchTransfer': false,
63853
- 'fetchTransfers': false,
63854
- 'fetchWithdrawal': false,
63855
- 'fetchWithdrawals': true,
63856
- 'reduceMargin': undefined,
63857
- 'setLeverage': undefined,
63858
- 'setMarginMode': undefined,
63859
- 'setPositionMode': undefined,
63860
- 'signIn': undefined,
63861
- 'transfer': false,
63862
- 'withdraw': false,
63863
- },
63864
- 'timeframes': {
63865
- '1m': '1m',
63866
- '5m': '5m',
63867
- '15m': '15m',
63868
- '30m': '30m',
63869
- '1h': '1h',
63870
- '4h': '4h',
63871
- '6h': '6h',
63872
- '12h': '12h',
63873
- '1d': '1d',
63874
- '1w': '1w',
63875
- },
63876
- 'urls': {
63877
- 'logo': 'https://user-images.githubusercontent.com/1294454/158043180-bb079a65-69e8-45a2-b393-f094d334e610.jpg',
63878
- 'api': {
63879
- 'spot': 'https://api.bkex.com',
63880
- 'swap': 'https://fapi.bkex.com',
63881
- },
63882
- 'www': 'https://www.bkex.com/',
63883
- 'doc': [
63884
- 'https://bkexapi.github.io/docs/api_en.htm',
63885
- ],
63886
- 'fees': [
63887
- 'https://www.bkex.com/help/instruction/33',
63888
- ],
63889
- },
63890
- 'api': {
63891
- 'public': {
63892
- 'spot': {
63893
- 'get': {
63894
- '/common/symbols': 1,
63895
- '/common/currencys': 1,
63896
- '/common/timestamp': 1,
63897
- '/q/kline': 1,
63898
- '/q/tickers': 1,
63899
- '/q/ticker/price': 1,
63900
- '/q/depth': 1,
63901
- '/q/deals': 1,
63902
- },
63903
- },
63904
- 'swap': {
63905
- 'get': {
63906
- '/market/candle': 1,
63907
- '/market/deals': 1,
63908
- '/market/depth': 1,
63909
- '/market/fundingRate': 1,
63910
- '/market/index': 1,
63911
- '/market/riskLimit': 1,
63912
- '/market/symbols': 1,
63913
- '/market/ticker/price': 1,
63914
- '/market/tickers': 1,
63915
- '/server/ping': 1,
63916
- },
63917
- },
63918
- },
63919
- 'private': {
63920
- 'spot': {
63921
- 'get': {
63922
- '/u/api/info': 1,
63923
- '/u/account/balance': 1,
63924
- '/u/wallet/address': 1,
63925
- '/u/wallet/depositRecord': 1,
63926
- '/u/wallet/withdrawRecord': 1,
63927
- '/u/order/openOrders': 1,
63928
- '/u/order/openOrder/detail': 1,
63929
- '/u/order/historyOrders': 1,
63930
- },
63931
- 'post': {
63932
- '/u/account/transfer': 1,
63933
- '/u/wallet/withdraw': 1,
63934
- '/u/order/create': 1,
63935
- '/u/order/cancel': 1,
63936
- '/u/order/batchCreate': 1,
63937
- '/u/order/batchCancel': 1,
63938
- },
63939
- },
63940
- 'swap': {
63941
- 'get': {
63942
- '/account/balance': 1,
63943
- '/account/balanceRecord': 1,
63944
- '/account/order': 1,
63945
- '/account/orderForced': 1,
63946
- '/account/position': 1,
63947
- '/entrust/finished': 1,
63948
- '/entrust/unFinish': 1,
63949
- '/order/finished': 1,
63950
- '/order/finishedInfo': 1,
63951
- '/order/unFinish': 1,
63952
- '/position/info': 1,
63953
- },
63954
- 'post': {
63955
- '/account/setLeverage': 1,
63956
- '/entrust/add': 1,
63957
- '/entrust/cancel': 1,
63958
- '/order/batchCancel': 1,
63959
- '/order/batchOpen': 1,
63960
- '/order/cancel': 1,
63961
- '/order/close': 1,
63962
- '/order/closeAll': 1,
63963
- '/order/open': 1,
63964
- '/position/setSpSl': 1,
63965
- '/position/update': 1,
63966
- },
63967
- },
63968
- },
63969
- },
63970
- 'fees': {
63971
- 'trading': {
63972
- 'tierBased': false,
63973
- 'percentage': true,
63974
- 'maker': this.parseNumber('0.0015'),
63975
- 'taker': this.parseNumber('0.002'),
63976
- },
63977
- },
63978
- 'options': {
63979
- 'timeframes': {
63980
- 'spot': {
63981
- '1m': '1m',
63982
- '5m': '5m',
63983
- '15m': '15m',
63984
- '30m': '30m',
63985
- '1h': '1h',
63986
- '4h': '4h',
63987
- '6h': '6h',
63988
- '12h': '12h',
63989
- '1d': '1d',
63990
- '1w': '1w',
63991
- },
63992
- 'swap': {
63993
- '1m': 'M1',
63994
- '5m': 'M5',
63995
- '15m': 'M15',
63996
- '30m': 'M30',
63997
- '1h': 'H1',
63998
- '4h': 'H4',
63999
- '6h': 'H6',
64000
- '1d': 'D1',
64001
- },
64002
- },
64003
- 'defaultType': 'spot',
64004
- 'networks': {
64005
- 'TRX': 'TRC-20',
64006
- 'TRC20': 'TRC-20',
64007
- 'ETH': 'ERC-20',
64008
- 'ERC20': 'ERC-20',
64009
- 'BEP20': 'BEP-20(BSC)',
64010
- },
64011
- },
64012
- 'commonCurrencies': {
64013
- 'SHINJA': 'SHINJA(1M)',
64014
- },
64015
- 'precisionMode': _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__/* .TICK_SIZE */ .sh,
64016
- 'exceptions': {
64017
- 'exact': {
64018
- '1005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
64019
- },
64020
- 'broad': {
64021
- 'Not Enough balance': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
64022
- 'Order does not exist': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
64023
- 'System busy, please try again later': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
64024
- 'System busy. Please try again later': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeNotAvailable, // as seen https://app.travis-ci.com/github/ccxt/ccxt/builds/265039537#L2152
64025
- },
64026
- },
64027
- });
64028
- }
64029
- async fetchMarkets(params = {}) {
64030
- /**
64031
- * @method
64032
- * @name bkex#fetchMarkets
64033
- * @description retrieves data on all markets for bkex
64034
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#basicInformation-1
64035
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#contract-market-symbols
64036
- * @param {object} [params] extra parameters specific to the exchange api endpoint
64037
- * @returns {object[]} an array of objects representing market data
64038
- */
64039
- let promises = [
64040
- this.publicSpotGetCommonSymbols(params),
64041
- this.publicSwapGetMarketSymbols(params),
64042
- ];
64043
- promises = await Promise.all(promises);
64044
- const spotMarkets = promises[0];
64045
- //
64046
- // {
64047
- // "code": "0",
64048
- // "data": [
64049
- // {
64050
- // "minimumOrderSize": "0",
64051
- // "minimumTradeVolume": "0E-18",
64052
- // "pricePrecision": "11",
64053
- // "supportTrade": true,
64054
- // "symbol": "COMT_USDT",
64055
- // "volumePrecision": 0
64056
- // },
64057
- // ],
64058
- // "msg": "success",
64059
- // "status": 0
64060
- // }
64061
- //
64062
- const swapMarkets = promises[1];
64063
- //
64064
- // {
64065
- // "code": 0,
64066
- // "msg": "success",
64067
- // "data": [
64068
- // {
64069
- // "symbol": "luna_usdt",
64070
- // "supportTrade": false,
64071
- // "volumePrecision": 0,
64072
- // "pricePrecision": 3,
64073
- // "marketMiniAmount": "1",
64074
- // "limitMiniAmount": "1"
64075
- // },
64076
- // ]
64077
- // }
64078
- //
64079
- const spotData = this.safeValue(spotMarkets, 'data', []);
64080
- const swapData = this.safeValue(swapMarkets, 'data', []);
64081
- const data = this.arrayConcat(spotData, swapData);
64082
- const result = [];
64083
- for (let i = 0; i < data.length; i++) {
64084
- const market = data[i];
64085
- const marketId = this.safeString(market, 'symbol');
64086
- const id = this.safeStringUpper(market, 'symbol');
64087
- const [baseId, quoteId] = id.split('_');
64088
- const base = this.safeCurrencyCode(baseId);
64089
- const quote = this.safeCurrencyCode(quoteId);
64090
- const minimumOrderSize = this.safeString(market, 'minimumOrderSize');
64091
- const type = (minimumOrderSize !== undefined) ? 'spot' : 'swap';
64092
- const swap = (type === 'swap');
64093
- let symbol = base + '/' + quote;
64094
- let settleId = undefined;
64095
- let settle = undefined;
64096
- if (swap) {
64097
- settleId = quoteId;
64098
- settle = quote;
64099
- symbol = base + '/' + quote + ':' + settle;
64100
- }
64101
- const linear = swap ? true : undefined;
64102
- result.push({
64103
- 'id': marketId,
64104
- 'symbol': symbol,
64105
- 'base': base,
64106
- 'quote': quote,
64107
- 'settle': settle,
64108
- 'baseId': baseId,
64109
- 'quoteId': quoteId,
64110
- 'settleId': settleId,
64111
- 'type': type,
64112
- 'spot': (type === 'spot'),
64113
- 'margin': false,
64114
- 'future': false,
64115
- 'swap': swap,
64116
- 'option': false,
64117
- 'active': this.safeValue(market, 'supportTrade'),
64118
- 'contract': swap,
64119
- 'linear': linear,
64120
- 'inverse': undefined,
64121
- 'contractSize': undefined,
64122
- 'expiry': undefined,
64123
- 'expiryDatetime': undefined,
64124
- 'strike': undefined,
64125
- 'optionType': undefined,
64126
- 'precision': {
64127
- 'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'volumePrecision'))),
64128
- 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'pricePrecision'))),
64129
- },
64130
- 'limits': {
64131
- 'leverage': {
64132
- 'min': undefined,
64133
- 'max': undefined,
64134
- },
64135
- 'amount': {
64136
- 'min': this.safeNumberN(market, ['minimumOrderSize', 'marketMiniAmount', 'limitMiniAmount']),
64137
- 'max': undefined,
64138
- },
64139
- 'price': {
64140
- 'min': undefined,
64141
- 'max': undefined,
64142
- },
64143
- 'cost': {
64144
- 'min': this.safeNumber(market, 'minimumTradeVolume'),
64145
- 'max': undefined,
64146
- },
64147
- },
64148
- 'info': market,
64149
- });
64150
- }
64151
- return result;
64152
- }
64153
- async fetchCurrencies(params = {}) {
64154
- /**
64155
- * @method
64156
- * @name bkex#fetchCurrencies
64157
- * @description fetches all available currencies on an exchange
64158
- * @param {object} [params] extra parameters specific to the bkex api endpoint
64159
- * @returns {object} an associative dictionary of currencies
64160
- */
64161
- const response = await this.publicSpotGetCommonCurrencys(params);
64162
- //
64163
- // {
64164
- // "code": "0",
64165
- // "data": [
64166
- // {
64167
- // "currency": "ETH",
64168
- // "maxWithdrawOneDay": "100.000000000000000000",
64169
- // "maxWithdrawSingle": "50.000000000000000000",
64170
- // "minWithdrawSingle": "0.005000000000000000",
64171
- // "supportDeposit": true,
64172
- // "supportTrade": true,
64173
- // "supportWithdraw": true,
64174
- // "withdrawFee": 0.01
64175
- // },
64176
- // ],
64177
- // "msg": "success",
64178
- // "status": 0
64179
- // }
64180
- //
64181
- const data = this.safeValue(response, 'data', []);
64182
- const result = {};
64183
- for (let i = 0; i < data.length; i++) {
64184
- const currency = data[i];
64185
- const id = this.safeString(currency, 'currency');
64186
- const code = this.safeCurrencyCode(id);
64187
- const name = this.safeString(currency, 'name');
64188
- const withdrawEnabled = this.safeValue(currency, 'supportWithdraw');
64189
- const depositEnabled = this.safeValue(currency, 'supportDeposit');
64190
- const tradeEnabled = this.safeValue(currency, 'supportTrade');
64191
- const active = withdrawEnabled && depositEnabled && tradeEnabled;
64192
- result[code] = {
64193
- 'id': id,
64194
- 'code': code,
64195
- 'name': name,
64196
- 'deposit': depositEnabled,
64197
- 'withdraw': withdrawEnabled,
64198
- 'active': active,
64199
- 'fee': this.safeNumber(currency, 'withdrawFee'),
64200
- 'precision': undefined,
64201
- 'limits': {
64202
- 'amount': { 'min': undefined, 'max': undefined },
64203
- 'price': { 'min': undefined, 'max': undefined },
64204
- 'cost': { 'min': undefined, 'max': undefined },
64205
- 'withdraw': { 'min': this.safeNumber(currency, 'minWithdrawSingle'), 'max': this.safeNumber(currency, 'maxWithdrawSingle') },
64206
- },
64207
- 'info': currency,
64208
- };
64209
- }
64210
- return result;
64211
- }
64212
- async fetchTime(params = {}) {
64213
- /**
64214
- * @method
64215
- * @name bkex#fetchTime
64216
- * @description fetches the current integer timestamp in milliseconds from the exchange server
64217
- * @param {object} [params] extra parameters specific to the bkex api endpoint
64218
- * @returns {int} the current integer timestamp in milliseconds from the exchange server
64219
- */
64220
- const response = await this.publicSpotGetCommonTimestamp(params);
64221
- //
64222
- // {
64223
- // "code": '0',
64224
- // "data": 1573542445411,
64225
- // "msg": "success",
64226
- // "status": 0
64227
- // }
64228
- //
64229
- return this.safeInteger(response, 'data');
64230
- }
64231
- async fetchStatus(params = {}) {
64232
- /**
64233
- * @method
64234
- * @name bkex#fetchStatus
64235
- * @description the latest known information on the availability of the exchange API
64236
- * @param {object} [params] extra parameters specific to the bkex api endpoint
64237
- * @returns {object} a [status structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#exchange-status-structure}
64238
- */
64239
- const response = await this.publicSpotGetCommonTimestamp(params);
64240
- //
64241
- // {
64242
- // "code": '0',
64243
- // "data": 1573542445411,
64244
- // "msg": "success",
64245
- // "status": 0
64246
- // }
64247
- //
64248
- const statusRaw = this.safeInteger(response, 'status');
64249
- const codeRaw = this.safeInteger(response, 'code');
64250
- const updated = this.safeInteger(response, 'data');
64251
- return {
64252
- 'status': (statusRaw === 0 && codeRaw === 0) ? 'ok' : statusRaw,
64253
- 'updated': updated,
64254
- 'eta': undefined,
64255
- 'url': undefined,
64256
- 'info': response,
64257
- };
64258
- }
64259
- async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
64260
- /**
64261
- * @method
64262
- * @name bkex#fetchOHLCV
64263
- * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
64264
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#quotationData-1
64265
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#contract-kline
64266
- * @param {string} symbol unified symbol of the market to fetch OHLCV data for
64267
- * @param {string} timeframe the length of time each candle represents
64268
- * @param {int} [since] timestamp in ms of the earliest candle to fetch
64269
- * @param {int} [limit] the maximum amount of candles to fetch
64270
- * @param {object} [params] extra parameters specific to the bkex api endpoint
64271
- * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
64272
- */
64273
- await this.loadMarkets();
64274
- const market = this.market(symbol);
64275
- const swap = market['swap'];
64276
- const request = {
64277
- 'symbol': market['id'],
64278
- };
64279
- let method = 'publicSpotGetQKline';
64280
- const timeframes = this.safeValue(this.options, 'timeframes');
64281
- if (swap) {
64282
- const swapTimeframes = this.safeValue(timeframes, 'swap');
64283
- method = 'publicSwapGetMarketCandle';
64284
- request['period'] = this.safeString(swapTimeframes, timeframe, timeframe);
64285
- if (limit !== undefined) {
64286
- request['count'] = limit;
64287
- }
64288
- }
64289
- else {
64290
- const spotTimeframes = this.safeValue(timeframes, 'spot');
64291
- request['symbol'] = market['id'];
64292
- request['period'] = this.safeString(spotTimeframes, timeframe, timeframe);
64293
- }
64294
- if (limit !== undefined) {
64295
- const limitRequest = swap ? 'count' : 'size';
64296
- request[limitRequest] = limit;
64297
- }
64298
- // their docs says that 'from/to' arguments are mandatory, however that's not true in reality
64299
- if (since !== undefined) {
64300
- const sinceRequest = swap ? 'start' : 'from';
64301
- request[sinceRequest] = since;
64302
- // when 'since' [from] argument is set, then exchange also requires 'to' value to be set. So we have to set 'to' argument depending 'limit' amount (if limit was not provided, then exchange-default 500).
64303
- if (limit === undefined) {
64304
- limit = 500;
64305
- }
64306
- const duration = this.parseTimeframe(timeframe);
64307
- const timerange = limit * duration * 1000;
64308
- const toRequest = swap ? 'end' : 'to';
64309
- request[toRequest] = this.sum(request[sinceRequest], timerange);
64310
- }
64311
- const response = await this[method](request);
64312
- //
64313
- // spot
64314
- //
64315
- // {
64316
- // "code": "0",
64317
- // "data": [
64318
- // {
64319
- // "close": "43414.68",
64320
- // "high": "43446.47",
64321
- // "low": "43403.05",
64322
- // "open": "43406.05",
64323
- // "quoteVolume": "61500.40099",
64324
- // "symbol": "BTC_USDT",
64325
- // "ts": "1646152440000",
64326
- // "volume": 1.41627
64327
- // },
64328
- // ],
64329
- // "msg": "success",
64330
- // "status": 0
64331
- // }
64332
- //
64333
- // swap
64334
- //
64335
- // {
64336
- // "code": 0,
64337
- // "msg": "success",
64338
- // "data": [
64339
- // {
64340
- // "symbol": "btc_usdt",
64341
- // "amount": "10.26",
64342
- // "volume": "172540.9433",
64343
- // "open": "16817.29",
64344
- // "close": "1670476440000",
64345
- // "high": "16816.45",
64346
- // "low": "16817.29",
64347
- // "ts": 1670476440000
64348
- // },
64349
- // ]
64350
- // }
64351
- //
64352
- const data = this.safeValue(response, 'data', []);
64353
- return this.parseOHLCVs(data, market, timeframe, since, limit);
64354
- }
64355
- parseOHLCV(ohlcv, market = undefined) {
64356
- const baseCurrencyVolume = market['swap'] ? 'amount' : 'volume';
64357
- return [
64358
- this.safeInteger(ohlcv, 'ts'),
64359
- this.safeFloat(ohlcv, 'open'),
64360
- this.safeFloat(ohlcv, 'high'),
64361
- this.safeFloat(ohlcv, 'low'),
64362
- this.safeFloat(ohlcv, 'close'),
64363
- this.safeFloat(ohlcv, baseCurrencyVolume),
64364
- ];
64365
- }
64366
- async fetchTicker(symbol, params = {}) {
64367
- /**
64368
- * @method
64369
- * @name bkex#fetchTicker
64370
- * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
64371
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#quotationData-2
64372
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#contract-ticker-data
64373
- * @param {string} symbol unified symbol of the market to fetch the ticker for
64374
- * @param {object} [params] extra parameters specific to the bkex api endpoint
64375
- * @returns {object} a [ticker structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
64376
- */
64377
- await this.loadMarkets();
64378
- const market = this.market(symbol);
64379
- const request = {
64380
- 'symbol': market['id'],
64381
- };
64382
- const [marketType, query] = this.handleMarketTypeAndParams('fetchTicker', market, params);
64383
- const method = (marketType === 'swap') ? 'publicSwapGetMarketTickers' : 'publicSpotGetQTickers';
64384
- const response = await this[method](this.extend(request, query));
64385
- //
64386
- // spot
64387
- //
64388
- // {
64389
- // "code": "0",
64390
- // "data": [
64391
- // {
64392
- // "change": "6.52",
64393
- // "close": "43573.470000",
64394
- // "high": "44940.540000",
64395
- // "low": "40799.840000",
64396
- // "open": "40905.780000",
64397
- // "quoteVolume": "225621691.5991",
64398
- // "symbol": "BTC_USDT",
64399
- // "ts": "1646156490781",
64400
- // "volume": 5210.349
64401
- // }
64402
- // ],
64403
- // "msg": "success",
64404
- // "status": 0
64405
- // }
64406
- //
64407
- // swap
64408
- //
64409
- // {
64410
- // "code": 0,
64411
- // "msg": "success",
64412
- // "data": [
64413
- // {
64414
- // "symbol": "btc_usdt",
64415
- // "amount": "171035.45",
64416
- // "volume": "2934757466.3859",
64417
- // "open": "17111.43",
64418
- // "close": "17135.74",
64419
- // "high": "17225.99",
64420
- // "low": "17105.77",
64421
- // "lastPrice": "17135.74",
64422
- // "lastAmount": "1.05",
64423
- // "lastTime": 1670709364912,
64424
- // "change": "0.14"
64425
- // }
64426
- // ]
64427
- // }
64428
- //
64429
- const tickers = this.safeValue(response, 'data', []);
64430
- const ticker = this.safeValue(tickers, 0);
64431
- return this.parseTicker(ticker, market);
64432
- }
64433
- async fetchTickers(symbols = undefined, params = {}) {
64434
- /**
64435
- * @method
64436
- * @name bkex#fetchTickers
64437
- * @description fetches price tickers for multiple markets, statistical calculations with the information calculated over the past 24 hours each market
64438
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#quotationData-2
64439
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#contract-ticker-data
64440
- * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
64441
- * @param {object} [params] extra parameters specific to the bkex api endpoint
64442
- * @returns {object} a dictionary of [ticker structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
64443
- */
64444
- await this.loadMarkets();
64445
- const request = {};
64446
- if (symbols !== undefined) {
64447
- if (!Array.isArray(symbols)) {
64448
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest(this.id + ' fetchTickers() symbols argument should be an array');
64449
- }
64450
- }
64451
- let market = undefined;
64452
- if (symbols !== undefined) {
64453
- const marketIds = this.marketIds(symbols);
64454
- const symbol = this.safeString(symbols, 0);
64455
- market = this.market(symbol);
64456
- if (market['swap']) {
64457
- if (Array.isArray(symbols)) {
64458
- const symbolsLength = symbols.length;
64459
- if (symbolsLength > 1) {
64460
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest(this.id + ' fetchTickers() symbols argument cannot contain more than 1 symbol for swap markets');
64461
- }
64462
- }
64463
- request['symbol'] = market['id'];
64464
- }
64465
- else {
64466
- request['symbol'] = marketIds.join(',');
64467
- }
64468
- }
64469
- const [marketType, query] = this.handleMarketTypeAndParams('fetchTickers', market, params);
64470
- const method = (marketType === 'swap') ? 'publicSwapGetMarketTickers' : 'publicSpotGetQTickers';
64471
- const response = await this[method](this.extend(request, query));
64472
- //
64473
- // spot
64474
- //
64475
- // {
64476
- // "code": "0",
64477
- // "data": [
64478
- // {
64479
- // "change": "6.52",
64480
- // "close": "43573.470000",
64481
- // "high": "44940.540000",
64482
- // "low": "40799.840000",
64483
- // "open": "40905.780000",
64484
- // "quoteVolume": "225621691.5991",
64485
- // "symbol": "BTC_USDT",
64486
- // "ts": "1646156490781",
64487
- // "volume": 5210.349
64488
- // }
64489
- // ],
64490
- // "msg": "success",
64491
- // "status": 0
64492
- // }
64493
- //
64494
- // swap
64495
- //
64496
- // {
64497
- // "code": 0,
64498
- // "msg": "success",
64499
- // "data": [
64500
- // {
64501
- // "symbol": "btc_usdt",
64502
- // "amount": "171035.45",
64503
- // "volume": "2934757466.3859",
64504
- // "open": "17111.43",
64505
- // "close": "17135.74",
64506
- // "high": "17225.99",
64507
- // "low": "17105.77",
64508
- // "lastPrice": "17135.74",
64509
- // "lastAmount": "1.05",
64510
- // "lastTime": 1670709364912,
64511
- // "change": "0.14"
64512
- // }
64513
- // ]
64514
- // }
64515
- //
64516
- const tickers = this.safeValue(response, 'data', []);
64517
- return this.parseTickers(tickers, symbols, query);
64518
- }
64519
- parseTicker(ticker, market = undefined) {
64520
- //
64521
- // spot
64522
- //
64523
- // {
64524
- // "change":-0.46,
64525
- // "close":29664.46,
64526
- // "high":30784.99,
64527
- // "low":29455.36,
64528
- // "open":29803.38,
64529
- // "quoteVolume":714653752.6991,
64530
- // "symbol":"BTC_USDT",
64531
- // "ts":1652812048118,
64532
- // "volume":23684.9416
64533
- // }
64534
- //
64535
- // swap
64536
- //
64537
- // {
64538
- // "symbol": "btc_usdt",
64539
- // "amount": "171035.45",
64540
- // "volume": "2934757466.3859",
64541
- // "open": "17111.43",
64542
- // "close": "17135.74",
64543
- // "high": "17225.99",
64544
- // "low": "17105.77",
64545
- // "lastPrice": "17135.74",
64546
- // "lastAmount": "1.05",
64547
- // "lastTime": 1670709364912,
64548
- // "change": "0.14"
64549
- // }
64550
- //
64551
- const marketId = this.safeString(ticker, 'symbol');
64552
- market = this.safeMarket(marketId, market);
64553
- const symbol = this.safeSymbol(marketId, market);
64554
- const timestamp = this.safeInteger2(ticker, 'ts', 'lastTime');
64555
- const baseCurrencyVolume = market['swap'] ? 'amount' : 'volume';
64556
- const quoteCurrencyVolume = market['swap'] ? 'volume' : 'quoteVolume';
64557
- const lastPrice = market['swap'] ? 'lastPrice' : 'close';
64558
- return this.safeTicker({
64559
- 'symbol': symbol,
64560
- 'timestamp': timestamp,
64561
- 'datetime': this.iso8601(timestamp),
64562
- 'high': this.safeString(ticker, 'high'),
64563
- 'low': this.safeString(ticker, 'low'),
64564
- 'bid': undefined,
64565
- 'bidVolume': undefined,
64566
- 'ask': undefined,
64567
- 'askVolume': undefined,
64568
- 'vwap': undefined,
64569
- 'open': this.safeString(ticker, 'open'),
64570
- 'close': this.safeString(ticker, 'close'),
64571
- 'last': this.safeString(ticker, lastPrice),
64572
- 'previousClose': undefined,
64573
- 'change': undefined,
64574
- 'percentage': this.safeString(ticker, 'change'),
64575
- 'average': undefined,
64576
- 'baseVolume': this.safeString(ticker, baseCurrencyVolume),
64577
- 'quoteVolume': this.safeString(ticker, quoteCurrencyVolume),
64578
- 'info': ticker,
64579
- }, market);
64580
- }
64581
- async fetchOrderBook(symbol, limit = undefined, params = {}) {
64582
- /**
64583
- * @method
64584
- * @name bkex#fetchOrderBook
64585
- * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
64586
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#quotationData-4
64587
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#contract-deep-data
64588
- * @param {string} symbol unified symbol of the market to fetch the order book for
64589
- * @param {int} [limit] the maximum amount of order book entries to return
64590
- * @param {object} [params] extra parameters specific to the bkex api endpoint
64591
- * @returns {object} A dictionary of [order book structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-book-structure} indexed by market symbols
64592
- */
64593
- await this.loadMarkets();
64594
- const market = this.market(symbol);
64595
- const swap = market['swap'];
64596
- const request = {
64597
- 'symbol': market['id'],
64598
- };
64599
- let method = 'publicSpotGetQDepth';
64600
- if (swap) {
64601
- method = 'publicSwapGetMarketDepth';
64602
- }
64603
- else {
64604
- if (limit !== undefined) {
64605
- request['depth'] = Math.min(limit, 50);
64606
- }
64607
- }
64608
- const response = await this[method](this.extend(request, params));
64609
- //
64610
- // spot
64611
- //
64612
- // {
64613
- // "code": "0",
64614
- // "data": {
64615
- // "ask": [
64616
- // ["43820.07","0.86947"],
64617
- // ["43820.25","0.07503"],
64618
- // ],
64619
- // "bid": [
64620
- // ["43815.94","0.43743"],
64621
- // ["43815.72","0.08901"],
64622
- // ],
64623
- // "symbol": "BTC_USDT",
64624
- // "timestamp": 1646161595841
64625
- // },
64626
- // "msg": "success",
64627
- // "status": 0
64628
- // }
64629
- //
64630
- // swap
64631
- //
64632
- // {
64633
- // "code": 0,
64634
- // "msg": "success",
64635
- // "data": {
64636
- // "bid": [
64637
- // ["16803.170000","4.96"],
64638
- // ["16803.140000","11.07"],
64639
- // ],
64640
- // "ask": [
64641
- // ["16803.690000","9.2"],
64642
- // ["16804.180000","9.43"],
64643
- // ]
64644
- // }
64645
- // }
64646
- //
64647
- const data = this.safeValue(response, 'data');
64648
- const timestamp = this.safeInteger(data, 'timestamp');
64649
- return this.parseOrderBook(data, market['symbol'], timestamp, 'bid', 'ask');
64650
- }
64651
- async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
64652
- /**
64653
- * @method
64654
- * @name bkex#fetchTrades
64655
- * @description get the list of most recent trades for a particular symbol
64656
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#quotationData-5
64657
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#contract-trades-history
64658
- * @param {string} symbol unified symbol of the market to fetch trades for
64659
- * @param {int} [since] timestamp in ms of the earliest trade to fetch
64660
- * @param {int} [limit] the maximum amount of trades to fetch
64661
- * @param {object} [params] extra parameters specific to the bkex api endpoint
64662
- * @returns {Trade[]} a list of [trade structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#public-trades}
64663
- */
64664
- await this.loadMarkets();
64665
- const market = this.market(symbol);
64666
- const swap = market['swap'];
64667
- const request = {
64668
- 'symbol': market['id'],
64669
- };
64670
- let method = 'publicSpotGetQDeals';
64671
- if (swap) {
64672
- method = 'publicSwapGetMarketDeals';
64673
- }
64674
- else {
64675
- if (limit !== undefined) {
64676
- request['size'] = Math.min(limit, 50);
64677
- }
64678
- }
64679
- const response = await this[method](this.extend(request, params));
64680
- //
64681
- // spot
64682
- //
64683
- // {
64684
- // "code": "0",
64685
- // "data": [
64686
- // {
64687
- // "direction": "S",
64688
- // "price": "43930.63",
64689
- // "symbol": "BTC_USDT",
64690
- // "ts": "1646224171992",
64691
- // "volume": 0.030653
64692
- // }, // first item is most recent
64693
- // ],
64694
- // "msg": "success",
64695
- // "status": 0
64696
- // }
64697
- //
64698
- // swap
64699
- //
64700
- // {
64701
- // "code": 0,
64702
- // "msg": "success",
64703
- // "data": [
64704
- // {
64705
- // "symbol": "btc_usdt",
64706
- // "amount": "0.06",
64707
- // "price": "17134.66",
64708
- // "side": "sell",
64709
- // "time": 1670651851646
64710
- // },
64711
- // ]
64712
- // }
64713
- //
64714
- const trades = this.safeValue(response, 'data');
64715
- return this.parseTrades(trades, market, since, limit);
64716
- }
64717
- parseTrade(trade, market = undefined) {
64718
- const timestamp = this.safeInteger2(trade, 'ts', 'time');
64719
- const marketId = this.safeString(trade, 'symbol');
64720
- market = this.safeMarket(marketId, market);
64721
- const side = this.parseTradeSide(this.safeString2(trade, 'direction', 'side'));
64722
- const amount = this.safeNumber2(trade, 'volume', 'amount');
64723
- const price = this.safeNumber(trade, 'price');
64724
- const type = undefined;
64725
- let id = this.safeString(trade, 'tid');
64726
- if (id === undefined) {
64727
- id = this.syntheticTradeId(market, timestamp, side, amount, price, type);
64728
- }
64729
- return this.safeTrade({
64730
- 'id': id,
64731
- 'timestamp': timestamp,
64732
- 'datetime': this.iso8601(timestamp),
64733
- 'symbol': market['symbol'],
64734
- 'order': undefined,
64735
- 'type': type,
64736
- 'side': side,
64737
- 'takerOrMaker': undefined,
64738
- 'price': price,
64739
- 'amount': amount,
64740
- 'cost': undefined,
64741
- 'fee': undefined,
64742
- 'info': trade,
64743
- }, market);
64744
- }
64745
- parseTradeSide(side) {
64746
- const sides = {
64747
- 'B': 'buy',
64748
- 'S': 'sell',
64749
- 'buy': 'buy',
64750
- 'sell': 'sell',
64751
- };
64752
- return this.safeString(sides, side, side);
64753
- }
64754
- syntheticTradeId(market = undefined, timestamp = undefined, side = undefined, amount = undefined, price = undefined, orderType = undefined, takerOrMaker = undefined) {
64755
- // TODO: can be unified method? this approach is being used by multiple exchanges (mexc, woo-coinsbit, dydx, ...)
64756
- let id = '';
64757
- if (timestamp !== undefined) {
64758
- id = this.numberToString(timestamp) + '-' + this.safeString(market, 'id', '_');
64759
- if (side !== undefined) {
64760
- id += '-' + side;
64761
- }
64762
- if (orderType !== undefined) {
64763
- id += '-' + orderType;
64764
- }
64765
- if (takerOrMaker !== undefined) {
64766
- id += '-' + takerOrMaker;
64767
- }
64768
- if (amount !== undefined) {
64769
- id += '-' + this.numberToString(amount);
64770
- }
64771
- if (price !== undefined) {
64772
- id += '-' + this.numberToString(price);
64773
- }
64774
- }
64775
- return id;
64776
- }
64777
- async fetchBalance(params = {}) {
64778
- /**
64779
- * @method
64780
- * @name bkex#fetchBalance
64781
- * @description query for balance and get the amount of funds available for trading or funds locked in orders
64782
- * @param {object} [params] extra parameters specific to the bkex api endpoint
64783
- * @returns {object} a [balance structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#balance-structure}
64784
- */
64785
- await this.loadMarkets();
64786
- const query = this.omit(params, 'type');
64787
- const response = await this.privateSpotGetUAccountBalance(query);
64788
- //
64789
- // {
64790
- // "code": "0",
64791
- // "data": {
64792
- // "WALLET": [
64793
- // {
64794
- // "available": "0.221212121000000000",
64795
- // "currency": "PHX",
64796
- // "frozen": "0E-18",
64797
- // "total": 0.221212121
64798
- // },
64799
- // {
64800
- // "available": "44.959577229600000000",
64801
- // "currency": "USDT",
64802
- // "frozen": "0E-18",
64803
- // "total": 44.9595772296
64804
- // }
64805
- // ]
64806
- // },
64807
- // "msg": "success",
64808
- // "status": 0
64809
- // }
64810
- //
64811
- const balances = this.safeValue(response, 'data');
64812
- const wallets = this.safeValue(balances, 'WALLET', []);
64813
- const result = { 'info': wallets };
64814
- for (let i = 0; i < wallets.length; i++) {
64815
- const wallet = wallets[i];
64816
- const currencyId = wallet['currency'];
64817
- const code = this.safeCurrencyCode(currencyId);
64818
- const account = this.account();
64819
- account['free'] = this.safeNumber(wallet, 'available');
64820
- account['used'] = this.safeNumber(wallet, 'frozen');
64821
- account['total'] = this.safeNumber(wallet, 'total');
64822
- result[code] = account;
64823
- }
64824
- return this.safeBalance(result);
64825
- }
64826
- async fetchDepositAddress(code, params = {}) {
64827
- /**
64828
- * @method
64829
- * @name bkex#fetchDepositAddress
64830
- * @description fetch the deposit address for a currency associated with this account
64831
- * @param {string} code unified currency code
64832
- * @param {object} [params] extra parameters specific to the bkex api endpoint
64833
- * @returns {object} an [address structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#address-structure}
64834
- */
64835
- await this.loadMarkets();
64836
- const currency = this.currency(code);
64837
- const request = {
64838
- 'currency': currency['id'],
64839
- };
64840
- const response = await this.privateSpotGetUWalletAddress(this.extend(request, params));
64841
- // NOTE: You can only retrieve addresses of already generated wallets - so should already have generated that COIN deposit address in UI. Otherwise, it seems from API you can't create/obtain addresses for those coins.
64842
- //
64843
- // {
64844
- // "code": "0",
64845
- // "data": [
64846
- // {
64847
- // "currency": "BTC",
64848
- // "address": "1m4k2yUKTSrX6SM9FGgvwMyxQbYtRVi2N",
64849
- // "memo": ""
64850
- // }
64851
- // ],
64852
- // "msg": "success",
64853
- // "status": 0
64854
- // }
64855
- //
64856
- const data = this.safeValue(response, 'data', {});
64857
- return this.parseDepositAddress(data, currency);
64858
- }
64859
- parseDepositAddress(data, currency = undefined) {
64860
- const depositObject = this.safeValue(data, 0);
64861
- const address = this.safeString(depositObject, 'address');
64862
- const tag = this.safeString(depositObject, 'memo');
64863
- const currencyId = this.safeString(depositObject, 'currency');
64864
- currency = this.safeCurrency(currencyId, currency);
64865
- return {
64866
- 'currency': currency['code'],
64867
- 'address': address,
64868
- 'tag': tag,
64869
- 'network': undefined,
64870
- 'info': data,
64871
- };
64872
- }
64873
- async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
64874
- /**
64875
- * @method
64876
- * @name bkex#fetchDeposits
64877
- * @description fetch all deposits made to an account
64878
- * @param {string} code unified currency code
64879
- * @param {int} [since] the earliest time in ms to fetch deposits for
64880
- * @param {int} [limit] the maximum number of deposits structures to retrieve
64881
- * @param {object} [params] extra parameters specific to the bkex api endpoint
64882
- * @returns {object[]} a list of [transaction structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#transaction-structure}
64883
- */
64884
- if (code === undefined) {
64885
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' fetchDeposits() requires code argument');
64886
- }
64887
- await this.loadMarkets();
64888
- const currency = this.currency(code);
64889
- const request = {
64890
- 'currency': currency['id'],
64891
- };
64892
- if (since !== undefined) {
64893
- request['startTime'] = since;
64894
- const endTime = this.milliseconds();
64895
- request['endTime'] = endTime;
64896
- }
64897
- if (limit !== undefined) {
64898
- request['Size'] = limit; // Todo: id api-docs, 'size' is incorrectly required to be in Uppercase
64899
- }
64900
- const response = await this.privateSpotGetUWalletDepositRecord(this.extend(request, params));
64901
- //
64902
- // {
64903
- // "code": "0",
64904
- // "data": {
64905
- // "data": [
64906
- // {
64907
- // "createTime": "1622274255000",
64908
- // "currency": "BNB",
64909
- // "fromAddress": "bnb10af52w77pkehgxhnwgeca50q2t2354q4xexa5y",
64910
- // "hash": "97B982F497782C2777C0F6AD16CEAAC65A93A364B684A23A71CFBB8C010DEEA6",
64911
- // "id": "2021052923441510234383337",
64912
- // "status": "0",
64913
- // "toAddress": "bnb13w64gkc42c0l45m2p5me4qn35z0a3ej9ldks3j_82784659",
64914
- // "volume": 0.073
64915
- // }
64916
- // ],
64917
- // "total": 1
64918
- // },
64919
- // "msg": "success",
64920
- // "status": 0
64921
- // }
64922
- //
64923
- const data = this.safeValue(response, 'data', {});
64924
- const dataInner = this.safeValue(data, 'data', []);
64925
- for (let i = 0; i < dataInner.length; i++) {
64926
- dataInner[i]['transactType'] = 'deposit';
64927
- }
64928
- return this.parseTransactions(dataInner, currency, since, limit, params);
64929
- }
64930
- async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
64931
- /**
64932
- * @method
64933
- * @name bkex#fetchWithdrawals
64934
- * @description fetch all withdrawals made from an account
64935
- * @param {string} code unified currency code
64936
- * @param {int} [since] the earliest time in ms to fetch withdrawals for
64937
- * @param {int} [limit] the maximum number of withdrawals structures to retrieve
64938
- * @param {object} [params] extra parameters specific to the bkex api endpoint
64939
- * @returns {object[]} a list of [transaction structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#transaction-structure}
64940
- */
64941
- if (code === undefined) {
64942
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' fetchWithdrawals() requires code argument');
64943
- }
64944
- await this.loadMarkets();
64945
- const currency = this.currency(code);
64946
- const request = {
64947
- 'currency': currency['id'],
64948
- };
64949
- if (since !== undefined) {
64950
- request['startTime'] = since;
64951
- const endTime = this.milliseconds();
64952
- request['endTime'] = endTime;
64953
- }
64954
- if (limit !== undefined) {
64955
- request['Size'] = limit; // Todo: id api-docs, 'size' is incorrectly required to be in Uppercase
64956
- }
64957
- const response = await this.privateSpotGetUWalletWithdrawRecord(this.extend(request, params));
64958
- //
64959
- // {
64960
- // "code": "0",
64961
- // "data": {
64962
- // "data": [
64963
- // {
64964
- // ...
64965
- // }
64966
- // ],
64967
- // "total": 1
64968
- // },
64969
- // "msg": "success",
64970
- // "status": 0
64971
- // }
64972
- //
64973
- const data = this.safeValue(response, 'data', {});
64974
- const dataInner = this.safeValue(data, 'data', []);
64975
- for (let i = 0; i < dataInner.length; i++) {
64976
- dataInner[i]['transactType'] = 'withdrawal';
64977
- }
64978
- return this.parseTransactions(dataInner, currency, since, limit, params);
64979
- }
64980
- parseTransaction(transaction, currency = undefined) {
64981
- //
64982
- // fetchDeposits
64983
- //
64984
- // {
64985
- // "createTime": "1622274255000",
64986
- // "currency": "BNB",
64987
- // "fromAddress": "bnb10af52w77pkehgxhnwgeca50q2t2354q4xexa5y",
64988
- // "hash": "97B982F497782C2777C0F6AD16CEAAC65A93A364B684A23A71CFBB8C010DEEA6",
64989
- // "id": "2021052923441510234383337",
64990
- // "status": "0",
64991
- // "toAddress": "bnb13w64gkc42c0l45m2p5me4qn35z0a3ej9ldks3j_82784659",
64992
- // "volume": 0.073
64993
- // }
64994
- //
64995
- const id = this.safeString(transaction, 'id');
64996
- const amount = this.safeNumber(transaction, 'volume');
64997
- const addressTo = this.safeValue(transaction, 'toAddress', {});
64998
- const addressFrom = this.safeString(transaction, 'fromAddress');
64999
- const txid = this.safeString(transaction, 'hash');
65000
- const type = this.safeString(transaction, 'transactType');
65001
- const timestamp = this.safeInteger(transaction, 'createTime');
65002
- const currencyId = this.safeString(transaction, 'currency');
65003
- const code = this.safeCurrencyCode(currencyId, currency);
65004
- const status = this.parseTransactionStatus(this.safeString(transaction, 'status'));
65005
- return {
65006
- 'id': id,
65007
- 'currency': code,
65008
- 'amount': amount,
65009
- 'network': undefined,
65010
- 'address': addressTo,
65011
- 'addressTo': addressTo,
65012
- 'addressFrom': addressFrom,
65013
- 'tag': undefined,
65014
- 'tagTo': undefined,
65015
- 'tagFrom': undefined,
65016
- 'status': status,
65017
- 'type': type,
65018
- 'updated': undefined,
65019
- 'txid': txid,
65020
- 'timestamp': timestamp,
65021
- 'datetime': this.iso8601(timestamp),
65022
- 'fee': {
65023
- 'currency': code,
65024
- 'cost': undefined,
65025
- },
65026
- 'info': transaction,
65027
- };
65028
- }
65029
- parseTransactionStatus(status) {
65030
- const statuses = {
65031
- '-1': 'failed',
65032
- '0': 'ok',
65033
- '3': 'pending',
65034
- '5': 'pending',
65035
- };
65036
- return this.safeString(statuses, status, status);
65037
- }
65038
- async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
65039
- /**
65040
- * @method
65041
- * @name bkex#createOrder
65042
- * @description create a trade order
65043
- * @param {string} symbol unified symbol of the market to create an order in
65044
- * @param {string} type 'market' or 'limit'
65045
- * @param {string} side 'buy' or 'sell'
65046
- * @param {float} amount how much of currency you want to trade in units of base currency
65047
- * @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
65048
- * @param {object} [params] extra parameters specific to the bkex api endpoint
65049
- * @returns {object} an [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
65050
- */
65051
- await this.loadMarkets();
65052
- const market = this.market(symbol);
65053
- const direction = (side === 'buy') ? 'BID' : 'ASK';
65054
- const request = {
65055
- 'symbol': market['id'],
65056
- 'type': type.toUpperCase(),
65057
- 'volume': this.amountToPrecision(symbol, amount),
65058
- 'direction': direction,
65059
- };
65060
- if ((type !== 'market') && (price !== undefined)) {
65061
- request['price'] = this.priceToPrecision(symbol, price);
65062
- }
65063
- const response = await this.privateSpotPostUOrderCreate(this.extend(request, params));
65064
- //
65065
- // {
65066
- // "code": "0",
65067
- // "data": "2022030302410146630023187",
65068
- // "msg": "Create Order Successfully",
65069
- // "status": 0
65070
- // }
65071
- //
65072
- return this.parseOrder(response, market);
65073
- }
65074
- async cancelOrder(id, symbol = undefined, params = {}) {
65075
- /**
65076
- * @method
65077
- * @name bkex#cancelOrder
65078
- * @description cancels an open order
65079
- * @param {string} id order id
65080
- * @param {string} symbol unified symbol of the market the order was made in
65081
- * @param {object} [params] extra parameters specific to the bkex api endpoint
65082
- * @returns {object} An [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
65083
- */
65084
- await this.loadMarkets();
65085
- const market = (symbol !== undefined) ? this.market(symbol) : undefined;
65086
- const request = {
65087
- 'orderId': id,
65088
- };
65089
- const response = await this.privateSpotPostUOrderCancel(this.extend(request, params));
65090
- //
65091
- // {
65092
- // "code": "0",
65093
- // "data": "2022030303032700030025325",
65094
- // "status": 0
65095
- // }
65096
- //
65097
- return this.parseOrder(response, market);
65098
- }
65099
- async cancelOrders(ids, symbol = undefined, params = {}) {
65100
- /**
65101
- * @method
65102
- * @name bkex#cancelOrders
65103
- * @description cancel multiple orders
65104
- * @param {string[]} ids order ids
65105
- * @param {string} symbol unified market symbol, default is undefined
65106
- * @param {object} [params] extra parameters specific to the bkex api endpoint
65107
- * @returns {object} an list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
65108
- */
65109
- if (!Array.isArray(ids)) {
65110
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' cancelOrders() ids argument should be an array');
65111
- }
65112
- await this.loadMarkets();
65113
- const request = {
65114
- 'orders': this.json(ids),
65115
- };
65116
- const response = await this.privateSpotPostUOrderBatchCancel(this.extend(request, params));
65117
- // {
65118
- // "code": 0,
65119
- // "msg": "success",
65120
- // "data": {
65121
- // "success": 2,
65122
- // "fail": 0,
65123
- // "results": ["2019062312313131231"," 2019063123131312313"]
65124
- // }
65125
- // }
65126
- const data = this.safeValue(response, 'data');
65127
- const results = this.safeValue(data, 'results');
65128
- const market = (symbol !== undefined) ? this.market(symbol) : undefined;
65129
- return this.parseOrders(results, market, undefined, undefined, params);
65130
- }
65131
- async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
65132
- /**
65133
- * @method
65134
- * @name bkex#fetchOpenOrders
65135
- * @description fetch all unfilled currently open orders
65136
- * @param {string} symbol unified market symbol
65137
- * @param {int} [since] the earliest time in ms to fetch open orders for
65138
- * @param {int} [limit] the maximum number of open orders structures to retrieve
65139
- * @param {object} [params] extra parameters specific to the bkex api endpoint
65140
- * @returns {Order[]} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
65141
- */
65142
- if (symbol === undefined) {
65143
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' fetchOpenOrders() requires a symbol argument');
65144
- }
65145
- await this.loadMarkets();
65146
- const market = this.market(symbol);
65147
- const request = {
65148
- 'symbol': market['id'],
65149
- };
65150
- if (limit !== undefined) {
65151
- request['size'] = limit; // Todo: id api-docs, 'size' is incorrectly required to be in Uppercase
65152
- }
65153
- const response = await this.privateSpotGetUOrderOpenOrders(this.extend(request, params));
65154
- //
65155
- // {
65156
- // "code": "0",
65157
- // "data": {
65158
- // "data": [
65159
- // {
65160
- // "createdTime": "1646248301418",
65161
- // "dealVolume": "0E-18",
65162
- // "direction": "BID",
65163
- // "frozenVolumeByOrder": "2.421300000000000000",
65164
- // "id": "2022030303114141830007699",
65165
- // "price": "0.150000000000000000",
65166
- // "source": "WALLET",
65167
- // "status": "0",
65168
- // "symbol": "BKK_USDT",
65169
- // "totalVolume": "16.142000000000000000",
65170
- // "type": "LIMIT"
65171
- // }
65172
- // ],
65173
- // "pageRequest": {
65174
- // "asc": false,
65175
- // "orderBy": "id",
65176
- // "page": "1",
65177
- // "size": 10
65178
- // },
65179
- // "total": 1
65180
- // },
65181
- // "msg": "success",
65182
- // "status": 0
65183
- // }
65184
- //
65185
- const result = this.safeValue(response, 'data');
65186
- const innerData = this.safeValue(result, 'data');
65187
- return this.parseOrders(innerData, market, since, limit, params);
65188
- }
65189
- async fetchOpenOrder(id, symbol = undefined, params = {}) {
65190
- /**
65191
- * @method
65192
- * @name bkex#fetchOpenOrder
65193
- * @description fetch an open order by it's id
65194
- * @param {string} id order id
65195
- * @param {string} symbol unified market symbol, default is undefined
65196
- * @param {object} [params] extra parameters specific to the bkex api endpoint
65197
- * @returns {object} an [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
65198
- */
65199
- const request = {
65200
- 'orderId': id,
65201
- };
65202
- const response = await this.privateSpotGetUOrderOpenOrderDetail(this.extend(request, params));
65203
- //
65204
- // {
65205
- // "code": "0",
65206
- // "data": {
65207
- // "createdTime": "1646248301418",
65208
- // "dealAvgPrice": "0",
65209
- // "dealVolume": "0E-18",
65210
- // "direction": "BID",
65211
- // "frozenVolumeByOrder": "2.421300000000000000",
65212
- // "id": "2022030303114141830002452",
65213
- // "price": "0.150000000000000000",
65214
- // "source": "WALLET",
65215
- // "status": "0",
65216
- // "symbol": "BKK_USDT",
65217
- // "totalVolume": "16.142000000000000000",
65218
- // "type": "LIMIT",
65219
- // "updateTime": 1646248301418
65220
- // },
65221
- // "msg": "success",
65222
- // "status": 0
65223
- // }
65224
- //
65225
- const data = this.safeValue(response, 'data');
65226
- const market = (symbol !== undefined) ? this.market(symbol) : undefined;
65227
- return this.parseOrder(data, market);
65228
- }
65229
- async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
65230
- /**
65231
- * @method
65232
- * @name bkex#fetchClosedOrders
65233
- * @description fetches information on multiple closed orders made by the user
65234
- * @param {string} symbol unified market symbol of the market orders were made in
65235
- * @param {int} [since] the earliest time in ms to fetch orders for
65236
- * @param {int} [limit] the maximum number of orde structures to retrieve
65237
- * @param {object} [params] extra parameters specific to the bkex api endpoint
65238
- * @returns {Order[]} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
65239
- */
65240
- if (symbol === undefined) {
65241
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' fetchClosedOrders() requires a symbol argument');
65242
- }
65243
- await this.loadMarkets();
65244
- const market = this.market(symbol);
65245
- const request = {
65246
- 'symbol': market['id'],
65247
- };
65248
- if (limit !== undefined) {
65249
- request['size'] = limit; // Todo: id api-docs, 'size' is incorrectly required to be in Uppercase
65250
- }
65251
- if (since !== undefined) {
65252
- request['startTime'] = since;
65253
- }
65254
- const response = await this.privateSpotGetUOrderHistoryOrders(this.extend(request, params));
65255
- //
65256
- // {
65257
- // "code": "0",
65258
- // "data": {
65259
- // "data": [
65260
- // {
65261
- // "createdTime": "1646247807000",
65262
- // "dealAvgPrice": "0",
65263
- // "dealVolume": "0",
65264
- // "direction": "BID",
65265
- // "frozenVolumeByOrder": "1.65",
65266
- // "id": "2022030303032700030025943",
65267
- // "price": "0.15",
65268
- // "source": "WALLET",
65269
- // "status": "2",
65270
- // "symbol": "BKK_USDT",
65271
- // "totalVolume": "11",
65272
- // "type": "LIMIT",
65273
- // "updateTime": 1646247852558
65274
- // },
65275
- // ],
65276
- // "pageRequest": {
65277
- // "asc": false,
65278
- // "orderBy": "id",
65279
- // "page": "1",
65280
- // "size": 10
65281
- // },
65282
- // "total": 6
65283
- // },
65284
- // "msg": "success",
65285
- // "status": 0
65286
- // }
65287
- //
65288
- const result = this.safeValue(response, 'data');
65289
- const innerData = this.safeValue(result, 'data');
65290
- return this.parseOrders(innerData, market, since, limit, params);
65291
- }
65292
- parseOrder(order, market = undefined) {
65293
- //
65294
- // fetchOpenOrders
65295
- //
65296
- // {
65297
- // "createdTime": "1646248301418",
65298
- // "dealVolume": "0E-18",
65299
- // "direction": "BID",
65300
- // "frozenVolumeByOrder": "2.421300000000000000",
65301
- // "id": "2022030303114141830007699",
65302
- // "price": "0.150000000000000000",
65303
- // "source": "WALLET",
65304
- // "status": "0",
65305
- // "symbol": "BKK_USDT",
65306
- // "totalVolume": "16.142000000000000000",
65307
- // "type": "LIMIT"
65308
- // "stopPrice": "0.14", // present only for 'stop' order types
65309
- // "operator": ">=" // present only for 'stop' order types
65310
- // "dealAvgPrice": "0", // only present in 'fetchOrder' & 'fetchClosedOrders'
65311
- // "updateTime": 1646248301418 // only present in 'fetchOrder' & 'fetchClosedOrders'
65312
- // }
65313
- //
65314
- const timestamp = this.safeInteger(order, 'createdTime');
65315
- const updateTime = this.safeInteger(order, 'updateTime');
65316
- const filled = this.safeString(order, 'dealVolume');
65317
- const side = this.parseOrderSide(this.safeString(order, 'direction'));
65318
- const id = this.safeString2(order, 'id', 'data');
65319
- const price = this.safeString(order, 'price');
65320
- const rawStatus = this.safeString(order, 'status');
65321
- const rawType = this.safeString(order, 'type');
65322
- const type = this.parseOrderType(rawType);
65323
- let postOnly = false;
65324
- if (rawType === 'LIMIT_MAKER') {
65325
- postOnly = true;
65326
- }
65327
- let status = undefined;
65328
- if (timestamp !== undefined) {
65329
- // cancelOrder handling
65330
- status = this.parseOrderStatus(rawStatus);
65331
- }
65332
- const marketId = this.safeString(order, 'symbol');
65333
- market = this.safeMarket(marketId, market);
65334
- const amount = this.safeString(order, 'totalVolume');
65335
- const stopPrice = this.safeNumber(order, 'stopPrice');
65336
- const average = this.safeString(order, 'dealAvgPrice');
65337
- return this.safeOrder({
65338
- 'id': id,
65339
- 'clientOrderId': undefined,
65340
- 'timestamp': timestamp,
65341
- 'datetime': this.iso8601(timestamp),
65342
- 'lastTradeTimestamp': updateTime,
65343
- 'status': status,
65344
- 'symbol': market['symbol'],
65345
- 'type': type,
65346
- 'timeInForce': undefined,
65347
- 'postOnly': postOnly,
65348
- 'side': side,
65349
- 'price': price,
65350
- 'stopPrice': stopPrice,
65351
- 'triggerPrice': stopPrice,
65352
- 'average': average,
65353
- 'amount': amount,
65354
- 'filled': filled,
65355
- 'remaining': undefined,
65356
- 'cost': undefined,
65357
- 'trades': undefined,
65358
- 'fee': undefined,
65359
- 'info': order,
65360
- }, market);
65361
- }
65362
- parseOrderSide(side) {
65363
- const sides = {
65364
- 'BID': 'buy',
65365
- 'ASK': 'sell',
65366
- };
65367
- return this.safeString(sides, side, side);
65368
- }
65369
- parseOrderStatus(status) {
65370
- const statuses = {
65371
- '0': 'open',
65372
- '1': 'closed',
65373
- '2': 'canceled',
65374
- '3': 'open',
65375
- };
65376
- return this.safeString(statuses, status, status);
65377
- }
65378
- parseOrderType(status) {
65379
- const statuses = {
65380
- 'MARKET': 'market',
65381
- 'LIMIT': 'limit',
65382
- 'LIMIT_MAKER': 'limit',
65383
- 'STOP_LIMIT': 'limit',
65384
- };
65385
- return this.safeString(statuses, status, status);
65386
- }
65387
- async fetchTransactionFees(codes = undefined, params = {}) {
65388
- /**
65389
- * @method
65390
- * @name bkex#fetchTransactionFees
65391
- * @deprecated
65392
- * @description please use fetchDepositWithdrawFees instead
65393
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#basicInformation-2
65394
- * @param {string[]|undefined} codes list of unified currency codes
65395
- * @param {object} [params] extra parameters specific to the bkex api endpoint
65396
- * @returns {object} a list of [fee structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#fee-structure}
65397
- */
65398
- await this.loadMarkets();
65399
- const response = await this.publicSpotGetCommonCurrencys(params);
65400
- //
65401
- // {
65402
- // "msg": "success",
65403
- // "code": "0",
65404
- // "data": [
65405
- // {
65406
- // "currency": "ETH",
65407
- // "maxWithdrawOneDay": 2000,
65408
- // "maxWithdrawSingle": 2000,
65409
- // "minWithdrawSingle": 0.1,
65410
- // "supportDeposit": true,
65411
- // "supportTrade": true,
65412
- // "supportWithdraw": true,
65413
- // "withdrawFee": 0.008
65414
- // },
65415
- // {
65416
- // "currency": "BTC",
65417
- // "maxWithdrawOneDay": 100,
65418
- // "maxWithdrawSingle": 100,
65419
- // "minWithdrawSingle": 0.01,
65420
- // "supportDeposit": true,
65421
- // "supportTrade": true,
65422
- // "supportWithdraw": true,
65423
- // "withdrawFee": 0.008
65424
- // }
65425
- // ]
65426
- // }
65427
- //
65428
- return this.parseTransactionFees(response, codes);
65429
- }
65430
- parseTransactionFees(response, codes = undefined) {
65431
- const data = this.safeValue(response, 'data');
65432
- const result = {};
65433
- for (let i = 0; i < data.length; i++) {
65434
- const entry = data[i];
65435
- const currencyId = this.safeString(entry, 'currency');
65436
- const currency = this.safeCurrency(currencyId);
65437
- const code = this.safeString(currency, 'code');
65438
- if ((codes === undefined) || (this.inArray(code, codes))) {
65439
- result[code] = {
65440
- 'withdraw': this.parseTransactionFee(entry),
65441
- 'deposit': undefined,
65442
- 'info': entry,
65443
- };
65444
- }
65445
- }
65446
- return result;
65447
- }
65448
- parseTransactionFee(transaction, currency = undefined) {
65449
- //
65450
- // {
65451
- // "currency": "ETH",
65452
- // "maxWithdrawOneDay": 2000,
65453
- // "maxWithdrawSingle": 2000,
65454
- // "minWithdrawSingle": 0.1,
65455
- // "supportDeposit": true,
65456
- // "supportTrade": true,
65457
- // "supportWithdraw": true,
65458
- // "withdrawFee": 0.008
65459
- // }
65460
- //
65461
- return this.safeNumber(transaction, 'withdrawFee');
65462
- }
65463
- async fetchDepositWithdrawFees(codes = undefined, params = {}) {
65464
- /**
65465
- * @method
65466
- * @name bkex#fetchDepositWithdrawFees
65467
- * @description fetch deposit and withdraw fees
65468
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#basicInformation-2
65469
- * @param {string[]|undefined} codes list of unified currency codes
65470
- * @param {object} [params] extra parameters specific to the bkex api endpoint
65471
- * @returns {object} a list of [fee structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#fee-structure}
65472
- */
65473
- await this.loadMarkets();
65474
- const response = await this.publicSpotGetCommonCurrencys(params);
65475
- //
65476
- // {
65477
- // "msg": "success",
65478
- // "code": "0",
65479
- // "data": [
65480
- // {
65481
- // "currency": "ETH",
65482
- // "maxWithdrawOneDay": 2000,
65483
- // "maxWithdrawSingle": 2000,
65484
- // "minWithdrawSingle": 0.1,
65485
- // "supportDeposit": true,
65486
- // "supportTrade": true,
65487
- // "supportWithdraw": true,
65488
- // "withdrawFee": 0.008
65489
- // },
65490
- // {
65491
- // "currency": "BTC",
65492
- // "maxWithdrawOneDay": 100,
65493
- // "maxWithdrawSingle": 100,
65494
- // "minWithdrawSingle": 0.01,
65495
- // "supportDeposit": true,
65496
- // "supportTrade": true,
65497
- // "supportWithdraw": true,
65498
- // "withdrawFee": 0.008
65499
- // }
65500
- // ]
65501
- // }
65502
- //
65503
- const data = this.safeValue(response, 'data');
65504
- return this.parseDepositWithdrawFees(data, codes, 'currency');
65505
- }
65506
- parseDepositWithdrawFee(fee, currency = undefined) {
65507
- //
65508
- // {
65509
- // "currency": "ETH",
65510
- // "maxWithdrawOneDay": 2000,
65511
- // "maxWithdrawSingle": 2000,
65512
- // "minWithdrawSingle": 0.1,
65513
- // "supportDeposit": true,
65514
- // "supportTrade": true,
65515
- // "supportWithdraw": true,
65516
- // "withdrawFee": 0.008
65517
- // }
65518
- //
65519
- const result = this.depositWithdrawFee(fee);
65520
- result['withdraw']['fee'] = this.safeNumber(fee, 'withdrawFee');
65521
- return result;
65522
- }
65523
- async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
65524
- /**
65525
- * @method
65526
- * @name bkex#fetchFundingRateHistory
65527
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#contract-fundingRate
65528
- * @description fetches historical funding rate prices
65529
- * @param {string} symbol unified symbol of the market to fetch the funding rate history for
65530
- * @param {int} [since] timestamp in ms of the earliest funding rate to fetch
65531
- * @param {int} [limit] the maximum amount of [funding rate structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#funding-rate-history-structure} to fetch
65532
- * @param {object} [params] extra parameters specific to the bkex api endpoint
65533
- * @returns {object[]} a list of [funding rate structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#funding-rate-history-structure}
65534
- */
65535
- if (symbol === undefined) {
65536
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' fetchFundingRateHistory() requires a symbol argument');
65537
- }
65538
- await this.loadMarkets();
65539
- const market = this.market(symbol);
65540
- const request = {
65541
- 'symbol': market['id'],
65542
- };
65543
- const response = await this.publicSwapGetMarketFundingRate(this.extend(request, params));
65544
- //
65545
- // {
65546
- // "code": 0,
65547
- // "msg": "success",
65548
- // "data": [
65549
- // {
65550
- // "symbol": "btc_usdt",
65551
- // "rate": "-0.00008654",
65552
- // "time": 1670658302128
65553
- // },
65554
- // ]
65555
- // }
65556
- //
65557
- const data = this.safeValue(response, 'data', []);
65558
- const rates = [];
65559
- for (let i = 0; i < data.length; i++) {
65560
- const entry = data[i];
65561
- const marketId = this.safeString(entry, 'symbol');
65562
- const symbolInner = this.safeSymbol(marketId);
65563
- const timestamp = this.safeInteger(entry, 'time');
65564
- rates.push({
65565
- 'info': entry,
65566
- 'symbol': symbolInner,
65567
- 'fundingRate': this.safeNumber(entry, 'rate'),
65568
- 'timestamp': timestamp,
65569
- 'datetime': this.iso8601(timestamp),
65570
- });
65571
- }
65572
- const sorted = this.sortBy(rates, 'timestamp');
65573
- return this.filterBySymbolSinceLimit(sorted, market['symbol'], since, limit);
65574
- }
65575
- async fetchMarketLeverageTiers(symbol, params = {}) {
65576
- /**
65577
- * @method
65578
- * @name bkex#fetchMarketLeverageTiers
65579
- * @see https://bkexapi.github.io/docs/api_en.htm?shell#contract-riskLimit
65580
- * @description retrieve information on the maximum leverage, for different trade sizes for a single market
65581
- * @param {string} symbol unified market symbol
65582
- * @param {object} [params] extra parameters specific to the bkex api endpoint
65583
- * @returns {object} a [leverage tiers structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#leverage-tiers-structure}
65584
- */
65585
- await this.loadMarkets();
65586
- const market = this.market(symbol);
65587
- if (!market['swap']) {
65588
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest(this.id + ' fetchMarketLeverageTiers() supports swap markets only');
65589
- }
65590
- const request = {
65591
- 'symbol': market['id'],
65592
- };
65593
- const response = await this.publicSwapGetMarketRiskLimit(this.extend(request, params));
65594
- //
65595
- // {
65596
- // "code": 0,
65597
- // "msg": "success",
65598
- // "data": [
65599
- // {
65600
- // "symbol": "btc_usdt",
65601
- // "minValue": "0",
65602
- // "maxValue": "500000",
65603
- // "maxLeverage": 100,
65604
- // "maintenanceMarginRate": "0.005"
65605
- // },
65606
- // ]
65607
- // }
65608
- //
65609
- const data = this.safeValue(response, 'data', []);
65610
- return this.parseMarketLeverageTiers(data, market);
65611
- }
65612
- parseMarketLeverageTiers(info, market = undefined) {
65613
- //
65614
- // [
65615
- // {
65616
- // "symbol": "btc_usdt",
65617
- // "minValue": "0",
65618
- // "maxValue": "500000",
65619
- // "maxLeverage": 100,
65620
- // "maintenanceMarginRate": "0.005"
65621
- // },
65622
- // ]
65623
- //
65624
- const tiers = [];
65625
- for (let i = 0; i < info.length; i++) {
65626
- const tier = info[i];
65627
- const marketId = this.safeString(info, 'symbol');
65628
- market = this.safeMarket(marketId, market);
65629
- tiers.push({
65630
- 'tier': this.sum(i, 1),
65631
- 'currency': market['settle'],
65632
- 'minNotional': this.safeNumber(tier, 'minValue'),
65633
- 'maxNotional': this.safeNumber(tier, 'maxValue'),
65634
- 'maintenanceMarginRate': this.safeNumber(tier, 'maintenanceMarginRate'),
65635
- 'maxLeverage': this.safeNumber(tier, 'maxLeverage'),
65636
- 'info': tier,
65637
- });
65638
- }
65639
- return tiers;
65640
- }
65641
- sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
65642
- const signed = api[0] === 'private';
65643
- const endpoint = api[1];
65644
- const pathPart = (endpoint === 'spot') ? this.version : 'fapi/' + this.version;
65645
- let url = this.urls['api'][endpoint] + '/' + pathPart + this.implodeParams(path, params);
65646
- params = this.omit(params, this.extractParams(path));
65647
- let paramsSortedEncoded = '';
65648
- if (Object.keys(params).length) {
65649
- paramsSortedEncoded = this.rawencode(this.keysort(params));
65650
- if (method === 'GET') {
65651
- url += '?' + paramsSortedEncoded;
65652
- }
65653
- }
65654
- if (signed) {
65655
- this.checkRequiredCredentials();
65656
- const signature = this.hmac(this.encode(paramsSortedEncoded), this.encode(this.secret), _static_dependencies_noble_hashes_sha256_js__WEBPACK_IMPORTED_MODULE_3__/* .sha256 */ .J);
65657
- headers = {
65658
- 'Cache-Control': 'no-cache',
65659
- 'Content-type': 'application/x-www-form-urlencoded',
65660
- 'X_ACCESS_KEY': this.apiKey,
65661
- 'X_SIGNATURE': signature,
65662
- };
65663
- if (method !== 'GET') {
65664
- body = paramsSortedEncoded;
65665
- }
65666
- }
65667
- return { 'url': url, 'method': method, 'body': body, 'headers': headers };
65668
- }
65669
- handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
65670
- if (response === undefined) {
65671
- return undefined;
65672
- }
65673
- //
65674
- // success
65675
- //
65676
- // {
65677
- // "code": "0",
65678
- // "msg": "success",
65679
- // "status": 0,
65680
- // "data": [...],
65681
- // }
65682
- //
65683
- //
65684
- // action error
65685
- //
65686
- // {
65687
- // "code":1005,
65688
- // "msg":"BKK:Not Enough balance",
65689
- // "status":0
65690
- // }
65691
- //
65692
- //
65693
- // HTTP error
65694
- //
65695
- // {
65696
- // "timestamp": "1646041085490",
65697
- // "status": "403",
65698
- // "error": "Forbidden",
65699
- // "message": "签名错误",
65700
- // "path": "/whatever/incorrect/path"
65701
- // }
65702
- //
65703
- const message = this.safeValue(response, 'msg');
65704
- if (message === 'success') {
65705
- return undefined;
65706
- }
65707
- const responseCode = this.safeString(response, 'code');
65708
- if (responseCode !== '0') {
65709
- const feedback = this.id + ' ' + body;
65710
- this.throwExactlyMatchedException(this.exceptions['exact'], responseCode, feedback);
65711
- this.throwBroadlyMatchedException(this.exceptions['broad'], body, feedback);
65712
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(feedback);
65713
- }
65714
- return undefined;
65715
- }
65716
- }
65717
-
65718
-
65719
63942
  /***/ }),
65720
63943
 
65721
63944
  /***/ 9476:
@@ -65759,6 +63982,9 @@ class bl3p extends _abstract_bl3p_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
65759
63982
  'cancelOrder': true,
65760
63983
  'createOrder': true,
65761
63984
  'createReduceOnlyOrder': false,
63985
+ 'createStopLimitOrder': false,
63986
+ 'createStopMarketOrder': false,
63987
+ 'createStopOrder': false,
65762
63988
  'fetchBalance': true,
65763
63989
  'fetchBorrowRate': false,
65764
63990
  'fetchBorrowRateHistories': false,
@@ -65968,6 +64194,16 @@ class bl3p extends _abstract_bl3p_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
65968
64194
  return this.parseTicker(ticker, market);
65969
64195
  }
65970
64196
  parseTrade(trade, market = undefined) {
64197
+ //
64198
+ // fetchTrades
64199
+ //
64200
+ // {
64201
+ // "trade_id": "2518789",
64202
+ // "date": "1694348697745",
64203
+ // "amount_int": "2959153",
64204
+ // "price_int": "2416231440"
64205
+ // }
64206
+ //
65971
64207
  const id = this.safeString(trade, 'trade_id');
65972
64208
  const timestamp = this.safeInteger(trade, 'date');
65973
64209
  const price = this.safeString(trade, 'price_int');
@@ -66004,6 +64240,20 @@ class bl3p extends _abstract_bl3p_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
66004
64240
  const response = await this.publicGetMarketTrades(this.extend({
66005
64241
  'market': market['id'],
66006
64242
  }, params));
64243
+ //
64244
+ // {
64245
+ // "result": "success",
64246
+ // "data": {
64247
+ // "trades": [
64248
+ // {
64249
+ // "trade_id": "2518789",
64250
+ // "date": "1694348697745",
64251
+ // "amount_int": "2959153",
64252
+ // "price_int": "2416231440"
64253
+ // },
64254
+ // ]
64255
+ // }
64256
+ // }
66007
64257
  const result = this.parseTrades(response['data']['trades'], market, since, limit);
66008
64258
  return result;
66009
64259
  }
@@ -66067,12 +64317,17 @@ class bl3p extends _abstract_bl3p_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
66067
64317
  * @method
66068
64318
  * @name bl3p#createOrder
66069
64319
  * @description create a trade order
64320
+ * @see https://github.com/BitonicNL/bl3p-api/blob/master/examples/nodejs/example.md#21---create-an-order
66070
64321
  * @param {string} symbol unified symbol of the market to create an order in
66071
64322
  * @param {string} type 'market' or 'limit'
66072
64323
  * @param {string} side 'buy' or 'sell'
66073
64324
  * @param {float} amount how much of currency you want to trade in units of base currency
66074
64325
  * @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
66075
64326
  * @param {object} [params] extra parameters specific to the bl3p api endpoint
64327
+ *
64328
+ * EXCHANGE SPECIFIC PARAMETERS
64329
+ * @param {int} [params.amount_funds] maximal EUR amount to spend (*1e5)
64330
+ * @param {string} [params.fee_currency] 'EUR' or 'BTC'
66076
64331
  * @returns {object} an [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
66077
64332
  */
66078
64333
  const market = this.market(symbol);
@@ -72347,7 +70602,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
72347
70602
  '110023': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
72348
70603
  '110024': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
72349
70604
  '110025': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
72350
- '110026': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
70605
+ '110026': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest,
72351
70606
  '110027': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
72352
70607
  '110028': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
72353
70608
  '110029': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
@@ -74022,20 +72277,14 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
74022
72277
  request['limit'] = limit; // max 1000, default 1000
74023
72278
  }
74024
72279
  request['interval'] = this.safeString(this.timeframes, timeframe, timeframe);
74025
- let method = undefined;
72280
+ let response = undefined;
74026
72281
  if (market['spot']) {
74027
72282
  request['category'] = 'spot';
74028
- method = 'publicGetV5MarketKline';
72283
+ response = await this.publicGetV5MarketKline(this.extend(request, params));
74029
72284
  }
74030
72285
  else {
74031
72286
  const price = this.safeString(params, 'price');
74032
72287
  params = this.omit(params, 'price');
74033
- const methods = {
74034
- 'mark': 'publicGetV5MarketMarkPriceKline',
74035
- 'index': 'publicGetV5MarketIndexPriceKline',
74036
- 'premiumIndex': 'publicGetV5MarketPremiumIndexPriceKline',
74037
- };
74038
- method = this.safeValue(methods, price, 'publicGetV5MarketKline');
74039
72288
  if (market['linear']) {
74040
72289
  request['category'] = 'linear';
74041
72290
  }
@@ -74045,8 +72294,19 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
74045
72294
  else {
74046
72295
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.NotSupported(this.id + ' fetchOHLCV() is not supported for option markets');
74047
72296
  }
72297
+ if (price === 'mark') {
72298
+ response = await this.publicGetV5MarketMarkPriceKline(this.extend(request, params));
72299
+ }
72300
+ else if (price === 'index') {
72301
+ response = await this.publicGetV5MarketIndexPriceKline(this.extend(request, params));
72302
+ }
72303
+ else if (price === 'premiumIndex') {
72304
+ response = await this.publicGetV5MarketPremiumIndexPriceKline(this.extend(request, params));
72305
+ }
72306
+ else {
72307
+ response = await this.publicGetV5MarketKline(this.extend(request, params));
72308
+ }
74048
72309
  }
74049
- const response = await this[method](this.extend(request, params));
74050
72310
  //
74051
72311
  // {
74052
72312
  // "retCode": 0,
@@ -75219,6 +73479,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
75219
73479
  * @param {boolean} [params.isLeverage] *unified spot only* false then spot trading true then margin trading
75220
73480
  * @param {string} [params.tpslMode] *contract only* 'full' or 'partial'
75221
73481
  * @param {string} [params.mmp] *option only* market maker protection
73482
+ * @param {int} [params.triggerDirection] *contract only* conditional orders, 1: triggered when market price rises to triggerPrice, 2: triggered when market price falls to triggerPrice
75222
73483
  * @returns {object} an [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
75223
73484
  */
75224
73485
  await this.loadMarkets();
@@ -75326,7 +73587,6 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
75326
73587
  const isBuy = side === 'buy';
75327
73588
  const ascending = stopLossTriggerPrice ? !isBuy : isBuy;
75328
73589
  if (triggerPrice !== undefined) {
75329
- request['triggerDirection'] = ascending ? 2 : 1;
75330
73590
  request['triggerPrice'] = this.priceToPrecision(symbol, triggerPrice);
75331
73591
  }
75332
73592
  else if (isStopLossTriggerOrder || isTakeProfitTriggerOrder) {
@@ -75337,12 +73597,12 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
75337
73597
  }
75338
73598
  else if (isStopLoss || isTakeProfit) {
75339
73599
  if (isStopLoss) {
75340
- const stopLossTriggerPrice = this.safeValue2(stopLoss, 'triggerPrice', 'stopPrice', stopLoss);
75341
- request['stopLoss'] = this.priceToPrecision(symbol, stopLossTriggerPrice);
73600
+ const slTriggerPrice = this.safeValue2(stopLoss, 'triggerPrice', 'stopPrice', stopLoss);
73601
+ request['stopLoss'] = this.priceToPrecision(symbol, slTriggerPrice);
75342
73602
  }
75343
73603
  if (isTakeProfit) {
75344
- const takeProfitTriggerPrice = this.safeValue2(takeProfit, 'triggerPrice', 'stopPrice', takeProfit);
75345
- request['takeProfit'] = this.priceToPrecision(symbol, takeProfitTriggerPrice);
73604
+ const tpTriggerPrice = this.safeValue2(takeProfit, 'triggerPrice', 'stopPrice', takeProfit);
73605
+ request['takeProfit'] = this.priceToPrecision(symbol, tpTriggerPrice);
75346
73606
  }
75347
73607
  }
75348
73608
  if (market['spot']) {
@@ -75451,12 +73711,12 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
75451
73711
  }
75452
73712
  else if (isStopLoss || isTakeProfit) {
75453
73713
  if (isStopLoss) {
75454
- const stopLossTriggerPrice = this.safeValue2(stopLoss, 'triggerPrice', 'stopPrice', stopLoss);
75455
- request['stopLoss'] = this.priceToPrecision(symbol, stopLossTriggerPrice);
73714
+ const slTriggerPrice = this.safeValue2(stopLoss, 'triggerPrice', 'stopPrice', stopLoss);
73715
+ request['stopLoss'] = this.priceToPrecision(symbol, slTriggerPrice);
75456
73716
  }
75457
73717
  if (isTakeProfit) {
75458
- const takeProfitTriggerPrice = this.safeValue2(takeProfit, 'triggerPrice', 'stopPrice', takeProfit);
75459
- request['takeProfit'] = this.priceToPrecision(symbol, takeProfitTriggerPrice);
73718
+ const tpTriggerPrice = this.safeValue2(takeProfit, 'triggerPrice', 'stopPrice', takeProfit);
73719
+ request['takeProfit'] = this.priceToPrecision(symbol, tpTriggerPrice);
75460
73720
  }
75461
73721
  }
75462
73722
  else {
@@ -75472,8 +73732,13 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
75472
73732
  request['orderLinkId'] = this.uuid16();
75473
73733
  }
75474
73734
  params = this.omit(params, ['stopPrice', 'timeInForce', 'triggerPrice', 'stopLossPrice', 'takeProfitPrice', 'postOnly', 'clientOrderId']);
75475
- const method = market['option'] ? 'privatePostOptionUsdcOpenapiPrivateV1PlaceOrder' : 'privatePostPerpetualUsdcOpenapiPrivateV1PlaceOrder';
75476
- const response = await this[method](this.extend(request, params));
73735
+ let response = undefined;
73736
+ if (market['option']) {
73737
+ response = await this.privatePostOptionUsdcOpenapiPrivateV1PlaceOrder(this.extend(request, params));
73738
+ }
73739
+ else {
73740
+ response = await this.privatePostPerpetualUsdcOpenapiPrivateV1PlaceOrder(this.extend(request, params));
73741
+ }
75477
73742
  //
75478
73743
  // {
75479
73744
  // "retCode":0,
@@ -75515,12 +73780,11 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
75515
73780
  if (price !== undefined) {
75516
73781
  request['orderPrice'] = this.priceToPrecision(symbol, price);
75517
73782
  }
75518
- let method = undefined;
73783
+ let response = undefined;
75519
73784
  if (market['option']) {
75520
- method = 'privatePostOptionUsdcOpenapiPrivateV1ReplaceOrder';
73785
+ response = await this.privatePostOptionUsdcOpenapiPrivateV1ReplaceOrder(this.extend(request, params));
75521
73786
  }
75522
73787
  else {
75523
- method = 'privatePostPerpetualUsdcOpenapiPrivateV1ReplaceOrder';
75524
73788
  const isStop = this.safeValue(params, 'stop', false);
75525
73789
  const triggerPrice = this.safeValue2(params, 'stopPrice', 'triggerPrice');
75526
73790
  const stopLossPrice = this.safeValue(params, 'stopLossPrice');
@@ -75541,8 +73805,8 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
75541
73805
  }
75542
73806
  }
75543
73807
  params = this.omit(params, ['stop', 'stopPrice', 'triggerPrice', 'stopLossPrice', 'takeProfitPrice']);
73808
+ response = await this.privatePostPerpetualUsdcOpenapiPrivateV1ReplaceOrder(this.extend(request, params));
75544
73809
  }
75545
- const response = await this[method](this.extend(request, params));
75546
73810
  //
75547
73811
  // {
75548
73812
  // "retCode": 0,
@@ -75633,12 +73897,12 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
75633
73897
  }
75634
73898
  if (isStopLoss || isTakeProfit) {
75635
73899
  if (isStopLoss) {
75636
- const stopLossTriggerPrice = this.safeValue2(stopLoss, 'triggerPrice', 'stopPrice', stopLoss);
75637
- request['stopLoss'] = this.priceToPrecision(symbol, stopLossTriggerPrice);
73900
+ const slTriggerPrice = this.safeValue2(stopLoss, 'triggerPrice', 'stopPrice', stopLoss);
73901
+ request['stopLoss'] = this.priceToPrecision(symbol, slTriggerPrice);
75638
73902
  }
75639
73903
  if (isTakeProfit) {
75640
- const takeProfitTriggerPrice = this.safeValue2(takeProfit, 'triggerPrice', 'stopPrice', takeProfit);
75641
- request['takeProfit'] = this.priceToPrecision(symbol, takeProfitTriggerPrice);
73904
+ const tpTriggerPrice = this.safeValue2(takeProfit, 'triggerPrice', 'stopPrice', takeProfit);
73905
+ request['takeProfit'] = this.priceToPrecision(symbol, tpTriggerPrice);
75642
73906
  }
75643
73907
  }
75644
73908
  const clientOrderId = this.safeString(params, 'clientOrderId');
@@ -75676,18 +73940,17 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
75676
73940
  };
75677
73941
  const isStop = this.safeValue(params, 'stop', false);
75678
73942
  params = this.omit(params, ['stop']);
75679
- let method = undefined;
75680
73943
  if (id !== undefined) { // The user can also use argument params["order_link_id"]
75681
73944
  request['orderId'] = id;
75682
73945
  }
73946
+ let response = undefined;
75683
73947
  if (market['option']) {
75684
- method = 'privatePostOptionUsdcOpenapiPrivateV1CancelOrder';
73948
+ response = await this.privatePostOptionUsdcOpenapiPrivateV1CancelOrder(this.extend(request, params));
75685
73949
  }
75686
73950
  else {
75687
- method = 'privatePostPerpetualUsdcOpenapiPrivateV1CancelOrder';
75688
73951
  request['orderFilter'] = isStop ? 'StopOrder' : 'Order';
73952
+ response = await this.privatePostPerpetualUsdcOpenapiPrivateV1CancelOrder(this.extend(request, params));
75689
73953
  }
75690
- const response = await this[method](this.extend(request, params));
75691
73954
  //
75692
73955
  // {
75693
73956
  // "retCode": 0,
@@ -76860,7 +75123,6 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
76860
75123
  request['start_date'] = this.yyyymmdd(since);
76861
75124
  }
76862
75125
  }
76863
- const method = (enableUnified[1]) ? 'privateGetV5AccountTransactionLog' : 'privateGetV2PrivateWalletFundRecords';
76864
75126
  if (code !== undefined) {
76865
75127
  currency = this.currency(code);
76866
75128
  request[currencyKey] = currency['id'];
@@ -76868,7 +75130,13 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
76868
75130
  if (limit !== undefined) {
76869
75131
  request['limit'] = limit;
76870
75132
  }
76871
- const response = await this[method](this.extend(request, params));
75133
+ let response = undefined;
75134
+ if (enableUnified[1]) {
75135
+ response = await this.privateGetV5AccountTransactionLog(this.extend(request, params));
75136
+ }
75137
+ else {
75138
+ response = await this.privateGetV2PrivateWalletFundRecords(this.extend(request, params));
75139
+ }
76872
75140
  //
76873
75141
  // {
76874
75142
  // "ret_code": 0,
@@ -77589,21 +75857,107 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
77589
75857
  });
77590
75858
  }
77591
75859
  async setMarginMode(marginMode, symbol = undefined, params = {}) {
75860
+ /**
75861
+ * @method
75862
+ * @name bybit#setMarginMode
75863
+ * @description set margin mode (account) or trade mode (symbol)
75864
+ * @see https://bybit-exchange.github.io/docs/v5/account/set-margin-mode
75865
+ * @see https://bybit-exchange.github.io/docs/v5/position/cross-isolate
75866
+ * @param {string} marginMode account mode must be either [isolated, cross, portfolio], trade mode must be either [isolated, cross]
75867
+ * @param {string} symbol unified market symbol of the market the position is held in, default is undefined
75868
+ * @param {object} [params] extra parameters specific to the bybit api endpoint
75869
+ * @param {string} [params.leverage] the rate of leverage, is required if setting trade mode (symbol)
75870
+ * @returns {object} response from the exchange
75871
+ */
77592
75872
  await this.loadMarkets();
77593
75873
  const [enableUnifiedMargin, enableUnifiedAccount] = await this.isUnifiedEnabled();
77594
75874
  const isUnifiedAccount = (enableUnifiedMargin || enableUnifiedAccount);
77595
- if (marginMode === 'ISOLATED_MARGIN') {
77596
- if (!isUnifiedAccount) {
77597
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.NotSupported(this.id + ' setMarginMode() Normal Account not support ISOLATED_MARGIN');
75875
+ let market = undefined;
75876
+ let response = undefined;
75877
+ if (isUnifiedAccount) {
75878
+ if (marginMode === 'isolated') {
75879
+ marginMode = 'ISOLATED_MARGIN';
77598
75880
  }
75881
+ else if (marginMode === 'cross') {
75882
+ marginMode = 'REGULAR_MARGIN';
75883
+ }
75884
+ else if (marginMode === 'portfolio') {
75885
+ marginMode = 'PORTFOLIO_MARGIN';
75886
+ }
75887
+ else {
75888
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.NotSupported(this.id + ' setMarginMode() marginMode must be either [isolated, cross, portfolio]');
75889
+ }
75890
+ const request = {
75891
+ 'setMarginMode': marginMode,
75892
+ };
75893
+ response = await this.privatePostV5AccountSetMarginMode(this.extend(request, params));
77599
75894
  }
77600
- else if ((marginMode !== 'REGULAR_MARGIN') && (marginMode !== 'PORTFOLIO_MARGIN')) {
77601
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.NotSupported(this.id + ' setMarginMode() marginMode must be either ISOLATED_MARGIN or REGULAR_MARGIN or PORTFOLIO_MARGIN');
75895
+ else {
75896
+ if (symbol === undefined) {
75897
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ArgumentsRequired(this.id + ' setMarginMode() requires a symbol parameter for non unified account');
75898
+ }
75899
+ market = this.market(symbol);
75900
+ const isUsdcSettled = market['settle'] === 'USDC';
75901
+ if (isUsdcSettled) {
75902
+ if (marginMode === 'cross') {
75903
+ marginMode = 'REGULAR_MARGIN';
75904
+ }
75905
+ else if (marginMode === 'portfolio') {
75906
+ marginMode = 'PORTFOLIO_MARGIN';
75907
+ }
75908
+ else {
75909
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.NotSupported(this.id + ' setMarginMode() for usdc market marginMode must be either [cross, portfolio]');
75910
+ }
75911
+ const request = {
75912
+ 'setMarginMode': marginMode,
75913
+ };
75914
+ response = await this.privatePostV5AccountSetMarginMode(this.extend(request, params));
75915
+ }
75916
+ else {
75917
+ let type = undefined;
75918
+ [type, params] = this.getBybitType('setPositionMode', market, params);
75919
+ let tradeMode = undefined;
75920
+ if (marginMode === 'cross') {
75921
+ tradeMode = 0;
75922
+ }
75923
+ else if (marginMode === 'isolated') {
75924
+ tradeMode = 1;
75925
+ }
75926
+ else {
75927
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.NotSupported(this.id + ' setMarginMode() with symbol marginMode must be either [isolated, cross]');
75928
+ }
75929
+ let sellLeverage = undefined;
75930
+ let buyLeverage = undefined;
75931
+ const leverage = this.safeString(params, 'leverage');
75932
+ if (leverage === undefined) {
75933
+ sellLeverage = this.safeString2(params, 'sell_leverage', 'sellLeverage');
75934
+ buyLeverage = this.safeString2(params, 'buy_leverage', 'buyLeverage');
75935
+ if (sellLeverage === undefined && buyLeverage === undefined) {
75936
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ArgumentsRequired(this.id + ' setMarginMode() requires a leverage parameter or sell_leverage and buy_leverage parameters');
75937
+ }
75938
+ if (buyLeverage === undefined) {
75939
+ buyLeverage = sellLeverage;
75940
+ }
75941
+ if (sellLeverage === undefined) {
75942
+ sellLeverage = buyLeverage;
75943
+ }
75944
+ params = this.omit(params, ['buy_leverage', 'sell_leverage', 'sellLeverage', 'buyLeverage']);
75945
+ }
75946
+ else {
75947
+ sellLeverage = leverage;
75948
+ buyLeverage = leverage;
75949
+ params = this.omit(params, 'leverage');
75950
+ }
75951
+ const request = {
75952
+ 'category': type,
75953
+ 'symbol': market['id'],
75954
+ 'tradeMode': tradeMode,
75955
+ 'buyLeverage': buyLeverage,
75956
+ 'sellLeverage': sellLeverage,
75957
+ };
75958
+ response = await this.privatePostV5PositionSwitchIsolated(this.extend(request, params));
75959
+ }
77602
75960
  }
77603
- const request = {
77604
- 'setMarginMode': marginMode,
77605
- };
77606
- const response = await this.privatePostV5AccountSetMarginMode(this.extend(request, params));
77607
75961
  return response;
77608
75962
  }
77609
75963
  async setLeverage(leverage, symbol = undefined, params = {}) {
@@ -77635,15 +75989,14 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
77635
75989
  'buyLeverage': leverage,
77636
75990
  'sellLeverage': leverage,
77637
75991
  };
77638
- let method = undefined;
75992
+ let response = undefined;
77639
75993
  if (isUsdcSettled && !isUnifiedAccount) {
77640
75994
  request['leverage'] = leverage;
77641
- method = 'privatePostPerpetualUsdcOpenapiPrivateV1PositionLeverageSave';
75995
+ response = await this.privatePostPerpetualUsdcOpenapiPrivateV1PositionLeverageSave(this.extend(request, params));
77642
75996
  }
77643
75997
  else {
77644
75998
  request['buyLeverage'] = leverage;
77645
75999
  request['sellLeverage'] = leverage;
77646
- method = 'privatePostV5PositionSetLeverage';
77647
76000
  if (market['linear']) {
77648
76001
  request['category'] = 'linear';
77649
76002
  }
@@ -77653,8 +76006,9 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
77653
76006
  else {
77654
76007
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.NotSupported(this.id + ' setLeverage() only support linear and inverse market');
77655
76008
  }
76009
+ response = await this.privatePostV5PositionSetLeverage(this.extend(request, params));
77656
76010
  }
77657
- return await this[method](this.extend(request, params));
76011
+ return response;
77658
76012
  }
77659
76013
  async setPositionMode(hedged, symbol = undefined, params = {}) {
77660
76014
  /**
@@ -84365,6 +82719,17 @@ class coinbasepro extends _abstract_coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/
84365
82719
  request['limit'] = limit; // default 100
84366
82720
  }
84367
82721
  const response = await this.publicGetProductsIdTrades(this.extend(request, params));
82722
+ //
82723
+ // [
82724
+ // {
82725
+ // "trade_id": "15035219",
82726
+ // "side": "sell",
82727
+ // "size": "0.27426731",
82728
+ // "price": "25820.42000000",
82729
+ // "time": "2023-09-10T13:47:41.447577Z"
82730
+ // },
82731
+ // ]
82732
+ //
84368
82733
  return this.parseTrades(response, market, since, limit);
84369
82734
  }
84370
82735
  async fetchTradingFees(params = {}) {
@@ -100557,7 +98922,7 @@ class currencycom extends _abstract_currencycom_js__WEBPACK_IMPORTED_MODULE_0__/
100557
98922
  // 'limit': 500, // default 500, max 1000
100558
98923
  };
100559
98924
  if (limit !== undefined) {
100560
- request['limit'] = limit; // default 500, max 1000
98925
+ request['limit'] = Math.min(limit, 1000); // default 500, max 1000
100561
98926
  }
100562
98927
  if (since !== undefined) {
100563
98928
  request['startTime'] = since;
@@ -120383,6 +118748,7 @@ class gemini extends _abstract_gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
120383
118748
  'InsufficientFunds': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
120384
118749
  'InvalidJson': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
120385
118750
  'InvalidNonce': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidNonce,
118751
+ 'InvalidApiKey': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
120386
118752
  'InvalidOrderType': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
120387
118753
  'InvalidPrice': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
120388
118754
  'InvalidQuantity': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
@@ -129539,7 +127905,7 @@ class huobi extends _abstract_huobi_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
129539
127905
  }
129540
127906
  request[fieldName] = market['id'];
129541
127907
  if (limit !== undefined) {
129542
- request['size'] = limit; // max 2000
127908
+ request['size'] = Math.min(limit, 2000); // max 2000
129543
127909
  }
129544
127910
  const response = await this[method](this.extend(request, params));
129545
127911
  //
@@ -136036,7 +134402,7 @@ class huobijp extends _abstract_huobijp_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
136036
134402
  'symbol': market['id'],
136037
134403
  };
136038
134404
  if (limit !== undefined) {
136039
- request['size'] = limit;
134405
+ request['size'] = Math.min(limit, 2000);
136040
134406
  }
136041
134407
  const response = await this.marketGetHistoryTrade(this.extend(request, params));
136042
134408
  //
@@ -137601,7 +135967,7 @@ class idex extends _abstract_idex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
137601
135967
  request['start'] = since;
137602
135968
  }
137603
135969
  if (limit !== undefined) {
137604
- request['limit'] = limit;
135970
+ request['limit'] = Math.min(limit, 1000);
137605
135971
  }
137606
135972
  // [
137607
135973
  // {
@@ -150528,58 +148894,53 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
150528
148894
  const request = {
150529
148895
  'symbol': market['id'],
150530
148896
  };
150531
- const response = await this.futuresPrivateGetPositions(this.extend(request, params));
148897
+ const response = await this.futuresPrivateGetPosition(this.extend(request, params));
150532
148898
  //
150533
- // {
150534
- // "code": "200000",
150535
- // "data": [
150536
- // {
150537
- // "id": "63b3599e6c41f50001c47d44",
150538
- // "symbol": "XBTUSDTM",
150539
- // "autoDeposit": false,
150540
- // "maintMarginReq": 0.004,
150541
- // "riskLimit": 25000,
150542
- // "realLeverage": 5.0,
150543
- // "crossMode": false,
150544
- // "delevPercentage": 0.57,
150545
- // "openingTimestamp": 1684000025528,
150546
- // "currentTimestamp": 1684000052160,
150547
- // "currentQty": 1,
150548
- // "currentCost": 26.821,
150549
- // "currentComm": 0.0160926,
150550
- // "unrealisedCost": 26.821,
150551
- // "realisedGrossCost": 0.0,
150552
- // "realisedCost": 0.0160926,
150553
- // "isOpen": true,
150554
- // "markPrice": 26821.13,
150555
- // "markValue": 26.82113,
150556
- // "posCost": 26.821,
150557
- // "posCross": 0.0,
150558
- // "posCrossMargin": 0.0,
150559
- // "posInit": 5.3642,
150560
- // "posComm": 0.01931112,
150561
- // "posCommCommon": 0.01931112,
150562
- // "posLoss": 0.0,
150563
- // "posMargin": 5.38351112,
150564
- // "posMaint": 0.12927722,
150565
- // "maintMargin": 5.38364112,
150566
- // "realisedGrossPnl": 0.0,
150567
- // "realisedPnl": -0.0160926,
150568
- // "unrealisedPnl": 1.3E-4,
150569
- // "unrealisedPnlPcnt": 0.0,
150570
- // "unrealisedRoePcnt": 0.0,
150571
- // "avgEntryPrice": 26821.0,
150572
- // "liquidationPrice": 21567.0,
150573
- // "bankruptPrice": 21456.0,
150574
- // "settleCurrency": "USDT",
150575
- // "isInverse": false,
150576
- // "maintainMargin": 0.004
150577
- // }
150578
- // ]
150579
- // }
148899
+ // {
148900
+ // "code": "200000",
148901
+ // "data": {
148902
+ // "id": "6505ee6eaff4070001f651c4",
148903
+ // "symbol": "XBTUSDTM",
148904
+ // "autoDeposit": false,
148905
+ // "maintMarginReq": 0,
148906
+ // "riskLimit": 200,
148907
+ // "realLeverage": 0.0,
148908
+ // "crossMode": false,
148909
+ // "delevPercentage": 0.0,
148910
+ // "currentTimestamp": 1694887534594,
148911
+ // "currentQty": 0,
148912
+ // "currentCost": 0.0,
148913
+ // "currentComm": 0.0,
148914
+ // "unrealisedCost": 0.0,
148915
+ // "realisedGrossCost": 0.0,
148916
+ // "realisedCost": 0.0,
148917
+ // "isOpen": false,
148918
+ // "markPrice": 26611.71,
148919
+ // "markValue": 0.0,
148920
+ // "posCost": 0.0,
148921
+ // "posCross": 0,
148922
+ // "posInit": 0.0,
148923
+ // "posComm": 0.0,
148924
+ // "posLoss": 0.0,
148925
+ // "posMargin": 0.0,
148926
+ // "posMaint": 0.0,
148927
+ // "maintMargin": 0.0,
148928
+ // "realisedGrossPnl": 0.0,
148929
+ // "realisedPnl": 0.0,
148930
+ // "unrealisedPnl": 0.0,
148931
+ // "unrealisedPnlPcnt": 0,
148932
+ // "unrealisedRoePcnt": 0,
148933
+ // "avgEntryPrice": 0.0,
148934
+ // "liquidationPrice": 0.0,
148935
+ // "bankruptPrice": 0.0,
148936
+ // "settleCurrency": "USDT",
148937
+ // "maintainMargin": 0,
148938
+ // "riskLimitLevel": 1
148939
+ // }
148940
+ // }
150580
148941
  //
150581
- const data = this.safeValue(response, 'data', []);
150582
- return this.parsePosition(data[0], market);
148942
+ const data = this.safeValue(response, 'data', {});
148943
+ return this.parsePosition(data, market);
150583
148944
  }
150584
148945
  async fetchPositions(symbols = undefined, params = {}) {
150585
148946
  /**
@@ -150725,7 +149086,7 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
150725
149086
  'unrealizedPnl': this.parseNumber(unrealisedPnl),
150726
149087
  'contracts': this.parseNumber(_base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAbs */ .O.stringAbs(size)),
150727
149088
  'contractSize': this.safeValue(market, 'contractSize'),
150728
- 'realizedPnl': this.safeNumber(position, 'realised_pnl'),
149089
+ 'realizedPnl': this.safeNumber(position, 'realisedPnl'),
150729
149090
  'marginRatio': undefined,
150730
149091
  'liquidationPrice': this.safeNumber(position, 'liquidationPrice'),
150731
149092
  'markPrice': this.safeNumber(position, 'markPrice'),
@@ -154998,7 +153359,7 @@ class lbank extends _abstract_lbank_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
154998
153359
  request['time'] = since;
154999
153360
  }
155000
153361
  if (limit !== undefined) {
155001
- request['size'] = limit;
153362
+ request['size'] = Math.min(limit, 600);
155002
153363
  }
155003
153364
  const response = await this.publicGetTrades(this.extend(request, params));
155004
153365
  return this.parseTrades(response, market, since, limit);
@@ -156408,7 +154769,7 @@ class lbank2 extends _abstract_lbank2_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
156408
154769
  request['time'] = since;
156409
154770
  }
156410
154771
  if (limit !== undefined) {
156411
- request['size'] = limit;
154772
+ request['size'] = Math.min(limit, 600);
156412
154773
  }
156413
154774
  else {
156414
154775
  request['size'] = 600; // max
@@ -193875,8 +192236,8 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
193875
192236
  for (let i = 0; i < symbols.length; i++) {
193876
192237
  const symbol = symbols[i];
193877
192238
  const market = this.market(symbol);
193878
- const messageHash = market['lowercaseId'] + '@' + name;
193879
- subParams.push(messageHash);
192239
+ const currentMessageHash = market['lowercaseId'] + '@' + name;
192240
+ subParams.push(currentMessageHash);
193880
192241
  }
193881
192242
  const messageHash = 'multipleTrades::' + symbols.join(',');
193882
192243
  const query = this.omit(params, 'type');
@@ -194194,10 +192555,10 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
194194
192555
  const hashes = [];
194195
192556
  for (let i = 0; i < symbolsAndTimeframes.length; i++) {
194196
192557
  const data = symbolsAndTimeframes[i];
194197
- const symbol = data[0];
194198
- const timeframe = data[1];
194199
- const interval = this.safeString(this.timeframes, timeframe, timeframe);
194200
- const market = this.market(symbol);
192558
+ const symbolString = data[0];
192559
+ const timeframeString = data[1];
192560
+ const interval = this.safeString(this.timeframes, timeframeString, timeframeString);
192561
+ const market = this.market(symbolString);
194201
192562
  let marketId = market['lowercaseId'];
194202
192563
  if (name === 'indexPriceKline') {
194203
192564
  // weird behavior for index price kline we can't use the perp suffix
@@ -194205,7 +192566,7 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
194205
192566
  }
194206
192567
  const topic = marketId + '@' + name + '_' + interval;
194207
192568
  subParams.push(topic);
194208
- hashes.push(symbol + '#' + timeframe);
192569
+ hashes.push(symbolString + '#' + timeframeString);
194209
192570
  }
194210
192571
  const messageHash = 'multipleOHLCV::' + hashes.join(',');
194211
192572
  const url = this.urls['api']['ws'][type] + '/' + this.stream(type, messageHash);
@@ -206961,17 +205322,17 @@ class bybit extends _bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
206961
205322
  let firstSymbol = undefined;
206962
205323
  for (let i = 0; i < symbolsAndTimeframes.length; i++) {
206963
205324
  const data = symbolsAndTimeframes[i];
206964
- let symbol = this.safeString(data, 0);
206965
- const timeframe = this.safeString(data, 1);
206966
- const market = this.market(symbol);
206967
- symbol = market['symbol'];
205325
+ let symbolString = this.safeString(data, 0);
205326
+ const timeframeString = this.safeString(data, 1);
205327
+ const market = this.market(symbolString);
205328
+ symbolString = market['symbol'];
206968
205329
  if (i === 0) {
206969
205330
  firstSymbol = market['symbol'];
206970
205331
  }
206971
- const timeframeId = this.safeString(this.timeframes, timeframe, timeframe);
205332
+ const timeframeId = this.safeString(this.timeframes, timeframeString, timeframeString);
206972
205333
  const topic = 'kline.' + timeframeId + '.' + market['id'];
206973
205334
  topics.push(topic);
206974
- hashes.push(symbol + '#' + timeframe);
205335
+ hashes.push(symbolString + '#' + timeframeString);
206975
205336
  }
206976
205337
  const messageHash = 'multipleOHLCV::' + hashes.join(',');
206977
205338
  const url = this.getUrlByMarketType(firstSymbol, false, params);
@@ -207518,8 +205879,8 @@ class bybit extends _bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
207518
205879
  }
207519
205880
  const keys = Object.keys(symbols);
207520
205881
  for (let i = 0; i < keys.length; i++) {
207521
- const messageHash = 'myTrades:' + keys[i];
207522
- client.resolve(trades, messageHash);
205882
+ const currentMessageHash = 'myTrades:' + keys[i];
205883
+ client.resolve(trades, currentMessageHash);
207523
205884
  }
207524
205885
  // non-symbol specific
207525
205886
  const messageHash = 'myTrades';
@@ -207651,25 +206012,26 @@ class bybit extends _bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
207651
206012
  const first = this.safeValue(rawOrders, 0, {});
207652
206013
  const category = this.safeString(first, 'category');
207653
206014
  const isSpot = category === 'spot';
207654
- let parser = undefined;
207655
- if (isSpot) {
207656
- parser = 'parseWsSpotOrder';
207657
- }
207658
- else {
207659
- parser = 'parseContractOrder';
206015
+ if (!isSpot) {
207660
206016
  rawOrders = this.safeValue(rawOrders, 'result', rawOrders);
207661
206017
  }
207662
206018
  const symbols = {};
207663
206019
  for (let i = 0; i < rawOrders.length; i++) {
207664
- const parsed = this[parser](rawOrders[i]);
206020
+ let parsed = undefined;
206021
+ if (isSpot) {
206022
+ parsed = this.parseWsSpotOrder(rawOrders[i]);
206023
+ }
206024
+ else {
206025
+ parsed = this.parseOrder(rawOrders[i]);
206026
+ }
207665
206027
  const symbol = parsed['symbol'];
207666
206028
  symbols[symbol] = true;
207667
206029
  orders.append(parsed);
207668
206030
  }
207669
206031
  const symbolsArray = Object.keys(symbols);
207670
206032
  for (let i = 0; i < symbolsArray.length; i++) {
207671
- const messageHash = 'orders:' + symbolsArray[i];
207672
- client.resolve(orders, messageHash);
206033
+ const currentMessageHash = 'orders:' + symbolsArray[i];
206034
+ client.resolve(orders, currentMessageHash);
207673
206035
  }
207674
206036
  const messageHash = 'orders';
207675
206037
  client.resolve(orders, messageHash);
@@ -210668,11 +209030,11 @@ class coinbasepro extends _coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/* ["defau
210668
209030
  // reason: 'filled'
210669
209031
  // }
210670
209032
  //
210671
- let orders = this.orders;
210672
- if (orders === undefined) {
209033
+ let currentOrders = this.orders;
209034
+ if (currentOrders === undefined) {
210673
209035
  const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
210674
- orders = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_3__/* .ArrayCacheBySymbolById */ .hl(limit);
210675
- this.orders = orders;
209036
+ currentOrders = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_3__/* .ArrayCacheBySymbolById */ .hl(limit);
209037
+ this.orders = currentOrders;
210676
209038
  }
210677
209039
  const type = this.safeString(message, 'type');
210678
209040
  const marketId = this.safeString(message, 'product_id');
@@ -210709,9 +209071,9 @@ class coinbasepro extends _coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/* ["defau
210709
209071
  let totalAmount = 0;
210710
209072
  const trades = previousOrder['trades'];
210711
209073
  for (let i = 0; i < trades.length; i++) {
210712
- const trade = trades[i];
210713
- totalCost = this.sum(totalCost, trade['cost']);
210714
- totalAmount = this.sum(totalAmount, trade['amount']);
209074
+ const tradeEntry = trades[i];
209075
+ totalCost = this.sum(totalCost, tradeEntry['cost']);
209076
+ totalAmount = this.sum(totalAmount, tradeEntry['amount']);
210715
209077
  }
210716
209078
  if (totalAmount > 0) {
210717
209079
  previousOrder['average'] = totalCost / totalAmount;
@@ -210839,12 +209201,12 @@ class coinbasepro extends _coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/* ["defau
210839
209201
  client.resolve(ticker, messageHash);
210840
209202
  const messageHashes = this.findMessageHashes(client, 'tickers::');
210841
209203
  for (let i = 0; i < messageHashes.length; i++) {
210842
- const messageHash = messageHashes[i];
210843
- const parts = messageHash.split('::');
209204
+ const currentMessageHash = messageHashes[i];
209205
+ const parts = currentMessageHash.split('::');
210844
209206
  const symbolsString = parts[1];
210845
209207
  const symbols = symbolsString.split(',');
210846
209208
  if (this.inArray(symbol, symbols)) {
210847
- client.resolve(ticker, messageHash);
209209
+ client.resolve(ticker, currentMessageHash);
210848
209210
  }
210849
209211
  }
210850
209212
  }
@@ -221089,8 +219451,7 @@ class huobijp extends _huobijp_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
221089
219451
  // unroll the accumulated deltas
221090
219452
  const messages = orderbook.cache;
221091
219453
  for (let i = 0; i < messages.length; i++) {
221092
- const message = messages[i];
221093
- this.handleOrderBookMessage(client, message, orderbook);
219454
+ this.handleOrderBookMessage(client, messages[i], orderbook);
221094
219455
  }
221095
219456
  this.orderbooks[symbol] = orderbook;
221096
219457
  client.resolve(orderbook, messageHash);
@@ -224300,9 +222661,9 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
224300
222661
  let totalAmount = '0';
224301
222662
  const trades = previousOrder['trades'];
224302
222663
  for (let i = 0; i < trades.length; i++) {
224303
- const trade = trades[i];
224304
- totalCost = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAdd */ .O.stringAdd(totalCost, this.numberToString(trade['cost']));
224305
- totalAmount = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAdd */ .O.stringAdd(totalAmount, this.numberToString(trade['amount']));
222664
+ const currentTrade = trades[i];
222665
+ totalCost = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAdd */ .O.stringAdd(totalCost, this.numberToString(currentTrade['cost']));
222666
+ totalAmount = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAdd */ .O.stringAdd(totalAmount, this.numberToString(currentTrade['amount']));
224306
222667
  }
224307
222668
  if (_base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringGt */ .O.stringGt(totalAmount, '0')) {
224308
222669
  previousOrder['average'] = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringDiv */ .O.stringDiv(totalCost, totalAmount);
@@ -224337,13 +222698,13 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
224337
222698
  if (isCancel) {
224338
222699
  // get order without symbol
224339
222700
  for (let i = 0; i < orders.length; i++) {
224340
- const order = orders[i];
224341
- if (order['id'] === message['order_id']) {
224342
- orders[i] = this.extend(order, {
222701
+ const currentOrder = orders[i];
222702
+ if (currentOrder['id'] === message['order_id']) {
222703
+ orders[i] = this.extend(currentOrder, {
224343
222704
  'status': 'canceled',
224344
222705
  });
224345
222706
  client.resolve(orders, 'orders');
224346
- client.resolve(orders, 'orders:' + order['symbol']);
222707
+ client.resolve(orders, 'orders:' + currentOrder['symbol']);
224347
222708
  break;
224348
222709
  }
224349
222710
  }
@@ -225130,7 +223491,7 @@ class kucoin extends _kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
225130
223491
  'watchOrderBook': true,
225131
223492
  'watchOrders': true,
225132
223493
  'watchMyTrades': true,
225133
- 'watchTickers': false,
223494
+ 'watchTickers': true,
225134
223495
  'watchTicker': true,
225135
223496
  'watchTrades': true,
225136
223497
  'watchTradesForSymbols': true,
@@ -225248,6 +223609,29 @@ class kucoin extends _kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
225248
223609
  const messageHash = 'ticker:' + symbol;
225249
223610
  return await this.subscribe(url, messageHash, topic, query);
225250
223611
  }
223612
+ async watchTickers(symbols = undefined, params = {}) {
223613
+ /**
223614
+ * @method
223615
+ * @name kucoin#watchTickers
223616
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
223617
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
223618
+ * @param {object} [params] extra parameters specific to the kucoin api endpoint
223619
+ * @returns {object} a [ticker structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
223620
+ */
223621
+ await this.loadMarkets();
223622
+ symbols = this.marketSymbols(symbols);
223623
+ let messageHash = 'tickers';
223624
+ if (symbols !== undefined) {
223625
+ messageHash = 'tickers::' + symbols.join(',');
223626
+ }
223627
+ const url = await this.negotiate(false);
223628
+ const topic = '/market/ticker:all';
223629
+ const tickers = await this.subscribe(url, messageHash, topic, params);
223630
+ if (this.newUpdates) {
223631
+ return tickers;
223632
+ }
223633
+ return this.filterByArray(this.tickers, 'symbol', symbols);
223634
+ }
225251
223635
  handleTicker(client, message) {
225252
223636
  //
225253
223637
  // market/snapshot
@@ -225307,7 +223691,14 @@ class kucoin extends _kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
225307
223691
  let market = undefined;
225308
223692
  if (topic !== undefined) {
225309
223693
  const parts = topic.split(':');
225310
- const marketId = this.safeString(parts, 1);
223694
+ const first = this.safeString(parts, 1);
223695
+ let marketId = undefined;
223696
+ if (first === 'all') {
223697
+ marketId = this.safeString(message, 'subject');
223698
+ }
223699
+ else {
223700
+ marketId = first;
223701
+ }
225311
223702
  market = this.safeMarket(marketId, market, '-');
225312
223703
  }
225313
223704
  const data = this.safeValue(message, 'data', {});
@@ -225317,6 +223708,21 @@ class kucoin extends _kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
225317
223708
  this.tickers[symbol] = ticker;
225318
223709
  const messageHash = 'ticker:' + symbol;
225319
223710
  client.resolve(ticker, messageHash);
223711
+ // watchTickers
223712
+ client.resolve(ticker, 'tickers');
223713
+ const messageHashes = this.findMessageHashes(client, 'tickers::');
223714
+ for (let i = 0; i < messageHashes.length; i++) {
223715
+ const currentMessageHash = messageHashes[i];
223716
+ const parts = currentMessageHash.split('::');
223717
+ const symbolsString = parts[1];
223718
+ const symbols = symbolsString.split(',');
223719
+ const tickers = this.filterByArray(this.tickers, 'symbol', symbols);
223720
+ const tickersSymbols = Object.keys(tickers);
223721
+ const numTickers = tickersSymbols.length;
223722
+ if (numTickers > 0) {
223723
+ client.resolve(tickers, currentMessageHash);
223724
+ }
223725
+ }
225320
223726
  }
225321
223727
  async watchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
225322
223728
  /**
@@ -225996,6 +224402,10 @@ class kucoin extends _kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
225996
224402
  // }
225997
224403
  // }
225998
224404
  //
224405
+ const topic = this.safeString(message, 'topic');
224406
+ if (topic === '/market/ticker:all') {
224407
+ return this.handleTicker(client, message);
224408
+ }
225999
224409
  const subject = this.safeString(message, 'subject');
226000
224410
  const methods = {
226001
224411
  'trade.l2update': this.handleOrderBook,
@@ -226458,9 +224868,9 @@ class kucoinfutures extends _kucoinfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
226458
224868
  const deltaEnd = this.safeInteger(data, 'sequence');
226459
224869
  if (nonce === undefined) {
226460
224870
  const cacheLength = storedOrderBook.cache.length;
226461
- const topicParts = topic.split(':');
226462
- const topicSymbol = this.safeString(topicParts, 1);
226463
- const topicChannel = this.safeString(topicParts, 0);
224871
+ const topicPartsNew = topic.split(':');
224872
+ const topicSymbol = this.safeString(topicPartsNew, 1);
224873
+ const topicChannel = this.safeString(topicPartsNew, 0);
226464
224874
  const subscriptions = Object.keys(client.subscriptions);
226465
224875
  let subscription = undefined;
226466
224876
  for (let i = 0; i < subscriptions.length; i++) {
@@ -232592,8 +231002,8 @@ class phemex extends _phemex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
232592
231002
  return method.call(this, client, message);
232593
231003
  }
232594
231004
  }
232595
- const method = this.safeString(message, 'method', '');
232596
- if (('market24h' in message) || ('spot_market24h' in message) || (method.indexOf('perp_market24h_pack_p') >= 0)) {
231005
+ const methodName = this.safeString(message, 'method', '');
231006
+ if (('market24h' in message) || ('spot_market24h' in message) || (methodName.indexOf('perp_market24h_pack_p') >= 0)) {
232597
231007
  return this.handleTicker(client, message);
232598
231008
  }
232599
231009
  else if (('trades' in message) || ('trades_p' in message)) {
@@ -273424,38 +271834,38 @@ var __webpack_exports__ = {};
273424
271834
  (() => {
273425
271835
  __webpack_require__.r(__webpack_exports__);
273426
271836
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
273427
- /* harmony export */ "AccountNotEnabled": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.AccountNotEnabled),
273428
- /* harmony export */ "AccountSuspended": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.AccountSuspended),
273429
- /* harmony export */ "AddressPending": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.AddressPending),
273430
- /* harmony export */ "ArgumentsRequired": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.ArgumentsRequired),
273431
- /* harmony export */ "AuthenticationError": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.AuthenticationError),
273432
- /* harmony export */ "BadRequest": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.BadRequest),
273433
- /* harmony export */ "BadResponse": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.BadResponse),
273434
- /* harmony export */ "BadSymbol": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.BadSymbol),
273435
- /* harmony export */ "BaseError": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.BaseError),
273436
- /* harmony export */ "CancelPending": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.CancelPending),
273437
- /* harmony export */ "DDoSProtection": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.DDoSProtection),
273438
- /* harmony export */ "DuplicateOrderId": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.DuplicateOrderId),
271837
+ /* harmony export */ "AccountNotEnabled": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.AccountNotEnabled),
271838
+ /* harmony export */ "AccountSuspended": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.AccountSuspended),
271839
+ /* harmony export */ "AddressPending": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.AddressPending),
271840
+ /* harmony export */ "ArgumentsRequired": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.ArgumentsRequired),
271841
+ /* harmony export */ "AuthenticationError": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.AuthenticationError),
271842
+ /* harmony export */ "BadRequest": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.BadRequest),
271843
+ /* harmony export */ "BadResponse": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.BadResponse),
271844
+ /* harmony export */ "BadSymbol": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.BadSymbol),
271845
+ /* harmony export */ "BaseError": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.BaseError),
271846
+ /* harmony export */ "CancelPending": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.CancelPending),
271847
+ /* harmony export */ "DDoSProtection": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.DDoSProtection),
271848
+ /* harmony export */ "DuplicateOrderId": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.DuplicateOrderId),
273439
271849
  /* harmony export */ "Exchange": () => (/* reexport safe */ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__.e),
273440
- /* harmony export */ "ExchangeError": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.ExchangeError),
273441
- /* harmony export */ "ExchangeNotAvailable": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.ExchangeNotAvailable),
273442
- /* harmony export */ "InsufficientFunds": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.InsufficientFunds),
273443
- /* harmony export */ "InvalidAddress": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.InvalidAddress),
273444
- /* harmony export */ "InvalidNonce": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.InvalidNonce),
273445
- /* harmony export */ "InvalidOrder": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.InvalidOrder),
273446
- /* harmony export */ "MarginModeAlreadySet": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.MarginModeAlreadySet),
273447
- /* harmony export */ "NetworkError": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.NetworkError),
273448
- /* harmony export */ "NotSupported": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.NotSupported),
273449
- /* harmony export */ "NullResponse": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.NullResponse),
273450
- /* harmony export */ "OnMaintenance": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.OnMaintenance),
273451
- /* harmony export */ "OrderImmediatelyFillable": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.OrderImmediatelyFillable),
273452
- /* harmony export */ "OrderNotCached": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.OrderNotCached),
273453
- /* harmony export */ "OrderNotFillable": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.OrderNotFillable),
273454
- /* harmony export */ "OrderNotFound": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.OrderNotFound),
273455
- /* harmony export */ "PermissionDenied": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.PermissionDenied),
273456
- /* harmony export */ "Precise": () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_166__.O),
273457
- /* harmony export */ "RateLimitExceeded": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.RateLimitExceeded),
273458
- /* harmony export */ "RequestTimeout": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.RequestTimeout),
271850
+ /* harmony export */ "ExchangeError": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.ExchangeError),
271851
+ /* harmony export */ "ExchangeNotAvailable": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.ExchangeNotAvailable),
271852
+ /* harmony export */ "InsufficientFunds": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.InsufficientFunds),
271853
+ /* harmony export */ "InvalidAddress": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.InvalidAddress),
271854
+ /* harmony export */ "InvalidNonce": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.InvalidNonce),
271855
+ /* harmony export */ "InvalidOrder": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.InvalidOrder),
271856
+ /* harmony export */ "MarginModeAlreadySet": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.MarginModeAlreadySet),
271857
+ /* harmony export */ "NetworkError": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.NetworkError),
271858
+ /* harmony export */ "NotSupported": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.NotSupported),
271859
+ /* harmony export */ "NullResponse": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.NullResponse),
271860
+ /* harmony export */ "OnMaintenance": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.OnMaintenance),
271861
+ /* harmony export */ "OrderImmediatelyFillable": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.OrderImmediatelyFillable),
271862
+ /* harmony export */ "OrderNotCached": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.OrderNotCached),
271863
+ /* harmony export */ "OrderNotFillable": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.OrderNotFillable),
271864
+ /* harmony export */ "OrderNotFound": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.OrderNotFound),
271865
+ /* harmony export */ "PermissionDenied": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.PermissionDenied),
271866
+ /* harmony export */ "Precise": () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_165__.O),
271867
+ /* harmony export */ "RateLimitExceeded": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.RateLimitExceeded),
271868
+ /* harmony export */ "RequestTimeout": () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__.RequestTimeout),
273459
271869
  /* harmony export */ "ace": () => (/* reexport safe */ _src_ace_js__WEBPACK_IMPORTED_MODULE_1__.Z),
273460
271870
  /* harmony export */ "alpaca": () => (/* reexport safe */ _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__.Z),
273461
271871
  /* harmony export */ "ascendex": () => (/* reexport safe */ _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__.Z),
@@ -273487,92 +271897,91 @@ __webpack_require__.r(__webpack_exports__);
273487
271897
  /* harmony export */ "bitstamp1": () => (/* reexport safe */ _src_bitstamp1_js__WEBPACK_IMPORTED_MODULE_29__.Z),
273488
271898
  /* harmony export */ "bittrex": () => (/* reexport safe */ _src_bittrex_js__WEBPACK_IMPORTED_MODULE_30__.Z),
273489
271899
  /* harmony export */ "bitvavo": () => (/* reexport safe */ _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_31__.Z),
273490
- /* harmony export */ "bkex": () => (/* reexport safe */ _src_bkex_js__WEBPACK_IMPORTED_MODULE_32__.Z),
273491
- /* harmony export */ "bl3p": () => (/* reexport safe */ _src_bl3p_js__WEBPACK_IMPORTED_MODULE_33__.Z),
273492
- /* harmony export */ "blockchaincom": () => (/* reexport safe */ _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_34__.Z),
273493
- /* harmony export */ "btcalpha": () => (/* reexport safe */ _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_35__.Z),
273494
- /* harmony export */ "btcbox": () => (/* reexport safe */ _src_btcbox_js__WEBPACK_IMPORTED_MODULE_36__.Z),
273495
- /* harmony export */ "btcmarkets": () => (/* reexport safe */ _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_37__.Z),
273496
- /* harmony export */ "btctradeua": () => (/* reexport safe */ _src_btctradeua_js__WEBPACK_IMPORTED_MODULE_38__.Z),
273497
- /* harmony export */ "btcturk": () => (/* reexport safe */ _src_btcturk_js__WEBPACK_IMPORTED_MODULE_39__.Z),
273498
- /* harmony export */ "bybit": () => (/* reexport safe */ _src_bybit_js__WEBPACK_IMPORTED_MODULE_40__.Z),
273499
- /* harmony export */ "cex": () => (/* reexport safe */ _src_cex_js__WEBPACK_IMPORTED_MODULE_41__.Z),
273500
- /* harmony export */ "coinbase": () => (/* reexport safe */ _src_coinbase_js__WEBPACK_IMPORTED_MODULE_42__.Z),
273501
- /* harmony export */ "coinbaseprime": () => (/* reexport safe */ _src_coinbaseprime_js__WEBPACK_IMPORTED_MODULE_43__.Z),
273502
- /* harmony export */ "coinbasepro": () => (/* reexport safe */ _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_44__.Z),
273503
- /* harmony export */ "coincheck": () => (/* reexport safe */ _src_coincheck_js__WEBPACK_IMPORTED_MODULE_45__.Z),
273504
- /* harmony export */ "coinex": () => (/* reexport safe */ _src_coinex_js__WEBPACK_IMPORTED_MODULE_46__.Z),
273505
- /* harmony export */ "coinfalcon": () => (/* reexport safe */ _src_coinfalcon_js__WEBPACK_IMPORTED_MODULE_47__.Z),
273506
- /* harmony export */ "coinmate": () => (/* reexport safe */ _src_coinmate_js__WEBPACK_IMPORTED_MODULE_48__.Z),
273507
- /* harmony export */ "coinone": () => (/* reexport safe */ _src_coinone_js__WEBPACK_IMPORTED_MODULE_49__.Z),
273508
- /* harmony export */ "coinsph": () => (/* reexport safe */ _src_coinsph_js__WEBPACK_IMPORTED_MODULE_50__.Z),
273509
- /* harmony export */ "coinspot": () => (/* reexport safe */ _src_coinspot_js__WEBPACK_IMPORTED_MODULE_51__.Z),
273510
- /* harmony export */ "cryptocom": () => (/* reexport safe */ _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_52__.Z),
273511
- /* harmony export */ "currencycom": () => (/* reexport safe */ _src_currencycom_js__WEBPACK_IMPORTED_MODULE_53__.Z),
271900
+ /* harmony export */ "bl3p": () => (/* reexport safe */ _src_bl3p_js__WEBPACK_IMPORTED_MODULE_32__.Z),
271901
+ /* harmony export */ "blockchaincom": () => (/* reexport safe */ _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_33__.Z),
271902
+ /* harmony export */ "btcalpha": () => (/* reexport safe */ _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_34__.Z),
271903
+ /* harmony export */ "btcbox": () => (/* reexport safe */ _src_btcbox_js__WEBPACK_IMPORTED_MODULE_35__.Z),
271904
+ /* harmony export */ "btcmarkets": () => (/* reexport safe */ _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_36__.Z),
271905
+ /* harmony export */ "btctradeua": () => (/* reexport safe */ _src_btctradeua_js__WEBPACK_IMPORTED_MODULE_37__.Z),
271906
+ /* harmony export */ "btcturk": () => (/* reexport safe */ _src_btcturk_js__WEBPACK_IMPORTED_MODULE_38__.Z),
271907
+ /* harmony export */ "bybit": () => (/* reexport safe */ _src_bybit_js__WEBPACK_IMPORTED_MODULE_39__.Z),
271908
+ /* harmony export */ "cex": () => (/* reexport safe */ _src_cex_js__WEBPACK_IMPORTED_MODULE_40__.Z),
271909
+ /* harmony export */ "coinbase": () => (/* reexport safe */ _src_coinbase_js__WEBPACK_IMPORTED_MODULE_41__.Z),
271910
+ /* harmony export */ "coinbaseprime": () => (/* reexport safe */ _src_coinbaseprime_js__WEBPACK_IMPORTED_MODULE_42__.Z),
271911
+ /* harmony export */ "coinbasepro": () => (/* reexport safe */ _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_43__.Z),
271912
+ /* harmony export */ "coincheck": () => (/* reexport safe */ _src_coincheck_js__WEBPACK_IMPORTED_MODULE_44__.Z),
271913
+ /* harmony export */ "coinex": () => (/* reexport safe */ _src_coinex_js__WEBPACK_IMPORTED_MODULE_45__.Z),
271914
+ /* harmony export */ "coinfalcon": () => (/* reexport safe */ _src_coinfalcon_js__WEBPACK_IMPORTED_MODULE_46__.Z),
271915
+ /* harmony export */ "coinmate": () => (/* reexport safe */ _src_coinmate_js__WEBPACK_IMPORTED_MODULE_47__.Z),
271916
+ /* harmony export */ "coinone": () => (/* reexport safe */ _src_coinone_js__WEBPACK_IMPORTED_MODULE_48__.Z),
271917
+ /* harmony export */ "coinsph": () => (/* reexport safe */ _src_coinsph_js__WEBPACK_IMPORTED_MODULE_49__.Z),
271918
+ /* harmony export */ "coinspot": () => (/* reexport safe */ _src_coinspot_js__WEBPACK_IMPORTED_MODULE_50__.Z),
271919
+ /* harmony export */ "cryptocom": () => (/* reexport safe */ _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_51__.Z),
271920
+ /* harmony export */ "currencycom": () => (/* reexport safe */ _src_currencycom_js__WEBPACK_IMPORTED_MODULE_52__.Z),
273512
271921
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
273513
- /* harmony export */ "delta": () => (/* reexport safe */ _src_delta_js__WEBPACK_IMPORTED_MODULE_54__.Z),
273514
- /* harmony export */ "deribit": () => (/* reexport safe */ _src_deribit_js__WEBPACK_IMPORTED_MODULE_55__.Z),
273515
- /* harmony export */ "digifinex": () => (/* reexport safe */ _src_digifinex_js__WEBPACK_IMPORTED_MODULE_56__.Z),
273516
- /* harmony export */ "errors": () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__),
271922
+ /* harmony export */ "delta": () => (/* reexport safe */ _src_delta_js__WEBPACK_IMPORTED_MODULE_53__.Z),
271923
+ /* harmony export */ "deribit": () => (/* reexport safe */ _src_deribit_js__WEBPACK_IMPORTED_MODULE_54__.Z),
271924
+ /* harmony export */ "digifinex": () => (/* reexport safe */ _src_digifinex_js__WEBPACK_IMPORTED_MODULE_55__.Z),
271925
+ /* harmony export */ "errors": () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__),
273517
271926
  /* harmony export */ "exchanges": () => (/* binding */ exchanges),
273518
- /* harmony export */ "exmo": () => (/* reexport safe */ _src_exmo_js__WEBPACK_IMPORTED_MODULE_57__.Z),
273519
- /* harmony export */ "fmfwio": () => (/* reexport safe */ _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_58__.Z),
273520
- /* harmony export */ "functions": () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_167__),
273521
- /* harmony export */ "gate": () => (/* reexport safe */ _src_gate_js__WEBPACK_IMPORTED_MODULE_59__.Z),
273522
- /* harmony export */ "gateio": () => (/* reexport safe */ _src_gateio_js__WEBPACK_IMPORTED_MODULE_60__.Z),
273523
- /* harmony export */ "gemini": () => (/* reexport safe */ _src_gemini_js__WEBPACK_IMPORTED_MODULE_61__.Z),
273524
- /* harmony export */ "hitbtc": () => (/* reexport safe */ _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_62__.Z),
273525
- /* harmony export */ "hitbtc3": () => (/* reexport safe */ _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_63__.Z),
273526
- /* harmony export */ "hollaex": () => (/* reexport safe */ _src_hollaex_js__WEBPACK_IMPORTED_MODULE_64__.Z),
273527
- /* harmony export */ "huobi": () => (/* reexport safe */ _src_huobi_js__WEBPACK_IMPORTED_MODULE_65__.Z),
273528
- /* harmony export */ "huobijp": () => (/* reexport safe */ _src_huobijp_js__WEBPACK_IMPORTED_MODULE_66__.Z),
273529
- /* harmony export */ "huobipro": () => (/* reexport safe */ _src_huobipro_js__WEBPACK_IMPORTED_MODULE_67__.Z),
273530
- /* harmony export */ "idex": () => (/* reexport safe */ _src_idex_js__WEBPACK_IMPORTED_MODULE_68__.Z),
273531
- /* harmony export */ "independentreserve": () => (/* reexport safe */ _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_69__.Z),
273532
- /* harmony export */ "indodax": () => (/* reexport safe */ _src_indodax_js__WEBPACK_IMPORTED_MODULE_70__.Z),
273533
- /* harmony export */ "kraken": () => (/* reexport safe */ _src_kraken_js__WEBPACK_IMPORTED_MODULE_71__.Z),
273534
- /* harmony export */ "krakenfutures": () => (/* reexport safe */ _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_72__.Z),
273535
- /* harmony export */ "kucoin": () => (/* reexport safe */ _src_kucoin_js__WEBPACK_IMPORTED_MODULE_73__.Z),
273536
- /* harmony export */ "kucoinfutures": () => (/* reexport safe */ _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_74__.Z),
273537
- /* harmony export */ "kuna": () => (/* reexport safe */ _src_kuna_js__WEBPACK_IMPORTED_MODULE_75__.Z),
273538
- /* harmony export */ "latoken": () => (/* reexport safe */ _src_latoken_js__WEBPACK_IMPORTED_MODULE_76__.Z),
273539
- /* harmony export */ "lbank": () => (/* reexport safe */ _src_lbank_js__WEBPACK_IMPORTED_MODULE_77__.Z),
273540
- /* harmony export */ "lbank2": () => (/* reexport safe */ _src_lbank2_js__WEBPACK_IMPORTED_MODULE_78__.Z),
273541
- /* harmony export */ "luno": () => (/* reexport safe */ _src_luno_js__WEBPACK_IMPORTED_MODULE_79__.Z),
273542
- /* harmony export */ "lykke": () => (/* reexport safe */ _src_lykke_js__WEBPACK_IMPORTED_MODULE_80__.Z),
273543
- /* harmony export */ "mercado": () => (/* reexport safe */ _src_mercado_js__WEBPACK_IMPORTED_MODULE_81__.Z),
273544
- /* harmony export */ "mexc": () => (/* reexport safe */ _src_mexc_js__WEBPACK_IMPORTED_MODULE_82__.Z),
273545
- /* harmony export */ "mexc3": () => (/* reexport safe */ _src_mexc3_js__WEBPACK_IMPORTED_MODULE_83__.Z),
273546
- /* harmony export */ "ndax": () => (/* reexport safe */ _src_ndax_js__WEBPACK_IMPORTED_MODULE_84__.Z),
273547
- /* harmony export */ "novadax": () => (/* reexport safe */ _src_novadax_js__WEBPACK_IMPORTED_MODULE_85__.Z),
273548
- /* harmony export */ "oceanex": () => (/* reexport safe */ _src_oceanex_js__WEBPACK_IMPORTED_MODULE_86__.Z),
273549
- /* harmony export */ "okcoin": () => (/* reexport safe */ _src_okcoin_js__WEBPACK_IMPORTED_MODULE_87__.Z),
273550
- /* harmony export */ "okex": () => (/* reexport safe */ _src_okex_js__WEBPACK_IMPORTED_MODULE_88__.Z),
273551
- /* harmony export */ "okex5": () => (/* reexport safe */ _src_okex5_js__WEBPACK_IMPORTED_MODULE_89__.Z),
273552
- /* harmony export */ "okx": () => (/* reexport safe */ _src_okx_js__WEBPACK_IMPORTED_MODULE_90__.Z),
273553
- /* harmony export */ "paymium": () => (/* reexport safe */ _src_paymium_js__WEBPACK_IMPORTED_MODULE_91__.Z),
273554
- /* harmony export */ "phemex": () => (/* reexport safe */ _src_phemex_js__WEBPACK_IMPORTED_MODULE_92__.Z),
273555
- /* harmony export */ "poloniex": () => (/* reexport safe */ _src_poloniex_js__WEBPACK_IMPORTED_MODULE_93__.Z),
273556
- /* harmony export */ "poloniexfutures": () => (/* reexport safe */ _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_94__.Z),
271927
+ /* harmony export */ "exmo": () => (/* reexport safe */ _src_exmo_js__WEBPACK_IMPORTED_MODULE_56__.Z),
271928
+ /* harmony export */ "fmfwio": () => (/* reexport safe */ _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_57__.Z),
271929
+ /* harmony export */ "functions": () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_166__),
271930
+ /* harmony export */ "gate": () => (/* reexport safe */ _src_gate_js__WEBPACK_IMPORTED_MODULE_58__.Z),
271931
+ /* harmony export */ "gateio": () => (/* reexport safe */ _src_gateio_js__WEBPACK_IMPORTED_MODULE_59__.Z),
271932
+ /* harmony export */ "gemini": () => (/* reexport safe */ _src_gemini_js__WEBPACK_IMPORTED_MODULE_60__.Z),
271933
+ /* harmony export */ "hitbtc": () => (/* reexport safe */ _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_61__.Z),
271934
+ /* harmony export */ "hitbtc3": () => (/* reexport safe */ _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_62__.Z),
271935
+ /* harmony export */ "hollaex": () => (/* reexport safe */ _src_hollaex_js__WEBPACK_IMPORTED_MODULE_63__.Z),
271936
+ /* harmony export */ "huobi": () => (/* reexport safe */ _src_huobi_js__WEBPACK_IMPORTED_MODULE_64__.Z),
271937
+ /* harmony export */ "huobijp": () => (/* reexport safe */ _src_huobijp_js__WEBPACK_IMPORTED_MODULE_65__.Z),
271938
+ /* harmony export */ "huobipro": () => (/* reexport safe */ _src_huobipro_js__WEBPACK_IMPORTED_MODULE_66__.Z),
271939
+ /* harmony export */ "idex": () => (/* reexport safe */ _src_idex_js__WEBPACK_IMPORTED_MODULE_67__.Z),
271940
+ /* harmony export */ "independentreserve": () => (/* reexport safe */ _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_68__.Z),
271941
+ /* harmony export */ "indodax": () => (/* reexport safe */ _src_indodax_js__WEBPACK_IMPORTED_MODULE_69__.Z),
271942
+ /* harmony export */ "kraken": () => (/* reexport safe */ _src_kraken_js__WEBPACK_IMPORTED_MODULE_70__.Z),
271943
+ /* harmony export */ "krakenfutures": () => (/* reexport safe */ _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_71__.Z),
271944
+ /* harmony export */ "kucoin": () => (/* reexport safe */ _src_kucoin_js__WEBPACK_IMPORTED_MODULE_72__.Z),
271945
+ /* harmony export */ "kucoinfutures": () => (/* reexport safe */ _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_73__.Z),
271946
+ /* harmony export */ "kuna": () => (/* reexport safe */ _src_kuna_js__WEBPACK_IMPORTED_MODULE_74__.Z),
271947
+ /* harmony export */ "latoken": () => (/* reexport safe */ _src_latoken_js__WEBPACK_IMPORTED_MODULE_75__.Z),
271948
+ /* harmony export */ "lbank": () => (/* reexport safe */ _src_lbank_js__WEBPACK_IMPORTED_MODULE_76__.Z),
271949
+ /* harmony export */ "lbank2": () => (/* reexport safe */ _src_lbank2_js__WEBPACK_IMPORTED_MODULE_77__.Z),
271950
+ /* harmony export */ "luno": () => (/* reexport safe */ _src_luno_js__WEBPACK_IMPORTED_MODULE_78__.Z),
271951
+ /* harmony export */ "lykke": () => (/* reexport safe */ _src_lykke_js__WEBPACK_IMPORTED_MODULE_79__.Z),
271952
+ /* harmony export */ "mercado": () => (/* reexport safe */ _src_mercado_js__WEBPACK_IMPORTED_MODULE_80__.Z),
271953
+ /* harmony export */ "mexc": () => (/* reexport safe */ _src_mexc_js__WEBPACK_IMPORTED_MODULE_81__.Z),
271954
+ /* harmony export */ "mexc3": () => (/* reexport safe */ _src_mexc3_js__WEBPACK_IMPORTED_MODULE_82__.Z),
271955
+ /* harmony export */ "ndax": () => (/* reexport safe */ _src_ndax_js__WEBPACK_IMPORTED_MODULE_83__.Z),
271956
+ /* harmony export */ "novadax": () => (/* reexport safe */ _src_novadax_js__WEBPACK_IMPORTED_MODULE_84__.Z),
271957
+ /* harmony export */ "oceanex": () => (/* reexport safe */ _src_oceanex_js__WEBPACK_IMPORTED_MODULE_85__.Z),
271958
+ /* harmony export */ "okcoin": () => (/* reexport safe */ _src_okcoin_js__WEBPACK_IMPORTED_MODULE_86__.Z),
271959
+ /* harmony export */ "okex": () => (/* reexport safe */ _src_okex_js__WEBPACK_IMPORTED_MODULE_87__.Z),
271960
+ /* harmony export */ "okex5": () => (/* reexport safe */ _src_okex5_js__WEBPACK_IMPORTED_MODULE_88__.Z),
271961
+ /* harmony export */ "okx": () => (/* reexport safe */ _src_okx_js__WEBPACK_IMPORTED_MODULE_89__.Z),
271962
+ /* harmony export */ "paymium": () => (/* reexport safe */ _src_paymium_js__WEBPACK_IMPORTED_MODULE_90__.Z),
271963
+ /* harmony export */ "phemex": () => (/* reexport safe */ _src_phemex_js__WEBPACK_IMPORTED_MODULE_91__.Z),
271964
+ /* harmony export */ "poloniex": () => (/* reexport safe */ _src_poloniex_js__WEBPACK_IMPORTED_MODULE_92__.Z),
271965
+ /* harmony export */ "poloniexfutures": () => (/* reexport safe */ _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_93__.Z),
273557
271966
  /* harmony export */ "pro": () => (/* binding */ pro),
273558
- /* harmony export */ "probit": () => (/* reexport safe */ _src_probit_js__WEBPACK_IMPORTED_MODULE_95__.Z),
273559
- /* harmony export */ "tidex": () => (/* reexport safe */ _src_tidex_js__WEBPACK_IMPORTED_MODULE_96__.Z),
273560
- /* harmony export */ "timex": () => (/* reexport safe */ _src_timex_js__WEBPACK_IMPORTED_MODULE_97__.Z),
273561
- /* harmony export */ "tokocrypto": () => (/* reexport safe */ _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_98__.Z),
273562
- /* harmony export */ "upbit": () => (/* reexport safe */ _src_upbit_js__WEBPACK_IMPORTED_MODULE_99__.Z),
271967
+ /* harmony export */ "probit": () => (/* reexport safe */ _src_probit_js__WEBPACK_IMPORTED_MODULE_94__.Z),
271968
+ /* harmony export */ "tidex": () => (/* reexport safe */ _src_tidex_js__WEBPACK_IMPORTED_MODULE_95__.Z),
271969
+ /* harmony export */ "timex": () => (/* reexport safe */ _src_timex_js__WEBPACK_IMPORTED_MODULE_96__.Z),
271970
+ /* harmony export */ "tokocrypto": () => (/* reexport safe */ _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_97__.Z),
271971
+ /* harmony export */ "upbit": () => (/* reexport safe */ _src_upbit_js__WEBPACK_IMPORTED_MODULE_98__.Z),
273563
271972
  /* harmony export */ "version": () => (/* binding */ version),
273564
- /* harmony export */ "wavesexchange": () => (/* reexport safe */ _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_100__.Z),
273565
- /* harmony export */ "wazirx": () => (/* reexport safe */ _src_wazirx_js__WEBPACK_IMPORTED_MODULE_101__.Z),
273566
- /* harmony export */ "whitebit": () => (/* reexport safe */ _src_whitebit_js__WEBPACK_IMPORTED_MODULE_102__.Z),
273567
- /* harmony export */ "woo": () => (/* reexport safe */ _src_woo_js__WEBPACK_IMPORTED_MODULE_103__.Z),
273568
- /* harmony export */ "yobit": () => (/* reexport safe */ _src_yobit_js__WEBPACK_IMPORTED_MODULE_104__.Z),
273569
- /* harmony export */ "zaif": () => (/* reexport safe */ _src_zaif_js__WEBPACK_IMPORTED_MODULE_105__.Z),
273570
- /* harmony export */ "zonda": () => (/* reexport safe */ _src_zonda_js__WEBPACK_IMPORTED_MODULE_106__.Z)
271973
+ /* harmony export */ "wavesexchange": () => (/* reexport safe */ _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_99__.Z),
271974
+ /* harmony export */ "wazirx": () => (/* reexport safe */ _src_wazirx_js__WEBPACK_IMPORTED_MODULE_100__.Z),
271975
+ /* harmony export */ "whitebit": () => (/* reexport safe */ _src_whitebit_js__WEBPACK_IMPORTED_MODULE_101__.Z),
271976
+ /* harmony export */ "woo": () => (/* reexport safe */ _src_woo_js__WEBPACK_IMPORTED_MODULE_102__.Z),
271977
+ /* harmony export */ "yobit": () => (/* reexport safe */ _src_yobit_js__WEBPACK_IMPORTED_MODULE_103__.Z),
271978
+ /* harmony export */ "zaif": () => (/* reexport safe */ _src_zaif_js__WEBPACK_IMPORTED_MODULE_104__.Z),
271979
+ /* harmony export */ "zonda": () => (/* reexport safe */ _src_zonda_js__WEBPACK_IMPORTED_MODULE_105__.Z)
273571
271980
  /* harmony export */ });
273572
271981
  /* harmony import */ var _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
273573
- /* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_166__ = __webpack_require__(2194);
273574
- /* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_167__ = __webpack_require__(7100);
273575
- /* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__ = __webpack_require__(6689);
271982
+ /* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_165__ = __webpack_require__(2194);
271983
+ /* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_166__ = __webpack_require__(7100);
271984
+ /* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__ = __webpack_require__(6689);
273576
271985
  /* harmony import */ var _src_ace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9869);
273577
271986
  /* harmony import */ var _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5660);
273578
271987
  /* harmony import */ var _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9612);
@@ -273604,140 +272013,139 @@ __webpack_require__.r(__webpack_exports__);
273604
272013
  /* harmony import */ var _src_bitstamp1_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(1242);
273605
272014
  /* harmony import */ var _src_bittrex_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(8963);
273606
272015
  /* harmony import */ var _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(9943);
273607
- /* harmony import */ var _src_bkex_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(2574);
273608
- /* harmony import */ var _src_bl3p_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(9476);
273609
- /* harmony import */ var _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(182);
273610
- /* harmony import */ var _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(6246);
273611
- /* harmony import */ var _src_btcbox_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(7796);
273612
- /* harmony import */ var _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(1776);
273613
- /* harmony import */ var _src_btctradeua_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(8776);
273614
- /* harmony import */ var _src_btcturk_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(6304);
273615
- /* harmony import */ var _src_bybit_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(3527);
273616
- /* harmony import */ var _src_cex_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(6445);
273617
- /* harmony import */ var _src_coinbase_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(437);
273618
- /* harmony import */ var _src_coinbaseprime_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(1741);
273619
- /* harmony import */ var _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(8856);
273620
- /* harmony import */ var _src_coincheck_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(2117);
273621
- /* harmony import */ var _src_coinex_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(332);
273622
- /* harmony import */ var _src_coinfalcon_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(5585);
273623
- /* harmony import */ var _src_coinmate_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(9816);
273624
- /* harmony import */ var _src_coinone_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(7811);
273625
- /* harmony import */ var _src_coinsph_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(5782);
273626
- /* harmony import */ var _src_coinspot_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(7794);
273627
- /* harmony import */ var _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(9129);
273628
- /* harmony import */ var _src_currencycom_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(3214);
273629
- /* harmony import */ var _src_delta_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(1753);
273630
- /* harmony import */ var _src_deribit_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(24);
273631
- /* harmony import */ var _src_digifinex_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(8846);
273632
- /* harmony import */ var _src_exmo_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(1729);
273633
- /* harmony import */ var _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(5788);
273634
- /* harmony import */ var _src_gate_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(7290);
273635
- /* harmony import */ var _src_gateio_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(7036);
273636
- /* harmony import */ var _src_gemini_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(6743);
273637
- /* harmony import */ var _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(4714);
273638
- /* harmony import */ var _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(4815);
273639
- /* harmony import */ var _src_hollaex_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(8422);
273640
- /* harmony import */ var _src_huobi_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(8146);
273641
- /* harmony import */ var _src_huobijp_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(7034);
273642
- /* harmony import */ var _src_huobipro_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(5547);
273643
- /* harmony import */ var _src_idex_js__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(8232);
273644
- /* harmony import */ var _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(9570);
273645
- /* harmony import */ var _src_indodax_js__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(1605);
273646
- /* harmony import */ var _src_kraken_js__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(9922);
273647
- /* harmony import */ var _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(4470);
273648
- /* harmony import */ var _src_kucoin_js__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(3583);
273649
- /* harmony import */ var _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(1924);
273650
- /* harmony import */ var _src_kuna_js__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(7732);
273651
- /* harmony import */ var _src_latoken_js__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(2545);
273652
- /* harmony import */ var _src_lbank_js__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(3944);
273653
- /* harmony import */ var _src_lbank2_js__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(8601);
273654
- /* harmony import */ var _src_luno_js__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(1758);
273655
- /* harmony import */ var _src_lykke_js__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(3803);
273656
- /* harmony import */ var _src_mercado_js__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(9013);
273657
- /* harmony import */ var _src_mexc_js__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(6641);
273658
- /* harmony import */ var _src_mexc3_js__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(2305);
273659
- /* harmony import */ var _src_ndax_js__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(4531);
273660
- /* harmony import */ var _src_novadax_js__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(2449);
273661
- /* harmony import */ var _src_oceanex_js__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(6749);
273662
- /* harmony import */ var _src_okcoin_js__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(3007);
273663
- /* harmony import */ var _src_okex_js__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(5322);
273664
- /* harmony import */ var _src_okex5_js__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(7826);
273665
- /* harmony import */ var _src_okx_js__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(4042);
273666
- /* harmony import */ var _src_paymium_js__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(7082);
273667
- /* harmony import */ var _src_phemex_js__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(79);
273668
- /* harmony import */ var _src_poloniex_js__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(8891);
273669
- /* harmony import */ var _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(6877);
273670
- /* harmony import */ var _src_probit_js__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(3657);
273671
- /* harmony import */ var _src_tidex_js__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(4224);
273672
- /* harmony import */ var _src_timex_js__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(1067);
273673
- /* harmony import */ var _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(5261);
273674
- /* harmony import */ var _src_upbit_js__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(7584);
273675
- /* harmony import */ var _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(3853);
273676
- /* harmony import */ var _src_wazirx_js__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(6536);
273677
- /* harmony import */ var _src_whitebit_js__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(5467);
273678
- /* harmony import */ var _src_woo_js__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(517);
273679
- /* harmony import */ var _src_yobit_js__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(3850);
273680
- /* harmony import */ var _src_zaif_js__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(5934);
273681
- /* harmony import */ var _src_zonda_js__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(5140);
273682
- /* harmony import */ var _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(2467);
273683
- /* harmony import */ var _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(2383);
273684
- /* harmony import */ var _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(8848);
273685
- /* harmony import */ var _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(8764);
273686
- /* harmony import */ var _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(5078);
273687
- /* harmony import */ var _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(1326);
273688
- /* harmony import */ var _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(1230);
273689
- /* harmony import */ var _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(453);
273690
- /* harmony import */ var _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(9772);
273691
- /* harmony import */ var _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(588);
273692
- /* harmony import */ var _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(1885);
273693
- /* harmony import */ var _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(7504);
273694
- /* harmony import */ var _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(2302);
273695
- /* harmony import */ var _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(2191);
273696
- /* harmony import */ var _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(1297);
273697
- /* harmony import */ var _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(3005);
273698
- /* harmony import */ var _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(3623);
273699
- /* harmony import */ var _src_pro_bittrex_js__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(2883);
273700
- /* harmony import */ var _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(6977);
273701
- /* harmony import */ var _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(2519);
273702
- /* harmony import */ var _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(5030);
273703
- /* harmony import */ var _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(5272);
273704
- /* harmony import */ var _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(3414);
273705
- /* harmony import */ var _src_pro_coinbaseprime_js__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(3848);
273706
- /* harmony import */ var _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(8368);
273707
- /* harmony import */ var _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(204);
273708
- /* harmony import */ var _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(6820);
273709
- /* harmony import */ var _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(2952);
273710
- /* harmony import */ var _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(1788);
273711
- /* harmony import */ var _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(9004);
273712
- /* harmony import */ var _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(8335);
273713
- /* harmony import */ var _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(1465);
273714
- /* harmony import */ var _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(9488);
273715
- /* harmony import */ var _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(5189);
273716
- /* harmony import */ var _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(8559);
273717
- /* harmony import */ var _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(8384);
273718
- /* harmony import */ var _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(9021);
273719
- /* harmony import */ var _src_pro_huobipro_js__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(4625);
273720
- /* harmony import */ var _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(3484);
273721
- /* harmony import */ var _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(1311);
273722
- /* harmony import */ var _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(736);
273723
- /* harmony import */ var _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(449);
273724
- /* harmony import */ var _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(2387);
273725
- /* harmony import */ var _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(7181);
273726
- /* harmony import */ var _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(627);
273727
- /* harmony import */ var _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(6484);
273728
- /* harmony import */ var _src_pro_mexc3_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(5351);
273729
- /* harmony import */ var _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(8080);
273730
- /* harmony import */ var _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(7105);
273731
- /* harmony import */ var _src_pro_okex_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(1530);
273732
- /* harmony import */ var _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(2214);
273733
- /* harmony import */ var _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(4360);
273734
- /* harmony import */ var _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(7924);
273735
- /* harmony import */ var _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(3541);
273736
- /* harmony import */ var _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(9782);
273737
- /* harmony import */ var _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(7614);
273738
- /* harmony import */ var _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(4828);
273739
- /* harmony import */ var _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_164__ = __webpack_require__(5630);
273740
- /* harmony import */ var _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_165__ = __webpack_require__(3910);
272016
+ /* harmony import */ var _src_bl3p_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(9476);
272017
+ /* harmony import */ var _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(182);
272018
+ /* harmony import */ var _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(6246);
272019
+ /* harmony import */ var _src_btcbox_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(7796);
272020
+ /* harmony import */ var _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(1776);
272021
+ /* harmony import */ var _src_btctradeua_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(8776);
272022
+ /* harmony import */ var _src_btcturk_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(6304);
272023
+ /* harmony import */ var _src_bybit_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(3527);
272024
+ /* harmony import */ var _src_cex_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(6445);
272025
+ /* harmony import */ var _src_coinbase_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(437);
272026
+ /* harmony import */ var _src_coinbaseprime_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(1741);
272027
+ /* harmony import */ var _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(8856);
272028
+ /* harmony import */ var _src_coincheck_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(2117);
272029
+ /* harmony import */ var _src_coinex_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(332);
272030
+ /* harmony import */ var _src_coinfalcon_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(5585);
272031
+ /* harmony import */ var _src_coinmate_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(9816);
272032
+ /* harmony import */ var _src_coinone_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(7811);
272033
+ /* harmony import */ var _src_coinsph_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(5782);
272034
+ /* harmony import */ var _src_coinspot_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(7794);
272035
+ /* harmony import */ var _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(9129);
272036
+ /* harmony import */ var _src_currencycom_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(3214);
272037
+ /* harmony import */ var _src_delta_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(1753);
272038
+ /* harmony import */ var _src_deribit_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(24);
272039
+ /* harmony import */ var _src_digifinex_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(8846);
272040
+ /* harmony import */ var _src_exmo_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(1729);
272041
+ /* harmony import */ var _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(5788);
272042
+ /* harmony import */ var _src_gate_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(7290);
272043
+ /* harmony import */ var _src_gateio_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(7036);
272044
+ /* harmony import */ var _src_gemini_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(6743);
272045
+ /* harmony import */ var _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(4714);
272046
+ /* harmony import */ var _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(4815);
272047
+ /* harmony import */ var _src_hollaex_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(8422);
272048
+ /* harmony import */ var _src_huobi_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(8146);
272049
+ /* harmony import */ var _src_huobijp_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(7034);
272050
+ /* harmony import */ var _src_huobipro_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(5547);
272051
+ /* harmony import */ var _src_idex_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(8232);
272052
+ /* harmony import */ var _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(9570);
272053
+ /* harmony import */ var _src_indodax_js__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(1605);
272054
+ /* harmony import */ var _src_kraken_js__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(9922);
272055
+ /* harmony import */ var _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(4470);
272056
+ /* harmony import */ var _src_kucoin_js__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(3583);
272057
+ /* harmony import */ var _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(1924);
272058
+ /* harmony import */ var _src_kuna_js__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(7732);
272059
+ /* harmony import */ var _src_latoken_js__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(2545);
272060
+ /* harmony import */ var _src_lbank_js__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(3944);
272061
+ /* harmony import */ var _src_lbank2_js__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(8601);
272062
+ /* harmony import */ var _src_luno_js__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(1758);
272063
+ /* harmony import */ var _src_lykke_js__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(3803);
272064
+ /* harmony import */ var _src_mercado_js__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(9013);
272065
+ /* harmony import */ var _src_mexc_js__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(6641);
272066
+ /* harmony import */ var _src_mexc3_js__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(2305);
272067
+ /* harmony import */ var _src_ndax_js__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(4531);
272068
+ /* harmony import */ var _src_novadax_js__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(2449);
272069
+ /* harmony import */ var _src_oceanex_js__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(6749);
272070
+ /* harmony import */ var _src_okcoin_js__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(3007);
272071
+ /* harmony import */ var _src_okex_js__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(5322);
272072
+ /* harmony import */ var _src_okex5_js__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(7826);
272073
+ /* harmony import */ var _src_okx_js__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(4042);
272074
+ /* harmony import */ var _src_paymium_js__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(7082);
272075
+ /* harmony import */ var _src_phemex_js__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(79);
272076
+ /* harmony import */ var _src_poloniex_js__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(8891);
272077
+ /* harmony import */ var _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(6877);
272078
+ /* harmony import */ var _src_probit_js__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(3657);
272079
+ /* harmony import */ var _src_tidex_js__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(4224);
272080
+ /* harmony import */ var _src_timex_js__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(1067);
272081
+ /* harmony import */ var _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(5261);
272082
+ /* harmony import */ var _src_upbit_js__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(7584);
272083
+ /* harmony import */ var _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(3853);
272084
+ /* harmony import */ var _src_wazirx_js__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(6536);
272085
+ /* harmony import */ var _src_whitebit_js__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(5467);
272086
+ /* harmony import */ var _src_woo_js__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(517);
272087
+ /* harmony import */ var _src_yobit_js__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(3850);
272088
+ /* harmony import */ var _src_zaif_js__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(5934);
272089
+ /* harmony import */ var _src_zonda_js__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(5140);
272090
+ /* harmony import */ var _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(2467);
272091
+ /* harmony import */ var _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(2383);
272092
+ /* harmony import */ var _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(8848);
272093
+ /* harmony import */ var _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(8764);
272094
+ /* harmony import */ var _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(5078);
272095
+ /* harmony import */ var _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(1326);
272096
+ /* harmony import */ var _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(1230);
272097
+ /* harmony import */ var _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(453);
272098
+ /* harmony import */ var _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(9772);
272099
+ /* harmony import */ var _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(588);
272100
+ /* harmony import */ var _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(1885);
272101
+ /* harmony import */ var _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(7504);
272102
+ /* harmony import */ var _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(2302);
272103
+ /* harmony import */ var _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(2191);
272104
+ /* harmony import */ var _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(1297);
272105
+ /* harmony import */ var _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(3005);
272106
+ /* harmony import */ var _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(3623);
272107
+ /* harmony import */ var _src_pro_bittrex_js__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(2883);
272108
+ /* harmony import */ var _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(6977);
272109
+ /* harmony import */ var _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(2519);
272110
+ /* harmony import */ var _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(5030);
272111
+ /* harmony import */ var _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(5272);
272112
+ /* harmony import */ var _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(3414);
272113
+ /* harmony import */ var _src_pro_coinbaseprime_js__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(3848);
272114
+ /* harmony import */ var _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(8368);
272115
+ /* harmony import */ var _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(204);
272116
+ /* harmony import */ var _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(6820);
272117
+ /* harmony import */ var _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(2952);
272118
+ /* harmony import */ var _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(1788);
272119
+ /* harmony import */ var _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(9004);
272120
+ /* harmony import */ var _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(8335);
272121
+ /* harmony import */ var _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(1465);
272122
+ /* harmony import */ var _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(9488);
272123
+ /* harmony import */ var _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(5189);
272124
+ /* harmony import */ var _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(8559);
272125
+ /* harmony import */ var _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(8384);
272126
+ /* harmony import */ var _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(9021);
272127
+ /* harmony import */ var _src_pro_huobipro_js__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(4625);
272128
+ /* harmony import */ var _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(3484);
272129
+ /* harmony import */ var _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(1311);
272130
+ /* harmony import */ var _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(736);
272131
+ /* harmony import */ var _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(449);
272132
+ /* harmony import */ var _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(2387);
272133
+ /* harmony import */ var _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(7181);
272134
+ /* harmony import */ var _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(627);
272135
+ /* harmony import */ var _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(6484);
272136
+ /* harmony import */ var _src_pro_mexc3_js__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(5351);
272137
+ /* harmony import */ var _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(8080);
272138
+ /* harmony import */ var _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(7105);
272139
+ /* harmony import */ var _src_pro_okex_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(1530);
272140
+ /* harmony import */ var _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(2214);
272141
+ /* harmony import */ var _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(4360);
272142
+ /* harmony import */ var _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(7924);
272143
+ /* harmony import */ var _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(3541);
272144
+ /* harmony import */ var _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(9782);
272145
+ /* harmony import */ var _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(7614);
272146
+ /* harmony import */ var _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(4828);
272147
+ /* harmony import */ var _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(5630);
272148
+ /* harmony import */ var _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_164__ = __webpack_require__(3910);
273741
272149
  /*
273742
272150
 
273743
272151
  MIT License
@@ -273772,7 +272180,7 @@ SOFTWARE.
273772
272180
 
273773
272181
  //-----------------------------------------------------------------------------
273774
272182
  // this is updated by vss.js when building
273775
- const version = '4.0.100';
272183
+ const version = '4.0.102';
273776
272184
  _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange.ccxtVersion */ .e.ccxtVersion = version;
273777
272185
  //-----------------------------------------------------------------------------
273778
272186
 
@@ -273878,7 +272286,6 @@ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange.ccxtVersion */ .e
273878
272286
 
273879
272287
 
273880
272288
 
273881
-
273882
272289
 
273883
272290
 
273884
272291
  // pro exchanges
@@ -273973,142 +272380,141 @@ const exchanges = {
273973
272380
  'bitstamp1': _src_bitstamp1_js__WEBPACK_IMPORTED_MODULE_29__/* ["default"] */ .Z,
273974
272381
  'bittrex': _src_bittrex_js__WEBPACK_IMPORTED_MODULE_30__/* ["default"] */ .Z,
273975
272382
  'bitvavo': _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_31__/* ["default"] */ .Z,
273976
- 'bkex': _src_bkex_js__WEBPACK_IMPORTED_MODULE_32__/* ["default"] */ .Z,
273977
- 'bl3p': _src_bl3p_js__WEBPACK_IMPORTED_MODULE_33__/* ["default"] */ .Z,
273978
- 'blockchaincom': _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_34__/* ["default"] */ .Z,
273979
- 'btcalpha': _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_35__/* ["default"] */ .Z,
273980
- 'btcbox': _src_btcbox_js__WEBPACK_IMPORTED_MODULE_36__/* ["default"] */ .Z,
273981
- 'btcmarkets': _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_37__/* ["default"] */ .Z,
273982
- 'btctradeua': _src_btctradeua_js__WEBPACK_IMPORTED_MODULE_38__/* ["default"] */ .Z,
273983
- 'btcturk': _src_btcturk_js__WEBPACK_IMPORTED_MODULE_39__/* ["default"] */ .Z,
273984
- 'bybit': _src_bybit_js__WEBPACK_IMPORTED_MODULE_40__/* ["default"] */ .Z,
273985
- 'cex': _src_cex_js__WEBPACK_IMPORTED_MODULE_41__/* ["default"] */ .Z,
273986
- 'coinbase': _src_coinbase_js__WEBPACK_IMPORTED_MODULE_42__/* ["default"] */ .Z,
273987
- 'coinbaseprime': _src_coinbaseprime_js__WEBPACK_IMPORTED_MODULE_43__/* ["default"] */ .Z,
273988
- 'coinbasepro': _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_44__/* ["default"] */ .Z,
273989
- 'coincheck': _src_coincheck_js__WEBPACK_IMPORTED_MODULE_45__/* ["default"] */ .Z,
273990
- 'coinex': _src_coinex_js__WEBPACK_IMPORTED_MODULE_46__/* ["default"] */ .Z,
273991
- 'coinfalcon': _src_coinfalcon_js__WEBPACK_IMPORTED_MODULE_47__/* ["default"] */ .Z,
273992
- 'coinmate': _src_coinmate_js__WEBPACK_IMPORTED_MODULE_48__/* ["default"] */ .Z,
273993
- 'coinone': _src_coinone_js__WEBPACK_IMPORTED_MODULE_49__/* ["default"] */ .Z,
273994
- 'coinsph': _src_coinsph_js__WEBPACK_IMPORTED_MODULE_50__/* ["default"] */ .Z,
273995
- 'coinspot': _src_coinspot_js__WEBPACK_IMPORTED_MODULE_51__/* ["default"] */ .Z,
273996
- 'cryptocom': _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_52__/* ["default"] */ .Z,
273997
- 'currencycom': _src_currencycom_js__WEBPACK_IMPORTED_MODULE_53__/* ["default"] */ .Z,
273998
- 'delta': _src_delta_js__WEBPACK_IMPORTED_MODULE_54__/* ["default"] */ .Z,
273999
- 'deribit': _src_deribit_js__WEBPACK_IMPORTED_MODULE_55__/* ["default"] */ .Z,
274000
- 'digifinex': _src_digifinex_js__WEBPACK_IMPORTED_MODULE_56__/* ["default"] */ .Z,
274001
- 'exmo': _src_exmo_js__WEBPACK_IMPORTED_MODULE_57__/* ["default"] */ .Z,
274002
- 'fmfwio': _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_58__/* ["default"] */ .Z,
274003
- 'gate': _src_gate_js__WEBPACK_IMPORTED_MODULE_59__/* ["default"] */ .Z,
274004
- 'gateio': _src_gateio_js__WEBPACK_IMPORTED_MODULE_60__/* ["default"] */ .Z,
274005
- 'gemini': _src_gemini_js__WEBPACK_IMPORTED_MODULE_61__/* ["default"] */ .Z,
274006
- 'hitbtc': _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_62__/* ["default"] */ .Z,
274007
- 'hitbtc3': _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_63__/* ["default"] */ .Z,
274008
- 'hollaex': _src_hollaex_js__WEBPACK_IMPORTED_MODULE_64__/* ["default"] */ .Z,
274009
- 'huobi': _src_huobi_js__WEBPACK_IMPORTED_MODULE_65__/* ["default"] */ .Z,
274010
- 'huobijp': _src_huobijp_js__WEBPACK_IMPORTED_MODULE_66__/* ["default"] */ .Z,
274011
- 'huobipro': _src_huobipro_js__WEBPACK_IMPORTED_MODULE_67__/* ["default"] */ .Z,
274012
- 'idex': _src_idex_js__WEBPACK_IMPORTED_MODULE_68__/* ["default"] */ .Z,
274013
- 'independentreserve': _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_69__/* ["default"] */ .Z,
274014
- 'indodax': _src_indodax_js__WEBPACK_IMPORTED_MODULE_70__/* ["default"] */ .Z,
274015
- 'kraken': _src_kraken_js__WEBPACK_IMPORTED_MODULE_71__/* ["default"] */ .Z,
274016
- 'krakenfutures': _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_72__/* ["default"] */ .Z,
274017
- 'kucoin': _src_kucoin_js__WEBPACK_IMPORTED_MODULE_73__/* ["default"] */ .Z,
274018
- 'kucoinfutures': _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_74__/* ["default"] */ .Z,
274019
- 'kuna': _src_kuna_js__WEBPACK_IMPORTED_MODULE_75__/* ["default"] */ .Z,
274020
- 'latoken': _src_latoken_js__WEBPACK_IMPORTED_MODULE_76__/* ["default"] */ .Z,
274021
- 'lbank': _src_lbank_js__WEBPACK_IMPORTED_MODULE_77__/* ["default"] */ .Z,
274022
- 'lbank2': _src_lbank2_js__WEBPACK_IMPORTED_MODULE_78__/* ["default"] */ .Z,
274023
- 'luno': _src_luno_js__WEBPACK_IMPORTED_MODULE_79__/* ["default"] */ .Z,
274024
- 'lykke': _src_lykke_js__WEBPACK_IMPORTED_MODULE_80__/* ["default"] */ .Z,
274025
- 'mercado': _src_mercado_js__WEBPACK_IMPORTED_MODULE_81__/* ["default"] */ .Z,
274026
- 'mexc': _src_mexc_js__WEBPACK_IMPORTED_MODULE_82__/* ["default"] */ .Z,
274027
- 'mexc3': _src_mexc3_js__WEBPACK_IMPORTED_MODULE_83__/* ["default"] */ .Z,
274028
- 'ndax': _src_ndax_js__WEBPACK_IMPORTED_MODULE_84__/* ["default"] */ .Z,
274029
- 'novadax': _src_novadax_js__WEBPACK_IMPORTED_MODULE_85__/* ["default"] */ .Z,
274030
- 'oceanex': _src_oceanex_js__WEBPACK_IMPORTED_MODULE_86__/* ["default"] */ .Z,
274031
- 'okcoin': _src_okcoin_js__WEBPACK_IMPORTED_MODULE_87__/* ["default"] */ .Z,
274032
- 'okex': _src_okex_js__WEBPACK_IMPORTED_MODULE_88__/* ["default"] */ .Z,
274033
- 'okex5': _src_okex5_js__WEBPACK_IMPORTED_MODULE_89__/* ["default"] */ .Z,
274034
- 'okx': _src_okx_js__WEBPACK_IMPORTED_MODULE_90__/* ["default"] */ .Z,
274035
- 'paymium': _src_paymium_js__WEBPACK_IMPORTED_MODULE_91__/* ["default"] */ .Z,
274036
- 'phemex': _src_phemex_js__WEBPACK_IMPORTED_MODULE_92__/* ["default"] */ .Z,
274037
- 'poloniex': _src_poloniex_js__WEBPACK_IMPORTED_MODULE_93__/* ["default"] */ .Z,
274038
- 'poloniexfutures': _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_94__/* ["default"] */ .Z,
274039
- 'probit': _src_probit_js__WEBPACK_IMPORTED_MODULE_95__/* ["default"] */ .Z,
274040
- 'tidex': _src_tidex_js__WEBPACK_IMPORTED_MODULE_96__/* ["default"] */ .Z,
274041
- 'timex': _src_timex_js__WEBPACK_IMPORTED_MODULE_97__/* ["default"] */ .Z,
274042
- 'tokocrypto': _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_98__/* ["default"] */ .Z,
274043
- 'upbit': _src_upbit_js__WEBPACK_IMPORTED_MODULE_99__/* ["default"] */ .Z,
274044
- 'wavesexchange': _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_100__/* ["default"] */ .Z,
274045
- 'wazirx': _src_wazirx_js__WEBPACK_IMPORTED_MODULE_101__/* ["default"] */ .Z,
274046
- 'whitebit': _src_whitebit_js__WEBPACK_IMPORTED_MODULE_102__/* ["default"] */ .Z,
274047
- 'woo': _src_woo_js__WEBPACK_IMPORTED_MODULE_103__/* ["default"] */ .Z,
274048
- 'yobit': _src_yobit_js__WEBPACK_IMPORTED_MODULE_104__/* ["default"] */ .Z,
274049
- 'zaif': _src_zaif_js__WEBPACK_IMPORTED_MODULE_105__/* ["default"] */ .Z,
274050
- 'zonda': _src_zonda_js__WEBPACK_IMPORTED_MODULE_106__/* ["default"] */ .Z,
272383
+ 'bl3p': _src_bl3p_js__WEBPACK_IMPORTED_MODULE_32__/* ["default"] */ .Z,
272384
+ 'blockchaincom': _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_33__/* ["default"] */ .Z,
272385
+ 'btcalpha': _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_34__/* ["default"] */ .Z,
272386
+ 'btcbox': _src_btcbox_js__WEBPACK_IMPORTED_MODULE_35__/* ["default"] */ .Z,
272387
+ 'btcmarkets': _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_36__/* ["default"] */ .Z,
272388
+ 'btctradeua': _src_btctradeua_js__WEBPACK_IMPORTED_MODULE_37__/* ["default"] */ .Z,
272389
+ 'btcturk': _src_btcturk_js__WEBPACK_IMPORTED_MODULE_38__/* ["default"] */ .Z,
272390
+ 'bybit': _src_bybit_js__WEBPACK_IMPORTED_MODULE_39__/* ["default"] */ .Z,
272391
+ 'cex': _src_cex_js__WEBPACK_IMPORTED_MODULE_40__/* ["default"] */ .Z,
272392
+ 'coinbase': _src_coinbase_js__WEBPACK_IMPORTED_MODULE_41__/* ["default"] */ .Z,
272393
+ 'coinbaseprime': _src_coinbaseprime_js__WEBPACK_IMPORTED_MODULE_42__/* ["default"] */ .Z,
272394
+ 'coinbasepro': _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_43__/* ["default"] */ .Z,
272395
+ 'coincheck': _src_coincheck_js__WEBPACK_IMPORTED_MODULE_44__/* ["default"] */ .Z,
272396
+ 'coinex': _src_coinex_js__WEBPACK_IMPORTED_MODULE_45__/* ["default"] */ .Z,
272397
+ 'coinfalcon': _src_coinfalcon_js__WEBPACK_IMPORTED_MODULE_46__/* ["default"] */ .Z,
272398
+ 'coinmate': _src_coinmate_js__WEBPACK_IMPORTED_MODULE_47__/* ["default"] */ .Z,
272399
+ 'coinone': _src_coinone_js__WEBPACK_IMPORTED_MODULE_48__/* ["default"] */ .Z,
272400
+ 'coinsph': _src_coinsph_js__WEBPACK_IMPORTED_MODULE_49__/* ["default"] */ .Z,
272401
+ 'coinspot': _src_coinspot_js__WEBPACK_IMPORTED_MODULE_50__/* ["default"] */ .Z,
272402
+ 'cryptocom': _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_51__/* ["default"] */ .Z,
272403
+ 'currencycom': _src_currencycom_js__WEBPACK_IMPORTED_MODULE_52__/* ["default"] */ .Z,
272404
+ 'delta': _src_delta_js__WEBPACK_IMPORTED_MODULE_53__/* ["default"] */ .Z,
272405
+ 'deribit': _src_deribit_js__WEBPACK_IMPORTED_MODULE_54__/* ["default"] */ .Z,
272406
+ 'digifinex': _src_digifinex_js__WEBPACK_IMPORTED_MODULE_55__/* ["default"] */ .Z,
272407
+ 'exmo': _src_exmo_js__WEBPACK_IMPORTED_MODULE_56__/* ["default"] */ .Z,
272408
+ 'fmfwio': _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_57__/* ["default"] */ .Z,
272409
+ 'gate': _src_gate_js__WEBPACK_IMPORTED_MODULE_58__/* ["default"] */ .Z,
272410
+ 'gateio': _src_gateio_js__WEBPACK_IMPORTED_MODULE_59__/* ["default"] */ .Z,
272411
+ 'gemini': _src_gemini_js__WEBPACK_IMPORTED_MODULE_60__/* ["default"] */ .Z,
272412
+ 'hitbtc': _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_61__/* ["default"] */ .Z,
272413
+ 'hitbtc3': _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_62__/* ["default"] */ .Z,
272414
+ 'hollaex': _src_hollaex_js__WEBPACK_IMPORTED_MODULE_63__/* ["default"] */ .Z,
272415
+ 'huobi': _src_huobi_js__WEBPACK_IMPORTED_MODULE_64__/* ["default"] */ .Z,
272416
+ 'huobijp': _src_huobijp_js__WEBPACK_IMPORTED_MODULE_65__/* ["default"] */ .Z,
272417
+ 'huobipro': _src_huobipro_js__WEBPACK_IMPORTED_MODULE_66__/* ["default"] */ .Z,
272418
+ 'idex': _src_idex_js__WEBPACK_IMPORTED_MODULE_67__/* ["default"] */ .Z,
272419
+ 'independentreserve': _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_68__/* ["default"] */ .Z,
272420
+ 'indodax': _src_indodax_js__WEBPACK_IMPORTED_MODULE_69__/* ["default"] */ .Z,
272421
+ 'kraken': _src_kraken_js__WEBPACK_IMPORTED_MODULE_70__/* ["default"] */ .Z,
272422
+ 'krakenfutures': _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_71__/* ["default"] */ .Z,
272423
+ 'kucoin': _src_kucoin_js__WEBPACK_IMPORTED_MODULE_72__/* ["default"] */ .Z,
272424
+ 'kucoinfutures': _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_73__/* ["default"] */ .Z,
272425
+ 'kuna': _src_kuna_js__WEBPACK_IMPORTED_MODULE_74__/* ["default"] */ .Z,
272426
+ 'latoken': _src_latoken_js__WEBPACK_IMPORTED_MODULE_75__/* ["default"] */ .Z,
272427
+ 'lbank': _src_lbank_js__WEBPACK_IMPORTED_MODULE_76__/* ["default"] */ .Z,
272428
+ 'lbank2': _src_lbank2_js__WEBPACK_IMPORTED_MODULE_77__/* ["default"] */ .Z,
272429
+ 'luno': _src_luno_js__WEBPACK_IMPORTED_MODULE_78__/* ["default"] */ .Z,
272430
+ 'lykke': _src_lykke_js__WEBPACK_IMPORTED_MODULE_79__/* ["default"] */ .Z,
272431
+ 'mercado': _src_mercado_js__WEBPACK_IMPORTED_MODULE_80__/* ["default"] */ .Z,
272432
+ 'mexc': _src_mexc_js__WEBPACK_IMPORTED_MODULE_81__/* ["default"] */ .Z,
272433
+ 'mexc3': _src_mexc3_js__WEBPACK_IMPORTED_MODULE_82__/* ["default"] */ .Z,
272434
+ 'ndax': _src_ndax_js__WEBPACK_IMPORTED_MODULE_83__/* ["default"] */ .Z,
272435
+ 'novadax': _src_novadax_js__WEBPACK_IMPORTED_MODULE_84__/* ["default"] */ .Z,
272436
+ 'oceanex': _src_oceanex_js__WEBPACK_IMPORTED_MODULE_85__/* ["default"] */ .Z,
272437
+ 'okcoin': _src_okcoin_js__WEBPACK_IMPORTED_MODULE_86__/* ["default"] */ .Z,
272438
+ 'okex': _src_okex_js__WEBPACK_IMPORTED_MODULE_87__/* ["default"] */ .Z,
272439
+ 'okex5': _src_okex5_js__WEBPACK_IMPORTED_MODULE_88__/* ["default"] */ .Z,
272440
+ 'okx': _src_okx_js__WEBPACK_IMPORTED_MODULE_89__/* ["default"] */ .Z,
272441
+ 'paymium': _src_paymium_js__WEBPACK_IMPORTED_MODULE_90__/* ["default"] */ .Z,
272442
+ 'phemex': _src_phemex_js__WEBPACK_IMPORTED_MODULE_91__/* ["default"] */ .Z,
272443
+ 'poloniex': _src_poloniex_js__WEBPACK_IMPORTED_MODULE_92__/* ["default"] */ .Z,
272444
+ 'poloniexfutures': _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_93__/* ["default"] */ .Z,
272445
+ 'probit': _src_probit_js__WEBPACK_IMPORTED_MODULE_94__/* ["default"] */ .Z,
272446
+ 'tidex': _src_tidex_js__WEBPACK_IMPORTED_MODULE_95__/* ["default"] */ .Z,
272447
+ 'timex': _src_timex_js__WEBPACK_IMPORTED_MODULE_96__/* ["default"] */ .Z,
272448
+ 'tokocrypto': _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_97__/* ["default"] */ .Z,
272449
+ 'upbit': _src_upbit_js__WEBPACK_IMPORTED_MODULE_98__/* ["default"] */ .Z,
272450
+ 'wavesexchange': _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_99__/* ["default"] */ .Z,
272451
+ 'wazirx': _src_wazirx_js__WEBPACK_IMPORTED_MODULE_100__/* ["default"] */ .Z,
272452
+ 'whitebit': _src_whitebit_js__WEBPACK_IMPORTED_MODULE_101__/* ["default"] */ .Z,
272453
+ 'woo': _src_woo_js__WEBPACK_IMPORTED_MODULE_102__/* ["default"] */ .Z,
272454
+ 'yobit': _src_yobit_js__WEBPACK_IMPORTED_MODULE_103__/* ["default"] */ .Z,
272455
+ 'zaif': _src_zaif_js__WEBPACK_IMPORTED_MODULE_104__/* ["default"] */ .Z,
272456
+ 'zonda': _src_zonda_js__WEBPACK_IMPORTED_MODULE_105__/* ["default"] */ .Z,
274051
272457
  };
274052
272458
  const pro = {
274053
- 'alpaca': _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_107__/* ["default"] */ .Z,
274054
- 'ascendex': _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_108__/* ["default"] */ .Z,
274055
- 'bequant': _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_109__/* ["default"] */ .Z,
274056
- 'binance': _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_110__/* ["default"] */ .Z,
274057
- 'binancecoinm': _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_111__/* ["default"] */ .Z,
274058
- 'binanceus': _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_112__/* ["default"] */ .Z,
274059
- 'binanceusdm': _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_113__/* ["default"] */ .Z,
274060
- 'bitcoincom': _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_114__/* ["default"] */ .Z,
274061
- 'bitfinex': _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_115__/* ["default"] */ .Z,
274062
- 'bitfinex2': _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_116__/* ["default"] */ .Z,
274063
- 'bitget': _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_117__/* ["default"] */ .Z,
274064
- 'bitmart': _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_118__/* ["default"] */ .Z,
274065
- 'bitmex': _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_119__/* ["default"] */ .Z,
274066
- 'bitopro': _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_120__/* ["default"] */ .Z,
274067
- 'bitpanda': _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_121__/* ["default"] */ .Z,
274068
- 'bitrue': _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_122__/* ["default"] */ .Z,
274069
- 'bitstamp': _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_123__/* ["default"] */ .Z,
274070
- 'bittrex': _src_pro_bittrex_js__WEBPACK_IMPORTED_MODULE_124__/* ["default"] */ .Z,
274071
- 'bitvavo': _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_125__/* ["default"] */ .Z,
274072
- 'blockchaincom': _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_126__/* ["default"] */ .Z,
274073
- 'bybit': _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_127__/* ["default"] */ .Z,
274074
- 'cex': _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_128__/* ["default"] */ .Z,
274075
- 'coinbase': _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_129__/* ["default"] */ .Z,
274076
- 'coinbaseprime': _src_pro_coinbaseprime_js__WEBPACK_IMPORTED_MODULE_130__/* ["default"] */ .Z,
274077
- 'coinbasepro': _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_131__/* ["default"] */ .Z,
274078
- 'coinex': _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_132__/* ["default"] */ .Z,
274079
- 'cryptocom': _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_133__/* ["default"] */ .Z,
274080
- 'currencycom': _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_134__/* ["default"] */ .Z,
274081
- 'deribit': _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_135__/* ["default"] */ .Z,
274082
- 'exmo': _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_136__/* ["default"] */ .Z,
274083
- 'gate': _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_137__/* ["default"] */ .Z,
274084
- 'gateio': _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_138__/* ["default"] */ .Z,
274085
- 'gemini': _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_139__/* ["default"] */ .Z,
274086
- 'hitbtc': _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_140__/* ["default"] */ .Z,
274087
- 'hollaex': _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_141__/* ["default"] */ .Z,
274088
- 'huobi': _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_142__/* ["default"] */ .Z,
274089
- 'huobijp': _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_143__/* ["default"] */ .Z,
274090
- 'huobipro': _src_pro_huobipro_js__WEBPACK_IMPORTED_MODULE_144__/* ["default"] */ .Z,
274091
- 'idex': _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_145__/* ["default"] */ .Z,
274092
- 'independentreserve': _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_146__/* ["default"] */ .Z,
274093
- 'kraken': _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_147__/* ["default"] */ .Z,
274094
- 'krakenfutures': _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_148__/* ["default"] */ .Z,
274095
- 'kucoin': _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_149__/* ["default"] */ .Z,
274096
- 'kucoinfutures': _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_150__/* ["default"] */ .Z,
274097
- 'luno': _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_151__/* ["default"] */ .Z,
274098
- 'mexc': _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_152__/* ["default"] */ .Z,
274099
- 'mexc3': _src_pro_mexc3_js__WEBPACK_IMPORTED_MODULE_153__/* ["default"] */ .Z,
274100
- 'ndax': _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_154__/* ["default"] */ .Z,
274101
- 'okcoin': _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_155__/* ["default"] */ .Z,
274102
- 'okex': _src_pro_okex_js__WEBPACK_IMPORTED_MODULE_156__/* ["default"] */ .Z,
274103
- 'okx': _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_157__/* ["default"] */ .Z,
274104
- 'phemex': _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_158__/* ["default"] */ .Z,
274105
- 'poloniex': _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_159__/* ["default"] */ .Z,
274106
- 'poloniexfutures': _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_160__/* ["default"] */ .Z,
274107
- 'probit': _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_161__/* ["default"] */ .Z,
274108
- 'upbit': _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_162__/* ["default"] */ .Z,
274109
- 'wazirx': _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_163__/* ["default"] */ .Z,
274110
- 'whitebit': _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_164__/* ["default"] */ .Z,
274111
- 'woo': _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_165__/* ["default"] */ .Z,
272459
+ 'alpaca': _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_106__/* ["default"] */ .Z,
272460
+ 'ascendex': _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_107__/* ["default"] */ .Z,
272461
+ 'bequant': _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_108__/* ["default"] */ .Z,
272462
+ 'binance': _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_109__/* ["default"] */ .Z,
272463
+ 'binancecoinm': _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_110__/* ["default"] */ .Z,
272464
+ 'binanceus': _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_111__/* ["default"] */ .Z,
272465
+ 'binanceusdm': _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_112__/* ["default"] */ .Z,
272466
+ 'bitcoincom': _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_113__/* ["default"] */ .Z,
272467
+ 'bitfinex': _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_114__/* ["default"] */ .Z,
272468
+ 'bitfinex2': _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_115__/* ["default"] */ .Z,
272469
+ 'bitget': _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_116__/* ["default"] */ .Z,
272470
+ 'bitmart': _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_117__/* ["default"] */ .Z,
272471
+ 'bitmex': _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_118__/* ["default"] */ .Z,
272472
+ 'bitopro': _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_119__/* ["default"] */ .Z,
272473
+ 'bitpanda': _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_120__/* ["default"] */ .Z,
272474
+ 'bitrue': _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_121__/* ["default"] */ .Z,
272475
+ 'bitstamp': _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_122__/* ["default"] */ .Z,
272476
+ 'bittrex': _src_pro_bittrex_js__WEBPACK_IMPORTED_MODULE_123__/* ["default"] */ .Z,
272477
+ 'bitvavo': _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_124__/* ["default"] */ .Z,
272478
+ 'blockchaincom': _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_125__/* ["default"] */ .Z,
272479
+ 'bybit': _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_126__/* ["default"] */ .Z,
272480
+ 'cex': _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_127__/* ["default"] */ .Z,
272481
+ 'coinbase': _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_128__/* ["default"] */ .Z,
272482
+ 'coinbaseprime': _src_pro_coinbaseprime_js__WEBPACK_IMPORTED_MODULE_129__/* ["default"] */ .Z,
272483
+ 'coinbasepro': _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_130__/* ["default"] */ .Z,
272484
+ 'coinex': _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_131__/* ["default"] */ .Z,
272485
+ 'cryptocom': _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_132__/* ["default"] */ .Z,
272486
+ 'currencycom': _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_133__/* ["default"] */ .Z,
272487
+ 'deribit': _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_134__/* ["default"] */ .Z,
272488
+ 'exmo': _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_135__/* ["default"] */ .Z,
272489
+ 'gate': _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_136__/* ["default"] */ .Z,
272490
+ 'gateio': _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_137__/* ["default"] */ .Z,
272491
+ 'gemini': _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_138__/* ["default"] */ .Z,
272492
+ 'hitbtc': _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_139__/* ["default"] */ .Z,
272493
+ 'hollaex': _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_140__/* ["default"] */ .Z,
272494
+ 'huobi': _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_141__/* ["default"] */ .Z,
272495
+ 'huobijp': _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_142__/* ["default"] */ .Z,
272496
+ 'huobipro': _src_pro_huobipro_js__WEBPACK_IMPORTED_MODULE_143__/* ["default"] */ .Z,
272497
+ 'idex': _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_144__/* ["default"] */ .Z,
272498
+ 'independentreserve': _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_145__/* ["default"] */ .Z,
272499
+ 'kraken': _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_146__/* ["default"] */ .Z,
272500
+ 'krakenfutures': _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_147__/* ["default"] */ .Z,
272501
+ 'kucoin': _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_148__/* ["default"] */ .Z,
272502
+ 'kucoinfutures': _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_149__/* ["default"] */ .Z,
272503
+ 'luno': _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_150__/* ["default"] */ .Z,
272504
+ 'mexc': _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_151__/* ["default"] */ .Z,
272505
+ 'mexc3': _src_pro_mexc3_js__WEBPACK_IMPORTED_MODULE_152__/* ["default"] */ .Z,
272506
+ 'ndax': _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_153__/* ["default"] */ .Z,
272507
+ 'okcoin': _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_154__/* ["default"] */ .Z,
272508
+ 'okex': _src_pro_okex_js__WEBPACK_IMPORTED_MODULE_155__/* ["default"] */ .Z,
272509
+ 'okx': _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_156__/* ["default"] */ .Z,
272510
+ 'phemex': _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_157__/* ["default"] */ .Z,
272511
+ 'poloniex': _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_158__/* ["default"] */ .Z,
272512
+ 'poloniexfutures': _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_159__/* ["default"] */ .Z,
272513
+ 'probit': _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_160__/* ["default"] */ .Z,
272514
+ 'upbit': _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_161__/* ["default"] */ .Z,
272515
+ 'wazirx': _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_162__/* ["default"] */ .Z,
272516
+ 'whitebit': _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_163__/* ["default"] */ .Z,
272517
+ 'woo': _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_164__/* ["default"] */ .Z,
274112
272518
  };
274113
272519
  for (const exchange in pro) {
274114
272520
  // const ccxtExchange = exchanges[exchange]
@@ -274121,7 +272527,7 @@ for (const exchange in pro) {
274121
272527
  pro.exchanges = Object.keys(pro);
274122
272528
  pro['Exchange'] = _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e; // now the same for rest and ts
274123
272529
  //-----------------------------------------------------------------------------
274124
- const ccxt = Object.assign({ version, Exchange: _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e, Precise: _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_166__/* .Precise */ .O, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, _src_base_functions_js__WEBPACK_IMPORTED_MODULE_167__, _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__);
272530
+ const ccxt = Object.assign({ version, Exchange: _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e, Precise: _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_165__/* .Precise */ .O, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, _src_base_functions_js__WEBPACK_IMPORTED_MODULE_166__, _src_base_errors_js__WEBPACK_IMPORTED_MODULE_167__);
274125
272531
 
274126
272532
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ccxt);
274127
272533
  //-----------------------------------------------------------------------------