ccxt 4.5.18 → 4.5.20
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 +7 -6
- package/dist/ccxt.browser.min.js +40 -16
- package/dist/cjs/_virtual/index.cjs.js +1459 -9
- package/dist/cjs/ccxt.js +8 -2
- package/dist/cjs/src/abstract/dydx.js +11 -0
- package/dist/cjs/src/base/Exchange.js +164 -10
- package/dist/cjs/src/base/ws/Client.js +3 -1
- package/dist/cjs/src/binance.js +8 -1
- package/dist/cjs/src/bingx.js +20 -0
- package/dist/cjs/src/bitget.js +43 -41
- package/dist/cjs/src/bybit.js +21 -23
- package/dist/cjs/src/deribit.js +6 -0
- package/dist/cjs/src/dydx.js +2454 -0
- package/dist/cjs/src/gate.js +4 -4
- package/dist/cjs/src/hibachi.js +1 -1
- package/dist/cjs/src/hyperliquid.js +207 -9
- package/dist/cjs/src/kucoin.js +711 -109
- package/dist/cjs/src/mexc.js +2 -3
- package/dist/cjs/src/pro/binance.js +59 -144
- package/dist/cjs/src/pro/dydx.js +418 -0
- package/dist/cjs/src/pro/kraken.js +4 -3
- package/dist/cjs/src/pro/xt.js +218 -4
- package/dist/cjs/src/protobuf/mexc/compiled.cjs.js +1 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +56 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +56 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +48 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +343 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +717 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +60 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +45 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +380 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +72 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +211 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +195 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +49 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +57 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +56 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/helpers.js +79 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/long/index.cjs.js +9 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/onboarding.js +59 -0
- package/dist/cjs/src/static_dependencies/dydx-v4-client/registry.js +39 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/pbkdf2.js +69 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/ripemd160.js +108 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +50 -1
- package/dist/cjs/src/static_dependencies/scure-base/index.js +29 -0
- package/dist/cjs/src/static_dependencies/scure-bip32/index.js +278 -0
- package/dist/cjs/src/static_dependencies/scure-bip39/index.js +97 -0
- package/dist/cjs/src/static_dependencies/scure-bip39/wordlists/english.js +2060 -0
- package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +2 -0
- package/dist/cjs/src/toobit.js +2 -1
- package/js/ccxt.d.ts +8 -2
- package/js/ccxt.js +6 -2
- package/js/src/abstract/binance.d.ts +7 -0
- package/js/src/abstract/binancecoinm.d.ts +7 -0
- package/js/src/abstract/binanceus.d.ts +7 -0
- package/js/src/abstract/binanceusdm.d.ts +7 -0
- package/js/src/abstract/bitget.d.ts +1 -0
- package/js/src/abstract/dydx.d.ts +61 -0
- package/js/src/abstract/dydx.js +11 -0
- package/js/src/abstract/kucoin.d.ts +1 -1
- package/js/src/abstract/kucoinfutures.d.ts +1 -1
- package/js/src/base/Exchange.d.ts +7 -0
- package/js/src/base/Exchange.js +163 -10
- package/js/src/base/ws/Client.js +3 -1
- package/js/src/binance.js +8 -1
- package/js/src/bingx.js +20 -0
- package/js/src/bitget.d.ts +3 -3
- package/js/src/bitget.js +43 -41
- package/js/src/bybit.d.ts +3 -3
- package/js/src/bybit.js +21 -23
- package/js/src/deribit.js +6 -0
- package/js/src/dydx.d.ts +364 -0
- package/js/src/dydx.js +2453 -0
- package/js/src/gate.d.ts +2 -2
- package/js/src/gate.js +4 -4
- package/js/src/hibachi.js +1 -1
- package/js/src/hyperliquid.d.ts +17 -0
- package/js/src/hyperliquid.js +207 -9
- package/js/src/kucoin.d.ts +48 -1
- package/js/src/kucoin.js +711 -109
- package/js/src/mexc.js +2 -3
- package/js/src/pro/binance.d.ts +2 -2
- package/js/src/pro/binance.js +59 -144
- package/js/src/pro/dydx.d.ts +81 -0
- package/js/src/pro/dydx.js +417 -0
- package/js/src/pro/kraken.js +4 -3
- package/js/src/pro/xt.d.ts +85 -2
- package/js/src/pro/xt.js +218 -4
- package/js/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.d.ts +90 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/base/v1beta1/coin.js +163 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/keys.d.ts +26 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/keys.js +51 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.d.ts +48 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/multisig/v1beta1/multisig.js +85 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.d.ts +40 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/crypto/secp256k1/keys.js +77 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.d.ts +162 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/signing/v1beta1/signing.js +329 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.d.ts +460 -0
- package/js/src/static_dependencies/dydx-v4-client/cosmos/tx/v1beta1/tx.js +698 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.d.ts +127 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/accountplus/tx.js +286 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/block_rate_limit_config.d.ts +66 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/block_rate_limit_config.js +109 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.d.ts +127 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/clob_pair.js +257 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/equity_tier_limit_config.d.ts +48 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/equity_tier_limit_config.js +93 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/finalize_block.d.ts +23 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/finalize_block.js +43 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations.d.ts +92 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations.js +164 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations_config.d.ts +124 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/liquidations_config.js +196 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/matches.d.ts +159 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/matches.js +324 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.d.ts +546 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order.js +872 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.d.ts +84 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/order_removals.js +181 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.d.ts +397 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/clob/tx.js +757 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.d.ts +120 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/transfer.js +246 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.d.ts +79 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/sending/tx.js +147 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/asset_position.d.ts +32 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/asset_position.js +59 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/perpetual_position.d.ts +34 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/perpetual_position.js +66 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.d.ts +62 -0
- package/js/src/static_dependencies/dydx-v4-client/dydxprotocol/subaccounts/subaccount.js +111 -0
- package/js/src/static_dependencies/dydx-v4-client/google/protobuf/any.d.ts +207 -0
- package/js/src/static_dependencies/dydx-v4-client/google/protobuf/any.js +50 -0
- package/js/src/static_dependencies/dydx-v4-client/helpers.d.ts +82 -0
- package/js/src/static_dependencies/dydx-v4-client/helpers.js +172 -0
- package/js/src/static_dependencies/dydx-v4-client/long/index.cjs +1473 -0
- package/js/src/static_dependencies/dydx-v4-client/long/index.d.cts +2 -0
- package/js/src/static_dependencies/dydx-v4-client/onboarding.d.ts +35 -0
- package/js/src/static_dependencies/dydx-v4-client/onboarding.js +56 -0
- package/js/src/static_dependencies/dydx-v4-client/registry.d.ts +7 -0
- package/js/src/static_dependencies/dydx-v4-client/registry.js +36 -0
- package/js/src/static_dependencies/noble-hashes/utils.d.ts +1 -0
- package/js/src/static_dependencies/noble-hashes/utils.js +4 -0
- package/js/src/static_dependencies/scure-bip32/index.d.ts +49 -0
- package/js/src/static_dependencies/scure-bip32/index.js +295 -0
- package/js/src/static_dependencies/scure-bip39/index.d.ts +54 -0
- package/js/src/static_dependencies/scure-bip39/index.js +140 -0
- package/js/src/static_dependencies/scure-bip39/wordlists/english.d.ts +1 -0
- package/js/src/static_dependencies/scure-bip39/wordlists/english.js +2054 -0
- package/js/src/toobit.js +2 -1
- package/package.json +9 -3
package/dist/cjs/src/gate.js
CHANGED
|
@@ -1606,8 +1606,8 @@ class gate extends gate$1["default"] {
|
|
|
1606
1606
|
'contract': true,
|
|
1607
1607
|
'linear': isLinear,
|
|
1608
1608
|
'inverse': !isLinear,
|
|
1609
|
-
'taker':
|
|
1610
|
-
'maker':
|
|
1609
|
+
'taker': this.parseNumber('0.0005'),
|
|
1610
|
+
'maker': this.parseNumber('0.0002'),
|
|
1611
1611
|
'contractSize': this.parseNumber(contractSize),
|
|
1612
1612
|
'expiry': expiry,
|
|
1613
1613
|
'expiryDatetime': this.iso8601(expiry),
|
|
@@ -1725,8 +1725,8 @@ class gate extends gate$1["default"] {
|
|
|
1725
1725
|
'contract': true,
|
|
1726
1726
|
'linear': true,
|
|
1727
1727
|
'inverse': false,
|
|
1728
|
-
'taker':
|
|
1729
|
-
'maker':
|
|
1728
|
+
'taker': this.parseNumber('0.0003'),
|
|
1729
|
+
'maker': this.parseNumber('0.0003'),
|
|
1730
1730
|
'contractSize': this.parseNumber('1'),
|
|
1731
1731
|
'expiry': expiry,
|
|
1732
1732
|
'expiryDatetime': this.iso8601(expiry),
|
package/dist/cjs/src/hibachi.js
CHANGED
|
@@ -829,7 +829,7 @@ class hibachi extends hibachi$1["default"] {
|
|
|
829
829
|
}
|
|
830
830
|
createOrderRequest(nonce, symbol, type, side, amount, price = undefined, params = {}) {
|
|
831
831
|
const market = this.market(symbol);
|
|
832
|
-
const feeRate = Math.max(this.safeNumber(market, 'taker'), this.safeNumber(market, 'maker'));
|
|
832
|
+
const feeRate = Math.max(this.safeNumber(market, 'taker', this.safeNumber(this.options, 'defaultTakerFee', 0.00045)), this.safeNumber(market, 'maker', this.safeNumber(this.options, 'defaultMakerFee', 0.00015)));
|
|
833
833
|
let sideInternal = '';
|
|
834
834
|
if (side === 'sell') {
|
|
835
835
|
sideInternal = 'ASK';
|
|
@@ -235,6 +235,13 @@ class hyperliquid extends hyperliquid$1["default"] {
|
|
|
235
235
|
'XAUT0': 'XAUT',
|
|
236
236
|
'UXPL': 'XPL',
|
|
237
237
|
},
|
|
238
|
+
'fetchMarkets': {
|
|
239
|
+
'types': ['spot', 'swap', 'hip3'], // 'spot', 'swap', 'hip3'
|
|
240
|
+
// 'hip3': {
|
|
241
|
+
// 'limit': 5, // how many dexes to load max if dexes are not specified
|
|
242
|
+
// 'dex': [ 'xyz' ],
|
|
243
|
+
// },
|
|
244
|
+
},
|
|
238
245
|
},
|
|
239
246
|
'features': {
|
|
240
247
|
'default': {
|
|
@@ -473,14 +480,144 @@ class hyperliquid extends hyperliquid$1["default"] {
|
|
|
473
480
|
* @returns {object[]} an array of objects representing market data
|
|
474
481
|
*/
|
|
475
482
|
async fetchMarkets(params = {}) {
|
|
476
|
-
const
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
483
|
+
const options = this.safeDict(this.options, 'fetchMarkets', {});
|
|
484
|
+
const types = this.safeList(options, 'types');
|
|
485
|
+
const rawPromises = [];
|
|
486
|
+
for (let i = 0; i < types.length; i++) {
|
|
487
|
+
const marketType = types[i];
|
|
488
|
+
if (marketType === 'swap') {
|
|
489
|
+
rawPromises.push(this.fetchSwapMarkets(params));
|
|
490
|
+
}
|
|
491
|
+
else if (marketType === 'spot') {
|
|
492
|
+
rawPromises.push(this.fetchSpotMarkets(params));
|
|
493
|
+
}
|
|
494
|
+
else if (marketType === 'hip3') {
|
|
495
|
+
rawPromises.push(this.fetchHip3Markets(params));
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
const promises = await Promise.all(rawPromises);
|
|
499
|
+
let result = [];
|
|
500
|
+
for (let i = 0; i < promises.length; i++) {
|
|
501
|
+
result = this.arrayConcat(result, promises[i]);
|
|
502
|
+
}
|
|
503
|
+
return result;
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
* @method
|
|
507
|
+
* @name hyperliquid#fetchHip3Markets
|
|
508
|
+
* @description retrieves data on all hip3 markets for hyperliquid
|
|
509
|
+
* @see https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/perpetuals#retrieve-all-perpetual-dexs
|
|
510
|
+
* @see https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/perpetuals#retrieve-perpetuals-asset-contexts-includes-mark-price-current-funding-open-interest-etc
|
|
511
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
512
|
+
* @returns {object[]} an array of objects representing market data
|
|
513
|
+
*/
|
|
514
|
+
async fetchHip3Markets(params = {}) {
|
|
515
|
+
const fetchDexes = await this.publicPostInfo({
|
|
516
|
+
'type': 'perpDexs',
|
|
517
|
+
});
|
|
518
|
+
//
|
|
519
|
+
// [
|
|
520
|
+
// null,
|
|
521
|
+
// {
|
|
522
|
+
// "name": "xyz",
|
|
523
|
+
// "fullName": "XYZ",
|
|
524
|
+
// "deployer": "0x88806a71d74ad0a510b350545c9ae490912f0888",
|
|
525
|
+
// "oracleUpdater": "0x1234567890545d1df9ee64b35fdd16966e08acec",
|
|
526
|
+
// "feeRecipient": "0x79c0650064b10f73649b7b64c5ebf0b319606140",
|
|
527
|
+
// "assetToStreamingOiCap": [
|
|
528
|
+
// [
|
|
529
|
+
// "xyz:XYZ100",
|
|
530
|
+
// "100000000.0"
|
|
531
|
+
// ]
|
|
532
|
+
// ]
|
|
533
|
+
// }
|
|
534
|
+
// ]
|
|
535
|
+
//
|
|
536
|
+
const perpDexesOffset = {};
|
|
537
|
+
for (let i = 1; i < fetchDexes.length; i++) {
|
|
538
|
+
// builder-deployed perp dexs start at 110000
|
|
539
|
+
const dex = fetchDexes[i];
|
|
540
|
+
const offset = 110000 + (i - 1) * 10000;
|
|
541
|
+
perpDexesOffset[dex['name']] = offset;
|
|
542
|
+
}
|
|
543
|
+
let fetchDexesList = [];
|
|
544
|
+
const options = this.safeDict(this.options, 'fetchMarkets', {});
|
|
545
|
+
const hip3 = this.safeDict(options, 'hip3', {});
|
|
546
|
+
const defaultLimit = this.safeInteger(hip3, 'limit', 5);
|
|
547
|
+
const dexesLength = fetchDexes.length;
|
|
548
|
+
if (dexesLength >= defaultLimit) { // first element is null
|
|
549
|
+
const defaultDexes = this.safeList(hip3, 'dex', []);
|
|
550
|
+
if (defaultDexes.length === 0) {
|
|
551
|
+
throw new errors.ArgumentsRequired(this.id + ' fetchHip3Markets() Too many DEXes found. Please specify a list of DEXes in the exchange.options["fetchMarkets"]["hip3"]["dex"] parameter to fetch markets from those DEXes only. The limit is set to ' + defaultLimit.toString() + ' DEXes by default.');
|
|
552
|
+
}
|
|
553
|
+
else {
|
|
554
|
+
fetchDexesList = defaultDexes;
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
else {
|
|
558
|
+
for (let i = 1; i < fetchDexes.length; i++) {
|
|
559
|
+
const dex = this.safeDict(fetchDexes, i, {});
|
|
560
|
+
const dexName = this.safeString(dex, 'name');
|
|
561
|
+
fetchDexesList.push(dexName);
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
const rawPromises = [];
|
|
565
|
+
for (let i = 0; i < fetchDexesList.length; i++) {
|
|
566
|
+
const request = {
|
|
567
|
+
'type': 'metaAndAssetCtxs',
|
|
568
|
+
'dex': this.safeString(fetchDexesList, i),
|
|
569
|
+
};
|
|
570
|
+
rawPromises.push(this.publicPostInfo(this.extend(request, params)));
|
|
571
|
+
}
|
|
480
572
|
const promises = await Promise.all(rawPromises);
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
573
|
+
let markets = [];
|
|
574
|
+
for (let i = 0; i < promises.length; i++) {
|
|
575
|
+
const dexName = fetchDexesList[i];
|
|
576
|
+
const offset = perpDexesOffset[dexName];
|
|
577
|
+
const response = promises[i];
|
|
578
|
+
const meta = this.safeDict(response, 0, {});
|
|
579
|
+
const universe = this.safeList(meta, 'universe', []);
|
|
580
|
+
const assetCtxs = this.safeList(response, 1, []);
|
|
581
|
+
const result = [];
|
|
582
|
+
for (let j = 0; j < universe.length; j++) {
|
|
583
|
+
const data = this.extend(this.safeDict(universe, j, {}), this.safeDict(assetCtxs, j, {}));
|
|
584
|
+
data['baseId'] = j + offset;
|
|
585
|
+
result.push(data);
|
|
586
|
+
}
|
|
587
|
+
markets = this.arrayConcat(markets, this.parseMarkets(result));
|
|
588
|
+
}
|
|
589
|
+
//
|
|
590
|
+
// [
|
|
591
|
+
// {
|
|
592
|
+
// "universe": [
|
|
593
|
+
// {
|
|
594
|
+
// "maxLeverage": 50,
|
|
595
|
+
// "name": "SOL",
|
|
596
|
+
// "onlyIsolated": false,
|
|
597
|
+
// "szDecimals": 2
|
|
598
|
+
// }
|
|
599
|
+
// ]
|
|
600
|
+
// },
|
|
601
|
+
// [
|
|
602
|
+
// {
|
|
603
|
+
// "dayNtlVlm": "9450588.2273",
|
|
604
|
+
// "funding": "0.0000198",
|
|
605
|
+
// "impactPxs": [
|
|
606
|
+
// "108.04",
|
|
607
|
+
// "108.06"
|
|
608
|
+
// ],
|
|
609
|
+
// "markPx": "108.04",
|
|
610
|
+
// "midPx": "108.05",
|
|
611
|
+
// "openInterest": "10764.48",
|
|
612
|
+
// "oraclePx": "107.99",
|
|
613
|
+
// "premium": "0.00055561",
|
|
614
|
+
// "prevDayPx": "111.81"
|
|
615
|
+
// }
|
|
616
|
+
// ]
|
|
617
|
+
// ]
|
|
618
|
+
//
|
|
619
|
+
//
|
|
620
|
+
return markets;
|
|
484
621
|
}
|
|
485
622
|
/**
|
|
486
623
|
* @method
|
|
@@ -786,7 +923,7 @@ class hyperliquid extends hyperliquid$1["default"] {
|
|
|
786
923
|
const baseId = this.safeString(market, 'baseId');
|
|
787
924
|
const settleId = 'USDC';
|
|
788
925
|
const settle = this.safeCurrencyCode(settleId);
|
|
789
|
-
let symbol = base + '/' + quote;
|
|
926
|
+
let symbol = base.replace(':', '-') + '/' + quote;
|
|
790
927
|
const contract = true;
|
|
791
928
|
const swap = true;
|
|
792
929
|
{
|
|
@@ -1461,6 +1598,17 @@ class hyperliquid extends hyperliquid$1["default"] {
|
|
|
1461
1598
|
};
|
|
1462
1599
|
return this.signUserSignedAction(messageTypes, message);
|
|
1463
1600
|
}
|
|
1601
|
+
buildUserDexAbstractionSig(message) {
|
|
1602
|
+
const messageTypes = {
|
|
1603
|
+
'HyperliquidTransaction:UserDexAbstraction': [
|
|
1604
|
+
{ 'name': 'hyperliquidChain', 'type': 'string' },
|
|
1605
|
+
{ 'name': 'user', 'type': 'address' },
|
|
1606
|
+
{ 'name': 'enabled', 'type': 'bool' },
|
|
1607
|
+
{ 'name': 'nonce', 'type': 'uint64' },
|
|
1608
|
+
],
|
|
1609
|
+
};
|
|
1610
|
+
return this.signUserSignedAction(messageTypes, message);
|
|
1611
|
+
}
|
|
1464
1612
|
buildApproveBuilderFeeSig(message) {
|
|
1465
1613
|
const messageTypes = {
|
|
1466
1614
|
'HyperliquidTransaction:ApproveBuilderFee': [
|
|
@@ -1561,6 +1709,42 @@ class hyperliquid extends hyperliquid$1["default"] {
|
|
|
1561
1709
|
}
|
|
1562
1710
|
return true;
|
|
1563
1711
|
}
|
|
1712
|
+
async enableUserDexAbstraction(enabled, params = {}) {
|
|
1713
|
+
let userAddress = undefined;
|
|
1714
|
+
[userAddress, params] = this.handlePublicAddress('enableUserDexAbstraction', params);
|
|
1715
|
+
const nonce = this.milliseconds();
|
|
1716
|
+
const isSandboxMode = this.safeBool(this.options, 'sandboxMode', false);
|
|
1717
|
+
const payload = {
|
|
1718
|
+
'hyperliquidChain': isSandboxMode ? 'Testnet' : 'Mainnet',
|
|
1719
|
+
'user': userAddress,
|
|
1720
|
+
'enabled': enabled,
|
|
1721
|
+
'nonce': nonce,
|
|
1722
|
+
};
|
|
1723
|
+
const sig = this.buildUserDexAbstractionSig(payload);
|
|
1724
|
+
const action = {
|
|
1725
|
+
'hyperliquidChain': payload['hyperliquidChain'],
|
|
1726
|
+
'signatureChainId': '0x66eee',
|
|
1727
|
+
'enabled': payload['enabled'],
|
|
1728
|
+
'user': payload['user'],
|
|
1729
|
+
'nonce': nonce,
|
|
1730
|
+
'type': 'userDexAbstraction',
|
|
1731
|
+
};
|
|
1732
|
+
const request = {
|
|
1733
|
+
'action': action,
|
|
1734
|
+
'nonce': nonce,
|
|
1735
|
+
'signature': sig,
|
|
1736
|
+
'vaultAddress': undefined,
|
|
1737
|
+
};
|
|
1738
|
+
//
|
|
1739
|
+
// {
|
|
1740
|
+
// "status": "ok",
|
|
1741
|
+
// "response": {
|
|
1742
|
+
// "type": "default"
|
|
1743
|
+
// }
|
|
1744
|
+
// }
|
|
1745
|
+
//
|
|
1746
|
+
return await this.privatePostExchange(request);
|
|
1747
|
+
}
|
|
1564
1748
|
/**
|
|
1565
1749
|
* @method
|
|
1566
1750
|
* @name hyperliquid#createOrder
|
|
@@ -2379,6 +2563,7 @@ class hyperliquid extends hyperliquid$1["default"] {
|
|
|
2379
2563
|
* @param {string} [params.user] user address, will default to this.walletAddress if not provided
|
|
2380
2564
|
* @param {string} [params.method] 'openOrders' or 'frontendOpenOrders' default is 'frontendOpenOrders'
|
|
2381
2565
|
* @param {string} [params.subAccountAddress] sub account user address
|
|
2566
|
+
* @param {string} [params.dex] perp dex name. default is null
|
|
2382
2567
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
2383
2568
|
*/
|
|
2384
2569
|
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -2387,11 +2572,21 @@ class hyperliquid extends hyperliquid$1["default"] {
|
|
|
2387
2572
|
let method = undefined;
|
|
2388
2573
|
[method, params] = this.handleOptionAndParams(params, 'fetchOpenOrders', 'method', 'frontendOpenOrders');
|
|
2389
2574
|
await this.loadMarkets();
|
|
2390
|
-
const market = this.safeMarket(symbol);
|
|
2391
2575
|
const request = {
|
|
2392
2576
|
'type': method,
|
|
2393
2577
|
'user': userAddress,
|
|
2394
2578
|
};
|
|
2579
|
+
let market = undefined;
|
|
2580
|
+
if (symbol !== undefined) {
|
|
2581
|
+
market = this.market(symbol);
|
|
2582
|
+
// check if is hip3 symbol
|
|
2583
|
+
const baseName = this.safeString(market, 'baseName', '');
|
|
2584
|
+
const part = baseName.split(':');
|
|
2585
|
+
const partsLength = part.length;
|
|
2586
|
+
if (partsLength > 1) {
|
|
2587
|
+
request['dex'] = this.safeString(part, 0);
|
|
2588
|
+
}
|
|
2589
|
+
}
|
|
2395
2590
|
const response = await this.publicPostInfo(this.extend(request, params));
|
|
2396
2591
|
//
|
|
2397
2592
|
// [
|
|
@@ -4016,6 +4211,9 @@ class hyperliquid extends hyperliquid$1["default"] {
|
|
|
4016
4211
|
if (coin.indexOf('/') > -1 || coin.indexOf('@') > -1) {
|
|
4017
4212
|
return coin; // spot
|
|
4018
4213
|
}
|
|
4214
|
+
if (coin.indexOf(':') > -1) {
|
|
4215
|
+
coin = coin.replace(':', '-'); // hip3
|
|
4216
|
+
}
|
|
4019
4217
|
return this.safeCurrencyCode(coin) + '/USDC:USDC';
|
|
4020
4218
|
}
|
|
4021
4219
|
handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
|