ccxt 4.2.60 → 4.2.61

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 (158) hide show
  1. package/README.md +103 -102
  2. package/build.sh +1 -1
  3. package/dist/ccxt.browser.js +107943 -100121
  4. package/dist/ccxt.browser.min.js +7 -7
  5. package/dist/cjs/ccxt.js +4 -1
  6. package/dist/cjs/src/abstract/hyperliquid.js +9 -0
  7. package/dist/cjs/src/base/Exchange.js +22 -1
  8. package/dist/cjs/src/base/functions/encode.js +5 -0
  9. package/dist/cjs/src/base/functions.js +1 -0
  10. package/dist/cjs/src/bitfinex2.js +1 -1
  11. package/dist/cjs/src/coinbase.js +108 -103
  12. package/dist/cjs/src/coinex.js +61 -1
  13. package/dist/cjs/src/hyperliquid.js +2035 -0
  14. package/dist/cjs/src/kraken.js +8 -2
  15. package/dist/cjs/src/krakenfutures.js +28 -0
  16. package/dist/cjs/src/kucoinfutures.js +2 -2
  17. package/dist/cjs/src/okx.js +1 -1
  18. package/dist/cjs/src/phemex.js +2 -2
  19. package/dist/cjs/src/pro/bingx.js +1 -0
  20. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +158 -0
  21. package/dist/cjs/src/static_dependencies/ethers/address/address.js +144 -0
  22. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +407 -0
  23. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +45 -0
  24. package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +28 -0
  25. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +176 -0
  26. package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +27 -0
  27. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +52 -0
  28. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +45 -0
  29. package/dist/cjs/src/static_dependencies/ethers/coders/null.js +30 -0
  30. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +60 -0
  31. package/dist/cjs/src/static_dependencies/ethers/coders/string.js +27 -0
  32. package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +68 -0
  33. package/dist/cjs/src/static_dependencies/ethers/fragments.js +614 -0
  34. package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +492 -0
  35. package/dist/cjs/src/static_dependencies/ethers/index.js +35 -0
  36. package/dist/cjs/src/static_dependencies/ethers/interface.js +44 -0
  37. package/dist/cjs/src/static_dependencies/ethers/typed.js +618 -0
  38. package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +20 -0
  39. package/dist/cjs/src/static_dependencies/ethers/utils/data.js +134 -0
  40. package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +228 -0
  41. package/dist/cjs/src/static_dependencies/ethers/utils/events.js +13 -0
  42. package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +29 -0
  43. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +53 -0
  44. package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +231 -0
  45. package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +47 -0
  46. package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +218 -0
  47. package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +292 -0
  48. package/dist/cjs/src/tokocrypto.js +22 -2
  49. package/dist/cjs/src/wazirx.js +308 -3
  50. package/js/ccxt.d.ts +5 -2
  51. package/js/ccxt.js +4 -2
  52. package/js/src/abstract/coinbase.d.ts +3 -3
  53. package/js/src/abstract/hyperliquid.d.ts +9 -0
  54. package/js/src/abstract/hyperliquid.js +11 -0
  55. package/js/src/base/Exchange.d.ts +4 -0
  56. package/js/src/base/Exchange.js +13 -1
  57. package/js/src/base/functions/encode.d.ts +2 -1
  58. package/js/src/base/functions/encode.js +5 -1
  59. package/js/src/bitfinex2.js +1 -1
  60. package/js/src/coinbase.js +108 -103
  61. package/js/src/coinex.d.ts +3 -1
  62. package/js/src/coinex.js +61 -1
  63. package/js/src/hyperliquid.d.ts +83 -0
  64. package/js/src/hyperliquid.js +2036 -0
  65. package/js/src/kraken.js +8 -2
  66. package/js/src/krakenfutures.d.ts +2 -1
  67. package/js/src/krakenfutures.js +28 -0
  68. package/js/src/kucoinfutures.js +2 -2
  69. package/js/src/okx.js +1 -1
  70. package/js/src/phemex.js +2 -2
  71. package/js/src/pro/bingx.js +1 -0
  72. package/js/src/static_dependencies/ethers/abi-coder.d.ts +50 -0
  73. package/js/src/static_dependencies/ethers/abi-coder.js +148 -0
  74. package/js/src/static_dependencies/ethers/address/address.d.ts +55 -0
  75. package/js/src/static_dependencies/ethers/address/address.js +162 -0
  76. package/js/src/static_dependencies/ethers/address/checks.d.ts +80 -0
  77. package/js/src/static_dependencies/ethers/address/checks.js +119 -0
  78. package/js/src/static_dependencies/ethers/address/contract-address.d.ts +47 -0
  79. package/js/src/static_dependencies/ethers/address/contract-address.js +73 -0
  80. package/js/src/static_dependencies/ethers/address/index.d.ts +48 -0
  81. package/js/src/static_dependencies/ethers/address/index.js +24 -0
  82. package/js/src/static_dependencies/ethers/bytes32.d.ts +14 -0
  83. package/js/src/static_dependencies/ethers/bytes32.js +45 -0
  84. package/js/src/static_dependencies/ethers/coders/abstract-coder.d.ts +120 -0
  85. package/js/src/static_dependencies/ethers/coders/abstract-coder.js +424 -0
  86. package/js/src/static_dependencies/ethers/coders/address.d.ts +12 -0
  87. package/js/src/static_dependencies/ethers/coders/address.js +34 -0
  88. package/js/src/static_dependencies/ethers/coders/anonymous.d.ts +14 -0
  89. package/js/src/static_dependencies/ethers/coders/anonymous.js +27 -0
  90. package/js/src/static_dependencies/ethers/coders/array.d.ts +24 -0
  91. package/js/src/static_dependencies/ethers/coders/array.js +162 -0
  92. package/js/src/static_dependencies/ethers/coders/boolean.d.ts +12 -0
  93. package/js/src/static_dependencies/ethers/coders/boolean.js +26 -0
  94. package/js/src/static_dependencies/ethers/coders/bytes.d.ts +18 -0
  95. package/js/src/static_dependencies/ethers/coders/bytes.js +39 -0
  96. package/js/src/static_dependencies/ethers/coders/fixed-bytes.d.ts +14 -0
  97. package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +32 -0
  98. package/js/src/static_dependencies/ethers/coders/null.d.ts +11 -0
  99. package/js/src/static_dependencies/ethers/coders/null.js +29 -0
  100. package/js/src/static_dependencies/ethers/coders/number.d.ts +15 -0
  101. package/js/src/static_dependencies/ethers/coders/number.js +48 -0
  102. package/js/src/static_dependencies/ethers/coders/string.d.ts +12 -0
  103. package/js/src/static_dependencies/ethers/coders/string.js +26 -0
  104. package/js/src/static_dependencies/ethers/coders/tuple.d.ts +15 -0
  105. package/js/src/static_dependencies/ethers/coders/tuple.js +67 -0
  106. package/js/src/static_dependencies/ethers/fragments.d.ts +458 -0
  107. package/js/src/static_dependencies/ethers/fragments.js +1252 -0
  108. package/js/src/static_dependencies/ethers/hash/index.d.ts +10 -0
  109. package/js/src/static_dependencies/ethers/hash/index.js +15 -0
  110. package/js/src/static_dependencies/ethers/hash/solidity.d.ts +30 -0
  111. package/js/src/static_dependencies/ethers/hash/solidity.js +107 -0
  112. package/js/src/static_dependencies/ethers/hash/typed-data.d.ts +144 -0
  113. package/js/src/static_dependencies/ethers/hash/typed-data.js +490 -0
  114. package/js/src/static_dependencies/ethers/index.d.ts +19 -0
  115. package/js/src/static_dependencies/ethers/index.js +22 -0
  116. package/js/src/static_dependencies/ethers/interface.d.ts +380 -0
  117. package/js/src/static_dependencies/ethers/interface.js +990 -0
  118. package/js/src/static_dependencies/ethers/typed.d.ts +569 -0
  119. package/js/src/static_dependencies/ethers/typed.js +608 -0
  120. package/js/src/static_dependencies/ethers/utils/base58.d.ts +22 -0
  121. package/js/src/static_dependencies/ethers/utils/base58.js +68 -0
  122. package/js/src/static_dependencies/ethers/utils/base64-browser.d.ts +3 -0
  123. package/js/src/static_dependencies/ethers/utils/base64-browser.js +24 -0
  124. package/js/src/static_dependencies/ethers/utils/base64.d.ts +39 -0
  125. package/js/src/static_dependencies/ethers/utils/base64.js +58 -0
  126. package/js/src/static_dependencies/ethers/utils/data.d.ts +92 -0
  127. package/js/src/static_dependencies/ethers/utils/data.js +175 -0
  128. package/js/src/static_dependencies/ethers/utils/errors.d.ts +509 -0
  129. package/js/src/static_dependencies/ethers/utils/errors.js +227 -0
  130. package/js/src/static_dependencies/ethers/utils/events.d.ts +76 -0
  131. package/js/src/static_dependencies/ethers/utils/events.js +52 -0
  132. package/js/src/static_dependencies/ethers/utils/fixednumber.d.ts +251 -0
  133. package/js/src/static_dependencies/ethers/utils/fixednumber.js +529 -0
  134. package/js/src/static_dependencies/ethers/utils/index.d.ts +30 -0
  135. package/js/src/static_dependencies/ethers/utils/index.js +38 -0
  136. package/js/src/static_dependencies/ethers/utils/maths.d.ts +65 -0
  137. package/js/src/static_dependencies/ethers/utils/maths.js +220 -0
  138. package/js/src/static_dependencies/ethers/utils/properties.d.ts +22 -0
  139. package/js/src/static_dependencies/ethers/utils/properties.js +59 -0
  140. package/js/src/static_dependencies/ethers/utils/rlp-decode.d.ts +5 -0
  141. package/js/src/static_dependencies/ethers/utils/rlp-decode.js +84 -0
  142. package/js/src/static_dependencies/ethers/utils/rlp-encode.d.ts +5 -0
  143. package/js/src/static_dependencies/ethers/utils/rlp-encode.js +54 -0
  144. package/js/src/static_dependencies/ethers/utils/rlp.d.ts +16 -0
  145. package/js/src/static_dependencies/ethers/utils/rlp.js +14 -0
  146. package/js/src/static_dependencies/ethers/utils/units.d.ts +23 -0
  147. package/js/src/static_dependencies/ethers/utils/units.js +88 -0
  148. package/js/src/static_dependencies/ethers/utils/utf8.d.ts +95 -0
  149. package/js/src/static_dependencies/ethers/utils/utf8.js +225 -0
  150. package/js/src/static_dependencies/ethers/utils/uuid.d.ts +7 -0
  151. package/js/src/static_dependencies/ethers/utils/uuid.js +35 -0
  152. package/js/src/static_dependencies/messagepack/msgpack.d.ts +2 -0
  153. package/js/src/static_dependencies/messagepack/msgpack.js +572 -0
  154. package/js/src/tokocrypto.js +22 -2
  155. package/js/src/wazirx.d.ts +12 -1
  156. package/js/src/wazirx.js +308 -3
  157. package/package.json +1 -1
  158. package/skip-tests.json +18 -0
package/dist/cjs/ccxt.js CHANGED
@@ -76,6 +76,7 @@ var hollaex = require('./src/hollaex.js');
76
76
  var htx = require('./src/htx.js');
77
77
  var huobi = require('./src/huobi.js');
78
78
  var huobijp = require('./src/huobijp.js');
79
+ var hyperliquid = require('./src/hyperliquid.js');
79
80
  var idex = require('./src/idex.js');
80
81
  var independentreserve = require('./src/independentreserve.js');
81
82
  var indodax = require('./src/indodax.js');
@@ -176,7 +177,7 @@ var woo$1 = require('./src/pro/woo.js');
176
177
 
177
178
  //-----------------------------------------------------------------------------
178
179
  // this is updated by vss.js when building
179
- const version = '4.2.60';
180
+ const version = '4.2.61';
180
181
  Exchange["default"].ccxtVersion = version;
181
182
  const exchanges = {
182
183
  'ace': ace,
@@ -243,6 +244,7 @@ const exchanges = {
243
244
  'htx': htx,
244
245
  'huobi': huobi,
245
246
  'huobijp': huobijp,
247
+ 'hyperliquid': hyperliquid,
246
248
  'idex': idex,
247
249
  'independentreserve': independentreserve,
248
250
  'indodax': indodax,
@@ -448,6 +450,7 @@ exports.hollaex = hollaex;
448
450
  exports.htx = htx;
449
451
  exports.huobi = huobi;
450
452
  exports.huobijp = huobijp;
453
+ exports.hyperliquid = hyperliquid;
451
454
  exports.idex = idex;
452
455
  exports.independentreserve = independentreserve;
453
456
  exports.indodax = indodax;
@@ -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;
@@ -10,6 +10,17 @@ var Future = require('./ws/Future.js');
10
10
  var OrderBook = require('./ws/OrderBook.js');
11
11
  var crypto = require('./functions/crypto.js');
12
12
  var totp = require('./functions/totp.js');
13
+ var index = require('../static_dependencies/ethers/index.js');
14
+ require('../static_dependencies/ethers/utils/base58.js');
15
+ require('../static_dependencies/ethers/utils/errors.js');
16
+ require('../static_dependencies/ethers/utils/events.js');
17
+ require('../static_dependencies/ethers/utils/fixednumber.js');
18
+ require('../static_dependencies/ethers/utils/maths.js');
19
+ require('../static_dependencies/ethers/utils/utf8.js');
20
+ require('../static_dependencies/noble-hashes/sha3.js');
21
+ require('../static_dependencies/noble-hashes/sha256.js');
22
+ require('../static_dependencies/ethers/address/address.js');
23
+ var typedData = require('../static_dependencies/ethers/hash/typed-data.js');
13
24
  var generic = require('./functions/generic.js');
14
25
  var misc = require('./functions/misc.js');
15
26
 
@@ -32,7 +43,7 @@ function _interopNamespace(e) {
32
43
  }
33
44
 
34
45
  // ----------------------------------------------------------------------------
35
- const { isNode, deepExtend, extend, clone, flatten, unique, indexBy, sortBy, sortBy2, safeFloat2, groupBy, aggregate, uuid, unCamelCase, precisionFromString, Throttler, capitalize, now, decimalToPrecision, safeValue, safeValue2, safeString, safeString2, seconds, milliseconds, binaryToBase16, numberToBE, base16ToBinary, iso8601, omit, isJsonEncodedObject, safeInteger, sum, omitZero, implodeParams, extractParams, json, merge, binaryConcat, hash, ecdsa, arrayConcat, encode, urlencode, hmac, numberToString, parseTimeframe, safeInteger2, safeStringLower, parse8601, yyyymmdd, safeStringUpper, safeTimestamp, binaryConcatArray, uuidv1, numberToLE, ymdhms, stringToBase64, decode, uuid22, safeIntegerProduct2, safeIntegerProduct, safeStringLower2, yymmdd, base58ToBinary, binaryToBase58, safeTimestamp2, rawencode, keysort, inArray, isEmpty, ordered, filterBy, uuid16, safeFloat, base64ToBinary, safeStringUpper2, urlencodeWithArrayRepeat, microseconds, binaryToBase64, strip, toArray, safeFloatN, safeIntegerN, safeIntegerProductN, safeTimestampN, safeValueN, safeStringN, safeStringLowerN, safeStringUpperN, urlencodeNested, parseDate, ymd, base64ToString, crc32, TRUNCATE, ROUND, DECIMAL_PLACES, NO_PADDING, TICK_SIZE, SIGNIFICANT_DIGITS } = functions;
46
+ const { isNode, deepExtend, extend, clone, flatten, unique, indexBy, sortBy, sortBy2, safeFloat2, groupBy, aggregate, uuid, unCamelCase, precisionFromString, Throttler, capitalize, now, decimalToPrecision, safeValue, safeValue2, safeString, safeString2, seconds, milliseconds, binaryToBase16, numberToBE, base16ToBinary, iso8601, omit, isJsonEncodedObject, safeInteger, sum, omitZero, implodeParams, extractParams, json, merge, binaryConcat, hash, ecdsa, arrayConcat, encode, urlencode, hmac, numberToString, parseTimeframe, safeInteger2, safeStringLower, parse8601, yyyymmdd, safeStringUpper, safeTimestamp, binaryConcatArray, uuidv1, numberToLE, ymdhms, stringToBase64, decode, uuid22, safeIntegerProduct2, safeIntegerProduct, safeStringLower2, yymmdd, base58ToBinary, binaryToBase58, safeTimestamp2, rawencode, keysort, inArray, isEmpty, ordered, filterBy, uuid16, safeFloat, base64ToBinary, safeStringUpper2, urlencodeWithArrayRepeat, microseconds, binaryToBase64, strip, toArray, safeFloatN, safeIntegerN, safeIntegerProductN, safeTimestampN, safeValueN, safeStringN, safeStringLowerN, safeStringUpperN, urlencodeNested, parseDate, ymd, base64ToString, crc32, packb, TRUNCATE, ROUND, DECIMAL_PLACES, NO_PADDING, TICK_SIZE, SIGNIFICANT_DIGITS } = functions;
36
47
  // ----------------------------------------------------------------------------
37
48
  /**
38
49
  * @class Exchange
@@ -219,6 +230,7 @@ class Exchange {
219
230
  this.ymd = ymd;
220
231
  this.base64ToString = base64ToString;
221
232
  this.crc32 = crc32;
233
+ this.packb = packb;
222
234
  this.httpProxyAgentModule = undefined;
223
235
  this.httpsProxyAgentModule = undefined;
224
236
  this.socksProxyAgentModule = undefined;
@@ -1414,6 +1426,15 @@ class Exchange {
1414
1426
  modifiedContent = modifiedContent.replaceAll('}"', '}');
1415
1427
  return modifiedContent;
1416
1428
  }
1429
+ ethAbiEncode(types, args) {
1430
+ return this.base16ToBinary(index["default"].encode(types, args).slice(2));
1431
+ }
1432
+ ethEncodeStructuredData(domain, messageTypes, messageData) {
1433
+ return this.base16ToBinary(typedData.TypedDataEncoder.encode(domain, messageTypes, messageData).slice(-132));
1434
+ }
1435
+ intToBase16(elem) {
1436
+ return elem.toString(16);
1437
+ }
1417
1438
  /* eslint-enable */
1418
1439
  // ------------------------------------------------------------------------
1419
1440
  // ########################################################################
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var index = require('../../static_dependencies/scure-base/index.js');
6
6
  var utils = require('../../static_dependencies/noble-curves/abstract/utils.js');
7
+ var msgpack = require('../../static_dependencies/messagepack/msgpack.js');
7
8
  var index$1 = require('../../static_dependencies/qs/index.cjs.js');
8
9
 
9
10
  /* eslint-disable */
@@ -17,6 +18,9 @@ const json = (data, params = undefined) => JSON.stringify(data), isJsonEncodedOb
17
18
  , urlencodeBase64 = base64string => base64string.replace(/[=]+$/, '')
18
19
  .replace(/\+/g, '-')
19
20
  .replace(/\//g, '_'), numberToLE = (n, padding) => utils.numberToBytesLE(BigInt(n), padding), numberToBE = (n, padding) => utils.numberToBytesBE(BigInt(n), padding);
21
+ function packb(req) {
22
+ return msgpack.serialize(req);
23
+ }
20
24
  /* ------------------------------------------------------------------------ */
21
25
 
22
26
  exports.base16ToBinary = base16ToBinary;
@@ -35,6 +39,7 @@ exports.isJsonEncodedObject = isJsonEncodedObject;
35
39
  exports.json = json;
36
40
  exports.numberToBE = numberToBE;
37
41
  exports.numberToLE = numberToLE;
42
+ exports.packb = packb;
38
43
  exports.rawencode = rawencode;
39
44
  exports.stringToBase64 = stringToBase64;
40
45
  exports.stringToBinary = stringToBinary;
@@ -117,6 +117,7 @@ exports.isJsonEncodedObject = encode.isJsonEncodedObject;
117
117
  exports.json = encode.json;
118
118
  exports.numberToBE = encode.numberToBE;
119
119
  exports.numberToLE = encode.numberToLE;
120
+ exports.packb = encode.packb;
120
121
  exports.rawencode = encode.rawencode;
121
122
  exports.stringToBase64 = encode.stringToBase64;
122
123
  exports.stringToBinary = encode.stringToBinary;
@@ -51,8 +51,8 @@ class bitfinex2 extends bitfinex2$1 {
51
51
  'fetchBalance': true,
52
52
  'fetchBorrowInterest': false,
53
53
  'fetchBorrowRate': false,
54
- 'fetchBorrowRateHistory': false,
55
54
  'fetchBorrowRateHistories': false,
55
+ 'fetchBorrowRateHistory': false,
56
56
  'fetchBorrowRates': false,
57
57
  'fetchBorrowRatesPerSymbol': false,
58
58
  'fetchClosedOrder': true,
@@ -19,7 +19,12 @@ class coinbase extends coinbase$1 {
19
19
  'name': 'Coinbase',
20
20
  'countries': ['US'],
21
21
  'pro': true,
22
- 'rateLimit': 400,
22
+ // rate-limits:
23
+ // ADVANCED API: https://docs.cloud.coinbase.com/advanced-trade-api/docs/rest-api-rate-limits
24
+ // - max 30 req/second for private data, 10 req/s for public data
25
+ // DATA API : https://docs.cloud.coinbase.com/sign-in-with-coinbase/docs/rate-limiting
26
+ // - max 10000 req/hour (to prevent userland mistakes we apply ~3 req/second RL per call
27
+ 'rateLimit': 34,
23
28
  'version': 'v2',
24
29
  'userAgent': this.userAgents['chrome'],
25
30
  'headers': {
@@ -132,116 +137,116 @@ class coinbase extends coinbase$1 {
132
137
  'api': {
133
138
  'v2': {
134
139
  'public': {
135
- 'get': [
136
- 'currencies',
137
- 'currencies/crypto',
138
- 'time',
139
- 'exchange-rates',
140
- 'users/{user_id}',
141
- 'prices/{symbol}/buy',
142
- 'prices/{symbol}/sell',
143
- 'prices/{symbol}/spot',
144
- ],
140
+ 'get': {
141
+ 'currencies': 10.6,
142
+ 'currencies/crypto': 10.6,
143
+ 'time': 10.6,
144
+ 'exchange-rates': 10.6,
145
+ 'users/{user_id}': 10.6,
146
+ 'prices/{symbol}/buy': 10.6,
147
+ 'prices/{symbol}/sell': 10.6,
148
+ 'prices/{symbol}/spot': 10.6,
149
+ },
145
150
  },
146
151
  'private': {
147
- 'get': [
148
- 'accounts',
149
- 'accounts/{account_id}',
150
- 'accounts/{account_id}/addresses',
151
- 'accounts/{account_id}/addresses/{address_id}',
152
- 'accounts/{account_id}/addresses/{address_id}/transactions',
153
- 'accounts/{account_id}/transactions',
154
- 'accounts/{account_id}/transactions/{transaction_id}',
155
- 'accounts/{account_id}/buys',
156
- 'accounts/{account_id}/buys/{buy_id}',
157
- 'accounts/{account_id}/sells',
158
- 'accounts/{account_id}/sells/{sell_id}',
159
- 'accounts/{account_id}/deposits',
160
- 'accounts/{account_id}/deposits/{deposit_id}',
161
- 'accounts/{account_id}/withdrawals',
162
- 'accounts/{account_id}/withdrawals/{withdrawal_id}',
163
- 'payment-methods',
164
- 'payment-methods/{payment_method_id}',
165
- 'user',
166
- 'user/auth',
167
- ],
168
- 'post': [
169
- 'accounts',
170
- 'accounts/{account_id}/primary',
171
- 'accounts/{account_id}/addresses',
172
- 'accounts/{account_id}/transactions',
173
- 'accounts/{account_id}/transactions/{transaction_id}/complete',
174
- 'accounts/{account_id}/transactions/{transaction_id}/resend',
175
- 'accounts/{account_id}/buys',
176
- 'accounts/{account_id}/buys/{buy_id}/commit',
177
- 'accounts/{account_id}/sells',
178
- 'accounts/{account_id}/sells/{sell_id}/commit',
179
- 'accounts/{account_id}/deposits',
180
- 'accounts/{account_id}/deposits/{deposit_id}/commit',
181
- 'accounts/{account_id}/withdrawals',
182
- 'accounts/{account_id}/withdrawals/{withdrawal_id}/commit',
183
- ],
184
- 'put': [
185
- 'accounts/{account_id}',
186
- 'user',
187
- ],
188
- 'delete': [
189
- 'accounts/{id}',
190
- 'accounts/{account_id}/transactions/{transaction_id}',
191
- ],
152
+ 'get': {
153
+ 'accounts': 10.6,
154
+ 'accounts/{account_id}': 10.6,
155
+ 'accounts/{account_id}/addresses': 10.6,
156
+ 'accounts/{account_id}/addresses/{address_id}': 10.6,
157
+ 'accounts/{account_id}/addresses/{address_id}/transactions': 10.6,
158
+ 'accounts/{account_id}/transactions': 10.6,
159
+ 'accounts/{account_id}/transactions/{transaction_id}': 10.6,
160
+ 'accounts/{account_id}/buys': 10.6,
161
+ 'accounts/{account_id}/buys/{buy_id}': 10.6,
162
+ 'accounts/{account_id}/sells': 10.6,
163
+ 'accounts/{account_id}/sells/{sell_id}': 10.6,
164
+ 'accounts/{account_id}/deposits': 10.6,
165
+ 'accounts/{account_id}/deposits/{deposit_id}': 10.6,
166
+ 'accounts/{account_id}/withdrawals': 10.6,
167
+ 'accounts/{account_id}/withdrawals/{withdrawal_id}': 10.6,
168
+ 'payment-methods': 10.6,
169
+ 'payment-methods/{payment_method_id}': 10.6,
170
+ 'user': 10.6,
171
+ 'user/auth': 10.6,
172
+ },
173
+ 'post': {
174
+ 'accounts': 10.6,
175
+ 'accounts/{account_id}/primary': 10.6,
176
+ 'accounts/{account_id}/addresses': 10.6,
177
+ 'accounts/{account_id}/transactions': 10.6,
178
+ 'accounts/{account_id}/transactions/{transaction_id}/complete': 10.6,
179
+ 'accounts/{account_id}/transactions/{transaction_id}/resend': 10.6,
180
+ 'accounts/{account_id}/buys': 10.6,
181
+ 'accounts/{account_id}/buys/{buy_id}/commit': 10.6,
182
+ 'accounts/{account_id}/sells': 10.6,
183
+ 'accounts/{account_id}/sells/{sell_id}/commit': 10.6,
184
+ 'accounts/{account_id}/deposits': 10.6,
185
+ 'accounts/{account_id}/deposits/{deposit_id}/commit': 10.6,
186
+ 'accounts/{account_id}/withdrawals': 10.6,
187
+ 'accounts/{account_id}/withdrawals/{withdrawal_id}/commit': 10.6,
188
+ },
189
+ 'put': {
190
+ 'accounts/{account_id}': 10.6,
191
+ 'user': 10.6,
192
+ },
193
+ 'delete': {
194
+ 'accounts/{id}': 10.6,
195
+ 'accounts/{account_id}/transactions/{transaction_id}': 10.6,
196
+ },
192
197
  },
193
198
  },
194
199
  'v3': {
195
200
  'public': {
196
- 'get': [
197
- 'brokerage/time',
198
- ],
201
+ 'get': {
202
+ 'brokerage/time': 3,
203
+ },
199
204
  },
200
205
  'private': {
201
- 'get': [
202
- 'brokerage/accounts',
203
- 'brokerage/accounts/{account_uuid}',
204
- 'brokerage/orders/historical/batch',
205
- 'brokerage/orders/historical/fills',
206
- 'brokerage/orders/historical/{order_id}',
207
- 'brokerage/products',
208
- 'brokerage/products/{product_id}',
209
- 'brokerage/products/{product_id}/candles',
210
- 'brokerage/products/{product_id}/ticker',
211
- 'brokerage/portfolios',
212
- 'brokerage/portfolios/{portfolio_uuid}',
213
- 'brokerage/transaction_summary',
214
- 'brokerage/product_book',
215
- 'brokerage/best_bid_ask',
216
- 'brokerage/convert/trade/{trade_id}',
217
- 'brokerage/cfm/balance_summary',
218
- 'brokerage/cfm/positions',
219
- 'brokerage/cfm/positions/{product_id}',
220
- 'brokerage/cfm/sweeps',
221
- 'brokerage/intx/portfolio/{portfolio_uuid}',
222
- 'brokerage/intx/positions/{portfolio_uuid}',
223
- 'brokerage/intx/positions/{portfolio_uuid}/{symbol}',
224
- ],
225
- 'post': [
226
- 'brokerage/orders',
227
- 'brokerage/orders/batch_cancel',
228
- 'brokerage/orders/edit',
229
- 'brokerage/orders/edit_preview',
230
- 'brokerage/orders/preview',
231
- 'brokerage/portfolios',
232
- 'brokerage/portfolios/move_funds',
233
- 'brokerage/convert/quote',
234
- 'brokerage/convert/trade/{trade_id}',
235
- 'brokerage/cfm/sweeps/schedule',
236
- 'brokerage/intx/allocate',
237
- ],
238
- 'put': [
239
- 'brokerage/portfolios/{portfolio_uuid}',
240
- ],
241
- 'delete': [
242
- 'brokerage/portfolios/{portfolio_uuid}',
243
- 'brokerage/cfm/sweeps',
244
- ],
206
+ 'get': {
207
+ 'brokerage/accounts': 1,
208
+ 'brokerage/accounts/{account_uuid}': 1,
209
+ 'brokerage/orders/historical/batch': 1,
210
+ 'brokerage/orders/historical/fills': 1,
211
+ 'brokerage/orders/historical/{order_id}': 1,
212
+ 'brokerage/products': 3,
213
+ 'brokerage/products/{product_id}': 3,
214
+ 'brokerage/products/{product_id}/candles': 3,
215
+ 'brokerage/products/{product_id}/ticker': 3,
216
+ 'brokerage/best_bid_ask': 3,
217
+ 'brokerage/product_book': 3,
218
+ 'brokerage/transaction_summary': 3,
219
+ 'brokerage/portfolios': 1,
220
+ 'brokerage/portfolios/{portfolio_uuid}': 1,
221
+ 'brokerage/convert/trade/{trade_id}': 1,
222
+ 'brokerage/cfm/balance_summary': 1,
223
+ 'brokerage/cfm/positions': 1,
224
+ 'brokerage/cfm/positions/{product_id}': 1,
225
+ 'brokerage/cfm/sweeps': 1,
226
+ 'brokerage/intx/portfolio/{portfolio_uuid}': 1,
227
+ 'brokerage/intx/positions/{portfolio_uuid}': 1,
228
+ 'brokerage/intx/positions/{portfolio_uuid}/{symbol}': 1,
229
+ },
230
+ 'post': {
231
+ 'brokerage/orders': 1,
232
+ 'brokerage/orders/batch_cancel': 1,
233
+ 'brokerage/orders/edit': 1,
234
+ 'brokerage/orders/edit_preview': 1,
235
+ 'brokerage/orders/preview': 1,
236
+ 'brokerage/portfolios': 1,
237
+ 'brokerage/portfolios/move_funds': 1,
238
+ 'brokerage/convert/quote': 1,
239
+ 'brokerage/convert/trade/{trade_id}': 1,
240
+ 'brokerage/cfm/sweeps/schedule': 1,
241
+ 'brokerage/intx/allocate': 1,
242
+ },
243
+ 'put': {
244
+ 'brokerage/portfolios/{portfolio_uuid}': 1,
245
+ },
246
+ 'delete': {
247
+ 'brokerage/portfolios/{portfolio_uuid}': 1,
248
+ 'brokerage/cfm/sweeps': 1,
249
+ },
245
250
  },
246
251
  },
247
252
  },
@@ -76,7 +76,8 @@ class coinex extends coinex$1 {
76
76
  'fetchIndexOHLCV': false,
77
77
  'fetchIsolatedBorrowRate': true,
78
78
  'fetchIsolatedBorrowRates': true,
79
- 'fetchLeverage': false,
79
+ 'fetchLeverage': 'emulated',
80
+ 'fetchLeverages': true,
80
81
  'fetchLeverageTiers': true,
81
82
  'fetchMarketLeverageTiers': 'emulated',
82
83
  'fetchMarkets': true,
@@ -5342,6 +5343,65 @@ class coinex extends coinex$1 {
5342
5343
  }
5343
5344
  return depositWithdrawFees;
5344
5345
  }
5346
+ async fetchLeverages(symbols = undefined, params = {}) {
5347
+ /**
5348
+ * @method
5349
+ * @name coinex#fetchLeverages
5350
+ * @description fetch the set leverage for all contract and margin markets
5351
+ * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot002_account007_margin_account_settings
5352
+ * @param {string[]} [symbols] a list of unified market symbols
5353
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
5354
+ * @returns {object} a list of [leverage structures]{@link https://docs.ccxt.com/#/?id=leverage-structure}
5355
+ */
5356
+ await this.loadMarkets();
5357
+ symbols = this.marketSymbols(symbols);
5358
+ let market = undefined;
5359
+ if (symbols !== undefined) {
5360
+ const symbol = this.safeValue(symbols, 0);
5361
+ market = this.market(symbol);
5362
+ }
5363
+ let marketType = undefined;
5364
+ [marketType, params] = this.handleMarketTypeAndParams('fetchLeverages', market, params);
5365
+ if (marketType !== 'spot') {
5366
+ throw new errors.NotSupported(this.id + ' fetchLeverages() supports spot margin markets only');
5367
+ }
5368
+ const response = await this.privateGetMarginConfig(params);
5369
+ //
5370
+ // {
5371
+ // "code": 0,
5372
+ // "data": [
5373
+ // {
5374
+ // "market": "BTCUSDT",
5375
+ // "leverage": 10,
5376
+ // "BTC": {
5377
+ // "min_amount": "0.0008",
5378
+ // "max_amount": "200",
5379
+ // "day_rate": "0.0015"
5380
+ // },
5381
+ // "USDT": {
5382
+ // "min_amount": "50",
5383
+ // "max_amount": "500000",
5384
+ // "day_rate": "0.001"
5385
+ // }
5386
+ // },
5387
+ // ],
5388
+ // "message": "Success"
5389
+ // }
5390
+ //
5391
+ const leverages = this.safeList(response, 'data', []);
5392
+ return this.parseLeverages(leverages, symbols, 'market', marketType);
5393
+ }
5394
+ parseLeverage(leverage, market = undefined) {
5395
+ const marketId = this.safeString(leverage, 'market');
5396
+ const leverageValue = this.safeInteger(leverage, 'leverage');
5397
+ return {
5398
+ 'info': leverage,
5399
+ 'symbol': this.safeSymbol(marketId, market, undefined, 'spot'),
5400
+ 'marginMode': undefined,
5401
+ 'longLeverage': leverageValue,
5402
+ 'shortLeverage': leverageValue,
5403
+ };
5404
+ }
5345
5405
  handleMarginModeAndParams(methodName, params = {}, defaultValue = undefined) {
5346
5406
  /**
5347
5407
  * @ignore