@basedone/core 0.0.6 → 0.0.8
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/dist/index.d.mts +36 -2
- package/dist/index.d.ts +36 -2
- package/dist/index.js +173 -39
- package/dist/index.mjs +132 -39
- package/dist/staticMeta-D2V74GCG.mjs +23 -0
- package/dist/staticMeta-GM7T3OYL.mjs +23 -0
- package/dist/staticMeta-HRXST42O.mjs +24 -0
- package/dist/staticMeta-OKNVBUQ5.mjs +25 -0
- package/dist/staticMeta-QV2KMX57.mjs +25 -0
- package/dist/staticMeta-QWPQK3MD.mjs +22 -0
- package/lib/meta/data/mainnet/dexs/xyz.json +26 -0
- package/lib/meta/data/mainnet/staticMeta.json +15 -0
- package/lib/meta/data/testnet/staticMeta.json +13 -0
- package/lib/meta/metadata.ts +191 -50
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -542,6 +542,12 @@ function isHip3Symbol(symbol) {
|
|
|
542
542
|
return symbol.includes(":");
|
|
543
543
|
}
|
|
544
544
|
|
|
545
|
+
// import("./data/**/*/staticMeta.json") in lib/meta/metadata.ts
|
|
546
|
+
var globImport_data_staticMeta_json = __glob({
|
|
547
|
+
"./data/mainnet/staticMeta.json": () => import("./staticMeta-QV2KMX57.mjs"),
|
|
548
|
+
"./data/testnet/staticMeta.json": () => import("./staticMeta-GM7T3OYL.mjs")
|
|
549
|
+
});
|
|
550
|
+
|
|
545
551
|
// import("./data/**/*/spotMeta.json") in lib/meta/metadata.ts
|
|
546
552
|
var globImport_data_spotMeta_json = __glob({
|
|
547
553
|
"./data/mainnet/spotMeta.json": () => import("./spotMeta-7IJT3W6H.mjs"),
|
|
@@ -561,12 +567,14 @@ var globImport_data_perpDexs_json = __glob({
|
|
|
561
567
|
});
|
|
562
568
|
|
|
563
569
|
// lib/meta/metadata.ts
|
|
570
|
+
var ROOT_DEX = "hyperliquid";
|
|
564
571
|
var MetadataClient = class {
|
|
565
572
|
constructor(config = {}) {
|
|
566
573
|
// Core metadata
|
|
567
574
|
this.spotMeta = null;
|
|
568
575
|
this.perpsMeta = null;
|
|
569
576
|
this.perpDexs = [];
|
|
577
|
+
this.staticMeta = null;
|
|
570
578
|
// HIP-3 metadata cache
|
|
571
579
|
this.hip3DexsMeta = /* @__PURE__ */ new Map();
|
|
572
580
|
// Pre-computed lookup maps (populated on initialize)
|
|
@@ -585,12 +593,14 @@ var MetadataClient = class {
|
|
|
585
593
|
this.dexNameToIndex = /* @__PURE__ */ new Map();
|
|
586
594
|
// Lazy init flag
|
|
587
595
|
this.initialized = false;
|
|
596
|
+
this.initializing = null;
|
|
588
597
|
const transport = new HttpTransport({
|
|
589
598
|
isTestnet: config.isTestnet ?? false
|
|
590
599
|
});
|
|
591
600
|
this.infoClient = new InfoClient({ transport });
|
|
592
601
|
this.config = {
|
|
593
602
|
...config,
|
|
603
|
+
hip3Dexs: config.hip3Dexs?.filter((dex) => dex !== ROOT_DEX),
|
|
594
604
|
useStaticFallback: config.useStaticFallback ?? true
|
|
595
605
|
};
|
|
596
606
|
this.isTestnet = config.isTestnet ?? false;
|
|
@@ -601,42 +611,67 @@ var MetadataClient = class {
|
|
|
601
611
|
*/
|
|
602
612
|
async initialize() {
|
|
603
613
|
if (this.initialized) return;
|
|
604
|
-
if (this.
|
|
605
|
-
|
|
606
|
-
this.
|
|
607
|
-
if (this.config.
|
|
608
|
-
await Promise.all(
|
|
609
|
-
this.config.hip3Dexs.map((dex) => this.loadHip3Metadata(dex))
|
|
610
|
-
);
|
|
611
|
-
}
|
|
612
|
-
this.initialized = true;
|
|
613
|
-
return;
|
|
614
|
-
}
|
|
615
|
-
try {
|
|
616
|
-
[this.spotMeta, this.perpsMeta, this.perpDexs] = await Promise.all([
|
|
617
|
-
this.infoClient.spotMeta(),
|
|
618
|
-
this.infoClient.meta(),
|
|
619
|
-
this.infoClient.perpDexs()
|
|
620
|
-
]);
|
|
621
|
-
this.buildLookupMaps();
|
|
622
|
-
if (this.config.hip3Dexs && this.config.hip3Dexs.length > 0) {
|
|
623
|
-
await Promise.all(
|
|
624
|
-
this.config.hip3Dexs.map((dex) => this.loadHip3Metadata(dex))
|
|
625
|
-
);
|
|
626
|
-
}
|
|
627
|
-
this.initialized = true;
|
|
628
|
-
} catch (error) {
|
|
629
|
-
if (this.config.useStaticFallback) {
|
|
630
|
-
console.warn(
|
|
631
|
-
"Failed to fetch metadata from API, using static fallback data",
|
|
632
|
-
error
|
|
633
|
-
);
|
|
614
|
+
if (this.initializing) return this.initializing;
|
|
615
|
+
this.initializing = new Promise(async (resolve, reject) => {
|
|
616
|
+
await this.loadStaticMetaOverrides();
|
|
617
|
+
if (this.config.onlyUseStaticFallback) {
|
|
634
618
|
await this.loadStaticMetadata();
|
|
635
619
|
this.buildLookupMaps();
|
|
620
|
+
if (this.config.hip3Dexs && this.config.hip3Dexs.length > 0) {
|
|
621
|
+
await Promise.all(
|
|
622
|
+
this.config.hip3Dexs.map((dex) => this.loadHip3Metadata(dex))
|
|
623
|
+
);
|
|
624
|
+
}
|
|
625
|
+
resolve();
|
|
626
|
+
this.initialized = true;
|
|
627
|
+
return;
|
|
628
|
+
}
|
|
629
|
+
try {
|
|
630
|
+
[this.spotMeta, this.perpsMeta, this.perpDexs] = await Promise.all([
|
|
631
|
+
this.infoClient.spotMeta(),
|
|
632
|
+
this.infoClient.meta(),
|
|
633
|
+
this.infoClient.perpDexs()
|
|
634
|
+
]);
|
|
635
|
+
this.buildLookupMaps();
|
|
636
|
+
if (this.config.hip3Dexs && this.config.hip3Dexs.length > 0) {
|
|
637
|
+
await Promise.all(
|
|
638
|
+
this.config.hip3Dexs.map((dex) => this.loadHip3Metadata(dex))
|
|
639
|
+
);
|
|
640
|
+
}
|
|
641
|
+
this.initialized = true;
|
|
642
|
+
resolve();
|
|
643
|
+
} catch (error) {
|
|
644
|
+
if (this.config.useStaticFallback) {
|
|
645
|
+
console.warn(
|
|
646
|
+
"Failed to fetch metadata from API, using static fallback data",
|
|
647
|
+
error
|
|
648
|
+
);
|
|
649
|
+
await this.loadStaticMetadata();
|
|
650
|
+
this.buildLookupMaps();
|
|
651
|
+
this.initialized = true;
|
|
652
|
+
resolve();
|
|
653
|
+
} else {
|
|
654
|
+
reject(error);
|
|
655
|
+
}
|
|
656
|
+
} finally {
|
|
636
657
|
this.initialized = true;
|
|
637
|
-
|
|
638
|
-
throw error;
|
|
658
|
+
resolve();
|
|
639
659
|
}
|
|
660
|
+
});
|
|
661
|
+
return this.initializing;
|
|
662
|
+
}
|
|
663
|
+
/**
|
|
664
|
+
* Load staticMeta.json for display overrides
|
|
665
|
+
* This is always loaded regardless of config.useStaticFallback
|
|
666
|
+
*/
|
|
667
|
+
async loadStaticMetaOverrides() {
|
|
668
|
+
const network = this.isTestnet ? "testnet" : "mainnet";
|
|
669
|
+
try {
|
|
670
|
+
const staticMetaModule = await globImport_data_staticMeta_json(`./data/${network}/staticMeta.json`);
|
|
671
|
+
this.staticMeta = staticMetaModule.default;
|
|
672
|
+
} catch (error) {
|
|
673
|
+
console.warn(`Failed to load staticMeta.json for ${network}:`, error);
|
|
674
|
+
this.staticMeta = null;
|
|
640
675
|
}
|
|
641
676
|
}
|
|
642
677
|
/**
|
|
@@ -645,14 +680,21 @@ var MetadataClient = class {
|
|
|
645
680
|
async loadStaticMetadata() {
|
|
646
681
|
const network = this.isTestnet ? "testnet" : "mainnet";
|
|
647
682
|
try {
|
|
648
|
-
const [
|
|
683
|
+
const [
|
|
684
|
+
spotMetaModule,
|
|
685
|
+
perpsMetaModule,
|
|
686
|
+
perpDexsModule,
|
|
687
|
+
staticMetaModule
|
|
688
|
+
] = await Promise.all([
|
|
649
689
|
globImport_data_spotMeta_json(`./data/${network}/spotMeta.json`),
|
|
650
690
|
globImport_data_meta_json(`./data/${network}/meta.json`),
|
|
651
|
-
globImport_data_perpDexs_json(`./data/${network}/perpDexs.json`)
|
|
691
|
+
globImport_data_perpDexs_json(`./data/${network}/perpDexs.json`),
|
|
692
|
+
globImport_data_staticMeta_json(`./data/${network}/staticMeta.json`)
|
|
652
693
|
]);
|
|
653
694
|
this.spotMeta = spotMetaModule.default;
|
|
654
695
|
this.perpsMeta = perpsMetaModule.default;
|
|
655
696
|
this.perpDexs = perpDexsModule.default;
|
|
697
|
+
this.staticMeta = staticMetaModule.default;
|
|
656
698
|
console.warn(`Using static ${network} metadata`);
|
|
657
699
|
} catch (error) {
|
|
658
700
|
console.error(`Failed to load static ${network} metadata:`, error);
|
|
@@ -669,9 +711,14 @@ var MetadataClient = class {
|
|
|
669
711
|
this.spotPairToMarket.clear();
|
|
670
712
|
this.baseTokenToMarkets.clear();
|
|
671
713
|
this.coinToMarket.clear();
|
|
672
|
-
this.hip3SymbolToMarket.clear();
|
|
673
714
|
this.dexNameToIndex.clear();
|
|
674
715
|
this.quoteAssets = [];
|
|
716
|
+
console.info(
|
|
717
|
+
"[MetadataClient] Building lookup maps",
|
|
718
|
+
this.perpDexs,
|
|
719
|
+
this.perpsMeta,
|
|
720
|
+
this.spotMeta
|
|
721
|
+
);
|
|
675
722
|
if (this.perpDexs) {
|
|
676
723
|
this.perpDexs.forEach((dex, index) => {
|
|
677
724
|
if (dex && dex.name) {
|
|
@@ -689,6 +736,15 @@ var MetadataClient = class {
|
|
|
689
736
|
type: "perps",
|
|
690
737
|
maxLeverage: market.maxLeverage
|
|
691
738
|
};
|
|
739
|
+
const staticOverrides = this.staticMeta?.coins?.[market.name];
|
|
740
|
+
if (staticOverrides) {
|
|
741
|
+
if (staticOverrides.displayName) {
|
|
742
|
+
marketInfo.displayName = staticOverrides.displayName;
|
|
743
|
+
}
|
|
744
|
+
if (staticOverrides.imageUrl) {
|
|
745
|
+
marketInfo.imageUrl = staticOverrides.imageUrl;
|
|
746
|
+
}
|
|
747
|
+
}
|
|
692
748
|
this.perpsSymbolToIndex.set(market.name.toUpperCase(), index);
|
|
693
749
|
this.coinToMarket.set(market.name, marketInfo);
|
|
694
750
|
});
|
|
@@ -713,6 +769,15 @@ var MetadataClient = class {
|
|
|
713
769
|
baseToken,
|
|
714
770
|
quoteToken
|
|
715
771
|
};
|
|
772
|
+
const staticOverrides = this.staticMeta?.coins?.[coin];
|
|
773
|
+
if (staticOverrides) {
|
|
774
|
+
if (staticOverrides.displayName) {
|
|
775
|
+
marketInfo.displayName = staticOverrides.displayName;
|
|
776
|
+
}
|
|
777
|
+
if (staticOverrides.imageUrl) {
|
|
778
|
+
marketInfo.imageUrl = staticOverrides.imageUrl;
|
|
779
|
+
}
|
|
780
|
+
}
|
|
716
781
|
const pairKey = `${baseToken.name}/${quoteToken.name}`.toUpperCase();
|
|
717
782
|
this.spotPairToMarket.set(pairKey, marketInfo);
|
|
718
783
|
this.coinToMarket.set(pairKey, marketInfo);
|
|
@@ -752,10 +817,22 @@ var MetadataClient = class {
|
|
|
752
817
|
meta,
|
|
753
818
|
assetContext: contexts,
|
|
754
819
|
collateralTokenSymbol,
|
|
755
|
-
dexFullName: dex?.
|
|
820
|
+
dexFullName: dex?.fullName ?? dexName,
|
|
756
821
|
dexName: dex?.name ?? dexName,
|
|
757
822
|
dexIndex
|
|
758
823
|
};
|
|
824
|
+
const staticDexOverrides = this.staticMeta?.dexs?.[dexName];
|
|
825
|
+
if (staticDexOverrides) {
|
|
826
|
+
if (staticDexOverrides.displayName) {
|
|
827
|
+
dexInfo.displayName = staticDexOverrides.displayName;
|
|
828
|
+
}
|
|
829
|
+
if (staticDexOverrides.imageUrl) {
|
|
830
|
+
dexInfo.imageUrl = staticDexOverrides.imageUrl;
|
|
831
|
+
}
|
|
832
|
+
if (staticDexOverrides.accountName) {
|
|
833
|
+
dexInfo.accountName = staticDexOverrides.accountName;
|
|
834
|
+
}
|
|
835
|
+
}
|
|
759
836
|
this.hip3DexsMeta.set(dexName, dexInfo);
|
|
760
837
|
this.buildHip3MarketsForDex(dexName, dexInfo);
|
|
761
838
|
return dexInfo;
|
|
@@ -778,8 +855,20 @@ var MetadataClient = class {
|
|
|
778
855
|
type: "hip3",
|
|
779
856
|
maxLeverage: market.maxLeverage,
|
|
780
857
|
dexName,
|
|
781
|
-
dexIndex: dexInfo.dexIndex
|
|
858
|
+
dexIndex: dexInfo.dexIndex,
|
|
859
|
+
dexDisplayName: dexInfo.displayName,
|
|
860
|
+
dexImageUrl: dexInfo.imageUrl
|
|
782
861
|
};
|
|
862
|
+
const staticOverrides = this.staticMeta?.coins?.[symbol];
|
|
863
|
+
if (staticOverrides) {
|
|
864
|
+
if (staticOverrides.displayName) {
|
|
865
|
+
marketInfo.displayName = staticOverrides.displayName;
|
|
866
|
+
}
|
|
867
|
+
if (staticOverrides.imageUrl) {
|
|
868
|
+
marketInfo.imageUrl = staticOverrides.imageUrl;
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
console.info("[MetadataClient] caching market", symbol, marketInfo);
|
|
783
872
|
this.coinToMarket.set(symbol, marketInfo);
|
|
784
873
|
this.hip3SymbolToMarket.set(symbol, marketInfo);
|
|
785
874
|
});
|
|
@@ -808,7 +897,7 @@ var MetadataClient = class {
|
|
|
808
897
|
}
|
|
809
898
|
let lookupKey = symbol.toUpperCase();
|
|
810
899
|
if (!symbol.includes("/") && !symbol.includes("@")) {
|
|
811
|
-
const perpsMarket = this.coinToMarket.get(
|
|
900
|
+
const perpsMarket = this.coinToMarket.get(symbol);
|
|
812
901
|
if (perpsMarket?.type === "perps") {
|
|
813
902
|
return perpsMarket;
|
|
814
903
|
}
|
|
@@ -868,6 +957,7 @@ var MetadataClient = class {
|
|
|
868
957
|
if (!dexName || !coinName) return null;
|
|
869
958
|
let cachedMarket = this.hip3SymbolToMarket.get(symbol);
|
|
870
959
|
if (cachedMarket) return cachedMarket;
|
|
960
|
+
console.warn("Missing market", symbol, this.hip3SymbolToMarket);
|
|
871
961
|
const dexMeta = this.hip3DexsMeta.get(dexName);
|
|
872
962
|
if (!dexMeta && this.config.lazyInit) {
|
|
873
963
|
await this.loadHip3Metadata(dexName);
|
|
@@ -926,7 +1016,9 @@ var MetadataClient = class {
|
|
|
926
1016
|
spotMeta: this.spotMeta,
|
|
927
1017
|
perpsMeta: this.perpsMeta,
|
|
928
1018
|
perpDexs: this.perpDexs,
|
|
929
|
-
hip3DexsMeta: Object.fromEntries(this.hip3DexsMeta)
|
|
1019
|
+
hip3DexsMeta: Object.fromEntries(this.hip3DexsMeta),
|
|
1020
|
+
coinToMarket: Object.fromEntries(this.coinToMarket),
|
|
1021
|
+
hip3SymbolToMarket: Object.fromEntries(this.hip3SymbolToMarket)
|
|
930
1022
|
};
|
|
931
1023
|
}
|
|
932
1024
|
/**
|
|
@@ -992,6 +1084,7 @@ export {
|
|
|
992
1084
|
MetadataClient,
|
|
993
1085
|
PUP_TOKEN_ADDRESS,
|
|
994
1086
|
PUP_TOKEN_THRESHOLDS,
|
|
1087
|
+
ROOT_DEX,
|
|
995
1088
|
TARGET_APPROVED_MAX_BUILDER_FEE,
|
|
996
1089
|
TARGET_APPROVED_MAX_BUILDER_FEE_PERCENT,
|
|
997
1090
|
TESTNET_USDC_SPOT_TOKEN,
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import "./chunk-4UEJOM6W.mjs";
|
|
2
|
+
|
|
3
|
+
// lib/meta/data/testnet/staticMeta.json
|
|
4
|
+
var coins = {
|
|
5
|
+
"rrrrr:BTC": {
|
|
6
|
+
displayName: "BTCe"
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
var dexs = {
|
|
10
|
+
rrrrr: {
|
|
11
|
+
displayName: "Hyena",
|
|
12
|
+
accountName: "USDe Perps"
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
var staticMeta_default = {
|
|
16
|
+
coins,
|
|
17
|
+
dexs
|
|
18
|
+
};
|
|
19
|
+
export {
|
|
20
|
+
coins,
|
|
21
|
+
staticMeta_default as default,
|
|
22
|
+
dexs
|
|
23
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import "./chunk-4UEJOM6W.mjs";
|
|
2
|
+
|
|
3
|
+
// lib/meta/data/testnet/staticMeta.json
|
|
4
|
+
var coins = {
|
|
5
|
+
"rrrrr:BTC": {
|
|
6
|
+
displayName: "BTCe"
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
var dexs = {
|
|
10
|
+
rrrrr: {
|
|
11
|
+
displayName: "Hyena",
|
|
12
|
+
accountName: "USDe"
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
var staticMeta_default = {
|
|
16
|
+
coins,
|
|
17
|
+
dexs
|
|
18
|
+
};
|
|
19
|
+
export {
|
|
20
|
+
coins,
|
|
21
|
+
staticMeta_default as default,
|
|
22
|
+
dexs
|
|
23
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import "./chunk-4UEJOM6W.mjs";
|
|
2
|
+
|
|
3
|
+
// lib/meta/data/mainnet/staticMeta.json
|
|
4
|
+
var coins = {
|
|
5
|
+
"xyz:XYZ100": {
|
|
6
|
+
imageUrl: "https://app.based.one/hip3/xyz/xyz100.webp",
|
|
7
|
+
displayName: "Nasdaq-100"
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
var dexs = {
|
|
11
|
+
xyz: {
|
|
12
|
+
imageUrl: "",
|
|
13
|
+
displayName: "Stocks"
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
var staticMeta_default = {
|
|
17
|
+
coins,
|
|
18
|
+
dexs
|
|
19
|
+
};
|
|
20
|
+
export {
|
|
21
|
+
coins,
|
|
22
|
+
staticMeta_default as default,
|
|
23
|
+
dexs
|
|
24
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import "./chunk-4UEJOM6W.mjs";
|
|
2
|
+
|
|
3
|
+
// lib/meta/data/mainnet/staticMeta.json
|
|
4
|
+
var coins = {
|
|
5
|
+
"xyz:XYZ100": {
|
|
6
|
+
imageUrl: "https://app.based.one/hip3/xyz/xyz100.webp",
|
|
7
|
+
displayName: "Nasdaq-100"
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
var dexs = {
|
|
11
|
+
xyz: {
|
|
12
|
+
imageUrl: "",
|
|
13
|
+
displayName: "Trade.xyz",
|
|
14
|
+
tags: ["Equities"]
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
var staticMeta_default = {
|
|
18
|
+
coins,
|
|
19
|
+
dexs
|
|
20
|
+
};
|
|
21
|
+
export {
|
|
22
|
+
coins,
|
|
23
|
+
staticMeta_default as default,
|
|
24
|
+
dexs
|
|
25
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import "./chunk-4UEJOM6W.mjs";
|
|
2
|
+
|
|
3
|
+
// lib/meta/data/mainnet/staticMeta.json
|
|
4
|
+
var coins = {
|
|
5
|
+
"xyz:XYZ100": {
|
|
6
|
+
imageUrl: "https://app.based.one/hip3/xyz/xyz100.webp",
|
|
7
|
+
displayName: "Nasdaq-100"
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
var dexs = {
|
|
11
|
+
xyz: {
|
|
12
|
+
imageUrl: "",
|
|
13
|
+
displayName: "Trade.xyz",
|
|
14
|
+
accountName: "Equities"
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
var staticMeta_default = {
|
|
18
|
+
coins,
|
|
19
|
+
dexs
|
|
20
|
+
};
|
|
21
|
+
export {
|
|
22
|
+
coins,
|
|
23
|
+
staticMeta_default as default,
|
|
24
|
+
dexs
|
|
25
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import "./chunk-4UEJOM6W.mjs";
|
|
2
|
+
|
|
3
|
+
// lib/meta/data/testnet/staticMeta.json
|
|
4
|
+
var coins = {
|
|
5
|
+
"rrrrr:BTC": {
|
|
6
|
+
displayName: "BTCe"
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
var dexs = {
|
|
10
|
+
rrrrr: {
|
|
11
|
+
displayName: "Hyena"
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
var staticMeta_default = {
|
|
15
|
+
coins,
|
|
16
|
+
dexs
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
coins,
|
|
20
|
+
staticMeta_default as default,
|
|
21
|
+
dexs
|
|
22
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"universe": [
|
|
3
|
+
{
|
|
4
|
+
"szDecimals": 4,
|
|
5
|
+
"name": "xyz:XYZ100",
|
|
6
|
+
"maxLeverage": 20,
|
|
7
|
+
"marginTableId": 20,
|
|
8
|
+
"onlyIsolated": true
|
|
9
|
+
}
|
|
10
|
+
],
|
|
11
|
+
"marginTables": [
|
|
12
|
+
[
|
|
13
|
+
50,
|
|
14
|
+
{
|
|
15
|
+
"description": "",
|
|
16
|
+
"marginTiers": [
|
|
17
|
+
{
|
|
18
|
+
"lowerBound": "0.0",
|
|
19
|
+
"maxLeverage": 50
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
],
|
|
25
|
+
"collateralToken": 0
|
|
26
|
+
}
|