ccxt 4.5.55 → 4.5.57

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 (321) hide show
  1. package/README.md +215 -10
  2. package/dist/ccxt.browser.min.js +10 -10
  3. package/dist/cjs/ccxt.js +6 -11
  4. package/dist/cjs/src/aftermath.js +10 -5
  5. package/dist/cjs/src/alpaca.js +2 -2
  6. package/dist/cjs/src/apex.js +26 -17
  7. package/dist/cjs/src/arkham.js +10 -7
  8. package/dist/cjs/src/ascendex.js +8 -5
  9. package/dist/cjs/src/aster.js +7 -4
  10. package/dist/cjs/src/backpack.js +4 -4
  11. package/dist/cjs/src/base/Exchange.js +72 -35
  12. package/dist/cjs/src/base/functions/io.js +25 -0
  13. package/dist/cjs/src/base/functions.js +1 -0
  14. package/dist/cjs/src/bigone.js +10 -7
  15. package/dist/cjs/src/binance.js +196 -198
  16. package/dist/cjs/src/bingx.js +7 -7
  17. package/dist/cjs/src/bitfinex.js +71 -58
  18. package/dist/cjs/src/bitflyer.js +2 -1
  19. package/dist/cjs/src/bitget.js +16 -5
  20. package/dist/cjs/src/bitmart.js +18 -10
  21. package/dist/cjs/src/bitmex.js +8 -5
  22. package/dist/cjs/src/bitopro.js +2 -2
  23. package/dist/cjs/src/bitrue.js +4 -3
  24. package/dist/cjs/src/bitso.js +7 -4
  25. package/dist/cjs/src/bitstamp.js +7 -4
  26. package/dist/cjs/src/bitteam.js +1 -1
  27. package/dist/cjs/src/bittrade.js +2 -2
  28. package/dist/cjs/src/bitvavo.js +457 -34
  29. package/dist/cjs/src/blofin.js +28 -4
  30. package/dist/cjs/src/bullish.js +6 -5
  31. package/dist/cjs/src/bybit.js +19 -17
  32. package/dist/cjs/src/bybiteu.js +1 -0
  33. package/dist/cjs/src/bydfi.js +1 -1
  34. package/dist/cjs/src/cex.js +3 -3
  35. package/dist/cjs/src/coinbase.js +75 -65
  36. package/dist/cjs/src/coinbaseexchange.js +4 -3
  37. package/dist/cjs/src/coinbaseinternational.js +17 -10
  38. package/dist/cjs/src/coinex.js +79 -77
  39. package/dist/cjs/src/coinmetro.js +1 -1
  40. package/dist/cjs/src/coinsph.js +5 -5
  41. package/dist/cjs/src/cryptocom.js +52 -54
  42. package/dist/cjs/src/cryptomus.js +43 -39
  43. package/dist/cjs/src/deepcoin.js +9 -5
  44. package/dist/cjs/src/delta.js +53 -53
  45. package/dist/cjs/src/deribit.js +35 -35
  46. package/dist/cjs/src/derive.js +31 -31
  47. package/dist/cjs/src/digifinex.js +45 -45
  48. package/dist/cjs/src/exmo.js +104 -122
  49. package/dist/cjs/src/extended.js +3497 -0
  50. package/dist/cjs/src/foxbit.js +72 -76
  51. package/dist/cjs/src/gate.js +53 -53
  52. package/dist/cjs/src/gemini.js +45 -45
  53. package/dist/cjs/src/grvt.js +17 -11
  54. package/dist/cjs/src/hashkey.js +56 -58
  55. package/dist/cjs/src/hibachi.js +1 -1
  56. package/dist/cjs/src/hitbtc.js +5 -14
  57. package/dist/cjs/src/hollaex.js +51 -54
  58. package/dist/cjs/src/htx.js +84 -72
  59. package/dist/cjs/src/hyperliquid.js +60 -55
  60. package/dist/cjs/src/indodax.js +4 -3
  61. package/dist/cjs/src/kraken.js +71 -71
  62. package/dist/cjs/src/krakenfutures.js +2 -1
  63. package/dist/cjs/src/kucoin.js +3 -2
  64. package/dist/cjs/src/latoken.js +30 -32
  65. package/dist/cjs/src/lbank.js +64 -60
  66. package/dist/cjs/src/lighter.js +36 -38
  67. package/dist/cjs/src/luno.js +36 -44
  68. package/dist/cjs/src/mercado.js +2 -1
  69. package/dist/cjs/src/mexc.js +72 -63
  70. package/dist/cjs/src/modetrade.js +51 -53
  71. package/dist/cjs/src/ndax.js +35 -37
  72. package/dist/cjs/src/okx.js +23 -5
  73. package/dist/cjs/src/onetrading.js +21 -23
  74. package/dist/cjs/src/p2b.js +8 -4
  75. package/dist/cjs/src/paradex.js +3 -2
  76. package/dist/cjs/src/phemex.js +47 -47
  77. package/dist/cjs/src/poloniex.js +19 -13
  78. package/dist/cjs/src/pro/alpaca.js +1 -1
  79. package/dist/cjs/src/pro/apex.js +11 -2
  80. package/dist/cjs/src/pro/arkham.js +1 -1
  81. package/dist/cjs/src/pro/aster.js +10 -9
  82. package/dist/cjs/src/pro/backpack.js +1 -1
  83. package/dist/cjs/src/pro/binance.js +6 -6
  84. package/dist/cjs/src/pro/bingx.js +7 -2
  85. package/dist/cjs/src/pro/bitget.js +1 -1
  86. package/dist/cjs/src/pro/bithumb.js +1 -1
  87. package/dist/cjs/src/pro/bitmart.js +10 -0
  88. package/dist/cjs/src/pro/bitmex.js +1 -1
  89. package/dist/cjs/src/pro/bitstamp.js +1 -1
  90. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  91. package/dist/cjs/src/pro/bybit.js +1 -1
  92. package/dist/cjs/src/pro/cex.js +1 -1
  93. package/dist/cjs/src/pro/coinex.js +1 -1
  94. package/dist/cjs/src/pro/coinone.js +1 -1
  95. package/dist/cjs/src/pro/cryptocom.js +3 -1
  96. package/dist/cjs/src/pro/dydx.js +1 -1
  97. package/dist/cjs/src/pro/exmo.js +1 -1
  98. package/dist/cjs/src/pro/extended.js +865 -0
  99. package/dist/cjs/src/pro/gate.js +1 -1
  100. package/dist/cjs/src/pro/grvt.js +8 -0
  101. package/dist/cjs/src/pro/htx.js +4 -4
  102. package/dist/cjs/src/pro/independentreserve.js +1 -1
  103. package/dist/cjs/src/pro/krakenfutures.js +16 -4
  104. package/dist/cjs/src/pro/kucoin.js +1 -1
  105. package/dist/cjs/src/pro/luno.js +3 -3
  106. package/dist/cjs/src/pro/modetrade.js +3 -3
  107. package/dist/cjs/src/pro/okx.js +4 -4
  108. package/dist/cjs/src/pro/onetrading.js +1 -1
  109. package/dist/cjs/src/pro/toobit.js +1 -1
  110. package/dist/cjs/src/pro/weex.js +1 -1
  111. package/dist/cjs/src/pro/woo.js +4 -4
  112. package/dist/cjs/src/pro/woofipro.js +3 -3
  113. package/dist/cjs/src/pro/xt.js +1 -1
  114. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +7 -7
  115. package/dist/cjs/src/tokocrypto.js +1 -1
  116. package/dist/cjs/src/toobit.js +3 -3
  117. package/dist/cjs/src/upbit.js +3 -3
  118. package/dist/cjs/src/weex.js +57 -62
  119. package/dist/cjs/src/whitebit.js +61 -63
  120. package/dist/cjs/src/woo.js +66 -55
  121. package/dist/cjs/src/woofipro.js +54 -48
  122. package/dist/cjs/src/xt.js +3 -2
  123. package/dist/cjs/src/yobit.js +4 -2
  124. package/dist/cjs/src/zebpay.js +73 -75
  125. package/js/ccxt.d.ts +8 -14
  126. package/js/ccxt.js +6 -10
  127. package/js/src/abstract/bitvavo.d.ts +15 -7
  128. package/js/src/abstract/extended.d.ts +58 -0
  129. package/js/src/abstract/mexc.d.ts +1 -0
  130. package/js/src/aftermath.js +10 -5
  131. package/js/src/alpaca.js +2 -2
  132. package/js/src/apex.d.ts +1 -1
  133. package/js/src/apex.js +26 -17
  134. package/js/src/arkham.js +10 -7
  135. package/js/src/ascendex.js +8 -5
  136. package/js/src/aster.js +7 -4
  137. package/js/src/backpack.js +4 -4
  138. package/js/src/base/Exchange.d.ts +10 -6
  139. package/js/src/base/Exchange.js +72 -35
  140. package/js/src/base/functions/io.d.ts +7 -0
  141. package/js/src/base/functions/io.js +24 -0
  142. package/js/src/bigone.js +10 -7
  143. package/js/src/binance.d.ts +2 -0
  144. package/js/src/binance.js +200 -202
  145. package/js/src/bingx.js +7 -7
  146. package/js/src/bitfinex.d.ts +2 -0
  147. package/js/src/bitfinex.js +71 -58
  148. package/js/src/bitflyer.js +2 -1
  149. package/js/src/bitget.js +16 -5
  150. package/js/src/bitmart.js +18 -10
  151. package/js/src/bitmex.js +8 -5
  152. package/js/src/bitopro.js +2 -2
  153. package/js/src/bitrue.js +4 -3
  154. package/js/src/bitso.js +7 -4
  155. package/js/src/bitstamp.js +7 -4
  156. package/js/src/bitteam.js +1 -1
  157. package/js/src/bittrade.js +2 -2
  158. package/js/src/bitvavo.d.ts +114 -21
  159. package/js/src/bitvavo.js +457 -34
  160. package/js/src/blofin.d.ts +1 -0
  161. package/js/src/blofin.js +28 -4
  162. package/js/src/bullish.js +6 -5
  163. package/js/src/bybit.d.ts +1 -1
  164. package/js/src/bybit.js +19 -17
  165. package/js/src/bybiteu.js +1 -0
  166. package/js/src/bydfi.js +1 -1
  167. package/js/src/cex.js +3 -3
  168. package/js/src/coinbase.d.ts +63 -56
  169. package/js/src/coinbase.js +75 -65
  170. package/js/src/coinbaseexchange.js +4 -3
  171. package/js/src/coinbaseinternational.d.ts +1 -1
  172. package/js/src/coinbaseinternational.js +17 -10
  173. package/js/src/coinex.d.ts +2 -1
  174. package/js/src/coinex.js +79 -77
  175. package/js/src/coinmetro.d.ts +1 -1
  176. package/js/src/coinmetro.js +1 -1
  177. package/js/src/coinsph.js +5 -5
  178. package/js/src/cryptocom.d.ts +1 -0
  179. package/js/src/cryptocom.js +52 -54
  180. package/js/src/cryptomus.d.ts +2 -1
  181. package/js/src/cryptomus.js +43 -39
  182. package/js/src/deepcoin.js +9 -5
  183. package/js/src/delta.d.ts +1 -0
  184. package/js/src/delta.js +53 -53
  185. package/js/src/deribit.d.ts +1 -0
  186. package/js/src/deribit.js +35 -35
  187. package/js/src/derive.d.ts +1 -0
  188. package/js/src/derive.js +31 -31
  189. package/js/src/digifinex.d.ts +1 -0
  190. package/js/src/digifinex.js +45 -45
  191. package/js/src/exmo.d.ts +1 -0
  192. package/js/src/exmo.js +104 -122
  193. package/js/src/extended.d.ts +554 -0
  194. package/js/src/extended.js +3490 -0
  195. package/js/src/foxbit.d.ts +1 -0
  196. package/js/src/foxbit.js +72 -76
  197. package/js/src/gate.d.ts +1 -0
  198. package/js/src/gate.js +53 -53
  199. package/js/src/gemini.d.ts +2 -1
  200. package/js/src/gemini.js +45 -45
  201. package/js/src/grvt.d.ts +1 -1
  202. package/js/src/grvt.js +17 -11
  203. package/js/src/hashkey.d.ts +1 -0
  204. package/js/src/hashkey.js +56 -58
  205. package/js/src/hibachi.d.ts +1 -1
  206. package/js/src/hibachi.js +1 -1
  207. package/js/src/hitbtc.d.ts +0 -1
  208. package/js/src/hitbtc.js +5 -14
  209. package/js/src/hollaex.d.ts +1 -0
  210. package/js/src/hollaex.js +51 -54
  211. package/js/src/htx.d.ts +1 -0
  212. package/js/src/htx.js +84 -72
  213. package/js/src/hyperliquid.d.ts +5 -4
  214. package/js/src/hyperliquid.js +60 -55
  215. package/js/src/indodax.js +4 -3
  216. package/js/src/kraken.d.ts +2 -1
  217. package/js/src/kraken.js +71 -71
  218. package/js/src/krakenfutures.js +2 -1
  219. package/js/src/kucoin.js +3 -2
  220. package/js/src/latoken.d.ts +1 -0
  221. package/js/src/latoken.js +30 -32
  222. package/js/src/lbank.d.ts +1 -0
  223. package/js/src/lbank.js +64 -60
  224. package/js/src/lighter.d.ts +2 -1
  225. package/js/src/lighter.js +36 -38
  226. package/js/src/luno.d.ts +1 -0
  227. package/js/src/luno.js +36 -44
  228. package/js/src/mercado.js +2 -1
  229. package/js/src/mexc.d.ts +4 -3
  230. package/js/src/mexc.js +72 -63
  231. package/js/src/modetrade.d.ts +1 -0
  232. package/js/src/modetrade.js +51 -53
  233. package/js/src/ndax.d.ts +1 -0
  234. package/js/src/ndax.js +35 -37
  235. package/js/src/okx.js +23 -5
  236. package/js/src/onetrading.d.ts +2 -1
  237. package/js/src/onetrading.js +21 -23
  238. package/js/src/p2b.js +8 -4
  239. package/js/src/paradex.js +3 -2
  240. package/js/src/phemex.d.ts +1 -0
  241. package/js/src/phemex.js +47 -47
  242. package/js/src/poloniex.js +19 -13
  243. package/js/src/pro/alpaca.js +1 -1
  244. package/js/src/pro/apex.js +11 -2
  245. package/js/src/pro/arkham.js +1 -1
  246. package/js/src/pro/aster.js +10 -9
  247. package/js/src/pro/backpack.js +1 -1
  248. package/js/src/pro/binance.d.ts +1 -1
  249. package/js/src/pro/binance.js +6 -6
  250. package/js/src/pro/bingx.js +7 -2
  251. package/js/src/pro/bitget.js +1 -1
  252. package/js/src/pro/bithumb.js +1 -1
  253. package/js/src/pro/bitmart.js +10 -0
  254. package/js/src/pro/bitmex.js +1 -1
  255. package/js/src/pro/bitstamp.js +1 -1
  256. package/js/src/pro/blockchaincom.js +1 -1
  257. package/js/src/pro/bybit.js +1 -1
  258. package/js/src/pro/cex.js +1 -1
  259. package/js/src/pro/coinex.js +1 -1
  260. package/js/src/pro/coinone.js +1 -1
  261. package/js/src/pro/cryptocom.js +3 -1
  262. package/js/src/pro/dydx.js +1 -1
  263. package/js/src/pro/exmo.js +1 -1
  264. package/js/src/pro/extended.d.ts +126 -0
  265. package/js/src/pro/extended.js +858 -0
  266. package/js/src/pro/gate.js +1 -1
  267. package/js/src/pro/grvt.js +8 -0
  268. package/js/src/pro/htx.d.ts +4 -4
  269. package/js/src/pro/htx.js +4 -4
  270. package/js/src/pro/independentreserve.js +1 -1
  271. package/js/src/pro/krakenfutures.d.ts +4 -4
  272. package/js/src/pro/krakenfutures.js +16 -4
  273. package/js/src/pro/kucoin.js +1 -1
  274. package/js/src/pro/luno.d.ts +1 -1
  275. package/js/src/pro/luno.js +3 -3
  276. package/js/src/pro/modetrade.d.ts +3 -3
  277. package/js/src/pro/modetrade.js +3 -3
  278. package/js/src/pro/okx.d.ts +4 -4
  279. package/js/src/pro/okx.js +4 -4
  280. package/js/src/pro/onetrading.js +1 -1
  281. package/js/src/pro/toobit.js +1 -1
  282. package/js/src/pro/weex.js +1 -1
  283. package/js/src/pro/woo.d.ts +4 -4
  284. package/js/src/pro/woo.js +4 -4
  285. package/js/src/pro/woofipro.d.ts +3 -3
  286. package/js/src/pro/woofipro.js +3 -3
  287. package/js/src/pro/xt.js +1 -1
  288. package/js/src/tokocrypto.js +1 -1
  289. package/js/src/toobit.d.ts +1 -1
  290. package/js/src/toobit.js +3 -3
  291. package/js/src/upbit.js +3 -3
  292. package/js/src/weex.d.ts +1 -0
  293. package/js/src/weex.js +57 -62
  294. package/js/src/whitebit.d.ts +1 -0
  295. package/js/src/whitebit.js +61 -63
  296. package/js/src/woo.d.ts +1 -0
  297. package/js/src/woo.js +66 -55
  298. package/js/src/woofipro.d.ts +1 -0
  299. package/js/src/woofipro.js +54 -48
  300. package/js/src/xt.js +3 -2
  301. package/js/src/yobit.js +4 -2
  302. package/js/src/zebpay.d.ts +2 -1
  303. package/js/src/zebpay.js +73 -75
  304. package/package.json +25 -11
  305. package/dist/cjs/src/gateio.js +0 -18
  306. package/dist/cjs/src/oxfun.js +0 -2931
  307. package/dist/cjs/src/pro/gateio.js +0 -18
  308. package/dist/cjs/src/pro/oxfun.js +0 -1113
  309. package/js/src/abstract/gateio.d.ts +0 -346
  310. package/js/src/abstract/gateio.js +0 -5
  311. package/js/src/abstract/oxfun.d.ts +0 -37
  312. package/js/src/gateio.d.ts +0 -4
  313. package/js/src/gateio.js +0 -11
  314. package/js/src/oxfun.d.ts +0 -442
  315. package/js/src/oxfun.js +0 -2924
  316. package/js/src/pro/gateio.d.ts +0 -4
  317. package/js/src/pro/gateio.js +0 -11
  318. package/js/src/pro/oxfun.d.ts +0 -234
  319. package/js/src/pro/oxfun.js +0 -1106
  320. /package/dist/cjs/src/abstract/{oxfun.js → extended.js} +0 -0
  321. /package/js/src/abstract/{oxfun.js → extended.js} +0 -0
@@ -513,6 +513,8 @@ class deepcoin extends deepcoin$1["default"] {
513
513
  const maxLimitSize = this.safeString(market, 'maxLmtSz');
514
514
  const maxAmount = this.parseNumber(Precise["default"].stringMax(maxMarketSize, maxLimitSize));
515
515
  const state = this.safeString(market, 'state');
516
+ const isMargin = spot && (Precise["default"].stringGt(maxLeverage, '1'));
517
+ const isInverse = swap ? (!isLinear) : undefined;
516
518
  return this.extend(fees, {
517
519
  'id': id,
518
520
  'symbol': symbol,
@@ -524,14 +526,14 @@ class deepcoin extends deepcoin$1["default"] {
524
526
  'settleId': settleId,
525
527
  'type': type,
526
528
  'spot': spot,
527
- 'margin': spot && (Precise["default"].stringGt(maxLeverage, '1')),
529
+ 'margin': isMargin,
528
530
  'swap': swap,
529
531
  'future': false,
530
532
  'option': false,
531
533
  'active': state === 'live',
532
534
  'contract': swap,
533
535
  'linear': isLinear,
534
- 'inverse': swap ? (!isLinear) : undefined,
536
+ 'inverse': isInverse,
535
537
  'contractSize': swap ? this.safeNumber(market, 'ctVal') : undefined,
536
538
  'expiry': undefined,
537
539
  'expiryDatetime': undefined,
@@ -1064,7 +1066,7 @@ class deepcoin extends deepcoin$1["default"] {
1064
1066
  const amount = this.safeNumber(transaction, 'amount');
1065
1067
  const timestamp = this.safeTimestamp(transaction, 'createTime');
1066
1068
  const networkId = this.safeString(transaction, 'chainName');
1067
- const network = this.networkIdToCode(networkId);
1069
+ const network = this.networkIdToCode(networkId, code);
1068
1070
  const status = this.parseTransactionStatus(this.safeString(transaction, 'status'));
1069
1071
  return {
1070
1072
  'info': transaction,
@@ -1211,10 +1213,11 @@ class deepcoin extends deepcoin$1["default"] {
1211
1213
  const chain = this.safeString(response, 'chain');
1212
1214
  const address = this.safeString(response, 'address');
1213
1215
  this.checkAddress(address);
1216
+ const code = this.safeString(currency, 'code');
1214
1217
  return {
1215
1218
  'info': response,
1216
1219
  'currency': undefined,
1217
- 'network': this.networkIdToCode(chain),
1220
+ 'network': this.networkIdToCode(chain, code),
1218
1221
  'address': address,
1219
1222
  'tag': this.safeString(response, 'memo'),
1220
1223
  };
@@ -2192,11 +2195,12 @@ class deepcoin extends deepcoin$1["default"] {
2192
2195
  }
2193
2196
  let merged = true;
2194
2197
  [merged, params] = this.handleOptionAndParams(params, 'cancelAllOrders', 'merged', merged);
2198
+ const isMergedMode = merged ? 1 : 0;
2195
2199
  const request = {
2196
2200
  'InstrumentID': market['id'],
2197
2201
  'ProductGroup': productGroup,
2198
2202
  'IsCrossMargin': encodedMarginMode,
2199
- 'IsMergeMode': merged ? 1 : 0,
2203
+ 'IsMergeMode': isMergedMode,
2200
2204
  };
2201
2205
  const response = await this.privatePostDeepcoinTradeSwapCancelAll(this.extend(request, params));
2202
2206
  const data = this.safeList(response, 'data', []);
@@ -365,6 +365,7 @@ class delta extends delta$1["default"] {
365
365
  const strike = this.safeString(optionParts, 2);
366
366
  const datetime = this.convertExpireDate(expiry);
367
367
  const timestamp = this.parse8601(datetime);
368
+ const optionTypeUnified = (optionType === 'C') ? 'call' : 'put';
368
369
  return {
369
370
  'id': optionType + '-' + base + '-' + strike + '-' + expiry,
370
371
  'symbol': base + '/' + quote + ':' + settle + '-' + expiry + '-' + strike + '-' + optionType,
@@ -387,7 +388,7 @@ class delta extends delta$1["default"] {
387
388
  'contractSize': this.parseNumber('1'),
388
389
  'expiry': timestamp,
389
390
  'expiryDatetime': datetime,
390
- 'optionType': (optionType === 'C') ? 'call' : 'put',
391
+ 'optionType': optionTypeUnified,
391
392
  'strike': this.parseNumber(strike),
392
393
  'precision': {
393
394
  'amount': undefined,
@@ -564,62 +565,60 @@ class delta extends delta$1["default"] {
564
565
  // }
565
566
  //
566
567
  const currencies = this.safeList(response, 'result', []);
567
- const result = {};
568
- for (let i = 0; i < currencies.length; i++) {
569
- const currency = currencies[i];
570
- const id = this.safeString(currency, 'symbol');
571
- const numericId = this.safeInteger(currency, 'id');
572
- const code = this.safeCurrencyCode(id);
573
- const chains = this.safeList(currency, 'networks', []);
574
- const networks = {};
575
- for (let j = 0; j < chains.length; j++) {
576
- const chain = chains[j];
577
- const networkId = this.safeString(chain, 'network');
578
- const networkCode = this.networkIdToCode(networkId);
579
- networks[networkCode] = {
580
- 'id': networkId,
581
- 'network': networkCode,
582
- 'name': this.safeString(chain, 'name'),
583
- 'info': chain,
584
- 'active': this.safeString(chain, 'status') === 'enabled',
585
- 'deposit': this.safeString(chain, 'deposit_status') === 'enabled',
586
- 'withdraw': this.safeString(chain, 'withdrawal_status') === 'enabled',
587
- 'fee': this.safeNumber(chain, 'base_withdrawal_fee'),
588
- 'limits': {
589
- 'deposit': {
590
- 'min': this.safeNumber(chain, 'min_deposit_amount'),
591
- 'max': undefined,
592
- },
593
- 'withdraw': {
594
- 'min': this.safeNumber(chain, 'min_withdrawal_amount'),
595
- 'max': undefined,
596
- },
597
- },
598
- };
599
- }
600
- result[code] = this.safeCurrencyStructure({
601
- 'id': id,
602
- 'numericId': numericId,
603
- 'code': code,
604
- 'name': this.safeString(currency, 'name'),
605
- 'info': currency,
606
- 'active': undefined,
607
- 'deposit': this.safeString(currency, 'deposit_status') === 'enabled',
608
- 'withdraw': this.safeString(currency, 'withdrawal_status') === 'enabled',
609
- 'fee': this.safeNumber(currency, 'base_withdrawal_fee'),
610
- 'precision': this.parseNumber(this.parsePrecision(this.safeString(currency, 'precision'))),
568
+ return this.parseCurrencies(currencies);
569
+ }
570
+ parseCurrency(rawCurrency) {
571
+ const id = this.safeString(rawCurrency, 'symbol');
572
+ const numericId = this.safeInteger(rawCurrency, 'id');
573
+ const code = this.safeCurrencyCode(id);
574
+ const chains = this.safeList(rawCurrency, 'networks', []);
575
+ const networks = {};
576
+ for (let j = 0; j < chains.length; j++) {
577
+ const chain = chains[j];
578
+ const networkId = this.safeString(chain, 'network');
579
+ const networkCode = this.networkIdToCode(networkId, code);
580
+ networks[networkCode] = {
581
+ 'id': networkId,
582
+ 'network': networkCode,
583
+ 'name': this.safeString(chain, 'name'),
584
+ 'info': chain,
585
+ 'active': this.safeString(chain, 'status') === 'enabled',
586
+ 'deposit': this.safeString(chain, 'deposit_status') === 'enabled',
587
+ 'withdraw': this.safeString(chain, 'withdrawal_status') === 'enabled',
588
+ 'fee': this.safeNumber(chain, 'base_withdrawal_fee'),
611
589
  'limits': {
612
- 'amount': { 'min': undefined, 'max': undefined },
590
+ 'deposit': {
591
+ 'min': this.safeNumber(chain, 'min_deposit_amount'),
592
+ 'max': undefined,
593
+ },
613
594
  'withdraw': {
614
- 'min': this.safeNumber(currency, 'min_withdrawal_amount'),
595
+ 'min': this.safeNumber(chain, 'min_withdrawal_amount'),
615
596
  'max': undefined,
616
597
  },
617
598
  },
618
- 'networks': networks,
619
- 'type': 'crypto',
620
- });
599
+ };
621
600
  }
622
- return result;
601
+ return this.safeCurrencyStructure({
602
+ 'id': id,
603
+ 'numericId': numericId,
604
+ 'code': code,
605
+ 'name': this.safeString(rawCurrency, 'name'),
606
+ 'info': rawCurrency,
607
+ 'active': undefined,
608
+ 'deposit': this.safeString(rawCurrency, 'deposit_status') === 'enabled',
609
+ 'withdraw': this.safeString(rawCurrency, 'withdrawal_status') === 'enabled',
610
+ 'fee': this.safeNumber(rawCurrency, 'base_withdrawal_fee'),
611
+ 'precision': this.parseNumber(this.parsePrecision(this.safeString(rawCurrency, 'precision'))),
612
+ 'limits': {
613
+ 'amount': { 'min': undefined, 'max': undefined },
614
+ 'withdraw': {
615
+ 'min': this.safeNumber(rawCurrency, 'min_withdrawal_amount'),
616
+ 'max': undefined,
617
+ },
618
+ },
619
+ 'networks': networks,
620
+ 'type': 'crypto',
621
+ });
623
622
  }
624
623
  async loadMarkets(reload = false, params = {}) {
625
624
  const markets = await super.loadMarkets(reload, params);
@@ -2607,11 +2606,12 @@ class delta extends delta$1["default"] {
2607
2606
  const address = this.safeString(depositAddress, 'address');
2608
2607
  const marketId = this.safeString(depositAddress, 'asset_symbol');
2609
2608
  const networkId = this.safeString(depositAddress, 'network');
2609
+ const code = this.safeCurrencyCode(marketId, currency);
2610
2610
  this.checkAddress(address);
2611
2611
  return {
2612
2612
  'info': depositAddress,
2613
- 'currency': this.safeCurrencyCode(marketId, currency),
2614
- 'network': this.networkIdToCode(networkId),
2613
+ 'currency': code,
2614
+ 'network': this.networkIdToCode(networkId, code),
2615
2615
  'address': address,
2616
2616
  'tag': this.safeString(depositAddress, 'memo'),
2617
2617
  };
@@ -531,9 +531,11 @@ class deribit extends deribit$1["default"] {
531
531
  const optionType = this.safeString(optionParts, 3);
532
532
  const datetime = this.convertExpireDate(expiry);
533
533
  const timestamp = this.parse8601(datetime);
534
+ const id = base + '-' + this.convertExpireDateToMarketIdDate(expiry) + '-' + strike + '-' + optionType;
535
+ const symbolExpired = splitBase + '/' + quote + ':' + settle + '-' + expiry + '-' + strike + '-' + optionType;
534
536
  return {
535
- 'id': base + '-' + this.convertExpireDateToMarketIdDate(expiry) + '-' + strike + '-' + optionType,
536
- 'symbol': splitBase + '/' + quote + ':' + settle + '-' + expiry + '-' + strike + '-' + optionType,
537
+ 'id': id,
538
+ 'symbol': symbolExpired,
537
539
  'base': base,
538
540
  'quote': quote,
539
541
  'settle': settle,
@@ -641,40 +643,38 @@ class deribit extends deribit$1["default"] {
641
643
  // }
642
644
  //
643
645
  const data = this.safeList(response, 'result', []);
644
- const result = {};
645
- for (let i = 0; i < data.length; i++) {
646
- const currency = data[i];
647
- const currencyId = this.safeString(currency, 'currency');
648
- const code = this.safeCurrencyCode(currencyId);
649
- result[code] = this.safeCurrencyStructure({
650
- 'info': currency,
651
- 'code': code,
652
- 'id': currencyId,
653
- 'name': this.safeString(currency, 'currency_long'),
654
- 'active': undefined,
655
- 'deposit': undefined,
656
- 'withdraw': undefined,
657
- 'type': 'crypto',
658
- 'fee': this.safeNumber(currency, 'withdrawal_fee'),
659
- 'precision': undefined,
660
- 'limits': {
661
- 'amount': {
662
- 'min': undefined,
663
- 'max': undefined,
664
- },
665
- 'withdraw': {
666
- 'min': undefined,
667
- 'max': undefined,
668
- },
669
- 'deposit': {
670
- 'min': undefined,
671
- 'max': undefined,
672
- },
646
+ return this.parseCurrencies(data);
647
+ }
648
+ parseCurrency(rawCurrency) {
649
+ const currencyId = this.safeString(rawCurrency, 'currency');
650
+ const code = this.safeCurrencyCode(currencyId);
651
+ return this.safeCurrencyStructure({
652
+ 'info': rawCurrency,
653
+ 'code': code,
654
+ 'id': currencyId,
655
+ 'name': this.safeString(rawCurrency, 'currency_long'),
656
+ 'active': undefined,
657
+ 'deposit': undefined,
658
+ 'withdraw': undefined,
659
+ 'type': 'crypto',
660
+ 'fee': this.safeNumber(rawCurrency, 'withdrawal_fee'),
661
+ 'precision': undefined,
662
+ 'limits': {
663
+ 'amount': {
664
+ 'min': undefined,
665
+ 'max': undefined,
673
666
  },
674
- 'networks': undefined,
675
- });
676
- }
677
- return result;
667
+ 'withdraw': {
668
+ 'min': undefined,
669
+ 'max': undefined,
670
+ },
671
+ 'deposit': {
672
+ 'min': undefined,
673
+ 'max': undefined,
674
+ },
675
+ },
676
+ 'networks': undefined,
677
+ });
678
678
  }
679
679
  codeFromOptions(methodName, params = {}) {
680
680
  const defaultCode = this.safeValue(this.options, 'code', 'BTC');
@@ -450,7 +450,6 @@ class derive extends derive$1["default"] {
450
450
  * @returns {object} an associative dictionary of currencies
451
451
  */
452
452
  async fetchCurrencies(params = {}) {
453
- const result = {};
454
453
  const tokenResponse = await this.publicGetGetAllCurrencies(params);
455
454
  //
456
455
  // {
@@ -501,34 +500,33 @@ class derive extends derive$1["default"] {
501
500
  // }
502
501
  //
503
502
  const currencies = this.safeList(tokenResponse, 'result', []);
504
- for (let i = 0; i < currencies.length; i++) {
505
- const currency = currencies[i];
506
- const currencyId = this.safeString(currency, 'currency');
507
- const code = this.safeCurrencyCode(currencyId);
508
- result[code] = this.safeCurrencyStructure({
509
- 'id': currencyId,
510
- 'name': undefined,
511
- 'code': code,
512
- 'precision': undefined,
513
- 'active': undefined,
514
- 'fee': undefined,
515
- 'networks': undefined,
516
- 'deposit': undefined,
517
- 'withdraw': undefined,
518
- 'limits': {
519
- 'deposit': {
520
- 'min': undefined,
521
- 'max': undefined,
522
- },
523
- 'withdraw': {
524
- 'min': undefined,
525
- 'max': undefined,
526
- },
503
+ return this.parseCurrencies(currencies);
504
+ }
505
+ parseCurrency(rawCurrency) {
506
+ const currencyId = this.safeString(rawCurrency, 'currency');
507
+ const code = this.safeCurrencyCode(currencyId);
508
+ return this.safeCurrencyStructure({
509
+ 'id': currencyId,
510
+ 'name': undefined,
511
+ 'code': code,
512
+ 'precision': undefined,
513
+ 'active': undefined,
514
+ 'fee': undefined,
515
+ 'networks': undefined,
516
+ 'deposit': undefined,
517
+ 'withdraw': undefined,
518
+ 'limits': {
519
+ 'deposit': {
520
+ 'min': undefined,
521
+ 'max': undefined,
527
522
  },
528
- 'info': currency,
529
- });
530
- }
531
- return result;
523
+ 'withdraw': {
524
+ 'min': undefined,
525
+ 'max': undefined,
526
+ },
527
+ },
528
+ 'info': rawCurrency,
529
+ });
532
530
  }
533
531
  /**
534
532
  * @method
@@ -677,6 +675,8 @@ class derive extends derive$1["default"] {
677
675
  linear = true;
678
676
  inverse = false;
679
677
  }
678
+ const contractSize = (spot) ? undefined : 1;
679
+ const isContract = (swap || option);
680
680
  return this.safeMarketStructure({
681
681
  'id': marketId,
682
682
  'symbol': symbol,
@@ -693,10 +693,10 @@ class derive extends derive$1["default"] {
693
693
  'future': false,
694
694
  'option': option,
695
695
  'active': this.safeBool(market, 'is_active'),
696
- 'contract': (swap || option),
696
+ 'contract': isContract,
697
697
  'linear': linear,
698
698
  'inverse': inverse,
699
- 'contractSize': (spot) ? undefined : 1,
699
+ 'contractSize': contractSize,
700
700
  'expiry': expiry,
701
701
  'expiryDatetime': this.iso8601(expiry),
702
702
  'taker': this.safeNumber(market, 'taker_fee_rate'),
@@ -1822,7 +1822,7 @@ class derive extends derive$1["default"] {
1822
1822
  'gtc': 'GTC',
1823
1823
  'post_only': 'PO',
1824
1824
  };
1825
- return this.safeString(timeInForces, timeInForce, undefined);
1825
+ return this.safeString(timeInForces, timeInForce);
1826
1826
  }
1827
1827
  parseOrderStatus(status) {
1828
1828
  if (status !== undefined) {
@@ -414,7 +414,7 @@ class digifinex extends digifinex$1["default"] {
414
414
  'OTC': '3',
415
415
  },
416
416
  'networks': {
417
- 'ARBITRUM': 'Arbitrum',
417
+ 'ARBONE': 'Arbitrum',
418
418
  'AVALANCEC': 'AVAX-CCHAIN',
419
419
  'AVALANCEX': 'AVAX-XCHAIN',
420
420
  'BEP20': 'BEP20',
@@ -431,20 +431,19 @@ class digifinex extends digifinex$1["default"] {
431
431
  'ETHW': 'ETHW',
432
432
  'IOTA': 'MIOTA',
433
433
  'KLAYTN': 'KLAY',
434
- 'MATIC': 'Polygon',
435
434
  'METIS': 'MetisDAO',
436
435
  'MOONBEAM': 'GLMR',
437
436
  'MOONRIVER': 'Moonriver',
438
437
  'OPTIMISM': 'OPETH',
439
438
  'POLYGON': 'Polygon',
439
+ 'MATIC': 'Polygon',
440
440
  'RIPPLE': 'XRP',
441
- 'SOLANA': 'SOL',
442
- 'STELLAR': 'Stella',
441
+ 'SOL': 'SOL',
442
+ 'XLM': 'Stella',
443
443
  'TERRACLASSIC': 'TerraClassic',
444
444
  'TERRA': 'Terra',
445
445
  'TON': 'Ton',
446
446
  'TRC20': 'TRC20',
447
- 'TRON': 'TRC20',
448
447
  'TRX': 'TRC20',
449
448
  'VECHAIN': 'Vechain', // VET
450
449
  },
@@ -519,46 +518,46 @@ class digifinex extends digifinex$1["default"] {
519
518
  //
520
519
  const data = this.safeList(response, 'data', []);
521
520
  const groupedById = this.groupBy(data, 'currency');
522
- const keys = Object.keys(groupedById);
523
- const result = {};
524
- for (let i = 0; i < keys.length; i++) {
525
- const id = keys[i];
526
- const networkEntries = groupedById[id];
527
- const code = this.safeCurrencyCode(id);
528
- const networks = {};
529
- for (let j = 0; j < networkEntries.length; j++) {
530
- const networkEntry = networkEntries[j];
531
- const networkId = this.safeString2(networkEntry, 'chain', 'currency');
532
- const networkCode = this.networkIdToCode(networkId);
533
- networks[networkCode] = {
534
- 'id': networkId,
535
- 'network': networkCode,
536
- 'active': undefined,
537
- 'deposit': this.safeInteger(networkEntry, 'deposit_status') === 1,
538
- 'withdraw': this.safeInteger(networkEntry, 'withdraw_status') === 1,
539
- 'fee': this.safeNumber(networkEntry, 'min_withdraw_fee'),
540
- 'precision': undefined,
541
- 'limits': {
542
- 'withdraw': {
543
- 'min': this.safeNumber(networkEntry, 'min_withdraw_amount'),
544
- 'max': undefined,
545
- },
546
- 'deposit': {
547
- 'min': this.safeNumber(networkEntry, 'min_deposit_amount'),
548
- 'max': undefined,
549
- },
521
+ const values = Object.values(groupedById);
522
+ return this.parseCurrencies(values);
523
+ }
524
+ parseCurrency(rawCurrency) {
525
+ const networkEntries = rawCurrency;
526
+ const firstEntry = this.safeDict(networkEntries, 0, {}); // it must have at least one entry
527
+ const id = this.safeString(firstEntry, 'currency');
528
+ const code = this.safeCurrencyCode(id);
529
+ const networks = {};
530
+ for (let j = 0; j < networkEntries.length; j++) {
531
+ const networkEntry = networkEntries[j];
532
+ const networkId = this.safeString2(networkEntry, 'chain', 'currency');
533
+ const networkCode = this.networkIdToCode(networkId, code);
534
+ networks[networkCode] = {
535
+ 'id': networkId,
536
+ 'network': networkCode,
537
+ 'active': undefined,
538
+ 'deposit': this.safeInteger(networkEntry, 'deposit_status') === 1,
539
+ 'withdraw': this.safeInteger(networkEntry, 'withdraw_status') === 1,
540
+ 'fee': this.safeNumber(networkEntry, 'min_withdraw_fee'),
541
+ 'precision': undefined,
542
+ 'limits': {
543
+ 'withdraw': {
544
+ 'min': this.safeNumber(networkEntry, 'min_withdraw_amount'),
545
+ 'max': undefined,
550
546
  },
551
- 'info': networkEntry,
552
- };
553
- }
554
- result[code] = this.safeCurrencyStructure({
555
- 'id': id,
556
- 'code': code,
557
- 'info': networkEntries,
558
- 'networks': networks,
559
- });
547
+ 'deposit': {
548
+ 'min': this.safeNumber(networkEntry, 'min_deposit_amount'),
549
+ 'max': undefined,
550
+ },
551
+ },
552
+ 'info': networkEntry,
553
+ };
560
554
  }
561
- return result;
555
+ return this.safeCurrencyStructure({
556
+ 'id': id,
557
+ 'code': code,
558
+ 'info': networkEntries,
559
+ 'networks': networks,
560
+ });
562
561
  }
563
562
  /**
564
563
  * @method
@@ -682,6 +681,7 @@ class digifinex extends digifinex$1["default"] {
682
681
  isAllowed = 1;
683
682
  }
684
683
  }
684
+ const isActive = isAllowed ? true : false;
685
685
  result.push({
686
686
  'id': id,
687
687
  'symbol': symbol,
@@ -697,7 +697,7 @@ class digifinex extends digifinex$1["default"] {
697
697
  'swap': swap,
698
698
  'future': false,
699
699
  'option': false,
700
- 'active': isAllowed ? true : false,
700
+ 'active': isActive,
701
701
  'contract': swap,
702
702
  'linear': isLinear,
703
703
  'inverse': isInverse,
@@ -4175,7 +4175,7 @@ class digifinex extends digifinex$1["default"] {
4175
4175
  'percentage': undefined,
4176
4176
  };
4177
4177
  if (networkId !== undefined) {
4178
- const networkCode = this.networkIdToCode(networkId);
4178
+ const networkCode = this.networkIdToCode(networkId, code);
4179
4179
  depositWithdrawFees[code]['networks'][networkCode] = {
4180
4180
  'withdraw': withdrawResult,
4181
4181
  'deposit': depositResult,