ccxt 4.1.32 → 4.1.34

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 (48) hide show
  1. package/README.md +4 -4
  2. package/build.sh +5 -2
  3. package/dist/ccxt.browser.js +237 -132
  4. package/dist/ccxt.browser.min.js +9 -9
  5. package/dist/cjs/ccxt.js +1 -1
  6. package/dist/cjs/src/base/Exchange.js +4 -1
  7. package/dist/cjs/src/base/functions/misc.js +6 -0
  8. package/dist/cjs/src/binance.js +3 -3
  9. package/dist/cjs/src/bitforex.js +1 -1
  10. package/dist/cjs/src/bitmex.js +16 -22
  11. package/dist/cjs/src/digifinex.js +81 -1
  12. package/dist/cjs/src/krakenfutures.js +2 -2
  13. package/dist/cjs/src/pro/bitget.js +1 -1
  14. package/dist/cjs/src/pro/coinex.js +1 -1
  15. package/dist/cjs/src/pro/hitbtc.js +4 -6
  16. package/dist/cjs/src/pro/huobi.js +3 -0
  17. package/dist/cjs/src/pro/woo.js +5 -2
  18. package/dist/cjs/src/upbit.js +8 -6
  19. package/dist/cjs/src/wavesexchange.js +6 -7
  20. package/dist/cjs/src/woo.js +16 -8
  21. package/dist/cjs/src/zonda.js +37 -30
  22. package/js/ccxt.d.ts +1 -1
  23. package/js/ccxt.js +1 -1
  24. package/js/src/abstract/bitbay.d.ts +2 -0
  25. package/js/src/abstract/digifinex.d.ts +14 -0
  26. package/js/src/abstract/zonda.d.ts +2 -0
  27. package/js/src/base/Exchange.d.ts +1 -1
  28. package/js/src/base/Exchange.js +7 -2
  29. package/js/src/base/errorHierarchy.d.ts +2 -0
  30. package/js/src/base/errorHierarchy.js +2 -0
  31. package/js/src/base/functions/misc.js +6 -0
  32. package/js/src/binance.js +3 -3
  33. package/js/src/bitforex.js +1 -1
  34. package/js/src/bitmex.js +16 -22
  35. package/js/src/digifinex.d.ts +10 -0
  36. package/js/src/digifinex.js +81 -1
  37. package/js/src/krakenfutures.js +2 -2
  38. package/js/src/pro/bitget.js +1 -1
  39. package/js/src/pro/coinex.js +1 -1
  40. package/js/src/pro/hitbtc.js +4 -6
  41. package/js/src/pro/huobi.js +3 -0
  42. package/js/src/pro/woo.js +5 -2
  43. package/js/src/upbit.js +8 -6
  44. package/js/src/wavesexchange.js +6 -7
  45. package/js/src/woo.d.ts +1 -0
  46. package/js/src/woo.js +16 -8
  47. package/js/src/zonda.js +37 -30
  48. package/package.json +4 -2
@@ -101,7 +101,7 @@ class zonda extends zonda$1 {
101
101
  '3d': '259200',
102
102
  '1w': '604800',
103
103
  },
104
- 'hostname': 'zonda.exchange',
104
+ 'hostname': 'zondacrypto.exchange',
105
105
  'urls': {
106
106
  'referral': 'https://auth.zondaglobal.com/ref/jHlbB4mIkdS1',
107
107
  'logo': 'https://user-images.githubusercontent.com/1294454/159202310-a0e38007-5e7c-4ba9-a32f-c8263a0291fe.jpg',
@@ -113,7 +113,7 @@ class zonda extends zonda$1 {
113
113
  'v1_01Private': 'https://api.{hostname}/rest',
114
114
  },
115
115
  'doc': [
116
- 'https://docs.zonda.exchange/',
116
+ 'https://docs.zondacrypto.exchange/',
117
117
  'https://github.com/BitBayNet/API',
118
118
  ],
119
119
  'support': 'https://zondaglobal.com/en/helpdesk/zonda-exchange',
@@ -174,6 +174,8 @@ class zonda extends zonda$1 {
174
174
  'balances/BITBAY/balance',
175
175
  'balances/BITBAY/balance/transfer/{source}/{destination}',
176
176
  'fiat_cantor/exchange',
177
+ 'api_payments/withdrawals/crypto',
178
+ 'api_payments/withdrawals/fiat',
177
179
  ],
178
180
  'delete': [
179
181
  'trading/offer/{symbol}/{id}/{side}/{price}',
@@ -282,6 +284,10 @@ class zonda extends zonda$1 {
282
284
  'REQUEST_TIMESTAMP_TOO_OLD': errors.InvalidNonce,
283
285
  'PERMISSIONS_NOT_SUFFICIENT': errors.PermissionDenied,
284
286
  'INVALID_STOP_RATE': errors.InvalidOrder,
287
+ 'TIMEOUT': errors.ExchangeError,
288
+ 'RESPONSE_TIMEOUT': errors.ExchangeError,
289
+ 'ACTION_BLOCKED': errors.PermissionDenied,
290
+ 'INVALID_HASH_SIGNATURE': errors.AuthenticationError,
285
291
  },
286
292
  'commonCurrencies': {
287
293
  'GGC': 'Global Game Coin',
@@ -292,7 +298,7 @@ class zonda extends zonda$1 {
292
298
  /**
293
299
  * @method
294
300
  * @name zonda#fetchMarkets
295
- * @see https://docs.zonda.exchange/reference/ticker-1
301
+ * @see https://docs.zondacrypto.exchange/reference/ticker-1
296
302
  * @description retrieves data on all markets for zonda
297
303
  * @param {object} [params] extra parameters specific to the exchange api endpoint
298
304
  * @returns {object[]} an array of objects representing market data
@@ -395,7 +401,7 @@ class zonda extends zonda$1 {
395
401
  /**
396
402
  * @method
397
403
  * @name zonda#fetchOpenOrders
398
- * @see https://docs.zonda.exchange/reference/active-orders
404
+ * @see https://docs.zondacrypto.exchange/reference/active-orders
399
405
  * @description fetch all unfilled currently open orders
400
406
  * @param {string} symbol not used by zonda fetchOpenOrders
401
407
  * @param {int} [since] the earliest time in ms to fetch open orders for
@@ -463,7 +469,7 @@ class zonda extends zonda$1 {
463
469
  /**
464
470
  * @method
465
471
  * @name zonda#fetchMyTrades
466
- * @see https://docs.zonda.exchange/reference/transactions-history
472
+ * @see https://docs.zondacrypto.exchange/reference/transactions-history
467
473
  * @description fetch all trades made by the user
468
474
  * @param {string} symbol unified market symbol
469
475
  * @param {int} [since] the earliest time in ms to fetch trades for
@@ -528,7 +534,7 @@ class zonda extends zonda$1 {
528
534
  /**
529
535
  * @method
530
536
  * @name zonda#fetchBalance
531
- * @see https://docs.zonda.exchange/reference/list-of-wallets
537
+ * @see https://docs.zondacrypto.exchange/reference/list-of-wallets
532
538
  * @description query for balance and get the amount of funds available for trading or funds locked in orders
533
539
  * @param {object} [params] extra parameters specific to the zonda api endpoint
534
540
  * @returns {object} a [balance structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#balance-structure}
@@ -541,7 +547,7 @@ class zonda extends zonda$1 {
541
547
  /**
542
548
  * @method
543
549
  * @name zonda#fetchOrderBook
544
- * @see https://docs.zonda.exchange/reference/orderbook-2
550
+ * @see https://docs.zondacrypto.exchange/reference/orderbook-2
545
551
  * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
546
552
  * @param {string} symbol unified symbol of the market to fetch the order book for
547
553
  * @param {int} [limit] the maximum amount of order book entries to return
@@ -654,7 +660,7 @@ class zonda extends zonda$1 {
654
660
  * @method
655
661
  * @name zonda#fetchTicker
656
662
  * @description v1_01PublicGetTradingTickerSymbol retrieves timestamp, datetime, bid, ask, close, last, previousClose, v1_01PublicGetTradingStatsSymbol retrieves high, low, volume and opening price of an asset
657
- * @see https://docs.zonda.exchange/reference/market-statistics
663
+ * @see https://docs.zondacrypto.exchange/reference/market-statistics
658
664
  * @param {string} symbol unified symbol of the market to fetch the ticker for
659
665
  * @param {object} [params] extra parameters specific to the zonda api endpoint
660
666
  * @param {string} [params.method] v1_01PublicGetTradingTickerSymbol (default) or v1_01PublicGetTradingStatsSymbol
@@ -727,7 +733,7 @@ class zonda extends zonda$1 {
727
733
  * @method
728
734
  * @name zonda#fetchTickersV2
729
735
  * @description v1_01PublicGetTradingTicker retrieves timestamp, datetime, bid, ask, close, last, previousClose for each market, v1_01PublicGetTradingStats retrieves high, low, volume and opening price of each market
730
- * @see https://docs.zonda.exchange/reference/market-statistics
736
+ * @see https://docs.zondacrypto.exchange/reference/market-statistics
731
737
  * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
732
738
  * @param {object} [params] extra parameters specific to the zonda api endpoint
733
739
  * @param {string} [params.method] v1_01PublicGetTradingTicker (default) or v1_01PublicGetTradingStats
@@ -800,7 +806,7 @@ class zonda extends zonda$1 {
800
806
  /**
801
807
  * @method
802
808
  * @name zonda#fetchLedger
803
- * @see https://docs.zonda.exchange/reference/operations-history
809
+ * @see https://docs.zondacrypto.exchange/reference/operations-history
804
810
  * @description fetch the history of changes, actions done by the user or operations that altered balance of the user
805
811
  * @param {string} code unified currency code, default is undefined
806
812
  * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
@@ -1174,7 +1180,7 @@ class zonda extends zonda$1 {
1174
1180
  /**
1175
1181
  * @method
1176
1182
  * @name zonda#fetchOHLCV
1177
- * @see https://docs.zonda.exchange/reference/candles-chart
1183
+ * @see https://docs.zondacrypto.exchange/reference/candles-chart
1178
1184
  * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1179
1185
  * @param {string} symbol unified symbol of the market to fetch OHLCV data for
1180
1186
  * @param {string} timeframe the length of time each candle represents
@@ -1300,7 +1306,7 @@ class zonda extends zonda$1 {
1300
1306
  /**
1301
1307
  * @method
1302
1308
  * @name zonda#fetchTrades
1303
- * @see https://docs.zonda.exchange/reference/last-transactions
1309
+ * @see https://docs.zondacrypto.exchange/reference/last-transactions
1304
1310
  * @description get the list of most recent trades for a particular symbol
1305
1311
  * @param {string} symbol unified symbol of the market to fetch trades for
1306
1312
  * @param {int} [since] timestamp in ms of the earliest trade to fetch
@@ -1353,7 +1359,6 @@ class zonda extends zonda$1 {
1353
1359
  const isStopLimit = (type === 'stop-limit') || (isLimitOrder && isStopLossPrice);
1354
1360
  const isStopMarket = type === 'stop-market' || (isMarketOrder && isStopLossPrice);
1355
1361
  const isStopOrder = isStopLimit || isStopMarket;
1356
- const method = isStopOrder ? 'v1_01PrivatePostTradingStopOfferSymbol' : 'v1_01PrivatePostTradingOfferSymbol';
1357
1362
  if (isLimitOrder || isStopLimit) {
1358
1363
  request['rate'] = this.priceToPrecision(symbol, price);
1359
1364
  request['mode'] = isStopLimit ? 'stop-limit' : 'limit';
@@ -1364,14 +1369,18 @@ class zonda extends zonda$1 {
1364
1369
  else {
1365
1370
  throw new errors.ExchangeError(this.id + ' createOrder() invalid type');
1366
1371
  }
1372
+ params = this.omit(params, ['stopPrice', 'stopLossPrice']);
1373
+ let response = undefined;
1367
1374
  if (isStopOrder) {
1368
1375
  if (!isStopLossPrice) {
1369
1376
  throw new errors.ExchangeError(this.id + ' createOrder() zonda requires `triggerPrice` or `stopPrice` parameter for stop-limit or stop-market orders');
1370
1377
  }
1371
1378
  request['stopRate'] = this.priceToPrecision(symbol, stopLossPrice);
1379
+ response = await this.v1_01PrivatePostTradingStopOfferSymbol(this.extend(request, params));
1380
+ }
1381
+ else {
1382
+ response = await this.v1_01PrivatePostTradingOfferSymbol(this.extend(request, params));
1372
1383
  }
1373
- params = this.omit(params, ['stopPrice', 'stopLossPrice']);
1374
- const response = await this[method](this.extend(request, params));
1375
1384
  //
1376
1385
  // unfilled (open order)
1377
1386
  //
@@ -1455,7 +1464,7 @@ class zonda extends zonda$1 {
1455
1464
  /**
1456
1465
  * @method
1457
1466
  * @name zonda#cancelOrder
1458
- * @see https://docs.zonda.exchange/reference/cancel-order
1467
+ * @see https://docs.zondacrypto.exchange/reference/cancel-order
1459
1468
  * @description cancels an open order
1460
1469
  * @param {string} id order id
1461
1470
  * @param {string} symbol unified symbol of the market the order was made in
@@ -1516,7 +1525,7 @@ class zonda extends zonda$1 {
1516
1525
  /**
1517
1526
  * @method
1518
1527
  * @name zonda#fetchDepositAddress
1519
- * @see https://docs.zonda.exchange/reference/deposit-addresses-for-crypto
1528
+ * @see https://docs.zondacrypto.exchange/reference/deposit-addresses-for-crypto
1520
1529
  * @description fetch the deposit address for a currency associated with this account
1521
1530
  * @param {string} code unified currency code
1522
1531
  * @param {object} [params] extra parameters specific to the zonda api endpoint
@@ -1550,7 +1559,7 @@ class zonda extends zonda$1 {
1550
1559
  /**
1551
1560
  * @method
1552
1561
  * @name zonda#fetchDepositAddresses
1553
- * @see https://docs.zonda.exchange/reference/deposit-addresses-for-crypto
1562
+ * @see https://docs.zondacrypto.exchange/reference/deposit-addresses-for-crypto
1554
1563
  * @description fetch deposit addresses for multiple currencies and chain types
1555
1564
  * @param {string[]|undefined} codes zonda does not support filtering filtering by multiple codes and will ignore this parameter.
1556
1565
  * @param {object} [params] extra parameters specific to the zonda api endpoint
@@ -1578,7 +1587,7 @@ class zonda extends zonda$1 {
1578
1587
  /**
1579
1588
  * @method
1580
1589
  * @name zonda#transfer
1581
- * @see https://docs.zonda.exchange/reference/internal-transfer
1590
+ * @see https://docs.zondacrypto.exchange/reference/internal-transfer
1582
1591
  * @description transfer currency internally between wallets on the same account
1583
1592
  * @param {string} code unified currency code
1584
1593
  * @param {float} amount amount to transfer
@@ -1690,7 +1699,7 @@ class zonda extends zonda$1 {
1690
1699
  /**
1691
1700
  * @method
1692
1701
  * @name zonda#withdraw
1693
- * @see https://docs.zonda.exchange/reference/crypto-withdrawal-1
1702
+ * @see https://docs.zondacrypto.exchange/reference/crypto-withdrawal-1
1694
1703
  * @description make a withdrawal
1695
1704
  * @param {string} code unified currency code
1696
1705
  * @param {float} amount the amount to withdraw
@@ -1702,26 +1711,24 @@ class zonda extends zonda$1 {
1702
1711
  [tag, params] = this.handleWithdrawTagAndParams(tag, params);
1703
1712
  this.checkAddress(address);
1704
1713
  await this.loadMarkets();
1705
- let method = undefined;
1714
+ let response = undefined;
1706
1715
  const currency = this.currency(code);
1707
1716
  const request = {
1708
1717
  'currency': currency['id'],
1709
- 'quantity': amount,
1718
+ 'amount': amount,
1719
+ 'address': address,
1720
+ // request['balanceId'] = params['balanceId']; // Wallet id used for withdrawal. If not provided, any BITBAY wallet with sufficient funds is used. If BITBAYPAY wallet should be used parameter must be explicitly specified.
1710
1721
  };
1711
1722
  if (this.isFiat(code)) {
1712
- method = 'privatePostWithdraw';
1713
- // request['account'] = params['account']; // they demand an account number
1714
- // request['express'] = params['express']; // whatever it means, they don't explain
1715
- // request['bic'] = '';
1723
+ // request['swift'] = params['swift']; // Bank identifier, if required.
1724
+ response = await this.v1_01PrivatePostApiPaymentsWithdrawalsFiat(this.extend(request, params));
1716
1725
  }
1717
1726
  else {
1718
- method = 'privatePostTransfer';
1719
1727
  if (tag !== undefined) {
1720
- address += '?dt=' + tag.toString();
1728
+ request['tag'] = tag;
1721
1729
  }
1722
- request['address'] = address;
1730
+ response = await this.v1_01PrivatePostApiPaymentsWithdrawalsCrypto(this.extend(request, params));
1723
1731
  }
1724
- const response = await this[method](this.extend(request, params));
1725
1732
  //
1726
1733
  // {
1727
1734
  // "status": "Ok",
package/js/ccxt.d.ts CHANGED
@@ -4,7 +4,7 @@ import * as functions from './src/base/functions.js';
4
4
  import * as errors from './src/base/errors.js';
5
5
  import { Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory } from './src/base/types.js';
6
6
  import { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange } from './src/base/errors.js';
7
- declare const version = "4.1.31";
7
+ declare const version = "4.1.33";
8
8
  import ace from './src/ace.js';
9
9
  import alpaca from './src/alpaca.js';
10
10
  import ascendex from './src/ascendex.js';
package/js/ccxt.js CHANGED
@@ -38,7 +38,7 @@ import * as errors from './src/base/errors.js';
38
38
  import { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange } from './src/base/errors.js';
39
39
  //-----------------------------------------------------------------------------
40
40
  // this is updated by vss.js when building
41
- const version = '4.1.32';
41
+ const version = '4.1.34';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
44
  import ace from './src/ace.js';
@@ -39,6 +39,8 @@ interface zonda {
39
39
  v1_01PrivatePostBalancesBITBAYBalance(params?: {}): Promise<implicitReturnType>;
40
40
  v1_01PrivatePostBalancesBITBAYBalanceTransferSourceDestination(params?: {}): Promise<implicitReturnType>;
41
41
  v1_01PrivatePostFiatCantorExchange(params?: {}): Promise<implicitReturnType>;
42
+ v1_01PrivatePostApiPaymentsWithdrawalsCrypto(params?: {}): Promise<implicitReturnType>;
43
+ v1_01PrivatePostApiPaymentsWithdrawalsFiat(params?: {}): Promise<implicitReturnType>;
42
44
  v1_01PrivateDeleteTradingOfferSymbolIdSidePrice(params?: {}): Promise<implicitReturnType>;
43
45
  v1_01PrivateDeleteTradingStopOfferSymbolIdSidePrice(params?: {}): Promise<implicitReturnType>;
44
46
  v1_01PrivatePutBalancesBITBAYBalanceId(params?: {}): Promise<implicitReturnType>;
@@ -65,15 +65,29 @@ interface Exchange {
65
65
  privateSwapGetAccountFinanceRecord(params?: {}): Promise<implicitReturnType>;
66
66
  privateSwapGetAccountTradingFeeRate(params?: {}): Promise<implicitReturnType>;
67
67
  privateSwapGetAccountTransferRecord(params?: {}): Promise<implicitReturnType>;
68
+ privateSwapGetAccountFundingFee(params?: {}): Promise<implicitReturnType>;
68
69
  privateSwapGetTradeHistoryOrders(params?: {}): Promise<implicitReturnType>;
69
70
  privateSwapGetTradeHistoryTrades(params?: {}): Promise<implicitReturnType>;
70
71
  privateSwapGetTradeOpenOrders(params?: {}): Promise<implicitReturnType>;
71
72
  privateSwapGetTradeOrderInfo(params?: {}): Promise<implicitReturnType>;
72
73
  privateSwapPostAccountLeverage(params?: {}): Promise<implicitReturnType>;
74
+ privateSwapPostAccountPositionMode(params?: {}): Promise<implicitReturnType>;
75
+ privateSwapPostAccountPositionMargin(params?: {}): Promise<implicitReturnType>;
73
76
  privateSwapPostTradeBatchCancelOrder(params?: {}): Promise<implicitReturnType>;
74
77
  privateSwapPostTradeBatchOrder(params?: {}): Promise<implicitReturnType>;
75
78
  privateSwapPostTradeCancelOrder(params?: {}): Promise<implicitReturnType>;
76
79
  privateSwapPostTradeOrderPlace(params?: {}): Promise<implicitReturnType>;
80
+ privateSwapPostFollowSponsorOrder(params?: {}): Promise<implicitReturnType>;
81
+ privateSwapPostFollowCloseOrder(params?: {}): Promise<implicitReturnType>;
82
+ privateSwapPostFollowCancelOrder(params?: {}): Promise<implicitReturnType>;
83
+ privateSwapPostFollowUserCenterCurrent(params?: {}): Promise<implicitReturnType>;
84
+ privateSwapPostFollowUserCenterHistory(params?: {}): Promise<implicitReturnType>;
85
+ privateSwapPostFollowExpertCurrentOpenOrder(params?: {}): Promise<implicitReturnType>;
86
+ privateSwapPostFollowAddAlgo(params?: {}): Promise<implicitReturnType>;
87
+ privateSwapPostFollowCancelAlgo(params?: {}): Promise<implicitReturnType>;
88
+ privateSwapPostFollowAccountAvailable(params?: {}): Promise<implicitReturnType>;
89
+ privateSwapPostFollowPlanTask(params?: {}): Promise<implicitReturnType>;
90
+ privateSwapPostFollowInstrumentList(params?: {}): Promise<implicitReturnType>;
77
91
  }
78
92
  declare abstract class Exchange extends _Exchange {
79
93
  }
@@ -39,6 +39,8 @@ interface Exchange {
39
39
  v1_01PrivatePostBalancesBITBAYBalance(params?: {}): Promise<implicitReturnType>;
40
40
  v1_01PrivatePostBalancesBITBAYBalanceTransferSourceDestination(params?: {}): Promise<implicitReturnType>;
41
41
  v1_01PrivatePostFiatCantorExchange(params?: {}): Promise<implicitReturnType>;
42
+ v1_01PrivatePostApiPaymentsWithdrawalsCrypto(params?: {}): Promise<implicitReturnType>;
43
+ v1_01PrivatePostApiPaymentsWithdrawalsFiat(params?: {}): Promise<implicitReturnType>;
42
44
  v1_01PrivateDeleteTradingOfferSymbolIdSidePrice(params?: {}): Promise<implicitReturnType>;
43
45
  v1_01PrivateDeleteTradingStopOfferSymbolIdSidePrice(params?: {}): Promise<implicitReturnType>;
44
46
  v1_01PrivatePutBalancesBITBAYBalanceId(params?: {}): Promise<implicitReturnType>;
@@ -257,7 +257,6 @@ export default class Exchange {
257
257
  urlencodeNested: (object: any) => string;
258
258
  parseDate: (x: any) => number;
259
259
  ymd: (timestamp: any, infix: any, fullYear?: boolean) => string;
260
- isArray: (needle: any, haystack: any) => any;
261
260
  base64ToString: (string: any) => string;
262
261
  crc32: typeof functions.crc32;
263
262
  describe(): {
@@ -523,6 +522,7 @@ export default class Exchange {
523
522
  valueIsDefined(value: any): boolean;
524
523
  arraySlice(array: any, first: any, second?: any): any;
525
524
  getProperty(obj: any, property: any, defaultValue?: any): any;
525
+ axolotl(payload: any, hexKey: any, ed25519: any): string;
526
526
  handleDeltas(orderbook: any, deltas: any): void;
527
527
  handleDelta(bookside: any, delta: any): void;
528
528
  getCacheIndex(orderbook: any, deltas: any): number;
@@ -8,7 +8,7 @@
8
8
  /* eslint-disable */
9
9
  import * as functions from './functions.js';
10
10
  const { isNode, deepExtend, extend, clone, flatten, unique, indexBy, sortBy, sortBy2, safeFloat2, groupBy, aggregate, uuid, unCamelCase, precisionFromString, Throttler, capitalize, now, decimalToPrecision, safeValue, safeValue2, safeString, safeString2, seconds, milliseconds, binaryToBase16, numberToBE, base16ToBinary, iso8601, omit, isJsonEncodedObject, safeInteger, sum, omitZero, implodeParams, extractParams, json, merge, binaryConcat, hash, ecdsa, arrayConcat, encode, urlencode, hmac, numberToString, parseTimeframe, safeInteger2, safeStringLower, parse8601, yyyymmdd, safeStringUpper, safeTimestamp, binaryConcatArray, uuidv1, numberToLE, ymdhms, stringToBase64, decode, uuid22, safeIntegerProduct2, safeIntegerProduct, safeStringLower2, yymmdd, base58ToBinary, binaryToBase58, safeTimestamp2, rawencode, keysort, inArray, isEmpty, ordered, filterBy, uuid16, safeFloat, base64ToBinary, safeStringUpper2, urlencodeWithArrayRepeat, microseconds, binaryToBase64, strip, toArray, safeFloatN, safeIntegerN, safeIntegerProductN, safeTimestampN, safeValueN, safeStringN, safeStringLowerN, safeStringUpperN, urlencodeNested, parseDate, ymd, base64ToString, crc32, TRUNCATE, ROUND, DECIMAL_PLACES, NO_PADDING, TICK_SIZE, SIGNIFICANT_DIGITS } = functions;
11
- import { keys as keysFunc, values as valuesFunc, inArray as inArrayFunc, vwap as vwapFunc } from './functions.js';
11
+ import { keys as keysFunc, values as valuesFunc, vwap as vwapFunc } from './functions.js';
12
12
  // import exceptions from "./errors.js"
13
13
  import { // eslint-disable-line object-curly-newline
14
14
  ExchangeError, BadSymbol, NullResponse, InvalidAddress, InvalidOrder, NotSupported, BadResponse, AuthenticationError, DDoSProtection, RequestTimeout, NetworkError, ExchangeNotAvailable, ArgumentsRequired, RateLimitExceeded, BadRequest } from "./errors.js";
@@ -17,6 +17,9 @@ import { Precise } from './Precise.js';
17
17
  import WsClient from './ws/WsClient.js';
18
18
  import { createFuture } from './ws/Future.js';
19
19
  import { OrderBook as WsOrderBook, IndexedOrderBook, CountedOrderBook } from './ws/OrderBook.js';
20
+ // ----------------------------------------------------------------------------
21
+ //
22
+ import { axolotl } from './functions/crypto.js';
20
23
  import totp from './functions/totp.js';
21
24
  // ----------------------------------------------------------------------------
22
25
  /**
@@ -194,7 +197,6 @@ export default class Exchange {
194
197
  this.urlencodeNested = urlencodeNested;
195
198
  this.parseDate = parseDate;
196
199
  this.ymd = ymd;
197
- this.isArray = inArrayFunc;
198
200
  this.base64ToString = base64ToString;
199
201
  this.crc32 = crc32;
200
202
  Object.assign(this, functions);
@@ -1075,6 +1077,9 @@ export default class Exchange {
1075
1077
  getProperty(obj, property, defaultValue = undefined) {
1076
1078
  return (property in obj ? obj[property] : defaultValue);
1077
1079
  }
1080
+ axolotl(payload, hexKey, ed25519) {
1081
+ return axolotl(payload, hexKey, ed25519);
1082
+ }
1078
1083
  /* eslint-enable */
1079
1084
  // ------------------------------------------------------------------------
1080
1085
  // ########################################################################
@@ -12,10 +12,12 @@ declare const errorHierarchy: {
12
12
  BadSymbol: {};
13
13
  MarginModeAlreadySet: {};
14
14
  NoChange: {};
15
+ InvalidOperation: {};
15
16
  };
16
17
  BadResponse: {
17
18
  NullResponse: {};
18
19
  };
20
+ OperationFailed: {};
19
21
  InsufficientFunds: {};
20
22
  InvalidAddress: {
21
23
  AddressPending: {};
@@ -18,10 +18,12 @@ const errorHierarchy = {
18
18
  'BadSymbol': {},
19
19
  'MarginModeAlreadySet': {},
20
20
  'NoChange': {},
21
+ 'InvalidOperation': {},
21
22
  },
22
23
  'BadResponse': {
23
24
  'NullResponse': {},
24
25
  },
26
+ 'OperationFailed': {},
25
27
  'InsufficientFunds': {},
26
28
  'InvalidAddress': {
27
29
  'AddressPending': {},
@@ -46,6 +46,12 @@ const roundTimeframe = (timeframe, timestamp, direction = ROUND_DOWN) => {
46
46
  return timestamp - offset + ((direction === ROUND_UP) ? ms : 0);
47
47
  };
48
48
  const extractParams = (string) => {
49
+ /**
50
+ * @ignore
51
+ * @method
52
+ * @param string usually a url path
53
+ * @returns {[string]} all substrings surrounded by {} from parameter string
54
+ */
49
55
  const re = /{([\w-]+)}/g;
50
56
  const matches = [];
51
57
  let match = re.exec(string);
package/js/src/binance.js CHANGED
@@ -5154,13 +5154,13 @@ export default class binance extends Exchange {
5154
5154
  * @description cancel multiple orders
5155
5155
  * @see https://binance-docs.github.io/apidocs/futures/en/#cancel-multiple-orders-trade
5156
5156
  * @see https://binance-docs.github.io/apidocs/delivery/en/#cancel-multiple-orders-trade
5157
- * @param {[string]} ids order ids
5157
+ * @param {string[]} ids order ids
5158
5158
  * @param {string} [symbol] unified market symbol
5159
5159
  * @param {object} [params] extra parameters specific to the bingx api endpoint
5160
5160
  *
5161
5161
  * EXCHANGE SPECIFIC PARAMETERS
5162
- * @param {[string]} [params.origClientOrderIdList] max length 10 e.g. ["my_id_1","my_id_2"], encode the double quotes. No space after comma
5163
- * @param {[int]} [params.recvWindow]
5162
+ * @param {string[]} [params.origClientOrderIdList] max length 10 e.g. ["my_id_1","my_id_2"], encode the double quotes. No space after comma
5163
+ * @param {int[]} [params.recvWindow]
5164
5164
  * @returns {object} an list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
5165
5165
  */
5166
5166
  this.checkRequiredSymbol('cancelOrders', symbol);
@@ -660,7 +660,7 @@ export default class bitforex extends Exchange {
660
660
  * @method
661
661
  * @name bitforex#fetchOrder
662
662
  * @description fetches information on an order made by the user
663
- * @see
663
+ * @see https://apidoc.bitforex.com/#order-information-user_data
664
664
  * @param {string} symbol unified symbol of the market the order was made in
665
665
  * @param {object} [params] extra parameters specific to the bitforex api endpoint
666
666
  * @returns {object} An [order structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
package/js/src/bitmex.js CHANGED
@@ -1674,18 +1674,15 @@ export default class bitmex extends Exchange {
1674
1674
  // "timestamp":"2021-01-02T21:38:49.246Z"
1675
1675
  // }
1676
1676
  //
1677
- const status = this.parseOrderStatus(this.safeString(order, 'ordStatus'));
1678
1677
  const marketId = this.safeString(order, 'symbol');
1679
- const symbol = this.safeSymbol(marketId, market);
1680
- const timestamp = this.parse8601(this.safeString(order, 'timestamp'));
1681
- const lastTradeTimestamp = this.parse8601(this.safeString(order, 'transactTime'));
1682
- const price = this.safeString(order, 'price');
1678
+ market = this.safeMarket(marketId, market);
1679
+ const symbol = market['symbol'];
1683
1680
  const qty = this.safeString(order, 'orderQty');
1684
1681
  let cost = undefined;
1685
1682
  let amount = undefined;
1686
- const defaultSubType = this.safeString(this.options, 'defaultSubType', 'linear');
1687
1683
  let isInverse = false;
1688
- if (market === undefined) {
1684
+ if (marketId === undefined) {
1685
+ const defaultSubType = this.safeString(this.options, 'defaultSubType', 'linear');
1689
1686
  isInverse = (defaultSubType === 'inverse');
1690
1687
  }
1691
1688
  else {
@@ -1706,38 +1703,35 @@ export default class bitmex extends Exchange {
1706
1703
  else {
1707
1704
  filled = cumQty;
1708
1705
  }
1709
- const id = this.safeString(order, 'orderID');
1710
- const type = this.safeStringLower(order, 'ordType');
1711
- const side = this.safeStringLower(order, 'side');
1712
- const clientOrderId = this.safeString(order, 'clOrdID');
1713
- const timeInForce = this.parseTimeInForce(this.safeString(order, 'timeInForce'));
1714
- const stopPrice = this.safeNumber(order, 'stopPx');
1715
1706
  const execInst = this.safeString(order, 'execInst');
1716
1707
  let postOnly = undefined;
1717
1708
  if (execInst !== undefined) {
1718
1709
  postOnly = (execInst === 'ParticipateDoNotInitiate');
1719
1710
  }
1711
+ const timestamp = this.parse8601(this.safeString(order, 'timestamp'));
1712
+ const stopPrice = this.safeNumber(order, 'stopPx');
1713
+ const remaining = this.safeString(order, 'leavesQty');
1720
1714
  return this.safeOrder({
1721
1715
  'info': order,
1722
- 'id': id,
1723
- 'clientOrderId': clientOrderId,
1716
+ 'id': this.safeString(order, 'orderID'),
1717
+ 'clientOrderId': this.safeString(order, 'clOrdID'),
1724
1718
  'timestamp': timestamp,
1725
1719
  'datetime': this.iso8601(timestamp),
1726
- 'lastTradeTimestamp': lastTradeTimestamp,
1720
+ 'lastTradeTimestamp': this.parse8601(this.safeString(order, 'transactTime')),
1727
1721
  'symbol': symbol,
1728
- 'type': type,
1729
- 'timeInForce': timeInForce,
1722
+ 'type': this.safeStringLower(order, 'ordType'),
1723
+ 'timeInForce': this.parseTimeInForce(this.safeString(order, 'timeInForce')),
1730
1724
  'postOnly': postOnly,
1731
- 'side': side,
1732
- 'price': price,
1725
+ 'side': this.safeStringLower(order, 'side'),
1726
+ 'price': this.safeString(order, 'price'),
1733
1727
  'stopPrice': stopPrice,
1734
1728
  'triggerPrice': stopPrice,
1735
1729
  'amount': amount,
1736
1730
  'cost': cost,
1737
1731
  'average': average,
1738
1732
  'filled': filled,
1739
- 'remaining': undefined,
1740
- 'status': status,
1733
+ 'remaining': this.convertFromRawQuantity(symbol, remaining),
1734
+ 'status': this.parseOrderStatus(this.safeString(order, 'ordStatus')),
1741
1735
  'fee': undefined,
1742
1736
  'trades': undefined,
1743
1737
  }, market);
@@ -224,6 +224,16 @@ export default class digifinex extends Exchange {
224
224
  handleMarginModeAndParams(methodName: any, params?: {}, defaultValue?: any): any[];
225
225
  fetchDepositWithdrawFees(codes?: string[], params?: {}): Promise<{}>;
226
226
  parseDepositWithdrawFees(response: any, codes?: any, currencyIdKey?: any): {};
227
+ fetchFundingHistory(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").FundingHistory[]>;
228
+ parseIncome(income: any, market?: any): {
229
+ info: any;
230
+ symbol: any;
231
+ code: any;
232
+ timestamp: number;
233
+ datetime: string;
234
+ id: any;
235
+ amount: number;
236
+ };
227
237
  sign(path: any, api?: any[], method?: string, params?: {}, headers?: any, body?: any): {
228
238
  url: string;
229
239
  method: string;
@@ -50,7 +50,7 @@ export default class digifinex extends Exchange {
50
50
  'fetchDeposits': true,
51
51
  'fetchDepositWithdrawFee': 'emulated',
52
52
  'fetchDepositWithdrawFees': true,
53
- 'fetchFundingHistory': false,
53
+ 'fetchFundingHistory': true,
54
54
  'fetchFundingRate': true,
55
55
  'fetchFundingRateHistory': true,
56
56
  'fetchFundingRates': false,
@@ -197,6 +197,7 @@ export default class digifinex extends Exchange {
197
197
  'account/finance_record',
198
198
  'account/trading_fee_rate',
199
199
  'account/transfer_record',
200
+ 'account/funding_fee',
200
201
  'trade/history_orders',
201
202
  'trade/history_trades',
202
203
  'trade/open_orders',
@@ -204,10 +205,23 @@ export default class digifinex extends Exchange {
204
205
  ],
205
206
  'post': [
206
207
  'account/leverage',
208
+ 'account/position_mode',
209
+ 'account/position_margin',
207
210
  'trade/batch_cancel_order',
208
211
  'trade/batch_order',
209
212
  'trade/cancel_order',
210
213
  'trade/order_place',
214
+ 'follow/sponsor_order',
215
+ 'follow/close_order',
216
+ 'follow/cancel_order',
217
+ 'follow/user_center_current',
218
+ 'follow/user_center_history',
219
+ 'follow/expert_current_open_order',
220
+ 'follow/add_algo',
221
+ 'follow/cancel_algo',
222
+ 'follow/account_available',
223
+ 'follow/plan_task',
224
+ 'follow/instrument_list',
211
225
  ],
212
226
  },
213
227
  },
@@ -3813,6 +3827,72 @@ export default class digifinex extends Exchange {
3813
3827
  }
3814
3828
  return depositWithdrawFees;
3815
3829
  }
3830
+ async fetchFundingHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
3831
+ /**
3832
+ * @method
3833
+ * @name digifinex#fetchFundingHistory
3834
+ * @description fetch the history of funding payments paid and received on this account
3835
+ * @see https://docs.digifinex.com/en-ww/swap/v2/rest.html#funding-fee
3836
+ * @param {string} [symbol] unified market symbol
3837
+ * @param {int} [since] the earliest time in ms to fetch funding history for
3838
+ * @param {int} [limit] the maximum number of funding history structures to retrieve
3839
+ * @param {object} [params] extra parameters specific to the digifinex api endpoint
3840
+ * @param {int} [params.until] timestamp in ms of the latest funding payment
3841
+ * @returns {object} a [funding history structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#funding-history-structure}
3842
+ */
3843
+ await this.loadMarkets();
3844
+ let request = {};
3845
+ [request, params] = this.handleUntilOption('end_timestamp', request, params);
3846
+ let market = undefined;
3847
+ if (symbol !== undefined) {
3848
+ market = this.market(symbol);
3849
+ request['instrument_id'] = market['id'];
3850
+ }
3851
+ if (limit !== undefined) {
3852
+ request['limit'] = limit;
3853
+ }
3854
+ if (since !== undefined) {
3855
+ request['start_timestamp'] = since;
3856
+ }
3857
+ const response = await this.privateSwapGetAccountFundingFee(this.extend(request, params));
3858
+ //
3859
+ // {
3860
+ // "code": 0,
3861
+ // "data": [
3862
+ // {
3863
+ // "instrument_id": "BTCUSDTPERP",
3864
+ // "currency": "USDT",
3865
+ // "amount": "-0.000342814",
3866
+ // "timestamp": 1698768009440
3867
+ // }
3868
+ // ]
3869
+ // }
3870
+ //
3871
+ const data = this.safeValue(response, 'data', []);
3872
+ return this.parseIncomes(data, market, since, limit);
3873
+ }
3874
+ parseIncome(income, market = undefined) {
3875
+ //
3876
+ // {
3877
+ // "instrument_id": "BTCUSDTPERP",
3878
+ // "currency": "USDT",
3879
+ // "amount": "-0.000342814",
3880
+ // "timestamp": 1698768009440
3881
+ // }
3882
+ //
3883
+ const marketId = this.safeString(income, 'instrument_id');
3884
+ const currencyId = this.safeString(income, 'currency');
3885
+ const timestamp = this.safeInteger(income, 'timestamp');
3886
+ return {
3887
+ 'info': income,
3888
+ 'symbol': this.safeSymbol(marketId, market, undefined, 'swap'),
3889
+ 'code': this.safeCurrencyCode(currencyId),
3890
+ 'timestamp': timestamp,
3891
+ 'datetime': this.iso8601(timestamp),
3892
+ 'id': undefined,
3893
+ 'amount': this.safeNumber(income, 'amount'),
3894
+ };
3895
+ }
3816
3896
  sign(path, api = [], method = 'GET', params = {}, headers = undefined, body = undefined) {
3817
3897
  const signed = api[0] === 'private';
3818
3898
  const endpoint = api[1];