ccxt 4.2.77 → 4.2.78

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.
package/README.md CHANGED
@@ -213,13 +213,13 @@ console.log(version, Object.keys(exchanges));
213
213
 
214
214
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
215
215
 
216
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.77/dist/ccxt.browser.js
217
- * unpkg: https://unpkg.com/ccxt@4.2.77/dist/ccxt.browser.js
216
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.78/dist/ccxt.browser.js
217
+ * unpkg: https://unpkg.com/ccxt@4.2.78/dist/ccxt.browser.js
218
218
 
219
219
  CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
220
220
 
221
221
  ```HTML
222
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.77/dist/ccxt.browser.js"></script>
222
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.78/dist/ccxt.browser.js"></script>
223
223
  ```
224
224
 
225
225
  Creates a global `ccxt` object:
package/build.sh CHANGED
@@ -76,7 +76,7 @@ build_and_test_all () {
76
76
  # cd python
77
77
  # if ! tox run-parallel; then
78
78
  # exit 1
79
- # fi
79
+ # fi
80
80
  # cd ..
81
81
  # fi
82
82
  fi
@@ -91570,11 +91570,15 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
91570
91570
  const tier = info[i];
91571
91571
  const marketId = this.safeString(info, 'symbol');
91572
91572
  market = this.safeMarket(marketId);
91573
+ let minNotional = this.parseNumber('0');
91574
+ if (i !== 0) {
91575
+ minNotional = this.safeNumber(info[i - 1], 'riskLimitValue');
91576
+ }
91573
91577
  tiers.push({
91574
91578
  'tier': this.safeInteger(tier, 'id'),
91575
91579
  'currency': market['settle'],
91576
- 'minNotional': undefined,
91577
- 'maxNotional': undefined,
91580
+ 'minNotional': minNotional,
91581
+ 'maxNotional': this.safeNumber(tier, 'riskLimitValue'),
91578
91582
  'maintenanceMarginRate': this.safeNumber(tier, 'maintenanceMargin'),
91579
91583
  'maxLeverage': this.safeNumber(tier, 'maxLeverage'),
91580
91584
  'info': tier,
@@ -94524,7 +94528,10 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
94524
94528
  * @returns {object[]} an array of objects representing market data
94525
94529
  */
94526
94530
  const method = this.safeString(this.options, 'fetchMarkets', 'fetchMarketsV3');
94527
- return await this[method](params);
94531
+ if (method === 'fetchMarketsV3') {
94532
+ return await this.fetchMarketsV3(params);
94533
+ }
94534
+ return await this.fetchMarketsV2(params);
94528
94535
  }
94529
94536
  async fetchMarketsV2(params = {}) {
94530
94537
  const response = await this.fetchCurrenciesFromCache(params);
@@ -94599,7 +94606,13 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
94599
94606
  return result;
94600
94607
  }
94601
94608
  async fetchMarketsV3(params = {}) {
94602
- const response = await this.v3PrivateGetBrokerageProducts(params);
94609
+ const promisesUnresolved = [
94610
+ this.v3PrivateGetBrokerageProducts(params),
94611
+ this.v3PrivateGetBrokerageTransactionSummary(params),
94612
+ ];
94613
+ // const response = await this.v3PrivateGetBrokerageProducts (params);
94614
+ const promises = await Promise.all(promisesUnresolved);
94615
+ const response = this.safeDict(promises, 0, {});
94603
94616
  //
94604
94617
  // [
94605
94618
  // {
@@ -94634,7 +94647,8 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
94634
94647
  // ...
94635
94648
  // ]
94636
94649
  //
94637
- const fees = await this.v3PrivateGetBrokerageTransactionSummary(params);
94650
+ // const fees = await this.v3PrivateGetBrokerageTransactionSummary (params);
94651
+ const fees = this.safeDict(promises, 1, {});
94638
94652
  //
94639
94653
  // {
94640
94654
  // "total_volume": 0,
@@ -95351,6 +95365,9 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
95351
95365
  const response = await this.v2PrivateGetAccountsAccountIdTransactions(this.extend(request, params));
95352
95366
  const ledger = this.parseLedger(response['data'], currency, since, limit);
95353
95367
  const length = ledger.length;
95368
+ if (length === 0) {
95369
+ return ledger;
95370
+ }
95354
95371
  const lastIndex = length - 1;
95355
95372
  const last = this.safeDict(ledger, lastIndex);
95356
95373
  const pagination = this.safeDict(response, 'pagination', {});
@@ -95690,9 +95707,9 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
95690
95707
  'fee': fee,
95691
95708
  };
95692
95709
  }
95693
- async findAccountId(code) {
95710
+ async findAccountId(code, params = {}) {
95694
95711
  await this.loadMarkets();
95695
- await this.loadAccounts();
95712
+ await this.loadAccounts(false, params);
95696
95713
  for (let i = 0; i < this.accounts.length; i++) {
95697
95714
  const account = this.accounts[i];
95698
95715
  if (account['code'] === code) {
@@ -95721,7 +95738,7 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
95721
95738
  if (code === undefined) {
95722
95739
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' prepareAccountRequestWithCurrencyCode() method requires an account_id (or accountId) parameter OR a currency code argument');
95723
95740
  }
95724
- accountId = await this.findAccountId(code);
95741
+ accountId = await this.findAccountId(code, params);
95725
95742
  if (accountId === undefined) {
95726
95743
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(this.id + ' prepareAccountRequestWithCurrencyCode() could not find account id for ' + code);
95727
95744
  }
@@ -96865,7 +96882,7 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
96865
96882
  if (code === undefined) {
96866
96883
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' withdraw() requires an account_id (or accountId) parameter OR a currency code argument');
96867
96884
  }
96868
- accountId = await this.findAccountId(code);
96885
+ accountId = await this.findAccountId(code, params);
96869
96886
  if (accountId === undefined) {
96870
96887
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(this.id + ' withdraw() could not find account id for ' + code);
96871
96888
  }
@@ -97090,7 +97107,7 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
97090
97107
  if (code === undefined) {
97091
97108
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' deposit() requires an account_id (or accountId) parameter OR a currency code argument');
97092
97109
  }
97093
- accountId = await this.findAccountId(code);
97110
+ accountId = await this.findAccountId(code, params);
97094
97111
  if (accountId === undefined) {
97095
97112
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(this.id + ' deposit() could not find account id for ' + code);
97096
97113
  }
@@ -97160,7 +97177,7 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
97160
97177
  if (code === undefined) {
97161
97178
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' fetchDeposit() requires an account_id (or accountId) parameter OR a currency code argument');
97162
97179
  }
97163
- accountId = await this.findAccountId(code);
97180
+ accountId = await this.findAccountId(code, params);
97164
97181
  if (accountId === undefined) {
97165
97182
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(this.id + ' fetchDeposit() could not find account id for ' + code);
97166
97183
  }
@@ -135863,6 +135880,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
135863
135880
  'rebate': 'https://api.gateio.ws/api/v4',
135864
135881
  'earn': 'https://api.gateio.ws/api/v4',
135865
135882
  'account': 'https://api.gateio.ws/api/v4',
135883
+ 'loan': 'https://api.gateio.ws/api/v4',
135866
135884
  },
135867
135885
  },
135868
135886
  'test': {
@@ -153585,42 +153603,47 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
153585
153603
  // 'from': parseInt ((since / 1000).toString ()), spot only
153586
153604
  // 'to': this.seconds (), spot only
153587
153605
  };
153588
- const price = this.safeString(params, 'price');
153589
- params = this.omit(params, 'price');
153606
+ const priceType = this.safeStringN(params, ['priceType', 'price']);
153607
+ params = this.omit(params, ['priceType', 'price']);
153608
+ let until = undefined;
153609
+ [until, params] = this.handleParamInteger(params, 'until');
153610
+ const untilSeconds = (until !== undefined) ? this.parseToInt(until / 1000) : undefined;
153590
153611
  if (market['contract']) {
153591
153612
  if (limit !== undefined) {
153592
- request['size'] = limit; // when using limit from and to are ignored
153613
+ request['size'] = limit; // when using limit: from & to are ignored
153593
153614
  // https://huobiapi.github.io/docs/usdt_swap/v1/en/#general-get-kline-data
153594
153615
  }
153595
153616
  else {
153596
153617
  limit = 2000; // only used for from/to calculation
153597
153618
  }
153598
- if (price === undefined) {
153619
+ if (priceType === undefined) {
153599
153620
  const duration = this.parseTimeframe(timeframe);
153621
+ let calcualtedEnd = undefined;
153600
153622
  if (since === undefined) {
153601
153623
  const now = this.seconds();
153602
153624
  request['from'] = now - duration * (limit - 1);
153603
- request['to'] = now;
153625
+ calcualtedEnd = now;
153604
153626
  }
153605
153627
  else {
153606
153628
  const start = this.parseToInt(since / 1000);
153607
153629
  request['from'] = start;
153608
- request['to'] = this.sum(start, duration * (limit - 1));
153630
+ calcualtedEnd = this.sum(start, duration * (limit - 1));
153609
153631
  }
153632
+ request['to'] = (untilSeconds !== undefined) ? untilSeconds : calcualtedEnd;
153610
153633
  }
153611
153634
  }
153612
153635
  let response = undefined;
153613
153636
  if (market['future']) {
153614
153637
  if (market['inverse']) {
153615
153638
  request['symbol'] = market['id'];
153616
- if (price === 'mark') {
153639
+ if (priceType === 'mark') {
153617
153640
  response = await this.contractPublicGetIndexMarketHistoryMarkPriceKline(this.extend(request, params));
153618
153641
  }
153619
- else if (price === 'index') {
153642
+ else if (priceType === 'index') {
153620
153643
  response = await this.contractPublicGetIndexMarketHistoryIndex(this.extend(request, params));
153621
153644
  }
153622
- else if (price === 'premiumIndex') {
153623
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' ' + market['type'] + ' has no api endpoint for ' + price + ' kline data');
153645
+ else if (priceType === 'premiumIndex') {
153646
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' ' + market['type'] + ' has no api endpoint for ' + priceType + ' kline data');
153624
153647
  }
153625
153648
  else {
153626
153649
  response = await this.contractPublicGetMarketHistoryKline(this.extend(request, params));
@@ -153628,13 +153651,13 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
153628
153651
  }
153629
153652
  else if (market['linear']) {
153630
153653
  request['contract_code'] = market['id'];
153631
- if (price === 'mark') {
153654
+ if (priceType === 'mark') {
153632
153655
  response = await this.contractPublicGetIndexMarketHistoryLinearSwapMarkPriceKline(this.extend(request, params));
153633
153656
  }
153634
- else if (price === 'index') {
153635
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' ' + market['type'] + ' has no api endpoint for ' + price + ' kline data');
153657
+ else if (priceType === 'index') {
153658
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' ' + market['type'] + ' has no api endpoint for ' + priceType + ' kline data');
153636
153659
  }
153637
- else if (price === 'premiumIndex') {
153660
+ else if (priceType === 'premiumIndex') {
153638
153661
  response = await this.contractPublicGetIndexMarketHistoryLinearSwapPremiumIndexKline(this.extend(request, params));
153639
153662
  }
153640
153663
  else {
@@ -153645,13 +153668,13 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
153645
153668
  else if (market['swap']) {
153646
153669
  request['contract_code'] = market['id'];
153647
153670
  if (market['inverse']) {
153648
- if (price === 'mark') {
153671
+ if (priceType === 'mark') {
153649
153672
  response = await this.contractPublicGetIndexMarketHistorySwapMarkPriceKline(this.extend(request, params));
153650
153673
  }
153651
- else if (price === 'index') {
153652
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' ' + market['type'] + ' has no api endpoint for ' + price + ' kline data');
153674
+ else if (priceType === 'index') {
153675
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' ' + market['type'] + ' has no api endpoint for ' + priceType + ' kline data');
153653
153676
  }
153654
- else if (price === 'premiumIndex') {
153677
+ else if (priceType === 'premiumIndex') {
153655
153678
  response = await this.contractPublicGetIndexMarketHistorySwapPremiumIndexKline(this.extend(request, params));
153656
153679
  }
153657
153680
  else {
@@ -153659,13 +153682,13 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
153659
153682
  }
153660
153683
  }
153661
153684
  else if (market['linear']) {
153662
- if (price === 'mark') {
153685
+ if (priceType === 'mark') {
153663
153686
  response = await this.contractPublicGetIndexMarketHistoryLinearSwapMarkPriceKline(this.extend(request, params));
153664
153687
  }
153665
- else if (price === 'index') {
153666
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' ' + market['type'] + ' has no api endpoint for ' + price + ' kline data');
153688
+ else if (priceType === 'index') {
153689
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' ' + market['type'] + ' has no api endpoint for ' + priceType + ' kline data');
153667
153690
  }
153668
- else if (price === 'premiumIndex') {
153691
+ else if (priceType === 'premiumIndex') {
153669
153692
  response = await this.contractPublicGetIndexMarketHistoryLinearSwapPremiumIndexKline(this.extend(request, params));
153670
153693
  }
153671
153694
  else {
@@ -153678,18 +153701,22 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
153678
153701
  let useHistorical = undefined;
153679
153702
  [useHistorical, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'useHistoricalEndpointForSpot', true);
153680
153703
  if (!useHistorical) {
153681
- // `limit` only available for the this endpoint
153682
153704
  if (limit !== undefined) {
153683
- request['size'] = limit; // max 2000
153705
+ request['size'] = Math.min(2000, limit); // max 2000
153684
153706
  }
153685
153707
  response = await this.spotPublicGetMarketHistoryKline(this.extend(request, params));
153686
153708
  }
153687
153709
  else {
153688
- // `since` only available for the this endpoint
153710
+ // "from & to" only available for the this endpoint
153689
153711
  if (since !== undefined) {
153690
- // default 150 bars
153691
153712
  request['from'] = this.parseToInt(since / 1000);
153692
153713
  }
153714
+ if (untilSeconds !== undefined) {
153715
+ request['to'] = untilSeconds;
153716
+ }
153717
+ if (limit !== undefined) {
153718
+ request['size'] = Math.min(1000, limit); // max 1000, otherwise default returns 150
153719
+ }
153693
153720
  response = await this.spotPublicGetMarketHistoryCandles(this.extend(request, params));
153694
153721
  }
153695
153722
  }
@@ -153705,7 +153732,7 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
153705
153732
  // ]
153706
153733
  // }
153707
153734
  //
153708
- const data = this.safeValue(response, 'data', []);
153735
+ const data = this.safeList(response, 'data', []);
153709
153736
  return this.parseOHLCVs(data, market, timeframe, since, limit);
153710
153737
  }
153711
153738
  async fetchAccounts(params = {}) {
@@ -162526,8 +162553,9 @@ class hyperliquid extends _abstract_hyperliquid_js__WEBPACK_IMPORTED_MODULE_0__/
162526
162553
  * @param {bool} [params.postOnly] true or false whether the order is post-only
162527
162554
  * @param {bool} [params.reduceOnly] true or false whether the order is reduce-only
162528
162555
  * @param {float} [params.triggerPrice] The price at which a trigger order is triggered at
162529
- * @param {string} [params.clientOrderId] client order id, optional 128 bit hex string
162556
+ * @param {string} [params.clientOrderId] client order id, (optional 128 bit hex string e.g. 0x1234567890abcdef1234567890abcdef)
162530
162557
  * @param {string} [params.slippage] the slippage for market order
162558
+ * @param {string} [params.vaultAddress] the vault address for order
162531
162559
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
162532
162560
  */
162533
162561
  await this.loadMarkets();
@@ -162577,7 +162605,7 @@ class hyperliquid extends _abstract_hyperliquid_js__WEBPACK_IMPORTED_MODULE_0__/
162577
162605
  }
162578
162606
  }
162579
162607
  }
162580
- params = this.omit(params, ['slippage', 'clientOrderId', 'client_id', 'slippage', 'triggerPrice', 'stopPrice', 'stopLossPrice', 'takeProfitPrice']);
162608
+ params = this.omit(params, ['slippage', 'clientOrderId', 'client_id', 'slippage', 'triggerPrice', 'stopPrice', 'stopLossPrice', 'takeProfitPrice', 'timeInForce']);
162581
162609
  const nonce = this.milliseconds();
162582
162610
  const orderReq = [];
162583
162611
  for (let i = 0; i < orders.length; i++) {
@@ -162704,7 +162732,7 @@ class hyperliquid extends _abstract_hyperliquid_js__WEBPACK_IMPORTED_MODULE_0__/
162704
162732
  * @param {string} id order id
162705
162733
  * @param {string} symbol unified symbol of the market the order was made in
162706
162734
  * @param {object} [params] extra parameters specific to the exchange API endpoint
162707
- * @param {string} [params.clientOrderId] client order id (default undefined)
162735
+ * @param {string} [params.clientOrderId] client order id, (optional 128 bit hex string e.g. 0x1234567890abcdef1234567890abcdef)
162708
162736
  * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
162709
162737
  */
162710
162738
  return await this.cancelOrders([id], symbol, params);
@@ -162719,7 +162747,7 @@ class hyperliquid extends _abstract_hyperliquid_js__WEBPACK_IMPORTED_MODULE_0__/
162719
162747
  * @param {string[]} ids order ids
162720
162748
  * @param {string} [symbol] unified market symbol
162721
162749
  * @param {object} [params] extra parameters specific to the exchange API endpoint
162722
- * @param {string|string[]} [params.clientOrderId] client order ids (default undefined)
162750
+ * @param {string|string[]} [params.clientOrderId] client order ids, (optional 128 bit hex string e.g. 0x1234567890abcdef1234567890abcdef)
162723
162751
  * @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
162724
162752
  */
162725
162753
  this.checkRequiredCredentials();
@@ -162802,6 +162830,7 @@ class hyperliquid extends _abstract_hyperliquid_js__WEBPACK_IMPORTED_MODULE_0__/
162802
162830
  * @param {bool} [params.reduceOnly] true or false whether the order is reduce-only
162803
162831
  * @param {float} [params.triggerPrice] The price at which a trigger order is triggered at
162804
162832
  * @param {string} [params.clientOrderId] client order id, (optional 128 bit hex string e.g. 0x1234567890abcdef1234567890abcdef)
162833
+ * @param {string} [params.vaultAddress] the vault address for order
162805
162834
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
162806
162835
  */
162807
162836
  this.checkRequiredCredentials();
@@ -173923,6 +173952,56 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
173923
173952
  '130202': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173924
173953
  '130203': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
173925
173954
  '130204': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
173955
+ '130301': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
173956
+ '130302': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
173957
+ '130303': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported,
173958
+ '130304': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported,
173959
+ '130305': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported,
173960
+ '130306': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported,
173961
+ '130307': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported,
173962
+ '130308': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173963
+ '130309': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173964
+ '130310': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173965
+ '130311': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173966
+ '130312': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173967
+ '130313': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173968
+ '130314': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173969
+ '130315': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported,
173970
+ '126000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173971
+ '126001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported,
173972
+ '126002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173973
+ '126003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173974
+ '126004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173975
+ '126005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
173976
+ '126006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173977
+ '126007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173978
+ '126009': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173979
+ '126010': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173980
+ '126011': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173981
+ '126013': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
173982
+ '126015': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173983
+ '126021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported,
173984
+ '126022': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173985
+ '126027': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173986
+ '126028': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173987
+ '126029': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173988
+ '126030': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173989
+ '126033': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173990
+ '126034': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173991
+ '126036': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173992
+ '126037': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173993
+ '126038': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173994
+ '126039': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173995
+ '126041': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173996
+ '126042': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173997
+ '126043': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound,
173998
+ '126044': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173999
+ '126045': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported,
174000
+ '126046': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported,
174001
+ '126047': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
174002
+ '126048': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
174003
+ '135005': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
174004
+ '135018': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
173926
174005
  '200004': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
173927
174006
  '210014': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173928
174007
  '210021': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
@@ -173944,10 +174023,12 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
173944
174023
  '400350': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173945
174024
  '400370': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173946
174025
  '400400': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
174026
+ '400401': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
173947
174027
  '400500': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173948
174028
  '400600': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
173949
174029
  '400760': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173950
174030
  '401000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
174031
+ '408000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
173951
174032
  '411100': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AccountSuspended,
173952
174033
  '415000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
173953
174034
  '400303': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
@@ -201541,6 +201622,16 @@ class okcoin extends _abstract_okcoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
201541
201622
  '50026': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeNotAvailable,
201542
201623
  '50027': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.PermissionDenied,
201543
201624
  '50028': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError,
201625
+ '50029': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError,
201626
+ '50030': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.PermissionDenied,
201627
+ '50032': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.AccountSuspended,
201628
+ '50033': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.AccountSuspended,
201629
+ '50035': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest,
201630
+ '50036': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest,
201631
+ '50037': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest,
201632
+ '50038': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError,
201633
+ '50039': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError,
201634
+ '50041': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError,
201544
201635
  '50044': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest,
201545
201636
  // API Class
201546
201637
  '50100': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError,
@@ -201584,9 +201675,25 @@ class okcoin extends _abstract_okcoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
201584
201675
  '51024': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.AccountSuspended,
201585
201676
  '51025': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError,
201586
201677
  '51026': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadSymbol,
201678
+ '51030': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201679
+ '51031': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201680
+ '51032': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201681
+ '51033': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201682
+ '51037': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201683
+ '51038': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201684
+ '51044': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201587
201685
  '51046': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201588
201686
  '51047': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201589
- '51031': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201687
+ '51048': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201688
+ '51049': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201689
+ '51050': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201690
+ '51051': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201691
+ '51052': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201692
+ '51053': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201693
+ '51054': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest,
201694
+ '51056': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201695
+ '51058': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201696
+ '51059': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201590
201697
  '51100': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201591
201698
  '51102': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
201592
201699
  '51103': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
@@ -204997,6 +205104,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
204997
205104
  '50027': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.PermissionDenied,
204998
205105
  '50028': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError,
204999
205106
  '50044': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest,
205107
+ '50061': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError,
205000
205108
  '50062': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError,
205001
205109
  // API Class
205002
205110
  '50100': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError,
@@ -205184,6 +205292,15 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
205184
205292
  // SPOT/MARGIN error codes 54000-54999
205185
205293
  '54000': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError,
205186
205294
  '54001': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError,
205295
+ // Trading bot Error Code from 55100 to 55999
205296
+ '55100': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
205297
+ '55101': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
205298
+ '55102': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
205299
+ '55103': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
205300
+ '55104': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
205301
+ '55111': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
205302
+ '55112': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
205303
+ '55113': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.InvalidOrder,
205187
205304
  // FUNDING error codes 58000-58999
205188
205305
  '58000': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ExchangeError,
205189
205306
  '58001': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.AuthenticationError,
@@ -209445,6 +209562,14 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
209445
209562
  '3': 'pending',
209446
209563
  '4': 'pending',
209447
209564
  '5': 'pending',
209565
+ '6': 'pending',
209566
+ '7': 'pending',
209567
+ '8': 'pending',
209568
+ '9': 'pending',
209569
+ '10': 'pending',
209570
+ '12': 'pending',
209571
+ '15': 'pending',
209572
+ '16': 'pending',
209448
209573
  };
209449
209574
  return this.safeString(statuses, status, status);
209450
209575
  }
@@ -308873,7 +308998,7 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
308873
308998
  'fetchBalance': true,
308874
308999
  'fetchCanceledOrders': false,
308875
309000
  'fetchClosedOrder': false,
308876
- 'fetchClosedOrders': false,
309001
+ 'fetchClosedOrders': true,
308877
309002
  'fetchCurrencies': true,
308878
309003
  'fetchDepositAddress': true,
308879
309004
  'fetchDeposits': true,
@@ -308892,7 +309017,7 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
308892
309017
  'fetchOHLCV': true,
308893
309018
  'fetchOpenInterestHistory': false,
308894
309019
  'fetchOpenOrder': false,
308895
- 'fetchOpenOrders': false,
309020
+ 'fetchOpenOrders': true,
308896
309021
  'fetchOrder': true,
308897
309022
  'fetchOrderBook': true,
308898
309023
  'fetchOrders': true,
@@ -310262,7 +310387,51 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
310262
310387
  //
310263
310388
  const data = this.safeValue(response, 'data', response);
310264
310389
  const orders = this.safeList(data, 'rows');
310265
- return this.parseOrders(orders, market, since, limit, params);
310390
+ return this.parseOrders(orders, market, since, limit);
310391
+ }
310392
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
310393
+ /**
310394
+ * @method
310395
+ * @name woo#fetchOpenOrders
310396
+ * @description fetches information on multiple orders made by the user
310397
+ * @see https://docs.woo.org/#get-orders
310398
+ * @see https://docs.woo.org/#get-algo-orders
310399
+ * @param {string} symbol unified market symbol of the market orders were made in
310400
+ * @param {int} [since] the earliest time in ms to fetch orders for
310401
+ * @param {int} [limit] the maximum number of order structures to retrieve
310402
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
310403
+ * @param {boolean} [params.stop] whether the order is a stop/algo order
310404
+ * @param {boolean} [params.isTriggered] whether the order has been triggered (false by default)
310405
+ * @param {string} [params.side] 'buy' or 'sell'
310406
+ * @param {boolean} [params.trailing] set to true if you want to fetch trailing orders
310407
+ * @param {boolean} [params.paginate] set to true if you want to fetch orders with pagination
310408
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
310409
+ */
310410
+ await this.loadMarkets();
310411
+ const extendedParams = this.extend(params, { 'status': 'INCOMPLETE' });
310412
+ return await this.fetchOrders(symbol, since, limit, extendedParams);
310413
+ }
310414
+ async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
310415
+ /**
310416
+ * @method
310417
+ * @name woo#fetchClosedOrders
310418
+ * @description fetches information on multiple orders made by the user
310419
+ * @see https://docs.woo.org/#get-orders
310420
+ * @see https://docs.woo.org/#get-algo-orders
310421
+ * @param {string} symbol unified market symbol of the market orders were made in
310422
+ * @param {int} [since] the earliest time in ms to fetch orders for
310423
+ * @param {int} [limit] the maximum number of order structures to retrieve
310424
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
310425
+ * @param {boolean} [params.stop] whether the order is a stop/algo order
310426
+ * @param {boolean} [params.isTriggered] whether the order has been triggered (false by default)
310427
+ * @param {string} [params.side] 'buy' or 'sell'
310428
+ * @param {boolean} [params.trailing] set to true if you want to fetch trailing orders
310429
+ * @param {boolean} [params.paginate] set to true if you want to fetch orders with pagination
310430
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
310431
+ */
310432
+ await this.loadMarkets();
310433
+ const extendedParams = this.extend(params, { 'status': 'COMPLETED' });
310434
+ return await this.fetchOrders(symbol, since, limit, extendedParams);
310266
310435
  }
310267
310436
  parseTimeInForce(timeInForce) {
310268
310437
  const timeInForces = {
@@ -321921,7 +322090,7 @@ SOFTWARE.
321921
322090
 
321922
322091
  //-----------------------------------------------------------------------------
321923
322092
  // this is updated by vss.js when building
321924
- const version = '4.2.77';
322093
+ const version = '4.2.78';
321925
322094
  _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion = version;
321926
322095
  //-----------------------------------------------------------------------------
321927
322096