ccxt 4.4.85 → 4.4.87
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.
- package/README.md +18 -7
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +16 -9
- package/dist/cjs/src/abstract/bittrade.js +9 -0
- package/dist/cjs/src/abstract/modetrade.js +9 -0
- package/dist/cjs/src/ascendex.js +189 -155
- package/dist/cjs/src/base/Exchange.js +10 -8
- package/dist/cjs/src/bequant.js +1 -1
- package/dist/cjs/src/binance.js +1 -1
- package/dist/cjs/src/bitget.js +5 -4
- package/dist/cjs/src/bitmart.js +1 -1
- package/dist/cjs/src/bitteam.js +31 -0
- package/dist/cjs/src/bittrade.js +2049 -0
- package/dist/cjs/src/coinbase.js +2 -6
- package/dist/cjs/src/coinmetro.js +5 -1
- package/dist/cjs/src/deribit.js +4 -5
- package/dist/cjs/src/derive.js +4 -5
- package/dist/cjs/src/ellipx.js +2 -3
- package/dist/cjs/src/gate.js +92 -76
- package/dist/cjs/src/hollaex.js +107 -49
- package/dist/cjs/src/htx.js +30 -52
- package/dist/cjs/src/hyperliquid.js +36 -20
- package/dist/cjs/src/kraken.js +5 -8
- package/dist/cjs/src/mexc.js +2 -2
- package/dist/cjs/src/modetrade.js +2839 -0
- package/dist/cjs/src/ndax.js +25 -24
- package/dist/cjs/src/okcoin.js +12 -31
- package/dist/cjs/src/okx.js +104 -2
- package/dist/cjs/src/okxus.js +53 -0
- package/dist/cjs/src/onetrading.js +9 -6
- package/dist/cjs/src/oxfun.js +42 -114
- package/dist/cjs/src/paradex.js +10 -1
- package/dist/cjs/src/phemex.js +4 -6
- package/dist/cjs/src/poloniex.js +181 -170
- package/dist/cjs/src/pro/binance.js +1 -0
- package/dist/cjs/src/pro/bittrade.js +605 -0
- package/dist/cjs/src/pro/luno.js +6 -5
- package/dist/cjs/src/pro/mexc.js +3 -0
- package/dist/cjs/src/pro/modetrade.js +1334 -0
- package/dist/cjs/src/pro/okxus.js +38 -0
- package/dist/cjs/src/probit.js +18 -51
- package/dist/cjs/src/timex.js +5 -10
- package/dist/cjs/src/vertex.js +3 -4
- package/dist/cjs/src/whitebit.js +41 -11
- package/dist/cjs/src/woo.js +101 -77
- package/dist/cjs/src/woofipro.js +24 -21
- package/dist/cjs/src/xt.js +36 -44
- package/js/ccxt.d.ts +20 -11
- package/js/ccxt.js +14 -8
- package/js/src/abstract/modetrade.d.ts +122 -0
- package/js/src/abstract/myokx.d.ts +2 -0
- package/js/src/abstract/okx.d.ts +2 -0
- package/js/src/abstract/okxus.d.ts +352 -0
- package/js/src/abstract/okxus.js +11 -0
- package/js/src/ascendex.d.ts +2 -0
- package/js/src/ascendex.js +189 -155
- package/js/src/base/Exchange.js +10 -8
- package/js/src/bequant.js +1 -1
- package/js/src/binance.js +1 -1
- package/js/src/bitget.js +5 -4
- package/js/src/bitmart.js +1 -1
- package/js/src/bitteam.js +31 -0
- package/js/src/{huobijp.d.ts → bittrade.d.ts} +29 -29
- package/js/src/{huobijp.js → bittrade.js} +35 -35
- package/js/src/coinbase.js +2 -6
- package/js/src/coinmetro.js +5 -1
- package/js/src/deribit.js +4 -5
- package/js/src/derive.js +4 -3
- package/js/src/ellipx.d.ts +1 -1
- package/js/src/ellipx.js +3 -5
- package/js/src/gate.js +92 -76
- package/js/src/hollaex.js +107 -49
- package/js/src/htx.js +30 -52
- package/js/src/hyperliquid.js +36 -20
- package/js/src/kraken.js +5 -8
- package/js/src/mexc.js +2 -2
- package/js/src/modetrade.d.ts +475 -0
- package/js/src/modetrade.js +2840 -0
- package/js/src/ndax.js +25 -24
- package/js/src/okcoin.js +12 -31
- package/js/src/okx.d.ts +24 -1
- package/js/src/okx.js +104 -2
- package/js/src/okxus.d.ts +4 -0
- package/js/src/okxus.js +54 -0
- package/js/src/onetrading.js +9 -6
- package/js/src/oxfun.js +42 -114
- package/js/src/paradex.js +10 -1
- package/js/src/phemex.js +4 -6
- package/js/src/poloniex.d.ts +2 -0
- package/js/src/poloniex.js +181 -170
- package/js/src/pro/binance.js +1 -0
- package/js/src/pro/{huobijp.d.ts → bittrade.d.ts} +6 -6
- package/js/src/pro/{huobijp.js → bittrade.js} +7 -7
- package/js/src/pro/luno.js +6 -5
- package/js/src/pro/mexc.js +3 -0
- package/js/src/pro/modetrade.d.ts +155 -0
- package/js/src/pro/modetrade.js +1335 -0
- package/js/src/pro/okxus.d.ts +4 -0
- package/js/src/pro/okxus.js +39 -0
- package/js/src/probit.js +18 -51
- package/js/src/timex.js +5 -10
- package/js/src/vertex.js +3 -4
- package/js/src/whitebit.js +42 -11
- package/js/src/woo.d.ts +2 -0
- package/js/src/woo.js +101 -77
- package/js/src/woofipro.d.ts +2 -1
- package/js/src/woofipro.js +24 -21
- package/js/src/xt.js +36 -44
- package/package.json +1 -1
- package/js/src/abstract/kuna.d.ts +0 -185
- package/js/src/kuna.d.ts +0 -335
- package/js/src/kuna.js +0 -2006
- /package/js/src/abstract/{huobijp.d.ts → bittrade.d.ts} +0 -0
- /package/js/src/abstract/{huobijp.js → bittrade.js} +0 -0
- /package/js/src/abstract/{kuna.js → modetrade.js} +0 -0
package/dist/cjs/ccxt.js
CHANGED
|
@@ -36,6 +36,7 @@ var bitrue = require('./src/bitrue.js');
|
|
|
36
36
|
var bitso = require('./src/bitso.js');
|
|
37
37
|
var bitstamp = require('./src/bitstamp.js');
|
|
38
38
|
var bitteam = require('./src/bitteam.js');
|
|
39
|
+
var bittrade = require('./src/bittrade.js');
|
|
39
40
|
var bitvavo = require('./src/bitvavo.js');
|
|
40
41
|
var blockchaincom = require('./src/blockchaincom.js');
|
|
41
42
|
var blofin = require('./src/blofin.js');
|
|
@@ -76,7 +77,6 @@ var hitbtc = require('./src/hitbtc.js');
|
|
|
76
77
|
var hollaex = require('./src/hollaex.js');
|
|
77
78
|
var htx = require('./src/htx.js');
|
|
78
79
|
var huobi = require('./src/huobi.js');
|
|
79
|
-
var huobijp = require('./src/huobijp.js');
|
|
80
80
|
var hyperliquid = require('./src/hyperliquid.js');
|
|
81
81
|
var independentreserve = require('./src/independentreserve.js');
|
|
82
82
|
var indodax = require('./src/indodax.js');
|
|
@@ -84,18 +84,19 @@ var kraken = require('./src/kraken.js');
|
|
|
84
84
|
var krakenfutures = require('./src/krakenfutures.js');
|
|
85
85
|
var kucoin = require('./src/kucoin.js');
|
|
86
86
|
var kucoinfutures = require('./src/kucoinfutures.js');
|
|
87
|
-
var kuna = require('./src/kuna.js');
|
|
88
87
|
var latoken = require('./src/latoken.js');
|
|
89
88
|
var lbank = require('./src/lbank.js');
|
|
90
89
|
var luno = require('./src/luno.js');
|
|
91
90
|
var mercado = require('./src/mercado.js');
|
|
92
91
|
var mexc = require('./src/mexc.js');
|
|
92
|
+
var modetrade = require('./src/modetrade.js');
|
|
93
93
|
var myokx = require('./src/myokx.js');
|
|
94
94
|
var ndax = require('./src/ndax.js');
|
|
95
95
|
var novadax = require('./src/novadax.js');
|
|
96
96
|
var oceanex = require('./src/oceanex.js');
|
|
97
97
|
var okcoin = require('./src/okcoin.js');
|
|
98
98
|
var okx = require('./src/okx.js');
|
|
99
|
+
var okxus = require('./src/okxus.js');
|
|
99
100
|
var onetrading = require('./src/onetrading.js');
|
|
100
101
|
var oxfun = require('./src/oxfun.js');
|
|
101
102
|
var p2b = require('./src/p2b.js');
|
|
@@ -134,6 +135,7 @@ var bitmex$1 = require('./src/pro/bitmex.js');
|
|
|
134
135
|
var bitopro$1 = require('./src/pro/bitopro.js');
|
|
135
136
|
var bitrue$1 = require('./src/pro/bitrue.js');
|
|
136
137
|
var bitstamp$1 = require('./src/pro/bitstamp.js');
|
|
138
|
+
var bittrade$1 = require('./src/pro/bittrade.js');
|
|
137
139
|
var bitvavo$1 = require('./src/pro/bitvavo.js');
|
|
138
140
|
var blockchaincom$1 = require('./src/pro/blockchaincom.js');
|
|
139
141
|
var blofin$1 = require('./src/pro/blofin.js');
|
|
@@ -160,7 +162,6 @@ var hitbtc$1 = require('./src/pro/hitbtc.js');
|
|
|
160
162
|
var hollaex$1 = require('./src/pro/hollaex.js');
|
|
161
163
|
var htx$1 = require('./src/pro/htx.js');
|
|
162
164
|
var huobi$1 = require('./src/pro/huobi.js');
|
|
163
|
-
var huobijp$1 = require('./src/pro/huobijp.js');
|
|
164
165
|
var hyperliquid$1 = require('./src/pro/hyperliquid.js');
|
|
165
166
|
var independentreserve$1 = require('./src/pro/independentreserve.js');
|
|
166
167
|
var kraken$1 = require('./src/pro/kraken.js');
|
|
@@ -170,10 +171,12 @@ var kucoinfutures$1 = require('./src/pro/kucoinfutures.js');
|
|
|
170
171
|
var lbank$1 = require('./src/pro/lbank.js');
|
|
171
172
|
var luno$1 = require('./src/pro/luno.js');
|
|
172
173
|
var mexc$1 = require('./src/pro/mexc.js');
|
|
174
|
+
var modetrade$1 = require('./src/pro/modetrade.js');
|
|
173
175
|
var myokx$1 = require('./src/pro/myokx.js');
|
|
174
176
|
var ndax$1 = require('./src/pro/ndax.js');
|
|
175
177
|
var okcoin$1 = require('./src/pro/okcoin.js');
|
|
176
178
|
var okx$1 = require('./src/pro/okx.js');
|
|
179
|
+
var okxus$1 = require('./src/pro/okxus.js');
|
|
177
180
|
var onetrading$1 = require('./src/pro/onetrading.js');
|
|
178
181
|
var oxfun$1 = require('./src/pro/oxfun.js');
|
|
179
182
|
var p2b$1 = require('./src/pro/p2b.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.4.
|
|
197
|
+
const version = '4.4.87';
|
|
195
198
|
Exchange["default"].ccxtVersion = version;
|
|
196
199
|
const exchanges = {
|
|
197
200
|
'alpaca': alpaca,
|
|
@@ -218,6 +221,7 @@ const exchanges = {
|
|
|
218
221
|
'bitso': bitso,
|
|
219
222
|
'bitstamp': bitstamp,
|
|
220
223
|
'bitteam': bitteam,
|
|
224
|
+
'bittrade': bittrade,
|
|
221
225
|
'bitvavo': bitvavo,
|
|
222
226
|
'blockchaincom': blockchaincom,
|
|
223
227
|
'blofin': blofin,
|
|
@@ -258,7 +262,6 @@ const exchanges = {
|
|
|
258
262
|
'hollaex': hollaex,
|
|
259
263
|
'htx': htx,
|
|
260
264
|
'huobi': huobi,
|
|
261
|
-
'huobijp': huobijp,
|
|
262
265
|
'hyperliquid': hyperliquid,
|
|
263
266
|
'independentreserve': independentreserve,
|
|
264
267
|
'indodax': indodax,
|
|
@@ -266,18 +269,19 @@ const exchanges = {
|
|
|
266
269
|
'krakenfutures': krakenfutures,
|
|
267
270
|
'kucoin': kucoin,
|
|
268
271
|
'kucoinfutures': kucoinfutures,
|
|
269
|
-
'kuna': kuna,
|
|
270
272
|
'latoken': latoken,
|
|
271
273
|
'lbank': lbank,
|
|
272
274
|
'luno': luno,
|
|
273
275
|
'mercado': mercado,
|
|
274
276
|
'mexc': mexc,
|
|
277
|
+
'modetrade': modetrade,
|
|
275
278
|
'myokx': myokx,
|
|
276
279
|
'ndax': ndax,
|
|
277
280
|
'novadax': novadax,
|
|
278
281
|
'oceanex': oceanex,
|
|
279
282
|
'okcoin': okcoin,
|
|
280
283
|
'okx': okx,
|
|
284
|
+
'okxus': okxus,
|
|
281
285
|
'onetrading': onetrading,
|
|
282
286
|
'oxfun': oxfun,
|
|
283
287
|
'p2b': p2b,
|
|
@@ -318,6 +322,7 @@ const pro = {
|
|
|
318
322
|
'bitopro': bitopro$1,
|
|
319
323
|
'bitrue': bitrue$1,
|
|
320
324
|
'bitstamp': bitstamp$1,
|
|
325
|
+
'bittrade': bittrade$1,
|
|
321
326
|
'bitvavo': bitvavo$1,
|
|
322
327
|
'blockchaincom': blockchaincom$1,
|
|
323
328
|
'blofin': blofin$1,
|
|
@@ -344,7 +349,6 @@ const pro = {
|
|
|
344
349
|
'hollaex': hollaex$1,
|
|
345
350
|
'htx': htx$1,
|
|
346
351
|
'huobi': huobi$1,
|
|
347
|
-
'huobijp': huobijp$1,
|
|
348
352
|
'hyperliquid': hyperliquid$1,
|
|
349
353
|
'independentreserve': independentreserve$1,
|
|
350
354
|
'kraken': kraken$1,
|
|
@@ -354,10 +358,12 @@ const pro = {
|
|
|
354
358
|
'lbank': lbank$1,
|
|
355
359
|
'luno': luno$1,
|
|
356
360
|
'mexc': mexc$1,
|
|
361
|
+
'modetrade': modetrade$1,
|
|
357
362
|
'myokx': myokx$1,
|
|
358
363
|
'ndax': ndax$1,
|
|
359
364
|
'okcoin': okcoin$1,
|
|
360
365
|
'okx': okx$1,
|
|
366
|
+
'okxus': okxus$1,
|
|
361
367
|
'onetrading': onetrading$1,
|
|
362
368
|
'oxfun': oxfun$1,
|
|
363
369
|
'p2b': p2b$1,
|
|
@@ -447,6 +453,7 @@ exports.bitrue = bitrue;
|
|
|
447
453
|
exports.bitso = bitso;
|
|
448
454
|
exports.bitstamp = bitstamp;
|
|
449
455
|
exports.bitteam = bitteam;
|
|
456
|
+
exports.bittrade = bittrade;
|
|
450
457
|
exports.bitvavo = bitvavo;
|
|
451
458
|
exports.blockchaincom = blockchaincom;
|
|
452
459
|
exports.blofin = blofin;
|
|
@@ -487,7 +494,6 @@ exports.hitbtc = hitbtc;
|
|
|
487
494
|
exports.hollaex = hollaex;
|
|
488
495
|
exports.htx = htx;
|
|
489
496
|
exports.huobi = huobi;
|
|
490
|
-
exports.huobijp = huobijp;
|
|
491
497
|
exports.hyperliquid = hyperliquid;
|
|
492
498
|
exports.independentreserve = independentreserve;
|
|
493
499
|
exports.indodax = indodax;
|
|
@@ -495,18 +501,19 @@ exports.kraken = kraken;
|
|
|
495
501
|
exports.krakenfutures = krakenfutures;
|
|
496
502
|
exports.kucoin = kucoin;
|
|
497
503
|
exports.kucoinfutures = kucoinfutures;
|
|
498
|
-
exports.kuna = kuna;
|
|
499
504
|
exports.latoken = latoken;
|
|
500
505
|
exports.lbank = lbank;
|
|
501
506
|
exports.luno = luno;
|
|
502
507
|
exports.mercado = mercado;
|
|
503
508
|
exports.mexc = mexc;
|
|
509
|
+
exports.modetrade = modetrade;
|
|
504
510
|
exports.myokx = myokx;
|
|
505
511
|
exports.ndax = ndax;
|
|
506
512
|
exports.novadax = novadax;
|
|
507
513
|
exports.oceanex = oceanex;
|
|
508
514
|
exports.okcoin = okcoin;
|
|
509
515
|
exports.okx = okx;
|
|
516
|
+
exports.okxus = okxus;
|
|
510
517
|
exports.onetrading = onetrading;
|
|
511
518
|
exports.oxfun = oxfun;
|
|
512
519
|
exports.p2b = p2b;
|
package/dist/cjs/src/ascendex.js
CHANGED
|
@@ -466,6 +466,7 @@ class ascendex extends ascendex$1 {
|
|
|
466
466
|
'broad': {},
|
|
467
467
|
},
|
|
468
468
|
'commonCurrencies': {
|
|
469
|
+
'XBT': 'XBT',
|
|
469
470
|
'BOND': 'BONDED',
|
|
470
471
|
'BTCBEAR': 'BEAR',
|
|
471
472
|
'BTCBULL': 'BULL',
|
|
@@ -488,116 +489,83 @@ class ascendex extends ascendex$1 {
|
|
|
488
489
|
* @returns {object} an associative dictionary of currencies
|
|
489
490
|
*/
|
|
490
491
|
async fetchCurrencies(params = {}) {
|
|
491
|
-
const
|
|
492
|
-
//
|
|
493
|
-
// {
|
|
494
|
-
// "code":0,
|
|
495
|
-
// "data":[
|
|
496
|
-
// {
|
|
497
|
-
// "assetCode" : "LTCBULL",
|
|
498
|
-
// "assetName" : "3X Long LTC Token",
|
|
499
|
-
// "precisionScale" : 9,
|
|
500
|
-
// "nativeScale" : 4,
|
|
501
|
-
// "withdrawalFee" : "0.2",
|
|
502
|
-
// "minWithdrawalAmt" : "1.0",
|
|
503
|
-
// "status" : "Normal"
|
|
504
|
-
// },
|
|
505
|
-
// ]
|
|
506
|
-
// }
|
|
507
|
-
//
|
|
508
|
-
const marginPromise = this.v1PublicGetMarginAssets(params);
|
|
509
|
-
//
|
|
510
|
-
// {
|
|
511
|
-
// "code":0,
|
|
512
|
-
// "data":[
|
|
513
|
-
// {
|
|
514
|
-
// "assetCode":"BTT",
|
|
515
|
-
// "displayName": "BTT",
|
|
516
|
-
// "borrowAssetCode":"BTT-B",
|
|
517
|
-
// "interestAssetCode":"BTT-I",
|
|
518
|
-
// "nativeScale":0,
|
|
519
|
-
// "numConfirmations":1,
|
|
520
|
-
// "withdrawFee":"100.0",
|
|
521
|
-
// "minWithdrawalAmt":"1000.0",
|
|
522
|
-
// "statusCode":"Normal",
|
|
523
|
-
// "statusMessage":"",
|
|
524
|
-
// "interestRate":"0.001"
|
|
525
|
-
// }
|
|
526
|
-
// ]
|
|
527
|
-
// }
|
|
528
|
-
//
|
|
529
|
-
const cashPromise = this.v1PublicGetCashAssets(params);
|
|
492
|
+
const response = await this.v2PublicGetAssets(params);
|
|
530
493
|
//
|
|
531
|
-
//
|
|
532
|
-
//
|
|
533
|
-
//
|
|
534
|
-
//
|
|
535
|
-
//
|
|
536
|
-
//
|
|
537
|
-
//
|
|
538
|
-
//
|
|
539
|
-
//
|
|
540
|
-
//
|
|
541
|
-
//
|
|
542
|
-
//
|
|
543
|
-
//
|
|
494
|
+
// {
|
|
495
|
+
// "code": "0",
|
|
496
|
+
// "data": [
|
|
497
|
+
// {
|
|
498
|
+
// "assetCode": "USDT",
|
|
499
|
+
// "assetName": "Tether",
|
|
500
|
+
// "precisionScale": 9,
|
|
501
|
+
// "nativeScale": 4,
|
|
502
|
+
// "blockChain": [
|
|
503
|
+
// {
|
|
504
|
+
// "chainName": "Solana",
|
|
505
|
+
// "withdrawFee": "2.0",
|
|
506
|
+
// "allowDeposit": true,
|
|
507
|
+
// "allowWithdraw": true,
|
|
508
|
+
// "minDepositAmt": "0.01",
|
|
509
|
+
// "minWithdrawal": "4.0",
|
|
510
|
+
// "numConfirmations": 1
|
|
511
|
+
// },
|
|
512
|
+
// ...
|
|
513
|
+
// ]
|
|
514
|
+
// },
|
|
544
515
|
// ]
|
|
545
|
-
//
|
|
516
|
+
// }
|
|
546
517
|
//
|
|
547
|
-
const
|
|
548
|
-
const assetsData = this.safeList(assets, 'data', []);
|
|
549
|
-
const marginData = this.safeList(margin, 'data', []);
|
|
550
|
-
const cashData = this.safeList(cash, 'data', []);
|
|
551
|
-
const assetsById = this.indexBy(assetsData, 'assetCode');
|
|
552
|
-
const marginById = this.indexBy(marginData, 'assetCode');
|
|
553
|
-
const cashById = this.indexBy(cashData, 'assetCode');
|
|
554
|
-
const dataById = this.deepExtend(assetsById, marginById, cashById);
|
|
555
|
-
const ids = Object.keys(dataById);
|
|
518
|
+
const data = this.safeList(response, 'data', []);
|
|
556
519
|
const result = {};
|
|
557
|
-
for (let i = 0; i <
|
|
558
|
-
const
|
|
559
|
-
const
|
|
520
|
+
for (let i = 0; i < data.length; i++) {
|
|
521
|
+
const currency = data[i];
|
|
522
|
+
const id = this.safeString(currency, 'assetCode');
|
|
560
523
|
const code = this.safeCurrencyCode(id);
|
|
561
|
-
const
|
|
562
|
-
const precision = this.parseNumber(this.parsePrecision(
|
|
563
|
-
const
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
524
|
+
const chains = this.safeList(currency, 'blockChain', []);
|
|
525
|
+
const precision = this.parseNumber(this.parsePrecision(this.safeString(currency, 'nativeScale')));
|
|
526
|
+
const networks = {};
|
|
527
|
+
for (let j = 0; j < chains.length; j++) {
|
|
528
|
+
const networkEtnry = chains[j];
|
|
529
|
+
const networkId = this.safeString(networkEtnry, 'chainName');
|
|
530
|
+
const networkCode = this.networkCodeToId(networkId);
|
|
531
|
+
networks[networkCode] = {
|
|
532
|
+
'fee': this.safeNumber(networkEtnry, 'withdrawFee'),
|
|
533
|
+
'active': undefined,
|
|
534
|
+
'withdraw': this.safeBool(networkEtnry, 'allowWithdraw'),
|
|
535
|
+
'deposit': this.safeBool(networkEtnry, 'allowDeposit'),
|
|
536
|
+
'precision': precision,
|
|
537
|
+
'limits': {
|
|
538
|
+
'amount': {
|
|
539
|
+
'min': undefined,
|
|
540
|
+
'max': undefined,
|
|
541
|
+
},
|
|
542
|
+
'withdraw': {
|
|
543
|
+
'min': this.safeNumber(networkEtnry, 'minWithdrawal'),
|
|
544
|
+
'max': undefined,
|
|
545
|
+
},
|
|
546
|
+
'deposit': {
|
|
547
|
+
'min': this.safeNumber(networkEtnry, 'minDepositAmt'),
|
|
548
|
+
'max': undefined,
|
|
549
|
+
},
|
|
550
|
+
},
|
|
551
|
+
};
|
|
584
552
|
}
|
|
585
|
-
|
|
586
|
-
result[code] = {
|
|
553
|
+
// todo type: if (chainsLength === 0 && (assetName.endsWith (' Staking') || assetName.indexOf (' Reward ') >= 0 || assetName.indexOf ('Slot Auction') >= 0 || assetName.indexOf (' Freeze Asset') >= 0))
|
|
554
|
+
result[code] = this.safeCurrencyStructure({
|
|
587
555
|
'id': id,
|
|
588
556
|
'code': code,
|
|
589
557
|
'info': currency,
|
|
590
558
|
'type': undefined,
|
|
591
|
-
'margin':
|
|
559
|
+
'margin': undefined,
|
|
592
560
|
'name': this.safeString(currency, 'assetName'),
|
|
593
|
-
'active':
|
|
594
|
-
'deposit':
|
|
595
|
-
'withdraw':
|
|
596
|
-
'fee':
|
|
561
|
+
'active': undefined,
|
|
562
|
+
'deposit': undefined,
|
|
563
|
+
'withdraw': undefined,
|
|
564
|
+
'fee': undefined,
|
|
597
565
|
'precision': precision,
|
|
598
566
|
'limits': {
|
|
599
567
|
'amount': {
|
|
600
|
-
'min':
|
|
568
|
+
'min': undefined,
|
|
601
569
|
'max': undefined,
|
|
602
570
|
},
|
|
603
571
|
'withdraw': {
|
|
@@ -605,8 +573,8 @@ class ascendex extends ascendex$1 {
|
|
|
605
573
|
'max': undefined,
|
|
606
574
|
},
|
|
607
575
|
},
|
|
608
|
-
'networks':
|
|
609
|
-
};
|
|
576
|
+
'networks': networks,
|
|
577
|
+
});
|
|
610
578
|
}
|
|
611
579
|
return result;
|
|
612
580
|
}
|
|
@@ -618,6 +586,12 @@ class ascendex extends ascendex$1 {
|
|
|
618
586
|
* @returns {object[]} an array of objects representing market data
|
|
619
587
|
*/
|
|
620
588
|
async fetchMarkets(params = {}) {
|
|
589
|
+
const spotPromise = this.fetchSpotMarkets(params);
|
|
590
|
+
const contractPromise = this.fetchContractMarkets(params);
|
|
591
|
+
const [spotMarkets, contractMarkets] = await Promise.all([spotPromise, contractPromise]);
|
|
592
|
+
return this.arrayConcat(spotMarkets, contractMarkets);
|
|
593
|
+
}
|
|
594
|
+
async fetchSpotMarkets(params = {}) {
|
|
621
595
|
const productsPromise = this.v1PublicGetProducts(params);
|
|
622
596
|
//
|
|
623
597
|
// {
|
|
@@ -669,7 +643,94 @@ class ascendex extends ascendex$1 {
|
|
|
669
643
|
// ]
|
|
670
644
|
// }
|
|
671
645
|
//
|
|
672
|
-
const
|
|
646
|
+
const [products, cash] = await Promise.all([productsPromise, cashPromise]);
|
|
647
|
+
const productsData = this.safeList(products, 'data', []);
|
|
648
|
+
const productsById = this.indexBy(productsData, 'symbol');
|
|
649
|
+
const cashData = this.safeList(cash, 'data', []);
|
|
650
|
+
const cashAndPerpetualsById = this.indexBy(cashData, 'symbol');
|
|
651
|
+
const dataById = this.deepExtend(productsById, cashAndPerpetualsById);
|
|
652
|
+
const ids = Object.keys(dataById);
|
|
653
|
+
const result = [];
|
|
654
|
+
for (let i = 0; i < ids.length; i++) {
|
|
655
|
+
const id = ids[i];
|
|
656
|
+
if (id.indexOf('-PERP') >= 0) {
|
|
657
|
+
continue; // skip perpetuals, as separate endpoint returns them
|
|
658
|
+
}
|
|
659
|
+
const market = dataById[id];
|
|
660
|
+
const status = this.safeString(market, 'status');
|
|
661
|
+
const domain = this.safeString(market, 'domain');
|
|
662
|
+
let active = false;
|
|
663
|
+
if (((status === 'Normal') || (status === 'InternalTrading')) && (domain !== 'LeveragedETF')) {
|
|
664
|
+
active = true;
|
|
665
|
+
}
|
|
666
|
+
const minQty = this.safeNumber(market, 'minQty');
|
|
667
|
+
const maxQty = this.safeNumber(market, 'maxQty');
|
|
668
|
+
const minPrice = this.safeNumber(market, 'tickSize');
|
|
669
|
+
const maxPrice = undefined;
|
|
670
|
+
const underlying = this.safeString2(market, 'underlying', 'symbol');
|
|
671
|
+
const parts = underlying.split('/');
|
|
672
|
+
const baseId = this.safeString(parts, 0);
|
|
673
|
+
const quoteId = this.safeString(parts, 1);
|
|
674
|
+
const base = this.safeCurrencyCode(baseId);
|
|
675
|
+
const quote = this.safeCurrencyCode(quoteId);
|
|
676
|
+
const fee = this.safeNumber(market, 'commissionReserveRate');
|
|
677
|
+
const marginTradable = this.safeBool(market, 'marginTradable', false);
|
|
678
|
+
result.push({
|
|
679
|
+
'id': id,
|
|
680
|
+
'symbol': base + '/' + quote,
|
|
681
|
+
'base': base,
|
|
682
|
+
'baseId': baseId,
|
|
683
|
+
'quote': quote,
|
|
684
|
+
'quoteId': quoteId,
|
|
685
|
+
'settle': undefined,
|
|
686
|
+
'settleId': undefined,
|
|
687
|
+
'type': 'spot',
|
|
688
|
+
'spot': true,
|
|
689
|
+
'margin': marginTradable,
|
|
690
|
+
'swap': false,
|
|
691
|
+
'future': false,
|
|
692
|
+
'option': false,
|
|
693
|
+
'active': active,
|
|
694
|
+
'contract': false,
|
|
695
|
+
'linear': undefined,
|
|
696
|
+
'inverse': undefined,
|
|
697
|
+
'taker': fee,
|
|
698
|
+
'maker': fee,
|
|
699
|
+
'contractSize': undefined,
|
|
700
|
+
'expiry': undefined,
|
|
701
|
+
'expiryDatetime': undefined,
|
|
702
|
+
'strike': undefined,
|
|
703
|
+
'optionType': undefined,
|
|
704
|
+
'precision': {
|
|
705
|
+
'amount': this.safeNumber(market, 'lotSize'),
|
|
706
|
+
'price': this.safeNumber(market, 'tickSize'),
|
|
707
|
+
},
|
|
708
|
+
'limits': {
|
|
709
|
+
'leverage': {
|
|
710
|
+
'min': undefined,
|
|
711
|
+
'max': undefined,
|
|
712
|
+
},
|
|
713
|
+
'amount': {
|
|
714
|
+
'min': minQty,
|
|
715
|
+
'max': maxQty,
|
|
716
|
+
},
|
|
717
|
+
'price': {
|
|
718
|
+
'min': minPrice,
|
|
719
|
+
'max': maxPrice,
|
|
720
|
+
},
|
|
721
|
+
'cost': {
|
|
722
|
+
'min': this.safeNumber(market, 'minNotional'),
|
|
723
|
+
'max': this.safeNumber(market, 'maxNotional'),
|
|
724
|
+
},
|
|
725
|
+
},
|
|
726
|
+
'created': this.safeInteger(market, 'tradingStartTime'),
|
|
727
|
+
'info': market,
|
|
728
|
+
});
|
|
729
|
+
}
|
|
730
|
+
return result;
|
|
731
|
+
}
|
|
732
|
+
async fetchContractMarkets(params = {}) {
|
|
733
|
+
const contracts = await this.v2PublicGetFuturesContract(params);
|
|
673
734
|
//
|
|
674
735
|
// {
|
|
675
736
|
// "code": 0,
|
|
@@ -682,9 +743,9 @@ class ascendex extends ascendex$1 {
|
|
|
682
743
|
// "underlying": "BTC/USDT",
|
|
683
744
|
// "tradingStartTime": 1579701600000,
|
|
684
745
|
// "priceFilter": {
|
|
685
|
-
// "minPrice": "1",
|
|
746
|
+
// "minPrice": "0.1",
|
|
686
747
|
// "maxPrice": "1000000",
|
|
687
|
-
// "tickSize": "1"
|
|
748
|
+
// "tickSize": "0.1"
|
|
688
749
|
// },
|
|
689
750
|
// "lotSizeFilter": {
|
|
690
751
|
// "minQty": "0.0001",
|
|
@@ -707,52 +768,25 @@ class ascendex extends ascendex$1 {
|
|
|
707
768
|
// ]
|
|
708
769
|
// }
|
|
709
770
|
//
|
|
710
|
-
const
|
|
711
|
-
const productsData = this.safeList(products, 'data', []);
|
|
712
|
-
const productsById = this.indexBy(productsData, 'symbol');
|
|
713
|
-
const cashData = this.safeList(cash, 'data', []);
|
|
714
|
-
const perpetualsData = this.safeList(perpetuals, 'data', []);
|
|
715
|
-
const cashAndPerpetualsData = this.arrayConcat(cashData, perpetualsData);
|
|
716
|
-
const cashAndPerpetualsById = this.indexBy(cashAndPerpetualsData, 'symbol');
|
|
717
|
-
const dataById = this.deepExtend(productsById, cashAndPerpetualsById);
|
|
718
|
-
const ids = Object.keys(dataById);
|
|
771
|
+
const data = this.safeList(contracts, 'data', []);
|
|
719
772
|
const result = [];
|
|
720
|
-
for (let i = 0; i <
|
|
721
|
-
const
|
|
722
|
-
const
|
|
723
|
-
const
|
|
724
|
-
const settle = this.safeCurrencyCode(settleId);
|
|
725
|
-
const status = this.safeString(market, 'status');
|
|
726
|
-
const domain = this.safeString(market, 'domain');
|
|
727
|
-
let active = false;
|
|
728
|
-
if (((status === 'Normal') || (status === 'InternalTrading')) && (domain !== 'LeveragedETF')) {
|
|
729
|
-
active = true;
|
|
730
|
-
}
|
|
731
|
-
const spot = settle === undefined;
|
|
732
|
-
const swap = !spot;
|
|
733
|
-
const linear = swap ? true : undefined;
|
|
734
|
-
let minQty = this.safeNumber(market, 'minQty');
|
|
735
|
-
let maxQty = this.safeNumber(market, 'maxQty');
|
|
736
|
-
let minPrice = this.safeNumber(market, 'tickSize');
|
|
737
|
-
let maxPrice = undefined;
|
|
738
|
-
const underlying = this.safeString2(market, 'underlying', 'symbol');
|
|
773
|
+
for (let i = 0; i < data.length; i++) {
|
|
774
|
+
const market = data[i];
|
|
775
|
+
const id = this.safeString(market, 'symbol');
|
|
776
|
+
const underlying = this.safeString(market, 'underlying');
|
|
739
777
|
const parts = underlying.split('/');
|
|
740
778
|
const baseId = this.safeString(parts, 0);
|
|
741
|
-
const quoteId = this.safeString(parts, 1);
|
|
742
779
|
const base = this.safeCurrencyCode(baseId);
|
|
780
|
+
const quoteId = this.safeString(parts, 1);
|
|
743
781
|
const quote = this.safeCurrencyCode(quoteId);
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
maxPrice = this.safeNumber(priceFilter, 'maxPrice');
|
|
752
|
-
symbol = base + '/' + quote + ':' + settle;
|
|
753
|
-
}
|
|
782
|
+
const settleId = this.safeString(market, 'settlementAsset');
|
|
783
|
+
const settle = this.safeCurrencyCode(settleId);
|
|
784
|
+
const linear = settle === quote;
|
|
785
|
+
const inverse = settle === base;
|
|
786
|
+
const symbol = base + '/' + quote + ':' + settle;
|
|
787
|
+
const priceFilter = this.safeDict(market, 'priceFilter');
|
|
788
|
+
const lotSizeFilter = this.safeDict(market, 'lotSizeFilter');
|
|
754
789
|
const fee = this.safeNumber(market, 'commissionReserveRate');
|
|
755
|
-
const marginTradable = this.safeBool(market, 'marginTradable', false);
|
|
756
790
|
result.push({
|
|
757
791
|
'id': id,
|
|
758
792
|
'symbol': symbol,
|
|
@@ -762,26 +796,26 @@ class ascendex extends ascendex$1 {
|
|
|
762
796
|
'baseId': baseId,
|
|
763
797
|
'quoteId': quoteId,
|
|
764
798
|
'settleId': settleId,
|
|
765
|
-
'type':
|
|
766
|
-
'spot':
|
|
767
|
-
'margin':
|
|
768
|
-
'swap':
|
|
799
|
+
'type': 'swap',
|
|
800
|
+
'spot': false,
|
|
801
|
+
'margin': undefined,
|
|
802
|
+
'swap': true,
|
|
769
803
|
'future': false,
|
|
770
804
|
'option': false,
|
|
771
|
-
'active':
|
|
772
|
-
'contract':
|
|
805
|
+
'active': this.safeString(market, 'status') === 'Normal',
|
|
806
|
+
'contract': true,
|
|
773
807
|
'linear': linear,
|
|
774
|
-
'inverse':
|
|
808
|
+
'inverse': inverse,
|
|
775
809
|
'taker': fee,
|
|
776
810
|
'maker': fee,
|
|
777
|
-
'contractSize':
|
|
811
|
+
'contractSize': this.parseNumber('1'),
|
|
778
812
|
'expiry': undefined,
|
|
779
813
|
'expiryDatetime': undefined,
|
|
780
814
|
'strike': undefined,
|
|
781
815
|
'optionType': undefined,
|
|
782
816
|
'precision': {
|
|
783
|
-
'amount': this.safeNumber(
|
|
784
|
-
'price': this.safeNumber(
|
|
817
|
+
'amount': this.safeNumber(lotSizeFilter, 'lotSize'),
|
|
818
|
+
'price': this.safeNumber(priceFilter, 'tickSize'),
|
|
785
819
|
},
|
|
786
820
|
'limits': {
|
|
787
821
|
'leverage': {
|
|
@@ -789,12 +823,12 @@ class ascendex extends ascendex$1 {
|
|
|
789
823
|
'max': undefined,
|
|
790
824
|
},
|
|
791
825
|
'amount': {
|
|
792
|
-
'min': minQty,
|
|
793
|
-
'max': maxQty,
|
|
826
|
+
'min': this.safeNumber(lotSizeFilter, 'minQty'),
|
|
827
|
+
'max': this.safeNumber(lotSizeFilter, 'maxQty'),
|
|
794
828
|
},
|
|
795
829
|
'price': {
|
|
796
|
-
'min': minPrice,
|
|
797
|
-
'max': maxPrice,
|
|
830
|
+
'min': this.safeNumber(priceFilter, 'minPrice'),
|
|
831
|
+
'max': this.safeNumber(priceFilter, 'maxPrice'),
|
|
798
832
|
},
|
|
799
833
|
'cost': {
|
|
800
834
|
'min': this.safeNumber(market, 'minNotional'),
|