ccxt 4.4.47 → 4.4.49

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 (135) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.min.js +16 -16
  3. package/dist/cjs/ccxt.js +1 -1
  4. package/dist/cjs/src/ace.js +1 -1
  5. package/dist/cjs/src/binance.js +18 -14
  6. package/dist/cjs/src/bingx.js +88 -30
  7. package/dist/cjs/src/bitget.js +16 -12
  8. package/dist/cjs/src/bitmart.js +7 -2
  9. package/dist/cjs/src/bitmex.js +8 -5
  10. package/dist/cjs/src/bybit.js +7 -2
  11. package/dist/cjs/src/coinbase.js +11 -1
  12. package/dist/cjs/src/coincatch.js +86 -2
  13. package/dist/cjs/src/coincheck.js +52 -0
  14. package/dist/cjs/src/coinlist.js +77 -0
  15. package/dist/cjs/src/coinmate.js +63 -0
  16. package/dist/cjs/src/coinmetro.js +68 -0
  17. package/dist/cjs/src/coinone.js +56 -0
  18. package/dist/cjs/src/coinsph.js +85 -10
  19. package/dist/cjs/src/coinspot.js +47 -0
  20. package/dist/cjs/src/currencycom.js +72 -0
  21. package/dist/cjs/src/defx.js +93 -6
  22. package/dist/cjs/src/delta.js +83 -1
  23. package/dist/cjs/src/deribit.js +82 -0
  24. package/dist/cjs/src/digifinex.js +131 -11
  25. package/dist/cjs/src/ellipx.js +61 -0
  26. package/dist/cjs/src/exmo.js +58 -0
  27. package/dist/cjs/src/gate.js +10 -1
  28. package/dist/cjs/src/hitbtc.js +99 -0
  29. package/dist/cjs/src/hollaex.js +73 -0
  30. package/dist/cjs/src/htx.js +10 -2
  31. package/dist/cjs/src/huobijp.js +73 -0
  32. package/dist/cjs/src/hyperliquid.js +28 -2
  33. package/dist/cjs/src/idex.js +71 -0
  34. package/dist/cjs/src/independentreserve.js +124 -0
  35. package/dist/cjs/src/indodax.js +61 -0
  36. package/dist/cjs/src/kraken.js +1 -1
  37. package/dist/cjs/src/krakenfutures.js +4 -4
  38. package/dist/cjs/src/kuna.js +60 -1
  39. package/dist/cjs/src/latoken.js +64 -0
  40. package/dist/cjs/src/lbank.js +70 -0
  41. package/dist/cjs/src/luno.js +73 -0
  42. package/dist/cjs/src/lykke.js +64 -0
  43. package/dist/cjs/src/mercado.js +65 -0
  44. package/dist/cjs/src/mexc.js +1 -1
  45. package/dist/cjs/src/myokx.js +10 -0
  46. package/dist/cjs/src/ndax.js +71 -0
  47. package/dist/cjs/src/novadax.js +74 -0
  48. package/dist/cjs/src/oceanex.js +69 -0
  49. package/dist/cjs/src/okcoin.js +79 -2
  50. package/dist/cjs/src/okx.js +9 -1
  51. package/dist/cjs/src/onetrading.js +66 -0
  52. package/dist/cjs/src/oxfun.js +66 -0
  53. package/dist/cjs/src/p2b.js +63 -1
  54. package/dist/cjs/src/paradex.js +73 -2
  55. package/dist/cjs/src/phemex.js +103 -0
  56. package/dist/cjs/src/poloniex.js +61 -0
  57. package/dist/cjs/src/poloniexfutures.js +74 -0
  58. package/dist/cjs/src/pro/bitmart.js +6 -0
  59. package/dist/cjs/src/upbit.js +61 -0
  60. package/dist/cjs/src/woo.js +6 -1
  61. package/js/ccxt.d.ts +1 -1
  62. package/js/ccxt.js +1 -1
  63. package/js/src/abstract/independentreserve.d.ts +6 -0
  64. package/js/src/ace.js +1 -1
  65. package/js/src/binance.d.ts +7 -0
  66. package/js/src/binance.js +18 -14
  67. package/js/src/bingx.d.ts +8 -0
  68. package/js/src/bingx.js +88 -30
  69. package/js/src/bitget.d.ts +1 -0
  70. package/js/src/bitget.js +16 -12
  71. package/js/src/bitmart.js +7 -2
  72. package/js/src/bitmex.js +8 -5
  73. package/js/src/bybit.d.ts +1 -1
  74. package/js/src/bybit.js +7 -2
  75. package/js/src/coinbase.d.ts +1 -0
  76. package/js/src/coinbase.js +11 -1
  77. package/js/src/coincatch.d.ts +1 -2
  78. package/js/src/coincatch.js +86 -2
  79. package/js/src/coincheck.js +52 -0
  80. package/js/src/coinlist.js +77 -0
  81. package/js/src/coinmate.js +63 -0
  82. package/js/src/coinmetro.js +68 -0
  83. package/js/src/coinone.js +56 -0
  84. package/js/src/coinsph.d.ts +2 -1
  85. package/js/src/coinsph.js +85 -10
  86. package/js/src/coinspot.js +47 -0
  87. package/js/src/currencycom.js +72 -0
  88. package/js/src/defx.js +93 -6
  89. package/js/src/delta.js +83 -1
  90. package/js/src/deribit.js +82 -0
  91. package/js/src/digifinex.d.ts +1 -0
  92. package/js/src/digifinex.js +131 -11
  93. package/js/src/ellipx.d.ts +1 -0
  94. package/js/src/ellipx.js +61 -0
  95. package/js/src/exmo.js +58 -0
  96. package/js/src/gate.d.ts +1 -0
  97. package/js/src/gate.js +10 -1
  98. package/js/src/hitbtc.js +99 -0
  99. package/js/src/hollaex.js +73 -0
  100. package/js/src/htx.d.ts +1 -0
  101. package/js/src/htx.js +10 -2
  102. package/js/src/huobijp.js +73 -0
  103. package/js/src/hyperliquid.d.ts +1 -0
  104. package/js/src/hyperliquid.js +28 -2
  105. package/js/src/idex.js +71 -0
  106. package/js/src/independentreserve.js +124 -0
  107. package/js/src/indodax.js +61 -0
  108. package/js/src/kraken.js +1 -1
  109. package/js/src/krakenfutures.js +4 -4
  110. package/js/src/kuna.js +60 -1
  111. package/js/src/latoken.js +64 -0
  112. package/js/src/lbank.js +70 -0
  113. package/js/src/luno.js +73 -0
  114. package/js/src/lykke.js +64 -0
  115. package/js/src/mercado.js +65 -0
  116. package/js/src/mexc.js +1 -1
  117. package/js/src/myokx.js +10 -0
  118. package/js/src/ndax.js +71 -0
  119. package/js/src/novadax.js +74 -0
  120. package/js/src/oceanex.js +69 -0
  121. package/js/src/okcoin.js +79 -2
  122. package/js/src/okx.d.ts +1 -0
  123. package/js/src/okx.js +9 -1
  124. package/js/src/onetrading.js +66 -0
  125. package/js/src/oxfun.js +66 -0
  126. package/js/src/p2b.js +63 -1
  127. package/js/src/paradex.js +73 -2
  128. package/js/src/phemex.js +103 -0
  129. package/js/src/poloniex.js +61 -0
  130. package/js/src/poloniexfutures.js +74 -0
  131. package/js/src/pro/bitmart.d.ts +1 -0
  132. package/js/src/pro/bitmart.js +6 -0
  133. package/js/src/upbit.js +61 -0
  134. package/js/src/woo.js +6 -1
  135. package/package.json +2 -2
package/js/src/huobijp.js CHANGED
@@ -252,6 +252,79 @@ export default class huobijp extends Exchange {
252
252
  'taker': this.parseNumber('0.002'),
253
253
  },
254
254
  },
255
+ 'features': {
256
+ 'spot': {
257
+ 'sandbox': false,
258
+ 'createOrder': {
259
+ 'marginMode': false,
260
+ 'triggerPrice': true,
261
+ 'triggerPriceType': undefined,
262
+ 'triggerDirection': false,
263
+ 'stopLossPrice': false,
264
+ 'takeProfitPrice': false,
265
+ 'attachedStopLossTakeProfit': undefined,
266
+ 'timeInForce': {
267
+ 'IOC': false,
268
+ 'FOK': false,
269
+ 'PO': false,
270
+ 'GTD': false,
271
+ },
272
+ 'hedged': false,
273
+ 'selfTradePrevention': false,
274
+ 'trailing': false,
275
+ 'leverage': false,
276
+ 'marketBuyByCost': true,
277
+ 'marketBuyRequiresPrice': false,
278
+ 'iceberg': false,
279
+ },
280
+ 'createOrders': undefined,
281
+ 'fetchMyTrades': {
282
+ 'marginMode': false,
283
+ 'limit': 100,
284
+ 'daysBack': 120,
285
+ 'untilDays': 2,
286
+ },
287
+ 'fetchOrder': {
288
+ 'marginMode': false,
289
+ 'trigger': false,
290
+ 'trailing': false,
291
+ },
292
+ 'fetchOpenOrders': {
293
+ 'marginMode': false,
294
+ 'limit': undefined,
295
+ 'trigger': false,
296
+ 'trailing': false,
297
+ },
298
+ 'fetchOrders': {
299
+ 'marginMode': false,
300
+ 'limit': undefined,
301
+ 'daysBack': undefined,
302
+ 'untilDays': undefined,
303
+ 'trigger': false,
304
+ 'trailing': false,
305
+ },
306
+ 'fetchClosedOrders': {
307
+ 'marginMode': false,
308
+ 'limit': undefined,
309
+ 'daysBack': undefined,
310
+ 'daysBackCanceled': undefined,
311
+ 'untilDays': undefined,
312
+ 'trigger': false,
313
+ 'trailing': false,
314
+ },
315
+ 'fetchOHLCV': {
316
+ 'limit': 2000,
317
+ },
318
+ },
319
+ 'swap': {
320
+ 'linear': undefined,
321
+ 'inverse': undefined,
322
+ },
323
+ 'future': {
324
+ 'linear': undefined,
325
+ 'inverse': undefined,
326
+ },
327
+ },
255
328
  'precisionMode': TICK_SIZE,
256
329
  'exceptions': {
257
330
  'broad': {
@@ -465,6 +465,7 @@ export default class hyperliquid extends Exchange {
465
465
  * @returns {object} a [transfer structure]{@link https://docs.ccxt.com/#/?id=transfer-structure}
466
466
  */
467
467
  transfer(code: string, amount: number, fromAccount: string, toAccount: string, params?: {}): Promise<TransferEntry>;
468
+ parseTransfer(transfer: Dict, currency?: Currency): TransferEntry;
468
469
  /**
469
470
  * @method
470
471
  * @name hyperliquid#withdraw
@@ -208,6 +208,8 @@ export default class hyperliquid extends Exchange {
208
208
  'Order price cannot be more than 80% away from the reference price': InvalidOrder,
209
209
  'Order has zero size.': InvalidOrder,
210
210
  'Insufficient spot balance asset': InsufficientFunds,
211
+ 'Insufficient balance for withdrawal': InsufficientFunds,
212
+ 'Insufficient balance for token transfer': InsufficientFunds,
211
213
  },
212
214
  },
213
215
  'precisionMode': TICK_SIZE,
@@ -694,6 +696,11 @@ export default class hyperliquid extends Exchange {
694
696
  const price = this.safeNumber(market, 'markPx', 0);
695
697
  const pricePrecision = this.calculatePricePrecision(price, amountPrecision, 6);
696
698
  const pricePrecisionStr = this.numberToString(pricePrecision);
699
+ const isDelisted = this.safeBool(market, 'isDelisted');
700
+ let active = true;
701
+ if (isDelisted !== undefined) {
702
+ active = !isDelisted;
703
+ }
697
704
  return this.safeMarketStructure({
698
705
  'id': baseId,
699
706
  'symbol': symbol,
@@ -709,7 +716,7 @@ export default class hyperliquid extends Exchange {
709
716
  'swap': swap,
710
717
  'future': false,
711
718
  'option': false,
712
- 'active': true,
719
+ 'active': active,
713
720
  'contract': contract,
714
721
  'linear': true,
715
722
  'inverse': false,
@@ -2855,7 +2862,26 @@ export default class hyperliquid extends Exchange {
2855
2862
  'signature': sig,
2856
2863
  };
2857
2864
  const response = await this.privatePostExchange(request);
2858
- return response;
2865
+ //
2866
+ // {'response': {'type': 'default'}, 'status': 'ok'}
2867
+ //
2868
+ return this.parseTransfer(response);
2869
+ }
2870
+ parseTransfer(transfer, currency = undefined) {
2871
+ //
2872
+ // {'response': {'type': 'default'}, 'status': 'ok'}
2873
+ //
2874
+ return {
2875
+ 'info': transfer,
2876
+ 'id': undefined,
2877
+ 'timestamp': undefined,
2878
+ 'datetime': undefined,
2879
+ 'currency': undefined,
2880
+ 'amount': undefined,
2881
+ 'fromAccount': undefined,
2882
+ 'toAccount': undefined,
2883
+ 'status': 'ok',
2884
+ };
2859
2885
  }
2860
2886
  /**
2861
2887
  * @method
package/js/src/idex.js CHANGED
@@ -169,6 +169,77 @@ export default class idex extends Exchange {
169
169
  'defaultSelfTradePrevention': 'cn',
170
170
  'network': 'MATIC',
171
171
  },
172
+ 'features': {
173
+ 'spot': {
174
+ 'sandbox': false,
175
+ 'createOrder': {
176
+ 'marginMode': false,
177
+ 'triggerPrice': true,
178
+ // todo: revise
179
+ 'triggerPriceType': {
180
+ 'last': true,
181
+ 'mark': true,
182
+ 'index': true,
183
+ },
184
+ 'triggerDirection': false,
185
+ 'stopLossPrice': false,
186
+ 'takeProfitPrice': false,
187
+ 'attachedStopLossTakeProfit': undefined,
188
+ 'timeInForce': {
189
+ 'IOC': true,
190
+ 'FOK': true,
191
+ 'PO': true,
192
+ 'GTD': false,
193
+ },
194
+ 'hedged': false,
195
+ 'selfTradePrevention': true,
196
+ 'trailing': false,
197
+ 'leverage': false,
198
+ 'marketBuyByCost': false,
199
+ 'marketBuyRequiresPrice': false,
200
+ 'iceberg': false,
201
+ },
202
+ 'createOrders': undefined,
203
+ 'fetchMyTrades': {
204
+ 'marginMode': false,
205
+ 'limit': 1000,
206
+ 'daysBack': 100000,
207
+ 'untilDays': 100000, // todo
208
+ },
209
+ 'fetchOrder': {
210
+ 'marginMode': false,
211
+ 'trigger': false,
212
+ 'trailing': false,
213
+ },
214
+ 'fetchOpenOrders': {
215
+ 'marginMode': false,
216
+ 'limit': 1000,
217
+ 'trigger': false,
218
+ 'trailing': false,
219
+ },
220
+ 'fetchOrders': undefined,
221
+ 'fetchClosedOrders': {
222
+ 'marginMode': false,
223
+ 'limit': 1000,
224
+ 'daysBack': 1000000,
225
+ 'daysBackCanceled': 1,
226
+ 'untilDays': 1000000,
227
+ 'trigger': false,
228
+ 'trailing': false,
229
+ },
230
+ 'fetchOHLCV': {
231
+ 'limit': 1000,
232
+ },
233
+ },
234
+ 'swap': {
235
+ 'linear': undefined,
236
+ 'inverse': undefined,
237
+ },
238
+ 'future': {
239
+ 'linear': undefined,
240
+ 'inverse': undefined,
241
+ },
242
+ },
172
243
  'exceptions': {
173
244
  'exact': {
174
245
  'INVALID_ORDER_QUANTITY': InvalidOrder,
@@ -109,6 +109,9 @@ export default class independentreserve extends Exchange {
109
109
  'GetFxRates',
110
110
  'GetOrderMinimumVolumes',
111
111
  'GetCryptoWithdrawalFees',
112
+ 'GetCryptoWithdrawalFees2',
113
+ 'GetNetworks',
114
+ 'GetPrimaryCurrencyConfig2',
112
115
  ],
113
116
  },
114
117
  'private': {
@@ -121,7 +124,9 @@ export default class independentreserve extends Exchange {
121
124
  'GetTransactions',
122
125
  'GetFiatBankAccounts',
123
126
  'GetDigitalCurrencyDepositAddress',
127
+ 'GetDigitalCurrencyDepositAddress2',
124
128
  'GetDigitalCurrencyDepositAddresses',
129
+ 'GetDigitalCurrencyDepositAddresses2',
125
130
  'GetTrades',
126
131
  'GetBrokerageFees',
127
132
  'GetDigitalCurrencyWithdrawal',
@@ -132,6 +137,7 @@ export default class independentreserve extends Exchange {
132
137
  'RequestFiatWithdrawal',
133
138
  'WithdrawFiatCurrency',
134
139
  'WithdrawDigitalCurrency',
140
+ 'WithdrawCrypto',
135
141
  ],
136
142
  },
137
143
  },
@@ -143,10 +149,128 @@ export default class independentreserve extends Exchange {
143
149
  'tierBased': false,
144
150
  },
145
151
  },
152
+ 'features': {
153
+ 'spot': {
154
+ 'sandbox': false,
155
+ 'createOrder': {
156
+ 'marginMode': false,
157
+ 'triggerPrice': false,
158
+ 'triggerPriceType': undefined,
159
+ 'triggerDirection': false,
160
+ 'stopLossPrice': false,
161
+ 'takeProfitPrice': false,
162
+ 'attachedStopLossTakeProfit': undefined,
163
+ 'timeInForce': {
164
+ 'IOC': false,
165
+ 'FOK': false,
166
+ 'PO': false,
167
+ 'GTD': false,
168
+ },
169
+ 'hedged': false,
170
+ 'selfTradePrevention': false,
171
+ 'trailing': false,
172
+ 'leverage': false,
173
+ 'marketBuyByCost': false,
174
+ 'marketBuyRequiresPrice': false,
175
+ 'iceberg': false,
176
+ },
177
+ 'createOrders': undefined,
178
+ 'fetchMyTrades': {
179
+ 'marginMode': false,
180
+ 'limit': 100,
181
+ 'daysBack': undefined,
182
+ 'untilDays': undefined,
183
+ },
184
+ 'fetchOrder': {
185
+ 'marginMode': false,
186
+ 'trigger': false,
187
+ 'trailing': false,
188
+ },
189
+ 'fetchOpenOrders': {
190
+ 'marginMode': false,
191
+ 'limit': 100,
192
+ 'trigger': false,
193
+ 'trailing': false,
194
+ },
195
+ 'fetchOrders': undefined,
196
+ 'fetchClosedOrders': {
197
+ 'marginMode': false,
198
+ 'limit': 100,
199
+ 'daysBack': undefined,
200
+ 'daysBackCanceled': undefined,
201
+ 'untilDays': undefined,
202
+ 'trigger': false,
203
+ 'trailing': false,
204
+ },
205
+ 'fetchOHLCV': undefined,
206
+ },
207
+ 'swap': {
208
+ 'linear': undefined,
209
+ 'inverse': undefined,
210
+ },
211
+ 'future': {
212
+ 'linear': undefined,
213
+ 'inverse': undefined,
214
+ },
215
+ },
146
216
  'commonCurrencies': {
147
217
  'PLA': 'PlayChip',
148
218
  },
149
219
  'precisionMode': TICK_SIZE,
220
+ 'options': {
221
+ 'defaultNetworks': {
222
+ 'USDT': 'Ethereum',
223
+ 'USDC': 'Ethereum',
224
+ 'BTC': 'Bitcoin',
225
+ 'BCH': 'BitcoinCash',
226
+ 'ETH': 'Ethereum',
227
+ 'LTC': 'Litecoin',
228
+ 'XRP': 'XrpLedger',
229
+ 'ZRX': 'Ethereum',
230
+ 'EOS': 'EosIo',
231
+ 'XLM': 'Stellar',
232
+ 'BAT': 'Ethereum',
233
+ 'ETC': 'EthereumClassic',
234
+ 'LINK': 'Ethereum',
235
+ 'MKR': 'Ethereum',
236
+ 'DAI': 'Ethereum',
237
+ 'COMP': 'Ethereum',
238
+ 'SNX': 'Ethereum',
239
+ 'YFI': 'Ethereum',
240
+ 'AAVE': 'Ethereum',
241
+ 'GRT': 'Ethereum',
242
+ 'DOT': 'Polkadot',
243
+ 'UNI': 'Ethereum',
244
+ 'ADA': 'Cardano',
245
+ 'MATIC': 'Ethereum',
246
+ 'DOGE': 'Dogecoin',
247
+ 'SOL': 'Solana',
248
+ 'MANA': 'Ethereum',
249
+ 'SAND': 'Ethereum',
250
+ 'SHIB': 'Ethereum',
251
+ 'TRX': 'Tron',
252
+ 'RENDER': 'Solana',
253
+ 'WIF': 'Solana',
254
+ 'RLUSD': 'Ethereum',
255
+ 'PEPE': 'Ethereum',
256
+ },
257
+ 'networks': {
258
+ 'BTC': 'Bitcoin',
259
+ 'ETH': 'Ethereum',
260
+ 'BCH': 'BitcoinCash',
261
+ 'LTC': 'Litecoin',
262
+ 'XRP': 'XrpLedger',
263
+ 'EOS': 'EosIo',
264
+ 'XLM': 'Stellar',
265
+ 'ETC': 'EthereumClassic',
266
+ 'BSV': 'BitcoinSV',
267
+ 'DOGE': 'Dogecoin',
268
+ 'DOT': 'Polkadot',
269
+ 'ADA': 'Cardano',
270
+ 'SOL': 'Solana',
271
+ 'TRX': 'Tron',
272
+ },
273
+ },
150
274
  });
151
275
  }
152
276
  /**
package/js/src/indodax.js CHANGED
@@ -198,6 +198,67 @@ export default class indodax extends Exchange {
198
198
  '1w': '1W',
199
199
  },
200
200
  },
201
+ 'features': {
202
+ 'spot': {
203
+ 'sandbox': false,
204
+ 'createOrder': {
205
+ 'marginMode': false,
206
+ 'triggerPrice': false,
207
+ 'triggerPriceType': undefined,
208
+ 'triggerDirection': false,
209
+ 'stopLossPrice': false,
210
+ 'takeProfitPrice': false,
211
+ 'attachedStopLossTakeProfit': undefined,
212
+ 'timeInForce': {
213
+ 'IOC': true,
214
+ 'FOK': false,
215
+ 'PO': false,
216
+ 'GTD': false,
217
+ },
218
+ 'hedged': false,
219
+ 'selfTradePrevention': false,
220
+ 'trailing': false,
221
+ 'leverage': false,
222
+ 'marketBuyByCost': false,
223
+ 'marketBuyRequiresPrice': false,
224
+ 'iceberg': false,
225
+ },
226
+ 'createOrders': undefined,
227
+ 'fetchMyTrades': undefined,
228
+ 'fetchOrder': {
229
+ 'marginMode': false,
230
+ 'trigger': false,
231
+ 'trailing': false,
232
+ },
233
+ 'fetchOpenOrders': {
234
+ 'marginMode': false,
235
+ 'limit': undefined,
236
+ 'trigger': false,
237
+ 'trailing': false,
238
+ },
239
+ 'fetchOrders': undefined,
240
+ 'fetchClosedOrders': {
241
+ 'marginMode': false,
242
+ 'limit': 1000,
243
+ 'daysBack': 100000,
244
+ 'daysBackCanceled': 1,
245
+ 'untilDays': undefined,
246
+ 'trigger': false,
247
+ 'trailing': false,
248
+ },
249
+ 'fetchOHLCV': {
250
+ 'limit': 2000, // todo: not in request
251
+ },
252
+ },
253
+ 'swap': {
254
+ 'linear': undefined,
255
+ 'inverse': undefined,
256
+ },
257
+ 'future': {
258
+ 'linear': undefined,
259
+ 'inverse': undefined,
260
+ },
261
+ },
201
262
  'commonCurrencies': {
202
263
  'STR': 'XLM',
203
264
  'BCHABC': 'BCH',
package/js/src/kraken.js CHANGED
@@ -695,7 +695,7 @@ export default class kraken extends Exchange {
695
695
  if (currencyId !== undefined) {
696
696
  if (currencyId.length > 3) {
697
697
  if ((currencyId.indexOf('X') === 0) || (currencyId.indexOf('Z') === 0)) {
698
- if (!(currencyId.indexOf('.') > 0)) {
698
+ if (!(currencyId.indexOf('.') > 0) && (currencyId !== 'ZEUS')) {
699
699
  currencyId = currencyId.slice(1);
700
700
  }
701
701
  }
@@ -2588,18 +2588,18 @@ export default class krakenfutures extends Exchange {
2588
2588
  for (let i = 0; i < marginLevels.length; i++) {
2589
2589
  const tier = marginLevels[i];
2590
2590
  const initialMargin = this.safeString(tier, 'initialMargin');
2591
- const notionalFloor = this.safeNumber(tier, 'contracts');
2591
+ const minNotional = this.safeNumber(tier, 'numNonContractUnits');
2592
2592
  if (i !== 0) {
2593
2593
  const tiersLength = tiers.length;
2594
2594
  const previousTier = tiers[tiersLength - 1];
2595
- previousTier['notionalCap'] = notionalFloor;
2595
+ previousTier['maxNotional'] = minNotional;
2596
2596
  }
2597
2597
  tiers.push({
2598
2598
  'tier': this.sum(i, 1),
2599
2599
  'symbol': this.safeSymbol(marketId, market),
2600
2600
  'currency': market['quote'],
2601
- 'notionalFloor': notionalFloor,
2602
- 'notionalCap': undefined,
2601
+ 'minNotional': minNotional,
2602
+ 'maxNotional': undefined,
2603
2603
  'maintenanceMarginRate': this.safeNumber(tier, 'maintenanceMargin'),
2604
2604
  'maxLeverage': this.parseNumber(Precise.stringDiv('1', initialMargin)),
2605
2605
  'info': tier,
package/js/src/kuna.js CHANGED
@@ -74,7 +74,7 @@ export default class kuna extends Exchange {
74
74
  'fetchMarkets': true,
75
75
  'fetchMarkOHLCV': false,
76
76
  'fetchMyTrades': true,
77
- 'fetchOHLCV': 'emulated',
77
+ 'fetchOHLCV': false,
78
78
  'fetchOpenInterest': false,
79
79
  'fetchOpenInterestHistory': false,
80
80
  'fetchOpenOrders': true,
@@ -359,6 +359,65 @@ export default class kuna extends Exchange {
359
359
  ],
360
360
  },
361
361
  },
362
+ 'features': {
363
+ 'spot': {
364
+ 'sandbox': false,
365
+ 'createOrder': {
366
+ 'marginMode': false,
367
+ 'triggerPrice': true,
368
+ 'triggerPriceType': undefined,
369
+ 'triggerDirection': false,
370
+ 'stopLossPrice': false,
371
+ 'takeProfitPrice': false,
372
+ 'attachedStopLossTakeProfit': undefined,
373
+ 'timeInForce': {
374
+ 'IOC': false,
375
+ 'FOK': false,
376
+ 'PO': false,
377
+ 'GTD': false,
378
+ },
379
+ 'hedged': false,
380
+ 'selfTradePrevention': false,
381
+ 'trailing': false,
382
+ 'leverage': false,
383
+ 'marketBuyByCost': true,
384
+ 'marketBuyRequiresPrice': false,
385
+ 'iceberg': false,
386
+ },
387
+ 'createOrders': undefined,
388
+ 'fetchMyTrades': undefined,
389
+ 'fetchOrder': {
390
+ 'marginMode': false,
391
+ 'trigger': false,
392
+ 'trailing': false,
393
+ },
394
+ 'fetchOpenOrders': {
395
+ 'marginMode': false,
396
+ 'limit': 100,
397
+ 'trigger': false,
398
+ 'trailing': false,
399
+ },
400
+ 'fetchOrders': undefined,
401
+ 'fetchClosedOrders': {
402
+ 'marginMode': false,
403
+ 'limit': 100,
404
+ 'daysBack': 100000,
405
+ 'daysBackCanceled': 1,
406
+ 'untilDays': 14,
407
+ 'trigger': false,
408
+ 'trailing': false,
409
+ },
410
+ 'fetchOHLCV': undefined,
411
+ },
412
+ 'swap': {
413
+ 'linear': undefined,
414
+ 'inverse': undefined,
415
+ },
416
+ 'future': {
417
+ 'linear': undefined,
418
+ 'inverse': undefined,
419
+ },
420
+ },
362
421
  'fees': {
363
422
  'trading': {
364
423
  'tierBased': false,
package/js/src/latoken.js CHANGED
@@ -237,6 +237,70 @@ export default class latoken extends Exchange {
237
237
  'method': 'fetchPrivateTradingFee', // or 'fetchPublicTradingFee'
238
238
  },
239
239
  },
240
+ 'features': {
241
+ 'spot': {
242
+ 'sandbox': false,
243
+ 'createOrder': {
244
+ 'marginMode': false,
245
+ 'triggerPrice': true,
246
+ 'triggerPriceType': undefined,
247
+ 'triggerDirection': false,
248
+ 'stopLossPrice': false,
249
+ 'takeProfitPrice': false,
250
+ 'attachedStopLossTakeProfit': undefined,
251
+ 'timeInForce': {
252
+ 'IOC': true,
253
+ 'FOK': true,
254
+ 'PO': false,
255
+ 'GTD': false,
256
+ },
257
+ 'hedged': false,
258
+ 'selfTradePrevention': false,
259
+ 'trailing': false,
260
+ 'leverage': false,
261
+ 'marketBuyByCost': true,
262
+ 'marketBuyRequiresPrice': false,
263
+ 'iceberg': false,
264
+ },
265
+ 'createOrders': undefined,
266
+ 'fetchMyTrades': {
267
+ 'marginMode': false,
268
+ 'limit': 1000,
269
+ 'daysBack': 100000,
270
+ 'untilDays': undefined,
271
+ },
272
+ 'fetchOrder': {
273
+ 'marginMode': false,
274
+ 'trigger': true,
275
+ 'trailing': false,
276
+ },
277
+ 'fetchOpenOrders': {
278
+ 'marginMode': false,
279
+ 'limit': undefined,
280
+ 'trigger': false,
281
+ 'trailing': false,
282
+ },
283
+ 'fetchOrders': undefined,
284
+ 'fetchClosedOrders': {
285
+ 'marginMode': false,
286
+ 'limit': 1000,
287
+ 'daysBack': 100000,
288
+ 'daysBackCanceled': 1,
289
+ 'untilDays': undefined,
290
+ 'trigger': true,
291
+ 'trailing': false,
292
+ },
293
+ 'fetchOHLCV': undefined,
294
+ },
295
+ 'swap': {
296
+ 'linear': undefined,
297
+ 'inverse': undefined,
298
+ },
299
+ 'future': {
300
+ 'linear': undefined,
301
+ 'inverse': undefined,
302
+ },
303
+ },
240
304
  });
241
305
  }
242
306
  nonce() {