ccxt 4.2.28 → 4.2.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/CONTRIBUTING.md +4 -1
  2. package/README.md +6 -6
  3. package/dist/ccxt.browser.js +1865 -558
  4. package/dist/ccxt.browser.min.js +7 -7
  5. package/dist/cjs/ccxt.js +3 -1
  6. package/dist/cjs/src/ascendex.js +5 -5
  7. package/dist/cjs/src/base/Exchange.js +114 -21
  8. package/dist/cjs/src/base/errors.js +3 -3
  9. package/dist/cjs/src/base/functions/type.js +12 -0
  10. package/dist/cjs/src/bigone.js +2 -2
  11. package/dist/cjs/src/binance.js +896 -217
  12. package/dist/cjs/src/bingx.js +1 -1
  13. package/dist/cjs/src/bitfinex.js +1 -1
  14. package/dist/cjs/src/bitfinex2.js +52 -62
  15. package/dist/cjs/src/bitget.js +8 -4
  16. package/dist/cjs/src/bitmart.js +3 -3
  17. package/dist/cjs/src/bitmex.js +9 -6
  18. package/dist/cjs/src/bitrue.js +1 -1
  19. package/dist/cjs/src/bitso.js +1 -1
  20. package/dist/cjs/src/bitteam.js +2 -2
  21. package/dist/cjs/src/btcalpha.js +1 -1
  22. package/dist/cjs/src/bybit.js +28 -12
  23. package/dist/cjs/src/coinbase.js +12 -5
  24. package/dist/cjs/src/coincheck.js +1 -1
  25. package/dist/cjs/src/coinex.js +2 -2
  26. package/dist/cjs/src/coinlist.js +1 -1
  27. package/dist/cjs/src/coinmate.js +1 -1
  28. package/dist/cjs/src/coinmetro.js +12 -6
  29. package/dist/cjs/src/coinsph.js +1 -1
  30. package/dist/cjs/src/cryptocom.js +3 -3
  31. package/dist/cjs/src/digifinex.js +6 -4
  32. package/dist/cjs/src/exmo.js +2 -2
  33. package/dist/cjs/src/gate.js +5 -5
  34. package/dist/cjs/src/gemini.js +3 -3
  35. package/dist/cjs/src/hitbtc.js +14 -20
  36. package/dist/cjs/src/hollaex.js +2 -2
  37. package/dist/cjs/src/htx.js +5 -5
  38. package/dist/cjs/src/huobijp.js +1 -1
  39. package/dist/cjs/src/krakenfutures.js +1 -1
  40. package/dist/cjs/src/kucoin.js +17 -17
  41. package/dist/cjs/src/kucoinfutures.js +3 -3
  42. package/dist/cjs/src/lbank.js +1 -1
  43. package/dist/cjs/src/mexc.js +7 -7
  44. package/dist/cjs/src/novadax.js +1 -1
  45. package/dist/cjs/src/okcoin.js +2 -2
  46. package/dist/cjs/src/okx.js +24 -10
  47. package/dist/cjs/src/p2b.js +1 -0
  48. package/dist/cjs/src/phemex.js +3 -3
  49. package/dist/cjs/src/poloniexfutures.js +3 -3
  50. package/dist/cjs/src/pro/alpaca.js +1 -1
  51. package/dist/cjs/src/pro/binance.js +4 -4
  52. package/dist/cjs/src/pro/bitget.js +1 -1
  53. package/dist/cjs/src/pro/bitmart.js +1 -1
  54. package/dist/cjs/src/pro/bitmex.js +49 -6
  55. package/dist/cjs/src/pro/bitvavo.js +1 -1
  56. package/dist/cjs/src/pro/bybit.js +2 -2
  57. package/dist/cjs/src/pro/cex.js +2 -2
  58. package/dist/cjs/src/pro/coinbase.js +1 -1
  59. package/dist/cjs/src/pro/independentreserve.js +1 -1
  60. package/dist/cjs/src/pro/okx.js +1 -1
  61. package/dist/cjs/src/pro/onetrading.js +2 -2
  62. package/dist/cjs/src/pro/p2b.js +432 -0
  63. package/dist/cjs/src/pro/probit.js +5 -5
  64. package/dist/cjs/src/pro/whitebit.js +1 -1
  65. package/dist/cjs/src/probit.js +1 -1
  66. package/dist/cjs/src/timex.js +1 -1
  67. package/dist/cjs/src/tokocrypto.js +3 -3
  68. package/dist/cjs/src/wavesexchange.js +2 -2
  69. package/dist/cjs/src/whitebit.js +2 -2
  70. package/dist/cjs/src/woo.js +3 -3
  71. package/dist/cjs/src/yobit.js +1 -1
  72. package/dist/cjs/src/zaif.js +1 -1
  73. package/dist/cjs/src/zonda.js +3 -3
  74. package/js/ccxt.d.ts +4 -1
  75. package/js/ccxt.js +3 -1
  76. package/js/src/abstract/bybit.d.ts +2 -2
  77. package/js/src/abstract/okx.d.ts +1 -0
  78. package/js/src/ascendex.js +5 -5
  79. package/js/src/base/Exchange.d.ts +10 -1
  80. package/js/src/base/Exchange.js +114 -21
  81. package/js/src/base/errorHierarchy.d.ts +7 -6
  82. package/js/src/base/errorHierarchy.js +7 -6
  83. package/js/src/base/errors.d.ts +3 -3
  84. package/js/src/base/errors.js +3 -3
  85. package/js/src/base/functions/type.js +12 -0
  86. package/js/src/bigone.js +2 -2
  87. package/js/src/binance.d.ts +1 -0
  88. package/js/src/binance.js +897 -218
  89. package/js/src/bingx.js +1 -1
  90. package/js/src/bitfinex.js +1 -1
  91. package/js/src/bitfinex2.js +52 -62
  92. package/js/src/bitget.js +8 -4
  93. package/js/src/bitmart.js +3 -3
  94. package/js/src/bitmex.js +9 -6
  95. package/js/src/bitrue.js +1 -1
  96. package/js/src/bitso.d.ts +1 -1
  97. package/js/src/bitso.js +1 -1
  98. package/js/src/bitteam.js +2 -2
  99. package/js/src/btcalpha.js +1 -1
  100. package/js/src/bybit.js +28 -12
  101. package/js/src/coinbase.js +12 -5
  102. package/js/src/coincheck.js +1 -1
  103. package/js/src/coinex.js +2 -2
  104. package/js/src/coinlist.js +1 -1
  105. package/js/src/coinmate.js +1 -1
  106. package/js/src/coinmetro.d.ts +1 -1
  107. package/js/src/coinmetro.js +12 -6
  108. package/js/src/coinsph.js +1 -1
  109. package/js/src/cryptocom.js +3 -3
  110. package/js/src/digifinex.js +6 -4
  111. package/js/src/exmo.js +2 -2
  112. package/js/src/gate.js +5 -5
  113. package/js/src/gemini.d.ts +1 -1
  114. package/js/src/gemini.js +3 -3
  115. package/js/src/hitbtc.js +14 -20
  116. package/js/src/hollaex.js +2 -2
  117. package/js/src/htx.js +5 -5
  118. package/js/src/huobijp.js +1 -1
  119. package/js/src/krakenfutures.js +1 -1
  120. package/js/src/kucoin.js +17 -17
  121. package/js/src/kucoinfutures.js +3 -3
  122. package/js/src/lbank.js +1 -1
  123. package/js/src/mexc.js +7 -7
  124. package/js/src/novadax.js +1 -1
  125. package/js/src/okcoin.js +2 -2
  126. package/js/src/okx.js +24 -10
  127. package/js/src/p2b.js +1 -0
  128. package/js/src/phemex.js +3 -3
  129. package/js/src/poloniexfutures.js +3 -3
  130. package/js/src/pro/alpaca.js +1 -1
  131. package/js/src/pro/binance.js +4 -4
  132. package/js/src/pro/bitget.js +1 -1
  133. package/js/src/pro/bitmart.js +1 -1
  134. package/js/src/pro/bitmex.d.ts +2 -1
  135. package/js/src/pro/bitmex.js +49 -6
  136. package/js/src/pro/bitvavo.js +1 -1
  137. package/js/src/pro/bybit.js +2 -2
  138. package/js/src/pro/cex.js +2 -2
  139. package/js/src/pro/coinbase.js +2 -2
  140. package/js/src/pro/independentreserve.js +1 -1
  141. package/js/src/pro/okx.js +1 -1
  142. package/js/src/pro/onetrading.js +2 -2
  143. package/js/src/pro/p2b.d.ts +23 -0
  144. package/js/src/pro/p2b.js +433 -0
  145. package/js/src/pro/probit.js +5 -5
  146. package/js/src/pro/whitebit.js +1 -1
  147. package/js/src/probit.js +1 -1
  148. package/js/src/timex.js +1 -1
  149. package/js/src/tokocrypto.js +3 -3
  150. package/js/src/wavesexchange.js +2 -2
  151. package/js/src/whitebit.js +2 -2
  152. package/js/src/woo.js +3 -3
  153. package/js/src/yobit.js +1 -1
  154. package/js/src/zaif.js +1 -1
  155. package/js/src/zonda.d.ts +1 -1
  156. package/js/src/zonda.js +3 -3
  157. package/package.json +1 -1
  158. package/skip-tests.json +3 -10
@@ -4256,7 +4256,7 @@ class ascendex extends _abstract_ascendex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
4256
4256
  symbol = base + '/' + quote + ':' + settle;
4257
4257
  }
4258
4258
  const fee = this.safeNumber(market, 'commissionReserveRate');
4259
- const marginTradable = this.safeValue(market, 'marginTradable', false);
4259
+ const marginTradable = this.safeBool(market, 'marginTradable', false);
4260
4260
  result.push({
4261
4261
  'id': id,
4262
4262
  'symbol': symbol,
@@ -4451,7 +4451,7 @@ class ascendex extends _abstract_ascendex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
4451
4451
  let marginMode = undefined;
4452
4452
  [marketType, params] = this.handleMarketTypeAndParams('fetchBalance', undefined, params);
4453
4453
  [marginMode, params] = this.handleMarginModeAndParams('fetchBalance', params);
4454
- const isMargin = this.safeValue(params, 'margin', false);
4454
+ const isMargin = this.safeBool(params, 'margin', false);
4455
4455
  const isCross = marginMode === 'cross';
4456
4456
  marketType = (isMargin || isCross) ? 'margin' : marketType;
4457
4457
  params = this.omit(params, 'margin');
@@ -4811,7 +4811,7 @@ class ascendex extends _abstract_ascendex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
4811
4811
  const timestamp = this.safeInteger(trade, 'ts');
4812
4812
  const priceString = this.safeString2(trade, 'price', 'p');
4813
4813
  const amountString = this.safeString(trade, 'q');
4814
- const buyerIsMaker = this.safeValue(trade, 'bm', false);
4814
+ const buyerIsMaker = this.safeBool(trade, 'bm', false);
4815
4815
  const side = buyerIsMaker ? 'sell' : 'buy';
4816
4816
  market = this.safeMarket(undefined, market);
4817
4817
  return this.safeTrade({
@@ -5155,7 +5155,7 @@ class ascendex extends _abstract_ascendex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
5155
5155
  const isLimitOrder = ((type === 'limit') || (type === 'stop_limit'));
5156
5156
  const timeInForce = this.safeString(params, 'timeInForce');
5157
5157
  const postOnly = this.isPostOnly(isMarketOrder, false, params);
5158
- const reduceOnly = this.safeValue(params, 'reduceOnly', false);
5158
+ const reduceOnly = this.safeBool(params, 'reduceOnly', false);
5159
5159
  const stopPrice = this.safeValue2(params, 'triggerPrice', 'stopPrice');
5160
5160
  if (isLimitOrder) {
5161
5161
  request['orderPrice'] = this.priceToPrecision(symbol, price);
@@ -6798,7 +6798,7 @@ class ascendex extends _abstract_ascendex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
6798
6798
  // { "code": "0" }
6799
6799
  //
6800
6800
  const transferOptions = this.safeValue(this.options, 'transfer', {});
6801
- const fillResponseFromRequest = this.safeValue(transferOptions, 'fillResponseFromRequest', true);
6801
+ const fillResponseFromRequest = this.safeBool(transferOptions, 'fillResponseFromRequest', true);
6802
6802
  const transfer = this.parseTransfer(response, currency);
6803
6803
  if (fillResponseFromRequest) {
6804
6804
  transfer['fromAccount'] = fromAccount;
@@ -8419,6 +8419,99 @@ class Exchange {
8419
8419
  // ########################################################################
8420
8420
  // ------------------------------------------------------------------------
8421
8421
  // METHODS BELOW THIS LINE ARE TRANSPILED FROM JAVASCRIPT TO PYTHON AND PHP
8422
+ safeBoolN(dictionaryOrList, keys, defaultValue = undefined) {
8423
+ /**
8424
+ * @ignore
8425
+ * @method
8426
+ * @description safely extract boolean value from dictionary or list
8427
+ * @returns {bool | undefined}
8428
+ */
8429
+ const value = this.safeValueN(dictionaryOrList, keys, defaultValue);
8430
+ if (typeof value === 'boolean') {
8431
+ return value;
8432
+ }
8433
+ return defaultValue;
8434
+ }
8435
+ safeBool2(dictionary, key1, key2, defaultValue = undefined) {
8436
+ /**
8437
+ * @ignore
8438
+ * @method
8439
+ * @description safely extract boolean value from dictionary or list
8440
+ * @returns {bool | undefined}
8441
+ */
8442
+ return this.safeBoolN(dictionary, [key1, key2], defaultValue);
8443
+ }
8444
+ safeBool(dictionary, key, defaultValue = undefined) {
8445
+ /**
8446
+ * @ignore
8447
+ * @method
8448
+ * @description safely extract boolean value from dictionary or list
8449
+ * @returns {bool | undefined}
8450
+ */
8451
+ return this.safeBoolN(dictionary, [key], defaultValue);
8452
+ }
8453
+ safeDictN(dictionaryOrList, keys, defaultValue = undefined) {
8454
+ /**
8455
+ * @ignore
8456
+ * @method
8457
+ * @description safely extract a dictionary from dictionary or list
8458
+ * @returns {object | undefined}
8459
+ */
8460
+ const value = this.safeValueN(dictionaryOrList, keys, defaultValue);
8461
+ if (typeof value === 'object') {
8462
+ return value;
8463
+ }
8464
+ return defaultValue;
8465
+ }
8466
+ safeDict(dictionary, key, defaultValue = undefined) {
8467
+ /**
8468
+ * @ignore
8469
+ * @method
8470
+ * @description safely extract a dictionary from dictionary or list
8471
+ * @returns {object | undefined}
8472
+ */
8473
+ return this.safeDictN(dictionary, [key], defaultValue);
8474
+ }
8475
+ safeDict2(dictionary, key1, key2, defaultValue = undefined) {
8476
+ /**
8477
+ * @ignore
8478
+ * @method
8479
+ * @description safely extract a dictionary from dictionary or list
8480
+ * @returns {object | undefined}
8481
+ */
8482
+ return this.safeDictN(dictionary, [key1, key2], defaultValue);
8483
+ }
8484
+ safeListN(dictionaryOrList, keys, defaultValue = undefined) {
8485
+ /**
8486
+ * @ignore
8487
+ * @method
8488
+ * @description safely extract an Array from dictionary or list
8489
+ * @returns {Array | undefined}
8490
+ */
8491
+ const value = this.safeValueN(dictionaryOrList, keys, defaultValue);
8492
+ if (Array.isArray(value)) {
8493
+ return value;
8494
+ }
8495
+ return defaultValue;
8496
+ }
8497
+ safeList2(dictionaryOrList, key1, key2, defaultValue = undefined) {
8498
+ /**
8499
+ * @ignore
8500
+ * @method
8501
+ * @description safely extract an Array from dictionary or list
8502
+ * @returns {Array | undefined}
8503
+ */
8504
+ return this.safeListN(dictionaryOrList, [key1, key2], defaultValue);
8505
+ }
8506
+ safeList(dictionaryOrList, key, defaultValue = undefined) {
8507
+ /**
8508
+ * @ignore
8509
+ * @method
8510
+ * @description safely extract an Array from dictionary or list
8511
+ * @returns {Array | undefined}
8512
+ */
8513
+ return this.safeListN(dictionaryOrList, [key], defaultValue);
8514
+ }
8422
8515
  handleDeltas(orderbook, deltas) {
8423
8516
  for (let i = 0; i < deltas.length; i++) {
8424
8517
  this.handleDelta(orderbook, deltas[i]);
@@ -8903,7 +8996,7 @@ class Exchange {
8903
8996
  fee['cost'] = this.safeNumber(fee, 'cost');
8904
8997
  }
8905
8998
  const timestamp = this.safeInteger(entry, 'timestamp');
8906
- const info = this.safeValue(entry, 'info', {});
8999
+ const info = this.safeDict(entry, 'info', {});
8907
9000
  return {
8908
9001
  'id': this.safeString(entry, 'id'),
8909
9002
  'timestamp': timestamp,
@@ -9075,7 +9168,7 @@ class Exchange {
9075
9168
  for (let i = 0; i < values.length; i++) {
9076
9169
  const market = values[i];
9077
9170
  const defaultCurrencyPrecision = (this.precisionMode === DECIMAL_PLACES) ? 8 : this.parseNumber('1e-8');
9078
- const marketPrecision = this.safeValue(market, 'precision', {});
9171
+ const marketPrecision = this.safeDict(market, 'precision', {});
9079
9172
  if ('base' in market) {
9080
9173
  const currency = this.safeCurrencyStructure({
9081
9174
  'id': this.safeString2(market, 'baseId', 'base'),
@@ -9105,7 +9198,7 @@ class Exchange {
9105
9198
  const resultingCurrencies = [];
9106
9199
  for (let i = 0; i < codes.length; i++) {
9107
9200
  const code = codes[i];
9108
- const groupedCurrenciesCode = this.safeValue(groupedCurrencies, code, []);
9201
+ const groupedCurrenciesCode = this.safeList(groupedCurrencies, code, []);
9109
9202
  let highestPrecisionCurrency = this.safeValue(groupedCurrenciesCode, 0);
9110
9203
  for (let j = 1; j < groupedCurrenciesCode.length; j++) {
9111
9204
  const currentCurrency = groupedCurrenciesCode[j];
@@ -9188,7 +9281,7 @@ class Exchange {
9188
9281
  const parseSymbol = symbol === undefined;
9189
9282
  const parseSide = side === undefined;
9190
9283
  const shouldParseFees = parseFee || parseFees;
9191
- const fees = this.safeValue(order, 'fees', []);
9284
+ const fees = this.safeList(order, 'fees', []);
9192
9285
  let trades = [];
9193
9286
  if (parseFilled || parseCost || shouldParseFees) {
9194
9287
  const rawTrades = this.safeValue(order, 'trades', trades);
@@ -9322,7 +9415,7 @@ class Exchange {
9322
9415
  }
9323
9416
  }
9324
9417
  // ensure that the average field is calculated correctly
9325
- const inverse = this.safeValue(market, 'inverse', false);
9418
+ const inverse = this.safeBool(market, 'inverse', false);
9326
9419
  const contractSize = this.numberToString(this.safeValue(market, 'contractSize', 1));
9327
9420
  // inverse
9328
9421
  // price = filled * contract size / cost
@@ -9376,12 +9469,12 @@ class Exchange {
9376
9469
  entry['amount'] = this.safeNumber(entry, 'amount');
9377
9470
  entry['price'] = this.safeNumber(entry, 'price');
9378
9471
  entry['cost'] = this.safeNumber(entry, 'cost');
9379
- const tradeFee = this.safeValue(entry, 'fee', {});
9472
+ const tradeFee = this.safeDict(entry, 'fee', {});
9380
9473
  tradeFee['cost'] = this.safeNumber(tradeFee, 'cost');
9381
9474
  if ('rate' in tradeFee) {
9382
9475
  tradeFee['rate'] = this.safeNumber(tradeFee, 'rate');
9383
9476
  }
9384
- const entryFees = this.safeValue(entry, 'fees', []);
9477
+ const entryFees = this.safeList(entry, 'fees', []);
9385
9478
  for (let j = 0; j < entryFees.length; j++) {
9386
9479
  entryFees[j]['cost'] = this.safeNumber(entryFees[j], 'cost');
9387
9480
  }
@@ -9556,7 +9649,7 @@ class Exchange {
9556
9649
  const contractSize = this.safeString(market, 'contractSize');
9557
9650
  let multiplyPrice = price;
9558
9651
  if (contractSize !== undefined) {
9559
- const inverse = this.safeValue(market, 'inverse', false);
9652
+ const inverse = this.safeBool(market, 'inverse', false);
9560
9653
  if (inverse) {
9561
9654
  multiplyPrice = _Precise_js__WEBPACK_IMPORTED_MODULE_8__/* .Precise */ .O.stringDiv('1', price);
9562
9655
  }
@@ -9799,12 +9892,12 @@ class Exchange {
9799
9892
  }
9800
9893
  convertTradingViewToOHLCV(ohlcvs, timestamp = 't', open = 'o', high = 'h', low = 'l', close = 'c', volume = 'v', ms = false) {
9801
9894
  const result = [];
9802
- const timestamps = this.safeValue(ohlcvs, timestamp, []);
9803
- const opens = this.safeValue(ohlcvs, open, []);
9804
- const highs = this.safeValue(ohlcvs, high, []);
9805
- const lows = this.safeValue(ohlcvs, low, []);
9806
- const closes = this.safeValue(ohlcvs, close, []);
9807
- const volumes = this.safeValue(ohlcvs, volume, []);
9895
+ const timestamps = this.safeList(ohlcvs, timestamp, []);
9896
+ const opens = this.safeList(ohlcvs, open, []);
9897
+ const highs = this.safeList(ohlcvs, high, []);
9898
+ const lows = this.safeList(ohlcvs, low, []);
9899
+ const closes = this.safeList(ohlcvs, close, []);
9900
+ const volumes = this.safeList(ohlcvs, volume, []);
9808
9901
  for (let i = 0; i < timestamps.length; i++) {
9809
9902
  result.push([
9810
9903
  ms ? this.safeInteger(timestamps, i) : this.safeTimestamp(timestamps, i),
@@ -9839,10 +9932,10 @@ class Exchange {
9839
9932
  async fetchWebEndpoint(method, endpointMethod, returnAsJson, startRegex = undefined, endRegex = undefined) {
9840
9933
  let errorMessage = '';
9841
9934
  const options = this.safeValue(this.options, method, {});
9842
- const muteOnFailure = this.safeValue(options, 'webApiMuteFailure', true);
9935
+ const muteOnFailure = this.safeBool(options, 'webApiMuteFailure', true);
9843
9936
  try {
9844
9937
  // if it was not explicitly disabled, then don't fetch
9845
- if (this.safeValue(options, 'webApiEnable', true) !== true) {
9938
+ if (this.safeBool(options, 'webApiEnable', true) !== true) {
9846
9939
  return undefined;
9847
9940
  }
9848
9941
  const maxRetries = this.safeValue(options, 'webApiRetries', 10);
@@ -10053,7 +10146,7 @@ class Exchange {
10053
10146
  if (currencyCode !== undefined) {
10054
10147
  const defaultNetworkCodeReplacements = this.safeValue(this.options, 'defaultNetworkCodeReplacements', {});
10055
10148
  if (currencyCode in defaultNetworkCodeReplacements) {
10056
- const replacementObject = this.safeValue(defaultNetworkCodeReplacements, currencyCode, {});
10149
+ const replacementObject = this.safeDict(defaultNetworkCodeReplacements, currencyCode, {});
10057
10150
  networkCode = this.safeString(replacementObject, networkCode, networkCode);
10058
10151
  }
10059
10152
  }
@@ -10155,7 +10248,7 @@ class Exchange {
10155
10248
  const id = this.safeString(item, marketIdKey);
10156
10249
  const market = this.safeMarket(id, undefined, undefined, 'swap');
10157
10250
  const symbol = market['symbol'];
10158
- const contract = this.safeValue(market, 'contract', false);
10251
+ const contract = this.safeBool(market, 'contract', false);
10159
10252
  if (contract && ((symbols === undefined) || this.inArray(symbol, symbols))) {
10160
10253
  tiers[symbol] = this.parseMarketLeverageTiers(item, market);
10161
10254
  }
@@ -11326,8 +11419,8 @@ class Exchange {
11326
11419
  const currency = this.currencies[code];
11327
11420
  let precision = this.safeValue(currency, 'precision');
11328
11421
  if (networkCode !== undefined) {
11329
- const networks = this.safeValue(currency, 'networks', {});
11330
- const networkItem = this.safeValue(networks, networkCode, {});
11422
+ const networks = this.safeDict(currency, 'networks', {});
11423
+ const networkItem = this.safeDict(networks, networkCode, {});
11331
11424
  precision = this.safeValue(networkItem, 'precision', precision);
11332
11425
  }
11333
11426
  if (precision === undefined) {
@@ -11629,7 +11722,7 @@ class Exchange {
11629
11722
  * @returns {Array}
11630
11723
  */
11631
11724
  const timeInForce = this.safeStringUpper(params, 'timeInForce');
11632
- let postOnly = this.safeValue(params, 'postOnly', false);
11725
+ let postOnly = this.safeBool(params, 'postOnly', false);
11633
11726
  const ioc = timeInForce === 'IOC';
11634
11727
  const fok = timeInForce === 'FOK';
11635
11728
  const po = timeInForce === 'PO';
@@ -12712,7 +12805,7 @@ class BadRequest extends ExchangeError {
12712
12805
  this.name = 'BadRequest';
12713
12806
  }
12714
12807
  }
12715
- class OperationRejected extends BadRequest {
12808
+ class OperationRejected extends ExchangeError {
12716
12809
  constructor(message) {
12717
12810
  super(message);
12718
12811
  this.name = 'OperationRejected';
@@ -12724,7 +12817,7 @@ class BadSymbol extends BadRequest {
12724
12817
  this.name = 'BadSymbol';
12725
12818
  }
12726
12819
  }
12727
- class NoChange extends BadRequest {
12820
+ class NoChange extends OperationRejected {
12728
12821
  constructor(message) {
12729
12822
  super(message);
12730
12823
  this.name = 'NoChange';
@@ -12845,7 +12938,7 @@ class DDoSProtection extends NetworkError {
12845
12938
  this.name = 'DDoSProtection';
12846
12939
  }
12847
12940
  }
12848
- class RateLimitExceeded extends DDoSProtection {
12941
+ class RateLimitExceeded extends NetworkError {
12849
12942
  constructor(message) {
12850
12943
  super(message);
12851
12944
  this.name = 'RateLimitExceeded';
@@ -14363,6 +14456,9 @@ const safeFloatN = (o, k, $default) => {
14363
14456
  return isNumber(n) ? n : $default;
14364
14457
  };
14365
14458
  const safeIntegerN = (o, k, $default) => {
14459
+ if (o === undefined) {
14460
+ return $default;
14461
+ }
14366
14462
  const n = asInteger(getValueFromKeysInArray(o, k));
14367
14463
  return isNumber(n) ? n : $default;
14368
14464
  };
@@ -14375,14 +14471,23 @@ const safeTimestampN = (o, k, $default) => {
14375
14471
  return isNumber(n) ? parseInt(n * 1000) : $default;
14376
14472
  };
14377
14473
  const safeValueN = (o, k, $default) => {
14474
+ if (o === undefined) {
14475
+ return $default;
14476
+ }
14378
14477
  const x = getValueFromKeysInArray(o, k);
14379
14478
  return hasProps(x) ? x : $default;
14380
14479
  };
14381
14480
  const safeStringN = (o, k, $default) => {
14481
+ if (o === undefined) {
14482
+ return $default;
14483
+ }
14382
14484
  const x = getValueFromKeysInArray(o, k);
14383
14485
  return isStringCoercible(x) ? String(x) : $default;
14384
14486
  };
14385
14487
  const safeStringLowerN = (o, k, $default) => {
14488
+ if (o === undefined) {
14489
+ return $default;
14490
+ }
14386
14491
  const x = getValueFromKeysInArray(o, k);
14387
14492
  return isStringCoercible(x) ? String(x).toLowerCase() : $default;
14388
14493
  };
@@ -17019,7 +17124,7 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
17019
17124
  const requestSide = isBuy ? 'BID' : 'ASK';
17020
17125
  let uppercaseType = type.toUpperCase();
17021
17126
  const isLimit = uppercaseType === 'LIMIT';
17022
- const exchangeSpecificParam = this.safeValue(params, 'post_only', false);
17127
+ const exchangeSpecificParam = this.safeBool(params, 'post_only', false);
17023
17128
  let postOnly = undefined;
17024
17129
  [postOnly, params] = this.handlePostOnly((uppercaseType === 'MARKET'), exchangeSpecificParam, params);
17025
17130
  const triggerPrice = this.safeStringN(params, ['triggerPrice', 'stopPrice', 'stop_price']);
@@ -17651,7 +17756,7 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
17651
17756
  //
17652
17757
  const transfer = this.parseTransfer(response, currency);
17653
17758
  const transferOptions = this.safeValue(this.options, 'transfer', {});
17654
- const fillResponseFromRequest = this.safeValue(transferOptions, 'fillResponseFromRequest', true);
17759
+ const fillResponseFromRequest = this.safeBool(transferOptions, 'fillResponseFromRequest', true);
17655
17760
  if (fillResponseFromRequest) {
17656
17761
  transfer['fromAccount'] = fromAccount;
17657
17762
  transfer['toAccount'] = toAccount;
@@ -19209,234 +19314,885 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
19209
19314
  'BUSD': 'USD',
19210
19315
  },
19211
19316
  },
19212
- // https://binance-docs.github.io/apidocs/spot/en/#error-codes-2
19213
19317
  'exceptions': {
19318
+ 'spot': {
19319
+ // https://binance-docs.github.io/apidocs/spot/en/#error-codes
19320
+ 'exact': {
19321
+ '-1000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19322
+ '-1001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19323
+ '-1002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19324
+ '-1003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19325
+ '-1004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19326
+ '-1006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19327
+ '-1007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RequestTimeout,
19328
+ '-1008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19329
+ '-1010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19330
+ '-1013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19331
+ '-1014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19332
+ '-1015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19333
+ '-1016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19334
+ '-1020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19335
+ '-1021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidNonce,
19336
+ '-1022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19337
+ '-1099': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19338
+ '-1100': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19339
+ '-1101': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19340
+ '-1102': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19341
+ '-1103': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19342
+ '-1104': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19343
+ '-1105': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19344
+ '-1106': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19345
+ '-1108': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19346
+ '-1111': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19347
+ '-1112': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19348
+ '-1114': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19349
+ '-1115': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19350
+ '-1116': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19351
+ '-1117': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19352
+ '-1118': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19353
+ '-1119': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19354
+ '-1120': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19355
+ '-1121': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19356
+ '-1125': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19357
+ '-1127': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19358
+ '-1128': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19359
+ '-1130': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19360
+ '-1131': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19361
+ '-1134': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19362
+ '-1135': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19363
+ '-1145': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19364
+ '-1151': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19365
+ '-2008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19366
+ '-2010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19367
+ '-2011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
19368
+ '-2013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
19369
+ '-2014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19370
+ '-2015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19371
+ '-2016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19372
+ '-2021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadResponse,
19373
+ '-2022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadResponse,
19374
+ '-2026': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19375
+ // 3xxx errors are available only for spot
19376
+ '-3000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19377
+ '-3001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19378
+ '-3002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19379
+ '-3003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19380
+ '-3004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19381
+ '-3005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19382
+ '-3006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19383
+ '-3007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19384
+ '-3008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19385
+ '-3009': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19386
+ '-3010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19387
+ '-3011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19388
+ '-3012': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19389
+ '-3013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19390
+ '-3014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AccountSuspended,
19391
+ '-3015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19392
+ '-3016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19393
+ '-3017': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19394
+ '-3018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AccountSuspended,
19395
+ '-3019': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AccountSuspended,
19396
+ '-3020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19397
+ '-3021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19398
+ '-3022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AccountSuspended,
19399
+ '-3023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19400
+ '-3024': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19401
+ '-3025': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19402
+ '-3026': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19403
+ '-3027': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19404
+ '-3028': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19405
+ '-3029': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19406
+ '-3036': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AccountSuspended,
19407
+ '-3037': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19408
+ '-3038': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19409
+ '-3041': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19410
+ '-3042': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19411
+ '-3043': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19412
+ '-3044': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19413
+ '-3045': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19414
+ '-3999': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19415
+ '-4001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19416
+ '-4002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19417
+ '-4003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19418
+ '-4004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19419
+ '-4005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19420
+ '-4006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19421
+ '-4007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19422
+ '-4008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19423
+ '-4009': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19424
+ '-4010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19425
+ '-4011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19426
+ '-4012': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19427
+ '-4013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19428
+ '-4014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19429
+ '-4015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19430
+ '-4016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19431
+ '-4017': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19432
+ '-4018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19433
+ '-4019': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19434
+ '-4021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19435
+ '-4022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19436
+ '-4023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19437
+ '-4024': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19438
+ '-4025': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19439
+ '-4026': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19440
+ '-4027': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19441
+ '-4028': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19442
+ '-4029': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19443
+ '-4030': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadResponse,
19444
+ '-4031': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19445
+ '-4032': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19446
+ '-4033': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19447
+ '-4034': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19448
+ '-4035': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19449
+ '-4036': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19450
+ '-4037': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19451
+ '-4038': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19452
+ '-4039': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19453
+ '-4040': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19454
+ '-4041': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19455
+ '-4042': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19456
+ '-4043': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19457
+ '-4044': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19458
+ '-4045': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19459
+ '-4046': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19460
+ '-4047': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19461
+ '-4060': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19462
+ '-5001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19463
+ '-5002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19464
+ '-5003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19465
+ '-5004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19466
+ '-5005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19467
+ '-5006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19468
+ '-5007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19469
+ '-5008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19470
+ '-5009': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19471
+ '-5010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19472
+ '-5011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19473
+ '-5012': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19474
+ '-5013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19475
+ '-5021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19476
+ '-5022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19477
+ '-6001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19478
+ '-6003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19479
+ '-6004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19480
+ '-6005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19481
+ '-6006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19482
+ '-6007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19483
+ '-6008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19484
+ '-6009': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19485
+ '-6011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19486
+ '-6012': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19487
+ '-6013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadResponse,
19488
+ '-6014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19489
+ '-6015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19490
+ '-6016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19491
+ '-6017': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19492
+ '-6018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19493
+ '-6019': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19494
+ '-6020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19495
+ '-7001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19496
+ '-7002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19497
+ '-10001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19498
+ '-10002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19499
+ '-10005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadResponse,
19500
+ '-10007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19501
+ '-10008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19502
+ '-10009': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19503
+ '-10010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19504
+ '-10011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19505
+ '-10012': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19506
+ '-10013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19507
+ '-10015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19508
+ '-10016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19509
+ '-10017': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19510
+ '-10018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19511
+ '-10019': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19512
+ '-10020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19513
+ '-10021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19514
+ '-10022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19515
+ '-10023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19516
+ '-10024': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19517
+ '-10025': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19518
+ '-10026': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19519
+ '-10028': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19520
+ '-10029': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19521
+ '-10030': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19522
+ '-10031': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19523
+ '-10032': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19524
+ '-10034': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19525
+ '-10039': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19526
+ '-10040': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19527
+ '-10041': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19528
+ '-10042': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19529
+ '-10043': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19530
+ '-10044': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19531
+ '-10045': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19532
+ '-10046': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19533
+ '-10047': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19534
+ '-11008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19535
+ '-12014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19536
+ // BLVT
19537
+ '-13000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19538
+ '-13001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19539
+ '-13002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19540
+ '-13003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19541
+ '-13004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19542
+ '-13005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19543
+ '-13006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19544
+ '-13007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19545
+ // 18xxx - BINANCE CODE
19546
+ '-18002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19547
+ '-18003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19548
+ '-18004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19549
+ '-18005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19550
+ '-18006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19551
+ '-18007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19552
+ // spot & futures algo (TBD for OPTIONS & PORTFOLIO MARGIN)
19553
+ '-20121': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19554
+ '-20124': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19555
+ '-20130': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19556
+ '-20132': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19557
+ '-20194': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19558
+ '-20195': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19559
+ '-20196': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19560
+ '-20198': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19561
+ '-20204': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19562
+ // 21xxx - PORTFOLIO MARGIN
19563
+ '-21001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19564
+ '-21002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19565
+ '-21003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadResponse,
19566
+ '-21004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19567
+ '-21005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19568
+ '-21006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19569
+ '-21007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19570
+ '-32603': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19571
+ '400002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19572
+ '100001003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19573
+ '200003903': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError, // undocumented, {"code":200003903,"msg":"Your identity verification has been rejected. Please complete identity verification again."}
19574
+ },
19575
+ },
19576
+ 'linear': {
19577
+ // https://binance-docs.github.io/apidocs/futures/en/#error-codes
19578
+ 'exact': {
19579
+ '-1000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19580
+ '-1001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19581
+ '-1002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19582
+ '-1003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19583
+ '-1004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19584
+ '-1005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19585
+ '-1006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19586
+ '-1007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RequestTimeout,
19587
+ '-1008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19588
+ '-1010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19589
+ '-1011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19590
+ '-1013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19591
+ '-1014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19592
+ '-1015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19593
+ '-1016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19594
+ '-1020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19595
+ '-1021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidNonce,
19596
+ '-1022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19597
+ '-1023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19598
+ '-1099': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19599
+ '-1100': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19600
+ '-1101': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19601
+ '-1102': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19602
+ '-1103': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19603
+ '-1104': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19604
+ '-1105': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19605
+ '-1106': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19606
+ '-1108': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19607
+ '-1109': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19608
+ '-1110': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19609
+ '-1111': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19610
+ '-1112': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19611
+ '-1113': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19612
+ '-1114': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19613
+ '-1115': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19614
+ '-1116': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19615
+ '-1117': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19616
+ '-1118': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19617
+ '-1119': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19618
+ '-1120': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19619
+ '-1121': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19620
+ '-1122': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19621
+ '-1125': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19622
+ '-1126': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19623
+ '-1127': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19624
+ '-1128': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19625
+ '-1130': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19626
+ '-1136': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19627
+ '-2010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
19628
+ '-2011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
19629
+ '-2012': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19630
+ '-2013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
19631
+ '-2014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19632
+ '-2015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19633
+ '-2016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19634
+ '-2017': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19635
+ '-2018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19636
+ '-2019': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19637
+ '-2020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19638
+ '-2021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderImmediatelyFillable,
19639
+ '-2022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19640
+ '-2023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19641
+ '-2024': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19642
+ '-2025': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19643
+ '-2026': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19644
+ '-2027': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19645
+ '-2028': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19646
+ '-4000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19647
+ '-4001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19648
+ '-4002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19649
+ '-4003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19650
+ '-4004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19651
+ '-4005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19652
+ '-4006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19653
+ '-4007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19654
+ '-4008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19655
+ '-4009': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19656
+ '-4010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19657
+ '-4011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19658
+ '-4012': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19659
+ '-4013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19660
+ '-4014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19661
+ '-4015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19662
+ '-4016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19663
+ '-4017': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19664
+ '-4018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19665
+ '-4019': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19666
+ '-4020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19667
+ '-4021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19668
+ '-4022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19669
+ '-4023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19670
+ '-4024': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19671
+ '-4025': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19672
+ '-4026': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19673
+ '-4027': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19674
+ '-4028': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19675
+ '-4029': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19676
+ '-4030': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19677
+ '-4031': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19678
+ '-4032': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19679
+ '-4033': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19680
+ '-4044': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19681
+ '-4045': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19682
+ '-4046': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19683
+ '-4047': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19684
+ '-4048': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19685
+ '-4049': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19686
+ '-4050': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19687
+ '-4051': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19688
+ '-4052': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19689
+ '-4053': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19690
+ '-4054': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19691
+ '-4055': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19692
+ '-4056': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19693
+ '-4057': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19694
+ '-4058': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19695
+ '-4059': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19696
+ '-4060': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19697
+ '-4061': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19698
+ '-4062': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19699
+ '-4063': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19700
+ '-4064': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19701
+ '-4065': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19702
+ '-4066': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19703
+ '-4067': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19704
+ '-4068': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19705
+ '-4069': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19706
+ '-4070': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19707
+ '-4071': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19708
+ '-4072': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19709
+ '-4073': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19710
+ '-4074': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19711
+ '-4075': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19712
+ '-4076': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19713
+ '-4077': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19714
+ '-4078': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19715
+ '-4079': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19716
+ '-4080': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19717
+ '-4081': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19718
+ '-4082': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19719
+ '-4083': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19720
+ '-4084': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19721
+ '-4085': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19722
+ '-4086': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19723
+ '-4087': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19724
+ '-4088': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19725
+ '-4104': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19726
+ '-4114': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19727
+ '-4115': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19728
+ '-4118': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19729
+ '-4131': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19730
+ '-4135': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19731
+ '-4137': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19732
+ '-4138': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19733
+ '-4139': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19734
+ '-4140': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19735
+ '-4141': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19736
+ '-4142': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderImmediatelyFillable,
19737
+ '-4144': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19738
+ '-4164': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19739
+ '-4165': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19740
+ '-4167': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19741
+ '-4168': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19742
+ '-4169': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19743
+ '-4170': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19744
+ '-4171': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19745
+ '-4172 ': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19746
+ '-4183': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19747
+ '-4184': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19748
+ '-4192': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19749
+ '-4202': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19750
+ '-4203': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19751
+ '-4205': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19752
+ '-4206': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19753
+ '-4208': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19754
+ '-4209': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19755
+ '-4210': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19756
+ '-4211': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19757
+ '-4400': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19758
+ '-4401': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19759
+ '-4402': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19760
+ '-4403': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19761
+ '-5021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFillable,
19762
+ '-5022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFillable,
19763
+ '-5024': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19764
+ '-5025': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19765
+ '-5026': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19766
+ '-5027': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19767
+ '-5028': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19768
+ '-5037': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19769
+ '-5038': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19770
+ '-5039': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19771
+ '-5040': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19772
+ '-5041': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19773
+ //
19774
+ // spot & futures algo (TBD for OPTIONS & PORTFOLIO MARGIN)
19775
+ //
19776
+ '-20121': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19777
+ '-20124': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19778
+ '-20130': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19779
+ '-20132': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19780
+ '-20194': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19781
+ '-20195': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19782
+ '-20196': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19783
+ '-20198': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19784
+ '-20204': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest, // The notional of USD is less or more than the limit.
19785
+ },
19786
+ },
19787
+ 'inverse': {
19788
+ // https://binance-docs.github.io/apidocs/delivery/en/#error-codes
19789
+ 'exact': {
19790
+ '-1000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19791
+ '-1001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19792
+ '-1002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19793
+ '-1003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19794
+ '-1004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19795
+ '-1005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19796
+ '-1006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19797
+ '-1007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RequestTimeout,
19798
+ '-1010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19799
+ '-1011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19800
+ '-1013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19801
+ '-1014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19802
+ '-1015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19803
+ '-1016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19804
+ '-1020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19805
+ '-1021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidNonce,
19806
+ '-1022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19807
+ '-1023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19808
+ '-1100': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19809
+ '-1101': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19810
+ '-1102': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19811
+ '-1103': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19812
+ '-1104': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19813
+ '-1105': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19814
+ '-1106': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19815
+ '-1108': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19816
+ '-1109': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19817
+ '-1110': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19818
+ '-1111': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19819
+ '-1112': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19820
+ '-1113': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19821
+ '-1114': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19822
+ '-1115': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19823
+ '-1116': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19824
+ '-1117': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19825
+ '-1118': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19826
+ '-1119': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19827
+ '-1120': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19828
+ '-1121': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19829
+ '-1125': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19830
+ '-1127': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19831
+ '-1128': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19832
+ '-1130': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19833
+ '-1136': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19834
+ '-2010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19835
+ '-2011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
19836
+ '-2013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
19837
+ '-2014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19838
+ '-2015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19839
+ '-2016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19840
+ '-2018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19841
+ '-2019': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19842
+ '-2020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19843
+ '-2021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderImmediatelyFillable,
19844
+ '-2022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19845
+ '-2023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19846
+ '-2024': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19847
+ '-2025': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19848
+ '-2026': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19849
+ '-2027': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19850
+ '-2028': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19851
+ '-4000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19852
+ '-4001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19853
+ '-4002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19854
+ '-4003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19855
+ '-4004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19856
+ '-4005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19857
+ '-4006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19858
+ '-4007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19859
+ '-4008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19860
+ '-4009': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19861
+ '-4010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19862
+ '-4011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19863
+ '-4012': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19864
+ '-4013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19865
+ '-4014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19866
+ '-4015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19867
+ '-4016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19868
+ '-4017': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19869
+ '-4018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19870
+ '-4019': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19871
+ '-4020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19872
+ '-4021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19873
+ '-4022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19874
+ '-4023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19875
+ '-4024': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19876
+ '-4025': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19877
+ '-4026': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19878
+ '-4027': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19879
+ '-4028': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19880
+ '-4029': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19881
+ '-4030': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19882
+ '-4031': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19883
+ '-4032': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19884
+ '-4033': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19885
+ '-4044': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19886
+ '-4045': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19887
+ '-4046': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19888
+ '-4047': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19889
+ '-4048': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19890
+ '-4049': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19891
+ '-4050': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19892
+ '-4051': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19893
+ '-4052': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19894
+ '-4053': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19895
+ '-4054': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19896
+ '-4055': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19897
+ '-4056': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19898
+ '-4057': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19899
+ '-4058': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19900
+ '-4059': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19901
+ '-4060': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19902
+ '-4061': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19903
+ '-4062': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19904
+ //
19905
+ '-4067': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19906
+ '-4068': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19907
+ '-4082': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19908
+ '-4083': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19909
+ '-4084': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19910
+ '-4086': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19911
+ '-4087': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19912
+ '-4088': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19913
+ '-4089': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19914
+ '-4090': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19915
+ '-4104': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19916
+ '-4110': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19917
+ '-4111': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19918
+ '-4112': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19919
+ '-4113': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19920
+ '-4135': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19921
+ '-4137': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19922
+ '-4138': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19923
+ '-4139': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19924
+ '-4142': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderImmediatelyFillable,
19925
+ '-4150': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19926
+ '-4151': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19927
+ '-4152': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19928
+ '-4154': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19929
+ '-4155': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19930
+ '-4178': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19931
+ '-4192': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19932
+ '-4194': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19933
+ '-4195': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19934
+ '-4196': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19935
+ '-4197': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19936
+ '-4198': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19937
+ '-4199': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19938
+ '-4200': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19939
+ '-4201': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19940
+ '-4202': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19941
+ '-4188': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19942
+ //
19943
+ // spot & futures algo
19944
+ //
19945
+ '-20121': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19946
+ '-20124': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19947
+ '-20130': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19948
+ '-20132': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19949
+ '-20194': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19950
+ '-20195': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19951
+ '-20196': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19952
+ '-20198': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19953
+ '-20204': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest, // The notional of USD is less or more than the limit.
19954
+ },
19955
+ },
19956
+ 'option': {
19957
+ // https://binance-docs.github.io/apidocs/voptions/en/#error-codes
19958
+ 'exact': {
19959
+ '-1000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19960
+ '-1001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19961
+ '-1002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19962
+ '-1008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19963
+ '-1014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19964
+ '-1015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19965
+ '-1016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19966
+ '-1020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19967
+ '-1021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidNonce,
19968
+ '-1022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19969
+ '-1100': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19970
+ '-1101': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19971
+ '-1102': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19972
+ '-1103': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19973
+ '-1104': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19974
+ '-1105': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19975
+ '-1106': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19976
+ '-1111': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19977
+ '-1115': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19978
+ '-1116': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19979
+ '-1117': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19980
+ '-1118': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19981
+ '-1119': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19982
+ '-1120': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19983
+ '-1121': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19984
+ '-1125': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19985
+ '-1127': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19986
+ '-1128': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19987
+ '-1129': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19988
+ '-1130': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19989
+ '-1131': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19990
+ '-2010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19991
+ '-2013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
19992
+ '-2014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19993
+ '-2015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19994
+ '-2018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19995
+ '-2027': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19996
+ '-3029': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19997
+ '-4001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19998
+ '-4002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19999
+ '-4003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20000
+ '-4004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20001
+ '-4005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20002
+ '-4013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20003
+ '-4029': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20004
+ '-4030': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20005
+ '-4055': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest, // AMOUNT_MUST_BE_POSITIVE
20006
+ },
20007
+ },
20008
+ 'portfolioMargin': {
20009
+ 'exact': {
20010
+ '-1000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
20011
+ '-1001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
20012
+ '-1002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
20013
+ '-1003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
20014
+ '-1004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20015
+ '-1005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
20016
+ '-1006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
20017
+ '-1007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RequestTimeout,
20018
+ '-1010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
20019
+ '-1011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
20020
+ '-1013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
20021
+ '-1014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
20022
+ '-1015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
20023
+ '-1016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20024
+ '-1020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20025
+ '-1021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidNonce,
20026
+ '-1022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
20027
+ '-1023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20028
+ '-1100': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20029
+ '-1101': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20030
+ '-1102': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20031
+ '-1103': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20032
+ '-1104': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20033
+ '-1105': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20034
+ '-1106': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20035
+ '-1108': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
20036
+ '-1109': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20037
+ '-1110': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
20038
+ '-1111': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20039
+ '-1112': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
20040
+ '-1113': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20041
+ '-1114': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20042
+ '-1115': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20043
+ '-1116': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20044
+ '-1117': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20045
+ '-1118': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20046
+ '-1119': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20047
+ '-1120': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20048
+ '-1121': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
20049
+ '-1125': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
20050
+ '-1127': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20051
+ '-1128': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20052
+ '-1130': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20053
+ '-1136': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20054
+ '-2010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
20055
+ '-2011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
20056
+ '-2013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
20057
+ '-2014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
20058
+ '-2015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
20059
+ '-2016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20060
+ '-2018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
20061
+ '-2019': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
20062
+ '-2020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFillable,
20063
+ '-2021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderImmediatelyFillable,
20064
+ '-2022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
20065
+ '-2023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
20066
+ '-2024': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20067
+ '-2025': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20068
+ '-2026': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
20069
+ '-2027': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20070
+ '-2028': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20071
+ '-4000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
20072
+ '-4001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20073
+ '-4002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20074
+ '-4003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20075
+ '-4004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20076
+ '-4005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20077
+ '-4006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20078
+ '-4007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20079
+ '-4008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20080
+ '-4009': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20081
+ '-4010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20082
+ '-4011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20083
+ '-4012': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20084
+ '-4013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20085
+ '-4014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20086
+ '-4015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20087
+ '-4016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20088
+ '-4017': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20089
+ '-4018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20090
+ '-4019': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20091
+ '-4020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20092
+ '-4021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20093
+ '-4022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20094
+ '-4023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20095
+ '-4024': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20096
+ '-4025': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20097
+ '-4026': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20098
+ '-4027': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20099
+ '-4028': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20100
+ '-4029': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20101
+ '-4030': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20102
+ '-4031': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20103
+ '-4032': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20104
+ '-4033': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20105
+ '-4044': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20106
+ '-4045': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20107
+ '-4046': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20108
+ '-4047': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20109
+ '-4048': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20110
+ '-4049': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20111
+ '-4050': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
20112
+ '-4051': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
20113
+ '-4052': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20114
+ '-4053': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20115
+ '-4054': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20116
+ '-4055': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20117
+ '-4056': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
20118
+ '-4057': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
20119
+ '-4058': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20120
+ '-4059': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20121
+ '-4060': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20122
+ '-4061': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20123
+ '-4062': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20124
+ '-4063': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20125
+ '-4064': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20126
+ '-4065': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20127
+ '-4066': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20128
+ '-4067': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20129
+ '-4068': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20130
+ '-4069': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20131
+ '-4070': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20132
+ '-4071': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20133
+ '-4072': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20134
+ '-4073': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20135
+ '-4074': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20136
+ '-4075': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20137
+ '-4076': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20138
+ '-4077': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20139
+ '-4078': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
20140
+ '-4079': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20141
+ '-4080': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
20142
+ '-4081': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20143
+ '-4082': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20144
+ '-4083': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
20145
+ '-4084': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20146
+ '-4085': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20147
+ '-4086': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20148
+ '-4087': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
20149
+ '-4088': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
20150
+ '-4104': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20151
+ '-4114': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20152
+ '-4115': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20153
+ '-4118': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20154
+ '-4131': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20155
+ '-4135': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20156
+ '-4137': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20157
+ '-4138': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20158
+ '-4139': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20159
+ '-4140': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20160
+ '-4141': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20161
+ '-4142': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderImmediatelyFillable,
20162
+ '-4144': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
20163
+ '-4161': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20164
+ '-4164': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20165
+ '-4165': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20166
+ '-4183': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20167
+ '-4184': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20168
+ '-5021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFillable,
20169
+ '-5022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFillable, // Due to the order could not be executed as maker, the Post Only order will be rejected.
20170
+ },
20171
+ },
19214
20172
  'exact': {
19215
20173
  'System is under maintenance.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OnMaintenance,
19216
- 'System abnormality': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
20174
+ 'System abnormality': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationFailed,
19217
20175
  'You are not authorized to execute this request.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19218
20176
  'API key does not exist': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19219
20177
  'Order would trigger immediately.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderImmediatelyFillable,
19220
20178
  'Stop price would trigger immediately.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderImmediatelyFillable,
19221
20179
  'Order would immediately match and take.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderImmediatelyFillable,
19222
20180
  'Account has insufficient balance for requested action.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19223
- 'Rest API trading is not enabled.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeNotAvailable,
19224
- 'This account may not place or cancel orders.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeNotAvailable,
20181
+ 'Rest API trading is not enabled.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
20182
+ 'This account may not place or cancel orders.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19225
20183
  "You don't have permission.": _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19226
- 'Market is closed.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeNotAvailable,
19227
- 'Too many requests. Please try again later.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.DDoSProtection,
20184
+ 'Market is closed.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
20185
+ 'Too many requests. Please try again later.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19228
20186
  'This action is disabled on this account.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AccountSuspended,
19229
20187
  'Limit orders require GTC for this phase.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19230
20188
  'This order type is not possible in this trading phase.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19231
- 'This type of sub-account exceeds the maximum number limit': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
20189
+ 'This type of sub-account exceeds the maximum number limit': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OperationRejected,
19232
20190
  'This symbol is restricted for this account.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19233
- 'This symbol is not permitted for this account.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19234
- '-1000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeNotAvailable,
19235
- '-1001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeNotAvailable,
19236
- '-1002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19237
- '-1003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19238
- '-1004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.DDoSProtection,
19239
- '-1005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19240
- '-1006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadResponse,
19241
- '-1007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RequestTimeout,
19242
- '-1010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadResponse,
19243
- '-1011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19244
- '-1013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19245
- '-1014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19246
- '-1015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19247
- '-1016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeNotAvailable,
19248
- '-1020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19249
- '-1021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidNonce,
19250
- '-1022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19251
- '-1023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19252
- '-1099': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19253
- '-1100': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19254
- '-1101': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19255
- '-1102': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19256
- '-1103': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19257
- '-1104': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19258
- '-1105': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19259
- '-1106': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19260
- '-1108': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19261
- '-1109': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19262
- '-1110': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19263
- '-1111': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19264
- '-1112': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19265
- '-1113': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19266
- '-1114': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19267
- '-1115': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19268
- '-1116': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19269
- '-1117': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19270
- '-1118': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19271
- '-1119': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19272
- '-1120': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19273
- '-1121': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19274
- '-1125': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19275
- '-1127': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19276
- '-1128': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19277
- '-1130': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19278
- '-1131': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19279
- '-1135': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19280
- '-1136': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19281
- '-2008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19282
- '-2010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19283
- '-2011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
19284
- '-2013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
19285
- '-2014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19286
- '-2015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19287
- '-2016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19288
- '-2018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19289
- '-2019': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19290
- '-2020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFillable,
19291
- '-2021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderImmediatelyFillable,
19292
- '-2022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19293
- '-2023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19294
- '-2024': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19295
- '-2025': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19296
- '-2026': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19297
- '-2027': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19298
- '-2028': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19299
- '-3000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19300
- '-3001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19301
- '-3002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19302
- '-3003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19303
- '-3004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19304
- '-3005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19305
- '-3006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19306
- '-3007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19307
- '-3008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19308
- '-3009': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19309
- '-3010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19310
- '-3011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19311
- '-3012': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19312
- '-3013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19313
- '-3014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AccountSuspended,
19314
- '-3015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19315
- '-3016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19316
- '-3017': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19317
- '-3018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AccountSuspended,
19318
- '-3019': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AccountSuspended,
19319
- '-3020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19320
- '-3021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19321
- '-3022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AccountSuspended,
19322
- '-3023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19323
- '-3024': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19324
- '-3025': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19325
- '-3026': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19326
- '-3027': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19327
- '-3028': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19328
- '-3029': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19329
- '-3036': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AccountSuspended,
19330
- '-3037': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19331
- '-3038': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19332
- '-3041': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19333
- '-3042': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19334
- '-3043': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19335
- '-3044': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.DDoSProtection,
19336
- '-3045': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19337
- '-3999': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19338
- '-4001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19339
- '-4002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19340
- '-4003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19341
- '-4004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19342
- '-4005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19343
- '-4006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19344
- '-4007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19345
- '-4008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19346
- '-4010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19347
- '-4011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19348
- '-4012': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19349
- '-4013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19350
- '-4014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19351
- '-4015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19352
- '-4016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19353
- '-4017': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19354
- '-4018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19355
- '-4019': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
19356
- '-4021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19357
- '-4022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19358
- '-4023': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19359
- '-4024': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19360
- '-4025': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19361
- '-4026': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19362
- '-4027': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19363
- '-4028': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19364
- '-4029': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19365
- '-4030': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19366
- '-4031': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19367
- '-4032': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19368
- '-4033': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19369
- '-4034': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19370
- '-4035': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19371
- '-4036': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19372
- '-4037': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19373
- '-4038': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19374
- '-4039': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19375
- '-4040': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19376
- '-4041': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19377
- '-4042': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19378
- '-4043': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19379
- '-4044': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19380
- '-4045': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19381
- '-4046': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19382
- '-4047': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19383
- '-4054': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19384
- '-4164': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19385
- '-5001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19386
- '-5002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19387
- '-5003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19388
- '-5004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19389
- '-5005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19390
- '-5006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19391
- '-5007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19392
- '-5008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19393
- '-5009': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19394
- '-5010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19395
- '-5011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19396
- '-5012': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19397
- '-5013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19398
- '-5021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19399
- '-6001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19400
- '-6003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19401
- '-6004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19402
- '-6005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19403
- '-6006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19404
- '-6007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19405
- '-6008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19406
- '-6009': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19407
- '-6011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19408
- '-6012': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19409
- '-6013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
19410
- '-6014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19411
- '-6015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19412
- '-6016': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19413
- '-6017': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19414
- '-6018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19415
- '-6019': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19416
- '-6020': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19417
- '-7001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19418
- '-7002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19419
- '-9000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19420
- '-10017': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19421
- '-11008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
19422
- '-12014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.RateLimitExceeded,
19423
- '-13000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19424
- '-13001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19425
- '-13002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19426
- '-13003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19427
- '-13004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19428
- '-13005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19429
- '-13006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
19430
- '-13007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19431
- '-21001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19432
- '-21002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19433
- '-21003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
19434
- '100001003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
19435
- '200003903': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError, // {"code":200003903,"msg":"Your identity verification has been rejected. Please complete identity verification again."}
20191
+ 'This symbol is not permitted for this account.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied, // {"code":-2010,"msg":"This symbol is not permitted for this account."}
19436
20192
  },
19437
20193
  'broad': {
19438
20194
  'has no operation privilege': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
19439
- 'MAX_POSITION': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder, // {"code":-2010,"msg":"Filter failure: MAX_POSITION"}
20195
+ 'MAX_POSITION': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest, // {"code":-2010,"msg":"Filter failure: MAX_POSITION"}
19440
20196
  },
19441
20197
  },
19442
20198
  });
@@ -20149,7 +20905,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
20149
20905
  }
20150
20906
  }
20151
20907
  }
20152
- const isMarginTradingAllowed = this.safeValue(market, 'isMarginTradingAllowed', false);
20908
+ const isMarginTradingAllowed = this.safeBool(market, 'isMarginTradingAllowed', false);
20153
20909
  let unifiedType = undefined;
20154
20910
  if (spot) {
20155
20911
  unifiedType = 'spot';
@@ -20888,7 +21644,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
20888
21644
  response = await this.dapiPublicGetTicker24hr(this.extend(request, params));
20889
21645
  }
20890
21646
  else {
20891
- const rolling = this.safeValue(params, 'rolling', false);
21647
+ const rolling = this.safeBool(params, 'rolling', false);
20892
21648
  params = this.omit(params, 'rolling');
20893
21649
  if (rolling) {
20894
21650
  response = await this.publicGetTicker(this.extend(request, params));
@@ -22341,7 +23097,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
22341
23097
  }
22342
23098
  // support for testing orders
22343
23099
  if (market['spot'] || marketType === 'margin') {
22344
- const test = this.safeValue(query, 'test', false);
23100
+ const test = this.safeBool(query, 'test', false);
22345
23101
  if (test) {
22346
23102
  method += 'Test';
22347
23103
  }
@@ -23523,7 +24279,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
23523
24279
  let response = undefined;
23524
24280
  const request = {};
23525
24281
  const legalMoney = this.safeValue(this.options, 'legalMoney', {});
23526
- const fiatOnly = this.safeValue(params, 'fiat', false);
24282
+ const fiatOnly = this.safeBool(params, 'fiat', false);
23527
24283
  params = this.omit(params, 'fiatOnly');
23528
24284
  const until = this.safeInteger(params, 'until');
23529
24285
  params = this.omit(params, 'until');
@@ -23635,7 +24391,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
23635
24391
  return await this.fetchPaginatedCallDynamic('fetchWithdrawals', code, since, limit, params);
23636
24392
  }
23637
24393
  const legalMoney = this.safeValue(this.options, 'legalMoney', {});
23638
- const fiatOnly = this.safeValue(params, 'fiat', false);
24394
+ const fiatOnly = this.safeBool(params, 'fiat', false);
23639
24395
  params = this.omit(params, 'fiatOnly');
23640
24396
  const request = {};
23641
24397
  const until = this.safeInteger(params, 'until');
@@ -26574,6 +27330,30 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
26574
27330
  }
26575
27331
  return { 'url': url, 'method': method, 'body': body, 'headers': headers };
26576
27332
  }
27333
+ getExceptionsByUrl(url, exactOrBroad) {
27334
+ let marketType = undefined;
27335
+ const hostname = (this.hostname !== undefined) ? this.hostname : 'binance.com';
27336
+ if (url.startsWith('https://api.' + hostname + '/')) {
27337
+ marketType = 'spot';
27338
+ }
27339
+ else if (url.startsWith('https://dapi.' + hostname + '/')) {
27340
+ marketType = 'inverse';
27341
+ }
27342
+ else if (url.startsWith('https://fapi.' + hostname + '/')) {
27343
+ marketType = 'linear';
27344
+ }
27345
+ else if (url.startsWith('https://eapi.' + hostname + '/')) {
27346
+ marketType = 'option';
27347
+ }
27348
+ else if (url.startsWith('https://papi.' + hostname + '/')) {
27349
+ marketType = 'portfoliomargin';
27350
+ }
27351
+ if (marketType !== undefined) {
27352
+ const exceptionsForMarketType = this.safeValue(this.exceptions, marketType, {});
27353
+ return this.safeValue(exceptionsForMarketType, exactOrBroad, {});
27354
+ }
27355
+ return {};
27356
+ }
26577
27357
  handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
26578
27358
  if ((code === 418) || (code === 429)) {
26579
27359
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.DDoSProtection(this.id + ' ' + code.toString() + ' ' + reason + ' ' + body);
@@ -26596,7 +27376,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
26596
27376
  return undefined; // fallback to default error handler
26597
27377
  }
26598
27378
  // response in format {'msg': 'The coin does not exist.', 'success': true/false}
26599
- const success = this.safeValue(response, 'success', true);
27379
+ const success = this.safeBool(response, 'success', true);
26600
27380
  if (!success) {
26601
27381
  const messageNew = this.safeString(response, 'msg');
26602
27382
  let parsedMessage = undefined;
@@ -26615,7 +27395,9 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
26615
27395
  }
26616
27396
  const message = this.safeString(response, 'msg');
26617
27397
  if (message !== undefined) {
27398
+ this.throwExactlyMatchedException(this.getExceptionsByUrl(url, 'exact'), message, this.id + ' ' + message);
26618
27399
  this.throwExactlyMatchedException(this.exceptions['exact'], message, this.id + ' ' + message);
27400
+ this.throwBroadlyMatchedException(this.getExceptionsByUrl(url, 'broad'), message, this.id + ' ' + message);
26619
27401
  this.throwBroadlyMatchedException(this.exceptions['broad'], message, this.id + ' ' + message);
26620
27402
  }
26621
27403
  // checks against error codes
@@ -26641,6 +27423,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
26641
27423
  // binanceusdm {"code":-4046,"msg":"No need to change margin type."}
26642
27424
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.MarginModeAlreadySet(feedback);
26643
27425
  }
27426
+ this.throwExactlyMatchedException(this.getExceptionsByUrl(url, 'exact'), error, feedback);
26644
27427
  this.throwExactlyMatchedException(this.exceptions['exact'], error, feedback);
26645
27428
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(feedback);
26646
27429
  }
@@ -26654,6 +27437,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
26654
27437
  const element = response[0];
26655
27438
  const errorCode = this.safeString(element, 'code');
26656
27439
  if (errorCode !== undefined) {
27440
+ this.throwExactlyMatchedException(this.getExceptionsByUrl(url, 'exact'), errorCode, this.id + ' ' + body);
26657
27441
  this.throwExactlyMatchedException(this.exceptions['exact'], errorCode, this.id + ' ' + body);
26658
27442
  }
26659
27443
  }
@@ -29825,7 +30609,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
29825
30609
  if (((type === 'LIMIT') || (type === 'TRIGGER_LIMIT') || (type === 'STOP') || (type === 'TAKE_PROFIT')) && !isTrailing) {
29826
30610
  request['price'] = this.parseToNumeric(this.priceToPrecision(symbol, price));
29827
30611
  }
29828
- let reduceOnly = this.safeValue(params, 'reduceOnly', false);
30612
+ let reduceOnly = this.safeBool(params, 'reduceOnly', false);
29829
30613
  if (isTriggerOrder) {
29830
30614
  request['stopPrice'] = this.parseToNumeric(this.priceToPrecision(symbol, triggerPrice));
29831
30615
  if (isMarketOrder || (type === 'TRIGGER_MARKET')) {
@@ -36178,7 +36962,7 @@ class bitfinex extends _abstract_bitfinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
36178
36962
  */
36179
36963
  await this.loadMarkets();
36180
36964
  const market = this.market(symbol);
36181
- const postOnly = this.safeValue(params, 'postOnly', false);
36965
+ const postOnly = this.safeBool(params, 'postOnly', false);
36182
36966
  type = type.toLowerCase();
36183
36967
  params = this.omit(params, ['postOnly']);
36184
36968
  if (market['spot']) {
@@ -36839,9 +37623,13 @@ class bitfinex2 extends _abstract_bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["
36839
37623
  'createLimitOrder': true,
36840
37624
  'createMarketOrder': true,
36841
37625
  'createOrder': true,
37626
+ 'createReduceOnlyOrder': true,
36842
37627
  'createStopLimitOrder': true,
36843
37628
  'createStopMarketOrder': true,
36844
37629
  'createStopOrder': true,
37630
+ 'createTriggerOrder': true,
37631
+ 'createTrailingAmountOrder': true,
37632
+ 'createTrailingPercentOrder': false,
36845
37633
  'editOrder': false,
36846
37634
  'fetchBalance': true,
36847
37635
  'fetchClosedOrder': true,
@@ -38296,94 +39084,81 @@ class bitfinex2 extends _abstract_bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["
38296
39084
  /**
38297
39085
  * @method
38298
39086
  * @name bitfinex2#createOrder
38299
- * @description Create an order on the exchange
39087
+ * @description create an order on the exchange
38300
39088
  * @see https://docs.bitfinex.com/reference/rest-auth-submit-order
38301
- * @param {string} symbol Unified CCXT market symbol
39089
+ * @param {string} symbol unified CCXT market symbol
38302
39090
  * @param {string} type 'limit' or 'market'
38303
39091
  * @param {string} side 'buy' or 'sell'
38304
39092
  * @param {float} amount the amount of currency to trade
38305
- * @param {float} [price] price of order
38306
- * @param {object} [params] extra parameters specific to the exchange API endpoint
38307
- * @param {float} [params.stopPrice] The price at which a trigger order is triggered at
39093
+ * @param {float} [price] price of the order
39094
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
39095
+ * @param {float} [params.stopPrice] the price that triggers a trigger order
38308
39096
  * @param {string} [params.timeInForce] "GTC", "IOC", "FOK", or "PO"
38309
- * @param {bool} params.postOnly
38310
- * @param {bool} [params.reduceOnly] Ensures that the executed order does not flip the opened position.
39097
+ * @param {boolean} [params.postOnly] set to true if you want to make a post only order
39098
+ * @param {boolean} [params.reduceOnly] indicates that the order is to reduce the size of a position
38311
39099
  * @param {int} [params.flags] additional order parameters: 4096 (Post Only), 1024 (Reduce Only), 16384 (OCO), 64 (Hidden), 512 (Close), 524288 (No Var Rates)
38312
39100
  * @param {int} [params.lev] leverage for a derivative order, supported by derivative symbol orders only. The value should be between 1 and 100 inclusive.
38313
- * @param {string} [params.price_traling] The trailing price for a trailing stop order
38314
- * @param {string} [params.price_aux_limit] Order price for stop limit orders
39101
+ * @param {string} [params.price_aux_limit] order price for stop limit orders
38315
39102
  * @param {string} [params.price_oco_stop] OCO stop price
39103
+ * @param {string} [params.trailingAmount] *swap only* the quote amount to trail away from the current market price
38316
39104
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
38317
39105
  */
38318
39106
  await this.loadMarkets();
38319
39107
  const market = this.market(symbol);
38320
- // order types "limit" and "market" immediatley parsed "EXCHANGE LIMIT" and "EXCHANGE MARKET"
38321
- // note: same order types exist for margin orders without the EXCHANGE prefix
38322
- const orderTypes = this.safeValue(this.options, 'orderTypes', {});
38323
- let orderType = type.toUpperCase();
38324
- if (market['spot']) {
38325
- // although they claim that type needs to be 'exchange limit' or 'exchange market'
38326
- // in fact that's not the case for swap markets
38327
- orderType = this.safeStringUpper(orderTypes, type, type);
38328
- }
38329
- const stopPrice = this.safeString2(params, 'stopPrice', 'triggerPrice');
38330
- const timeInForce = this.safeString(params, 'timeInForce');
38331
- const postOnlyParam = this.safeValue(params, 'postOnly', false);
38332
- const reduceOnly = this.safeValue(params, 'reduceOnly', false);
38333
- const clientOrderId = this.safeValue2(params, 'cid', 'clientOrderId');
38334
- params = this.omit(params, ['triggerPrice', 'stopPrice', 'timeInForce', 'postOnly', 'reduceOnly', 'price_aux_limit']);
38335
39108
  let amountString = this.amountToPrecision(symbol, amount);
38336
39109
  amountString = (side === 'buy') ? amountString : _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringNeg(amountString);
38337
39110
  const request = {
38338
- // 'gid': 0123456789, // int32, optional group id for the order
38339
- // 'cid': 0123456789, // int32 client order id
38340
- 'type': orderType,
38341
39111
  'symbol': market['id'],
38342
- // 'price': this.numberToString (price),
38343
39112
  'amount': amountString,
38344
- // 'flags': 0, // int32, https://docs.bitfinex.com/v2/docs/flag-values
38345
- // 'lev': 10, // leverage for a derivative orders, the value should be between 1 and 100 inclusive, optional, 10 by default
38346
- // 'price_trailing': this.numberToString (priceTrailing),
38347
- // 'price_aux_limit': this.numberToString (stopPrice),
38348
- // 'price_oco_stop': this.numberToString (ocoStopPrice),
38349
- // 'tif': '2020-01-01 10:45:23', // datetime for automatic order cancellation
38350
- // 'meta': {
38351
- // 'aff_code': 'AFF_CODE_HERE'
38352
- // },
38353
39113
  };
38354
- const stopLimit = ((orderType === 'EXCHANGE STOP LIMIT') || ((orderType === 'EXCHANGE LIMIT') && (stopPrice !== undefined)));
38355
- const exchangeStop = (orderType === 'EXCHANGE STOP');
38356
- const exchangeMarket = (orderType === 'EXCHANGE MARKET');
38357
- const stopMarket = (exchangeStop || (exchangeMarket && (stopPrice !== undefined)));
38358
- const ioc = ((orderType === 'EXCHANGE IOC') || (timeInForce === 'IOC'));
38359
- const fok = ((orderType === 'EXCHANGE FOK') || (timeInForce === 'FOK'));
39114
+ const stopPrice = this.safeString2(params, 'stopPrice', 'triggerPrice');
39115
+ const trailingAmount = this.safeString(params, 'trailingAmount');
39116
+ const timeInForce = this.safeString(params, 'timeInForce');
39117
+ const postOnlyParam = this.safeBool(params, 'postOnly', false);
39118
+ const reduceOnly = this.safeBool(params, 'reduceOnly', false);
39119
+ const clientOrderId = this.safeValue2(params, 'cid', 'clientOrderId');
39120
+ params = this.omit(params, ['triggerPrice', 'stopPrice', 'timeInForce', 'postOnly', 'reduceOnly', 'trailingAmount', 'clientOrderId']);
39121
+ let orderType = type.toUpperCase();
39122
+ if (trailingAmount !== undefined) {
39123
+ orderType = 'TRAILING STOP';
39124
+ request['price_trailing'] = trailingAmount;
39125
+ }
39126
+ else if (stopPrice !== undefined) {
39127
+ // request['price'] is taken as stopPrice for stop orders
39128
+ request['price'] = this.priceToPrecision(symbol, stopPrice);
39129
+ if (type === 'limit') {
39130
+ orderType = 'STOP LIMIT';
39131
+ request['price_aux_limit'] = this.priceToPrecision(symbol, price);
39132
+ }
39133
+ else {
39134
+ orderType = 'STOP';
39135
+ }
39136
+ }
39137
+ const ioc = (timeInForce === 'IOC');
39138
+ const fok = (timeInForce === 'FOK');
38360
39139
  const postOnly = (postOnlyParam || (timeInForce === 'PO'));
38361
39140
  if ((ioc || fok) && (price === undefined)) {
38362
39141
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder(this.id + ' createOrder() requires a price argument with IOC and FOK orders');
38363
39142
  }
38364
- if ((ioc || fok) && exchangeMarket) {
39143
+ if ((ioc || fok) && (type === 'market')) {
38365
39144
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder(this.id + ' createOrder() does not allow market IOC and FOK orders');
38366
39145
  }
38367
- if ((orderType !== 'MARKET') && (!exchangeMarket) && (!exchangeStop)) {
39146
+ if ((type !== 'market') && (stopPrice === undefined)) {
38368
39147
  request['price'] = this.priceToPrecision(symbol, price);
38369
39148
  }
38370
- if (stopLimit || stopMarket) {
38371
- // request['price'] is taken as stopPrice for stop orders
38372
- request['price'] = this.priceToPrecision(symbol, stopPrice);
38373
- if (stopMarket) {
38374
- request['type'] = 'EXCHANGE STOP';
38375
- }
38376
- else if (stopLimit) {
38377
- request['type'] = 'EXCHANGE STOP LIMIT';
38378
- request['price_aux_limit'] = this.priceToPrecision(symbol, price);
38379
- }
38380
- }
38381
39149
  if (ioc) {
38382
- request['type'] = 'EXCHANGE IOC';
39150
+ orderType = 'IOC';
38383
39151
  }
38384
39152
  else if (fok) {
38385
- request['type'] = 'EXCHANGE FOK';
39153
+ orderType = 'FOK';
38386
39154
  }
39155
+ let marginMode = undefined;
39156
+ [marginMode, params] = this.handleMarginModeAndParams('createOrder', params);
39157
+ if (market['spot'] && (marginMode === undefined)) {
39158
+ // The EXCHANGE prefix is only required for non margin spot markets
39159
+ orderType = 'EXCHANGE ' + orderType;
39160
+ }
39161
+ request['type'] = orderType;
38387
39162
  // flag values may be summed to combine flags
38388
39163
  let flags = 0;
38389
39164
  if (postOnly) {
@@ -38397,7 +39172,6 @@ class bitfinex2 extends _abstract_bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["
38397
39172
  }
38398
39173
  if (clientOrderId !== undefined) {
38399
39174
  request['cid'] = clientOrderId;
38400
- params = this.omit(params, ['cid', 'clientOrderId']);
38401
39175
  }
38402
39176
  const response = await this.privatePostAuthWOrderSubmit(this.extend(request, params));
38403
39177
  //
@@ -38453,8 +39227,8 @@ class bitfinex2 extends _abstract_bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["
38453
39227
  const errorText = response[7];
38454
39228
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(this.id + ' ' + response[6] + ': ' + errorText + ' (#' + errorCode + ')');
38455
39229
  }
38456
- const orders = this.safeValue(response, 4, []);
38457
- const order = this.safeValue(orders, 0);
39230
+ const orders = this.safeList(response, 4, []);
39231
+ const order = this.safeList(orders, 0);
38458
39232
  return this.parseOrder(order, market);
38459
39233
  }
38460
39234
  async cancelAllOrders(symbol = undefined, params = {}) {
@@ -39202,7 +39976,7 @@ class bitfinex2 extends _abstract_bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["
39202
39976
  request['payment_id'] = tag;
39203
39977
  }
39204
39978
  const withdrawOptions = this.safeValue(this.options, 'withdraw', {});
39205
- const includeFee = this.safeValue(withdrawOptions, 'includeFee', false);
39979
+ const includeFee = this.safeBool(withdrawOptions, 'includeFee', false);
39206
39980
  if (includeFee) {
39207
39981
  request['fee_deduct'] = 1;
39208
39982
  }
@@ -42141,6 +42915,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
42141
42915
  'fetchCrossBorrowRate': true,
42142
42916
  'fetchCrossBorrowRates': false,
42143
42917
  'fetchCurrencies': true,
42918
+ 'fetchDeposit': false,
42144
42919
  'fetchDepositAddress': true,
42145
42920
  'fetchDepositAddresses': false,
42146
42921
  'fetchDeposits': true,
@@ -42170,6 +42945,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
42170
42945
  'fetchOpenOrders': true,
42171
42946
  'fetchOrder': true,
42172
42947
  'fetchOrderBook': true,
42948
+ 'fetchOrderBooks': false,
42173
42949
  'fetchOrders': false,
42174
42950
  'fetchOrderTrades': false,
42175
42951
  'fetchPosition': true,
@@ -42177,6 +42953,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
42177
42953
  'fetchPositions': true,
42178
42954
  'fetchPositionsRisk': false,
42179
42955
  'fetchPremiumIndexOHLCV': false,
42956
+ 'fetchStatus': false,
42180
42957
  'fetchTicker': true,
42181
42958
  'fetchTickers': true,
42182
42959
  'fetchTime': true,
@@ -42193,6 +42970,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
42193
42970
  'repayCrossMargin': true,
42194
42971
  'repayIsolatedMargin': true,
42195
42972
  'setLeverage': true,
42973
+ 'setMargin': false,
42196
42974
  'setMarginMode': true,
42197
42975
  'setPositionMode': true,
42198
42976
  'signIn': false,
@@ -44310,7 +45088,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
44310
45088
  'fee': undefined,
44311
45089
  };
44312
45090
  const withdrawOptions = this.safeValue(this.options, 'withdraw', {});
44313
- const fillResponseFromRequest = this.safeValue(withdrawOptions, 'fillResponseFromRequest', true);
45091
+ const fillResponseFromRequest = this.safeBool(withdrawOptions, 'fillResponseFromRequest', true);
44314
45092
  if (fillResponseFromRequest) {
44315
45093
  result['currency'] = code;
44316
45094
  result['timestamp'] = this.milliseconds();
@@ -45195,7 +45973,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
45195
45973
  [marginMode, params] = this.handleMarginModeAndParams('fetchTradingFees', params);
45196
45974
  [marketType, params] = this.handleMarketTypeAndParams('fetchTradingFees', undefined, params);
45197
45975
  if (marketType === 'spot') {
45198
- const margin = this.safeValue(params, 'margin', false);
45976
+ const margin = this.safeBool(params, 'margin', false);
45199
45977
  params = this.omit(params, 'margin');
45200
45978
  if ((marginMode !== undefined) || margin) {
45201
45979
  response = await this.publicMarginGetV2MarginCurrencies(params);
@@ -46216,7 +46994,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
46216
46994
  request['price'] = this.priceToPrecision(symbol, price);
46217
46995
  }
46218
46996
  const triggerType = this.safeString(params, 'triggerType', 'mark_price');
46219
- const reduceOnly = this.safeValue(params, 'reduceOnly', false);
46997
+ const reduceOnly = this.safeBool(params, 'reduceOnly', false);
46220
46998
  const clientOrderId = this.safeString2(params, 'clientOid', 'clientOrderId');
46221
46999
  const exchangeSpecificTifParam = this.safeString2(params, 'force', 'timeInForce');
46222
47000
  let postOnly = undefined;
@@ -46312,7 +47090,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
46312
47090
  }
46313
47091
  const marginModeRequest = (marginMode === 'cross') ? 'crossed' : 'isolated';
46314
47092
  request['marginMode'] = marginModeRequest;
46315
- const oneWayMode = this.safeValue(params, 'oneWayMode', false);
47093
+ const oneWayMode = this.safeBool(params, 'oneWayMode', false);
46316
47094
  params = this.omit(params, 'oneWayMode');
46317
47095
  let requestSide = side;
46318
47096
  if (reduceOnly) {
@@ -53439,7 +54217,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
53439
54217
  let marketType = undefined;
53440
54218
  [marketType, params] = this.handleMarketTypeAndParams('fetchBalance', undefined, params);
53441
54219
  const marginMode = this.safeString(params, 'marginMode');
53442
- const isMargin = this.safeValue(params, 'margin', false);
54220
+ const isMargin = this.safeBool(params, 'margin', false);
53443
54221
  params = this.omit(params, ['margin', 'marginMode']);
53444
54222
  if (marginMode !== undefined || isMargin) {
53445
54223
  marketType = 'margin';
@@ -54313,7 +55091,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
54313
55091
  response = await this.privateGetContractPrivateCurrentPlanOrder(this.extend(request, params));
54314
55092
  }
54315
55093
  else {
54316
- const trailing = this.safeValue(params, 'trailing', false);
55094
+ const trailing = this.safeBool(params, 'trailing', false);
54317
55095
  let orderType = this.safeString(params, 'orderType');
54318
55096
  params = this.omit(params, ['orderType', 'trailing']);
54319
55097
  if (trailing) {
@@ -54493,7 +55271,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
54493
55271
  if (symbol === undefined) {
54494
55272
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' fetchOrder() requires a symbol argument');
54495
55273
  }
54496
- const trailing = this.safeValue(params, 'trailing', false);
55274
+ const trailing = this.safeBool(params, 'trailing', false);
54497
55275
  let orderType = this.safeString(params, 'orderType');
54498
55276
  params = this.omit(params, ['orderType', 'trailing']);
54499
55277
  if (trailing) {
@@ -56068,7 +56846,7 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
56068
56846
  'public': 'https://testnet.bitmex.com',
56069
56847
  'private': 'https://testnet.bitmex.com',
56070
56848
  },
56071
- 'logo': 'https://user-images.githubusercontent.com/1294454/27766319-f653c6e6-5ed4-11e7-933d-f0bc3699ae8f.jpg',
56849
+ 'logo': 'https://github.com/ccxt/ccxt/assets/43336371/cea9cfe5-c57e-4b84-b2ac-77b960b04445',
56072
56850
  'api': {
56073
56851
  'public': 'https://www.bitmex.com',
56074
56852
  'private': 'https://www.bitmex.com',
@@ -56079,7 +56857,10 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
56079
56857
  'https://github.com/BitMEX/api-connectors/tree/master/official-http',
56080
56858
  ],
56081
56859
  'fees': 'https://www.bitmex.com/app/fees',
56082
- 'referral': 'https://www.bitmex.com/register/upZpOX',
56860
+ 'referral': {
56861
+ 'url': 'https://www.bitmex.com/app/register/NZTR1q',
56862
+ 'discount': 0.1,
56863
+ },
56083
56864
  },
56084
56865
  'api': {
56085
56866
  'public': {
@@ -56303,8 +57084,8 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
56303
57084
  const network = this.networkIdToCode(networkId);
56304
57085
  const withdrawalFeeRaw = this.safeString(chain, 'withdrawalFee');
56305
57086
  const withdrawalFee = this.parseNumber(_base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringMul(withdrawalFeeRaw, precisionString));
56306
- const isDepositEnabled = this.safeValue(chain, 'depositEnabled', false);
56307
- const isWithdrawEnabled = this.safeValue(chain, 'withdrawalEnabled', false);
57087
+ const isDepositEnabled = this.safeBool(chain, 'depositEnabled', false);
57088
+ const isWithdrawEnabled = this.safeBool(chain, 'withdrawalEnabled', false);
56308
57089
  const active = (isDepositEnabled && isWithdrawEnabled);
56309
57090
  if (isDepositEnabled) {
56310
57091
  depositEnabled = true;
@@ -57680,7 +58461,7 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
57680
58461
  isInverse = (defaultSubType === 'inverse');
57681
58462
  }
57682
58463
  else {
57683
- isInverse = this.safeValue(market, 'inverse', false);
58464
+ isInverse = this.safeBool(market, 'inverse', false);
57684
58465
  }
57685
58466
  if (isInverse) {
57686
58467
  cost = this.convertFromRawQuantity(symbol, qty);
@@ -58387,7 +59168,7 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
58387
59168
  const item = response[i];
58388
59169
  const marketId = this.safeString(item, 'symbol');
58389
59170
  const market = this.safeMarket(marketId);
58390
- const swap = this.safeValue(market, 'swap', false);
59171
+ const swap = this.safeBool(market, 'swap', false);
58391
59172
  if (swap) {
58392
59173
  filteredResponse.push(item);
58393
59174
  }
@@ -63802,7 +64583,7 @@ class bitrue extends _abstract_bitrue_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
63802
64583
  }
63803
64584
  // check success value for wapi endpoints
63804
64585
  // response in format {'msg': 'The coin does not exist.', 'success': true/false}
63805
- const success = this.safeValue(response, 'success', true);
64586
+ const success = this.safeBool(response, 'success', true);
63806
64587
  if (!success) {
63807
64588
  const messageInner = this.safeString(response, 'msg');
63808
64589
  let parsedMessage = undefined;
@@ -65604,7 +66385,7 @@ class bitso extends _abstract_bitso_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
65604
66385
  //
65605
66386
  // {"success":false,"error":{"code":104,"message":"Cannot perform request - nonce must be higher than 1520307203724237"}}
65606
66387
  //
65607
- let success = this.safeValue(response, 'success', false);
66388
+ let success = this.safeBool(response, 'success', false);
65608
66389
  if (typeof success === 'string') {
65609
66390
  if ((success === 'true') || (success === '1')) {
65610
66391
  success = true;
@@ -68199,7 +68980,7 @@ class bitteam extends _abstract_bitteam_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
68199
68980
  const created = this.parse8601(timeStart);
68200
68981
  let minCost = undefined;
68201
68982
  const currenciesValuedInUsd = this.safeValue(this.options, 'currenciesValuedInUsd', {});
68202
- const quoteInUsd = this.safeValue(currenciesValuedInUsd, quote, false);
68983
+ const quoteInUsd = this.safeBool(currenciesValuedInUsd, quote, false);
68203
68984
  if (quoteInUsd) {
68204
68985
  const settings = this.safeValue(market, 'settings', {});
68205
68986
  minCost = this.safeNumber(settings, 'limit_usd');
@@ -68386,7 +69167,7 @@ class bitteam extends _abstract_bitteam_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
68386
69167
  const id = this.safeString(currency, 'symbol');
68387
69168
  const numericId = this.safeInteger(currency, 'id');
68388
69169
  const code = this.safeCurrencyCode(id);
68389
- const active = this.safeValue(currency, 'active', false);
69170
+ const active = this.safeBool(currency, 'active', false);
68390
69171
  const precision = this.safeInteger(currency, 'precision');
68391
69172
  const txLimits = this.safeValue(currency, 'txLimits', {});
68392
69173
  const minWithdraw = this.safeString(txLimits, 'minWithdraw');
@@ -74546,7 +75327,7 @@ class btcalpha extends _abstract_btcalpha_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
74546
75327
  const marketId = this.safeString(order, 'pair');
74547
75328
  market = this.safeMarket(marketId, market, '_');
74548
75329
  const symbol = market['symbol'];
74549
- const success = this.safeValue(order, 'success', false);
75330
+ const success = this.safeBool(order, 'success', false);
74550
75331
  let timestamp = undefined;
74551
75332
  if (success) {
74552
75333
  timestamp = this.safeTimestamp(order, 'date');
@@ -77866,8 +78647,6 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
77866
78647
  // account
77867
78648
  'v5/account/wallet-balance': 1,
77868
78649
  'v5/account/borrow-history': 1,
77869
- 'v5/account/set-collateral-switch': 5,
77870
- 'v5/account/set-collateral-switch-batch': 5,
77871
78650
  'v5/account/collateral-info': 1,
77872
78651
  'v5/asset/coin-greeks': 1,
77873
78652
  'v5/account/fee-rate': 10,
@@ -78060,6 +78839,8 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
78060
78839
  'v5/lending/purchase': 5,
78061
78840
  'v5/lending/redeem': 5,
78062
78841
  'v5/lending/redeem-cancel': 5,
78842
+ 'v5/account/set-collateral-switch': 5,
78843
+ 'v5/account/set-collateral-switch-batch': 5,
78063
78844
  },
78064
78845
  },
78065
78846
  },
@@ -78424,6 +79205,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
78424
79205
  '181003': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
78425
79206
  '181004': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
78426
79207
  '182000': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
79208
+ '181017': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest,
78427
79209
  '20001': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.OrderNotFound,
78428
79210
  '20003': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
78429
79211
  '20004': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
@@ -80916,16 +81698,31 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
80916
81698
  let fee = undefined;
80917
81699
  const feeCostString = this.safeString(order, 'cumExecFee');
80918
81700
  if (feeCostString !== undefined) {
80919
- let feeCurrency = undefined;
81701
+ let feeCurrencyCode = undefined;
80920
81702
  if (market['spot']) {
80921
- feeCurrency = (side === 'buy') ? market['quote'] : market['base'];
81703
+ if (_base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringGt(feeCostString, '0')) {
81704
+ if (side === 'buy') {
81705
+ feeCurrencyCode = market['base'];
81706
+ }
81707
+ else {
81708
+ feeCurrencyCode = market['quote'];
81709
+ }
81710
+ }
81711
+ else {
81712
+ if (side === 'buy') {
81713
+ feeCurrencyCode = market['quote'];
81714
+ }
81715
+ else {
81716
+ feeCurrencyCode = market['base'];
81717
+ }
81718
+ }
80922
81719
  }
80923
81720
  else {
80924
- feeCurrency = market['settle'];
81721
+ feeCurrencyCode = market['inverse'] ? market['base'] : market['settle'];
80925
81722
  }
80926
81723
  fee = {
80927
81724
  'cost': feeCostString,
80928
- 'currency': feeCurrency,
81725
+ 'currency': feeCurrencyCode,
80929
81726
  };
80930
81727
  }
80931
81728
  let clientOrderId = this.safeString(order, 'orderLinkId');
@@ -81013,7 +81810,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
81013
81810
  const result = await this.fetchOrders(symbol, undefined, undefined, this.extend(request, params));
81014
81811
  const length = result.length;
81015
81812
  if (length === 0) {
81016
- const isTrigger = this.safeValueN(params, ['trigger', 'stop'], false);
81813
+ const isTrigger = this.safeBoolN(params, ['trigger', 'stop'], false);
81017
81814
  const extra = isTrigger ? '' : 'If you are trying to fetch SL/TP conditional order, you might try setting params["trigger"] = true';
81018
81815
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.OrderNotFound('Order ' + id.toString() + ' was not found.' + extra);
81019
81816
  }
@@ -82085,7 +82882,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
82085
82882
  return await this.fetchUsdcOrders(symbol, since, limit, params);
82086
82883
  }
82087
82884
  request['category'] = type;
82088
- const isStop = this.safeValueN(params, ['trigger', 'stop'], false);
82885
+ const isStop = this.safeBoolN(params, ['trigger', 'stop'], false);
82089
82886
  params = this.omit(params, ['trigger', 'stop']);
82090
82887
  if (isStop) {
82091
82888
  request['orderFilter'] = 'StopOrder';
@@ -83243,10 +84040,10 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
83243
84040
  // "time": 1672280219169
83244
84041
  // }
83245
84042
  //
83246
- const result = this.safeValue(response, 'result', {});
83247
- const positions = this.safeValue2(result, 'list', 'dataList', []);
84043
+ const result = this.safeDict(response, 'result', {});
84044
+ const positions = this.safeList2(result, 'list', 'dataList', []);
83248
84045
  const timestamp = this.safeInteger(response, 'time');
83249
- const first = this.safeValue(positions, 0, {});
84046
+ const first = this.safeDict(positions, 0, {});
83250
84047
  const position = this.parsePosition(first, market);
83251
84048
  position['timestamp'] = timestamp;
83252
84049
  position['datetime'] = this.iso8601(timestamp);
@@ -83992,7 +84789,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
83992
84789
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + 'fetchOpenInterestHistory cannot use the 1m timeframe');
83993
84790
  }
83994
84791
  await this.loadMarkets();
83995
- const paginate = this.safeValue(params, 'paginate');
84792
+ const paginate = this.safeBool(params, 'paginate');
83996
84793
  if (paginate) {
83997
84794
  params = this.omit(params, 'paginate');
83998
84795
  return await this.fetchPaginatedCallDeterministic('fetchOpenInterestHistory', symbol, since, limit, timeframe, params, 500);
@@ -88292,7 +89089,11 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
88292
89089
  async fetchTickersV3(symbols = undefined, params = {}) {
88293
89090
  await this.loadMarkets();
88294
89091
  symbols = this.marketSymbols(symbols);
88295
- const response = await this.v3PrivateGetBrokerageProducts(params);
89092
+ const request = {};
89093
+ if (symbols !== undefined) {
89094
+ request['product_ids'] = this.marketIds(symbols);
89095
+ }
89096
+ const response = await this.v3PrivateGetBrokerageProducts(this.extend(request, params));
88296
89097
  //
88297
89098
  // {
88298
89099
  // "products": [
@@ -88610,7 +89411,7 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
88610
89411
  'limit': 250,
88611
89412
  };
88612
89413
  let response = undefined;
88613
- const isV3 = this.safeValue(params, 'v3', false);
89414
+ const isV3 = this.safeBool(params, 'v3', false);
88614
89415
  params = this.omit(params, 'v3');
88615
89416
  const method = this.safeString(this.options, 'fetchBalance', 'v3PrivateGetBrokerageAccounts');
88616
89417
  if ((isV3) || (method === 'v3PrivateGetBrokerageAccounts')) {
@@ -90126,8 +90927,11 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
90126
90927
  */
90127
90928
  await this.loadMarkets();
90128
90929
  symbols = this.marketSymbols(symbols);
90129
- // the 'product_ids' param isn't working properly and returns {"pricebooks":[]} when defined
90130
- const response = await this.v3PrivateGetBrokerageBestBidAsk(params);
90930
+ const request = {};
90931
+ if (symbols !== undefined) {
90932
+ request['product_ids'] = this.marketIds(symbols);
90933
+ }
90934
+ const response = await this.v3PrivateGetBrokerageBestBidAsk(this.extend(request, params));
90131
90935
  //
90132
90936
  // {
90133
90937
  // "pricebooks": [
@@ -90256,7 +91060,7 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
90256
91060
  const savedPath = fullPath;
90257
91061
  if (method === 'GET') {
90258
91062
  if (Object.keys(query).length) {
90259
- fullPath += '?' + this.urlencode(query);
91063
+ fullPath += '?' + this.urlencodeWithArrayRepeat(query);
90260
91064
  }
90261
91065
  }
90262
91066
  const url = this.urls['api']['rest'] + fullPath;
@@ -93075,7 +93879,7 @@ class coincheck extends _abstract_coincheck_js__WEBPACK_IMPORTED_MODULE_0__/* ["
93075
93879
  // {"success":false,"error":"disabled API Key"}'
93076
93880
  // {"success":false,"error":"invalid authentication"}
93077
93881
  //
93078
- const success = this.safeValue(response, 'success', true);
93882
+ const success = this.safeBool(response, 'success', true);
93079
93883
  if (!success) {
93080
93884
  const error = this.safeString(response, 'error');
93081
93885
  const feedback = this.id + ' ' + this.json(response);
@@ -96425,7 +97229,7 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
96425
97229
  const data = this.safeValue(response, 'data', {});
96426
97230
  const depositAddress = this.parseDepositAddress(data, currency);
96427
97231
  const options = this.safeValue(this.options, 'fetchDepositAddress', {});
96428
- const fillResponseFromRequest = this.safeValue(options, 'fillResponseFromRequest', true);
97232
+ const fillResponseFromRequest = this.safeBool(options, 'fillResponseFromRequest', true);
96429
97233
  if (fillResponseFromRequest) {
96430
97234
  depositAddress['network'] = this.safeNetworkCode(network, currency);
96431
97235
  }
@@ -98452,7 +99256,7 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
98452
99256
  * @returns {Array} the marginMode in lowercase
98453
99257
  */
98454
99258
  const defaultType = this.safeString(this.options, 'defaultType');
98455
- const isMargin = this.safeValue(params, 'margin', false);
99259
+ const isMargin = this.safeBool(params, 'margin', false);
98456
99260
  let marginMode = undefined;
98457
99261
  [marginMode, params] = super.handleMarginModeAndParams(methodName, params, defaultValue);
98458
99262
  if (marginMode === undefined) {
@@ -98935,7 +99739,7 @@ class coinlist extends _abstract_coinlist_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
98935
99739
  const currency = currencies[i];
98936
99740
  const id = this.safeString(currency, 'asset');
98937
99741
  const code = this.safeCurrencyCode(id);
98938
- const isTransferable = this.safeValue(currency, 'is_transferable', false);
99742
+ const isTransferable = this.safeBool(currency, 'is_transferable', false);
98939
99743
  const withdrawEnabled = isTransferable;
98940
99744
  const depositEnabled = isTransferable;
98941
99745
  const active = isTransferable;
@@ -101462,7 +102266,7 @@ class coinmate extends _abstract_coinmate_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
101462
102266
  //
101463
102267
  const data = this.safeValue(response, 'data');
101464
102268
  const transaction = this.parseTransaction(data, currency);
101465
- const fillResponseFromRequest = this.safeValue(withdrawOptions, 'fillResponseFromRequest', true);
102269
+ const fillResponseFromRequest = this.safeBool(withdrawOptions, 'fillResponseFromRequest', true);
101466
102270
  if (fillResponseFromRequest) {
101467
102271
  transaction['amount'] = amount;
101468
102272
  transaction['currency'] = code;
@@ -102054,7 +102858,7 @@ class coinmetro extends _abstract_coinmetro_js__WEBPACK_IMPORTED_MODULE_0__/* ["
102054
102858
  'private': 'https://api.coinmetro.com',
102055
102859
  },
102056
102860
  'test': {
102057
- 'public': 'https://api.coinmetro.com',
102861
+ 'public': 'https://api.coinmetro.com/open',
102058
102862
  'private': 'https://api.coinmetro.com/open',
102059
102863
  },
102060
102864
  'www': 'https://coinmetro.com/',
@@ -102296,7 +103100,7 @@ class coinmetro extends _abstract_coinmetro_js__WEBPACK_IMPORTED_MODULE_0__/* ["
102296
103100
  const quote = this.safeCurrencyCode(quoteId);
102297
103101
  const basePrecisionAndLimits = this.parseMarketPrecisionAndLimits(baseId);
102298
103102
  const quotePrecisionAndLimits = this.parseMarketPrecisionAndLimits(quoteId);
102299
- const margin = this.safeValue(market, 'margin', false);
103103
+ const margin = this.safeBool(market, 'margin', false);
102300
103104
  const tradingFees = this.safeValue(this.fees, 'trading', {});
102301
103105
  return this.safeMarketStructure({
102302
103106
  'id': id,
@@ -103255,7 +104059,7 @@ class coinmetro extends _abstract_coinmetro_js__WEBPACK_IMPORTED_MODULE_0__/* ["
103255
104059
  };
103256
104060
  const marginMode = undefined;
103257
104061
  [params, params] = this.handleMarginModeAndParams('cancelOrder', params);
103258
- const isMargin = this.safeValue(params, 'margin', false);
104062
+ const isMargin = this.safeBool(params, 'margin', false);
103259
104063
  params = this.omit(params, 'margin');
103260
104064
  let response = undefined;
103261
104065
  if (isMargin || (marginMode !== undefined)) {
@@ -103773,11 +104577,17 @@ class coinmetro extends _abstract_coinmetro_js__WEBPACK_IMPORTED_MODULE_0__/* ["
103773
104577
  const endpoint = '/' + this.implodeParams(path, params);
103774
104578
  let url = this.urls['api'][api] + endpoint;
103775
104579
  const query = this.urlencode(request);
104580
+ if (headers === undefined) {
104581
+ headers = {};
104582
+ }
104583
+ headers['CCXT'] = 'true';
103776
104584
  if (api === 'private') {
103777
- if (headers === undefined) {
103778
- headers = {};
104585
+ if ((this.uid === undefined) && (this.apiKey !== undefined)) {
104586
+ this.uid = this.apiKey;
104587
+ }
104588
+ if ((this.token === undefined) && (this.secret !== undefined)) {
104589
+ this.token = this.secret;
103779
104590
  }
103780
- headers['CCXT'] = true;
103781
104591
  if (url === 'https://api.coinmetro.com/jwt') { // handle with headers for login endpoint
103782
104592
  headers['X-Device-Id'] = 'bypass';
103783
104593
  if (this.twofa !== undefined) {
@@ -106592,7 +107402,7 @@ class coinsph extends _abstract_coinsph_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
106592
107402
  * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
106593
107403
  */
106594
107404
  const options = this.safeValue(this.options, 'withdraw');
106595
- const warning = this.safeValue(options, 'warning', true);
107405
+ const warning = this.safeBool(options, 'warning', true);
106596
107406
  if (warning) {
106597
107407
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidAddress(this.id + " withdraw() makes a withdrawals only to coins_ph account, add .options['withdraw']['warning'] = false to make a withdrawal to your coins_ph account");
106598
107408
  }
@@ -108588,7 +109398,7 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
108588
109398
  request['time_in_force'] = timeInForce;
108589
109399
  }
108590
109400
  }
108591
- const postOnly = this.safeValue(params, 'postOnly', false);
109401
+ const postOnly = this.safeBool(params, 'postOnly', false);
108592
109402
  if ((postOnly) || (timeInForce === 'PO')) {
108593
109403
  request['exec_inst'] = ['POST_ONLY'];
108594
109404
  request['time_in_force'] = 'GOOD_TILL_CANCEL';
@@ -108809,7 +109619,7 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
108809
109619
  request['time_in_force'] = timeInForce;
108810
109620
  }
108811
109621
  }
108812
- const postOnly = this.safeValue(params, 'postOnly', false);
109622
+ const postOnly = this.safeBool(params, 'postOnly', false);
108813
109623
  if ((postOnly) || (timeInForce === 'PO')) {
108814
109624
  request['exec_inst'] = ['POST_ONLY'];
108815
109625
  request['time_in_force'] = 'GOOD_TILL_CANCEL';
@@ -109780,7 +110590,7 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
109780
110590
  * @returns {Array} the marginMode in lowercase
109781
110591
  */
109782
110592
  const defaultType = this.safeString(this.options, 'defaultType');
109783
- const isMargin = this.safeValue(params, 'margin', false);
110593
+ const isMargin = this.safeBool(params, 'margin', false);
109784
110594
  params = this.omit(params, 'margin');
109785
110595
  let marginMode = undefined;
109786
110596
  [marginMode, params] = this.handleMarginModeAndParams(methodName, params);
@@ -120482,9 +121292,11 @@ class digifinex extends _abstract_digifinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["
120482
121292
  // "timestamp": 1663221614998
120483
121293
  // }
120484
121294
  //
121295
+ const indexPrice = this.safeNumber(ticker, 'index_price');
121296
+ const marketType = (indexPrice !== undefined) ? 'contract' : 'spot';
120485
121297
  const marketId = this.safeStringUpper2(ticker, 'symbol', 'instrument_id');
120486
- const symbol = this.safeSymbol(marketId, market);
120487
- market = this.safeMarket(marketId);
121298
+ const symbol = this.safeSymbol(marketId, market, undefined, marketType);
121299
+ market = this.safeMarket(marketId, market, undefined, marketType);
120488
121300
  let timestamp = this.safeTimestamp(ticker, 'date');
120489
121301
  if (market['swap']) {
120490
121302
  timestamp = this.safeInteger(ticker, 'timestamp');
@@ -121071,7 +121883,7 @@ class digifinex extends _abstract_digifinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["
121071
121883
  let postOnly = this.isPostOnly(isMarketOrder, false, params);
121072
121884
  let postOnlyParsed = undefined;
121073
121885
  if (swap) {
121074
- const reduceOnly = this.safeValue(params, 'reduceOnly', false);
121886
+ const reduceOnly = this.safeBool(params, 'reduceOnly', false);
121075
121887
  const timeInForce = this.safeString(params, 'timeInForce');
121076
121888
  let orderType = undefined;
121077
121889
  if (side === 'buy') {
@@ -123271,7 +124083,7 @@ class digifinex extends _abstract_digifinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["
123271
124083
  * @returns {Array} the marginMode in lowercase
123272
124084
  */
123273
124085
  const defaultType = this.safeString(this.options, 'defaultType');
123274
- const isMargin = this.safeValue(params, 'margin', false);
124086
+ const isMargin = this.safeBool(params, 'margin', false);
123275
124087
  let marginMode = undefined;
123276
124088
  [marginMode, params] = super.handleMarginModeAndParams(methodName, params, defaultValue);
123277
124089
  if (marginMode !== undefined) {
@@ -123916,7 +124728,7 @@ class exmo extends _abstract_exmo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
123916
124728
  //
123917
124729
  const margin = this.parseMarginModification(response, market);
123918
124730
  const options = this.safeValue(this.options, 'margin', {});
123919
- const fillResponseFromRequest = this.safeValue(options, 'fillResponseFromRequest', true);
124731
+ const fillResponseFromRequest = this.safeBool(options, 'fillResponseFromRequest', true);
123920
124732
  if (fillResponseFromRequest) {
123921
124733
  margin['type'] = type;
123922
124734
  margin['amount'] = amount;
@@ -126280,7 +127092,7 @@ class exmo extends _abstract_exmo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
126280
127092
  // {"result":false,"error":"Error 50052: Insufficient funds"}
126281
127093
  // {"s":"error","errmsg":"strconv.ParseInt: parsing \"\": invalid syntax"}
126282
127094
  //
126283
- let success = this.safeValue(response, 'result', false);
127095
+ let success = this.safeBool(response, 'result', false);
126284
127096
  if (typeof success === 'string') {
126285
127097
  if ((success === 'true') || (success === '1')) {
126286
127098
  success = true;
@@ -127951,9 +128763,9 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
127951
128763
  const networkId = this.safeString(entry, 'chain');
127952
128764
  const networkCode = this.networkIdToCode(networkId, code);
127953
128765
  const delisted = this.safeValue(entry, 'delisted');
127954
- const withdrawDisabled = this.safeValue(entry, 'withdraw_disabled', false);
127955
- const depositDisabled = this.safeValue(entry, 'deposit_disabled', false);
127956
- const tradeDisabled = this.safeValue(entry, 'trade_disabled', false);
128766
+ const withdrawDisabled = this.safeBool(entry, 'withdraw_disabled', false);
128767
+ const depositDisabled = this.safeBool(entry, 'deposit_disabled', false);
128768
+ const tradeDisabled = this.safeBool(entry, 'trade_disabled', false);
127957
128769
  const withdrawEnabled = !withdrawDisabled;
127958
128770
  const depositEnabled = !depositDisabled;
127959
128771
  const tradeEnabled = !tradeDisabled;
@@ -130410,7 +131222,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
130410
131222
  }
130411
131223
  }
130412
131224
  let clientOrderId = this.safeString2(params, 'text', 'clientOrderId');
130413
- const textIsRequired = this.safeValue(params, 'textIsRequired', false);
131225
+ const textIsRequired = this.safeBool(params, 'textIsRequired', false);
130414
131226
  if (clientOrderId !== undefined) {
130415
131227
  // user-defined, must follow the rules if not empty
130416
131228
  // prefixed with t-
@@ -130782,7 +131594,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
130782
131594
  // "message": "Not enough balance"
130783
131595
  // }
130784
131596
  //
130785
- const succeeded = this.safeValue(order, 'succeeded', true);
131597
+ const succeeded = this.safeBool(order, 'succeeded', true);
130786
131598
  if (!succeeded) {
130787
131599
  // cancelOrders response
130788
131600
  return this.safeOrder({
@@ -133929,7 +134741,7 @@ class gemini extends _abstract_gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
133929
134741
  'post_only': true,
133930
134742
  'limit_only': true,
133931
134743
  };
133932
- return this.safeValue(statuses, status, true);
134744
+ return this.safeBool(statuses, status, true);
133933
134745
  }
133934
134746
  async fetchUSDTMarkets(params = {}) {
133935
134747
  // these markets can't be scrapped and fetchMarketsFrom api does an extra call
@@ -133968,7 +134780,7 @@ class gemini extends _abstract_gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
133968
134780
  result[marketId] = this.parseMarket(market);
133969
134781
  }
133970
134782
  const options = this.safeValue(this.options, 'fetchMarketsFromAPI', {});
133971
- const fetchDetailsForAllSymbols = this.safeValue(options, 'fetchDetailsForAllSymbols', false);
134783
+ const fetchDetailsForAllSymbols = this.safeBool(options, 'fetchDetailsForAllSymbols', false);
133972
134784
  const fetchDetailsForMarketIds = this.safeValue(options, 'fetchDetailsForMarketIds', []);
133973
134785
  let promises = [];
133974
134786
  let marketIds = [];
@@ -134785,7 +135597,7 @@ class gemini extends _abstract_gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
134785
135597
  request['options'] = ['maker-or-cancel'];
134786
135598
  }
134787
135599
  }
134788
- const postOnly = this.safeValue(params, 'postOnly', false);
135600
+ const postOnly = this.safeBool(params, 'postOnly', false);
134789
135601
  params = this.omit(params, 'postOnly');
134790
135602
  if (postOnly) {
134791
135603
  request['options'] = ['maker-or-cancel'];
@@ -135918,7 +136730,7 @@ class hitbtc extends _abstract_hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
135918
136730
  const expiry = this.safeInteger(market, 'expiry');
135919
136731
  const contract = (marketType === 'futures');
135920
136732
  const spot = (marketType === 'spot');
135921
- const marginTrading = this.safeValue(market, 'margin_trading', false);
136733
+ const marginTrading = this.safeBool(market, 'margin_trading', false);
135922
136734
  const margin = spot && marginTrading;
135923
136735
  const future = (expiry !== undefined);
135924
136736
  const swap = (contract && !future);
@@ -136053,9 +136865,9 @@ class hitbtc extends _abstract_hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
136053
136865
  const entry = response[currencyId];
136054
136866
  const name = this.safeString(entry, 'full_name');
136055
136867
  const precision = this.safeNumber(entry, 'precision_transfer');
136056
- const payinEnabled = this.safeValue(entry, 'payin_enabled', false);
136057
- const payoutEnabled = this.safeValue(entry, 'payout_enabled', false);
136058
- const transferEnabled = this.safeValue(entry, 'transfer_enabled', false);
136868
+ const payinEnabled = this.safeBool(entry, 'payin_enabled', false);
136869
+ const payoutEnabled = this.safeBool(entry, 'payout_enabled', false);
136870
+ const transferEnabled = this.safeBool(entry, 'transfer_enabled', false);
136059
136871
  const active = payinEnabled && payoutEnabled && transferEnabled;
136060
136872
  const rawNetworks = this.safeValue(entry, 'networks', []);
136061
136873
  const networks = {};
@@ -136068,8 +136880,8 @@ class hitbtc extends _abstract_hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
136068
136880
  const network = this.safeNetwork(networkId);
136069
136881
  fee = this.safeNumber(rawNetwork, 'payout_fee');
136070
136882
  const networkPrecision = this.safeNumber(rawNetwork, 'precision_payout');
136071
- const payinEnabledNetwork = this.safeValue(entry, 'payin_enabled', false);
136072
- const payoutEnabledNetwork = this.safeValue(entry, 'payout_enabled', false);
136883
+ const payinEnabledNetwork = this.safeBool(entry, 'payin_enabled', false);
136884
+ const payoutEnabledNetwork = this.safeBool(entry, 'payout_enabled', false);
136073
136885
  const activeNetwork = payinEnabledNetwork && payoutEnabledNetwork;
136074
136886
  if (payinEnabledNetwork && !depositEnabled) {
136075
136887
  depositEnabled = true;
@@ -137933,7 +138745,7 @@ class hitbtc extends _abstract_hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
137933
138745
  params = this.omit(params, 'network');
137934
138746
  }
137935
138747
  const withdrawOptions = this.safeValue(this.options, 'withdraw', {});
137936
- const includeFee = this.safeValue(withdrawOptions, 'includeFee', false);
138748
+ const includeFee = this.safeBool(withdrawOptions, 'includeFee', false);
137937
138749
  if (includeFee) {
137938
138750
  request['include_fee'] = true;
137939
138751
  }
@@ -138455,7 +139267,7 @@ class hitbtc extends _abstract_hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
138455
139267
  await this.loadMarkets();
138456
139268
  const market = this.market(symbol);
138457
139269
  const leverage = this.safeString(params, 'leverage');
138458
- if (market['type'] === 'swap') {
139270
+ if (market['swap']) {
138459
139271
  if (leverage === undefined) {
138460
139272
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' modifyMarginHelper() requires a leverage parameter for swap markets');
138461
139273
  }
@@ -138479,21 +139291,15 @@ class hitbtc extends _abstract_hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
138479
139291
  let marginMode = undefined;
138480
139292
  [marketType, params] = this.handleMarketTypeAndParams('modifyMarginHelper', market, params);
138481
139293
  [marginMode, params] = this.handleMarginModeAndParams('modifyMarginHelper', params);
138482
- params = this.omit(params, ['marginMode', 'margin']);
138483
139294
  let response = undefined;
138484
- if (marginMode !== undefined) {
139295
+ if (marketType === 'swap') {
139296
+ response = await this.privatePutFuturesAccountIsolatedSymbol(this.extend(request, params));
139297
+ }
139298
+ else if ((marketType === 'margin') || (marketType === 'spot') || (marginMode === 'isolated')) {
138485
139299
  response = await this.privatePutMarginAccountIsolatedSymbol(this.extend(request, params));
138486
139300
  }
138487
139301
  else {
138488
- if (marketType === 'swap') {
138489
- response = await this.privatePutFuturesAccountIsolatedSymbol(this.extend(request, params));
138490
- }
138491
- else if (marketType === 'margin') {
138492
- response = await this.privatePutMarginAccountIsolatedSymbol(this.extend(request, params));
138493
- }
138494
- else {
138495
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' modifyMarginHelper() not support this market type');
138496
- }
139302
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' modifyMarginHelper() not support this market type');
138497
139303
  }
138498
139304
  //
138499
139305
  // {
@@ -138805,7 +139611,7 @@ class hitbtc extends _abstract_hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
138805
139611
  * @returns {Array} the marginMode in lowercase
138806
139612
  */
138807
139613
  const defaultType = this.safeString(this.options, 'defaultType');
138808
- const isMargin = this.safeValue(params, 'margin', false);
139614
+ const isMargin = this.safeBool(params, 'margin', false);
138809
139615
  let marginMode = undefined;
138810
139616
  [marginMode, params] = super.handleMarginModeAndParams(methodName, params, defaultValue);
138811
139617
  if (marginMode === undefined) {
@@ -140014,7 +140820,7 @@ class hollaex extends _abstract_hollaex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
140014
140820
  const filled = this.safeString(order, 'filled');
140015
140821
  const status = this.parseOrderStatus(this.safeString(order, 'status'));
140016
140822
  const meta = this.safeValue(order, 'meta', {});
140017
- const postOnly = this.safeValue(meta, 'post_only', false);
140823
+ const postOnly = this.safeBool(meta, 'post_only', false);
140018
140824
  return this.safeOrder({
140019
140825
  'id': id,
140020
140826
  'clientOrderId': undefined,
@@ -140068,7 +140874,7 @@ class hollaex extends _abstract_hollaex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
140068
140874
  };
140069
140875
  const stopPrice = this.safeNumberN(params, ['triggerPrice', 'stopPrice', 'stop']);
140070
140876
  const meta = this.safeValue(params, 'meta', {});
140071
- const exchangeSpecificParam = this.safeValue(meta, 'post_only', false);
140877
+ const exchangeSpecificParam = this.safeBool(meta, 'post_only', false);
140072
140878
  const isMarketOrder = type === 'market';
140073
140879
  const postOnly = this.isPostOnly(isMarketOrder, exchangeSpecificParam, params);
140074
140880
  if (!isMarketOrder) {
@@ -144796,7 +145602,7 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
144796
145602
  let response = undefined;
144797
145603
  const stop = this.safeValue(params, 'stop');
144798
145604
  const stopLossTakeProfit = this.safeValue(params, 'stopLossTakeProfit');
144799
- const trailing = this.safeValue(params, 'trailing', false);
145605
+ const trailing = this.safeBool(params, 'trailing', false);
144800
145606
  params = this.omit(params, ['stop', 'stopLossTakeProfit', 'trailing']);
144801
145607
  if (stop || stopLossTakeProfit || trailing) {
144802
145608
  if (limit !== undefined) {
@@ -145171,7 +145977,7 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
145171
145977
  request['contract_code'] = market['id'];
145172
145978
  const stop = this.safeValue(params, 'stop');
145173
145979
  const stopLossTakeProfit = this.safeValue(params, 'stopLossTakeProfit');
145174
- const trailing = this.safeValue(params, 'trailing', false);
145980
+ const trailing = this.safeBool(params, 'trailing', false);
145175
145981
  params = this.omit(params, ['stop', 'stopLossTakeProfit', 'trailing']);
145176
145982
  if (market['linear']) {
145177
145983
  let marginMode = undefined;
@@ -146550,7 +147356,7 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
146550
147356
  }
146551
147357
  const stop = this.safeValue(params, 'stop');
146552
147358
  const stopLossTakeProfit = this.safeValue(params, 'stopLossTakeProfit');
146553
- const trailing = this.safeValue(params, 'trailing', false);
147359
+ const trailing = this.safeBool(params, 'trailing', false);
146554
147360
  params = this.omit(params, ['stop', 'stopLossTakeProfit', 'trailing']);
146555
147361
  if (market['linear']) {
146556
147362
  let marginMode = undefined;
@@ -146875,7 +147681,7 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
146875
147681
  request['contract_code'] = market['id'];
146876
147682
  const stop = this.safeValue(params, 'stop');
146877
147683
  const stopLossTakeProfit = this.safeValue(params, 'stopLossTakeProfit');
146878
- const trailing = this.safeValue(params, 'trailing', false);
147684
+ const trailing = this.safeBool(params, 'trailing', false);
146879
147685
  params = this.omit(params, ['stop', 'stopLossTakeProfit', 'trailing']);
146880
147686
  if (market['linear']) {
146881
147687
  let marginMode = undefined;
@@ -147341,7 +148147,7 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
147341
148147
  }
147342
148148
  amount = parseFloat(this.currencyToPrecision(code, amount, networkCode));
147343
148149
  const withdrawOptions = this.safeValue(this.options, 'withdraw', {});
147344
- if (this.safeValue(withdrawOptions, 'includeFee', false)) {
148150
+ if (this.safeBool(withdrawOptions, 'includeFee', false)) {
147345
148151
  let fee = this.safeNumber(params, 'fee');
147346
148152
  if (fee === undefined) {
147347
148153
  const currencies = await this.fetchCurrencies();
@@ -151067,7 +151873,7 @@ class huobijp extends _abstract_huobijp_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
151067
151873
  const depositEnabled = this.safeValue(currency, 'deposit-enabled');
151068
151874
  const withdrawEnabled = this.safeValue(currency, 'withdraw-enabled');
151069
151875
  const countryDisabled = this.safeValue(currency, 'country-disabled');
151070
- const visible = this.safeValue(currency, 'visible', false);
151876
+ const visible = this.safeBool(currency, 'visible', false);
151071
151877
  const state = this.safeString(currency, 'state');
151072
151878
  const active = visible && depositEnabled && withdrawEnabled && (state === 'online') && !countryDisabled;
151073
151879
  const name = this.safeString(currency, 'display-name');
@@ -159032,7 +159838,7 @@ class krakenfutures extends _abstract_krakenfutures_js__WEBPACK_IMPORTED_MODULE_
159032
159838
  const volume = this.safeString(ticker, 'vol24h');
159033
159839
  let baseVolume = undefined;
159034
159840
  let quoteVolume = undefined;
159035
- const isIndex = this.safeValue(market, 'index', false);
159841
+ const isIndex = this.safeBool(market, 'index', false);
159036
159842
  if (!isIndex) {
159037
159843
  if (market['linear']) {
159038
159844
  baseVolume = volume;
@@ -161844,7 +162650,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
161844
162650
  //
161845
162651
  const data = this.safeValue(response, 'data');
161846
162652
  const options = this.safeValue(this.options, 'fetchMarkets', {});
161847
- const fetchTickersFees = this.safeValue(options, 'fetchTickersFees', true);
162653
+ const fetchTickersFees = this.safeBool(options, 'fetchTickersFees', true);
161848
162654
  let tickersResponse = {};
161849
162655
  if (fetchTickersFees) {
161850
162656
  tickersResponse = await this.publicGetMarketAllTickers(params);
@@ -162052,14 +162858,14 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
162052
162858
  const chain = chains[j];
162053
162859
  const chainId = this.safeString(chain, 'chainId');
162054
162860
  const networkCode = this.networkIdToCode(chainId);
162055
- const chainWithdrawEnabled = this.safeValue(chain, 'isWithdrawEnabled', false);
162861
+ const chainWithdrawEnabled = this.safeBool(chain, 'isWithdrawEnabled', false);
162056
162862
  if (isWithdrawEnabled === undefined) {
162057
162863
  isWithdrawEnabled = chainWithdrawEnabled;
162058
162864
  }
162059
162865
  else {
162060
162866
  isWithdrawEnabled = isWithdrawEnabled || chainWithdrawEnabled;
162061
162867
  }
162062
- const chainDepositEnabled = this.safeValue(chain, 'isDepositEnabled', false);
162868
+ const chainDepositEnabled = this.safeBool(chain, 'isDepositEnabled', false);
162063
162869
  if (isDepositEnabled === undefined) {
162064
162870
  isDepositEnabled = chainDepositEnabled;
162065
162871
  }
@@ -162817,9 +163623,9 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
162817
163623
  */
162818
163624
  await this.loadMarkets();
162819
163625
  const market = this.market(symbol);
162820
- const testOrder = this.safeValue(params, 'test', false);
163626
+ const testOrder = this.safeBool(params, 'test', false);
162821
163627
  params = this.omit(params, 'test');
162822
- const isHf = this.safeValue(params, 'hf', false);
163628
+ const isHf = this.safeBool(params, 'hf', false);
162823
163629
  const [triggerPrice, stopLossPrice, takeProfitPrice] = this.handleTriggerPrices(params);
162824
163630
  const tradeType = this.safeString(params, 'tradeType'); // keep it for backward compatibility
162825
163631
  const isTriggerOrder = (triggerPrice || stopLossPrice || takeProfitPrice);
@@ -162946,7 +163752,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
162946
163752
  'symbol': market['id'],
162947
163753
  'orderList': ordersRequests,
162948
163754
  };
162949
- const hf = this.safeValue(params, 'hf', false);
163755
+ const hf = this.safeBool(params, 'hf', false);
162950
163756
  params = this.omit(params, 'hf');
162951
163757
  let response = undefined;
162952
163758
  if (hf) {
@@ -163128,7 +163934,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
163128
163934
  const request = {};
163129
163935
  const clientOrderId = this.safeString2(params, 'clientOid', 'clientOrderId');
163130
163936
  const stop = this.safeValue2(params, 'stop', 'trigger', false);
163131
- const hf = this.safeValue(params, 'hf', false);
163937
+ const hf = this.safeBool(params, 'hf', false);
163132
163938
  if (hf) {
163133
163939
  if (symbol === undefined) {
163134
163940
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' cancelOrder() requires a symbol parameter for hf orders');
@@ -163183,8 +163989,8 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
163183
163989
  */
163184
163990
  await this.loadMarkets();
163185
163991
  const request = {};
163186
- const stop = this.safeValue(params, 'stop', false);
163187
- const hf = this.safeValue(params, 'hf', false);
163992
+ const stop = this.safeBool(params, 'stop', false);
163993
+ const hf = this.safeBool(params, 'hf', false);
163188
163994
  params = this.omit(params, ['stop', 'hf']);
163189
163995
  const [marginMode, query] = this.handleMarginModeAndParams('cancelAllOrders', params);
163190
163996
  if (symbol !== undefined) {
@@ -163241,8 +164047,8 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
163241
164047
  await this.loadMarkets();
163242
164048
  let lowercaseStatus = status.toLowerCase();
163243
164049
  const until = this.safeInteger2(params, 'until', 'till');
163244
- const stop = this.safeValue(params, 'stop', false);
163245
- const hf = this.safeValue(params, 'hf', false);
164050
+ const stop = this.safeBool(params, 'stop', false);
164051
+ const hf = this.safeBool(params, 'hf', false);
163246
164052
  params = this.omit(params, ['stop', 'hf', 'till', 'until']);
163247
164053
  const [marginMode, query] = this.handleMarginModeAndParams('fetchOrdersByStatus', params);
163248
164054
  if (lowercaseStatus === 'open') {
@@ -163416,8 +164222,8 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
163416
164222
  await this.loadMarkets();
163417
164223
  const request = {};
163418
164224
  const clientOrderId = this.safeString2(params, 'clientOid', 'clientOrderId');
163419
- const stop = this.safeValue(params, 'stop', false);
163420
- const hf = this.safeValue(params, 'hf', false);
164225
+ const stop = this.safeBool(params, 'stop', false);
164226
+ const hf = this.safeBool(params, 'hf', false);
163421
164227
  let market = undefined;
163422
164228
  if (symbol !== undefined) {
163423
164229
  market = this.market(symbol);
@@ -163594,10 +164400,10 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
163594
164400
  const marketId = this.safeString(order, 'symbol');
163595
164401
  const timestamp = this.safeInteger(order, 'createdAt');
163596
164402
  const feeCurrencyId = this.safeString(order, 'feeCurrency');
163597
- const cancelExist = this.safeValue(order, 'cancelExist', false);
164403
+ const cancelExist = this.safeBool(order, 'cancelExist', false);
163598
164404
  const responseStop = this.safeString(order, 'stop');
163599
164405
  const stop = responseStop !== undefined;
163600
- const stopTriggered = this.safeValue(order, 'stopTriggered', false);
164406
+ const stopTriggered = this.safeBool(order, 'stopTriggered', false);
163601
164407
  const isActive = this.safeValue2(order, 'isActive', 'active');
163602
164408
  const responseStatus = this.safeString(order, 'status');
163603
164409
  let status = undefined;
@@ -163694,7 +164500,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
163694
164500
  return await this.fetchPaginatedCallDynamic('fetchMyTrades', symbol, since, limit, params);
163695
164501
  }
163696
164502
  let request = {};
163697
- const hf = this.safeValue(params, 'hf', false);
164503
+ const hf = this.safeBool(params, 'hf', false);
163698
164504
  if (hf && symbol === undefined) {
163699
164505
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol parameter for hf orders');
163700
164506
  }
@@ -164373,7 +165179,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
164373
165179
  const accountsByType = this.safeValue(this.options, 'accountsByType');
164374
165180
  let type = this.safeString(accountsByType, requestedType, requestedType);
164375
165181
  params = this.omit(params, 'type');
164376
- const isHf = this.safeValue(params, 'hf', false);
165182
+ const isHf = this.safeBool(params, 'hf', false);
164377
165183
  if (isHf) {
164378
165184
  type = 'trade_hf';
164379
165185
  }
@@ -166528,7 +167334,7 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
166528
167334
  */
166529
167335
  await this.loadMarkets();
166530
167336
  const market = this.market(symbol);
166531
- const testOrder = this.safeValue(params, 'test', false);
167337
+ const testOrder = this.safeBool(params, 'test', false);
166532
167338
  params = this.omit(params, 'test');
166533
167339
  const orderRequest = this.createContractOrderRequest(symbol, type, side, amount, price, params);
166534
167340
  let response = undefined;
@@ -167191,7 +167997,7 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
167191
167997
  // const average = Precise.stringDiv (cost, Precise.stringMul (filled, market['contractSize']));
167192
167998
  // bool
167193
167999
  const isActive = this.safeValue(order, 'isActive');
167194
- const cancelExist = this.safeValue(order, 'cancelExist', false);
168000
+ const cancelExist = this.safeBool(order, 'cancelExist', false);
167195
168001
  let status = undefined;
167196
168002
  if (isActive !== undefined) {
167197
168003
  status = isActive ? 'open' : 'closed';
@@ -167915,7 +168721,7 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
167915
168721
  await this.loadMarkets();
167916
168722
  const market = this.market(symbol);
167917
168723
  let clientOrderId = this.safeString(params, 'clientOrderId');
167918
- const testOrder = this.safeValue(params, 'test', false);
168724
+ const testOrder = this.safeBool(params, 'test', false);
167919
168725
  params = this.omit(params, ['test', 'clientOrderId']);
167920
168726
  if (clientOrderId === undefined) {
167921
168727
  clientOrderId = this.numberToString(this.nonce());
@@ -172962,7 +173768,7 @@ class lbank extends _abstract_lbank_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
172962
173768
  await this.loadMarkets();
172963
173769
  const market = this.market(symbol);
172964
173770
  const clientOrderId = this.safeString2(params, 'custom_id', 'clientOrderId');
172965
- const postOnly = this.safeValue(params, 'postOnly', false);
173771
+ const postOnly = this.safeBool(params, 'postOnly', false);
172966
173772
  const timeInForce = this.safeStringUpper(params, 'timeInForce');
172967
173773
  params = this.omit(params, ['custom_id', 'clientOrderId', 'timeInForce', 'postOnly']);
172968
173774
  const request = {
@@ -178820,8 +179626,8 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
178820
179626
  const chain = chains[j];
178821
179627
  const networkId = this.safeString(chain, 'network');
178822
179628
  const network = this.safeNetwork(networkId);
178823
- const isDepositEnabled = this.safeValue(chain, 'depositEnable', false);
178824
- const isWithdrawEnabled = this.safeValue(chain, 'withdrawEnable', false);
179629
+ const isDepositEnabled = this.safeBool(chain, 'depositEnable', false);
179630
+ const isWithdrawEnabled = this.safeBool(chain, 'withdrawEnable', false);
178825
179631
  const active = (isDepositEnabled && isWithdrawEnabled);
178826
179632
  currencyActive = active || currencyActive;
178827
179633
  const withdrawMin = this.safeString(chain, 'withdrawMin');
@@ -180080,7 +180886,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
180080
180886
  await this.loadMarkets();
180081
180887
  const symbol = market['symbol'];
180082
180888
  const unavailableContracts = this.safeValue(this.options, 'unavailableContracts', {});
180083
- const isContractUnavaiable = this.safeValue(unavailableContracts, symbol, false);
180889
+ const isContractUnavaiable = this.safeBool(unavailableContracts, symbol, false);
180084
180890
  if (isContractUnavaiable) {
180085
180891
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' createSwapOrder() does not support yet this symbol:' + symbol);
180086
180892
  }
@@ -180148,7 +180954,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
180148
180954
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' createSwapOrder() requires a leverage parameter for isolated margin orders');
180149
180955
  }
180150
180956
  }
180151
- const reduceOnly = this.safeValue(params, 'reduceOnly', false);
180957
+ const reduceOnly = this.safeBool(params, 'reduceOnly', false);
180152
180958
  if (reduceOnly) {
180153
180959
  request['side'] = (side === 'buy') ? 2 : 4;
180154
180960
  }
@@ -181484,7 +182290,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
181484
182290
  const request = {};
181485
182291
  [marketType, params] = this.handleMarketTypeAndParams('fetchBalance', undefined, params);
181486
182292
  const marginMode = this.safeString(params, 'marginMode');
181487
- const isMargin = this.safeValue(params, 'margin', false);
182293
+ const isMargin = this.safeBool(params, 'margin', false);
181488
182294
  params = this.omit(params, ['margin', 'marginMode']);
181489
182295
  let response = undefined;
181490
182296
  if ((marginMode !== undefined) || (isMargin) || (marketType === 'margin')) {
@@ -183162,7 +183968,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
183162
183968
  * @returns {Array} the marginMode in lowercase
183163
183969
  */
183164
183970
  const defaultType = this.safeString(this.options, 'defaultType');
183165
- const isMargin = this.safeValue(params, 'margin', false);
183971
+ const isMargin = this.safeBool(params, 'margin', false);
183166
183972
  let marginMode = undefined;
183167
183973
  [marginMode, params] = super.handleMarginModeAndParams(methodName, params, defaultValue);
183168
183974
  if ((defaultType === 'margin') || (isMargin === true)) {
@@ -183254,7 +184060,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
183254
184060
  // {"code":10216,"msg":"No available deposit address"}
183255
184061
  // {"success":true, "code":0, "data":1634095541710}
183256
184062
  //
183257
- const success = this.safeValue(response, 'success', false); // v1
184063
+ const success = this.safeBool(response, 'success', false); // v1
183258
184064
  if (success === true) {
183259
184065
  return undefined;
183260
184066
  }
@@ -186906,7 +187712,7 @@ class novadax extends _abstract_novadax_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
186906
187712
  //
186907
187713
  const transfer = this.parseTransfer(response, currency);
186908
187714
  const transferOptions = this.safeValue(this.options, 'transfer', {});
186909
- const fillResponseFromRequest = this.safeValue(transferOptions, 'fillResponseFromRequest', true);
187715
+ const fillResponseFromRequest = this.safeBool(transferOptions, 'fillResponseFromRequest', true);
186910
187716
  if (fillResponseFromRequest) {
186911
187717
  transfer['fromAccount'] = fromAccount;
186912
187718
  transfer['toAccount'] = toAccount;
@@ -189145,7 +189951,7 @@ class okcoin extends _abstract_okcoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
189145
189951
  const symbol = market['symbol'];
189146
189952
  const last = this.safeString(ticker, 'last');
189147
189953
  const open = this.safeString(ticker, 'open24h');
189148
- const spot = this.safeValue(market, 'spot', false);
189954
+ const spot = this.safeBool(market, 'spot', false);
189149
189955
  const quoteVolume = spot ? this.safeString(ticker, 'volCcy24h') : undefined;
189150
189956
  const baseVolume = this.safeString(ticker, 'vol24h');
189151
189957
  const high = this.safeString(ticker, 'high24h');
@@ -189689,7 +190495,7 @@ class okcoin extends _abstract_okcoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
189689
190495
  }
189690
190496
  else {
189691
190497
  marginMode = defaultMarginMode;
189692
- margin = this.safeValue(params, 'margin', false);
190498
+ margin = this.safeBool(params, 'margin', false);
189693
190499
  }
189694
190500
  if (margin) {
189695
190501
  const defaultCurrency = (side === 'buy') ? market['quote'] : market['base'];
@@ -191588,6 +192394,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
191588
192394
  'api': {
191589
192395
  'public': {
191590
192396
  'get': {
192397
+ 'market/books-full': 2,
191591
192398
  'market/tickers': 1,
191592
192399
  'market/ticker': 1,
191593
192400
  'market/index-tickers': 1,
@@ -193086,6 +193893,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
193086
193893
  * @param {string} symbol unified symbol of the market to fetch the order book for
193087
193894
  * @param {int} [limit] the maximum amount of order book entries to return
193088
193895
  * @param {object} [params] extra parameters specific to the exchange API endpoint
193896
+ * @param {string} [params.method] 'publicGetMarketBooksFull' or 'publicGetMarketBooks' default is 'publicGetMarketBooks'
193089
193897
  * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
193090
193898
  */
193091
193899
  await this.loadMarkets();
@@ -193093,11 +193901,22 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
193093
193901
  const request = {
193094
193902
  'instId': market['id'],
193095
193903
  };
193096
- limit = (limit === undefined) ? 20 : limit;
193904
+ let method = undefined;
193905
+ [method, params] = this.handleOptionAndParams(params, 'fetchOrderBook', 'method', 'publicGetMarketBooks');
193906
+ if (method === 'publicGetMarketBooksFull' && limit === undefined) {
193907
+ limit = 5000;
193908
+ }
193909
+ limit = (limit === undefined) ? 100 : limit;
193097
193910
  if (limit !== undefined) {
193098
193911
  request['sz'] = limit; // max 400
193099
193912
  }
193100
- const response = await this.publicGetMarketBooks(this.extend(request, params));
193913
+ let response = undefined;
193914
+ if ((method === 'publicGetMarketBooksFull') || (limit > 400)) {
193915
+ response = await this.publicGetMarketBooksFull(this.extend(request, params));
193916
+ }
193917
+ else {
193918
+ response = await this.publicGetMarketBooks(this.extend(request, params));
193919
+ }
193101
193920
  //
193102
193921
  // {
193103
193922
  // "code": "0",
@@ -193151,7 +193970,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
193151
193970
  const symbol = market['symbol'];
193152
193971
  const last = this.safeString(ticker, 'last');
193153
193972
  const open = this.safeString(ticker, 'open24h');
193154
- const spot = this.safeValue(market, 'spot', false);
193973
+ const spot = this.safeBool(market, 'spot', false);
193155
193974
  const quoteVolume = spot ? this.safeString(ticker, 'volCcy24h') : undefined;
193156
193975
  const baseVolume = this.safeString(ticker, 'vol24h');
193157
193976
  const high = this.safeString(ticker, 'high24h');
@@ -193541,7 +194360,8 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
193541
194360
  if (since < historyBorder) {
193542
194361
  defaultType = 'HistoryCandles';
193543
194362
  }
193544
- request['before'] = since;
194363
+ const startTime = Math.max(since - 1, 0);
194364
+ request['before'] = startTime;
193545
194365
  request['after'] = this.sum(since, durationInMilliseconds * limit);
193546
194366
  }
193547
194367
  const until = this.safeInteger(params, 'until');
@@ -194007,7 +194827,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
194007
194827
  }
194008
194828
  else {
194009
194829
  marginMode = defaultMarginMode;
194010
- margin = this.safeValue(params, 'margin', false);
194830
+ margin = this.safeBool(params, 'margin', false);
194011
194831
  }
194012
194832
  if (spot) {
194013
194833
  if (margin) {
@@ -194506,7 +195326,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
194506
195326
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument');
194507
195327
  }
194508
195328
  const stop = this.safeValue2(params, 'stop', 'trigger');
194509
- const trailing = this.safeValue(params, 'trailing', false);
195329
+ const trailing = this.safeBool(params, 'trailing', false);
194510
195330
  if (stop || trailing) {
194511
195331
  const orderInner = await this.cancelOrders([id], symbol, params);
194512
195332
  return this.safeValue(orderInner, 0);
@@ -194574,7 +195394,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
194574
195394
  const clientOrderIds = this.parseIds(this.safeValue2(params, 'clOrdId', 'clientOrderId'));
194575
195395
  const algoIds = this.parseIds(this.safeValue(params, 'algoId'));
194576
195396
  const stop = this.safeValue2(params, 'stop', 'trigger');
194577
- const trailing = this.safeValue(params, 'trailing', false);
195397
+ const trailing = this.safeBool(params, 'trailing', false);
194578
195398
  if (stop || trailing) {
194579
195399
  method = 'privatePostTradeCancelAlgos';
194580
195400
  }
@@ -195073,7 +195893,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
195073
195893
  let method = this.safeString(params, 'method', defaultMethod);
195074
195894
  const ordType = this.safeString(params, 'ordType');
195075
195895
  const stop = this.safeValue2(params, 'stop', 'trigger');
195076
- const trailing = this.safeValue(params, 'trailing', false);
195896
+ const trailing = this.safeBool(params, 'trailing', false);
195077
195897
  if (trailing || stop || (ordType in algoOrderTypes)) {
195078
195898
  method = 'privateGetTradeOrdersAlgoPending';
195079
195899
  }
@@ -195242,7 +196062,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
195242
196062
  let method = this.safeString(params, 'method', defaultMethod);
195243
196063
  const ordType = this.safeString(params, 'ordType');
195244
196064
  const stop = this.safeValue2(params, 'stop', 'trigger');
195245
- const trailing = this.safeValue(params, 'trailing', false);
196065
+ const trailing = this.safeBool(params, 'trailing', false);
195246
196066
  if (trailing) {
195247
196067
  method = 'privateGetTradeOrdersAlgoHistory';
195248
196068
  request['ordType'] = 'move_order_stop';
@@ -195436,7 +196256,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
195436
196256
  let method = this.safeString(params, 'method', defaultMethod);
195437
196257
  const ordType = this.safeString(params, 'ordType');
195438
196258
  const stop = this.safeValue2(params, 'stop', 'trigger');
195439
- const trailing = this.safeValue(params, 'trailing', false);
196259
+ const trailing = this.safeBool(params, 'trailing', false);
195440
196260
  if (trailing || stop || (ordType in algoOrderTypes)) {
195441
196261
  method = 'privateGetTradeOrdersAlgoHistory';
195442
196262
  request['state'] = 'effective';
@@ -200818,6 +201638,7 @@ class p2b extends _abstract_p2b_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
200818
201638
  'countries': ['LT'],
200819
201639
  'rateLimit': 100,
200820
201640
  'version': 'v2',
201641
+ 'pro': true,
200821
201642
  'has': {
200822
201643
  'CORS': undefined,
200823
201644
  'spot': true,
@@ -205076,7 +205897,7 @@ class phemex extends _abstract_phemex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
205076
205897
  });
205077
205898
  }
205078
205899
  parseOrder(order, market = undefined) {
205079
- const isSwap = this.safeValue(market, 'swap', false);
205900
+ const isSwap = this.safeBool(market, 'swap', false);
205080
205901
  const hasPnl = ('closedPnl' in order);
205081
205902
  if (isSwap || hasPnl) {
205082
205903
  return this.parseSwapOrder(order, market);
@@ -206988,7 +207809,7 @@ class phemex extends _abstract_phemex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
206988
207809
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest(this.id + ' setLeverage() leverage should be between -100 and 100');
206989
207810
  }
206990
207811
  await this.loadMarkets();
206991
- const isHedged = this.safeValue(params, 'hedged', false);
207812
+ const isHedged = this.safeBool(params, 'hedged', false);
206992
207813
  const longLeverageRr = this.safeInteger(params, 'longLeverageRr');
206993
207814
  const shortLeverageRr = this.safeInteger(params, 'shortLeverageRr');
206994
207815
  const market = this.market(symbol);
@@ -207084,7 +207905,7 @@ class phemex extends _abstract_phemex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
207084
207905
  transfer = this.parseTransfer(response);
207085
207906
  }
207086
207907
  const transferOptions = this.safeValue(this.options, 'transfer', {});
207087
- const fillResponseFromRequest = this.safeValue(transferOptions, 'fillResponseFromRequest', true);
207908
+ const fillResponseFromRequest = this.safeBool(transferOptions, 'fillResponseFromRequest', true);
207088
207909
  if (fillResponseFromRequest) {
207089
207910
  if (transfer['fromAccount'] === undefined) {
207090
207911
  transfer['fromAccount'] = fromAccount;
@@ -210635,7 +211456,7 @@ class poloniexfutures extends _abstract_poloniexfutures_js__WEBPACK_IMPORTED_MOD
210635
211456
  request['timeInForce'] = timeInForce;
210636
211457
  }
210637
211458
  }
210638
- const postOnly = this.safeValue(params, 'postOnly', false);
211459
+ const postOnly = this.safeBool(params, 'postOnly', false);
210639
211460
  const hidden = this.safeValue(params, 'hidden');
210640
211461
  if (postOnly && (hidden !== undefined)) {
210641
211462
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest(this.id + ' createOrder() does not support the postOnly parameter together with a hidden parameter');
@@ -211326,8 +212147,8 @@ class poloniexfutures extends _abstract_poloniexfutures_js__WEBPACK_IMPORTED_MOD
211326
212147
  // precision reported by their api is 8 d.p.
211327
212148
  // const average = Precise.stringDiv (rawCost, Precise.stringMul (filled, market['contractSize']));
211328
212149
  // bool
211329
- const isActive = this.safeValue(order, 'isActive', false);
211330
- const cancelExist = this.safeValue(order, 'cancelExist', false);
212150
+ const isActive = this.safeBool(order, 'isActive', false);
212151
+ const cancelExist = this.safeBool(order, 'cancelExist', false);
211331
212152
  const status = isActive ? 'open' : 'closed';
211332
212153
  let id = this.safeString(order, 'id');
211333
212154
  if ('cancelledOrderIds' in order) {
@@ -211801,7 +212622,7 @@ class alpaca extends _alpaca_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
211801
212622
  const symbol = this.safeSymbol(marketId);
211802
212623
  const datetime = this.safeString(message, 't');
211803
212624
  const timestamp = this.parse8601(datetime);
211804
- const isSnapshot = this.safeValue(message, 'r', false);
212625
+ const isSnapshot = this.safeBool(message, 'r', false);
211805
212626
  let orderbook = this.safeValue(this.orderbooks, symbol);
211806
212627
  if (orderbook === undefined) {
211807
212628
  orderbook = this.orderBook();
@@ -214585,7 +215406,7 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
214585
215406
  return undefined;
214586
215407
  }
214587
215408
  const options = this.safeValue(this.options, 'watchBalance');
214588
- const fetchBalanceSnapshot = this.safeValue(options, 'fetchBalanceSnapshot', false);
215409
+ const fetchBalanceSnapshot = this.safeBool(options, 'fetchBalanceSnapshot', false);
214589
215410
  if (fetchBalanceSnapshot) {
214590
215411
  const messageHash = type + ':fetchBalanceSnapshot';
214591
215412
  if (!(messageHash in client.futures)) {
@@ -214711,8 +215532,8 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
214711
215532
  this.setBalanceCache(client, type);
214712
215533
  this.setPositionsCache(client, type);
214713
215534
  const options = this.safeValue(this.options, 'watchBalance');
214714
- const fetchBalanceSnapshot = this.safeValue(options, 'fetchBalanceSnapshot', false);
214715
- const awaitBalanceSnapshot = this.safeValue(options, 'awaitBalanceSnapshot', true);
215535
+ const fetchBalanceSnapshot = this.safeBool(options, 'fetchBalanceSnapshot', false);
215536
+ const awaitBalanceSnapshot = this.safeBool(options, 'awaitBalanceSnapshot', true);
214716
215537
  if (fetchBalanceSnapshot && awaitBalanceSnapshot) {
214717
215538
  await client.future(type + ':fetchBalanceSnapshot');
214718
215539
  }
@@ -214873,7 +215694,7 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
214873
215694
  let returnRateLimits = false;
214874
215695
  [returnRateLimits, params] = this.handleOptionAndParams(params, 'createOrderWs', 'returnRateLimits', false);
214875
215696
  payload['returnRateLimits'] = returnRateLimits;
214876
- const test = this.safeValue(params, 'test', false);
215697
+ const test = this.safeBool(params, 'test', false);
214877
215698
  params = this.omit(params, 'test');
214878
215699
  const message = {
214879
215700
  'id': messageHash,
@@ -220157,7 +220978,7 @@ class bitget extends _bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
220157
220978
  await this.loadMarkets();
220158
220979
  let market = undefined;
220159
220980
  let marketId = undefined;
220160
- const isStop = this.safeValue(params, 'stop', false);
220981
+ const isStop = this.safeBool(params, 'stop', false);
220161
220982
  params = this.omit(params, 'stop');
220162
220983
  let messageHash = (isStop) ? 'triggerOrder' : 'order';
220163
220984
  let subscriptionHash = 'order:trades';
@@ -221151,7 +221972,7 @@ class bitmart extends _bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
221151
221972
  return;
221152
221973
  }
221153
221974
  const options = this.safeValue(this.options, 'watchBalance');
221154
- const snapshot = this.safeValue(options, 'fetchBalanceSnapshot', true);
221975
+ const snapshot = this.safeBool(options, 'fetchBalanceSnapshot', true);
221155
221976
  if (snapshot) {
221156
221977
  const messageHash = type + ':' + 'fetchBalanceSnapshot';
221157
221978
  if (!(messageHash in client.futures)) {
@@ -222523,7 +223344,7 @@ class bitmex extends _bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
222523
223344
  'watchOrders': true,
222524
223345
  'watchPostions': true,
222525
223346
  'watchTicker': true,
222526
- 'watchTickers': false,
223347
+ 'watchTickers': true,
222527
223348
  'watchTrades': true,
222528
223349
  'watchTradesForSymbols': true,
222529
223350
  },
@@ -222575,6 +223396,46 @@ class bitmex extends _bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
222575
223396
  };
222576
223397
  return await this.watch(url, messageHash, this.extend(request, params), messageHash);
222577
223398
  }
223399
+ async watchTickers(symbols = undefined, params = {}) {
223400
+ /**
223401
+ * @method
223402
+ * @name bitmex#watchTickers
223403
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
223404
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
223405
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
223406
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
223407
+ */
223408
+ await this.loadMarkets();
223409
+ symbols = this.marketSymbols(symbols, undefined, true);
223410
+ const name = 'instrument';
223411
+ const url = this.urls['api']['ws'];
223412
+ const messageHashes = [];
223413
+ if (symbols !== undefined) {
223414
+ for (let i = 0; i < symbols.length; i++) {
223415
+ const symbol = symbols[i];
223416
+ const market = this.market(symbol);
223417
+ const hash = name + ':' + market['id'];
223418
+ messageHashes.push(hash);
223419
+ }
223420
+ }
223421
+ else {
223422
+ messageHashes.push(name);
223423
+ }
223424
+ const request = {
223425
+ 'op': 'subscribe',
223426
+ 'args': messageHashes,
223427
+ };
223428
+ const ticker = await this.watchMultiple(url, messageHashes, this.extend(request, params), messageHashes);
223429
+ if (this.newUpdates) {
223430
+ if (symbols === undefined) {
223431
+ return ticker;
223432
+ }
223433
+ const result = {};
223434
+ result[ticker['symbol']] = ticker;
223435
+ return result;
223436
+ }
223437
+ return this.filterByArray(this.tickers, 'symbol', symbols);
223438
+ }
222578
223439
  handleTicker(client, message) {
222579
223440
  //
222580
223441
  // {
@@ -222803,19 +223664,22 @@ class bitmex extends _bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
222803
223664
  // }
222804
223665
  //
222805
223666
  const table = this.safeString(message, 'table');
222806
- const data = this.safeValue(message, 'data', []);
223667
+ const data = this.safeList(message, 'data', []);
223668
+ const tickers = {};
222807
223669
  for (let i = 0; i < data.length; i++) {
222808
223670
  const update = data[i];
222809
- const marketId = this.safeValue(update, 'symbol');
223671
+ const marketId = this.safeString(update, 'symbol');
222810
223672
  const market = this.safeMarket(marketId);
222811
223673
  const symbol = market['symbol'];
222812
223674
  const messageHash = table + ':' + marketId;
222813
- let ticker = this.safeValue(this.tickers, symbol, {});
222814
- const info = this.safeValue(ticker, 'info', {});
223675
+ let ticker = this.safeDict(this.tickers, symbol, {});
223676
+ const info = this.safeDict(ticker, 'info', {});
222815
223677
  ticker = this.parseTicker(this.extend(info, update), market);
223678
+ tickers[symbol] = ticker;
222816
223679
  this.tickers[symbol] = ticker;
222817
223680
  client.resolve(ticker, messageHash);
222818
223681
  }
223682
+ client.resolve(tickers, 'instrument');
222819
223683
  return message;
222820
223684
  }
222821
223685
  async watchBalance(params = {}) {
@@ -223079,7 +223943,7 @@ class bitmex extends _bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
223079
223943
  return future;
223080
223944
  }
223081
223945
  handleAuthenticationMessage(client, message) {
223082
- const authenticated = this.safeValue(message, 'success', false);
223946
+ const authenticated = this.safeBool(message, 'success', false);
223083
223947
  const messageHash = 'authenticated';
223084
223948
  if (authenticated) {
223085
223949
  // we resolve the future here permanently so authentication only happens once
@@ -226849,7 +227713,7 @@ class bitvavo extends _bitvavo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
226849
227713
  // }
226850
227714
  //
226851
227715
  const messageHash = 'authenticated';
226852
- const authenticated = this.safeValue(message, 'authenticated', false);
227716
+ const authenticated = this.safeBool(message, 'authenticated', false);
226853
227717
  if (authenticated) {
226854
227718
  // we resolve the future here permanently so authentication only happens once
226855
227719
  client.resolve(message, messageHash);
@@ -229127,8 +229991,8 @@ class bybit extends _bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
229127
229991
  let subType = undefined;
229128
229992
  [subType, params] = this.handleSubTypeAndParams('watchBalance', undefined, params);
229129
229993
  const unified = await this.isUnifiedEnabled();
229130
- const isUnifiedMargin = this.safeValue(unified, 0, false);
229131
- const isUnifiedAccount = this.safeValue(unified, 1, false);
229994
+ const isUnifiedMargin = this.safeBool(unified, 0, false);
229995
+ const isUnifiedAccount = this.safeBool(unified, 1, false);
229132
229996
  const url = this.getUrlByMarketType(undefined, true, method, params);
229133
229997
  await this.authenticate(url);
229134
229998
  const topicByMarket = {
@@ -230355,7 +231219,7 @@ class cex extends _cex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
230355
231219
  order = this.parseWsOrderUpdate(data, market);
230356
231220
  }
230357
231221
  order['remaining'] = remains;
230358
- const canceled = this.safeValue(data, 'cancel', false);
231222
+ const canceled = this.safeBool(data, 'cancel', false);
230359
231223
  if (canceled) {
230360
231224
  order['status'] = 'canceled';
230361
231225
  }
@@ -230444,7 +231308,7 @@ class cex extends _cex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
230444
231308
  if (isTransaction) {
230445
231309
  timestamp = this.parse8601(time);
230446
231310
  }
230447
- const canceled = this.safeValue(order, 'cancel', false);
231311
+ const canceled = this.safeBool(order, 'cancel', false);
230448
231312
  let status = 'open';
230449
231313
  if (canceled) {
230450
231314
  status = 'canceled';
@@ -231155,8 +232019,8 @@ class cex extends _cex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
231155
232019
  /* harmony export */ Z: () => (/* binding */ coinbase)
231156
232020
  /* harmony export */ });
231157
232021
  /* harmony import */ var _coinbase_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(437);
231158
- /* harmony import */ var _base_errors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6689);
231159
- /* harmony import */ var _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3020);
232022
+ /* harmony import */ var _base_errors_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6689);
232023
+ /* harmony import */ var _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3020);
231160
232024
  /* harmony import */ var _static_dependencies_noble_hashes_sha256_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1372);
231161
232025
  // ---------------------------------------------------------------------------
231162
232026
 
@@ -231267,7 +232131,7 @@ class coinbase extends _coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
231267
232131
  * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
231268
232132
  */
231269
232133
  if (symbols === undefined) {
231270
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' watchTickers requires a symbols argument');
232134
+ symbols = this.symbols;
231271
232135
  }
231272
232136
  const name = 'ticker_batch';
231273
232137
  const tickers = await this.subscribe(name, symbols, params);
@@ -231491,7 +232355,7 @@ class coinbase extends _coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
231491
232355
  let tradesArray = this.safeValue(this.trades, symbol);
231492
232356
  if (tradesArray === undefined) {
231493
232357
  const tradesLimit = this.safeInteger(this.options, 'tradesLimit', 1000);
231494
- tradesArray = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_3__/* .ArrayCacheBySymbolById */ .hl(tradesLimit);
232358
+ tradesArray = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_2__/* .ArrayCacheBySymbolById */ .hl(tradesLimit);
231495
232359
  this.trades[symbol] = tradesArray;
231496
232360
  }
231497
232361
  for (let i = 0; i < events.length; i++) {
@@ -231538,7 +232402,7 @@ class coinbase extends _coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
231538
232402
  const marketIds = [];
231539
232403
  if (this.orders === undefined) {
231540
232404
  const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
231541
- this.orders = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_3__/* .ArrayCacheBySymbolById */ .hl(limit);
232405
+ this.orders = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_2__/* .ArrayCacheBySymbolById */ .hl(limit);
231542
232406
  }
231543
232407
  for (let i = 0; i < events.length; i++) {
231544
232408
  const event = events[i];
@@ -231708,7 +232572,7 @@ class coinbase extends _coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
231708
232572
  const type = this.safeString(message, 'type');
231709
232573
  if (type === 'error') {
231710
232574
  const errorMessage = this.safeString(message, 'message');
231711
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(errorMessage);
232575
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.ExchangeError(errorMessage);
231712
232576
  }
231713
232577
  const method = this.safeValue(methods, channel);
231714
232578
  return method.call(this, client, message);
@@ -245400,7 +246264,7 @@ class independentreserve extends _independentreserve_js__WEBPACK_IMPORTED_MODULE
245400
246264
  const orderBook = this.safeValue(message, 'Data', {});
245401
246265
  const messageHash = 'orderbook:' + symbol + ':' + depth;
245402
246266
  const subscription = this.safeValue(client.subscriptions, messageHash, {});
245403
- const receivedSnapshot = this.safeValue(subscription, 'receivedSnapshot', false);
246267
+ const receivedSnapshot = this.safeBool(subscription, 'receivedSnapshot', false);
245404
246268
  const timestamp = this.safeInteger(message, 'Time');
245405
246269
  let storedOrderBook = this.safeValue(this.orderbooks, symbol);
245406
246270
  if (storedOrderBook === undefined) {
@@ -255052,7 +255916,7 @@ class okx extends _okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
255052
255916
  // By default, receive order updates from any instrument type
255053
255917
  let type = undefined;
255054
255918
  [type, params] = this.handleOptionAndParams(params, 'watchMyTrades', 'type', 'ANY');
255055
- const isStop = this.safeValue(params, 'stop', false);
255919
+ const isStop = this.safeBool(params, 'stop', false);
255056
255920
  params = this.omit(params, ['stop']);
255057
255921
  await this.loadMarkets();
255058
255922
  await this.authenticate({ 'access': isStop ? 'business' : 'private' });
@@ -256879,7 +257743,7 @@ class onetrading extends _onetrading_js__WEBPACK_IMPORTED_MODULE_0__/* ["default
256879
257743
  subscription = this.safeValue(client.subscriptions, subscriptionHash);
256880
257744
  if (subscription !== undefined) {
256881
257745
  const ohlcvMarket = this.safeValue(subscription, marketId, {});
256882
- const marketSubscribed = this.safeValue(ohlcvMarket, timeframe, false);
257746
+ const marketSubscribed = this.safeBool(ohlcvMarket, timeframe, false);
256883
257747
  if (!marketSubscribed) {
256884
257748
  type = 'UPDATE_SUBSCRIPTION';
256885
257749
  client.subscriptions[subscriptionHash] = undefined;
@@ -257120,7 +257984,7 @@ class onetrading extends _onetrading_js__WEBPACK_IMPORTED_MODULE_0__/* ["default
257120
257984
  if (subscription !== undefined) {
257121
257985
  for (let i = 0; i < marketIds.length; i++) {
257122
257986
  const marketId = marketIds[i];
257123
- const marketSubscribed = this.safeValue(subscription, marketId, false);
257987
+ const marketSubscribed = this.safeBool(subscription, marketId, false);
257124
257988
  if (!marketSubscribed) {
257125
257989
  type = 'UPDATE_SUBSCRIPTION';
257126
257990
  client.subscriptions[subscriptionHash] = undefined;
@@ -257158,6 +258022,446 @@ class onetrading extends _onetrading_js__WEBPACK_IMPORTED_MODULE_0__/* ["default
257158
258022
  }
257159
258023
 
257160
258024
 
258025
+ /***/ }),
258026
+
258027
+ /***/ 8516:
258028
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
258029
+
258030
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
258031
+ /* harmony export */ Z: () => (/* binding */ p2b)
258032
+ /* harmony export */ });
258033
+ /* harmony import */ var _p2b_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2466);
258034
+ /* harmony import */ var _base_errors_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6689);
258035
+ /* harmony import */ var _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3020);
258036
+ // ---------------------------------------------------------------------------
258037
+
258038
+
258039
+
258040
+ // ---------------------------------------------------------------------------
258041
+ class p2b extends _p2b_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
258042
+ describe() {
258043
+ return this.deepExtend(super.describe(), {
258044
+ 'has': {
258045
+ 'ws': true,
258046
+ 'cancelAllOrdersWs': false,
258047
+ 'cancelOrdersWs': false,
258048
+ 'cancelOrderWs': false,
258049
+ 'createOrderWs': false,
258050
+ 'editOrderWs': false,
258051
+ 'fetchBalanceWs': false,
258052
+ 'fetchOpenOrdersWs': false,
258053
+ 'fetchOrderWs': false,
258054
+ 'fetchTradesWs': false,
258055
+ 'watchBalance': false,
258056
+ 'watchMyTrades': false,
258057
+ 'watchOHLCV': true,
258058
+ 'watchOrderBook': true,
258059
+ 'watchOrders': false,
258060
+ // 'watchStatus': true,
258061
+ 'watchTicker': true,
258062
+ 'watchTickers': false,
258063
+ 'watchTrades': true,
258064
+ },
258065
+ 'urls': {
258066
+ 'api': {
258067
+ 'ws': 'wss://apiws.p2pb2b.com/',
258068
+ },
258069
+ },
258070
+ 'options': {
258071
+ 'OHLCVLimit': 1000,
258072
+ 'tradesLimit': 1000,
258073
+ 'timeframes': {
258074
+ '15m': 900,
258075
+ '30m': 1800,
258076
+ '1h': 3600,
258077
+ '1d': 86400,
258078
+ },
258079
+ 'watchTicker': {
258080
+ 'name': 'state', // or 'price'
258081
+ },
258082
+ 'watchTickers': {
258083
+ 'name': 'state', // or 'price'
258084
+ },
258085
+ },
258086
+ 'streaming': {
258087
+ 'ping': this.ping,
258088
+ },
258089
+ });
258090
+ }
258091
+ async subscribe(name, messageHash, request, params = {}) {
258092
+ /**
258093
+ * @ignore
258094
+ * @method
258095
+ * @description Connects to a websocket channel
258096
+ * @param {string} name name of the channel
258097
+ * @param {string} messageHash string to look up in handler
258098
+ * @param {string[]|float[]} request endpoint parameters
258099
+ * @param {object} [params] extra parameters specific to the p2b api
258100
+ * @returns {object} data from the websocket stream
258101
+ */
258102
+ const url = this.urls['api']['ws'];
258103
+ const subscribe = {
258104
+ 'method': name,
258105
+ 'params': request,
258106
+ 'id': this.milliseconds(),
258107
+ };
258108
+ const query = this.extend(subscribe, params);
258109
+ return await this.watch(url, messageHash, query, messageHash);
258110
+ }
258111
+ async watchOHLCV(symbol, timeframe = '15m', since = undefined, limit = undefined, params = {}) {
258112
+ /**
258113
+ * @method
258114
+ * @name p2b#watchOHLCV
258115
+ * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market. Can only subscribe to one timeframe at a time for each symbol
258116
+ * @see https://github.com/P2B-team/P2B-WSS-Public/blob/main/wss_documentation.md#kline-candlestick
258117
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
258118
+ * @param {string} timeframe 15m, 30m, 1h or 1d
258119
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
258120
+ * @param {int} [limit] the maximum amount of candles to fetch
258121
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
258122
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
258123
+ */
258124
+ await this.loadMarkets();
258125
+ const timeframes = this.safeValue(this.options, 'timeframes', {});
258126
+ const channel = this.safeInteger(timeframes, timeframe);
258127
+ if (channel === undefined) {
258128
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' watchOHLCV cannot take a timeframe of ' + timeframe);
258129
+ }
258130
+ const market = this.market(symbol);
258131
+ const request = [
258132
+ market['id'],
258133
+ channel,
258134
+ ];
258135
+ const messageHash = 'kline::' + market['symbol'];
258136
+ const ohlcv = await this.subscribe('kline.subscribe', messageHash, request, params);
258137
+ if (this.newUpdates) {
258138
+ limit = ohlcv.getLimit(symbol, limit);
258139
+ }
258140
+ return this.filterBySinceLimit(ohlcv, since, limit, 0, true);
258141
+ }
258142
+ async watchTicker(symbol, params = {}) {
258143
+ /**
258144
+ * @method
258145
+ * @name p2b#watchTicker
258146
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
258147
+ * @see https://github.com/P2B-team/P2B-WSS-Public/blob/main/wss_documentation.md#last-price
258148
+ * @see https://github.com/P2B-team/P2B-WSS-Public/blob/main/wss_documentation.md#market-status
258149
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
258150
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
258151
+ * @param {object} [params.method] 'state' (default) or 'price'
258152
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
258153
+ */
258154
+ await this.loadMarkets();
258155
+ const watchTickerOptions = this.safeValue(this.options, 'watchTicker');
258156
+ let name = this.safeString(watchTickerOptions, 'name', 'state'); // or price
258157
+ [name, params] = this.handleOptionAndParams(params, 'method', 'name', name);
258158
+ const market = this.market(symbol);
258159
+ const request = [
258160
+ market['id'],
258161
+ ];
258162
+ const messageHash = name + '::' + market['symbol'];
258163
+ return await this.subscribe(name + '.subscribe', messageHash, request, params);
258164
+ }
258165
+ async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
258166
+ /**
258167
+ * @method
258168
+ * @name p2b#watchTrades
258169
+ * @description get the list of most recent trades for a particular symbol
258170
+ * @see https://github.com/P2B-team/P2B-WSS-Public/blob/main/wss_documentation.md#deals
258171
+ * @param {string} symbol unified symbol of the market to fetch trades for
258172
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
258173
+ * @param {int} [limit] the maximum amount of trades to fetch
258174
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
258175
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
258176
+ */
258177
+ await this.loadMarkets();
258178
+ const market = this.market(symbol);
258179
+ const request = [
258180
+ market['id'],
258181
+ ];
258182
+ const messageHash = 'deals::' + market['symbol'];
258183
+ const trades = await this.subscribe('deals.subscribe', messageHash, request, params);
258184
+ if (this.newUpdates) {
258185
+ limit = trades.getLimit(symbol, limit);
258186
+ }
258187
+ return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
258188
+ }
258189
+ async watchOrderBook(symbol, limit = undefined, params = {}) {
258190
+ /**
258191
+ * @method
258192
+ * @name p2b#watchOrderBook
258193
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
258194
+ * @see https://github.com/P2B-team/P2B-WSS-Public/blob/main/wss_documentation.md#depth-of-market
258195
+ * @param {string} symbol unified symbol of the market to fetch the order book for
258196
+ * @param {int} [limit] 1-100, default=100
258197
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
258198
+ * @param {float} [params.interval] 0, 0.00000001, 0.0000001, 0.000001, 0.00001, 0.0001, 0.001, 0.01, 0.1, interval of precision for order, default=0.001
258199
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
258200
+ */
258201
+ await this.loadMarkets();
258202
+ const market = this.market(symbol);
258203
+ const name = 'depth.subscribe';
258204
+ const messageHash = 'orderbook::' + market['symbol'];
258205
+ const interval = this.safeString(params, 'interval', '0.001');
258206
+ if (limit === undefined) {
258207
+ limit = 100;
258208
+ }
258209
+ const request = [
258210
+ market['id'],
258211
+ limit,
258212
+ interval,
258213
+ ];
258214
+ const orderbook = await this.subscribe(name, messageHash, request, params);
258215
+ return orderbook.limit();
258216
+ }
258217
+ handleOHLCV(client, message) {
258218
+ //
258219
+ // {
258220
+ // "method": "kline.update",
258221
+ // "params": [
258222
+ // [
258223
+ // 1657648800, // Kline start time
258224
+ // "0.054146", // Kline open price
258225
+ // "0.053938", // Kline close price (current price)
258226
+ // "0.054146", // Kline high price
258227
+ // "0.053911", // Kline low price
258228
+ // "596.4674", // Volume for stock currency
258229
+ // "32.2298758767", // Volume for money currency
258230
+ // "ETH_BTC" // Market
258231
+ // ]
258232
+ // ],
258233
+ // "id": null
258234
+ // }
258235
+ //
258236
+ let data = this.safeList(message, 'params');
258237
+ data = this.safeList(data, 0);
258238
+ const method = this.safeString(message, 'method');
258239
+ const splitMethod = method.split('.');
258240
+ const channel = this.safeString(splitMethod, 0);
258241
+ const marketId = this.safeString(data, 7);
258242
+ const market = this.safeMarket(marketId);
258243
+ const timeframes = this.safeDict(this.options, 'timeframes', {});
258244
+ const timeframe = this.findTimeframe(channel, timeframes);
258245
+ const symbol = this.safeString(market, 'symbol');
258246
+ const messageHash = channel + '::' + symbol;
258247
+ const parsed = this.parseOHLCV(data, market);
258248
+ this.ohlcvs[symbol] = this.safeValue(this.ohlcvs, symbol, {});
258249
+ let stored = this.safeValue(this.ohlcvs[symbol], timeframe);
258250
+ if (symbol !== undefined) {
258251
+ if (stored === undefined) {
258252
+ const limit = this.safeInteger(this.options, 'OHLCVLimit', 1000);
258253
+ stored = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_2__/* .ArrayCacheByTimestamp */ .Py(limit);
258254
+ this.ohlcvs[symbol][timeframe] = stored;
258255
+ }
258256
+ stored.append(parsed);
258257
+ client.resolve(stored, messageHash);
258258
+ }
258259
+ return message;
258260
+ }
258261
+ handleTrade(client, message) {
258262
+ //
258263
+ // {
258264
+ // "method": "deals.update",
258265
+ // "params": [
258266
+ // "ETH_BTC",
258267
+ // [
258268
+ // {
258269
+ // "id": 4503032979, // Order_id
258270
+ // "amount": "0.103",
258271
+ // "type": "sell", // Side
258272
+ // "time": 1657661950.8487639, // Creation time
258273
+ // "price": "0.05361"
258274
+ // },
258275
+ // ...
258276
+ // ]
258277
+ // ],
258278
+ // "id": null
258279
+ // }
258280
+ //
258281
+ const data = this.safeList(message, 'params', []);
258282
+ const trades = this.safeList(data, 1);
258283
+ const marketId = this.safeString(data, 0);
258284
+ const market = this.safeMarket(marketId);
258285
+ const symbol = this.safeString(market, 'symbol');
258286
+ let tradesArray = this.safeValue(this.trades, symbol);
258287
+ if (tradesArray === undefined) {
258288
+ const tradesLimit = this.safeInteger(this.options, 'tradesLimit', 1000);
258289
+ tradesArray = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_2__/* .ArrayCache */ .ZL(tradesLimit);
258290
+ this.trades[symbol] = tradesArray;
258291
+ }
258292
+ for (let i = 0; i < trades.length; i++) {
258293
+ const item = trades[i];
258294
+ const trade = this.parseTrade(item, market);
258295
+ tradesArray.append(trade);
258296
+ }
258297
+ const messageHash = 'deals::' + symbol;
258298
+ client.resolve(tradesArray, messageHash);
258299
+ return message;
258300
+ }
258301
+ handleTicker(client, message) {
258302
+ //
258303
+ // state
258304
+ //
258305
+ // {
258306
+ // "method": "state.update",
258307
+ // "params": [
258308
+ // "ETH_BTC",
258309
+ // {
258310
+ // "high": "0.055774", // High price for the last 24h
258311
+ // "close": "0.053679", // Close price for the last 24h
258312
+ // "low": "0.053462", // Low price for the last 24h
258313
+ // "period": 86400, // Period 24h
258314
+ // "last": "0.053679", // Last price for the last 24h
258315
+ // "volume": "38463.6132", // Stock volume for the last 24h
258316
+ // "open": "0.055682", // Open price for the last 24h
258317
+ // "deal": "2091.0038055314" // Money volume for the last 24h
258318
+ // }
258319
+ // ],
258320
+ // "id": null
258321
+ // }
258322
+ //
258323
+ // price
258324
+ //
258325
+ // {
258326
+ // "method": "price.update",
258327
+ // "params": [
258328
+ // "ETH_BTC", // market
258329
+ // "0.053836" // last price
258330
+ // ],
258331
+ // "id": null
258332
+ // }
258333
+ //
258334
+ const data = this.safeList(message, 'params', []);
258335
+ const marketId = this.safeString(data, 0);
258336
+ const market = this.safeMarket(marketId);
258337
+ const method = this.safeString(message, 'method');
258338
+ const splitMethod = method.split('.');
258339
+ const messageHashStart = this.safeString(splitMethod, 0);
258340
+ const tickerData = this.safeDict(data, 1);
258341
+ let ticker = undefined;
258342
+ if (method === 'price.update') {
258343
+ const lastPrice = this.safeString(data, 1);
258344
+ ticker = this.safeTicker({
258345
+ 'last': lastPrice,
258346
+ 'close': lastPrice,
258347
+ 'symbol': market['symbol'],
258348
+ });
258349
+ }
258350
+ else {
258351
+ ticker = this.parseTicker(tickerData, market);
258352
+ }
258353
+ const symbol = ticker['symbol'];
258354
+ const messageHash = messageHashStart + '::' + symbol;
258355
+ client.resolve(ticker, messageHash);
258356
+ return message;
258357
+ }
258358
+ handleOrderBook(client, message) {
258359
+ //
258360
+ // {
258361
+ // "method": "depth.update",
258362
+ // "params": [
258363
+ // false, // true - all records, false - new records
258364
+ // {
258365
+ // "asks": [ // side
258366
+ // [
258367
+ // "19509.81", // price
258368
+ // "0.277" // amount
258369
+ // ]
258370
+ // ]
258371
+ // },
258372
+ // "BTC_USDT"
258373
+ // ],
258374
+ // "id": null
258375
+ // }
258376
+ //
258377
+ const params = this.safeList(message, 'params', []);
258378
+ const data = this.safeDict(params, 1);
258379
+ const asks = this.safeList(data, 'asks');
258380
+ const bids = this.safeList(data, 'bids');
258381
+ const marketId = this.safeString(params, 2);
258382
+ const market = this.safeMarket(marketId);
258383
+ const symbol = market['symbol'];
258384
+ const messageHash = 'orderbook::' + market['symbol'];
258385
+ const subscription = this.safeValue(client.subscriptions, messageHash, {});
258386
+ const limit = this.safeInteger(subscription, 'limit');
258387
+ let orderbook = this.safeValue(this.orderbooks, symbol);
258388
+ if (orderbook === undefined) {
258389
+ this.orderbooks[symbol] = this.orderBook({}, limit);
258390
+ orderbook = this.orderbooks[symbol];
258391
+ }
258392
+ if (bids !== undefined) {
258393
+ for (let i = 0; i < bids.length; i++) {
258394
+ const bid = this.safeValue(bids, i);
258395
+ const price = this.safeNumber(bid, 0);
258396
+ const amount = this.safeNumber(bid, 1);
258397
+ orderbook['bids'].store(price, amount);
258398
+ }
258399
+ }
258400
+ if (asks !== undefined) {
258401
+ for (let i = 0; i < asks.length; i++) {
258402
+ const ask = this.safeValue(asks, i);
258403
+ const price = this.safeNumber(ask, 0);
258404
+ const amount = this.safeNumber(ask, 1);
258405
+ orderbook['asks'].store(price, amount);
258406
+ }
258407
+ }
258408
+ orderbook['symbol'] = symbol;
258409
+ client.resolve(orderbook, messageHash);
258410
+ }
258411
+ handleMessage(client, message) {
258412
+ if (this.handleErrorMessage(client, message)) {
258413
+ return;
258414
+ }
258415
+ const result = this.safeString(message, 'result');
258416
+ if (result === 'pong') {
258417
+ this.handlePong(client, message);
258418
+ return;
258419
+ }
258420
+ const method = this.safeString(message, 'method');
258421
+ const methods = {
258422
+ 'depth.update': this.handleOrderBook,
258423
+ 'price.update': this.handleTicker,
258424
+ 'kline.update': this.handleOHLCV,
258425
+ 'state.update': this.handleTicker,
258426
+ 'deals.update': this.handleTrade,
258427
+ };
258428
+ const endpoint = this.safeValue(methods, method);
258429
+ if (endpoint !== undefined) {
258430
+ return endpoint.call(this, client, message);
258431
+ }
258432
+ }
258433
+ handleErrorMessage(client, message) {
258434
+ const error = this.safeString(message, 'error');
258435
+ if (error !== undefined) {
258436
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError(this.id + ' error: ' + this.json(error));
258437
+ }
258438
+ return false;
258439
+ }
258440
+ ping(client) {
258441
+ /**
258442
+ * @see https://github.com/P2B-team/P2B-WSS-Public/blob/main/wss_documentation.md#ping
258443
+ * @param client
258444
+ */
258445
+ return {
258446
+ 'method': 'server.ping',
258447
+ 'params': [],
258448
+ 'id': this.milliseconds(),
258449
+ };
258450
+ }
258451
+ handlePong(client, message) {
258452
+ //
258453
+ // {
258454
+ // error: null,
258455
+ // result: 'pong',
258456
+ // id: 1706539608030
258457
+ // }
258458
+ //
258459
+ client.lastPong = this.safeInteger(message, 'id');
258460
+ return message;
258461
+ }
258462
+ }
258463
+
258464
+
257161
258465
  /***/ }),
257162
258466
 
257163
258467
  /***/ 4360:
@@ -261081,7 +262385,7 @@ class probit extends _probit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
261081
262385
  // }
261082
262386
  // }
261083
262387
  //
261084
- const reset = this.safeValue(message, 'reset', false);
262388
+ const reset = this.safeBool(message, 'reset', false);
261085
262389
  const data = this.safeValue(message, 'data', {});
261086
262390
  const currencyIds = Object.keys(data);
261087
262391
  if (reset) {
@@ -261187,7 +262491,7 @@ class probit extends _probit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
261187
262491
  const symbol = this.safeSymbol(marketId);
261188
262492
  const market = this.safeMarket(marketId);
261189
262493
  const trades = this.safeValue(message, 'recent_trades', []);
261190
- const reset = this.safeValue(message, 'reset', false);
262494
+ const reset = this.safeBool(message, 'reset', false);
261191
262495
  const messageHash = 'trades:' + symbol;
261192
262496
  let stored = this.safeValue(this.trades, symbol);
261193
262497
  if (stored === undefined || reset) {
@@ -261260,7 +262564,7 @@ class probit extends _probit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
261260
262564
  if (length === 0) {
261261
262565
  return;
261262
262566
  }
261263
- const reset = this.safeValue(message, 'reset', false);
262567
+ const reset = this.safeBool(message, 'reset', false);
261264
262568
  const messageHash = 'myTrades';
261265
262569
  let stored = this.myTrades;
261266
262570
  if ((stored === undefined) || reset) {
@@ -261348,7 +262652,7 @@ class probit extends _probit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
261348
262652
  return;
261349
262653
  }
261350
262654
  const messageHash = 'orders';
261351
- const reset = this.safeValue(message, 'reset', false);
262655
+ const reset = this.safeBool(message, 'reset', false);
261352
262656
  let stored = this.orders;
261353
262657
  if (stored === undefined || reset) {
261354
262658
  const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
@@ -261440,7 +262744,7 @@ class probit extends _probit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
261440
262744
  storedOrderBook = this.orderBook({});
261441
262745
  this.orderbooks[symbol] = storedOrderBook;
261442
262746
  }
261443
- const reset = this.safeValue(message, 'reset', false);
262747
+ const reset = this.safeBool(message, 'reset', false);
261444
262748
  if (reset) {
261445
262749
  const snapshot = this.parseOrderBook(dataBySide, symbol, undefined, 'buy', 'sell', 'price', 'quantity');
261446
262750
  storedOrderBook.reset(snapshot);
@@ -263344,7 +264648,7 @@ class whitebit extends _whitebit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
263344
264648
  let hasSymbolSubscription = true;
263345
264649
  const market = this.market(symbol);
263346
264650
  const marketId = market['id'];
263347
- const isSubscribed = this.safeValue(subscription, marketId, false);
264651
+ const isSubscribed = this.safeBool(subscription, marketId, false);
263348
264652
  if (!isSubscribed) {
263349
264653
  subscription[marketId] = true;
263350
264654
  hasSymbolSubscription = false;
@@ -264731,7 +266035,7 @@ class probit extends _abstract_probit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
264731
266035
  const quoteId = this.safeString(market, 'quote_currency_id');
264732
266036
  const base = this.safeCurrencyCode(baseId);
264733
266037
  const quote = this.safeCurrencyCode(quoteId);
264734
- const closed = this.safeValue(market, 'closed', false);
266038
+ const closed = this.safeBool(market, 'closed', false);
264735
266039
  const takerFeeRate = this.safeString(market, 'taker_fee_rate');
264736
266040
  const taker = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringDiv(takerFeeRate, '100');
264737
266041
  const makerFeeRate = this.safeString(market, 'maker_fee_rate');
@@ -275975,7 +277279,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
275975
277279
  const market = this.market(symbol);
275976
277280
  const uppercaseSide = side.toUpperCase();
275977
277281
  let uppercaseType = type.toUpperCase();
275978
- const postOnly = this.safeValue(params, 'postOnly', false);
277282
+ const postOnly = this.safeBool(params, 'postOnly', false);
275979
277283
  if (postOnly) {
275980
277284
  uppercaseType = 'POST_ONLY';
275981
277285
  params = this.omit(params, ['postOnly']);
@@ -277515,7 +278819,7 @@ class tokocrypto extends _abstract_tokocrypto_js__WEBPACK_IMPORTED_MODULE_0__/*
277515
278819
  break;
277516
278820
  }
277517
278821
  }
277518
- const isMarginTradingAllowed = this.safeValue(market, 'isMarginTradingAllowed', false);
278822
+ const isMarginTradingAllowed = this.safeBool(market, 'isMarginTradingAllowed', false);
277519
278823
  const entry = {
277520
278824
  'id': id,
277521
278825
  'lowercaseId': lowercaseId,
@@ -278414,7 +279718,7 @@ class tokocrypto extends _abstract_tokocrypto_js__WEBPACK_IMPORTED_MODULE_0__/*
278414
279718
  await this.loadMarkets();
278415
279719
  const market = this.market(symbol);
278416
279720
  const clientOrderId = this.safeString2(params, 'clientOrderId', 'clientId');
278417
- const postOnly = this.safeValue(params, 'postOnly', false);
279721
+ const postOnly = this.safeBool(params, 'postOnly', false);
278418
279722
  // only supported for spot/margin api
278419
279723
  if (postOnly) {
278420
279724
  type = 'LIMIT_MAKER';
@@ -279288,7 +280592,7 @@ class tokocrypto extends _abstract_tokocrypto_js__WEBPACK_IMPORTED_MODULE_0__/*
279288
280592
  }
279289
280593
  // check success value for wapi endpoints
279290
280594
  // response in format {'msg': 'The coin does not exist.', 'success': true/false}
279291
- const success = this.safeValue(response, 'success', true);
280595
+ const success = this.safeBool(response, 'success', true);
279292
280596
  if (!success) {
279293
280597
  const messageInner = this.safeString(response, 'msg');
279294
280598
  let parsedMessage = undefined;
@@ -281639,7 +282943,7 @@ class wavesexchange extends _abstract_wavesexchange_js__WEBPACK_IMPORTED_MODULE_
281639
282943
  // "matcherFee":"4077612"
281640
282944
  // }
281641
282945
  // }
281642
- const isDiscountFee = this.safeValue(params, 'isDiscountFee', false);
282946
+ const isDiscountFee = this.safeBool(params, 'isDiscountFee', false);
281643
282947
  let mode = undefined;
281644
282948
  if (isDiscountFee) {
281645
282949
  mode = this.safeValue(response, 'discount');
@@ -283656,7 +284960,7 @@ class wavesexchange extends _abstract_wavesexchange_js__WEBPACK_IMPORTED_MODULE_
283656
284960
  }
283657
284961
  handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
283658
284962
  const errorCode = this.safeString(response, 'error');
283659
- const success = this.safeValue(response, 'success', true);
284963
+ const success = this.safeBool(response, 'success', true);
283660
284964
  const Exception = this.safeValue(this.exceptions, errorCode);
283661
284965
  if (Exception !== undefined) {
283662
284966
  const messageInner = this.safeString(response, 'message');
@@ -285246,8 +286550,8 @@ class whitebit extends _abstract_whitebit_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
285246
286550
  const currency = response[id];
285247
286551
  // breaks down in Python due to utf8 encoding issues on the exchange side
285248
286552
  // const name = this.safeString (currency, 'name');
285249
- const canDeposit = this.safeValue(currency, 'can_deposit', true);
285250
- const canWithdraw = this.safeValue(currency, 'can_withdraw', true);
286553
+ const canDeposit = this.safeBool(currency, 'can_deposit', true);
286554
+ const canWithdraw = this.safeBool(currency, 'can_withdraw', true);
285251
286555
  const active = canDeposit && canWithdraw;
285252
286556
  const code = this.safeCurrencyCode(id);
285253
286557
  result[code] = {
@@ -288277,7 +289581,7 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
288277
289581
  * @param {boolean} [params.stop] whether the order is a stop/algo order
288278
289582
  * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
288279
289583
  */
288280
- const stop = this.safeValue(params, 'stop', false);
289584
+ const stop = this.safeBool(params, 'stop', false);
288281
289585
  params = this.omit(params, 'stop');
288282
289586
  if (!stop && (symbol === undefined)) {
288283
289587
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument');
@@ -288445,7 +289749,7 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
288445
289749
  const request = {};
288446
289750
  let market = undefined;
288447
289751
  const stop = this.safeValue(params, 'stop');
288448
- const trailing = this.safeValue(params, 'trailing', false);
289752
+ const trailing = this.safeBool(params, 'trailing', false);
288449
289753
  params = this.omit(params, ['stop', 'trailing']);
288450
289754
  if (symbol !== undefined) {
288451
289755
  market = this.market(symbol);
@@ -289227,7 +290531,7 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
289227
290531
  //
289228
290532
  const transfer = this.parseTransfer(response, currency);
289229
290533
  const transferOptions = this.safeValue(this.options, 'transfer', {});
289230
- const fillResponseFromRequest = this.safeValue(transferOptions, 'fillResponseFromRequest', true);
290534
+ const fillResponseFromRequest = this.safeBool(transferOptions, 'fillResponseFromRequest', true);
289231
290535
  if (fillResponseFromRequest) {
289232
290536
  transfer['amount'] = amount;
289233
290537
  transfer['fromAccount'] = fromAccount;
@@ -291211,7 +292515,7 @@ class yobit extends _abstract_yobit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
291211
292515
  //
291212
292516
  // To cover points 1, 2, 3 and 4 combined this handler should work like this:
291213
292517
  //
291214
- let success = this.safeValue(response, 'success', false);
292518
+ let success = this.safeBool(response, 'success', false);
291215
292519
  if (typeof success === 'string') {
291216
292520
  if ((success === 'true') || (success === '1')) {
291217
292521
  success = true;
@@ -291972,7 +293276,7 @@ class zaif extends _abstract_zaif_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
291972
293276
  this.throwBroadlyMatchedException(this.exceptions['broad'], error, feedback);
291973
293277
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(feedback); // unknown message
291974
293278
  }
291975
- const success = this.safeValue(response, 'success', true);
293279
+ const success = this.safeBool(response, 'success', true);
291976
293280
  if (!success) {
291977
293281
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(feedback);
291978
293282
  }
@@ -293429,7 +294733,7 @@ class zonda extends _abstract_zonda_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
293429
294733
  // }
293430
294734
  //
293431
294735
  const id = this.safeString2(response, 'offerId', 'stopOfferId');
293432
- const completed = this.safeValue(response, 'completed', false);
294736
+ const completed = this.safeBool(response, 'completed', false);
293433
294737
  const status = completed ? 'closed' : 'open';
293434
294738
  const transactions = this.safeValue(response, 'transactions');
293435
294739
  return this.safeOrder({
@@ -293491,7 +294795,7 @@ class zonda extends _abstract_zonda_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
293491
294795
  'EUR': true,
293492
294796
  'PLN': true,
293493
294797
  };
293494
- return this.safeValue(fiatCurrencies, currency, false);
294798
+ return this.safeBool(fiatCurrencies, currency, false);
293495
294799
  }
293496
294800
  parseDepositAddress(depositAddress, currency = undefined) {
293497
294801
  //
@@ -293628,7 +294932,7 @@ class zonda extends _abstract_zonda_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
293628
294932
  //
293629
294933
  const transfer = this.parseTransfer(response, currency);
293630
294934
  const transferOptions = this.safeValue(this.options, 'transfer', {});
293631
- const fillResponseFromRequest = this.safeValue(transferOptions, 'fillResponseFromRequest', true);
294935
+ const fillResponseFromRequest = this.safeBool(transferOptions, 'fillResponseFromRequest', true);
293632
294936
  if (fillResponseFromRequest) {
293633
294937
  transfer['amount'] = amount;
293634
294938
  }
@@ -299099,39 +300403,39 @@ var __webpack_exports__ = {};
299099
300403
  (() => {
299100
300404
  __webpack_require__.r(__webpack_exports__);
299101
300405
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
299102
- /* harmony export */ AccountNotEnabled: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.AccountNotEnabled),
299103
- /* harmony export */ AccountSuspended: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.AccountSuspended),
299104
- /* harmony export */ AddressPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.AddressPending),
299105
- /* harmony export */ ArgumentsRequired: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.ArgumentsRequired),
299106
- /* harmony export */ AuthenticationError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.AuthenticationError),
299107
- /* harmony export */ BadRequest: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.BadRequest),
299108
- /* harmony export */ BadResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.BadResponse),
299109
- /* harmony export */ BadSymbol: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.BadSymbol),
299110
- /* harmony export */ BaseError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.BaseError),
299111
- /* harmony export */ CancelPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.CancelPending),
299112
- /* harmony export */ DDoSProtection: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.DDoSProtection),
299113
- /* harmony export */ DuplicateOrderId: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.DuplicateOrderId),
300406
+ /* harmony export */ AccountNotEnabled: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.AccountNotEnabled),
300407
+ /* harmony export */ AccountSuspended: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.AccountSuspended),
300408
+ /* harmony export */ AddressPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.AddressPending),
300409
+ /* harmony export */ ArgumentsRequired: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.ArgumentsRequired),
300410
+ /* harmony export */ AuthenticationError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.AuthenticationError),
300411
+ /* harmony export */ BadRequest: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.BadRequest),
300412
+ /* harmony export */ BadResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.BadResponse),
300413
+ /* harmony export */ BadSymbol: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.BadSymbol),
300414
+ /* harmony export */ BaseError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.BaseError),
300415
+ /* harmony export */ CancelPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.CancelPending),
300416
+ /* harmony export */ DDoSProtection: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.DDoSProtection),
300417
+ /* harmony export */ DuplicateOrderId: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.DuplicateOrderId),
299114
300418
  /* harmony export */ Exchange: () => (/* reexport safe */ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__.e),
299115
- /* harmony export */ ExchangeError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.ExchangeError),
299116
- /* harmony export */ ExchangeNotAvailable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.ExchangeNotAvailable),
299117
- /* harmony export */ InsufficientFunds: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.InsufficientFunds),
299118
- /* harmony export */ InvalidAddress: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.InvalidAddress),
299119
- /* harmony export */ InvalidNonce: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.InvalidNonce),
299120
- /* harmony export */ InvalidOrder: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.InvalidOrder),
299121
- /* harmony export */ MarginModeAlreadySet: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.MarginModeAlreadySet),
299122
- /* harmony export */ NetworkError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.NetworkError),
299123
- /* harmony export */ NoChange: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.NoChange),
299124
- /* harmony export */ NotSupported: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.NotSupported),
299125
- /* harmony export */ NullResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.NullResponse),
299126
- /* harmony export */ OnMaintenance: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.OnMaintenance),
299127
- /* harmony export */ OrderImmediatelyFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.OrderImmediatelyFillable),
299128
- /* harmony export */ OrderNotCached: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.OrderNotCached),
299129
- /* harmony export */ OrderNotFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.OrderNotFillable),
299130
- /* harmony export */ OrderNotFound: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.OrderNotFound),
299131
- /* harmony export */ PermissionDenied: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.PermissionDenied),
299132
- /* harmony export */ Precise: () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_161__.O),
299133
- /* harmony export */ RateLimitExceeded: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.RateLimitExceeded),
299134
- /* harmony export */ RequestTimeout: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__.RequestTimeout),
300419
+ /* harmony export */ ExchangeError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.ExchangeError),
300420
+ /* harmony export */ ExchangeNotAvailable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.ExchangeNotAvailable),
300421
+ /* harmony export */ InsufficientFunds: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.InsufficientFunds),
300422
+ /* harmony export */ InvalidAddress: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.InvalidAddress),
300423
+ /* harmony export */ InvalidNonce: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.InvalidNonce),
300424
+ /* harmony export */ InvalidOrder: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.InvalidOrder),
300425
+ /* harmony export */ MarginModeAlreadySet: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.MarginModeAlreadySet),
300426
+ /* harmony export */ NetworkError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.NetworkError),
300427
+ /* harmony export */ NoChange: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.NoChange),
300428
+ /* harmony export */ NotSupported: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.NotSupported),
300429
+ /* harmony export */ NullResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.NullResponse),
300430
+ /* harmony export */ OnMaintenance: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.OnMaintenance),
300431
+ /* harmony export */ OrderImmediatelyFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.OrderImmediatelyFillable),
300432
+ /* harmony export */ OrderNotCached: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.OrderNotCached),
300433
+ /* harmony export */ OrderNotFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.OrderNotFillable),
300434
+ /* harmony export */ OrderNotFound: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.OrderNotFound),
300435
+ /* harmony export */ PermissionDenied: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.PermissionDenied),
300436
+ /* harmony export */ Precise: () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_162__.O),
300437
+ /* harmony export */ RateLimitExceeded: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.RateLimitExceeded),
300438
+ /* harmony export */ RequestTimeout: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__.RequestTimeout),
299135
300439
  /* harmony export */ ace: () => (/* reexport safe */ _src_ace_js__WEBPACK_IMPORTED_MODULE_1__.Z),
299136
300440
  /* harmony export */ alpaca: () => (/* reexport safe */ _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__.Z),
299137
300441
  /* harmony export */ ascendex: () => (/* reexport safe */ _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__.Z),
@@ -299186,11 +300490,11 @@ __webpack_require__.r(__webpack_exports__);
299186
300490
  /* harmony export */ delta: () => (/* reexport safe */ _src_delta_js__WEBPACK_IMPORTED_MODULE_51__.Z),
299187
300491
  /* harmony export */ deribit: () => (/* reexport safe */ _src_deribit_js__WEBPACK_IMPORTED_MODULE_52__.Z),
299188
300492
  /* harmony export */ digifinex: () => (/* reexport safe */ _src_digifinex_js__WEBPACK_IMPORTED_MODULE_53__.Z),
299189
- /* harmony export */ errors: () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__),
300493
+ /* harmony export */ errors: () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__),
299190
300494
  /* harmony export */ exchanges: () => (/* binding */ exchanges),
299191
300495
  /* harmony export */ exmo: () => (/* reexport safe */ _src_exmo_js__WEBPACK_IMPORTED_MODULE_54__.Z),
299192
300496
  /* harmony export */ fmfwio: () => (/* reexport safe */ _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_55__.Z),
299193
- /* harmony export */ functions: () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_162__),
300497
+ /* harmony export */ functions: () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_163__),
299194
300498
  /* harmony export */ gate: () => (/* reexport safe */ _src_gate_js__WEBPACK_IMPORTED_MODULE_56__.Z),
299195
300499
  /* harmony export */ gateio: () => (/* reexport safe */ _src_gateio_js__WEBPACK_IMPORTED_MODULE_57__.Z),
299196
300500
  /* harmony export */ gemini: () => (/* reexport safe */ _src_gemini_js__WEBPACK_IMPORTED_MODULE_58__.Z),
@@ -299240,9 +300544,9 @@ __webpack_require__.r(__webpack_exports__);
299240
300544
  /* harmony export */ zonda: () => (/* reexport safe */ _src_zonda_js__WEBPACK_IMPORTED_MODULE_100__.Z)
299241
300545
  /* harmony export */ });
299242
300546
  /* harmony import */ var _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
299243
- /* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(2194);
299244
- /* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(7100);
299245
- /* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(6689);
300547
+ /* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(2194);
300548
+ /* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(7100);
300549
+ /* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__ = __webpack_require__(6689);
299246
300550
  /* harmony import */ var _src_ace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9869);
299247
300551
  /* harmony import */ var _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5660);
299248
300552
  /* harmony import */ var _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9612);
@@ -299395,14 +300699,15 @@ __webpack_require__.r(__webpack_exports__);
299395
300699
  /* harmony import */ var _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(7105);
299396
300700
  /* harmony import */ var _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(2214);
299397
300701
  /* harmony import */ var _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(9419);
299398
- /* harmony import */ var _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(4360);
299399
- /* harmony import */ var _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(7924);
299400
- /* harmony import */ var _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(3541);
299401
- /* harmony import */ var _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(9782);
299402
- /* harmony import */ var _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(7614);
299403
- /* harmony import */ var _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(4828);
299404
- /* harmony import */ var _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(5630);
299405
- /* harmony import */ var _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(3910);
300702
+ /* harmony import */ var _src_pro_p2b_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(8516);
300703
+ /* harmony import */ var _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(4360);
300704
+ /* harmony import */ var _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(7924);
300705
+ /* harmony import */ var _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(3541);
300706
+ /* harmony import */ var _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(9782);
300707
+ /* harmony import */ var _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(7614);
300708
+ /* harmony import */ var _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(4828);
300709
+ /* harmony import */ var _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(5630);
300710
+ /* harmony import */ var _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(3910);
299406
300711
  /*
299407
300712
 
299408
300713
  MIT License
@@ -299437,7 +300742,7 @@ SOFTWARE.
299437
300742
 
299438
300743
  //-----------------------------------------------------------------------------
299439
300744
  // this is updated by vss.js when building
299440
- const version = '4.2.28';
300745
+ const version = '4.2.30';
299441
300746
  _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion = version;
299442
300747
  //-----------------------------------------------------------------------------
299443
300748
 
@@ -299599,6 +300904,7 @@ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion
299599
300904
 
299600
300905
 
299601
300906
 
300907
+
299602
300908
 
299603
300909
 
299604
300910
  const exchanges = {
@@ -299756,14 +301062,15 @@ const pro = {
299756
301062
  'okcoin': _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_150__/* ["default"] */ .Z,
299757
301063
  'okx': _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_151__/* ["default"] */ .Z,
299758
301064
  'onetrading': _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_152__/* ["default"] */ .Z,
299759
- 'phemex': _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_153__/* ["default"] */ .Z,
299760
- 'poloniex': _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_154__/* ["default"] */ .Z,
299761
- 'poloniexfutures': _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_155__/* ["default"] */ .Z,
299762
- 'probit': _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_156__/* ["default"] */ .Z,
299763
- 'upbit': _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_157__/* ["default"] */ .Z,
299764
- 'wazirx': _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_158__/* ["default"] */ .Z,
299765
- 'whitebit': _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_159__/* ["default"] */ .Z,
299766
- 'woo': _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_160__/* ["default"] */ .Z,
301065
+ 'p2b': _src_pro_p2b_js__WEBPACK_IMPORTED_MODULE_153__/* ["default"] */ .Z,
301066
+ 'phemex': _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_154__/* ["default"] */ .Z,
301067
+ 'poloniex': _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_155__/* ["default"] */ .Z,
301068
+ 'poloniexfutures': _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_156__/* ["default"] */ .Z,
301069
+ 'probit': _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_157__/* ["default"] */ .Z,
301070
+ 'upbit': _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_158__/* ["default"] */ .Z,
301071
+ 'wazirx': _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_159__/* ["default"] */ .Z,
301072
+ 'whitebit': _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_160__/* ["default"] */ .Z,
301073
+ 'woo': _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_161__/* ["default"] */ .Z,
299767
301074
  };
299768
301075
  for (const exchange in pro) {
299769
301076
  // const ccxtExchange = exchanges[exchange]
@@ -299776,7 +301083,7 @@ for (const exchange in pro) {
299776
301083
  pro.exchanges = Object.keys(pro);
299777
301084
  pro['Exchange'] = _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e; // now the same for rest and ts
299778
301085
  //-----------------------------------------------------------------------------
299779
- 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__);
301086
+ const ccxt = Object.assign({ version, Exchange: _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e, Precise: _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_162__/* .Precise */ .O, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, _src_base_functions_js__WEBPACK_IMPORTED_MODULE_163__, _src_base_errors_js__WEBPACK_IMPORTED_MODULE_164__);
299780
301087
 
299781
301088
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ccxt);
299782
301089
  //-----------------------------------------------------------------------------