@scallop-io/sui-scallop-sdk 1.4.23 → 1.4.24-alpha.1
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/constants/common.d.ts +4 -4
- package/dist/constants/enum.d.ts +2 -2
- package/dist/index.js +71 -21
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +71 -21
- package/dist/index.mjs.map +1 -1
- package/dist/models/scallopQuery.d.ts +11 -6
- package/dist/models/scallopUtils.d.ts +2 -2
- package/dist/queries/borrowIncentiveQuery.d.ts +2 -0
- package/dist/queries/poolAddressesQuery.d.ts +2 -2
- package/dist/queries/portfolioQuery.d.ts +4 -3
- package/dist/queries/priceQuery.d.ts +2 -0
- package/dist/queries/sCoinQuery.d.ts +1 -1
- package/package.json +1 -1
- package/src/constants/coinGecko.ts +12 -4
- package/src/constants/common.ts +2 -0
- package/src/constants/enum.ts +8 -0
- package/src/constants/poolAddress.ts +34 -0
- package/src/constants/pyth.ts +1 -0
- package/src/constants/testAddress.ts +2 -0
- package/src/models/scallopQuery.ts +4 -2
- package/src/queries/poolAddressesQuery.ts +6 -3
- package/src/utils/util.ts +8 -3
|
@@ -7,14 +7,14 @@ export declare const PROTOCOL_OBJECT_ID: "0xc9f859f98ca352a11b97a038c4b4162bee43
|
|
|
7
7
|
export declare const BORROW_FEE_PROTOCOL_ID: "0xc9f859f98ca352a11b97a038c4b4162bee437b8df8caa047990fe9cb03d4f778" | "0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da";
|
|
8
8
|
export declare const SCA_COIN_TYPE: "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524::sca::SCA" | "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA";
|
|
9
9
|
export declare const OLD_BORROW_INCENTIVE_PROTOCOL_ID: "0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410";
|
|
10
|
-
export declare const SUPPORT_POOLS: readonly ["usdc", "sbeth", "sbusdt", "sbwbtc", "weth", "wbtc", "wusdc", "wusdt", "sui", "wapt", "wsol", "cetus", "afsui", "hasui", "vsui", "sca", "fud", "deep", "fdusd", "blub"];
|
|
10
|
+
export declare const SUPPORT_POOLS: readonly ["usdc", "sbeth", "sbusdt", "sbwbtc", "weth", "wbtc", "wusdc", "wusdt", "sui", "wapt", "wsol", "cetus", "afsui", "hasui", "vsui", "sca", "fud", "deep", "fdusd", "blub", "musd"];
|
|
11
11
|
export declare const SUPPORT_COLLATERALS: readonly ["usdc", "sbeth", "sbusdt", "sbwbtc", "weth", "wbtc", "wusdc", "wusdt", "sui", "wapt", "wsol", "cetus", "afsui", "hasui", "vsui", "sca", "fdusd"];
|
|
12
12
|
export declare const SUPPORT_SPOOLS: readonly ["susdc", "sweth", "ssui", "swusdc", "swusdt", "scetus", "safsui", "shasui", "svsui"];
|
|
13
|
-
export declare const SUPPORT_SCOIN: readonly ["susdc", "ssbeth", "ssbusdt", "ssbwbtc", "ssui", "swusdc", "swusdt", "safsui", "shasui", "svsui", "sweth", "ssca", "scetus", "swsol", "swbtc", "sdeep", "sfud", "sfdusd", "sblub"];
|
|
13
|
+
export declare const SUPPORT_SCOIN: readonly ["susdc", "ssbeth", "ssbusdt", "ssbwbtc", "ssui", "swusdc", "swusdt", "safsui", "shasui", "svsui", "sweth", "ssca", "scetus", "swsol", "swbtc", "sdeep", "sfud", "sfdusd", "sblub", "smusd"];
|
|
14
14
|
export declare const SUPPORT_SUI_BRIDGE: readonly ["sbeth", "sbusdt", "sbwbtc"];
|
|
15
15
|
export declare const SUPPORT_WORMHOLE: readonly ["wusdc", "wusdt", "weth", "wbtc", "wapt", "wsol"];
|
|
16
16
|
export declare const SUPPORT_SPOOLS_REWARDS: readonly ["sui"];
|
|
17
|
-
export declare const SUPPORT_BORROW_INCENTIVE_POOLS: readonly ["usdc", "sbeth", "sbusdt", "sbwbtc", "weth", "wbtc", "wusdc", "wusdt", "sui", "wapt", "wsol", "cetus", "afsui", "hasui", "vsui", "sca", "fud", "deep", "fdusd", "blub"];
|
|
18
|
-
export declare const SUPPORT_BORROW_INCENTIVE_REWARDS: readonly ["usdc", "sbeth", "sbusdt", "sbwbtc", "weth", "wbtc", "wusdc", "wusdt", "sui", "wapt", "wsol", "cetus", "afsui", "hasui", "vsui", "sca", "fud", "deep", "fdusd", "blub", "susdc", "ssbeth", "ssbusdt", "ssbwbtc", "ssui", "swusdc", "swusdt", "safsui", "shasui", "svsui", "sweth", "ssca", "scetus", "swsol", "swbtc", "sdeep", "sfud", "sfdusd", "sblub"];
|
|
17
|
+
export declare const SUPPORT_BORROW_INCENTIVE_POOLS: readonly ["usdc", "sbeth", "sbusdt", "sbwbtc", "weth", "wbtc", "wusdc", "wusdt", "sui", "wapt", "wsol", "cetus", "afsui", "hasui", "vsui", "sca", "fud", "deep", "fdusd", "blub", "musd"];
|
|
18
|
+
export declare const SUPPORT_BORROW_INCENTIVE_REWARDS: readonly ["usdc", "sbeth", "sbusdt", "sbwbtc", "weth", "wbtc", "wusdc", "wusdt", "sui", "wapt", "wsol", "cetus", "afsui", "hasui", "vsui", "sca", "fud", "deep", "fdusd", "blub", "musd", "susdc", "ssbeth", "ssbusdt", "ssbwbtc", "ssui", "swusdc", "swusdt", "safsui", "shasui", "svsui", "sweth", "ssca", "scetus", "swsol", "swbtc", "sdeep", "sfud", "sfdusd", "sblub", "smusd"];
|
|
19
19
|
export declare const SUPPORT_ORACLES: readonly ["supra", "switchboard", "pyth"];
|
|
20
20
|
export declare const SUPPORT_PACKAGES: readonly ["coinDecimalsRegistry", "math", "whitelist", "x", "protocol", "protocolWhitelist", "query", "supra", "pyth", "switchboard", "xOracle", "testCoin"];
|
package/dist/constants/enum.d.ts
CHANGED
|
@@ -10,5 +10,5 @@ export declare const coinIds: types.AssetCoinIds;
|
|
|
10
10
|
export declare const wormholeCoinIds: types.WormholeCoinIds;
|
|
11
11
|
export declare const voloCoinIds: types.VoloCoinIds;
|
|
12
12
|
export declare const sCoinIds: types.SCoinIds;
|
|
13
|
-
export declare const sCoinTypeToName: Record<string, "susdc" | "ssbeth" | "ssbusdt" | "ssbwbtc" | "sweth" | "swbtc" | "swusdc" | "swusdt" | "ssui" | "swsol" | "scetus" | "safsui" | "shasui" | "svsui" | "ssca" | "sfud" | "sdeep" | "sfdusd" | "sblub">;
|
|
14
|
-
export declare const sCoinRawNameToName: Record<string, "susdc" | "ssbeth" | "ssbusdt" | "ssbwbtc" | "sweth" | "swbtc" | "swusdc" | "swusdt" | "ssui" | "swsol" | "scetus" | "safsui" | "shasui" | "svsui" | "ssca" | "sfud" | "sdeep" | "sfdusd" | "sblub">;
|
|
13
|
+
export declare const sCoinTypeToName: Record<string, "susdc" | "ssbeth" | "ssbusdt" | "ssbwbtc" | "sweth" | "swbtc" | "swusdc" | "swusdt" | "ssui" | "swsol" | "scetus" | "safsui" | "shasui" | "svsui" | "ssca" | "sfud" | "sdeep" | "sfdusd" | "sblub" | "smusd">;
|
|
14
|
+
export declare const sCoinRawNameToName: Record<string, "susdc" | "ssbeth" | "ssbusdt" | "ssbwbtc" | "sweth" | "swbtc" | "swusdc" | "swusdt" | "ssui" | "swsol" | "scetus" | "safsui" | "shasui" | "svsui" | "ssca" | "sfud" | "sdeep" | "sfdusd" | "sblub" | "smusd">;
|
package/dist/index.js
CHANGED
|
@@ -100,26 +100,35 @@ var DEFAULT_CACHE_OPTIONS = {
|
|
|
100
100
|
|
|
101
101
|
// src/constants/coinGecko.ts
|
|
102
102
|
var COIN_GECKGO_IDS = {
|
|
103
|
-
|
|
103
|
+
// Sui Bridge
|
|
104
104
|
sbeth: "ethereum",
|
|
105
105
|
sbusdt: "tether",
|
|
106
106
|
sbwbtc: "bitcoin",
|
|
107
|
+
// Wormhole
|
|
107
108
|
weth: "ethereum",
|
|
108
109
|
wbtc: "bitcoin",
|
|
109
110
|
wusdc: "usdc",
|
|
110
111
|
wusdt: "tether",
|
|
111
|
-
sui: "sui",
|
|
112
112
|
wapt: "aptos",
|
|
113
113
|
wsol: "solana",
|
|
114
|
-
|
|
114
|
+
// Sui Native
|
|
115
|
+
usdc: "usdc",
|
|
116
|
+
// Sui LST
|
|
117
|
+
sui: "sui",
|
|
115
118
|
afsui: "sui",
|
|
116
119
|
hasui: "sui",
|
|
117
120
|
vsui: "sui",
|
|
118
|
-
|
|
121
|
+
// Stable
|
|
119
122
|
fdusd: "first-digital-usd",
|
|
123
|
+
// DeFi
|
|
124
|
+
cetus: "cetus-protocol",
|
|
125
|
+
sca: "scallop-2",
|
|
120
126
|
deep: "deepbook",
|
|
127
|
+
// Isolated Asset
|
|
121
128
|
fud: "fud-the-pug",
|
|
122
|
-
blub: "blub"
|
|
129
|
+
blub: "blub",
|
|
130
|
+
musd: ""
|
|
131
|
+
// @TODO: add coinGecko id
|
|
123
132
|
};
|
|
124
133
|
|
|
125
134
|
// src/constants/common.ts
|
|
@@ -156,7 +165,8 @@ var SUPPORT_POOLS = [
|
|
|
156
165
|
"fud",
|
|
157
166
|
"deep",
|
|
158
167
|
"fdusd",
|
|
159
|
-
"blub"
|
|
168
|
+
"blub",
|
|
169
|
+
"musd"
|
|
160
170
|
];
|
|
161
171
|
var SUPPORT_COLLATERALS = [
|
|
162
172
|
"usdc",
|
|
@@ -211,7 +221,8 @@ var SUPPORT_SCOIN = [
|
|
|
211
221
|
"sdeep",
|
|
212
222
|
"sfud",
|
|
213
223
|
"sfdusd",
|
|
214
|
-
"sblub"
|
|
224
|
+
"sblub",
|
|
225
|
+
"smusd"
|
|
215
226
|
];
|
|
216
227
|
var SUPPORT_SUI_BRIDGE = ["sbeth", "sbusdt", "sbwbtc"];
|
|
217
228
|
var SUPPORT_WORMHOLE = [
|
|
@@ -266,6 +277,7 @@ var coinDecimals = {
|
|
|
266
277
|
deep: 6,
|
|
267
278
|
fud: 5,
|
|
268
279
|
blub: 2,
|
|
280
|
+
musd: 9,
|
|
269
281
|
susdc: 6,
|
|
270
282
|
sweth: 8,
|
|
271
283
|
ssbeth: 8,
|
|
@@ -285,7 +297,8 @@ var coinDecimals = {
|
|
|
285
297
|
sfdusd: 6,
|
|
286
298
|
sdeep: 6,
|
|
287
299
|
sfud: 5,
|
|
288
|
-
sblub: 2
|
|
300
|
+
sblub: 2,
|
|
301
|
+
smusd: 9
|
|
289
302
|
};
|
|
290
303
|
var assetCoins = {
|
|
291
304
|
usdc: "usdc",
|
|
@@ -307,7 +320,8 @@ var assetCoins = {
|
|
|
307
320
|
fdusd: "fdusd",
|
|
308
321
|
deep: "deep",
|
|
309
322
|
fud: "fud",
|
|
310
|
-
blub: "blub"
|
|
323
|
+
blub: "blub",
|
|
324
|
+
musd: "musd"
|
|
311
325
|
};
|
|
312
326
|
var marketCoins = {
|
|
313
327
|
susdc: "susdc",
|
|
@@ -329,7 +343,8 @@ var marketCoins = {
|
|
|
329
343
|
sfdusd: "sfdusd",
|
|
330
344
|
sdeep: "sdeep",
|
|
331
345
|
sfud: "sfud",
|
|
332
|
-
sblub: "sblub"
|
|
346
|
+
sblub: "sblub",
|
|
347
|
+
smusd: "smusd"
|
|
333
348
|
};
|
|
334
349
|
var sCoins = {
|
|
335
350
|
susdc: "susdc",
|
|
@@ -350,7 +365,8 @@ var sCoins = {
|
|
|
350
365
|
sfdusd: "sfdusd",
|
|
351
366
|
sfud: "sfud",
|
|
352
367
|
sdeep: "sdeep",
|
|
353
|
-
sblub: "sblub"
|
|
368
|
+
sblub: "sblub",
|
|
369
|
+
smusd: "smusd"
|
|
354
370
|
};
|
|
355
371
|
var stakeMarketCoins = {
|
|
356
372
|
susdc: "susdc",
|
|
@@ -404,7 +420,8 @@ var coinIds = {
|
|
|
404
420
|
// Sui bridge assets
|
|
405
421
|
sbeth: "0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29",
|
|
406
422
|
sbusdt: "0x375f70cf2ae4c00bf37117d0c85a2c71545e6ee05c4a5c7d282cd66a4504b068",
|
|
407
|
-
sbwbtc: "0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b"
|
|
423
|
+
sbwbtc: "0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b",
|
|
424
|
+
musd: "0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722"
|
|
408
425
|
};
|
|
409
426
|
var wormholeCoinIds = {
|
|
410
427
|
weth: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
|
|
@@ -441,7 +458,8 @@ var sCoinIds = {
|
|
|
441
458
|
// Sui bridge assets
|
|
442
459
|
ssbeth: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
|
|
443
460
|
ssbusdt: "0xb1d7df34829d1513b73ba17cb7ad90c88d1e104bb65ab8f62f13e0cc103783d3::scallop_sb_usdt::SCALLOP_SB_USDT",
|
|
444
|
-
ssbwbtc: "0x08c0fe357d3a138f4552bee393ce3a28a45bebcca43373d6a90bc44ab76f82e2::scallop_sb_wbtc::SCALLOP_SB_WBTC"
|
|
461
|
+
ssbwbtc: "0x08c0fe357d3a138f4552bee393ce3a28a45bebcca43373d6a90bc44ab76f82e2::scallop_sb_wbtc::SCALLOP_SB_WBTC",
|
|
462
|
+
smusd: "0x0a228d1c59071eccf3716076a1f71216846ee256d9fb07ea11fb7c1eb56435a5::scallop_musd::SCALLOP_MUSD"
|
|
445
463
|
};
|
|
446
464
|
var sCoinTypeToName = Object.entries(sCoinIds).reduce(
|
|
447
465
|
(acc, [coinName, coinType]) => {
|
|
@@ -929,6 +947,29 @@ var POOL_ADDRESSES = {
|
|
|
929
947
|
decimals: 6,
|
|
930
948
|
pythFeed: "0xccdc1a08923e2e4f4b1e6ea89de6acbc5fe1948e9706f5604b8cb50bc1ed3979",
|
|
931
949
|
pythFeedObjectId: "0x5f6583b2b0fe1ecf94aaffeaab8a838794693960cea48c0da282d5f4a24be027"
|
|
950
|
+
},
|
|
951
|
+
// @TODO: add pyth feed
|
|
952
|
+
musd: {
|
|
953
|
+
coinName: "musd",
|
|
954
|
+
symbol: "mUSD",
|
|
955
|
+
lendingPoolAddress: "0x0565254220e7ca857a87341898bdebeb9e5d6f8f8fe68eb25dd3e257d41a0b0c",
|
|
956
|
+
collateralPoolAddress: void 0,
|
|
957
|
+
borrowDynamic: "0x9448dc2ae8054d5b735fd617fb4ca57046ddc98bfff91ce31de1df452f3bf695",
|
|
958
|
+
interestModel: "0xc3b57c57814e22ac42c7062922a0437ebf40495e37aee32cbb94cba0693970ed",
|
|
959
|
+
riskModel: void 0,
|
|
960
|
+
borrowFeeKey: "0xfdb02d76dc67553fd15f42f1de49ca79cd2812bdaf8bcd079cfe17ce23ed9fc4",
|
|
961
|
+
supplyLimitKey: "0x340aaae070f9489b59c4257610babf6f170abf43fbe51cf7de1e2e04492f6823",
|
|
962
|
+
isolatedAssetKey: "0xe10f03b13d2cdb46543130bafaf1884c9a5a7712b5932aae15b2f8d4fc31a774",
|
|
963
|
+
sCoinTreasury: "0xadfd554635ccc87e992f23ca838f0f16c14874e324a1b79b77f6bfe118edea9f",
|
|
964
|
+
sCoinType: "0x0a228d1c59071eccf3716076a1f71216846ee256d9fb07ea11fb7c1eb56435a5::scallop_musd::SCALLOP_MUSD",
|
|
965
|
+
sCoinName: "smusd",
|
|
966
|
+
sCoinSymbol: "smUSD",
|
|
967
|
+
coinMetadataId: "0xc154abd271b24032a2c80d96c1b82109490bb600ed189ef881d8c9467ed44a4f",
|
|
968
|
+
coinType: "0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD",
|
|
969
|
+
sCoinMetadataId: "0xb924f8c3d4b993172d4fc553c1ea242e8ca539e83edc3edaf5512ae44dfa6863",
|
|
970
|
+
decimals: 0,
|
|
971
|
+
pythFeed: "",
|
|
972
|
+
pythFeedObjectId: ""
|
|
932
973
|
}
|
|
933
974
|
};
|
|
934
975
|
|
|
@@ -957,7 +998,9 @@ var PYTH_FEED_IDS = {
|
|
|
957
998
|
fdusd: "0xccdc1a08923e2e4f4b1e6ea89de6acbc5fe1948e9706f5604b8cb50bc1ed3979",
|
|
958
999
|
deep: "29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",
|
|
959
1000
|
fud: "6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75",
|
|
960
|
-
blub: "5fc11ffe4975b624be495be038da30e30bee2004d8ae6282b5364577ef4ca92c"
|
|
1001
|
+
blub: "5fc11ffe4975b624be495be038da30e30bee2004d8ae6282b5364577ef4ca92c",
|
|
1002
|
+
musd: ""
|
|
1003
|
+
// @TODO: add mUSD pyth
|
|
961
1004
|
};
|
|
962
1005
|
|
|
963
1006
|
// src/constants/queryKeys.ts
|
|
@@ -1270,6 +1313,8 @@ var TEST_ADDRESSES = {
|
|
|
1270
1313
|
sbwbtc: {},
|
|
1271
1314
|
// @ts-ignore
|
|
1272
1315
|
blub: {},
|
|
1316
|
+
// @ts-ignore
|
|
1317
|
+
musd: {},
|
|
1273
1318
|
fdusd: {
|
|
1274
1319
|
id: "0xf16e6b723f242ec745dfd7634ad072c42d5c1d9ac9d62a39c381303eaa57693a",
|
|
1275
1320
|
metaData: "0xdebee5265a67c186ed87fe93303d33dfe1de53e3b4fd7d9329c2852860acd3e7",
|
|
@@ -3089,10 +3134,13 @@ var parseAssetSymbol = (coinName) => {
|
|
|
3089
3134
|
return `w${coinName.slice(1).toUpperCase()}`;
|
|
3090
3135
|
}
|
|
3091
3136
|
if (isSuiBridgeAsset(coinName)) {
|
|
3092
|
-
|
|
3093
|
-
|
|
3137
|
+
switch (coinName) {
|
|
3138
|
+
case "sbwbtc":
|
|
3139
|
+
return "sbwBTC";
|
|
3140
|
+
default: {
|
|
3141
|
+
return `sb${coinName.slice(2).toUpperCase()}`;
|
|
3142
|
+
}
|
|
3094
3143
|
}
|
|
3095
|
-
return `sb${coinName.slice(2).toUpperCase()}`;
|
|
3096
3144
|
}
|
|
3097
3145
|
if (isMarketCoin(coinName)) {
|
|
3098
3146
|
const assetCoinName = coinName.slice(1).toLowerCase();
|
|
@@ -3105,6 +3153,8 @@ var parseAssetSymbol = (coinName) => {
|
|
|
3105
3153
|
return "haSUI";
|
|
3106
3154
|
case "vsui":
|
|
3107
3155
|
return "vSUI";
|
|
3156
|
+
case "musd":
|
|
3157
|
+
return "mUSD";
|
|
3108
3158
|
default:
|
|
3109
3159
|
return coinName.toUpperCase();
|
|
3110
3160
|
}
|
|
@@ -5794,14 +5844,14 @@ var getVeScaTreasuryInfo = async (utils) => {
|
|
|
5794
5844
|
};
|
|
5795
5845
|
|
|
5796
5846
|
// src/queries/poolAddressesQuery.ts
|
|
5797
|
-
var getAllAddresses = async (query) => {
|
|
5847
|
+
var getAllAddresses = async (query, pools) => {
|
|
5798
5848
|
const results = {};
|
|
5799
5849
|
const marketId = query.address.get("core.market");
|
|
5800
5850
|
const marketObject = (await query.cache.queryGetObject(marketId))?.data;
|
|
5801
5851
|
if (!(marketObject && marketObject.content?.dataType === "moveObject"))
|
|
5802
5852
|
throw new Error(`Failed to fetch marketObject`);
|
|
5803
5853
|
const fields = marketObject.content.fields;
|
|
5804
|
-
const coinTypesPairs =
|
|
5854
|
+
const coinTypesPairs = pools.reduce(
|
|
5805
5855
|
(acc, pool) => {
|
|
5806
5856
|
acc.push([pool, query.utils.parseCoinType(pool).substring(2)]);
|
|
5807
5857
|
return acc;
|
|
@@ -8991,8 +9041,8 @@ var ScallopQuery = class {
|
|
|
8991
9041
|
* Query all address (lending pool, collateral pool, borrow dynamics, interest models, etc.) of all pool
|
|
8992
9042
|
* @returns
|
|
8993
9043
|
*/
|
|
8994
|
-
async getPoolAddresses() {
|
|
8995
|
-
return getAllAddresses(this);
|
|
9044
|
+
async getPoolAddresses(pools = [...SUPPORT_POOLS]) {
|
|
9045
|
+
return getAllAddresses(this, pools);
|
|
8996
9046
|
}
|
|
8997
9047
|
/**
|
|
8998
9048
|
* Get user portfolio
|