ccxt 4.2.25 → 4.2.27

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.
@@ -592,6 +592,22 @@ class Exchange extends _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchang
592
592
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Exchange);
593
593
 
594
594
 
595
+ /***/ }),
596
+
597
+ /***/ 488:
598
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
599
+
600
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
601
+ /* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
602
+ /* harmony export */ });
603
+ /* harmony import */ var _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
604
+ // -------------------------------------------------------------------------------
605
+
606
+ class Exchange extends _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e {
607
+ }
608
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Exchange);
609
+
610
+
595
611
  /***/ }),
596
612
 
597
613
  /***/ 3767:
@@ -8246,15 +8262,13 @@ class Exchange {
8246
8262
  client.throttle(cost).then(() => {
8247
8263
  client.send(message);
8248
8264
  }).catch((e) => {
8249
- delete client.subscriptions[subscribeHash];
8250
- future.reject(e);
8265
+ client.onError(e);
8251
8266
  });
8252
8267
  }
8253
8268
  else {
8254
8269
  client.send(message)
8255
8270
  .catch((e) => {
8256
- delete client.subscriptions[subscribeHash];
8257
- future.reject(e);
8271
+ client.onError(e);
8258
8272
  });
8259
8273
  }
8260
8274
  }
@@ -11076,6 +11090,9 @@ class Exchange {
11076
11090
  return this.cancelOrder(this.safeValue(order, 'id'), this.safeValue(order, 'symbol'), params);
11077
11091
  }
11078
11092
  async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
11093
+ if (this.has['fetchOpenOrders'] && this.has['fetchClosedOrders']) {
11094
+ throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchOrders() is not supported yet, consider using fetchOpenOrders() and fetchClosedOrders() instead');
11095
+ }
11079
11096
  throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchOrders() is not supported yet');
11080
11097
  }
11081
11098
  async fetchOrdersWs(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -14792,7 +14809,10 @@ class Client {
14792
14809
  }
14793
14810
  else {
14794
14811
  if (this.ping) {
14795
- this.send(this.ping(this));
14812
+ this.send(this.ping(this))
14813
+ .catch((error) => {
14814
+ this.onError(error);
14815
+ });
14796
14816
  }
14797
14817
  else if (_base_functions_js__WEBPACK_IMPORTED_MODULE_5__/* .isNode */ .UG) {
14798
14818
  // can't do this inside browser
@@ -28018,6 +28038,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
28018
28038
  'fetchLeverage': true,
28019
28039
  'fetchLiquidations': false,
28020
28040
  'fetchMarkets': true,
28041
+ 'fetchMarkOHLCV': true,
28021
28042
  'fetchMyLiquidations': true,
28022
28043
  'fetchOHLCV': true,
28023
28044
  'fetchOpenInterest': true,
@@ -28122,6 +28143,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
28122
28143
  'private': {
28123
28144
  'get': {
28124
28145
  'positionSide/dual': 1,
28146
+ 'market/markPriceKlines': 1,
28125
28147
  },
28126
28148
  'post': {
28127
28149
  'positionSide/dual': 1,
@@ -28647,6 +28669,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
28647
28669
  * @see https://bingx-api.github.io/docs/#/swapV2/market-api.html#K-Line%20Data
28648
28670
  * @see https://bingx-api.github.io/docs/#/spot/market-api.html#Candlestick%20chart%20data
28649
28671
  * @see https://bingx-api.github.io/docs/#/swapV2/market-api.html#%20K-Line%20Data
28672
+ * @see https://bingx-api.github.io/docs/#/en-us/swapV2/market-api.html#K-Line%20Data%20-%20Mark%20Price
28650
28673
  * @param {string} symbol unified symbol of the market to fetch OHLCV data for
28651
28674
  * @param {string} timeframe the length of time each candle represents
28652
28675
  * @param {int} [since] timestamp in ms of the earliest candle to fetch
@@ -28683,7 +28706,14 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
28683
28706
  response = await this.spotV1PublicGetMarketKline(this.extend(request, params));
28684
28707
  }
28685
28708
  else {
28686
- response = await this.swapV3PublicGetQuoteKlines(this.extend(request, params));
28709
+ const price = this.safeString(params, 'price');
28710
+ params = this.omit(params, 'price');
28711
+ if (price === 'mark') {
28712
+ response = await this.swapV1PrivateGetMarketMarkPriceKlines(this.extend(request, params));
28713
+ }
28714
+ else {
28715
+ response = await this.swapV3PublicGetQuoteKlines(this.extend(request, params));
28716
+ }
28687
28717
  }
28688
28718
  //
28689
28719
  // {
@@ -28702,6 +28732,24 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
28702
28732
  // ]
28703
28733
  // }
28704
28734
  //
28735
+ // fetchMarkOHLCV
28736
+ //
28737
+ // {
28738
+ // "code": 0,
28739
+ // "msg": "",
28740
+ // "data": [
28741
+ // {
28742
+ // "open": "42191.7",
28743
+ // "close": "42189.5",
28744
+ // "high": "42196.5",
28745
+ // "low": "42189.5",
28746
+ // "volume": "0.00",
28747
+ // "openTime": 1706508840000,
28748
+ // "closeTime": 1706508840000
28749
+ // }
28750
+ // ]
28751
+ // }
28752
+ //
28705
28753
  let ohlcvs = this.safeValue(response, 'data', []);
28706
28754
  if (!Array.isArray(ohlcvs)) {
28707
28755
  ohlcvs = [ohlcvs];
@@ -28718,6 +28766,18 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
28718
28766
  // "volume": "167.44",
28719
28767
  // "time": 1666584000000
28720
28768
  // }
28769
+ //
28770
+ // fetchMarkOHLCV
28771
+ //
28772
+ // {
28773
+ // "open": "42191.7",
28774
+ // "close": "42189.5",
28775
+ // "high": "42196.5",
28776
+ // "low": "42189.5",
28777
+ // "volume": "0.00",
28778
+ // "openTime": 1706508840000,
28779
+ // "closeTime": 1706508840000
28780
+ // }
28721
28781
  // spot
28722
28782
  // [
28723
28783
  // 1691402580000,
@@ -28741,7 +28801,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
28741
28801
  ];
28742
28802
  }
28743
28803
  return [
28744
- this.safeInteger(ohlcv, 'time'),
28804
+ this.safeInteger2(ohlcv, 'time', 'closeTime'),
28745
28805
  this.safeNumber(ohlcv, 'open'),
28746
28806
  this.safeNumber(ohlcv, 'high'),
28747
28807
  this.safeNumber(ohlcv, 'low'),
@@ -30198,10 +30258,10 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
30198
30258
  const clientOrderId = this.safeStringN(order, ['clientOrderID', 'origClientOrderId', 'c']);
30199
30259
  let stopLoss = this.safeValue(order, 'stopLoss');
30200
30260
  let stopLossPrice = undefined;
30201
- if (stopLoss !== undefined) {
30261
+ if ((stopLoss !== undefined) && (stopLoss !== '')) {
30202
30262
  stopLossPrice = this.safeNumber(stopLoss, 'stopLoss');
30203
30263
  }
30204
- if ((stopLoss !== undefined) && (typeof stopLoss !== 'number')) {
30264
+ if ((stopLoss !== undefined) && (typeof stopLoss !== 'number') && (stopLoss !== '')) {
30205
30265
  // stopLoss: '{"stopPrice":50,"workingType":"MARK_PRICE","type":"STOP_MARKET","quantity":1}',
30206
30266
  if (typeof stopLoss === 'string') {
30207
30267
  stopLoss = this.parseJson(stopLoss);
@@ -30210,10 +30270,10 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
30210
30270
  }
30211
30271
  let takeProfit = this.safeValue(order, 'takeProfit');
30212
30272
  let takeProfitPrice = undefined;
30213
- if (takeProfit !== undefined) {
30273
+ if (takeProfit !== undefined && (takeProfit !== '')) {
30214
30274
  takeProfitPrice = this.safeNumber(takeProfit, 'takeProfit');
30215
30275
  }
30216
- if ((takeProfit !== undefined) && (typeof takeProfit !== 'number')) {
30276
+ if ((takeProfit !== undefined) && (typeof takeProfit !== 'number') && (takeProfit !== '')) {
30217
30277
  // takeProfit: '{"stopPrice":150,"workingType":"MARK_PRICE","type":"TAKE_PROFIT_MARKET","quantity":1}',
30218
30278
  if (typeof takeProfit === 'string') {
30219
30279
  takeProfit = this.parseJson(takeProfit);
@@ -90123,11 +90183,16 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
90123
90183
  'Content-Type': 'application/json',
90124
90184
  };
90125
90185
  }
90126
- else if (this.token) {
90186
+ else if (this.token && !this.checkRequiredCredentials(false)) {
90127
90187
  headers = {
90128
90188
  'Authorization': 'Bearer ' + this.token,
90129
90189
  'Content-Type': 'application/json',
90130
90190
  };
90191
+ if (method !== 'GET') {
90192
+ if (Object.keys(query).length) {
90193
+ body = this.json(query);
90194
+ }
90195
+ }
90131
90196
  }
90132
90197
  else {
90133
90198
  this.checkRequiredCredentials();
@@ -101758,6 +101823,1924 @@ class coinmate extends _abstract_coinmate_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
101758
101823
  }
101759
101824
 
101760
101825
 
101826
+ /***/ }),
101827
+
101828
+ /***/ 4759:
101829
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
101830
+
101831
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
101832
+ /* harmony export */ Z: () => (/* binding */ coinmetro)
101833
+ /* harmony export */ });
101834
+ /* harmony import */ var _abstract_coinmetro_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(488);
101835
+ /* harmony import */ var _base_errors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6689);
101836
+ /* harmony import */ var _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9292);
101837
+ /* harmony import */ var _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2194);
101838
+ // ---------------------------------------------------------------------------
101839
+
101840
+
101841
+
101842
+
101843
+ // ---------------------------------------------------------------------------
101844
+ /**
101845
+ * @class coinmetro
101846
+ * @augments Exchange
101847
+ */
101848
+ class coinmetro extends _abstract_coinmetro_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
101849
+ describe() {
101850
+ return this.deepExtend(super.describe(), {
101851
+ 'id': 'coinmetro',
101852
+ 'name': 'Coinmetro',
101853
+ 'countries': ['EE'],
101854
+ 'version': 'v1',
101855
+ 'rateLimit': 200,
101856
+ 'certified': false,
101857
+ 'pro': false,
101858
+ 'has': {
101859
+ 'CORS': undefined,
101860
+ 'spot': true,
101861
+ 'margin': true,
101862
+ 'swap': false,
101863
+ 'future': false,
101864
+ 'option': false,
101865
+ 'addMargin': false,
101866
+ 'borrowCrossMargin': true,
101867
+ 'borrowIsolatedMargin': false,
101868
+ 'cancelAllOrders': false,
101869
+ 'cancelOrder': true,
101870
+ 'cancelOrders': false,
101871
+ 'closeAllPositions': false,
101872
+ 'closePosition': true,
101873
+ 'createDepositAddress': false,
101874
+ 'createOrder': true,
101875
+ 'createPostOnlyOrder': false,
101876
+ 'createReduceOnlyOrder': false,
101877
+ 'createStopLimitOrder': true,
101878
+ 'createStopMarketOrder': true,
101879
+ 'createStopOrder': true,
101880
+ 'deposit': false,
101881
+ 'editOrder': false,
101882
+ 'fetchAccounts': false,
101883
+ 'fetchBalance': true,
101884
+ 'fetchBidsAsks': true,
101885
+ 'fetchBorrowInterest': false,
101886
+ 'fetchBorrowRateHistories': false,
101887
+ 'fetchBorrowRateHistory': false,
101888
+ 'fetchCanceledAndClosedOrders': true,
101889
+ 'fetchCanceledOrders': false,
101890
+ 'fetchClosedOrder': false,
101891
+ 'fetchClosedOrders': false,
101892
+ 'fetchCrossBorrowRate': false,
101893
+ 'fetchCrossBorrowRates': false,
101894
+ 'fetchCurrencies': true,
101895
+ 'fetchDeposit': false,
101896
+ 'fetchDepositAddress': false,
101897
+ 'fetchDepositAddresses': false,
101898
+ 'fetchDepositAddressesByNetwork': false,
101899
+ 'fetchDeposits': false,
101900
+ 'fetchDepositsWithdrawals': false,
101901
+ 'fetchDepositWithdrawFee': false,
101902
+ 'fetchDepositWithdrawFees': false,
101903
+ 'fetchFundingHistory': false,
101904
+ 'fetchFundingRate': false,
101905
+ 'fetchFundingRateHistory': false,
101906
+ 'fetchFundingRates': false,
101907
+ 'fetchIndexOHLCV': false,
101908
+ 'fetchIsolatedBorrowRate': false,
101909
+ 'fetchIsolatedBorrowRates': false,
101910
+ 'fetchL3OrderBook': false,
101911
+ 'fetchLedger': true,
101912
+ 'fetchLeverage': false,
101913
+ 'fetchLeverageTiers': false,
101914
+ 'fetchMarketLeverageTiers': false,
101915
+ 'fetchMarkets': true,
101916
+ 'fetchMarkOHLCV': false,
101917
+ 'fetchMyTrades': true,
101918
+ 'fetchOHLCV': true,
101919
+ 'fetchOpenInterestHistory': false,
101920
+ 'fetchOpenOrder': false,
101921
+ 'fetchOpenOrders': true,
101922
+ 'fetchOrder': true,
101923
+ 'fetchOrderBook': true,
101924
+ 'fetchOrderBooks': false,
101925
+ 'fetchOrders': false,
101926
+ 'fetchOrderTrades': false,
101927
+ 'fetchPosition': false,
101928
+ 'fetchPositions': false,
101929
+ 'fetchPositionsRisk': false,
101930
+ 'fetchPremiumIndexOHLCV': false,
101931
+ 'fetchStatus': false,
101932
+ 'fetchTicker': false,
101933
+ 'fetchTickers': true,
101934
+ 'fetchTime': false,
101935
+ 'fetchTrades': true,
101936
+ 'fetchTradingFee': false,
101937
+ 'fetchTradingFees': false,
101938
+ 'fetchTradingLimits': false,
101939
+ 'fetchTransactionFee': false,
101940
+ 'fetchTransactionFees': false,
101941
+ 'fetchTransactions': false,
101942
+ 'fetchTransfers': false,
101943
+ 'fetchWithdrawal': false,
101944
+ 'fetchWithdrawals': false,
101945
+ 'fetchWithdrawalWhitelist': false,
101946
+ 'reduceMargin': false,
101947
+ 'repayCrossMargin': false,
101948
+ 'repayIsolatedMargin': false,
101949
+ 'setLeverage': false,
101950
+ 'setMargin': false,
101951
+ 'setMarginMode': false,
101952
+ 'setPositionMode': false,
101953
+ 'signIn': false,
101954
+ 'transfer': false,
101955
+ 'withdraw': false,
101956
+ 'ws': false,
101957
+ },
101958
+ 'timeframes': {
101959
+ '1m': '60000',
101960
+ '5m': '300000',
101961
+ '30m': '1800000',
101962
+ '4h': '14400000',
101963
+ '1d': '86400000',
101964
+ },
101965
+ 'urls': {
101966
+ 'logo': 'https://github.com/ccxt/ccxt/assets/43336371/e86f87ec-6ba3-4410-962b-f7988c5db539',
101967
+ 'api': {
101968
+ 'public': 'https://api.coinmetro.com',
101969
+ 'private': 'https://api.coinmetro.com',
101970
+ },
101971
+ 'test': {
101972
+ 'public': 'https://api.coinmetro.com',
101973
+ 'private': 'https://api.coinmetro.com/open',
101974
+ },
101975
+ 'www': 'https://coinmetro.com/',
101976
+ 'doc': [
101977
+ 'https://documenter.getpostman.com/view/3653795/SVfWN6KS',
101978
+ ],
101979
+ 'fees': 'https://help.coinmetro.com/hc/en-gb/articles/6844007317789-What-are-the-fees-on-Coinmetro-',
101980
+ 'referral': 'https://go.coinmetro.com/?ref=crypto24',
101981
+ },
101982
+ 'api': {
101983
+ 'public': {
101984
+ 'get': {
101985
+ 'demo/temp': 1,
101986
+ 'exchange/candles/{pair}/{timeframe}/{from}/{to}': 3,
101987
+ 'exchange/prices': 1,
101988
+ 'exchange/ticks/{pair}/{from}': 3,
101989
+ 'assets': 1,
101990
+ 'markets': 1,
101991
+ 'exchange/book/{pair}': 3,
101992
+ 'exchange/bookUpdates/{pair}/{from}': 1, // not unified
101993
+ },
101994
+ },
101995
+ 'private': {
101996
+ 'get': {
101997
+ 'users/balances': 1,
101998
+ 'users/wallets/history/{since}': 1.67,
101999
+ 'exchange/orders/status/{orderID}': 1,
102000
+ 'exchange/orders/active': 1,
102001
+ 'exchange/orders/history/{since}': 1.67,
102002
+ 'exchange/fills/{since}': 1.67,
102003
+ 'exchange/margin': 1, // not unified
102004
+ },
102005
+ 'post': {
102006
+ 'jwt': 1,
102007
+ 'jwtDevice': 1,
102008
+ 'devices': 1,
102009
+ 'jwt-read-only': 1,
102010
+ 'exchange/orders/create': 1,
102011
+ 'exchange/orders/modify/{orderID}': 1,
102012
+ 'exchange/swap': 1,
102013
+ 'exchange/swap/confirm/{swapId}': 1,
102014
+ 'exchange/orders/close/{orderID}': 1,
102015
+ 'exchange/orders/hedge': 1, // not unified
102016
+ },
102017
+ 'put': {
102018
+ 'jwt': 1,
102019
+ 'exchange/orders/cancel/{orderID}': 1,
102020
+ 'users/margin/collateral': 1,
102021
+ 'users/margin/primary/{currency}': 1, // not unified
102022
+ },
102023
+ },
102024
+ },
102025
+ 'requiredCredentials': {
102026
+ 'apiKey': false,
102027
+ 'secret': false,
102028
+ 'uid': true,
102029
+ 'token': true,
102030
+ },
102031
+ 'fees': {
102032
+ 'trading': {
102033
+ 'feeSide': 'get',
102034
+ 'tierBased': false,
102035
+ 'percentage': true,
102036
+ 'taker': this.parseNumber('0.001'),
102037
+ 'maker': this.parseNumber('0'),
102038
+ },
102039
+ },
102040
+ 'precisionMode': _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__/* .DECIMAL_PLACES */ .nr,
102041
+ // exchange-specific options
102042
+ 'options': {
102043
+ 'currenciesByIdForParseMarket': undefined,
102044
+ 'currencyIdsListForParseMarket': undefined,
102045
+ },
102046
+ 'exceptions': {
102047
+ // https://trade-docs.coinmetro.co/?javascript--nodejs#message-codes
102048
+ 'exact': {
102049
+ 'Both buyingCurrency and sellingCurrency are required': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
102050
+ 'One and only one of buyingQty and sellingQty is required': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
102051
+ 'Invalid buyingCurrency': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
102052
+ 'Invalid \'from\'': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
102053
+ 'Invalid sellingCurrency': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
102054
+ 'Invalid buyingQty': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
102055
+ 'Invalid sellingQty': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
102056
+ 'Insufficient balance': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
102057
+ 'Expiration date is in the past or too near in the future': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
102058
+ 'Forbidden': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
102059
+ 'Order Not Found': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
102060
+ 'since must be a millisecond timestamp': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
102061
+ 'This pair is disabled on margin': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol, // 422 Unprocessable Entity {"message":"This pair is disabled on margin"}
102062
+ },
102063
+ 'broad': {
102064
+ 'accessing from a new IP': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
102065
+ 'available to allocate as collateral': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
102066
+ 'At least': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
102067
+ 'collateral is not allowed': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
102068
+ 'Insufficient liquidity': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
102069
+ 'Insufficient order size': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
102070
+ 'Invalid quantity': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
102071
+ 'Invalid Stop Loss': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
102072
+ 'Invalid stop price!': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
102073
+ 'Not enough balance': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
102074
+ 'Not enough margin': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
102075
+ 'orderType missing': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
102076
+ 'Server Timeout': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
102077
+ 'Time in force has to be IOC or FOK for market orders': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
102078
+ 'Too many attempts': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded, // 429 Too Many Requests {"message":"Too many attempts. Try again in 3 seconds"}
102079
+ },
102080
+ },
102081
+ });
102082
+ }
102083
+ async fetchCurrencies(params = {}) {
102084
+ /**
102085
+ * @method
102086
+ * @name coinmetro#fetchCurrencies
102087
+ * @description fetches all available currencies on an exchange
102088
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#d5876d43-a3fe-4479-8c58-24d0f044edfb
102089
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
102090
+ * @returns {object} an associative dictionary of currencies
102091
+ */
102092
+ const response = await this.publicGetAssets(params);
102093
+ //
102094
+ // [
102095
+ // {
102096
+ // "symbol": "BTC",
102097
+ // "name": "Bitcoin",
102098
+ // "color": "#FFA500",
102099
+ // "type": "coin",
102100
+ // "canDeposit": true,
102101
+ // "canWithdraw": true,
102102
+ // "canTrade": true,
102103
+ // "notabeneDecimals": 8,
102104
+ // "canMarket": true,
102105
+ // "maxSwap": 10000,
102106
+ // "digits": 6,
102107
+ // "multiplier": 1000000,
102108
+ // "bookDigits": 8,
102109
+ // "bookMultiplier": 100000000,
102110
+ // "sentimentData": {
102111
+ // "sentiment": 51.59555555555555,
102112
+ // "interest": 1.127511216044664
102113
+ // },
102114
+ // "minQty": 0.0001
102115
+ // },
102116
+ // {
102117
+ // "symbol": "EUR",
102118
+ // "name": "Euro",
102119
+ // "color": "#1246FF",
102120
+ // "type": "fiat",
102121
+ // "canDeposit": true,
102122
+ // "canWithdraw": true,
102123
+ // "canTrade": true,
102124
+ // "canMarket": true,
102125
+ // "maxSwap": 10000,
102126
+ // "digits": 2,
102127
+ // "multiplier": 100,
102128
+ // "bookDigits": 3,
102129
+ // "bookMultiplier": 1000,
102130
+ // "minQty": 5
102131
+ // }
102132
+ // ...
102133
+ // ]
102134
+ //
102135
+ const result = {};
102136
+ for (let i = 0; i < response.length; i++) {
102137
+ const currency = response[i];
102138
+ const id = this.safeString(currency, 'symbol');
102139
+ const code = this.safeCurrencyCode(id);
102140
+ const withdraw = this.safeValue(currency, 'canWithdraw');
102141
+ const deposit = this.safeValue(currency, 'canDeposit');
102142
+ const canTrade = this.safeValue(currency, 'canTrade');
102143
+ const active = canTrade ? withdraw : true;
102144
+ const precision = this.safeInteger(currency, 'digits');
102145
+ const minAmount = this.safeNumber(currency, 'minQty');
102146
+ result[code] = this.safeCurrencyStructure({
102147
+ 'id': id,
102148
+ 'code': code,
102149
+ 'name': code,
102150
+ 'info': currency,
102151
+ 'active': active,
102152
+ 'deposit': deposit,
102153
+ 'withdraw': withdraw,
102154
+ 'fee': undefined,
102155
+ 'precision': precision,
102156
+ 'limits': {
102157
+ 'amount': { 'min': minAmount, 'max': undefined },
102158
+ 'withdraw': { 'min': undefined, 'max': undefined },
102159
+ },
102160
+ 'networks': {},
102161
+ });
102162
+ }
102163
+ if (this.safeValue(this.options, 'currenciesByIdForParseMarket') === undefined) {
102164
+ const currenciesById = this.indexBy(result, 'id');
102165
+ this.options['currenciesByIdForParseMarket'] = currenciesById;
102166
+ this.options['currencyIdsListForParseMarket'] = Object.keys(currenciesById);
102167
+ }
102168
+ return result;
102169
+ }
102170
+ async fetchMarkets(params = {}) {
102171
+ /**
102172
+ * @method
102173
+ * @name coinmetro#fetchMarkets
102174
+ * @description retrieves data on all markets for coinmetro
102175
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#9fd18008-338e-4863-b07d-722878a46832
102176
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
102177
+ * @returns {object[]} an array of objects representing market data
102178
+ */
102179
+ const response = await this.publicGetMarkets(params);
102180
+ if (this.safeValue(this.options, 'currenciesByIdForParseMarket') === undefined) {
102181
+ await this.fetchCurrencies();
102182
+ }
102183
+ //
102184
+ // [
102185
+ // {
102186
+ // "pair": "PERPEUR",
102187
+ // "precision": 5,
102188
+ // "margin": false
102189
+ // },
102190
+ // {
102191
+ // "pair": "PERPUSD",
102192
+ // "precision": 5,
102193
+ // "margin": false
102194
+ // },
102195
+ // {
102196
+ // "pair": "YFIEUR",
102197
+ // "precision": 5,
102198
+ // "margin": false
102199
+ // },
102200
+ // ...
102201
+ // ]
102202
+ //
102203
+ return this.parseMarkets(response);
102204
+ }
102205
+ parseMarket(market) {
102206
+ const id = this.safeString(market, 'pair');
102207
+ const parsedMarketId = this.parseMarketId(id);
102208
+ const baseId = this.safeString(parsedMarketId, 'baseId');
102209
+ const quoteId = this.safeString(parsedMarketId, 'quoteId');
102210
+ const base = this.safeCurrencyCode(baseId);
102211
+ const quote = this.safeCurrencyCode(quoteId);
102212
+ const basePrecisionAndLimits = this.parseMarketPrecisionAndLimits(baseId);
102213
+ const quotePrecisionAndLimits = this.parseMarketPrecisionAndLimits(quoteId);
102214
+ const margin = this.safeValue(market, 'margin', false);
102215
+ const tradingFees = this.safeValue(this.fees, 'trading', {});
102216
+ return this.safeMarketStructure({
102217
+ 'id': id,
102218
+ 'symbol': base + '/' + quote,
102219
+ 'base': base,
102220
+ 'quote': quote,
102221
+ 'settle': undefined,
102222
+ 'baseId': baseId,
102223
+ 'quoteId': quoteId,
102224
+ 'settleId': undefined,
102225
+ 'type': 'spot',
102226
+ 'spot': true,
102227
+ 'margin': margin,
102228
+ 'swap': false,
102229
+ 'future': false,
102230
+ 'option': false,
102231
+ 'active': true,
102232
+ 'contract': false,
102233
+ 'linear': undefined,
102234
+ 'inverse': undefined,
102235
+ 'taker': this.safeNumber(tradingFees, 'taker'),
102236
+ 'maker': this.safeNumber(tradingFees, 'maker'),
102237
+ 'contractSize': undefined,
102238
+ 'expiry': undefined,
102239
+ 'expiryDatetime': undefined,
102240
+ 'strike': undefined,
102241
+ 'optionType': undefined,
102242
+ 'precision': {
102243
+ 'amount': basePrecisionAndLimits['precision'],
102244
+ 'price': quotePrecisionAndLimits['precision'],
102245
+ 'base': basePrecisionAndLimits['precision'],
102246
+ 'quote': quotePrecisionAndLimits['precision'],
102247
+ },
102248
+ 'limits': {
102249
+ 'leverage': {
102250
+ 'min': undefined,
102251
+ 'max': undefined,
102252
+ },
102253
+ 'amount': {
102254
+ 'min': basePrecisionAndLimits['minLimit'],
102255
+ 'max': undefined,
102256
+ },
102257
+ 'price': {
102258
+ 'min': undefined,
102259
+ 'max': undefined,
102260
+ },
102261
+ 'cost': {
102262
+ 'min': quotePrecisionAndLimits['minLimit'],
102263
+ 'max': undefined,
102264
+ },
102265
+ },
102266
+ 'created': undefined,
102267
+ 'info': market,
102268
+ });
102269
+ }
102270
+ parseMarketId(marketId) {
102271
+ let baseId = undefined;
102272
+ let quoteId = undefined;
102273
+ const currencyIds = this.safeValue(this.options, 'currencyIdsListForParseMarket', []);
102274
+ for (let i = 0; i < currencyIds.length; i++) {
102275
+ const currencyId = currencyIds[i];
102276
+ const entryIndex = marketId.indexOf(currencyId);
102277
+ if (entryIndex !== -1) {
102278
+ const restId = marketId.replace(currencyId, '');
102279
+ if (this.inArray(restId, currencyIds)) {
102280
+ if (entryIndex === 0) {
102281
+ baseId = currencyId;
102282
+ quoteId = restId;
102283
+ }
102284
+ else {
102285
+ baseId = restId;
102286
+ quoteId = currencyId;
102287
+ }
102288
+ break;
102289
+ }
102290
+ }
102291
+ }
102292
+ const result = {
102293
+ 'baseId': baseId,
102294
+ 'quoteId': quoteId,
102295
+ };
102296
+ return result;
102297
+ }
102298
+ parseMarketPrecisionAndLimits(currencyId) {
102299
+ const currencies = this.safeValue(this.options, 'currenciesByIdForParseMarket', {});
102300
+ const currency = this.safeValue(currencies, currencyId, {});
102301
+ const precision = this.safeInteger(currency, 'precision');
102302
+ const limits = this.safeValue(currency, 'limits', {});
102303
+ const amountLimits = this.safeValue(limits, 'amount', {});
102304
+ const minLimit = this.safeNumber(amountLimits, 'min');
102305
+ const result = {
102306
+ 'precision': precision,
102307
+ 'minLimit': minLimit,
102308
+ };
102309
+ return result;
102310
+ }
102311
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
102312
+ /**
102313
+ * @method
102314
+ * @name coinmetro#fetchOHLCV
102315
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
102316
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#13cfb5bc-7bfb-4847-85e1-e0f35dfb3573
102317
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
102318
+ * @param {string} timeframe the length of time each candle represents
102319
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
102320
+ * @param {int} [limit] the maximum amount of candles to fetch
102321
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
102322
+ * @param {int} [params.until] the latest time in ms to fetch entries for
102323
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
102324
+ */
102325
+ await this.loadMarkets();
102326
+ const market = this.market(symbol);
102327
+ const request = {
102328
+ 'pair': market['id'],
102329
+ 'timeframe': this.safeString(this.timeframes, timeframe, timeframe),
102330
+ };
102331
+ let until = undefined;
102332
+ if (since !== undefined) {
102333
+ request['from'] = since;
102334
+ if (limit !== undefined) {
102335
+ const duration = this.parseTimeframe(timeframe) * 1000;
102336
+ until = this.sum(since, duration * (limit));
102337
+ }
102338
+ }
102339
+ else {
102340
+ request['from'] = ':from'; // this endpoint doesn't accept empty from and to params (setting them into the value described in the documentation)
102341
+ }
102342
+ until = this.safeInteger2(params, 'till', 'until', until);
102343
+ if (until !== undefined) {
102344
+ params = this.omit(params, ['till', 'until']);
102345
+ request['to'] = until;
102346
+ }
102347
+ else {
102348
+ request['to'] = ':to';
102349
+ }
102350
+ const response = await this.publicGetExchangeCandlesPairTimeframeFromTo(this.extend(request, params));
102351
+ //
102352
+ // {
102353
+ // "candleHistory": [
102354
+ // {
102355
+ // "pair": "ETHUSDT",
102356
+ // "timeframe": 86400000,
102357
+ // "timestamp": 1697673600000,
102358
+ // "c": 1567.4409353098604,
102359
+ // "h": 1566.7514068472303,
102360
+ // "l": 1549.4563666936847,
102361
+ // "o": 1563.4490341395904,
102362
+ // "v": 0
102363
+ // },
102364
+ // {
102365
+ // "pair": "ETHUSDT",
102366
+ // "timeframe": 86400000,
102367
+ // "timestamp": 1697760000000,
102368
+ // "c": 1603.7831363339324,
102369
+ // "h": 1625.0356823666407,
102370
+ // "l": 1565.4629390011505,
102371
+ // "o": 1566.8387619426028,
102372
+ // "v": 0
102373
+ // },
102374
+ // ...
102375
+ // ]
102376
+ // }
102377
+ //
102378
+ const candleHistory = this.safeValue(response, 'candleHistory', []);
102379
+ return this.parseOHLCVs(candleHistory, market, timeframe, since, limit);
102380
+ }
102381
+ parseOHLCV(ohlcv, market = undefined) {
102382
+ return [
102383
+ this.safeInteger(ohlcv, 'timestamp'),
102384
+ this.safeNumber(ohlcv, 'o'),
102385
+ this.safeNumber(ohlcv, 'h'),
102386
+ this.safeNumber(ohlcv, 'l'),
102387
+ this.safeNumber(ohlcv, 'c'),
102388
+ this.safeNumber(ohlcv, 'v'),
102389
+ ];
102390
+ }
102391
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
102392
+ /**
102393
+ * @method
102394
+ * @name coinmetro#fetchTrades
102395
+ * @description get the list of most recent trades for a particular symbol
102396
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ee5d698-06da-4570-8c84-914185e05065
102397
+ * @param {string} symbol unified symbol of the market to fetch trades for
102398
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
102399
+ * @param {int} [limit] the maximum amount of trades to fetch (default 200, max 500)
102400
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
102401
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
102402
+ */
102403
+ await this.loadMarkets();
102404
+ const market = this.market(symbol);
102405
+ const request = {
102406
+ 'pair': market['id'],
102407
+ };
102408
+ if (since !== undefined) {
102409
+ request['from'] = since;
102410
+ }
102411
+ else {
102412
+ // this endpoint accepts empty from param
102413
+ request['from'] = '';
102414
+ }
102415
+ const response = await this.publicGetExchangeTicksPairFrom(this.extend(request, params));
102416
+ //
102417
+ // {
102418
+ // "tickHistory": [
102419
+ // {
102420
+ // "pair": "ETHUSDT",
102421
+ // "price": 2077.5623,
102422
+ // "qty": 0.002888,
102423
+ // "timestamp": 1700684689420,
102424
+ // "seqNum": 10644554718
102425
+ // },
102426
+ // {
102427
+ // "pair": "ETHUSDT",
102428
+ // "price": 2078.3848,
102429
+ // "qty": 0.003368,
102430
+ // "timestamp": 1700684738410,
102431
+ // "seqNum": 10644559561
102432
+ // },
102433
+ // {
102434
+ // "pair": "ETHUSDT",
102435
+ // "price": 2077.1513,
102436
+ // "qty": 0.00337,
102437
+ // "timestamp": 1700684816853,
102438
+ // "seqNum": 10644567113
102439
+ // },
102440
+ // ...
102441
+ // ]
102442
+ // }
102443
+ //
102444
+ const tickHistory = this.safeValue(response, 'tickHistory', []);
102445
+ return this.parseTrades(tickHistory, market, since, limit);
102446
+ }
102447
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
102448
+ /**
102449
+ * @method
102450
+ * @name coinmetro#fetchMyTrades
102451
+ * @description fetch all trades made by the user
102452
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#4d48ae69-8ee2-44d1-a268-71f84e557b7b
102453
+ * @param {string} symbol unified market symbol
102454
+ * @param {int} [since] the earliest time in ms to fetch trades for
102455
+ * @param {int} [limit] the maximum number of trades structures to retrieve (default 500, max 1000)
102456
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
102457
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
102458
+ */
102459
+ await this.loadMarkets();
102460
+ let market = undefined;
102461
+ if (symbol !== undefined) {
102462
+ market = this.market(symbol);
102463
+ }
102464
+ const request = {};
102465
+ if (since !== undefined) {
102466
+ request['since'] = since;
102467
+ }
102468
+ else {
102469
+ // the exchange requires a value for the since param
102470
+ request['since'] = 0;
102471
+ }
102472
+ const response = await this.privateGetExchangeFillsSince(this.extend(request, params));
102473
+ //
102474
+ // [
102475
+ // {
102476
+ // "pair": "ETHUSDC",
102477
+ // "seqNumber": 10873722343,
102478
+ // "timestamp": 1702570610747,
102479
+ // "qty": 0.002,
102480
+ // "price": 2282,
102481
+ // "side": "buy",
102482
+ // "orderID": "65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c"
102483
+ // },
102484
+ // ...
102485
+ // ]
102486
+ //
102487
+ return this.parseTrades(response, market, since, limit);
102488
+ }
102489
+ parseTrade(trade, market = undefined) {
102490
+ //
102491
+ // fetchTrades
102492
+ // {
102493
+ // "pair": "ETHUSDT",
102494
+ // "price": 2077.1513,
102495
+ // "qty": 0.00337,
102496
+ // "timestamp": 1700684816853,
102497
+ // "seqNum": 10644567113
102498
+ // },
102499
+ //
102500
+ // fetchMyTrades
102501
+ // {
102502
+ // "pair": "ETHUSDC",
102503
+ // "seqNumber": 10873722343,
102504
+ // "timestamp": 1702570610747,
102505
+ // "qty": 0.002,
102506
+ // "price": 2282,
102507
+ // "side": "buy",
102508
+ // "orderID": "65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c"
102509
+ // }
102510
+ //
102511
+ // fetchOrders
102512
+ // {
102513
+ // "_id": "657b31d360a9542449381bdc",
102514
+ // "seqNumber": 10873722343,
102515
+ // "timestamp": 1702570610747,
102516
+ // "qty": 0.002,
102517
+ // "price": 2282,
102518
+ // "side": "buy"
102519
+ // }
102520
+ //
102521
+ // {
102522
+ // "pair":"ETHUSDC",
102523
+ // "seqNumber":"10873722343",
102524
+ // "timestamp":"1702570610747",
102525
+ // "qty":"0.002",
102526
+ // "price":"2282",
102527
+ // "side":"buy",
102528
+ // "orderID":"65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c",
102529
+ // "userID":"65671262d93d9525ac009e36"
102530
+ // }
102531
+ //
102532
+ const marketId = this.safeString2(trade, 'symbol', 'pair');
102533
+ market = this.safeMarket(marketId, market);
102534
+ const symbol = market['symbol'];
102535
+ const id = this.safeStringN(trade, ['_id', 'seqNum', 'seqNumber']);
102536
+ const timestamp = this.safeInteger(trade, 'timestamp');
102537
+ const priceString = this.safeString(trade, 'price');
102538
+ const amountString = this.safeString(trade, 'qty');
102539
+ const order = this.safeString(trade, 'orderID');
102540
+ const side = this.safeString(trade, 'side');
102541
+ return this.safeTrade({
102542
+ 'id': id,
102543
+ 'order': order,
102544
+ 'timestamp': timestamp,
102545
+ 'datetime': this.iso8601(timestamp),
102546
+ 'symbol': symbol,
102547
+ 'type': undefined,
102548
+ 'side': side,
102549
+ 'takerOrMaker': undefined,
102550
+ 'price': priceString,
102551
+ 'amount': amountString,
102552
+ 'cost': undefined,
102553
+ 'fee': undefined,
102554
+ 'info': trade,
102555
+ }, market);
102556
+ }
102557
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
102558
+ /**
102559
+ * @method
102560
+ * @name coinmetro#fetchOrderBook
102561
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
102562
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#26ad80d7-8c46-41b5-9208-386f439a8b87
102563
+ * @param {string} symbol unified symbol of the market to fetch the order book for
102564
+ * @param {int} [limit] the maximum amount of order book entries to return (default 100, max 200)
102565
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
102566
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
102567
+ */
102568
+ await this.loadMarkets();
102569
+ const market = this.market(symbol);
102570
+ const request = {
102571
+ 'pair': market['id'],
102572
+ };
102573
+ const response = await this.publicGetExchangeBookPair(this.extend(request, params));
102574
+ //
102575
+ // {
102576
+ // "book": {
102577
+ // "pair": "ETHUSDT",
102578
+ // "seqNumber": 10800409239,
102579
+ // "ask": {
102580
+ // "2354.2861": 3.75,
102581
+ // "2354.3138": 19,
102582
+ // "2354.7538": 80,
102583
+ // "2355.5430": 260,
102584
+ // "2356.4611": 950,
102585
+ // "2361.7150": 1500,
102586
+ // "206194.0000": 0.01
102587
+ // },
102588
+ // "bid": {
102589
+ // "2352.6339": 3.75,
102590
+ // "2352.6002": 19,
102591
+ // "2352.2402": 80,
102592
+ // "2351.4582": 260,
102593
+ // "2349.3111": 950,
102594
+ // "2343.8601": 1500,
102595
+ // "1.0000": 5
102596
+ // },
102597
+ // "checksum": 2108177337
102598
+ // }
102599
+ // }
102600
+ //
102601
+ const book = this.safeValue(response, 'book', {});
102602
+ const rawBids = this.safeValue(book, 'bid', {});
102603
+ const rawAsks = this.safeValue(book, 'ask', {});
102604
+ const rawOrderbook = {
102605
+ 'bids': rawBids,
102606
+ 'asks': rawAsks,
102607
+ };
102608
+ const orderbook = this.parseOrderBook(rawOrderbook, symbol);
102609
+ orderbook['nonce'] = this.safeInteger(book, 'seqNumber');
102610
+ return orderbook;
102611
+ }
102612
+ parseBidsAsks(bidasks, priceKey = 0, amountKey = 1, countOrIdKey = 2) {
102613
+ const prices = Object.keys(bidasks);
102614
+ const result = [];
102615
+ for (let i = 0; i < prices.length; i++) {
102616
+ const priceString = this.safeString(prices, i);
102617
+ const price = this.safeNumber(prices, i);
102618
+ const volume = this.safeNumber(bidasks, priceString);
102619
+ result.push([price, volume]);
102620
+ }
102621
+ return result;
102622
+ }
102623
+ async fetchTickers(symbols = undefined, params = {}) {
102624
+ /**
102625
+ * @method
102626
+ * @name coinmetro#fetchTickers
102627
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
102628
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ecd1cd1-f162-45a3-8b3b-de690332a485
102629
+ * @param {string[]} [symbols] unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
102630
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
102631
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
102632
+ */
102633
+ await this.loadMarkets();
102634
+ const response = await this.publicGetExchangePrices(params);
102635
+ //
102636
+ // {
102637
+ // "latestPrices": [
102638
+ // {
102639
+ // "pair": "PERPEUR",
102640
+ // "timestamp": 1702549840393,
102641
+ // "price": 0.7899997816001223,
102642
+ // "qty": 1e-12,
102643
+ // "ask": 0.8,
102644
+ // "bid": 0.7799995632002446
102645
+ // },
102646
+ // {
102647
+ // "pair": "PERPUSD",
102648
+ // "timestamp": 1702549841973,
102649
+ // "price": 0.8615317721366659,
102650
+ // "qty": 1e-12,
102651
+ // "ask": 0.8742333599999257,
102652
+ // "bid": 0.8490376365388491
102653
+ // },
102654
+ // ...
102655
+ // ],
102656
+ // "24hInfo": [
102657
+ // {
102658
+ // "delta": 0.25396444229149906,
102659
+ // "h": 0.78999978160012,
102660
+ // "l": 0.630001740844,
102661
+ // "v": 54.910000002833996,
102662
+ // "pair": "PERPEUR",
102663
+ // "sentimentData": {
102664
+ // "sentiment": 36.71333333333333,
102665
+ // "interest": 0.47430830039525695
102666
+ // }
102667
+ // },
102668
+ // {
102669
+ // "delta": 0.26915154078134096,
102670
+ // "h": 0.86220315458898,
102671
+ // "l": 0.67866757035154,
102672
+ // "v": 2.835000000000001e-9,
102673
+ // "pair": "PERPUSD",
102674
+ // "sentimentData": {
102675
+ // "sentiment": 36.71333333333333,
102676
+ // "interest": 0.47430830039525695
102677
+ // }
102678
+ // },
102679
+ // ...
102680
+ // ]
102681
+ // }
102682
+ //
102683
+ const latestPrices = this.safeValue(response, 'latestPrices', []);
102684
+ const twentyFourHInfos = this.safeValue(response, '24hInfo', []);
102685
+ const tickersObject = {};
102686
+ // merging info from two lists into one
102687
+ for (let i = 0; i < latestPrices.length; i++) {
102688
+ const latestPrice = latestPrices[i];
102689
+ const marketId = this.safeString(latestPrice, 'pair');
102690
+ if (marketId !== undefined) {
102691
+ tickersObject[marketId] = latestPrice;
102692
+ }
102693
+ }
102694
+ for (let i = 0; i < twentyFourHInfos.length; i++) {
102695
+ const twentyFourHInfo = twentyFourHInfos[i];
102696
+ const marketId = this.safeString(twentyFourHInfo, 'pair');
102697
+ if (marketId !== undefined) {
102698
+ const latestPrice = this.safeValue(tickersObject, marketId, {});
102699
+ tickersObject[marketId] = this.extend(twentyFourHInfo, latestPrice);
102700
+ }
102701
+ }
102702
+ const tickers = Object.values(tickersObject);
102703
+ return this.parseTickers(tickers, symbols);
102704
+ }
102705
+ async fetchBidsAsks(symbols = undefined, params = {}) {
102706
+ /**
102707
+ * @method
102708
+ * @name coinmetro#fetchBidsAsks
102709
+ * @description fetches the bid and ask price and volume for multiple markets
102710
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#6ecd1cd1-f162-45a3-8b3b-de690332a485
102711
+ * @param {string[]} [symbols] unified symbols of the markets to fetch the bids and asks for, all markets are returned if not assigned
102712
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
102713
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
102714
+ */
102715
+ await this.loadMarkets();
102716
+ const response = await this.publicGetExchangePrices(params);
102717
+ const latestPrices = this.safeValue(response, 'latestPrices', []);
102718
+ return this.parseTickers(latestPrices, symbols);
102719
+ }
102720
+ parseTicker(ticker, market = undefined) {
102721
+ //
102722
+ // {
102723
+ // "pair": "PERPUSD",
102724
+ // "timestamp": 1702549841973,
102725
+ // "price": 0.8615317721366659,
102726
+ // "qty": 1e-12,
102727
+ // "ask": 0.8742333599999257,
102728
+ // "bid": 0.8490376365388491
102729
+ // "delta": 0.26915154078134096,
102730
+ // "h": 0.86220315458898,
102731
+ // "l": 0.67866757035154,
102732
+ // "v": 2.835000000000001e-9,
102733
+ // "sentimentData": {
102734
+ // "sentiment": 36.71333333333333,
102735
+ // "interest": 0.47430830039525695
102736
+ // }
102737
+ // }
102738
+ //
102739
+ const marketId = this.safeString(ticker, 'pair');
102740
+ market = this.safeMarket(marketId, market);
102741
+ const timestamp = this.safeInteger(ticker, 'timestamp');
102742
+ const bid = this.safeString(ticker, 'bid');
102743
+ const ask = this.safeString(ticker, 'ask');
102744
+ const high = this.safeString(ticker, 'h');
102745
+ const low = this.safeString(ticker, 'l');
102746
+ const last = this.safeString(ticker, 'price');
102747
+ const baseVolume = this.safeString(ticker, 'v');
102748
+ const delta = this.safeString(ticker, 'delta');
102749
+ const percentage = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringMul(delta, '100');
102750
+ return this.safeTicker({
102751
+ 'symbol': market['symbol'],
102752
+ 'timestamp': timestamp,
102753
+ 'datetime': this.iso8601(timestamp),
102754
+ 'open': undefined,
102755
+ 'high': high,
102756
+ 'low': low,
102757
+ 'close': undefined,
102758
+ 'last': last,
102759
+ 'bid': bid,
102760
+ 'bidVolume': undefined,
102761
+ 'ask': ask,
102762
+ 'askVolume': undefined,
102763
+ 'vwap': undefined,
102764
+ 'previousClose': undefined,
102765
+ 'change': undefined,
102766
+ 'percentage': percentage,
102767
+ 'average': undefined,
102768
+ 'baseVolume': baseVolume,
102769
+ 'quoteVolume': undefined,
102770
+ 'info': ticker,
102771
+ }, market);
102772
+ }
102773
+ async fetchBalance(params = {}) {
102774
+ /**
102775
+ * @method
102776
+ * @name coinmetro#fetchBalance
102777
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
102778
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#698ae067-43dd-4e19-a0ac-d9ba91381816
102779
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
102780
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
102781
+ */
102782
+ await this.loadMarkets();
102783
+ const response = await this.privateGetUsersBalances(params);
102784
+ return this.parseBalance(response);
102785
+ }
102786
+ parseBalance(response) {
102787
+ //
102788
+ // {
102789
+ // "USDC": {
102790
+ // "USDC": 99,
102791
+ // "EUR": 91.16,
102792
+ // "BTC": 0.002334
102793
+ // },
102794
+ // "XCM": {
102795
+ // "XCM": 0,
102796
+ // "EUR": 0,
102797
+ // "BTC": 0
102798
+ // },
102799
+ // "TOTAL": {
102800
+ // "EUR": 91.16,
102801
+ // "BTC": 0.002334
102802
+ // },
102803
+ // "REF": {
102804
+ // "XCM": 0,
102805
+ // "EUR": 0,
102806
+ // "BTC": 0
102807
+ // }
102808
+ // }
102809
+ //
102810
+ const result = {
102811
+ 'info': response,
102812
+ };
102813
+ const balances = this.omit(response, ['TOTAL', 'REF']);
102814
+ const currencyIds = Object.keys(balances);
102815
+ for (let i = 0; i < currencyIds.length; i++) {
102816
+ const currencyId = currencyIds[i];
102817
+ const code = this.safeCurrencyCode(currencyId);
102818
+ const account = this.account();
102819
+ const currency = this.safeValue(balances, currencyId, {});
102820
+ account['total'] = this.safeString(currency, currencyId);
102821
+ result[code] = account;
102822
+ }
102823
+ return this.safeBalance(result);
102824
+ }
102825
+ async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
102826
+ /**
102827
+ * @method
102828
+ * @name coinmetro#fetchLedger
102829
+ * @description fetch the history of changes, actions done by the user or operations that altered balance of the user
102830
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#4e7831f7-a0e7-4c3e-9336-1d0e5dcb15cf
102831
+ * @param {string} code unified currency code, default is undefined
102832
+ * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
102833
+ * @param {int} [limit] max number of ledger entrys to return (default 200, max 500)
102834
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
102835
+ * @param {int} [params.until] the latest time in ms to fetch entries for
102836
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
102837
+ */
102838
+ await this.loadMarkets();
102839
+ const request = {};
102840
+ if (since !== undefined) {
102841
+ request['since'] = since;
102842
+ }
102843
+ else {
102844
+ // this endpoint accepts empty since param
102845
+ request['since'] = '';
102846
+ }
102847
+ let currency = undefined;
102848
+ if (code !== undefined) {
102849
+ currency = this.currency(code);
102850
+ }
102851
+ const response = await this.privateGetUsersWalletsHistorySince(this.extend(request, params));
102852
+ //
102853
+ // {
102854
+ // "list": [
102855
+ // {
102856
+ // "currency": "USDC",
102857
+ // "label": "USDC",
102858
+ // "userId": "65671262d93d9525ac009e36",
102859
+ // "balance": 0,
102860
+ // "disabled": false,
102861
+ // "balanceHistory": [
102862
+ // {
102863
+ // "description": "Deposit - 657973a9b6eadf0f33d70100",
102864
+ // "JSONdata": {
102865
+ // "fees": 0,
102866
+ // "notes": "Via Crypto",
102867
+ // "txHash": "0x2e4875185b0f312d8e24b2d26d46bf9877db798b608ad2ff97b2b8bc7d8134e5",
102868
+ // "last4Digits": null,
102869
+ // "IBAN": null,
102870
+ // "alternativeChain": "polygon",
102871
+ // "referenceId": "657973a9b6eadf0f33d70100",
102872
+ // "status": "completed",
102873
+ // "tracked": true
102874
+ // },
102875
+ // "amount": 99,
102876
+ // "timestamp": "2023-12-13T09:04:51.270Z",
102877
+ // "amountEUR": 91.79310117335974
102878
+ // },
102879
+ // {
102880
+ // "description": "Order 65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c SeqNum 10873722342",
102881
+ // "JSONdata": {
102882
+ // "price": "2282.00 ETH/USDC",
102883
+ // "fees": 0,
102884
+ // "notes": "Order 3a8c5b4d6c"
102885
+ // },
102886
+ // "amount": -4.564,
102887
+ // "timestamp": "2023-12-14T16:16:50.760Z",
102888
+ // "amountEUR": -4.150043849187587
102889
+ // },
102890
+ // ...
102891
+ // ]
102892
+ // },
102893
+ // {
102894
+ // "currency": "ETH",
102895
+ // "label": "ETH",
102896
+ // "userId": "65671262d93d9525ac009e36",
102897
+ // "balance": 0,
102898
+ // "disabled": false,
102899
+ // "balanceHistory": [
102900
+ // {
102901
+ // "description": "Order 65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c SeqNum 10873722342",
102902
+ // "JSONdata": {
102903
+ // "price": "2282.00 ETH/USDC",
102904
+ // "fees": 0.000002,
102905
+ // "notes": "Order 3a8c5b4d6c"
102906
+ // },
102907
+ // "amount": 0.001998,
102908
+ // "timestamp": "2023-12-14T16:16:50.761Z",
102909
+ // "amountEUR": 4.144849415806856
102910
+ // },
102911
+ // ...
102912
+ // ]
102913
+ // },
102914
+ // {
102915
+ // "currency": "DOGE",
102916
+ // "label": "DOGE",
102917
+ // "userId": "65671262d93d9525ac009e36",
102918
+ // "balance": 0,
102919
+ // "disabled": false,
102920
+ // "balanceHistory": [
102921
+ // {
102922
+ // "description": "Order 65671262d93d9525ac009e361702905785319b5d9016dc20736034d13ca6a - Swap",
102923
+ // "JSONdata": {
102924
+ // "swap": true,
102925
+ // "subtype": "swap",
102926
+ // "fees": 0,
102927
+ // "price": "0.0905469 DOGE/USDC",
102928
+ // "notes": "Swap 034d13ca6a"
102929
+ // },
102930
+ // "amount": 70,
102931
+ // "timestamp": "2023-12-18T13:23:05.836Z",
102932
+ // "amountEUR": 5.643627624549227
102933
+ // }
102934
+ // ]
102935
+ // },
102936
+ // ...
102937
+ // ]
102938
+ // }
102939
+ //
102940
+ const ledgerByCurrencies = this.safeValue(response, 'list', []);
102941
+ const ledger = [];
102942
+ for (let i = 0; i < ledgerByCurrencies.length; i++) {
102943
+ const currencyLedger = ledgerByCurrencies[i];
102944
+ const currencyId = this.safeString(currencyLedger, 'currency');
102945
+ const balanceHistory = this.safeValue(currencyLedger, 'balanceHistory', []);
102946
+ for (let j = 0; j < balanceHistory.length; j++) {
102947
+ const rawLedgerEntry = balanceHistory[j];
102948
+ rawLedgerEntry['currencyId'] = currencyId;
102949
+ ledger.push(rawLedgerEntry);
102950
+ }
102951
+ }
102952
+ return this.parseLedger(ledger, currency, since, limit);
102953
+ }
102954
+ parseLedgerEntry(item, currency = undefined) {
102955
+ const datetime = this.safeString(item, 'timestamp');
102956
+ const currencyId = this.safeString(item, 'currencyId');
102957
+ item = this.omit(item, 'currencyId');
102958
+ currency = this.safeCurrency(currencyId, currency);
102959
+ const description = this.safeString(item, 'description', '');
102960
+ const [type, referenceId] = this.parseLedgerEntryDescription(description);
102961
+ const JSONdata = this.safeValue(item, 'JSONdata', {});
102962
+ const feeCost = this.safeString(JSONdata, 'fees');
102963
+ const fee = {
102964
+ 'cost': feeCost,
102965
+ 'currency': undefined,
102966
+ };
102967
+ let amount = this.safeString(item, 'amount');
102968
+ let direction = undefined;
102969
+ if (amount !== undefined) {
102970
+ if (_base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringLt(amount, '0')) {
102971
+ direction = 'out';
102972
+ amount = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringAbs(amount);
102973
+ }
102974
+ else if (_base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringGt(amount, '0')) {
102975
+ direction = 'in';
102976
+ }
102977
+ }
102978
+ return this.safeLedgerEntry({
102979
+ 'info': item,
102980
+ 'id': undefined,
102981
+ 'timestamp': this.parse8601(datetime),
102982
+ 'datetime': datetime,
102983
+ 'direction': direction,
102984
+ 'account': undefined,
102985
+ 'referenceId': referenceId,
102986
+ 'referenceAccount': undefined,
102987
+ 'type': type,
102988
+ 'currency': currency,
102989
+ 'amount': amount,
102990
+ 'before': undefined,
102991
+ 'after': undefined,
102992
+ 'status': undefined,
102993
+ 'fee': fee,
102994
+ }, currency);
102995
+ }
102996
+ parseLedgerEntryDescription(description) {
102997
+ let descriptionArray = [];
102998
+ if (description !== undefined) {
102999
+ descriptionArray = description.split(' ');
103000
+ }
103001
+ let type = undefined;
103002
+ let referenceId = undefined;
103003
+ if (descriptionArray.length > 1) {
103004
+ type = this.parseLedgerEntryType(descriptionArray[0]);
103005
+ if (descriptionArray[1] !== '-') {
103006
+ referenceId = descriptionArray[1];
103007
+ }
103008
+ else {
103009
+ referenceId = this.safeString(descriptionArray, 2);
103010
+ }
103011
+ }
103012
+ return [type, referenceId];
103013
+ }
103014
+ parseLedgerEntryType(type) {
103015
+ const types = {
103016
+ 'Deposit': 'transaction',
103017
+ 'Withdraw': 'transaction',
103018
+ 'Order': 'trade',
103019
+ };
103020
+ return this.safeString(types, type, type);
103021
+ }
103022
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
103023
+ /**
103024
+ * @method
103025
+ * @name coinmetro#createOrder
103026
+ * @description create a trade order
103027
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#a4895a1d-3f50-40ae-8231-6962ef06c771
103028
+ * @param {string} symbol unified symbol of the market to create an order in
103029
+ * @param {string} type 'market' or 'limit'
103030
+ * @param {string} side 'buy' or 'sell'
103031
+ * @param {float} amount how much of currency you want to trade in units of base currency
103032
+ * @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
103033
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
103034
+ * @param {float} [params.cost] the quote quantity that can be used as an alternative for the amount in market orders
103035
+ * @param {string} [params.timeInForce] "GTC", "IOC", "FOK", "GTD"
103036
+ * @param {number} [params.expirationTime] timestamp in millisecond, for GTD orders only
103037
+ * @param {float} [params.triggerPrice] the price at which a trigger order is triggered at
103038
+ * @param {float} [params.stopLossPrice] *margin only* The price at which a stop loss order is triggered at
103039
+ * @param {float} [params.takeProfitPrice] *margin only* The price at which a take profit order is triggered at
103040
+ * @param {bool} [params.margin] true for creating a margin order
103041
+ * @param {string} [params.fillStyle] fill style of the limit order: "sell" fulfills selling quantity "buy" fulfills buying quantity "base" fulfills base currency quantity "quote" fulfills quote currency quantity
103042
+ * @param {string} [params.clientOrderId] client's comment
103043
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
103044
+ */
103045
+ await this.loadMarkets();
103046
+ const market = this.market(symbol);
103047
+ let request = {};
103048
+ request['orderType'] = type;
103049
+ let precisedAmount = undefined;
103050
+ if (amount !== undefined) {
103051
+ precisedAmount = this.amountToPrecision(symbol, amount);
103052
+ }
103053
+ let cost = this.safeValue(params, 'cost');
103054
+ params = this.omit(params, 'cost');
103055
+ if (type === 'limit') {
103056
+ if ((price === undefined) && (cost === undefined)) {
103057
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' createOrder() requires a price or params.cost argument for a ' + type + ' order');
103058
+ }
103059
+ else if ((price !== undefined) && (amount !== undefined)) {
103060
+ const costString = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringMul(this.numberToString(price), this.numberToString(precisedAmount));
103061
+ cost = this.parseToNumeric(costString);
103062
+ }
103063
+ }
103064
+ let precisedCost = undefined;
103065
+ if (cost !== undefined) {
103066
+ precisedCost = this.costToPrecision(symbol, cost);
103067
+ }
103068
+ if (side === 'sell') {
103069
+ request = this.handleCreateOrderSide(market['baseId'], market['quoteId'], precisedAmount, precisedCost, request);
103070
+ }
103071
+ else if (side === 'buy') {
103072
+ request = this.handleCreateOrderSide(market['quoteId'], market['baseId'], precisedCost, precisedAmount, request);
103073
+ }
103074
+ const timeInForce = this.safeValue(params, 'timeInForce');
103075
+ if (timeInForce !== undefined) {
103076
+ params = this.omit(params, 'timeInForce');
103077
+ request['timeInForce'] = this.encodeOrderTimeInForce(timeInForce);
103078
+ }
103079
+ const stopPrice = this.safeString2(params, 'triggerPrice', 'stopPrice');
103080
+ if (stopPrice !== undefined) {
103081
+ params = this.omit(params, ['triggerPrice']);
103082
+ request['stopPrice'] = this.priceToPrecision(symbol, stopPrice);
103083
+ }
103084
+ const userData = this.safeValue(params, 'userData', {});
103085
+ const comment = this.safeString2(params, 'clientOrderId', 'comment');
103086
+ if (comment !== undefined) {
103087
+ params = this.omit(params, ['clientOrderId']);
103088
+ userData['comment'] = comment;
103089
+ }
103090
+ const stopLossPrice = this.safeString(params, 'stopLossPrice');
103091
+ if (stopLossPrice !== undefined) {
103092
+ params = this.omit(params, 'stopLossPrice');
103093
+ userData['stopLoss'] = this.priceToPrecision(symbol, stopLossPrice);
103094
+ }
103095
+ const takeProfitPrice = this.safeString(params, 'takeProfitPrice');
103096
+ if (takeProfitPrice !== undefined) {
103097
+ params = this.omit(params, 'takeProfitPrice');
103098
+ userData['takeProfit'] = this.priceToPrecision(symbol, takeProfitPrice);
103099
+ }
103100
+ if (!this.isEmpty(userData)) {
103101
+ request['userData'] = userData;
103102
+ }
103103
+ const response = await this.privatePostExchangeOrdersCreate(this.extend(request, params));
103104
+ //
103105
+ // {
103106
+ // "userID": "65671262d93d9525ac009e36",
103107
+ // "orderID": "65671262d93d9525ac009e36170257448481749b7ee2893bafec2",
103108
+ // "orderType": "market",
103109
+ // "buyingCurrency": "ETH",
103110
+ // "sellingCurrency": "USDC",
103111
+ // "buyingQty": 0.002,
103112
+ // "timeInForce": 4,
103113
+ // "boughtQty": 0.002,
103114
+ // "soldQty": 4.587,
103115
+ // "creationTime": 1702574484829,
103116
+ // "seqNumber": 10874285330,
103117
+ // "firstFillTime": 1702574484831,
103118
+ // "lastFillTime": 1702574484831,
103119
+ // "fills": [
103120
+ // {
103121
+ // "seqNumber": 10874285329,
103122
+ // "timestamp": 1702574484831,
103123
+ // "qty": 0.002,
103124
+ // "price": 2293.5,
103125
+ // "side": "buy"
103126
+ // }
103127
+ // ],
103128
+ // "completionTime": 1702574484831,
103129
+ // "takerQty": 0.002
103130
+ // }
103131
+ //
103132
+ return this.parseOrder(response, market);
103133
+ }
103134
+ handleCreateOrderSide(sellingCurrency, buyingCurrency, sellingQty, buyingQty, request = {}) {
103135
+ request['sellingCurrency'] = sellingCurrency;
103136
+ request['buyingCurrency'] = buyingCurrency;
103137
+ if (sellingQty !== undefined) {
103138
+ request['sellingQty'] = sellingQty;
103139
+ }
103140
+ if (buyingQty !== undefined) {
103141
+ request['buyingQty'] = buyingQty;
103142
+ }
103143
+ return request;
103144
+ }
103145
+ encodeOrderTimeInForce(timeInForce) {
103146
+ const timeInForceTypes = {
103147
+ 'GTC': 1,
103148
+ 'IOC': 2,
103149
+ 'GTD': 3,
103150
+ 'FOK': 4,
103151
+ };
103152
+ return this.safeValue(timeInForceTypes, timeInForce, timeInForce);
103153
+ }
103154
+ async cancelOrder(id, symbol = undefined, params = {}) {
103155
+ /**
103156
+ * @method
103157
+ * @name coinmetro#cancelOrder
103158
+ * @description cancels an open order
103159
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#eaea86da-16ca-4c56-9f00-5b1cb2ad89f8
103160
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#47f913fb-8cab-49f4-bc78-d980e6ced316
103161
+ * @param {string} id order id
103162
+ * @param {string} symbol not used by coinmetro cancelOrder ()
103163
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
103164
+ * @param {string} [params.margin] true for cancelling a margin order
103165
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
103166
+ */
103167
+ await this.loadMarkets();
103168
+ const request = {
103169
+ 'orderID': id,
103170
+ };
103171
+ const marginMode = undefined;
103172
+ [params, params] = this.handleMarginModeAndParams('cancelOrder', params);
103173
+ const isMargin = this.safeValue(params, 'margin', false);
103174
+ params = this.omit(params, 'margin');
103175
+ let response = undefined;
103176
+ if (isMargin || (marginMode !== undefined)) {
103177
+ response = await this.privatePostExchangeOrdersCloseOrderID(this.extend(request, params));
103178
+ }
103179
+ else {
103180
+ response = await this.privatePutExchangeOrdersCancelOrderID(this.extend(request, params));
103181
+ }
103182
+ //
103183
+ // {
103184
+ // "userID": "65671262d93d9525ac009e36",
103185
+ // "orderID": "65671262d93d9525ac009e3617026635256739c996fe17d7cd5d4",
103186
+ // "orderType": "limit",
103187
+ // "buyingCurrency": "ETH",
103188
+ // "sellingCurrency": "USDC",
103189
+ // "fillStyle": "sell",
103190
+ // "orderPlatform": "trade-v3",
103191
+ // "timeInForce": 1,
103192
+ // "buyingQty": 0.005655,
103193
+ // "sellingQty": 11.31,
103194
+ // "boughtQty": 0,
103195
+ // "soldQty": 0,
103196
+ // "creationTime": 1702663525713,
103197
+ // "seqNumber": 10915220048,
103198
+ // "completionTime": 1702928369053
103199
+ // }
103200
+ //
103201
+ return this.parseOrder(response);
103202
+ }
103203
+ async closePosition(symbol, side = undefined, params = {}) {
103204
+ /**
103205
+ * @method
103206
+ * @name coinmetro#cancelOrder
103207
+ * @description closes an open position
103208
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#47f913fb-8cab-49f4-bc78-d980e6ced316
103209
+ * @param {string} symbol not used by coinmetro closePosition ()
103210
+ * @param {string} [side] not used by coinmetro closePosition ()
103211
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
103212
+ * @param {string} [params.orderID] order id
103213
+ * @param {number} [params.fraction] fraction of order to close, between 0 and 1 (defaults to 1)
103214
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
103215
+ */
103216
+ await this.loadMarkets();
103217
+ const orderId = this.safeString(params, 'orderId');
103218
+ if (orderId === undefined) {
103219
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' closePosition() requires a orderId parameter');
103220
+ }
103221
+ const request = {
103222
+ 'orderID': orderId,
103223
+ };
103224
+ const response = await this.privatePostExchangeOrdersCloseOrderID(this.extend(request, params));
103225
+ //
103226
+ // {
103227
+ // "userID": "65671262d93d9525ac009e36",
103228
+ // "orderID": "65671262d93d9525ac009e3617030152811996e5b352556d3d7d8_CL",
103229
+ // "orderType": "market",
103230
+ // "buyingCurrency": "ETH",
103231
+ // "sellingCurrency": "EUR",
103232
+ // "margin": true,
103233
+ // "buyingQty": 0.03,
103234
+ // "timeInForce": 4,
103235
+ // "boughtQty": 0.03,
103236
+ // "soldQty": 59.375,
103237
+ // "creationTime": 1703015488482,
103238
+ // "seqNumber": 10925321179,
103239
+ // "firstFillTime": 1703015488483,
103240
+ // "lastFillTime": 1703015488483,
103241
+ // "fills": [
103242
+ // {
103243
+ // "seqNumber": 10925321178,
103244
+ // "timestamp": 1703015488483,
103245
+ // "qty": 0.03,
103246
+ // "price": 1979.1666666666667,
103247
+ // "side": "buy"
103248
+ // }
103249
+ // ],
103250
+ // "completionTime": 1703015488483,
103251
+ // "takerQty": 0.03
103252
+ // }
103253
+ //
103254
+ return this.parseOrder(response);
103255
+ }
103256
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
103257
+ /**
103258
+ * @method
103259
+ * @name coinmetro#fetchOpenOrders
103260
+ * @description fetch all unfilled currently open orders
103261
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#518afd7a-4338-439c-a651-d4fdaa964138
103262
+ * @param {string} symbol unified market symbol
103263
+ * @param {int} [since] the earliest time in ms to fetch open orders for
103264
+ * @param {int} [limit] the maximum number of open order structures to retrieve
103265
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
103266
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
103267
+ */
103268
+ await this.loadMarkets();
103269
+ let market = undefined;
103270
+ if (symbol !== undefined) {
103271
+ market = this.market(symbol);
103272
+ }
103273
+ const response = await this.privateGetExchangeOrdersActive(params);
103274
+ const orders = this.parseOrders(response, market, since, limit);
103275
+ for (let i = 0; i < orders.length; i++) {
103276
+ const order = orders[i];
103277
+ order['status'] = 'open';
103278
+ }
103279
+ return orders;
103280
+ }
103281
+ async fetchCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
103282
+ /**
103283
+ * @method
103284
+ * @name coinmetro#fetchCanceledAndClosedOrders
103285
+ * @description fetches information on multiple canceled and closed orders made by the user
103286
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#4d48ae69-8ee2-44d1-a268-71f84e557b7b
103287
+ * @param {string} symbol unified market symbol of the market orders were made in
103288
+ * @param {int} [since] the earliest time in ms to fetch orders for
103289
+ * @param {int} [limit] the maximum number of order structures to retrieve
103290
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
103291
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
103292
+ */
103293
+ await this.loadMarkets();
103294
+ let market = undefined;
103295
+ if (symbol !== undefined) {
103296
+ market = this.market(symbol);
103297
+ }
103298
+ const request = {};
103299
+ if (since !== undefined) {
103300
+ request['since'] = since;
103301
+ }
103302
+ const response = await this.privateGetExchangeOrdersHistorySince(this.extend(request, params));
103303
+ return this.parseOrders(response, market, since, limit);
103304
+ }
103305
+ async fetchOrder(id, symbol = undefined, params = {}) {
103306
+ /**
103307
+ * @method
103308
+ * @name coinmetro#fetchOrder
103309
+ * @description fetches information on an order made by the user
103310
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#95bbed87-db1c-47a7-a03e-aa247e91d5a6
103311
+ * @param {int|string} id order id
103312
+ * @param {string} symbol not used by coinmetro fetchOrder ()
103313
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
103314
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
103315
+ */
103316
+ await this.loadMarkets();
103317
+ const request = {
103318
+ 'orderID': id,
103319
+ };
103320
+ const response = await this.privateGetExchangeOrdersStatusOrderID(this.extend(request, params));
103321
+ //
103322
+ // {
103323
+ // "_id": "657b4e6d60a954244939ac6f",
103324
+ // "userID": "65671262d93d9525ac009e36",
103325
+ // "orderID": "65671262d93d9525ac009e361702576531985b78465468b9cc544",
103326
+ // "orderType": "market",
103327
+ // "buyingCurrency": "ETH",
103328
+ // "sellingCurrency": "USDC",
103329
+ // "buyingQty": 0.004,
103330
+ // "timeInForce": 4,
103331
+ // "boughtQty": 0.004,
103332
+ // "soldQty": 9.236,
103333
+ // "creationTime": 1702576531995,
103334
+ // "seqNumber": 10874644062,
103335
+ // "firstFillTime": 1702576531995,
103336
+ // "lastFillTime": 1702576531995,
103337
+ // "fills": [
103338
+ // {
103339
+ // "_id": "657b4e6d60a954244939ac70",
103340
+ // "seqNumber": 10874644061,
103341
+ // "timestamp": 1702576531995,
103342
+ // "qty": 0.004,
103343
+ // "price": 2309,
103344
+ // "side": "buy"
103345
+ // }
103346
+ // ],
103347
+ // "completionTime": 1702576531995,
103348
+ // "takerQty": 0.004,
103349
+ // "fees": 0.000004,
103350
+ // "isAncillary": false,
103351
+ // "margin": false,
103352
+ // "trade": false,
103353
+ // "canceled": false
103354
+ // }
103355
+ //
103356
+ return this.parseOrder(response);
103357
+ }
103358
+ parseOrder(order, market = undefined) {
103359
+ //
103360
+ // createOrder market
103361
+ // {
103362
+ // "userID": "65671262d93d9525ac009e36",
103363
+ // "orderID": "65671262d93d9525ac009e36170257448481749b7ee2893bafec2",
103364
+ // "orderType": "market",
103365
+ // "buyingCurrency": "ETH",
103366
+ // "sellingCurrency": "USDC",
103367
+ // "buyingQty": 0.002,
103368
+ // "timeInForce": 4,
103369
+ // "boughtQty": 0.002,
103370
+ // "soldQty": 4.587,
103371
+ // "creationTime": 1702574484829,
103372
+ // "seqNumber": 10874285330,
103373
+ // "firstFillTime": 1702574484831,
103374
+ // "lastFillTime": 1702574484831,
103375
+ // "fills": [
103376
+ // {
103377
+ // "seqNumber": 10874285329,
103378
+ // "timestamp": 1702574484831,
103379
+ // "qty": 0.002,
103380
+ // "price": 2293.5,
103381
+ // "side": "buy"
103382
+ // }
103383
+ // ],
103384
+ // "completionTime": 1702574484831,
103385
+ // "takerQty": 0.002
103386
+ // }
103387
+ //
103388
+ // createOrder limit
103389
+ // {
103390
+ // "userID": "65671262d93d9525ac009e36",
103391
+ // "orderID": "65671262d93d9525ac009e3617026635256739c996fe17d7cd5d4",
103392
+ // "orderType": "limit",
103393
+ // "buyingCurrency": "ETH",
103394
+ // "sellingCurrency": "USDC",
103395
+ // "fillStyle": "sell",
103396
+ // "orderPlatform": "trade-v3",
103397
+ // "timeInForce": 1,
103398
+ // "buyingQty": 0.005655,
103399
+ // "sellingQty": 11.31,
103400
+ // "boughtQty": 0,
103401
+ // "soldQty": 0,
103402
+ // "creationTime": 1702663525713,
103403
+ // "seqNumber": 10885528683,
103404
+ // "fees": 0,
103405
+ // "fills": [],
103406
+ // "isAncillary": false,
103407
+ // "margin": false,
103408
+ // "trade": false
103409
+ // }
103410
+ //
103411
+ // fetchOrders market
103412
+ // {
103413
+ // "userID": "65671262d93d9525ac009e36",
103414
+ // "orderID": "65671262d93d9525ac009e36170257061073952c6423a8c5b4d6c",
103415
+ // "orderType": "market",
103416
+ // "buyingCurrency": "ETH",
103417
+ // "sellingCurrency": "USDC",
103418
+ // "buyingQty": 0.002,
103419
+ // "timeInForce": 4,
103420
+ // "boughtQty": 0.002,
103421
+ // "soldQty": 4.564,
103422
+ // "creationTime": 1702570610746,
103423
+ // "seqNumber": 10873722344,
103424
+ // "firstFillTime": 1702570610747,
103425
+ // "lastFillTime": 1702570610747,
103426
+ // "fills": [
103427
+ // {
103428
+ // "_id": "657b31d360a9542449381bdc",
103429
+ // "seqNumber": 10873722343,
103430
+ // "timestamp": 1702570610747,
103431
+ // "qty": 0.002,
103432
+ // "price": 2282,
103433
+ // "side": "buy"
103434
+ // }
103435
+ // ],
103436
+ // "completionTime": 1702570610747,
103437
+ // "takerQty": 0.002,
103438
+ // "fees": 0.000002,
103439
+ // "isAncillary": false,
103440
+ // "margin": false,
103441
+ // "trade": false,
103442
+ // "canceled": false,
103443
+ // "__v": 0
103444
+ // }
103445
+ //
103446
+ // fetchOrders margin
103447
+ // {
103448
+ // "userData": {
103449
+ // "takeProfit": 1700,
103450
+ // "stopLoss": 2100
103451
+ // },
103452
+ // "_id": "658201d060a95424499394a2",
103453
+ // "seqNumber": 10925300213,
103454
+ // "orderType": "limit",
103455
+ // "buyingCurrency": "EUR",
103456
+ // "sellingCurrency": "ETH",
103457
+ // "userID": "65671262d93d9525ac009e36",
103458
+ // "closedQty": 0.03,
103459
+ // "sellingQty": 0.03,
103460
+ // "buyingQty": 58.8,
103461
+ // "creationTime": 1703015281205,
103462
+ // "margin": true,
103463
+ // "timeInForce": 1,
103464
+ // "boughtQty": 59.31,
103465
+ // "orderID": "65671262d93d9525ac009e3617030152811996e5b352556d3d7d8",
103466
+ // "lastFillTime": 1703015281206,
103467
+ // "soldQty": 0.03,
103468
+ // "closedTime": 1703015488488,
103469
+ // "closedVal": 59.375,
103470
+ // "trade": true,
103471
+ // "takerQty": 59.31,
103472
+ // "firstFillTime": 1703015281206,
103473
+ // "completionTime": 1703015281206,
103474
+ // "fills": [
103475
+ // {
103476
+ // "_id": "658201d060a95424499394a3",
103477
+ // "seqNumber": 10925300212,
103478
+ // "side": "sell",
103479
+ // "price": 1977,
103480
+ // "qty": 0.03,
103481
+ // "timestamp": 1703015281206
103482
+ // },
103483
+ // {
103484
+ // "_id": "658201d060a95424499394a4",
103485
+ // "seqNumber": 10925321178,
103486
+ // "timestamp": 1703015488483,
103487
+ // "qty": 0.03,
103488
+ // "price": 1979.1666666666667,
103489
+ // "side": "buy"
103490
+ // }
103491
+ // ],
103492
+ // "fees": 0.11875000200000001,
103493
+ // "settledQtys": {
103494
+ // "ETH": -0.000092842104710025
103495
+ // },
103496
+ // "isAncillary": false,
103497
+ // "canceled": false
103498
+ // }
103499
+ //
103500
+ // fetchOrder
103501
+ // {
103502
+ // "_id": "657b4e6d60a954244939ac6f",
103503
+ // "userID": "65671262d93d9525ac009e36",
103504
+ // "orderID": "65671262d93d9525ac009e361702576531985b78465468b9cc544",
103505
+ // "orderType": "market",
103506
+ // "buyingCurrency": "ETH",
103507
+ // "sellingCurrency": "USDC",
103508
+ // "buyingQty": 0.004,
103509
+ // "timeInForce": 4,
103510
+ // "boughtQty": 0.004,
103511
+ // "soldQty": 9.236,
103512
+ // "creationTime": 1702576531995,
103513
+ // "seqNumber": 10874644062,
103514
+ // "firstFillTime": 1702576531995,
103515
+ // "lastFillTime": 1702576531995,
103516
+ // "fills": [
103517
+ // {
103518
+ // "_id": "657b4e6d60a954244939ac70",
103519
+ // "seqNumber": 10874644061,
103520
+ // "timestamp": 1702576531995,
103521
+ // "qty": 0.004,
103522
+ // "price": 2309,
103523
+ // "side": "buy"
103524
+ // }
103525
+ // ],
103526
+ // "completionTime": 1702576531995,
103527
+ // "takerQty": 0.004,
103528
+ // "fees": 0.000004,
103529
+ // "isAncillary": false,
103530
+ // "margin": false,
103531
+ // "trade": false,
103532
+ // "canceled": false
103533
+ // }
103534
+ //
103535
+ let timestamp = this.safeInteger(order, 'creationTime');
103536
+ const isCanceled = this.safeValue(order, 'canceled');
103537
+ let status = undefined;
103538
+ if (isCanceled === true) {
103539
+ if (timestamp === undefined) {
103540
+ timestamp = this.safeInteger(order, 'completionTime'); // market orders with bad price gain IOC - we mark them as 'rejected'?
103541
+ status = 'rejected'; // these orders don't have the 'creationTime` param and have 'canceled': true
103542
+ }
103543
+ else {
103544
+ status = 'canceled';
103545
+ }
103546
+ }
103547
+ else {
103548
+ status = this.safeString(order, 'status');
103549
+ order = this.omit(order, 'status'); // we mark orders from fetchOpenOrders with param 'status': 'open'
103550
+ }
103551
+ const type = this.safeString(order, 'orderType');
103552
+ let buyingQty = this.safeString(order, 'buyingQty');
103553
+ let sellingQty = this.safeString(order, 'sellingQty');
103554
+ const boughtQty = this.safeString(order, 'boughtQty');
103555
+ const soldQty = this.safeString(order, 'soldQty');
103556
+ if (type === 'market') {
103557
+ if ((buyingQty === undefined) && (boughtQty !== undefined) && (boughtQty !== '0')) {
103558
+ buyingQty = boughtQty;
103559
+ }
103560
+ if ((sellingQty === undefined) && (soldQty !== undefined) && (soldQty !== '0')) {
103561
+ sellingQty = soldQty;
103562
+ }
103563
+ }
103564
+ const buyingCurrencyId = this.safeString(order, 'buyingCurrency', '');
103565
+ const sellingCurrencyId = this.safeString(order, 'sellingCurrency', '');
103566
+ const byuingIdPlusSellingId = buyingCurrencyId + sellingCurrencyId;
103567
+ const sellingIdPlusBuyingId = sellingCurrencyId + buyingCurrencyId;
103568
+ let side = undefined;
103569
+ let marketId = undefined;
103570
+ let baseAmount = buyingQty;
103571
+ let quoteAmount = buyingQty;
103572
+ let filled = undefined;
103573
+ let cost = undefined;
103574
+ let feeInBaseOrQuote = undefined;
103575
+ const marketsById = this.indexBy(this.markets, 'id');
103576
+ if (this.safeValue(marketsById, byuingIdPlusSellingId) !== undefined) {
103577
+ side = 'buy';
103578
+ marketId = byuingIdPlusSellingId;
103579
+ quoteAmount = sellingQty;
103580
+ filled = boughtQty;
103581
+ cost = soldQty;
103582
+ feeInBaseOrQuote = 'base';
103583
+ }
103584
+ else if (this.safeValue(marketsById, sellingIdPlusBuyingId) !== undefined) {
103585
+ side = 'sell';
103586
+ marketId = sellingIdPlusBuyingId;
103587
+ baseAmount = sellingQty;
103588
+ filled = soldQty;
103589
+ cost = boughtQty;
103590
+ feeInBaseOrQuote = 'quote';
103591
+ }
103592
+ let price = undefined;
103593
+ if ((baseAmount !== undefined) && (quoteAmount !== undefined)) {
103594
+ price = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringDiv(quoteAmount, baseAmount);
103595
+ }
103596
+ market = this.safeMarket(marketId, market);
103597
+ let fee = undefined;
103598
+ const feeCost = this.safeString(order, 'fees');
103599
+ if ((feeCost !== undefined) && (feeInBaseOrQuote !== undefined)) {
103600
+ fee = {
103601
+ 'currency': market[feeInBaseOrQuote],
103602
+ 'cost': feeCost,
103603
+ 'rate': undefined,
103604
+ };
103605
+ }
103606
+ const trades = this.safeValue(order, 'fills', []);
103607
+ const userData = this.safeValue(order, 'userData', {});
103608
+ const triggerPrice = this.safeString(order, 'stopPrice');
103609
+ const clientOrderId = this.safeString(userData, 'comment');
103610
+ const takeProfitPrice = this.safeString(userData, 'takeProfit');
103611
+ const stopLossPrice = this.safeString(userData, 'stopLoss');
103612
+ return this.safeOrder({
103613
+ 'id': this.safeString(order, 'orderID'),
103614
+ 'clientOrderId': clientOrderId,
103615
+ 'timestamp': timestamp,
103616
+ 'datetime': this.iso8601(timestamp),
103617
+ 'lastTradeTimestamp': this.safeInteger(order, 'lastFillTime'),
103618
+ 'status': status,
103619
+ 'symbol': market['symbol'],
103620
+ 'type': type,
103621
+ 'timeInForce': this.parseOrderTimeInForce(this.safeInteger(order, 'timeInForce')),
103622
+ 'side': side,
103623
+ 'price': price,
103624
+ 'triggerPrice': triggerPrice,
103625
+ 'takeProfitPrice': takeProfitPrice,
103626
+ 'stopLossPrice': stopLossPrice,
103627
+ 'average': undefined,
103628
+ 'amount': baseAmount,
103629
+ 'cost': cost,
103630
+ 'filled': filled,
103631
+ 'remaining': undefined,
103632
+ 'fee': fee,
103633
+ 'fees': undefined,
103634
+ 'trades': trades,
103635
+ 'info': order,
103636
+ }, market);
103637
+ }
103638
+ parseOrderTimeInForce(timeInForce) {
103639
+ const timeInForceTypes = [
103640
+ undefined,
103641
+ 'GTC',
103642
+ 'IOC',
103643
+ 'GTD',
103644
+ 'FOK',
103645
+ ];
103646
+ return this.safeValue(timeInForceTypes, timeInForce, timeInForce);
103647
+ }
103648
+ async borrowCrossMargin(code, amount, params = {}) {
103649
+ /**
103650
+ * @method
103651
+ * @name coinmetro#borrowCrossMargin
103652
+ * @description create a loan to borrow margin
103653
+ * @see https://documenter.getpostman.com/view/3653795/SVfWN6KS#5b90b3b9-e5db-4d07-ac9d-d680a06fd110
103654
+ * @param {string} code unified currency code of the currency to borrow
103655
+ * @param {float} amount the amount to borrow
103656
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
103657
+ * @returns {object} a [margin loan structure]{@link https://docs.ccxt.com/#/?id=margin-loan-structure}
103658
+ */
103659
+ await this.loadMarkets();
103660
+ const currency = this.currency(code);
103661
+ const currencyId = currency['id'];
103662
+ const request = {};
103663
+ request[currencyId] = this.currencyToPrecision(code, amount);
103664
+ const response = await this.privatePutUsersMarginCollateral(this.extend(request, params));
103665
+ //
103666
+ // { "message": "OK" }
103667
+ //
103668
+ const result = this.safeValue(response, 'result', {});
103669
+ const transaction = this.parseMarginLoan(result, currency);
103670
+ return this.extend(transaction, {
103671
+ 'amount': amount,
103672
+ });
103673
+ }
103674
+ parseMarginLoan(info, currency = undefined) {
103675
+ const currencyId = this.safeString(info, 'coin');
103676
+ return {
103677
+ 'id': undefined,
103678
+ 'currency': this.safeCurrencyCode(currencyId, currency),
103679
+ 'amount': undefined,
103680
+ 'symbol': undefined,
103681
+ 'timestamp': undefined,
103682
+ 'datetime': undefined,
103683
+ 'info': info,
103684
+ };
103685
+ }
103686
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
103687
+ const request = this.omit(params, this.extractParams(path));
103688
+ const endpoint = '/' + this.implodeParams(path, params);
103689
+ let url = this.urls['api'][api] + endpoint;
103690
+ const query = this.urlencode(request);
103691
+ if (api === 'private') {
103692
+ if (headers === undefined) {
103693
+ headers = {};
103694
+ }
103695
+ headers['CCXT'] = true;
103696
+ if (url === 'https://api.coinmetro.com/jwt') { // handle with headers for login endpoint
103697
+ headers['X-Device-Id'] = 'bypass';
103698
+ if (this.twofa !== undefined) {
103699
+ headers['X-OTP'] = this.twofa;
103700
+ }
103701
+ }
103702
+ else if (url === 'https://api.coinmetro.com/jwtDevice') { // handle with headers for long lived token login endpoint
103703
+ headers['X-Device-Id'] = this.uid;
103704
+ if (this.twofa !== undefined) {
103705
+ headers['X-OTP'] = this.twofa;
103706
+ }
103707
+ }
103708
+ else {
103709
+ headers['Authorization'] = 'Bearer ' + this.token;
103710
+ if (!url.startsWith('https://api.coinmetro.com/open')) { // if not sandbox endpoint
103711
+ this.checkRequiredCredentials();
103712
+ headers['X-Device-Id'] = this.uid;
103713
+ }
103714
+ }
103715
+ if ((method === 'POST') || (method === 'PUT')) {
103716
+ headers['Content-Type'] = 'application/x-www-form-urlencoded';
103717
+ body = this.urlencode(request);
103718
+ }
103719
+ }
103720
+ else if (query.length !== 0) {
103721
+ url += '?' + query;
103722
+ }
103723
+ while (url.endsWith('/')) {
103724
+ url = url.slice(0, url.length - 1);
103725
+ }
103726
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
103727
+ }
103728
+ handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
103729
+ if (response === undefined) {
103730
+ return undefined;
103731
+ }
103732
+ if ((code !== 200) && (code !== 201) && (code !== 202)) {
103733
+ const feedback = this.id + ' ' + body;
103734
+ const message = this.safeString(response, 'message');
103735
+ this.throwBroadlyMatchedException(this.exceptions['broad'], message, feedback);
103736
+ this.throwExactlyMatchedException(this.exceptions['exact'], message, feedback);
103737
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(feedback);
103738
+ }
103739
+ return undefined;
103740
+ }
103741
+ }
103742
+
103743
+
101761
103744
  /***/ }),
101762
103745
 
101763
103746
  /***/ 7811:
@@ -214210,7 +216193,7 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
214210
216193
  'watchOHLCV': true,
214211
216194
  'watchOrders': true,
214212
216195
  'watchMyTrades': true,
214213
- 'watchTicker': false,
216196
+ 'watchTicker': true,
214214
216197
  'watchTickers': false,
214215
216198
  'watchBalance': true,
214216
216199
  },
@@ -214265,6 +216248,151 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
214265
216248
  },
214266
216249
  });
214267
216250
  }
216251
+ async watchTicker(symbol, params = {}) {
216252
+ /**
216253
+ * @method
216254
+ * @name bingx#watchTicker
216255
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
216256
+ * @see https://bingx-api.github.io/docs/#/en-us/swapV2/socket/market.html#Subscribe%20to%2024-hour%20price%20changes
216257
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
216258
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
216259
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
216260
+ */
216261
+ await this.loadMarkets();
216262
+ const market = this.market(symbol);
216263
+ const [marketType, query] = this.handleMarketTypeAndParams('watchTrades', market, params);
216264
+ const url = this.safeValue(this.urls['api']['ws'], marketType);
216265
+ if (url === undefined) {
216266
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' watchTrades is not supported for ' + marketType + ' markets.');
216267
+ }
216268
+ const messageHash = market['id'] + '@ticker';
216269
+ const uuid = this.uuid();
216270
+ const request = {
216271
+ 'id': uuid,
216272
+ 'dataType': messageHash,
216273
+ };
216274
+ if (marketType === 'swap') {
216275
+ request['reqType'] = 'sub';
216276
+ }
216277
+ return await this.watch(url, messageHash, this.extend(request, query), messageHash);
216278
+ }
216279
+ handleTicker(client, message) {
216280
+ //
216281
+ // swap
216282
+ //
216283
+ // {
216284
+ // "code": 0,
216285
+ // "dataType": "BTC-USDT@ticker",
216286
+ // "data": {
216287
+ // "e": "24hTicker",
216288
+ // "E": 1706498923556,
216289
+ // "s": "BTC-USDT",
216290
+ // "p": "346.4",
216291
+ // "P": "0.82",
216292
+ // "c": "42432.5",
216293
+ // "L": "0.0529",
216294
+ // "h": "42855.4",
216295
+ // "l": "41578.3",
216296
+ // "v": "64310.9754",
216297
+ // "q": "2728360284.15",
216298
+ // "o": "42086.1",
216299
+ // "O": 1706498922655,
216300
+ // "C": 1706498883023,
216301
+ // "A": "42437.8",
216302
+ // "a": "1.4160",
216303
+ // "B": "42437.1",
216304
+ // "b": "2.5747"
216305
+ // }
216306
+ // }
216307
+ //
216308
+ // spot
216309
+ //
216310
+ // {
216311
+ // "code": 0,
216312
+ // "timestamp": 1706506795473,
216313
+ // "data": {
216314
+ // "e": "24hTicker",
216315
+ // "E": 1706506795472,
216316
+ // "s": "BTC-USDT",
216317
+ // "p": -372.12,
216318
+ // "P": "-0.87%",
216319
+ // "o": 42548.95,
216320
+ // "h": 42696.1,
216321
+ // "l": 41621.29,
216322
+ // "c": 42176.83,
216323
+ // "v": 4943.33,
216324
+ // "q": 208842236.5,
216325
+ // "O": 1706420395472,
216326
+ // "C": 1706506795472,
216327
+ // "A": 42177.23,
216328
+ // "a": 5.14484,
216329
+ // "B": 42176.38,
216330
+ // "b": 5.36117
216331
+ // }
216332
+ // }
216333
+ //
216334
+ const data = this.safeValue(message, 'data', {});
216335
+ const marketId = this.safeString(data, 's');
216336
+ // const marketId = messageHash.split('@')[0];
216337
+ const isSwap = client.url.indexOf('swap') >= 0;
216338
+ const marketType = isSwap ? 'swap' : 'spot';
216339
+ const market = this.safeMarket(marketId, undefined, undefined, marketType);
216340
+ const symbol = market['symbol'];
216341
+ const ticker = this.parseWsTicker(data, market);
216342
+ this.tickers[symbol] = ticker;
216343
+ const messageHash = market['id'] + '@ticker';
216344
+ client.resolve(ticker, messageHash);
216345
+ }
216346
+ parseWsTicker(message, market = undefined) {
216347
+ //
216348
+ // {
216349
+ // "e": "24hTicker",
216350
+ // "E": 1706498923556,
216351
+ // "s": "BTC-USDT",
216352
+ // "p": "346.4",
216353
+ // "P": "0.82",
216354
+ // "c": "42432.5",
216355
+ // "L": "0.0529",
216356
+ // "h": "42855.4",
216357
+ // "l": "41578.3",
216358
+ // "v": "64310.9754",
216359
+ // "q": "2728360284.15",
216360
+ // "o": "42086.1",
216361
+ // "O": 1706498922655,
216362
+ // "C": 1706498883023,
216363
+ // "A": "42437.8",
216364
+ // "a": "1.4160",
216365
+ // "B": "42437.1",
216366
+ // "b": "2.5747"
216367
+ // }
216368
+ //
216369
+ const timestamp = this.safeInteger(message, 'ts');
216370
+ const marketId = this.safeString(message, 's');
216371
+ market = this.safeMarket(marketId, market);
216372
+ const close = this.safeString(message, 'c');
216373
+ return this.safeTicker({
216374
+ 'symbol': market['symbol'],
216375
+ 'timestamp': timestamp,
216376
+ 'datetime': this.iso8601(timestamp),
216377
+ 'high': this.safeString(message, 'h'),
216378
+ 'low': this.safeString(message, 'l'),
216379
+ 'bid': this.safeString(message, 'B'),
216380
+ 'bidVolume': this.safeString(message, 'b'),
216381
+ 'ask': this.safeString(message, 'A'),
216382
+ 'askVolume': this.safeString(message, 'a'),
216383
+ 'vwap': undefined,
216384
+ 'open': this.safeString(message, 'o'),
216385
+ 'close': close,
216386
+ 'last': close,
216387
+ 'previousClose': undefined,
216388
+ 'change': this.safeString(message, 'p'),
216389
+ 'percentage': undefined,
216390
+ 'average': undefined,
216391
+ 'baseVolume': this.safeString(message, 'v'),
216392
+ 'quoteVolume': this.safeString(message, 'q'),
216393
+ 'info': message,
216394
+ }, market);
216395
+ }
214268
216396
  async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
214269
216397
  /**
214270
216398
  * @method
@@ -215101,6 +217229,10 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
215101
217229
  this.handleOrderBook(client, message);
215102
217230
  return;
215103
217231
  }
217232
+ if (dataType.indexOf('@ticker') >= 0) {
217233
+ this.handleTicker(client, message);
217234
+ return;
217235
+ }
215104
217236
  if (dataType.indexOf('@trade') >= 0) {
215105
217237
  this.handleTrades(client, message);
215106
217238
  return;
@@ -215131,6 +217263,11 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
215131
217263
  this.handleMyTrades(client, message);
215132
217264
  }
215133
217265
  }
217266
+ const msgData = this.safeValue(message, 'data');
217267
+ const msgEvent = this.safeString(msgData, 'e');
217268
+ if (msgEvent === '24hTicker') {
217269
+ this.handleTicker(client, message);
217270
+ }
215134
217271
  }
215135
217272
  }
215136
217273
 
@@ -278789,22 +280926,24 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
278789
280926
  }
278790
280927
  parseDepositAddress(depositAddress, currency = undefined) {
278791
280928
  //
278792
- // {
278793
- // "currency": "BTC",
278794
- // "deposit_address": "3EusRwybuZUhVDeHL7gh3HSLmbhLcy7NqD",
278795
- // "secondary_address": null
278796
- // }
280929
+ // {
280930
+ // currency: 'XRP',
280931
+ // net_type: 'XRP',
280932
+ // deposit_address: 'raQwCVAJVqjrVm1Nj5SFRcX8i22BhdC9WA',
280933
+ // secondary_address: '167029435'
280934
+ // }
278797
280935
  //
278798
280936
  const address = this.safeString(depositAddress, 'deposit_address');
278799
280937
  const tag = this.safeString(depositAddress, 'secondary_address');
278800
280938
  const currencyId = this.safeString(depositAddress, 'currency');
278801
280939
  const code = this.safeCurrencyCode(currencyId);
280940
+ const networkId = this.safeString(depositAddress, 'net_type');
278802
280941
  this.checkAddress(address);
278803
280942
  return {
278804
280943
  'currency': code,
278805
280944
  'address': address,
278806
280945
  'tag': tag,
278807
- 'network': undefined,
280946
+ 'network': this.networkIdToCode(networkId),
278808
280947
  'info': depositAddress,
278809
280948
  };
278810
280949
  }
@@ -278816,19 +280955,27 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
278816
280955
  * @description fetch the deposit address for a currency associated with this account
278817
280956
  * @param {string} code unified currency code
278818
280957
  * @param {object} [params] extra parameters specific to the exchange API endpoint
280958
+ * @param {string} params.network deposit chain, can view all chains via this.publicGetWalletAssets, default is eth, unless the currency has a default chain within this.options['networks']
278819
280959
  * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
278820
280960
  */
278821
280961
  await this.loadMarkets();
278822
280962
  const currency = this.currency(code);
280963
+ let networkCode = undefined;
280964
+ [networkCode, params] = this.handleNetworkCodeAndParams(params);
280965
+ if (networkCode === undefined) {
280966
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' fetchDepositAddress requires params["network"]');
280967
+ }
278823
280968
  const response = await this.privateGetDepositsCoinAddress(this.extend({
278824
280969
  'currency': currency['id'],
280970
+ 'net_type': this.networkCodeToId(networkCode, currency['code']),
278825
280971
  }, params));
278826
280972
  //
278827
- // {
278828
- // "currency": "BTC",
278829
- // "deposit_address": "3EusRwybuZUhVDeHL7gh3HSLmbhLcy7NqD",
278830
- // "secondary_address": null
278831
- // }
280973
+ // {
280974
+ // currency: 'XRP',
280975
+ // net_type: 'XRP',
280976
+ // deposit_address: 'raQwCVAJVqjrVm1Nj5SFRcX8i22BhdC9WA',
280977
+ // secondary_address: '167029435'
280978
+ // }
278832
280979
  //
278833
280980
  return this.parseDepositAddress(response);
278834
280981
  }
@@ -296863,39 +299010,39 @@ var __webpack_exports__ = {};
296863
299010
  (() => {
296864
299011
  __webpack_require__.r(__webpack_exports__);
296865
299012
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
296866
- /* harmony export */ AccountNotEnabled: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.AccountNotEnabled),
296867
- /* harmony export */ AccountSuspended: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.AccountSuspended),
296868
- /* harmony export */ AddressPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.AddressPending),
296869
- /* harmony export */ ArgumentsRequired: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.ArgumentsRequired),
296870
- /* harmony export */ AuthenticationError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.AuthenticationError),
296871
- /* harmony export */ BadRequest: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.BadRequest),
296872
- /* harmony export */ BadResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.BadResponse),
296873
- /* harmony export */ BadSymbol: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.BadSymbol),
296874
- /* harmony export */ BaseError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.BaseError),
296875
- /* harmony export */ CancelPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.CancelPending),
296876
- /* harmony export */ DDoSProtection: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.DDoSProtection),
296877
- /* harmony export */ DuplicateOrderId: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.DuplicateOrderId),
299013
+ /* harmony export */ AccountNotEnabled: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.AccountNotEnabled),
299014
+ /* harmony export */ AccountSuspended: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.AccountSuspended),
299015
+ /* harmony export */ AddressPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.AddressPending),
299016
+ /* harmony export */ ArgumentsRequired: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.ArgumentsRequired),
299017
+ /* harmony export */ AuthenticationError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.AuthenticationError),
299018
+ /* harmony export */ BadRequest: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.BadRequest),
299019
+ /* harmony export */ BadResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.BadResponse),
299020
+ /* harmony export */ BadSymbol: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.BadSymbol),
299021
+ /* harmony export */ BaseError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.BaseError),
299022
+ /* harmony export */ CancelPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.CancelPending),
299023
+ /* harmony export */ DDoSProtection: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.DDoSProtection),
299024
+ /* harmony export */ DuplicateOrderId: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.DuplicateOrderId),
296878
299025
  /* harmony export */ Exchange: () => (/* reexport safe */ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__.e),
296879
- /* harmony export */ ExchangeError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.ExchangeError),
296880
- /* harmony export */ ExchangeNotAvailable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.ExchangeNotAvailable),
296881
- /* harmony export */ InsufficientFunds: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.InsufficientFunds),
296882
- /* harmony export */ InvalidAddress: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.InvalidAddress),
296883
- /* harmony export */ InvalidNonce: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.InvalidNonce),
296884
- /* harmony export */ InvalidOrder: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.InvalidOrder),
296885
- /* harmony export */ MarginModeAlreadySet: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.MarginModeAlreadySet),
296886
- /* harmony export */ NetworkError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.NetworkError),
296887
- /* harmony export */ NoChange: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.NoChange),
296888
- /* harmony export */ NotSupported: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.NotSupported),
296889
- /* harmony export */ NullResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.NullResponse),
296890
- /* harmony export */ OnMaintenance: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.OnMaintenance),
296891
- /* harmony export */ OrderImmediatelyFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.OrderImmediatelyFillable),
296892
- /* harmony export */ OrderNotCached: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.OrderNotCached),
296893
- /* harmony export */ OrderNotFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.OrderNotFillable),
296894
- /* harmony export */ OrderNotFound: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.OrderNotFound),
296895
- /* harmony export */ PermissionDenied: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.PermissionDenied),
296896
- /* harmony export */ Precise: () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_160__.O),
296897
- /* harmony export */ RateLimitExceeded: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.RateLimitExceeded),
296898
- /* harmony export */ RequestTimeout: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__.RequestTimeout),
299026
+ /* harmony export */ ExchangeError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.ExchangeError),
299027
+ /* harmony export */ ExchangeNotAvailable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.ExchangeNotAvailable),
299028
+ /* harmony export */ InsufficientFunds: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.InsufficientFunds),
299029
+ /* harmony export */ InvalidAddress: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.InvalidAddress),
299030
+ /* harmony export */ InvalidNonce: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.InvalidNonce),
299031
+ /* harmony export */ InvalidOrder: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.InvalidOrder),
299032
+ /* harmony export */ MarginModeAlreadySet: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.MarginModeAlreadySet),
299033
+ /* harmony export */ NetworkError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.NetworkError),
299034
+ /* harmony export */ NoChange: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.NoChange),
299035
+ /* harmony export */ NotSupported: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.NotSupported),
299036
+ /* harmony export */ NullResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.NullResponse),
299037
+ /* harmony export */ OnMaintenance: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.OnMaintenance),
299038
+ /* harmony export */ OrderImmediatelyFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.OrderImmediatelyFillable),
299039
+ /* harmony export */ OrderNotCached: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.OrderNotCached),
299040
+ /* harmony export */ OrderNotFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.OrderNotFillable),
299041
+ /* harmony export */ OrderNotFound: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.OrderNotFound),
299042
+ /* harmony export */ PermissionDenied: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.PermissionDenied),
299043
+ /* harmony export */ Precise: () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_161__.O),
299044
+ /* harmony export */ RateLimitExceeded: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.RateLimitExceeded),
299045
+ /* harmony export */ RequestTimeout: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.RequestTimeout),
296899
299046
  /* harmony export */ ace: () => (/* reexport safe */ _src_ace_js__WEBPACK_IMPORTED_MODULE_1__.Z),
296900
299047
  /* harmony export */ alpaca: () => (/* reexport safe */ _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__.Z),
296901
299048
  /* harmony export */ ascendex: () => (/* reexport safe */ _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__.Z),
@@ -296940,72 +299087,73 @@ __webpack_require__.r(__webpack_exports__);
296940
299087
  /* harmony export */ coinex: () => (/* reexport safe */ _src_coinex_js__WEBPACK_IMPORTED_MODULE_42__.Z),
296941
299088
  /* harmony export */ coinlist: () => (/* reexport safe */ _src_coinlist_js__WEBPACK_IMPORTED_MODULE_43__.Z),
296942
299089
  /* harmony export */ coinmate: () => (/* reexport safe */ _src_coinmate_js__WEBPACK_IMPORTED_MODULE_44__.Z),
296943
- /* harmony export */ coinone: () => (/* reexport safe */ _src_coinone_js__WEBPACK_IMPORTED_MODULE_45__.Z),
296944
- /* harmony export */ coinsph: () => (/* reexport safe */ _src_coinsph_js__WEBPACK_IMPORTED_MODULE_46__.Z),
296945
- /* harmony export */ coinspot: () => (/* reexport safe */ _src_coinspot_js__WEBPACK_IMPORTED_MODULE_47__.Z),
296946
- /* harmony export */ cryptocom: () => (/* reexport safe */ _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_48__.Z),
296947
- /* harmony export */ currencycom: () => (/* reexport safe */ _src_currencycom_js__WEBPACK_IMPORTED_MODULE_49__.Z),
299090
+ /* harmony export */ coinmetro: () => (/* reexport safe */ _src_coinmetro_js__WEBPACK_IMPORTED_MODULE_45__.Z),
299091
+ /* harmony export */ coinone: () => (/* reexport safe */ _src_coinone_js__WEBPACK_IMPORTED_MODULE_46__.Z),
299092
+ /* harmony export */ coinsph: () => (/* reexport safe */ _src_coinsph_js__WEBPACK_IMPORTED_MODULE_47__.Z),
299093
+ /* harmony export */ coinspot: () => (/* reexport safe */ _src_coinspot_js__WEBPACK_IMPORTED_MODULE_48__.Z),
299094
+ /* harmony export */ cryptocom: () => (/* reexport safe */ _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_49__.Z),
299095
+ /* harmony export */ currencycom: () => (/* reexport safe */ _src_currencycom_js__WEBPACK_IMPORTED_MODULE_50__.Z),
296948
299096
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
296949
- /* harmony export */ delta: () => (/* reexport safe */ _src_delta_js__WEBPACK_IMPORTED_MODULE_50__.Z),
296950
- /* harmony export */ deribit: () => (/* reexport safe */ _src_deribit_js__WEBPACK_IMPORTED_MODULE_51__.Z),
296951
- /* harmony export */ digifinex: () => (/* reexport safe */ _src_digifinex_js__WEBPACK_IMPORTED_MODULE_52__.Z),
296952
- /* harmony export */ errors: () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__),
299097
+ /* harmony export */ delta: () => (/* reexport safe */ _src_delta_js__WEBPACK_IMPORTED_MODULE_51__.Z),
299098
+ /* harmony export */ deribit: () => (/* reexport safe */ _src_deribit_js__WEBPACK_IMPORTED_MODULE_52__.Z),
299099
+ /* harmony export */ digifinex: () => (/* reexport safe */ _src_digifinex_js__WEBPACK_IMPORTED_MODULE_53__.Z),
299100
+ /* harmony export */ errors: () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__),
296953
299101
  /* harmony export */ exchanges: () => (/* binding */ exchanges),
296954
- /* harmony export */ exmo: () => (/* reexport safe */ _src_exmo_js__WEBPACK_IMPORTED_MODULE_53__.Z),
296955
- /* harmony export */ fmfwio: () => (/* reexport safe */ _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_54__.Z),
296956
- /* harmony export */ functions: () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_161__),
296957
- /* harmony export */ gate: () => (/* reexport safe */ _src_gate_js__WEBPACK_IMPORTED_MODULE_55__.Z),
296958
- /* harmony export */ gateio: () => (/* reexport safe */ _src_gateio_js__WEBPACK_IMPORTED_MODULE_56__.Z),
296959
- /* harmony export */ gemini: () => (/* reexport safe */ _src_gemini_js__WEBPACK_IMPORTED_MODULE_57__.Z),
296960
- /* harmony export */ hitbtc: () => (/* reexport safe */ _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_58__.Z),
296961
- /* harmony export */ hitbtc3: () => (/* reexport safe */ _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_59__.Z),
296962
- /* harmony export */ hollaex: () => (/* reexport safe */ _src_hollaex_js__WEBPACK_IMPORTED_MODULE_60__.Z),
296963
- /* harmony export */ htx: () => (/* reexport safe */ _src_htx_js__WEBPACK_IMPORTED_MODULE_61__.Z),
296964
- /* harmony export */ huobi: () => (/* reexport safe */ _src_huobi_js__WEBPACK_IMPORTED_MODULE_62__.Z),
296965
- /* harmony export */ huobijp: () => (/* reexport safe */ _src_huobijp_js__WEBPACK_IMPORTED_MODULE_63__.Z),
296966
- /* harmony export */ idex: () => (/* reexport safe */ _src_idex_js__WEBPACK_IMPORTED_MODULE_64__.Z),
296967
- /* harmony export */ independentreserve: () => (/* reexport safe */ _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_65__.Z),
296968
- /* harmony export */ indodax: () => (/* reexport safe */ _src_indodax_js__WEBPACK_IMPORTED_MODULE_66__.Z),
296969
- /* harmony export */ kraken: () => (/* reexport safe */ _src_kraken_js__WEBPACK_IMPORTED_MODULE_67__.Z),
296970
- /* harmony export */ krakenfutures: () => (/* reexport safe */ _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_68__.Z),
296971
- /* harmony export */ kucoin: () => (/* reexport safe */ _src_kucoin_js__WEBPACK_IMPORTED_MODULE_69__.Z),
296972
- /* harmony export */ kucoinfutures: () => (/* reexport safe */ _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_70__.Z),
296973
- /* harmony export */ kuna: () => (/* reexport safe */ _src_kuna_js__WEBPACK_IMPORTED_MODULE_71__.Z),
296974
- /* harmony export */ latoken: () => (/* reexport safe */ _src_latoken_js__WEBPACK_IMPORTED_MODULE_72__.Z),
296975
- /* harmony export */ lbank: () => (/* reexport safe */ _src_lbank_js__WEBPACK_IMPORTED_MODULE_73__.Z),
296976
- /* harmony export */ luno: () => (/* reexport safe */ _src_luno_js__WEBPACK_IMPORTED_MODULE_74__.Z),
296977
- /* harmony export */ lykke: () => (/* reexport safe */ _src_lykke_js__WEBPACK_IMPORTED_MODULE_75__.Z),
296978
- /* harmony export */ mercado: () => (/* reexport safe */ _src_mercado_js__WEBPACK_IMPORTED_MODULE_76__.Z),
296979
- /* harmony export */ mexc: () => (/* reexport safe */ _src_mexc_js__WEBPACK_IMPORTED_MODULE_77__.Z),
296980
- /* harmony export */ ndax: () => (/* reexport safe */ _src_ndax_js__WEBPACK_IMPORTED_MODULE_78__.Z),
296981
- /* harmony export */ novadax: () => (/* reexport safe */ _src_novadax_js__WEBPACK_IMPORTED_MODULE_79__.Z),
296982
- /* harmony export */ oceanex: () => (/* reexport safe */ _src_oceanex_js__WEBPACK_IMPORTED_MODULE_80__.Z),
296983
- /* harmony export */ okcoin: () => (/* reexport safe */ _src_okcoin_js__WEBPACK_IMPORTED_MODULE_81__.Z),
296984
- /* harmony export */ okx: () => (/* reexport safe */ _src_okx_js__WEBPACK_IMPORTED_MODULE_82__.Z),
296985
- /* harmony export */ onetrading: () => (/* reexport safe */ _src_onetrading_js__WEBPACK_IMPORTED_MODULE_83__.Z),
296986
- /* harmony export */ p2b: () => (/* reexport safe */ _src_p2b_js__WEBPACK_IMPORTED_MODULE_84__.Z),
296987
- /* harmony export */ paymium: () => (/* reexport safe */ _src_paymium_js__WEBPACK_IMPORTED_MODULE_85__.Z),
296988
- /* harmony export */ phemex: () => (/* reexport safe */ _src_phemex_js__WEBPACK_IMPORTED_MODULE_86__.Z),
296989
- /* harmony export */ poloniex: () => (/* reexport safe */ _src_poloniex_js__WEBPACK_IMPORTED_MODULE_87__.Z),
296990
- /* harmony export */ poloniexfutures: () => (/* reexport safe */ _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_88__.Z),
299102
+ /* harmony export */ exmo: () => (/* reexport safe */ _src_exmo_js__WEBPACK_IMPORTED_MODULE_54__.Z),
299103
+ /* harmony export */ fmfwio: () => (/* reexport safe */ _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_55__.Z),
299104
+ /* harmony export */ functions: () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_162__),
299105
+ /* harmony export */ gate: () => (/* reexport safe */ _src_gate_js__WEBPACK_IMPORTED_MODULE_56__.Z),
299106
+ /* harmony export */ gateio: () => (/* reexport safe */ _src_gateio_js__WEBPACK_IMPORTED_MODULE_57__.Z),
299107
+ /* harmony export */ gemini: () => (/* reexport safe */ _src_gemini_js__WEBPACK_IMPORTED_MODULE_58__.Z),
299108
+ /* harmony export */ hitbtc: () => (/* reexport safe */ _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_59__.Z),
299109
+ /* harmony export */ hitbtc3: () => (/* reexport safe */ _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_60__.Z),
299110
+ /* harmony export */ hollaex: () => (/* reexport safe */ _src_hollaex_js__WEBPACK_IMPORTED_MODULE_61__.Z),
299111
+ /* harmony export */ htx: () => (/* reexport safe */ _src_htx_js__WEBPACK_IMPORTED_MODULE_62__.Z),
299112
+ /* harmony export */ huobi: () => (/* reexport safe */ _src_huobi_js__WEBPACK_IMPORTED_MODULE_63__.Z),
299113
+ /* harmony export */ huobijp: () => (/* reexport safe */ _src_huobijp_js__WEBPACK_IMPORTED_MODULE_64__.Z),
299114
+ /* harmony export */ idex: () => (/* reexport safe */ _src_idex_js__WEBPACK_IMPORTED_MODULE_65__.Z),
299115
+ /* harmony export */ independentreserve: () => (/* reexport safe */ _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_66__.Z),
299116
+ /* harmony export */ indodax: () => (/* reexport safe */ _src_indodax_js__WEBPACK_IMPORTED_MODULE_67__.Z),
299117
+ /* harmony export */ kraken: () => (/* reexport safe */ _src_kraken_js__WEBPACK_IMPORTED_MODULE_68__.Z),
299118
+ /* harmony export */ krakenfutures: () => (/* reexport safe */ _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_69__.Z),
299119
+ /* harmony export */ kucoin: () => (/* reexport safe */ _src_kucoin_js__WEBPACK_IMPORTED_MODULE_70__.Z),
299120
+ /* harmony export */ kucoinfutures: () => (/* reexport safe */ _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_71__.Z),
299121
+ /* harmony export */ kuna: () => (/* reexport safe */ _src_kuna_js__WEBPACK_IMPORTED_MODULE_72__.Z),
299122
+ /* harmony export */ latoken: () => (/* reexport safe */ _src_latoken_js__WEBPACK_IMPORTED_MODULE_73__.Z),
299123
+ /* harmony export */ lbank: () => (/* reexport safe */ _src_lbank_js__WEBPACK_IMPORTED_MODULE_74__.Z),
299124
+ /* harmony export */ luno: () => (/* reexport safe */ _src_luno_js__WEBPACK_IMPORTED_MODULE_75__.Z),
299125
+ /* harmony export */ lykke: () => (/* reexport safe */ _src_lykke_js__WEBPACK_IMPORTED_MODULE_76__.Z),
299126
+ /* harmony export */ mercado: () => (/* reexport safe */ _src_mercado_js__WEBPACK_IMPORTED_MODULE_77__.Z),
299127
+ /* harmony export */ mexc: () => (/* reexport safe */ _src_mexc_js__WEBPACK_IMPORTED_MODULE_78__.Z),
299128
+ /* harmony export */ ndax: () => (/* reexport safe */ _src_ndax_js__WEBPACK_IMPORTED_MODULE_79__.Z),
299129
+ /* harmony export */ novadax: () => (/* reexport safe */ _src_novadax_js__WEBPACK_IMPORTED_MODULE_80__.Z),
299130
+ /* harmony export */ oceanex: () => (/* reexport safe */ _src_oceanex_js__WEBPACK_IMPORTED_MODULE_81__.Z),
299131
+ /* harmony export */ okcoin: () => (/* reexport safe */ _src_okcoin_js__WEBPACK_IMPORTED_MODULE_82__.Z),
299132
+ /* harmony export */ okx: () => (/* reexport safe */ _src_okx_js__WEBPACK_IMPORTED_MODULE_83__.Z),
299133
+ /* harmony export */ onetrading: () => (/* reexport safe */ _src_onetrading_js__WEBPACK_IMPORTED_MODULE_84__.Z),
299134
+ /* harmony export */ p2b: () => (/* reexport safe */ _src_p2b_js__WEBPACK_IMPORTED_MODULE_85__.Z),
299135
+ /* harmony export */ paymium: () => (/* reexport safe */ _src_paymium_js__WEBPACK_IMPORTED_MODULE_86__.Z),
299136
+ /* harmony export */ phemex: () => (/* reexport safe */ _src_phemex_js__WEBPACK_IMPORTED_MODULE_87__.Z),
299137
+ /* harmony export */ poloniex: () => (/* reexport safe */ _src_poloniex_js__WEBPACK_IMPORTED_MODULE_88__.Z),
299138
+ /* harmony export */ poloniexfutures: () => (/* reexport safe */ _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_89__.Z),
296991
299139
  /* harmony export */ pro: () => (/* binding */ pro),
296992
- /* harmony export */ probit: () => (/* reexport safe */ _src_probit_js__WEBPACK_IMPORTED_MODULE_89__.Z),
296993
- /* harmony export */ timex: () => (/* reexport safe */ _src_timex_js__WEBPACK_IMPORTED_MODULE_90__.Z),
296994
- /* harmony export */ tokocrypto: () => (/* reexport safe */ _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_91__.Z),
296995
- /* harmony export */ upbit: () => (/* reexport safe */ _src_upbit_js__WEBPACK_IMPORTED_MODULE_92__.Z),
299140
+ /* harmony export */ probit: () => (/* reexport safe */ _src_probit_js__WEBPACK_IMPORTED_MODULE_90__.Z),
299141
+ /* harmony export */ timex: () => (/* reexport safe */ _src_timex_js__WEBPACK_IMPORTED_MODULE_91__.Z),
299142
+ /* harmony export */ tokocrypto: () => (/* reexport safe */ _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_92__.Z),
299143
+ /* harmony export */ upbit: () => (/* reexport safe */ _src_upbit_js__WEBPACK_IMPORTED_MODULE_93__.Z),
296996
299144
  /* harmony export */ version: () => (/* binding */ version),
296997
- /* harmony export */ wavesexchange: () => (/* reexport safe */ _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_93__.Z),
296998
- /* harmony export */ wazirx: () => (/* reexport safe */ _src_wazirx_js__WEBPACK_IMPORTED_MODULE_94__.Z),
296999
- /* harmony export */ whitebit: () => (/* reexport safe */ _src_whitebit_js__WEBPACK_IMPORTED_MODULE_95__.Z),
297000
- /* harmony export */ woo: () => (/* reexport safe */ _src_woo_js__WEBPACK_IMPORTED_MODULE_96__.Z),
297001
- /* harmony export */ yobit: () => (/* reexport safe */ _src_yobit_js__WEBPACK_IMPORTED_MODULE_97__.Z),
297002
- /* harmony export */ zaif: () => (/* reexport safe */ _src_zaif_js__WEBPACK_IMPORTED_MODULE_98__.Z),
297003
- /* harmony export */ zonda: () => (/* reexport safe */ _src_zonda_js__WEBPACK_IMPORTED_MODULE_99__.Z)
299145
+ /* harmony export */ wavesexchange: () => (/* reexport safe */ _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_94__.Z),
299146
+ /* harmony export */ wazirx: () => (/* reexport safe */ _src_wazirx_js__WEBPACK_IMPORTED_MODULE_95__.Z),
299147
+ /* harmony export */ whitebit: () => (/* reexport safe */ _src_whitebit_js__WEBPACK_IMPORTED_MODULE_96__.Z),
299148
+ /* harmony export */ woo: () => (/* reexport safe */ _src_woo_js__WEBPACK_IMPORTED_MODULE_97__.Z),
299149
+ /* harmony export */ yobit: () => (/* reexport safe */ _src_yobit_js__WEBPACK_IMPORTED_MODULE_98__.Z),
299150
+ /* harmony export */ zaif: () => (/* reexport safe */ _src_zaif_js__WEBPACK_IMPORTED_MODULE_99__.Z),
299151
+ /* harmony export */ zonda: () => (/* reexport safe */ _src_zonda_js__WEBPACK_IMPORTED_MODULE_100__.Z)
297004
299152
  /* harmony export */ });
297005
299153
  /* harmony import */ var _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
297006
- /* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(2194);
297007
- /* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(7100);
297008
- /* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(6689);
299154
+ /* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(2194);
299155
+ /* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(7100);
299156
+ /* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(6689);
297009
299157
  /* harmony import */ var _src_ace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9869);
297010
299158
  /* harmony import */ var _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5660);
297011
299159
  /* harmony import */ var _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9612);
@@ -297050,121 +299198,122 @@ __webpack_require__.r(__webpack_exports__);
297050
299198
  /* harmony import */ var _src_coinex_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(332);
297051
299199
  /* harmony import */ var _src_coinlist_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(3623);
297052
299200
  /* harmony import */ var _src_coinmate_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(9816);
297053
- /* harmony import */ var _src_coinone_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(7811);
297054
- /* harmony import */ var _src_coinsph_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(5782);
297055
- /* harmony import */ var _src_coinspot_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(7794);
297056
- /* harmony import */ var _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(9129);
297057
- /* harmony import */ var _src_currencycom_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(3214);
297058
- /* harmony import */ var _src_delta_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(1753);
297059
- /* harmony import */ var _src_deribit_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(24);
297060
- /* harmony import */ var _src_digifinex_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(8846);
297061
- /* harmony import */ var _src_exmo_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(1729);
297062
- /* harmony import */ var _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(5788);
297063
- /* harmony import */ var _src_gate_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(7290);
297064
- /* harmony import */ var _src_gateio_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(7036);
297065
- /* harmony import */ var _src_gemini_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(6743);
297066
- /* harmony import */ var _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(4714);
297067
- /* harmony import */ var _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(4815);
297068
- /* harmony import */ var _src_hollaex_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(8422);
297069
- /* harmony import */ var _src_htx_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(5939);
297070
- /* harmony import */ var _src_huobi_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(8146);
297071
- /* harmony import */ var _src_huobijp_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(7034);
297072
- /* harmony import */ var _src_idex_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(8232);
297073
- /* harmony import */ var _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(9570);
297074
- /* harmony import */ var _src_indodax_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(1605);
297075
- /* harmony import */ var _src_kraken_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(9922);
297076
- /* harmony import */ var _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(4470);
297077
- /* harmony import */ var _src_kucoin_js__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(3583);
297078
- /* harmony import */ var _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(1924);
297079
- /* harmony import */ var _src_kuna_js__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(7732);
297080
- /* harmony import */ var _src_latoken_js__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(2545);
297081
- /* harmony import */ var _src_lbank_js__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(3944);
297082
- /* harmony import */ var _src_luno_js__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(1758);
297083
- /* harmony import */ var _src_lykke_js__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(3803);
297084
- /* harmony import */ var _src_mercado_js__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(9013);
297085
- /* harmony import */ var _src_mexc_js__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(6641);
297086
- /* harmony import */ var _src_ndax_js__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(4531);
297087
- /* harmony import */ var _src_novadax_js__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(2449);
297088
- /* harmony import */ var _src_oceanex_js__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(6749);
297089
- /* harmony import */ var _src_okcoin_js__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(3007);
297090
- /* harmony import */ var _src_okx_js__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(4042);
297091
- /* harmony import */ var _src_onetrading_js__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(6481);
297092
- /* harmony import */ var _src_p2b_js__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(2466);
297093
- /* harmony import */ var _src_paymium_js__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(7082);
297094
- /* harmony import */ var _src_phemex_js__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(79);
297095
- /* harmony import */ var _src_poloniex_js__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(8891);
297096
- /* harmony import */ var _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(6877);
297097
- /* harmony import */ var _src_probit_js__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(3657);
297098
- /* harmony import */ var _src_timex_js__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(1067);
297099
- /* harmony import */ var _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(5261);
297100
- /* harmony import */ var _src_upbit_js__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(7584);
297101
- /* harmony import */ var _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(3853);
297102
- /* harmony import */ var _src_wazirx_js__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(6536);
297103
- /* harmony import */ var _src_whitebit_js__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(5467);
297104
- /* harmony import */ var _src_woo_js__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(517);
297105
- /* harmony import */ var _src_yobit_js__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(3850);
297106
- /* harmony import */ var _src_zaif_js__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(5934);
297107
- /* harmony import */ var _src_zonda_js__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(5140);
297108
- /* harmony import */ var _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(2467);
297109
- /* harmony import */ var _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(2383);
297110
- /* harmony import */ var _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(8848);
297111
- /* harmony import */ var _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(8764);
297112
- /* harmony import */ var _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(5078);
297113
- /* harmony import */ var _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(1326);
297114
- /* harmony import */ var _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(1230);
297115
- /* harmony import */ var _src_pro_bingx_js__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(6955);
297116
- /* harmony import */ var _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(453);
297117
- /* harmony import */ var _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(9772);
297118
- /* harmony import */ var _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(588);
297119
- /* harmony import */ var _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(1885);
297120
- /* harmony import */ var _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(7504);
297121
- /* harmony import */ var _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(2302);
297122
- /* harmony import */ var _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(2191);
297123
- /* harmony import */ var _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(1297);
297124
- /* harmony import */ var _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(3005);
297125
- /* harmony import */ var _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(2317);
297126
- /* harmony import */ var _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(6977);
297127
- /* harmony import */ var _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(2519);
297128
- /* harmony import */ var _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(5030);
297129
- /* harmony import */ var _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(5272);
297130
- /* harmony import */ var _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(3414);
297131
- /* harmony import */ var _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(8368);
297132
- /* harmony import */ var _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(7891);
297133
- /* harmony import */ var _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(204);
297134
- /* harmony import */ var _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(5208);
297135
- /* harmony import */ var _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(6820);
297136
- /* harmony import */ var _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(2952);
297137
- /* harmony import */ var _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(1788);
297138
- /* harmony import */ var _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(9004);
297139
- /* harmony import */ var _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(8335);
297140
- /* harmony import */ var _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(1465);
297141
- /* harmony import */ var _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(9488);
297142
- /* harmony import */ var _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(5189);
297143
- /* harmony import */ var _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(8559);
297144
- /* harmony import */ var _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(7474);
297145
- /* harmony import */ var _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(8384);
297146
- /* harmony import */ var _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(9021);
297147
- /* harmony import */ var _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(3484);
297148
- /* harmony import */ var _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(1311);
297149
- /* harmony import */ var _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(736);
297150
- /* harmony import */ var _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(449);
297151
- /* harmony import */ var _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(2387);
297152
- /* harmony import */ var _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(7181);
297153
- /* harmony import */ var _src_pro_lbank_js__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(1267);
297154
- /* harmony import */ var _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(627);
297155
- /* harmony import */ var _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(6484);
297156
- /* harmony import */ var _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(8080);
297157
- /* harmony import */ var _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(7105);
297158
- /* harmony import */ var _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(2214);
297159
- /* harmony import */ var _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(9419);
297160
- /* harmony import */ var _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(4360);
297161
- /* harmony import */ var _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(7924);
297162
- /* harmony import */ var _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(3541);
297163
- /* harmony import */ var _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(9782);
297164
- /* harmony import */ var _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(7614);
297165
- /* harmony import */ var _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(4828);
297166
- /* harmony import */ var _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(5630);
297167
- /* harmony import */ var _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(3910);
299201
+ /* harmony import */ var _src_coinmetro_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(4759);
299202
+ /* harmony import */ var _src_coinone_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(7811);
299203
+ /* harmony import */ var _src_coinsph_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(5782);
299204
+ /* harmony import */ var _src_coinspot_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(7794);
299205
+ /* harmony import */ var _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(9129);
299206
+ /* harmony import */ var _src_currencycom_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(3214);
299207
+ /* harmony import */ var _src_delta_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(1753);
299208
+ /* harmony import */ var _src_deribit_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(24);
299209
+ /* harmony import */ var _src_digifinex_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(8846);
299210
+ /* harmony import */ var _src_exmo_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(1729);
299211
+ /* harmony import */ var _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(5788);
299212
+ /* harmony import */ var _src_gate_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(7290);
299213
+ /* harmony import */ var _src_gateio_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(7036);
299214
+ /* harmony import */ var _src_gemini_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(6743);
299215
+ /* harmony import */ var _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(4714);
299216
+ /* harmony import */ var _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(4815);
299217
+ /* harmony import */ var _src_hollaex_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(8422);
299218
+ /* harmony import */ var _src_htx_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(5939);
299219
+ /* harmony import */ var _src_huobi_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(8146);
299220
+ /* harmony import */ var _src_huobijp_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(7034);
299221
+ /* harmony import */ var _src_idex_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(8232);
299222
+ /* harmony import */ var _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(9570);
299223
+ /* harmony import */ var _src_indodax_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(1605);
299224
+ /* harmony import */ var _src_kraken_js__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(9922);
299225
+ /* harmony import */ var _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(4470);
299226
+ /* harmony import */ var _src_kucoin_js__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(3583);
299227
+ /* harmony import */ var _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(1924);
299228
+ /* harmony import */ var _src_kuna_js__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(7732);
299229
+ /* harmony import */ var _src_latoken_js__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(2545);
299230
+ /* harmony import */ var _src_lbank_js__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(3944);
299231
+ /* harmony import */ var _src_luno_js__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(1758);
299232
+ /* harmony import */ var _src_lykke_js__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(3803);
299233
+ /* harmony import */ var _src_mercado_js__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(9013);
299234
+ /* harmony import */ var _src_mexc_js__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(6641);
299235
+ /* harmony import */ var _src_ndax_js__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(4531);
299236
+ /* harmony import */ var _src_novadax_js__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(2449);
299237
+ /* harmony import */ var _src_oceanex_js__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(6749);
299238
+ /* harmony import */ var _src_okcoin_js__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(3007);
299239
+ /* harmony import */ var _src_okx_js__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(4042);
299240
+ /* harmony import */ var _src_onetrading_js__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(6481);
299241
+ /* harmony import */ var _src_p2b_js__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(2466);
299242
+ /* harmony import */ var _src_paymium_js__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(7082);
299243
+ /* harmony import */ var _src_phemex_js__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(79);
299244
+ /* harmony import */ var _src_poloniex_js__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(8891);
299245
+ /* harmony import */ var _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(6877);
299246
+ /* harmony import */ var _src_probit_js__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(3657);
299247
+ /* harmony import */ var _src_timex_js__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(1067);
299248
+ /* harmony import */ var _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(5261);
299249
+ /* harmony import */ var _src_upbit_js__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(7584);
299250
+ /* harmony import */ var _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(3853);
299251
+ /* harmony import */ var _src_wazirx_js__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(6536);
299252
+ /* harmony import */ var _src_whitebit_js__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(5467);
299253
+ /* harmony import */ var _src_woo_js__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(517);
299254
+ /* harmony import */ var _src_yobit_js__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(3850);
299255
+ /* harmony import */ var _src_zaif_js__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(5934);
299256
+ /* harmony import */ var _src_zonda_js__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(5140);
299257
+ /* harmony import */ var _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(2467);
299258
+ /* harmony import */ var _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(2383);
299259
+ /* harmony import */ var _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(8848);
299260
+ /* harmony import */ var _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(8764);
299261
+ /* harmony import */ var _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(5078);
299262
+ /* harmony import */ var _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(1326);
299263
+ /* harmony import */ var _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(1230);
299264
+ /* harmony import */ var _src_pro_bingx_js__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(6955);
299265
+ /* harmony import */ var _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(453);
299266
+ /* harmony import */ var _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(9772);
299267
+ /* harmony import */ var _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(588);
299268
+ /* harmony import */ var _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(1885);
299269
+ /* harmony import */ var _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(7504);
299270
+ /* harmony import */ var _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(2302);
299271
+ /* harmony import */ var _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(2191);
299272
+ /* harmony import */ var _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(1297);
299273
+ /* harmony import */ var _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(3005);
299274
+ /* harmony import */ var _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(2317);
299275
+ /* harmony import */ var _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(6977);
299276
+ /* harmony import */ var _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(2519);
299277
+ /* harmony import */ var _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(5030);
299278
+ /* harmony import */ var _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(5272);
299279
+ /* harmony import */ var _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(3414);
299280
+ /* harmony import */ var _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(8368);
299281
+ /* harmony import */ var _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(7891);
299282
+ /* harmony import */ var _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(204);
299283
+ /* harmony import */ var _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(5208);
299284
+ /* harmony import */ var _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(6820);
299285
+ /* harmony import */ var _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(2952);
299286
+ /* harmony import */ var _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(1788);
299287
+ /* harmony import */ var _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(9004);
299288
+ /* harmony import */ var _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(8335);
299289
+ /* harmony import */ var _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(1465);
299290
+ /* harmony import */ var _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(9488);
299291
+ /* harmony import */ var _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(5189);
299292
+ /* harmony import */ var _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(8559);
299293
+ /* harmony import */ var _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(7474);
299294
+ /* harmony import */ var _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(8384);
299295
+ /* harmony import */ var _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(9021);
299296
+ /* harmony import */ var _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(3484);
299297
+ /* harmony import */ var _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(1311);
299298
+ /* harmony import */ var _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(736);
299299
+ /* harmony import */ var _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(449);
299300
+ /* harmony import */ var _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(2387);
299301
+ /* harmony import */ var _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(7181);
299302
+ /* harmony import */ var _src_pro_lbank_js__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(1267);
299303
+ /* harmony import */ var _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(627);
299304
+ /* harmony import */ var _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(6484);
299305
+ /* harmony import */ var _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(8080);
299306
+ /* harmony import */ var _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(7105);
299307
+ /* harmony import */ var _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(2214);
299308
+ /* harmony import */ var _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(9419);
299309
+ /* harmony import */ var _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(4360);
299310
+ /* harmony import */ var _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(7924);
299311
+ /* harmony import */ var _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(3541);
299312
+ /* harmony import */ var _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(9782);
299313
+ /* harmony import */ var _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(7614);
299314
+ /* harmony import */ var _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(4828);
299315
+ /* harmony import */ var _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(5630);
299316
+ /* harmony import */ var _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(3910);
297168
299317
  /*
297169
299318
 
297170
299319
  MIT License
@@ -297199,7 +299348,7 @@ SOFTWARE.
297199
299348
 
297200
299349
  //-----------------------------------------------------------------------------
297201
299350
  // this is updated by vss.js when building
297202
- const version = '4.2.25';
299351
+ const version = '4.2.27';
297203
299352
  _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion = version;
297204
299353
  //-----------------------------------------------------------------------------
297205
299354
 
@@ -297299,6 +299448,7 @@ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion
297299
299448
 
297300
299449
 
297301
299450
 
299451
+
297302
299452
 
297303
299453
 
297304
299454
  // pro exchanges
@@ -297407,123 +299557,124 @@ const exchanges = {
297407
299557
  'coinex': _src_coinex_js__WEBPACK_IMPORTED_MODULE_42__/* ["default"] */ .Z,
297408
299558
  'coinlist': _src_coinlist_js__WEBPACK_IMPORTED_MODULE_43__/* ["default"] */ .Z,
297409
299559
  'coinmate': _src_coinmate_js__WEBPACK_IMPORTED_MODULE_44__/* ["default"] */ .Z,
297410
- 'coinone': _src_coinone_js__WEBPACK_IMPORTED_MODULE_45__/* ["default"] */ .Z,
297411
- 'coinsph': _src_coinsph_js__WEBPACK_IMPORTED_MODULE_46__/* ["default"] */ .Z,
297412
- 'coinspot': _src_coinspot_js__WEBPACK_IMPORTED_MODULE_47__/* ["default"] */ .Z,
297413
- 'cryptocom': _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_48__/* ["default"] */ .Z,
297414
- 'currencycom': _src_currencycom_js__WEBPACK_IMPORTED_MODULE_49__/* ["default"] */ .Z,
297415
- 'delta': _src_delta_js__WEBPACK_IMPORTED_MODULE_50__/* ["default"] */ .Z,
297416
- 'deribit': _src_deribit_js__WEBPACK_IMPORTED_MODULE_51__/* ["default"] */ .Z,
297417
- 'digifinex': _src_digifinex_js__WEBPACK_IMPORTED_MODULE_52__/* ["default"] */ .Z,
297418
- 'exmo': _src_exmo_js__WEBPACK_IMPORTED_MODULE_53__/* ["default"] */ .Z,
297419
- 'fmfwio': _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_54__/* ["default"] */ .Z,
297420
- 'gate': _src_gate_js__WEBPACK_IMPORTED_MODULE_55__/* ["default"] */ .Z,
297421
- 'gateio': _src_gateio_js__WEBPACK_IMPORTED_MODULE_56__/* ["default"] */ .Z,
297422
- 'gemini': _src_gemini_js__WEBPACK_IMPORTED_MODULE_57__/* ["default"] */ .Z,
297423
- 'hitbtc': _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_58__/* ["default"] */ .Z,
297424
- 'hitbtc3': _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_59__/* ["default"] */ .Z,
297425
- 'hollaex': _src_hollaex_js__WEBPACK_IMPORTED_MODULE_60__/* ["default"] */ .Z,
297426
- 'htx': _src_htx_js__WEBPACK_IMPORTED_MODULE_61__/* ["default"] */ .Z,
297427
- 'huobi': _src_huobi_js__WEBPACK_IMPORTED_MODULE_62__/* ["default"] */ .Z,
297428
- 'huobijp': _src_huobijp_js__WEBPACK_IMPORTED_MODULE_63__/* ["default"] */ .Z,
297429
- 'idex': _src_idex_js__WEBPACK_IMPORTED_MODULE_64__/* ["default"] */ .Z,
297430
- 'independentreserve': _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_65__/* ["default"] */ .Z,
297431
- 'indodax': _src_indodax_js__WEBPACK_IMPORTED_MODULE_66__/* ["default"] */ .Z,
297432
- 'kraken': _src_kraken_js__WEBPACK_IMPORTED_MODULE_67__/* ["default"] */ .Z,
297433
- 'krakenfutures': _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_68__/* ["default"] */ .Z,
297434
- 'kucoin': _src_kucoin_js__WEBPACK_IMPORTED_MODULE_69__/* ["default"] */ .Z,
297435
- 'kucoinfutures': _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_70__/* ["default"] */ .Z,
297436
- 'kuna': _src_kuna_js__WEBPACK_IMPORTED_MODULE_71__/* ["default"] */ .Z,
297437
- 'latoken': _src_latoken_js__WEBPACK_IMPORTED_MODULE_72__/* ["default"] */ .Z,
297438
- 'lbank': _src_lbank_js__WEBPACK_IMPORTED_MODULE_73__/* ["default"] */ .Z,
297439
- 'luno': _src_luno_js__WEBPACK_IMPORTED_MODULE_74__/* ["default"] */ .Z,
297440
- 'lykke': _src_lykke_js__WEBPACK_IMPORTED_MODULE_75__/* ["default"] */ .Z,
297441
- 'mercado': _src_mercado_js__WEBPACK_IMPORTED_MODULE_76__/* ["default"] */ .Z,
297442
- 'mexc': _src_mexc_js__WEBPACK_IMPORTED_MODULE_77__/* ["default"] */ .Z,
297443
- 'ndax': _src_ndax_js__WEBPACK_IMPORTED_MODULE_78__/* ["default"] */ .Z,
297444
- 'novadax': _src_novadax_js__WEBPACK_IMPORTED_MODULE_79__/* ["default"] */ .Z,
297445
- 'oceanex': _src_oceanex_js__WEBPACK_IMPORTED_MODULE_80__/* ["default"] */ .Z,
297446
- 'okcoin': _src_okcoin_js__WEBPACK_IMPORTED_MODULE_81__/* ["default"] */ .Z,
297447
- 'okx': _src_okx_js__WEBPACK_IMPORTED_MODULE_82__/* ["default"] */ .Z,
297448
- 'onetrading': _src_onetrading_js__WEBPACK_IMPORTED_MODULE_83__/* ["default"] */ .Z,
297449
- 'p2b': _src_p2b_js__WEBPACK_IMPORTED_MODULE_84__/* ["default"] */ .Z,
297450
- 'paymium': _src_paymium_js__WEBPACK_IMPORTED_MODULE_85__/* ["default"] */ .Z,
297451
- 'phemex': _src_phemex_js__WEBPACK_IMPORTED_MODULE_86__/* ["default"] */ .Z,
297452
- 'poloniex': _src_poloniex_js__WEBPACK_IMPORTED_MODULE_87__/* ["default"] */ .Z,
297453
- 'poloniexfutures': _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_88__/* ["default"] */ .Z,
297454
- 'probit': _src_probit_js__WEBPACK_IMPORTED_MODULE_89__/* ["default"] */ .Z,
297455
- 'timex': _src_timex_js__WEBPACK_IMPORTED_MODULE_90__/* ["default"] */ .Z,
297456
- 'tokocrypto': _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_91__/* ["default"] */ .Z,
297457
- 'upbit': _src_upbit_js__WEBPACK_IMPORTED_MODULE_92__/* ["default"] */ .Z,
297458
- 'wavesexchange': _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_93__/* ["default"] */ .Z,
297459
- 'wazirx': _src_wazirx_js__WEBPACK_IMPORTED_MODULE_94__/* ["default"] */ .Z,
297460
- 'whitebit': _src_whitebit_js__WEBPACK_IMPORTED_MODULE_95__/* ["default"] */ .Z,
297461
- 'woo': _src_woo_js__WEBPACK_IMPORTED_MODULE_96__/* ["default"] */ .Z,
297462
- 'yobit': _src_yobit_js__WEBPACK_IMPORTED_MODULE_97__/* ["default"] */ .Z,
297463
- 'zaif': _src_zaif_js__WEBPACK_IMPORTED_MODULE_98__/* ["default"] */ .Z,
297464
- 'zonda': _src_zonda_js__WEBPACK_IMPORTED_MODULE_99__/* ["default"] */ .Z,
299560
+ 'coinmetro': _src_coinmetro_js__WEBPACK_IMPORTED_MODULE_45__/* ["default"] */ .Z,
299561
+ 'coinone': _src_coinone_js__WEBPACK_IMPORTED_MODULE_46__/* ["default"] */ .Z,
299562
+ 'coinsph': _src_coinsph_js__WEBPACK_IMPORTED_MODULE_47__/* ["default"] */ .Z,
299563
+ 'coinspot': _src_coinspot_js__WEBPACK_IMPORTED_MODULE_48__/* ["default"] */ .Z,
299564
+ 'cryptocom': _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_49__/* ["default"] */ .Z,
299565
+ 'currencycom': _src_currencycom_js__WEBPACK_IMPORTED_MODULE_50__/* ["default"] */ .Z,
299566
+ 'delta': _src_delta_js__WEBPACK_IMPORTED_MODULE_51__/* ["default"] */ .Z,
299567
+ 'deribit': _src_deribit_js__WEBPACK_IMPORTED_MODULE_52__/* ["default"] */ .Z,
299568
+ 'digifinex': _src_digifinex_js__WEBPACK_IMPORTED_MODULE_53__/* ["default"] */ .Z,
299569
+ 'exmo': _src_exmo_js__WEBPACK_IMPORTED_MODULE_54__/* ["default"] */ .Z,
299570
+ 'fmfwio': _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_55__/* ["default"] */ .Z,
299571
+ 'gate': _src_gate_js__WEBPACK_IMPORTED_MODULE_56__/* ["default"] */ .Z,
299572
+ 'gateio': _src_gateio_js__WEBPACK_IMPORTED_MODULE_57__/* ["default"] */ .Z,
299573
+ 'gemini': _src_gemini_js__WEBPACK_IMPORTED_MODULE_58__/* ["default"] */ .Z,
299574
+ 'hitbtc': _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_59__/* ["default"] */ .Z,
299575
+ 'hitbtc3': _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_60__/* ["default"] */ .Z,
299576
+ 'hollaex': _src_hollaex_js__WEBPACK_IMPORTED_MODULE_61__/* ["default"] */ .Z,
299577
+ 'htx': _src_htx_js__WEBPACK_IMPORTED_MODULE_62__/* ["default"] */ .Z,
299578
+ 'huobi': _src_huobi_js__WEBPACK_IMPORTED_MODULE_63__/* ["default"] */ .Z,
299579
+ 'huobijp': _src_huobijp_js__WEBPACK_IMPORTED_MODULE_64__/* ["default"] */ .Z,
299580
+ 'idex': _src_idex_js__WEBPACK_IMPORTED_MODULE_65__/* ["default"] */ .Z,
299581
+ 'independentreserve': _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_66__/* ["default"] */ .Z,
299582
+ 'indodax': _src_indodax_js__WEBPACK_IMPORTED_MODULE_67__/* ["default"] */ .Z,
299583
+ 'kraken': _src_kraken_js__WEBPACK_IMPORTED_MODULE_68__/* ["default"] */ .Z,
299584
+ 'krakenfutures': _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_69__/* ["default"] */ .Z,
299585
+ 'kucoin': _src_kucoin_js__WEBPACK_IMPORTED_MODULE_70__/* ["default"] */ .Z,
299586
+ 'kucoinfutures': _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_71__/* ["default"] */ .Z,
299587
+ 'kuna': _src_kuna_js__WEBPACK_IMPORTED_MODULE_72__/* ["default"] */ .Z,
299588
+ 'latoken': _src_latoken_js__WEBPACK_IMPORTED_MODULE_73__/* ["default"] */ .Z,
299589
+ 'lbank': _src_lbank_js__WEBPACK_IMPORTED_MODULE_74__/* ["default"] */ .Z,
299590
+ 'luno': _src_luno_js__WEBPACK_IMPORTED_MODULE_75__/* ["default"] */ .Z,
299591
+ 'lykke': _src_lykke_js__WEBPACK_IMPORTED_MODULE_76__/* ["default"] */ .Z,
299592
+ 'mercado': _src_mercado_js__WEBPACK_IMPORTED_MODULE_77__/* ["default"] */ .Z,
299593
+ 'mexc': _src_mexc_js__WEBPACK_IMPORTED_MODULE_78__/* ["default"] */ .Z,
299594
+ 'ndax': _src_ndax_js__WEBPACK_IMPORTED_MODULE_79__/* ["default"] */ .Z,
299595
+ 'novadax': _src_novadax_js__WEBPACK_IMPORTED_MODULE_80__/* ["default"] */ .Z,
299596
+ 'oceanex': _src_oceanex_js__WEBPACK_IMPORTED_MODULE_81__/* ["default"] */ .Z,
299597
+ 'okcoin': _src_okcoin_js__WEBPACK_IMPORTED_MODULE_82__/* ["default"] */ .Z,
299598
+ 'okx': _src_okx_js__WEBPACK_IMPORTED_MODULE_83__/* ["default"] */ .Z,
299599
+ 'onetrading': _src_onetrading_js__WEBPACK_IMPORTED_MODULE_84__/* ["default"] */ .Z,
299600
+ 'p2b': _src_p2b_js__WEBPACK_IMPORTED_MODULE_85__/* ["default"] */ .Z,
299601
+ 'paymium': _src_paymium_js__WEBPACK_IMPORTED_MODULE_86__/* ["default"] */ .Z,
299602
+ 'phemex': _src_phemex_js__WEBPACK_IMPORTED_MODULE_87__/* ["default"] */ .Z,
299603
+ 'poloniex': _src_poloniex_js__WEBPACK_IMPORTED_MODULE_88__/* ["default"] */ .Z,
299604
+ 'poloniexfutures': _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_89__/* ["default"] */ .Z,
299605
+ 'probit': _src_probit_js__WEBPACK_IMPORTED_MODULE_90__/* ["default"] */ .Z,
299606
+ 'timex': _src_timex_js__WEBPACK_IMPORTED_MODULE_91__/* ["default"] */ .Z,
299607
+ 'tokocrypto': _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_92__/* ["default"] */ .Z,
299608
+ 'upbit': _src_upbit_js__WEBPACK_IMPORTED_MODULE_93__/* ["default"] */ .Z,
299609
+ 'wavesexchange': _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_94__/* ["default"] */ .Z,
299610
+ 'wazirx': _src_wazirx_js__WEBPACK_IMPORTED_MODULE_95__/* ["default"] */ .Z,
299611
+ 'whitebit': _src_whitebit_js__WEBPACK_IMPORTED_MODULE_96__/* ["default"] */ .Z,
299612
+ 'woo': _src_woo_js__WEBPACK_IMPORTED_MODULE_97__/* ["default"] */ .Z,
299613
+ 'yobit': _src_yobit_js__WEBPACK_IMPORTED_MODULE_98__/* ["default"] */ .Z,
299614
+ 'zaif': _src_zaif_js__WEBPACK_IMPORTED_MODULE_99__/* ["default"] */ .Z,
299615
+ 'zonda': _src_zonda_js__WEBPACK_IMPORTED_MODULE_100__/* ["default"] */ .Z,
297465
299616
  };
297466
299617
  const pro = {
297467
- 'alpaca': _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_100__/* ["default"] */ .Z,
297468
- 'ascendex': _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_101__/* ["default"] */ .Z,
297469
- 'bequant': _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_102__/* ["default"] */ .Z,
297470
- 'binance': _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_103__/* ["default"] */ .Z,
297471
- 'binancecoinm': _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_104__/* ["default"] */ .Z,
297472
- 'binanceus': _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_105__/* ["default"] */ .Z,
297473
- 'binanceusdm': _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_106__/* ["default"] */ .Z,
297474
- 'bingx': _src_pro_bingx_js__WEBPACK_IMPORTED_MODULE_107__/* ["default"] */ .Z,
297475
- 'bitcoincom': _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_108__/* ["default"] */ .Z,
297476
- 'bitfinex': _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_109__/* ["default"] */ .Z,
297477
- 'bitfinex2': _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_110__/* ["default"] */ .Z,
297478
- 'bitget': _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_111__/* ["default"] */ .Z,
297479
- 'bitmart': _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_112__/* ["default"] */ .Z,
297480
- 'bitmex': _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_113__/* ["default"] */ .Z,
297481
- 'bitopro': _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_114__/* ["default"] */ .Z,
297482
- 'bitpanda': _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_115__/* ["default"] */ .Z,
297483
- 'bitrue': _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_116__/* ["default"] */ .Z,
297484
- 'bitstamp': _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_117__/* ["default"] */ .Z,
297485
- 'bitvavo': _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_118__/* ["default"] */ .Z,
297486
- 'blockchaincom': _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_119__/* ["default"] */ .Z,
297487
- 'bybit': _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_120__/* ["default"] */ .Z,
297488
- 'cex': _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_121__/* ["default"] */ .Z,
297489
- 'coinbase': _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_122__/* ["default"] */ .Z,
297490
- 'coinbasepro': _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_123__/* ["default"] */ .Z,
297491
- 'coincheck': _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_124__/* ["default"] */ .Z,
297492
- 'coinex': _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_125__/* ["default"] */ .Z,
297493
- 'coinone': _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_126__/* ["default"] */ .Z,
297494
- 'cryptocom': _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_127__/* ["default"] */ .Z,
297495
- 'currencycom': _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_128__/* ["default"] */ .Z,
297496
- 'deribit': _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_129__/* ["default"] */ .Z,
297497
- 'exmo': _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_130__/* ["default"] */ .Z,
297498
- 'gate': _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_131__/* ["default"] */ .Z,
297499
- 'gateio': _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_132__/* ["default"] */ .Z,
297500
- 'gemini': _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_133__/* ["default"] */ .Z,
297501
- 'hitbtc': _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_134__/* ["default"] */ .Z,
297502
- 'hollaex': _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_135__/* ["default"] */ .Z,
297503
- 'htx': _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_136__/* ["default"] */ .Z,
297504
- 'huobi': _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_137__/* ["default"] */ .Z,
297505
- 'huobijp': _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_138__/* ["default"] */ .Z,
297506
- 'idex': _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_139__/* ["default"] */ .Z,
297507
- 'independentreserve': _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_140__/* ["default"] */ .Z,
297508
- 'kraken': _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_141__/* ["default"] */ .Z,
297509
- 'krakenfutures': _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_142__/* ["default"] */ .Z,
297510
- 'kucoin': _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_143__/* ["default"] */ .Z,
297511
- 'kucoinfutures': _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_144__/* ["default"] */ .Z,
297512
- 'lbank': _src_pro_lbank_js__WEBPACK_IMPORTED_MODULE_145__/* ["default"] */ .Z,
297513
- 'luno': _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_146__/* ["default"] */ .Z,
297514
- 'mexc': _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_147__/* ["default"] */ .Z,
297515
- 'ndax': _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_148__/* ["default"] */ .Z,
297516
- 'okcoin': _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_149__/* ["default"] */ .Z,
297517
- 'okx': _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_150__/* ["default"] */ .Z,
297518
- 'onetrading': _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_151__/* ["default"] */ .Z,
297519
- 'phemex': _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_152__/* ["default"] */ .Z,
297520
- 'poloniex': _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_153__/* ["default"] */ .Z,
297521
- 'poloniexfutures': _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_154__/* ["default"] */ .Z,
297522
- 'probit': _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_155__/* ["default"] */ .Z,
297523
- 'upbit': _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_156__/* ["default"] */ .Z,
297524
- 'wazirx': _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_157__/* ["default"] */ .Z,
297525
- 'whitebit': _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_158__/* ["default"] */ .Z,
297526
- 'woo': _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_159__/* ["default"] */ .Z,
299618
+ 'alpaca': _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_101__/* ["default"] */ .Z,
299619
+ 'ascendex': _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_102__/* ["default"] */ .Z,
299620
+ 'bequant': _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_103__/* ["default"] */ .Z,
299621
+ 'binance': _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_104__/* ["default"] */ .Z,
299622
+ 'binancecoinm': _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_105__/* ["default"] */ .Z,
299623
+ 'binanceus': _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_106__/* ["default"] */ .Z,
299624
+ 'binanceusdm': _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_107__/* ["default"] */ .Z,
299625
+ 'bingx': _src_pro_bingx_js__WEBPACK_IMPORTED_MODULE_108__/* ["default"] */ .Z,
299626
+ 'bitcoincom': _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_109__/* ["default"] */ .Z,
299627
+ 'bitfinex': _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_110__/* ["default"] */ .Z,
299628
+ 'bitfinex2': _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_111__/* ["default"] */ .Z,
299629
+ 'bitget': _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_112__/* ["default"] */ .Z,
299630
+ 'bitmart': _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_113__/* ["default"] */ .Z,
299631
+ 'bitmex': _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_114__/* ["default"] */ .Z,
299632
+ 'bitopro': _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_115__/* ["default"] */ .Z,
299633
+ 'bitpanda': _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_116__/* ["default"] */ .Z,
299634
+ 'bitrue': _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_117__/* ["default"] */ .Z,
299635
+ 'bitstamp': _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_118__/* ["default"] */ .Z,
299636
+ 'bitvavo': _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_119__/* ["default"] */ .Z,
299637
+ 'blockchaincom': _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_120__/* ["default"] */ .Z,
299638
+ 'bybit': _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_121__/* ["default"] */ .Z,
299639
+ 'cex': _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_122__/* ["default"] */ .Z,
299640
+ 'coinbase': _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_123__/* ["default"] */ .Z,
299641
+ 'coinbasepro': _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_124__/* ["default"] */ .Z,
299642
+ 'coincheck': _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_125__/* ["default"] */ .Z,
299643
+ 'coinex': _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_126__/* ["default"] */ .Z,
299644
+ 'coinone': _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_127__/* ["default"] */ .Z,
299645
+ 'cryptocom': _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_128__/* ["default"] */ .Z,
299646
+ 'currencycom': _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_129__/* ["default"] */ .Z,
299647
+ 'deribit': _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_130__/* ["default"] */ .Z,
299648
+ 'exmo': _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_131__/* ["default"] */ .Z,
299649
+ 'gate': _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_132__/* ["default"] */ .Z,
299650
+ 'gateio': _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_133__/* ["default"] */ .Z,
299651
+ 'gemini': _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_134__/* ["default"] */ .Z,
299652
+ 'hitbtc': _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_135__/* ["default"] */ .Z,
299653
+ 'hollaex': _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_136__/* ["default"] */ .Z,
299654
+ 'htx': _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_137__/* ["default"] */ .Z,
299655
+ 'huobi': _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_138__/* ["default"] */ .Z,
299656
+ 'huobijp': _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_139__/* ["default"] */ .Z,
299657
+ 'idex': _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_140__/* ["default"] */ .Z,
299658
+ 'independentreserve': _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_141__/* ["default"] */ .Z,
299659
+ 'kraken': _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_142__/* ["default"] */ .Z,
299660
+ 'krakenfutures': _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_143__/* ["default"] */ .Z,
299661
+ 'kucoin': _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_144__/* ["default"] */ .Z,
299662
+ 'kucoinfutures': _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_145__/* ["default"] */ .Z,
299663
+ 'lbank': _src_pro_lbank_js__WEBPACK_IMPORTED_MODULE_146__/* ["default"] */ .Z,
299664
+ 'luno': _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_147__/* ["default"] */ .Z,
299665
+ 'mexc': _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_148__/* ["default"] */ .Z,
299666
+ 'ndax': _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_149__/* ["default"] */ .Z,
299667
+ 'okcoin': _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_150__/* ["default"] */ .Z,
299668
+ 'okx': _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_151__/* ["default"] */ .Z,
299669
+ 'onetrading': _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_152__/* ["default"] */ .Z,
299670
+ 'phemex': _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_153__/* ["default"] */ .Z,
299671
+ 'poloniex': _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_154__/* ["default"] */ .Z,
299672
+ 'poloniexfutures': _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_155__/* ["default"] */ .Z,
299673
+ 'probit': _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_156__/* ["default"] */ .Z,
299674
+ 'upbit': _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_157__/* ["default"] */ .Z,
299675
+ 'wazirx': _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_158__/* ["default"] */ .Z,
299676
+ 'whitebit': _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_159__/* ["default"] */ .Z,
299677
+ 'woo': _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_160__/* ["default"] */ .Z,
297527
299678
  };
297528
299679
  for (const exchange in pro) {
297529
299680
  // const ccxtExchange = exchanges[exchange]
@@ -297536,7 +299687,7 @@ for (const exchange in pro) {
297536
299687
  pro.exchanges = Object.keys(pro);
297537
299688
  pro['Exchange'] = _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e; // now the same for rest and ts
297538
299689
  //-----------------------------------------------------------------------------
297539
- const ccxt = Object.assign({ version, Exchange: _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e, Precise: _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_160__/* .Precise */ .O, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, _src_base_functions_js__WEBPACK_IMPORTED_MODULE_161__, _src_base_errors_js__WEBPACK_IMPORTED_MODULE_162__);
299690
+ const ccxt = Object.assign({ version, Exchange: _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e, Precise: _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_161__/* .Precise */ .O, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, _src_base_functions_js__WEBPACK_IMPORTED_MODULE_162__, _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__);
297540
299691
 
297541
299692
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ccxt);
297542
299693
  //-----------------------------------------------------------------------------