@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.js
CHANGED
|
@@ -102,11 +102,11 @@ var DEFAULT_CACHE_OPTIONS = {
|
|
|
102
102
|
|
|
103
103
|
// src/constants/coinGecko.ts
|
|
104
104
|
var COIN_GECKGO_IDS = {
|
|
105
|
-
usdc: "usdc
|
|
105
|
+
usdc: "usdc",
|
|
106
106
|
sbeth: "ethereum",
|
|
107
107
|
weth: "ethereum",
|
|
108
108
|
wbtc: "bitcoin",
|
|
109
|
-
wusdc: "usdc
|
|
109
|
+
wusdc: "usdc",
|
|
110
110
|
wusdt: "tether",
|
|
111
111
|
sui: "sui",
|
|
112
112
|
wapt: "aptos",
|
|
@@ -115,7 +115,9 @@ var COIN_GECKGO_IDS = {
|
|
|
115
115
|
afsui: "sui",
|
|
116
116
|
hasui: "sui",
|
|
117
117
|
vsui: "sui",
|
|
118
|
-
sca: "scallop-2"
|
|
118
|
+
sca: "scallop-2",
|
|
119
|
+
deep: "deepbook",
|
|
120
|
+
fud: "fud-the-pug"
|
|
119
121
|
};
|
|
120
122
|
|
|
121
123
|
// src/constants/common.ts
|
|
@@ -123,7 +125,7 @@ var API_BASE_URL = "https://sui.apis.scallop.io";
|
|
|
123
125
|
var SDK_API_BASE_URL = "https://sdk.api.scallop.io";
|
|
124
126
|
var IS_VE_SCA_TEST = false;
|
|
125
127
|
var USE_TEST_ADDRESS = false;
|
|
126
|
-
var ADDRESSES_ID = IS_VE_SCA_TEST || USE_TEST_ADDRESS ? "65fb07c39c845425d71d7b18" : "
|
|
128
|
+
var ADDRESSES_ID = IS_VE_SCA_TEST || USE_TEST_ADDRESS ? "65fb07c39c845425d71d7b18" : "675c65cd301dd817ea262e76";
|
|
127
129
|
var PROTOCOL_OBJECT_ID = IS_VE_SCA_TEST ? "0xc9f859f98ca352a11b97a038c4b4162bee437b8df8caa047990fe9cb03d4f778" : "0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf";
|
|
128
130
|
var BORROW_FEE_PROTOCOL_ID = IS_VE_SCA_TEST ? "0xc9f859f98ca352a11b97a038c4b4162bee437b8df8caa047990fe9cb03d4f778" : "0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da";
|
|
129
131
|
var SCA_COIN_TYPE = IS_VE_SCA_TEST ? `0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524::sca::SCA` : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA";
|
|
@@ -144,7 +146,9 @@ var SUPPORT_POOLS = [
|
|
|
144
146
|
"afsui",
|
|
145
147
|
"hasui",
|
|
146
148
|
"vsui",
|
|
147
|
-
"sca"
|
|
149
|
+
"sca",
|
|
150
|
+
"fud",
|
|
151
|
+
"deep"
|
|
148
152
|
];
|
|
149
153
|
var SUPPORT_COLLATERALS = [
|
|
150
154
|
"usdc",
|
|
@@ -188,7 +192,9 @@ var SUPPORT_SCOIN = [
|
|
|
188
192
|
"ssca",
|
|
189
193
|
"scetus",
|
|
190
194
|
"swsol",
|
|
191
|
-
"swbtc"
|
|
195
|
+
"swbtc",
|
|
196
|
+
"sdeep",
|
|
197
|
+
"sfud"
|
|
192
198
|
];
|
|
193
199
|
var SUPPORT_SUI_BRIDGE = ["sbeth"];
|
|
194
200
|
var SUPPORT_WORMHOLE = [
|
|
@@ -245,6 +251,8 @@ var coinDecimals = {
|
|
|
245
251
|
hasui: 9,
|
|
246
252
|
vsui: 9,
|
|
247
253
|
sca: 9,
|
|
254
|
+
deep: 6,
|
|
255
|
+
fud: 5,
|
|
248
256
|
susdc: 6,
|
|
249
257
|
sweth: 8,
|
|
250
258
|
ssbeth: 8,
|
|
@@ -258,7 +266,9 @@ var coinDecimals = {
|
|
|
258
266
|
safsui: 9,
|
|
259
267
|
shasui: 9,
|
|
260
268
|
svsui: 9,
|
|
261
|
-
ssca: 9
|
|
269
|
+
ssca: 9,
|
|
270
|
+
sdeep: 6,
|
|
271
|
+
sfud: 5
|
|
262
272
|
};
|
|
263
273
|
var assetCoins = {
|
|
264
274
|
usdc: "usdc",
|
|
@@ -274,7 +284,9 @@ var assetCoins = {
|
|
|
274
284
|
afsui: "afsui",
|
|
275
285
|
hasui: "hasui",
|
|
276
286
|
vsui: "vsui",
|
|
277
|
-
sca: "sca"
|
|
287
|
+
sca: "sca",
|
|
288
|
+
deep: "deep",
|
|
289
|
+
fud: "fud"
|
|
278
290
|
};
|
|
279
291
|
var marketCoins = {
|
|
280
292
|
susdc: "susdc",
|
|
@@ -290,7 +302,9 @@ var marketCoins = {
|
|
|
290
302
|
safsui: "safsui",
|
|
291
303
|
shasui: "shasui",
|
|
292
304
|
svsui: "svsui",
|
|
293
|
-
ssca: "ssca"
|
|
305
|
+
ssca: "ssca",
|
|
306
|
+
sdeep: "sdeep",
|
|
307
|
+
sfud: "sfud"
|
|
294
308
|
};
|
|
295
309
|
var sCoins = {
|
|
296
310
|
susdc: "susdc",
|
|
@@ -305,7 +319,9 @@ var sCoins = {
|
|
|
305
319
|
svsui: "svsui",
|
|
306
320
|
ssca: "ssca",
|
|
307
321
|
swsol: "swsol",
|
|
308
|
-
swbtc: "swbtc"
|
|
322
|
+
swbtc: "swbtc",
|
|
323
|
+
sfud: "sfud",
|
|
324
|
+
sdeep: "sdeep"
|
|
309
325
|
};
|
|
310
326
|
var stakeMarketCoins = {
|
|
311
327
|
susdc: "susdc",
|
|
@@ -358,7 +374,10 @@ var coinIds = {
|
|
|
358
374
|
afsui: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
|
|
359
375
|
hasui: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
|
|
360
376
|
vsui: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
|
|
361
|
-
sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6"
|
|
377
|
+
sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
|
|
378
|
+
// isolated assets
|
|
379
|
+
deep: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",
|
|
380
|
+
fud: "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1"
|
|
362
381
|
};
|
|
363
382
|
var wormholeCoinIds = {
|
|
364
383
|
weth: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
|
|
@@ -384,7 +403,9 @@ var sCoinIds = {
|
|
|
384
403
|
shasui: "0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",
|
|
385
404
|
svsui: "0xe1a1cc6bcf0001a015eab84bcc6713393ce20535f55b8b6f35c142e057a25fbe::scallop_v_sui::SCALLOP_V_SUI",
|
|
386
405
|
swsol: "0x1392650f2eca9e3f6ffae3ff89e42a3590d7102b80e2b430f674730bc30d3259::scallop_wormhole_sol::SCALLOP_WORMHOLE_SOL",
|
|
387
|
-
swbtc: "0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC"
|
|
406
|
+
swbtc: "0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC",
|
|
407
|
+
sdeep: "0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",
|
|
408
|
+
sfud: "0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD"
|
|
388
409
|
};
|
|
389
410
|
var sCoinTypeToName = Object.entries(sCoinIds).reduce(
|
|
390
411
|
(acc, [coinName, coinType]) => {
|
|
@@ -467,6 +488,12 @@ var POOL_ADDRESSES = {
|
|
|
467
488
|
sca: {
|
|
468
489
|
lendingPoolAddress: "0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",
|
|
469
490
|
collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31"
|
|
491
|
+
},
|
|
492
|
+
fud: {
|
|
493
|
+
lendingPoolAddress: ""
|
|
494
|
+
},
|
|
495
|
+
deep: {
|
|
496
|
+
lendingPoolAddress: ""
|
|
470
497
|
}
|
|
471
498
|
};
|
|
472
499
|
|
|
@@ -489,7 +516,9 @@ var PYTH_FEED_IDS = {
|
|
|
489
516
|
afsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
490
517
|
hasui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
491
518
|
vsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
492
|
-
sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc"
|
|
519
|
+
sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
|
|
520
|
+
deep: "29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",
|
|
521
|
+
fud: "6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75"
|
|
493
522
|
};
|
|
494
523
|
|
|
495
524
|
// src/constants/queryKeys.ts
|
|
@@ -594,20 +623,33 @@ var TEST_ADDRESSES = {
|
|
|
594
623
|
core: {
|
|
595
624
|
// version:
|
|
596
625
|
// '0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7',
|
|
597
|
-
version: "
|
|
626
|
+
version: "0xd318de9b0f6873879a82cbfcc2daa1d1591a8b54e7cea9f4b567da63c692a52b",
|
|
598
627
|
versionCap: "0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",
|
|
599
628
|
// object:
|
|
600
629
|
// '0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf',
|
|
601
|
-
object: "
|
|
630
|
+
object: "0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d",
|
|
602
631
|
// market:
|
|
603
632
|
// '0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9',
|
|
604
|
-
market: "
|
|
633
|
+
market: "0x9d6434e97f3f98fd9b0c0e1dca22632073985abcd22541feae7ee1e34cbe3af2",
|
|
605
634
|
adminCap: "0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",
|
|
606
635
|
coinDecimalsRegistry: "0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",
|
|
607
636
|
// obligationAccessStore:
|
|
608
637
|
// '0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9',
|
|
609
|
-
obligationAccessStore: "
|
|
638
|
+
obligationAccessStore: "0x46e9b44a77ee9c9d33cc2689ecdfbb8f681935cbc6bdf6ac3df048e396c36c82",
|
|
610
639
|
coins: {
|
|
640
|
+
usdc: {
|
|
641
|
+
id: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7",
|
|
642
|
+
metaData: "0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6",
|
|
643
|
+
treasury: "",
|
|
644
|
+
oracle: {
|
|
645
|
+
supra: "",
|
|
646
|
+
switchboard: "",
|
|
647
|
+
pyth: {
|
|
648
|
+
feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
|
|
649
|
+
feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
},
|
|
611
653
|
cetus: {
|
|
612
654
|
id: "0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",
|
|
613
655
|
metaData: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",
|
|
@@ -763,6 +805,19 @@ var TEST_ADDRESSES = {
|
|
|
763
805
|
feedObject: "0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"
|
|
764
806
|
}
|
|
765
807
|
}
|
|
808
|
+
},
|
|
809
|
+
sbeth: {
|
|
810
|
+
id: "0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29",
|
|
811
|
+
metaData: "0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0",
|
|
812
|
+
treasury: "",
|
|
813
|
+
oracle: {
|
|
814
|
+
supra: "",
|
|
815
|
+
switchboard: "",
|
|
816
|
+
pyth: {
|
|
817
|
+
feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
|
|
818
|
+
feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
|
|
819
|
+
}
|
|
820
|
+
}
|
|
766
821
|
}
|
|
767
822
|
},
|
|
768
823
|
oracles: {
|
|
@@ -796,7 +851,7 @@ var TEST_ADDRESSES = {
|
|
|
796
851
|
upgradeCap: "0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"
|
|
797
852
|
},
|
|
798
853
|
protocol: {
|
|
799
|
-
id: "
|
|
854
|
+
id: "0xb784ea287d944e478a3ceaa071f8885072cce6b7224cf245914dc2f9963f460e",
|
|
800
855
|
upgradeCap: "0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"
|
|
801
856
|
},
|
|
802
857
|
// protocol: {
|
|
@@ -814,7 +869,7 @@ var TEST_ADDRESSES = {
|
|
|
814
869
|
// '0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f',
|
|
815
870
|
// },
|
|
816
871
|
query: {
|
|
817
|
-
id: "
|
|
872
|
+
id: "0x89706958f43fb170de134579e3fbc53972b946ee78bd2442d8e1adc36074fbdc",
|
|
818
873
|
upgradeCap: "0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"
|
|
819
874
|
},
|
|
820
875
|
supra: { id: "", upgradeCap: "" },
|
|
@@ -850,6 +905,10 @@ var TEST_ADDRESSES = {
|
|
|
850
905
|
"0xc3206071a8d43212efb6e3b5504f2321f8df97ab122b466c0bc7cfdf398dc13a"
|
|
851
906
|
)
|
|
852
907
|
},
|
|
908
|
+
susdc: {
|
|
909
|
+
id: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
|
|
910
|
+
rewardPoolId: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166"
|
|
911
|
+
},
|
|
853
912
|
swusdc: {
|
|
854
913
|
// id: '0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0',
|
|
855
914
|
id: "0xf1b383b9cf2e9f515fc69567df1053098f273849d09cd84b0278a773429bd2b2",
|
|
@@ -898,37 +957,37 @@ var TEST_ADDRESSES = {
|
|
|
898
957
|
config: ""
|
|
899
958
|
},
|
|
900
959
|
borrowIncentive: {
|
|
901
|
-
id: "
|
|
902
|
-
adminCap: "
|
|
903
|
-
object: "
|
|
904
|
-
query: "
|
|
905
|
-
incentivePools: "
|
|
906
|
-
incentiveAccounts: "
|
|
907
|
-
config: "
|
|
960
|
+
id: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
|
|
961
|
+
adminCap: "0x56ac8e6f2b360b2b35c0168d72cc6cd17d9592afb83709865cb87af24bb2025b",
|
|
962
|
+
object: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
|
|
963
|
+
query: "0x8e0d00f8ff1199d7c5fe56cea0e901a525daeefff0445a1635ace8282ae3302c",
|
|
964
|
+
incentivePools: "0x9d564c93128c6ab0c0d3e050a47f11df0b91494f3bb779bdc1301c1c637f15eb",
|
|
965
|
+
incentiveAccounts: "0x09e6040e798246de04941bc79a3ba62d3eca6d7a218cc30f21fb07f478fa2926",
|
|
966
|
+
config: "0x43d4ca1dfc90b161c4240facd119e74e4b850cca2957f88c2ec289c9380da064"
|
|
908
967
|
},
|
|
909
968
|
referral: {
|
|
910
|
-
id: "
|
|
969
|
+
id: "0x1bf5a8ce77050d8052549d743e16b469f15aa6b81b752b78b6ebb65179665f5a",
|
|
911
970
|
object: "0x5658d4bf5ddcba27e4337b4262108b3ad1716643cac8c2054ac341538adc72ec",
|
|
912
971
|
adminCap: "0xc5dc06b9074291259f2cac460c940012c781c4430e42125c541cc43101c3bcbd",
|
|
913
|
-
referralBindings: "
|
|
914
|
-
bindingTableId: "
|
|
915
|
-
referralRevenuePool: "
|
|
972
|
+
referralBindings: "0xcf184487782bed962bf678001efe775d31fb94b9992333a57594cf15d79d5ced",
|
|
973
|
+
bindingTableId: "0x41a50e258c0a266ce84e0e1a618dbf70b878cc943909e613089a50afcceb2bc0",
|
|
974
|
+
referralRevenuePool: "0xc24e3e5e37032f29a3dd91a9a1f057af8821b7e6c148e9683900ac8b6d30f0c6",
|
|
916
975
|
revenueTableId: "0x595baa3654c297bff84ab7786a2d250f019cefc66e8df8e89fd9d41e02bd30dd",
|
|
917
|
-
referralTiers: "
|
|
976
|
+
referralTiers: "0x144350f3db9b46d11b140084cd54e6de0b9c3b8d265ce8059b51d0ef58ea464b",
|
|
918
977
|
tiersTableId: "0xeac755a7a8b7798530905ac79e8c114f19d0f130f6eab012954f08faac29c75d",
|
|
919
978
|
// authorizedWitnessList:
|
|
920
979
|
// '0xf21b0ed043c9bb70842c0129159f4943dbcc3c9ef2f2f808af65f8be25cfd20e',
|
|
921
980
|
authorizedWitnessList: "0x9d6223dc52015b8a3986a573590ef2af8f1b8f3e4685513888c052f001b87e7f",
|
|
922
|
-
version: "
|
|
981
|
+
version: "0x3545849eb97723e676a476ec9d4fe5f2eb0eb2c6b78972851114fd4c7ed4639f"
|
|
923
982
|
},
|
|
924
983
|
vesca: {
|
|
925
|
-
id: "
|
|
926
|
-
object: "
|
|
984
|
+
id: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
|
|
985
|
+
object: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
|
|
927
986
|
adminCap: "0x8ffa76135c5b85c5fbd73a6448a4a733d826cb63a267ab817656acb77c72d4a5",
|
|
928
|
-
tableId: "
|
|
929
|
-
table: "
|
|
930
|
-
treasury: "
|
|
931
|
-
config: "
|
|
987
|
+
tableId: "0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",
|
|
988
|
+
table: "0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",
|
|
989
|
+
treasury: "0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",
|
|
990
|
+
config: "0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"
|
|
932
991
|
},
|
|
933
992
|
loyaltyProgram: {
|
|
934
993
|
id: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
|
|
@@ -937,27 +996,27 @@ var TEST_ADDRESSES = {
|
|
|
937
996
|
userRewardTableId: "0x748a80395849ed37db1b0e14f2ab5d1d96458d2359ab3a84eb079d0f4ac7cf2e"
|
|
938
997
|
},
|
|
939
998
|
scoin: {
|
|
940
|
-
id: "
|
|
999
|
+
id: "0x773dab39c90fe05439b06a2d061795e52a974ff92c2aef90b2ee467acf7f33c8",
|
|
941
1000
|
coins: {
|
|
942
1001
|
ssui: {
|
|
943
|
-
coinType: "
|
|
944
|
-
treasury: "
|
|
1002
|
+
coinType: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
|
|
1003
|
+
treasury: "0x0e499640a12c38dd9cc44532f5bc5fd1b6da86d2f9a8810357250f4b26e9e5c7"
|
|
945
1004
|
},
|
|
946
1005
|
scetus: {
|
|
947
1006
|
coinType: "0x8b71e6d323ed78515af2bead13bf3d0da1562ba4a99234eb7c4f14fd39ef0427::scallop_cetus::SCALLOP_CETUS",
|
|
948
1007
|
treasury: "0xd786f4b2d26278cc7911a3445b1b085eab60f269ef9dbb6b87e803d52f155003"
|
|
949
1008
|
},
|
|
950
1009
|
ssca: {
|
|
951
|
-
coinType: "
|
|
952
|
-
treasury: "
|
|
1010
|
+
coinType: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
|
|
1011
|
+
treasury: "0x5f1c5de1df7341075d119570269b7b452af50afe8363080638f1ae29a554c038"
|
|
953
1012
|
},
|
|
954
1013
|
swusdc: {
|
|
955
|
-
coinType: "
|
|
956
|
-
treasury: "
|
|
1014
|
+
coinType: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
|
|
1015
|
+
treasury: "0x471fbab72578bab577263006fe32543b6e76153fffa2bef69affe4bc4934258f"
|
|
957
1016
|
},
|
|
958
1017
|
swusdt: {
|
|
959
|
-
coinType: "
|
|
960
|
-
treasury: "
|
|
1018
|
+
coinType: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
|
|
1019
|
+
treasury: "0x921a4ed4bb4b4f11f51a462c83f4c0f6b60a90e441d1bc0d26d6fd893146bf4d"
|
|
961
1020
|
},
|
|
962
1021
|
sweth: {
|
|
963
1022
|
coinType: "0x27d54f43e3eda701be56b82e5756e41c84467cd202f5cf713d5f9e45a9f1b6bc::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
|
|
@@ -973,7 +1032,11 @@ var TEST_ADDRESSES = {
|
|
|
973
1032
|
},
|
|
974
1033
|
svsui: {
|
|
975
1034
|
coinType: "0x97023a317320c4498cc4cd239dd02fd30c28246e5e8f81325d63f2bd8d70f6b3::scallop_v_sui::SCALLOP_V_SUI",
|
|
976
|
-
treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6
|
|
1035
|
+
treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6"
|
|
1036
|
+
},
|
|
1037
|
+
ssbeth: {
|
|
1038
|
+
coinType: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
|
|
1039
|
+
treasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed"
|
|
977
1040
|
}
|
|
978
1041
|
}
|
|
979
1042
|
}
|
|
@@ -2677,23 +2740,148 @@ var supplyLimitZod = import_zod.z.object({
|
|
|
2677
2740
|
value: import_zod.z.string()
|
|
2678
2741
|
})
|
|
2679
2742
|
});
|
|
2680
|
-
var
|
|
2743
|
+
var supplyLimitKeyType = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
|
|
2681
2744
|
var getSupplyLimit = async (utils, poolName) => {
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2745
|
+
try {
|
|
2746
|
+
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
2747
|
+
const marketObject = utils.address.get("core.market");
|
|
2748
|
+
if (!marketObject)
|
|
2749
|
+
return null;
|
|
2750
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2751
|
+
parentId: marketObject,
|
|
2752
|
+
name: {
|
|
2753
|
+
type: supplyLimitKeyType,
|
|
2754
|
+
value: poolCoinType
|
|
2755
|
+
}
|
|
2756
|
+
});
|
|
2757
|
+
const parsedData = supplyLimitZod.safeParse(object?.data?.content);
|
|
2758
|
+
if (!parsedData.success)
|
|
2759
|
+
return null;
|
|
2760
|
+
return parsedData.data.fields.value;
|
|
2761
|
+
} catch (e) {
|
|
2762
|
+
console.error(`Error in getSupplyLimit for ${poolName}: ${e.message}`);
|
|
2763
|
+
return "0";
|
|
2764
|
+
}
|
|
2765
|
+
};
|
|
2766
|
+
|
|
2767
|
+
// src/queries/isolatedAssetQuery.ts
|
|
2768
|
+
var import_zod2 = require("zod");
|
|
2769
|
+
var isolatedAssetZod = import_zod2.z.object({
|
|
2770
|
+
dataType: import_zod2.z.string(),
|
|
2771
|
+
type: import_zod2.z.string(),
|
|
2772
|
+
hasPublicTransfer: import_zod2.z.boolean(),
|
|
2773
|
+
fields: import_zod2.z.object({
|
|
2774
|
+
id: import_zod2.z.object({
|
|
2775
|
+
id: import_zod2.z.string()
|
|
2776
|
+
}),
|
|
2777
|
+
name: import_zod2.z.object({
|
|
2778
|
+
type: import_zod2.z.string()
|
|
2779
|
+
}),
|
|
2780
|
+
value: import_zod2.z.boolean()
|
|
2781
|
+
})
|
|
2782
|
+
});
|
|
2783
|
+
var isolatedAssetKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
|
|
2784
|
+
var getIsolatedAssets = async (address) => {
|
|
2785
|
+
try {
|
|
2786
|
+
const marketObject = address.get("core.market");
|
|
2787
|
+
const isolatedAssets = [];
|
|
2788
|
+
if (!marketObject)
|
|
2789
|
+
return isolatedAssets;
|
|
2790
|
+
let hasNextPage = false;
|
|
2791
|
+
let nextCursor = null;
|
|
2792
|
+
const isIsolatedDynamicField = (dynamicField) => {
|
|
2793
|
+
return dynamicField.name.type === isolatedAssetKeyType;
|
|
2794
|
+
};
|
|
2795
|
+
do {
|
|
2796
|
+
const response = await address.cache.queryGetDynamicFields({
|
|
2797
|
+
parentId: marketObject,
|
|
2798
|
+
cursor: nextCursor,
|
|
2799
|
+
limit: 10
|
|
2800
|
+
});
|
|
2801
|
+
if (!response)
|
|
2802
|
+
break;
|
|
2803
|
+
const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
|
|
2804
|
+
isolatedAssets.push(...isolatedAssetCoinTypes);
|
|
2805
|
+
if (response && response.hasNextPage && response.nextCursor) {
|
|
2806
|
+
hasNextPage = true;
|
|
2807
|
+
nextCursor = response.nextCursor;
|
|
2808
|
+
} else {
|
|
2809
|
+
hasNextPage = false;
|
|
2810
|
+
}
|
|
2811
|
+
} while (hasNextPage);
|
|
2812
|
+
return isolatedAssets;
|
|
2813
|
+
} catch (e) {
|
|
2814
|
+
console.error(e);
|
|
2815
|
+
return [];
|
|
2816
|
+
}
|
|
2817
|
+
};
|
|
2818
|
+
var isIsolatedAsset = async (utils, coinName) => {
|
|
2819
|
+
try {
|
|
2820
|
+
const marketObject = utils.address.get("core.market");
|
|
2821
|
+
const cachedData = utils.address.cache.queryClient.getQueryData([
|
|
2822
|
+
"getDynamicFields",
|
|
2823
|
+
marketObject
|
|
2824
|
+
]);
|
|
2825
|
+
if (cachedData) {
|
|
2826
|
+
const coinType2 = utils.parseCoinType(coinName);
|
|
2827
|
+
return cachedData.includes(coinType2);
|
|
2691
2828
|
}
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
2695
|
-
|
|
2696
|
-
|
|
2829
|
+
const coinType = utils.parseCoinType(coinName).slice(2);
|
|
2830
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2831
|
+
parentId: marketObject,
|
|
2832
|
+
name: {
|
|
2833
|
+
type: isolatedAssetKeyType,
|
|
2834
|
+
value: coinType
|
|
2835
|
+
}
|
|
2836
|
+
});
|
|
2837
|
+
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
2838
|
+
if (!parsedData.success)
|
|
2839
|
+
return false;
|
|
2840
|
+
return parsedData.data.fields.value;
|
|
2841
|
+
} catch (e) {
|
|
2842
|
+
console.error(e);
|
|
2843
|
+
return false;
|
|
2844
|
+
}
|
|
2845
|
+
};
|
|
2846
|
+
|
|
2847
|
+
// src/queries/borrowLimitQuery.ts
|
|
2848
|
+
var import_zod3 = require("zod");
|
|
2849
|
+
var borrowLimitZod = import_zod3.z.object({
|
|
2850
|
+
dataType: import_zod3.z.string(),
|
|
2851
|
+
type: import_zod3.z.string(),
|
|
2852
|
+
hasPublicTransfer: import_zod3.z.boolean(),
|
|
2853
|
+
fields: import_zod3.z.object({
|
|
2854
|
+
id: import_zod3.z.object({
|
|
2855
|
+
id: import_zod3.z.string()
|
|
2856
|
+
}),
|
|
2857
|
+
name: import_zod3.z.object({
|
|
2858
|
+
type: import_zod3.z.string()
|
|
2859
|
+
}),
|
|
2860
|
+
value: import_zod3.z.string()
|
|
2861
|
+
})
|
|
2862
|
+
});
|
|
2863
|
+
var borrowLimitKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
|
|
2864
|
+
var getBorrowLimit = async (utils, poolName) => {
|
|
2865
|
+
try {
|
|
2866
|
+
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
2867
|
+
const marketObject = utils.address.get("core.market");
|
|
2868
|
+
if (!marketObject)
|
|
2869
|
+
return null;
|
|
2870
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2871
|
+
parentId: marketObject,
|
|
2872
|
+
name: {
|
|
2873
|
+
type: borrowLimitKeyType,
|
|
2874
|
+
value: poolCoinType
|
|
2875
|
+
}
|
|
2876
|
+
});
|
|
2877
|
+
const parsedData = borrowLimitZod.safeParse(object?.data?.content);
|
|
2878
|
+
if (!parsedData.success)
|
|
2879
|
+
return null;
|
|
2880
|
+
return parsedData.data.fields.value;
|
|
2881
|
+
} catch (e) {
|
|
2882
|
+
console.error(`Error in getBorrowLimit for ${poolName}: ${e.message}`);
|
|
2883
|
+
return "0";
|
|
2884
|
+
}
|
|
2697
2885
|
};
|
|
2698
2886
|
|
|
2699
2887
|
// src/queries/coreQuery.ts
|
|
@@ -2762,6 +2950,9 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2762
2950
|
const maxSupplyCoin = (0, import_bignumber3.default)(
|
|
2763
2951
|
await getSupplyLimit(query.utils, poolCoinName) ?? "0"
|
|
2764
2952
|
).shiftedBy(-coinDecimal).toNumber();
|
|
2953
|
+
const maxBorrowCoin = (0, import_bignumber3.default)(
|
|
2954
|
+
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
2955
|
+
).shiftedBy(-coinDecimal).toNumber();
|
|
2765
2956
|
pools[poolCoinName] = {
|
|
2766
2957
|
coinName: poolCoinName,
|
|
2767
2958
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
@@ -2780,9 +2971,10 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2780
2971
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
2781
2972
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2782
2973
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2783
|
-
|
|
2784
|
-
isIsolated: false,
|
|
2974
|
+
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2975
|
+
// isIsolated: false,
|
|
2785
2976
|
maxSupplyCoin,
|
|
2977
|
+
maxBorrowCoin,
|
|
2786
2978
|
...calculatedMarketPoolData
|
|
2787
2979
|
};
|
|
2788
2980
|
}
|
|
@@ -2820,6 +3012,7 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2820
3012
|
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
2821
3013
|
liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
|
|
2822
3014
|
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3015
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
2823
3016
|
...calculatedMarketCollateralData
|
|
2824
3017
|
};
|
|
2825
3018
|
}
|
|
@@ -2867,85 +3060,76 @@ var getMarketPools = async (query, poolCoinNames = [...SUPPORT_POOLS], indexer =
|
|
|
2867
3060
|
return marketPools;
|
|
2868
3061
|
};
|
|
2869
3062
|
var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
|
|
2870
|
-
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
|
|
2874
|
-
|
|
2875
|
-
|
|
2876
|
-
|
|
2877
|
-
|
|
2878
|
-
|
|
2879
|
-
|
|
2880
|
-
|
|
2881
|
-
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
name: coinType.substring(2)
|
|
2899
|
-
}
|
|
3063
|
+
try {
|
|
3064
|
+
coinPrice = coinPrice || (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
|
|
3065
|
+
if (indexer) {
|
|
3066
|
+
const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
|
|
3067
|
+
if (!marketPoolIndexer) {
|
|
3068
|
+
return void 0;
|
|
3069
|
+
}
|
|
3070
|
+
marketPoolIndexer.coinPrice = coinPrice ?? marketPoolIndexer.coinPrice;
|
|
3071
|
+
marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
|
|
3072
|
+
marketPoolIndexer.coinName
|
|
3073
|
+
);
|
|
3074
|
+
return marketPoolIndexer;
|
|
3075
|
+
}
|
|
3076
|
+
const marketId = query.address.get("core.market");
|
|
3077
|
+
marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
|
|
3078
|
+
showContent: true
|
|
3079
|
+
}))?.data;
|
|
3080
|
+
if (!(marketObject && marketObject.content?.dataType === "moveObject"))
|
|
3081
|
+
throw new Error(`Failed to fetch marketObject`);
|
|
3082
|
+
const fields = marketObject.content.fields;
|
|
3083
|
+
const coinType = query.utils.parseCoinType(poolCoinName);
|
|
3084
|
+
const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
|
|
3085
|
+
const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3086
|
+
parentId: balanceSheetParentId,
|
|
3087
|
+
name: {
|
|
3088
|
+
type: "0x1::type_name::TypeName",
|
|
3089
|
+
value: {
|
|
3090
|
+
name: coinType.substring(2)
|
|
2900
3091
|
}
|
|
2901
|
-
});
|
|
2902
|
-
if (!balanceSheetDynamicFieldObjectResponse)
|
|
2903
|
-
throw new Error(
|
|
2904
|
-
`Failed to fetch balanceSheetDynamicFieldObjectResponse for ${poolCoinName}`
|
|
2905
|
-
);
|
|
2906
|
-
const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse.data;
|
|
2907
|
-
if (balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content) {
|
|
2908
|
-
const dynamicFields = balanceSheetDynamicFieldObject.content.fields;
|
|
2909
|
-
balanceSheet = dynamicFields.value.fields;
|
|
2910
3092
|
}
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
3093
|
+
});
|
|
3094
|
+
const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
|
|
3095
|
+
if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
|
|
3096
|
+
throw new Error(
|
|
3097
|
+
`Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
|
|
3098
|
+
);
|
|
3099
|
+
const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
|
|
3100
|
+
const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
|
|
3101
|
+
const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3102
|
+
parentId: borrowIndexParentId,
|
|
3103
|
+
name: {
|
|
3104
|
+
type: "0x1::type_name::TypeName",
|
|
3105
|
+
value: {
|
|
3106
|
+
name: coinType.substring(2)
|
|
2919
3107
|
}
|
|
2920
|
-
});
|
|
2921
|
-
if (!borrowIndexDynamicFieldObjectResponse)
|
|
2922
|
-
throw new Error(
|
|
2923
|
-
`Failed to fetch borrowIndexDynamicFieldObjectResponse for ${poolCoinName}`
|
|
2924
|
-
);
|
|
2925
|
-
const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse.data;
|
|
2926
|
-
if (borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content) {
|
|
2927
|
-
const dynamicFields = borrowIndexDynamicFieldObject.content.fields;
|
|
2928
|
-
borrowIndex = dynamicFields.value.fields;
|
|
2929
3108
|
}
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
|
|
3109
|
+
});
|
|
3110
|
+
const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
|
|
3111
|
+
if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
|
|
3112
|
+
throw new Error(
|
|
3113
|
+
`Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
|
|
3114
|
+
);
|
|
3115
|
+
const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
|
|
3116
|
+
const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
|
|
3117
|
+
const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3118
|
+
parentId: interestModelParentId,
|
|
3119
|
+
name: {
|
|
3120
|
+
type: "0x1::type_name::TypeName",
|
|
3121
|
+
value: {
|
|
3122
|
+
name: coinType.substring(2)
|
|
2938
3123
|
}
|
|
2939
|
-
});
|
|
2940
|
-
if (!interestModelDynamicFieldObjectResponse)
|
|
2941
|
-
throw new Error(
|
|
2942
|
-
`Failed to fetch interestModelDynamicFieldObjectResponse for ${poolCoinName}`
|
|
2943
|
-
);
|
|
2944
|
-
const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse.data;
|
|
2945
|
-
if (interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content) {
|
|
2946
|
-
const dynamicFields = interestModelDynamicFieldObject.content.fields;
|
|
2947
|
-
interestModel = dynamicFields.value.fields;
|
|
2948
3124
|
}
|
|
3125
|
+
});
|
|
3126
|
+
const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse?.data;
|
|
3127
|
+
if (!(interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content))
|
|
3128
|
+
throw new Error(
|
|
3129
|
+
`Failed to fetch interestModelDynamicFieldObject for ${poolCoinName}: ${interestModelDynamicFieldObject}`
|
|
3130
|
+
);
|
|
3131
|
+
const interestModel = interestModelDynamicFieldObject.content.fields.value.fields;
|
|
3132
|
+
const getBorrowFee = async () => {
|
|
2949
3133
|
const borrowFeeDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
2950
3134
|
parentId: marketId,
|
|
2951
3135
|
name: {
|
|
@@ -2957,18 +3141,11 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2957
3141
|
}
|
|
2958
3142
|
}
|
|
2959
3143
|
});
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
if (borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content) {
|
|
2966
|
-
const dynamicFields = borrowFeeDynamicFieldObject.content.fields;
|
|
2967
|
-
borrowFeeRate = dynamicFields.value.fields;
|
|
2968
|
-
}
|
|
2969
|
-
}
|
|
2970
|
-
}
|
|
2971
|
-
if (balanceSheet && borrowIndex && interestModel && (USE_TEST_ADDRESS || borrowFeeRate)) {
|
|
3144
|
+
const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
|
|
3145
|
+
if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
|
|
3146
|
+
return { value: "0" };
|
|
3147
|
+
return borrowFeeDynamicFieldObject.content.fields.value.fields;
|
|
3148
|
+
};
|
|
2972
3149
|
const parsedMarketPoolData = parseOriginMarketPoolData({
|
|
2973
3150
|
type: interestModel.type.fields,
|
|
2974
3151
|
maxBorrowRate: interestModel.max_borrow_rate.fields,
|
|
@@ -2982,7 +3159,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2982
3159
|
reserve: balanceSheet.revenue,
|
|
2983
3160
|
reserveFactor: interestModel.revenue_factor.fields,
|
|
2984
3161
|
borrowWeight: interestModel.borrow_weight.fields,
|
|
2985
|
-
borrowFeeRate:
|
|
3162
|
+
borrowFeeRate: await getBorrowFee(),
|
|
2986
3163
|
baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
|
|
2987
3164
|
borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
|
|
2988
3165
|
borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
|
|
@@ -2998,7 +3175,10 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2998
3175
|
const maxSupplyCoin = (0, import_bignumber3.default)(
|
|
2999
3176
|
await getSupplyLimit(query.utils, poolCoinName) ?? "0"
|
|
3000
3177
|
).shiftedBy(-coinDecimal).toNumber();
|
|
3001
|
-
|
|
3178
|
+
const maxBorrowCoin = (0, import_bignumber3.default)(
|
|
3179
|
+
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
3180
|
+
).shiftedBy(-coinDecimal).toNumber();
|
|
3181
|
+
return {
|
|
3002
3182
|
coinName: poolCoinName,
|
|
3003
3183
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
3004
3184
|
coinType: query.utils.parseCoinType(poolCoinName),
|
|
@@ -3017,12 +3197,13 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
3017
3197
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
3018
3198
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
3019
3199
|
maxSupplyCoin,
|
|
3020
|
-
|
|
3021
|
-
isIsolated:
|
|
3200
|
+
maxBorrowCoin,
|
|
3201
|
+
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
3022
3202
|
...calculatedMarketPoolData
|
|
3023
3203
|
};
|
|
3204
|
+
} catch (e) {
|
|
3205
|
+
console.error(e.message);
|
|
3024
3206
|
}
|
|
3025
|
-
return marketPool;
|
|
3026
3207
|
};
|
|
3027
3208
|
var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
|
|
3028
3209
|
const marketId = query.address.get("core.market");
|
|
@@ -3071,85 +3252,76 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
|
|
|
3071
3252
|
);
|
|
3072
3253
|
return marketCollateralIndexer;
|
|
3073
3254
|
}
|
|
3074
|
-
let marketCollateral;
|
|
3075
|
-
let riskModel;
|
|
3076
|
-
let collateralStat;
|
|
3077
3255
|
const marketId = query.address.get("core.market");
|
|
3078
3256
|
marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
|
|
3079
3257
|
showContent: true
|
|
3080
3258
|
}))?.data;
|
|
3081
|
-
if (marketObject)
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
}
|
|
3093
|
-
}
|
|
3094
|
-
});
|
|
3095
|
-
if (!riskModelDynamicFieldObjectResponse)
|
|
3096
|
-
return void 0;
|
|
3097
|
-
const riskModelDynamicFieldObject = riskModelDynamicFieldObjectResponse.data;
|
|
3098
|
-
if (riskModelDynamicFieldObject && riskModelDynamicFieldObject.content && "fields" in riskModelDynamicFieldObject.content) {
|
|
3099
|
-
const dynamicFields = riskModelDynamicFieldObject.content.fields;
|
|
3100
|
-
riskModel = dynamicFields.value.fields;
|
|
3259
|
+
if (!(marketObject && marketObject.content?.dataType === "moveObject"))
|
|
3260
|
+
throw new Error(`Failed to fetch marketObject`);
|
|
3261
|
+
const fields = marketObject.content.fields;
|
|
3262
|
+
const coinType = query.utils.parseCoinType(collateralCoinName);
|
|
3263
|
+
const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
|
|
3264
|
+
const riskModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3265
|
+
parentId: riskModelParentId,
|
|
3266
|
+
name: {
|
|
3267
|
+
type: "0x1::type_name::TypeName",
|
|
3268
|
+
value: {
|
|
3269
|
+
name: coinType.substring(2)
|
|
3101
3270
|
}
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
|
|
3117
|
-
collateralStat = dynamicFields.value.fields;
|
|
3271
|
+
}
|
|
3272
|
+
});
|
|
3273
|
+
const riskModelDynamicFieldObject = riskModelDynamicFieldObjectResponse?.data;
|
|
3274
|
+
if (!(riskModelDynamicFieldObject && riskModelDynamicFieldObject.content && "fields" in riskModelDynamicFieldObject.content))
|
|
3275
|
+
throw new Error(
|
|
3276
|
+
`Failed to fetch riskModelDynamicFieldObject for ${riskModelDynamicFieldObjectResponse?.error?.code.toString()}: `
|
|
3277
|
+
);
|
|
3278
|
+
const riskModel = riskModelDynamicFieldObject.content.fields.value.fields;
|
|
3279
|
+
const collateralStatParentId = fields.collateral_stats.fields.table.fields.id.id;
|
|
3280
|
+
const collateralStatDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3281
|
+
parentId: collateralStatParentId,
|
|
3282
|
+
name: {
|
|
3283
|
+
type: "0x1::type_name::TypeName",
|
|
3284
|
+
value: {
|
|
3285
|
+
name: coinType.substring(2)
|
|
3118
3286
|
}
|
|
3119
3287
|
}
|
|
3120
|
-
}
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
liquidationFactor: riskModel.liquidation_factor.fields,
|
|
3126
|
-
liquidationDiscount: riskModel.liquidation_discount.fields,
|
|
3127
|
-
liquidationPanelty: riskModel.liquidation_penalty.fields,
|
|
3128
|
-
liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
|
|
3129
|
-
maxCollateralAmount: riskModel.max_collateral_amount,
|
|
3130
|
-
totalCollateralAmount: collateralStat.amount
|
|
3131
|
-
});
|
|
3132
|
-
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
3133
|
-
query.utils,
|
|
3134
|
-
parsedMarketCollateralData
|
|
3288
|
+
});
|
|
3289
|
+
const collateralStatDynamicFieldObject = collateralStatDynamicFieldObjectResponse?.data;
|
|
3290
|
+
if (!(collateralStatDynamicFieldObject && collateralStatDynamicFieldObject.content && "fields" in collateralStatDynamicFieldObject.content))
|
|
3291
|
+
throw new Error(
|
|
3292
|
+
`Failed to fetch collateralStatDynamicFieldObject for ${collateralCoinName}: ${collateralStatDynamicFieldObjectResponse?.error?.code.toString()}`
|
|
3135
3293
|
);
|
|
3136
|
-
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
|
|
3140
|
-
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3294
|
+
const collateralStat = collateralStatDynamicFieldObject.content.fields.value.fields;
|
|
3295
|
+
const parsedMarketCollateralData = parseOriginMarketCollateralData({
|
|
3296
|
+
type: riskModel.type.fields,
|
|
3297
|
+
collateralFactor: riskModel.collateral_factor.fields,
|
|
3298
|
+
liquidationFactor: riskModel.liquidation_factor.fields,
|
|
3299
|
+
liquidationDiscount: riskModel.liquidation_discount.fields,
|
|
3300
|
+
liquidationPanelty: riskModel.liquidation_penalty.fields,
|
|
3301
|
+
liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
|
|
3302
|
+
maxCollateralAmount: riskModel.max_collateral_amount,
|
|
3303
|
+
totalCollateralAmount: collateralStat.amount
|
|
3304
|
+
});
|
|
3305
|
+
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
3306
|
+
query.utils,
|
|
3307
|
+
parsedMarketCollateralData
|
|
3308
|
+
);
|
|
3309
|
+
return {
|
|
3310
|
+
coinName: collateralCoinName,
|
|
3311
|
+
symbol: query.utils.parseSymbol(collateralCoinName),
|
|
3312
|
+
coinType: query.utils.parseCoinType(collateralCoinName),
|
|
3313
|
+
marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
|
|
3314
|
+
coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
|
|
3315
|
+
coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
|
|
3316
|
+
coinPrice: coinPrice ?? 0,
|
|
3317
|
+
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
3318
|
+
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
3319
|
+
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
3320
|
+
liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
|
|
3321
|
+
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3322
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
3323
|
+
...calculatedMarketCollateralData
|
|
3324
|
+
};
|
|
3153
3325
|
};
|
|
3154
3326
|
var getObligations = async ({
|
|
3155
3327
|
address
|
|
@@ -3327,98 +3499,18 @@ var getFlashLoanFees = async (query, assetNames) => {
|
|
|
3327
3499
|
);
|
|
3328
3500
|
};
|
|
3329
3501
|
|
|
3330
|
-
// src/queries/isolatedAssetQuery.ts
|
|
3331
|
-
var import_zod2 = require("zod");
|
|
3332
|
-
var isolatedAssetZod = import_zod2.z.object({
|
|
3333
|
-
dataType: import_zod2.z.string(),
|
|
3334
|
-
type: import_zod2.z.string(),
|
|
3335
|
-
hasPublicTransfer: import_zod2.z.boolean(),
|
|
3336
|
-
fields: import_zod2.z.object({
|
|
3337
|
-
id: import_zod2.z.object({
|
|
3338
|
-
id: import_zod2.z.string()
|
|
3339
|
-
}),
|
|
3340
|
-
name: import_zod2.z.object({
|
|
3341
|
-
type: import_zod2.z.string()
|
|
3342
|
-
}),
|
|
3343
|
-
value: import_zod2.z.boolean()
|
|
3344
|
-
})
|
|
3345
|
-
});
|
|
3346
|
-
var ISOLATED_ASSET_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::IsolatedAssetKey";
|
|
3347
|
-
var getIsolatedAssets = async (address) => {
|
|
3348
|
-
try {
|
|
3349
|
-
const marketObject = address.get("core.market");
|
|
3350
|
-
const isolatedAssets = [];
|
|
3351
|
-
if (!marketObject)
|
|
3352
|
-
return isolatedAssets;
|
|
3353
|
-
let hasNextPage = false;
|
|
3354
|
-
let nextCursor = null;
|
|
3355
|
-
const isIsolatedDynamicField = (dynamicField) => {
|
|
3356
|
-
return dynamicField.name.type === ISOLATED_ASSET_KEY;
|
|
3357
|
-
};
|
|
3358
|
-
do {
|
|
3359
|
-
const response = await address.cache.queryGetDynamicFields({
|
|
3360
|
-
parentId: marketObject,
|
|
3361
|
-
cursor: nextCursor,
|
|
3362
|
-
limit: 10
|
|
3363
|
-
});
|
|
3364
|
-
if (!response)
|
|
3365
|
-
break;
|
|
3366
|
-
const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
|
|
3367
|
-
isolatedAssets.push(...isolatedAssetCoinTypes);
|
|
3368
|
-
if (response && response.hasNextPage && response.nextCursor) {
|
|
3369
|
-
hasNextPage = true;
|
|
3370
|
-
nextCursor = response.nextCursor;
|
|
3371
|
-
} else {
|
|
3372
|
-
hasNextPage = false;
|
|
3373
|
-
}
|
|
3374
|
-
} while (hasNextPage);
|
|
3375
|
-
return isolatedAssets;
|
|
3376
|
-
} catch (e) {
|
|
3377
|
-
console.error(e);
|
|
3378
|
-
return [];
|
|
3379
|
-
}
|
|
3380
|
-
};
|
|
3381
|
-
var isIsolatedAsset = async (utils, coinName) => {
|
|
3382
|
-
try {
|
|
3383
|
-
const marketObject = utils.address.get("core.market");
|
|
3384
|
-
const cachedData = utils.address.cache.queryClient.getQueryData([
|
|
3385
|
-
"getDynamicFields",
|
|
3386
|
-
marketObject
|
|
3387
|
-
]);
|
|
3388
|
-
if (cachedData) {
|
|
3389
|
-
const coinType2 = utils.parseCoinType(coinName);
|
|
3390
|
-
return cachedData.includes(coinType2);
|
|
3391
|
-
}
|
|
3392
|
-
const coinType = utils.parseCoinType(coinName).slice(2);
|
|
3393
|
-
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
3394
|
-
parentId: marketObject,
|
|
3395
|
-
name: {
|
|
3396
|
-
type: ISOLATED_ASSET_KEY,
|
|
3397
|
-
value: coinType
|
|
3398
|
-
}
|
|
3399
|
-
});
|
|
3400
|
-
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
3401
|
-
if (!parsedData.success)
|
|
3402
|
-
return false;
|
|
3403
|
-
return parsedData.data.fields.value;
|
|
3404
|
-
} catch (e) {
|
|
3405
|
-
console.error(e);
|
|
3406
|
-
return false;
|
|
3407
|
-
}
|
|
3408
|
-
};
|
|
3409
|
-
|
|
3410
3502
|
// src/queries/loyaltyProgramQuery.ts
|
|
3411
3503
|
var import_bignumber4 = __toESM(require("bignumber.js"));
|
|
3412
|
-
var
|
|
3413
|
-
var rewardPoolFieldsZod =
|
|
3414
|
-
balance:
|
|
3415
|
-
enable_claim:
|
|
3504
|
+
var import_zod4 = require("zod");
|
|
3505
|
+
var rewardPoolFieldsZod = import_zod4.z.object({
|
|
3506
|
+
balance: import_zod4.z.string(),
|
|
3507
|
+
enable_claim: import_zod4.z.boolean()
|
|
3416
3508
|
}).transform((value) => ({
|
|
3417
3509
|
totalPoolReward: (0, import_bignumber4.default)(value.balance).shiftedBy(-9).toNumber(),
|
|
3418
3510
|
isClaimEnabled: value.enable_claim
|
|
3419
3511
|
}));
|
|
3420
|
-
var userRewardFieldsZod =
|
|
3421
|
-
value:
|
|
3512
|
+
var userRewardFieldsZod = import_zod4.z.object({
|
|
3513
|
+
value: import_zod4.z.string()
|
|
3422
3514
|
}).transform((value) => (0, import_bignumber4.default)(value.value).shiftedBy(-9).toNumber());
|
|
3423
3515
|
var getLoyaltyProgramInformations = async (query, veScaKey) => {
|
|
3424
3516
|
const rewardPool = query.address.get("loyaltyProgram.rewardPool");
|
|
@@ -4026,10 +4118,12 @@ var getPythPrices = async ({
|
|
|
4026
4118
|
const pythPriceFeed = address.get(
|
|
4027
4119
|
`core.coins.${assetCoinName}.oracle.pyth.feedObject`
|
|
4028
4120
|
);
|
|
4029
|
-
if (
|
|
4030
|
-
prev[pythPriceFeed]
|
|
4031
|
-
|
|
4032
|
-
|
|
4121
|
+
if (pythPriceFeed) {
|
|
4122
|
+
if (!prev[pythPriceFeed]) {
|
|
4123
|
+
prev[pythPriceFeed] = [assetCoinName];
|
|
4124
|
+
} else {
|
|
4125
|
+
prev[pythPriceFeed].push(assetCoinName);
|
|
4126
|
+
}
|
|
4033
4127
|
}
|
|
4034
4128
|
return prev;
|
|
4035
4129
|
},
|
|
@@ -4227,7 +4321,7 @@ var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPr
|
|
|
4227
4321
|
const coinName = query.utils.parseCoinName(marketCoinName);
|
|
4228
4322
|
marketPool = marketPool || await query.getMarketPool(coinName, indexer);
|
|
4229
4323
|
if (!marketPool) {
|
|
4230
|
-
throw new Error(`
|
|
4324
|
+
throw new Error(`Failed to fetch marketPool for ${marketCoinName}`);
|
|
4231
4325
|
}
|
|
4232
4326
|
const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
|
|
4233
4327
|
const rewardPoolId = query.address.get(
|
|
@@ -4501,7 +4595,7 @@ var getStakeRewardPool = async ({
|
|
|
4501
4595
|
var import_bignumber7 = __toESM(require("bignumber.js"));
|
|
4502
4596
|
var import_sui_kit3 = require("@scallop-io/sui-kit");
|
|
4503
4597
|
var import_bcs2 = require("@mysten/sui/bcs");
|
|
4504
|
-
var
|
|
4598
|
+
var import_zod5 = require("zod");
|
|
4505
4599
|
var import_assert2 = __toESM(require("assert"));
|
|
4506
4600
|
var getVescaKeys = async (utils, ownerAddress) => {
|
|
4507
4601
|
const owner = ownerAddress || utils.suiKit.currentAddress();
|
|
@@ -4550,10 +4644,10 @@ var getVeScas = async ({
|
|
|
4550
4644
|
}
|
|
4551
4645
|
return result;
|
|
4552
4646
|
};
|
|
4553
|
-
var SuiObjectRefZod =
|
|
4554
|
-
objectId:
|
|
4555
|
-
digest:
|
|
4556
|
-
version:
|
|
4647
|
+
var SuiObjectRefZod = import_zod5.z.object({
|
|
4648
|
+
objectId: import_zod5.z.string(),
|
|
4649
|
+
digest: import_zod5.z.string(),
|
|
4650
|
+
version: import_zod5.z.string()
|
|
4557
4651
|
});
|
|
4558
4652
|
var getVeSca = async (utils, veScaKey) => {
|
|
4559
4653
|
const tableId = utils.address.get(`vesca.tableId`);
|
|
@@ -4743,10 +4837,10 @@ var ScallopUtils = class {
|
|
|
4743
4837
|
* @param address - ScallopAddress instance.
|
|
4744
4838
|
*/
|
|
4745
4839
|
async init(force = false, address) {
|
|
4746
|
-
if (
|
|
4747
|
-
await this.address.read();
|
|
4748
|
-
} else {
|
|
4840
|
+
if (address && !this.address)
|
|
4749
4841
|
this.address = address;
|
|
4842
|
+
if (force || !this.address.getAddresses()) {
|
|
4843
|
+
await this.address.read();
|
|
4750
4844
|
}
|
|
4751
4845
|
}
|
|
4752
4846
|
/**
|
|
@@ -5032,9 +5126,7 @@ var ScallopUtils = class {
|
|
|
5032
5126
|
for (const endpoint of endpoints) {
|
|
5033
5127
|
const priceIdPairs = Array.from(failedRequests.values()).reduce(
|
|
5034
5128
|
(acc, coinName) => {
|
|
5035
|
-
const priceId = this.address.get(
|
|
5036
|
-
`core.coins.${coinName}.oracle.pyth.feed`
|
|
5037
|
-
);
|
|
5129
|
+
const priceId = this.address.get(`core.coins.${coinName}.oracle.pyth.feed`) ?? PYTH_FEED_IDS[coinName];
|
|
5038
5130
|
acc.push([coinName, priceId]);
|
|
5039
5131
|
return acc;
|
|
5040
5132
|
},
|
|
@@ -6997,11 +7089,12 @@ var ScallopQuery = class {
|
|
|
6997
7089
|
* @param address - ScallopAddress instance.
|
|
6998
7090
|
*/
|
|
6999
7091
|
async init(force = false, address) {
|
|
7000
|
-
if (
|
|
7001
|
-
await this.address.read();
|
|
7002
|
-
} else {
|
|
7092
|
+
if (address && !this.address) {
|
|
7003
7093
|
this.address = address;
|
|
7004
7094
|
}
|
|
7095
|
+
if (force || !this.address.getAddresses()) {
|
|
7096
|
+
await this.address.read();
|
|
7097
|
+
}
|
|
7005
7098
|
await this.utils.init(force, this.address);
|
|
7006
7099
|
}
|
|
7007
7100
|
/* ==================== Core Query Methods ==================== */
|
|
@@ -7463,11 +7556,17 @@ var ScallopQuery = class {
|
|
|
7463
7556
|
return await getFlashLoanFees(this, assetCoinNames);
|
|
7464
7557
|
}
|
|
7465
7558
|
/**
|
|
7466
|
-
* Get supply limit of
|
|
7559
|
+
* Get supply limit of lending pool
|
|
7467
7560
|
*/
|
|
7468
7561
|
async getPoolSupplyLimit(poolName) {
|
|
7469
7562
|
return await getSupplyLimit(this.utils, poolName);
|
|
7470
7563
|
}
|
|
7564
|
+
/**
|
|
7565
|
+
* Get borrow limit of borrow pool
|
|
7566
|
+
*/
|
|
7567
|
+
async getPoolBorrowLimit(poolName) {
|
|
7568
|
+
return await getBorrowLimit(this.utils, poolName);
|
|
7569
|
+
}
|
|
7471
7570
|
/**
|
|
7472
7571
|
* Get list of isolated assets
|
|
7473
7572
|
*/
|
|
@@ -7540,10 +7639,10 @@ var ScallopBuilder = class {
|
|
|
7540
7639
|
* @param address - ScallopAddress instance.
|
|
7541
7640
|
*/
|
|
7542
7641
|
async init(force = false, address) {
|
|
7543
|
-
if (
|
|
7544
|
-
await this.address.read();
|
|
7545
|
-
} else {
|
|
7642
|
+
if (address && !this.address)
|
|
7546
7643
|
this.address = address;
|
|
7644
|
+
if (force || !this.address.getAddresses()) {
|
|
7645
|
+
await this.address.read();
|
|
7547
7646
|
}
|
|
7548
7647
|
await this.query.init(force, this.address);
|
|
7549
7648
|
await this.utils.init(force, this.address);
|