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
@@ -3266,6 +3266,9 @@ export default class digifinex extends Exchange {
3266
3266
  const marketId = this.safeString(contract, 'instrument_id');
3267
3267
  const timestamp = this.safeInteger(contract, 'funding_time');
3268
3268
  const nextTimestamp = this.safeInteger(contract, 'next_funding_time');
3269
+ const fundingTimeString = this.safeString(contract, 'funding_time');
3270
+ const nextFundingTimeString = this.safeString(contract, 'next_funding_time');
3271
+ const millisecondsInterval = Precise.stringSub(nextFundingTimeString, fundingTimeString);
3269
3272
  return {
3270
3273
  'info': contract,
3271
3274
  'symbol': this.safeSymbol(marketId, market),
@@ -3278,14 +3281,25 @@ export default class digifinex extends Exchange {
3278
3281
  'fundingRate': this.safeNumber(contract, 'funding_rate'),
3279
3282
  'fundingTimestamp': timestamp,
3280
3283
  'fundingDatetime': this.iso8601(timestamp),
3281
- 'nextFundingRate': this.safeString(contract, 'next_funding_rate'),
3284
+ 'nextFundingRate': this.safeNumber(contract, 'next_funding_rate'),
3282
3285
  'nextFundingTimestamp': nextTimestamp,
3283
3286
  'nextFundingDatetime': this.iso8601(nextTimestamp),
3284
3287
  'previousFundingRate': undefined,
3285
3288
  'previousFundingTimestamp': undefined,
3286
3289
  'previousFundingDatetime': undefined,
3290
+ 'interval': this.parseFundingInterval(millisecondsInterval),
3287
3291
  };
3288
3292
  }
3293
+ parseFundingInterval(interval) {
3294
+ const intervals = {
3295
+ '3600000': '1h',
3296
+ '14400000': '4h',
3297
+ '28800000': '8h',
3298
+ '57600000': '16h',
3299
+ '86400000': '24h',
3300
+ };
3301
+ return this.safeString(intervals, interval, interval);
3302
+ }
3289
3303
  async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
3290
3304
  /**
3291
3305
  * @method
package/js/src/gate.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/gate.js';
2
- import type { Int, OrderSide, OrderType, OHLCV, Trade, FundingRateHistory, OpenInterest, Order, Balances, OrderRequest, FundingHistory, Str, Transaction, Ticker, OrderBook, Tickers, Greeks, Strings, Market, Currency, MarketInterface, TransferEntry, Leverage, Leverages, Num, OptionChain, Option, MarginModification, TradingFeeInterface, Currencies, TradingFees, Position, Dict, LeverageTier, LeverageTiers, int, CancellationRequest, LedgerEntry } from './base/types.js';
2
+ import type { Int, OrderSide, OrderType, OHLCV, Trade, FundingRateHistory, OpenInterest, Order, Balances, OrderRequest, FundingHistory, Str, Transaction, Ticker, OrderBook, Tickers, Greeks, Strings, Market, Currency, MarketInterface, TransferEntry, Leverage, Leverages, Num, OptionChain, Option, MarginModification, TradingFeeInterface, Currencies, TradingFees, Position, Dict, LeverageTier, LeverageTiers, int, CancellationRequest, LedgerEntry, FundingRate, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class gate
5
5
  * @augments Exchange
@@ -71,45 +71,10 @@ export default class gate extends Exchange {
71
71
  getMarginMode(stop: any, params: any): any[];
72
72
  getSettlementCurrencies(type: any, method: any): any;
73
73
  fetchCurrencies(params?: {}): Promise<Currencies>;
74
- fetchFundingRate(symbol: string, params?: {}): Promise<{
75
- info: any;
76
- symbol: string;
77
- markPrice: number;
78
- indexPrice: number;
79
- interestRate: number;
80
- estimatedSettlePrice: any;
81
- timestamp: any;
82
- datetime: any;
83
- fundingRate: number;
84
- fundingTimestamp: number;
85
- fundingDatetime: string;
86
- nextFundingRate: number;
87
- nextFundingTimestamp: any;
88
- nextFundingDatetime: any;
89
- previousFundingRate: any;
90
- previousFundingTimestamp: any;
91
- previousFundingDatetime: any;
92
- }>;
93
- fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
94
- parseFundingRate(contract: any, market?: Market): {
95
- info: any;
96
- symbol: string;
97
- markPrice: number;
98
- indexPrice: number;
99
- interestRate: number;
100
- estimatedSettlePrice: any;
101
- timestamp: any;
102
- datetime: any;
103
- fundingRate: number;
104
- fundingTimestamp: number;
105
- fundingDatetime: string;
106
- nextFundingRate: number;
107
- nextFundingTimestamp: any;
108
- nextFundingDatetime: any;
109
- previousFundingRate: any;
110
- previousFundingTimestamp: any;
111
- previousFundingDatetime: any;
112
- };
74
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
75
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
76
+ parseFundingRate(contract: any, market?: Market): FundingRate;
77
+ parseFundingInterval(interval: any): string;
113
78
  fetchNetworkDepositAddress(code: string, params?: {}): Promise<Dict>;
114
79
  fetchDepositAddress(code: string, params?: {}): Promise<{
115
80
  info: any;
@@ -177,7 +142,7 @@ export default class gate extends Exchange {
177
142
  fetchOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
178
143
  fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
179
144
  fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
180
- fetchOrdersByStatusRequest(status: any, symbol?: Str, since?: Int, limit?: Int, params?: {}): any[];
145
+ prepareOrdersByStatusRequest(status: any, symbol?: Str, since?: Int, limit?: Int, params?: {}): object[];
181
146
  fetchOrdersByStatus(status: any, symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<any>;
182
147
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
183
148
  cancelOrders(ids: string[], symbol?: Str, params?: {}): Promise<Order[]>;
package/js/src/gate.js CHANGED
@@ -1750,7 +1750,7 @@ export default class gate extends Exchange {
1750
1750
  * @see https://www.gate.io/docs/developers/apiv4/en/#list-all-futures-contracts
1751
1751
  * @param {string[]|undefined} symbols list of unified market symbols
1752
1752
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1753
- * @returns {object} a dictionary of [funding rates structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexe by market symbols
1753
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexed by market symbols
1754
1754
  */
1755
1755
  await this.loadMarkets();
1756
1756
  symbols = this.marketSymbols(symbols);
@@ -1854,6 +1854,7 @@ export default class gate extends Exchange {
1854
1854
  const fundingRate = this.safeNumber(contract, 'funding_rate');
1855
1855
  const fundingTime = this.safeTimestamp(contract, 'funding_next_apply');
1856
1856
  const fundingRateIndicative = this.safeNumber(contract, 'funding_rate_indicative');
1857
+ const fundingInterval = Precise.stringMul('1000', this.safeString(contract, 'funding_interval'));
1857
1858
  return {
1858
1859
  'info': contract,
1859
1860
  'symbol': symbol,
@@ -1872,8 +1873,19 @@ export default class gate extends Exchange {
1872
1873
  'previousFundingRate': undefined,
1873
1874
  'previousFundingTimestamp': undefined,
1874
1875
  'previousFundingDatetime': undefined,
1876
+ 'interval': this.parseFundingInterval(fundingInterval),
1875
1877
  };
1876
1878
  }
1879
+ parseFundingInterval(interval) {
1880
+ const intervals = {
1881
+ '3600000': '1h',
1882
+ '14400000': '4h',
1883
+ '28800000': '8h',
1884
+ '57600000': '16h',
1885
+ '86400000': '24h',
1886
+ };
1887
+ return this.safeString(intervals, interval, interval);
1888
+ }
1877
1889
  async fetchNetworkDepositAddress(code, params = {}) {
1878
1890
  await this.loadMarkets();
1879
1891
  const currency = this.currency(code);
@@ -4729,7 +4741,6 @@ export default class gate extends Exchange {
4729
4741
  */
4730
4742
  await this.loadMarkets();
4731
4743
  const until = this.safeInteger(params, 'until');
4732
- params = this.omit(params, 'until');
4733
4744
  let market = undefined;
4734
4745
  if (symbol !== undefined) {
4735
4746
  market = this.market(symbol);
@@ -4749,6 +4760,7 @@ export default class gate extends Exchange {
4749
4760
  request['from'] = this.parseToInt(since / 1000);
4750
4761
  }
4751
4762
  if (until !== undefined) {
4763
+ params = this.omit(params, 'until');
4752
4764
  request['to'] = this.parseToInt(until / 1000);
4753
4765
  }
4754
4766
  if (limit !== undefined) {
@@ -4757,7 +4769,7 @@ export default class gate extends Exchange {
4757
4769
  const response = await this.privateFuturesGetSettleOrdersTimerange(this.extend(request, params));
4758
4770
  return this.parseOrders(response, market, since, limit);
4759
4771
  }
4760
- fetchOrdersByStatusRequest(status, symbol = undefined, since = undefined, limit = undefined, params = {}) {
4772
+ prepareOrdersByStatusRequest(status, symbol = undefined, since = undefined, limit = undefined, params = {}) {
4761
4773
  let market = undefined;
4762
4774
  if (symbol !== undefined) {
4763
4775
  market = this.market(symbol);
@@ -4765,9 +4777,11 @@ export default class gate extends Exchange {
4765
4777
  }
4766
4778
  const stop = this.safeBool2(params, 'stop', 'trigger');
4767
4779
  params = this.omit(params, ['stop', 'trigger']);
4768
- const [type, query] = this.handleMarketTypeAndParams('fetchOrdersByStatus', market, params);
4780
+ let type = undefined;
4781
+ [type, params] = this.handleMarketTypeAndParams('fetchOrdersByStatus', market, params);
4769
4782
  const spot = (type === 'spot') || (type === 'margin');
4770
- const [request, requestParams] = spot ? this.multiOrderSpotPrepareRequest(market, stop, query) : this.prepareRequest(market, type, query);
4783
+ let request = {};
4784
+ [request, params] = spot ? this.multiOrderSpotPrepareRequest(market, stop, params) : this.prepareRequest(market, type, params);
4771
4785
  if (status === 'closed') {
4772
4786
  status = 'finished';
4773
4787
  }
@@ -4775,10 +4789,17 @@ export default class gate extends Exchange {
4775
4789
  if (limit !== undefined) {
4776
4790
  request['limit'] = limit;
4777
4791
  }
4778
- if (since !== undefined && spot) {
4779
- request['from'] = this.parseToInt(since / 1000);
4792
+ if (spot) {
4793
+ if (since !== undefined) {
4794
+ request['from'] = this.parseToInt(since / 1000);
4795
+ }
4796
+ const until = this.safeInteger(params, 'until');
4797
+ if (until !== undefined) {
4798
+ params = this.omit(params, 'until');
4799
+ request['to'] = this.parseToInt(until / 1000);
4800
+ }
4780
4801
  }
4781
- const [lastId, finalParams] = this.handleParamString2(requestParams, 'lastId', 'last_id');
4802
+ const [lastId, finalParams] = this.handleParamString2(params, 'lastId', 'last_id');
4782
4803
  if (lastId !== undefined) {
4783
4804
  request['last_id'] = lastId;
4784
4805
  }
@@ -4796,7 +4817,7 @@ export default class gate extends Exchange {
4796
4817
  const res = this.handleMarketTypeAndParams('fetchOrdersByStatus', market, params);
4797
4818
  const type = this.safeString(res, 0);
4798
4819
  params['type'] = type;
4799
- const [request, requestParams] = this.fetchOrdersByStatusRequest(status, symbol, since, limit, params);
4820
+ const [request, requestParams] = this.prepareOrdersByStatusRequest(status, symbol, since, limit, params);
4800
4821
  const spot = (type === 'spot') || (type === 'margin');
4801
4822
  const openSpotOrders = spot && (status === 'open') && !stop;
4802
4823
  let response = undefined;
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/hashkey.js';
2
- import type { Account, Balances, Currencies, Currency, Dict, FundingRateHistory, LastPrice, LastPrices, Leverage, LeverageTier, LeverageTiers, Int, Market, Num, OHLCV, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry, LedgerEntry } from './base/types.js';
2
+ import type { Account, Balances, Currencies, Currency, Dict, FundingRateHistory, LastPrice, LastPrices, Leverage, LeverageTier, LeverageTiers, Int, Market, Num, OHLCV, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry, LedgerEntry, FundingRate, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class hashkey
5
5
  * @augments Exchange
@@ -99,45 +99,9 @@ export default class hashkey extends Exchange {
99
99
  parseOrderStatus(status: any): string;
100
100
  parseOrderTypeTimeInForceAndPostOnly(type: any, timeInForce: any): any[];
101
101
  parseOrderType(type: any): string;
102
- fetchFundingRate(symbol: string, params?: {}): Promise<{
103
- info: any;
104
- symbol: string;
105
- markPrice: any;
106
- indexPrice: any;
107
- interestRate: any;
108
- estimatedSettlePrice: any;
109
- timestamp: any;
110
- datetime: any;
111
- fundingRate: number;
112
- fundingTimestamp: any;
113
- fundingDatetime: any;
114
- nextFundingRate: any;
115
- nextFundingTimestamp: number;
116
- nextFundingDatetime: string;
117
- previousFundingRate: any;
118
- previousFundingTimestamp: any;
119
- previousFundingDatetime: any;
120
- }>;
121
- fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
122
- parseFundingRate(contract: any, market?: Market): {
123
- info: any;
124
- symbol: string;
125
- markPrice: any;
126
- indexPrice: any;
127
- interestRate: any;
128
- estimatedSettlePrice: any;
129
- timestamp: any;
130
- datetime: any;
131
- fundingRate: number;
132
- fundingTimestamp: any;
133
- fundingDatetime: any;
134
- nextFundingRate: any;
135
- nextFundingTimestamp: number;
136
- nextFundingDatetime: string;
137
- previousFundingRate: any;
138
- previousFundingTimestamp: any;
139
- previousFundingDatetime: any;
140
- };
102
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
103
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
104
+ parseFundingRate(contract: any, market?: Market): FundingRate;
141
105
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
142
106
  fetchPositions(symbols?: Strings, params?: {}): Promise<Position[]>;
143
107
  fetchPositionsForSymbol(symbol: string, params?: {}): Promise<Position[]>;
package/js/src/hashkey.js CHANGED
@@ -3742,7 +3742,7 @@ export default class hashkey extends Exchange {
3742
3742
  * @see https://hashkeyglobal-apidoc.readme.io/reference/get-futures-funding-rate
3743
3743
  * @param {string[]|undefined} symbols list of unified market symbols
3744
3744
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3745
- * @returns {object} a dictionary of [funding rates structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexe by market symbols
3745
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexed by market symbols
3746
3746
  */
3747
3747
  await this.loadMarkets();
3748
3748
  symbols = this.marketSymbols(symbols);
@@ -3761,7 +3761,6 @@ export default class hashkey extends Exchange {
3761
3761
  }
3762
3762
  parseFundingRate(contract, market = undefined) {
3763
3763
  //
3764
- // fetchFundingRates
3765
3764
  // {
3766
3765
  // "symbol": "ETHUSDT-PERPETUAL",
3767
3766
  // "rate": "0.0001",
@@ -3790,6 +3789,7 @@ export default class hashkey extends Exchange {
3790
3789
  'previousFundingRate': undefined,
3791
3790
  'previousFundingTimestamp': undefined,
3792
3791
  'previousFundingDatetime': undefined,
3792
+ 'interval': undefined,
3793
3793
  };
3794
3794
  }
3795
3795
  async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/hitbtc.js';
2
- import type { TransferEntry, Int, OrderSide, OrderType, FundingRateHistory, OHLCV, Ticker, Order, OrderBook, Dict, Position, Str, Trade, Balances, Transaction, MarginMode, Tickers, Strings, Market, Currency, MarginModes, Leverage, Num, MarginModification, TradingFeeInterface, Currencies, TradingFees, Dictionary, int } from './base/types.js';
2
+ import type { TransferEntry, Int, OrderSide, OrderType, FundingRateHistory, OHLCV, Ticker, Order, OrderBook, Dict, Position, Str, Trade, Balances, Transaction, MarginMode, Tickers, Strings, Market, Currency, MarginModes, Leverage, Num, MarginModification, TradingFeeInterface, Currencies, TradingFees, Dictionary, int, FundingRate, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class hitbtc
5
5
  * @augments Exchange
@@ -67,51 +67,15 @@ export default class hitbtc extends Exchange {
67
67
  info: any;
68
68
  }>;
69
69
  withdraw(code: string, amount: number, address: string, tag?: any, params?: {}): Promise<Transaction>;
70
- fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
70
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
71
71
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
72
72
  fetchPositions(symbols?: Strings, params?: {}): Promise<Position[]>;
73
73
  fetchPosition(symbol: string, params?: {}): Promise<Position>;
74
74
  parsePosition(position: Dict, market?: Market): Position;
75
75
  parseOpenInterest(interest: any, market?: Market): import("./base/types.js").OpenInterest;
76
76
  fetchOpenInterest(symbol: string, params?: {}): Promise<import("./base/types.js").OpenInterest>;
77
- fetchFundingRate(symbol: string, params?: {}): Promise<{
78
- info: any;
79
- symbol: string;
80
- markPrice: number;
81
- indexPrice: number;
82
- interestRate: number;
83
- estimatedSettlePrice: any;
84
- timestamp: number;
85
- datetime: string;
86
- fundingRate: number;
87
- fundingTimestamp: number;
88
- fundingDatetime: string;
89
- nextFundingRate: number;
90
- nextFundingTimestamp: any;
91
- nextFundingDatetime: any;
92
- previousFundingRate: any;
93
- previousFundingTimestamp: any;
94
- previousFundingDatetime: any;
95
- }>;
96
- parseFundingRate(contract: any, market?: Market): {
97
- info: any;
98
- symbol: string;
99
- markPrice: number;
100
- indexPrice: number;
101
- interestRate: number;
102
- estimatedSettlePrice: any;
103
- timestamp: number;
104
- datetime: string;
105
- fundingRate: number;
106
- fundingTimestamp: number;
107
- fundingDatetime: string;
108
- nextFundingRate: number;
109
- nextFundingTimestamp: any;
110
- nextFundingDatetime: any;
111
- previousFundingRate: any;
112
- previousFundingTimestamp: any;
113
- previousFundingDatetime: any;
114
- };
77
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
78
+ parseFundingRate(contract: any, market?: Market): FundingRate;
115
79
  modifyMarginHelper(symbol: string, amount: any, type: any, params?: {}): Promise<MarginModification>;
116
80
  parseMarginModification(data: Dict, market?: Market): MarginModification;
117
81
  reduceMargin(symbol: string, amount: number, params?: {}): Promise<MarginModification>;
package/js/src/hitbtc.js CHANGED
@@ -2741,7 +2741,7 @@ export default class hitbtc extends Exchange {
2741
2741
  * @see https://api.hitbtc.com/#futures-info
2742
2742
  * @param {string[]} symbols unified symbols of the markets to fetch the funding rates for, all market funding rates are returned if not assigned
2743
2743
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2744
- * @returns {object} an array of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
2744
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
2745
2745
  */
2746
2746
  await this.loadMarkets();
2747
2747
  let market = undefined;
@@ -3237,6 +3237,7 @@ export default class hitbtc extends Exchange {
3237
3237
  'previousFundingRate': undefined,
3238
3238
  'previousFundingTimestamp': undefined,
3239
3239
  'previousFundingDatetime': undefined,
3240
+ 'interval': undefined,
3240
3241
  };
3241
3242
  }
3242
3243
  async modifyMarginHelper(symbol, amount, type, params = {}) {
package/js/src/htx.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/htx.js';
2
- import type { TransferEntry, Int, OrderSide, OrderType, Order, OHLCV, Trade, FundingRateHistory, Balances, Str, Dict, Transaction, Ticker, OrderBook, Tickers, OrderRequest, Strings, Market, Currency, Num, Account, TradingFeeInterface, Currencies, IsolatedBorrowRates, IsolatedBorrowRate, LeverageTiers, LeverageTier, int, LedgerEntry } from './base/types.js';
2
+ import type { TransferEntry, Int, OrderSide, OrderType, Order, OHLCV, Trade, FundingRateHistory, Balances, Str, Dict, Transaction, Ticker, OrderBook, Tickers, OrderRequest, Strings, Market, Currency, Num, Account, TradingFeeInterface, Currencies, IsolatedBorrowRates, IsolatedBorrowRate, LeverageTiers, LeverageTier, int, LedgerEntry, FundingRate, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class huobi
5
5
  * @augments Exchange
@@ -115,45 +115,10 @@ export default class htx extends Exchange {
115
115
  fetchIsolatedBorrowRates(params?: {}): Promise<IsolatedBorrowRates>;
116
116
  parseIsolatedBorrowRate(info: Dict, market?: Market): IsolatedBorrowRate;
117
117
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
118
- parseFundingRate(contract: any, market?: Market): {
119
- info: any;
120
- symbol: string;
121
- markPrice: any;
122
- indexPrice: any;
123
- interestRate: any;
124
- estimatedSettlePrice: any;
125
- timestamp: any;
126
- datetime: any;
127
- fundingRate: number;
128
- fundingTimestamp: number;
129
- fundingDatetime: string;
130
- nextFundingRate: number;
131
- nextFundingTimestamp: number;
132
- nextFundingDatetime: string;
133
- previousFundingRate: any;
134
- previousFundingTimestamp: any;
135
- previousFundingDatetime: any;
136
- };
137
- fetchFundingRate(symbol: string, params?: {}): Promise<{
138
- info: any;
139
- symbol: string;
140
- markPrice: any;
141
- indexPrice: any;
142
- interestRate: any;
143
- estimatedSettlePrice: any;
144
- timestamp: any;
145
- datetime: any;
146
- fundingRate: number;
147
- fundingTimestamp: number;
148
- fundingDatetime: string;
149
- nextFundingRate: number;
150
- nextFundingTimestamp: number;
151
- nextFundingDatetime: string;
152
- previousFundingRate: any;
153
- previousFundingTimestamp: any;
154
- previousFundingDatetime: any;
155
- }>;
156
- fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
118
+ parseFundingRate(contract: any, market?: Market): FundingRate;
119
+ parseFundingInterval(interval: any): string;
120
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
121
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
157
122
  fetchBorrowInterest(code?: Str, symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<any>;
158
123
  parseBorrowInterest(info: Dict, market?: Market): {
159
124
  account: string;
package/js/src/htx.js CHANGED
@@ -187,7 +187,7 @@ export default class htx extends Exchange {
187
187
  },
188
188
  'www': 'https://www.huobi.com',
189
189
  'referral': {
190
- 'url': 'https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223',
190
+ 'url': 'https://www.htx.com.vc/invite/en-us/1h?invite_code=6rmm2223',
191
191
  'discount': 0.15,
192
192
  },
193
193
  'doc': [
@@ -7000,6 +7000,9 @@ export default class htx extends Exchange {
7000
7000
  const nextFundingRate = this.safeNumber(contract, 'estimated_rate');
7001
7001
  const fundingTimestamp = this.safeInteger(contract, 'funding_time');
7002
7002
  const nextFundingTimestamp = this.safeInteger(contract, 'next_funding_time');
7003
+ const fundingTimeString = this.safeString(contract, 'funding_time');
7004
+ const nextFundingTimeString = this.safeString(contract, 'next_funding_time');
7005
+ const millisecondsInterval = Precise.stringSub(nextFundingTimeString, fundingTimeString);
7003
7006
  const marketId = this.safeString(contract, 'contract_code');
7004
7007
  const symbol = this.safeSymbol(marketId, market);
7005
7008
  return {
@@ -7020,8 +7023,19 @@ export default class htx extends Exchange {
7020
7023
  'previousFundingRate': undefined,
7021
7024
  'previousFundingTimestamp': undefined,
7022
7025
  'previousFundingDatetime': undefined,
7026
+ 'interval': this.parseFundingInterval(millisecondsInterval),
7023
7027
  };
7024
7028
  }
7029
+ parseFundingInterval(interval) {
7030
+ const intervals = {
7031
+ '3600000': '1h',
7032
+ '14400000': '4h',
7033
+ '28800000': '8h',
7034
+ '57600000': '16h',
7035
+ '86400000': '24h',
7036
+ };
7037
+ return this.safeString(intervals, interval, interval);
7038
+ }
7025
7039
  async fetchFundingRate(symbol, params = {}) {
7026
7040
  /**
7027
7041
  * @method
@@ -7071,7 +7085,7 @@ export default class htx extends Exchange {
7071
7085
  * @description fetch the funding rate for multiple markets
7072
7086
  * @param {string[]|undefined} symbols list of unified market symbols
7073
7087
  * @param {object} [params] extra parameters specific to the exchange API endpoint
7074
- * @returns {object} a dictionary of [funding rates structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexe by market symbols
7088
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexed by market symbols
7075
7089
  */
7076
7090
  await this.loadMarkets();
7077
7091
  symbols = this.marketSymbols(symbols);
@@ -8838,6 +8852,9 @@ export default class htx extends Exchange {
8838
8852
  * @method
8839
8853
  * @name htx#fetchSettlementHistory
8840
8854
  * @description Fetches historical settlement records
8855
+ * @see https://huobiapi.github.io/docs/dm/v1/en/#query-historical-settlement-records-of-the-platform-interface
8856
+ * @see https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#query-historical-settlement-records-of-the-platform-interface
8857
+ * @see https://huobiapi.github.io/docs/usdt_swap/v1/en/#general-query-historical-settlement-records-of-the-platform-interface
8841
8858
  * @param {string} symbol unified symbol of the market to fetch the settlement history for
8842
8859
  * @param {int} [since] timestamp in ms, value range = current time - 90 days,default = current time - 90 days
8843
8860
  * @param {int} [limit] page items, default 20, shall not exceed 50
@@ -2038,6 +2038,7 @@ export default class hyperliquid extends Exchange {
2038
2038
  // "crossed": true,
2039
2039
  // "dir": "Close Long",
2040
2040
  // "fee": "0.050062",
2041
+ // "feeToken": "USDC",
2041
2042
  // "hash": "0x09d77c96791e98b5775a04092584ab010d009445119c71e4005c0d634ea322bc",
2042
2043
  // "liquidationMarkPx": null,
2043
2044
  // "oid": 3929354691,
@@ -2097,7 +2098,11 @@ export default class hyperliquid extends Exchange {
2097
2098
  'price': price,
2098
2099
  'amount': amount,
2099
2100
  'cost': undefined,
2100
- 'fee': { 'cost': fee, 'currency': 'USDC' },
2101
+ 'fee': {
2102
+ 'cost': fee,
2103
+ 'currency': this.safeString(trade, 'feeToken'),
2104
+ 'rate': undefined,
2105
+ },
2101
2106
  }, market);
2102
2107
  }
2103
2108
  async fetchPosition(symbol, params = {}) {
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/krakenfutures.js';
2
- import type { TransferEntry, Int, OrderSide, OrderType, OHLCV, Trade, FundingRateHistory, OrderRequest, Order, Balances, Str, Dict, Ticker, OrderBook, Tickers, Strings, Market, Currency, Leverage, Leverages, Num, LeverageTier, LeverageTiers, int } from './base/types.js';
2
+ import type { TransferEntry, Int, OrderSide, OrderType, OHLCV, Trade, FundingRateHistory, OrderRequest, Order, Balances, Str, Dict, Ticker, OrderBook, Tickers, Strings, Market, Currency, Leverage, Leverages, Num, LeverageTier, LeverageTiers, int, FundingRate, FundingRates } from './base/types.js';
3
3
  /**
4
4
  * @class krakenfutures
5
5
  * @augments Exchange
@@ -32,26 +32,8 @@ export default class krakenfutures extends Exchange {
32
32
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
33
33
  fetchBalance(params?: {}): Promise<Balances>;
34
34
  parseBalance(response: any): Balances;
35
- fetchFundingRates(symbols?: Strings, params?: {}): Promise<any>;
36
- parseFundingRate(ticker: any, market?: Market): {
37
- info: any;
38
- symbol: string;
39
- markPrice: number;
40
- indexPrice: number;
41
- interestRate: any;
42
- estimatedSettlePrice: any;
43
- timestamp: number;
44
- datetime: string;
45
- fundingRate: number;
46
- fundingTimestamp: any;
47
- fundingDatetime: any;
48
- nextFundingRate: number;
49
- nextFundingTimestamp: any;
50
- nextFundingDatetime: any;
51
- previousFundingRate: any;
52
- previousFundingTimestamp: any;
53
- previousFundingDatetime: any;
54
- };
35
+ fetchFundingRates(symbols?: Strings, params?: {}): Promise<FundingRates>;
36
+ parseFundingRate(ticker: any, market?: Market): FundingRate;
55
37
  fetchFundingRateHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingRateHistory[]>;
56
38
  fetchPositions(symbols?: Strings, params?: {}): Promise<import("./base/types.js").Position[]>;
57
39
  parsePositions(response: any, symbols?: Strings, params?: {}): any[];
@@ -2165,8 +2165,8 @@ export default class krakenfutures extends Exchange {
2165
2165
  /**
2166
2166
  * @method
2167
2167
  * @name krakenfutures#fetchFundingRates
2168
+ * @description fetch the current funding rates for multiple markets
2168
2169
  * @see https://docs.futures.kraken.com/#http-api-trading-v3-api-market-data-get-tickers
2169
- * @description fetch the current funding rates
2170
2170
  * @param {string[]} symbols unified market symbols
2171
2171
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2172
2172
  * @returns {Order[]} an array of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
@@ -2174,7 +2174,7 @@ export default class krakenfutures extends Exchange {
2174
2174
  await this.loadMarkets();
2175
2175
  const marketIds = this.marketIds(symbols);
2176
2176
  const response = await this.publicGetTickers(params);
2177
- const tickers = this.safeValue(response, 'tickers');
2177
+ const tickers = this.safeList(response, 'tickers', []);
2178
2178
  const fundingRates = [];
2179
2179
  for (let i = 0; i < tickers.length; i++) {
2180
2180
  const entry = tickers[i];
@@ -2244,6 +2244,7 @@ export default class krakenfutures extends Exchange {
2244
2244
  'previousFundingRate': undefined,
2245
2245
  'previousFundingTimestamp': undefined,
2246
2246
  'previousFundingDatetime': undefined,
2247
+ 'interval': undefined,
2247
2248
  };
2248
2249
  }
2249
2250
  async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1,5 +1,5 @@
1
1
  import kucoin from './abstract/kucoinfutures.js';
2
- import type { TransferEntry, Int, OrderSide, OrderType, OHLCV, Order, Trade, OrderRequest, FundingHistory, Balances, Str, Ticker, Tickers, OrderBook, Transaction, Strings, Market, Currency, Num, MarginModification, TradingFeeInterface, Dict, LeverageTier, MarginMode, Leverage } from './base/types.js';
2
+ import type { TransferEntry, Int, OrderSide, OrderType, OHLCV, Order, Trade, OrderRequest, FundingHistory, Balances, Str, Ticker, Tickers, OrderBook, Transaction, Strings, Market, Currency, Num, MarginModification, TradingFeeInterface, Dict, LeverageTier, MarginMode, Leverage, FundingRate } from './base/types.js';
3
3
  /**
4
4
  * @class kucoinfutures
5
5
  * @augments Exchange
@@ -46,25 +46,8 @@ export default class kucoinfutures extends kucoin {
46
46
  fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
47
47
  fetchOrder(id?: Str, symbol?: Str, params?: {}): Promise<Order>;
48
48
  parseOrder(order: Dict, market?: Market): Order;
49
- fetchFundingRate(symbol: string, params?: {}): Promise<{
50
- info: any;
51
- symbol: string;
52
- markPrice: any;
53
- indexPrice: any;
54
- interestRate: any;
55
- estimatedSettlePrice: any;
56
- timestamp: any;
57
- datetime: any;
58
- fundingRate: number;
59
- fundingTimestamp: number;
60
- fundingDatetime: string;
61
- nextFundingRate: number;
62
- nextFundingTimestamp: any;
63
- nextFundingDatetime: any;
64
- previousFundingRate: any;
65
- previousFundingTimestamp: any;
66
- previousFundingDatetime: any;
67
- }>;
49
+ fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;
50
+ parseFundingInterval(interval: any): string;
68
51
  parseBalance(response: any): Balances;
69
52
  fetchBalance(params?: {}): Promise<Balances>;
70
53
  transfer(code: string, amount: number, fromAccount: string, toAccount: string, params?: {}): Promise<TransferEntry>;
@@ -2204,8 +2204,19 @@ export default class kucoinfutures extends kucoin {
2204
2204
  'previousFundingRate': undefined,
2205
2205
  'previousFundingTimestamp': undefined,
2206
2206
  'previousFundingDatetime': undefined,
2207
+ 'interval': this.parseFundingInterval(this.safeString(data, 'granularity')),
2207
2208
  };
2208
2209
  }
2210
+ parseFundingInterval(interval) {
2211
+ const intervals = {
2212
+ '3600000': '1h',
2213
+ '14400000': '4h',
2214
+ '28800000': '8h',
2215
+ '57600000': '16h',
2216
+ '86400000': '24h',
2217
+ };
2218
+ return this.safeString(intervals, interval, interval);
2219
+ }
2209
2220
  parseBalance(response) {
2210
2221
  const result = {
2211
2222
  'info': response,