@scallop-io/sui-scallop-sdk 1.4.1-alpha.1 → 1.4.2-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants/common.d.ts +4 -4
- package/dist/constants/enum.d.ts +2 -2
- package/dist/constants/poolAddress.d.ts +16 -4
- package/dist/constants/queryKeys.d.ts +2 -2
- package/dist/constants/tokenBucket.d.ts +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1314 -653
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1269 -609
- package/dist/index.mjs.map +1 -1
- package/dist/models/scallopBuilder.d.ts +2 -1
- package/dist/models/scallopCache.d.ts +2 -0
- package/dist/models/scallopQuery.d.ts +46 -20
- package/dist/models/scallopUtils.d.ts +5 -3
- package/dist/queries/borrowIncentiveQuery.d.ts +12 -0
- package/dist/queries/coreQuery.d.ts +18 -17
- package/dist/queries/index.d.ts +2 -0
- package/dist/queries/isolatedAssetQuery.d.ts +2 -2
- package/dist/queries/objectsQuery.d.ts +3 -0
- package/dist/queries/poolAddressesQuery.d.ts +18 -0
- package/dist/queries/portfolioQuery.d.ts +2 -0
- package/dist/queries/priceQuery.d.ts +4 -0
- package/dist/queries/sCoinQuery.d.ts +1 -1
- package/dist/queries/spoolQuery.d.ts +6 -2
- package/dist/test.d.ts +1 -0
- package/dist/types/builder/borrowIncentive.d.ts +5 -5
- package/dist/types/builder/core.d.ts +20 -16
- package/dist/types/builder/loyaltyProgram.d.ts +1 -1
- package/dist/types/builder/referral.d.ts +4 -4
- package/dist/types/builder/sCoin.d.ts +2 -2
- package/dist/types/builder/spool.d.ts +4 -4
- package/dist/types/builder/vesca.d.ts +6 -6
- package/dist/types/query/core.d.ts +22 -5
- package/dist/types/query/spool.d.ts +20 -0
- package/dist/types/utils.d.ts +7 -2
- package/dist/utils/core.d.ts +2 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/query.d.ts +1 -1
- package/dist/utils/util.d.ts +1 -0
- package/package.json +7 -7
- package/src/builders/borrowIncentiveBuilder.ts +28 -15
- package/src/builders/coreBuilder.ts +76 -49
- package/src/builders/loyaltyProgramBuilder.ts +4 -3
- package/src/builders/referralBuilder.ts +23 -10
- package/src/builders/sCoinBuilder.ts +8 -6
- package/src/builders/spoolBuilder.ts +21 -14
- package/src/builders/vescaBuilder.ts +23 -13
- package/src/constants/coinGecko.ts +2 -3
- package/src/constants/common.ts +5 -19
- package/src/constants/enum.ts +20 -35
- package/src/constants/poolAddress.ts +344 -19
- package/src/constants/pyth.ts +2 -3
- package/src/constants/queryKeys.ts +9 -5
- package/src/constants/testAddress.ts +42 -0
- package/src/constants/tokenBucket.ts +2 -2
- package/src/index.ts +1 -0
- package/src/models/scallopBuilder.ts +59 -2
- package/src/models/scallopCache.ts +171 -19
- package/src/models/scallopClient.ts +16 -10
- package/src/models/scallopQuery.ts +36 -28
- package/src/models/scallopUtils.ts +11 -4
- package/src/queries/borrowIncentiveQuery.ts +6 -8
- package/src/queries/borrowLimitQuery.ts +3 -3
- package/src/queries/coreQuery.ts +408 -258
- package/src/queries/index.ts +2 -0
- package/src/queries/isolatedAssetQuery.ts +39 -34
- package/src/queries/objectsQuery.ts +20 -0
- package/src/queries/poolAddressesQuery.ts +146 -0
- package/src/queries/portfolioQuery.ts +31 -13
- package/src/queries/priceQuery.ts +3 -1
- package/src/queries/spoolQuery.ts +189 -122
- package/src/queries/supplyLimitQuery.ts +2 -3
- package/src/test.ts +14 -17
- package/src/types/builder/borrowIncentive.ts +8 -5
- package/src/types/builder/core.ts +23 -17
- package/src/types/builder/loyaltyProgram.ts +1 -1
- package/src/types/builder/referral.ts +6 -4
- package/src/types/builder/sCoin.ts +2 -2
- package/src/types/builder/spool.ts +4 -4
- package/src/types/builder/vesca.ts +9 -6
- package/src/types/query/core.ts +21 -5
- package/src/types/query/spool.ts +21 -0
- package/src/types/utils.ts +8 -3
- package/src/utils/core.ts +18 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/query.ts +21 -5
- package/src/utils/tokenBucket.ts +9 -29
- package/src/utils/util.ts +8 -0
package/dist/index.mjs
CHANGED
|
@@ -23,10 +23,9 @@ var COIN_GECKGO_IDS = {
|
|
|
23
23
|
afsui: "sui",
|
|
24
24
|
hasui: "sui",
|
|
25
25
|
vsui: "sui",
|
|
26
|
-
sca: "scallop-2"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
// fud: 'fud-the-pug',
|
|
26
|
+
sca: "scallop-2",
|
|
27
|
+
deep: "deepbook",
|
|
28
|
+
fud: "fud-the-pug"
|
|
30
29
|
};
|
|
31
30
|
|
|
32
31
|
// src/constants/common.ts
|
|
@@ -55,10 +54,9 @@ var SUPPORT_POOLS = [
|
|
|
55
54
|
"afsui",
|
|
56
55
|
"hasui",
|
|
57
56
|
"vsui",
|
|
58
|
-
"sca"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
// 'deep',
|
|
57
|
+
"sca",
|
|
58
|
+
"fud",
|
|
59
|
+
"deep"
|
|
62
60
|
];
|
|
63
61
|
var SUPPORT_COLLATERALS = [
|
|
64
62
|
"usdc",
|
|
@@ -102,10 +100,9 @@ var SUPPORT_SCOIN = [
|
|
|
102
100
|
"ssca",
|
|
103
101
|
"scetus",
|
|
104
102
|
"swsol",
|
|
105
|
-
"swbtc"
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
// 'sfud',
|
|
103
|
+
"swbtc",
|
|
104
|
+
"sdeep",
|
|
105
|
+
"sfud"
|
|
109
106
|
];
|
|
110
107
|
var SUPPORT_SUI_BRIDGE = ["sbeth"];
|
|
111
108
|
var SUPPORT_WORMHOLE = [
|
|
@@ -117,18 +114,7 @@ var SUPPORT_WORMHOLE = [
|
|
|
117
114
|
"wsol"
|
|
118
115
|
];
|
|
119
116
|
var SUPPORT_SPOOLS_REWARDS = ["sui"];
|
|
120
|
-
var SUPPORT_BORROW_INCENTIVE_POOLS = [
|
|
121
|
-
"sui",
|
|
122
|
-
"wusdc",
|
|
123
|
-
"wusdt",
|
|
124
|
-
"afsui",
|
|
125
|
-
"hasui",
|
|
126
|
-
"vsui",
|
|
127
|
-
"weth",
|
|
128
|
-
"sbeth",
|
|
129
|
-
"sca",
|
|
130
|
-
"usdc"
|
|
131
|
-
];
|
|
117
|
+
var SUPPORT_BORROW_INCENTIVE_POOLS = [...SUPPORT_POOLS];
|
|
132
118
|
var SUPPORT_BORROW_INCENTIVE_REWARDS = [
|
|
133
119
|
...SUPPORT_POOLS,
|
|
134
120
|
...SUPPORT_SCOIN
|
|
@@ -165,9 +151,8 @@ var coinDecimals = {
|
|
|
165
151
|
hasui: 9,
|
|
166
152
|
vsui: 9,
|
|
167
153
|
sca: 9,
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
// fud: 5,
|
|
154
|
+
deep: 6,
|
|
155
|
+
fud: 5,
|
|
171
156
|
susdc: 6,
|
|
172
157
|
sweth: 8,
|
|
173
158
|
ssbeth: 8,
|
|
@@ -181,10 +166,9 @@ var coinDecimals = {
|
|
|
181
166
|
safsui: 9,
|
|
182
167
|
shasui: 9,
|
|
183
168
|
svsui: 9,
|
|
184
|
-
ssca: 9
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
// sfud: 5,
|
|
169
|
+
ssca: 9,
|
|
170
|
+
sdeep: 6,
|
|
171
|
+
sfud: 5
|
|
188
172
|
};
|
|
189
173
|
var assetCoins = {
|
|
190
174
|
usdc: "usdc",
|
|
@@ -200,10 +184,9 @@ var assetCoins = {
|
|
|
200
184
|
afsui: "afsui",
|
|
201
185
|
hasui: "hasui",
|
|
202
186
|
vsui: "vsui",
|
|
203
|
-
sca: "sca"
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
// fud: 'fud',
|
|
187
|
+
sca: "sca",
|
|
188
|
+
deep: "deep",
|
|
189
|
+
fud: "fud"
|
|
207
190
|
};
|
|
208
191
|
var marketCoins = {
|
|
209
192
|
susdc: "susdc",
|
|
@@ -219,10 +202,9 @@ var marketCoins = {
|
|
|
219
202
|
safsui: "safsui",
|
|
220
203
|
shasui: "shasui",
|
|
221
204
|
svsui: "svsui",
|
|
222
|
-
ssca: "ssca"
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
// sfud: 'sfud',
|
|
205
|
+
ssca: "ssca",
|
|
206
|
+
sdeep: "sdeep",
|
|
207
|
+
sfud: "sfud"
|
|
226
208
|
};
|
|
227
209
|
var sCoins = {
|
|
228
210
|
susdc: "susdc",
|
|
@@ -237,10 +219,9 @@ var sCoins = {
|
|
|
237
219
|
svsui: "svsui",
|
|
238
220
|
ssca: "ssca",
|
|
239
221
|
swsol: "swsol",
|
|
240
|
-
swbtc: "swbtc"
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
// sdeep: 'sdeep',
|
|
222
|
+
swbtc: "swbtc",
|
|
223
|
+
sfud: "sfud",
|
|
224
|
+
sdeep: "sdeep"
|
|
244
225
|
};
|
|
245
226
|
var stakeMarketCoins = {
|
|
246
227
|
susdc: "susdc",
|
|
@@ -281,10 +262,10 @@ var coinIds = {
|
|
|
281
262
|
afsui: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
|
|
282
263
|
hasui: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
|
|
283
264
|
vsui: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
|
|
284
|
-
sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6"
|
|
265
|
+
sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
|
|
285
266
|
// isolated assets
|
|
286
|
-
|
|
287
|
-
|
|
267
|
+
deep: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",
|
|
268
|
+
fud: "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1"
|
|
288
269
|
};
|
|
289
270
|
var wormholeCoinIds = {
|
|
290
271
|
weth: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
|
|
@@ -300,28 +281,19 @@ var voloCoinIds = {
|
|
|
300
281
|
var sCoinIds = {
|
|
301
282
|
susdc: "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",
|
|
302
283
|
ssbeth: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
// swusdt:
|
|
308
|
-
// '0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT',
|
|
309
|
-
// ssca: '0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA',
|
|
310
|
-
// test values
|
|
311
|
-
ssui: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
|
|
312
|
-
swusdt: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
|
|
313
|
-
swusdc: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
|
|
314
|
-
ssca: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
|
|
284
|
+
ssui: "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",
|
|
285
|
+
swusdc: "0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
|
|
286
|
+
swusdt: "0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
|
|
287
|
+
ssca: "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",
|
|
315
288
|
scetus: "0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",
|
|
316
289
|
sweth: "0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
|
|
317
290
|
safsui: "0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",
|
|
318
291
|
shasui: "0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",
|
|
319
292
|
svsui: "0xe1a1cc6bcf0001a015eab84bcc6713393ce20535f55b8b6f35c142e057a25fbe::scallop_v_sui::SCALLOP_V_SUI",
|
|
320
293
|
swsol: "0x1392650f2eca9e3f6ffae3ff89e42a3590d7102b80e2b430f674730bc30d3259::scallop_wormhole_sol::SCALLOP_WORMHOLE_SOL",
|
|
321
|
-
swbtc: "0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC"
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
// sfud: '0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD',
|
|
294
|
+
swbtc: "0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC",
|
|
295
|
+
sdeep: "0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",
|
|
296
|
+
sfud: "0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD"
|
|
325
297
|
};
|
|
326
298
|
var sCoinTypeToName = Object.entries(sCoinIds).reduce(
|
|
327
299
|
(acc, [coinName, coinType]) => {
|
|
@@ -358,69 +330,244 @@ var FlashLoanFeeObjectMap = {
|
|
|
358
330
|
var POOL_ADDRESSES = {
|
|
359
331
|
usdc: {
|
|
360
332
|
lendingPoolAddress: "0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",
|
|
361
|
-
collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af"
|
|
333
|
+
collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af",
|
|
334
|
+
borrowDynamic: "0x77837ecd4f26fac9a410fff594f2c0bd3288904a15492ca77cb8a52684dbb866",
|
|
335
|
+
interestModel: "0xaae3f179d63009380cbdcb9acb12907afc9c3cb79cc3460be296a9c6d28f3ff3",
|
|
336
|
+
riskModel: "0x198b24db213bfeb8b3c80ae63dde92e32fd24984d25da8233ff777b851edd574",
|
|
337
|
+
borrowFeeKey: "0xd37c5316cfe0a5967d14264fa6b423f880518b294a1ee6581ccbb49ccc401fb8",
|
|
338
|
+
supplyLimitKey: "0x4be9ae54ac4d320f4f9c14cae78cb85c8e0e67791dd9bdba6d2db20614a28a24",
|
|
339
|
+
borrowLimitKey: "0x6b01093cba95b835181f00e3a2c31ed8dfc8d64fe3db0fb80933a09f66e1ccf1",
|
|
340
|
+
isolatedAssetKey: void 0,
|
|
341
|
+
spool: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
|
|
342
|
+
spoolReward: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166",
|
|
343
|
+
sCoinTreasury: "0xbe6b63021f3d82e0e7e977cdd718ed7c019cf2eba374b7b546220402452f938e",
|
|
344
|
+
coinDecimalId: "0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6"
|
|
362
345
|
},
|
|
363
346
|
sbeth: {
|
|
364
|
-
lendingPoolAddress: "
|
|
365
|
-
collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f"
|
|
347
|
+
lendingPoolAddress: "0xaa34c938e0394e5186c7dc626ad69be96af2194b23fdc6ac1c63090e399f5ba4",
|
|
348
|
+
collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f",
|
|
349
|
+
borrowDynamic: "0x7bbe75e8b924229f2f2110838ff612ea66e670fa3766759515dee78f617b1ea3",
|
|
350
|
+
interestModel: "0x9e6cae260d05155785a1904d24e6abc98368509c5752c8a9cec15a35aabc1512",
|
|
351
|
+
riskModel: "0xcf10334cfee675ecea2d2fee37b0f7cd2835c84b8b5692a853021debe6af80ab",
|
|
352
|
+
borrowFeeKey: "0x4298c8b6afe7a42a8e3ff93773fb9769529fe6d37e085ab411acf2ba2a44a931",
|
|
353
|
+
supplyLimitKey: "0x812fe508b78d3e0817149c0b39976221ddb267b5cc9514e81679f9b9a2f3624c",
|
|
354
|
+
borrowLimitKey: "0x165c274c67eda2b0d13563124741fffd0ce7d643f4c1c4b59d7e53a83796ae25",
|
|
355
|
+
isolatedAssetKey: void 0,
|
|
356
|
+
spool: void 0,
|
|
357
|
+
spoolReward: void 0,
|
|
358
|
+
sCoinTreasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed",
|
|
359
|
+
coinDecimalId: "0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0"
|
|
366
360
|
},
|
|
367
361
|
weth: {
|
|
368
362
|
lendingPoolAddress: "0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",
|
|
369
|
-
collateralPoolAddress: "0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf"
|
|
363
|
+
collateralPoolAddress: "0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf",
|
|
364
|
+
borrowDynamic: "0xd1578e1d1c9c82eb4c5bf14beece8142a67a683b2647d7276e92984119fc1445",
|
|
365
|
+
interestModel: "0xa1dc08541cd2cb7cfb4e56272292d5c6a4780e80fd210c58abffae98268b5ed9",
|
|
366
|
+
riskModel: "0x9f05a25fd33a9e8cf33962126b175d038e184f0ee1b87dc41d4cedbe6abebbe5",
|
|
367
|
+
borrowFeeKey: "0x29672ba8ab4625b8181d8ed739e5344de22a97d417748c4d1276c7379283d7a3",
|
|
368
|
+
supplyLimitKey: "0x2b957941bdc9432bbc83ab74dc194b6ebb7c927bc4c6926a5492b5503499e509",
|
|
369
|
+
borrowLimitKey: "0x51f256d87e51a7ca2b1c482923096f4b6dac6beac89d8ecf4c65b7d5764115d6",
|
|
370
|
+
isolatedAssetKey: void 0,
|
|
371
|
+
spool: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
|
|
372
|
+
spoolReward: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077",
|
|
373
|
+
sCoinTreasury: "0x4b7f5da0e306c9d52490a0c1d4091e653d6b89778b9b4f23c877e534e4d9cd21",
|
|
374
|
+
coinDecimalId: "0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f"
|
|
370
375
|
},
|
|
371
376
|
wbtc: {
|
|
372
377
|
lendingPoolAddress: "0x65cc08a5aca0a0b8d72e1993ded8d145f06dd102fd0d8f285b92934faed564ab",
|
|
373
|
-
collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3"
|
|
378
|
+
collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3",
|
|
379
|
+
borrowDynamic: "0x6f97dcf54158a5d08f359a213a41e347bc1e6316414288dc1e1b674dc008742e",
|
|
380
|
+
interestModel: "0x582b915cca0ffca9576a7cedd505d0fd7cb146e9521ccf10e7453ed93705684d",
|
|
381
|
+
riskModel: "0x1d0a242bf1682e259112239720da19d3155dd99d70b1f4b3b973eecbab858911",
|
|
382
|
+
borrowFeeKey: "0x654ab7e8ff6d9ef04da697e1f12ca21eaf72ebb495daf877e0776e65187dcb92",
|
|
383
|
+
supplyLimitKey: "0xac3b0d17df9f98aa2798c54405cf1d8d5356ef22f76f02d150cbe5195e9f3a36",
|
|
384
|
+
borrowLimitKey: "0x231e13ba6b1eb26c562f4a125778d3152f9a77e31f124bd6012e234a73012169",
|
|
385
|
+
isolatedAssetKey: void 0,
|
|
386
|
+
spool: void 0,
|
|
387
|
+
spoolReward: void 0,
|
|
388
|
+
sCoinTreasury: "0xe2883934ea42c99bc998bbe0f01dd6d27aa0e27a56455707b1b34e6a41c20baa",
|
|
389
|
+
coinDecimalId: "0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd"
|
|
374
390
|
},
|
|
375
391
|
wusdc: {
|
|
376
|
-
lendingPoolAddress: "
|
|
377
|
-
collateralPoolAddress: "
|
|
392
|
+
lendingPoolAddress: "0x2f4df5e1368fbbdaa5c712d28b837b3d41c2d3872979ccededcdfdac55ff8a93",
|
|
393
|
+
collateralPoolAddress: "0x94cf69158114c5b242d2ee5d0149a335bddf3b9c9a6ba919cca58097a4814980",
|
|
394
|
+
borrowDynamic: "0x0464d117908b52fc75f7f85322a47caa078ef56f48681bcfdcb630a66f2591e6",
|
|
395
|
+
interestModel: "0xd72e2b5ba486752939d6dfb86a67b86ce9a60c83cb8fb893caac54a0f112577f",
|
|
396
|
+
riskModel: "0xb74035de8f70c1531ceb8e2e8c152d6b8db24c8a9fe7bbf6f75dbf7c6700a0a3",
|
|
397
|
+
borrowFeeKey: "0x76dcf1acbd9951fe3d1a3fe28403fec089ffe53a7c7d6c77e3ea97033a63581a",
|
|
398
|
+
supplyLimitKey: "0x7b302196907e87c5d5872f2e6f40628d110170f994e0e08bc607bded001958c3",
|
|
399
|
+
borrowLimitKey: "0x97f1502ce994db0bcb15aac1760d174def9e88e97cd2262eed54521ee2c19f81",
|
|
400
|
+
isolatedAssetKey: void 0,
|
|
401
|
+
spool: "0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",
|
|
402
|
+
spoolReward: "0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8",
|
|
403
|
+
sCoinTreasury: "0x50c5cfcbcca3aaacab0984e4d7ad9a6ad034265bebb440f0d1cd688ec20b2548",
|
|
404
|
+
coinDecimalId: "0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189"
|
|
378
405
|
},
|
|
379
406
|
wusdt: {
|
|
380
407
|
lendingPoolAddress: "0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879",
|
|
381
|
-
collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3"
|
|
408
|
+
collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3",
|
|
409
|
+
borrowDynamic: "0xb524030cc8f7cdbf13f1925a0a2b5e77cc52bab73b070f42c5e510f6083da1ba",
|
|
410
|
+
interestModel: "0x92f93c4431b4c51774d6d964da516af2def18b78f49dbbf519e58449a8ba4659",
|
|
411
|
+
riskModel: "0xdf89d66988cb506ddeff46f5dfd1d11aaece345e9a05a0c6a18a0788647de2a7",
|
|
412
|
+
borrowFeeKey: "0xda8f8b3522fc4086eae4ae7ce8844d60aa0dc3eab8ffc91fe93e922a72639b2d",
|
|
413
|
+
supplyLimitKey: "0xa9cb5ebb90ca6e808a2bd7728cca4a6fa8b565d4deeda96eb23c8322c477c24e",
|
|
414
|
+
borrowLimitKey: "0xa3278564fc613680a69c10972a0299965bf6e12e9ac171388842fc958de0f90e",
|
|
415
|
+
isolatedAssetKey: void 0,
|
|
416
|
+
spool: "0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",
|
|
417
|
+
spoolReward: "0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080",
|
|
418
|
+
sCoinTreasury: "0x1f02e2fed702b477732d4ad6044aaed04f2e8e586a169153694861a901379df0",
|
|
419
|
+
coinDecimalId: "0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c"
|
|
382
420
|
},
|
|
383
421
|
sui: {
|
|
384
422
|
lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
|
|
385
|
-
collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb"
|
|
423
|
+
collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb",
|
|
424
|
+
borrowDynamic: "0xbf68e6159c99dcaf87717385f1143d2891c2d19663bd51f0bc9b6909e4bb7c27",
|
|
425
|
+
interestModel: "0x0dad9baa89b863c15a0487575de7cc428b01f1aa3998ad7a9e9752d96e83ffa9",
|
|
426
|
+
riskModel: "0xcd6675864690b5648a6e309f2f02a66914b2b2bd9c31936f4e0f7fc0f792bc86",
|
|
427
|
+
borrowFeeKey: "0xda5ede87a05c0677b17511c859b22d0a2b0229ee374d5d7a1274cb836b9fe5f8",
|
|
428
|
+
supplyLimitKey: "0x0602418e66fb7a73fa997077bd66f248ad5b090d43344a14b9f1db598ecc1d47",
|
|
429
|
+
borrowLimitKey: "0x2b33a7efdcf6a6df24f4d8a356dd52f58d75bc023c3f171d99502d4d008b53f0",
|
|
430
|
+
isolatedAssetKey: void 0,
|
|
431
|
+
spool: "0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",
|
|
432
|
+
spoolReward: "0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9",
|
|
433
|
+
sCoinTreasury: "0x5c1678c8261ac9eec024d4d630006a9f55c80dc0b1aa38a003fcb1d425818c6b",
|
|
434
|
+
coinDecimalId: "0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3"
|
|
386
435
|
},
|
|
387
436
|
wapt: {
|
|
388
437
|
lendingPoolAddress: "0xca8c14a24e0c32b198eaf479a3317461e3cc339097ce88eaf296a15df8dcfdf5",
|
|
389
|
-
collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c"
|
|
438
|
+
collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c",
|
|
439
|
+
borrowDynamic: "0xadda873fb6bf68e1ba3f2dfaa51cf75d4a1bef73d9627bd36e77d2baecb1f2dc",
|
|
440
|
+
interestModel: "0xa4a29d07beecea5eb0c59745bb89d7a1380c6f206a7f1ca37046e05db6025c43",
|
|
441
|
+
riskModel: "0x7ada83b473af30aed50d187de82a0912878b53ade7ac30e11ce23953cf739d84",
|
|
442
|
+
borrowFeeKey: "0x768735df587c7e0f141dcd035fbbcbf9d2149a7b23888baed4e2baa160fa2eeb",
|
|
443
|
+
supplyLimitKey: void 0,
|
|
444
|
+
borrowLimitKey: void 0,
|
|
445
|
+
isolatedAssetKey: void 0,
|
|
446
|
+
spool: void 0,
|
|
447
|
+
spoolReward: void 0,
|
|
448
|
+
sCoinTreasury: void 0,
|
|
449
|
+
coinDecimalId: "0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8"
|
|
390
450
|
},
|
|
391
451
|
wsol: {
|
|
392
452
|
lendingPoolAddress: "0x985682c42984cdfb03f9ff7d8923344c2fe096b1ae4b82ea17721af19d22a21f",
|
|
393
|
-
collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f"
|
|
453
|
+
collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f",
|
|
454
|
+
borrowDynamic: "0xe3f301e16d4f1273ea659dd82c5c3f124ca5a5883a5726c7ec0f77bf43b70895",
|
|
455
|
+
interestModel: "0xd95affaee077006b8dbb4b108c1b087e95fc6e5143ef0682da345d5b35bc6356",
|
|
456
|
+
riskModel: "0x8e0da6358073144ec3557400c87f04991ba3a13ca7e0d0a19daed45260b32f16",
|
|
457
|
+
borrowFeeKey: "0x604bffbc817e8e12db15f2373a9e15b2c7adbc510649cdf2cc62a594af90671c",
|
|
458
|
+
supplyLimitKey: "0xbd419b536b3f9c9d4adfc20372ca6feedc53cc31798ac860dbfc847bcf05f54b",
|
|
459
|
+
borrowLimitKey: "0x77d453c51948f32564c810bc73f9ba7abde880657b7f89e1c8a3bc28fa36ee87",
|
|
460
|
+
isolatedAssetKey: void 0,
|
|
461
|
+
spool: void 0,
|
|
462
|
+
spoolReward: void 0,
|
|
463
|
+
sCoinTreasury: "0x760fd66f5be869af4382fa32b812b3c67f0eca1bb1ed7a5578b21d56e1848819",
|
|
464
|
+
coinDecimalId: "0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e"
|
|
394
465
|
},
|
|
395
466
|
cetus: {
|
|
396
467
|
lendingPoolAddress: "0xc09858f60e74a1b671635bec4e8a2c84a0ff313eb87f525fba3258e88c6b6282",
|
|
397
|
-
collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a"
|
|
468
|
+
collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a",
|
|
469
|
+
borrowDynamic: "0xcc725fd5d71990cdccc7e16c88a2abde6dbcd0bf6e805ccc1c0cb83a106bbf4e",
|
|
470
|
+
interestModel: "0x2f1258aab89d04d11834121599ab1317dfecb582b4246f106df399911125845a",
|
|
471
|
+
riskModel: "0x03fed312dbba624dff5edaf4736891a1c7d864445fd268e7572b42ec7381132e",
|
|
472
|
+
borrowFeeKey: "0xdf5fb0cc4ebbf5eebfae23dfa5b266f6a58c18a894a13054ae60c0eb6e79c382",
|
|
473
|
+
supplyLimitKey: "0xa5ea3d4bf663d7bc667e82b40a98923590ff3851b9ea8e7afbc26c588c7007d3",
|
|
474
|
+
borrowLimitKey: "0xf44218a5f0feb128e6fbe74b91d1e7e9ef859bd23a576ff0de151829e015a157",
|
|
475
|
+
isolatedAssetKey: void 0,
|
|
476
|
+
spool: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
|
|
477
|
+
spoolReward: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f",
|
|
478
|
+
sCoinTreasury: "0xa283c63488773c916cb3d6c64109536160d5eb496caddc721eb39aad2977d735",
|
|
479
|
+
coinDecimalId: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da"
|
|
398
480
|
},
|
|
399
481
|
afsui: {
|
|
400
482
|
lendingPoolAddress: "0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",
|
|
401
|
-
collateralPoolAddress: "0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341"
|
|
483
|
+
collateralPoolAddress: "0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341",
|
|
484
|
+
borrowDynamic: "0x1c76d4df9506154a117bbac0f5e005d8a9c0d9ca60e3fe0c9d080006f6f54e81",
|
|
485
|
+
interestModel: "0xb155c536b37c9601baaa734ad1dd0ef335b2b597aceb8d3ecee41a43f94dcd70",
|
|
486
|
+
riskModel: "0x75371b1d04b5bebc0738af548ba64ea658e74f78228ec8014336d8eebb992312",
|
|
487
|
+
borrowFeeKey: "0xabc6422db2d4ee01635ddaeaa44ba68370eebd785d2c4632515f841ae9bc47d9",
|
|
488
|
+
supplyLimitKey: "0x61a2054eb37f543c0d774da57f2c9542aad8d79a197f748ac08ef5df6cc47028",
|
|
489
|
+
borrowLimitKey: "0x4459498a043872cd107ea917493fee0baf2d37a273c7538e1d6581cc61b92af8",
|
|
490
|
+
isolatedAssetKey: void 0,
|
|
491
|
+
spool: "0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",
|
|
492
|
+
spoolReward: "0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e",
|
|
493
|
+
sCoinTreasury: "0x55f4dfe9e40bc4cc11c70fcb1f3daefa2bdc330567c58d4f0792fbd9f9175a62",
|
|
494
|
+
coinDecimalId: "0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d"
|
|
402
495
|
},
|
|
403
496
|
hasui: {
|
|
404
497
|
lendingPoolAddress: "0x7ebc607f6bdeb659fb6506cb91c5cc1d47bb365cfd5d2e637ea765346ec84ed4",
|
|
405
|
-
collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d"
|
|
498
|
+
collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d",
|
|
499
|
+
borrowDynamic: "0x13ec1220b41c6e0f11dd6113199a2aff8e4cf2223047b5bd06d7a3ed5d23e1d2",
|
|
500
|
+
interestModel: "0x987c58cbe48096618f4d9d83e0bde2ff638ce4753aba40dab7c302ac3e4b4519",
|
|
501
|
+
riskModel: "0xe42d8497d423eca0d8df89850c2d77d3644e7f54a2d28f59c315903ea5ec8dec",
|
|
502
|
+
borrowFeeKey: "0xef885c382d461c4fb14d1f3b3758c380c78a1a4b2a3d2fafe6e8649a60fdd7ab",
|
|
503
|
+
supplyLimitKey: "0xc7385b1703693cbbc9c97227fe3fd5c91d7afda00e0da69d942c3260d78e45e0",
|
|
504
|
+
borrowLimitKey: "0x65333e606eead786a999c8267bc9886b0fdbc298a8a8635a48a9c9b8838d9395",
|
|
505
|
+
isolatedAssetKey: void 0,
|
|
506
|
+
spool: "0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",
|
|
507
|
+
spoolReward: "0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66",
|
|
508
|
+
sCoinTreasury: "0x404ccc1404d74a90eb6f9c9d4b6cda6d417fb03189f80d9070a35e5dab1df0f5",
|
|
509
|
+
coinDecimalId: "0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24"
|
|
406
510
|
},
|
|
407
511
|
vsui: {
|
|
408
512
|
lendingPoolAddress: "0xda9257c0731d8822e8a438ebced13415850d705b779c79958dcf2aeb21fcb43d",
|
|
409
|
-
collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e"
|
|
513
|
+
collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e",
|
|
514
|
+
borrowDynamic: "0x8eae703505246f975e83f5af24780e5f1b89ef403d5a80ea15534624d6f1a503",
|
|
515
|
+
interestModel: "0xaf6a52b5eaaa5af4d9e49d83de0d504c295ae21f3a37560c3f48e0e15a1d4625",
|
|
516
|
+
riskModel: "0x1e862f27a6bd47c3041159a5cf392f549485c6605ed9aa937f16ecc951e82e65",
|
|
517
|
+
borrowFeeKey: "0x5230de0f41a5e4c05b3d1187a90a9eeab491cec97b08b71512d9785e8af36aa6",
|
|
518
|
+
supplyLimitKey: "0x1d40e34d1f365ec431fff020bd75c16b14b340b3ed6c139803cc15c2384621b2",
|
|
519
|
+
borrowLimitKey: "0x4eb206b4417642cfc1b02f80bb5f5e366af2af2f9fb4ea4f4e898ae82367f8a0",
|
|
520
|
+
isolatedAssetKey: void 0,
|
|
521
|
+
spool: "0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",
|
|
522
|
+
spoolReward: "0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a",
|
|
523
|
+
sCoinTreasury: "0xc06688ee1af25abc286ffb1d18ce273d1d5907cd1064c25f4e8ca61ea989c1d1",
|
|
524
|
+
coinDecimalId: "0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd"
|
|
410
525
|
},
|
|
411
526
|
sca: {
|
|
412
527
|
lendingPoolAddress: "0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",
|
|
413
|
-
collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31"
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
528
|
+
collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31",
|
|
529
|
+
borrowDynamic: "0x4e24f52edd739dab59ca4c6353ca430b7ce57e7f333abd0957958570a7cd09ca",
|
|
530
|
+
interestModel: "0xbdcd48cf5b1a814911dc2d5c72d393a980c87820199fe5d799289ce94f4c47df",
|
|
531
|
+
riskModel: "0xc437c24b67b8e2676907700fa395af337ad6463d2c0b4f4fa2e9276414026089",
|
|
532
|
+
borrowFeeKey: "0xee55ba0f9800a62d9e7aef667f87e658258f41814d2c9fa02e25590671b4e5ad",
|
|
533
|
+
supplyLimitKey: "0x8dd938856b972a10ea27ecab2af7ed78e48fc5f6ccedaf2b2119959f747dc2e3",
|
|
534
|
+
borrowLimitKey: "0x04c7de61c5b42972f9bf6a8b1848e5fea2d037ee8deba81741ecd4a70aa80d30",
|
|
535
|
+
isolatedAssetKey: void 0,
|
|
536
|
+
spool: void 0,
|
|
537
|
+
spoolReward: void 0,
|
|
538
|
+
sCoinTreasury: "0xe04bfc95e00252bd654ee13c08edef9ac5e4b6ae4074e8390db39e9a0109c529",
|
|
539
|
+
coinDecimalId: "0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844"
|
|
540
|
+
},
|
|
541
|
+
fud: {
|
|
542
|
+
lendingPoolAddress: "0xefed2cbe76b344792ac724523c8b2236740d1cea2100d46a0ed0dc760c7f4231",
|
|
543
|
+
collateralPoolAddress: void 0,
|
|
544
|
+
borrowDynamic: "0x14367ddca30e2860cb89ed4eaca20c7ece260c5d59dd9990d2c85a8321326acb",
|
|
545
|
+
interestModel: "0x2600ac100ef154eb2329ffd3aad47aca308ff9f9348de3e8e94aaeb906ec2303",
|
|
546
|
+
riskModel: void 0,
|
|
547
|
+
borrowFeeKey: "0xa87e8b26e07ff35ac9fb57adcc779be2883080fc7d12de2d9e7e16d8d8d5e529",
|
|
548
|
+
supplyLimitKey: "0xf98419aecc37a3c5de716f8ec590f8991a5be34da72ce1a2da09531ff45adf7d",
|
|
549
|
+
borrowLimitKey: "0x3d928a001c453c50004baa54e14b0a0e1b0907d9c613dfd76064fd7ed4e8beb8",
|
|
550
|
+
isolatedAssetKey: "0xfcb533e9e4e31f9c9f32d6cbf7fbb3425f1d60474e229a363a2dc7f835d587e2",
|
|
551
|
+
spool: void 0,
|
|
552
|
+
spoolReward: void 0,
|
|
553
|
+
sCoinTreasury: "0xf25212f11d182decff7a86165699a73e3d5787aced203ca539f43cfbc10db867",
|
|
554
|
+
coinDecimalId: "0x01087411ef48aaac1eb6e24803213e3a60a03b147dac930e5e341f17a85e524e"
|
|
555
|
+
},
|
|
556
|
+
deep: {
|
|
557
|
+
lendingPoolAddress: "0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03",
|
|
558
|
+
collateralPoolAddress: void 0,
|
|
559
|
+
borrowDynamic: "0x95e00d7466f97a100e70f08bd37788dc49335796f6f49fab996d40dd0681c6d3",
|
|
560
|
+
interestModel: "0x4143c298506a332d92ea8a995e6f3991ee3215f58f6fc6441752835d275b9a69",
|
|
561
|
+
riskModel: void 0,
|
|
562
|
+
borrowFeeKey: "0xb14ee43f4ad2a2c40bac8c4406a401690e93c982e289cf3802fedf74a159cab2",
|
|
563
|
+
supplyLimitKey: "0x599528fdfdc253e90dfd0acf4f4a166b391e2aac1ca6528abbff63225b548fee",
|
|
564
|
+
borrowLimitKey: "0xf4217e8ef9d9c32e8992092e910a77535a8124c19b8a762a673f227f5f765a4e",
|
|
565
|
+
isolatedAssetKey: "0x208d3a24ba369dcfc8f0387333d1512b98199eb150d2f2a69359ff708cf761e3",
|
|
566
|
+
spool: void 0,
|
|
567
|
+
spoolReward: void 0,
|
|
568
|
+
sCoinTreasury: "0xc63838fabe37b25ad897392d89876d920f5e0c6a406bf3abcb84753d2829bc88",
|
|
569
|
+
coinDecimalId: "0x6e60b051a08fa836f5a7acd7c464c8d9825bc29c44657fe170fe9b8e1e4770c0"
|
|
570
|
+
}
|
|
424
571
|
};
|
|
425
572
|
|
|
426
573
|
// src/constants/pyth.ts
|
|
@@ -442,10 +589,9 @@ var PYTH_FEED_IDS = {
|
|
|
442
589
|
afsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
443
590
|
hasui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
444
591
|
vsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
445
|
-
sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc"
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
// fud: '6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75',
|
|
592
|
+
sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
|
|
593
|
+
deep: "29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",
|
|
594
|
+
fud: "6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75"
|
|
449
595
|
};
|
|
450
596
|
|
|
451
597
|
// src/constants/queryKeys.ts
|
|
@@ -471,7 +617,11 @@ var queryKeys = {
|
|
|
471
617
|
typeArgs: !typeArgs ? void 0 : JSON.stringify(typeArgs)
|
|
472
618
|
}
|
|
473
619
|
],
|
|
474
|
-
getObject: (objectId,
|
|
620
|
+
getObject: (objectId, options) => [
|
|
621
|
+
"rpc",
|
|
622
|
+
"getObject",
|
|
623
|
+
{ options, objectId }
|
|
624
|
+
],
|
|
475
625
|
getObjects: (objectIds, walletAddress, options) => [
|
|
476
626
|
"rpc",
|
|
477
627
|
"getObjects",
|
|
@@ -521,7 +671,10 @@ var queryKeys = {
|
|
|
521
671
|
"rpc",
|
|
522
672
|
"getAllCoinBalances",
|
|
523
673
|
{ owner }
|
|
524
|
-
]
|
|
674
|
+
],
|
|
675
|
+
getNormalizedMoveFunction: (target) => {
|
|
676
|
+
return ["rpc", "getNormalizedMoveCall", target];
|
|
677
|
+
}
|
|
525
678
|
},
|
|
526
679
|
oracle: {
|
|
527
680
|
getPythLatestPriceFeeds: () => ["oracle", "getPythPriceIds"]
|
|
@@ -745,6 +898,32 @@ var TEST_ADDRESSES = {
|
|
|
745
898
|
feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
|
|
746
899
|
}
|
|
747
900
|
}
|
|
901
|
+
},
|
|
902
|
+
deep: {
|
|
903
|
+
id: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",
|
|
904
|
+
metaData: "0x6e60b051a08fa836f5a7acd7c464c8d9825bc29c44657fe170fe9b8e1e4770c0",
|
|
905
|
+
treasury: "",
|
|
906
|
+
oracle: {
|
|
907
|
+
supra: "",
|
|
908
|
+
switchboard: "",
|
|
909
|
+
pyth: {
|
|
910
|
+
feed: "29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",
|
|
911
|
+
feedObject: "0x8c7f3a322b94cc69db2a2ac575cbd94bf5766113324c3a3eceac91e3e88a51ed"
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
},
|
|
915
|
+
fud: {
|
|
916
|
+
id: "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1",
|
|
917
|
+
metaData: "0x01087411ef48aaac1eb6e24803213e3a60a03b147dac930e5e341f17a85e524e",
|
|
918
|
+
treasury: "",
|
|
919
|
+
oracle: {
|
|
920
|
+
supra: "",
|
|
921
|
+
switchboard: "",
|
|
922
|
+
pyth: {
|
|
923
|
+
feed: "6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75",
|
|
924
|
+
feedObject: "0x4531c3ed0d22f21f5fce882905372006c9aafa30f01db03b789e95a6c50de7b2"
|
|
925
|
+
}
|
|
926
|
+
}
|
|
748
927
|
}
|
|
749
928
|
},
|
|
750
929
|
oracles: {
|
|
@@ -964,14 +1143,22 @@ var TEST_ADDRESSES = {
|
|
|
964
1143
|
ssbeth: {
|
|
965
1144
|
coinType: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
|
|
966
1145
|
treasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed"
|
|
1146
|
+
},
|
|
1147
|
+
sdeep: {
|
|
1148
|
+
coinType: "0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",
|
|
1149
|
+
treasury: "0xc63838fabe37b25ad897392d89876d920f5e0c6a406bf3abcb84753d2829bc88"
|
|
1150
|
+
},
|
|
1151
|
+
sfud: {
|
|
1152
|
+
coinType: "0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD",
|
|
1153
|
+
treasury: "0xf25212f11d182decff7a86165699a73e3d5787aced203ca539f43cfbc10db867"
|
|
967
1154
|
}
|
|
968
1155
|
}
|
|
969
1156
|
}
|
|
970
1157
|
};
|
|
971
1158
|
|
|
972
1159
|
// src/constants/tokenBucket.ts
|
|
973
|
-
var DEFAULT_TOKENS_PER_INTERVAL =
|
|
974
|
-
var DEFAULT_INTERVAL_IN_MS =
|
|
1160
|
+
var DEFAULT_TOKENS_PER_INTERVAL = 10;
|
|
1161
|
+
var DEFAULT_INTERVAL_IN_MS = 250;
|
|
975
1162
|
|
|
976
1163
|
// src/constants/vesca.ts
|
|
977
1164
|
var UNLOCK_ROUND_DURATION = 60 * 60 * 24;
|
|
@@ -987,7 +1174,8 @@ import { SuiKit } from "@scallop-io/sui-kit";
|
|
|
987
1174
|
import { QueryClient } from "@tanstack/query-core";
|
|
988
1175
|
import {
|
|
989
1176
|
SuiTxBlock,
|
|
990
|
-
normalizeStructTag as normalizeStructTag2
|
|
1177
|
+
normalizeStructTag as normalizeStructTag2,
|
|
1178
|
+
parseStructTag as parseStructTag2
|
|
991
1179
|
} from "@scallop-io/sui-kit";
|
|
992
1180
|
|
|
993
1181
|
// src/utils/builder.ts
|
|
@@ -1118,7 +1306,10 @@ var parseOriginMarketPoolData = (originMarketPoolData) => {
|
|
|
1118
1306
|
borrowRateOnMidKink: Number(originMarketPoolData.borrowRateOnMidKink.value) / 2 ** 32,
|
|
1119
1307
|
highKink: Number(originMarketPoolData.highKink.value) / 2 ** 32,
|
|
1120
1308
|
midKink: Number(originMarketPoolData.midKink.value) / 2 ** 32,
|
|
1121
|
-
minBorrowAmount: Number(originMarketPoolData.minBorrowAmount)
|
|
1309
|
+
minBorrowAmount: Number(originMarketPoolData.minBorrowAmount),
|
|
1310
|
+
isIsolated: originMarketPoolData.isIsolated,
|
|
1311
|
+
supplyLimit: Number(originMarketPoolData.supplyLimit),
|
|
1312
|
+
borrowLimit: Number(originMarketPoolData.borrowLimit)
|
|
1122
1313
|
};
|
|
1123
1314
|
};
|
|
1124
1315
|
var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
@@ -1170,6 +1361,7 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
|
1170
1361
|
borrowApyOnHighKink: utils.parseAprToApy(borrowAprOnHighKink),
|
|
1171
1362
|
borrowAprOnMidKink,
|
|
1172
1363
|
borrowApyOnMidKink: utils.parseAprToApy(borrowAprOnMidKink),
|
|
1364
|
+
coinDecimal,
|
|
1173
1365
|
maxBorrowApr,
|
|
1174
1366
|
maxBorrowApy: utils.parseAprToApy(maxBorrowApr),
|
|
1175
1367
|
borrowApr: Math.min(borrowApr, maxBorrowApr),
|
|
@@ -1188,17 +1380,21 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
|
1188
1380
|
utilizationRate: utilizationRate.toNumber(),
|
|
1189
1381
|
supplyApr: supplyApr.toNumber(),
|
|
1190
1382
|
supplyApy: utils.parseAprToApy(supplyApr.toNumber()),
|
|
1191
|
-
conversionRate: conversionRate.toNumber()
|
|
1383
|
+
conversionRate: conversionRate.toNumber(),
|
|
1384
|
+
isIsolated: parsedMarketPoolData.isIsolated,
|
|
1385
|
+
maxSupplyCoin: BigNumber(parsedMarketPoolData.supplyLimit).shiftedBy(coinDecimal).toNumber(),
|
|
1386
|
+
maxBorrowCoin: BigNumber(parsedMarketPoolData.borrowLimit).shiftedBy(coinDecimal).toNumber()
|
|
1192
1387
|
};
|
|
1193
1388
|
};
|
|
1194
1389
|
var parseOriginMarketCollateralData = (originMarketCollateralData) => {
|
|
1195
1390
|
const divisor = 2 ** 32;
|
|
1196
1391
|
return {
|
|
1197
1392
|
coinType: normalizeStructTag(originMarketCollateralData.type.name),
|
|
1393
|
+
isIsolated: originMarketCollateralData.isIsolated,
|
|
1198
1394
|
collateralFactor: Number(originMarketCollateralData.collateralFactor.value) / divisor,
|
|
1199
1395
|
liquidationFactor: Number(originMarketCollateralData.liquidationFactor.value) / divisor,
|
|
1200
1396
|
liquidationDiscount: Number(originMarketCollateralData.liquidationDiscount.value) / divisor,
|
|
1201
|
-
|
|
1397
|
+
liquidationPenalty: Number(originMarketCollateralData.liquidationPenalty.value) / divisor,
|
|
1202
1398
|
liquidationReserveFactor: Number(originMarketCollateralData.liquidationReserveFactor.value) / divisor,
|
|
1203
1399
|
maxCollateralAmount: Number(originMarketCollateralData.maxCollateralAmount),
|
|
1204
1400
|
totalCollateralAmount: Number(
|
|
@@ -1218,6 +1414,8 @@ var calculateMarketCollateralData = (utils, parsedMarketCollateralData) => {
|
|
|
1218
1414
|
parsedMarketCollateralData.totalCollateralAmount
|
|
1219
1415
|
).shiftedBy(-1 * coinDecimal);
|
|
1220
1416
|
return {
|
|
1417
|
+
coinDecimal,
|
|
1418
|
+
isIsolated: parsedMarketCollateralData.isIsolated,
|
|
1221
1419
|
maxDepositAmount: parsedMarketCollateralData.maxCollateralAmount,
|
|
1222
1420
|
maxDepositCoin: maxCollateralCoin.toNumber(),
|
|
1223
1421
|
depositAmount: parsedMarketCollateralData.totalCollateralAmount,
|
|
@@ -1350,7 +1548,7 @@ var parseOriginBorrowIncentivesPoolPointData = (originBorrowIncentivePoolPointDa
|
|
|
1350
1548
|
createdAt: Number(originBorrowIncentivePoolPointData.created_at)
|
|
1351
1549
|
};
|
|
1352
1550
|
};
|
|
1353
|
-
var parseOriginBorrowIncentivePoolData = (originBorrowIncentivePoolData) => {
|
|
1551
|
+
var parseOriginBorrowIncentivePoolData = (utils, originBorrowIncentivePoolData) => {
|
|
1354
1552
|
return {
|
|
1355
1553
|
poolType: normalizeStructTag(originBorrowIncentivePoolData.pool_type.name),
|
|
1356
1554
|
minStakes: Number(originBorrowIncentivePoolData.min_stakes),
|
|
@@ -1359,9 +1557,9 @@ var parseOriginBorrowIncentivePoolData = (originBorrowIncentivePoolData) => {
|
|
|
1359
1557
|
poolPoints: originBorrowIncentivePoolData.points.reduce(
|
|
1360
1558
|
(acc, point) => {
|
|
1361
1559
|
const parsed = parseOriginBorrowIncentivesPoolPointData(point);
|
|
1362
|
-
const name =
|
|
1363
|
-
parsed.pointType
|
|
1364
|
-
)
|
|
1560
|
+
const name = utils.parseSCoinTypeNameToMarketCoinName(
|
|
1561
|
+
parseStructTag(parsed.pointType).name.toLowerCase()
|
|
1562
|
+
);
|
|
1365
1563
|
acc[name] = parsed;
|
|
1366
1564
|
return acc;
|
|
1367
1565
|
},
|
|
@@ -1548,6 +1746,13 @@ var findClosestUnlockRound = (unlockAtInSecondTimestamp) => {
|
|
|
1548
1746
|
}
|
|
1549
1747
|
return Math.floor(closestTwelveAM.getTime() / 1e3);
|
|
1550
1748
|
};
|
|
1749
|
+
var partitionArray = (array, chunkSize) => {
|
|
1750
|
+
const result = [];
|
|
1751
|
+
for (let i = 0; i < array.length; i += chunkSize) {
|
|
1752
|
+
result.push(array.slice(i, i + chunkSize));
|
|
1753
|
+
}
|
|
1754
|
+
return result;
|
|
1755
|
+
};
|
|
1551
1756
|
|
|
1552
1757
|
// src/utils/tokenBucket.ts
|
|
1553
1758
|
var TokenBucket = class {
|
|
@@ -1560,10 +1765,10 @@ var TokenBucket = class {
|
|
|
1560
1765
|
refill() {
|
|
1561
1766
|
const now = Date.now();
|
|
1562
1767
|
const elapsed = now - this.lastRefill;
|
|
1563
|
-
if (elapsed
|
|
1768
|
+
if (elapsed >= this.interval) {
|
|
1564
1769
|
const tokensToAdd = Math.floor(elapsed / this.interval) * this.tokensPerInterval;
|
|
1565
1770
|
this.tokens = Math.min(this.tokens + tokensToAdd, this.tokensPerInterval);
|
|
1566
|
-
this.lastRefill
|
|
1771
|
+
this.lastRefill += Math.floor(elapsed / this.interval) * this.interval;
|
|
1567
1772
|
}
|
|
1568
1773
|
}
|
|
1569
1774
|
removeTokens(count) {
|
|
@@ -1575,27 +1780,12 @@ var TokenBucket = class {
|
|
|
1575
1780
|
return false;
|
|
1576
1781
|
}
|
|
1577
1782
|
};
|
|
1578
|
-
var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor =
|
|
1783
|
+
var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor = 1.25) => {
|
|
1579
1784
|
let retries = 0;
|
|
1580
1785
|
const tryRequest = async () => {
|
|
1581
1786
|
if (tokenBucket.removeTokens(1)) {
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
if (result && result.status === 429) {
|
|
1585
|
-
throw new Error("Unexpected status code: 429");
|
|
1586
|
-
}
|
|
1587
|
-
return result;
|
|
1588
|
-
} catch (error) {
|
|
1589
|
-
if (error.message === "Unexpected status code: 429" && retries < maxRetries) {
|
|
1590
|
-
retries++;
|
|
1591
|
-
const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
|
|
1592
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
1593
|
-
return tryRequest();
|
|
1594
|
-
} else {
|
|
1595
|
-
console.error("An error occurred:", error.message);
|
|
1596
|
-
return null;
|
|
1597
|
-
}
|
|
1598
|
-
}
|
|
1787
|
+
const result = await fn();
|
|
1788
|
+
return result;
|
|
1599
1789
|
} else if (retries < maxRetries) {
|
|
1600
1790
|
retries++;
|
|
1601
1791
|
const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
|
|
@@ -1634,6 +1824,22 @@ function withIndexerFallback(method) {
|
|
|
1634
1824
|
};
|
|
1635
1825
|
}
|
|
1636
1826
|
|
|
1827
|
+
// src/utils/core.ts
|
|
1828
|
+
var parseObjectAs = (object) => {
|
|
1829
|
+
if (!(object && object.content && "fields" in object.content))
|
|
1830
|
+
throw new Error(`Failed to parse object`);
|
|
1831
|
+
const fields = object.content.fields;
|
|
1832
|
+
if (typeof fields === "object" && "value" in fields) {
|
|
1833
|
+
const value = fields.value;
|
|
1834
|
+
if (typeof value === "object" && "fields" in value)
|
|
1835
|
+
return value.fields;
|
|
1836
|
+
return value;
|
|
1837
|
+
} else if (typeof fields === "object") {
|
|
1838
|
+
return fields;
|
|
1839
|
+
}
|
|
1840
|
+
return fields;
|
|
1841
|
+
};
|
|
1842
|
+
|
|
1637
1843
|
// src/models/scallopCache.ts
|
|
1638
1844
|
var ScallopCache = class {
|
|
1639
1845
|
constructor(suiKit, walletAddress, cacheOptions, tokenBucket, queryClient) {
|
|
@@ -1668,6 +1874,13 @@ var ScallopCache = class {
|
|
|
1668
1874
|
})
|
|
1669
1875
|
);
|
|
1670
1876
|
}
|
|
1877
|
+
retryFn(errCount, e) {
|
|
1878
|
+
if (errCount === 5)
|
|
1879
|
+
return false;
|
|
1880
|
+
if (e.status === 429)
|
|
1881
|
+
return true;
|
|
1882
|
+
return false;
|
|
1883
|
+
}
|
|
1671
1884
|
/**
|
|
1672
1885
|
* @description Provides cache for inspectTxn of the SuiKit.
|
|
1673
1886
|
* @param QueryInspectTxnParams
|
|
@@ -1680,18 +1893,64 @@ var ScallopCache = class {
|
|
|
1680
1893
|
typeArgs
|
|
1681
1894
|
}) {
|
|
1682
1895
|
const txBlock = new SuiTxBlock();
|
|
1683
|
-
|
|
1896
|
+
const resolvedQueryTarget = await this.queryGetNormalizedMoveFunction(queryTarget);
|
|
1897
|
+
if (!resolvedQueryTarget)
|
|
1898
|
+
throw new Error("Invalid query target");
|
|
1899
|
+
const { parameters } = resolvedQueryTarget;
|
|
1900
|
+
const resolvedArgs = await Promise.all(
|
|
1901
|
+
(args ?? []).map(async (arg, idx) => {
|
|
1902
|
+
if (typeof arg !== "string")
|
|
1903
|
+
return arg;
|
|
1904
|
+
const cachedData = (await this.queryGetObject(arg))?.data;
|
|
1905
|
+
if (!cachedData)
|
|
1906
|
+
return arg;
|
|
1907
|
+
const owner = cachedData.owner;
|
|
1908
|
+
if (!owner || typeof owner !== "object" || !("Shared" in owner))
|
|
1909
|
+
return {
|
|
1910
|
+
objectId: cachedData.objectId,
|
|
1911
|
+
version: cachedData.version,
|
|
1912
|
+
digest: cachedData.digest
|
|
1913
|
+
};
|
|
1914
|
+
const parameter = parameters[idx];
|
|
1915
|
+
if (typeof parameter !== "object" || !("MutableReference" in parameter || "Reference" in parameter))
|
|
1916
|
+
return arg;
|
|
1917
|
+
return {
|
|
1918
|
+
objectId: cachedData.objectId,
|
|
1919
|
+
initialSharedVersion: owner.Shared.initial_shared_version,
|
|
1920
|
+
mutable: "MutableReference" in parameter
|
|
1921
|
+
};
|
|
1922
|
+
})
|
|
1923
|
+
);
|
|
1924
|
+
txBlock.moveCall(queryTarget, resolvedArgs, typeArgs);
|
|
1684
1925
|
const query = await this.queryClient.fetchQuery({
|
|
1926
|
+
retry: this.retryFn,
|
|
1927
|
+
retryDelay: 1e3,
|
|
1685
1928
|
queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
|
|
1686
1929
|
queryFn: async () => {
|
|
1687
1930
|
return await callWithRateLimit(
|
|
1688
1931
|
this.tokenBucket,
|
|
1689
|
-
() => this.suiKit.inspectTxn(txBlock)
|
|
1932
|
+
async () => await this.suiKit.inspectTxn(txBlock)
|
|
1690
1933
|
);
|
|
1691
1934
|
}
|
|
1692
1935
|
});
|
|
1693
1936
|
return query;
|
|
1694
1937
|
}
|
|
1938
|
+
async queryGetNormalizedMoveFunction(target) {
|
|
1939
|
+
const { address, module, name } = parseStructTag2(target);
|
|
1940
|
+
return this.queryClient.fetchQuery({
|
|
1941
|
+
queryKey: queryKeys.rpc.getNormalizedMoveFunction(target),
|
|
1942
|
+
queryFn: async () => {
|
|
1943
|
+
return await callWithRateLimit(
|
|
1944
|
+
this.tokenBucket,
|
|
1945
|
+
async () => await this.suiKit.client().getNormalizedMoveFunction({
|
|
1946
|
+
package: address,
|
|
1947
|
+
module,
|
|
1948
|
+
function: name
|
|
1949
|
+
})
|
|
1950
|
+
);
|
|
1951
|
+
}
|
|
1952
|
+
});
|
|
1953
|
+
}
|
|
1695
1954
|
/**
|
|
1696
1955
|
* @description Provides cache for getObject of the SuiKit.
|
|
1697
1956
|
* @param objectId
|
|
@@ -1699,12 +1958,19 @@ var ScallopCache = class {
|
|
|
1699
1958
|
* @returns Promise<SuiObjectResponse>
|
|
1700
1959
|
*/
|
|
1701
1960
|
async queryGetObject(objectId, options) {
|
|
1961
|
+
options = {
|
|
1962
|
+
...options,
|
|
1963
|
+
showOwner: true,
|
|
1964
|
+
showContent: true
|
|
1965
|
+
};
|
|
1702
1966
|
return this.queryClient.fetchQuery({
|
|
1703
|
-
|
|
1967
|
+
retry: this.retryFn,
|
|
1968
|
+
retryDelay: 1e3,
|
|
1969
|
+
queryKey: queryKeys.rpc.getObject(objectId, options),
|
|
1704
1970
|
queryFn: async () => {
|
|
1705
1971
|
return await callWithRateLimit(
|
|
1706
1972
|
this.tokenBucket,
|
|
1707
|
-
() => this.client.getObject({
|
|
1973
|
+
async () => await this.client.getObject({
|
|
1708
1974
|
id: objectId,
|
|
1709
1975
|
options
|
|
1710
1976
|
})
|
|
@@ -1723,16 +1989,36 @@ var ScallopCache = class {
|
|
|
1723
1989
|
if (objectIds.length === 0)
|
|
1724
1990
|
return [];
|
|
1725
1991
|
return this.queryClient.fetchQuery({
|
|
1992
|
+
retry: this.retryFn,
|
|
1993
|
+
retryDelay: 1e3,
|
|
1726
1994
|
queryKey: queryKeys.rpc.getObjects(
|
|
1727
1995
|
objectIds,
|
|
1728
1996
|
this.walletAddress,
|
|
1729
1997
|
options
|
|
1730
1998
|
),
|
|
1731
1999
|
queryFn: async () => {
|
|
1732
|
-
|
|
2000
|
+
const results = await callWithRateLimit(
|
|
1733
2001
|
this.tokenBucket,
|
|
1734
|
-
() => this.suiKit.getObjects(objectIds, options)
|
|
2002
|
+
async () => await this.suiKit.getObjects(objectIds, options)
|
|
1735
2003
|
);
|
|
2004
|
+
if (results) {
|
|
2005
|
+
results.forEach((result) => {
|
|
2006
|
+
this.queryClient.setQueriesData(
|
|
2007
|
+
{
|
|
2008
|
+
exact: false,
|
|
2009
|
+
queryKey: queryKeys.rpc.getObject(result.objectId, options)
|
|
2010
|
+
},
|
|
2011
|
+
{
|
|
2012
|
+
data: result,
|
|
2013
|
+
error: null
|
|
2014
|
+
},
|
|
2015
|
+
{
|
|
2016
|
+
updatedAt: Date.now()
|
|
2017
|
+
}
|
|
2018
|
+
);
|
|
2019
|
+
});
|
|
2020
|
+
}
|
|
2021
|
+
return results;
|
|
1736
2022
|
}
|
|
1737
2023
|
});
|
|
1738
2024
|
}
|
|
@@ -1743,44 +2029,94 @@ var ScallopCache = class {
|
|
|
1743
2029
|
*/
|
|
1744
2030
|
async queryGetOwnedObjects(input) {
|
|
1745
2031
|
return this.queryClient.fetchQuery({
|
|
2032
|
+
retry: this.retryFn,
|
|
2033
|
+
retryDelay: 1e3,
|
|
1746
2034
|
queryKey: queryKeys.rpc.getOwnedObjects(input),
|
|
1747
2035
|
queryFn: async () => {
|
|
1748
|
-
|
|
2036
|
+
const results = await callWithRateLimit(
|
|
1749
2037
|
this.tokenBucket,
|
|
1750
|
-
() => this.client.getOwnedObjects(input)
|
|
2038
|
+
async () => await this.client.getOwnedObjects(input)
|
|
1751
2039
|
);
|
|
2040
|
+
if (results && results.data.length > 0) {
|
|
2041
|
+
results.data.filter(
|
|
2042
|
+
(result) => !!result.data
|
|
2043
|
+
).forEach((result) => {
|
|
2044
|
+
this.queryClient.setQueriesData(
|
|
2045
|
+
{
|
|
2046
|
+
exact: false,
|
|
2047
|
+
queryKey: queryKeys.rpc.getObject(
|
|
2048
|
+
result.data.objectId,
|
|
2049
|
+
input.options ?? {}
|
|
2050
|
+
)
|
|
2051
|
+
},
|
|
2052
|
+
{
|
|
2053
|
+
data: result.data,
|
|
2054
|
+
error: null
|
|
2055
|
+
},
|
|
2056
|
+
{
|
|
2057
|
+
updatedAt: Date.now()
|
|
2058
|
+
}
|
|
2059
|
+
);
|
|
2060
|
+
});
|
|
2061
|
+
}
|
|
2062
|
+
return results;
|
|
1752
2063
|
}
|
|
1753
2064
|
});
|
|
1754
2065
|
}
|
|
1755
2066
|
async queryGetDynamicFields(input) {
|
|
1756
2067
|
return this.queryClient.fetchQuery({
|
|
2068
|
+
retry: this.retryFn,
|
|
2069
|
+
retryDelay: 1e3,
|
|
1757
2070
|
queryKey: queryKeys.rpc.getDynamicFields(input),
|
|
1758
2071
|
queryFn: async () => {
|
|
1759
2072
|
return await callWithRateLimit(
|
|
1760
2073
|
this.tokenBucket,
|
|
1761
|
-
() => this.client.getDynamicFields(input)
|
|
2074
|
+
async () => await this.client.getDynamicFields(input)
|
|
1762
2075
|
);
|
|
1763
2076
|
}
|
|
1764
2077
|
});
|
|
1765
2078
|
}
|
|
1766
2079
|
async queryGetDynamicFieldObject(input) {
|
|
1767
2080
|
return this.queryClient.fetchQuery({
|
|
2081
|
+
retry: this.retryFn,
|
|
2082
|
+
retryDelay: (attemptIndex) => Math.min(1e3 * attemptIndex, 8e3),
|
|
1768
2083
|
queryKey: queryKeys.rpc.getDynamicFieldObject(input),
|
|
1769
2084
|
queryFn: async () => {
|
|
1770
|
-
|
|
2085
|
+
const result = await callWithRateLimit(
|
|
1771
2086
|
this.tokenBucket,
|
|
1772
2087
|
() => this.client.getDynamicFieldObject(input)
|
|
1773
2088
|
);
|
|
2089
|
+
if (result?.data) {
|
|
2090
|
+
this.queryClient.setQueriesData(
|
|
2091
|
+
{
|
|
2092
|
+
exact: false,
|
|
2093
|
+
queryKey: queryKeys.rpc.getObject(result?.data.objectId, {
|
|
2094
|
+
showContent: true,
|
|
2095
|
+
showOwner: true
|
|
2096
|
+
})
|
|
2097
|
+
},
|
|
2098
|
+
{
|
|
2099
|
+
data: result.data,
|
|
2100
|
+
error: null
|
|
2101
|
+
},
|
|
2102
|
+
{
|
|
2103
|
+
updatedAt: Date.now()
|
|
2104
|
+
}
|
|
2105
|
+
);
|
|
2106
|
+
}
|
|
2107
|
+
return result;
|
|
1774
2108
|
}
|
|
1775
2109
|
});
|
|
1776
2110
|
}
|
|
1777
2111
|
async queryGetAllCoinBalances(owner) {
|
|
1778
2112
|
return this.queryClient.fetchQuery({
|
|
2113
|
+
retry: this.retryFn,
|
|
2114
|
+
retryDelay: 1e3,
|
|
1779
2115
|
queryKey: queryKeys.rpc.getAllCoinBalances(owner),
|
|
1780
2116
|
queryFn: async () => {
|
|
1781
2117
|
const allBalances = await callWithRateLimit(
|
|
1782
2118
|
this.tokenBucket,
|
|
1783
|
-
() => this.client.getAllBalances({ owner })
|
|
2119
|
+
async () => await this.client.getAllBalances({ owner })
|
|
1784
2120
|
);
|
|
1785
2121
|
if (!allBalances)
|
|
1786
2122
|
return {};
|
|
@@ -2493,7 +2829,7 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
|
|
|
2493
2829
|
...SUPPORT_BORROW_INCENTIVE_POOLS
|
|
2494
2830
|
], indexer = false, marketPools, coinPrices) => {
|
|
2495
2831
|
const borrowIncentivePools = {};
|
|
2496
|
-
marketPools = marketPools ?? await query.getMarketPools(void 0, {
|
|
2832
|
+
marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices, indexer })).pools;
|
|
2497
2833
|
coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools });
|
|
2498
2834
|
if (indexer) {
|
|
2499
2835
|
const borrowIncentivePoolsIndexer = await query.indexer.getBorrowIncentivePools();
|
|
@@ -2518,7 +2854,10 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
|
|
|
2518
2854
|
);
|
|
2519
2855
|
for (const pool of borrowIncentivePoolsQueryData?.incentive_pools ?? []) {
|
|
2520
2856
|
const borrowIncentivePoolPoints = {};
|
|
2521
|
-
const parsedBorrowIncentivePoolData = parseOriginBorrowIncentivePoolData(
|
|
2857
|
+
const parsedBorrowIncentivePoolData = parseOriginBorrowIncentivePoolData(
|
|
2858
|
+
query.utils,
|
|
2859
|
+
pool
|
|
2860
|
+
);
|
|
2522
2861
|
const poolCoinType = normalizeStructTag3(pool.pool_type.name);
|
|
2523
2862
|
const poolCoinName = query.utils.parseCoinNameFromType(
|
|
2524
2863
|
poolCoinType
|
|
@@ -2532,12 +2871,9 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
|
|
|
2532
2871
|
parsedBorrowIncentivePoolData.poolPoints
|
|
2533
2872
|
)) {
|
|
2534
2873
|
const rewardCoinType = poolPoint.pointType;
|
|
2535
|
-
|
|
2874
|
+
const rewardCoinName = query.utils.parseCoinNameFromType(
|
|
2536
2875
|
rewardCoinType
|
|
2537
2876
|
);
|
|
2538
|
-
if (sCoinRawNameToName[rewardCoinName]) {
|
|
2539
|
-
rewardCoinName = sCoinRawNameToName[rewardCoinName];
|
|
2540
|
-
}
|
|
2541
2877
|
const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
|
|
2542
2878
|
const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
|
|
2543
2879
|
const symbol = query.utils.parseSymbol(rewardCoinName);
|
|
@@ -2685,7 +3021,7 @@ var supplyLimitZod = zod.object({
|
|
|
2685
3021
|
value: zod.string()
|
|
2686
3022
|
})
|
|
2687
3023
|
});
|
|
2688
|
-
var supplyLimitKeyType = `
|
|
3024
|
+
var supplyLimitKeyType = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
|
|
2689
3025
|
var getSupplyLimit = async (utils, poolName) => {
|
|
2690
3026
|
try {
|
|
2691
3027
|
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
@@ -2725,10 +3061,15 @@ var isolatedAssetZod = zod2.object({
|
|
|
2725
3061
|
value: zod2.boolean()
|
|
2726
3062
|
})
|
|
2727
3063
|
});
|
|
2728
|
-
var isolatedAssetKeyType = `
|
|
2729
|
-
var getIsolatedAssets = async (
|
|
3064
|
+
var isolatedAssetKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
|
|
3065
|
+
var getIsolatedAssets = async (query) => {
|
|
3066
|
+
if (SUPPORT_POOLS.every((t) => !!POOL_ADDRESSES[t])) {
|
|
3067
|
+
return SUPPORT_POOLS.filter(
|
|
3068
|
+
(t) => !!POOL_ADDRESSES[t]?.isolatedAssetKey && !!POOL_ADDRESSES[t]?.coinType
|
|
3069
|
+
).map((t) => POOL_ADDRESSES[t]?.coinType);
|
|
3070
|
+
}
|
|
2730
3071
|
try {
|
|
2731
|
-
const marketObject = address.get("core.market");
|
|
3072
|
+
const marketObject = query.address.get("core.market");
|
|
2732
3073
|
const isolatedAssets = [];
|
|
2733
3074
|
if (!marketObject)
|
|
2734
3075
|
return isolatedAssets;
|
|
@@ -2738,7 +3079,7 @@ var getIsolatedAssets = async (address) => {
|
|
|
2738
3079
|
return dynamicField.name.type === isolatedAssetKeyType;
|
|
2739
3080
|
};
|
|
2740
3081
|
do {
|
|
2741
|
-
const response = await
|
|
3082
|
+
const response = await query.cache.queryGetDynamicFields({
|
|
2742
3083
|
parentId: marketObject,
|
|
2743
3084
|
cursor: nextCursor,
|
|
2744
3085
|
limit: 10
|
|
@@ -2761,32 +3102,30 @@ var getIsolatedAssets = async (address) => {
|
|
|
2761
3102
|
}
|
|
2762
3103
|
};
|
|
2763
3104
|
var isIsolatedAsset = async (utils, coinName) => {
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
3105
|
+
if (POOL_ADDRESSES[coinName]) {
|
|
3106
|
+
return !!POOL_ADDRESSES[coinName].isolatedAssetKey;
|
|
3107
|
+
}
|
|
3108
|
+
const marketObject = utils.address.get("core.market");
|
|
3109
|
+
const cachedData = utils.address.cache.queryClient.getQueryData([
|
|
3110
|
+
"getDynamicFields",
|
|
3111
|
+
marketObject
|
|
3112
|
+
]);
|
|
3113
|
+
if (cachedData) {
|
|
3114
|
+
const coinType2 = utils.parseCoinType(coinName);
|
|
3115
|
+
return cachedData.includes(coinType2);
|
|
3116
|
+
}
|
|
3117
|
+
const coinType = utils.parseCoinType(coinName).slice(2);
|
|
3118
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
3119
|
+
parentId: marketObject,
|
|
3120
|
+
name: {
|
|
3121
|
+
type: isolatedAssetKeyType,
|
|
3122
|
+
value: coinType
|
|
2773
3123
|
}
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
name: {
|
|
2778
|
-
type: isolatedAssetKeyType,
|
|
2779
|
-
value: coinType
|
|
2780
|
-
}
|
|
2781
|
-
});
|
|
2782
|
-
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
2783
|
-
if (!parsedData.success)
|
|
2784
|
-
return false;
|
|
2785
|
-
return parsedData.data.fields.value;
|
|
2786
|
-
} catch (e) {
|
|
2787
|
-
console.error(e);
|
|
3124
|
+
});
|
|
3125
|
+
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
3126
|
+
if (!parsedData.success)
|
|
2788
3127
|
return false;
|
|
2789
|
-
|
|
3128
|
+
return parsedData.data.fields.value;
|
|
2790
3129
|
};
|
|
2791
3130
|
|
|
2792
3131
|
// src/queries/borrowLimitQuery.ts
|
|
@@ -2805,7 +3144,7 @@ var borrowLimitZod = zod3.object({
|
|
|
2805
3144
|
value: zod3.string()
|
|
2806
3145
|
})
|
|
2807
3146
|
});
|
|
2808
|
-
var borrowLimitKeyType = `
|
|
3147
|
+
var borrowLimitKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
|
|
2809
3148
|
var getBorrowLimit = async (utils, poolName) => {
|
|
2810
3149
|
try {
|
|
2811
3150
|
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
@@ -2829,6 +3168,17 @@ var getBorrowLimit = async (utils, poolName) => {
|
|
|
2829
3168
|
}
|
|
2830
3169
|
};
|
|
2831
3170
|
|
|
3171
|
+
// src/queries/objectsQuery.ts
|
|
3172
|
+
var queryMultipleObjects = async (cache, objectIds, options, partitionSize = 50) => {
|
|
3173
|
+
const objectIdsPartition = partitionArray(objectIds, partitionSize);
|
|
3174
|
+
const objects = [];
|
|
3175
|
+
for (const objectIds2 of objectIdsPartition) {
|
|
3176
|
+
const result = await cache.queryGetObjects(objectIds2, options);
|
|
3177
|
+
objects.push(...result);
|
|
3178
|
+
}
|
|
3179
|
+
return objects;
|
|
3180
|
+
};
|
|
3181
|
+
|
|
2832
3182
|
// src/queries/coreQuery.ts
|
|
2833
3183
|
var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
2834
3184
|
coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
|
|
@@ -2885,19 +3235,15 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2885
3235
|
borrowRateOnMidKink: pool.borrowRateOnMidKink,
|
|
2886
3236
|
highKink: pool.highKink,
|
|
2887
3237
|
midKink: pool.midKink,
|
|
2888
|
-
minBorrowAmount: pool.minBorrowAmount
|
|
3238
|
+
minBorrowAmount: pool.minBorrowAmount,
|
|
3239
|
+
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
3240
|
+
supplyLimit: await getSupplyLimit(query.utils, poolCoinName) ?? "0",
|
|
3241
|
+
borrowLimit: await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
2889
3242
|
});
|
|
2890
3243
|
const calculatedMarketPoolData = calculateMarketPoolData(
|
|
2891
3244
|
query.utils,
|
|
2892
3245
|
parsedMarketPoolData
|
|
2893
3246
|
);
|
|
2894
|
-
const coinDecimal = query.utils.getCoinDecimal(poolCoinName);
|
|
2895
|
-
const maxSupplyCoin = BigNumber3(
|
|
2896
|
-
await getSupplyLimit(query.utils, poolCoinName) ?? "0"
|
|
2897
|
-
).shiftedBy(-coinDecimal).toNumber();
|
|
2898
|
-
const maxBorrowCoin = BigNumber3(
|
|
2899
|
-
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
2900
|
-
).shiftedBy(-coinDecimal).toNumber();
|
|
2901
3247
|
pools[poolCoinName] = {
|
|
2902
3248
|
coinName: poolCoinName,
|
|
2903
3249
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
@@ -2907,7 +3253,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2907
3253
|
query.utils.parseMarketCoinName(poolCoinName)
|
|
2908
3254
|
),
|
|
2909
3255
|
coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
|
|
2910
|
-
coinDecimal,
|
|
2911
3256
|
coinPrice,
|
|
2912
3257
|
highKink: parsedMarketPoolData.highKink,
|
|
2913
3258
|
midKink: parsedMarketPoolData.midKink,
|
|
@@ -2916,10 +3261,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2916
3261
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
2917
3262
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2918
3263
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2919
|
-
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2920
|
-
// isIsolated: false,
|
|
2921
|
-
maxSupplyCoin,
|
|
2922
|
-
maxBorrowCoin,
|
|
2923
3264
|
...calculatedMarketPoolData
|
|
2924
3265
|
};
|
|
2925
3266
|
}
|
|
@@ -2935,10 +3276,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2935
3276
|
collateralFactor: collateral.collateralFactor,
|
|
2936
3277
|
liquidationFactor: collateral.liquidationFactor,
|
|
2937
3278
|
liquidationDiscount: collateral.liquidationDiscount,
|
|
2938
|
-
|
|
3279
|
+
liquidationPenalty: collateral.liquidationPanelty,
|
|
2939
3280
|
liquidationReserveFactor: collateral.liquidationReserveFactor,
|
|
2940
3281
|
maxCollateralAmount: collateral.maxCollateralAmount,
|
|
2941
|
-
totalCollateralAmount: collateral.totalCollateralAmount
|
|
3282
|
+
totalCollateralAmount: collateral.totalCollateralAmount,
|
|
3283
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
|
|
2942
3284
|
});
|
|
2943
3285
|
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
2944
3286
|
query.utils,
|
|
@@ -2950,14 +3292,12 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2950
3292
|
coinType,
|
|
2951
3293
|
marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
|
|
2952
3294
|
coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
|
|
2953
|
-
coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
|
|
2954
3295
|
coinPrice,
|
|
2955
3296
|
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
2956
3297
|
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
2957
3298
|
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
2958
|
-
|
|
3299
|
+
liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
|
|
2959
3300
|
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
2960
|
-
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
2961
3301
|
...calculatedMarketCollateralData
|
|
2962
3302
|
};
|
|
2963
3303
|
}
|
|
@@ -2967,44 +3307,216 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2967
3307
|
// data: marketData,
|
|
2968
3308
|
};
|
|
2969
3309
|
};
|
|
2970
|
-
var
|
|
2971
|
-
const
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
3310
|
+
var queryRequiredMarketObjects = async (query, poolCoinNames) => {
|
|
3311
|
+
const tasks = poolCoinNames.map((t) => ({
|
|
3312
|
+
poolCoinName: t,
|
|
3313
|
+
balanceSheet: POOL_ADDRESSES[t]?.lendingPoolAddress,
|
|
3314
|
+
collateralStat: POOL_ADDRESSES[t]?.collateralPoolAddress,
|
|
3315
|
+
borrowDynamic: POOL_ADDRESSES[t]?.borrowDynamic,
|
|
3316
|
+
interestModel: POOL_ADDRESSES[t]?.interestModel,
|
|
3317
|
+
riskModel: POOL_ADDRESSES[t]?.riskModel,
|
|
3318
|
+
borrowFeeKey: POOL_ADDRESSES[t]?.borrowFeeKey,
|
|
3319
|
+
supplyLimitKey: POOL_ADDRESSES[t]?.supplyLimitKey,
|
|
3320
|
+
borrowLimitKey: POOL_ADDRESSES[t]?.borrowLimitKey,
|
|
3321
|
+
isolatedAssetKey: POOL_ADDRESSES[t]?.isolatedAssetKey
|
|
3322
|
+
}));
|
|
3323
|
+
const [
|
|
3324
|
+
balanceSheetObjects,
|
|
3325
|
+
collateralStatObjects,
|
|
3326
|
+
borrowDynamicObjects,
|
|
3327
|
+
interestModelObjects,
|
|
3328
|
+
riskModelObjects,
|
|
3329
|
+
borrowFeeObjects,
|
|
3330
|
+
supplyLimitObjects,
|
|
3331
|
+
borrowLimitObjects,
|
|
3332
|
+
isolatedAssetObjects
|
|
3333
|
+
] = await Promise.all([
|
|
3334
|
+
queryMultipleObjects(
|
|
3335
|
+
query.cache,
|
|
3336
|
+
tasks.map((task) => task.balanceSheet).filter((t) => !!t)
|
|
3337
|
+
),
|
|
3338
|
+
queryMultipleObjects(
|
|
3339
|
+
query.cache,
|
|
3340
|
+
tasks.map((task) => task.collateralStat).filter((t) => !!t)
|
|
3341
|
+
),
|
|
3342
|
+
queryMultipleObjects(
|
|
3343
|
+
query.cache,
|
|
3344
|
+
tasks.map((task) => task.borrowDynamic).filter((t) => !!t)
|
|
3345
|
+
),
|
|
3346
|
+
queryMultipleObjects(
|
|
3347
|
+
query.cache,
|
|
3348
|
+
tasks.map((task) => task.interestModel).filter((t) => !!t)
|
|
3349
|
+
),
|
|
3350
|
+
queryMultipleObjects(
|
|
3351
|
+
query.cache,
|
|
3352
|
+
tasks.map((task) => task.riskModel).filter((t) => !!t)
|
|
3353
|
+
),
|
|
3354
|
+
queryMultipleObjects(
|
|
3355
|
+
query.cache,
|
|
3356
|
+
tasks.map((task) => task.borrowFeeKey).filter((t) => !!t)
|
|
3357
|
+
),
|
|
3358
|
+
queryMultipleObjects(
|
|
3359
|
+
query.cache,
|
|
3360
|
+
tasks.map((task) => task.supplyLimitKey).filter((t) => !!t)
|
|
3361
|
+
),
|
|
3362
|
+
queryMultipleObjects(
|
|
3363
|
+
query.cache,
|
|
3364
|
+
tasks.map((task) => task.borrowLimitKey).filter((t) => !!t)
|
|
3365
|
+
),
|
|
3366
|
+
queryMultipleObjects(
|
|
3367
|
+
query.cache,
|
|
3368
|
+
tasks.map((task) => task.isolatedAssetKey).filter((t) => !!t)
|
|
3369
|
+
)
|
|
3370
|
+
]);
|
|
3371
|
+
const mapObjects = (tasks2, fetchedObjects) => {
|
|
3372
|
+
const resultMap = {};
|
|
3373
|
+
let fetchedIndex = 0;
|
|
3374
|
+
for (const task of tasks2) {
|
|
3375
|
+
const key = task[Object.keys(task)[1]];
|
|
3376
|
+
if (key) {
|
|
3377
|
+
resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
|
|
3378
|
+
fetchedIndex++;
|
|
3379
|
+
}
|
|
3380
|
+
}
|
|
3381
|
+
return resultMap;
|
|
3382
|
+
};
|
|
3383
|
+
const balanceSheetMap = mapObjects(tasks, balanceSheetObjects);
|
|
3384
|
+
const collateralStatMap = mapObjects(tasks, collateralStatObjects);
|
|
3385
|
+
const borrowDynamicMap = mapObjects(tasks, borrowDynamicObjects);
|
|
3386
|
+
const interestModelMap = mapObjects(tasks, interestModelObjects);
|
|
3387
|
+
const riskModelMap = mapObjects(tasks, riskModelObjects);
|
|
3388
|
+
const borrowFeeMap = mapObjects(tasks, borrowFeeObjects);
|
|
3389
|
+
const supplyLimitMap = mapObjects(tasks, supplyLimitObjects);
|
|
3390
|
+
const borrowLimitMap = mapObjects(tasks, borrowLimitObjects);
|
|
3391
|
+
const isolatedAssetMap = mapObjects(tasks, isolatedAssetObjects);
|
|
3392
|
+
return poolCoinNames.reduce(
|
|
3393
|
+
(acc, name) => {
|
|
3394
|
+
acc[name] = {
|
|
3395
|
+
balanceSheet: balanceSheetMap[name],
|
|
3396
|
+
collateralStat: collateralStatMap[name],
|
|
3397
|
+
borrowDynamic: borrowDynamicMap[name],
|
|
3398
|
+
interestModel: interestModelMap[name],
|
|
3399
|
+
riskModel: riskModelMap[name],
|
|
3400
|
+
borrowFeeKey: borrowFeeMap[name],
|
|
3401
|
+
supplyLimitKey: supplyLimitMap[name],
|
|
3402
|
+
borrowLimitKey: borrowLimitMap[name],
|
|
3403
|
+
isolatedAssetKey: isolatedAssetMap[name]
|
|
3404
|
+
};
|
|
3405
|
+
return acc;
|
|
3406
|
+
},
|
|
3407
|
+
{}
|
|
3408
|
+
);
|
|
3409
|
+
};
|
|
3410
|
+
var getMarketPools = async (query, poolCoinNames, indexer = false, coinPrices) => {
|
|
2975
3411
|
coinPrices = coinPrices ?? await query.utils.getCoinPrices();
|
|
2976
|
-
const
|
|
3412
|
+
const pools = {};
|
|
3413
|
+
const collaterals = {};
|
|
2977
3414
|
if (indexer) {
|
|
2978
|
-
const
|
|
2979
|
-
const
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
3415
|
+
const marketIndexer = await query.indexer.getMarket();
|
|
3416
|
+
const updatePools = (item) => {
|
|
3417
|
+
item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
|
|
3418
|
+
item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
|
|
3419
|
+
pools[item.coinName] = item;
|
|
3420
|
+
};
|
|
3421
|
+
const updateCollaterals = (item) => {
|
|
3422
|
+
item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
|
|
3423
|
+
item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
|
|
3424
|
+
collaterals[item.coinName] = item;
|
|
3425
|
+
};
|
|
3426
|
+
Object.values(marketIndexer.pools).forEach(updatePools);
|
|
3427
|
+
Object.values(marketIndexer.collaterals).forEach(updateCollaterals);
|
|
3428
|
+
return {
|
|
3429
|
+
pools,
|
|
3430
|
+
collaterals
|
|
2987
3431
|
};
|
|
2988
|
-
Object.values(marketPoolsIndexer).forEach(updateMarketPool);
|
|
2989
|
-
return marketPools;
|
|
2990
3432
|
}
|
|
3433
|
+
const requiredObjects = await queryRequiredMarketObjects(
|
|
3434
|
+
query,
|
|
3435
|
+
poolCoinNames
|
|
3436
|
+
);
|
|
2991
3437
|
await Promise.allSettled(
|
|
2992
3438
|
poolCoinNames.map(async (poolCoinName) => {
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3439
|
+
try {
|
|
3440
|
+
const result = await getMarketPool(
|
|
3441
|
+
query,
|
|
3442
|
+
poolCoinName,
|
|
3443
|
+
indexer,
|
|
3444
|
+
coinPrices?.[poolCoinName] ?? 0,
|
|
3445
|
+
requiredObjects[poolCoinName]
|
|
3446
|
+
);
|
|
3447
|
+
if (result?.marketPool) {
|
|
3448
|
+
pools[poolCoinName] = result?.marketPool;
|
|
3449
|
+
}
|
|
3450
|
+
if (result?.collateral) {
|
|
3451
|
+
collaterals[poolCoinName] = result.collateral;
|
|
3452
|
+
}
|
|
3453
|
+
} catch (e) {
|
|
3454
|
+
console.error(e);
|
|
3002
3455
|
}
|
|
3003
3456
|
})
|
|
3004
3457
|
);
|
|
3005
|
-
return
|
|
3458
|
+
return {
|
|
3459
|
+
pools,
|
|
3460
|
+
collaterals
|
|
3461
|
+
};
|
|
3006
3462
|
};
|
|
3007
|
-
var
|
|
3463
|
+
var parseMarketPoolObjects = ({
|
|
3464
|
+
balanceSheet,
|
|
3465
|
+
borrowDynamic,
|
|
3466
|
+
collateralStat,
|
|
3467
|
+
interestModel,
|
|
3468
|
+
riskModel,
|
|
3469
|
+
borrowFeeKey,
|
|
3470
|
+
supplyLimitKey,
|
|
3471
|
+
borrowLimitKey,
|
|
3472
|
+
isolatedAssetKey
|
|
3473
|
+
}) => {
|
|
3474
|
+
const _balanceSheet = parseObjectAs(balanceSheet);
|
|
3475
|
+
const _interestModel = parseObjectAs(interestModel);
|
|
3476
|
+
const _borrowDynamic = parseObjectAs(borrowDynamic);
|
|
3477
|
+
const _borrowFee = parseObjectAs(borrowFeeKey);
|
|
3478
|
+
const _supplyLimit = supplyLimitKey ? parseObjectAs(supplyLimitKey) : "0";
|
|
3479
|
+
const _borrowLimit = borrowLimitKey ? parseObjectAs(borrowLimitKey) : "0";
|
|
3480
|
+
const _riskModel = riskModel ? parseObjectAs(riskModel) : void 0;
|
|
3481
|
+
const _collateralStat = collateralStat ? parseObjectAs(collateralStat) : void 0;
|
|
3482
|
+
const parsedOriginMarketCollateral = _riskModel && _collateralStat ? {
|
|
3483
|
+
type: _interestModel.type.fields,
|
|
3484
|
+
isIsolated: !!isolatedAssetKey,
|
|
3485
|
+
collateralFactor: _riskModel.collateral_factor.fields,
|
|
3486
|
+
liquidationFactor: _riskModel.liquidation_factor.fields,
|
|
3487
|
+
liquidationPenalty: _riskModel.liquidation_penalty.fields,
|
|
3488
|
+
liquidationDiscount: _riskModel.liquidation_discount.fields,
|
|
3489
|
+
liquidationReserveFactor: _riskModel.liquidation_revenue_factor.fields,
|
|
3490
|
+
maxCollateralAmount: _riskModel.max_collateral_amount,
|
|
3491
|
+
totalCollateralAmount: _collateralStat.amount
|
|
3492
|
+
} : void 0;
|
|
3493
|
+
return {
|
|
3494
|
+
type: _interestModel.type.fields,
|
|
3495
|
+
maxBorrowRate: _interestModel.max_borrow_rate.fields,
|
|
3496
|
+
interestRate: _borrowDynamic.interest_rate.fields,
|
|
3497
|
+
interestRateScale: _borrowDynamic.interest_rate_scale,
|
|
3498
|
+
borrowIndex: _borrowDynamic.borrow_index,
|
|
3499
|
+
lastUpdated: _borrowDynamic.last_updated,
|
|
3500
|
+
cash: _balanceSheet.cash,
|
|
3501
|
+
debt: _balanceSheet.debt,
|
|
3502
|
+
marketCoinSupply: _balanceSheet.market_coin_supply,
|
|
3503
|
+
reserve: _balanceSheet.revenue,
|
|
3504
|
+
reserveFactor: _interestModel.revenue_factor.fields,
|
|
3505
|
+
borrowWeight: _interestModel.borrow_weight.fields,
|
|
3506
|
+
borrowFeeRate: _borrowFee,
|
|
3507
|
+
baseBorrowRatePerSec: _interestModel.base_borrow_rate_per_sec.fields,
|
|
3508
|
+
borrowRateOnHighKink: _interestModel.borrow_rate_on_high_kink.fields,
|
|
3509
|
+
borrowRateOnMidKink: _interestModel.borrow_rate_on_mid_kink.fields,
|
|
3510
|
+
highKink: _interestModel.high_kink.fields,
|
|
3511
|
+
midKink: _interestModel.mid_kink.fields,
|
|
3512
|
+
minBorrowAmount: _interestModel.min_borrow_amount,
|
|
3513
|
+
isIsolated: !!isolatedAssetKey,
|
|
3514
|
+
supplyLimit: _supplyLimit,
|
|
3515
|
+
borrowLimit: _borrowLimit,
|
|
3516
|
+
parsedOriginMarketCollateral
|
|
3517
|
+
};
|
|
3518
|
+
};
|
|
3519
|
+
var getMarketPool = async (query, poolCoinName, indexer = false, coinPrice, requiredObjects) => {
|
|
3008
3520
|
coinPrice = coinPrice ?? (await query.utils.getCoinPrices())?.[poolCoinName];
|
|
3009
3521
|
if (indexer) {
|
|
3010
3522
|
const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
|
|
@@ -3015,135 +3527,70 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
3015
3527
|
marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
|
|
3016
3528
|
marketPoolIndexer.coinName
|
|
3017
3529
|
);
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
3023
|
-
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
const coinType = query.utils.parseCoinType(poolCoinName);
|
|
3028
|
-
const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
|
|
3029
|
-
const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3030
|
-
parentId: balanceSheetParentId,
|
|
3031
|
-
name: {
|
|
3032
|
-
type: "0x1::type_name::TypeName",
|
|
3033
|
-
value: {
|
|
3034
|
-
name: coinType.substring(2)
|
|
3035
|
-
}
|
|
3036
|
-
}
|
|
3037
|
-
});
|
|
3038
|
-
const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
|
|
3039
|
-
if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
|
|
3040
|
-
throw new Error(
|
|
3041
|
-
`Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
|
|
3042
|
-
);
|
|
3043
|
-
const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
|
|
3044
|
-
const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
|
|
3045
|
-
const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3046
|
-
parentId: borrowIndexParentId,
|
|
3047
|
-
name: {
|
|
3048
|
-
type: "0x1::type_name::TypeName",
|
|
3049
|
-
value: {
|
|
3050
|
-
name: coinType.substring(2)
|
|
3051
|
-
}
|
|
3052
|
-
}
|
|
3053
|
-
});
|
|
3054
|
-
const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
|
|
3055
|
-
if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
|
|
3056
|
-
throw new Error(
|
|
3057
|
-
`Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
|
|
3058
|
-
);
|
|
3059
|
-
const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
|
|
3060
|
-
const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
|
|
3061
|
-
const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3062
|
-
parentId: interestModelParentId,
|
|
3063
|
-
name: {
|
|
3064
|
-
type: "0x1::type_name::TypeName",
|
|
3065
|
-
value: {
|
|
3066
|
-
name: coinType.substring(2)
|
|
3067
|
-
}
|
|
3530
|
+
let marketCollateralIndexer = void 0;
|
|
3531
|
+
if (SUPPORT_COLLATERALS.includes(poolCoinName)) {
|
|
3532
|
+
marketCollateralIndexer = await query.indexer.getMarketCollateral(
|
|
3533
|
+
poolCoinName
|
|
3534
|
+
);
|
|
3535
|
+
marketCollateralIndexer.coinPrice = coinPrice ?? marketCollateralIndexer.coinPrice;
|
|
3536
|
+
marketCollateralIndexer.coinWrappedType = query.utils.getCoinWrappedType(
|
|
3537
|
+
marketCollateralIndexer.coinName
|
|
3538
|
+
);
|
|
3068
3539
|
}
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
const
|
|
3076
|
-
const
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
name: {
|
|
3080
|
-
type: `${BORROW_FEE_PROTOCOL_ID}::market_dynamic_keys::BorrowFeeKey`,
|
|
3081
|
-
value: {
|
|
3082
|
-
type: {
|
|
3083
|
-
name: coinType.substring(2)
|
|
3084
|
-
}
|
|
3085
|
-
}
|
|
3086
|
-
}
|
|
3087
|
-
});
|
|
3088
|
-
const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
|
|
3089
|
-
if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
|
|
3090
|
-
return { value: "0" };
|
|
3091
|
-
return borrowFeeDynamicFieldObject.content.fields.value.fields;
|
|
3092
|
-
};
|
|
3093
|
-
const parsedMarketPoolData = parseOriginMarketPoolData({
|
|
3094
|
-
type: interestModel.type.fields,
|
|
3095
|
-
maxBorrowRate: interestModel.max_borrow_rate.fields,
|
|
3096
|
-
interestRate: borrowIndex.interest_rate.fields,
|
|
3097
|
-
interestRateScale: borrowIndex.interest_rate_scale,
|
|
3098
|
-
borrowIndex: borrowIndex.borrow_index,
|
|
3099
|
-
lastUpdated: borrowIndex.last_updated,
|
|
3100
|
-
cash: balanceSheet.cash,
|
|
3101
|
-
debt: balanceSheet.debt,
|
|
3102
|
-
marketCoinSupply: balanceSheet.market_coin_supply,
|
|
3103
|
-
reserve: balanceSheet.revenue,
|
|
3104
|
-
reserveFactor: interestModel.revenue_factor.fields,
|
|
3105
|
-
borrowWeight: interestModel.borrow_weight.fields,
|
|
3106
|
-
borrowFeeRate: await getBorrowFee(),
|
|
3107
|
-
baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
|
|
3108
|
-
borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
|
|
3109
|
-
borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
|
|
3110
|
-
highKink: interestModel.high_kink.fields,
|
|
3111
|
-
midKink: interestModel.mid_kink.fields,
|
|
3112
|
-
minBorrowAmount: interestModel.min_borrow_amount
|
|
3113
|
-
});
|
|
3540
|
+
return {
|
|
3541
|
+
marketPool: marketPoolIndexer,
|
|
3542
|
+
collateral: marketCollateralIndexer
|
|
3543
|
+
};
|
|
3544
|
+
}
|
|
3545
|
+
requiredObjects ?? (requiredObjects = (await queryRequiredMarketObjects(query, [poolCoinName]))[poolCoinName]);
|
|
3546
|
+
const parsedMarketPoolObjects = parseMarketPoolObjects(requiredObjects);
|
|
3547
|
+
const parsedMarketPoolData = parseOriginMarketPoolData(
|
|
3548
|
+
parsedMarketPoolObjects
|
|
3549
|
+
);
|
|
3114
3550
|
const calculatedMarketPoolData = calculateMarketPoolData(
|
|
3115
3551
|
query.utils,
|
|
3116
3552
|
parsedMarketPoolData
|
|
3117
3553
|
);
|
|
3118
|
-
const
|
|
3119
|
-
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
const maxBorrowCoin = BigNumber3(
|
|
3123
|
-
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
3124
|
-
).shiftedBy(-coinDecimal).toNumber();
|
|
3125
|
-
return {
|
|
3554
|
+
const parsedMarketCollateralData = parsedMarketPoolObjects.parsedOriginMarketCollateral ? parseOriginMarketCollateralData(
|
|
3555
|
+
parsedMarketPoolObjects.parsedOriginMarketCollateral
|
|
3556
|
+
) : void 0;
|
|
3557
|
+
const basePoolData = () => ({
|
|
3126
3558
|
coinName: poolCoinName,
|
|
3127
3559
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
3128
|
-
coinType: query.utils.parseCoinType(poolCoinName),
|
|
3129
3560
|
marketCoinType: query.utils.parseMarketCoinType(poolCoinName),
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
|
|
3133
|
-
|
|
3134
|
-
|
|
3135
|
-
|
|
3136
|
-
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
|
|
3140
|
-
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3561
|
+
coinType: query.utils.parseCoinType(poolCoinName)
|
|
3562
|
+
});
|
|
3563
|
+
return {
|
|
3564
|
+
marketPool: {
|
|
3565
|
+
...basePoolData(),
|
|
3566
|
+
sCoinType: query.utils.parseSCoinType(
|
|
3567
|
+
query.utils.parseMarketCoinName(poolCoinName)
|
|
3568
|
+
),
|
|
3569
|
+
coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
|
|
3570
|
+
coinPrice: coinPrice ?? 0,
|
|
3571
|
+
highKink: parsedMarketPoolData.highKink,
|
|
3572
|
+
midKink: parsedMarketPoolData.midKink,
|
|
3573
|
+
reserveFactor: parsedMarketPoolData.reserveFactor,
|
|
3574
|
+
borrowWeight: parsedMarketPoolData.borrowWeight,
|
|
3575
|
+
borrowFee: parsedMarketPoolData.borrowFee,
|
|
3576
|
+
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
3577
|
+
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
3578
|
+
...calculatedMarketPoolData
|
|
3579
|
+
},
|
|
3580
|
+
collateral: parsedMarketCollateralData ? {
|
|
3581
|
+
...basePoolData(),
|
|
3582
|
+
coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
|
|
3583
|
+
coinPrice,
|
|
3584
|
+
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
3585
|
+
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
3586
|
+
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
3587
|
+
liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
|
|
3588
|
+
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3589
|
+
...calculateMarketCollateralData(
|
|
3590
|
+
query.utils,
|
|
3591
|
+
parsedMarketCollateralData
|
|
3592
|
+
)
|
|
3593
|
+
} : void 0
|
|
3147
3594
|
};
|
|
3148
3595
|
};
|
|
3149
3596
|
var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
|
|
@@ -3238,10 +3685,11 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
|
|
|
3238
3685
|
collateralFactor: riskModel.collateral_factor.fields,
|
|
3239
3686
|
liquidationFactor: riskModel.liquidation_factor.fields,
|
|
3240
3687
|
liquidationDiscount: riskModel.liquidation_discount.fields,
|
|
3241
|
-
|
|
3688
|
+
liquidationPenalty: riskModel.liquidation_penalty.fields,
|
|
3242
3689
|
liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
|
|
3243
3690
|
maxCollateralAmount: riskModel.max_collateral_amount,
|
|
3244
|
-
totalCollateralAmount: collateralStat.amount
|
|
3691
|
+
totalCollateralAmount: collateralStat.amount,
|
|
3692
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
|
|
3245
3693
|
});
|
|
3246
3694
|
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
3247
3695
|
query.utils,
|
|
@@ -3253,14 +3701,12 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
|
|
|
3253
3701
|
coinType: query.utils.parseCoinType(collateralCoinName),
|
|
3254
3702
|
marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
|
|
3255
3703
|
coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
|
|
3256
|
-
coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
|
|
3257
3704
|
coinPrice: coinPrice ?? 0,
|
|
3258
3705
|
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
3259
3706
|
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
3260
3707
|
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
3261
|
-
|
|
3708
|
+
liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
|
|
3262
3709
|
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3263
|
-
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
3264
3710
|
...calculatedMarketCollateralData
|
|
3265
3711
|
};
|
|
3266
3712
|
};
|
|
@@ -3296,14 +3742,26 @@ var getObligations = async ({
|
|
|
3296
3742
|
} while (hasNextPage);
|
|
3297
3743
|
const keyObjects = keyObjectsResponse.filter((ref) => !!ref.data);
|
|
3298
3744
|
const obligations = [];
|
|
3745
|
+
const obligationsObjects = await queryMultipleObjects(
|
|
3746
|
+
address.cache,
|
|
3747
|
+
keyObjects.map((ref) => ref.data?.content).filter(
|
|
3748
|
+
(content) => content?.dataType === "moveObject"
|
|
3749
|
+
).map((content) => content.fields.ownership.fields.of),
|
|
3750
|
+
{
|
|
3751
|
+
showContent: true
|
|
3752
|
+
}
|
|
3753
|
+
);
|
|
3299
3754
|
await Promise.allSettled(
|
|
3300
|
-
keyObjects.map(async ({ data }) => {
|
|
3755
|
+
keyObjects.map(async ({ data }, idx) => {
|
|
3301
3756
|
const keyId = data?.objectId;
|
|
3302
3757
|
const content = data?.content;
|
|
3303
3758
|
if (keyId && content && "fields" in content) {
|
|
3304
3759
|
const fields = content.fields;
|
|
3305
3760
|
const obligationId = String(fields.ownership.fields.of);
|
|
3306
|
-
const locked = await getObligationLocked(
|
|
3761
|
+
const locked = await getObligationLocked(
|
|
3762
|
+
address.cache,
|
|
3763
|
+
obligationsObjects[idx]
|
|
3764
|
+
);
|
|
3307
3765
|
obligations.push({ id: obligationId, keyId, locked });
|
|
3308
3766
|
}
|
|
3309
3767
|
})
|
|
@@ -3311,14 +3769,12 @@ var getObligations = async ({
|
|
|
3311
3769
|
return obligations;
|
|
3312
3770
|
};
|
|
3313
3771
|
var getObligationLocked = async (cache, obligation) => {
|
|
3314
|
-
const
|
|
3772
|
+
const obligationObjectData = typeof obligation === "string" ? (await cache.queryGetObject(obligation, {
|
|
3315
3773
|
showContent: true
|
|
3316
3774
|
}))?.data : obligation;
|
|
3317
3775
|
let obligationLocked = false;
|
|
3318
|
-
if (
|
|
3319
|
-
obligationLocked = Boolean(
|
|
3320
|
-
obligationObjectResponse.content.fields.lock_key
|
|
3321
|
-
);
|
|
3776
|
+
if (obligationObjectData && obligationObjectData?.content?.dataType === "moveObject" && "lock_key" in obligationObjectData.content.fields) {
|
|
3777
|
+
obligationLocked = Boolean(obligationObjectData.content.fields.lock_key);
|
|
3322
3778
|
}
|
|
3323
3779
|
return obligationLocked;
|
|
3324
3780
|
};
|
|
@@ -3501,10 +3957,10 @@ var getLendings = async (query, poolCoinNames = [...SUPPORT_POOLS], ownerAddress
|
|
|
3501
3957
|
(marketCoinName) => SUPPORT_SPOOLS.includes(marketCoinName)
|
|
3502
3958
|
);
|
|
3503
3959
|
const coinPrices = await query.utils.getCoinPrices();
|
|
3504
|
-
const marketPools = await query.getMarketPools(poolCoinNames, {
|
|
3960
|
+
const marketPools = (await query.getMarketPools(poolCoinNames, {
|
|
3505
3961
|
indexer,
|
|
3506
3962
|
coinPrices
|
|
3507
|
-
});
|
|
3963
|
+
})).pools;
|
|
3508
3964
|
const spools = await query.getSpools(stakeMarketCoinNames, {
|
|
3509
3965
|
indexer,
|
|
3510
3966
|
marketPools,
|
|
@@ -3672,8 +4128,10 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
|
|
|
3672
4128
|
return lending;
|
|
3673
4129
|
};
|
|
3674
4130
|
var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
|
|
3675
|
-
const
|
|
3676
|
-
const
|
|
4131
|
+
const market = await query.queryMarket({ indexer });
|
|
4132
|
+
const coinPrices = await query.getAllCoinPrices({
|
|
4133
|
+
marketPools: market.pools
|
|
4134
|
+
});
|
|
3677
4135
|
const [coinAmounts, obligations] = await Promise.all([
|
|
3678
4136
|
query.getCoinAmounts(void 0, ownerAddress),
|
|
3679
4137
|
query.getObligations(ownerAddress)
|
|
@@ -3695,17 +4153,21 @@ var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
|
|
|
3695
4153
|
return obligationAccounts;
|
|
3696
4154
|
};
|
|
3697
4155
|
var getObligationAccount = async (query, obligationId, ownerAddress, indexer = false, market, coinPrices, coinAmounts) => {
|
|
4156
|
+
const coinNames = Array.from(
|
|
4157
|
+
/* @__PURE__ */ new Set([...SUPPORT_POOLS, ...SUPPORT_COLLATERALS])
|
|
4158
|
+
);
|
|
3698
4159
|
const collateralAssetCoinNames = [
|
|
3699
4160
|
...SUPPORT_COLLATERALS
|
|
3700
4161
|
];
|
|
3701
|
-
market = market ?? await query.
|
|
4162
|
+
market = market ?? await query.getMarketPools(void 0, { indexer });
|
|
3702
4163
|
coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools: market.pools });
|
|
3703
|
-
coinAmounts = coinAmounts
|
|
4164
|
+
coinAmounts = coinAmounts ?? await query.getCoinAmounts(coinNames, ownerAddress);
|
|
3704
4165
|
const [obligationQuery, borrowIncentivePools, borrowIncentiveAccounts] = await Promise.all([
|
|
3705
4166
|
query.queryObligation(obligationId),
|
|
3706
4167
|
query.getBorrowIncentivePools(void 0, {
|
|
3707
4168
|
coinPrices,
|
|
3708
|
-
indexer
|
|
4169
|
+
indexer,
|
|
4170
|
+
marketPools: market.pools
|
|
3709
4171
|
}),
|
|
3710
4172
|
query.getBorrowIncentiveAccounts(obligationId)
|
|
3711
4173
|
]);
|
|
@@ -3843,7 +4305,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
|
|
|
3843
4305
|
const rewards = [];
|
|
3844
4306
|
Object.entries(borrowIncentiveAccount.pointList).forEach(
|
|
3845
4307
|
([key, accountPoint]) => {
|
|
3846
|
-
const poolPoint = borrowIncentivePool.points[key];
|
|
4308
|
+
const poolPoint = borrowIncentivePool.points[query.utils.parseSCoinTypeNameToMarketCoinName(key)];
|
|
3847
4309
|
if (accountPoint && poolPoint) {
|
|
3848
4310
|
let availableClaimAmount = BigNumber5(0);
|
|
3849
4311
|
let availableClaimCoin = BigNumber5(0);
|
|
@@ -3988,7 +4450,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
|
|
|
3988
4450
|
return obligationAccount;
|
|
3989
4451
|
};
|
|
3990
4452
|
var getTotalValueLocked = async (query, indexer = false) => {
|
|
3991
|
-
const market = await query.
|
|
4453
|
+
const market = await query.getMarketPools(void 0, { indexer });
|
|
3992
4454
|
let supplyValue = BigNumber5(0);
|
|
3993
4455
|
let borrowValue = BigNumber5(0);
|
|
3994
4456
|
if (indexer) {
|
|
@@ -4109,7 +4571,7 @@ var getPythPrices = async ({
|
|
|
4109
4571
|
};
|
|
4110
4572
|
var getAllCoinPrices = async (query, marketPools, coinPrices) => {
|
|
4111
4573
|
coinPrices = coinPrices ?? await query.utils.getCoinPrices();
|
|
4112
|
-
marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices });
|
|
4574
|
+
marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices })).pools;
|
|
4113
4575
|
if (!marketPools) {
|
|
4114
4576
|
throw new Error(`Failed to fetch market pool for getAllCoinPrices`);
|
|
4115
4577
|
}
|
|
@@ -4235,12 +4697,80 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
|
|
|
4235
4697
|
|
|
4236
4698
|
// src/queries/spoolQuery.ts
|
|
4237
4699
|
import { normalizeStructTag as normalizeStructTag5 } from "@mysten/sui/utils";
|
|
4700
|
+
var queryRequiredSpoolObjects = async (query, stakePoolCoinNames) => {
|
|
4701
|
+
const tasks = stakePoolCoinNames.map((t, idx) => ({
|
|
4702
|
+
poolCoinName: stakePoolCoinNames[idx],
|
|
4703
|
+
spool: POOL_ADDRESSES[t]?.spool,
|
|
4704
|
+
spoolReward: POOL_ADDRESSES[t]?.spoolReward,
|
|
4705
|
+
sCoinTreasury: POOL_ADDRESSES[t]?.sCoinTreasury
|
|
4706
|
+
}));
|
|
4707
|
+
const [spoolObjects, spoolRewardObjects, sCoinTreasuryObjects] = await Promise.all([
|
|
4708
|
+
queryMultipleObjects(
|
|
4709
|
+
query.cache,
|
|
4710
|
+
tasks.map((task) => task.spool).filter((t) => !!t)
|
|
4711
|
+
),
|
|
4712
|
+
queryMultipleObjects(
|
|
4713
|
+
query.cache,
|
|
4714
|
+
tasks.map((task) => task.spoolReward).filter((t) => !!t)
|
|
4715
|
+
),
|
|
4716
|
+
queryMultipleObjects(
|
|
4717
|
+
query.cache,
|
|
4718
|
+
tasks.map((task) => task.sCoinTreasury).filter((t) => !!t)
|
|
4719
|
+
)
|
|
4720
|
+
]);
|
|
4721
|
+
const mapObjects = (tasks2, fetchedObjects) => {
|
|
4722
|
+
const resultMap = {};
|
|
4723
|
+
let fetchedIndex = 0;
|
|
4724
|
+
for (const task of tasks2) {
|
|
4725
|
+
const key = task[Object.keys(task)[1]];
|
|
4726
|
+
if (key) {
|
|
4727
|
+
resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
|
|
4728
|
+
fetchedIndex++;
|
|
4729
|
+
}
|
|
4730
|
+
}
|
|
4731
|
+
return resultMap;
|
|
4732
|
+
};
|
|
4733
|
+
const spoolMap = mapObjects(tasks, spoolObjects);
|
|
4734
|
+
const spoolRewardMap = mapObjects(tasks, spoolRewardObjects);
|
|
4735
|
+
const sCoinTreasuryMap = mapObjects(tasks, sCoinTreasuryObjects);
|
|
4736
|
+
return stakePoolCoinNames.reduce(
|
|
4737
|
+
(acc, name) => {
|
|
4738
|
+
acc[name] = {
|
|
4739
|
+
spool: spoolMap[name],
|
|
4740
|
+
spoolReward: spoolRewardMap[name],
|
|
4741
|
+
sCoinTreasury: sCoinTreasuryMap[name]
|
|
4742
|
+
};
|
|
4743
|
+
return acc;
|
|
4744
|
+
},
|
|
4745
|
+
{}
|
|
4746
|
+
);
|
|
4747
|
+
};
|
|
4748
|
+
var parseSpoolObjects = ({
|
|
4749
|
+
spool,
|
|
4750
|
+
spoolReward
|
|
4751
|
+
}) => {
|
|
4752
|
+
const _spool = parseObjectAs(spool);
|
|
4753
|
+
const _spoolReward = parseObjectAs(spoolReward);
|
|
4754
|
+
return {
|
|
4755
|
+
stakeType: _spool.stake_type,
|
|
4756
|
+
maxDistributedPoint: _spool.max_distributed_point,
|
|
4757
|
+
distributedPoint: _spool.distributed_point,
|
|
4758
|
+
distributedPointPerPeriod: _spool.distributed_point_per_period,
|
|
4759
|
+
pointDistributionTime: _spool.point_distribution_time,
|
|
4760
|
+
maxStake: _spool.max_stakes,
|
|
4761
|
+
stakes: _spool.stakes,
|
|
4762
|
+
index: _spool.index,
|
|
4763
|
+
createdAt: _spool.created_at,
|
|
4764
|
+
lastUpdate: _spool.last_update,
|
|
4765
|
+
..._spoolReward
|
|
4766
|
+
};
|
|
4767
|
+
};
|
|
4238
4768
|
var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexer = false, marketPools, coinPrices) => {
|
|
4239
4769
|
const stakeCoinNames = stakeMarketCoinNames.map(
|
|
4240
4770
|
(stakeMarketCoinName) => query.utils.parseCoinName(stakeMarketCoinName)
|
|
4241
4771
|
);
|
|
4242
|
-
|
|
4243
|
-
|
|
4772
|
+
marketPools = marketPools ?? (await query.getMarketPools(stakeCoinNames, { indexer })).pools;
|
|
4773
|
+
coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools }) ?? {};
|
|
4244
4774
|
if (!marketPools)
|
|
4245
4775
|
throw new Error(`Fail to fetch marketPools for ${stakeCoinNames}`);
|
|
4246
4776
|
const spools = {};
|
|
@@ -4255,126 +4785,93 @@ var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexe
|
|
|
4255
4785
|
const rewardCoinName = query.utils.getSpoolRewardCoinName(
|
|
4256
4786
|
spool.marketCoinName
|
|
4257
4787
|
);
|
|
4258
|
-
const marketPool = marketPools[coinName];
|
|
4259
4788
|
spool.coinPrice = coinPrices[coinName] ?? spool.coinPrice;
|
|
4260
|
-
spool.marketCoinPrice = coinPrices[
|
|
4789
|
+
spool.marketCoinPrice = coinPrices[spool.marketCoinName] ?? spool.marketCoinPrice;
|
|
4261
4790
|
spool.rewardCoinPrice = coinPrices[rewardCoinName] ?? spool.rewardCoinPrice;
|
|
4262
4791
|
spools[spool.marketCoinName] = spool;
|
|
4263
4792
|
};
|
|
4264
4793
|
Object.values(spoolsIndexer).forEach(updateSpools);
|
|
4265
4794
|
return spools;
|
|
4266
4795
|
}
|
|
4267
|
-
|
|
4268
|
-
|
|
4269
|
-
|
|
4270
|
-
|
|
4271
|
-
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
|
|
4796
|
+
const requiredObjects = await queryRequiredSpoolObjects(
|
|
4797
|
+
query,
|
|
4798
|
+
stakeCoinNames
|
|
4799
|
+
);
|
|
4800
|
+
await Promise.allSettled(
|
|
4801
|
+
stakeMarketCoinNames.map(async (stakeMarketCoinName, idx) => {
|
|
4802
|
+
try {
|
|
4803
|
+
const stakeCoinName = stakeCoinNames[idx];
|
|
4804
|
+
const spool = await getSpool(
|
|
4805
|
+
query,
|
|
4806
|
+
stakeMarketCoinName,
|
|
4807
|
+
indexer,
|
|
4808
|
+
coinPrices,
|
|
4809
|
+
requiredObjects[stakeCoinName]
|
|
4810
|
+
);
|
|
4811
|
+
if (spool) {
|
|
4812
|
+
spools[stakeMarketCoinName] = spool;
|
|
4813
|
+
}
|
|
4814
|
+
} catch (e) {
|
|
4815
|
+
console.error(e);
|
|
4816
|
+
}
|
|
4817
|
+
})
|
|
4818
|
+
);
|
|
4280
4819
|
return spools;
|
|
4281
4820
|
};
|
|
4282
|
-
var getSpool = async (query, marketCoinName, indexer = false,
|
|
4821
|
+
var getSpool = async (query, marketCoinName, indexer = false, coinPrices, requiredObjects) => {
|
|
4283
4822
|
const coinName = query.utils.parseCoinName(marketCoinName);
|
|
4284
|
-
|
|
4285
|
-
if (!marketPool) {
|
|
4286
|
-
throw new Error(`Failed to fetch marketPool for ${marketCoinName}`);
|
|
4287
|
-
}
|
|
4288
|
-
const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
|
|
4289
|
-
const rewardPoolId = query.address.get(
|
|
4290
|
-
`spool.pools.${marketCoinName}.rewardPoolId`
|
|
4291
|
-
);
|
|
4292
|
-
let spool = void 0;
|
|
4293
|
-
coinPrices = coinPrices || await query.utils.getCoinPrices();
|
|
4823
|
+
coinPrices = coinPrices || await query.getAllCoinPrices();
|
|
4294
4824
|
if (indexer) {
|
|
4295
4825
|
const spoolIndexer = await query.indexer.getSpool(marketCoinName);
|
|
4296
4826
|
const coinName2 = query.utils.parseCoinName(marketCoinName);
|
|
4297
4827
|
const rewardCoinName2 = query.utils.getSpoolRewardCoinName(marketCoinName);
|
|
4298
|
-
spoolIndexer.coinPrice = coinPrices?.[coinName2]
|
|
4299
|
-
spoolIndexer.marketCoinPrice =
|
|
4300
|
-
spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2]
|
|
4828
|
+
spoolIndexer.coinPrice = coinPrices?.[coinName2] ?? spoolIndexer.coinPrice;
|
|
4829
|
+
spoolIndexer.marketCoinPrice = coinPrices?.[marketCoinName] ?? spoolIndexer.marketCoinPrice;
|
|
4830
|
+
spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2] ?? spoolIndexer.rewardCoinPrice;
|
|
4301
4831
|
return spoolIndexer;
|
|
4302
4832
|
}
|
|
4303
|
-
|
|
4304
|
-
[poolId, rewardPoolId],
|
|
4305
|
-
{
|
|
4306
|
-
showContent: true
|
|
4307
|
-
}
|
|
4308
|
-
);
|
|
4309
|
-
if (!(spoolObjectResponse[0] && spoolObjectResponse[1])) {
|
|
4310
|
-
throw new Error("Fail to fetch spoolObjectResponse!");
|
|
4311
|
-
}
|
|
4833
|
+
requiredObjects ?? (requiredObjects = (await queryRequiredSpoolObjects(query, [coinName]))[coinName]);
|
|
4312
4834
|
const rewardCoinName = query.utils.getSpoolRewardCoinName(marketCoinName);
|
|
4313
4835
|
coinPrices = coinPrices || await query.utils.getCoinPrices();
|
|
4314
|
-
const
|
|
4315
|
-
const
|
|
4316
|
-
|
|
4317
|
-
|
|
4318
|
-
|
|
4319
|
-
|
|
4320
|
-
|
|
4321
|
-
|
|
4322
|
-
|
|
4323
|
-
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4329
|
-
|
|
4330
|
-
|
|
4331
|
-
|
|
4332
|
-
|
|
4333
|
-
|
|
4334
|
-
|
|
4335
|
-
|
|
4336
|
-
)
|
|
4337
|
-
|
|
4338
|
-
|
|
4339
|
-
|
|
4340
|
-
|
|
4341
|
-
|
|
4342
|
-
|
|
4343
|
-
|
|
4344
|
-
|
|
4345
|
-
|
|
4346
|
-
|
|
4347
|
-
|
|
4348
|
-
|
|
4349
|
-
|
|
4350
|
-
|
|
4351
|
-
|
|
4352
|
-
|
|
4353
|
-
rewardCoinDecimal
|
|
4354
|
-
);
|
|
4355
|
-
spool = {
|
|
4356
|
-
marketCoinName,
|
|
4357
|
-
symbol: query.utils.parseSymbol(marketCoinName),
|
|
4358
|
-
coinType: query.utils.parseCoinType(coinName),
|
|
4359
|
-
marketCoinType: query.utils.parseMarketCoinType(coinName),
|
|
4360
|
-
rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
|
|
4361
|
-
sCoinType: marketPool.sCoinType,
|
|
4362
|
-
coinDecimal: query.utils.getCoinDecimal(coinName),
|
|
4363
|
-
rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
|
|
4364
|
-
coinPrice: coinPrices?.[coinName] ?? 0,
|
|
4365
|
-
marketCoinPrice,
|
|
4366
|
-
rewardCoinPrice,
|
|
4367
|
-
maxPoint: parsedSpoolData.maxPoint,
|
|
4368
|
-
distributedPoint: parsedSpoolData.distributedPoint,
|
|
4369
|
-
maxStake: parsedSpoolData.maxStake,
|
|
4370
|
-
...calculatedSpoolData,
|
|
4371
|
-
exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
|
|
4372
|
-
exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
|
|
4373
|
-
...calculatedRewardPoolData
|
|
4374
|
-
};
|
|
4375
|
-
}
|
|
4376
|
-
}
|
|
4377
|
-
return spool;
|
|
4836
|
+
const parsedSpoolObjects = parseSpoolObjects(requiredObjects);
|
|
4837
|
+
const parsedSpoolData = parseOriginSpoolData(parsedSpoolObjects);
|
|
4838
|
+
const marketCoinPrice = coinPrices?.[marketCoinName] ?? 0;
|
|
4839
|
+
const marketCoinDecimal = query.utils.getCoinDecimal(marketCoinName);
|
|
4840
|
+
const calculatedSpoolData = calculateSpoolData(
|
|
4841
|
+
parsedSpoolData,
|
|
4842
|
+
marketCoinPrice,
|
|
4843
|
+
marketCoinDecimal
|
|
4844
|
+
);
|
|
4845
|
+
const parsedSpoolRewardPoolData = parseOriginSpoolRewardPoolData(parsedSpoolObjects);
|
|
4846
|
+
const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
|
|
4847
|
+
const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
|
|
4848
|
+
const calculatedRewardPoolData = calculateSpoolRewardPoolData(
|
|
4849
|
+
parsedSpoolData,
|
|
4850
|
+
parsedSpoolRewardPoolData,
|
|
4851
|
+
calculatedSpoolData,
|
|
4852
|
+
rewardCoinPrice,
|
|
4853
|
+
rewardCoinDecimal
|
|
4854
|
+
);
|
|
4855
|
+
return {
|
|
4856
|
+
marketCoinName,
|
|
4857
|
+
symbol: query.utils.parseSymbol(marketCoinName),
|
|
4858
|
+
coinType: query.utils.parseCoinType(coinName),
|
|
4859
|
+
marketCoinType: query.utils.parseMarketCoinType(coinName),
|
|
4860
|
+
rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
|
|
4861
|
+
sCoinType: query.utils.parseSCoinType(marketCoinName),
|
|
4862
|
+
coinDecimal: query.utils.getCoinDecimal(coinName),
|
|
4863
|
+
rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
|
|
4864
|
+
coinPrice: coinPrices?.[coinName] ?? 0,
|
|
4865
|
+
marketCoinPrice,
|
|
4866
|
+
rewardCoinPrice,
|
|
4867
|
+
maxPoint: parsedSpoolData.maxPoint,
|
|
4868
|
+
distributedPoint: parsedSpoolData.distributedPoint,
|
|
4869
|
+
maxStake: parsedSpoolData.maxStake,
|
|
4870
|
+
...calculatedSpoolData,
|
|
4871
|
+
exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
|
|
4872
|
+
exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
|
|
4873
|
+
...calculatedRewardPoolData
|
|
4874
|
+
};
|
|
4378
4875
|
};
|
|
4379
4876
|
var getStakeAccounts = async ({
|
|
4380
4877
|
utils
|
|
@@ -4724,6 +5221,105 @@ var getVeScaTreasuryInfo = async (utils) => {
|
|
|
4724
5221
|
};
|
|
4725
5222
|
};
|
|
4726
5223
|
|
|
5224
|
+
// src/queries/poolAddressesQuery.ts
|
|
5225
|
+
var getAllAddresses = async (query) => {
|
|
5226
|
+
const results = {};
|
|
5227
|
+
const marketId = query.address.get("core.market");
|
|
5228
|
+
const marketObject = (await query.cache.queryGetObject(marketId, {
|
|
5229
|
+
showContent: true
|
|
5230
|
+
}))?.data;
|
|
5231
|
+
if (!(marketObject && marketObject.content?.dataType === "moveObject"))
|
|
5232
|
+
throw new Error(`Failed to fetch marketObject`);
|
|
5233
|
+
const fields = marketObject.content.fields;
|
|
5234
|
+
const coinTypesPairs = SUPPORT_POOLS.reduce(
|
|
5235
|
+
(acc, pool) => {
|
|
5236
|
+
acc.push([pool, query.utils.parseCoinType(pool).substring(2)]);
|
|
5237
|
+
return acc;
|
|
5238
|
+
},
|
|
5239
|
+
[]
|
|
5240
|
+
);
|
|
5241
|
+
const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
|
|
5242
|
+
const collateralStatsParentId = fields.collateral_stats.fields.table.fields.id.id;
|
|
5243
|
+
const borrowDynamicsParentid = fields.borrow_dynamics.fields.table.fields.id.id;
|
|
5244
|
+
const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
|
|
5245
|
+
const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
|
|
5246
|
+
const ADDRESS_TYPE = `0x1::type_name::TypeName`;
|
|
5247
|
+
const BORROW_FEE_TYPE = `0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da::market_dynamic_keys::BorrowFeeKey`;
|
|
5248
|
+
const SUPPLY_LIMIT_TYPE = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
|
|
5249
|
+
const BORROW_LIMIT_TYPE = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
|
|
5250
|
+
const ISOLATED_ASSET_KEY = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
|
|
5251
|
+
const fetchDynamicObject = async (parentId, type, value) => {
|
|
5252
|
+
try {
|
|
5253
|
+
return (await query.cache.queryGetDynamicFieldObject({
|
|
5254
|
+
parentId,
|
|
5255
|
+
name: {
|
|
5256
|
+
type,
|
|
5257
|
+
value
|
|
5258
|
+
}
|
|
5259
|
+
}))?.data?.objectId;
|
|
5260
|
+
} catch (_e) {
|
|
5261
|
+
return void 0;
|
|
5262
|
+
}
|
|
5263
|
+
};
|
|
5264
|
+
await Promise.all(
|
|
5265
|
+
coinTypesPairs.map(async ([coinName, coinType]) => {
|
|
5266
|
+
const addresses = await Promise.all([
|
|
5267
|
+
fetchDynamicObject(balanceSheetParentId, ADDRESS_TYPE, {
|
|
5268
|
+
name: coinType
|
|
5269
|
+
}),
|
|
5270
|
+
fetchDynamicObject(collateralStatsParentId, ADDRESS_TYPE, {
|
|
5271
|
+
name: coinType
|
|
5272
|
+
}),
|
|
5273
|
+
fetchDynamicObject(borrowDynamicsParentid, ADDRESS_TYPE, {
|
|
5274
|
+
name: coinType
|
|
5275
|
+
}),
|
|
5276
|
+
fetchDynamicObject(interestModelParentId, ADDRESS_TYPE, {
|
|
5277
|
+
name: coinType
|
|
5278
|
+
}),
|
|
5279
|
+
fetchDynamicObject(riskModelParentId, ADDRESS_TYPE, {
|
|
5280
|
+
name: coinType
|
|
5281
|
+
}),
|
|
5282
|
+
fetchDynamicObject(marketId, BORROW_FEE_TYPE, coinType),
|
|
5283
|
+
fetchDynamicObject(marketId, SUPPLY_LIMIT_TYPE, coinType),
|
|
5284
|
+
fetchDynamicObject(marketId, BORROW_LIMIT_TYPE, coinType),
|
|
5285
|
+
fetchDynamicObject(marketId, ISOLATED_ASSET_KEY, coinType)
|
|
5286
|
+
]);
|
|
5287
|
+
const spool = query.address.get(
|
|
5288
|
+
// @ts-ignore
|
|
5289
|
+
`spool.pools.s${coinName}.id`
|
|
5290
|
+
);
|
|
5291
|
+
const rewardPool = query.address.get(
|
|
5292
|
+
// @ts-ignore
|
|
5293
|
+
`spool.pools.s${coinName}.rewardPoolId`
|
|
5294
|
+
);
|
|
5295
|
+
const sCoinTreasury = query.address.get(
|
|
5296
|
+
// @ts-ignore
|
|
5297
|
+
`scoin.coins.s${coinName}.treasury`
|
|
5298
|
+
);
|
|
5299
|
+
const coinDecimalId = query.address.get(
|
|
5300
|
+
`core.coins.${coinName}.metaData`
|
|
5301
|
+
);
|
|
5302
|
+
results[coinName] = {
|
|
5303
|
+
lendingPoolAddress: addresses[0],
|
|
5304
|
+
collateralPoolAddress: addresses[1],
|
|
5305
|
+
borrowDynamic: addresses[2],
|
|
5306
|
+
interestModel: addresses[3],
|
|
5307
|
+
riskModel: addresses[4],
|
|
5308
|
+
borrowFeeKey: addresses[5],
|
|
5309
|
+
supplyLimitKey: addresses[6],
|
|
5310
|
+
borrowLimitKey: addresses[7],
|
|
5311
|
+
isolatedAssetKey: addresses[8],
|
|
5312
|
+
spool,
|
|
5313
|
+
spoolReward: rewardPool,
|
|
5314
|
+
sCoinTreasury,
|
|
5315
|
+
coinDecimalId
|
|
5316
|
+
};
|
|
5317
|
+
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
5318
|
+
})
|
|
5319
|
+
);
|
|
5320
|
+
return results;
|
|
5321
|
+
};
|
|
5322
|
+
|
|
4727
5323
|
// src/models/suiKit.ts
|
|
4728
5324
|
import { SuiKit as SuiKit2 } from "@scallop-io/sui-kit";
|
|
4729
5325
|
var newSuiKit = (params) => {
|
|
@@ -4875,13 +5471,14 @@ var ScallopUtils = class {
|
|
|
4875
5471
|
}
|
|
4876
5472
|
}
|
|
4877
5473
|
/**
|
|
4878
|
-
* Convert sCoin name to coin name.
|
|
5474
|
+
* Convert sCoin name to market coin name.
|
|
4879
5475
|
* This function will parse new sCoin name `scallop_...` to its old market coin name which is shorter
|
|
4880
5476
|
* e.g: `scallop_sui -> ssui
|
|
5477
|
+
* if no `scallop_...` is encountered, return coinName
|
|
4881
5478
|
* @return sCoin name
|
|
4882
5479
|
*/
|
|
4883
|
-
|
|
4884
|
-
return sCoinRawNameToName[coinName];
|
|
5480
|
+
parseSCoinTypeNameToMarketCoinName(coinName) {
|
|
5481
|
+
return sCoinRawNameToName[coinName] ?? coinName;
|
|
4885
5482
|
}
|
|
4886
5483
|
/**
|
|
4887
5484
|
* Convert sCoin name into sCoin type
|
|
@@ -4930,6 +5527,9 @@ var ScallopUtils = class {
|
|
|
4930
5527
|
}
|
|
4931
5528
|
parseCoinNameFromType(coinType) {
|
|
4932
5529
|
coinType = normalizeStructTag6(coinType);
|
|
5530
|
+
if (sCoinTypeToName[coinType]) {
|
|
5531
|
+
return sCoinTypeToName[coinType];
|
|
5532
|
+
}
|
|
4933
5533
|
const coinTypeRegex = new RegExp(`((0x[^:]+::[^:]+::[^<>]+))(?![^<>]*<)`);
|
|
4934
5534
|
const coinTypeMatch = coinType.match(coinTypeRegex);
|
|
4935
5535
|
const isMarketCoinType = coinType.includes("reserve::MarketCoin");
|
|
@@ -5099,7 +5699,7 @@ var ScallopUtils = class {
|
|
|
5099
5699
|
);
|
|
5100
5700
|
const priceIds = priceIdPairs.map(([_2, priceId]) => priceId);
|
|
5101
5701
|
const pythConnection = new SuiPriceServiceConnection(endpoint, {
|
|
5102
|
-
timeout:
|
|
5702
|
+
timeout: 4e3
|
|
5103
5703
|
});
|
|
5104
5704
|
try {
|
|
5105
5705
|
const feeds = await this.cache.queryClient.fetchQuery({
|
|
@@ -5391,32 +5991,41 @@ var generateCoreNormalMethod = ({
|
|
|
5391
5991
|
const referralPkgId = builder.address.get("referral.id");
|
|
5392
5992
|
const referralWitnessType = `${referralPkgId}::scallop_referral_program::REFERRAL_WITNESS`;
|
|
5393
5993
|
return {
|
|
5394
|
-
openObligation: () => {
|
|
5395
|
-
const [obligation, obligationKey, obligationHotPotato] =
|
|
5994
|
+
openObligation: async () => {
|
|
5995
|
+
const [obligation, obligationKey, obligationHotPotato] = await builder.moveCall(
|
|
5996
|
+
txBlock,
|
|
5396
5997
|
`${coreIds.protocolPkg}::open_obligation::open_obligation`,
|
|
5397
5998
|
[coreIds.version]
|
|
5398
5999
|
);
|
|
5399
6000
|
return [obligation, obligationKey, obligationHotPotato];
|
|
5400
6001
|
},
|
|
5401
|
-
returnObligation: (obligation, obligationHotPotato) =>
|
|
5402
|
-
|
|
5403
|
-
|
|
5404
|
-
|
|
5405
|
-
|
|
5406
|
-
|
|
5407
|
-
|
|
5408
|
-
)
|
|
5409
|
-
|
|
6002
|
+
returnObligation: async (obligation, obligationHotPotato) => {
|
|
6003
|
+
await builder.moveCall(
|
|
6004
|
+
txBlock,
|
|
6005
|
+
`${coreIds.protocolPkg}::open_obligation::return_obligation`,
|
|
6006
|
+
[coreIds.version, obligation, obligationHotPotato]
|
|
6007
|
+
);
|
|
6008
|
+
},
|
|
6009
|
+
openObligationEntry: async () => {
|
|
6010
|
+
await builder.moveCall(
|
|
6011
|
+
txBlock,
|
|
6012
|
+
`${coreIds.protocolPkg}::open_obligation::open_obligation_entry`,
|
|
6013
|
+
[coreIds.version]
|
|
6014
|
+
);
|
|
6015
|
+
},
|
|
6016
|
+
addCollateral: async (obligation, coin, collateralCoinName) => {
|
|
5410
6017
|
const coinType = builder.utils.parseCoinType(collateralCoinName);
|
|
5411
|
-
|
|
6018
|
+
await builder.moveCall(
|
|
6019
|
+
txBlock,
|
|
5412
6020
|
`${coreIds.protocolPkg}::deposit_collateral::deposit_collateral`,
|
|
5413
6021
|
[coreIds.version, obligation, coreIds.market, coin],
|
|
5414
6022
|
[coinType]
|
|
5415
6023
|
);
|
|
5416
6024
|
},
|
|
5417
|
-
takeCollateral: (obligation, obligationKey, amount, collateralCoinName) => {
|
|
6025
|
+
takeCollateral: async (obligation, obligationKey, amount, collateralCoinName) => {
|
|
5418
6026
|
const coinType = builder.utils.parseCoinType(collateralCoinName);
|
|
5419
|
-
return
|
|
6027
|
+
return await builder.moveCall(
|
|
6028
|
+
txBlock,
|
|
5420
6029
|
`${coreIds.protocolPkg}::withdraw_collateral::withdraw_collateral`,
|
|
5421
6030
|
[
|
|
5422
6031
|
coreIds.version,
|
|
@@ -5431,41 +6040,46 @@ var generateCoreNormalMethod = ({
|
|
|
5431
6040
|
[coinType]
|
|
5432
6041
|
);
|
|
5433
6042
|
},
|
|
5434
|
-
deposit: (coin, poolCoinName) => {
|
|
6043
|
+
deposit: async (coin, poolCoinName) => {
|
|
5435
6044
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5436
|
-
return
|
|
6045
|
+
return await builder.moveCall(
|
|
6046
|
+
txBlock,
|
|
5437
6047
|
`${coreIds.protocolPkg}::mint::mint`,
|
|
5438
6048
|
[coreIds.version, coreIds.market, coin, SUI_CLOCK_OBJECT_ID3],
|
|
5439
6049
|
[coinType]
|
|
5440
6050
|
);
|
|
5441
6051
|
},
|
|
5442
|
-
depositEntry: (coin, poolCoinName) => {
|
|
6052
|
+
depositEntry: async (coin, poolCoinName) => {
|
|
5443
6053
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5444
|
-
return
|
|
6054
|
+
return await builder.moveCall(
|
|
6055
|
+
txBlock,
|
|
5445
6056
|
`${coreIds.protocolPkg}::mint::mint_entry`,
|
|
5446
6057
|
[coreIds.version, coreIds.market, coin, SUI_CLOCK_OBJECT_ID3],
|
|
5447
6058
|
[coinType]
|
|
5448
6059
|
);
|
|
5449
6060
|
},
|
|
5450
|
-
withdraw: (marketCoin, poolCoinName) => {
|
|
6061
|
+
withdraw: async (marketCoin, poolCoinName) => {
|
|
5451
6062
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5452
|
-
return
|
|
6063
|
+
return await builder.moveCall(
|
|
6064
|
+
txBlock,
|
|
5453
6065
|
`${coreIds.protocolPkg}::redeem::redeem`,
|
|
5454
6066
|
[coreIds.version, coreIds.market, marketCoin, SUI_CLOCK_OBJECT_ID3],
|
|
5455
6067
|
[coinType]
|
|
5456
6068
|
);
|
|
5457
6069
|
},
|
|
5458
|
-
withdrawEntry: (marketCoin, poolCoinName) => {
|
|
6070
|
+
withdrawEntry: async (marketCoin, poolCoinName) => {
|
|
5459
6071
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5460
|
-
return
|
|
6072
|
+
return await builder.moveCall(
|
|
6073
|
+
txBlock,
|
|
5461
6074
|
`${coreIds.protocolPkg}::redeem::redeem_entry`,
|
|
5462
6075
|
[coreIds.version, coreIds.market, marketCoin, SUI_CLOCK_OBJECT_ID3],
|
|
5463
6076
|
[coinType]
|
|
5464
6077
|
);
|
|
5465
6078
|
},
|
|
5466
|
-
borrow: (obligation, obligationKey, amount, poolCoinName) => {
|
|
6079
|
+
borrow: async (obligation, obligationKey, amount, poolCoinName) => {
|
|
5467
6080
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5468
|
-
return
|
|
6081
|
+
return await builder.moveCall(
|
|
6082
|
+
txBlock,
|
|
5469
6083
|
`${coreIds.protocolPkg}::borrow::borrow`,
|
|
5470
6084
|
[
|
|
5471
6085
|
coreIds.version,
|
|
@@ -5480,9 +6094,10 @@ var generateCoreNormalMethod = ({
|
|
|
5480
6094
|
[coinType]
|
|
5481
6095
|
);
|
|
5482
6096
|
},
|
|
5483
|
-
borrowWithReferral: (obligation, obligationKey, borrowReferral, amount, poolCoinName) => {
|
|
6097
|
+
borrowWithReferral: async (obligation, obligationKey, borrowReferral, amount, poolCoinName) => {
|
|
5484
6098
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5485
|
-
return
|
|
6099
|
+
return await builder.moveCall(
|
|
6100
|
+
txBlock,
|
|
5486
6101
|
`${coreIds.protocolPkg}::borrow::borrow_with_referral`,
|
|
5487
6102
|
[
|
|
5488
6103
|
coreIds.version,
|
|
@@ -5491,16 +6106,17 @@ var generateCoreNormalMethod = ({
|
|
|
5491
6106
|
coreIds.market,
|
|
5492
6107
|
coreIds.coinDecimalsRegistry,
|
|
5493
6108
|
borrowReferral,
|
|
5494
|
-
txBlock.pure.u64(amount),
|
|
6109
|
+
typeof amount === "number" ? txBlock.pure.u64(amount) : amount,
|
|
5495
6110
|
coreIds.xOracle,
|
|
5496
6111
|
SUI_CLOCK_OBJECT_ID3
|
|
5497
6112
|
],
|
|
5498
6113
|
[coinType, referralWitnessType]
|
|
5499
6114
|
);
|
|
5500
6115
|
},
|
|
5501
|
-
borrowEntry: (obligation, obligationKey, amount, poolCoinName) => {
|
|
6116
|
+
borrowEntry: async (obligation, obligationKey, amount, poolCoinName) => {
|
|
5502
6117
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5503
|
-
return
|
|
6118
|
+
return await builder.moveCall(
|
|
6119
|
+
txBlock,
|
|
5504
6120
|
`${coreIds.protocolPkg}::borrow::borrow_entry`,
|
|
5505
6121
|
[
|
|
5506
6122
|
coreIds.version,
|
|
@@ -5515,9 +6131,10 @@ var generateCoreNormalMethod = ({
|
|
|
5515
6131
|
[coinType]
|
|
5516
6132
|
);
|
|
5517
6133
|
},
|
|
5518
|
-
repay: (obligation, coin, poolCoinName) => {
|
|
6134
|
+
repay: async (obligation, coin, poolCoinName) => {
|
|
5519
6135
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5520
|
-
|
|
6136
|
+
await builder.moveCall(
|
|
6137
|
+
txBlock,
|
|
5521
6138
|
`${coreIds.protocolPkg}::repay::repay`,
|
|
5522
6139
|
[
|
|
5523
6140
|
coreIds.version,
|
|
@@ -5529,17 +6146,19 @@ var generateCoreNormalMethod = ({
|
|
|
5529
6146
|
[coinType]
|
|
5530
6147
|
);
|
|
5531
6148
|
},
|
|
5532
|
-
borrowFlashLoan: (amount, poolCoinName) => {
|
|
6149
|
+
borrowFlashLoan: async (amount, poolCoinName) => {
|
|
5533
6150
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5534
|
-
return
|
|
6151
|
+
return await builder.moveCall(
|
|
6152
|
+
txBlock,
|
|
5535
6153
|
`${coreIds.protocolPkg}::flash_loan::borrow_flash_loan`,
|
|
5536
6154
|
[coreIds.version, coreIds.market, amount],
|
|
5537
6155
|
[coinType]
|
|
5538
6156
|
);
|
|
5539
6157
|
},
|
|
5540
|
-
repayFlashLoan: (coin, loan, poolCoinName) => {
|
|
6158
|
+
repayFlashLoan: async (coin, loan, poolCoinName) => {
|
|
5541
6159
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5542
|
-
|
|
6160
|
+
await builder.moveCall(
|
|
6161
|
+
txBlock,
|
|
5543
6162
|
`${coreIds.protocolPkg}::flash_loan::repay_flash_loan`,
|
|
5544
6163
|
[coreIds.version, coreIds.market, coin, loan],
|
|
5545
6164
|
[coinType]
|
|
@@ -5561,7 +6180,7 @@ var generateCoreQuickMethod = ({
|
|
|
5561
6180
|
);
|
|
5562
6181
|
if (collateralCoinName === "sui") {
|
|
5563
6182
|
const [suiCoin] = txBlock.splitSUIFromGas([amount]);
|
|
5564
|
-
txBlock.addCollateral(obligationArg, suiCoin, collateralCoinName);
|
|
6183
|
+
await txBlock.addCollateral(obligationArg, suiCoin, collateralCoinName);
|
|
5565
6184
|
} else {
|
|
5566
6185
|
const { leftCoin, takeCoin } = await builder.selectCoin(
|
|
5567
6186
|
txBlock,
|
|
@@ -5569,7 +6188,11 @@ var generateCoreQuickMethod = ({
|
|
|
5569
6188
|
amount,
|
|
5570
6189
|
sender
|
|
5571
6190
|
);
|
|
5572
|
-
txBlock.addCollateral(
|
|
6191
|
+
await txBlock.addCollateral(
|
|
6192
|
+
obligationArg,
|
|
6193
|
+
takeCoin,
|
|
6194
|
+
collateralCoinName
|
|
6195
|
+
);
|
|
5573
6196
|
txBlock.transferObjects([leftCoin], sender);
|
|
5574
6197
|
}
|
|
5575
6198
|
},
|
|
@@ -5584,7 +6207,7 @@ var generateCoreQuickMethod = ({
|
|
|
5584
6207
|
obligationInfo.obligationId
|
|
5585
6208
|
);
|
|
5586
6209
|
await updateOracles(builder, txBlock, updateCoinNames);
|
|
5587
|
-
return txBlock.takeCollateral(
|
|
6210
|
+
return await txBlock.takeCollateral(
|
|
5588
6211
|
obligationInfo.obligationId,
|
|
5589
6212
|
obligationInfo.obligationKey,
|
|
5590
6213
|
amount,
|
|
@@ -5596,7 +6219,7 @@ var generateCoreQuickMethod = ({
|
|
|
5596
6219
|
let marketCoinDeposit;
|
|
5597
6220
|
if (poolCoinName === "sui") {
|
|
5598
6221
|
const [suiCoin] = txBlock.splitSUIFromGas([amount]);
|
|
5599
|
-
marketCoinDeposit = txBlock.deposit(suiCoin, poolCoinName);
|
|
6222
|
+
marketCoinDeposit = await txBlock.deposit(suiCoin, poolCoinName);
|
|
5600
6223
|
} else {
|
|
5601
6224
|
const { leftCoin, takeCoin } = await builder.selectCoin(
|
|
5602
6225
|
txBlock,
|
|
@@ -5605,9 +6228,9 @@ var generateCoreQuickMethod = ({
|
|
|
5605
6228
|
sender
|
|
5606
6229
|
);
|
|
5607
6230
|
txBlock.transferObjects([leftCoin], sender);
|
|
5608
|
-
marketCoinDeposit = txBlock.deposit(takeCoin, poolCoinName);
|
|
6231
|
+
marketCoinDeposit = await txBlock.deposit(takeCoin, poolCoinName);
|
|
5609
6232
|
}
|
|
5610
|
-
return returnSCoin ? txBlock.mintSCoin(
|
|
6233
|
+
return returnSCoin ? await txBlock.mintSCoin(
|
|
5611
6234
|
builder.utils.parseMarketCoinName(poolCoinName),
|
|
5612
6235
|
marketCoinDeposit
|
|
5613
6236
|
) : marketCoinDeposit;
|
|
@@ -5625,7 +6248,7 @@ var generateCoreQuickMethod = ({
|
|
|
5625
6248
|
totalAmount
|
|
5626
6249
|
} = await builder.selectSCoin(txBlock, sCoinName, amount, sender);
|
|
5627
6250
|
txBlock.transferObjects([leftCoin], sender);
|
|
5628
|
-
const marketCoins2 = txBlock.burnSCoin(sCoinName, sCoins2);
|
|
6251
|
+
const marketCoins2 = await txBlock.burnSCoin(sCoinName, sCoins2);
|
|
5629
6252
|
amount -= totalAmount;
|
|
5630
6253
|
try {
|
|
5631
6254
|
if (amount > 0) {
|
|
@@ -5649,7 +6272,7 @@ var generateCoreQuickMethod = ({
|
|
|
5649
6272
|
sender
|
|
5650
6273
|
);
|
|
5651
6274
|
txBlock.transferObjects([leftCoin], sender);
|
|
5652
|
-
return txBlock.withdraw(walletMarketCoins, poolCoinName);
|
|
6275
|
+
return await txBlock.withdraw(walletMarketCoins, poolCoinName);
|
|
5653
6276
|
}
|
|
5654
6277
|
},
|
|
5655
6278
|
borrowQuick: async (amount, poolCoinName, obligationId, obligationKey) => {
|
|
@@ -5664,7 +6287,7 @@ var generateCoreQuickMethod = ({
|
|
|
5664
6287
|
) ?? [];
|
|
5665
6288
|
const updateCoinNames = [...obligationCoinNames, poolCoinName];
|
|
5666
6289
|
await updateOracles(builder, txBlock, updateCoinNames);
|
|
5667
|
-
return txBlock.borrow(
|
|
6290
|
+
return await txBlock.borrow(
|
|
5668
6291
|
obligationInfo.obligationId,
|
|
5669
6292
|
obligationInfo.obligationKey,
|
|
5670
6293
|
amount,
|
|
@@ -5683,7 +6306,7 @@ var generateCoreQuickMethod = ({
|
|
|
5683
6306
|
) ?? [];
|
|
5684
6307
|
const updateCoinNames = [...obligationCoinNames, poolCoinName];
|
|
5685
6308
|
await updateOracles(builder, txBlock, updateCoinNames);
|
|
5686
|
-
return txBlock.borrowWithReferral(
|
|
6309
|
+
return await txBlock.borrowWithReferral(
|
|
5687
6310
|
obligationInfo.obligationId,
|
|
5688
6311
|
obligationInfo.obligationKey,
|
|
5689
6312
|
borrowReferral,
|
|
@@ -5700,7 +6323,7 @@ var generateCoreQuickMethod = ({
|
|
|
5700
6323
|
);
|
|
5701
6324
|
if (poolCoinName === "sui") {
|
|
5702
6325
|
const [suiCoin] = txBlock.splitSUIFromGas([amount]);
|
|
5703
|
-
return txBlock.repay(
|
|
6326
|
+
return await txBlock.repay(
|
|
5704
6327
|
obligationInfo.obligationId,
|
|
5705
6328
|
suiCoin,
|
|
5706
6329
|
poolCoinName
|
|
@@ -5713,7 +6336,7 @@ var generateCoreQuickMethod = ({
|
|
|
5713
6336
|
sender
|
|
5714
6337
|
);
|
|
5715
6338
|
txBlock.transferObjects([leftCoin], sender);
|
|
5716
|
-
return txBlock.repay(
|
|
6339
|
+
return await txBlock.repay(
|
|
5717
6340
|
obligationInfo.obligationId,
|
|
5718
6341
|
takeCoin,
|
|
5719
6342
|
poolCoinName
|
|
@@ -5721,7 +6344,7 @@ var generateCoreQuickMethod = ({
|
|
|
5721
6344
|
}
|
|
5722
6345
|
},
|
|
5723
6346
|
updateAssetPricesQuick: async (assetCoinNames) => {
|
|
5724
|
-
return updateOracles(builder, txBlock, assetCoinNames);
|
|
6347
|
+
return await updateOracles(builder, txBlock, assetCoinNames);
|
|
5725
6348
|
}
|
|
5726
6349
|
};
|
|
5727
6350
|
};
|
|
@@ -5784,10 +6407,10 @@ var stakeHelper = async (builder, txBlock, stakeAccount, coinName, amount, sende
|
|
|
5784
6407
|
try {
|
|
5785
6408
|
const { takeCoin, leftCoin, totalAmount } = isSCoin ? await builder.selectSCoin(txBlock, coinName, amount, sender) : await builder.selectMarketCoin(txBlock, coinName, amount, sender);
|
|
5786
6409
|
if (isSCoin) {
|
|
5787
|
-
const marketCoin = txBlock.burnSCoin(coinName, takeCoin);
|
|
5788
|
-
txBlock.stake(stakeAccount, marketCoin, coinName);
|
|
6410
|
+
const marketCoin = await txBlock.burnSCoin(coinName, takeCoin);
|
|
6411
|
+
await txBlock.stake(stakeAccount, marketCoin, coinName);
|
|
5789
6412
|
} else {
|
|
5790
|
-
txBlock.stake(stakeAccount, takeCoin, coinName);
|
|
6413
|
+
await txBlock.stake(stakeAccount, takeCoin, coinName);
|
|
5791
6414
|
}
|
|
5792
6415
|
txBlock.transferObjects([leftCoin], sender);
|
|
5793
6416
|
return totalAmount;
|
|
@@ -5803,40 +6426,43 @@ var generateSpoolNormalMethod = ({
|
|
|
5803
6426
|
spoolPkg: builder.address.get("spool.id")
|
|
5804
6427
|
};
|
|
5805
6428
|
return {
|
|
5806
|
-
createStakeAccount: (stakeMarketCoinName) => {
|
|
6429
|
+
createStakeAccount: async (stakeMarketCoinName) => {
|
|
5807
6430
|
const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
|
|
5808
6431
|
const stakePoolId = builder.address.get(
|
|
5809
6432
|
`spool.pools.${stakeMarketCoinName}.id`
|
|
5810
6433
|
);
|
|
5811
|
-
return
|
|
6434
|
+
return await builder.moveCall(
|
|
6435
|
+
txBlock,
|
|
5812
6436
|
`${spoolIds.spoolPkg}::user::new_spool_account`,
|
|
5813
6437
|
[stakePoolId, SUI_CLOCK_OBJECT_ID4],
|
|
5814
6438
|
[marketCoinType]
|
|
5815
6439
|
);
|
|
5816
6440
|
},
|
|
5817
|
-
stake: (stakeAccount, coin, stakeMarketCoinName) => {
|
|
6441
|
+
stake: async (stakeAccount, coin, stakeMarketCoinName) => {
|
|
5818
6442
|
const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
|
|
5819
6443
|
const stakePoolId = builder.address.get(
|
|
5820
6444
|
`spool.pools.${stakeMarketCoinName}.id`
|
|
5821
6445
|
);
|
|
5822
|
-
|
|
6446
|
+
await builder.moveCall(
|
|
6447
|
+
txBlock,
|
|
5823
6448
|
`${spoolIds.spoolPkg}::user::stake`,
|
|
5824
6449
|
[stakePoolId, stakeAccount, coin, SUI_CLOCK_OBJECT_ID4],
|
|
5825
6450
|
[marketCoinType]
|
|
5826
6451
|
);
|
|
5827
6452
|
},
|
|
5828
|
-
unstake: (stakeAccount, amount, stakeMarketCoinName) => {
|
|
6453
|
+
unstake: async (stakeAccount, amount, stakeMarketCoinName) => {
|
|
5829
6454
|
const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
|
|
5830
6455
|
const stakePoolId = builder.address.get(
|
|
5831
6456
|
`spool.pools.${stakeMarketCoinName}.id`
|
|
5832
6457
|
);
|
|
5833
|
-
return
|
|
6458
|
+
return await builder.moveCall(
|
|
6459
|
+
txBlock,
|
|
5834
6460
|
`${spoolIds.spoolPkg}::user::unstake`,
|
|
5835
6461
|
[stakePoolId, stakeAccount, amount, SUI_CLOCK_OBJECT_ID4],
|
|
5836
6462
|
[marketCoinType]
|
|
5837
6463
|
);
|
|
5838
6464
|
},
|
|
5839
|
-
claim: (stakeAccount, stakeMarketCoinName) => {
|
|
6465
|
+
claim: async (stakeAccount, stakeMarketCoinName) => {
|
|
5840
6466
|
const stakePoolId = builder.address.get(
|
|
5841
6467
|
`spool.pools.${stakeMarketCoinName}.id`
|
|
5842
6468
|
);
|
|
@@ -5846,7 +6472,8 @@ var generateSpoolNormalMethod = ({
|
|
|
5846
6472
|
const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
|
|
5847
6473
|
const rewardCoinName = spoolRewardCoins[stakeMarketCoinName];
|
|
5848
6474
|
const rewardCoinType = builder.utils.parseCoinType(rewardCoinName);
|
|
5849
|
-
return
|
|
6475
|
+
return await builder.moveCall(
|
|
6476
|
+
txBlock,
|
|
5850
6477
|
`${spoolIds.spoolPkg}::user::redeem_rewards`,
|
|
5851
6478
|
[stakePoolId, rewardPoolId, stakeAccount, SUI_CLOCK_OBJECT_ID4],
|
|
5852
6479
|
[marketCoinType, rewardCoinType]
|
|
@@ -5911,13 +6538,16 @@ var generateSpoolQuickMethod = ({
|
|
|
5911
6538
|
if (account.staked === 0)
|
|
5912
6539
|
continue;
|
|
5913
6540
|
const amountToUnstake = Math.min(amount, account.staked);
|
|
5914
|
-
const marketCoin = txBlock.unstake(
|
|
6541
|
+
const marketCoin = await txBlock.unstake(
|
|
5915
6542
|
account.id,
|
|
5916
6543
|
amountToUnstake,
|
|
5917
6544
|
stakeMarketCoinName
|
|
5918
6545
|
);
|
|
5919
6546
|
if (returnSCoin) {
|
|
5920
|
-
const sCoin = txBlock.mintSCoin(
|
|
6547
|
+
const sCoin = await txBlock.mintSCoin(
|
|
6548
|
+
stakeMarketCoinName,
|
|
6549
|
+
marketCoin
|
|
6550
|
+
);
|
|
5921
6551
|
toTransfer.push(sCoin);
|
|
5922
6552
|
} else {
|
|
5923
6553
|
toTransfer.push(marketCoin);
|
|
@@ -5943,7 +6573,7 @@ var generateSpoolQuickMethod = ({
|
|
|
5943
6573
|
);
|
|
5944
6574
|
const rewardCoins = [];
|
|
5945
6575
|
for (const accountId of stakeAccountIds) {
|
|
5946
|
-
const rewardCoin = txBlock.claim(accountId, stakeMarketCoinName);
|
|
6576
|
+
const rewardCoin = await txBlock.claim(accountId, stakeMarketCoinName);
|
|
5947
6577
|
rewardCoins.push(rewardCoin);
|
|
5948
6578
|
}
|
|
5949
6579
|
return rewardCoins;
|
|
@@ -6022,8 +6652,9 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6022
6652
|
config: builder.address.get("vesca.config")
|
|
6023
6653
|
};
|
|
6024
6654
|
return {
|
|
6025
|
-
stakeObligation: (obligationId, obligationKey) => {
|
|
6026
|
-
|
|
6655
|
+
stakeObligation: async (obligationId, obligationKey) => {
|
|
6656
|
+
await builder.moveCall(
|
|
6657
|
+
txBlock,
|
|
6027
6658
|
`${borrowIncentiveIds.borrowIncentivePkg}::user::stake`,
|
|
6028
6659
|
[
|
|
6029
6660
|
borrowIncentiveIds.config,
|
|
@@ -6036,8 +6667,9 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6036
6667
|
]
|
|
6037
6668
|
);
|
|
6038
6669
|
},
|
|
6039
|
-
stakeObligationWithVesca: (obligationId, obligationKey, veScaKey) => {
|
|
6040
|
-
|
|
6670
|
+
stakeObligationWithVesca: async (obligationId, obligationKey, veScaKey) => {
|
|
6671
|
+
await builder.moveCall(
|
|
6672
|
+
txBlock,
|
|
6041
6673
|
`${borrowIncentiveIds.borrowIncentivePkg}::user::stake_with_ve_sca`,
|
|
6042
6674
|
[
|
|
6043
6675
|
borrowIncentiveIds.config,
|
|
@@ -6055,8 +6687,9 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6055
6687
|
[]
|
|
6056
6688
|
);
|
|
6057
6689
|
},
|
|
6058
|
-
unstakeObligation: (obligationId, obligationKey) => {
|
|
6059
|
-
|
|
6690
|
+
unstakeObligation: async (obligationId, obligationKey) => {
|
|
6691
|
+
await builder.moveCall(
|
|
6692
|
+
txBlock,
|
|
6060
6693
|
`${borrowIncentiveIds.borrowIncentivePkg}::user::unstake`,
|
|
6061
6694
|
[
|
|
6062
6695
|
borrowIncentiveIds.config,
|
|
@@ -6068,9 +6701,10 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6068
6701
|
]
|
|
6069
6702
|
);
|
|
6070
6703
|
},
|
|
6071
|
-
claimBorrowIncentive: (obligationId, obligationKey, rewardCoinName) => {
|
|
6704
|
+
claimBorrowIncentive: async (obligationId, obligationKey, rewardCoinName) => {
|
|
6072
6705
|
const rewardType = builder.utils.parseCoinType(rewardCoinName);
|
|
6073
|
-
return
|
|
6706
|
+
return await builder.moveCall(
|
|
6707
|
+
txBlock,
|
|
6074
6708
|
`${borrowIncentiveIds.borrowIncentivePkg}::user::redeem_rewards`,
|
|
6075
6709
|
[
|
|
6076
6710
|
borrowIncentiveIds.config,
|
|
@@ -6083,8 +6717,9 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6083
6717
|
[rewardType]
|
|
6084
6718
|
);
|
|
6085
6719
|
},
|
|
6086
|
-
deactivateBoost: (obligation, veScaKey) => {
|
|
6087
|
-
|
|
6720
|
+
deactivateBoost: async (obligation, veScaKey) => {
|
|
6721
|
+
await builder.moveCall(
|
|
6722
|
+
txBlock,
|
|
6088
6723
|
`${borrowIncentiveIds.borrowIncentivePkg}::user::deactivate_boost`,
|
|
6089
6724
|
[
|
|
6090
6725
|
borrowIncentiveIds.config,
|
|
@@ -6115,7 +6750,7 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
|
|
|
6115
6750
|
(txn) => txn.kind === "MoveCall" && (txn.target === `${OLD_BORROW_INCENTIVE_PROTOCOL_ID}::user::unstake` || txn.target === `${builder.address.get("borrowIncentive.id")}::user::unstake`)
|
|
6116
6751
|
);
|
|
6117
6752
|
if (!obligationLocked || unstakeObligationBeforeStake) {
|
|
6118
|
-
txBlock.stakeObligation(obligationArg, obligationKeyArg);
|
|
6753
|
+
await txBlock.stakeObligation(obligationArg, obligationKeyArg);
|
|
6119
6754
|
}
|
|
6120
6755
|
},
|
|
6121
6756
|
stakeObligationWithVeScaQuick: async (obligation, obligationKey, veScaKey) => {
|
|
@@ -6136,9 +6771,9 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
|
|
|
6136
6771
|
const bindedVeScaKey = await builder.query.getBindedVeScaKey(obligationArg);
|
|
6137
6772
|
const _veScaKey = bindedVeScaKey ?? veScaKey;
|
|
6138
6773
|
if (!_veScaKey) {
|
|
6139
|
-
txBlock.stakeObligation(obligationArg, obligationKeyArg);
|
|
6774
|
+
await txBlock.stakeObligation(obligationArg, obligationKeyArg);
|
|
6140
6775
|
} else {
|
|
6141
|
-
txBlock.stakeObligationWithVesca(
|
|
6776
|
+
await txBlock.stakeObligationWithVesca(
|
|
6142
6777
|
obligationArg,
|
|
6143
6778
|
obligationKeyArg,
|
|
6144
6779
|
_veScaKey
|
|
@@ -6158,7 +6793,7 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
|
|
|
6158
6793
|
obligationKey
|
|
6159
6794
|
);
|
|
6160
6795
|
if (obligationLocked) {
|
|
6161
|
-
txBlock.unstakeObligation(obligationArg, obligationKeyArg);
|
|
6796
|
+
await txBlock.unstakeObligation(obligationArg, obligationKeyArg);
|
|
6162
6797
|
}
|
|
6163
6798
|
},
|
|
6164
6799
|
claimBorrowIncentiveQuick: async (rewardCoinName, obligation, obligationKey) => {
|
|
@@ -6168,7 +6803,7 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
|
|
|
6168
6803
|
obligation,
|
|
6169
6804
|
obligationKey
|
|
6170
6805
|
);
|
|
6171
|
-
return txBlock.claimBorrowIncentive(
|
|
6806
|
+
return await txBlock.claimBorrowIncentive(
|
|
6172
6807
|
obligationArg,
|
|
6173
6808
|
obligationKeyArg,
|
|
6174
6809
|
rewardCoinName
|
|
@@ -6237,8 +6872,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6237
6872
|
config: builder.address.get("vesca.config")
|
|
6238
6873
|
};
|
|
6239
6874
|
return {
|
|
6240
|
-
lockSca: (scaCoin, unlockAtInSecondTimestamp) => {
|
|
6241
|
-
return
|
|
6875
|
+
lockSca: async (scaCoin, unlockAtInSecondTimestamp) => {
|
|
6876
|
+
return await builder.moveCall(
|
|
6877
|
+
txBlock,
|
|
6242
6878
|
`${veScaIds.pkgId}::ve_sca::mint_ve_sca_key`,
|
|
6243
6879
|
[
|
|
6244
6880
|
veScaIds.config,
|
|
@@ -6251,8 +6887,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6251
6887
|
[]
|
|
6252
6888
|
);
|
|
6253
6889
|
},
|
|
6254
|
-
extendLockPeriod: (veScaKey, newUnlockAtInSecondTimestamp) => {
|
|
6255
|
-
|
|
6890
|
+
extendLockPeriod: async (veScaKey, newUnlockAtInSecondTimestamp) => {
|
|
6891
|
+
await builder.moveCall(
|
|
6892
|
+
txBlock,
|
|
6256
6893
|
`${veScaIds.pkgId}::ve_sca::extend_lock_period`,
|
|
6257
6894
|
[
|
|
6258
6895
|
veScaIds.config,
|
|
@@ -6265,8 +6902,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6265
6902
|
[]
|
|
6266
6903
|
);
|
|
6267
6904
|
},
|
|
6268
|
-
extendLockAmount: (veScaKey, scaCoin) => {
|
|
6269
|
-
|
|
6905
|
+
extendLockAmount: async (veScaKey, scaCoin) => {
|
|
6906
|
+
await builder.moveCall(
|
|
6907
|
+
txBlock,
|
|
6270
6908
|
`${veScaIds.pkgId}::ve_sca::lock_more_sca`,
|
|
6271
6909
|
[
|
|
6272
6910
|
veScaIds.config,
|
|
@@ -6279,8 +6917,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6279
6917
|
[]
|
|
6280
6918
|
);
|
|
6281
6919
|
},
|
|
6282
|
-
renewExpiredVeSca: (veScaKey, scaCoin, newUnlockAtInSecondTimestamp) => {
|
|
6283
|
-
|
|
6920
|
+
renewExpiredVeSca: async (veScaKey, scaCoin, newUnlockAtInSecondTimestamp) => {
|
|
6921
|
+
await builder.moveCall(
|
|
6922
|
+
txBlock,
|
|
6284
6923
|
`${veScaIds.pkgId}::ve_sca::renew_expired_ve_sca`,
|
|
6285
6924
|
[
|
|
6286
6925
|
veScaIds.config,
|
|
@@ -6294,8 +6933,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6294
6933
|
[]
|
|
6295
6934
|
);
|
|
6296
6935
|
},
|
|
6297
|
-
redeemSca: (veScaKey) => {
|
|
6298
|
-
return
|
|
6936
|
+
redeemSca: async (veScaKey) => {
|
|
6937
|
+
return await builder.moveCall(
|
|
6938
|
+
txBlock,
|
|
6299
6939
|
`${veScaIds.pkgId}::ve_sca::redeem`,
|
|
6300
6940
|
[
|
|
6301
6941
|
veScaIds.config,
|
|
@@ -6307,8 +6947,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6307
6947
|
[]
|
|
6308
6948
|
);
|
|
6309
6949
|
},
|
|
6310
|
-
mintEmptyVeSca: () => {
|
|
6311
|
-
return
|
|
6950
|
+
mintEmptyVeSca: async () => {
|
|
6951
|
+
return await builder.moveCall(
|
|
6952
|
+
txBlock,
|
|
6312
6953
|
`${veScaIds.pkgId}::ve_sca::mint_ve_sca_placeholder_key`,
|
|
6313
6954
|
[veScaIds.config, veScaIds.table],
|
|
6314
6955
|
[]
|
|
@@ -6446,7 +7087,7 @@ var generateQuickVeScaMethod = ({
|
|
|
6446
7087
|
const veSca = await requireVeSca(builder, txBlock, veScaKey);
|
|
6447
7088
|
checkVesca(veSca?.unlockAt);
|
|
6448
7089
|
if (veSca) {
|
|
6449
|
-
const sca = txBlock.redeemSca(veSca.keyId);
|
|
7090
|
+
const sca = await txBlock.redeemSca(veSca.keyId);
|
|
6450
7091
|
if (transferSca) {
|
|
6451
7092
|
txBlock.transferObjects([sca], sender);
|
|
6452
7093
|
return;
|
|
@@ -6506,8 +7147,9 @@ var generateReferralNormalMethod = ({
|
|
|
6506
7147
|
};
|
|
6507
7148
|
const veScaTable = builder.address.get("vesca.table");
|
|
6508
7149
|
return {
|
|
6509
|
-
bindToReferral: (veScaKeyId) => {
|
|
6510
|
-
|
|
7150
|
+
bindToReferral: async (veScaKeyId) => {
|
|
7151
|
+
await builder.moveCall(
|
|
7152
|
+
txBlock,
|
|
6511
7153
|
`${referralIds.referralPgkId}::referral_bindings::bind_ve_sca_referrer`,
|
|
6512
7154
|
[
|
|
6513
7155
|
referralIds.referralBindings,
|
|
@@ -6518,9 +7160,10 @@ var generateReferralNormalMethod = ({
|
|
|
6518
7160
|
[]
|
|
6519
7161
|
);
|
|
6520
7162
|
},
|
|
6521
|
-
claimReferralTicket: (poolCoinName) => {
|
|
7163
|
+
claimReferralTicket: async (poolCoinName) => {
|
|
6522
7164
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
6523
|
-
return
|
|
7165
|
+
return await builder.moveCall(
|
|
7166
|
+
txBlock,
|
|
6524
7167
|
`${referralIds.referralPgkId}::scallop_referral_program::claim_ve_sca_referral_ticket`,
|
|
6525
7168
|
[
|
|
6526
7169
|
referralIds.version,
|
|
@@ -6533,9 +7176,10 @@ var generateReferralNormalMethod = ({
|
|
|
6533
7176
|
[coinType]
|
|
6534
7177
|
);
|
|
6535
7178
|
},
|
|
6536
|
-
burnReferralTicket: (ticket, poolCoinName) => {
|
|
7179
|
+
burnReferralTicket: async (ticket, poolCoinName) => {
|
|
6537
7180
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
6538
|
-
|
|
7181
|
+
await builder.moveCall(
|
|
7182
|
+
txBlock,
|
|
6539
7183
|
`${referralIds.referralPgkId}::scallop_referral_program::burn_ve_sca_referral_ticket`,
|
|
6540
7184
|
[
|
|
6541
7185
|
referralIds.version,
|
|
@@ -6546,9 +7190,10 @@ var generateReferralNormalMethod = ({
|
|
|
6546
7190
|
[coinType]
|
|
6547
7191
|
);
|
|
6548
7192
|
},
|
|
6549
|
-
claimReferralRevenue: (veScaKey, poolCoinName) => {
|
|
7193
|
+
claimReferralRevenue: async (veScaKey, poolCoinName) => {
|
|
6550
7194
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
6551
|
-
return
|
|
7195
|
+
return await builder.moveCall(
|
|
7196
|
+
txBlock,
|
|
6552
7197
|
`${referralIds.referralPgkId}::referral_revenue_pool::claim_revenue_with_ve_sca_key`,
|
|
6553
7198
|
[
|
|
6554
7199
|
referralIds.version,
|
|
@@ -6571,10 +7216,16 @@ var generateReferralQuickMethod = ({
|
|
|
6571
7216
|
const objToTransfer = [];
|
|
6572
7217
|
for (const coinName of coinNames) {
|
|
6573
7218
|
if (coinName === "sui") {
|
|
6574
|
-
const rewardCoin = txBlock.claimReferralRevenue(
|
|
7219
|
+
const rewardCoin = await txBlock.claimReferralRevenue(
|
|
7220
|
+
veScaKey,
|
|
7221
|
+
coinName
|
|
7222
|
+
);
|
|
6575
7223
|
objToTransfer.push(rewardCoin);
|
|
6576
7224
|
} else {
|
|
6577
|
-
const rewardCoin = txBlock.claimReferralRevenue(
|
|
7225
|
+
const rewardCoin = await txBlock.claimReferralRevenue(
|
|
7226
|
+
veScaKey,
|
|
7227
|
+
coinName
|
|
7228
|
+
);
|
|
6578
7229
|
try {
|
|
6579
7230
|
const coins = await builder.suiKit.suiInteractor.selectCoins(
|
|
6580
7231
|
sender,
|
|
@@ -6634,8 +7285,9 @@ var generateLoyaltyProgramNormalMethod = ({ builder, txBlock }) => {
|
|
|
6634
7285
|
)
|
|
6635
7286
|
};
|
|
6636
7287
|
return {
|
|
6637
|
-
claimLoyaltyRevenue: (veScaKey) => {
|
|
6638
|
-
return
|
|
7288
|
+
claimLoyaltyRevenue: async (veScaKey) => {
|
|
7289
|
+
return await builder.moveCall(
|
|
7290
|
+
txBlock,
|
|
6639
7291
|
`${loyaltyProgramIds.loyaltyProgramPkgId}::reward_pool::redeem_reward`,
|
|
6640
7292
|
[loyaltyProgramIds.rewardPool, veScaKey]
|
|
6641
7293
|
);
|
|
@@ -6652,7 +7304,7 @@ var generateLoyaltyProgramQuickMethod = ({
|
|
|
6652
7304
|
const sender = requireSender(txBlock);
|
|
6653
7305
|
if (!veScaKey)
|
|
6654
7306
|
throw new Error(`No veScaKey found for user ${sender}`);
|
|
6655
|
-
const rewardCoin = txBlock.claimLoyaltyRevenue(veScaKey);
|
|
7307
|
+
const rewardCoin = await txBlock.claimLoyaltyRevenue(veScaKey);
|
|
6656
7308
|
await builder.utils.mergeSimilarCoins(
|
|
6657
7309
|
txBlock,
|
|
6658
7310
|
rewardCoin,
|
|
@@ -6701,8 +7353,9 @@ var generateSCoinNormalMethod = ({
|
|
|
6701
7353
|
pkgId: builder.address.get("scoin.id")
|
|
6702
7354
|
};
|
|
6703
7355
|
return {
|
|
6704
|
-
mintSCoin: (marketCoinName, marketCoin) => {
|
|
6705
|
-
return
|
|
7356
|
+
mintSCoin: async (marketCoinName, marketCoin) => {
|
|
7357
|
+
return await builder.moveCall(
|
|
7358
|
+
txBlock,
|
|
6706
7359
|
`${sCoinPkgIds.pkgId}::s_coin_converter::mint_s_coin`,
|
|
6707
7360
|
[builder.utils.getSCoinTreasury(marketCoinName), marketCoin],
|
|
6708
7361
|
[
|
|
@@ -6711,8 +7364,9 @@ var generateSCoinNormalMethod = ({
|
|
|
6711
7364
|
]
|
|
6712
7365
|
);
|
|
6713
7366
|
},
|
|
6714
|
-
burnSCoin: (sCoinName, sCoin) => {
|
|
6715
|
-
return
|
|
7367
|
+
burnSCoin: async (sCoinName, sCoin) => {
|
|
7368
|
+
return await builder.moveCall(
|
|
7369
|
+
txBlock,
|
|
6716
7370
|
`${sCoinPkgIds.pkgId}::s_coin_converter::burn_s_coin`,
|
|
6717
7371
|
[builder.utils.getSCoinTreasury(sCoinName), sCoin],
|
|
6718
7372
|
[
|
|
@@ -6737,7 +7391,7 @@ var generateSCoinQuickMethod = ({
|
|
|
6737
7391
|
sender
|
|
6738
7392
|
);
|
|
6739
7393
|
txBlock.transferObjects([leftCoin], sender);
|
|
6740
|
-
return txBlock.mintSCoin(marketCoinName, takeCoin);
|
|
7394
|
+
return await txBlock.mintSCoin(marketCoinName, takeCoin);
|
|
6741
7395
|
},
|
|
6742
7396
|
burnSCoinQuick: async (sCoinName, amount) => {
|
|
6743
7397
|
const sender = requireSender(txBlock);
|
|
@@ -6748,7 +7402,7 @@ var generateSCoinQuickMethod = ({
|
|
|
6748
7402
|
sender
|
|
6749
7403
|
);
|
|
6750
7404
|
txBlock.transferObjects([leftCoin], sender);
|
|
6751
|
-
return txBlock.burnSCoin(sCoinName, takeCoin);
|
|
7405
|
+
return await txBlock.burnSCoin(sCoinName, takeCoin);
|
|
6752
7406
|
}
|
|
6753
7407
|
};
|
|
6754
7408
|
};
|
|
@@ -7070,6 +7724,7 @@ var ScallopQuery = class {
|
|
|
7070
7724
|
}
|
|
7071
7725
|
/* ==================== Core Query Methods ==================== */
|
|
7072
7726
|
/**
|
|
7727
|
+
* @deprecated use getMarketPools
|
|
7073
7728
|
* Query market data.
|
|
7074
7729
|
* @param indexer - Whether to use indexer.
|
|
7075
7730
|
* @return Market data.
|
|
@@ -7088,7 +7743,7 @@ var ScallopQuery = class {
|
|
|
7088
7743
|
* @param indexer - Whether to use indexer.
|
|
7089
7744
|
* @return Market pools data.
|
|
7090
7745
|
*/
|
|
7091
|
-
async getMarketPools(poolCoinNames, args) {
|
|
7746
|
+
async getMarketPools(poolCoinNames = [...SUPPORT_POOLS], args) {
|
|
7092
7747
|
return await getMarketPools(
|
|
7093
7748
|
this,
|
|
7094
7749
|
poolCoinNames,
|
|
@@ -7104,13 +7759,8 @@ var ScallopQuery = class {
|
|
|
7104
7759
|
* @return Market pool data.
|
|
7105
7760
|
*/
|
|
7106
7761
|
async getMarketPool(poolCoinName, args) {
|
|
7107
|
-
|
|
7108
|
-
|
|
7109
|
-
poolCoinName,
|
|
7110
|
-
args?.indexer,
|
|
7111
|
-
args?.marketObject,
|
|
7112
|
-
args?.coinPrice
|
|
7113
|
-
);
|
|
7762
|
+
const marketPools = await this.getMarketPools(void 0, args);
|
|
7763
|
+
return marketPools.pools[poolCoinName];
|
|
7114
7764
|
}
|
|
7115
7765
|
/**
|
|
7116
7766
|
* Get market collaterals.
|
|
@@ -7237,13 +7887,8 @@ var ScallopQuery = class {
|
|
|
7237
7887
|
* @return Spool data.
|
|
7238
7888
|
*/
|
|
7239
7889
|
async getSpool(stakeMarketCoinName, args) {
|
|
7240
|
-
|
|
7241
|
-
|
|
7242
|
-
stakeMarketCoinName,
|
|
7243
|
-
args?.indexer,
|
|
7244
|
-
args?.marketPool,
|
|
7245
|
-
args?.coinPrices
|
|
7246
|
-
);
|
|
7890
|
+
const spools = await this.getSpools(void 0, args);
|
|
7891
|
+
return spools[stakeMarketCoinName];
|
|
7247
7892
|
}
|
|
7248
7893
|
/**
|
|
7249
7894
|
* Get stake accounts data for all stake pools (spools).
|
|
@@ -7409,11 +8054,9 @@ var ScallopQuery = class {
|
|
|
7409
8054
|
* @return Borrowing and collateral information.
|
|
7410
8055
|
*/
|
|
7411
8056
|
async getObligationAccount(obligationId, ownerAddress = this.walletAddress, args) {
|
|
7412
|
-
|
|
7413
|
-
|
|
7414
|
-
obligationId
|
|
7415
|
-
ownerAddress,
|
|
7416
|
-
args?.indexer
|
|
8057
|
+
const results = await this.getObligationAccounts(ownerAddress, args);
|
|
8058
|
+
return Object.values(results).find(
|
|
8059
|
+
(obligation) => obligation?.obligationId === obligationId
|
|
7417
8060
|
);
|
|
7418
8061
|
}
|
|
7419
8062
|
/**
|
|
@@ -7548,7 +8191,7 @@ var ScallopQuery = class {
|
|
|
7548
8191
|
* Get list of isolated assets
|
|
7549
8192
|
*/
|
|
7550
8193
|
async getIsolatedAssets() {
|
|
7551
|
-
return await getIsolatedAssets(this
|
|
8194
|
+
return await getIsolatedAssets(this);
|
|
7552
8195
|
}
|
|
7553
8196
|
/**
|
|
7554
8197
|
* Check if asset is an isolated asset
|
|
@@ -7571,6 +8214,13 @@ var ScallopQuery = class {
|
|
|
7571
8214
|
async getAllCoinPrices(args) {
|
|
7572
8215
|
return getAllCoinPrices(this, args?.marketPools, args?.coinPrices);
|
|
7573
8216
|
}
|
|
8217
|
+
/**
|
|
8218
|
+
* Query all address (lending pool, collateral pool, borrow dynamics, interest models) of all pool
|
|
8219
|
+
* @returns
|
|
8220
|
+
*/
|
|
8221
|
+
async getPoolAddresses() {
|
|
8222
|
+
return getAllAddresses(this);
|
|
8223
|
+
}
|
|
7574
8224
|
};
|
|
7575
8225
|
|
|
7576
8226
|
// src/models/scallopBuilder.ts
|
|
@@ -7629,7 +8279,6 @@ var ScallopBuilder = class {
|
|
|
7629
8279
|
await this.address.read();
|
|
7630
8280
|
}
|
|
7631
8281
|
await this.query.init(force, this.address);
|
|
7632
|
-
await this.utils.init(force, this.address);
|
|
7633
8282
|
}
|
|
7634
8283
|
/**
|
|
7635
8284
|
* Create a scallop txBlock instance that enhances transaction block.
|
|
@@ -7718,6 +8367,9 @@ var ScallopBuilder = class {
|
|
|
7718
8367
|
txBlock
|
|
7719
8368
|
);
|
|
7720
8369
|
}
|
|
8370
|
+
moveCall(txb, target, args, typeArgs) {
|
|
8371
|
+
return txb.moveCall(target, args, typeArgs);
|
|
8372
|
+
}
|
|
7721
8373
|
};
|
|
7722
8374
|
|
|
7723
8375
|
// src/models/scallopClient.ts
|
|
@@ -7864,7 +8516,7 @@ var ScallopClient = class {
|
|
|
7864
8516
|
}
|
|
7865
8517
|
async openObligation(sign = true) {
|
|
7866
8518
|
const txBlock = this.builder.createTxBlock();
|
|
7867
|
-
txBlock.openObligationEntry();
|
|
8519
|
+
await txBlock.openObligationEntry();
|
|
7868
8520
|
if (sign) {
|
|
7869
8521
|
return await this.suiKit.signAndSendTxn(
|
|
7870
8522
|
txBlock
|
|
@@ -7886,9 +8538,9 @@ var ScallopClient = class {
|
|
|
7886
8538
|
specificObligationId
|
|
7887
8539
|
);
|
|
7888
8540
|
} else {
|
|
7889
|
-
const [obligation, obligationKey, hotPotato] = txBlock.openObligation();
|
|
8541
|
+
const [obligation, obligationKey, hotPotato] = await txBlock.openObligation();
|
|
7890
8542
|
await txBlock.addCollateralQuick(amount, collateralCoinName, obligation);
|
|
7891
|
-
txBlock.returnObligation(obligation, hotPotato);
|
|
8543
|
+
await txBlock.returnObligation(obligation, hotPotato);
|
|
7892
8544
|
txBlock.transferObjects([obligationKey], sender);
|
|
7893
8545
|
}
|
|
7894
8546
|
if (sign) {
|
|
@@ -7958,7 +8610,7 @@ var ScallopClient = class {
|
|
|
7958
8610
|
targetStakeAccount
|
|
7959
8611
|
);
|
|
7960
8612
|
} else {
|
|
7961
|
-
const account = txBlock.createStakeAccount(stakeMarketCoinName);
|
|
8613
|
+
const account = await txBlock.createStakeAccount(stakeMarketCoinName);
|
|
7962
8614
|
await txBlock.stakeQuick(marketCoin, stakeMarketCoinName, account);
|
|
7963
8615
|
txBlock.transferObjects([account], sender);
|
|
7964
8616
|
}
|
|
@@ -8055,8 +8707,12 @@ var ScallopClient = class {
|
|
|
8055
8707
|
const txBlock = this.builder.createTxBlock();
|
|
8056
8708
|
const sender = walletAddress ?? this.walletAddress;
|
|
8057
8709
|
txBlock.setSender(sender);
|
|
8058
|
-
const [coin, loan] = txBlock.borrowFlashLoan(amount, poolCoinName);
|
|
8059
|
-
txBlock.repayFlashLoan(
|
|
8710
|
+
const [coin, loan] = await txBlock.borrowFlashLoan(amount, poolCoinName);
|
|
8711
|
+
await txBlock.repayFlashLoan(
|
|
8712
|
+
await callback(txBlock, coin),
|
|
8713
|
+
loan,
|
|
8714
|
+
poolCoinName
|
|
8715
|
+
);
|
|
8060
8716
|
if (sign) {
|
|
8061
8717
|
return await this.suiKit.signAndSendTxn(
|
|
8062
8718
|
txBlock
|
|
@@ -8069,7 +8725,7 @@ var ScallopClient = class {
|
|
|
8069
8725
|
const txBlock = this.builder.createTxBlock();
|
|
8070
8726
|
const sender = walletAddress ?? this.walletAddress;
|
|
8071
8727
|
txBlock.setSender(sender);
|
|
8072
|
-
const stakeAccount = txBlock.createStakeAccount(marketCoinName);
|
|
8728
|
+
const stakeAccount = await txBlock.createStakeAccount(marketCoinName);
|
|
8073
8729
|
txBlock.transferObjects([stakeAccount], sender);
|
|
8074
8730
|
if (sign) {
|
|
8075
8731
|
return await this.suiKit.signAndSendTxn(
|
|
@@ -8088,7 +8744,7 @@ var ScallopClient = class {
|
|
|
8088
8744
|
if (targetStakeAccount) {
|
|
8089
8745
|
await txBlock.stakeQuick(amount, stakeMarketCoinName, targetStakeAccount);
|
|
8090
8746
|
} else {
|
|
8091
|
-
const account = txBlock.createStakeAccount(stakeMarketCoinName);
|
|
8747
|
+
const account = await txBlock.createStakeAccount(stakeMarketCoinName);
|
|
8092
8748
|
await txBlock.stakeQuick(amount, stakeMarketCoinName, account);
|
|
8093
8749
|
txBlock.transferObjects([account], sender);
|
|
8094
8750
|
}
|
|
@@ -8138,7 +8794,7 @@ var ScallopClient = class {
|
|
|
8138
8794
|
);
|
|
8139
8795
|
const stakeCoinName = this.utils.parseCoinName(stakeMarketCoinName);
|
|
8140
8796
|
if (stakeMarketCoin) {
|
|
8141
|
-
const coin = txBlock.withdraw(stakeMarketCoin, stakeCoinName);
|
|
8797
|
+
const coin = await txBlock.withdraw(stakeMarketCoin, stakeCoinName);
|
|
8142
8798
|
await this.utils.mergeSimilarCoins(
|
|
8143
8799
|
txBlock,
|
|
8144
8800
|
coin,
|
|
@@ -8235,6 +8891,8 @@ var ScallopClient = class {
|
|
|
8235
8891
|
txBlock.setSender(sender);
|
|
8236
8892
|
const rewardCoinsCollection = {};
|
|
8237
8893
|
const obligationAccount = await this.query.getObligationAccount(obligationId);
|
|
8894
|
+
if (!obligationAccount)
|
|
8895
|
+
throw new Error("Obligation not found");
|
|
8238
8896
|
const rewardCoinNames = Object.values(obligationAccount.borrowIncentives).flatMap(
|
|
8239
8897
|
({ rewards }) => rewards.filter(({ availableClaimAmount }) => availableClaimAmount > 0)
|
|
8240
8898
|
).flatMap(({ coinName }) => coinName);
|
|
@@ -8297,7 +8955,7 @@ var ScallopClient = class {
|
|
|
8297
8955
|
throw e;
|
|
8298
8956
|
}
|
|
8299
8957
|
if (toDestroyMarketCoin) {
|
|
8300
|
-
const sCoin = txBlock.mintSCoin(
|
|
8958
|
+
const sCoin = await txBlock.mintSCoin(
|
|
8301
8959
|
sCoinName,
|
|
8302
8960
|
toDestroyMarketCoin
|
|
8303
8961
|
);
|
|
@@ -8565,9 +9223,11 @@ export {
|
|
|
8565
9223
|
ScallopQuery,
|
|
8566
9224
|
ScallopUtils,
|
|
8567
9225
|
TEST_ADDRESSES,
|
|
9226
|
+
TokenBucket,
|
|
8568
9227
|
UNLOCK_ROUND_DURATION,
|
|
8569
9228
|
USE_TEST_ADDRESS,
|
|
8570
9229
|
assetCoins,
|
|
9230
|
+
callWithRateLimit,
|
|
8571
9231
|
coinDecimals,
|
|
8572
9232
|
coinIds,
|
|
8573
9233
|
marketCoins,
|