ccxt 4.4.9 → 4.4.10

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 (106) hide show
  1. package/README.md +131 -131
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +1 -1
  4. package/dist/cjs/src/ascendex.js +2 -1
  5. package/dist/cjs/src/binance.js +4 -8
  6. package/dist/cjs/src/bingx.js +19 -20
  7. package/dist/cjs/src/bitfinex2.js +5 -16
  8. package/dist/cjs/src/bitget.js +5 -4
  9. package/dist/cjs/src/bitmart.js +1 -0
  10. package/dist/cjs/src/bitmex.js +4 -3
  11. package/dist/cjs/src/blofin.js +4 -13
  12. package/dist/cjs/src/bybit.js +16 -14
  13. package/dist/cjs/src/coinex.js +15 -1
  14. package/dist/cjs/src/delta.js +2 -1
  15. package/dist/cjs/src/deribit.js +1 -0
  16. package/dist/cjs/src/digifinex.js +15 -1
  17. package/dist/cjs/src/gate.js +30 -9
  18. package/dist/cjs/src/hashkey.js +2 -2
  19. package/dist/cjs/src/hitbtc.js +2 -1
  20. package/dist/cjs/src/htx.js +19 -2
  21. package/dist/cjs/src/hyperliquid.js +6 -1
  22. package/dist/cjs/src/krakenfutures.js +3 -2
  23. package/dist/cjs/src/kucoinfutures.js +11 -0
  24. package/dist/cjs/src/mexc.js +1 -0
  25. package/dist/cjs/src/oceanex.js +83 -3
  26. package/dist/cjs/src/okx.js +14 -0
  27. package/dist/cjs/src/oxfun.js +4 -4
  28. package/dist/cjs/src/phemex.js +1 -0
  29. package/dist/cjs/src/poloniexfutures.js +11 -0
  30. package/dist/cjs/src/pro/deribit.js +43 -1
  31. package/dist/cjs/src/pro/gate.js +1 -1
  32. package/dist/cjs/src/vertex.js +2 -1
  33. package/dist/cjs/src/whitebit.js +10 -9
  34. package/dist/cjs/src/woo.js +42 -17
  35. package/dist/cjs/src/woofipro.js +15 -2
  36. package/dist/cjs/src/xt.js +2 -0
  37. package/js/ccxt.d.ts +1 -1
  38. package/js/ccxt.js +1 -1
  39. package/js/src/abstract/oceanex.d.ts +5 -0
  40. package/js/src/ascendex.d.ts +3 -21
  41. package/js/src/ascendex.js +2 -1
  42. package/js/src/base/Exchange.d.ts +3 -3
  43. package/js/src/base/types.d.ts +1 -0
  44. package/js/src/binance.d.ts +4 -40
  45. package/js/src/binance.js +4 -8
  46. package/js/src/bingx.d.ts +4 -40
  47. package/js/src/bingx.js +19 -20
  48. package/js/src/bitfinex2.d.ts +3 -22
  49. package/js/src/bitfinex2.js +5 -16
  50. package/js/src/bitget.d.ts +3 -39
  51. package/js/src/bitget.js +5 -4
  52. package/js/src/bitmart.d.ts +3 -39
  53. package/js/src/bitmart.js +1 -0
  54. package/js/src/bitmex.d.ts +3 -21
  55. package/js/src/bitmex.js +4 -3
  56. package/js/src/blofin.d.ts +3 -39
  57. package/js/src/blofin.js +4 -13
  58. package/js/src/bybit.d.ts +3 -21
  59. package/js/src/bybit.js +16 -14
  60. package/js/src/coinex.d.ts +5 -40
  61. package/js/src/coinex.js +15 -1
  62. package/js/src/delta.d.ts +4 -40
  63. package/js/src/delta.js +2 -1
  64. package/js/src/deribit.d.ts +3 -39
  65. package/js/src/deribit.js +1 -0
  66. package/js/src/digifinex.d.ts +4 -21
  67. package/js/src/digifinex.js +15 -1
  68. package/js/src/gate.d.ts +6 -41
  69. package/js/src/gate.js +30 -9
  70. package/js/src/hashkey.d.ts +4 -40
  71. package/js/src/hashkey.js +2 -2
  72. package/js/src/hitbtc.d.ts +4 -40
  73. package/js/src/hitbtc.js +2 -1
  74. package/js/src/htx.d.ts +5 -40
  75. package/js/src/htx.js +19 -2
  76. package/js/src/hyperliquid.js +6 -1
  77. package/js/src/krakenfutures.d.ts +3 -21
  78. package/js/src/krakenfutures.js +3 -2
  79. package/js/src/kucoinfutures.d.ts +3 -20
  80. package/js/src/kucoinfutures.js +11 -0
  81. package/js/src/mexc.d.ts +3 -39
  82. package/js/src/mexc.js +1 -0
  83. package/js/src/oceanex.d.ts +9 -1
  84. package/js/src/oceanex.js +83 -3
  85. package/js/src/okx.d.ts +4 -39
  86. package/js/src/okx.js +14 -0
  87. package/js/src/oxfun.d.ts +3 -21
  88. package/js/src/oxfun.js +4 -4
  89. package/js/src/phemex.d.ts +3 -39
  90. package/js/src/phemex.js +1 -0
  91. package/js/src/poloniexfutures.d.ts +3 -20
  92. package/js/src/poloniexfutures.js +11 -0
  93. package/js/src/pro/deribit.d.ts +2 -1
  94. package/js/src/pro/deribit.js +43 -1
  95. package/js/src/pro/gate.js +1 -1
  96. package/js/src/vertex.d.ts +4 -40
  97. package/js/src/vertex.js +2 -1
  98. package/js/src/whitebit.d.ts +4 -21
  99. package/js/src/whitebit.js +10 -9
  100. package/js/src/woo.d.ts +4 -40
  101. package/js/src/woo.js +42 -17
  102. package/js/src/woofipro.d.ts +5 -40
  103. package/js/src/woofipro.js +15 -2
  104. package/js/src/xt.d.ts +3 -39
  105. package/js/src/xt.js +2 -0
  106. package/package.json +1 -1
package/js/src/mexc.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/mexc.js';
2
- import type { TransferEntry, IndexType, Int, OrderSide, Balances, OrderType, OHLCV, FundingRateHistory, Position, OrderBook, OrderRequest, FundingHistory, Order, Str, Trade, Transaction, Ticker, Tickers, Strings, Market, Currency, Leverage, Num, Account, MarginModification, Currencies, TradingFees, Dict, LeverageTier, LeverageTiers, int } from './base/types.js';
2
+ import type { TransferEntry, IndexType, Int, OrderSide, Balances, OrderType, OHLCV, FundingRateHistory, Position, OrderBook, OrderRequest, FundingHistory, Order, Str, Trade, Transaction, Ticker, Tickers, Strings, Market, Currency, Leverage, Num, Account, MarginModification, Currencies, TradingFees, Dict, LeverageTier, LeverageTiers, int, FundingRate } from './base/types.js';
3
3
  /**
4
4
  * @class mexc
5
5
  * @augments Exchange
@@ -64,44 +64,8 @@ export default class mexc extends Exchange {
64
64
  addMargin(symbol: string, amount: number, params?: {}): Promise<MarginModification>;
65
65
  setLeverage(leverage: Int, symbol?: Str, params?: {}): Promise<any>;
66
66
  fetchFundingHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingHistory[]>;
67
- parseFundingRate(contract: any, market?: Market): {
68
- info: any;
69
- symbol: string;
70
- markPrice: any;
71
- indexPrice: any;
72
- interestRate: any;
73
- estimatedSettlePrice: any;
74
- timestamp: number;
75
- datetime: string;
76
- fundingRate: number;
77
- fundingTimestamp: number;
78
- fundingDatetime: string;
79
- nextFundingRate: any;
80
- nextFundingTimestamp: any;
81
- nextFundingDatetime: any;
82
- previousFundingRate: any;
83
- previousFundingTimestamp: any;
84
- previousFundingDatetime: any;
85
- };
86
- fetchFundingRate(symbol: string, params?: {}): Promise<{
87
- info: any;
88
- symbol: string;
89
- markPrice: any;
90
- indexPrice: any;
91
- interestRate: any;
92
- estimatedSettlePrice: any;
93
- timestamp: number;
94
- datetime: string;
95
- fundingRate: number;
96
- fundingTimestamp: number;
97
- fundingDatetime: string;
98
- nextFundingRate: any;
99
- nextFundingTimestamp: any;
100
- nextFundingDatetime: any;
101
- previousFundingRate: any;
102
- previousFundingTimestamp: any;
103
- previousFundingDatetime: any;
104
- }>;
67
+ parseFundingRate(contract: any, market?: Market): FundingRate;
68
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
105
69
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
106
70
  fetchLeverageTiers(symbols?: Strings, params?: {}): Promise<LeverageTiers>;
107
71
  parseMarketLeverageTiers(info: any, market?: Market): LeverageTier[];
package/js/src/mexc.js CHANGED
@@ -4217,6 +4217,7 @@ export default class mexc extends Exchange {
4217
4217
  'previousFundingRate': undefined,
4218
4218
  'previousFundingTimestamp': undefined,
4219
4219
  'previousFundingDatetime': undefined,
4220
+ 'interval': undefined,
4220
4221
  };
4221
4222
  }
4222
4223
  async fetchFundingRate(symbol, params = {}) {
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/oceanex.js';
2
- import type { Balances, Dict, Dictionary, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, int } from './base/types.js';
2
+ import type { Balances, Currency, Dict, Dictionary, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, int } from './base/types.js';
3
3
  /**
4
4
  * @class oceanex
5
5
  * @augments Exchange
@@ -32,6 +32,14 @@ export default class oceanex extends Exchange {
32
32
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
33
33
  cancelOrders(ids: any, symbol?: Str, params?: {}): Promise<Order[]>;
34
34
  cancelAllOrders(symbol?: Str, params?: {}): Promise<Order[]>;
35
+ fetchDepositAddressesByNetwork(code: string, params?: {}): Promise<{}>;
36
+ parseDepositAddress(depositAddress: any, currency?: Currency): {
37
+ info: any;
38
+ currency: string;
39
+ address: string;
40
+ tag: string;
41
+ network: string;
42
+ };
35
43
  sign(path: any, api?: string, method?: string, params?: {}, headers?: any, body?: any): {
36
44
  url: string;
37
45
  method: string;
package/js/src/oceanex.js CHANGED
@@ -50,9 +50,9 @@ export default class oceanex extends Exchange {
50
50
  'fetchClosedOrders': true,
51
51
  'fetchCrossBorrowRate': false,
52
52
  'fetchCrossBorrowRates': false,
53
- 'fetchDepositAddress': false,
54
- 'fetchDepositAddresses': false,
55
- 'fetchDepositAddressesByNetwork': false,
53
+ 'fetchDepositAddress': 'emulated',
54
+ 'fetchDepositAddresses': undefined,
55
+ 'fetchDepositAddressesByNetwork': true,
56
56
  'fetchIsolatedBorrowRate': false,
57
57
  'fetchIsolatedBorrowRates': false,
58
58
  'fetchMarkets': true,
@@ -113,6 +113,11 @@ export default class oceanex extends Exchange {
113
113
  'order/delete',
114
114
  'order/delete/multi',
115
115
  'orders/clear',
116
+ '/withdraws/special/new',
117
+ '/deposit_address',
118
+ '/deposit_addresses',
119
+ '/deposit_history',
120
+ '/withdraw_history',
116
121
  ],
117
122
  },
118
123
  },
@@ -913,6 +918,81 @@ export default class oceanex extends Exchange {
913
918
  const data = this.safeList(response, 'data');
914
919
  return this.parseOrders(data);
915
920
  }
921
+ async fetchDepositAddressesByNetwork(code, params = {}) {
922
+ /**
923
+ * @method
924
+ * @name oceanex#fetchDepositAddressesByNetwork
925
+ * @description fetch the deposit addresses for a currency associated with this account
926
+ * @see https://api.oceanex.pro/doc/v1/#deposit-addresses-post
927
+ * @param {string} code unified currency code
928
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
929
+ * @returns {object} a dictionary [address structures]{@link https://docs.ccxt.com/#/?id=address-structure}, indexed by the network
930
+ */
931
+ await this.loadMarkets();
932
+ const currency = this.currency(code);
933
+ const request = {
934
+ 'currency': currency['id'],
935
+ };
936
+ const response = await this.privatePostDepositAddresses(this.extend(request, params));
937
+ //
938
+ // {
939
+ // code: '0',
940
+ // message: 'Operation successful',
941
+ // data: {
942
+ // data: {
943
+ // currency_id: 'usdt',
944
+ // display_name: 'USDT',
945
+ // num_of_resources: '3',
946
+ // resources: [
947
+ // {
948
+ // chain_name: 'TRC20',
949
+ // currency_id: 'usdt',
950
+ // address: 'TPcS7VgKMFmpRrWY82GbJzDeMnemWxEbpg',
951
+ // memo: '',
952
+ // deposit_status: 'enabled'
953
+ // },
954
+ // ...
955
+ // ]
956
+ // }
957
+ // }
958
+ // }
959
+ //
960
+ const data = this.safeDict(response, 'data', {});
961
+ const data2 = this.safeDict(data, 'data', {});
962
+ const resources = this.safeList(data2, 'resources', []);
963
+ const result = {};
964
+ for (let i = 0; i < resources.length; i++) {
965
+ const resource = resources[i];
966
+ const enabled = this.safeString(resource, 'deposit_status');
967
+ if (enabled === 'enabled') {
968
+ const parsedAddress = this.parseDepositAddress(resource, currency);
969
+ result[parsedAddress['currency']] = parsedAddress;
970
+ }
971
+ }
972
+ return result;
973
+ }
974
+ parseDepositAddress(depositAddress, currency = undefined) {
975
+ //
976
+ // {
977
+ // chain_name: 'TRC20',
978
+ // currency_id: 'usdt',
979
+ // address: 'TPcS7VgKMFmpRrWY82GbJzDeMnemWxEbpg',
980
+ // memo: '',
981
+ // deposit_status: 'enabled'
982
+ // }
983
+ //
984
+ const address = this.safeString(depositAddress, 'address');
985
+ this.checkAddress(address);
986
+ const currencyId = this.safeString(depositAddress, 'currency_id');
987
+ const networkId = this.safeString(depositAddress, 'chain_name');
988
+ return {
989
+ 'info': depositAddress,
990
+ 'currency': this.safeCurrencyCode(currencyId, currency),
991
+ 'address': address,
992
+ 'tag': this.safeString(depositAddress, 'memo'),
993
+ 'network': this.networkIdToCode(networkId),
994
+ };
995
+ }
916
996
  sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
917
997
  let url = this.urls['api']['rest'] + '/' + this.version + '/' + this.implodeParams(path, params);
918
998
  const query = this.omit(params, this.extractParams(path));
package/js/src/okx.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/okx.js';
2
- import type { TransferEntry, Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, FundingHistory, Str, Transaction, Ticker, OrderBook, Balances, Tickers, Market, Greeks, Strings, MarketInterface, Currency, Leverage, Num, Account, OptionChain, Option, MarginModification, TradingFeeInterface, Currencies, Conversion, CancellationRequest, Dict, Position, CrossBorrowRate, CrossBorrowRates, LeverageTier, int, LedgerEntry } from './base/types.js';
2
+ import type { TransferEntry, Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, FundingHistory, Str, Transaction, Ticker, OrderBook, Balances, Tickers, Market, Greeks, Strings, MarketInterface, Currency, Leverage, Num, Account, OptionChain, Option, MarginModification, TradingFeeInterface, Currencies, Conversion, CancellationRequest, Dict, Position, CrossBorrowRate, CrossBorrowRates, LeverageTier, int, LedgerEntry, FundingRate } from './base/types.js';
3
3
  /**
4
4
  * @class okx
5
5
  * @augments Exchange
@@ -88,44 +88,9 @@ export default class okx extends Exchange {
88
88
  body: any;
89
89
  headers: any;
90
90
  };
91
- parseFundingRate(contract: any, market?: Market): {
92
- info: any;
93
- symbol: string;
94
- markPrice: any;
95
- indexPrice: any;
96
- interestRate: number;
97
- estimatedSettlePrice: any;
98
- timestamp: any;
99
- datetime: any;
100
- fundingRate: number;
101
- fundingTimestamp: number;
102
- fundingDatetime: string;
103
- nextFundingRate: number;
104
- nextFundingTimestamp: number;
105
- nextFundingDatetime: string;
106
- previousFundingRate: any;
107
- previousFundingTimestamp: any;
108
- previousFundingDatetime: any;
109
- };
110
- fetchFundingRate(symbol: string, params?: {}): Promise<{
111
- info: any;
112
- symbol: string;
113
- markPrice: any;
114
- indexPrice: any;
115
- interestRate: number;
116
- estimatedSettlePrice: any;
117
- timestamp: any;
118
- datetime: any;
119
- fundingRate: number;
120
- fundingTimestamp: number;
121
- fundingDatetime: string;
122
- nextFundingRate: number;
123
- nextFundingTimestamp: number;
124
- nextFundingDatetime: string;
125
- previousFundingRate: any;
126
- previousFundingTimestamp: any;
127
- previousFundingDatetime: any;
128
- }>;
91
+ parseFundingRate(contract: any, market?: Market): FundingRate;
92
+ parseFundingInterval(interval: any): string;
93
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
129
94
  fetchFundingHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingHistory[]>;
130
95
  setLeverage(leverage: Int, symbol?: Str, params?: {}): Promise<any>;
131
96
  fetchPositionMode(symbol?: Str, params?: {}): Promise<{
package/js/src/okx.js CHANGED
@@ -6052,6 +6052,9 @@ export default class okx extends Exchange {
6052
6052
  const symbol = this.safeSymbol(marketId, market);
6053
6053
  const nextFundingRate = this.safeNumber(contract, 'nextFundingRate');
6054
6054
  const fundingTime = this.safeInteger(contract, 'fundingTime');
6055
+ const fundingTimeString = this.safeString(contract, 'fundingTime');
6056
+ const nextFundingTimeString = this.safeString(contract, 'nextFundingRate');
6057
+ const millisecondsInterval = Precise.stringSub(nextFundingTimeString, fundingTimeString);
6055
6058
  // https://www.okx.com/support/hc/en-us/articles/360053909272-Ⅸ-Introduction-to-perpetual-swap-funding-fee
6056
6059
  // > The current interest is 0.
6057
6060
  return {
@@ -6072,8 +6075,19 @@ export default class okx extends Exchange {
6072
6075
  'previousFundingRate': undefined,
6073
6076
  'previousFundingTimestamp': undefined,
6074
6077
  'previousFundingDatetime': undefined,
6078
+ 'interval': this.parseFundingInterval(millisecondsInterval),
6075
6079
  };
6076
6080
  }
6081
+ parseFundingInterval(interval) {
6082
+ const intervals = {
6083
+ '3600000': '1h',
6084
+ '14400000': '4h',
6085
+ '28800000': '8h',
6086
+ '57600000': '16h',
6087
+ '86400000': '24h',
6088
+ };
6089
+ return this.safeString(intervals, interval, interval);
6090
+ }
6077
6091
  async fetchFundingRate(symbol, params = {}) {
6078
6092
  /**
6079
6093
  * @method
package/js/src/oxfun.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/oxfun.js';
2
- import type { Account, Balances, Currencies, Currency, Int, Market, Num, OHLCV, Order, OrderBook, OrderType, OrderSide, OrderRequest, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry } from './base/types.js';
2
+ import type { Account, Balances, Currencies, Currency, Int, Market, Num, OHLCV, Order, OrderBook, OrderType, OrderSide, OrderRequest, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry, FundingRate, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class oxfun
5
5
  * @augments Exchange
@@ -16,26 +16,8 @@ export default class oxfun extends Exchange {
16
16
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
17
17
  parseOHLCV(ohlcv: any, market?: Market): OHLCV;
18
18
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
19
- fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
20
- parseFundingRate(fundingRate: any, market?: Market): {
21
- info: any;
22
- symbol: string;
23
- markPrice: any;
24
- indexPrice: any;
25
- interestRate: number;
26
- estimatedSettlePrice: any;
27
- timestamp: number;
28
- datetime: string;
29
- fundingRate: number;
30
- fundingTimestamp: any;
31
- fundingDatetime: any;
32
- nextFundingRate: any;
33
- nextFundingTimestamp: any;
34
- nextFundingDatetime: any;
35
- previousFundingRate: any;
36
- previousFundingTimestamp: any;
37
- previousFundingDatetime: any;
38
- };
19
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
20
+ parseFundingRate(fundingRate: any, market?: Market): FundingRate;
39
21
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<import("./base/types.js").FundingRateHistory[]>;
40
22
  parseFundingRateHistory(info: any, market?: Market): {
41
23
  info: any;
package/js/src/oxfun.js CHANGED
@@ -70,7 +70,7 @@ export default class oxfun extends Exchange {
70
70
  'fetchDepositWithdrawFee': false,
71
71
  'fetchDepositWithdrawFees': false,
72
72
  'fetchFundingHistory': true,
73
- 'fetchFundingRate': false,
73
+ 'fetchFundingRate': 'emulated',
74
74
  'fetchFundingRateHistory': true,
75
75
  'fetchFundingRates': true,
76
76
  'fetchIndexOHLCV': false,
@@ -1004,8 +1004,8 @@ export default class oxfun extends Exchange {
1004
1004
  /**
1005
1005
  * @method
1006
1006
  * @name oxfun#fetchFundingRates
1007
+ * @description fetch the current funding rates for multiple markets
1007
1008
  * @see https://docs.ox.fun/?json#get-v3-funding-estimates
1008
- * @description fetch the current funding rates
1009
1009
  * @param {string[]} symbols unified market symbols
1010
1010
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1011
1011
  * @returns {Order[]} an array of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
@@ -1041,8 +1041,7 @@ export default class oxfun extends Exchange {
1041
1041
  // "marketCode": "OX-USD-SWAP-LIN",
1042
1042
  // "fundingAt": "1715515200000",
1043
1043
  // "estFundingRate": "0.000200000"
1044
- // },
1045
- //
1044
+ // }
1046
1045
  //
1047
1046
  const symbol = this.safeString(fundingRate, 'marketCode');
1048
1047
  market = this.market(symbol);
@@ -1065,6 +1064,7 @@ export default class oxfun extends Exchange {
1065
1064
  'previousFundingRate': undefined,
1066
1065
  'previousFundingTimestamp': undefined,
1067
1066
  'previousFundingDatetime': undefined,
1067
+ 'interval': undefined,
1068
1068
  };
1069
1069
  }
1070
1070
  async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/phemex.js';
2
- import type { TransferEntry, Balances, Currency, FundingHistory, FundingRateHistory, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, MarginModification, Currencies, Dict, LeverageTier, LeverageTiers, int } from './base/types.js';
2
+ import type { TransferEntry, Balances, Currency, FundingHistory, FundingRateHistory, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, MarginModification, Currencies, Dict, LeverageTier, LeverageTiers, int, FundingRate } from './base/types.js';
3
3
  /**
4
4
  * @class phemex
5
5
  * @augments Exchange
@@ -62,44 +62,8 @@ export default class phemex extends Exchange {
62
62
  parsePosition(position: Dict, market?: Market): import("./base/types.js").Position;
63
63
  fetchFundingHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingHistory[]>;
64
64
  parseFundingFeeToPrecision(value: any, market?: Market, currencyCode?: Str): any;
65
- fetchFundingRate(symbol: string, params?: {}): Promise<{
66
- info: any;
67
- symbol: string;
68
- markPrice: any;
69
- indexPrice: any;
70
- interestRate: any;
71
- estimatedSettlePrice: any;
72
- timestamp: number;
73
- datetime: string;
74
- fundingRate: any;
75
- fundingTimestamp: any;
76
- fundingDatetime: any;
77
- nextFundingRate: any;
78
- nextFundingTimestamp: any;
79
- nextFundingDatetime: any;
80
- previousFundingRate: any;
81
- previousFundingTimestamp: any;
82
- previousFundingDatetime: any;
83
- }>;
84
- parseFundingRate(contract: any, market?: Market): {
85
- info: any;
86
- symbol: string;
87
- markPrice: any;
88
- indexPrice: any;
89
- interestRate: any;
90
- estimatedSettlePrice: any;
91
- timestamp: number;
92
- datetime: string;
93
- fundingRate: any;
94
- fundingTimestamp: any;
95
- fundingDatetime: any;
96
- nextFundingRate: any;
97
- nextFundingTimestamp: any;
98
- nextFundingDatetime: any;
99
- previousFundingRate: any;
100
- previousFundingTimestamp: any;
101
- previousFundingDatetime: any;
102
- };
65
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
66
+ parseFundingRate(contract: any, market?: Market): FundingRate;
103
67
  setMargin(symbol: string, amount: number, params?: {}): Promise<MarginModification>;
104
68
  parseMarginStatus(status: any): string;
105
69
  parseMarginModification(data: Dict, market?: Market): MarginModification;
package/js/src/phemex.js CHANGED
@@ -4131,6 +4131,7 @@ export default class phemex extends Exchange {
4131
4131
  'previousFundingRate': undefined,
4132
4132
  'previousFundingTimestamp': undefined,
4133
4133
  'previousFundingDatetime': undefined,
4134
+ 'interval': undefined,
4134
4135
  };
4135
4136
  }
4136
4137
  async setMargin(symbol, amount, params = {}) {
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/poloniexfutures.js';
2
- import type { Balances, Dict, FundingHistory, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, int } from './base/types.js';
2
+ import type { Balances, Dict, FundingHistory, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, int, FundingRate } from './base/types.js';
3
3
  /**
4
4
  * @class poloniexfutures
5
5
  * @augments Exchange
@@ -55,25 +55,8 @@ export default class poloniexfutures extends Exchange {
55
55
  fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
56
56
  fetchOrder(id?: Str, symbol?: Str, params?: {}): Promise<Order>;
57
57
  parseOrder(order: Dict, market?: Market): Order;
58
- fetchFundingRate(symbol: string, params?: {}): Promise<{
59
- info: any;
60
- symbol: string;
61
- markPrice: any;
62
- indexPrice: any;
63
- interestRate: any;
64
- estimatedSettlePrice: any;
65
- timestamp: any;
66
- datetime: any;
67
- fundingRate: number;
68
- fundingTimestamp: any;
69
- fundingDatetime: any;
70
- nextFundingRate: any;
71
- nextFundingTimestamp: any;
72
- nextFundingDatetime: any;
73
- previousFundingRate: number;
74
- previousFundingTimestamp: number;
75
- previousFundingDatetime: string;
76
- }>;
58
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
59
+ parseFundingInterval(interval: any): string;
77
60
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
78
61
  setMarginMode(marginMode: string, symbol?: Str, params?: {}): Promise<any>;
79
62
  sign(path: any, api?: string, method?: string, params?: {}, headers?: any, body?: any): {
@@ -1658,8 +1658,19 @@ export default class poloniexfutures extends Exchange {
1658
1658
  'previousFundingRate': this.safeNumber(data, 'value'),
1659
1659
  'previousFundingTimestamp': fundingTimestamp,
1660
1660
  'previousFundingDatetime': this.iso8601(fundingTimestamp),
1661
+ 'interval': this.parseFundingInterval(this.safeString(data, 'interval')),
1661
1662
  };
1662
1663
  }
1664
+ parseFundingInterval(interval) {
1665
+ const intervals = {
1666
+ '3600000': '1h',
1667
+ '14400000': '4h',
1668
+ '28800000': '8h',
1669
+ '57600000': '16h',
1670
+ '86400000': '24h',
1671
+ };
1672
+ return this.safeString(intervals, interval, interval);
1673
+ }
1663
1674
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1664
1675
  /**
1665
1676
  * @method
@@ -1,5 +1,5 @@
1
1
  import deribitRest from '../deribit.js';
2
- import type { Int, Str, OrderBook, Order, Trade, Ticker, OHLCV, Balances } from '../base/types.js';
2
+ import type { Int, Str, OrderBook, Order, Trade, Ticker, OHLCV, Balances, Strings, Tickers } from '../base/types.js';
3
3
  import Client from '../base/ws/Client.js';
4
4
  export default class deribit extends deribitRest {
5
5
  describe(): any;
@@ -7,6 +7,7 @@ export default class deribit extends deribitRest {
7
7
  watchBalance(params?: {}): Promise<Balances>;
8
8
  handleBalance(client: Client, message: any): void;
9
9
  watchTicker(symbol: string, params?: {}): Promise<Ticker>;
10
+ watchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
10
11
  handleTicker(client: Client, message: any): void;
11
12
  watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
12
13
  watchTradesForSymbols(symbols: string[], since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
@@ -17,7 +17,7 @@ export default class deribit extends deribitRest {
17
17
  'ws': true,
18
18
  'watchBalance': true,
19
19
  'watchTicker': true,
20
- 'watchTickers': false,
20
+ 'watchTickers': true,
21
21
  'watchTrades': true,
22
22
  'watchTradesForSymbols': true,
23
23
  'watchMyTrades': true,
@@ -188,6 +188,48 @@ export default class deribit extends deribitRest {
188
188
  const request = this.deepExtend(message, params);
189
189
  return await this.watch(url, channel, request, channel, request);
190
190
  }
191
+ async watchTickers(symbols = undefined, params = {}) {
192
+ /**
193
+ * @method
194
+ * @name deribit#watchTickers
195
+ * @see https://docs.deribit.com/#ticker-instrument_name-interval
196
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
197
+ * @param {string[]} [symbols] unified symbol of the market to fetch the ticker for
198
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
199
+ * @param {str} [params.interval] specify aggregation and frequency of notifications. Possible values: 100ms, raw
200
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
201
+ */
202
+ await this.loadMarkets();
203
+ symbols = this.marketSymbols(symbols, undefined, false);
204
+ const url = this.urls['api']['ws'];
205
+ const interval = this.safeString(params, 'interval', '100ms');
206
+ params = this.omit(params, 'interval');
207
+ await this.loadMarkets();
208
+ if (interval === 'raw') {
209
+ await this.authenticate();
210
+ }
211
+ const channels = [];
212
+ for (let i = 0; i < symbols.length; i++) {
213
+ const market = this.market(symbols[i]);
214
+ channels.push('ticker.' + market['id'] + '.' + interval);
215
+ }
216
+ const message = {
217
+ 'jsonrpc': '2.0',
218
+ 'method': 'public/subscribe',
219
+ 'params': {
220
+ 'channels': channels,
221
+ },
222
+ 'id': this.requestId(),
223
+ };
224
+ const request = this.deepExtend(message, params);
225
+ const newTickers = await this.watchMultiple(url, channels, request, channels, request);
226
+ if (this.newUpdates) {
227
+ const tickers = {};
228
+ tickers[newTickers['symbol']] = newTickers;
229
+ return tickers;
230
+ }
231
+ return this.filterByArray(this.tickers, 'symbol', symbols);
232
+ }
191
233
  handleTicker(client, message) {
192
234
  //
193
235
  // {
@@ -344,7 +344,7 @@ export default class gate extends gateRest {
344
344
  throw new NotSupported(this.id + ' fetchOrdersByStatusWs is only supported by swap markets. Use rest API for other markets');
345
345
  }
346
346
  }
347
- const [request, requestParams] = this.fetchOrdersByStatusRequest(status, symbol, since, limit, params);
347
+ const [request, requestParams] = this.prepareOrdersByStatusRequest(status, symbol, since, limit, params);
348
348
  const newRequest = this.omit(request, ['settle']);
349
349
  const messageType = this.getTypeByMarket(market);
350
350
  const channel = messageType + '.order_list';
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/vertex.js';
2
- import type { Market, Ticker, Tickers, TradingFees, Balances, Int, OrderBook, OHLCV, Str, Order, OrderType, OrderSide, Trade, Strings, Dict, Num, Currencies } from './base/types.js';
2
+ import type { Market, Ticker, Tickers, TradingFees, Balances, Int, OrderBook, OHLCV, Str, Order, OrderType, OrderSide, Trade, Strings, Dict, Num, Currencies, FundingRate, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class vertex
5
5
  * @augments Exchange
@@ -27,45 +27,9 @@ export default class vertex extends Exchange {
27
27
  fetchTradingFees(params?: {}): Promise<TradingFees>;
28
28
  parseOHLCV(ohlcv: any, market?: Market): OHLCV;
29
29
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
30
- parseFundingRate(ticker: any, market?: Market): {
31
- info: any;
32
- symbol: string;
33
- markPrice: number;
34
- indexPrice: number;
35
- interestRate: any;
36
- estimatedSettlePrice: any;
37
- timestamp: any;
38
- datetime: any;
39
- fundingRate: number;
40
- fundingTimestamp: number;
41
- fundingDatetime: string;
42
- nextFundingRate: any;
43
- nextFundingTimestamp: any;
44
- nextFundingDatetime: any;
45
- previousFundingRate: any;
46
- previousFundingTimestamp: any;
47
- previousFundingDatetime: any;
48
- };
49
- fetchFundingRate(symbol: string, params?: {}): Promise<{
50
- info: any;
51
- symbol: string;
52
- markPrice: number;
53
- indexPrice: number;
54
- interestRate: any;
55
- estimatedSettlePrice: any;
56
- timestamp: any;
57
- datetime: any;
58
- fundingRate: number;
59
- fundingTimestamp: number;
60
- fundingDatetime: string;
61
- nextFundingRate: any;
62
- nextFundingTimestamp: any;
63
- nextFundingDatetime: any;
64
- previousFundingRate: any;
65
- previousFundingTimestamp: any;
66
- previousFundingDatetime: any;
67
- }>;
68
- fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
30
+ parseFundingRate(ticker: any, market?: Market): FundingRate;
31
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
32
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
69
33
  parseOpenInterest(interest: any, market?: Market): import("./base/types.js").OpenInterest;
70
34
  fetchOpenInterest(symbol: string, params?: {}): Promise<import("./base/types.js").OpenInterest>;
71
35
  parseTicker(ticker: Dict, market?: Market): Ticker;
package/js/src/vertex.js CHANGED
@@ -1245,6 +1245,7 @@ export default class vertex extends Exchange {
1245
1245
  'previousFundingRate': undefined,
1246
1246
  'previousFundingTimestamp': undefined,
1247
1247
  'previousFundingDatetime': undefined,
1248
+ 'interval': undefined,
1248
1249
  };
1249
1250
  }
1250
1251
  async fetchFundingRate(symbol, params = {}) {
@@ -1282,7 +1283,7 @@ export default class vertex extends Exchange {
1282
1283
  * @see https://docs.vertexprotocol.com/developer-resources/api/v2/contracts
1283
1284
  * @param {string[]} symbols unified symbols of the markets to fetch the funding rates for, all market funding rates are returned if not assigned
1284
1285
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1285
- * @returns {object} an array of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
1286
+ * @returns {object[]} an array of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
1286
1287
  */
1287
1288
  await this.loadMarkets();
1288
1289
  const request = {};