@basedone/core 0.1.6 → 0.1.10

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/index.ts CHANGED
@@ -5,3 +5,4 @@ export * from "./lib/constants/tokens";
5
5
  export * from "./lib/meta/metadata";
6
6
  export * from "./lib/utils/formatter";
7
7
  export * from "./lib/hip3/utils";
8
+ export * from "./lib/hip3/market-info";
@@ -256,6 +256,7 @@ export const CloidClientCode = {
256
256
  Desktop: 7,
257
257
  API: 8,
258
258
  Stream: 9,
259
+ Pal: 10,
259
260
  } as const;
260
261
  type ClientCodeType = keyof typeof CloidClientCode;
261
262
 
@@ -272,6 +273,7 @@ export const CloidClientCodeNameById: Record<number, ClientCodeType> = {
272
273
  [CloidClientCode.Desktop]: "Desktop",
273
274
  [CloidClientCode.API]: "API",
274
275
  [CloidClientCode.Stream]: "Stream",
276
+ [CloidClientCode.Pal]: "Pal",
275
277
  };
276
278
 
277
279
  export function getClientCodeNameById(id: number): string {
package/lib/fee.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  // Global limits on Hyperliquid
2
2
 
3
+ import Decimal from "decimal.js";
3
4
  import { BASED_FEE_WALLET, BASED_REFERRAL_CODE } from "./constants/fee";
4
5
 
5
6
  // builder fee in 1/10 of a basis point
@@ -14,8 +15,9 @@ export const TARGET_APPROVED_MAX_BUILDER_FEE_PERCENT = `0.1%`;
14
15
 
15
16
  /**
16
17
  * Get the amount of builder fee to approve for
17
- * @param perpetualTradingFee - Perp fee in percentage
18
- * @param spotTradingFee - Spot fee in percentage
18
+ * @param perpetualTradingFee - Perp fee in percentage (0.025 means 0.025% perp fee)
19
+ * @param spotTradingFee - Spot fee in percentage (0.01 means 0.01% spot fee)
20
+ * @param feeDiscount - Discount fee in percentage (0.9 means 90% discount)
19
21
  * @returns {
20
22
  * amount: number; - The amount of builder fee to approve in 1/10 of a basis point
21
23
  * percent: string; - eg. String input to approve fee, "0.1%"
@@ -25,10 +27,12 @@ export const getApprovalAmount = ({
25
27
  customFeeEnabled,
26
28
  perpetualTradingFee,
27
29
  spotTradingFee,
30
+ feeDiscount,
28
31
  }: {
29
32
  customFeeEnabled: boolean;
30
33
  perpetualTradingFee?: number;
31
34
  spotTradingFee?: number;
35
+ feeDiscount?: number;
32
36
  }): {
33
37
  approvalAmount: number;
34
38
  approvalPercent: `${string}%`;
@@ -37,40 +41,63 @@ export const getApprovalAmount = ({
37
41
  builder: `0x${string}`;
38
42
  referralCode: string;
39
43
  } => {
44
+ if (feeDiscount !== undefined && (feeDiscount < 0 || feeDiscount > 1)) {
45
+ console.warn("Fee discount is not between 0 and 1, setting to 0");
46
+ feeDiscount = 0;
47
+ }
48
+
49
+ const discountMultiplier = feeDiscount ? new Decimal(1).sub(feeDiscount) : 1;
40
50
  if (!customFeeEnabled) {
41
51
  return {
42
- approvalAmount: TARGET_APPROVED_MAX_BUILDER_FEE,
43
- perpFee: TARGET_FUTURES_BUILDER_FEE,
44
- spotFee: TARGET_SPOT_BUILDER_FEE,
52
+ approvalAmount: new Decimal(TARGET_APPROVED_MAX_BUILDER_FEE)
53
+ .mul(discountMultiplier)
54
+ .floor()
55
+ .toNumber(),
56
+ perpFee: new Decimal(TARGET_FUTURES_BUILDER_FEE)
57
+ .mul(discountMultiplier)
58
+ .floor()
59
+ .toNumber(),
60
+ spotFee: new Decimal(TARGET_SPOT_BUILDER_FEE)
61
+ .mul(discountMultiplier)
62
+ .floor()
63
+ .toNumber(),
45
64
  approvalPercent: TARGET_APPROVED_MAX_BUILDER_FEE_PERCENT,
46
65
  builder: BASED_FEE_WALLET,
47
66
  referralCode: BASED_REFERRAL_CODE,
48
67
  };
49
68
  }
69
+
50
70
  let validatedPerpFeePct = perpetualTradingFee;
51
71
  if (validatedPerpFeePct === undefined) {
52
72
  validatedPerpFeePct = TARGET_FUTURES_BUILDER_FEE / 1000;
53
73
  }
74
+ validatedPerpFeePct = new Decimal(validatedPerpFeePct)
75
+ .mul(discountMultiplier)
76
+ .toNumber();
54
77
 
55
- // ensure perp fee is either 0 or between 0.01% and 0.1%
56
- if (validatedPerpFeePct > 0 && validatedPerpFeePct < 0.01) {
57
- console.warn("Perp fee is less than 0.01%, setting to 0.01%");
58
- validatedPerpFeePct = 0.01;
59
- }
60
- if (validatedPerpFeePct < 0) {
61
- console.warn("Perp fee is less than 0, setting to 0");
62
- validatedPerpFeePct = 0;
78
+ // ensure perp fee is either 0 or between 0.001%
79
+ if (validatedPerpFeePct > 0 && validatedPerpFeePct < 0.001) {
80
+ console.warn("Perp fee is less than 0.001%, setting to 0.001%");
81
+ validatedPerpFeePct = 0.001;
63
82
  }
64
83
  if (validatedPerpFeePct > 0.1) {
65
84
  console.warn("Perp fee is greater than 0.1%, setting to 0.1%");
66
85
  validatedPerpFeePct = 0.1;
67
86
  }
87
+ if (validatedPerpFeePct < 0) {
88
+ console.warn("Perp fee is less than 0, setting to 0");
89
+ validatedPerpFeePct = 0;
90
+ }
68
91
 
69
92
  let validatedSpotFeePct = spotTradingFee;
70
93
 
71
94
  if (validatedSpotFeePct === undefined) {
72
95
  validatedSpotFeePct = TARGET_SPOT_BUILDER_FEE / 1000;
73
96
  }
97
+ validatedSpotFeePct = new Decimal(validatedSpotFeePct)
98
+ .mul(discountMultiplier)
99
+ .toNumber();
100
+
74
101
  if (validatedSpotFeePct > 0 && validatedSpotFeePct < 0.025) {
75
102
  console.warn("Spot fee is less than 0.025%, setting to 0.025%");
76
103
  validatedSpotFeePct = 0.025;
@@ -1,17 +1,45 @@
1
- import { PerpsMeta, InfoClient } from "@nktkas/hyperliquid";
1
+ import { InfoClient, PerpsAssetCtx, MarginTables } from "@nktkas/hyperliquid";
2
2
 
3
- export type PerpsMetaWithCollateralToken = PerpsMeta & {
4
- collateralToken?: number; // spot token index
5
- };
3
+ export interface PerpsMeta {
4
+ collateralToken: number;
5
+ /** Trading universes available for perpetual trading. */
6
+ universe: PerpsUniverse[];
7
+ /** Margin requirement tables for different leverage tiers. */
8
+ marginTables: MarginTables;
9
+ }
10
+ /** Metadata and context for perpetual assets. */
11
+ export type PerpsMetaAndAssetCtxs = [
12
+ /** Metadata for assets. */
13
+ PerpsMeta,
14
+ /** Context for each perpetual asset. */
15
+ PerpsAssetCtx[],
16
+ ];
17
+ /** Trading universe parameters for perpetual assets. */
18
+ export interface PerpsUniverse {
19
+ /** Minimum decimal places for order sizes. */
20
+ szDecimals: number;
21
+ /** Name of the universe. */
22
+ name: string;
23
+ /** Maximum allowed leverage. */
24
+ maxLeverage: number;
25
+ /** Unique identifier for the margin requirements table. */
26
+ marginTableId: number;
27
+ /** Indicates if only isolated margin trading is allowed. */
28
+ onlyIsolated?: true;
29
+ /** Indicates if the universe is delisted. */
30
+ isDelisted?: true;
31
+ /** Indicates if the universe is in growth mode, eligible for discounted fees */
32
+ growthMode?: true;
33
+ /** Margin mode for the universe. */
34
+ marginMode?: "strictIsolated" | "noCross";
35
+ }
6
36
 
7
- export type AllPerpsMeta = PerpsMetaWithCollateralToken[];
37
+ export type AllPerpsMeta = PerpsMeta[];
8
38
 
9
39
  export async function getAllPerpsMeta(
10
40
  infoClient: InfoClient,
11
41
  ): Promise<AllPerpsMeta> {
12
42
  return infoClient.transport.request<AllPerpsMeta>("info", {
13
- action: {
14
- type: "allPerpMetas",
15
- },
43
+ type: "allPerpMetas",
16
44
  });
17
45
  }
package/lib/hip3/utils.ts CHANGED
@@ -99,7 +99,9 @@ export async function getHip3DexAbstraction(client: InfoClient, user: string) {
99
99
 
100
100
  const dexToCollateralTokenSymbol = {
101
101
  rrrrr: "USDEEE",
102
- hyena: "USDE",
102
+ hyna: "USDE",
103
+ flx: "USDH",
104
+ vntl: "USDH",
103
105
  };
104
106
 
105
107
  export const isSpotSymbol = (coin: string | undefined) => {
@@ -128,6 +130,12 @@ export function getStaticCollateralTokenSymbol(coin: string | undefined) {
128
130
  return getStaticCollateralTokenByDex(dex);
129
131
  }
130
132
 
133
+ export const stableQuoteTokens = ["USDC", "USDT0", "USDE", "USDEEE", "USDH"];
134
+
135
+ export function isStableQuoteToken(coin: string) {
136
+ return stableQuoteTokens.includes(coin);
137
+ }
138
+
131
139
  /**
132
140
  * Get display market symbol for a given coin
133
141
  * @param coin - The coin symbol to get the display market symbol for eg. xyz:XYZ100
@@ -142,7 +150,20 @@ export function getDisplayMarketSymbol(
142
150
  showCollateralTokenSymbol: boolean = true,
143
151
  collateralTokenSymbol?: string,
144
152
  ) {
145
- if (!coin || isSpotSymbol(coin)) return coin;
153
+ if (!coin) return coin;
154
+
155
+ if (isSpotSymbol(coin)) {
156
+ if (coin.includes("/")) {
157
+ const [baseToken, quoteToken] = coin.split("/");
158
+
159
+ if (showCollateralTokenSymbol) {
160
+ return `${baseToken}/${collateralTokenSymbol ?? quoteToken}`;
161
+ } else {
162
+ return baseToken;
163
+ }
164
+ }
165
+ return coin;
166
+ }
146
167
 
147
168
  if (isHip3Symbol(coin)) {
148
169
  const [_, symbol] = coin.split(":");
@@ -144,8 +144,8 @@
144
144
  {
145
145
  "szDecimals": 2,
146
146
  "name": "GMX",
147
- "maxLeverage": 5,
148
- "marginTableId": 5
147
+ "maxLeverage": 3,
148
+ "marginTableId": 3
149
149
  },
150
150
  {
151
151
  "szDecimals": 1,
@@ -208,7 +208,8 @@
208
208
  "maxLeverage": 3,
209
209
  "marginTableId": 3,
210
210
  "onlyIsolated": true,
211
- "isDelisted": true
211
+ "isDelisted": true,
212
+ "marginMode": "strictIsolated"
212
213
  },
213
214
  {
214
215
  "szDecimals": 0,
@@ -216,7 +217,8 @@
216
217
  "maxLeverage": 3,
217
218
  "marginTableId": 3,
218
219
  "onlyIsolated": true,
219
- "isDelisted": true
220
+ "isDelisted": true,
221
+ "marginMode": "strictIsolated"
220
222
  },
221
223
  {
222
224
  "szDecimals": 3,
@@ -224,7 +226,8 @@
224
226
  "maxLeverage": 3,
225
227
  "marginTableId": 3,
226
228
  "onlyIsolated": true,
227
- "isDelisted": true
229
+ "isDelisted": true,
230
+ "marginMode": "strictIsolated"
228
231
  },
229
232
  {
230
233
  "szDecimals": 0,
@@ -268,7 +271,8 @@
268
271
  "maxLeverage": 3,
269
272
  "marginTableId": 3,
270
273
  "onlyIsolated": true,
271
- "isDelisted": true
274
+ "isDelisted": true,
275
+ "marginMode": "strictIsolated"
272
276
  },
273
277
  {
274
278
  "szDecimals": 1,
@@ -276,7 +280,8 @@
276
280
  "maxLeverage": 3,
277
281
  "marginTableId": 3,
278
282
  "onlyIsolated": true,
279
- "isDelisted": true
283
+ "isDelisted": true,
284
+ "marginMode": "strictIsolated"
280
285
  },
281
286
  {
282
287
  "szDecimals": 0,
@@ -284,7 +289,8 @@
284
289
  "maxLeverage": 3,
285
290
  "marginTableId": 3,
286
291
  "onlyIsolated": true,
287
- "isDelisted": true
292
+ "isDelisted": true,
293
+ "marginMode": "strictIsolated"
288
294
  },
289
295
  {
290
296
  "szDecimals": 1,
@@ -400,8 +406,8 @@
400
406
  {
401
407
  "szDecimals": 0,
402
408
  "name": "BLUR",
403
- "maxLeverage": 5,
404
- "marginTableId": 5
409
+ "maxLeverage": 3,
410
+ "marginTableId": 3
405
411
  },
406
412
  {
407
413
  "szDecimals": 1,
@@ -480,14 +486,14 @@
480
486
  {
481
487
  "szDecimals": 0,
482
488
  "name": "MEME",
483
- "maxLeverage": 5,
484
- "marginTableId": 5
489
+ "maxLeverage": 3,
490
+ "marginTableId": 3
485
491
  },
486
492
  {
487
493
  "szDecimals": 2,
488
494
  "name": "ORDI",
489
- "maxLeverage": 5,
490
- "marginTableId": 5
495
+ "maxLeverage": 3,
496
+ "marginTableId": 3
491
497
  },
492
498
  {
493
499
  "szDecimals": 1,
@@ -523,8 +529,8 @@
523
529
  {
524
530
  "szDecimals": 1,
525
531
  "name": "SUSHI",
526
- "maxLeverage": 5,
527
- "marginTableId": 5
532
+ "maxLeverage": 3,
533
+ "marginTableId": 3
528
534
  },
529
535
  {
530
536
  "szDecimals": 2,
@@ -548,8 +554,8 @@
548
554
  {
549
555
  "szDecimals": 0,
550
556
  "name": "GMT",
551
- "maxLeverage": 5,
552
- "marginTableId": 5
557
+ "maxLeverage": 3,
558
+ "marginTableId": 3
553
559
  },
554
560
  {
555
561
  "szDecimals": 0,
@@ -569,7 +575,8 @@
569
575
  "maxLeverage": 3,
570
576
  "marginTableId": 3,
571
577
  "onlyIsolated": true,
572
- "isDelisted": true
578
+ "isDelisted": true,
579
+ "marginMode": "strictIsolated"
573
580
  },
574
581
  {
575
582
  "szDecimals": 0,
@@ -623,8 +630,8 @@
623
630
  {
624
631
  "szDecimals": 0,
625
632
  "name": "WIF",
626
- "maxLeverage": 10,
627
- "marginTableId": 52
633
+ "maxLeverage": 5,
634
+ "marginTableId": 5
628
635
  },
629
636
  {
630
637
  "szDecimals": 1,
@@ -677,8 +684,8 @@
677
684
  {
678
685
  "szDecimals": 0,
679
686
  "name": "ALT",
680
- "maxLeverage": 5,
681
- "marginTableId": 5
687
+ "maxLeverage": 3,
688
+ "marginTableId": 3
682
689
  },
683
690
  {
684
691
  "szDecimals": 1,
@@ -710,7 +717,8 @@
710
717
  "maxLeverage": 3,
711
718
  "marginTableId": 3,
712
719
  "onlyIsolated": true,
713
- "isDelisted": true
720
+ "isDelisted": true,
721
+ "marginMode": "strictIsolated"
714
722
  },
715
723
  {
716
724
  "szDecimals": 1,
@@ -808,8 +816,8 @@
808
816
  {
809
817
  "szDecimals": 0,
810
818
  "name": "POPCAT",
811
- "maxLeverage": 10,
812
- "marginTableId": 52
819
+ "maxLeverage": 3,
820
+ "marginTableId": 3
813
821
  },
814
822
  {
815
823
  "szDecimals": 2,
@@ -839,20 +847,20 @@
839
847
  {
840
848
  "szDecimals": 0,
841
849
  "name": "TURBO",
842
- "maxLeverage": 5,
843
- "marginTableId": 5
850
+ "maxLeverage": 3,
851
+ "marginTableId": 3
844
852
  },
845
853
  {
846
854
  "szDecimals": 0,
847
855
  "name": "BRETT",
848
- "maxLeverage": 5,
849
- "marginTableId": 5
856
+ "maxLeverage": 3,
857
+ "marginTableId": 3
850
858
  },
851
859
  {
852
860
  "szDecimals": 1,
853
861
  "name": "IO",
854
- "maxLeverage": 5,
855
- "marginTableId": 5
862
+ "maxLeverage": 3,
863
+ "marginTableId": 3
856
864
  },
857
865
  {
858
866
  "szDecimals": 0,
@@ -876,8 +884,8 @@
876
884
  {
877
885
  "szDecimals": 0,
878
886
  "name": "MEW",
879
- "maxLeverage": 5,
880
- "marginTableId": 5
887
+ "maxLeverage": 3,
888
+ "marginTableId": 3
881
889
  },
882
890
  {
883
891
  "szDecimals": 1,
@@ -933,26 +941,26 @@
933
941
  {
934
942
  "szDecimals": 1,
935
943
  "name": "kNEIRO",
936
- "maxLeverage": 5,
937
- "marginTableId": 5
944
+ "maxLeverage": 3,
945
+ "marginTableId": 3
938
946
  },
939
947
  {
940
948
  "szDecimals": 0,
941
949
  "name": "GOAT",
942
- "maxLeverage": 5,
943
- "marginTableId": 5
950
+ "maxLeverage": 3,
951
+ "marginTableId": 3
944
952
  },
945
953
  {
946
954
  "szDecimals": 0,
947
955
  "name": "MOODENG",
948
- "maxLeverage": 5,
949
- "marginTableId": 5
956
+ "maxLeverage": 3,
957
+ "marginTableId": 3
950
958
  },
951
959
  {
952
960
  "szDecimals": 1,
953
961
  "name": "GRASS",
954
- "maxLeverage": 5,
955
- "marginTableId": 5
962
+ "maxLeverage": 3,
963
+ "marginTableId": 3
956
964
  },
957
965
  {
958
966
  "szDecimals": 0,
@@ -963,8 +971,8 @@
963
971
  {
964
972
  "szDecimals": 1,
965
973
  "name": "PNUT",
966
- "maxLeverage": 5,
967
- "marginTableId": 5
974
+ "maxLeverage": 3,
975
+ "marginTableId": 3
968
976
  },
969
977
  {
970
978
  "szDecimals": 0,
@@ -1005,14 +1013,14 @@
1005
1013
  {
1006
1014
  "szDecimals": 1,
1007
1015
  "name": "ME",
1008
- "maxLeverage": 5,
1009
- "marginTableId": 5
1016
+ "maxLeverage": 3,
1017
+ "marginTableId": 3
1010
1018
  },
1011
1019
  {
1012
1020
  "szDecimals": 0,
1013
1021
  "name": "MOVE",
1014
- "maxLeverage": 5,
1015
- "marginTableId": 5
1022
+ "maxLeverage": 3,
1023
+ "marginTableId": 3
1016
1024
  },
1017
1025
  {
1018
1026
  "szDecimals": 1,
@@ -1029,8 +1037,8 @@
1029
1037
  {
1030
1038
  "szDecimals": 1,
1031
1039
  "name": "USUAL",
1032
- "maxLeverage": 5,
1033
- "marginTableId": 5
1040
+ "maxLeverage": 3,
1041
+ "marginTableId": 3
1034
1042
  },
1035
1043
  {
1036
1044
  "szDecimals": 1,
@@ -1042,25 +1050,26 @@
1042
1050
  "szDecimals": 1,
1043
1051
  "name": "AI16Z",
1044
1052
  "maxLeverage": 5,
1045
- "marginTableId": 5
1053
+ "marginTableId": 5,
1054
+ "isDelisted": true
1046
1055
  },
1047
1056
  {
1048
1057
  "szDecimals": 0,
1049
1058
  "name": "AIXBT",
1050
- "maxLeverage": 5,
1051
- "marginTableId": 5
1059
+ "maxLeverage": 3,
1060
+ "marginTableId": 3
1052
1061
  },
1053
1062
  {
1054
1063
  "szDecimals": 0,
1055
1064
  "name": "ZEREBRO",
1056
- "maxLeverage": 5,
1057
- "marginTableId": 5
1065
+ "maxLeverage": 3,
1066
+ "marginTableId": 3
1058
1067
  },
1059
1068
  {
1060
1069
  "szDecimals": 0,
1061
1070
  "name": "BIO",
1062
- "maxLeverage": 5,
1063
- "marginTableId": 5
1071
+ "maxLeverage": 3,
1072
+ "marginTableId": 3
1064
1073
  },
1065
1074
  {
1066
1075
  "szDecimals": 0,
@@ -1095,8 +1104,8 @@
1095
1104
  {
1096
1105
  "szDecimals": 1,
1097
1106
  "name": "MELANIA",
1098
- "maxLeverage": 5,
1099
- "marginTableId": 5
1107
+ "maxLeverage": 3,
1108
+ "marginTableId": 3
1100
1109
  },
1101
1110
  {
1102
1111
  "szDecimals": 0,
@@ -1107,8 +1116,8 @@
1107
1116
  {
1108
1117
  "szDecimals": 0,
1109
1118
  "name": "VINE",
1110
- "maxLeverage": 5,
1111
- "marginTableId": 5
1119
+ "maxLeverage": 3,
1120
+ "marginTableId": 3
1112
1121
  },
1113
1122
  {
1114
1123
  "szDecimals": 2,
@@ -1150,8 +1159,8 @@
1150
1159
  {
1151
1160
  "szDecimals": 1,
1152
1161
  "name": "OM",
1153
- "maxLeverage": 5,
1154
- "marginTableId": 5
1162
+ "maxLeverage": 3,
1163
+ "marginTableId": 3
1155
1164
  },
1156
1165
  {
1157
1166
  "szDecimals": 0,
@@ -1174,14 +1183,14 @@
1174
1183
  {
1175
1184
  "szDecimals": 0,
1176
1185
  "name": "PROMPT",
1177
- "maxLeverage": 5,
1178
- "marginTableId": 5
1186
+ "maxLeverage": 3,
1187
+ "marginTableId": 3
1179
1188
  },
1180
1189
  {
1181
1190
  "szDecimals": 0,
1182
1191
  "name": "BABY",
1183
- "maxLeverage": 5,
1184
- "marginTableId": 5
1192
+ "maxLeverage": 3,
1193
+ "marginTableId": 3
1185
1194
  },
1186
1195
  {
1187
1196
  "szDecimals": 0,
@@ -1217,7 +1226,8 @@
1217
1226
  "szDecimals": 0,
1218
1227
  "name": "LAUNCHCOIN",
1219
1228
  "maxLeverage": 3,
1220
- "marginTableId": 3
1229
+ "marginTableId": 3,
1230
+ "isDelisted": true
1221
1231
  },
1222
1232
  {
1223
1233
  "szDecimals": 0,
@@ -1330,15 +1340,14 @@
1330
1340
  {
1331
1341
  "szDecimals": 2,
1332
1342
  "name": "ZEC",
1333
- "maxLeverage": 5,
1334
- "marginTableId": 5
1343
+ "maxLeverage": 10,
1344
+ "marginTableId": 52
1335
1345
  },
1336
1346
  {
1337
1347
  "szDecimals": 0,
1338
1348
  "name": "MON",
1339
- "maxLeverage": 3,
1340
- "marginTableId": 3,
1341
- "onlyIsolated": true
1349
+ "maxLeverage": 5,
1350
+ "marginTableId": 5
1342
1351
  },
1343
1352
  {
1344
1353
  "szDecimals": 0,
@@ -1351,7 +1360,26 @@
1351
1360
  "name": "MEGA",
1352
1361
  "maxLeverage": 3,
1353
1362
  "marginTableId": 3,
1354
- "onlyIsolated": true
1363
+ "onlyIsolated": true,
1364
+ "marginMode": "strictIsolated"
1365
+ },
1366
+ {
1367
+ "szDecimals": 0,
1368
+ "name": "CC",
1369
+ "maxLeverage": 3,
1370
+ "marginTableId": 3
1371
+ },
1372
+ {
1373
+ "szDecimals": 1,
1374
+ "name": "ICP",
1375
+ "maxLeverage": 5,
1376
+ "marginTableId": 5
1377
+ },
1378
+ {
1379
+ "szDecimals": 0,
1380
+ "name": "AERO",
1381
+ "maxLeverage": 3,
1382
+ "marginTableId": 3
1355
1383
  }
1356
1384
  ],
1357
1385
  "marginTables": [