@scallop-io/sui-scallop-sdk 1.3.4-alpha.7 → 1.3.4
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 +3 -3
- package/dist/constants/enum.d.ts +1 -1
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/poolAddress.d.ts +1 -1
- package/dist/index.js +434 -335
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +434 -335
- package/dist/index.mjs.map +1 -1
- package/dist/models/scallopQuery.d.ts +11 -3
- package/dist/models/scallopUtils.d.ts +1 -1
- package/dist/queries/borrowLimitQuery.d.ts +9 -0
- package/dist/queries/coreQuery.d.ts +2 -0
- package/dist/queries/index.d.ts +1 -0
- package/dist/queries/portfolioQuery.d.ts +2 -0
- package/dist/queries/sCoinQuery.d.ts +1 -1
- package/dist/queries/supplyLimitQuery.d.ts +2 -2
- package/dist/types/query/core.d.ts +2 -0
- package/dist/types/utils.d.ts +1 -1
- package/package.json +1 -1
- package/src/constants/coinGecko.ts +4 -2
- package/src/constants/common.ts +6 -1
- package/src/constants/enum.ts +20 -15
- package/src/constants/index.ts +1 -0
- package/src/constants/poolAddress.ts +7 -1
- package/src/constants/pyth.ts +2 -0
- package/src/constants/testAddress.ts +76 -35
- package/src/models/scallopBuilder.ts +2 -3
- package/src/models/scallopQuery.ts +26 -18
- package/src/models/scallopUtils.ts +5 -6
- package/src/queries/borrowLimitQuery.ts +52 -0
- package/src/queries/coreQuery.ts +238 -229
- package/src/queries/index.ts +1 -0
- package/src/queries/isolatedAssetQuery.ts +4 -5
- package/src/queries/priceQuery.ts +6 -4
- package/src/queries/referralQuery.ts +0 -1
- package/src/queries/spoolQuery.ts +1 -1
- package/src/queries/supplyLimitQuery.ts +22 -18
- package/src/types/query/core.ts +2 -0
- package/src/types/utils.ts +1 -1
package/dist/index.mjs
CHANGED
|
@@ -10,11 +10,11 @@ var DEFAULT_CACHE_OPTIONS = {
|
|
|
10
10
|
|
|
11
11
|
// src/constants/coinGecko.ts
|
|
12
12
|
var COIN_GECKGO_IDS = {
|
|
13
|
-
usdc: "usdc
|
|
13
|
+
usdc: "usdc",
|
|
14
14
|
sbeth: "ethereum",
|
|
15
15
|
weth: "ethereum",
|
|
16
16
|
wbtc: "bitcoin",
|
|
17
|
-
wusdc: "usdc
|
|
17
|
+
wusdc: "usdc",
|
|
18
18
|
wusdt: "tether",
|
|
19
19
|
sui: "sui",
|
|
20
20
|
wapt: "aptos",
|
|
@@ -23,7 +23,9 @@ var COIN_GECKGO_IDS = {
|
|
|
23
23
|
afsui: "sui",
|
|
24
24
|
hasui: "sui",
|
|
25
25
|
vsui: "sui",
|
|
26
|
-
sca: "scallop-2"
|
|
26
|
+
sca: "scallop-2",
|
|
27
|
+
deep: "deepbook",
|
|
28
|
+
fud: "fud-the-pug"
|
|
27
29
|
};
|
|
28
30
|
|
|
29
31
|
// src/constants/common.ts
|
|
@@ -31,7 +33,7 @@ var API_BASE_URL = "https://sui.apis.scallop.io";
|
|
|
31
33
|
var SDK_API_BASE_URL = "https://sdk.api.scallop.io";
|
|
32
34
|
var IS_VE_SCA_TEST = false;
|
|
33
35
|
var USE_TEST_ADDRESS = false;
|
|
34
|
-
var ADDRESSES_ID = IS_VE_SCA_TEST || USE_TEST_ADDRESS ? "65fb07c39c845425d71d7b18" : "
|
|
36
|
+
var ADDRESSES_ID = IS_VE_SCA_TEST || USE_TEST_ADDRESS ? "65fb07c39c845425d71d7b18" : "675c65cd301dd817ea262e76";
|
|
35
37
|
var PROTOCOL_OBJECT_ID = IS_VE_SCA_TEST ? "0xc9f859f98ca352a11b97a038c4b4162bee437b8df8caa047990fe9cb03d4f778" : "0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf";
|
|
36
38
|
var BORROW_FEE_PROTOCOL_ID = IS_VE_SCA_TEST ? "0xc9f859f98ca352a11b97a038c4b4162bee437b8df8caa047990fe9cb03d4f778" : "0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da";
|
|
37
39
|
var SCA_COIN_TYPE = IS_VE_SCA_TEST ? `0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524::sca::SCA` : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA";
|
|
@@ -52,7 +54,9 @@ var SUPPORT_POOLS = [
|
|
|
52
54
|
"afsui",
|
|
53
55
|
"hasui",
|
|
54
56
|
"vsui",
|
|
55
|
-
"sca"
|
|
57
|
+
"sca",
|
|
58
|
+
"fud",
|
|
59
|
+
"deep"
|
|
56
60
|
];
|
|
57
61
|
var SUPPORT_COLLATERALS = [
|
|
58
62
|
"usdc",
|
|
@@ -96,7 +100,9 @@ var SUPPORT_SCOIN = [
|
|
|
96
100
|
"ssca",
|
|
97
101
|
"scetus",
|
|
98
102
|
"swsol",
|
|
99
|
-
"swbtc"
|
|
103
|
+
"swbtc",
|
|
104
|
+
"sdeep",
|
|
105
|
+
"sfud"
|
|
100
106
|
];
|
|
101
107
|
var SUPPORT_SUI_BRIDGE = ["sbeth"];
|
|
102
108
|
var SUPPORT_WORMHOLE = [
|
|
@@ -153,6 +159,8 @@ var coinDecimals = {
|
|
|
153
159
|
hasui: 9,
|
|
154
160
|
vsui: 9,
|
|
155
161
|
sca: 9,
|
|
162
|
+
deep: 6,
|
|
163
|
+
fud: 5,
|
|
156
164
|
susdc: 6,
|
|
157
165
|
sweth: 8,
|
|
158
166
|
ssbeth: 8,
|
|
@@ -166,7 +174,9 @@ var coinDecimals = {
|
|
|
166
174
|
safsui: 9,
|
|
167
175
|
shasui: 9,
|
|
168
176
|
svsui: 9,
|
|
169
|
-
ssca: 9
|
|
177
|
+
ssca: 9,
|
|
178
|
+
sdeep: 6,
|
|
179
|
+
sfud: 5
|
|
170
180
|
};
|
|
171
181
|
var assetCoins = {
|
|
172
182
|
usdc: "usdc",
|
|
@@ -182,7 +192,9 @@ var assetCoins = {
|
|
|
182
192
|
afsui: "afsui",
|
|
183
193
|
hasui: "hasui",
|
|
184
194
|
vsui: "vsui",
|
|
185
|
-
sca: "sca"
|
|
195
|
+
sca: "sca",
|
|
196
|
+
deep: "deep",
|
|
197
|
+
fud: "fud"
|
|
186
198
|
};
|
|
187
199
|
var marketCoins = {
|
|
188
200
|
susdc: "susdc",
|
|
@@ -198,7 +210,9 @@ var marketCoins = {
|
|
|
198
210
|
safsui: "safsui",
|
|
199
211
|
shasui: "shasui",
|
|
200
212
|
svsui: "svsui",
|
|
201
|
-
ssca: "ssca"
|
|
213
|
+
ssca: "ssca",
|
|
214
|
+
sdeep: "sdeep",
|
|
215
|
+
sfud: "sfud"
|
|
202
216
|
};
|
|
203
217
|
var sCoins = {
|
|
204
218
|
susdc: "susdc",
|
|
@@ -213,7 +227,9 @@ var sCoins = {
|
|
|
213
227
|
svsui: "svsui",
|
|
214
228
|
ssca: "ssca",
|
|
215
229
|
swsol: "swsol",
|
|
216
|
-
swbtc: "swbtc"
|
|
230
|
+
swbtc: "swbtc",
|
|
231
|
+
sfud: "sfud",
|
|
232
|
+
sdeep: "sdeep"
|
|
217
233
|
};
|
|
218
234
|
var stakeMarketCoins = {
|
|
219
235
|
susdc: "susdc",
|
|
@@ -266,7 +282,10 @@ var coinIds = {
|
|
|
266
282
|
afsui: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
|
|
267
283
|
hasui: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
|
|
268
284
|
vsui: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
|
|
269
|
-
sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6"
|
|
285
|
+
sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
|
|
286
|
+
// isolated assets
|
|
287
|
+
deep: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",
|
|
288
|
+
fud: "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1"
|
|
270
289
|
};
|
|
271
290
|
var wormholeCoinIds = {
|
|
272
291
|
weth: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
|
|
@@ -292,7 +311,9 @@ var sCoinIds = {
|
|
|
292
311
|
shasui: "0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",
|
|
293
312
|
svsui: "0xe1a1cc6bcf0001a015eab84bcc6713393ce20535f55b8b6f35c142e057a25fbe::scallop_v_sui::SCALLOP_V_SUI",
|
|
294
313
|
swsol: "0x1392650f2eca9e3f6ffae3ff89e42a3590d7102b80e2b430f674730bc30d3259::scallop_wormhole_sol::SCALLOP_WORMHOLE_SOL",
|
|
295
|
-
swbtc: "0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC"
|
|
314
|
+
swbtc: "0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC",
|
|
315
|
+
sdeep: "0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",
|
|
316
|
+
sfud: "0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD"
|
|
296
317
|
};
|
|
297
318
|
var sCoinTypeToName = Object.entries(sCoinIds).reduce(
|
|
298
319
|
(acc, [coinName, coinType]) => {
|
|
@@ -375,6 +396,12 @@ var POOL_ADDRESSES = {
|
|
|
375
396
|
sca: {
|
|
376
397
|
lendingPoolAddress: "0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",
|
|
377
398
|
collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31"
|
|
399
|
+
},
|
|
400
|
+
fud: {
|
|
401
|
+
lendingPoolAddress: ""
|
|
402
|
+
},
|
|
403
|
+
deep: {
|
|
404
|
+
lendingPoolAddress: ""
|
|
378
405
|
}
|
|
379
406
|
};
|
|
380
407
|
|
|
@@ -397,7 +424,9 @@ var PYTH_FEED_IDS = {
|
|
|
397
424
|
afsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
398
425
|
hasui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
399
426
|
vsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
400
|
-
sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc"
|
|
427
|
+
sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
|
|
428
|
+
deep: "29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",
|
|
429
|
+
fud: "6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75"
|
|
401
430
|
};
|
|
402
431
|
|
|
403
432
|
// src/constants/queryKeys.ts
|
|
@@ -502,20 +531,33 @@ var TEST_ADDRESSES = {
|
|
|
502
531
|
core: {
|
|
503
532
|
// version:
|
|
504
533
|
// '0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7',
|
|
505
|
-
version: "
|
|
534
|
+
version: "0xd318de9b0f6873879a82cbfcc2daa1d1591a8b54e7cea9f4b567da63c692a52b",
|
|
506
535
|
versionCap: "0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",
|
|
507
536
|
// object:
|
|
508
537
|
// '0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf',
|
|
509
|
-
object: "
|
|
538
|
+
object: "0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d",
|
|
510
539
|
// market:
|
|
511
540
|
// '0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9',
|
|
512
|
-
market: "
|
|
541
|
+
market: "0x9d6434e97f3f98fd9b0c0e1dca22632073985abcd22541feae7ee1e34cbe3af2",
|
|
513
542
|
adminCap: "0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",
|
|
514
543
|
coinDecimalsRegistry: "0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",
|
|
515
544
|
// obligationAccessStore:
|
|
516
545
|
// '0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9',
|
|
517
|
-
obligationAccessStore: "
|
|
546
|
+
obligationAccessStore: "0x46e9b44a77ee9c9d33cc2689ecdfbb8f681935cbc6bdf6ac3df048e396c36c82",
|
|
518
547
|
coins: {
|
|
548
|
+
usdc: {
|
|
549
|
+
id: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7",
|
|
550
|
+
metaData: "0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6",
|
|
551
|
+
treasury: "",
|
|
552
|
+
oracle: {
|
|
553
|
+
supra: "",
|
|
554
|
+
switchboard: "",
|
|
555
|
+
pyth: {
|
|
556
|
+
feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
|
|
557
|
+
feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
},
|
|
519
561
|
cetus: {
|
|
520
562
|
id: "0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",
|
|
521
563
|
metaData: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",
|
|
@@ -671,6 +713,19 @@ var TEST_ADDRESSES = {
|
|
|
671
713
|
feedObject: "0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"
|
|
672
714
|
}
|
|
673
715
|
}
|
|
716
|
+
},
|
|
717
|
+
sbeth: {
|
|
718
|
+
id: "0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29",
|
|
719
|
+
metaData: "0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0",
|
|
720
|
+
treasury: "",
|
|
721
|
+
oracle: {
|
|
722
|
+
supra: "",
|
|
723
|
+
switchboard: "",
|
|
724
|
+
pyth: {
|
|
725
|
+
feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
|
|
726
|
+
feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
|
|
727
|
+
}
|
|
728
|
+
}
|
|
674
729
|
}
|
|
675
730
|
},
|
|
676
731
|
oracles: {
|
|
@@ -704,7 +759,7 @@ var TEST_ADDRESSES = {
|
|
|
704
759
|
upgradeCap: "0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"
|
|
705
760
|
},
|
|
706
761
|
protocol: {
|
|
707
|
-
id: "
|
|
762
|
+
id: "0xb784ea287d944e478a3ceaa071f8885072cce6b7224cf245914dc2f9963f460e",
|
|
708
763
|
upgradeCap: "0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"
|
|
709
764
|
},
|
|
710
765
|
// protocol: {
|
|
@@ -722,7 +777,7 @@ var TEST_ADDRESSES = {
|
|
|
722
777
|
// '0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f',
|
|
723
778
|
// },
|
|
724
779
|
query: {
|
|
725
|
-
id: "
|
|
780
|
+
id: "0x89706958f43fb170de134579e3fbc53972b946ee78bd2442d8e1adc36074fbdc",
|
|
726
781
|
upgradeCap: "0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"
|
|
727
782
|
},
|
|
728
783
|
supra: { id: "", upgradeCap: "" },
|
|
@@ -758,6 +813,10 @@ var TEST_ADDRESSES = {
|
|
|
758
813
|
"0xc3206071a8d43212efb6e3b5504f2321f8df97ab122b466c0bc7cfdf398dc13a"
|
|
759
814
|
)
|
|
760
815
|
},
|
|
816
|
+
susdc: {
|
|
817
|
+
id: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
|
|
818
|
+
rewardPoolId: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166"
|
|
819
|
+
},
|
|
761
820
|
swusdc: {
|
|
762
821
|
// id: '0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0',
|
|
763
822
|
id: "0xf1b383b9cf2e9f515fc69567df1053098f273849d09cd84b0278a773429bd2b2",
|
|
@@ -806,37 +865,37 @@ var TEST_ADDRESSES = {
|
|
|
806
865
|
config: ""
|
|
807
866
|
},
|
|
808
867
|
borrowIncentive: {
|
|
809
|
-
id: "
|
|
810
|
-
adminCap: "
|
|
811
|
-
object: "
|
|
812
|
-
query: "
|
|
813
|
-
incentivePools: "
|
|
814
|
-
incentiveAccounts: "
|
|
815
|
-
config: "
|
|
868
|
+
id: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
|
|
869
|
+
adminCap: "0x56ac8e6f2b360b2b35c0168d72cc6cd17d9592afb83709865cb87af24bb2025b",
|
|
870
|
+
object: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
|
|
871
|
+
query: "0x8e0d00f8ff1199d7c5fe56cea0e901a525daeefff0445a1635ace8282ae3302c",
|
|
872
|
+
incentivePools: "0x9d564c93128c6ab0c0d3e050a47f11df0b91494f3bb779bdc1301c1c637f15eb",
|
|
873
|
+
incentiveAccounts: "0x09e6040e798246de04941bc79a3ba62d3eca6d7a218cc30f21fb07f478fa2926",
|
|
874
|
+
config: "0x43d4ca1dfc90b161c4240facd119e74e4b850cca2957f88c2ec289c9380da064"
|
|
816
875
|
},
|
|
817
876
|
referral: {
|
|
818
|
-
id: "
|
|
877
|
+
id: "0x1bf5a8ce77050d8052549d743e16b469f15aa6b81b752b78b6ebb65179665f5a",
|
|
819
878
|
object: "0x5658d4bf5ddcba27e4337b4262108b3ad1716643cac8c2054ac341538adc72ec",
|
|
820
879
|
adminCap: "0xc5dc06b9074291259f2cac460c940012c781c4430e42125c541cc43101c3bcbd",
|
|
821
|
-
referralBindings: "
|
|
822
|
-
bindingTableId: "
|
|
823
|
-
referralRevenuePool: "
|
|
880
|
+
referralBindings: "0xcf184487782bed962bf678001efe775d31fb94b9992333a57594cf15d79d5ced",
|
|
881
|
+
bindingTableId: "0x41a50e258c0a266ce84e0e1a618dbf70b878cc943909e613089a50afcceb2bc0",
|
|
882
|
+
referralRevenuePool: "0xc24e3e5e37032f29a3dd91a9a1f057af8821b7e6c148e9683900ac8b6d30f0c6",
|
|
824
883
|
revenueTableId: "0x595baa3654c297bff84ab7786a2d250f019cefc66e8df8e89fd9d41e02bd30dd",
|
|
825
|
-
referralTiers: "
|
|
884
|
+
referralTiers: "0x144350f3db9b46d11b140084cd54e6de0b9c3b8d265ce8059b51d0ef58ea464b",
|
|
826
885
|
tiersTableId: "0xeac755a7a8b7798530905ac79e8c114f19d0f130f6eab012954f08faac29c75d",
|
|
827
886
|
// authorizedWitnessList:
|
|
828
887
|
// '0xf21b0ed043c9bb70842c0129159f4943dbcc3c9ef2f2f808af65f8be25cfd20e',
|
|
829
888
|
authorizedWitnessList: "0x9d6223dc52015b8a3986a573590ef2af8f1b8f3e4685513888c052f001b87e7f",
|
|
830
|
-
version: "
|
|
889
|
+
version: "0x3545849eb97723e676a476ec9d4fe5f2eb0eb2c6b78972851114fd4c7ed4639f"
|
|
831
890
|
},
|
|
832
891
|
vesca: {
|
|
833
|
-
id: "
|
|
834
|
-
object: "
|
|
892
|
+
id: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
|
|
893
|
+
object: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
|
|
835
894
|
adminCap: "0x8ffa76135c5b85c5fbd73a6448a4a733d826cb63a267ab817656acb77c72d4a5",
|
|
836
|
-
tableId: "
|
|
837
|
-
table: "
|
|
838
|
-
treasury: "
|
|
839
|
-
config: "
|
|
895
|
+
tableId: "0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",
|
|
896
|
+
table: "0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",
|
|
897
|
+
treasury: "0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",
|
|
898
|
+
config: "0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"
|
|
840
899
|
},
|
|
841
900
|
loyaltyProgram: {
|
|
842
901
|
id: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
|
|
@@ -845,27 +904,27 @@ var TEST_ADDRESSES = {
|
|
|
845
904
|
userRewardTableId: "0x748a80395849ed37db1b0e14f2ab5d1d96458d2359ab3a84eb079d0f4ac7cf2e"
|
|
846
905
|
},
|
|
847
906
|
scoin: {
|
|
848
|
-
id: "
|
|
907
|
+
id: "0x773dab39c90fe05439b06a2d061795e52a974ff92c2aef90b2ee467acf7f33c8",
|
|
849
908
|
coins: {
|
|
850
909
|
ssui: {
|
|
851
|
-
coinType: "
|
|
852
|
-
treasury: "
|
|
910
|
+
coinType: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
|
|
911
|
+
treasury: "0x0e499640a12c38dd9cc44532f5bc5fd1b6da86d2f9a8810357250f4b26e9e5c7"
|
|
853
912
|
},
|
|
854
913
|
scetus: {
|
|
855
914
|
coinType: "0x8b71e6d323ed78515af2bead13bf3d0da1562ba4a99234eb7c4f14fd39ef0427::scallop_cetus::SCALLOP_CETUS",
|
|
856
915
|
treasury: "0xd786f4b2d26278cc7911a3445b1b085eab60f269ef9dbb6b87e803d52f155003"
|
|
857
916
|
},
|
|
858
917
|
ssca: {
|
|
859
|
-
coinType: "
|
|
860
|
-
treasury: "
|
|
918
|
+
coinType: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
|
|
919
|
+
treasury: "0x5f1c5de1df7341075d119570269b7b452af50afe8363080638f1ae29a554c038"
|
|
861
920
|
},
|
|
862
921
|
swusdc: {
|
|
863
|
-
coinType: "
|
|
864
|
-
treasury: "
|
|
922
|
+
coinType: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
|
|
923
|
+
treasury: "0x471fbab72578bab577263006fe32543b6e76153fffa2bef69affe4bc4934258f"
|
|
865
924
|
},
|
|
866
925
|
swusdt: {
|
|
867
|
-
coinType: "
|
|
868
|
-
treasury: "
|
|
926
|
+
coinType: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
|
|
927
|
+
treasury: "0x921a4ed4bb4b4f11f51a462c83f4c0f6b60a90e441d1bc0d26d6fd893146bf4d"
|
|
869
928
|
},
|
|
870
929
|
sweth: {
|
|
871
930
|
coinType: "0x27d54f43e3eda701be56b82e5756e41c84467cd202f5cf713d5f9e45a9f1b6bc::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
|
|
@@ -881,7 +940,11 @@ var TEST_ADDRESSES = {
|
|
|
881
940
|
},
|
|
882
941
|
svsui: {
|
|
883
942
|
coinType: "0x97023a317320c4498cc4cd239dd02fd30c28246e5e8f81325d63f2bd8d70f6b3::scallop_v_sui::SCALLOP_V_SUI",
|
|
884
|
-
treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6
|
|
943
|
+
treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6"
|
|
944
|
+
},
|
|
945
|
+
ssbeth: {
|
|
946
|
+
coinType: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
|
|
947
|
+
treasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed"
|
|
885
948
|
}
|
|
886
949
|
}
|
|
887
950
|
}
|
|
@@ -2588,23 +2651,148 @@ var supplyLimitZod = zod.object({
|
|
|
2588
2651
|
value: zod.string()
|
|
2589
2652
|
})
|
|
2590
2653
|
});
|
|
2591
|
-
var
|
|
2654
|
+
var supplyLimitKeyType = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
|
|
2592
2655
|
var getSupplyLimit = async (utils, poolName) => {
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2656
|
+
try {
|
|
2657
|
+
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
2658
|
+
const marketObject = utils.address.get("core.market");
|
|
2659
|
+
if (!marketObject)
|
|
2660
|
+
return null;
|
|
2661
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2662
|
+
parentId: marketObject,
|
|
2663
|
+
name: {
|
|
2664
|
+
type: supplyLimitKeyType,
|
|
2665
|
+
value: poolCoinType
|
|
2666
|
+
}
|
|
2667
|
+
});
|
|
2668
|
+
const parsedData = supplyLimitZod.safeParse(object?.data?.content);
|
|
2669
|
+
if (!parsedData.success)
|
|
2670
|
+
return null;
|
|
2671
|
+
return parsedData.data.fields.value;
|
|
2672
|
+
} catch (e) {
|
|
2673
|
+
console.error(`Error in getSupplyLimit for ${poolName}: ${e.message}`);
|
|
2674
|
+
return "0";
|
|
2675
|
+
}
|
|
2676
|
+
};
|
|
2677
|
+
|
|
2678
|
+
// src/queries/isolatedAssetQuery.ts
|
|
2679
|
+
import { z as zod2 } from "zod";
|
|
2680
|
+
var isolatedAssetZod = zod2.object({
|
|
2681
|
+
dataType: zod2.string(),
|
|
2682
|
+
type: zod2.string(),
|
|
2683
|
+
hasPublicTransfer: zod2.boolean(),
|
|
2684
|
+
fields: zod2.object({
|
|
2685
|
+
id: zod2.object({
|
|
2686
|
+
id: zod2.string()
|
|
2687
|
+
}),
|
|
2688
|
+
name: zod2.object({
|
|
2689
|
+
type: zod2.string()
|
|
2690
|
+
}),
|
|
2691
|
+
value: zod2.boolean()
|
|
2692
|
+
})
|
|
2693
|
+
});
|
|
2694
|
+
var isolatedAssetKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
|
|
2695
|
+
var getIsolatedAssets = async (address) => {
|
|
2696
|
+
try {
|
|
2697
|
+
const marketObject = address.get("core.market");
|
|
2698
|
+
const isolatedAssets = [];
|
|
2699
|
+
if (!marketObject)
|
|
2700
|
+
return isolatedAssets;
|
|
2701
|
+
let hasNextPage = false;
|
|
2702
|
+
let nextCursor = null;
|
|
2703
|
+
const isIsolatedDynamicField = (dynamicField) => {
|
|
2704
|
+
return dynamicField.name.type === isolatedAssetKeyType;
|
|
2705
|
+
};
|
|
2706
|
+
do {
|
|
2707
|
+
const response = await address.cache.queryGetDynamicFields({
|
|
2708
|
+
parentId: marketObject,
|
|
2709
|
+
cursor: nextCursor,
|
|
2710
|
+
limit: 10
|
|
2711
|
+
});
|
|
2712
|
+
if (!response)
|
|
2713
|
+
break;
|
|
2714
|
+
const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
|
|
2715
|
+
isolatedAssets.push(...isolatedAssetCoinTypes);
|
|
2716
|
+
if (response && response.hasNextPage && response.nextCursor) {
|
|
2717
|
+
hasNextPage = true;
|
|
2718
|
+
nextCursor = response.nextCursor;
|
|
2719
|
+
} else {
|
|
2720
|
+
hasNextPage = false;
|
|
2721
|
+
}
|
|
2722
|
+
} while (hasNextPage);
|
|
2723
|
+
return isolatedAssets;
|
|
2724
|
+
} catch (e) {
|
|
2725
|
+
console.error(e);
|
|
2726
|
+
return [];
|
|
2727
|
+
}
|
|
2728
|
+
};
|
|
2729
|
+
var isIsolatedAsset = async (utils, coinName) => {
|
|
2730
|
+
try {
|
|
2731
|
+
const marketObject = utils.address.get("core.market");
|
|
2732
|
+
const cachedData = utils.address.cache.queryClient.getQueryData([
|
|
2733
|
+
"getDynamicFields",
|
|
2734
|
+
marketObject
|
|
2735
|
+
]);
|
|
2736
|
+
if (cachedData) {
|
|
2737
|
+
const coinType2 = utils.parseCoinType(coinName);
|
|
2738
|
+
return cachedData.includes(coinType2);
|
|
2602
2739
|
}
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2740
|
+
const coinType = utils.parseCoinType(coinName).slice(2);
|
|
2741
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2742
|
+
parentId: marketObject,
|
|
2743
|
+
name: {
|
|
2744
|
+
type: isolatedAssetKeyType,
|
|
2745
|
+
value: coinType
|
|
2746
|
+
}
|
|
2747
|
+
});
|
|
2748
|
+
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
2749
|
+
if (!parsedData.success)
|
|
2750
|
+
return false;
|
|
2751
|
+
return parsedData.data.fields.value;
|
|
2752
|
+
} catch (e) {
|
|
2753
|
+
console.error(e);
|
|
2754
|
+
return false;
|
|
2755
|
+
}
|
|
2756
|
+
};
|
|
2757
|
+
|
|
2758
|
+
// src/queries/borrowLimitQuery.ts
|
|
2759
|
+
import { z as zod3 } from "zod";
|
|
2760
|
+
var borrowLimitZod = zod3.object({
|
|
2761
|
+
dataType: zod3.string(),
|
|
2762
|
+
type: zod3.string(),
|
|
2763
|
+
hasPublicTransfer: zod3.boolean(),
|
|
2764
|
+
fields: zod3.object({
|
|
2765
|
+
id: zod3.object({
|
|
2766
|
+
id: zod3.string()
|
|
2767
|
+
}),
|
|
2768
|
+
name: zod3.object({
|
|
2769
|
+
type: zod3.string()
|
|
2770
|
+
}),
|
|
2771
|
+
value: zod3.string()
|
|
2772
|
+
})
|
|
2773
|
+
});
|
|
2774
|
+
var borrowLimitKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
|
|
2775
|
+
var getBorrowLimit = async (utils, poolName) => {
|
|
2776
|
+
try {
|
|
2777
|
+
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
2778
|
+
const marketObject = utils.address.get("core.market");
|
|
2779
|
+
if (!marketObject)
|
|
2780
|
+
return null;
|
|
2781
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2782
|
+
parentId: marketObject,
|
|
2783
|
+
name: {
|
|
2784
|
+
type: borrowLimitKeyType,
|
|
2785
|
+
value: poolCoinType
|
|
2786
|
+
}
|
|
2787
|
+
});
|
|
2788
|
+
const parsedData = borrowLimitZod.safeParse(object?.data?.content);
|
|
2789
|
+
if (!parsedData.success)
|
|
2790
|
+
return null;
|
|
2791
|
+
return parsedData.data.fields.value;
|
|
2792
|
+
} catch (e) {
|
|
2793
|
+
console.error(`Error in getBorrowLimit for ${poolName}: ${e.message}`);
|
|
2794
|
+
return "0";
|
|
2795
|
+
}
|
|
2608
2796
|
};
|
|
2609
2797
|
|
|
2610
2798
|
// src/queries/coreQuery.ts
|
|
@@ -2673,6 +2861,9 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2673
2861
|
const maxSupplyCoin = BigNumber3(
|
|
2674
2862
|
await getSupplyLimit(query.utils, poolCoinName) ?? "0"
|
|
2675
2863
|
).shiftedBy(-coinDecimal).toNumber();
|
|
2864
|
+
const maxBorrowCoin = BigNumber3(
|
|
2865
|
+
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
2866
|
+
).shiftedBy(-coinDecimal).toNumber();
|
|
2676
2867
|
pools[poolCoinName] = {
|
|
2677
2868
|
coinName: poolCoinName,
|
|
2678
2869
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
@@ -2691,9 +2882,10 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2691
2882
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
2692
2883
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2693
2884
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2694
|
-
|
|
2695
|
-
isIsolated: false,
|
|
2885
|
+
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2886
|
+
// isIsolated: false,
|
|
2696
2887
|
maxSupplyCoin,
|
|
2888
|
+
maxBorrowCoin,
|
|
2697
2889
|
...calculatedMarketPoolData
|
|
2698
2890
|
};
|
|
2699
2891
|
}
|
|
@@ -2731,6 +2923,7 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2731
2923
|
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
2732
2924
|
liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
|
|
2733
2925
|
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
2926
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
2734
2927
|
...calculatedMarketCollateralData
|
|
2735
2928
|
};
|
|
2736
2929
|
}
|
|
@@ -2778,85 +2971,76 @@ var getMarketPools = async (query, poolCoinNames = [...SUPPORT_POOLS], indexer =
|
|
|
2778
2971
|
return marketPools;
|
|
2779
2972
|
};
|
|
2780
2973
|
var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
|
|
2799
|
-
|
|
2800
|
-
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
name: coinType.substring(2)
|
|
2810
|
-
}
|
|
2974
|
+
try {
|
|
2975
|
+
coinPrice = coinPrice || (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
|
|
2976
|
+
if (indexer) {
|
|
2977
|
+
const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
|
|
2978
|
+
if (!marketPoolIndexer) {
|
|
2979
|
+
return void 0;
|
|
2980
|
+
}
|
|
2981
|
+
marketPoolIndexer.coinPrice = coinPrice ?? marketPoolIndexer.coinPrice;
|
|
2982
|
+
marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
|
|
2983
|
+
marketPoolIndexer.coinName
|
|
2984
|
+
);
|
|
2985
|
+
return marketPoolIndexer;
|
|
2986
|
+
}
|
|
2987
|
+
const marketId = query.address.get("core.market");
|
|
2988
|
+
marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
|
|
2989
|
+
showContent: true
|
|
2990
|
+
}))?.data;
|
|
2991
|
+
if (!(marketObject && marketObject.content?.dataType === "moveObject"))
|
|
2992
|
+
throw new Error(`Failed to fetch marketObject`);
|
|
2993
|
+
const fields = marketObject.content.fields;
|
|
2994
|
+
const coinType = query.utils.parseCoinType(poolCoinName);
|
|
2995
|
+
const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
|
|
2996
|
+
const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
2997
|
+
parentId: balanceSheetParentId,
|
|
2998
|
+
name: {
|
|
2999
|
+
type: "0x1::type_name::TypeName",
|
|
3000
|
+
value: {
|
|
3001
|
+
name: coinType.substring(2)
|
|
2811
3002
|
}
|
|
2812
|
-
});
|
|
2813
|
-
if (!balanceSheetDynamicFieldObjectResponse)
|
|
2814
|
-
throw new Error(
|
|
2815
|
-
`Failed to fetch balanceSheetDynamicFieldObjectResponse for ${poolCoinName}`
|
|
2816
|
-
);
|
|
2817
|
-
const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse.data;
|
|
2818
|
-
if (balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content) {
|
|
2819
|
-
const dynamicFields = balanceSheetDynamicFieldObject.content.fields;
|
|
2820
|
-
balanceSheet = dynamicFields.value.fields;
|
|
2821
3003
|
}
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
|
|
3004
|
+
});
|
|
3005
|
+
const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
|
|
3006
|
+
if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
|
|
3007
|
+
throw new Error(
|
|
3008
|
+
`Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
|
|
3009
|
+
);
|
|
3010
|
+
const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
|
|
3011
|
+
const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
|
|
3012
|
+
const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3013
|
+
parentId: borrowIndexParentId,
|
|
3014
|
+
name: {
|
|
3015
|
+
type: "0x1::type_name::TypeName",
|
|
3016
|
+
value: {
|
|
3017
|
+
name: coinType.substring(2)
|
|
2830
3018
|
}
|
|
2831
|
-
});
|
|
2832
|
-
if (!borrowIndexDynamicFieldObjectResponse)
|
|
2833
|
-
throw new Error(
|
|
2834
|
-
`Failed to fetch borrowIndexDynamicFieldObjectResponse for ${poolCoinName}`
|
|
2835
|
-
);
|
|
2836
|
-
const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse.data;
|
|
2837
|
-
if (borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content) {
|
|
2838
|
-
const dynamicFields = borrowIndexDynamicFieldObject.content.fields;
|
|
2839
|
-
borrowIndex = dynamicFields.value.fields;
|
|
2840
3019
|
}
|
|
2841
|
-
|
|
2842
|
-
|
|
2843
|
-
|
|
2844
|
-
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
|
|
3020
|
+
});
|
|
3021
|
+
const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
|
|
3022
|
+
if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
|
|
3023
|
+
throw new Error(
|
|
3024
|
+
`Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
|
|
3025
|
+
);
|
|
3026
|
+
const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
|
|
3027
|
+
const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
|
|
3028
|
+
const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3029
|
+
parentId: interestModelParentId,
|
|
3030
|
+
name: {
|
|
3031
|
+
type: "0x1::type_name::TypeName",
|
|
3032
|
+
value: {
|
|
3033
|
+
name: coinType.substring(2)
|
|
2849
3034
|
}
|
|
2850
|
-
});
|
|
2851
|
-
if (!interestModelDynamicFieldObjectResponse)
|
|
2852
|
-
throw new Error(
|
|
2853
|
-
`Failed to fetch interestModelDynamicFieldObjectResponse for ${poolCoinName}`
|
|
2854
|
-
);
|
|
2855
|
-
const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse.data;
|
|
2856
|
-
if (interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content) {
|
|
2857
|
-
const dynamicFields = interestModelDynamicFieldObject.content.fields;
|
|
2858
|
-
interestModel = dynamicFields.value.fields;
|
|
2859
3035
|
}
|
|
3036
|
+
});
|
|
3037
|
+
const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse?.data;
|
|
3038
|
+
if (!(interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content))
|
|
3039
|
+
throw new Error(
|
|
3040
|
+
`Failed to fetch interestModelDynamicFieldObject for ${poolCoinName}: ${interestModelDynamicFieldObject}`
|
|
3041
|
+
);
|
|
3042
|
+
const interestModel = interestModelDynamicFieldObject.content.fields.value.fields;
|
|
3043
|
+
const getBorrowFee = async () => {
|
|
2860
3044
|
const borrowFeeDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
2861
3045
|
parentId: marketId,
|
|
2862
3046
|
name: {
|
|
@@ -2868,18 +3052,11 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2868
3052
|
}
|
|
2869
3053
|
}
|
|
2870
3054
|
});
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
|
|
2874
|
-
|
|
2875
|
-
|
|
2876
|
-
if (borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content) {
|
|
2877
|
-
const dynamicFields = borrowFeeDynamicFieldObject.content.fields;
|
|
2878
|
-
borrowFeeRate = dynamicFields.value.fields;
|
|
2879
|
-
}
|
|
2880
|
-
}
|
|
2881
|
-
}
|
|
2882
|
-
if (balanceSheet && borrowIndex && interestModel && (USE_TEST_ADDRESS || borrowFeeRate)) {
|
|
3055
|
+
const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
|
|
3056
|
+
if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
|
|
3057
|
+
return { value: "0" };
|
|
3058
|
+
return borrowFeeDynamicFieldObject.content.fields.value.fields;
|
|
3059
|
+
};
|
|
2883
3060
|
const parsedMarketPoolData = parseOriginMarketPoolData({
|
|
2884
3061
|
type: interestModel.type.fields,
|
|
2885
3062
|
maxBorrowRate: interestModel.max_borrow_rate.fields,
|
|
@@ -2893,7 +3070,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2893
3070
|
reserve: balanceSheet.revenue,
|
|
2894
3071
|
reserveFactor: interestModel.revenue_factor.fields,
|
|
2895
3072
|
borrowWeight: interestModel.borrow_weight.fields,
|
|
2896
|
-
borrowFeeRate:
|
|
3073
|
+
borrowFeeRate: await getBorrowFee(),
|
|
2897
3074
|
baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
|
|
2898
3075
|
borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
|
|
2899
3076
|
borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
|
|
@@ -2909,7 +3086,10 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2909
3086
|
const maxSupplyCoin = BigNumber3(
|
|
2910
3087
|
await getSupplyLimit(query.utils, poolCoinName) ?? "0"
|
|
2911
3088
|
).shiftedBy(-coinDecimal).toNumber();
|
|
2912
|
-
|
|
3089
|
+
const maxBorrowCoin = BigNumber3(
|
|
3090
|
+
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
3091
|
+
).shiftedBy(-coinDecimal).toNumber();
|
|
3092
|
+
return {
|
|
2913
3093
|
coinName: poolCoinName,
|
|
2914
3094
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
2915
3095
|
coinType: query.utils.parseCoinType(poolCoinName),
|
|
@@ -2928,12 +3108,13 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2928
3108
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2929
3109
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2930
3110
|
maxSupplyCoin,
|
|
2931
|
-
|
|
2932
|
-
isIsolated:
|
|
3111
|
+
maxBorrowCoin,
|
|
3112
|
+
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2933
3113
|
...calculatedMarketPoolData
|
|
2934
3114
|
};
|
|
3115
|
+
} catch (e) {
|
|
3116
|
+
console.error(e.message);
|
|
2935
3117
|
}
|
|
2936
|
-
return marketPool;
|
|
2937
3118
|
};
|
|
2938
3119
|
var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
|
|
2939
3120
|
const marketId = query.address.get("core.market");
|
|
@@ -2982,85 +3163,76 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
|
|
|
2982
3163
|
);
|
|
2983
3164
|
return marketCollateralIndexer;
|
|
2984
3165
|
}
|
|
2985
|
-
let marketCollateral;
|
|
2986
|
-
let riskModel;
|
|
2987
|
-
let collateralStat;
|
|
2988
3166
|
const marketId = query.address.get("core.market");
|
|
2989
3167
|
marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
|
|
2990
3168
|
showContent: true
|
|
2991
3169
|
}))?.data;
|
|
2992
|
-
if (marketObject)
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
}
|
|
3004
|
-
}
|
|
3005
|
-
});
|
|
3006
|
-
if (!riskModelDynamicFieldObjectResponse)
|
|
3007
|
-
return void 0;
|
|
3008
|
-
const riskModelDynamicFieldObject = riskModelDynamicFieldObjectResponse.data;
|
|
3009
|
-
if (riskModelDynamicFieldObject && riskModelDynamicFieldObject.content && "fields" in riskModelDynamicFieldObject.content) {
|
|
3010
|
-
const dynamicFields = riskModelDynamicFieldObject.content.fields;
|
|
3011
|
-
riskModel = dynamicFields.value.fields;
|
|
3170
|
+
if (!(marketObject && marketObject.content?.dataType === "moveObject"))
|
|
3171
|
+
throw new Error(`Failed to fetch marketObject`);
|
|
3172
|
+
const fields = marketObject.content.fields;
|
|
3173
|
+
const coinType = query.utils.parseCoinType(collateralCoinName);
|
|
3174
|
+
const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
|
|
3175
|
+
const riskModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3176
|
+
parentId: riskModelParentId,
|
|
3177
|
+
name: {
|
|
3178
|
+
type: "0x1::type_name::TypeName",
|
|
3179
|
+
value: {
|
|
3180
|
+
name: coinType.substring(2)
|
|
3012
3181
|
}
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
3023
|
-
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
|
|
3028
|
-
collateralStat = dynamicFields.value.fields;
|
|
3182
|
+
}
|
|
3183
|
+
});
|
|
3184
|
+
const riskModelDynamicFieldObject = riskModelDynamicFieldObjectResponse?.data;
|
|
3185
|
+
if (!(riskModelDynamicFieldObject && riskModelDynamicFieldObject.content && "fields" in riskModelDynamicFieldObject.content))
|
|
3186
|
+
throw new Error(
|
|
3187
|
+
`Failed to fetch riskModelDynamicFieldObject for ${riskModelDynamicFieldObjectResponse?.error?.code.toString()}: `
|
|
3188
|
+
);
|
|
3189
|
+
const riskModel = riskModelDynamicFieldObject.content.fields.value.fields;
|
|
3190
|
+
const collateralStatParentId = fields.collateral_stats.fields.table.fields.id.id;
|
|
3191
|
+
const collateralStatDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3192
|
+
parentId: collateralStatParentId,
|
|
3193
|
+
name: {
|
|
3194
|
+
type: "0x1::type_name::TypeName",
|
|
3195
|
+
value: {
|
|
3196
|
+
name: coinType.substring(2)
|
|
3029
3197
|
}
|
|
3030
3198
|
}
|
|
3031
|
-
}
|
|
3032
|
-
|
|
3033
|
-
|
|
3034
|
-
|
|
3035
|
-
|
|
3036
|
-
liquidationFactor: riskModel.liquidation_factor.fields,
|
|
3037
|
-
liquidationDiscount: riskModel.liquidation_discount.fields,
|
|
3038
|
-
liquidationPanelty: riskModel.liquidation_penalty.fields,
|
|
3039
|
-
liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
|
|
3040
|
-
maxCollateralAmount: riskModel.max_collateral_amount,
|
|
3041
|
-
totalCollateralAmount: collateralStat.amount
|
|
3042
|
-
});
|
|
3043
|
-
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
3044
|
-
query.utils,
|
|
3045
|
-
parsedMarketCollateralData
|
|
3199
|
+
});
|
|
3200
|
+
const collateralStatDynamicFieldObject = collateralStatDynamicFieldObjectResponse?.data;
|
|
3201
|
+
if (!(collateralStatDynamicFieldObject && collateralStatDynamicFieldObject.content && "fields" in collateralStatDynamicFieldObject.content))
|
|
3202
|
+
throw new Error(
|
|
3203
|
+
`Failed to fetch collateralStatDynamicFieldObject for ${collateralCoinName}: ${collateralStatDynamicFieldObjectResponse?.error?.code.toString()}`
|
|
3046
3204
|
);
|
|
3047
|
-
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3205
|
+
const collateralStat = collateralStatDynamicFieldObject.content.fields.value.fields;
|
|
3206
|
+
const parsedMarketCollateralData = parseOriginMarketCollateralData({
|
|
3207
|
+
type: riskModel.type.fields,
|
|
3208
|
+
collateralFactor: riskModel.collateral_factor.fields,
|
|
3209
|
+
liquidationFactor: riskModel.liquidation_factor.fields,
|
|
3210
|
+
liquidationDiscount: riskModel.liquidation_discount.fields,
|
|
3211
|
+
liquidationPanelty: riskModel.liquidation_penalty.fields,
|
|
3212
|
+
liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
|
|
3213
|
+
maxCollateralAmount: riskModel.max_collateral_amount,
|
|
3214
|
+
totalCollateralAmount: collateralStat.amount
|
|
3215
|
+
});
|
|
3216
|
+
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
3217
|
+
query.utils,
|
|
3218
|
+
parsedMarketCollateralData
|
|
3219
|
+
);
|
|
3220
|
+
return {
|
|
3221
|
+
coinName: collateralCoinName,
|
|
3222
|
+
symbol: query.utils.parseSymbol(collateralCoinName),
|
|
3223
|
+
coinType: query.utils.parseCoinType(collateralCoinName),
|
|
3224
|
+
marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
|
|
3225
|
+
coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
|
|
3226
|
+
coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
|
|
3227
|
+
coinPrice: coinPrice ?? 0,
|
|
3228
|
+
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
3229
|
+
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
3230
|
+
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
3231
|
+
liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
|
|
3232
|
+
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3233
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
3234
|
+
...calculatedMarketCollateralData
|
|
3235
|
+
};
|
|
3064
3236
|
};
|
|
3065
3237
|
var getObligations = async ({
|
|
3066
3238
|
address
|
|
@@ -3238,98 +3410,18 @@ var getFlashLoanFees = async (query, assetNames) => {
|
|
|
3238
3410
|
);
|
|
3239
3411
|
};
|
|
3240
3412
|
|
|
3241
|
-
// src/queries/isolatedAssetQuery.ts
|
|
3242
|
-
import { z as zod2 } from "zod";
|
|
3243
|
-
var isolatedAssetZod = zod2.object({
|
|
3244
|
-
dataType: zod2.string(),
|
|
3245
|
-
type: zod2.string(),
|
|
3246
|
-
hasPublicTransfer: zod2.boolean(),
|
|
3247
|
-
fields: zod2.object({
|
|
3248
|
-
id: zod2.object({
|
|
3249
|
-
id: zod2.string()
|
|
3250
|
-
}),
|
|
3251
|
-
name: zod2.object({
|
|
3252
|
-
type: zod2.string()
|
|
3253
|
-
}),
|
|
3254
|
-
value: zod2.boolean()
|
|
3255
|
-
})
|
|
3256
|
-
});
|
|
3257
|
-
var ISOLATED_ASSET_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::IsolatedAssetKey";
|
|
3258
|
-
var getIsolatedAssets = async (address) => {
|
|
3259
|
-
try {
|
|
3260
|
-
const marketObject = address.get("core.market");
|
|
3261
|
-
const isolatedAssets = [];
|
|
3262
|
-
if (!marketObject)
|
|
3263
|
-
return isolatedAssets;
|
|
3264
|
-
let hasNextPage = false;
|
|
3265
|
-
let nextCursor = null;
|
|
3266
|
-
const isIsolatedDynamicField = (dynamicField) => {
|
|
3267
|
-
return dynamicField.name.type === ISOLATED_ASSET_KEY;
|
|
3268
|
-
};
|
|
3269
|
-
do {
|
|
3270
|
-
const response = await address.cache.queryGetDynamicFields({
|
|
3271
|
-
parentId: marketObject,
|
|
3272
|
-
cursor: nextCursor,
|
|
3273
|
-
limit: 10
|
|
3274
|
-
});
|
|
3275
|
-
if (!response)
|
|
3276
|
-
break;
|
|
3277
|
-
const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
|
|
3278
|
-
isolatedAssets.push(...isolatedAssetCoinTypes);
|
|
3279
|
-
if (response && response.hasNextPage && response.nextCursor) {
|
|
3280
|
-
hasNextPage = true;
|
|
3281
|
-
nextCursor = response.nextCursor;
|
|
3282
|
-
} else {
|
|
3283
|
-
hasNextPage = false;
|
|
3284
|
-
}
|
|
3285
|
-
} while (hasNextPage);
|
|
3286
|
-
return isolatedAssets;
|
|
3287
|
-
} catch (e) {
|
|
3288
|
-
console.error(e);
|
|
3289
|
-
return [];
|
|
3290
|
-
}
|
|
3291
|
-
};
|
|
3292
|
-
var isIsolatedAsset = async (utils, coinName) => {
|
|
3293
|
-
try {
|
|
3294
|
-
const marketObject = utils.address.get("core.market");
|
|
3295
|
-
const cachedData = utils.address.cache.queryClient.getQueryData([
|
|
3296
|
-
"getDynamicFields",
|
|
3297
|
-
marketObject
|
|
3298
|
-
]);
|
|
3299
|
-
if (cachedData) {
|
|
3300
|
-
const coinType2 = utils.parseCoinType(coinName);
|
|
3301
|
-
return cachedData.includes(coinType2);
|
|
3302
|
-
}
|
|
3303
|
-
const coinType = utils.parseCoinType(coinName).slice(2);
|
|
3304
|
-
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
3305
|
-
parentId: marketObject,
|
|
3306
|
-
name: {
|
|
3307
|
-
type: ISOLATED_ASSET_KEY,
|
|
3308
|
-
value: coinType
|
|
3309
|
-
}
|
|
3310
|
-
});
|
|
3311
|
-
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
3312
|
-
if (!parsedData.success)
|
|
3313
|
-
return false;
|
|
3314
|
-
return parsedData.data.fields.value;
|
|
3315
|
-
} catch (e) {
|
|
3316
|
-
console.error(e);
|
|
3317
|
-
return false;
|
|
3318
|
-
}
|
|
3319
|
-
};
|
|
3320
|
-
|
|
3321
3413
|
// src/queries/loyaltyProgramQuery.ts
|
|
3322
3414
|
import BigNumber4 from "bignumber.js";
|
|
3323
|
-
import { z as
|
|
3324
|
-
var rewardPoolFieldsZod =
|
|
3325
|
-
balance:
|
|
3326
|
-
enable_claim:
|
|
3415
|
+
import { z as zod4 } from "zod";
|
|
3416
|
+
var rewardPoolFieldsZod = zod4.object({
|
|
3417
|
+
balance: zod4.string(),
|
|
3418
|
+
enable_claim: zod4.boolean()
|
|
3327
3419
|
}).transform((value) => ({
|
|
3328
3420
|
totalPoolReward: BigNumber4(value.balance).shiftedBy(-9).toNumber(),
|
|
3329
3421
|
isClaimEnabled: value.enable_claim
|
|
3330
3422
|
}));
|
|
3331
|
-
var userRewardFieldsZod =
|
|
3332
|
-
value:
|
|
3423
|
+
var userRewardFieldsZod = zod4.object({
|
|
3424
|
+
value: zod4.string()
|
|
3333
3425
|
}).transform((value) => BigNumber4(value.value).shiftedBy(-9).toNumber());
|
|
3334
3426
|
var getLoyaltyProgramInformations = async (query, veScaKey) => {
|
|
3335
3427
|
const rewardPool = query.address.get("loyaltyProgram.rewardPool");
|
|
@@ -3937,10 +4029,12 @@ var getPythPrices = async ({
|
|
|
3937
4029
|
const pythPriceFeed = address.get(
|
|
3938
4030
|
`core.coins.${assetCoinName}.oracle.pyth.feedObject`
|
|
3939
4031
|
);
|
|
3940
|
-
if (
|
|
3941
|
-
prev[pythPriceFeed]
|
|
3942
|
-
|
|
3943
|
-
|
|
4032
|
+
if (pythPriceFeed) {
|
|
4033
|
+
if (!prev[pythPriceFeed]) {
|
|
4034
|
+
prev[pythPriceFeed] = [assetCoinName];
|
|
4035
|
+
} else {
|
|
4036
|
+
prev[pythPriceFeed].push(assetCoinName);
|
|
4037
|
+
}
|
|
3944
4038
|
}
|
|
3945
4039
|
return prev;
|
|
3946
4040
|
},
|
|
@@ -4138,7 +4232,7 @@ var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPr
|
|
|
4138
4232
|
const coinName = query.utils.parseCoinName(marketCoinName);
|
|
4139
4233
|
marketPool = marketPool || await query.getMarketPool(coinName, indexer);
|
|
4140
4234
|
if (!marketPool) {
|
|
4141
|
-
throw new Error(`
|
|
4235
|
+
throw new Error(`Failed to fetch marketPool for ${marketCoinName}`);
|
|
4142
4236
|
}
|
|
4143
4237
|
const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
|
|
4144
4238
|
const rewardPoolId = query.address.get(
|
|
@@ -4412,7 +4506,7 @@ var getStakeRewardPool = async ({
|
|
|
4412
4506
|
import BigNumber7 from "bignumber.js";
|
|
4413
4507
|
import { SUI_CLOCK_OBJECT_ID, SuiTxBlock as SuiTxBlock2 } from "@scallop-io/sui-kit";
|
|
4414
4508
|
import { bcs as bcs2 } from "@mysten/sui/bcs";
|
|
4415
|
-
import { z as
|
|
4509
|
+
import { z as zod5 } from "zod";
|
|
4416
4510
|
import assert2 from "assert";
|
|
4417
4511
|
var getVescaKeys = async (utils, ownerAddress) => {
|
|
4418
4512
|
const owner = ownerAddress || utils.suiKit.currentAddress();
|
|
@@ -4461,10 +4555,10 @@ var getVeScas = async ({
|
|
|
4461
4555
|
}
|
|
4462
4556
|
return result;
|
|
4463
4557
|
};
|
|
4464
|
-
var SuiObjectRefZod =
|
|
4465
|
-
objectId:
|
|
4466
|
-
digest:
|
|
4467
|
-
version:
|
|
4558
|
+
var SuiObjectRefZod = zod5.object({
|
|
4559
|
+
objectId: zod5.string(),
|
|
4560
|
+
digest: zod5.string(),
|
|
4561
|
+
version: zod5.string()
|
|
4468
4562
|
});
|
|
4469
4563
|
var getVeSca = async (utils, veScaKey) => {
|
|
4470
4564
|
const tableId = utils.address.get(`vesca.tableId`);
|
|
@@ -4654,10 +4748,10 @@ var ScallopUtils = class {
|
|
|
4654
4748
|
* @param address - ScallopAddress instance.
|
|
4655
4749
|
*/
|
|
4656
4750
|
async init(force = false, address) {
|
|
4657
|
-
if (
|
|
4658
|
-
await this.address.read();
|
|
4659
|
-
} else {
|
|
4751
|
+
if (address && !this.address)
|
|
4660
4752
|
this.address = address;
|
|
4753
|
+
if (force || !this.address.getAddresses()) {
|
|
4754
|
+
await this.address.read();
|
|
4661
4755
|
}
|
|
4662
4756
|
}
|
|
4663
4757
|
/**
|
|
@@ -4943,9 +5037,7 @@ var ScallopUtils = class {
|
|
|
4943
5037
|
for (const endpoint of endpoints) {
|
|
4944
5038
|
const priceIdPairs = Array.from(failedRequests.values()).reduce(
|
|
4945
5039
|
(acc, coinName) => {
|
|
4946
|
-
const priceId = this.address.get(
|
|
4947
|
-
`core.coins.${coinName}.oracle.pyth.feed`
|
|
4948
|
-
);
|
|
5040
|
+
const priceId = this.address.get(`core.coins.${coinName}.oracle.pyth.feed`) ?? PYTH_FEED_IDS[coinName];
|
|
4949
5041
|
acc.push([coinName, priceId]);
|
|
4950
5042
|
return acc;
|
|
4951
5043
|
},
|
|
@@ -6919,11 +7011,12 @@ var ScallopQuery = class {
|
|
|
6919
7011
|
* @param address - ScallopAddress instance.
|
|
6920
7012
|
*/
|
|
6921
7013
|
async init(force = false, address) {
|
|
6922
|
-
if (
|
|
6923
|
-
await this.address.read();
|
|
6924
|
-
} else {
|
|
7014
|
+
if (address && !this.address) {
|
|
6925
7015
|
this.address = address;
|
|
6926
7016
|
}
|
|
7017
|
+
if (force || !this.address.getAddresses()) {
|
|
7018
|
+
await this.address.read();
|
|
7019
|
+
}
|
|
6927
7020
|
await this.utils.init(force, this.address);
|
|
6928
7021
|
}
|
|
6929
7022
|
/* ==================== Core Query Methods ==================== */
|
|
@@ -7385,11 +7478,17 @@ var ScallopQuery = class {
|
|
|
7385
7478
|
return await getFlashLoanFees(this, assetCoinNames);
|
|
7386
7479
|
}
|
|
7387
7480
|
/**
|
|
7388
|
-
* Get supply limit of
|
|
7481
|
+
* Get supply limit of lending pool
|
|
7389
7482
|
*/
|
|
7390
7483
|
async getPoolSupplyLimit(poolName) {
|
|
7391
7484
|
return await getSupplyLimit(this.utils, poolName);
|
|
7392
7485
|
}
|
|
7486
|
+
/**
|
|
7487
|
+
* Get borrow limit of borrow pool
|
|
7488
|
+
*/
|
|
7489
|
+
async getPoolBorrowLimit(poolName) {
|
|
7490
|
+
return await getBorrowLimit(this.utils, poolName);
|
|
7491
|
+
}
|
|
7393
7492
|
/**
|
|
7394
7493
|
* Get list of isolated assets
|
|
7395
7494
|
*/
|
|
@@ -7462,10 +7561,10 @@ var ScallopBuilder = class {
|
|
|
7462
7561
|
* @param address - ScallopAddress instance.
|
|
7463
7562
|
*/
|
|
7464
7563
|
async init(force = false, address) {
|
|
7465
|
-
if (
|
|
7466
|
-
await this.address.read();
|
|
7467
|
-
} else {
|
|
7564
|
+
if (address && !this.address)
|
|
7468
7565
|
this.address = address;
|
|
7566
|
+
if (force || !this.address.getAddresses()) {
|
|
7567
|
+
await this.address.read();
|
|
7469
7568
|
}
|
|
7470
7569
|
await this.query.init(force, this.address);
|
|
7471
7570
|
await this.utils.init(force, this.address);
|