@scallop-io/sui-scallop-sdk 1.3.4-alpha.7 → 1.3.4-isolated-asset.2
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 +1 -1
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/poolAddress.d.ts +1 -1
- package/dist/index.js +438 -331
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +438 -331
- package/dist/index.mjs.map +1 -1
- package/dist/models/scallopQuery.d.ts +10 -2
- 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/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 +2 -0
- package/src/constants/enum.ts +25 -4
- 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 +53 -0
- package/src/queries/coreQuery.ts +238 -229
- package/src/queries/index.ts +1 -0
- package/src/queries/isolatedAssetQuery.ts +5 -5
- package/src/queries/referralQuery.ts +0 -1
- package/src/queries/spoolQuery.ts +1 -1
- package/src/queries/supplyLimitQuery.ts +23 -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
|
|
@@ -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",
|
|
@@ -153,6 +157,8 @@ var coinDecimals = {
|
|
|
153
157
|
hasui: 9,
|
|
154
158
|
vsui: 9,
|
|
155
159
|
sca: 9,
|
|
160
|
+
deep: 6,
|
|
161
|
+
fud: 5,
|
|
156
162
|
susdc: 6,
|
|
157
163
|
sweth: 8,
|
|
158
164
|
ssbeth: 8,
|
|
@@ -166,7 +172,9 @@ var coinDecimals = {
|
|
|
166
172
|
safsui: 9,
|
|
167
173
|
shasui: 9,
|
|
168
174
|
svsui: 9,
|
|
169
|
-
ssca: 9
|
|
175
|
+
ssca: 9,
|
|
176
|
+
sdeep: 6,
|
|
177
|
+
sfud: 5
|
|
170
178
|
};
|
|
171
179
|
var assetCoins = {
|
|
172
180
|
usdc: "usdc",
|
|
@@ -182,7 +190,9 @@ var assetCoins = {
|
|
|
182
190
|
afsui: "afsui",
|
|
183
191
|
hasui: "hasui",
|
|
184
192
|
vsui: "vsui",
|
|
185
|
-
sca: "sca"
|
|
193
|
+
sca: "sca",
|
|
194
|
+
deep: "deep",
|
|
195
|
+
fud: "fud"
|
|
186
196
|
};
|
|
187
197
|
var marketCoins = {
|
|
188
198
|
susdc: "susdc",
|
|
@@ -198,7 +208,9 @@ var marketCoins = {
|
|
|
198
208
|
safsui: "safsui",
|
|
199
209
|
shasui: "shasui",
|
|
200
210
|
svsui: "svsui",
|
|
201
|
-
ssca: "ssca"
|
|
211
|
+
ssca: "ssca",
|
|
212
|
+
sdeep: "sdeep",
|
|
213
|
+
sfud: "sfud"
|
|
202
214
|
};
|
|
203
215
|
var sCoins = {
|
|
204
216
|
susdc: "susdc",
|
|
@@ -266,7 +278,10 @@ var coinIds = {
|
|
|
266
278
|
afsui: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
|
|
267
279
|
hasui: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
|
|
268
280
|
vsui: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
|
|
269
|
-
sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6"
|
|
281
|
+
sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
|
|
282
|
+
// isolated assets
|
|
283
|
+
deep: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",
|
|
284
|
+
fud: "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1::fud::FUD"
|
|
270
285
|
};
|
|
271
286
|
var wormholeCoinIds = {
|
|
272
287
|
weth: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
|
|
@@ -282,11 +297,27 @@ var voloCoinIds = {
|
|
|
282
297
|
var sCoinIds = {
|
|
283
298
|
susdc: "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",
|
|
284
299
|
ssbeth: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
|
|
285
|
-
ssui:
|
|
300
|
+
ssui: (
|
|
301
|
+
// TODO: use prod value
|
|
302
|
+
// '0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI',
|
|
303
|
+
"0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI"
|
|
304
|
+
),
|
|
286
305
|
scetus: "0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",
|
|
287
|
-
ssca:
|
|
288
|
-
|
|
289
|
-
|
|
306
|
+
ssca: (
|
|
307
|
+
// TODO: use prod value
|
|
308
|
+
// '0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA',
|
|
309
|
+
"0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA"
|
|
310
|
+
),
|
|
311
|
+
swusdc: (
|
|
312
|
+
// TODO: use prod value
|
|
313
|
+
// '0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC',
|
|
314
|
+
"0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC"
|
|
315
|
+
),
|
|
316
|
+
swusdt: (
|
|
317
|
+
// TODO: use prod value
|
|
318
|
+
// '0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT',
|
|
319
|
+
"0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT"
|
|
320
|
+
),
|
|
290
321
|
sweth: "0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
|
|
291
322
|
safsui: "0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",
|
|
292
323
|
shasui: "0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",
|
|
@@ -375,6 +406,12 @@ var POOL_ADDRESSES = {
|
|
|
375
406
|
sca: {
|
|
376
407
|
lendingPoolAddress: "0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",
|
|
377
408
|
collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31"
|
|
409
|
+
},
|
|
410
|
+
fud: {
|
|
411
|
+
lendingPoolAddress: ""
|
|
412
|
+
},
|
|
413
|
+
deep: {
|
|
414
|
+
lendingPoolAddress: ""
|
|
378
415
|
}
|
|
379
416
|
};
|
|
380
417
|
|
|
@@ -397,7 +434,9 @@ var PYTH_FEED_IDS = {
|
|
|
397
434
|
afsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
398
435
|
hasui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
399
436
|
vsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
400
|
-
sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc"
|
|
437
|
+
sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
|
|
438
|
+
deep: "29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",
|
|
439
|
+
fud: "6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75"
|
|
401
440
|
};
|
|
402
441
|
|
|
403
442
|
// src/constants/queryKeys.ts
|
|
@@ -502,20 +541,33 @@ var TEST_ADDRESSES = {
|
|
|
502
541
|
core: {
|
|
503
542
|
// version:
|
|
504
543
|
// '0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7',
|
|
505
|
-
version: "
|
|
544
|
+
version: "0xd318de9b0f6873879a82cbfcc2daa1d1591a8b54e7cea9f4b567da63c692a52b",
|
|
506
545
|
versionCap: "0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",
|
|
507
546
|
// object:
|
|
508
547
|
// '0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf',
|
|
509
|
-
object: "
|
|
548
|
+
object: "0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d",
|
|
510
549
|
// market:
|
|
511
550
|
// '0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9',
|
|
512
|
-
market: "
|
|
551
|
+
market: "0x9d6434e97f3f98fd9b0c0e1dca22632073985abcd22541feae7ee1e34cbe3af2",
|
|
513
552
|
adminCap: "0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",
|
|
514
553
|
coinDecimalsRegistry: "0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",
|
|
515
554
|
// obligationAccessStore:
|
|
516
555
|
// '0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9',
|
|
517
|
-
obligationAccessStore: "
|
|
556
|
+
obligationAccessStore: "0x46e9b44a77ee9c9d33cc2689ecdfbb8f681935cbc6bdf6ac3df048e396c36c82",
|
|
518
557
|
coins: {
|
|
558
|
+
usdc: {
|
|
559
|
+
id: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7",
|
|
560
|
+
metaData: "0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6",
|
|
561
|
+
treasury: "",
|
|
562
|
+
oracle: {
|
|
563
|
+
supra: "",
|
|
564
|
+
switchboard: "",
|
|
565
|
+
pyth: {
|
|
566
|
+
feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
|
|
567
|
+
feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
},
|
|
519
571
|
cetus: {
|
|
520
572
|
id: "0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",
|
|
521
573
|
metaData: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",
|
|
@@ -671,6 +723,19 @@ var TEST_ADDRESSES = {
|
|
|
671
723
|
feedObject: "0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"
|
|
672
724
|
}
|
|
673
725
|
}
|
|
726
|
+
},
|
|
727
|
+
sbeth: {
|
|
728
|
+
id: "0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29",
|
|
729
|
+
metaData: "0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0",
|
|
730
|
+
treasury: "",
|
|
731
|
+
oracle: {
|
|
732
|
+
supra: "",
|
|
733
|
+
switchboard: "",
|
|
734
|
+
pyth: {
|
|
735
|
+
feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
|
|
736
|
+
feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
|
|
737
|
+
}
|
|
738
|
+
}
|
|
674
739
|
}
|
|
675
740
|
},
|
|
676
741
|
oracles: {
|
|
@@ -704,7 +769,7 @@ var TEST_ADDRESSES = {
|
|
|
704
769
|
upgradeCap: "0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"
|
|
705
770
|
},
|
|
706
771
|
protocol: {
|
|
707
|
-
id: "
|
|
772
|
+
id: "0xb784ea287d944e478a3ceaa071f8885072cce6b7224cf245914dc2f9963f460e",
|
|
708
773
|
upgradeCap: "0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"
|
|
709
774
|
},
|
|
710
775
|
// protocol: {
|
|
@@ -722,7 +787,7 @@ var TEST_ADDRESSES = {
|
|
|
722
787
|
// '0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f',
|
|
723
788
|
// },
|
|
724
789
|
query: {
|
|
725
|
-
id: "
|
|
790
|
+
id: "0x89706958f43fb170de134579e3fbc53972b946ee78bd2442d8e1adc36074fbdc",
|
|
726
791
|
upgradeCap: "0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"
|
|
727
792
|
},
|
|
728
793
|
supra: { id: "", upgradeCap: "" },
|
|
@@ -758,6 +823,10 @@ var TEST_ADDRESSES = {
|
|
|
758
823
|
"0xc3206071a8d43212efb6e3b5504f2321f8df97ab122b466c0bc7cfdf398dc13a"
|
|
759
824
|
)
|
|
760
825
|
},
|
|
826
|
+
susdc: {
|
|
827
|
+
id: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
|
|
828
|
+
rewardPoolId: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166"
|
|
829
|
+
},
|
|
761
830
|
swusdc: {
|
|
762
831
|
// id: '0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0',
|
|
763
832
|
id: "0xf1b383b9cf2e9f515fc69567df1053098f273849d09cd84b0278a773429bd2b2",
|
|
@@ -806,37 +875,37 @@ var TEST_ADDRESSES = {
|
|
|
806
875
|
config: ""
|
|
807
876
|
},
|
|
808
877
|
borrowIncentive: {
|
|
809
|
-
id: "
|
|
810
|
-
adminCap: "
|
|
811
|
-
object: "
|
|
812
|
-
query: "
|
|
813
|
-
incentivePools: "
|
|
814
|
-
incentiveAccounts: "
|
|
815
|
-
config: "
|
|
878
|
+
id: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
|
|
879
|
+
adminCap: "0x56ac8e6f2b360b2b35c0168d72cc6cd17d9592afb83709865cb87af24bb2025b",
|
|
880
|
+
object: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
|
|
881
|
+
query: "0x8e0d00f8ff1199d7c5fe56cea0e901a525daeefff0445a1635ace8282ae3302c",
|
|
882
|
+
incentivePools: "0x9d564c93128c6ab0c0d3e050a47f11df0b91494f3bb779bdc1301c1c637f15eb",
|
|
883
|
+
incentiveAccounts: "0x09e6040e798246de04941bc79a3ba62d3eca6d7a218cc30f21fb07f478fa2926",
|
|
884
|
+
config: "0x43d4ca1dfc90b161c4240facd119e74e4b850cca2957f88c2ec289c9380da064"
|
|
816
885
|
},
|
|
817
886
|
referral: {
|
|
818
|
-
id: "
|
|
887
|
+
id: "0x1bf5a8ce77050d8052549d743e16b469f15aa6b81b752b78b6ebb65179665f5a",
|
|
819
888
|
object: "0x5658d4bf5ddcba27e4337b4262108b3ad1716643cac8c2054ac341538adc72ec",
|
|
820
889
|
adminCap: "0xc5dc06b9074291259f2cac460c940012c781c4430e42125c541cc43101c3bcbd",
|
|
821
|
-
referralBindings: "
|
|
822
|
-
bindingTableId: "
|
|
823
|
-
referralRevenuePool: "
|
|
890
|
+
referralBindings: "0xcf184487782bed962bf678001efe775d31fb94b9992333a57594cf15d79d5ced",
|
|
891
|
+
bindingTableId: "0x41a50e258c0a266ce84e0e1a618dbf70b878cc943909e613089a50afcceb2bc0",
|
|
892
|
+
referralRevenuePool: "0xc24e3e5e37032f29a3dd91a9a1f057af8821b7e6c148e9683900ac8b6d30f0c6",
|
|
824
893
|
revenueTableId: "0x595baa3654c297bff84ab7786a2d250f019cefc66e8df8e89fd9d41e02bd30dd",
|
|
825
|
-
referralTiers: "
|
|
894
|
+
referralTiers: "0x144350f3db9b46d11b140084cd54e6de0b9c3b8d265ce8059b51d0ef58ea464b",
|
|
826
895
|
tiersTableId: "0xeac755a7a8b7798530905ac79e8c114f19d0f130f6eab012954f08faac29c75d",
|
|
827
896
|
// authorizedWitnessList:
|
|
828
897
|
// '0xf21b0ed043c9bb70842c0129159f4943dbcc3c9ef2f2f808af65f8be25cfd20e',
|
|
829
898
|
authorizedWitnessList: "0x9d6223dc52015b8a3986a573590ef2af8f1b8f3e4685513888c052f001b87e7f",
|
|
830
|
-
version: "
|
|
899
|
+
version: "0x3545849eb97723e676a476ec9d4fe5f2eb0eb2c6b78972851114fd4c7ed4639f"
|
|
831
900
|
},
|
|
832
901
|
vesca: {
|
|
833
|
-
id: "
|
|
834
|
-
object: "
|
|
902
|
+
id: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
|
|
903
|
+
object: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
|
|
835
904
|
adminCap: "0x8ffa76135c5b85c5fbd73a6448a4a733d826cb63a267ab817656acb77c72d4a5",
|
|
836
|
-
tableId: "
|
|
837
|
-
table: "
|
|
838
|
-
treasury: "
|
|
839
|
-
config: "
|
|
905
|
+
tableId: "0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",
|
|
906
|
+
table: "0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",
|
|
907
|
+
treasury: "0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",
|
|
908
|
+
config: "0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"
|
|
840
909
|
},
|
|
841
910
|
loyaltyProgram: {
|
|
842
911
|
id: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
|
|
@@ -845,27 +914,27 @@ var TEST_ADDRESSES = {
|
|
|
845
914
|
userRewardTableId: "0x748a80395849ed37db1b0e14f2ab5d1d96458d2359ab3a84eb079d0f4ac7cf2e"
|
|
846
915
|
},
|
|
847
916
|
scoin: {
|
|
848
|
-
id: "
|
|
917
|
+
id: "0x773dab39c90fe05439b06a2d061795e52a974ff92c2aef90b2ee467acf7f33c8",
|
|
849
918
|
coins: {
|
|
850
919
|
ssui: {
|
|
851
|
-
coinType: "
|
|
852
|
-
treasury: "
|
|
920
|
+
coinType: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
|
|
921
|
+
treasury: "0x0e499640a12c38dd9cc44532f5bc5fd1b6da86d2f9a8810357250f4b26e9e5c7"
|
|
853
922
|
},
|
|
854
923
|
scetus: {
|
|
855
924
|
coinType: "0x8b71e6d323ed78515af2bead13bf3d0da1562ba4a99234eb7c4f14fd39ef0427::scallop_cetus::SCALLOP_CETUS",
|
|
856
925
|
treasury: "0xd786f4b2d26278cc7911a3445b1b085eab60f269ef9dbb6b87e803d52f155003"
|
|
857
926
|
},
|
|
858
927
|
ssca: {
|
|
859
|
-
coinType: "
|
|
860
|
-
treasury: "
|
|
928
|
+
coinType: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
|
|
929
|
+
treasury: "0x5f1c5de1df7341075d119570269b7b452af50afe8363080638f1ae29a554c038"
|
|
861
930
|
},
|
|
862
931
|
swusdc: {
|
|
863
|
-
coinType: "
|
|
864
|
-
treasury: "
|
|
932
|
+
coinType: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
|
|
933
|
+
treasury: "0x471fbab72578bab577263006fe32543b6e76153fffa2bef69affe4bc4934258f"
|
|
865
934
|
},
|
|
866
935
|
swusdt: {
|
|
867
|
-
coinType: "
|
|
868
|
-
treasury: "
|
|
936
|
+
coinType: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
|
|
937
|
+
treasury: "0x921a4ed4bb4b4f11f51a462c83f4c0f6b60a90e441d1bc0d26d6fd893146bf4d"
|
|
869
938
|
},
|
|
870
939
|
sweth: {
|
|
871
940
|
coinType: "0x27d54f43e3eda701be56b82e5756e41c84467cd202f5cf713d5f9e45a9f1b6bc::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
|
|
@@ -881,7 +950,11 @@ var TEST_ADDRESSES = {
|
|
|
881
950
|
},
|
|
882
951
|
svsui: {
|
|
883
952
|
coinType: "0x97023a317320c4498cc4cd239dd02fd30c28246e5e8f81325d63f2bd8d70f6b3::scallop_v_sui::SCALLOP_V_SUI",
|
|
884
|
-
treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6
|
|
953
|
+
treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6"
|
|
954
|
+
},
|
|
955
|
+
ssbeth: {
|
|
956
|
+
coinType: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
|
|
957
|
+
treasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed"
|
|
885
958
|
}
|
|
886
959
|
}
|
|
887
960
|
}
|
|
@@ -2588,23 +2661,148 @@ var supplyLimitZod = zod.object({
|
|
|
2588
2661
|
value: zod.string()
|
|
2589
2662
|
})
|
|
2590
2663
|
});
|
|
2591
|
-
var
|
|
2664
|
+
var supplyLimitKeyType = `0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d::market_dynamic_keys::SupplyLimitKey`;
|
|
2592
2665
|
var getSupplyLimit = async (utils, poolName) => {
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2666
|
+
try {
|
|
2667
|
+
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
2668
|
+
const marketObject = utils.address.get("core.market");
|
|
2669
|
+
if (!marketObject)
|
|
2670
|
+
return null;
|
|
2671
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2672
|
+
parentId: marketObject,
|
|
2673
|
+
name: {
|
|
2674
|
+
type: supplyLimitKeyType,
|
|
2675
|
+
value: poolCoinType
|
|
2676
|
+
}
|
|
2677
|
+
});
|
|
2678
|
+
const parsedData = supplyLimitZod.safeParse(object?.data?.content);
|
|
2679
|
+
if (!parsedData.success)
|
|
2680
|
+
return null;
|
|
2681
|
+
return parsedData.data.fields.value;
|
|
2682
|
+
} catch (e) {
|
|
2683
|
+
console.error(`Error in getSupplyLimit for ${poolName}: ${e.message}`);
|
|
2684
|
+
return "0";
|
|
2685
|
+
}
|
|
2686
|
+
};
|
|
2687
|
+
|
|
2688
|
+
// src/queries/isolatedAssetQuery.ts
|
|
2689
|
+
import { z as zod2 } from "zod";
|
|
2690
|
+
var isolatedAssetZod = zod2.object({
|
|
2691
|
+
dataType: zod2.string(),
|
|
2692
|
+
type: zod2.string(),
|
|
2693
|
+
hasPublicTransfer: zod2.boolean(),
|
|
2694
|
+
fields: zod2.object({
|
|
2695
|
+
id: zod2.object({
|
|
2696
|
+
id: zod2.string()
|
|
2697
|
+
}),
|
|
2698
|
+
name: zod2.object({
|
|
2699
|
+
type: zod2.string()
|
|
2700
|
+
}),
|
|
2701
|
+
value: zod2.boolean()
|
|
2702
|
+
})
|
|
2703
|
+
});
|
|
2704
|
+
var isolatedAssetKeyType = `0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d::market_dynamic_keys::IsolatedAssetKey`;
|
|
2705
|
+
var getIsolatedAssets = async (address) => {
|
|
2706
|
+
try {
|
|
2707
|
+
const marketObject = address.get("core.market");
|
|
2708
|
+
const isolatedAssets = [];
|
|
2709
|
+
if (!marketObject)
|
|
2710
|
+
return isolatedAssets;
|
|
2711
|
+
let hasNextPage = false;
|
|
2712
|
+
let nextCursor = null;
|
|
2713
|
+
const isIsolatedDynamicField = (dynamicField) => {
|
|
2714
|
+
return dynamicField.name.type === isolatedAssetKeyType;
|
|
2715
|
+
};
|
|
2716
|
+
do {
|
|
2717
|
+
const response = await address.cache.queryGetDynamicFields({
|
|
2718
|
+
parentId: marketObject,
|
|
2719
|
+
cursor: nextCursor,
|
|
2720
|
+
limit: 10
|
|
2721
|
+
});
|
|
2722
|
+
if (!response)
|
|
2723
|
+
break;
|
|
2724
|
+
const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
|
|
2725
|
+
isolatedAssets.push(...isolatedAssetCoinTypes);
|
|
2726
|
+
if (response && response.hasNextPage && response.nextCursor) {
|
|
2727
|
+
hasNextPage = true;
|
|
2728
|
+
nextCursor = response.nextCursor;
|
|
2729
|
+
} else {
|
|
2730
|
+
hasNextPage = false;
|
|
2731
|
+
}
|
|
2732
|
+
} while (hasNextPage);
|
|
2733
|
+
return isolatedAssets;
|
|
2734
|
+
} catch (e) {
|
|
2735
|
+
console.error(e);
|
|
2736
|
+
return [];
|
|
2737
|
+
}
|
|
2738
|
+
};
|
|
2739
|
+
var isIsolatedAsset = async (utils, coinName) => {
|
|
2740
|
+
try {
|
|
2741
|
+
const marketObject = utils.address.get("core.market");
|
|
2742
|
+
const cachedData = utils.address.cache.queryClient.getQueryData([
|
|
2743
|
+
"getDynamicFields",
|
|
2744
|
+
marketObject
|
|
2745
|
+
]);
|
|
2746
|
+
if (cachedData) {
|
|
2747
|
+
const coinType2 = utils.parseCoinType(coinName);
|
|
2748
|
+
return cachedData.includes(coinType2);
|
|
2602
2749
|
}
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2750
|
+
const coinType = utils.parseCoinType(coinName).slice(2);
|
|
2751
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2752
|
+
parentId: marketObject,
|
|
2753
|
+
name: {
|
|
2754
|
+
type: isolatedAssetKeyType,
|
|
2755
|
+
value: coinType
|
|
2756
|
+
}
|
|
2757
|
+
});
|
|
2758
|
+
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
2759
|
+
if (!parsedData.success)
|
|
2760
|
+
return false;
|
|
2761
|
+
return parsedData.data.fields.value;
|
|
2762
|
+
} catch (e) {
|
|
2763
|
+
console.error(e);
|
|
2764
|
+
return false;
|
|
2765
|
+
}
|
|
2766
|
+
};
|
|
2767
|
+
|
|
2768
|
+
// src/queries/borrowLimitQuery.ts
|
|
2769
|
+
import { z as zod3 } from "zod";
|
|
2770
|
+
var borrowLimitZod = zod3.object({
|
|
2771
|
+
dataType: zod3.string(),
|
|
2772
|
+
type: zod3.string(),
|
|
2773
|
+
hasPublicTransfer: zod3.boolean(),
|
|
2774
|
+
fields: zod3.object({
|
|
2775
|
+
id: zod3.object({
|
|
2776
|
+
id: zod3.string()
|
|
2777
|
+
}),
|
|
2778
|
+
name: zod3.object({
|
|
2779
|
+
type: zod3.string()
|
|
2780
|
+
}),
|
|
2781
|
+
value: zod3.string()
|
|
2782
|
+
})
|
|
2783
|
+
});
|
|
2784
|
+
var borrowLimitKeyType = `0xb784ea287d944e478a3ceaa071f8885072cce6b7224cf245914dc2f9963f460e::market_dynamic_keys::BorrowLimitKey`;
|
|
2785
|
+
var getBorrowLimit = async (utils, poolName) => {
|
|
2786
|
+
try {
|
|
2787
|
+
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
2788
|
+
const marketObject = utils.address.get("core.market");
|
|
2789
|
+
if (!marketObject)
|
|
2790
|
+
return null;
|
|
2791
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2792
|
+
parentId: marketObject,
|
|
2793
|
+
name: {
|
|
2794
|
+
type: borrowLimitKeyType,
|
|
2795
|
+
value: poolCoinType
|
|
2796
|
+
}
|
|
2797
|
+
});
|
|
2798
|
+
const parsedData = borrowLimitZod.safeParse(object?.data?.content);
|
|
2799
|
+
if (!parsedData.success)
|
|
2800
|
+
return null;
|
|
2801
|
+
return parsedData.data.fields.value;
|
|
2802
|
+
} catch (e) {
|
|
2803
|
+
console.error(`Error in getBorrowLimit for ${poolName}: ${e.message}`);
|
|
2804
|
+
return "0";
|
|
2805
|
+
}
|
|
2608
2806
|
};
|
|
2609
2807
|
|
|
2610
2808
|
// src/queries/coreQuery.ts
|
|
@@ -2673,6 +2871,9 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2673
2871
|
const maxSupplyCoin = BigNumber3(
|
|
2674
2872
|
await getSupplyLimit(query.utils, poolCoinName) ?? "0"
|
|
2675
2873
|
).shiftedBy(-coinDecimal).toNumber();
|
|
2874
|
+
const maxBorrowCoin = BigNumber3(
|
|
2875
|
+
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
2876
|
+
).shiftedBy(-coinDecimal).toNumber();
|
|
2676
2877
|
pools[poolCoinName] = {
|
|
2677
2878
|
coinName: poolCoinName,
|
|
2678
2879
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
@@ -2691,9 +2892,10 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2691
2892
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
2692
2893
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2693
2894
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2694
|
-
|
|
2695
|
-
isIsolated: false,
|
|
2895
|
+
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2896
|
+
// isIsolated: false,
|
|
2696
2897
|
maxSupplyCoin,
|
|
2898
|
+
maxBorrowCoin,
|
|
2697
2899
|
...calculatedMarketPoolData
|
|
2698
2900
|
};
|
|
2699
2901
|
}
|
|
@@ -2731,6 +2933,7 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2731
2933
|
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
2732
2934
|
liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
|
|
2733
2935
|
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
2936
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
2734
2937
|
...calculatedMarketCollateralData
|
|
2735
2938
|
};
|
|
2736
2939
|
}
|
|
@@ -2778,85 +2981,76 @@ var getMarketPools = async (query, poolCoinNames = [...SUPPORT_POOLS], indexer =
|
|
|
2778
2981
|
return marketPools;
|
|
2779
2982
|
};
|
|
2780
2983
|
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
|
-
}
|
|
2984
|
+
try {
|
|
2985
|
+
coinPrice = coinPrice || (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
|
|
2986
|
+
if (indexer) {
|
|
2987
|
+
const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
|
|
2988
|
+
if (!marketPoolIndexer) {
|
|
2989
|
+
return void 0;
|
|
2990
|
+
}
|
|
2991
|
+
marketPoolIndexer.coinPrice = coinPrice ?? marketPoolIndexer.coinPrice;
|
|
2992
|
+
marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
|
|
2993
|
+
marketPoolIndexer.coinName
|
|
2994
|
+
);
|
|
2995
|
+
return marketPoolIndexer;
|
|
2996
|
+
}
|
|
2997
|
+
const marketId = query.address.get("core.market");
|
|
2998
|
+
marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
|
|
2999
|
+
showContent: true
|
|
3000
|
+
}))?.data;
|
|
3001
|
+
if (!(marketObject && marketObject.content?.dataType === "moveObject"))
|
|
3002
|
+
throw new Error(`Failed to fetch marketObject`);
|
|
3003
|
+
const fields = marketObject.content.fields;
|
|
3004
|
+
const coinType = query.utils.parseCoinType(poolCoinName);
|
|
3005
|
+
const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
|
|
3006
|
+
const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3007
|
+
parentId: balanceSheetParentId,
|
|
3008
|
+
name: {
|
|
3009
|
+
type: "0x1::type_name::TypeName",
|
|
3010
|
+
value: {
|
|
3011
|
+
name: coinType.substring(2)
|
|
2811
3012
|
}
|
|
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
3013
|
}
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
|
|
3014
|
+
});
|
|
3015
|
+
const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
|
|
3016
|
+
if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
|
|
3017
|
+
throw new Error(
|
|
3018
|
+
`Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
|
|
3019
|
+
);
|
|
3020
|
+
const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
|
|
3021
|
+
const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
|
|
3022
|
+
const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3023
|
+
parentId: borrowIndexParentId,
|
|
3024
|
+
name: {
|
|
3025
|
+
type: "0x1::type_name::TypeName",
|
|
3026
|
+
value: {
|
|
3027
|
+
name: coinType.substring(2)
|
|
2830
3028
|
}
|
|
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
3029
|
}
|
|
2841
|
-
|
|
2842
|
-
|
|
2843
|
-
|
|
2844
|
-
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
|
|
3030
|
+
});
|
|
3031
|
+
const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
|
|
3032
|
+
if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
|
|
3033
|
+
throw new Error(
|
|
3034
|
+
`Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
|
|
3035
|
+
);
|
|
3036
|
+
const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
|
|
3037
|
+
const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
|
|
3038
|
+
const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3039
|
+
parentId: interestModelParentId,
|
|
3040
|
+
name: {
|
|
3041
|
+
type: "0x1::type_name::TypeName",
|
|
3042
|
+
value: {
|
|
3043
|
+
name: coinType.substring(2)
|
|
2849
3044
|
}
|
|
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
3045
|
}
|
|
3046
|
+
});
|
|
3047
|
+
const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse?.data;
|
|
3048
|
+
if (!(interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content))
|
|
3049
|
+
throw new Error(
|
|
3050
|
+
`Failed to fetch interestModelDynamicFieldObject for ${poolCoinName}: ${interestModelDynamicFieldObject}`
|
|
3051
|
+
);
|
|
3052
|
+
const interestModel = interestModelDynamicFieldObject.content.fields.value.fields;
|
|
3053
|
+
const getBorrowFee = async () => {
|
|
2860
3054
|
const borrowFeeDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
2861
3055
|
parentId: marketId,
|
|
2862
3056
|
name: {
|
|
@@ -2868,18 +3062,11 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2868
3062
|
}
|
|
2869
3063
|
}
|
|
2870
3064
|
});
|
|
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)) {
|
|
3065
|
+
const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
|
|
3066
|
+
if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
|
|
3067
|
+
return { value: "0" };
|
|
3068
|
+
return borrowFeeDynamicFieldObject.content.fields.value.fields;
|
|
3069
|
+
};
|
|
2883
3070
|
const parsedMarketPoolData = parseOriginMarketPoolData({
|
|
2884
3071
|
type: interestModel.type.fields,
|
|
2885
3072
|
maxBorrowRate: interestModel.max_borrow_rate.fields,
|
|
@@ -2893,7 +3080,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2893
3080
|
reserve: balanceSheet.revenue,
|
|
2894
3081
|
reserveFactor: interestModel.revenue_factor.fields,
|
|
2895
3082
|
borrowWeight: interestModel.borrow_weight.fields,
|
|
2896
|
-
borrowFeeRate:
|
|
3083
|
+
borrowFeeRate: await getBorrowFee(),
|
|
2897
3084
|
baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
|
|
2898
3085
|
borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
|
|
2899
3086
|
borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
|
|
@@ -2909,7 +3096,10 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2909
3096
|
const maxSupplyCoin = BigNumber3(
|
|
2910
3097
|
await getSupplyLimit(query.utils, poolCoinName) ?? "0"
|
|
2911
3098
|
).shiftedBy(-coinDecimal).toNumber();
|
|
2912
|
-
|
|
3099
|
+
const maxBorrowCoin = BigNumber3(
|
|
3100
|
+
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
3101
|
+
).shiftedBy(-coinDecimal).toNumber();
|
|
3102
|
+
return {
|
|
2913
3103
|
coinName: poolCoinName,
|
|
2914
3104
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
2915
3105
|
coinType: query.utils.parseCoinType(poolCoinName),
|
|
@@ -2928,12 +3118,13 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2928
3118
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2929
3119
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2930
3120
|
maxSupplyCoin,
|
|
2931
|
-
|
|
2932
|
-
isIsolated:
|
|
3121
|
+
maxBorrowCoin,
|
|
3122
|
+
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2933
3123
|
...calculatedMarketPoolData
|
|
2934
3124
|
};
|
|
3125
|
+
} catch (e) {
|
|
3126
|
+
console.error(e.message);
|
|
2935
3127
|
}
|
|
2936
|
-
return marketPool;
|
|
2937
3128
|
};
|
|
2938
3129
|
var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
|
|
2939
3130
|
const marketId = query.address.get("core.market");
|
|
@@ -2982,85 +3173,76 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
|
|
|
2982
3173
|
);
|
|
2983
3174
|
return marketCollateralIndexer;
|
|
2984
3175
|
}
|
|
2985
|
-
let marketCollateral;
|
|
2986
|
-
let riskModel;
|
|
2987
|
-
let collateralStat;
|
|
2988
3176
|
const marketId = query.address.get("core.market");
|
|
2989
3177
|
marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
|
|
2990
3178
|
showContent: true
|
|
2991
3179
|
}))?.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;
|
|
3180
|
+
if (!(marketObject && marketObject.content?.dataType === "moveObject"))
|
|
3181
|
+
throw new Error(`Failed to fetch marketObject`);
|
|
3182
|
+
const fields = marketObject.content.fields;
|
|
3183
|
+
const coinType = query.utils.parseCoinType(collateralCoinName);
|
|
3184
|
+
const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
|
|
3185
|
+
const riskModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3186
|
+
parentId: riskModelParentId,
|
|
3187
|
+
name: {
|
|
3188
|
+
type: "0x1::type_name::TypeName",
|
|
3189
|
+
value: {
|
|
3190
|
+
name: coinType.substring(2)
|
|
3012
3191
|
}
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
3023
|
-
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
|
|
3028
|
-
collateralStat = dynamicFields.value.fields;
|
|
3192
|
+
}
|
|
3193
|
+
});
|
|
3194
|
+
const riskModelDynamicFieldObject = riskModelDynamicFieldObjectResponse?.data;
|
|
3195
|
+
if (!(riskModelDynamicFieldObject && riskModelDynamicFieldObject.content && "fields" in riskModelDynamicFieldObject.content))
|
|
3196
|
+
throw new Error(
|
|
3197
|
+
`Failed to fetch riskModelDynamicFieldObject for ${riskModelDynamicFieldObjectResponse?.error?.code.toString()}: `
|
|
3198
|
+
);
|
|
3199
|
+
const riskModel = riskModelDynamicFieldObject.content.fields.value.fields;
|
|
3200
|
+
const collateralStatParentId = fields.collateral_stats.fields.table.fields.id.id;
|
|
3201
|
+
const collateralStatDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3202
|
+
parentId: collateralStatParentId,
|
|
3203
|
+
name: {
|
|
3204
|
+
type: "0x1::type_name::TypeName",
|
|
3205
|
+
value: {
|
|
3206
|
+
name: coinType.substring(2)
|
|
3029
3207
|
}
|
|
3030
3208
|
}
|
|
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
|
|
3209
|
+
});
|
|
3210
|
+
const collateralStatDynamicFieldObject = collateralStatDynamicFieldObjectResponse?.data;
|
|
3211
|
+
if (!(collateralStatDynamicFieldObject && collateralStatDynamicFieldObject.content && "fields" in collateralStatDynamicFieldObject.content))
|
|
3212
|
+
throw new Error(
|
|
3213
|
+
`Failed to fetch collateralStatDynamicFieldObject for ${collateralCoinName}: ${collateralStatDynamicFieldObjectResponse?.error?.code.toString()}`
|
|
3046
3214
|
);
|
|
3047
|
-
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3215
|
+
const collateralStat = collateralStatDynamicFieldObject.content.fields.value.fields;
|
|
3216
|
+
const parsedMarketCollateralData = parseOriginMarketCollateralData({
|
|
3217
|
+
type: riskModel.type.fields,
|
|
3218
|
+
collateralFactor: riskModel.collateral_factor.fields,
|
|
3219
|
+
liquidationFactor: riskModel.liquidation_factor.fields,
|
|
3220
|
+
liquidationDiscount: riskModel.liquidation_discount.fields,
|
|
3221
|
+
liquidationPanelty: riskModel.liquidation_penalty.fields,
|
|
3222
|
+
liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
|
|
3223
|
+
maxCollateralAmount: riskModel.max_collateral_amount,
|
|
3224
|
+
totalCollateralAmount: collateralStat.amount
|
|
3225
|
+
});
|
|
3226
|
+
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
3227
|
+
query.utils,
|
|
3228
|
+
parsedMarketCollateralData
|
|
3229
|
+
);
|
|
3230
|
+
return {
|
|
3231
|
+
coinName: collateralCoinName,
|
|
3232
|
+
symbol: query.utils.parseSymbol(collateralCoinName),
|
|
3233
|
+
coinType: query.utils.parseCoinType(collateralCoinName),
|
|
3234
|
+
marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
|
|
3235
|
+
coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
|
|
3236
|
+
coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
|
|
3237
|
+
coinPrice: coinPrice ?? 0,
|
|
3238
|
+
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
3239
|
+
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
3240
|
+
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
3241
|
+
liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
|
|
3242
|
+
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3243
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
3244
|
+
...calculatedMarketCollateralData
|
|
3245
|
+
};
|
|
3064
3246
|
};
|
|
3065
3247
|
var getObligations = async ({
|
|
3066
3248
|
address
|
|
@@ -3238,98 +3420,18 @@ var getFlashLoanFees = async (query, assetNames) => {
|
|
|
3238
3420
|
);
|
|
3239
3421
|
};
|
|
3240
3422
|
|
|
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
3423
|
// src/queries/loyaltyProgramQuery.ts
|
|
3322
3424
|
import BigNumber4 from "bignumber.js";
|
|
3323
|
-
import { z as
|
|
3324
|
-
var rewardPoolFieldsZod =
|
|
3325
|
-
balance:
|
|
3326
|
-
enable_claim:
|
|
3425
|
+
import { z as zod4 } from "zod";
|
|
3426
|
+
var rewardPoolFieldsZod = zod4.object({
|
|
3427
|
+
balance: zod4.string(),
|
|
3428
|
+
enable_claim: zod4.boolean()
|
|
3327
3429
|
}).transform((value) => ({
|
|
3328
3430
|
totalPoolReward: BigNumber4(value.balance).shiftedBy(-9).toNumber(),
|
|
3329
3431
|
isClaimEnabled: value.enable_claim
|
|
3330
3432
|
}));
|
|
3331
|
-
var userRewardFieldsZod =
|
|
3332
|
-
value:
|
|
3433
|
+
var userRewardFieldsZod = zod4.object({
|
|
3434
|
+
value: zod4.string()
|
|
3333
3435
|
}).transform((value) => BigNumber4(value.value).shiftedBy(-9).toNumber());
|
|
3334
3436
|
var getLoyaltyProgramInformations = async (query, veScaKey) => {
|
|
3335
3437
|
const rewardPool = query.address.get("loyaltyProgram.rewardPool");
|
|
@@ -4138,7 +4240,7 @@ var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPr
|
|
|
4138
4240
|
const coinName = query.utils.parseCoinName(marketCoinName);
|
|
4139
4241
|
marketPool = marketPool || await query.getMarketPool(coinName, indexer);
|
|
4140
4242
|
if (!marketPool) {
|
|
4141
|
-
throw new Error(`
|
|
4243
|
+
throw new Error(`Failed to fetch marketPool for ${marketCoinName}`);
|
|
4142
4244
|
}
|
|
4143
4245
|
const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
|
|
4144
4246
|
const rewardPoolId = query.address.get(
|
|
@@ -4412,7 +4514,7 @@ var getStakeRewardPool = async ({
|
|
|
4412
4514
|
import BigNumber7 from "bignumber.js";
|
|
4413
4515
|
import { SUI_CLOCK_OBJECT_ID, SuiTxBlock as SuiTxBlock2 } from "@scallop-io/sui-kit";
|
|
4414
4516
|
import { bcs as bcs2 } from "@mysten/sui/bcs";
|
|
4415
|
-
import { z as
|
|
4517
|
+
import { z as zod5 } from "zod";
|
|
4416
4518
|
import assert2 from "assert";
|
|
4417
4519
|
var getVescaKeys = async (utils, ownerAddress) => {
|
|
4418
4520
|
const owner = ownerAddress || utils.suiKit.currentAddress();
|
|
@@ -4461,10 +4563,10 @@ var getVeScas = async ({
|
|
|
4461
4563
|
}
|
|
4462
4564
|
return result;
|
|
4463
4565
|
};
|
|
4464
|
-
var SuiObjectRefZod =
|
|
4465
|
-
objectId:
|
|
4466
|
-
digest:
|
|
4467
|
-
version:
|
|
4566
|
+
var SuiObjectRefZod = zod5.object({
|
|
4567
|
+
objectId: zod5.string(),
|
|
4568
|
+
digest: zod5.string(),
|
|
4569
|
+
version: zod5.string()
|
|
4468
4570
|
});
|
|
4469
4571
|
var getVeSca = async (utils, veScaKey) => {
|
|
4470
4572
|
const tableId = utils.address.get(`vesca.tableId`);
|
|
@@ -4654,10 +4756,10 @@ var ScallopUtils = class {
|
|
|
4654
4756
|
* @param address - ScallopAddress instance.
|
|
4655
4757
|
*/
|
|
4656
4758
|
async init(force = false, address) {
|
|
4657
|
-
if (
|
|
4658
|
-
await this.address.read();
|
|
4659
|
-
} else {
|
|
4759
|
+
if (address && !this.address)
|
|
4660
4760
|
this.address = address;
|
|
4761
|
+
if (force || !this.address.getAddresses()) {
|
|
4762
|
+
await this.address.read();
|
|
4661
4763
|
}
|
|
4662
4764
|
}
|
|
4663
4765
|
/**
|
|
@@ -4943,9 +5045,7 @@ var ScallopUtils = class {
|
|
|
4943
5045
|
for (const endpoint of endpoints) {
|
|
4944
5046
|
const priceIdPairs = Array.from(failedRequests.values()).reduce(
|
|
4945
5047
|
(acc, coinName) => {
|
|
4946
|
-
const priceId = this.address.get(
|
|
4947
|
-
`core.coins.${coinName}.oracle.pyth.feed`
|
|
4948
|
-
);
|
|
5048
|
+
const priceId = this.address.get(`core.coins.${coinName}.oracle.pyth.feed`) ?? PYTH_FEED_IDS[coinName];
|
|
4949
5049
|
acc.push([coinName, priceId]);
|
|
4950
5050
|
return acc;
|
|
4951
5051
|
},
|
|
@@ -6919,11 +7019,12 @@ var ScallopQuery = class {
|
|
|
6919
7019
|
* @param address - ScallopAddress instance.
|
|
6920
7020
|
*/
|
|
6921
7021
|
async init(force = false, address) {
|
|
6922
|
-
if (
|
|
6923
|
-
await this.address.read();
|
|
6924
|
-
} else {
|
|
7022
|
+
if (address && !this.address) {
|
|
6925
7023
|
this.address = address;
|
|
6926
7024
|
}
|
|
7025
|
+
if (force || !this.address.getAddresses()) {
|
|
7026
|
+
await this.address.read();
|
|
7027
|
+
}
|
|
6927
7028
|
await this.utils.init(force, this.address);
|
|
6928
7029
|
}
|
|
6929
7030
|
/* ==================== Core Query Methods ==================== */
|
|
@@ -7385,11 +7486,17 @@ var ScallopQuery = class {
|
|
|
7385
7486
|
return await getFlashLoanFees(this, assetCoinNames);
|
|
7386
7487
|
}
|
|
7387
7488
|
/**
|
|
7388
|
-
* Get supply limit of
|
|
7489
|
+
* Get supply limit of lending pool
|
|
7389
7490
|
*/
|
|
7390
7491
|
async getPoolSupplyLimit(poolName) {
|
|
7391
7492
|
return await getSupplyLimit(this.utils, poolName);
|
|
7392
7493
|
}
|
|
7494
|
+
/**
|
|
7495
|
+
* Get borrow limit of borrow pool
|
|
7496
|
+
*/
|
|
7497
|
+
async getPoolBorrowLimit(poolName) {
|
|
7498
|
+
return await getBorrowLimit(this.utils, poolName);
|
|
7499
|
+
}
|
|
7393
7500
|
/**
|
|
7394
7501
|
* Get list of isolated assets
|
|
7395
7502
|
*/
|
|
@@ -7462,10 +7569,10 @@ var ScallopBuilder = class {
|
|
|
7462
7569
|
* @param address - ScallopAddress instance.
|
|
7463
7570
|
*/
|
|
7464
7571
|
async init(force = false, address) {
|
|
7465
|
-
if (
|
|
7466
|
-
await this.address.read();
|
|
7467
|
-
} else {
|
|
7572
|
+
if (address && !this.address)
|
|
7468
7573
|
this.address = address;
|
|
7574
|
+
if (force || !this.address.getAddresses()) {
|
|
7575
|
+
await this.address.read();
|
|
7469
7576
|
}
|
|
7470
7577
|
await this.query.init(force, this.address);
|
|
7471
7578
|
await this.utils.init(force, this.address);
|