ccxt 4.3.2 → 4.3.3
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 +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +22 -0
- package/dist/cjs/src/binance.js +320 -21
- package/dist/cjs/src/bingx.js +2 -2
- package/dist/cjs/src/bitget.js +76 -1
- package/dist/cjs/src/coinbase.js +9 -1
- package/dist/cjs/src/hyperliquid.js +87 -13
- package/dist/cjs/src/okx.js +116 -0
- package/dist/cjs/src/poloniexfutures.js +12 -2
- package/dist/cjs/src/pro/hyperliquid.js +8 -7
- package/dist/cjs/src/pro/kraken.js +1 -1
- package/dist/cjs/src/pro/wazirx.js +2 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +27 -2
- package/dist/cjs/src/woo.js +110 -6
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/base/Exchange.d.ts +1 -0
- package/js/src/base/Exchange.js +22 -0
- package/js/src/binance.d.ts +3 -0
- package/js/src/binance.js +320 -21
- package/js/src/bingx.js +3 -3
- package/js/src/bitget.d.ts +1 -0
- package/js/src/bitget.js +76 -1
- package/js/src/coinbase.js +9 -1
- package/js/src/coinbasepro.d.ts +1 -1
- package/js/src/hyperliquid.d.ts +1 -0
- package/js/src/hyperliquid.js +87 -13
- package/js/src/okx.d.ts +2 -0
- package/js/src/okx.js +116 -0
- package/js/src/poloniexfutures.js +12 -2
- package/js/src/pro/hyperliquid.js +8 -7
- package/js/src/pro/kraken.js +1 -1
- package/js/src/pro/wazirx.js +2 -1
- package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.d.ts +2 -2
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
- package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.d.ts +24 -357
- package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +27 -0
- package/js/src/woo.d.ts +2 -0
- package/js/src/woo.js +110 -6
- package/package.json +1 -1
package/js/src/hyperliquid.js
CHANGED
|
@@ -315,6 +315,7 @@ export default class hyperliquid extends Exchange {
|
|
|
315
315
|
// ]
|
|
316
316
|
// ]
|
|
317
317
|
//
|
|
318
|
+
//
|
|
318
319
|
let meta = this.safeDict(response, 0, {});
|
|
319
320
|
meta = this.safeList(meta, 'universe', []);
|
|
320
321
|
const assetCtxs = this.safeDict(response, 1, {});
|
|
@@ -373,10 +374,70 @@ export default class hyperliquid extends Exchange {
|
|
|
373
374
|
// },
|
|
374
375
|
// ],
|
|
375
376
|
// ];
|
|
377
|
+
// mainnet
|
|
378
|
+
// [
|
|
379
|
+
// {
|
|
380
|
+
// "canonical_tokens2":[
|
|
381
|
+
// 0,
|
|
382
|
+
// 1
|
|
383
|
+
// ],
|
|
384
|
+
// "spot_infos":[
|
|
385
|
+
// {
|
|
386
|
+
// "name":"PURR/USDC",
|
|
387
|
+
// "tokens":[
|
|
388
|
+
// 1,
|
|
389
|
+
// 0
|
|
390
|
+
// ]
|
|
391
|
+
// }
|
|
392
|
+
// ],
|
|
393
|
+
// "token_id_to_token":[
|
|
394
|
+
// [
|
|
395
|
+
// "0x6d1e7cde53ba9467b783cb7c530ce054",
|
|
396
|
+
// 0
|
|
397
|
+
// ],
|
|
398
|
+
// [
|
|
399
|
+
// "0xc1fb593aeffbeb02f85e0308e9956a90",
|
|
400
|
+
// 1
|
|
401
|
+
// ]
|
|
402
|
+
// ],
|
|
403
|
+
// "token_infos":[
|
|
404
|
+
// {
|
|
405
|
+
// "deployer":null,
|
|
406
|
+
// "spec":{
|
|
407
|
+
// "name":"USDC",
|
|
408
|
+
// "szDecimals":"8",
|
|
409
|
+
// "weiDecimals":"8"
|
|
410
|
+
// },
|
|
411
|
+
// "spots":[
|
|
412
|
+
// ]
|
|
413
|
+
// },
|
|
414
|
+
// {
|
|
415
|
+
// "deployer":null,
|
|
416
|
+
// "spec":{
|
|
417
|
+
// "name":"PURR",
|
|
418
|
+
// "szDecimals":"0",
|
|
419
|
+
// "weiDecimals":"5"
|
|
420
|
+
// },
|
|
421
|
+
// "spots":[
|
|
422
|
+
// 0
|
|
423
|
+
// ]
|
|
424
|
+
// }
|
|
425
|
+
// ]
|
|
426
|
+
// },
|
|
427
|
+
// [
|
|
428
|
+
// {
|
|
429
|
+
// "dayNtlVlm":"35001170.16631",
|
|
430
|
+
// "markPx":"0.15743",
|
|
431
|
+
// "midPx":"0.157555",
|
|
432
|
+
// "prevDayPx":"0.158"
|
|
433
|
+
// }
|
|
434
|
+
// ]
|
|
435
|
+
// ]
|
|
376
436
|
//
|
|
437
|
+
// response differs depending on the environment (mainnet vs sandbox)
|
|
377
438
|
const first = this.safeDict(response, 0, {});
|
|
378
|
-
const meta = this.
|
|
379
|
-
const tokens = this.
|
|
439
|
+
const meta = this.safeList2(first, 'universe', 'spot_infos', []);
|
|
440
|
+
const tokens = this.safeList2(first, 'tokens', 'token_infos', []);
|
|
380
441
|
const markets = [];
|
|
381
442
|
for (let i = 0; i < meta.length; i++) {
|
|
382
443
|
const market = this.safeDict(meta, i, {});
|
|
@@ -392,14 +453,16 @@ export default class hyperliquid extends Exchange {
|
|
|
392
453
|
const maker = this.safeNumber(fees, 'maker');
|
|
393
454
|
const tokensPos = this.safeList(market, 'tokens', []);
|
|
394
455
|
const baseTokenPos = this.safeInteger(tokensPos, 0);
|
|
395
|
-
const quoteTokenPos = this.safeInteger(tokensPos, 1);
|
|
456
|
+
// const quoteTokenPos = this.safeInteger (tokensPos, 1);
|
|
396
457
|
const baseTokenInfo = this.safeDict(tokens, baseTokenPos, {});
|
|
397
|
-
const quoteTokenInfo = this.safeDict(tokens, quoteTokenPos, {});
|
|
398
|
-
const
|
|
399
|
-
const
|
|
458
|
+
// const quoteTokenInfo = this.safeDict (tokens, quoteTokenPos, {});
|
|
459
|
+
const innerBaseTokenInfo = this.safeDict(baseTokenInfo, 'spec', baseTokenInfo);
|
|
460
|
+
// const innerQuoteTokenInfo = this.safeDict (quoteTokenInfo, 'spec', quoteTokenInfo);
|
|
461
|
+
const amountPrecision = this.parseNumber(this.parsePrecision(this.safeString(innerBaseTokenInfo, 'szDecimals')));
|
|
462
|
+
// const quotePrecision = this.parseNumber (this.parsePrecision (this.safeString (innerQuoteTokenInfo, 'szDecimals')));
|
|
400
463
|
const baseId = this.numberToString(i + 10000);
|
|
401
464
|
markets.push(this.safeMarketStructure({
|
|
402
|
-
'id':
|
|
465
|
+
'id': marketName,
|
|
403
466
|
'symbol': symbol,
|
|
404
467
|
'base': base,
|
|
405
468
|
'quote': quote,
|
|
@@ -409,14 +472,15 @@ export default class hyperliquid extends Exchange {
|
|
|
409
472
|
'settleId': undefined,
|
|
410
473
|
'type': 'spot',
|
|
411
474
|
'spot': true,
|
|
475
|
+
'subType': undefined,
|
|
412
476
|
'margin': undefined,
|
|
413
477
|
'swap': false,
|
|
414
478
|
'future': false,
|
|
415
479
|
'option': false,
|
|
416
480
|
'active': true,
|
|
417
481
|
'contract': false,
|
|
418
|
-
'linear':
|
|
419
|
-
'inverse':
|
|
482
|
+
'linear': undefined,
|
|
483
|
+
'inverse': undefined,
|
|
420
484
|
'taker': taker,
|
|
421
485
|
'maker': maker,
|
|
422
486
|
'contractSize': undefined,
|
|
@@ -425,8 +489,8 @@ export default class hyperliquid extends Exchange {
|
|
|
425
489
|
'strike': undefined,
|
|
426
490
|
'optionType': undefined,
|
|
427
491
|
'precision': {
|
|
428
|
-
'amount':
|
|
429
|
-
'price':
|
|
492
|
+
'amount': amountPrecision,
|
|
493
|
+
'price': 5, // significant digits
|
|
430
494
|
},
|
|
431
495
|
'limits': {
|
|
432
496
|
'leverage': {
|
|
@@ -642,7 +706,7 @@ export default class hyperliquid extends Exchange {
|
|
|
642
706
|
const market = this.market(symbol);
|
|
643
707
|
const request = {
|
|
644
708
|
'type': 'l2Book',
|
|
645
|
-
'coin': market['base'],
|
|
709
|
+
'coin': market['swap'] ? market['base'] : market['id'],
|
|
646
710
|
};
|
|
647
711
|
const response = await this.publicPostInfo(this.extend(request, params));
|
|
648
712
|
//
|
|
@@ -702,7 +766,7 @@ export default class hyperliquid extends Exchange {
|
|
|
702
766
|
const request = {
|
|
703
767
|
'type': 'candleSnapshot',
|
|
704
768
|
'req': {
|
|
705
|
-
'coin': market['base'],
|
|
769
|
+
'coin': market['swap'] ? market['base'] : market['id'],
|
|
706
770
|
'interval': timeframe,
|
|
707
771
|
'startTime': since,
|
|
708
772
|
'endTime': until,
|
|
@@ -810,6 +874,10 @@ export default class hyperliquid extends Exchange {
|
|
|
810
874
|
return this.parseTrades(response, market, since, limit);
|
|
811
875
|
}
|
|
812
876
|
amountToPrecision(symbol, amount) {
|
|
877
|
+
const market = this.market(symbol);
|
|
878
|
+
if (market['spot']) {
|
|
879
|
+
return super.amountToPrecision(symbol, amount);
|
|
880
|
+
}
|
|
813
881
|
return this.decimalToPrecision(amount, ROUND, this.markets[symbol]['precision']['amount'], this.precisionMode);
|
|
814
882
|
}
|
|
815
883
|
priceToPrecision(symbol, price) {
|
|
@@ -2358,6 +2426,12 @@ export default class hyperliquid extends Exchange {
|
|
|
2358
2426
|
}
|
|
2359
2427
|
throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a user parameter inside \'params\' or the wallet address set');
|
|
2360
2428
|
}
|
|
2429
|
+
coinToMarketId(coin) {
|
|
2430
|
+
if (coin.indexOf('/') > -1) {
|
|
2431
|
+
return coin; // spot
|
|
2432
|
+
}
|
|
2433
|
+
return coin + '/USDC:USDC';
|
|
2434
|
+
}
|
|
2361
2435
|
handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
|
|
2362
2436
|
if (!response) {
|
|
2363
2437
|
return undefined; // fallback to default error handler
|
package/js/src/okx.d.ts
CHANGED
|
@@ -299,6 +299,8 @@ export default class okx extends Exchange {
|
|
|
299
299
|
};
|
|
300
300
|
fetchConvertQuote(fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
|
|
301
301
|
createConvertTrade(id: string, fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
|
|
302
|
+
fetchConvertTrade(id: string, code?: Str, params?: {}): Promise<Conversion>;
|
|
303
|
+
fetchConvertTradeHistory(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<Conversion[]>;
|
|
302
304
|
parseConversion(conversion: any, fromCurrency?: Currency, toCurrency?: Currency): Conversion;
|
|
303
305
|
fetchConvertCurrencies(params?: {}): Promise<Currencies>;
|
|
304
306
|
handleErrors(httpCode: any, reason: any, url: any, method: any, headers: any, body: any, response: any, requestHeaders: any, requestBody: any): any;
|
package/js/src/okx.js
CHANGED
|
@@ -66,6 +66,8 @@ export default class okx extends Exchange {
|
|
|
66
66
|
'fetchClosedOrders': true,
|
|
67
67
|
'fetchConvertCurrencies': true,
|
|
68
68
|
'fetchConvertQuote': true,
|
|
69
|
+
'fetchConvertTrade': true,
|
|
70
|
+
'fetchConvertTradeHistory': true,
|
|
69
71
|
'fetchCrossBorrowRate': true,
|
|
70
72
|
'fetchCrossBorrowRates': true,
|
|
71
73
|
'fetchCurrencies': true,
|
|
@@ -7715,6 +7717,104 @@ export default class okx extends Exchange {
|
|
|
7715
7717
|
const toCurrency = this.currency(toCurrencyId);
|
|
7716
7718
|
return this.parseConversion(result, fromCurrency, toCurrency);
|
|
7717
7719
|
}
|
|
7720
|
+
async fetchConvertTrade(id, code = undefined, params = {}) {
|
|
7721
|
+
/**
|
|
7722
|
+
* @method
|
|
7723
|
+
* @name okx#fetchConvertTrade
|
|
7724
|
+
* @description fetch the data for a conversion trade
|
|
7725
|
+
* @see https://www.okx.com/docs-v5/en/#funding-account-rest-api-get-convert-history
|
|
7726
|
+
* @param {string} id the id of the trade that you want to fetch
|
|
7727
|
+
* @param {string} [code] the unified currency code of the conversion trade
|
|
7728
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
7729
|
+
* @returns {object} a [conversion structure]{@link https://docs.ccxt.com/#/?id=conversion-structure}
|
|
7730
|
+
*/
|
|
7731
|
+
await this.loadMarkets();
|
|
7732
|
+
const request = {
|
|
7733
|
+
'clTReqId': id,
|
|
7734
|
+
};
|
|
7735
|
+
const response = await this.privateGetAssetConvertHistory(this.extend(request, params));
|
|
7736
|
+
//
|
|
7737
|
+
// {
|
|
7738
|
+
// "code": "0",
|
|
7739
|
+
// "data": [
|
|
7740
|
+
// {
|
|
7741
|
+
// "clTReqId": "",
|
|
7742
|
+
// "instId": "ETH-USDT",
|
|
7743
|
+
// "side": "buy",
|
|
7744
|
+
// "fillPx": "2932.401044",
|
|
7745
|
+
// "baseCcy": "ETH",
|
|
7746
|
+
// "quoteCcy": "USDT",
|
|
7747
|
+
// "fillBaseSz": "0.01023052",
|
|
7748
|
+
// "state": "fullyFilled",
|
|
7749
|
+
// "tradeId": "trader16461885203381437",
|
|
7750
|
+
// "fillQuoteSz": "30",
|
|
7751
|
+
// "ts": "1646188520000"
|
|
7752
|
+
// }
|
|
7753
|
+
// ],
|
|
7754
|
+
// "msg": ""
|
|
7755
|
+
// }
|
|
7756
|
+
//
|
|
7757
|
+
const data = this.safeList(response, 'data', []);
|
|
7758
|
+
const result = this.safeDict(data, 0, {});
|
|
7759
|
+
const fromCurrencyId = this.safeString(result, 'baseCcy');
|
|
7760
|
+
const toCurrencyId = this.safeString(result, 'quoteCcy');
|
|
7761
|
+
let fromCurrency = undefined;
|
|
7762
|
+
let toCurrency = undefined;
|
|
7763
|
+
if (fromCurrencyId !== undefined) {
|
|
7764
|
+
fromCurrency = this.currency(fromCurrencyId);
|
|
7765
|
+
}
|
|
7766
|
+
if (toCurrencyId !== undefined) {
|
|
7767
|
+
toCurrency = this.currency(toCurrencyId);
|
|
7768
|
+
}
|
|
7769
|
+
return this.parseConversion(result, fromCurrency, toCurrency);
|
|
7770
|
+
}
|
|
7771
|
+
async fetchConvertTradeHistory(code = undefined, since = undefined, limit = undefined, params = {}) {
|
|
7772
|
+
/**
|
|
7773
|
+
* @method
|
|
7774
|
+
* @name okx#fetchConvertTradeHistory
|
|
7775
|
+
* @description fetch the users history of conversion trades
|
|
7776
|
+
* @see https://www.okx.com/docs-v5/en/#funding-account-rest-api-get-convert-history
|
|
7777
|
+
* @param {string} [code] the unified currency code
|
|
7778
|
+
* @param {int} [since] the earliest time in ms to fetch conversions for
|
|
7779
|
+
* @param {int} [limit] the maximum number of conversion structures to retrieve
|
|
7780
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
7781
|
+
* @param {int} [params.until] timestamp in ms of the latest conversion to fetch
|
|
7782
|
+
* @returns {object[]} a list of [conversion structures]{@link https://docs.ccxt.com/#/?id=conversion-structure}
|
|
7783
|
+
*/
|
|
7784
|
+
await this.loadMarkets();
|
|
7785
|
+
let request = {};
|
|
7786
|
+
[request, params] = this.handleUntilOption('after', request, params);
|
|
7787
|
+
if (since !== undefined) {
|
|
7788
|
+
request['before'] = since;
|
|
7789
|
+
}
|
|
7790
|
+
if (limit !== undefined) {
|
|
7791
|
+
request['limit'] = limit;
|
|
7792
|
+
}
|
|
7793
|
+
const response = await this.privateGetAssetConvertHistory(this.extend(request, params));
|
|
7794
|
+
//
|
|
7795
|
+
// {
|
|
7796
|
+
// "code": "0",
|
|
7797
|
+
// "data": [
|
|
7798
|
+
// {
|
|
7799
|
+
// "clTReqId": "",
|
|
7800
|
+
// "instId": "ETH-USDT",
|
|
7801
|
+
// "side": "buy",
|
|
7802
|
+
// "fillPx": "2932.401044",
|
|
7803
|
+
// "baseCcy": "ETH",
|
|
7804
|
+
// "quoteCcy": "USDT",
|
|
7805
|
+
// "fillBaseSz": "0.01023052",
|
|
7806
|
+
// "state": "fullyFilled",
|
|
7807
|
+
// "tradeId": "trader16461885203381437",
|
|
7808
|
+
// "fillQuoteSz": "30",
|
|
7809
|
+
// "ts": "1646188520000"
|
|
7810
|
+
// }
|
|
7811
|
+
// ],
|
|
7812
|
+
// "msg": ""
|
|
7813
|
+
// }
|
|
7814
|
+
//
|
|
7815
|
+
const rows = this.safeList(response, 'data', []);
|
|
7816
|
+
return this.parseConversions(rows, 'baseCcy', 'quoteCcy', since, limit);
|
|
7817
|
+
}
|
|
7718
7818
|
parseConversion(conversion, fromCurrency = undefined, toCurrency = undefined) {
|
|
7719
7819
|
//
|
|
7720
7820
|
// fetchConvertQuote
|
|
@@ -7752,6 +7852,22 @@ export default class okx extends Exchange {
|
|
|
7752
7852
|
// "ts": "1646188520338"
|
|
7753
7853
|
// }
|
|
7754
7854
|
//
|
|
7855
|
+
// fetchConvertTrade, fetchConvertTradeHistory
|
|
7856
|
+
//
|
|
7857
|
+
// {
|
|
7858
|
+
// "clTReqId": "",
|
|
7859
|
+
// "instId": "ETH-USDT",
|
|
7860
|
+
// "side": "buy",
|
|
7861
|
+
// "fillPx": "2932.401044",
|
|
7862
|
+
// "baseCcy": "ETH",
|
|
7863
|
+
// "quoteCcy": "USDT",
|
|
7864
|
+
// "fillBaseSz": "0.01023052",
|
|
7865
|
+
// "state": "fullyFilled",
|
|
7866
|
+
// "tradeId": "trader16461885203381437",
|
|
7867
|
+
// "fillQuoteSz": "30",
|
|
7868
|
+
// "ts": "1646188520000"
|
|
7869
|
+
// }
|
|
7870
|
+
//
|
|
7755
7871
|
const timestamp = this.safeInteger2(conversion, 'quoteTime', 'ts');
|
|
7756
7872
|
const fromCoin = this.safeString(conversion, 'baseCcy');
|
|
7757
7873
|
const fromCode = this.safeCurrencyCode(fromCoin, fromCurrency);
|
|
@@ -376,8 +376,18 @@ export default class poloniexfutures extends Exchange {
|
|
|
376
376
|
const marketId = this.safeString(ticker, 'symbol');
|
|
377
377
|
const symbol = this.safeSymbol(marketId, market);
|
|
378
378
|
const timestampString = this.safeString(ticker, 'ts');
|
|
379
|
-
// check timestamp bcz bug: https://app.travis-ci.com/github/ccxt/ccxt/builds/269959181#L4011
|
|
380
|
-
|
|
379
|
+
// check timestamp bcz bug: https://app.travis-ci.com/github/ccxt/ccxt/builds/269959181#L4011 and also 17 digits occured
|
|
380
|
+
let multiplier = undefined;
|
|
381
|
+
if (timestampString.length === 17) {
|
|
382
|
+
multiplier = 0.0001;
|
|
383
|
+
}
|
|
384
|
+
else if (timestampString.length === 18) {
|
|
385
|
+
multiplier = 0.00001;
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
// 19 length default
|
|
389
|
+
multiplier = 0.000001;
|
|
390
|
+
}
|
|
381
391
|
const timestamp = this.safeIntegerProduct(ticker, 'ts', multiplier);
|
|
382
392
|
const last = this.safeString2(ticker, 'price', 'lastPrice');
|
|
383
393
|
const percentage = Precise.stringMul(this.safeString(ticker, 'priceChgPct'), '100');
|
|
@@ -67,7 +67,7 @@ export default class hyperliquid extends hyperliquidRest {
|
|
|
67
67
|
'method': 'subscribe',
|
|
68
68
|
'subscription': {
|
|
69
69
|
'type': 'l2Book',
|
|
70
|
-
'coin': market['base'],
|
|
70
|
+
'coin': market['swap'] ? market['base'] : market['id'],
|
|
71
71
|
},
|
|
72
72
|
};
|
|
73
73
|
const message = this.extend(request, params);
|
|
@@ -102,7 +102,7 @@ export default class hyperliquid extends hyperliquidRest {
|
|
|
102
102
|
//
|
|
103
103
|
const entry = this.safeDict(message, 'data', {});
|
|
104
104
|
const coin = this.safeString(entry, 'coin');
|
|
105
|
-
const marketId = coin
|
|
105
|
+
const marketId = this.coinToMarketId(coin);
|
|
106
106
|
const market = this.market(marketId);
|
|
107
107
|
const symbol = market['symbol'];
|
|
108
108
|
const rawData = this.safeList(entry, 'levels', []);
|
|
@@ -233,7 +233,7 @@ export default class hyperliquid extends hyperliquidRest {
|
|
|
233
233
|
'method': 'subscribe',
|
|
234
234
|
'subscription': {
|
|
235
235
|
'type': 'trades',
|
|
236
|
-
'coin': market['base'],
|
|
236
|
+
'coin': market['swap'] ? market['base'] : market['id'],
|
|
237
237
|
},
|
|
238
238
|
};
|
|
239
239
|
const message = this.extend(request, params);
|
|
@@ -263,7 +263,7 @@ export default class hyperliquid extends hyperliquidRest {
|
|
|
263
263
|
const entry = this.safeList(message, 'data', []);
|
|
264
264
|
const first = this.safeDict(entry, 0, {});
|
|
265
265
|
const coin = this.safeString(first, 'coin');
|
|
266
|
-
const marketId = coin
|
|
266
|
+
const marketId = this.coinToMarketId(coin);
|
|
267
267
|
const market = this.market(marketId);
|
|
268
268
|
const symbol = market['symbol'];
|
|
269
269
|
if (!(symbol in this.trades)) {
|
|
@@ -318,7 +318,7 @@ export default class hyperliquid extends hyperliquidRest {
|
|
|
318
318
|
const price = this.safeString(trade, 'px');
|
|
319
319
|
const amount = this.safeString(trade, 'sz');
|
|
320
320
|
const coin = this.safeString(trade, 'coin');
|
|
321
|
-
const marketId = coin
|
|
321
|
+
const marketId = this.coinToMarketId(coin);
|
|
322
322
|
market = this.safeMarket(marketId, undefined);
|
|
323
323
|
const symbol = market['symbol'];
|
|
324
324
|
const id = this.safeString(trade, 'tid');
|
|
@@ -363,7 +363,7 @@ export default class hyperliquid extends hyperliquidRest {
|
|
|
363
363
|
'method': 'subscribe',
|
|
364
364
|
'subscription': {
|
|
365
365
|
'type': 'candle',
|
|
366
|
-
'coin': market['base'],
|
|
366
|
+
'coin': market['swap'] ? market['base'] : market['id'],
|
|
367
367
|
'interval': timeframe,
|
|
368
368
|
},
|
|
369
369
|
};
|
|
@@ -395,7 +395,8 @@ export default class hyperliquid extends hyperliquidRest {
|
|
|
395
395
|
//
|
|
396
396
|
const data = this.safeDict(message, 'data', {});
|
|
397
397
|
const base = this.safeString(data, 's');
|
|
398
|
-
const
|
|
398
|
+
const marketId = this.coinToMarketId(base);
|
|
399
|
+
const symbol = this.safeSymbol(marketId);
|
|
399
400
|
const timeframe = this.safeString(data, 'i');
|
|
400
401
|
if (!(symbol in this.ohlcvs)) {
|
|
401
402
|
this.ohlcvs[symbol] = {};
|
package/js/src/pro/kraken.js
CHANGED
|
@@ -1323,7 +1323,7 @@ export default class kraken extends krakenRest {
|
|
|
1323
1323
|
},
|
|
1324
1324
|
};
|
|
1325
1325
|
const url = this.urls['api']['ws']['public'];
|
|
1326
|
-
return await this.watchMultiple(url, messageHashes, this.
|
|
1326
|
+
return await this.watchMultiple(url, messageHashes, this.deepExtend(request, params), messageHashes, subscriptionArgs);
|
|
1327
1327
|
}
|
|
1328
1328
|
getMessageHash(unifiedElementName, subChannelName = undefined, symbol = undefined) {
|
|
1329
1329
|
// unifiedElementName can be : orderbook, trade, ticker, bidask ...
|
package/js/src/pro/wazirx.js
CHANGED
|
@@ -749,7 +749,8 @@ export default class wazirx extends wazirxRest {
|
|
|
749
749
|
};
|
|
750
750
|
const streams = Object.keys(streamHandlers);
|
|
751
751
|
for (let i = 0; i < streams.length; i++) {
|
|
752
|
-
|
|
752
|
+
const streamContains = stream.indexOf(streams[i]) > -1;
|
|
753
|
+
if (streamContains) {
|
|
753
754
|
const handler = streamHandlers[streams[i]];
|
|
754
755
|
handler.call(this, client, message);
|
|
755
756
|
return;
|
|
@@ -55,7 +55,7 @@ export declare class JSEncryptRSAKey extends RSAKey {
|
|
|
55
55
|
* @returns {string} DER Encoded String representing the rsa private key
|
|
56
56
|
* @private
|
|
57
57
|
*/
|
|
58
|
-
getPrivateBaseKey():
|
|
58
|
+
getPrivateBaseKey(): any;
|
|
59
59
|
/**
|
|
60
60
|
* base64 (pem) encoded version of the DER encoded representation
|
|
61
61
|
* @returns {string} pem encoded representation without header and footer
|
|
@@ -82,7 +82,7 @@ export declare class JSEncryptRSAKey extends RSAKey {
|
|
|
82
82
|
* @returns {string} DER Encoded String representing the rsa public key
|
|
83
83
|
* @private
|
|
84
84
|
*/
|
|
85
|
-
getPublicBaseKey():
|
|
85
|
+
getPublicBaseKey(): any;
|
|
86
86
|
/**
|
|
87
87
|
* base64 (pem) encoded version of the DER encoded representation
|
|
88
88
|
* @returns {string} pem encoded representation without header and footer
|
|
@@ -15,7 +15,7 @@ export declare class BigInteger {
|
|
|
15
15
|
protected intValue(): number;
|
|
16
16
|
protected byteValue(): number;
|
|
17
17
|
protected shortValue(): number;
|
|
18
|
-
protected signum():
|
|
18
|
+
protected signum(): 1 | 0 | -1;
|
|
19
19
|
toByteArray(): number[];
|
|
20
20
|
protected equals(a: BigInteger): boolean;
|
|
21
21
|
protected min(a: BigInteger): BigInteger;
|