ccxt 4.3.69 → 4.3.71

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 (187) hide show
  1. package/README.md +7 -6
  2. package/dist/ccxt.browser.min.js +13 -10
  3. package/dist/cjs/ccxt.js +8 -1
  4. package/dist/cjs/src/abstract/paradex.js +9 -0
  5. package/dist/cjs/src/ascendex.js +1 -1
  6. package/dist/cjs/src/base/Exchange.js +55 -0
  7. package/dist/cjs/src/binance.js +1 -1
  8. package/dist/cjs/src/blofin.js +63 -6
  9. package/dist/cjs/src/bybit.js +1 -1
  10. package/dist/cjs/src/coinbaseinternational.js +168 -2
  11. package/dist/cjs/src/cryptocom.js +9 -1
  12. package/dist/cjs/src/hitbtc.js +1 -1
  13. package/dist/cjs/src/paradex.js +2075 -0
  14. package/dist/cjs/src/poloniex.js +1 -0
  15. package/dist/cjs/src/pro/bequant.js +4 -0
  16. package/dist/cjs/src/pro/blofin.js +665 -0
  17. package/dist/cjs/src/pro/coinbaseinternational.js +154 -9
  18. package/dist/cjs/src/pro/cryptocom.js +3 -1
  19. package/dist/cjs/src/pro/hitbtc.js +26 -8
  20. package/dist/cjs/src/pro/okx.js +7 -0
  21. package/dist/cjs/src/pro/paradex.js +365 -0
  22. package/dist/cjs/src/pro/poloniex.js +37 -12
  23. package/dist/cjs/src/pro/woo.js +5 -4
  24. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +100 -0
  25. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -0
  26. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +284 -0
  27. package/dist/cjs/src/static_dependencies/starknet/constants.js +60 -0
  28. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +26 -0
  29. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +8 -0
  30. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +13 -0
  31. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +56 -0
  32. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +19 -0
  33. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +15 -0
  34. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +44 -0
  35. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +122 -0
  36. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +137 -0
  37. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +61 -0
  38. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +218 -0
  39. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
  40. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
  41. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
  42. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +66 -0
  43. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +281 -0
  44. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +33 -0
  45. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +37 -0
  46. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
  47. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +156 -0
  48. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +250 -0
  49. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +215 -0
  50. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +112 -0
  51. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +206 -0
  52. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +58 -0
  53. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +57 -0
  54. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +76 -0
  55. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +92 -0
  56. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +48 -0
  57. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +101 -0
  58. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +334 -0
  59. package/dist/cjs/src/woo.js +4 -2
  60. package/js/ccxt.d.ts +11 -2
  61. package/js/ccxt.js +8 -2
  62. package/js/src/abstract/coinbaseinternational.d.ts +1 -1
  63. package/js/src/abstract/paradex.d.ts +43 -0
  64. package/js/src/abstract/paradex.js +11 -0
  65. package/js/src/ascendex.js +1 -1
  66. package/js/src/base/Exchange.d.ts +8 -0
  67. package/js/src/base/Exchange.js +51 -0
  68. package/js/src/binance.js +1 -1
  69. package/js/src/blofin.d.ts +1 -1
  70. package/js/src/blofin.js +63 -6
  71. package/js/src/bybit.js +1 -1
  72. package/js/src/coinbaseinternational.d.ts +6 -1
  73. package/js/src/coinbaseinternational.js +168 -2
  74. package/js/src/cryptocom.js +10 -2
  75. package/js/src/hitbtc.js +1 -1
  76. package/js/src/paradex.d.ts +76 -0
  77. package/js/src/paradex.js +2075 -0
  78. package/js/src/poloniex.js +1 -0
  79. package/js/src/pro/bequant.js +4 -0
  80. package/js/src/pro/blofin.d.ts +39 -0
  81. package/js/src/pro/blofin.js +668 -0
  82. package/js/src/pro/coinbaseinternational.d.ts +5 -1
  83. package/js/src/pro/coinbaseinternational.js +155 -10
  84. package/js/src/pro/cryptocom.js +4 -2
  85. package/js/src/pro/hitbtc.d.ts +1 -1
  86. package/js/src/pro/hitbtc.js +26 -8
  87. package/js/src/pro/okx.js +7 -0
  88. package/js/src/pro/paradex.d.ts +15 -0
  89. package/js/src/pro/paradex.js +366 -0
  90. package/js/src/pro/poloniex.js +37 -12
  91. package/js/src/pro/woo.js +5 -4
  92. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +24 -0
  93. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  94. package/js/src/static_dependencies/scure-starknet/index.d.ts +79 -0
  95. package/js/src/static_dependencies/scure-starknet/index.js +323 -0
  96. package/js/src/static_dependencies/starknet/constants.d.ts +61 -0
  97. package/js/src/static_dependencies/starknet/constants.js +67 -0
  98. package/js/src/static_dependencies/starknet/index.d.ts +7 -0
  99. package/js/src/static_dependencies/starknet/index.js +50 -0
  100. package/js/src/static_dependencies/starknet/types/cairoEnum.d.ts +2 -0
  101. package/js/src/static_dependencies/starknet/types/cairoEnum.js +7 -0
  102. package/js/src/static_dependencies/starknet/types/calldata.d.ts +19 -0
  103. package/js/src/static_dependencies/starknet/types/calldata.js +28 -0
  104. package/js/src/static_dependencies/starknet/types/index.d.ts +13 -0
  105. package/js/src/static_dependencies/starknet/types/index.js +16 -0
  106. package/js/src/static_dependencies/starknet/types/lib/contract/abi.d.ts +71 -0
  107. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +13 -0
  108. package/js/src/static_dependencies/starknet/types/lib/contract/index.d.ts +24 -0
  109. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +16 -0
  110. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.d.ts +33 -0
  111. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +7 -0
  112. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.d.ts +52 -0
  113. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +7 -0
  114. package/js/src/static_dependencies/starknet/types/lib/index.d.ts +248 -0
  115. package/js/src/static_dependencies/starknet/types/lib/index.js +52 -0
  116. package/js/src/static_dependencies/starknet/types/typedData.d.ts +44 -0
  117. package/js/src/static_dependencies/starknet/types/typedData.js +19 -0
  118. package/js/src/static_dependencies/starknet/utils/address.d.ts +53 -0
  119. package/js/src/static_dependencies/starknet/utils/address.js +89 -0
  120. package/js/src/static_dependencies/starknet/utils/assert.d.ts +7 -0
  121. package/js/src/static_dependencies/starknet/utils/assert.js +17 -0
  122. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.d.ts +6 -0
  123. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +43 -0
  124. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.d.ts +72 -0
  125. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +117 -0
  126. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.d.ts +76 -0
  127. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +136 -0
  128. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.d.ts +32 -0
  129. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +59 -0
  130. package/js/src/static_dependencies/starknet/utils/calldata/cairo.d.ts +183 -0
  131. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +229 -0
  132. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
  133. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
  134. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.d.ts +35 -0
  135. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
  136. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.d.ts +34 -0
  137. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
  138. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.d.ts +3 -0
  139. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +9 -0
  140. package/js/src/static_dependencies/starknet/utils/calldata/formatter.d.ts +9 -0
  141. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +67 -0
  142. package/js/src/static_dependencies/starknet/utils/calldata/index.d.ts +89 -0
  143. package/js/src/static_dependencies/starknet/utils/calldata/index.js +280 -0
  144. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +5 -0
  145. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +30 -0
  146. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.d.ts +20 -0
  147. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +8 -0
  148. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
  149. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +36 -0
  150. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
  151. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
  152. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.d.ts +2 -0
  153. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +155 -0
  154. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.d.ts +11 -0
  155. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +248 -0
  156. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.d.ts +11 -0
  157. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +214 -0
  158. package/js/src/static_dependencies/starknet/utils/calldata/tuple.d.ts +6 -0
  159. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +113 -0
  160. package/js/src/static_dependencies/starknet/utils/calldata/validate.d.ts +6 -0
  161. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +208 -0
  162. package/js/src/static_dependencies/starknet/utils/encode.d.ts +207 -0
  163. package/js/src/static_dependencies/starknet/utils/encode.js +282 -0
  164. package/js/src/static_dependencies/starknet/utils/hash/classHash.d.ts +57 -0
  165. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +224 -0
  166. package/js/src/static_dependencies/starknet/utils/hash/index.d.ts +6 -0
  167. package/js/src/static_dependencies/starknet/utils/hash/index.js +13 -0
  168. package/js/src/static_dependencies/starknet/utils/json.d.ts +24 -0
  169. package/js/src/static_dependencies/starknet/utils/json.js +43 -0
  170. package/js/src/static_dependencies/starknet/utils/merkle.d.ts +35 -0
  171. package/js/src/static_dependencies/starknet/utils/merkle.js +84 -0
  172. package/js/src/static_dependencies/starknet/utils/num.d.ts +182 -0
  173. package/js/src/static_dependencies/starknet/utils/num.js +244 -0
  174. package/js/src/static_dependencies/starknet/utils/selector.d.ts +48 -0
  175. package/js/src/static_dependencies/starknet/utils/selector.js +85 -0
  176. package/js/src/static_dependencies/starknet/utils/shortString.d.ts +57 -0
  177. package/js/src/static_dependencies/starknet/utils/shortString.js +96 -0
  178. package/js/src/static_dependencies/starknet/utils/starknetId.d.ts +113 -0
  179. package/js/src/static_dependencies/starknet/utils/starknetId.js +265 -0
  180. package/js/src/static_dependencies/starknet/utils/typedData.d.ts +54 -0
  181. package/js/src/static_dependencies/starknet/utils/typedData.js +321 -0
  182. package/js/src/static_dependencies/starknet/utils/uint256.d.ts +21 -0
  183. package/js/src/static_dependencies/starknet/utils/uint256.js +32 -0
  184. package/js/src/static_dependencies/starknet/utils/url.d.ts +29 -0
  185. package/js/src/static_dependencies/starknet/utils/url.js +70 -0
  186. package/js/src/woo.js +4 -2
  187. package/package.json +1 -1
package/dist/cjs/ccxt.js CHANGED
@@ -101,6 +101,7 @@ var okx = require('./src/okx.js');
101
101
  var onetrading = require('./src/onetrading.js');
102
102
  var oxfun = require('./src/oxfun.js');
103
103
  var p2b = require('./src/p2b.js');
104
+ var paradex = require('./src/paradex.js');
104
105
  var paymium = require('./src/paymium.js');
105
106
  var phemex = require('./src/phemex.js');
106
107
  var poloniex = require('./src/poloniex.js');
@@ -141,6 +142,7 @@ var bitrue$1 = require('./src/pro/bitrue.js');
141
142
  var bitstamp$1 = require('./src/pro/bitstamp.js');
142
143
  var bitvavo$1 = require('./src/pro/bitvavo.js');
143
144
  var blockchaincom$1 = require('./src/pro/blockchaincom.js');
145
+ var blofin$1 = require('./src/pro/blofin.js');
144
146
  var bybit$1 = require('./src/pro/bybit.js');
145
147
  var cex$1 = require('./src/pro/cex.js');
146
148
  var coinbase$1 = require('./src/pro/coinbase.js');
@@ -177,6 +179,7 @@ var okx$1 = require('./src/pro/okx.js');
177
179
  var onetrading$1 = require('./src/pro/onetrading.js');
178
180
  var oxfun$1 = require('./src/pro/oxfun.js');
179
181
  var p2b$1 = require('./src/pro/p2b.js');
182
+ var paradex$1 = require('./src/pro/paradex.js');
180
183
  var phemex$1 = require('./src/pro/phemex.js');
181
184
  var poloniex$1 = require('./src/pro/poloniex.js');
182
185
  var poloniexfutures$1 = require('./src/pro/poloniexfutures.js');
@@ -191,7 +194,7 @@ var xt$1 = require('./src/pro/xt.js');
191
194
 
192
195
  //-----------------------------------------------------------------------------
193
196
  // this is updated by vss.js when building
194
- const version = '4.3.69';
197
+ const version = '4.3.71';
195
198
  Exchange["default"].ccxtVersion = version;
196
199
  const exchanges = {
197
200
  'ace': ace,
@@ -283,6 +286,7 @@ const exchanges = {
283
286
  'onetrading': onetrading,
284
287
  'oxfun': oxfun,
285
288
  'p2b': p2b,
289
+ 'paradex': paradex,
286
290
  'paymium': paymium,
287
291
  'phemex': phemex,
288
292
  'poloniex': poloniex,
@@ -325,6 +329,7 @@ const pro = {
325
329
  'bitstamp': bitstamp$1,
326
330
  'bitvavo': bitvavo$1,
327
331
  'blockchaincom': blockchaincom$1,
332
+ 'blofin': blofin$1,
328
333
  'bybit': bybit$1,
329
334
  'cex': cex$1,
330
335
  'coinbase': coinbase$1,
@@ -361,6 +366,7 @@ const pro = {
361
366
  'onetrading': onetrading$1,
362
367
  'oxfun': oxfun$1,
363
368
  'p2b': p2b$1,
369
+ 'paradex': paradex$1,
364
370
  'phemex': phemex$1,
365
371
  'poloniex': poloniex$1,
366
372
  'poloniexfutures': poloniexfutures$1,
@@ -510,6 +516,7 @@ exports.okx = okx;
510
516
  exports.onetrading = onetrading;
511
517
  exports.oxfun = oxfun;
512
518
  exports.p2b = p2b;
519
+ exports.paradex = paradex;
513
520
  exports.paymium = paymium;
514
521
  exports.phemex = phemex;
515
522
  exports.poloniex = poloniex;
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var Exchange$1 = require('../base/Exchange.js');
4
+
5
+ // -------------------------------------------------------------------------------
6
+ class Exchange extends Exchange$1["default"] {
7
+ }
8
+
9
+ module.exports = Exchange;
@@ -3296,7 +3296,7 @@ class ascendex extends ascendex$1 {
3296
3296
  async fetchMarginModes(symbols = undefined, params = {}) {
3297
3297
  /**
3298
3298
  * @method
3299
- * @name ascendex#fetchMarginMode
3299
+ * @name ascendex#fetchMarginModes
3300
3300
  * @description fetches the set margin mode of the user
3301
3301
  * @see https://ascendex.github.io/ascendex-futures-pro-api-v2/#position
3302
3302
  * @param {string[]} [symbols] a list of unified market symbols
@@ -22,6 +22,12 @@ require('../static_dependencies/noble-hashes/sha256.js');
22
22
  require('../static_dependencies/ethers/address/address.js');
23
23
  var typedData = require('../static_dependencies/ethers/hash/typed-data.js');
24
24
  var rng = require('../static_dependencies/jsencrypt/lib/jsbn/rng.js');
25
+ var index$1 = require('../static_dependencies/scure-starknet/index.js');
26
+ require('../static_dependencies/noble-curves/abstract/modular.js');
27
+ var selector = require('../static_dependencies/starknet/utils/selector.js');
28
+ var classHash = require('../static_dependencies/starknet/utils/hash/classHash.js');
29
+ var index$2 = require('../static_dependencies/starknet/utils/calldata/index.js');
30
+ var typedData$1 = require('../static_dependencies/starknet/utils/typedData.js');
25
31
  var generic = require('./functions/generic.js');
26
32
  var misc = require('./functions/misc.js');
27
33
 
@@ -1182,6 +1188,49 @@ class Exchange {
1182
1188
  ethEncodeStructuredData(domain, messageTypes, messageData) {
1183
1189
  return this.base16ToBinary(typedData.TypedDataEncoder.encode(domain, messageTypes, messageData).slice(-132));
1184
1190
  }
1191
+ retrieveStarkAccount(signature, accountClassHash, accountProxyClassHash) {
1192
+ const privateKey = index$1.ethSigToPrivate(signature);
1193
+ const publicKey = index$1.getStarkKey(privateKey);
1194
+ const callData = index$2.CallData.compile({
1195
+ implementation: accountClassHash,
1196
+ selector: selector.getSelectorFromName('initialize'),
1197
+ calldata: index$2.CallData.compile({
1198
+ signer: publicKey,
1199
+ guardian: '0',
1200
+ }),
1201
+ });
1202
+ const address = classHash.calculateContractAddressFromHash(publicKey, accountProxyClassHash, callData, 0);
1203
+ return {
1204
+ privateKey,
1205
+ publicKey,
1206
+ address
1207
+ };
1208
+ }
1209
+ starknetEncodeStructuredData(domain, messageTypes, messageData, address) {
1210
+ const types = Object.keys(messageTypes);
1211
+ if (types.length > 1) {
1212
+ throw new errors.NotSupported(this.id + 'starknetEncodeStructuredData only support single type');
1213
+ }
1214
+ const request = {
1215
+ 'domain': domain,
1216
+ 'primaryType': types[0],
1217
+ 'types': this.extend({
1218
+ 'StarkNetDomain': [
1219
+ { 'name': "name", 'type': "felt" },
1220
+ { 'name': "chainId", 'type': "felt" },
1221
+ { 'name': "version", 'type': "felt" },
1222
+ ],
1223
+ }, messageTypes),
1224
+ 'message': messageData,
1225
+ };
1226
+ const msgHash = typedData$1.getMessageHash(request, address);
1227
+ return msgHash;
1228
+ }
1229
+ starknetSign(hash, pri) {
1230
+ // TODO: unify to ecdsa
1231
+ const signature = index$1.sign(hash.replace('0x', ''), pri.slice(-64));
1232
+ return this.json([signature.r.toString(), signature.s.toString()]);
1233
+ }
1185
1234
  intToBase16(elem) {
1186
1235
  return elem.toString(16);
1187
1236
  }
@@ -1661,6 +1710,12 @@ class Exchange {
1661
1710
  handleDelta(bookside, delta) {
1662
1711
  throw new errors.NotSupported(this.id + ' handleDelta not supported yet');
1663
1712
  }
1713
+ handleDeltasWithKeys(bookSide, deltas, priceKey = 0, amountKey = 1, countOrIdKey = 2) {
1714
+ for (let i = 0; i < deltas.length; i++) {
1715
+ const bidAsk = this.parseBidAsk(deltas[i], priceKey, amountKey, countOrIdKey);
1716
+ bookSide.storeArray(bidAsk);
1717
+ }
1718
+ }
1664
1719
  getCacheIndex(orderbook, deltas) {
1665
1720
  // return the first index of the cache that can be applied to the orderbook or -1 if not possible
1666
1721
  return -1;
@@ -12636,7 +12636,7 @@ class binance extends binance$1 {
12636
12636
  async fetchMarginModes(symbols = undefined, params = {}) {
12637
12637
  /**
12638
12638
  * @method
12639
- * @name binance#fetchMarginMode
12639
+ * @name binance#fetchMarginModes
12640
12640
  * @description fetches margin modes ("isolated" or "cross") that the market for the symbol in in, with symbol=undefined all markets for a subType (linear/inverse) are returned
12641
12641
  * @see https://developers.binance.com/docs/derivatives/coin-margined-futures/account/Account-Information
12642
12642
  * @see https://developers.binance.com/docs/derivatives/usds-margined-futures/account/rest-api/Account-Information-V2
@@ -20,6 +20,7 @@ class blofin extends blofin$1 {
20
20
  'countries': ['US'],
21
21
  'version': 'v1',
22
22
  'rateLimit': 100,
23
+ 'pro': true,
23
24
  'has': {
24
25
  'CORS': undefined,
25
26
  'spot': false,
@@ -94,7 +95,7 @@ class blofin extends blofin$1 {
94
95
  'fetchOpenInterestHistory': false,
95
96
  'fetchOpenOrder': undefined,
96
97
  'fetchOpenOrders': true,
97
- 'fetchOrder': true,
98
+ 'fetchOrder': undefined,
98
99
  'fetchOrderBook': true,
99
100
  'fetchOrderBooks': false,
100
101
  'fetchOrders': false,
@@ -144,11 +145,12 @@ class blofin extends blofin$1 {
144
145
  '2h': '2H',
145
146
  '4h': '4H',
146
147
  '6h': '6H',
148
+ '8h': '8H',
147
149
  '12h': '12H',
148
150
  '1d': '1D',
151
+ '3d': '3D',
149
152
  '1w': '1W',
150
153
  '1M': '1M',
151
- '3M': '3M',
152
154
  },
153
155
  'hostname': 'www.blofin.com',
154
156
  'urls': {
@@ -489,6 +491,25 @@ class blofin extends blofin$1 {
489
491
  return this.parseOrderBook(first, symbol, timestamp);
490
492
  }
491
493
  parseTicker(ticker, market = undefined) {
494
+ //
495
+ // response similar for REST & WS
496
+ //
497
+ // {
498
+ // instId: "ADA-USDT",
499
+ // ts: "1707736811486",
500
+ // last: "0.5315",
501
+ // lastSize: "4",
502
+ // askPrice: "0.5318",
503
+ // askSize: "248",
504
+ // bidPrice: "0.5315",
505
+ // bidSize: "63",
506
+ // open24h: "0.5555",
507
+ // high24h: "0.5563",
508
+ // low24h: "0.5315",
509
+ // volCurrency24h: "198560100",
510
+ // vol24h: "1985601",
511
+ // }
512
+ //
492
513
  const timestamp = this.safeInteger(ticker, 'ts');
493
514
  const marketId = this.safeString(ticker, 'instId');
494
515
  market = this.safeMarket(marketId, market, '-');
@@ -561,7 +582,8 @@ class blofin extends blofin$1 {
561
582
  }
562
583
  parseTrade(trade, market = undefined) {
563
584
  //
564
- // fetch trades
585
+ // fetch trades (response similar for REST & WS)
586
+ //
565
587
  // {
566
588
  // "tradeId": "3263934920",
567
589
  // "instId": "LTC-USDT",
@@ -570,6 +592,7 @@ class blofin extends blofin$1 {
570
592
  // "side": "buy",
571
593
  // "ts": "1707232020854"
572
594
  // }
595
+ //
573
596
  // my trades
574
597
  // {
575
598
  // "instId": "LTC-USDT",
@@ -848,10 +871,12 @@ class blofin extends blofin$1 {
848
871
  return this.parseFundingBalance(response);
849
872
  }
850
873
  else {
851
- return this.parseTradingBalance(response);
874
+ return this.parseBalance(response);
852
875
  }
853
876
  }
854
- parseTradingBalance(response) {
877
+ parseBalance(response) {
878
+ //
879
+ // "data" similar for REST & WS
855
880
  //
856
881
  // {
857
882
  // "code": "0",
@@ -873,7 +898,8 @@ class blofin extends blofin$1 {
873
898
  // "orderFrozen": "14920.994472632597427761",
874
899
  // "equityUsd": "10011254.077985990315787910",
875
900
  // "isolatedUnrealizedPnl": "-22.151999999999999999952",
876
- // "bonus": "0"
901
+ // "bonus": "0" // present only in REST
902
+ // "unrealizedPnl": "0" // present only in WS
877
903
  // }
878
904
  // ]
879
905
  // }
@@ -1035,6 +1061,8 @@ class blofin extends blofin$1 {
1035
1061
  return this.safeString(statuses, status, status);
1036
1062
  }
1037
1063
  parseOrder(order, market = undefined) {
1064
+ //
1065
+ // response similar for REST & WS
1038
1066
  //
1039
1067
  // {
1040
1068
  // "orderId": "2075628533",
@@ -1063,6 +1091,9 @@ class blofin extends blofin$1 {
1063
1091
  // "cancelSource": "not_canceled",
1064
1092
  // "cancelSourceReason": null,
1065
1093
  // "brokerId": "ec6dd3a7dd982d0b"
1094
+ // "filled_amount": "1.000000000000000000", // filledAmount in "ws" watchOrders
1095
+ // "cancelSource": "", // only in WS
1096
+ // "instType": "SWAP", // only in WS
1066
1097
  // }
1067
1098
  //
1068
1099
  const id = this.safeString2(order, 'tpslId', 'orderId');
@@ -1812,6 +1843,32 @@ class blofin extends blofin$1 {
1812
1843
  return this.filterByArrayPositions(result, 'symbol', symbols, false);
1813
1844
  }
1814
1845
  parsePosition(position, market = undefined) {
1846
+ //
1847
+ // response similar for REST & WS
1848
+ //
1849
+ // {
1850
+ // instType: 'SWAP',
1851
+ // instId: 'LTC-USDT',
1852
+ // marginMode: 'cross',
1853
+ // positionId: '644159',
1854
+ // positionSide: 'net',
1855
+ // positions: '1',
1856
+ // availablePositions: '1',
1857
+ // averagePrice: '68.16',
1858
+ // unrealizedPnl: '0.80631223',
1859
+ // unrealizedPnlRatio: '0.03548909463028169',
1860
+ // leverage: '3',
1861
+ // liquidationPrice: '10.116655172370356435',
1862
+ // markPrice: '68.96',
1863
+ // initialMargin: '22.988770743333333333',
1864
+ // margin: '', // this field might not exist in rest response
1865
+ // marginRatio: '152.523509620342499273',
1866
+ // maintenanceMargin: '0.34483156115',
1867
+ // adl: '4',
1868
+ // createTime: '1707235776528',
1869
+ // updateTime: '1707235776528'
1870
+ // }
1871
+ //
1815
1872
  const marketId = this.safeString(position, 'instId');
1816
1873
  market = this.safeMarket(marketId, market);
1817
1874
  const symbol = market['symbol'];
@@ -8198,7 +8198,7 @@ class bybit extends bybit$1 {
8198
8198
  const quoteValueString = Precise["default"].stringMul(baseValueString, priceString);
8199
8199
  return this.safeLiquidation({
8200
8200
  'info': liquidation,
8201
- 'symbol': this.safeSymbol(marketId, market),
8201
+ 'symbol': this.safeSymbol(marketId, market, undefined, 'contract'),
8202
8202
  'contracts': this.parseNumber(contractsString),
8203
8203
  'contractSize': this.parseNumber(contractSizeString),
8204
8204
  'price': this.parseNumber(priceString),
@@ -83,7 +83,7 @@ class coinbaseinternational extends coinbaseinternational$1 {
83
83
  'fetchMyBuys': true,
84
84
  'fetchMySells': true,
85
85
  'fetchMyTrades': true,
86
- 'fetchOHLCV': false,
86
+ 'fetchOHLCV': true,
87
87
  'fetchOpenInterestHistory': false,
88
88
  'fetchOpenOrders': true,
89
89
  'fetchOrder': true,
@@ -102,6 +102,7 @@ class coinbaseinternational extends coinbaseinternational$1 {
102
102
  'fetchTrades': false,
103
103
  'fetchTradingFee': false,
104
104
  'fetchTradingFees': false,
105
+ 'fetchTransfers': true,
105
106
  'fetchWithdrawals': true,
106
107
  'reduceMargin': false,
107
108
  'sandbox': true,
@@ -144,7 +145,7 @@ class coinbaseinternational extends coinbaseinternational$1 {
144
145
  'instruments/{instrument}',
145
146
  'instruments/{instrument}/quote',
146
147
  'instruments/{instrument}/funding',
147
- '',
148
+ 'instruments/{instrument}/candles',
148
149
  ],
149
150
  },
150
151
  'private': {
@@ -352,6 +353,81 @@ class coinbaseinternational extends coinbaseinternational$1 {
352
353
  'info': account,
353
354
  };
354
355
  }
356
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = 100, params = {}) {
357
+ /**
358
+ * @method
359
+ * @name coinbaseinternational#fetchOHLCV
360
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
361
+ * @see https://docs.cdp.coinbase.com/intx/reference/getinstrumentcandles
362
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
363
+ * @param {string} timeframe the length of time each candle represents
364
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
365
+ * @param {int} [limit] the maximum amount of candles to fetch, default 100 max 10000
366
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
367
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
368
+ * @param {int} [params.until] timestamp in ms of the latest candle to fetch
369
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
370
+ */
371
+ await this.loadMarkets();
372
+ let paginate = false;
373
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'paginate');
374
+ if (paginate) {
375
+ return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, 10000);
376
+ }
377
+ const market = this.market(symbol);
378
+ const request = {
379
+ 'instrument': market['id'],
380
+ 'granularity': this.safeString(this.timeframes, timeframe, timeframe),
381
+ };
382
+ if (since !== undefined) {
383
+ request['start'] = this.iso8601(since);
384
+ }
385
+ else {
386
+ throw new errors.ArgumentsRequired(this.id + ' fetchOHLCV() requires a since argument');
387
+ }
388
+ const unitl = this.safeInteger(params, 'until');
389
+ if (unitl !== undefined) {
390
+ params = this.omit(params, 'until');
391
+ request['end'] = this.iso8601(unitl);
392
+ }
393
+ const response = await this.v1PublicGetInstrumentsInstrumentCandles(this.extend(request, params));
394
+ //
395
+ // {
396
+ // "aggregations": [
397
+ // {
398
+ // "start": "2024-04-23T00:00:00Z",
399
+ // "open": "62884.4",
400
+ // "high": "64710.6",
401
+ // "low": "62884.4",
402
+ // "close": "63508.4",
403
+ // "volume": "3253.9983"
404
+ // }
405
+ // ]
406
+ // }
407
+ //
408
+ const candles = this.safeList(response, 'aggregations', []);
409
+ return this.parseOHLCVs(candles, market, timeframe, since, limit);
410
+ }
411
+ parseOHLCV(ohlcv, market = undefined) {
412
+ //
413
+ // {
414
+ // "start": "2024-04-23T00:00:00Z",
415
+ // "open": "62884.4",
416
+ // "high": "64710.6",
417
+ // "low": "62884.4",
418
+ // "close": "63508.4",
419
+ // "volume": "3253.9983"
420
+ // }
421
+ //
422
+ return [
423
+ this.parse8601(this.safeString2(ohlcv, 'start', 'time')),
424
+ this.safeNumber(ohlcv, 'open'),
425
+ this.safeNumber(ohlcv, 'high'),
426
+ this.safeNumber(ohlcv, 'low'),
427
+ this.safeNumber(ohlcv, 'close'),
428
+ this.safeNumber(ohlcv, 'volume'),
429
+ ];
430
+ }
355
431
  async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
356
432
  /**
357
433
  * @method
@@ -517,6 +593,96 @@ class coinbaseinternational extends coinbaseinternational$1 {
517
593
  'rate': undefined,
518
594
  };
519
595
  }
596
+ async fetchTransfers(code = undefined, since = undefined, limit = undefined, params = {}) {
597
+ /**
598
+ * @method
599
+ * @name coinbaseinternational#fetchTransfers
600
+ * @description fetch a history of internal transfers made on an account
601
+ * @see https://docs.cdp.coinbase.com/intx/reference/gettransfers
602
+ * @param {string} code unified currency code of the currency transferred
603
+ * @param {int} [since] the earliest time in ms to fetch transfers for
604
+ * @param {int} [limit] the maximum number of transfers structures to retrieve
605
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
606
+ * @returns {object[]} a list of [transfer structures]{@link https://docs.ccxt.com/#/?id=transfer-structure}
607
+ */
608
+ await this.loadMarkets();
609
+ const request = {
610
+ 'type': 'INTERNAL',
611
+ };
612
+ let currency = undefined;
613
+ if (code !== undefined) {
614
+ currency = this.currency(code);
615
+ }
616
+ let portfolios = undefined;
617
+ [portfolios, params] = this.handleOptionAndParams(params, 'fetchTransfers', 'portfolios');
618
+ if (portfolios !== undefined) {
619
+ request['portfolios'] = portfolios;
620
+ }
621
+ if (since !== undefined) {
622
+ request['time_from'] = this.iso8601(since);
623
+ }
624
+ if (limit !== undefined) {
625
+ request['result_limit'] = limit;
626
+ }
627
+ else {
628
+ request['result_limit'] = 100;
629
+ }
630
+ const response = await this.v1PrivateGetTransfers(this.extend(request, params));
631
+ const transfers = this.safeList(response, 'results', []);
632
+ return this.parseTransfers(transfers, currency, since, limit);
633
+ }
634
+ parseTransfer(transfer, currency = undefined) {
635
+ //
636
+ // {
637
+ // "amount":"0.0008",
638
+ // "asset":"USDC",
639
+ // "created_at":"2024-02-22T16:00:00Z",
640
+ // "from_portfolio":{
641
+ // "id":"13yuk1fs-1-0",
642
+ // "name":"Eng Test Portfolio - 2",
643
+ // "uuid":"018712f2-5ff9-7de3-9010-xxxxxxxxx"
644
+ // },
645
+ // "instrument_id":"149264164756389888",
646
+ // "instrument_symbol":"ETH-PERP",
647
+ // "position_id":"1xy4v51m-1-2",
648
+ // "status":"PROCESSED",
649
+ // "to_portfolio":{
650
+ // "name":"CB_FUND"
651
+ // },
652
+ // "transfer_type":"FUNDING",
653
+ // "transfer_uuid":"a6b708df-2c44-32c5-bb98-xxxxxxxxxx",
654
+ // "updated_at":"2024-02-22T16:00:00Z"
655
+ // }
656
+ //
657
+ const datetime = this.safeInteger(transfer, 'created_at');
658
+ const timestamp = this.parse8601(datetime);
659
+ const currencyId = this.safeString(transfer, 'asset');
660
+ const code = this.safeCurrencyCode(currencyId);
661
+ const fromPorfolio = this.safeDict(transfer, 'from_portfolio', {});
662
+ const fromId = this.safeString(fromPorfolio, 'id');
663
+ const toPorfolio = this.safeDict(transfer, 'to_portfolio', {});
664
+ const toId = this.safeString(toPorfolio, 'id');
665
+ return {
666
+ 'info': transfer,
667
+ 'id': this.safeString(transfer, 'transfer_uuid'),
668
+ 'timestamp': timestamp,
669
+ 'datetime': this.iso8601(timestamp),
670
+ 'currency': code,
671
+ 'amount': this.safeNumber(transfer, 'amount'),
672
+ 'fromAccount': fromId,
673
+ 'toAccount': toId,
674
+ 'status': this.parseTransferStatus(this.safeString(transfer, 'status')),
675
+ };
676
+ }
677
+ parseTransferStatus(status) {
678
+ const statuses = {
679
+ 'FAILED': 'failed',
680
+ 'PROCESSED': 'ok',
681
+ 'NEW': 'pending',
682
+ 'STARTED': 'pending',
683
+ };
684
+ return this.safeString(statuses, status, status);
685
+ }
520
686
  async createDepositAddress(code, params = {}) {
521
687
  /**
522
688
  * @method
@@ -386,7 +386,15 @@ class cryptocom extends cryptocom$1 {
386
386
  '40006': errors.BadRequest,
387
387
  '40007': errors.BadRequest,
388
388
  '40101': errors.AuthenticationError,
389
- '50001': errors.BadRequest,
389
+ '40102': errors.InvalidNonce,
390
+ '40103': errors.AuthenticationError,
391
+ '40104': errors.AuthenticationError,
392
+ '40107': errors.BadRequest,
393
+ '40401': errors.OrderNotFound,
394
+ '40801': errors.RequestTimeout,
395
+ '42901': errors.RateLimitExceeded,
396
+ '43005': errors.InvalidOrder,
397
+ '50001': errors.ExchangeError,
390
398
  '9010001': errors.OnMaintenance, // {"code":9010001,"message":"SYSTEM_MAINTENANCE","details":"Crypto.com Exchange is currently under maintenance. Please refer to https://status.crypto.com for more details."}
391
399
  },
392
400
  'broad': {},
@@ -2523,7 +2523,7 @@ class hitbtc extends hitbtc$1 {
2523
2523
  async fetchMarginModes(symbols = undefined, params = {}) {
2524
2524
  /**
2525
2525
  * @method
2526
- * @name hitbtc#fetchMarginMode
2526
+ * @name hitbtc#fetchMarginModes
2527
2527
  * @description fetches margin mode of the user
2528
2528
  * @see https://api.hitbtc.com/#get-margin-position-parameters
2529
2529
  * @see https://api.hitbtc.com/#get-futures-position-parameters