ccxt 4.1.7 → 4.1.9

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 (63) hide show
  1. package/CHANGELOG.md +194 -0
  2. package/README.md +3 -3
  3. package/dist/ccxt.browser.js +1298 -202
  4. package/dist/ccxt.browser.min.js +7 -7
  5. package/dist/cjs/ccxt.js +3 -1
  6. package/dist/cjs/src/base/Exchange.js +58 -2
  7. package/dist/cjs/src/bingx.js +100 -39
  8. package/dist/cjs/src/bitbns.js +3 -3
  9. package/dist/cjs/src/bitget.js +26 -2
  10. package/dist/cjs/src/bitmart.js +2 -0
  11. package/dist/cjs/src/coinfalcon.js +3 -3
  12. package/dist/cjs/src/gate.js +9 -1
  13. package/dist/cjs/src/kucoin.js +2 -2
  14. package/dist/cjs/src/kucoinfutures.js +3 -3
  15. package/dist/cjs/src/mexc.js +46 -3
  16. package/dist/cjs/src/pro/bingx.js +891 -0
  17. package/dist/cjs/src/pro/exmo.js +1 -1
  18. package/js/ccxt.d.ts +6 -3
  19. package/js/ccxt.js +3 -1
  20. package/js/src/abstract/bingx.d.ts +1 -0
  21. package/js/src/abstract/bitmart.d.ts +1 -0
  22. package/js/src/abstract/mexc.d.ts +2 -0
  23. package/js/src/abstract/mexc3.d.ts +2 -0
  24. package/js/src/base/Exchange.d.ts +6 -3
  25. package/js/src/base/Exchange.js +58 -2
  26. package/js/src/base/types.d.ts +7 -0
  27. package/js/src/binance.d.ts +17 -17
  28. package/js/src/bingx.d.ts +4 -3
  29. package/js/src/bingx.js +100 -39
  30. package/js/src/bitbns.js +3 -3
  31. package/js/src/bitfinex2.d.ts +13 -13
  32. package/js/src/bitget.d.ts +15 -15
  33. package/js/src/bitget.js +26 -2
  34. package/js/src/bitmart.js +2 -0
  35. package/js/src/bitmex.d.ts +15 -15
  36. package/js/src/bybit.d.ts +23 -23
  37. package/js/src/coinbase.d.ts +16 -16
  38. package/js/src/coinbasepro.d.ts +12 -12
  39. package/js/src/coinex.d.ts +2 -2
  40. package/js/src/coinfalcon.js +3 -3
  41. package/js/src/cryptocom.d.ts +12 -12
  42. package/js/src/deribit.d.ts +2 -2
  43. package/js/src/digifinex.d.ts +2 -2
  44. package/js/src/gate.d.ts +10 -10
  45. package/js/src/gate.js +9 -1
  46. package/js/src/huobi.d.ts +16 -16
  47. package/js/src/kraken.d.ts +2 -2
  48. package/js/src/krakenfutures.d.ts +6 -6
  49. package/js/src/kucoin.d.ts +13 -13
  50. package/js/src/kucoin.js +2 -2
  51. package/js/src/kucoinfutures.d.ts +10 -10
  52. package/js/src/kucoinfutures.js +3 -3
  53. package/js/src/mexc.d.ts +3 -3
  54. package/js/src/mexc.js +46 -3
  55. package/js/src/okx.d.ts +13 -13
  56. package/js/src/phemex.d.ts +2 -2
  57. package/js/src/poloniex.d.ts +5 -5
  58. package/js/src/pro/bingx.d.ts +24 -0
  59. package/js/src/pro/bingx.js +892 -0
  60. package/js/src/pro/exmo.js +1 -1
  61. package/js/src/woo.d.ts +2 -2
  62. package/package.json +1 -1
  63. package/skip-tests.json +3 -0
package/js/src/gate.js CHANGED
@@ -3576,6 +3576,13 @@ export default class gate extends Exchange {
3576
3576
  // "memo": null
3577
3577
  // }
3578
3578
  //
3579
+ // {
3580
+ // "currency":"usdt",
3581
+ // "address":"0x01b0A9b7b4CdE774AF0f3E47CB4f1c2CCdBa0806",
3582
+ // "amount":"1880",
3583
+ // "chain":"eth"
3584
+ // }
3585
+ //
3579
3586
  const id = this.safeString(transaction, 'id');
3580
3587
  let type = undefined;
3581
3588
  let amountString = this.safeString(transaction, 'amount');
@@ -3593,6 +3600,7 @@ export default class gate extends Exchange {
3593
3600
  if (type === 'withdrawal') {
3594
3601
  amountString = Precise.stringSub(amountString, feeCostString);
3595
3602
  }
3603
+ const networkId = this.safeStringUpper(transaction, 'chain');
3596
3604
  const currencyId = this.safeString(transaction, 'currency');
3597
3605
  const code = this.safeCurrencyCode(currencyId);
3598
3606
  const txid = this.safeString(transaction, 'txid');
@@ -3607,7 +3615,7 @@ export default class gate extends Exchange {
3607
3615
  'txid': txid,
3608
3616
  'currency': code,
3609
3617
  'amount': this.parseNumber(amountString),
3610
- 'network': undefined,
3618
+ 'network': this.networkIdToCode(networkId),
3611
3619
  'address': address,
3612
3620
  'addressTo': undefined,
3613
3621
  'addressFrom': undefined,
package/js/src/huobi.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/huobi.js';
2
- import { Int, OrderSide, OrderType } from './base/types.js';
2
+ import { Int, OrderSide, OrderType, Order, OHLCV, Trade, FundingRateHistory } from './base/types.js';
3
3
  /**
4
4
  * @class huobi
5
5
  * @extends Exchange
@@ -52,13 +52,13 @@ export default class huobi extends Exchange {
52
52
  fetchTicker(symbol: string, params?: {}): Promise<import("./base/types.js").Ticker>;
53
53
  fetchTickers(symbols?: string[], params?: {}): Promise<any>;
54
54
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<import("./base/types.js").OrderBook>;
55
- parseTrade(trade: any, market?: any): import("./base/types.js").Trade;
56
- fetchOrderTrades(id: string, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Trade[]>;
57
- fetchSpotOrderTrades(id: string, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Trade[]>;
58
- fetchMyTrades(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
55
+ parseTrade(trade: any, market?: any): Trade;
56
+ fetchOrderTrades(id: string, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
57
+ fetchSpotOrderTrades(id: string, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
58
+ fetchMyTrades(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
59
59
  fetchTrades(symbol: string, since?: Int, limit?: number, params?: {}): Promise<any>;
60
60
  parseOHLCV(ohlcv: any, market?: any): number[];
61
- fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
61
+ fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
62
62
  fetchAccounts(params?: {}): Promise<any[]>;
63
63
  parseAccount(account: any): {
64
64
  info: any;
@@ -71,18 +71,18 @@ export default class huobi extends Exchange {
71
71
  networkIdToCode(networkId: any, currencyCode?: any): string;
72
72
  networkCodeToId(networkCode: any, currencyCode?: any): any;
73
73
  fetchBalance(params?: {}): Promise<any>;
74
- fetchOrder(id: string, symbol?: string, params?: {}): Promise<import("./base/types.js").Order>;
74
+ fetchOrder(id: string, symbol?: string, params?: {}): Promise<Order>;
75
75
  parseMarginBalanceHelper(balance: any, code: any, result: any): any;
76
- fetchSpotOrdersByStates(states: any, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Order[]>;
77
- fetchSpotOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Order[]>;
78
- fetchClosedSpotOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Order[]>;
79
- fetchContractOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Order[]>;
80
- fetchClosedContractOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Order[]>;
76
+ fetchSpotOrdersByStates(states: any, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
77
+ fetchSpotOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
78
+ fetchClosedSpotOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
79
+ fetchContractOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
80
+ fetchClosedContractOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
81
81
  fetchOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
82
82
  fetchClosedOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
83
- fetchOpenOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Order[]>;
83
+ fetchOpenOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
84
84
  parseOrderStatus(status: any): string;
85
- parseOrder(order: any, market?: any): import("./base/types.js").Order;
85
+ parseOrder(order: any, market?: any): Order;
86
86
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, params?: {}): Promise<any>;
87
87
  createSpotOrder(symbol: string, type: any, side: any, amount: any, price?: any, params?: {}): Promise<{
88
88
  info: any;
@@ -104,7 +104,7 @@ export default class huobi extends Exchange {
104
104
  clientOrderId: any;
105
105
  average: any;
106
106
  }>;
107
- createContractOrder(symbol: string, type: any, side: any, amount: any, price?: any, params?: {}): Promise<import("./base/types.js").Order>;
107
+ createContractOrder(symbol: string, type: any, side: any, amount: any, price?: any, params?: {}): Promise<Order>;
108
108
  cancelOrder(id: string, symbol?: string, params?: {}): Promise<any>;
109
109
  cancelOrders(ids: any, symbol?: string, params?: {}): Promise<any>;
110
110
  cancelAllOrders(symbol?: string, params?: {}): Promise<any>;
@@ -196,7 +196,7 @@ export default class huobi extends Exchange {
196
196
  info: any;
197
197
  }>;
198
198
  fetchBorrowRates(params?: {}): Promise<{}>;
199
- fetchFundingRateHistory(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
199
+ fetchFundingRateHistory(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
200
200
  parseFundingRate(contract: any, market?: any): {
201
201
  info: any;
202
202
  symbol: any;
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/kraken.js';
2
- import { Int, OrderSide, OrderType } from './base/types.js';
2
+ import { Int, OrderSide, OrderType, OHLCV } from './base/types.js';
3
3
  /**
4
4
  * @class kraken
5
5
  * @extends Exchange
@@ -33,7 +33,7 @@ export default class kraken extends Exchange {
33
33
  fetchTickers(symbols?: string[], params?: {}): Promise<any>;
34
34
  fetchTicker(symbol: string, params?: {}): Promise<import("./base/types.js").Ticker>;
35
35
  parseOHLCV(ohlcv: any, market?: any): number[];
36
- fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
36
+ fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
37
37
  parseLedgerEntryType(type: any): string;
38
38
  parseLedgerEntry(item: any, currency?: any): {
39
39
  info: any;
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/krakenfutures.js';
2
- import { Int, OrderSide, OrderType } from './base/types.js';
2
+ import { Int, OrderSide, OrderType, OHLCV, Trade, FundingRateHistory } from './base/types.js';
3
3
  /**
4
4
  * @class krakenfutures
5
5
  * @extends Exchange
@@ -10,10 +10,10 @@ export default class krakenfutures extends Exchange {
10
10
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<import("./base/types.js").OrderBook>;
11
11
  fetchTickers(symbols?: string[], params?: {}): Promise<import("./base/types.js").Dictionary<import("./base/types.js").Ticker>>;
12
12
  parseTicker(ticker: any, market?: any): import("./base/types.js").Ticker;
13
- fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
13
+ fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
14
14
  parseOHLCV(ohlcv: any, market?: any): number[];
15
- fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
16
- parseTrade(trade: any, market?: any): import("./base/types.js").Trade;
15
+ fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
16
+ parseTrade(trade: any, market?: any): Trade;
17
17
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, params?: {}): Promise<import("./base/types.js").Order>;
18
18
  editOrder(id: string, symbol: any, type: any, side: any, amount?: any, price?: any, params?: {}): Promise<any>;
19
19
  cancelOrder(id: string, symbol?: string, params?: {}): Promise<any>;
@@ -23,7 +23,7 @@ export default class krakenfutures extends Exchange {
23
23
  verifyOrderActionSuccess(status: any, method: any, omit?: any[]): void;
24
24
  parseOrderStatus(status: any): string;
25
25
  parseOrder(order: any, market?: any): import("./base/types.js").Order;
26
- fetchMyTrades(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Trade[]>;
26
+ fetchMyTrades(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
27
27
  fetchBalance(params?: {}): Promise<any>;
28
28
  parseBalance(response: any): import("./base/types.js").Balances;
29
29
  fetchFundingRates(symbols?: string[], params?: {}): Promise<{}>;
@@ -46,7 +46,7 @@ export default class krakenfutures extends Exchange {
46
46
  previousFundingTimestamp: any;
47
47
  previousFundingDatetime: any;
48
48
  };
49
- fetchFundingRateHistory(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
49
+ fetchFundingRateHistory(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
50
50
  fetchPositions(symbols?: string[], params?: {}): Promise<import("./base/types.js").Position[]>;
51
51
  parsePositions(response: any, symbols?: string[], params?: {}): any[];
52
52
  parsePosition(position: any, market?: any): {
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/kucoin.js';
2
- import { Int, OrderSide, OrderType } from './base/types.js';
2
+ import { Int, OrderSide, OrderType, Order, OHLCV, Trade } from './base/types.js';
3
3
  /**
4
4
  * @class kucoin
5
5
  * @extends Exchange
@@ -52,7 +52,7 @@ export default class kucoin extends Exchange {
52
52
  fetchTickers(symbols?: string[], params?: {}): Promise<any>;
53
53
  fetchTicker(symbol: string, params?: {}): Promise<import("./base/types.js").Ticker>;
54
54
  parseOHLCV(ohlcv: any, market?: any): number[];
55
- fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
55
+ fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
56
56
  createDepositAddress(code: string, params?: {}): Promise<{
57
57
  info: any;
58
58
  currency: any;
@@ -77,19 +77,19 @@ export default class kucoin extends Exchange {
77
77
  fetchDepositAddressesByNetwork(code: string, params?: {}): Promise<{}>;
78
78
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<import("./base/types.js").OrderBook>;
79
79
  handleTriggerPrices(params: any): any[];
80
- createOrder(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, params?: {}): Promise<import("./base/types.js").Order>;
81
- editOrder(id: string, symbol: any, type: any, side: any, amount?: any, price?: any, params?: {}): Promise<import("./base/types.js").Order>;
80
+ createOrder(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, params?: {}): Promise<Order>;
81
+ editOrder(id: string, symbol: any, type: any, side: any, amount?: any, price?: any, params?: {}): Promise<Order>;
82
82
  cancelOrder(id: string, symbol?: string, params?: {}): Promise<any>;
83
83
  cancelAllOrders(symbol?: string, params?: {}): Promise<any>;
84
- fetchOrdersByStatus(status: any, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Order[]>;
85
- fetchClosedOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
86
- fetchOpenOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
87
- fetchOrder(id: string, symbol?: string, params?: {}): Promise<import("./base/types.js").Order>;
88
- parseOrder(order: any, market?: any): import("./base/types.js").Order;
89
- fetchOrderTrades(id: string, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
90
- fetchMyTrades(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
91
- fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Trade[]>;
92
- parseTrade(trade: any, market?: any): import("./base/types.js").Trade;
84
+ fetchOrdersByStatus(status: any, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
85
+ fetchClosedOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
86
+ fetchOpenOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
87
+ fetchOrder(id: string, symbol?: string, params?: {}): Promise<Order>;
88
+ parseOrder(order: any, market?: any): Order;
89
+ fetchOrderTrades(id: string, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
90
+ fetchMyTrades(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
91
+ fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
92
+ parseTrade(trade: any, market?: any): Trade;
93
93
  fetchTradingFee(symbol: string, params?: {}): Promise<{
94
94
  info: any;
95
95
  symbol: any;
package/js/src/kucoin.js CHANGED
@@ -2228,7 +2228,7 @@ export default class kucoin extends Exchange {
2228
2228
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
2229
2229
  * @returns {Order[]} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
2230
2230
  */
2231
- await this.loadMarkets;
2231
+ await this.loadMarkets();
2232
2232
  let paginate = false;
2233
2233
  [paginate, params] = this.handleOptionAndParams(params, 'fetchClosedOrders', 'paginate');
2234
2234
  if (paginate) {
@@ -2261,7 +2261,7 @@ export default class kucoin extends Exchange {
2261
2261
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
2262
2262
  * @returns {Order[]} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
2263
2263
  */
2264
- await this.loadMarkets;
2264
+ await this.loadMarkets();
2265
2265
  let paginate = false;
2266
2266
  [paginate, params] = this.handleOptionAndParams(params, 'fetchOpenOrders', 'paginate');
2267
2267
  if (paginate) {
@@ -1,5 +1,5 @@
1
1
  import kucoin from './abstract/kucoinfutures.js';
2
- import { Dictionary, Int, OrderSide, Ticker, OrderType } from './base/types.js';
2
+ import { Dictionary, Int, OrderSide, Ticker, OrderType, OHLCV, Order, Trade, FundingRateHistory } from './base/types.js';
3
3
  export default class kucoinfutures extends kucoin {
4
4
  describe(): any;
5
5
  fetchStatus(params?: {}): Promise<{
@@ -11,7 +11,7 @@ export default class kucoinfutures extends kucoin {
11
11
  }>;
12
12
  fetchMarkets(params?: {}): Promise<any[]>;
13
13
  fetchTime(params?: {}): Promise<number>;
14
- fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
14
+ fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
15
15
  parseOHLCV(ohlcv: any, market?: any): number[];
16
16
  fetchDepositAddress(code: string, params?: {}): Promise<{
17
17
  info: any;
@@ -65,10 +65,10 @@ export default class kucoinfutures extends kucoin {
65
65
  symbol: any;
66
66
  status: any;
67
67
  };
68
- fetchOrdersByStatus(status: any, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
69
- fetchClosedOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
70
- fetchOrder(id?: any, symbol?: string, params?: {}): Promise<import("./base/types.js").Order>;
71
- parseOrder(order: any, market?: any): import("./base/types.js").Order;
68
+ fetchOrdersByStatus(status: any, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
69
+ fetchClosedOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
70
+ fetchOrder(id?: any, symbol?: string, params?: {}): Promise<Order>;
71
+ parseOrder(order: any, market?: any): Order;
72
72
  fetchFundingRate(symbol: string, params?: {}): Promise<{
73
73
  info: any;
74
74
  symbol: any;
@@ -103,14 +103,14 @@ export default class kucoinfutures extends kucoin {
103
103
  info: any;
104
104
  };
105
105
  parseTransferStatus(status: any): string;
106
- fetchMyTrades(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
107
- fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Trade[]>;
108
- parseTrade(trade: any, market?: any): import("./base/types.js").Trade;
106
+ fetchMyTrades(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
107
+ fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
108
+ parseTrade(trade: any, market?: any): Trade;
109
109
  fetchDeposits(code?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
110
110
  fetchWithdrawals(code?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
111
111
  fetchMarketLeverageTiers(symbol: string, params?: {}): Promise<any[]>;
112
112
  parseMarketLeverageTiers(info: any, market?: any): any[];
113
- fetchFundingRateHistory(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
113
+ fetchFundingRateHistory(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
114
114
  parseFundingRateHistory(info: any, market?: any): {
115
115
  info: any;
116
116
  symbol: any;
@@ -1537,7 +1537,7 @@ export default class kucoinfutures extends kucoin {
1537
1537
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
1538
1538
  * @returns {Order[]} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
1539
1539
  */
1540
- await this.loadMarkets;
1540
+ await this.loadMarkets();
1541
1541
  let paginate = false;
1542
1542
  [paginate, params] = this.handleOptionAndParams(params, 'fetchClosedOrders', 'paginate');
1543
1543
  if (paginate) {
@@ -2328,12 +2328,12 @@ export default class kucoinfutures extends kucoin {
2328
2328
  async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2329
2329
  /**
2330
2330
  * @method
2331
- * @name okx#fetchFundingRateHistory
2331
+ * @name kucoinfutures#fetchFundingRateHistory
2332
2332
  * @description fetches historical funding rate prices
2333
2333
  * @param {string} symbol unified symbol of the market to fetch the funding rate history for
2334
2334
  * @param {int} [since] not used by kucuoinfutures
2335
2335
  * @param {int} [limit] the maximum amount of [funding rate structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#funding-rate-history-structure} to fetch
2336
- * @param {object} [params] extra parameters specific to the okx api endpoint
2336
+ * @param {object} [params] extra parameters specific to the kucoinfutures api endpoint
2337
2337
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
2338
2338
  * @returns {object[]} a list of [funding rate structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#funding-rate-history-structure}
2339
2339
  */
package/js/src/mexc.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/mexc.js';
2
- import { IndexType, Int, OrderSide, Balances, OrderType } from './base/types.js';
2
+ import { IndexType, Int, OrderSide, Balances, OrderType, OHLCV, FundingRateHistory } from './base/types.js';
3
3
  /**
4
4
  * @class mexc
5
5
  * @extends Exchange
@@ -24,7 +24,7 @@ export default class mexc extends Exchange {
24
24
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Trade[]>;
25
25
  parseTrade(trade: any, market?: any): import("./base/types.js").Trade;
26
26
  syntheticTradeId(market?: any, timestamp?: any, side?: any, amount?: any, price?: any, orderType?: any, takerOrMaker?: any): string;
27
- fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").OHLCV[]>;
27
+ fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
28
28
  parseOHLCV(ohlcv: any, market?: any): number[];
29
29
  fetchTickers(symbols?: string[], params?: {}): Promise<import("./base/types.js").Dictionary<import("./base/types.js").Ticker>>;
30
30
  fetchTicker(symbol: string, params?: {}): Promise<import("./base/types.js").Ticker>;
@@ -99,7 +99,7 @@ export default class mexc extends Exchange {
99
99
  previousFundingTimestamp: any;
100
100
  previousFundingDatetime: any;
101
101
  }>;
102
- fetchFundingRateHistory(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
102
+ fetchFundingRateHistory(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
103
103
  fetchLeverageTiers(symbols?: string[], params?: {}): Promise<{}>;
104
104
  parseMarketLeverageTiers(info: any, market?: any): any[];
105
105
  parseDepositAddress(depositAddress: any, currency?: any): {
package/js/src/mexc.js CHANGED
@@ -196,6 +196,8 @@ export default class mexc extends Exchange {
196
196
  'rebate/detail/kickback': 1,
197
197
  'rebate/referCode': 1,
198
198
  'rebate/affiliate/commission': 1,
199
+ 'rebate/affiliate/withdraw': 1,
200
+ 'rebate/affiliate/commission/detail': 1,
199
201
  'mxDeduct/enable': 1,
200
202
  'userDataStream': 1,
201
203
  },
@@ -1360,11 +1362,15 @@ export default class mexc extends Exchange {
1360
1362
  /**
1361
1363
  * @method
1362
1364
  * @name mexc3#fetchTrades
1365
+ * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#recent-trades-list
1366
+ * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#compressed-aggregate-trades-list
1367
+ * @see https://mexcdevelop.github.io/apidocs/contract_v1_en/#get-contract-transaction-data
1363
1368
  * @description get the list of most recent trades for a particular symbol
1364
1369
  * @param {string} symbol unified symbol of the market to fetch trades for
1365
1370
  * @param {int} [since] timestamp in ms of the earliest trade to fetch
1366
1371
  * @param {int} [limit] the maximum amount of trades to fetch
1367
1372
  * @param {object} [params] extra parameters specific to the mexc3 api endpoint
1373
+ * @param {int} [params.until] *spot only* *since must be defined* the latest time in ms to fetch entries for
1368
1374
  * @returns {Trade[]} a list of [trade structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#public-trades}
1369
1375
  */
1370
1376
  await this.loadMarkets();
@@ -1375,11 +1381,21 @@ export default class mexc extends Exchange {
1375
1381
  if (limit !== undefined) {
1376
1382
  request['limit'] = limit;
1377
1383
  }
1378
- // if (since !== undefined) {
1379
- // request['startTime'] = since; bug in api, waiting for fix
1380
- // }
1381
1384
  let trades = undefined;
1382
1385
  if (market['spot']) {
1386
+ const until = this.safeIntegerN(params, ['endTime', 'until', 'till']);
1387
+ if (since !== undefined) {
1388
+ request['startTime'] = since;
1389
+ if (until === undefined) {
1390
+ throw new ArgumentsRequired(this.id + ' fetchTrades() requires an until parameter when since is provided');
1391
+ }
1392
+ }
1393
+ if (until !== undefined) {
1394
+ if (since === undefined) {
1395
+ throw new ArgumentsRequired(this.id + ' fetchTrades() requires a since parameter when until is provided');
1396
+ }
1397
+ request['endTime'] = until;
1398
+ }
1383
1399
  let method = this.safeString(this.options, 'fetchTradesMethod', 'spotPublicGetAggTrades');
1384
1400
  method = this.safeString(params, 'method', method); // AggTrades, HistoricalTrades, Trades
1385
1401
  trades = await this[method](this.extend(request, params));
@@ -1610,31 +1626,53 @@ export default class mexc extends Exchange {
1610
1626
  /**
1611
1627
  * @method
1612
1628
  * @name mexc3#fetchOHLCV
1629
+ * @see https://mexcdevelop.github.io/apidocs/spot_v3_en/#kline-candlestick-data
1630
+ * @see https://mexcdevelop.github.io/apidocs/contract_v1_en/#k-line-data
1613
1631
  * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1614
1632
  * @param {string} symbol unified symbol of the market to fetch OHLCV data for
1615
1633
  * @param {string} timeframe the length of time each candle represents
1616
1634
  * @param {int} [since] timestamp in ms of the earliest candle to fetch
1617
1635
  * @param {int} [limit] the maximum amount of candles to fetch
1618
1636
  * @param {object} [params] extra parameters specific to the mexc3 api endpoint
1637
+ * @param {int} [params.until] timestamp in ms of the latest candle to fetch
1638
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
1619
1639
  * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
1620
1640
  */
1621
1641
  await this.loadMarkets();
1622
1642
  const market = this.market(symbol);
1643
+ const maxLimit = (market['spot']) ? 1000 : 2000;
1644
+ let paginate = false;
1645
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'paginate', false);
1646
+ if (paginate) {
1647
+ return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, maxLimit);
1648
+ }
1623
1649
  const options = this.safeValue(this.options, 'timeframes', {});
1624
1650
  const timeframes = this.safeValue(options, market['type'], {});
1625
1651
  const timeframeValue = this.safeString(timeframes, timeframe);
1652
+ const duration = this.parseTimeframe(timeframe) * 1000;
1626
1653
  const request = {
1627
1654
  'symbol': market['id'],
1628
1655
  'interval': timeframeValue,
1629
1656
  };
1630
1657
  let candles = undefined;
1631
1658
  if (market['spot']) {
1659
+ const until = this.safeIntegerN(params, ['until', 'endTime', 'till']);
1632
1660
  if (since !== undefined) {
1633
1661
  request['startTime'] = since;
1662
+ if (until === undefined) {
1663
+ // we have to calculate it assuming we can get at most 2000 entries per request
1664
+ const end = this.sum(since, maxLimit * duration);
1665
+ const now = this.milliseconds();
1666
+ request['endTime'] = Math.min(end, now);
1667
+ }
1634
1668
  }
1635
1669
  if (limit !== undefined) {
1636
1670
  request['limit'] = limit;
1637
1671
  }
1672
+ if (until !== undefined) {
1673
+ params = this.omit(params, ['until', 'till']);
1674
+ request['endTime'] = until;
1675
+ }
1638
1676
  const response = await this.spotPublicGetKlines(this.extend(request, params));
1639
1677
  //
1640
1678
  // [
@@ -1653,9 +1691,14 @@ export default class mexc extends Exchange {
1653
1691
  candles = response;
1654
1692
  }
1655
1693
  else if (market['swap']) {
1694
+ const until = this.safeIntegerProductN(params, ['until', 'endTime', 'till'], 0.001);
1656
1695
  if (since !== undefined) {
1657
1696
  request['start'] = this.parseToInt(since / 1000);
1658
1697
  }
1698
+ if (until !== undefined) {
1699
+ params = this.omit(params, ['until', 'till']);
1700
+ request['end'] = until;
1701
+ }
1659
1702
  const priceType = this.safeString(params, 'price', 'default');
1660
1703
  params = this.omit(params, 'price');
1661
1704
  const method = this.getSupportedMapping(priceType, {
package/js/src/okx.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/okx.js';
2
- import { Int, OrderSide, OrderType } from './base/types.js';
2
+ import { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory } from './base/types.js';
3
3
  /**
4
4
  * @class okx
5
5
  * @extends Exchange
@@ -75,11 +75,11 @@ export default class okx extends Exchange {
75
75
  fetchTicker(symbol: string, params?: {}): Promise<import("./base/types.js").Ticker>;
76
76
  fetchTickersByType(type: any, symbols?: string[], params?: {}): Promise<import("./base/types.js").Dictionary<import("./base/types.js").Ticker>>;
77
77
  fetchTickers(symbols?: string[], params?: {}): Promise<import("./base/types.js").Dictionary<import("./base/types.js").Ticker>>;
78
- parseTrade(trade: any, market?: any): import("./base/types.js").Trade;
79
- fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
78
+ parseTrade(trade: any, market?: any): Trade;
79
+ fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
80
80
  parseOHLCV(ohlcv: any, market?: any): number[];
81
- fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
82
- fetchFundingRateHistory(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
81
+ fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
82
+ fetchFundingRateHistory(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
83
83
  parseBalanceByType(type: any, response: any): import("./base/types.js").Balances;
84
84
  parseTradingBalance(response: any): import("./base/types.js").Balances;
85
85
  parseFundingBalance(response: any): import("./base/types.js").Balances;
@@ -102,15 +102,15 @@ export default class okx extends Exchange {
102
102
  editOrder(id: string, symbol: any, type: any, side: any, amount?: any, price?: any, params?: {}): Promise<any>;
103
103
  cancelOrder(id: string, symbol?: string, params?: {}): Promise<any>;
104
104
  parseIds(ids: any): any;
105
- cancelOrders(ids: any, symbol?: string, params?: {}): Promise<import("./base/types.js").Order[]>;
105
+ cancelOrders(ids: any, symbol?: string, params?: {}): Promise<Order[]>;
106
106
  parseOrderStatus(status: any): string;
107
- parseOrder(order: any, market?: any): import("./base/types.js").Order;
108
- fetchOrder(id: string, symbol?: string, params?: {}): Promise<import("./base/types.js").Order>;
109
- fetchOpenOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
110
- fetchCanceledOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Order[]>;
111
- fetchClosedOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
112
- fetchMyTrades(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
113
- fetchOrderTrades(id: string, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
107
+ parseOrder(order: any, market?: any): Order;
108
+ fetchOrder(id: string, symbol?: string, params?: {}): Promise<Order>;
109
+ fetchOpenOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
110
+ fetchCanceledOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
111
+ fetchClosedOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
112
+ fetchMyTrades(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
113
+ fetchOrderTrades(id: string, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
114
114
  fetchLedger(code?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
115
115
  parseLedgerEntryType(type: any): string;
116
116
  parseLedgerEntry(item: any, currency?: any): {
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/phemex.js';
2
- import { Int, OrderSide, OrderType } from './base/types.js';
2
+ import { FundingRateHistory, Int, OrderSide, OrderType } from './base/types.js';
3
3
  /**
4
4
  * @class phemex
5
5
  * @extends Exchange
@@ -263,6 +263,6 @@ export default class phemex extends Exchange {
263
263
  status: string;
264
264
  };
265
265
  parseTransferStatus(status: any): string;
266
- fetchFundingRateHistory(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
266
+ fetchFundingRateHistory(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
267
267
  handleErrors(httpCode: any, reason: any, url: any, method: any, headers: any, body: any, response: any, requestHeaders: any, requestBody: any): any;
268
268
  }
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/poloniex.js';
2
- import { Int, OrderSide, OrderType } from './base/types.js';
2
+ import { Int, OrderSide, OrderType, OHLCV, Trade } from './base/types.js';
3
3
  /**
4
4
  * @class poloniex
5
5
  * @extends Exchange
@@ -7,7 +7,7 @@ import { Int, OrderSide, OrderType } from './base/types.js';
7
7
  export default class poloniex extends Exchange {
8
8
  describe(): any;
9
9
  parseOHLCV(ohlcv: any, market?: any): number[];
10
- fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
10
+ fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
11
11
  loadMarkets(reload?: boolean, params?: {}): Promise<import("./base/types.js").Dictionary<import("./base/types.js").Market>>;
12
12
  fetchMarkets(params?: {}): Promise<any[]>;
13
13
  fetchTime(params?: {}): Promise<number>;
@@ -15,8 +15,8 @@ export default class poloniex extends Exchange {
15
15
  fetchTickers(symbols?: string[], params?: {}): Promise<import("./base/types.js").Dictionary<import("./base/types.js").Ticker>>;
16
16
  fetchCurrencies(params?: {}): Promise<{}>;
17
17
  fetchTicker(symbol: string, params?: {}): Promise<import("./base/types.js").Ticker>;
18
- parseTrade(trade: any, market?: any): import("./base/types.js").Trade;
19
- fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Trade[]>;
18
+ parseTrade(trade: any, market?: any): Trade;
19
+ fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
20
20
  fetchMyTrades(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
21
21
  parseOrderStatus(status: any): string;
22
22
  parseOrder(order: any, market?: any): import("./base/types.js").Order;
@@ -30,7 +30,7 @@ export default class poloniex extends Exchange {
30
30
  cancelAllOrders(symbol?: string, params?: {}): Promise<import("./base/types.js").Order[]>;
31
31
  fetchOrder(id: string, symbol?: string, params?: {}): Promise<any>;
32
32
  fetchOrderStatus(id: string, symbol?: string, params?: {}): Promise<"open" | "closed">;
33
- fetchOrderTrades(id: string, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").Trade[]>;
33
+ fetchOrderTrades(id: string, symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
34
34
  parseBalance(response: any): import("./base/types.js").Balances;
35
35
  fetchBalance(params?: {}): Promise<import("./base/types.js").Balances>;
36
36
  fetchTradingFees(params?: {}): Promise<{}>;
@@ -0,0 +1,24 @@
1
+ import bingxRest from '../bingx.js';
2
+ import { Int } from '../base/types.js';
3
+ import Client from '../base/ws/Client.js';
4
+ export default class bingx extends bingxRest {
5
+ describe(): any;
6
+ watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
7
+ handleTrades(client: Client, message: any): void;
8
+ watchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<any>;
9
+ handleDelta(bookside: any, delta: any): void;
10
+ handleOrderBook(client: Client, message: any): void;
11
+ parseWsOHLCV(ohlcv: any, market?: any): number[];
12
+ handleOHLCV(client: Client, message: any): void;
13
+ watchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
14
+ watchOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
15
+ watchMyTrades(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<any>;
16
+ watchBalance(params?: {}): Promise<any>;
17
+ handleErrorMessage(client: any, message: any): boolean;
18
+ authenticate(params?: {}): Promise<void>;
19
+ pong(client: any, message: any): Promise<void>;
20
+ handleOrder(client: any, message: any): void;
21
+ handleMyTrades(client: Client, message: any): void;
22
+ handleBalance(client: Client, message: any): void;
23
+ handleMessage(client: Client, message: any): void;
24
+ }