@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.js
CHANGED
|
@@ -71,9 +71,11 @@ __export(src_exports, {
|
|
|
71
71
|
ScallopQuery: () => ScallopQuery,
|
|
72
72
|
ScallopUtils: () => ScallopUtils,
|
|
73
73
|
TEST_ADDRESSES: () => TEST_ADDRESSES,
|
|
74
|
+
TokenBucket: () => TokenBucket,
|
|
74
75
|
UNLOCK_ROUND_DURATION: () => UNLOCK_ROUND_DURATION,
|
|
75
76
|
USE_TEST_ADDRESS: () => USE_TEST_ADDRESS,
|
|
76
77
|
assetCoins: () => assetCoins,
|
|
78
|
+
callWithRateLimit: () => callWithRateLimit,
|
|
77
79
|
coinDecimals: () => coinDecimals,
|
|
78
80
|
coinIds: () => coinIds,
|
|
79
81
|
marketCoins: () => marketCoins,
|
|
@@ -115,10 +117,9 @@ var COIN_GECKGO_IDS = {
|
|
|
115
117
|
afsui: "sui",
|
|
116
118
|
hasui: "sui",
|
|
117
119
|
vsui: "sui",
|
|
118
|
-
sca: "scallop-2"
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
// fud: 'fud-the-pug',
|
|
120
|
+
sca: "scallop-2",
|
|
121
|
+
deep: "deepbook",
|
|
122
|
+
fud: "fud-the-pug"
|
|
122
123
|
};
|
|
123
124
|
|
|
124
125
|
// src/constants/common.ts
|
|
@@ -147,10 +148,9 @@ var SUPPORT_POOLS = [
|
|
|
147
148
|
"afsui",
|
|
148
149
|
"hasui",
|
|
149
150
|
"vsui",
|
|
150
|
-
"sca"
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
// 'deep',
|
|
151
|
+
"sca",
|
|
152
|
+
"fud",
|
|
153
|
+
"deep"
|
|
154
154
|
];
|
|
155
155
|
var SUPPORT_COLLATERALS = [
|
|
156
156
|
"usdc",
|
|
@@ -194,10 +194,9 @@ var SUPPORT_SCOIN = [
|
|
|
194
194
|
"ssca",
|
|
195
195
|
"scetus",
|
|
196
196
|
"swsol",
|
|
197
|
-
"swbtc"
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
// 'sfud',
|
|
197
|
+
"swbtc",
|
|
198
|
+
"sdeep",
|
|
199
|
+
"sfud"
|
|
201
200
|
];
|
|
202
201
|
var SUPPORT_SUI_BRIDGE = ["sbeth"];
|
|
203
202
|
var SUPPORT_WORMHOLE = [
|
|
@@ -209,18 +208,7 @@ var SUPPORT_WORMHOLE = [
|
|
|
209
208
|
"wsol"
|
|
210
209
|
];
|
|
211
210
|
var SUPPORT_SPOOLS_REWARDS = ["sui"];
|
|
212
|
-
var SUPPORT_BORROW_INCENTIVE_POOLS = [
|
|
213
|
-
"sui",
|
|
214
|
-
"wusdc",
|
|
215
|
-
"wusdt",
|
|
216
|
-
"afsui",
|
|
217
|
-
"hasui",
|
|
218
|
-
"vsui",
|
|
219
|
-
"weth",
|
|
220
|
-
"sbeth",
|
|
221
|
-
"sca",
|
|
222
|
-
"usdc"
|
|
223
|
-
];
|
|
211
|
+
var SUPPORT_BORROW_INCENTIVE_POOLS = [...SUPPORT_POOLS];
|
|
224
212
|
var SUPPORT_BORROW_INCENTIVE_REWARDS = [
|
|
225
213
|
...SUPPORT_POOLS,
|
|
226
214
|
...SUPPORT_SCOIN
|
|
@@ -257,9 +245,8 @@ var coinDecimals = {
|
|
|
257
245
|
hasui: 9,
|
|
258
246
|
vsui: 9,
|
|
259
247
|
sca: 9,
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
// fud: 5,
|
|
248
|
+
deep: 6,
|
|
249
|
+
fud: 5,
|
|
263
250
|
susdc: 6,
|
|
264
251
|
sweth: 8,
|
|
265
252
|
ssbeth: 8,
|
|
@@ -273,10 +260,9 @@ var coinDecimals = {
|
|
|
273
260
|
safsui: 9,
|
|
274
261
|
shasui: 9,
|
|
275
262
|
svsui: 9,
|
|
276
|
-
ssca: 9
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
// sfud: 5,
|
|
263
|
+
ssca: 9,
|
|
264
|
+
sdeep: 6,
|
|
265
|
+
sfud: 5
|
|
280
266
|
};
|
|
281
267
|
var assetCoins = {
|
|
282
268
|
usdc: "usdc",
|
|
@@ -292,10 +278,9 @@ var assetCoins = {
|
|
|
292
278
|
afsui: "afsui",
|
|
293
279
|
hasui: "hasui",
|
|
294
280
|
vsui: "vsui",
|
|
295
|
-
sca: "sca"
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
// fud: 'fud',
|
|
281
|
+
sca: "sca",
|
|
282
|
+
deep: "deep",
|
|
283
|
+
fud: "fud"
|
|
299
284
|
};
|
|
300
285
|
var marketCoins = {
|
|
301
286
|
susdc: "susdc",
|
|
@@ -311,10 +296,9 @@ var marketCoins = {
|
|
|
311
296
|
safsui: "safsui",
|
|
312
297
|
shasui: "shasui",
|
|
313
298
|
svsui: "svsui",
|
|
314
|
-
ssca: "ssca"
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
// sfud: 'sfud',
|
|
299
|
+
ssca: "ssca",
|
|
300
|
+
sdeep: "sdeep",
|
|
301
|
+
sfud: "sfud"
|
|
318
302
|
};
|
|
319
303
|
var sCoins = {
|
|
320
304
|
susdc: "susdc",
|
|
@@ -329,10 +313,9 @@ var sCoins = {
|
|
|
329
313
|
svsui: "svsui",
|
|
330
314
|
ssca: "ssca",
|
|
331
315
|
swsol: "swsol",
|
|
332
|
-
swbtc: "swbtc"
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
// sdeep: 'sdeep',
|
|
316
|
+
swbtc: "swbtc",
|
|
317
|
+
sfud: "sfud",
|
|
318
|
+
sdeep: "sdeep"
|
|
336
319
|
};
|
|
337
320
|
var stakeMarketCoins = {
|
|
338
321
|
susdc: "susdc",
|
|
@@ -373,10 +356,10 @@ var coinIds = {
|
|
|
373
356
|
afsui: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
|
|
374
357
|
hasui: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
|
|
375
358
|
vsui: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
|
|
376
|
-
sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6"
|
|
359
|
+
sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
|
|
377
360
|
// isolated assets
|
|
378
|
-
|
|
379
|
-
|
|
361
|
+
deep: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",
|
|
362
|
+
fud: "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1"
|
|
380
363
|
};
|
|
381
364
|
var wormholeCoinIds = {
|
|
382
365
|
weth: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
|
|
@@ -392,28 +375,19 @@ var voloCoinIds = {
|
|
|
392
375
|
var sCoinIds = {
|
|
393
376
|
susdc: "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",
|
|
394
377
|
ssbeth: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
// swusdt:
|
|
400
|
-
// '0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT',
|
|
401
|
-
// ssca: '0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA',
|
|
402
|
-
// test values
|
|
403
|
-
ssui: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
|
|
404
|
-
swusdt: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
|
|
405
|
-
swusdc: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
|
|
406
|
-
ssca: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
|
|
378
|
+
ssui: "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",
|
|
379
|
+
swusdc: "0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
|
|
380
|
+
swusdt: "0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
|
|
381
|
+
ssca: "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",
|
|
407
382
|
scetus: "0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",
|
|
408
383
|
sweth: "0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
|
|
409
384
|
safsui: "0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",
|
|
410
385
|
shasui: "0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",
|
|
411
386
|
svsui: "0xe1a1cc6bcf0001a015eab84bcc6713393ce20535f55b8b6f35c142e057a25fbe::scallop_v_sui::SCALLOP_V_SUI",
|
|
412
387
|
swsol: "0x1392650f2eca9e3f6ffae3ff89e42a3590d7102b80e2b430f674730bc30d3259::scallop_wormhole_sol::SCALLOP_WORMHOLE_SOL",
|
|
413
|
-
swbtc: "0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC"
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
// sfud: '0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD',
|
|
388
|
+
swbtc: "0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC",
|
|
389
|
+
sdeep: "0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",
|
|
390
|
+
sfud: "0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD"
|
|
417
391
|
};
|
|
418
392
|
var sCoinTypeToName = Object.entries(sCoinIds).reduce(
|
|
419
393
|
(acc, [coinName, coinType]) => {
|
|
@@ -450,69 +424,244 @@ var FlashLoanFeeObjectMap = {
|
|
|
450
424
|
var POOL_ADDRESSES = {
|
|
451
425
|
usdc: {
|
|
452
426
|
lendingPoolAddress: "0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",
|
|
453
|
-
collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af"
|
|
427
|
+
collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af",
|
|
428
|
+
borrowDynamic: "0x77837ecd4f26fac9a410fff594f2c0bd3288904a15492ca77cb8a52684dbb866",
|
|
429
|
+
interestModel: "0xaae3f179d63009380cbdcb9acb12907afc9c3cb79cc3460be296a9c6d28f3ff3",
|
|
430
|
+
riskModel: "0x198b24db213bfeb8b3c80ae63dde92e32fd24984d25da8233ff777b851edd574",
|
|
431
|
+
borrowFeeKey: "0xd37c5316cfe0a5967d14264fa6b423f880518b294a1ee6581ccbb49ccc401fb8",
|
|
432
|
+
supplyLimitKey: "0x4be9ae54ac4d320f4f9c14cae78cb85c8e0e67791dd9bdba6d2db20614a28a24",
|
|
433
|
+
borrowLimitKey: "0x6b01093cba95b835181f00e3a2c31ed8dfc8d64fe3db0fb80933a09f66e1ccf1",
|
|
434
|
+
isolatedAssetKey: void 0,
|
|
435
|
+
spool: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
|
|
436
|
+
spoolReward: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166",
|
|
437
|
+
sCoinTreasury: "0xbe6b63021f3d82e0e7e977cdd718ed7c019cf2eba374b7b546220402452f938e",
|
|
438
|
+
coinDecimalId: "0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6"
|
|
454
439
|
},
|
|
455
440
|
sbeth: {
|
|
456
|
-
lendingPoolAddress: "
|
|
457
|
-
collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f"
|
|
441
|
+
lendingPoolAddress: "0xaa34c938e0394e5186c7dc626ad69be96af2194b23fdc6ac1c63090e399f5ba4",
|
|
442
|
+
collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f",
|
|
443
|
+
borrowDynamic: "0x7bbe75e8b924229f2f2110838ff612ea66e670fa3766759515dee78f617b1ea3",
|
|
444
|
+
interestModel: "0x9e6cae260d05155785a1904d24e6abc98368509c5752c8a9cec15a35aabc1512",
|
|
445
|
+
riskModel: "0xcf10334cfee675ecea2d2fee37b0f7cd2835c84b8b5692a853021debe6af80ab",
|
|
446
|
+
borrowFeeKey: "0x4298c8b6afe7a42a8e3ff93773fb9769529fe6d37e085ab411acf2ba2a44a931",
|
|
447
|
+
supplyLimitKey: "0x812fe508b78d3e0817149c0b39976221ddb267b5cc9514e81679f9b9a2f3624c",
|
|
448
|
+
borrowLimitKey: "0x165c274c67eda2b0d13563124741fffd0ce7d643f4c1c4b59d7e53a83796ae25",
|
|
449
|
+
isolatedAssetKey: void 0,
|
|
450
|
+
spool: void 0,
|
|
451
|
+
spoolReward: void 0,
|
|
452
|
+
sCoinTreasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed",
|
|
453
|
+
coinDecimalId: "0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0"
|
|
458
454
|
},
|
|
459
455
|
weth: {
|
|
460
456
|
lendingPoolAddress: "0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",
|
|
461
|
-
collateralPoolAddress: "0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf"
|
|
457
|
+
collateralPoolAddress: "0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf",
|
|
458
|
+
borrowDynamic: "0xd1578e1d1c9c82eb4c5bf14beece8142a67a683b2647d7276e92984119fc1445",
|
|
459
|
+
interestModel: "0xa1dc08541cd2cb7cfb4e56272292d5c6a4780e80fd210c58abffae98268b5ed9",
|
|
460
|
+
riskModel: "0x9f05a25fd33a9e8cf33962126b175d038e184f0ee1b87dc41d4cedbe6abebbe5",
|
|
461
|
+
borrowFeeKey: "0x29672ba8ab4625b8181d8ed739e5344de22a97d417748c4d1276c7379283d7a3",
|
|
462
|
+
supplyLimitKey: "0x2b957941bdc9432bbc83ab74dc194b6ebb7c927bc4c6926a5492b5503499e509",
|
|
463
|
+
borrowLimitKey: "0x51f256d87e51a7ca2b1c482923096f4b6dac6beac89d8ecf4c65b7d5764115d6",
|
|
464
|
+
isolatedAssetKey: void 0,
|
|
465
|
+
spool: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
|
|
466
|
+
spoolReward: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077",
|
|
467
|
+
sCoinTreasury: "0x4b7f5da0e306c9d52490a0c1d4091e653d6b89778b9b4f23c877e534e4d9cd21",
|
|
468
|
+
coinDecimalId: "0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f"
|
|
462
469
|
},
|
|
463
470
|
wbtc: {
|
|
464
471
|
lendingPoolAddress: "0x65cc08a5aca0a0b8d72e1993ded8d145f06dd102fd0d8f285b92934faed564ab",
|
|
465
|
-
collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3"
|
|
472
|
+
collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3",
|
|
473
|
+
borrowDynamic: "0x6f97dcf54158a5d08f359a213a41e347bc1e6316414288dc1e1b674dc008742e",
|
|
474
|
+
interestModel: "0x582b915cca0ffca9576a7cedd505d0fd7cb146e9521ccf10e7453ed93705684d",
|
|
475
|
+
riskModel: "0x1d0a242bf1682e259112239720da19d3155dd99d70b1f4b3b973eecbab858911",
|
|
476
|
+
borrowFeeKey: "0x654ab7e8ff6d9ef04da697e1f12ca21eaf72ebb495daf877e0776e65187dcb92",
|
|
477
|
+
supplyLimitKey: "0xac3b0d17df9f98aa2798c54405cf1d8d5356ef22f76f02d150cbe5195e9f3a36",
|
|
478
|
+
borrowLimitKey: "0x231e13ba6b1eb26c562f4a125778d3152f9a77e31f124bd6012e234a73012169",
|
|
479
|
+
isolatedAssetKey: void 0,
|
|
480
|
+
spool: void 0,
|
|
481
|
+
spoolReward: void 0,
|
|
482
|
+
sCoinTreasury: "0xe2883934ea42c99bc998bbe0f01dd6d27aa0e27a56455707b1b34e6a41c20baa",
|
|
483
|
+
coinDecimalId: "0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd"
|
|
466
484
|
},
|
|
467
485
|
wusdc: {
|
|
468
|
-
lendingPoolAddress: "
|
|
469
|
-
collateralPoolAddress: "
|
|
486
|
+
lendingPoolAddress: "0x2f4df5e1368fbbdaa5c712d28b837b3d41c2d3872979ccededcdfdac55ff8a93",
|
|
487
|
+
collateralPoolAddress: "0x94cf69158114c5b242d2ee5d0149a335bddf3b9c9a6ba919cca58097a4814980",
|
|
488
|
+
borrowDynamic: "0x0464d117908b52fc75f7f85322a47caa078ef56f48681bcfdcb630a66f2591e6",
|
|
489
|
+
interestModel: "0xd72e2b5ba486752939d6dfb86a67b86ce9a60c83cb8fb893caac54a0f112577f",
|
|
490
|
+
riskModel: "0xb74035de8f70c1531ceb8e2e8c152d6b8db24c8a9fe7bbf6f75dbf7c6700a0a3",
|
|
491
|
+
borrowFeeKey: "0x76dcf1acbd9951fe3d1a3fe28403fec089ffe53a7c7d6c77e3ea97033a63581a",
|
|
492
|
+
supplyLimitKey: "0x7b302196907e87c5d5872f2e6f40628d110170f994e0e08bc607bded001958c3",
|
|
493
|
+
borrowLimitKey: "0x97f1502ce994db0bcb15aac1760d174def9e88e97cd2262eed54521ee2c19f81",
|
|
494
|
+
isolatedAssetKey: void 0,
|
|
495
|
+
spool: "0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",
|
|
496
|
+
spoolReward: "0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8",
|
|
497
|
+
sCoinTreasury: "0x50c5cfcbcca3aaacab0984e4d7ad9a6ad034265bebb440f0d1cd688ec20b2548",
|
|
498
|
+
coinDecimalId: "0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189"
|
|
470
499
|
},
|
|
471
500
|
wusdt: {
|
|
472
501
|
lendingPoolAddress: "0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879",
|
|
473
|
-
collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3"
|
|
502
|
+
collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3",
|
|
503
|
+
borrowDynamic: "0xb524030cc8f7cdbf13f1925a0a2b5e77cc52bab73b070f42c5e510f6083da1ba",
|
|
504
|
+
interestModel: "0x92f93c4431b4c51774d6d964da516af2def18b78f49dbbf519e58449a8ba4659",
|
|
505
|
+
riskModel: "0xdf89d66988cb506ddeff46f5dfd1d11aaece345e9a05a0c6a18a0788647de2a7",
|
|
506
|
+
borrowFeeKey: "0xda8f8b3522fc4086eae4ae7ce8844d60aa0dc3eab8ffc91fe93e922a72639b2d",
|
|
507
|
+
supplyLimitKey: "0xa9cb5ebb90ca6e808a2bd7728cca4a6fa8b565d4deeda96eb23c8322c477c24e",
|
|
508
|
+
borrowLimitKey: "0xa3278564fc613680a69c10972a0299965bf6e12e9ac171388842fc958de0f90e",
|
|
509
|
+
isolatedAssetKey: void 0,
|
|
510
|
+
spool: "0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",
|
|
511
|
+
spoolReward: "0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080",
|
|
512
|
+
sCoinTreasury: "0x1f02e2fed702b477732d4ad6044aaed04f2e8e586a169153694861a901379df0",
|
|
513
|
+
coinDecimalId: "0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c"
|
|
474
514
|
},
|
|
475
515
|
sui: {
|
|
476
516
|
lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
|
|
477
|
-
collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb"
|
|
517
|
+
collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb",
|
|
518
|
+
borrowDynamic: "0xbf68e6159c99dcaf87717385f1143d2891c2d19663bd51f0bc9b6909e4bb7c27",
|
|
519
|
+
interestModel: "0x0dad9baa89b863c15a0487575de7cc428b01f1aa3998ad7a9e9752d96e83ffa9",
|
|
520
|
+
riskModel: "0xcd6675864690b5648a6e309f2f02a66914b2b2bd9c31936f4e0f7fc0f792bc86",
|
|
521
|
+
borrowFeeKey: "0xda5ede87a05c0677b17511c859b22d0a2b0229ee374d5d7a1274cb836b9fe5f8",
|
|
522
|
+
supplyLimitKey: "0x0602418e66fb7a73fa997077bd66f248ad5b090d43344a14b9f1db598ecc1d47",
|
|
523
|
+
borrowLimitKey: "0x2b33a7efdcf6a6df24f4d8a356dd52f58d75bc023c3f171d99502d4d008b53f0",
|
|
524
|
+
isolatedAssetKey: void 0,
|
|
525
|
+
spool: "0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",
|
|
526
|
+
spoolReward: "0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9",
|
|
527
|
+
sCoinTreasury: "0x5c1678c8261ac9eec024d4d630006a9f55c80dc0b1aa38a003fcb1d425818c6b",
|
|
528
|
+
coinDecimalId: "0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3"
|
|
478
529
|
},
|
|
479
530
|
wapt: {
|
|
480
531
|
lendingPoolAddress: "0xca8c14a24e0c32b198eaf479a3317461e3cc339097ce88eaf296a15df8dcfdf5",
|
|
481
|
-
collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c"
|
|
532
|
+
collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c",
|
|
533
|
+
borrowDynamic: "0xadda873fb6bf68e1ba3f2dfaa51cf75d4a1bef73d9627bd36e77d2baecb1f2dc",
|
|
534
|
+
interestModel: "0xa4a29d07beecea5eb0c59745bb89d7a1380c6f206a7f1ca37046e05db6025c43",
|
|
535
|
+
riskModel: "0x7ada83b473af30aed50d187de82a0912878b53ade7ac30e11ce23953cf739d84",
|
|
536
|
+
borrowFeeKey: "0x768735df587c7e0f141dcd035fbbcbf9d2149a7b23888baed4e2baa160fa2eeb",
|
|
537
|
+
supplyLimitKey: void 0,
|
|
538
|
+
borrowLimitKey: void 0,
|
|
539
|
+
isolatedAssetKey: void 0,
|
|
540
|
+
spool: void 0,
|
|
541
|
+
spoolReward: void 0,
|
|
542
|
+
sCoinTreasury: void 0,
|
|
543
|
+
coinDecimalId: "0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8"
|
|
482
544
|
},
|
|
483
545
|
wsol: {
|
|
484
546
|
lendingPoolAddress: "0x985682c42984cdfb03f9ff7d8923344c2fe096b1ae4b82ea17721af19d22a21f",
|
|
485
|
-
collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f"
|
|
547
|
+
collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f",
|
|
548
|
+
borrowDynamic: "0xe3f301e16d4f1273ea659dd82c5c3f124ca5a5883a5726c7ec0f77bf43b70895",
|
|
549
|
+
interestModel: "0xd95affaee077006b8dbb4b108c1b087e95fc6e5143ef0682da345d5b35bc6356",
|
|
550
|
+
riskModel: "0x8e0da6358073144ec3557400c87f04991ba3a13ca7e0d0a19daed45260b32f16",
|
|
551
|
+
borrowFeeKey: "0x604bffbc817e8e12db15f2373a9e15b2c7adbc510649cdf2cc62a594af90671c",
|
|
552
|
+
supplyLimitKey: "0xbd419b536b3f9c9d4adfc20372ca6feedc53cc31798ac860dbfc847bcf05f54b",
|
|
553
|
+
borrowLimitKey: "0x77d453c51948f32564c810bc73f9ba7abde880657b7f89e1c8a3bc28fa36ee87",
|
|
554
|
+
isolatedAssetKey: void 0,
|
|
555
|
+
spool: void 0,
|
|
556
|
+
spoolReward: void 0,
|
|
557
|
+
sCoinTreasury: "0x760fd66f5be869af4382fa32b812b3c67f0eca1bb1ed7a5578b21d56e1848819",
|
|
558
|
+
coinDecimalId: "0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e"
|
|
486
559
|
},
|
|
487
560
|
cetus: {
|
|
488
561
|
lendingPoolAddress: "0xc09858f60e74a1b671635bec4e8a2c84a0ff313eb87f525fba3258e88c6b6282",
|
|
489
|
-
collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a"
|
|
562
|
+
collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a",
|
|
563
|
+
borrowDynamic: "0xcc725fd5d71990cdccc7e16c88a2abde6dbcd0bf6e805ccc1c0cb83a106bbf4e",
|
|
564
|
+
interestModel: "0x2f1258aab89d04d11834121599ab1317dfecb582b4246f106df399911125845a",
|
|
565
|
+
riskModel: "0x03fed312dbba624dff5edaf4736891a1c7d864445fd268e7572b42ec7381132e",
|
|
566
|
+
borrowFeeKey: "0xdf5fb0cc4ebbf5eebfae23dfa5b266f6a58c18a894a13054ae60c0eb6e79c382",
|
|
567
|
+
supplyLimitKey: "0xa5ea3d4bf663d7bc667e82b40a98923590ff3851b9ea8e7afbc26c588c7007d3",
|
|
568
|
+
borrowLimitKey: "0xf44218a5f0feb128e6fbe74b91d1e7e9ef859bd23a576ff0de151829e015a157",
|
|
569
|
+
isolatedAssetKey: void 0,
|
|
570
|
+
spool: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
|
|
571
|
+
spoolReward: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f",
|
|
572
|
+
sCoinTreasury: "0xa283c63488773c916cb3d6c64109536160d5eb496caddc721eb39aad2977d735",
|
|
573
|
+
coinDecimalId: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da"
|
|
490
574
|
},
|
|
491
575
|
afsui: {
|
|
492
576
|
lendingPoolAddress: "0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",
|
|
493
|
-
collateralPoolAddress: "0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341"
|
|
577
|
+
collateralPoolAddress: "0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341",
|
|
578
|
+
borrowDynamic: "0x1c76d4df9506154a117bbac0f5e005d8a9c0d9ca60e3fe0c9d080006f6f54e81",
|
|
579
|
+
interestModel: "0xb155c536b37c9601baaa734ad1dd0ef335b2b597aceb8d3ecee41a43f94dcd70",
|
|
580
|
+
riskModel: "0x75371b1d04b5bebc0738af548ba64ea658e74f78228ec8014336d8eebb992312",
|
|
581
|
+
borrowFeeKey: "0xabc6422db2d4ee01635ddaeaa44ba68370eebd785d2c4632515f841ae9bc47d9",
|
|
582
|
+
supplyLimitKey: "0x61a2054eb37f543c0d774da57f2c9542aad8d79a197f748ac08ef5df6cc47028",
|
|
583
|
+
borrowLimitKey: "0x4459498a043872cd107ea917493fee0baf2d37a273c7538e1d6581cc61b92af8",
|
|
584
|
+
isolatedAssetKey: void 0,
|
|
585
|
+
spool: "0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",
|
|
586
|
+
spoolReward: "0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e",
|
|
587
|
+
sCoinTreasury: "0x55f4dfe9e40bc4cc11c70fcb1f3daefa2bdc330567c58d4f0792fbd9f9175a62",
|
|
588
|
+
coinDecimalId: "0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d"
|
|
494
589
|
},
|
|
495
590
|
hasui: {
|
|
496
591
|
lendingPoolAddress: "0x7ebc607f6bdeb659fb6506cb91c5cc1d47bb365cfd5d2e637ea765346ec84ed4",
|
|
497
|
-
collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d"
|
|
592
|
+
collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d",
|
|
593
|
+
borrowDynamic: "0x13ec1220b41c6e0f11dd6113199a2aff8e4cf2223047b5bd06d7a3ed5d23e1d2",
|
|
594
|
+
interestModel: "0x987c58cbe48096618f4d9d83e0bde2ff638ce4753aba40dab7c302ac3e4b4519",
|
|
595
|
+
riskModel: "0xe42d8497d423eca0d8df89850c2d77d3644e7f54a2d28f59c315903ea5ec8dec",
|
|
596
|
+
borrowFeeKey: "0xef885c382d461c4fb14d1f3b3758c380c78a1a4b2a3d2fafe6e8649a60fdd7ab",
|
|
597
|
+
supplyLimitKey: "0xc7385b1703693cbbc9c97227fe3fd5c91d7afda00e0da69d942c3260d78e45e0",
|
|
598
|
+
borrowLimitKey: "0x65333e606eead786a999c8267bc9886b0fdbc298a8a8635a48a9c9b8838d9395",
|
|
599
|
+
isolatedAssetKey: void 0,
|
|
600
|
+
spool: "0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",
|
|
601
|
+
spoolReward: "0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66",
|
|
602
|
+
sCoinTreasury: "0x404ccc1404d74a90eb6f9c9d4b6cda6d417fb03189f80d9070a35e5dab1df0f5",
|
|
603
|
+
coinDecimalId: "0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24"
|
|
498
604
|
},
|
|
499
605
|
vsui: {
|
|
500
606
|
lendingPoolAddress: "0xda9257c0731d8822e8a438ebced13415850d705b779c79958dcf2aeb21fcb43d",
|
|
501
|
-
collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e"
|
|
607
|
+
collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e",
|
|
608
|
+
borrowDynamic: "0x8eae703505246f975e83f5af24780e5f1b89ef403d5a80ea15534624d6f1a503",
|
|
609
|
+
interestModel: "0xaf6a52b5eaaa5af4d9e49d83de0d504c295ae21f3a37560c3f48e0e15a1d4625",
|
|
610
|
+
riskModel: "0x1e862f27a6bd47c3041159a5cf392f549485c6605ed9aa937f16ecc951e82e65",
|
|
611
|
+
borrowFeeKey: "0x5230de0f41a5e4c05b3d1187a90a9eeab491cec97b08b71512d9785e8af36aa6",
|
|
612
|
+
supplyLimitKey: "0x1d40e34d1f365ec431fff020bd75c16b14b340b3ed6c139803cc15c2384621b2",
|
|
613
|
+
borrowLimitKey: "0x4eb206b4417642cfc1b02f80bb5f5e366af2af2f9fb4ea4f4e898ae82367f8a0",
|
|
614
|
+
isolatedAssetKey: void 0,
|
|
615
|
+
spool: "0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",
|
|
616
|
+
spoolReward: "0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a",
|
|
617
|
+
sCoinTreasury: "0xc06688ee1af25abc286ffb1d18ce273d1d5907cd1064c25f4e8ca61ea989c1d1",
|
|
618
|
+
coinDecimalId: "0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd"
|
|
502
619
|
},
|
|
503
620
|
sca: {
|
|
504
621
|
lendingPoolAddress: "0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",
|
|
505
|
-
collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31"
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
622
|
+
collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31",
|
|
623
|
+
borrowDynamic: "0x4e24f52edd739dab59ca4c6353ca430b7ce57e7f333abd0957958570a7cd09ca",
|
|
624
|
+
interestModel: "0xbdcd48cf5b1a814911dc2d5c72d393a980c87820199fe5d799289ce94f4c47df",
|
|
625
|
+
riskModel: "0xc437c24b67b8e2676907700fa395af337ad6463d2c0b4f4fa2e9276414026089",
|
|
626
|
+
borrowFeeKey: "0xee55ba0f9800a62d9e7aef667f87e658258f41814d2c9fa02e25590671b4e5ad",
|
|
627
|
+
supplyLimitKey: "0x8dd938856b972a10ea27ecab2af7ed78e48fc5f6ccedaf2b2119959f747dc2e3",
|
|
628
|
+
borrowLimitKey: "0x04c7de61c5b42972f9bf6a8b1848e5fea2d037ee8deba81741ecd4a70aa80d30",
|
|
629
|
+
isolatedAssetKey: void 0,
|
|
630
|
+
spool: void 0,
|
|
631
|
+
spoolReward: void 0,
|
|
632
|
+
sCoinTreasury: "0xe04bfc95e00252bd654ee13c08edef9ac5e4b6ae4074e8390db39e9a0109c529",
|
|
633
|
+
coinDecimalId: "0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844"
|
|
634
|
+
},
|
|
635
|
+
fud: {
|
|
636
|
+
lendingPoolAddress: "0xefed2cbe76b344792ac724523c8b2236740d1cea2100d46a0ed0dc760c7f4231",
|
|
637
|
+
collateralPoolAddress: void 0,
|
|
638
|
+
borrowDynamic: "0x14367ddca30e2860cb89ed4eaca20c7ece260c5d59dd9990d2c85a8321326acb",
|
|
639
|
+
interestModel: "0x2600ac100ef154eb2329ffd3aad47aca308ff9f9348de3e8e94aaeb906ec2303",
|
|
640
|
+
riskModel: void 0,
|
|
641
|
+
borrowFeeKey: "0xa87e8b26e07ff35ac9fb57adcc779be2883080fc7d12de2d9e7e16d8d8d5e529",
|
|
642
|
+
supplyLimitKey: "0xf98419aecc37a3c5de716f8ec590f8991a5be34da72ce1a2da09531ff45adf7d",
|
|
643
|
+
borrowLimitKey: "0x3d928a001c453c50004baa54e14b0a0e1b0907d9c613dfd76064fd7ed4e8beb8",
|
|
644
|
+
isolatedAssetKey: "0xfcb533e9e4e31f9c9f32d6cbf7fbb3425f1d60474e229a363a2dc7f835d587e2",
|
|
645
|
+
spool: void 0,
|
|
646
|
+
spoolReward: void 0,
|
|
647
|
+
sCoinTreasury: "0xf25212f11d182decff7a86165699a73e3d5787aced203ca539f43cfbc10db867",
|
|
648
|
+
coinDecimalId: "0x01087411ef48aaac1eb6e24803213e3a60a03b147dac930e5e341f17a85e524e"
|
|
649
|
+
},
|
|
650
|
+
deep: {
|
|
651
|
+
lendingPoolAddress: "0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03",
|
|
652
|
+
collateralPoolAddress: void 0,
|
|
653
|
+
borrowDynamic: "0x95e00d7466f97a100e70f08bd37788dc49335796f6f49fab996d40dd0681c6d3",
|
|
654
|
+
interestModel: "0x4143c298506a332d92ea8a995e6f3991ee3215f58f6fc6441752835d275b9a69",
|
|
655
|
+
riskModel: void 0,
|
|
656
|
+
borrowFeeKey: "0xb14ee43f4ad2a2c40bac8c4406a401690e93c982e289cf3802fedf74a159cab2",
|
|
657
|
+
supplyLimitKey: "0x599528fdfdc253e90dfd0acf4f4a166b391e2aac1ca6528abbff63225b548fee",
|
|
658
|
+
borrowLimitKey: "0xf4217e8ef9d9c32e8992092e910a77535a8124c19b8a762a673f227f5f765a4e",
|
|
659
|
+
isolatedAssetKey: "0x208d3a24ba369dcfc8f0387333d1512b98199eb150d2f2a69359ff708cf761e3",
|
|
660
|
+
spool: void 0,
|
|
661
|
+
spoolReward: void 0,
|
|
662
|
+
sCoinTreasury: "0xc63838fabe37b25ad897392d89876d920f5e0c6a406bf3abcb84753d2829bc88",
|
|
663
|
+
coinDecimalId: "0x6e60b051a08fa836f5a7acd7c464c8d9825bc29c44657fe170fe9b8e1e4770c0"
|
|
664
|
+
}
|
|
516
665
|
};
|
|
517
666
|
|
|
518
667
|
// src/constants/pyth.ts
|
|
@@ -534,10 +683,9 @@ var PYTH_FEED_IDS = {
|
|
|
534
683
|
afsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
535
684
|
hasui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
536
685
|
vsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
537
|
-
sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc"
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
// fud: '6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75',
|
|
686
|
+
sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
|
|
687
|
+
deep: "29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",
|
|
688
|
+
fud: "6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75"
|
|
541
689
|
};
|
|
542
690
|
|
|
543
691
|
// src/constants/queryKeys.ts
|
|
@@ -563,7 +711,11 @@ var queryKeys = {
|
|
|
563
711
|
typeArgs: !typeArgs ? void 0 : JSON.stringify(typeArgs)
|
|
564
712
|
}
|
|
565
713
|
],
|
|
566
|
-
getObject: (objectId,
|
|
714
|
+
getObject: (objectId, options) => [
|
|
715
|
+
"rpc",
|
|
716
|
+
"getObject",
|
|
717
|
+
{ options, objectId }
|
|
718
|
+
],
|
|
567
719
|
getObjects: (objectIds, walletAddress, options) => [
|
|
568
720
|
"rpc",
|
|
569
721
|
"getObjects",
|
|
@@ -613,7 +765,10 @@ var queryKeys = {
|
|
|
613
765
|
"rpc",
|
|
614
766
|
"getAllCoinBalances",
|
|
615
767
|
{ owner }
|
|
616
|
-
]
|
|
768
|
+
],
|
|
769
|
+
getNormalizedMoveFunction: (target) => {
|
|
770
|
+
return ["rpc", "getNormalizedMoveCall", target];
|
|
771
|
+
}
|
|
617
772
|
},
|
|
618
773
|
oracle: {
|
|
619
774
|
getPythLatestPriceFeeds: () => ["oracle", "getPythPriceIds"]
|
|
@@ -837,6 +992,32 @@ var TEST_ADDRESSES = {
|
|
|
837
992
|
feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
|
|
838
993
|
}
|
|
839
994
|
}
|
|
995
|
+
},
|
|
996
|
+
deep: {
|
|
997
|
+
id: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",
|
|
998
|
+
metaData: "0x6e60b051a08fa836f5a7acd7c464c8d9825bc29c44657fe170fe9b8e1e4770c0",
|
|
999
|
+
treasury: "",
|
|
1000
|
+
oracle: {
|
|
1001
|
+
supra: "",
|
|
1002
|
+
switchboard: "",
|
|
1003
|
+
pyth: {
|
|
1004
|
+
feed: "29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",
|
|
1005
|
+
feedObject: "0x8c7f3a322b94cc69db2a2ac575cbd94bf5766113324c3a3eceac91e3e88a51ed"
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
},
|
|
1009
|
+
fud: {
|
|
1010
|
+
id: "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1",
|
|
1011
|
+
metaData: "0x01087411ef48aaac1eb6e24803213e3a60a03b147dac930e5e341f17a85e524e",
|
|
1012
|
+
treasury: "",
|
|
1013
|
+
oracle: {
|
|
1014
|
+
supra: "",
|
|
1015
|
+
switchboard: "",
|
|
1016
|
+
pyth: {
|
|
1017
|
+
feed: "6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75",
|
|
1018
|
+
feedObject: "0x4531c3ed0d22f21f5fce882905372006c9aafa30f01db03b789e95a6c50de7b2"
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
840
1021
|
}
|
|
841
1022
|
},
|
|
842
1023
|
oracles: {
|
|
@@ -1056,14 +1237,22 @@ var TEST_ADDRESSES = {
|
|
|
1056
1237
|
ssbeth: {
|
|
1057
1238
|
coinType: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
|
|
1058
1239
|
treasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed"
|
|
1240
|
+
},
|
|
1241
|
+
sdeep: {
|
|
1242
|
+
coinType: "0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",
|
|
1243
|
+
treasury: "0xc63838fabe37b25ad897392d89876d920f5e0c6a406bf3abcb84753d2829bc88"
|
|
1244
|
+
},
|
|
1245
|
+
sfud: {
|
|
1246
|
+
coinType: "0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD",
|
|
1247
|
+
treasury: "0xf25212f11d182decff7a86165699a73e3d5787aced203ca539f43cfbc10db867"
|
|
1059
1248
|
}
|
|
1060
1249
|
}
|
|
1061
1250
|
}
|
|
1062
1251
|
};
|
|
1063
1252
|
|
|
1064
1253
|
// src/constants/tokenBucket.ts
|
|
1065
|
-
var DEFAULT_TOKENS_PER_INTERVAL =
|
|
1066
|
-
var DEFAULT_INTERVAL_IN_MS =
|
|
1254
|
+
var DEFAULT_TOKENS_PER_INTERVAL = 10;
|
|
1255
|
+
var DEFAULT_INTERVAL_IN_MS = 250;
|
|
1067
1256
|
|
|
1068
1257
|
// src/constants/vesca.ts
|
|
1069
1258
|
var UNLOCK_ROUND_DURATION = 60 * 60 * 24;
|
|
@@ -1207,7 +1396,10 @@ var parseOriginMarketPoolData = (originMarketPoolData) => {
|
|
|
1207
1396
|
borrowRateOnMidKink: Number(originMarketPoolData.borrowRateOnMidKink.value) / 2 ** 32,
|
|
1208
1397
|
highKink: Number(originMarketPoolData.highKink.value) / 2 ** 32,
|
|
1209
1398
|
midKink: Number(originMarketPoolData.midKink.value) / 2 ** 32,
|
|
1210
|
-
minBorrowAmount: Number(originMarketPoolData.minBorrowAmount)
|
|
1399
|
+
minBorrowAmount: Number(originMarketPoolData.minBorrowAmount),
|
|
1400
|
+
isIsolated: originMarketPoolData.isIsolated,
|
|
1401
|
+
supplyLimit: Number(originMarketPoolData.supplyLimit),
|
|
1402
|
+
borrowLimit: Number(originMarketPoolData.borrowLimit)
|
|
1211
1403
|
};
|
|
1212
1404
|
};
|
|
1213
1405
|
var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
@@ -1259,6 +1451,7 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
|
1259
1451
|
borrowApyOnHighKink: utils.parseAprToApy(borrowAprOnHighKink),
|
|
1260
1452
|
borrowAprOnMidKink,
|
|
1261
1453
|
borrowApyOnMidKink: utils.parseAprToApy(borrowAprOnMidKink),
|
|
1454
|
+
coinDecimal,
|
|
1262
1455
|
maxBorrowApr,
|
|
1263
1456
|
maxBorrowApy: utils.parseAprToApy(maxBorrowApr),
|
|
1264
1457
|
borrowApr: Math.min(borrowApr, maxBorrowApr),
|
|
@@ -1277,17 +1470,21 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
|
1277
1470
|
utilizationRate: utilizationRate.toNumber(),
|
|
1278
1471
|
supplyApr: supplyApr.toNumber(),
|
|
1279
1472
|
supplyApy: utils.parseAprToApy(supplyApr.toNumber()),
|
|
1280
|
-
conversionRate: conversionRate.toNumber()
|
|
1473
|
+
conversionRate: conversionRate.toNumber(),
|
|
1474
|
+
isIsolated: parsedMarketPoolData.isIsolated,
|
|
1475
|
+
maxSupplyCoin: (0, import_bignumber.default)(parsedMarketPoolData.supplyLimit).shiftedBy(coinDecimal).toNumber(),
|
|
1476
|
+
maxBorrowCoin: (0, import_bignumber.default)(parsedMarketPoolData.borrowLimit).shiftedBy(coinDecimal).toNumber()
|
|
1281
1477
|
};
|
|
1282
1478
|
};
|
|
1283
1479
|
var parseOriginMarketCollateralData = (originMarketCollateralData) => {
|
|
1284
1480
|
const divisor = 2 ** 32;
|
|
1285
1481
|
return {
|
|
1286
1482
|
coinType: (0, import_utils.normalizeStructTag)(originMarketCollateralData.type.name),
|
|
1483
|
+
isIsolated: originMarketCollateralData.isIsolated,
|
|
1287
1484
|
collateralFactor: Number(originMarketCollateralData.collateralFactor.value) / divisor,
|
|
1288
1485
|
liquidationFactor: Number(originMarketCollateralData.liquidationFactor.value) / divisor,
|
|
1289
1486
|
liquidationDiscount: Number(originMarketCollateralData.liquidationDiscount.value) / divisor,
|
|
1290
|
-
|
|
1487
|
+
liquidationPenalty: Number(originMarketCollateralData.liquidationPenalty.value) / divisor,
|
|
1291
1488
|
liquidationReserveFactor: Number(originMarketCollateralData.liquidationReserveFactor.value) / divisor,
|
|
1292
1489
|
maxCollateralAmount: Number(originMarketCollateralData.maxCollateralAmount),
|
|
1293
1490
|
totalCollateralAmount: Number(
|
|
@@ -1307,6 +1504,8 @@ var calculateMarketCollateralData = (utils, parsedMarketCollateralData) => {
|
|
|
1307
1504
|
parsedMarketCollateralData.totalCollateralAmount
|
|
1308
1505
|
).shiftedBy(-1 * coinDecimal);
|
|
1309
1506
|
return {
|
|
1507
|
+
coinDecimal,
|
|
1508
|
+
isIsolated: parsedMarketCollateralData.isIsolated,
|
|
1310
1509
|
maxDepositAmount: parsedMarketCollateralData.maxCollateralAmount,
|
|
1311
1510
|
maxDepositCoin: maxCollateralCoin.toNumber(),
|
|
1312
1511
|
depositAmount: parsedMarketCollateralData.totalCollateralAmount,
|
|
@@ -1439,7 +1638,7 @@ var parseOriginBorrowIncentivesPoolPointData = (originBorrowIncentivePoolPointDa
|
|
|
1439
1638
|
createdAt: Number(originBorrowIncentivePoolPointData.created_at)
|
|
1440
1639
|
};
|
|
1441
1640
|
};
|
|
1442
|
-
var parseOriginBorrowIncentivePoolData = (originBorrowIncentivePoolData) => {
|
|
1641
|
+
var parseOriginBorrowIncentivePoolData = (utils, originBorrowIncentivePoolData) => {
|
|
1443
1642
|
return {
|
|
1444
1643
|
poolType: (0, import_utils.normalizeStructTag)(originBorrowIncentivePoolData.pool_type.name),
|
|
1445
1644
|
minStakes: Number(originBorrowIncentivePoolData.min_stakes),
|
|
@@ -1448,9 +1647,9 @@ var parseOriginBorrowIncentivePoolData = (originBorrowIncentivePoolData) => {
|
|
|
1448
1647
|
poolPoints: originBorrowIncentivePoolData.points.reduce(
|
|
1449
1648
|
(acc, point) => {
|
|
1450
1649
|
const parsed = parseOriginBorrowIncentivesPoolPointData(point);
|
|
1451
|
-
const name =
|
|
1452
|
-
parsed.pointType
|
|
1453
|
-
)
|
|
1650
|
+
const name = utils.parseSCoinTypeNameToMarketCoinName(
|
|
1651
|
+
(0, import_utils.parseStructTag)(parsed.pointType).name.toLowerCase()
|
|
1652
|
+
);
|
|
1454
1653
|
acc[name] = parsed;
|
|
1455
1654
|
return acc;
|
|
1456
1655
|
},
|
|
@@ -1637,6 +1836,13 @@ var findClosestUnlockRound = (unlockAtInSecondTimestamp) => {
|
|
|
1637
1836
|
}
|
|
1638
1837
|
return Math.floor(closestTwelveAM.getTime() / 1e3);
|
|
1639
1838
|
};
|
|
1839
|
+
var partitionArray = (array, chunkSize) => {
|
|
1840
|
+
const result = [];
|
|
1841
|
+
for (let i = 0; i < array.length; i += chunkSize) {
|
|
1842
|
+
result.push(array.slice(i, i + chunkSize));
|
|
1843
|
+
}
|
|
1844
|
+
return result;
|
|
1845
|
+
};
|
|
1640
1846
|
|
|
1641
1847
|
// src/utils/tokenBucket.ts
|
|
1642
1848
|
var TokenBucket = class {
|
|
@@ -1649,10 +1855,10 @@ var TokenBucket = class {
|
|
|
1649
1855
|
refill() {
|
|
1650
1856
|
const now = Date.now();
|
|
1651
1857
|
const elapsed = now - this.lastRefill;
|
|
1652
|
-
if (elapsed
|
|
1858
|
+
if (elapsed >= this.interval) {
|
|
1653
1859
|
const tokensToAdd = Math.floor(elapsed / this.interval) * this.tokensPerInterval;
|
|
1654
1860
|
this.tokens = Math.min(this.tokens + tokensToAdd, this.tokensPerInterval);
|
|
1655
|
-
this.lastRefill
|
|
1861
|
+
this.lastRefill += Math.floor(elapsed / this.interval) * this.interval;
|
|
1656
1862
|
}
|
|
1657
1863
|
}
|
|
1658
1864
|
removeTokens(count) {
|
|
@@ -1664,27 +1870,12 @@ var TokenBucket = class {
|
|
|
1664
1870
|
return false;
|
|
1665
1871
|
}
|
|
1666
1872
|
};
|
|
1667
|
-
var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor =
|
|
1873
|
+
var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor = 1.25) => {
|
|
1668
1874
|
let retries = 0;
|
|
1669
1875
|
const tryRequest = async () => {
|
|
1670
1876
|
if (tokenBucket.removeTokens(1)) {
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
if (result && result.status === 429) {
|
|
1674
|
-
throw new Error("Unexpected status code: 429");
|
|
1675
|
-
}
|
|
1676
|
-
return result;
|
|
1677
|
-
} catch (error) {
|
|
1678
|
-
if (error.message === "Unexpected status code: 429" && retries < maxRetries) {
|
|
1679
|
-
retries++;
|
|
1680
|
-
const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
|
|
1681
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
1682
|
-
return tryRequest();
|
|
1683
|
-
} else {
|
|
1684
|
-
console.error("An error occurred:", error.message);
|
|
1685
|
-
return null;
|
|
1686
|
-
}
|
|
1687
|
-
}
|
|
1877
|
+
const result = await fn();
|
|
1878
|
+
return result;
|
|
1688
1879
|
} else if (retries < maxRetries) {
|
|
1689
1880
|
retries++;
|
|
1690
1881
|
const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
|
|
@@ -1723,6 +1914,22 @@ function withIndexerFallback(method) {
|
|
|
1723
1914
|
};
|
|
1724
1915
|
}
|
|
1725
1916
|
|
|
1917
|
+
// src/utils/core.ts
|
|
1918
|
+
var parseObjectAs = (object) => {
|
|
1919
|
+
if (!(object && object.content && "fields" in object.content))
|
|
1920
|
+
throw new Error(`Failed to parse object`);
|
|
1921
|
+
const fields = object.content.fields;
|
|
1922
|
+
if (typeof fields === "object" && "value" in fields) {
|
|
1923
|
+
const value = fields.value;
|
|
1924
|
+
if (typeof value === "object" && "fields" in value)
|
|
1925
|
+
return value.fields;
|
|
1926
|
+
return value;
|
|
1927
|
+
} else if (typeof fields === "object") {
|
|
1928
|
+
return fields;
|
|
1929
|
+
}
|
|
1930
|
+
return fields;
|
|
1931
|
+
};
|
|
1932
|
+
|
|
1726
1933
|
// src/models/scallopCache.ts
|
|
1727
1934
|
var ScallopCache = class {
|
|
1728
1935
|
constructor(suiKit, walletAddress, cacheOptions, tokenBucket, queryClient) {
|
|
@@ -1757,6 +1964,13 @@ var ScallopCache = class {
|
|
|
1757
1964
|
})
|
|
1758
1965
|
);
|
|
1759
1966
|
}
|
|
1967
|
+
retryFn(errCount, e) {
|
|
1968
|
+
if (errCount === 5)
|
|
1969
|
+
return false;
|
|
1970
|
+
if (e.status === 429)
|
|
1971
|
+
return true;
|
|
1972
|
+
return false;
|
|
1973
|
+
}
|
|
1760
1974
|
/**
|
|
1761
1975
|
* @description Provides cache for inspectTxn of the SuiKit.
|
|
1762
1976
|
* @param QueryInspectTxnParams
|
|
@@ -1769,18 +1983,64 @@ var ScallopCache = class {
|
|
|
1769
1983
|
typeArgs
|
|
1770
1984
|
}) {
|
|
1771
1985
|
const txBlock = new import_sui_kit.SuiTxBlock();
|
|
1772
|
-
|
|
1986
|
+
const resolvedQueryTarget = await this.queryGetNormalizedMoveFunction(queryTarget);
|
|
1987
|
+
if (!resolvedQueryTarget)
|
|
1988
|
+
throw new Error("Invalid query target");
|
|
1989
|
+
const { parameters } = resolvedQueryTarget;
|
|
1990
|
+
const resolvedArgs = await Promise.all(
|
|
1991
|
+
(args ?? []).map(async (arg, idx) => {
|
|
1992
|
+
if (typeof arg !== "string")
|
|
1993
|
+
return arg;
|
|
1994
|
+
const cachedData = (await this.queryGetObject(arg))?.data;
|
|
1995
|
+
if (!cachedData)
|
|
1996
|
+
return arg;
|
|
1997
|
+
const owner = cachedData.owner;
|
|
1998
|
+
if (!owner || typeof owner !== "object" || !("Shared" in owner))
|
|
1999
|
+
return {
|
|
2000
|
+
objectId: cachedData.objectId,
|
|
2001
|
+
version: cachedData.version,
|
|
2002
|
+
digest: cachedData.digest
|
|
2003
|
+
};
|
|
2004
|
+
const parameter = parameters[idx];
|
|
2005
|
+
if (typeof parameter !== "object" || !("MutableReference" in parameter || "Reference" in parameter))
|
|
2006
|
+
return arg;
|
|
2007
|
+
return {
|
|
2008
|
+
objectId: cachedData.objectId,
|
|
2009
|
+
initialSharedVersion: owner.Shared.initial_shared_version,
|
|
2010
|
+
mutable: "MutableReference" in parameter
|
|
2011
|
+
};
|
|
2012
|
+
})
|
|
2013
|
+
);
|
|
2014
|
+
txBlock.moveCall(queryTarget, resolvedArgs, typeArgs);
|
|
1773
2015
|
const query = await this.queryClient.fetchQuery({
|
|
2016
|
+
retry: this.retryFn,
|
|
2017
|
+
retryDelay: 1e3,
|
|
1774
2018
|
queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
|
|
1775
2019
|
queryFn: async () => {
|
|
1776
2020
|
return await callWithRateLimit(
|
|
1777
2021
|
this.tokenBucket,
|
|
1778
|
-
() => this.suiKit.inspectTxn(txBlock)
|
|
2022
|
+
async () => await this.suiKit.inspectTxn(txBlock)
|
|
1779
2023
|
);
|
|
1780
2024
|
}
|
|
1781
2025
|
});
|
|
1782
2026
|
return query;
|
|
1783
2027
|
}
|
|
2028
|
+
async queryGetNormalizedMoveFunction(target) {
|
|
2029
|
+
const { address, module: module2, name } = (0, import_sui_kit.parseStructTag)(target);
|
|
2030
|
+
return this.queryClient.fetchQuery({
|
|
2031
|
+
queryKey: queryKeys.rpc.getNormalizedMoveFunction(target),
|
|
2032
|
+
queryFn: async () => {
|
|
2033
|
+
return await callWithRateLimit(
|
|
2034
|
+
this.tokenBucket,
|
|
2035
|
+
async () => await this.suiKit.client().getNormalizedMoveFunction({
|
|
2036
|
+
package: address,
|
|
2037
|
+
module: module2,
|
|
2038
|
+
function: name
|
|
2039
|
+
})
|
|
2040
|
+
);
|
|
2041
|
+
}
|
|
2042
|
+
});
|
|
2043
|
+
}
|
|
1784
2044
|
/**
|
|
1785
2045
|
* @description Provides cache for getObject of the SuiKit.
|
|
1786
2046
|
* @param objectId
|
|
@@ -1788,12 +2048,19 @@ var ScallopCache = class {
|
|
|
1788
2048
|
* @returns Promise<SuiObjectResponse>
|
|
1789
2049
|
*/
|
|
1790
2050
|
async queryGetObject(objectId, options) {
|
|
2051
|
+
options = {
|
|
2052
|
+
...options,
|
|
2053
|
+
showOwner: true,
|
|
2054
|
+
showContent: true
|
|
2055
|
+
};
|
|
1791
2056
|
return this.queryClient.fetchQuery({
|
|
1792
|
-
|
|
2057
|
+
retry: this.retryFn,
|
|
2058
|
+
retryDelay: 1e3,
|
|
2059
|
+
queryKey: queryKeys.rpc.getObject(objectId, options),
|
|
1793
2060
|
queryFn: async () => {
|
|
1794
2061
|
return await callWithRateLimit(
|
|
1795
2062
|
this.tokenBucket,
|
|
1796
|
-
() => this.client.getObject({
|
|
2063
|
+
async () => await this.client.getObject({
|
|
1797
2064
|
id: objectId,
|
|
1798
2065
|
options
|
|
1799
2066
|
})
|
|
@@ -1812,16 +2079,36 @@ var ScallopCache = class {
|
|
|
1812
2079
|
if (objectIds.length === 0)
|
|
1813
2080
|
return [];
|
|
1814
2081
|
return this.queryClient.fetchQuery({
|
|
2082
|
+
retry: this.retryFn,
|
|
2083
|
+
retryDelay: 1e3,
|
|
1815
2084
|
queryKey: queryKeys.rpc.getObjects(
|
|
1816
2085
|
objectIds,
|
|
1817
2086
|
this.walletAddress,
|
|
1818
2087
|
options
|
|
1819
2088
|
),
|
|
1820
2089
|
queryFn: async () => {
|
|
1821
|
-
|
|
2090
|
+
const results = await callWithRateLimit(
|
|
1822
2091
|
this.tokenBucket,
|
|
1823
|
-
() => this.suiKit.getObjects(objectIds, options)
|
|
2092
|
+
async () => await this.suiKit.getObjects(objectIds, options)
|
|
1824
2093
|
);
|
|
2094
|
+
if (results) {
|
|
2095
|
+
results.forEach((result) => {
|
|
2096
|
+
this.queryClient.setQueriesData(
|
|
2097
|
+
{
|
|
2098
|
+
exact: false,
|
|
2099
|
+
queryKey: queryKeys.rpc.getObject(result.objectId, options)
|
|
2100
|
+
},
|
|
2101
|
+
{
|
|
2102
|
+
data: result,
|
|
2103
|
+
error: null
|
|
2104
|
+
},
|
|
2105
|
+
{
|
|
2106
|
+
updatedAt: Date.now()
|
|
2107
|
+
}
|
|
2108
|
+
);
|
|
2109
|
+
});
|
|
2110
|
+
}
|
|
2111
|
+
return results;
|
|
1825
2112
|
}
|
|
1826
2113
|
});
|
|
1827
2114
|
}
|
|
@@ -1832,44 +2119,94 @@ var ScallopCache = class {
|
|
|
1832
2119
|
*/
|
|
1833
2120
|
async queryGetOwnedObjects(input) {
|
|
1834
2121
|
return this.queryClient.fetchQuery({
|
|
2122
|
+
retry: this.retryFn,
|
|
2123
|
+
retryDelay: 1e3,
|
|
1835
2124
|
queryKey: queryKeys.rpc.getOwnedObjects(input),
|
|
1836
2125
|
queryFn: async () => {
|
|
1837
|
-
|
|
2126
|
+
const results = await callWithRateLimit(
|
|
1838
2127
|
this.tokenBucket,
|
|
1839
|
-
() => this.client.getOwnedObjects(input)
|
|
2128
|
+
async () => await this.client.getOwnedObjects(input)
|
|
1840
2129
|
);
|
|
2130
|
+
if (results && results.data.length > 0) {
|
|
2131
|
+
results.data.filter(
|
|
2132
|
+
(result) => !!result.data
|
|
2133
|
+
).forEach((result) => {
|
|
2134
|
+
this.queryClient.setQueriesData(
|
|
2135
|
+
{
|
|
2136
|
+
exact: false,
|
|
2137
|
+
queryKey: queryKeys.rpc.getObject(
|
|
2138
|
+
result.data.objectId,
|
|
2139
|
+
input.options ?? {}
|
|
2140
|
+
)
|
|
2141
|
+
},
|
|
2142
|
+
{
|
|
2143
|
+
data: result.data,
|
|
2144
|
+
error: null
|
|
2145
|
+
},
|
|
2146
|
+
{
|
|
2147
|
+
updatedAt: Date.now()
|
|
2148
|
+
}
|
|
2149
|
+
);
|
|
2150
|
+
});
|
|
2151
|
+
}
|
|
2152
|
+
return results;
|
|
1841
2153
|
}
|
|
1842
2154
|
});
|
|
1843
2155
|
}
|
|
1844
2156
|
async queryGetDynamicFields(input) {
|
|
1845
2157
|
return this.queryClient.fetchQuery({
|
|
2158
|
+
retry: this.retryFn,
|
|
2159
|
+
retryDelay: 1e3,
|
|
1846
2160
|
queryKey: queryKeys.rpc.getDynamicFields(input),
|
|
1847
2161
|
queryFn: async () => {
|
|
1848
2162
|
return await callWithRateLimit(
|
|
1849
2163
|
this.tokenBucket,
|
|
1850
|
-
() => this.client.getDynamicFields(input)
|
|
2164
|
+
async () => await this.client.getDynamicFields(input)
|
|
1851
2165
|
);
|
|
1852
2166
|
}
|
|
1853
2167
|
});
|
|
1854
2168
|
}
|
|
1855
2169
|
async queryGetDynamicFieldObject(input) {
|
|
1856
2170
|
return this.queryClient.fetchQuery({
|
|
2171
|
+
retry: this.retryFn,
|
|
2172
|
+
retryDelay: (attemptIndex) => Math.min(1e3 * attemptIndex, 8e3),
|
|
1857
2173
|
queryKey: queryKeys.rpc.getDynamicFieldObject(input),
|
|
1858
2174
|
queryFn: async () => {
|
|
1859
|
-
|
|
2175
|
+
const result = await callWithRateLimit(
|
|
1860
2176
|
this.tokenBucket,
|
|
1861
2177
|
() => this.client.getDynamicFieldObject(input)
|
|
1862
2178
|
);
|
|
2179
|
+
if (result?.data) {
|
|
2180
|
+
this.queryClient.setQueriesData(
|
|
2181
|
+
{
|
|
2182
|
+
exact: false,
|
|
2183
|
+
queryKey: queryKeys.rpc.getObject(result?.data.objectId, {
|
|
2184
|
+
showContent: true,
|
|
2185
|
+
showOwner: true
|
|
2186
|
+
})
|
|
2187
|
+
},
|
|
2188
|
+
{
|
|
2189
|
+
data: result.data,
|
|
2190
|
+
error: null
|
|
2191
|
+
},
|
|
2192
|
+
{
|
|
2193
|
+
updatedAt: Date.now()
|
|
2194
|
+
}
|
|
2195
|
+
);
|
|
2196
|
+
}
|
|
2197
|
+
return result;
|
|
1863
2198
|
}
|
|
1864
2199
|
});
|
|
1865
2200
|
}
|
|
1866
2201
|
async queryGetAllCoinBalances(owner) {
|
|
1867
2202
|
return this.queryClient.fetchQuery({
|
|
2203
|
+
retry: this.retryFn,
|
|
2204
|
+
retryDelay: 1e3,
|
|
1868
2205
|
queryKey: queryKeys.rpc.getAllCoinBalances(owner),
|
|
1869
2206
|
queryFn: async () => {
|
|
1870
2207
|
const allBalances = await callWithRateLimit(
|
|
1871
2208
|
this.tokenBucket,
|
|
1872
|
-
() => this.client.getAllBalances({ owner })
|
|
2209
|
+
async () => await this.client.getAllBalances({ owner })
|
|
1873
2210
|
);
|
|
1874
2211
|
if (!allBalances)
|
|
1875
2212
|
return {};
|
|
@@ -2557,10 +2894,10 @@ var ScallopAddress = class {
|
|
|
2557
2894
|
};
|
|
2558
2895
|
|
|
2559
2896
|
// src/models/scallopClient.ts
|
|
2560
|
-
var
|
|
2897
|
+
var import_utils26 = require("@mysten/sui/utils");
|
|
2561
2898
|
|
|
2562
2899
|
// src/models/scallopUtils.ts
|
|
2563
|
-
var
|
|
2900
|
+
var import_utils11 = require("@mysten/sui/utils");
|
|
2564
2901
|
var import_pyth_sui_js = require("@pythnetwork/pyth-sui-js");
|
|
2565
2902
|
|
|
2566
2903
|
// src/queries/borrowIncentiveQuery.ts
|
|
@@ -2582,7 +2919,7 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
|
|
|
2582
2919
|
...SUPPORT_BORROW_INCENTIVE_POOLS
|
|
2583
2920
|
], indexer = false, marketPools, coinPrices) => {
|
|
2584
2921
|
const borrowIncentivePools = {};
|
|
2585
|
-
marketPools = marketPools ?? await query.getMarketPools(void 0, {
|
|
2922
|
+
marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices, indexer })).pools;
|
|
2586
2923
|
coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools });
|
|
2587
2924
|
if (indexer) {
|
|
2588
2925
|
const borrowIncentivePoolsIndexer = await query.indexer.getBorrowIncentivePools();
|
|
@@ -2607,7 +2944,10 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
|
|
|
2607
2944
|
);
|
|
2608
2945
|
for (const pool of borrowIncentivePoolsQueryData?.incentive_pools ?? []) {
|
|
2609
2946
|
const borrowIncentivePoolPoints = {};
|
|
2610
|
-
const parsedBorrowIncentivePoolData = parseOriginBorrowIncentivePoolData(
|
|
2947
|
+
const parsedBorrowIncentivePoolData = parseOriginBorrowIncentivePoolData(
|
|
2948
|
+
query.utils,
|
|
2949
|
+
pool
|
|
2950
|
+
);
|
|
2611
2951
|
const poolCoinType = (0, import_utils3.normalizeStructTag)(pool.pool_type.name);
|
|
2612
2952
|
const poolCoinName = query.utils.parseCoinNameFromType(
|
|
2613
2953
|
poolCoinType
|
|
@@ -2621,12 +2961,9 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
|
|
|
2621
2961
|
parsedBorrowIncentivePoolData.poolPoints
|
|
2622
2962
|
)) {
|
|
2623
2963
|
const rewardCoinType = poolPoint.pointType;
|
|
2624
|
-
|
|
2964
|
+
const rewardCoinName = query.utils.parseCoinNameFromType(
|
|
2625
2965
|
rewardCoinType
|
|
2626
2966
|
);
|
|
2627
|
-
if (sCoinRawNameToName[rewardCoinName]) {
|
|
2628
|
-
rewardCoinName = sCoinRawNameToName[rewardCoinName];
|
|
2629
|
-
}
|
|
2630
2967
|
const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
|
|
2631
2968
|
const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
|
|
2632
2969
|
const symbol = query.utils.parseSymbol(rewardCoinName);
|
|
@@ -2755,7 +3092,7 @@ var getBindedVeScaKey = async ({
|
|
|
2755
3092
|
};
|
|
2756
3093
|
|
|
2757
3094
|
// src/queries/coreQuery.ts
|
|
2758
|
-
var
|
|
3095
|
+
var import_utils6 = require("@mysten/sui/utils");
|
|
2759
3096
|
var import_bignumber3 = __toESM(require("bignumber.js"));
|
|
2760
3097
|
|
|
2761
3098
|
// src/queries/supplyLimitQuery.ts
|
|
@@ -2774,7 +3111,7 @@ var supplyLimitZod = import_zod.z.object({
|
|
|
2774
3111
|
value: import_zod.z.string()
|
|
2775
3112
|
})
|
|
2776
3113
|
});
|
|
2777
|
-
var supplyLimitKeyType = `
|
|
3114
|
+
var supplyLimitKeyType = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
|
|
2778
3115
|
var getSupplyLimit = async (utils, poolName) => {
|
|
2779
3116
|
try {
|
|
2780
3117
|
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
@@ -2814,10 +3151,15 @@ var isolatedAssetZod = import_zod2.z.object({
|
|
|
2814
3151
|
value: import_zod2.z.boolean()
|
|
2815
3152
|
})
|
|
2816
3153
|
});
|
|
2817
|
-
var isolatedAssetKeyType = `
|
|
2818
|
-
var getIsolatedAssets = async (
|
|
3154
|
+
var isolatedAssetKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
|
|
3155
|
+
var getIsolatedAssets = async (query) => {
|
|
3156
|
+
if (SUPPORT_POOLS.every((t) => !!POOL_ADDRESSES[t])) {
|
|
3157
|
+
return SUPPORT_POOLS.filter(
|
|
3158
|
+
(t) => !!POOL_ADDRESSES[t]?.isolatedAssetKey && !!POOL_ADDRESSES[t]?.coinType
|
|
3159
|
+
).map((t) => POOL_ADDRESSES[t]?.coinType);
|
|
3160
|
+
}
|
|
2819
3161
|
try {
|
|
2820
|
-
const marketObject = address.get("core.market");
|
|
3162
|
+
const marketObject = query.address.get("core.market");
|
|
2821
3163
|
const isolatedAssets = [];
|
|
2822
3164
|
if (!marketObject)
|
|
2823
3165
|
return isolatedAssets;
|
|
@@ -2827,7 +3169,7 @@ var getIsolatedAssets = async (address) => {
|
|
|
2827
3169
|
return dynamicField.name.type === isolatedAssetKeyType;
|
|
2828
3170
|
};
|
|
2829
3171
|
do {
|
|
2830
|
-
const response = await
|
|
3172
|
+
const response = await query.cache.queryGetDynamicFields({
|
|
2831
3173
|
parentId: marketObject,
|
|
2832
3174
|
cursor: nextCursor,
|
|
2833
3175
|
limit: 10
|
|
@@ -2850,32 +3192,30 @@ var getIsolatedAssets = async (address) => {
|
|
|
2850
3192
|
}
|
|
2851
3193
|
};
|
|
2852
3194
|
var isIsolatedAsset = async (utils, coinName) => {
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
|
|
3195
|
+
if (POOL_ADDRESSES[coinName]) {
|
|
3196
|
+
return !!POOL_ADDRESSES[coinName].isolatedAssetKey;
|
|
3197
|
+
}
|
|
3198
|
+
const marketObject = utils.address.get("core.market");
|
|
3199
|
+
const cachedData = utils.address.cache.queryClient.getQueryData([
|
|
3200
|
+
"getDynamicFields",
|
|
3201
|
+
marketObject
|
|
3202
|
+
]);
|
|
3203
|
+
if (cachedData) {
|
|
3204
|
+
const coinType2 = utils.parseCoinType(coinName);
|
|
3205
|
+
return cachedData.includes(coinType2);
|
|
3206
|
+
}
|
|
3207
|
+
const coinType = utils.parseCoinType(coinName).slice(2);
|
|
3208
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
3209
|
+
parentId: marketObject,
|
|
3210
|
+
name: {
|
|
3211
|
+
type: isolatedAssetKeyType,
|
|
3212
|
+
value: coinType
|
|
2862
3213
|
}
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
name: {
|
|
2867
|
-
type: isolatedAssetKeyType,
|
|
2868
|
-
value: coinType
|
|
2869
|
-
}
|
|
2870
|
-
});
|
|
2871
|
-
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
2872
|
-
if (!parsedData.success)
|
|
2873
|
-
return false;
|
|
2874
|
-
return parsedData.data.fields.value;
|
|
2875
|
-
} catch (e) {
|
|
2876
|
-
console.error(e);
|
|
3214
|
+
});
|
|
3215
|
+
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
3216
|
+
if (!parsedData.success)
|
|
2877
3217
|
return false;
|
|
2878
|
-
|
|
3218
|
+
return parsedData.data.fields.value;
|
|
2879
3219
|
};
|
|
2880
3220
|
|
|
2881
3221
|
// src/queries/borrowLimitQuery.ts
|
|
@@ -2894,7 +3234,7 @@ var borrowLimitZod = import_zod3.z.object({
|
|
|
2894
3234
|
value: import_zod3.z.string()
|
|
2895
3235
|
})
|
|
2896
3236
|
});
|
|
2897
|
-
var borrowLimitKeyType = `
|
|
3237
|
+
var borrowLimitKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
|
|
2898
3238
|
var getBorrowLimit = async (utils, poolName) => {
|
|
2899
3239
|
try {
|
|
2900
3240
|
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
@@ -2918,6 +3258,17 @@ var getBorrowLimit = async (utils, poolName) => {
|
|
|
2918
3258
|
}
|
|
2919
3259
|
};
|
|
2920
3260
|
|
|
3261
|
+
// src/queries/objectsQuery.ts
|
|
3262
|
+
var queryMultipleObjects = async (cache, objectIds, options, partitionSize = 50) => {
|
|
3263
|
+
const objectIdsPartition = partitionArray(objectIds, partitionSize);
|
|
3264
|
+
const objects = [];
|
|
3265
|
+
for (const objectIds2 of objectIdsPartition) {
|
|
3266
|
+
const result = await cache.queryGetObjects(objectIds2, options);
|
|
3267
|
+
objects.push(...result);
|
|
3268
|
+
}
|
|
3269
|
+
return objects;
|
|
3270
|
+
};
|
|
3271
|
+
|
|
2921
3272
|
// src/queries/coreQuery.ts
|
|
2922
3273
|
var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
2923
3274
|
coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
|
|
@@ -2949,7 +3300,7 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2949
3300
|
const queryResult = await query.cache.queryInspectTxn({ queryTarget, args });
|
|
2950
3301
|
const marketData = queryResult?.events[0]?.parsedJson;
|
|
2951
3302
|
for (const pool of marketData?.pools ?? []) {
|
|
2952
|
-
const coinType = (0,
|
|
3303
|
+
const coinType = (0, import_utils6.normalizeStructTag)(pool.type.name);
|
|
2953
3304
|
const poolCoinName = query.utils.parseCoinNameFromType(coinType);
|
|
2954
3305
|
const coinPrice = coinPrices[poolCoinName] ?? 0;
|
|
2955
3306
|
if (!SUPPORT_POOLS.includes(poolCoinName)) {
|
|
@@ -2974,19 +3325,15 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2974
3325
|
borrowRateOnMidKink: pool.borrowRateOnMidKink,
|
|
2975
3326
|
highKink: pool.highKink,
|
|
2976
3327
|
midKink: pool.midKink,
|
|
2977
|
-
minBorrowAmount: pool.minBorrowAmount
|
|
3328
|
+
minBorrowAmount: pool.minBorrowAmount,
|
|
3329
|
+
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
3330
|
+
supplyLimit: await getSupplyLimit(query.utils, poolCoinName) ?? "0",
|
|
3331
|
+
borrowLimit: await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
2978
3332
|
});
|
|
2979
3333
|
const calculatedMarketPoolData = calculateMarketPoolData(
|
|
2980
3334
|
query.utils,
|
|
2981
3335
|
parsedMarketPoolData
|
|
2982
3336
|
);
|
|
2983
|
-
const coinDecimal = query.utils.getCoinDecimal(poolCoinName);
|
|
2984
|
-
const maxSupplyCoin = (0, import_bignumber3.default)(
|
|
2985
|
-
await getSupplyLimit(query.utils, poolCoinName) ?? "0"
|
|
2986
|
-
).shiftedBy(-coinDecimal).toNumber();
|
|
2987
|
-
const maxBorrowCoin = (0, import_bignumber3.default)(
|
|
2988
|
-
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
2989
|
-
).shiftedBy(-coinDecimal).toNumber();
|
|
2990
3337
|
pools[poolCoinName] = {
|
|
2991
3338
|
coinName: poolCoinName,
|
|
2992
3339
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
@@ -2996,7 +3343,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2996
3343
|
query.utils.parseMarketCoinName(poolCoinName)
|
|
2997
3344
|
),
|
|
2998
3345
|
coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
|
|
2999
|
-
coinDecimal,
|
|
3000
3346
|
coinPrice,
|
|
3001
3347
|
highKink: parsedMarketPoolData.highKink,
|
|
3002
3348
|
midKink: parsedMarketPoolData.midKink,
|
|
@@ -3005,15 +3351,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
3005
3351
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
3006
3352
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
3007
3353
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
3008
|
-
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
3009
|
-
// isIsolated: false,
|
|
3010
|
-
maxSupplyCoin,
|
|
3011
|
-
maxBorrowCoin,
|
|
3012
3354
|
...calculatedMarketPoolData
|
|
3013
3355
|
};
|
|
3014
3356
|
}
|
|
3015
3357
|
for (const collateral of marketData?.collaterals ?? []) {
|
|
3016
|
-
const coinType = (0,
|
|
3358
|
+
const coinType = (0, import_utils6.normalizeStructTag)(collateral.type.name);
|
|
3017
3359
|
const collateralCoinName = query.utils.parseCoinNameFromType(coinType);
|
|
3018
3360
|
const coinPrice = coinPrices[collateralCoinName] ?? 0;
|
|
3019
3361
|
if (!SUPPORT_COLLATERALS.includes(collateralCoinName)) {
|
|
@@ -3024,10 +3366,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
3024
3366
|
collateralFactor: collateral.collateralFactor,
|
|
3025
3367
|
liquidationFactor: collateral.liquidationFactor,
|
|
3026
3368
|
liquidationDiscount: collateral.liquidationDiscount,
|
|
3027
|
-
|
|
3369
|
+
liquidationPenalty: collateral.liquidationPanelty,
|
|
3028
3370
|
liquidationReserveFactor: collateral.liquidationReserveFactor,
|
|
3029
3371
|
maxCollateralAmount: collateral.maxCollateralAmount,
|
|
3030
|
-
totalCollateralAmount: collateral.totalCollateralAmount
|
|
3372
|
+
totalCollateralAmount: collateral.totalCollateralAmount,
|
|
3373
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
|
|
3031
3374
|
});
|
|
3032
3375
|
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
3033
3376
|
query.utils,
|
|
@@ -3039,14 +3382,12 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
3039
3382
|
coinType,
|
|
3040
3383
|
marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
|
|
3041
3384
|
coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
|
|
3042
|
-
coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
|
|
3043
3385
|
coinPrice,
|
|
3044
3386
|
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
3045
3387
|
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
3046
3388
|
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
3047
|
-
|
|
3389
|
+
liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
|
|
3048
3390
|
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3049
|
-
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
3050
3391
|
...calculatedMarketCollateralData
|
|
3051
3392
|
};
|
|
3052
3393
|
}
|
|
@@ -3056,44 +3397,216 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
3056
3397
|
// data: marketData,
|
|
3057
3398
|
};
|
|
3058
3399
|
};
|
|
3059
|
-
var
|
|
3060
|
-
const
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3400
|
+
var queryRequiredMarketObjects = async (query, poolCoinNames) => {
|
|
3401
|
+
const tasks = poolCoinNames.map((t) => ({
|
|
3402
|
+
poolCoinName: t,
|
|
3403
|
+
balanceSheet: POOL_ADDRESSES[t]?.lendingPoolAddress,
|
|
3404
|
+
collateralStat: POOL_ADDRESSES[t]?.collateralPoolAddress,
|
|
3405
|
+
borrowDynamic: POOL_ADDRESSES[t]?.borrowDynamic,
|
|
3406
|
+
interestModel: POOL_ADDRESSES[t]?.interestModel,
|
|
3407
|
+
riskModel: POOL_ADDRESSES[t]?.riskModel,
|
|
3408
|
+
borrowFeeKey: POOL_ADDRESSES[t]?.borrowFeeKey,
|
|
3409
|
+
supplyLimitKey: POOL_ADDRESSES[t]?.supplyLimitKey,
|
|
3410
|
+
borrowLimitKey: POOL_ADDRESSES[t]?.borrowLimitKey,
|
|
3411
|
+
isolatedAssetKey: POOL_ADDRESSES[t]?.isolatedAssetKey
|
|
3412
|
+
}));
|
|
3413
|
+
const [
|
|
3414
|
+
balanceSheetObjects,
|
|
3415
|
+
collateralStatObjects,
|
|
3416
|
+
borrowDynamicObjects,
|
|
3417
|
+
interestModelObjects,
|
|
3418
|
+
riskModelObjects,
|
|
3419
|
+
borrowFeeObjects,
|
|
3420
|
+
supplyLimitObjects,
|
|
3421
|
+
borrowLimitObjects,
|
|
3422
|
+
isolatedAssetObjects
|
|
3423
|
+
] = await Promise.all([
|
|
3424
|
+
queryMultipleObjects(
|
|
3425
|
+
query.cache,
|
|
3426
|
+
tasks.map((task) => task.balanceSheet).filter((t) => !!t)
|
|
3427
|
+
),
|
|
3428
|
+
queryMultipleObjects(
|
|
3429
|
+
query.cache,
|
|
3430
|
+
tasks.map((task) => task.collateralStat).filter((t) => !!t)
|
|
3431
|
+
),
|
|
3432
|
+
queryMultipleObjects(
|
|
3433
|
+
query.cache,
|
|
3434
|
+
tasks.map((task) => task.borrowDynamic).filter((t) => !!t)
|
|
3435
|
+
),
|
|
3436
|
+
queryMultipleObjects(
|
|
3437
|
+
query.cache,
|
|
3438
|
+
tasks.map((task) => task.interestModel).filter((t) => !!t)
|
|
3439
|
+
),
|
|
3440
|
+
queryMultipleObjects(
|
|
3441
|
+
query.cache,
|
|
3442
|
+
tasks.map((task) => task.riskModel).filter((t) => !!t)
|
|
3443
|
+
),
|
|
3444
|
+
queryMultipleObjects(
|
|
3445
|
+
query.cache,
|
|
3446
|
+
tasks.map((task) => task.borrowFeeKey).filter((t) => !!t)
|
|
3447
|
+
),
|
|
3448
|
+
queryMultipleObjects(
|
|
3449
|
+
query.cache,
|
|
3450
|
+
tasks.map((task) => task.supplyLimitKey).filter((t) => !!t)
|
|
3451
|
+
),
|
|
3452
|
+
queryMultipleObjects(
|
|
3453
|
+
query.cache,
|
|
3454
|
+
tasks.map((task) => task.borrowLimitKey).filter((t) => !!t)
|
|
3455
|
+
),
|
|
3456
|
+
queryMultipleObjects(
|
|
3457
|
+
query.cache,
|
|
3458
|
+
tasks.map((task) => task.isolatedAssetKey).filter((t) => !!t)
|
|
3459
|
+
)
|
|
3460
|
+
]);
|
|
3461
|
+
const mapObjects = (tasks2, fetchedObjects) => {
|
|
3462
|
+
const resultMap = {};
|
|
3463
|
+
let fetchedIndex = 0;
|
|
3464
|
+
for (const task of tasks2) {
|
|
3465
|
+
const key = task[Object.keys(task)[1]];
|
|
3466
|
+
if (key) {
|
|
3467
|
+
resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
|
|
3468
|
+
fetchedIndex++;
|
|
3469
|
+
}
|
|
3470
|
+
}
|
|
3471
|
+
return resultMap;
|
|
3472
|
+
};
|
|
3473
|
+
const balanceSheetMap = mapObjects(tasks, balanceSheetObjects);
|
|
3474
|
+
const collateralStatMap = mapObjects(tasks, collateralStatObjects);
|
|
3475
|
+
const borrowDynamicMap = mapObjects(tasks, borrowDynamicObjects);
|
|
3476
|
+
const interestModelMap = mapObjects(tasks, interestModelObjects);
|
|
3477
|
+
const riskModelMap = mapObjects(tasks, riskModelObjects);
|
|
3478
|
+
const borrowFeeMap = mapObjects(tasks, borrowFeeObjects);
|
|
3479
|
+
const supplyLimitMap = mapObjects(tasks, supplyLimitObjects);
|
|
3480
|
+
const borrowLimitMap = mapObjects(tasks, borrowLimitObjects);
|
|
3481
|
+
const isolatedAssetMap = mapObjects(tasks, isolatedAssetObjects);
|
|
3482
|
+
return poolCoinNames.reduce(
|
|
3483
|
+
(acc, name) => {
|
|
3484
|
+
acc[name] = {
|
|
3485
|
+
balanceSheet: balanceSheetMap[name],
|
|
3486
|
+
collateralStat: collateralStatMap[name],
|
|
3487
|
+
borrowDynamic: borrowDynamicMap[name],
|
|
3488
|
+
interestModel: interestModelMap[name],
|
|
3489
|
+
riskModel: riskModelMap[name],
|
|
3490
|
+
borrowFeeKey: borrowFeeMap[name],
|
|
3491
|
+
supplyLimitKey: supplyLimitMap[name],
|
|
3492
|
+
borrowLimitKey: borrowLimitMap[name],
|
|
3493
|
+
isolatedAssetKey: isolatedAssetMap[name]
|
|
3494
|
+
};
|
|
3495
|
+
return acc;
|
|
3496
|
+
},
|
|
3497
|
+
{}
|
|
3498
|
+
);
|
|
3499
|
+
};
|
|
3500
|
+
var getMarketPools = async (query, poolCoinNames, indexer = false, coinPrices) => {
|
|
3064
3501
|
coinPrices = coinPrices ?? await query.utils.getCoinPrices();
|
|
3065
|
-
const
|
|
3502
|
+
const pools = {};
|
|
3503
|
+
const collaterals = {};
|
|
3066
3504
|
if (indexer) {
|
|
3067
|
-
const
|
|
3068
|
-
const
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3505
|
+
const marketIndexer = await query.indexer.getMarket();
|
|
3506
|
+
const updatePools = (item) => {
|
|
3507
|
+
item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
|
|
3508
|
+
item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
|
|
3509
|
+
pools[item.coinName] = item;
|
|
3510
|
+
};
|
|
3511
|
+
const updateCollaterals = (item) => {
|
|
3512
|
+
item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
|
|
3513
|
+
item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
|
|
3514
|
+
collaterals[item.coinName] = item;
|
|
3515
|
+
};
|
|
3516
|
+
Object.values(marketIndexer.pools).forEach(updatePools);
|
|
3517
|
+
Object.values(marketIndexer.collaterals).forEach(updateCollaterals);
|
|
3518
|
+
return {
|
|
3519
|
+
pools,
|
|
3520
|
+
collaterals
|
|
3076
3521
|
};
|
|
3077
|
-
Object.values(marketPoolsIndexer).forEach(updateMarketPool);
|
|
3078
|
-
return marketPools;
|
|
3079
3522
|
}
|
|
3523
|
+
const requiredObjects = await queryRequiredMarketObjects(
|
|
3524
|
+
query,
|
|
3525
|
+
poolCoinNames
|
|
3526
|
+
);
|
|
3080
3527
|
await Promise.allSettled(
|
|
3081
3528
|
poolCoinNames.map(async (poolCoinName) => {
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3529
|
+
try {
|
|
3530
|
+
const result = await getMarketPool(
|
|
3531
|
+
query,
|
|
3532
|
+
poolCoinName,
|
|
3533
|
+
indexer,
|
|
3534
|
+
coinPrices?.[poolCoinName] ?? 0,
|
|
3535
|
+
requiredObjects[poolCoinName]
|
|
3536
|
+
);
|
|
3537
|
+
if (result?.marketPool) {
|
|
3538
|
+
pools[poolCoinName] = result?.marketPool;
|
|
3539
|
+
}
|
|
3540
|
+
if (result?.collateral) {
|
|
3541
|
+
collaterals[poolCoinName] = result.collateral;
|
|
3542
|
+
}
|
|
3543
|
+
} catch (e) {
|
|
3544
|
+
console.error(e);
|
|
3091
3545
|
}
|
|
3092
3546
|
})
|
|
3093
3547
|
);
|
|
3094
|
-
return
|
|
3548
|
+
return {
|
|
3549
|
+
pools,
|
|
3550
|
+
collaterals
|
|
3551
|
+
};
|
|
3552
|
+
};
|
|
3553
|
+
var parseMarketPoolObjects = ({
|
|
3554
|
+
balanceSheet,
|
|
3555
|
+
borrowDynamic,
|
|
3556
|
+
collateralStat,
|
|
3557
|
+
interestModel,
|
|
3558
|
+
riskModel,
|
|
3559
|
+
borrowFeeKey,
|
|
3560
|
+
supplyLimitKey,
|
|
3561
|
+
borrowLimitKey,
|
|
3562
|
+
isolatedAssetKey
|
|
3563
|
+
}) => {
|
|
3564
|
+
const _balanceSheet = parseObjectAs(balanceSheet);
|
|
3565
|
+
const _interestModel = parseObjectAs(interestModel);
|
|
3566
|
+
const _borrowDynamic = parseObjectAs(borrowDynamic);
|
|
3567
|
+
const _borrowFee = parseObjectAs(borrowFeeKey);
|
|
3568
|
+
const _supplyLimit = supplyLimitKey ? parseObjectAs(supplyLimitKey) : "0";
|
|
3569
|
+
const _borrowLimit = borrowLimitKey ? parseObjectAs(borrowLimitKey) : "0";
|
|
3570
|
+
const _riskModel = riskModel ? parseObjectAs(riskModel) : void 0;
|
|
3571
|
+
const _collateralStat = collateralStat ? parseObjectAs(collateralStat) : void 0;
|
|
3572
|
+
const parsedOriginMarketCollateral = _riskModel && _collateralStat ? {
|
|
3573
|
+
type: _interestModel.type.fields,
|
|
3574
|
+
isIsolated: !!isolatedAssetKey,
|
|
3575
|
+
collateralFactor: _riskModel.collateral_factor.fields,
|
|
3576
|
+
liquidationFactor: _riskModel.liquidation_factor.fields,
|
|
3577
|
+
liquidationPenalty: _riskModel.liquidation_penalty.fields,
|
|
3578
|
+
liquidationDiscount: _riskModel.liquidation_discount.fields,
|
|
3579
|
+
liquidationReserveFactor: _riskModel.liquidation_revenue_factor.fields,
|
|
3580
|
+
maxCollateralAmount: _riskModel.max_collateral_amount,
|
|
3581
|
+
totalCollateralAmount: _collateralStat.amount
|
|
3582
|
+
} : void 0;
|
|
3583
|
+
return {
|
|
3584
|
+
type: _interestModel.type.fields,
|
|
3585
|
+
maxBorrowRate: _interestModel.max_borrow_rate.fields,
|
|
3586
|
+
interestRate: _borrowDynamic.interest_rate.fields,
|
|
3587
|
+
interestRateScale: _borrowDynamic.interest_rate_scale,
|
|
3588
|
+
borrowIndex: _borrowDynamic.borrow_index,
|
|
3589
|
+
lastUpdated: _borrowDynamic.last_updated,
|
|
3590
|
+
cash: _balanceSheet.cash,
|
|
3591
|
+
debt: _balanceSheet.debt,
|
|
3592
|
+
marketCoinSupply: _balanceSheet.market_coin_supply,
|
|
3593
|
+
reserve: _balanceSheet.revenue,
|
|
3594
|
+
reserveFactor: _interestModel.revenue_factor.fields,
|
|
3595
|
+
borrowWeight: _interestModel.borrow_weight.fields,
|
|
3596
|
+
borrowFeeRate: _borrowFee,
|
|
3597
|
+
baseBorrowRatePerSec: _interestModel.base_borrow_rate_per_sec.fields,
|
|
3598
|
+
borrowRateOnHighKink: _interestModel.borrow_rate_on_high_kink.fields,
|
|
3599
|
+
borrowRateOnMidKink: _interestModel.borrow_rate_on_mid_kink.fields,
|
|
3600
|
+
highKink: _interestModel.high_kink.fields,
|
|
3601
|
+
midKink: _interestModel.mid_kink.fields,
|
|
3602
|
+
minBorrowAmount: _interestModel.min_borrow_amount,
|
|
3603
|
+
isIsolated: !!isolatedAssetKey,
|
|
3604
|
+
supplyLimit: _supplyLimit,
|
|
3605
|
+
borrowLimit: _borrowLimit,
|
|
3606
|
+
parsedOriginMarketCollateral
|
|
3607
|
+
};
|
|
3095
3608
|
};
|
|
3096
|
-
var getMarketPool = async (query, poolCoinName, indexer = false,
|
|
3609
|
+
var getMarketPool = async (query, poolCoinName, indexer = false, coinPrice, requiredObjects) => {
|
|
3097
3610
|
coinPrice = coinPrice ?? (await query.utils.getCoinPrices())?.[poolCoinName];
|
|
3098
3611
|
if (indexer) {
|
|
3099
3612
|
const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
|
|
@@ -3104,135 +3617,70 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
3104
3617
|
marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
|
|
3105
3618
|
marketPoolIndexer.coinName
|
|
3106
3619
|
);
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
const coinType = query.utils.parseCoinType(poolCoinName);
|
|
3117
|
-
const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
|
|
3118
|
-
const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3119
|
-
parentId: balanceSheetParentId,
|
|
3120
|
-
name: {
|
|
3121
|
-
type: "0x1::type_name::TypeName",
|
|
3122
|
-
value: {
|
|
3123
|
-
name: coinType.substring(2)
|
|
3124
|
-
}
|
|
3125
|
-
}
|
|
3126
|
-
});
|
|
3127
|
-
const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
|
|
3128
|
-
if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
|
|
3129
|
-
throw new Error(
|
|
3130
|
-
`Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
|
|
3131
|
-
);
|
|
3132
|
-
const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
|
|
3133
|
-
const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
|
|
3134
|
-
const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3135
|
-
parentId: borrowIndexParentId,
|
|
3136
|
-
name: {
|
|
3137
|
-
type: "0x1::type_name::TypeName",
|
|
3138
|
-
value: {
|
|
3139
|
-
name: coinType.substring(2)
|
|
3140
|
-
}
|
|
3141
|
-
}
|
|
3142
|
-
});
|
|
3143
|
-
const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
|
|
3144
|
-
if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
|
|
3145
|
-
throw new Error(
|
|
3146
|
-
`Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
|
|
3147
|
-
);
|
|
3148
|
-
const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
|
|
3149
|
-
const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
|
|
3150
|
-
const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3151
|
-
parentId: interestModelParentId,
|
|
3152
|
-
name: {
|
|
3153
|
-
type: "0x1::type_name::TypeName",
|
|
3154
|
-
value: {
|
|
3155
|
-
name: coinType.substring(2)
|
|
3156
|
-
}
|
|
3620
|
+
let marketCollateralIndexer = void 0;
|
|
3621
|
+
if (SUPPORT_COLLATERALS.includes(poolCoinName)) {
|
|
3622
|
+
marketCollateralIndexer = await query.indexer.getMarketCollateral(
|
|
3623
|
+
poolCoinName
|
|
3624
|
+
);
|
|
3625
|
+
marketCollateralIndexer.coinPrice = coinPrice ?? marketCollateralIndexer.coinPrice;
|
|
3626
|
+
marketCollateralIndexer.coinWrappedType = query.utils.getCoinWrappedType(
|
|
3627
|
+
marketCollateralIndexer.coinName
|
|
3628
|
+
);
|
|
3157
3629
|
}
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
|
-
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
const
|
|
3165
|
-
const
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
name: {
|
|
3169
|
-
type: `${BORROW_FEE_PROTOCOL_ID}::market_dynamic_keys::BorrowFeeKey`,
|
|
3170
|
-
value: {
|
|
3171
|
-
type: {
|
|
3172
|
-
name: coinType.substring(2)
|
|
3173
|
-
}
|
|
3174
|
-
}
|
|
3175
|
-
}
|
|
3176
|
-
});
|
|
3177
|
-
const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
|
|
3178
|
-
if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
|
|
3179
|
-
return { value: "0" };
|
|
3180
|
-
return borrowFeeDynamicFieldObject.content.fields.value.fields;
|
|
3181
|
-
};
|
|
3182
|
-
const parsedMarketPoolData = parseOriginMarketPoolData({
|
|
3183
|
-
type: interestModel.type.fields,
|
|
3184
|
-
maxBorrowRate: interestModel.max_borrow_rate.fields,
|
|
3185
|
-
interestRate: borrowIndex.interest_rate.fields,
|
|
3186
|
-
interestRateScale: borrowIndex.interest_rate_scale,
|
|
3187
|
-
borrowIndex: borrowIndex.borrow_index,
|
|
3188
|
-
lastUpdated: borrowIndex.last_updated,
|
|
3189
|
-
cash: balanceSheet.cash,
|
|
3190
|
-
debt: balanceSheet.debt,
|
|
3191
|
-
marketCoinSupply: balanceSheet.market_coin_supply,
|
|
3192
|
-
reserve: balanceSheet.revenue,
|
|
3193
|
-
reserveFactor: interestModel.revenue_factor.fields,
|
|
3194
|
-
borrowWeight: interestModel.borrow_weight.fields,
|
|
3195
|
-
borrowFeeRate: await getBorrowFee(),
|
|
3196
|
-
baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
|
|
3197
|
-
borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
|
|
3198
|
-
borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
|
|
3199
|
-
highKink: interestModel.high_kink.fields,
|
|
3200
|
-
midKink: interestModel.mid_kink.fields,
|
|
3201
|
-
minBorrowAmount: interestModel.min_borrow_amount
|
|
3202
|
-
});
|
|
3630
|
+
return {
|
|
3631
|
+
marketPool: marketPoolIndexer,
|
|
3632
|
+
collateral: marketCollateralIndexer
|
|
3633
|
+
};
|
|
3634
|
+
}
|
|
3635
|
+
requiredObjects ?? (requiredObjects = (await queryRequiredMarketObjects(query, [poolCoinName]))[poolCoinName]);
|
|
3636
|
+
const parsedMarketPoolObjects = parseMarketPoolObjects(requiredObjects);
|
|
3637
|
+
const parsedMarketPoolData = parseOriginMarketPoolData(
|
|
3638
|
+
parsedMarketPoolObjects
|
|
3639
|
+
);
|
|
3203
3640
|
const calculatedMarketPoolData = calculateMarketPoolData(
|
|
3204
3641
|
query.utils,
|
|
3205
3642
|
parsedMarketPoolData
|
|
3206
3643
|
);
|
|
3207
|
-
const
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
const maxBorrowCoin = (0, import_bignumber3.default)(
|
|
3212
|
-
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
3213
|
-
).shiftedBy(-coinDecimal).toNumber();
|
|
3214
|
-
return {
|
|
3644
|
+
const parsedMarketCollateralData = parsedMarketPoolObjects.parsedOriginMarketCollateral ? parseOriginMarketCollateralData(
|
|
3645
|
+
parsedMarketPoolObjects.parsedOriginMarketCollateral
|
|
3646
|
+
) : void 0;
|
|
3647
|
+
const basePoolData = () => ({
|
|
3215
3648
|
coinName: poolCoinName,
|
|
3216
3649
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
3217
|
-
coinType: query.utils.parseCoinType(poolCoinName),
|
|
3218
3650
|
marketCoinType: query.utils.parseMarketCoinType(poolCoinName),
|
|
3219
|
-
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
|
|
3651
|
+
coinType: query.utils.parseCoinType(poolCoinName)
|
|
3652
|
+
});
|
|
3653
|
+
return {
|
|
3654
|
+
marketPool: {
|
|
3655
|
+
...basePoolData(),
|
|
3656
|
+
sCoinType: query.utils.parseSCoinType(
|
|
3657
|
+
query.utils.parseMarketCoinName(poolCoinName)
|
|
3658
|
+
),
|
|
3659
|
+
coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
|
|
3660
|
+
coinPrice: coinPrice ?? 0,
|
|
3661
|
+
highKink: parsedMarketPoolData.highKink,
|
|
3662
|
+
midKink: parsedMarketPoolData.midKink,
|
|
3663
|
+
reserveFactor: parsedMarketPoolData.reserveFactor,
|
|
3664
|
+
borrowWeight: parsedMarketPoolData.borrowWeight,
|
|
3665
|
+
borrowFee: parsedMarketPoolData.borrowFee,
|
|
3666
|
+
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
3667
|
+
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
3668
|
+
...calculatedMarketPoolData
|
|
3669
|
+
},
|
|
3670
|
+
collateral: parsedMarketCollateralData ? {
|
|
3671
|
+
...basePoolData(),
|
|
3672
|
+
coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
|
|
3673
|
+
coinPrice,
|
|
3674
|
+
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
3675
|
+
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
3676
|
+
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
3677
|
+
liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
|
|
3678
|
+
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3679
|
+
...calculateMarketCollateralData(
|
|
3680
|
+
query.utils,
|
|
3681
|
+
parsedMarketCollateralData
|
|
3682
|
+
)
|
|
3683
|
+
} : void 0
|
|
3236
3684
|
};
|
|
3237
3685
|
};
|
|
3238
3686
|
var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
|
|
@@ -3327,10 +3775,11 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
|
|
|
3327
3775
|
collateralFactor: riskModel.collateral_factor.fields,
|
|
3328
3776
|
liquidationFactor: riskModel.liquidation_factor.fields,
|
|
3329
3777
|
liquidationDiscount: riskModel.liquidation_discount.fields,
|
|
3330
|
-
|
|
3778
|
+
liquidationPenalty: riskModel.liquidation_penalty.fields,
|
|
3331
3779
|
liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
|
|
3332
3780
|
maxCollateralAmount: riskModel.max_collateral_amount,
|
|
3333
|
-
totalCollateralAmount: collateralStat.amount
|
|
3781
|
+
totalCollateralAmount: collateralStat.amount,
|
|
3782
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
|
|
3334
3783
|
});
|
|
3335
3784
|
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
3336
3785
|
query.utils,
|
|
@@ -3342,14 +3791,12 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
|
|
|
3342
3791
|
coinType: query.utils.parseCoinType(collateralCoinName),
|
|
3343
3792
|
marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
|
|
3344
3793
|
coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
|
|
3345
|
-
coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
|
|
3346
3794
|
coinPrice: coinPrice ?? 0,
|
|
3347
3795
|
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
3348
3796
|
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
3349
3797
|
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
3350
|
-
|
|
3798
|
+
liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
|
|
3351
3799
|
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3352
|
-
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
3353
3800
|
...calculatedMarketCollateralData
|
|
3354
3801
|
};
|
|
3355
3802
|
};
|
|
@@ -3385,14 +3832,26 @@ var getObligations = async ({
|
|
|
3385
3832
|
} while (hasNextPage);
|
|
3386
3833
|
const keyObjects = keyObjectsResponse.filter((ref) => !!ref.data);
|
|
3387
3834
|
const obligations = [];
|
|
3835
|
+
const obligationsObjects = await queryMultipleObjects(
|
|
3836
|
+
address.cache,
|
|
3837
|
+
keyObjects.map((ref) => ref.data?.content).filter(
|
|
3838
|
+
(content) => content?.dataType === "moveObject"
|
|
3839
|
+
).map((content) => content.fields.ownership.fields.of),
|
|
3840
|
+
{
|
|
3841
|
+
showContent: true
|
|
3842
|
+
}
|
|
3843
|
+
);
|
|
3388
3844
|
await Promise.allSettled(
|
|
3389
|
-
keyObjects.map(async ({ data }) => {
|
|
3845
|
+
keyObjects.map(async ({ data }, idx) => {
|
|
3390
3846
|
const keyId = data?.objectId;
|
|
3391
3847
|
const content = data?.content;
|
|
3392
3848
|
if (keyId && content && "fields" in content) {
|
|
3393
3849
|
const fields = content.fields;
|
|
3394
3850
|
const obligationId = String(fields.ownership.fields.of);
|
|
3395
|
-
const locked = await getObligationLocked(
|
|
3851
|
+
const locked = await getObligationLocked(
|
|
3852
|
+
address.cache,
|
|
3853
|
+
obligationsObjects[idx]
|
|
3854
|
+
);
|
|
3396
3855
|
obligations.push({ id: obligationId, keyId, locked });
|
|
3397
3856
|
}
|
|
3398
3857
|
})
|
|
@@ -3400,14 +3859,12 @@ var getObligations = async ({
|
|
|
3400
3859
|
return obligations;
|
|
3401
3860
|
};
|
|
3402
3861
|
var getObligationLocked = async (cache, obligation) => {
|
|
3403
|
-
const
|
|
3862
|
+
const obligationObjectData = typeof obligation === "string" ? (await cache.queryGetObject(obligation, {
|
|
3404
3863
|
showContent: true
|
|
3405
3864
|
}))?.data : obligation;
|
|
3406
3865
|
let obligationLocked = false;
|
|
3407
|
-
if (
|
|
3408
|
-
obligationLocked = Boolean(
|
|
3409
|
-
obligationObjectResponse.content.fields.lock_key
|
|
3410
|
-
);
|
|
3866
|
+
if (obligationObjectData && obligationObjectData?.content?.dataType === "moveObject" && "lock_key" in obligationObjectData.content.fields) {
|
|
3867
|
+
obligationLocked = Boolean(obligationObjectData.content.fields.lock_key);
|
|
3411
3868
|
}
|
|
3412
3869
|
return obligationLocked;
|
|
3413
3870
|
};
|
|
@@ -3590,10 +4047,10 @@ var getLendings = async (query, poolCoinNames = [...SUPPORT_POOLS], ownerAddress
|
|
|
3590
4047
|
(marketCoinName) => SUPPORT_SPOOLS.includes(marketCoinName)
|
|
3591
4048
|
);
|
|
3592
4049
|
const coinPrices = await query.utils.getCoinPrices();
|
|
3593
|
-
const marketPools = await query.getMarketPools(poolCoinNames, {
|
|
4050
|
+
const marketPools = (await query.getMarketPools(poolCoinNames, {
|
|
3594
4051
|
indexer,
|
|
3595
4052
|
coinPrices
|
|
3596
|
-
});
|
|
4053
|
+
})).pools;
|
|
3597
4054
|
const spools = await query.getSpools(stakeMarketCoinNames, {
|
|
3598
4055
|
indexer,
|
|
3599
4056
|
marketPools,
|
|
@@ -3761,8 +4218,10 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
|
|
|
3761
4218
|
return lending;
|
|
3762
4219
|
};
|
|
3763
4220
|
var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
|
|
3764
|
-
const
|
|
3765
|
-
const
|
|
4221
|
+
const market = await query.queryMarket({ indexer });
|
|
4222
|
+
const coinPrices = await query.getAllCoinPrices({
|
|
4223
|
+
marketPools: market.pools
|
|
4224
|
+
});
|
|
3766
4225
|
const [coinAmounts, obligations] = await Promise.all([
|
|
3767
4226
|
query.getCoinAmounts(void 0, ownerAddress),
|
|
3768
4227
|
query.getObligations(ownerAddress)
|
|
@@ -3784,17 +4243,21 @@ var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
|
|
|
3784
4243
|
return obligationAccounts;
|
|
3785
4244
|
};
|
|
3786
4245
|
var getObligationAccount = async (query, obligationId, ownerAddress, indexer = false, market, coinPrices, coinAmounts) => {
|
|
4246
|
+
const coinNames = Array.from(
|
|
4247
|
+
/* @__PURE__ */ new Set([...SUPPORT_POOLS, ...SUPPORT_COLLATERALS])
|
|
4248
|
+
);
|
|
3787
4249
|
const collateralAssetCoinNames = [
|
|
3788
4250
|
...SUPPORT_COLLATERALS
|
|
3789
4251
|
];
|
|
3790
|
-
market = market ?? await query.
|
|
4252
|
+
market = market ?? await query.getMarketPools(void 0, { indexer });
|
|
3791
4253
|
coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools: market.pools });
|
|
3792
|
-
coinAmounts = coinAmounts
|
|
4254
|
+
coinAmounts = coinAmounts ?? await query.getCoinAmounts(coinNames, ownerAddress);
|
|
3793
4255
|
const [obligationQuery, borrowIncentivePools, borrowIncentiveAccounts] = await Promise.all([
|
|
3794
4256
|
query.queryObligation(obligationId),
|
|
3795
4257
|
query.getBorrowIncentivePools(void 0, {
|
|
3796
4258
|
coinPrices,
|
|
3797
|
-
indexer
|
|
4259
|
+
indexer,
|
|
4260
|
+
marketPools: market.pools
|
|
3798
4261
|
}),
|
|
3799
4262
|
query.getBorrowIncentiveAccounts(obligationId)
|
|
3800
4263
|
]);
|
|
@@ -3932,7 +4395,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
|
|
|
3932
4395
|
const rewards = [];
|
|
3933
4396
|
Object.entries(borrowIncentiveAccount.pointList).forEach(
|
|
3934
4397
|
([key, accountPoint]) => {
|
|
3935
|
-
const poolPoint = borrowIncentivePool.points[key];
|
|
4398
|
+
const poolPoint = borrowIncentivePool.points[query.utils.parseSCoinTypeNameToMarketCoinName(key)];
|
|
3936
4399
|
if (accountPoint && poolPoint) {
|
|
3937
4400
|
let availableClaimAmount = (0, import_bignumber5.default)(0);
|
|
3938
4401
|
let availableClaimCoin = (0, import_bignumber5.default)(0);
|
|
@@ -4077,7 +4540,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
|
|
|
4077
4540
|
return obligationAccount;
|
|
4078
4541
|
};
|
|
4079
4542
|
var getTotalValueLocked = async (query, indexer = false) => {
|
|
4080
|
-
const market = await query.
|
|
4543
|
+
const market = await query.getMarketPools(void 0, { indexer });
|
|
4081
4544
|
let supplyValue = (0, import_bignumber5.default)(0);
|
|
4082
4545
|
let borrowValue = (0, import_bignumber5.default)(0);
|
|
4083
4546
|
if (indexer) {
|
|
@@ -4198,7 +4661,7 @@ var getPythPrices = async ({
|
|
|
4198
4661
|
};
|
|
4199
4662
|
var getAllCoinPrices = async (query, marketPools, coinPrices) => {
|
|
4200
4663
|
coinPrices = coinPrices ?? await query.utils.getCoinPrices();
|
|
4201
|
-
marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices });
|
|
4664
|
+
marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices })).pools;
|
|
4202
4665
|
if (!marketPools) {
|
|
4203
4666
|
throw new Error(`Failed to fetch market pool for getAllCoinPrices`);
|
|
4204
4667
|
}
|
|
@@ -4323,13 +4786,81 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
|
|
|
4323
4786
|
};
|
|
4324
4787
|
|
|
4325
4788
|
// src/queries/spoolQuery.ts
|
|
4326
|
-
var
|
|
4789
|
+
var import_utils9 = require("@mysten/sui/utils");
|
|
4790
|
+
var queryRequiredSpoolObjects = async (query, stakePoolCoinNames) => {
|
|
4791
|
+
const tasks = stakePoolCoinNames.map((t, idx) => ({
|
|
4792
|
+
poolCoinName: stakePoolCoinNames[idx],
|
|
4793
|
+
spool: POOL_ADDRESSES[t]?.spool,
|
|
4794
|
+
spoolReward: POOL_ADDRESSES[t]?.spoolReward,
|
|
4795
|
+
sCoinTreasury: POOL_ADDRESSES[t]?.sCoinTreasury
|
|
4796
|
+
}));
|
|
4797
|
+
const [spoolObjects, spoolRewardObjects, sCoinTreasuryObjects] = await Promise.all([
|
|
4798
|
+
queryMultipleObjects(
|
|
4799
|
+
query.cache,
|
|
4800
|
+
tasks.map((task) => task.spool).filter((t) => !!t)
|
|
4801
|
+
),
|
|
4802
|
+
queryMultipleObjects(
|
|
4803
|
+
query.cache,
|
|
4804
|
+
tasks.map((task) => task.spoolReward).filter((t) => !!t)
|
|
4805
|
+
),
|
|
4806
|
+
queryMultipleObjects(
|
|
4807
|
+
query.cache,
|
|
4808
|
+
tasks.map((task) => task.sCoinTreasury).filter((t) => !!t)
|
|
4809
|
+
)
|
|
4810
|
+
]);
|
|
4811
|
+
const mapObjects = (tasks2, fetchedObjects) => {
|
|
4812
|
+
const resultMap = {};
|
|
4813
|
+
let fetchedIndex = 0;
|
|
4814
|
+
for (const task of tasks2) {
|
|
4815
|
+
const key = task[Object.keys(task)[1]];
|
|
4816
|
+
if (key) {
|
|
4817
|
+
resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
|
|
4818
|
+
fetchedIndex++;
|
|
4819
|
+
}
|
|
4820
|
+
}
|
|
4821
|
+
return resultMap;
|
|
4822
|
+
};
|
|
4823
|
+
const spoolMap = mapObjects(tasks, spoolObjects);
|
|
4824
|
+
const spoolRewardMap = mapObjects(tasks, spoolRewardObjects);
|
|
4825
|
+
const sCoinTreasuryMap = mapObjects(tasks, sCoinTreasuryObjects);
|
|
4826
|
+
return stakePoolCoinNames.reduce(
|
|
4827
|
+
(acc, name) => {
|
|
4828
|
+
acc[name] = {
|
|
4829
|
+
spool: spoolMap[name],
|
|
4830
|
+
spoolReward: spoolRewardMap[name],
|
|
4831
|
+
sCoinTreasury: sCoinTreasuryMap[name]
|
|
4832
|
+
};
|
|
4833
|
+
return acc;
|
|
4834
|
+
},
|
|
4835
|
+
{}
|
|
4836
|
+
);
|
|
4837
|
+
};
|
|
4838
|
+
var parseSpoolObjects = ({
|
|
4839
|
+
spool,
|
|
4840
|
+
spoolReward
|
|
4841
|
+
}) => {
|
|
4842
|
+
const _spool = parseObjectAs(spool);
|
|
4843
|
+
const _spoolReward = parseObjectAs(spoolReward);
|
|
4844
|
+
return {
|
|
4845
|
+
stakeType: _spool.stake_type,
|
|
4846
|
+
maxDistributedPoint: _spool.max_distributed_point,
|
|
4847
|
+
distributedPoint: _spool.distributed_point,
|
|
4848
|
+
distributedPointPerPeriod: _spool.distributed_point_per_period,
|
|
4849
|
+
pointDistributionTime: _spool.point_distribution_time,
|
|
4850
|
+
maxStake: _spool.max_stakes,
|
|
4851
|
+
stakes: _spool.stakes,
|
|
4852
|
+
index: _spool.index,
|
|
4853
|
+
createdAt: _spool.created_at,
|
|
4854
|
+
lastUpdate: _spool.last_update,
|
|
4855
|
+
..._spoolReward
|
|
4856
|
+
};
|
|
4857
|
+
};
|
|
4327
4858
|
var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexer = false, marketPools, coinPrices) => {
|
|
4328
4859
|
const stakeCoinNames = stakeMarketCoinNames.map(
|
|
4329
4860
|
(stakeMarketCoinName) => query.utils.parseCoinName(stakeMarketCoinName)
|
|
4330
4861
|
);
|
|
4331
|
-
|
|
4332
|
-
|
|
4862
|
+
marketPools = marketPools ?? (await query.getMarketPools(stakeCoinNames, { indexer })).pools;
|
|
4863
|
+
coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools }) ?? {};
|
|
4333
4864
|
if (!marketPools)
|
|
4334
4865
|
throw new Error(`Fail to fetch marketPools for ${stakeCoinNames}`);
|
|
4335
4866
|
const spools = {};
|
|
@@ -4344,126 +4875,93 @@ var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexe
|
|
|
4344
4875
|
const rewardCoinName = query.utils.getSpoolRewardCoinName(
|
|
4345
4876
|
spool.marketCoinName
|
|
4346
4877
|
);
|
|
4347
|
-
const marketPool = marketPools[coinName];
|
|
4348
4878
|
spool.coinPrice = coinPrices[coinName] ?? spool.coinPrice;
|
|
4349
|
-
spool.marketCoinPrice = coinPrices[
|
|
4879
|
+
spool.marketCoinPrice = coinPrices[spool.marketCoinName] ?? spool.marketCoinPrice;
|
|
4350
4880
|
spool.rewardCoinPrice = coinPrices[rewardCoinName] ?? spool.rewardCoinPrice;
|
|
4351
4881
|
spools[spool.marketCoinName] = spool;
|
|
4352
4882
|
};
|
|
4353
4883
|
Object.values(spoolsIndexer).forEach(updateSpools);
|
|
4354
4884
|
return spools;
|
|
4355
4885
|
}
|
|
4356
|
-
|
|
4357
|
-
|
|
4358
|
-
|
|
4359
|
-
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
|
|
4886
|
+
const requiredObjects = await queryRequiredSpoolObjects(
|
|
4887
|
+
query,
|
|
4888
|
+
stakeCoinNames
|
|
4889
|
+
);
|
|
4890
|
+
await Promise.allSettled(
|
|
4891
|
+
stakeMarketCoinNames.map(async (stakeMarketCoinName, idx) => {
|
|
4892
|
+
try {
|
|
4893
|
+
const stakeCoinName = stakeCoinNames[idx];
|
|
4894
|
+
const spool = await getSpool(
|
|
4895
|
+
query,
|
|
4896
|
+
stakeMarketCoinName,
|
|
4897
|
+
indexer,
|
|
4898
|
+
coinPrices,
|
|
4899
|
+
requiredObjects[stakeCoinName]
|
|
4900
|
+
);
|
|
4901
|
+
if (spool) {
|
|
4902
|
+
spools[stakeMarketCoinName] = spool;
|
|
4903
|
+
}
|
|
4904
|
+
} catch (e) {
|
|
4905
|
+
console.error(e);
|
|
4906
|
+
}
|
|
4907
|
+
})
|
|
4908
|
+
);
|
|
4369
4909
|
return spools;
|
|
4370
4910
|
};
|
|
4371
|
-
var getSpool = async (query, marketCoinName, indexer = false,
|
|
4911
|
+
var getSpool = async (query, marketCoinName, indexer = false, coinPrices, requiredObjects) => {
|
|
4372
4912
|
const coinName = query.utils.parseCoinName(marketCoinName);
|
|
4373
|
-
|
|
4374
|
-
if (!marketPool) {
|
|
4375
|
-
throw new Error(`Failed to fetch marketPool for ${marketCoinName}`);
|
|
4376
|
-
}
|
|
4377
|
-
const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
|
|
4378
|
-
const rewardPoolId = query.address.get(
|
|
4379
|
-
`spool.pools.${marketCoinName}.rewardPoolId`
|
|
4380
|
-
);
|
|
4381
|
-
let spool = void 0;
|
|
4382
|
-
coinPrices = coinPrices || await query.utils.getCoinPrices();
|
|
4913
|
+
coinPrices = coinPrices || await query.getAllCoinPrices();
|
|
4383
4914
|
if (indexer) {
|
|
4384
4915
|
const spoolIndexer = await query.indexer.getSpool(marketCoinName);
|
|
4385
4916
|
const coinName2 = query.utils.parseCoinName(marketCoinName);
|
|
4386
4917
|
const rewardCoinName2 = query.utils.getSpoolRewardCoinName(marketCoinName);
|
|
4387
|
-
spoolIndexer.coinPrice = coinPrices?.[coinName2]
|
|
4388
|
-
spoolIndexer.marketCoinPrice =
|
|
4389
|
-
spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2]
|
|
4918
|
+
spoolIndexer.coinPrice = coinPrices?.[coinName2] ?? spoolIndexer.coinPrice;
|
|
4919
|
+
spoolIndexer.marketCoinPrice = coinPrices?.[marketCoinName] ?? spoolIndexer.marketCoinPrice;
|
|
4920
|
+
spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2] ?? spoolIndexer.rewardCoinPrice;
|
|
4390
4921
|
return spoolIndexer;
|
|
4391
4922
|
}
|
|
4392
|
-
|
|
4393
|
-
[poolId, rewardPoolId],
|
|
4394
|
-
{
|
|
4395
|
-
showContent: true
|
|
4396
|
-
}
|
|
4397
|
-
);
|
|
4398
|
-
if (!(spoolObjectResponse[0] && spoolObjectResponse[1])) {
|
|
4399
|
-
throw new Error("Fail to fetch spoolObjectResponse!");
|
|
4400
|
-
}
|
|
4923
|
+
requiredObjects ?? (requiredObjects = (await queryRequiredSpoolObjects(query, [coinName]))[coinName]);
|
|
4401
4924
|
const rewardCoinName = query.utils.getSpoolRewardCoinName(marketCoinName);
|
|
4402
4925
|
coinPrices = coinPrices || await query.utils.getCoinPrices();
|
|
4403
|
-
const
|
|
4404
|
-
const
|
|
4405
|
-
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
|
|
4409
|
-
|
|
4410
|
-
|
|
4411
|
-
|
|
4412
|
-
|
|
4413
|
-
|
|
4414
|
-
|
|
4415
|
-
|
|
4416
|
-
|
|
4417
|
-
|
|
4418
|
-
|
|
4419
|
-
|
|
4420
|
-
|
|
4421
|
-
|
|
4422
|
-
|
|
4423
|
-
|
|
4424
|
-
|
|
4425
|
-
)
|
|
4426
|
-
|
|
4427
|
-
|
|
4428
|
-
|
|
4429
|
-
|
|
4430
|
-
|
|
4431
|
-
|
|
4432
|
-
|
|
4433
|
-
|
|
4434
|
-
|
|
4435
|
-
|
|
4436
|
-
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
|
|
4441
|
-
|
|
4442
|
-
rewardCoinDecimal
|
|
4443
|
-
);
|
|
4444
|
-
spool = {
|
|
4445
|
-
marketCoinName,
|
|
4446
|
-
symbol: query.utils.parseSymbol(marketCoinName),
|
|
4447
|
-
coinType: query.utils.parseCoinType(coinName),
|
|
4448
|
-
marketCoinType: query.utils.parseMarketCoinType(coinName),
|
|
4449
|
-
rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
|
|
4450
|
-
sCoinType: marketPool.sCoinType,
|
|
4451
|
-
coinDecimal: query.utils.getCoinDecimal(coinName),
|
|
4452
|
-
rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
|
|
4453
|
-
coinPrice: coinPrices?.[coinName] ?? 0,
|
|
4454
|
-
marketCoinPrice,
|
|
4455
|
-
rewardCoinPrice,
|
|
4456
|
-
maxPoint: parsedSpoolData.maxPoint,
|
|
4457
|
-
distributedPoint: parsedSpoolData.distributedPoint,
|
|
4458
|
-
maxStake: parsedSpoolData.maxStake,
|
|
4459
|
-
...calculatedSpoolData,
|
|
4460
|
-
exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
|
|
4461
|
-
exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
|
|
4462
|
-
...calculatedRewardPoolData
|
|
4463
|
-
};
|
|
4464
|
-
}
|
|
4465
|
-
}
|
|
4466
|
-
return spool;
|
|
4926
|
+
const parsedSpoolObjects = parseSpoolObjects(requiredObjects);
|
|
4927
|
+
const parsedSpoolData = parseOriginSpoolData(parsedSpoolObjects);
|
|
4928
|
+
const marketCoinPrice = coinPrices?.[marketCoinName] ?? 0;
|
|
4929
|
+
const marketCoinDecimal = query.utils.getCoinDecimal(marketCoinName);
|
|
4930
|
+
const calculatedSpoolData = calculateSpoolData(
|
|
4931
|
+
parsedSpoolData,
|
|
4932
|
+
marketCoinPrice,
|
|
4933
|
+
marketCoinDecimal
|
|
4934
|
+
);
|
|
4935
|
+
const parsedSpoolRewardPoolData = parseOriginSpoolRewardPoolData(parsedSpoolObjects);
|
|
4936
|
+
const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
|
|
4937
|
+
const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
|
|
4938
|
+
const calculatedRewardPoolData = calculateSpoolRewardPoolData(
|
|
4939
|
+
parsedSpoolData,
|
|
4940
|
+
parsedSpoolRewardPoolData,
|
|
4941
|
+
calculatedSpoolData,
|
|
4942
|
+
rewardCoinPrice,
|
|
4943
|
+
rewardCoinDecimal
|
|
4944
|
+
);
|
|
4945
|
+
return {
|
|
4946
|
+
marketCoinName,
|
|
4947
|
+
symbol: query.utils.parseSymbol(marketCoinName),
|
|
4948
|
+
coinType: query.utils.parseCoinType(coinName),
|
|
4949
|
+
marketCoinType: query.utils.parseMarketCoinType(coinName),
|
|
4950
|
+
rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
|
|
4951
|
+
sCoinType: query.utils.parseSCoinType(marketCoinName),
|
|
4952
|
+
coinDecimal: query.utils.getCoinDecimal(coinName),
|
|
4953
|
+
rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
|
|
4954
|
+
coinPrice: coinPrices?.[coinName] ?? 0,
|
|
4955
|
+
marketCoinPrice,
|
|
4956
|
+
rewardCoinPrice,
|
|
4957
|
+
maxPoint: parsedSpoolData.maxPoint,
|
|
4958
|
+
distributedPoint: parsedSpoolData.distributedPoint,
|
|
4959
|
+
maxStake: parsedSpoolData.maxStake,
|
|
4960
|
+
...calculatedSpoolData,
|
|
4961
|
+
exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
|
|
4962
|
+
exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
|
|
4963
|
+
...calculatedRewardPoolData
|
|
4964
|
+
};
|
|
4467
4965
|
};
|
|
4468
4966
|
var getStakeAccounts = async ({
|
|
4469
4967
|
utils
|
|
@@ -4540,14 +5038,14 @@ var getStakeAccounts = async ({
|
|
|
4540
5038
|
svsui: stakeAccounts.svsui,
|
|
4541
5039
|
susdc: stakeAccounts.susdc
|
|
4542
5040
|
};
|
|
4543
|
-
const normalizedType = (0,
|
|
5041
|
+
const normalizedType = (0, import_utils9.normalizeStructTag)(type);
|
|
4544
5042
|
const stakeAccountArray = stakeMarketCoinTypeMap[reversedStakeMarketCoinTypes[normalizedType]];
|
|
4545
5043
|
if (stakeAccountArray) {
|
|
4546
5044
|
stakeAccountArray.push({
|
|
4547
5045
|
id,
|
|
4548
5046
|
type: normalizedType,
|
|
4549
5047
|
stakePoolId,
|
|
4550
|
-
stakeType: (0,
|
|
5048
|
+
stakeType: (0, import_utils9.normalizeStructTag)(stakeType),
|
|
4551
5049
|
staked,
|
|
4552
5050
|
index,
|
|
4553
5051
|
points,
|
|
@@ -4585,13 +5083,13 @@ var getStakePool = async ({
|
|
|
4585
5083
|
const lastUpdate = Number(fields.last_update);
|
|
4586
5084
|
stakePool = {
|
|
4587
5085
|
id,
|
|
4588
|
-
type: (0,
|
|
5086
|
+
type: (0, import_utils9.normalizeStructTag)(type),
|
|
4589
5087
|
maxPoint,
|
|
4590
5088
|
distributedPoint,
|
|
4591
5089
|
pointPerPeriod,
|
|
4592
5090
|
period,
|
|
4593
5091
|
maxStake,
|
|
4594
|
-
stakeType: (0,
|
|
5092
|
+
stakeType: (0, import_utils9.normalizeStructTag)(stakeType),
|
|
4595
5093
|
totalStaked,
|
|
4596
5094
|
index,
|
|
4597
5095
|
createdAt,
|
|
@@ -4630,7 +5128,7 @@ var getStakeRewardPool = async ({
|
|
|
4630
5128
|
const claimedRewards = Number(rewardPoolFields.claimed_rewards);
|
|
4631
5129
|
stakeRewardPool = {
|
|
4632
5130
|
id,
|
|
4633
|
-
type: (0,
|
|
5131
|
+
type: (0, import_utils9.normalizeStructTag)(type),
|
|
4634
5132
|
stakePoolId,
|
|
4635
5133
|
ratioNumerator,
|
|
4636
5134
|
ratioDenominator,
|
|
@@ -4813,6 +5311,105 @@ var getVeScaTreasuryInfo = async (utils) => {
|
|
|
4813
5311
|
};
|
|
4814
5312
|
};
|
|
4815
5313
|
|
|
5314
|
+
// src/queries/poolAddressesQuery.ts
|
|
5315
|
+
var getAllAddresses = async (query) => {
|
|
5316
|
+
const results = {};
|
|
5317
|
+
const marketId = query.address.get("core.market");
|
|
5318
|
+
const marketObject = (await query.cache.queryGetObject(marketId, {
|
|
5319
|
+
showContent: true
|
|
5320
|
+
}))?.data;
|
|
5321
|
+
if (!(marketObject && marketObject.content?.dataType === "moveObject"))
|
|
5322
|
+
throw new Error(`Failed to fetch marketObject`);
|
|
5323
|
+
const fields = marketObject.content.fields;
|
|
5324
|
+
const coinTypesPairs = SUPPORT_POOLS.reduce(
|
|
5325
|
+
(acc, pool) => {
|
|
5326
|
+
acc.push([pool, query.utils.parseCoinType(pool).substring(2)]);
|
|
5327
|
+
return acc;
|
|
5328
|
+
},
|
|
5329
|
+
[]
|
|
5330
|
+
);
|
|
5331
|
+
const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
|
|
5332
|
+
const collateralStatsParentId = fields.collateral_stats.fields.table.fields.id.id;
|
|
5333
|
+
const borrowDynamicsParentid = fields.borrow_dynamics.fields.table.fields.id.id;
|
|
5334
|
+
const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
|
|
5335
|
+
const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
|
|
5336
|
+
const ADDRESS_TYPE = `0x1::type_name::TypeName`;
|
|
5337
|
+
const BORROW_FEE_TYPE = `0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da::market_dynamic_keys::BorrowFeeKey`;
|
|
5338
|
+
const SUPPLY_LIMIT_TYPE = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
|
|
5339
|
+
const BORROW_LIMIT_TYPE = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
|
|
5340
|
+
const ISOLATED_ASSET_KEY = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
|
|
5341
|
+
const fetchDynamicObject = async (parentId, type, value) => {
|
|
5342
|
+
try {
|
|
5343
|
+
return (await query.cache.queryGetDynamicFieldObject({
|
|
5344
|
+
parentId,
|
|
5345
|
+
name: {
|
|
5346
|
+
type,
|
|
5347
|
+
value
|
|
5348
|
+
}
|
|
5349
|
+
}))?.data?.objectId;
|
|
5350
|
+
} catch (_e) {
|
|
5351
|
+
return void 0;
|
|
5352
|
+
}
|
|
5353
|
+
};
|
|
5354
|
+
await Promise.all(
|
|
5355
|
+
coinTypesPairs.map(async ([coinName, coinType]) => {
|
|
5356
|
+
const addresses = await Promise.all([
|
|
5357
|
+
fetchDynamicObject(balanceSheetParentId, ADDRESS_TYPE, {
|
|
5358
|
+
name: coinType
|
|
5359
|
+
}),
|
|
5360
|
+
fetchDynamicObject(collateralStatsParentId, ADDRESS_TYPE, {
|
|
5361
|
+
name: coinType
|
|
5362
|
+
}),
|
|
5363
|
+
fetchDynamicObject(borrowDynamicsParentid, ADDRESS_TYPE, {
|
|
5364
|
+
name: coinType
|
|
5365
|
+
}),
|
|
5366
|
+
fetchDynamicObject(interestModelParentId, ADDRESS_TYPE, {
|
|
5367
|
+
name: coinType
|
|
5368
|
+
}),
|
|
5369
|
+
fetchDynamicObject(riskModelParentId, ADDRESS_TYPE, {
|
|
5370
|
+
name: coinType
|
|
5371
|
+
}),
|
|
5372
|
+
fetchDynamicObject(marketId, BORROW_FEE_TYPE, coinType),
|
|
5373
|
+
fetchDynamicObject(marketId, SUPPLY_LIMIT_TYPE, coinType),
|
|
5374
|
+
fetchDynamicObject(marketId, BORROW_LIMIT_TYPE, coinType),
|
|
5375
|
+
fetchDynamicObject(marketId, ISOLATED_ASSET_KEY, coinType)
|
|
5376
|
+
]);
|
|
5377
|
+
const spool = query.address.get(
|
|
5378
|
+
// @ts-ignore
|
|
5379
|
+
`spool.pools.s${coinName}.id`
|
|
5380
|
+
);
|
|
5381
|
+
const rewardPool = query.address.get(
|
|
5382
|
+
// @ts-ignore
|
|
5383
|
+
`spool.pools.s${coinName}.rewardPoolId`
|
|
5384
|
+
);
|
|
5385
|
+
const sCoinTreasury = query.address.get(
|
|
5386
|
+
// @ts-ignore
|
|
5387
|
+
`scoin.coins.s${coinName}.treasury`
|
|
5388
|
+
);
|
|
5389
|
+
const coinDecimalId = query.address.get(
|
|
5390
|
+
`core.coins.${coinName}.metaData`
|
|
5391
|
+
);
|
|
5392
|
+
results[coinName] = {
|
|
5393
|
+
lendingPoolAddress: addresses[0],
|
|
5394
|
+
collateralPoolAddress: addresses[1],
|
|
5395
|
+
borrowDynamic: addresses[2],
|
|
5396
|
+
interestModel: addresses[3],
|
|
5397
|
+
riskModel: addresses[4],
|
|
5398
|
+
borrowFeeKey: addresses[5],
|
|
5399
|
+
supplyLimitKey: addresses[6],
|
|
5400
|
+
borrowLimitKey: addresses[7],
|
|
5401
|
+
isolatedAssetKey: addresses[8],
|
|
5402
|
+
spool,
|
|
5403
|
+
spoolReward: rewardPool,
|
|
5404
|
+
sCoinTreasury,
|
|
5405
|
+
coinDecimalId
|
|
5406
|
+
};
|
|
5407
|
+
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
5408
|
+
})
|
|
5409
|
+
);
|
|
5410
|
+
return results;
|
|
5411
|
+
};
|
|
5412
|
+
|
|
4816
5413
|
// src/models/suiKit.ts
|
|
4817
5414
|
var import_sui_kit4 = require("@scallop-io/sui-kit");
|
|
4818
5415
|
var newSuiKit = (params) => {
|
|
@@ -4915,7 +5512,7 @@ var ScallopUtils = class {
|
|
|
4915
5512
|
throw Error(`Coin ${coinName} is not supported`);
|
|
4916
5513
|
}
|
|
4917
5514
|
if (coinName === "sui")
|
|
4918
|
-
return (0,
|
|
5515
|
+
return (0, import_utils11.normalizeStructTag)(`${coinPackageId}::sui::SUI`);
|
|
4919
5516
|
const wormHolePackageIds = [
|
|
4920
5517
|
this.address.get("core.coins.wusdc.id") ?? wormholeCoinIds.wusdc,
|
|
4921
5518
|
this.address.get("core.coins.wusdt.id") ?? wormholeCoinIds.wusdt,
|
|
@@ -4964,13 +5561,14 @@ var ScallopUtils = class {
|
|
|
4964
5561
|
}
|
|
4965
5562
|
}
|
|
4966
5563
|
/**
|
|
4967
|
-
* Convert sCoin name to coin name.
|
|
5564
|
+
* Convert sCoin name to market coin name.
|
|
4968
5565
|
* This function will parse new sCoin name `scallop_...` to its old market coin name which is shorter
|
|
4969
5566
|
* e.g: `scallop_sui -> ssui
|
|
5567
|
+
* if no `scallop_...` is encountered, return coinName
|
|
4970
5568
|
* @return sCoin name
|
|
4971
5569
|
*/
|
|
4972
|
-
|
|
4973
|
-
return sCoinRawNameToName[coinName];
|
|
5570
|
+
parseSCoinTypeNameToMarketCoinName(coinName) {
|
|
5571
|
+
return sCoinRawNameToName[coinName] ?? coinName;
|
|
4974
5572
|
}
|
|
4975
5573
|
/**
|
|
4976
5574
|
* Convert sCoin name into sCoin type
|
|
@@ -5018,7 +5616,10 @@ var ScallopUtils = class {
|
|
|
5018
5616
|
return `${protocolObjectId}::reserve::MarketCoin<${coinType}>`;
|
|
5019
5617
|
}
|
|
5020
5618
|
parseCoinNameFromType(coinType) {
|
|
5021
|
-
coinType = (0,
|
|
5619
|
+
coinType = (0, import_utils11.normalizeStructTag)(coinType);
|
|
5620
|
+
if (sCoinTypeToName[coinType]) {
|
|
5621
|
+
return sCoinTypeToName[coinType];
|
|
5622
|
+
}
|
|
5022
5623
|
const coinTypeRegex = new RegExp(`((0x[^:]+::[^:]+::[^<>]+))(?![^<>]*<)`);
|
|
5023
5624
|
const coinTypeMatch = coinType.match(coinTypeRegex);
|
|
5024
5625
|
const isMarketCoinType = coinType.includes("reserve::MarketCoin");
|
|
@@ -5099,7 +5700,7 @@ var ScallopUtils = class {
|
|
|
5099
5700
|
* @param coinType - The coin type, default is 0x2::SUI::SUI.
|
|
5100
5701
|
* @return The selected transaction coin arguments.
|
|
5101
5702
|
*/
|
|
5102
|
-
async selectCoins(amount, coinType =
|
|
5703
|
+
async selectCoins(amount, coinType = import_utils11.SUI_TYPE_ARG, ownerAddress) {
|
|
5103
5704
|
ownerAddress = ownerAddress ?? this.suiKit.currentAddress();
|
|
5104
5705
|
const coins = await this.suiKit.suiInteractor.selectCoins(
|
|
5105
5706
|
ownerAddress,
|
|
@@ -5188,7 +5789,7 @@ var ScallopUtils = class {
|
|
|
5188
5789
|
);
|
|
5189
5790
|
const priceIds = priceIdPairs.map(([_2, priceId]) => priceId);
|
|
5190
5791
|
const pythConnection = new import_pyth_sui_js.SuiPriceServiceConnection(endpoint, {
|
|
5191
|
-
timeout:
|
|
5792
|
+
timeout: 4e3
|
|
5192
5793
|
});
|
|
5193
5794
|
try {
|
|
5194
5795
|
const feeds = await this.cache.queryClient.fetchQuery({
|
|
@@ -5297,15 +5898,15 @@ var ScallopUtils = class {
|
|
|
5297
5898
|
};
|
|
5298
5899
|
|
|
5299
5900
|
// src/models/scallopBuilder.ts
|
|
5300
|
-
var
|
|
5901
|
+
var import_utils25 = require("@mysten/sui/utils");
|
|
5301
5902
|
|
|
5302
5903
|
// src/builders/coreBuilder.ts
|
|
5303
5904
|
var import_transactions = require("@mysten/sui/transactions");
|
|
5304
|
-
var
|
|
5905
|
+
var import_utils14 = require("@mysten/sui/utils");
|
|
5305
5906
|
var import_sui_kit5 = require("@scallop-io/sui-kit");
|
|
5306
5907
|
|
|
5307
5908
|
// src/builders/oracle.ts
|
|
5308
|
-
var
|
|
5909
|
+
var import_utils13 = require("@mysten/sui/utils");
|
|
5309
5910
|
var import_pyth_sui_js2 = require("@pythnetwork/pyth-sui-js");
|
|
5310
5911
|
var updateOracles = async (builder, txBlock, assetCoinNames, options = { usePythPullModel: true }) => {
|
|
5311
5912
|
const usePythPullModel = builder.params.usePythPullModel ?? options.usePythPullModel;
|
|
@@ -5421,27 +6022,27 @@ var priceUpdateRequest = (txBlock, packageId, xOracleId, coinType) => {
|
|
|
5421
6022
|
var confirmPriceUpdateRequest = (txBlock, packageId, xOracleId, request, coinType) => {
|
|
5422
6023
|
const target = `${packageId}::x_oracle::confirm_price_update_request`;
|
|
5423
6024
|
const typeArgs = [coinType];
|
|
5424
|
-
txBlock.moveCall(target, [xOracleId, request,
|
|
6025
|
+
txBlock.moveCall(target, [xOracleId, request, import_utils13.SUI_CLOCK_OBJECT_ID], typeArgs);
|
|
5425
6026
|
return txBlock;
|
|
5426
6027
|
};
|
|
5427
6028
|
var updateSupraPrice = (txBlock, packageId, request, holderId, registryId, coinType) => {
|
|
5428
6029
|
txBlock.moveCall(
|
|
5429
6030
|
`${packageId}::rule::set_price`,
|
|
5430
|
-
[request, holderId, registryId,
|
|
6031
|
+
[request, holderId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
|
|
5431
6032
|
[coinType]
|
|
5432
6033
|
);
|
|
5433
6034
|
};
|
|
5434
6035
|
var updateSwitchboardPrice = (txBlock, packageId, request, aggregatorId, registryId, coinType) => {
|
|
5435
6036
|
txBlock.moveCall(
|
|
5436
6037
|
`${packageId}::rule::set_price`,
|
|
5437
|
-
[request, aggregatorId, registryId,
|
|
6038
|
+
[request, aggregatorId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
|
|
5438
6039
|
[coinType]
|
|
5439
6040
|
);
|
|
5440
6041
|
};
|
|
5441
6042
|
var updatePythPrice = (txBlock, packageId, request, stateId, feedObjectId, registryId, coinType) => {
|
|
5442
6043
|
txBlock.moveCall(
|
|
5443
6044
|
`${packageId}::rule::set_price`,
|
|
5444
|
-
[request, stateId, feedObjectId, registryId,
|
|
6045
|
+
[request, stateId, feedObjectId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
|
|
5445
6046
|
[coinType]
|
|
5446
6047
|
);
|
|
5447
6048
|
};
|
|
@@ -5477,32 +6078,41 @@ var generateCoreNormalMethod = ({
|
|
|
5477
6078
|
const referralPkgId = builder.address.get("referral.id");
|
|
5478
6079
|
const referralWitnessType = `${referralPkgId}::scallop_referral_program::REFERRAL_WITNESS`;
|
|
5479
6080
|
return {
|
|
5480
|
-
openObligation: () => {
|
|
5481
|
-
const [obligation, obligationKey, obligationHotPotato] =
|
|
6081
|
+
openObligation: async () => {
|
|
6082
|
+
const [obligation, obligationKey, obligationHotPotato] = await builder.moveCall(
|
|
6083
|
+
txBlock,
|
|
5482
6084
|
`${coreIds.protocolPkg}::open_obligation::open_obligation`,
|
|
5483
6085
|
[coreIds.version]
|
|
5484
6086
|
);
|
|
5485
6087
|
return [obligation, obligationKey, obligationHotPotato];
|
|
5486
6088
|
},
|
|
5487
|
-
returnObligation: (obligation, obligationHotPotato) =>
|
|
5488
|
-
|
|
5489
|
-
|
|
5490
|
-
|
|
5491
|
-
|
|
5492
|
-
|
|
5493
|
-
|
|
5494
|
-
)
|
|
5495
|
-
|
|
6089
|
+
returnObligation: async (obligation, obligationHotPotato) => {
|
|
6090
|
+
await builder.moveCall(
|
|
6091
|
+
txBlock,
|
|
6092
|
+
`${coreIds.protocolPkg}::open_obligation::return_obligation`,
|
|
6093
|
+
[coreIds.version, obligation, obligationHotPotato]
|
|
6094
|
+
);
|
|
6095
|
+
},
|
|
6096
|
+
openObligationEntry: async () => {
|
|
6097
|
+
await builder.moveCall(
|
|
6098
|
+
txBlock,
|
|
6099
|
+
`${coreIds.protocolPkg}::open_obligation::open_obligation_entry`,
|
|
6100
|
+
[coreIds.version]
|
|
6101
|
+
);
|
|
6102
|
+
},
|
|
6103
|
+
addCollateral: async (obligation, coin, collateralCoinName) => {
|
|
5496
6104
|
const coinType = builder.utils.parseCoinType(collateralCoinName);
|
|
5497
|
-
|
|
6105
|
+
await builder.moveCall(
|
|
6106
|
+
txBlock,
|
|
5498
6107
|
`${coreIds.protocolPkg}::deposit_collateral::deposit_collateral`,
|
|
5499
6108
|
[coreIds.version, obligation, coreIds.market, coin],
|
|
5500
6109
|
[coinType]
|
|
5501
6110
|
);
|
|
5502
6111
|
},
|
|
5503
|
-
takeCollateral: (obligation, obligationKey, amount, collateralCoinName) => {
|
|
6112
|
+
takeCollateral: async (obligation, obligationKey, amount, collateralCoinName) => {
|
|
5504
6113
|
const coinType = builder.utils.parseCoinType(collateralCoinName);
|
|
5505
|
-
return
|
|
6114
|
+
return await builder.moveCall(
|
|
6115
|
+
txBlock,
|
|
5506
6116
|
`${coreIds.protocolPkg}::withdraw_collateral::withdraw_collateral`,
|
|
5507
6117
|
[
|
|
5508
6118
|
coreIds.version,
|
|
@@ -5512,46 +6122,51 @@ var generateCoreNormalMethod = ({
|
|
|
5512
6122
|
coreIds.coinDecimalsRegistry,
|
|
5513
6123
|
txBlock.pure.u64(amount),
|
|
5514
6124
|
coreIds.xOracle,
|
|
5515
|
-
|
|
6125
|
+
import_utils14.SUI_CLOCK_OBJECT_ID
|
|
5516
6126
|
],
|
|
5517
6127
|
[coinType]
|
|
5518
6128
|
);
|
|
5519
6129
|
},
|
|
5520
|
-
deposit: (coin, poolCoinName) => {
|
|
6130
|
+
deposit: async (coin, poolCoinName) => {
|
|
5521
6131
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5522
|
-
return
|
|
6132
|
+
return await builder.moveCall(
|
|
6133
|
+
txBlock,
|
|
5523
6134
|
`${coreIds.protocolPkg}::mint::mint`,
|
|
5524
|
-
[coreIds.version, coreIds.market, coin,
|
|
6135
|
+
[coreIds.version, coreIds.market, coin, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
5525
6136
|
[coinType]
|
|
5526
6137
|
);
|
|
5527
6138
|
},
|
|
5528
|
-
depositEntry: (coin, poolCoinName) => {
|
|
6139
|
+
depositEntry: async (coin, poolCoinName) => {
|
|
5529
6140
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5530
|
-
return
|
|
6141
|
+
return await builder.moveCall(
|
|
6142
|
+
txBlock,
|
|
5531
6143
|
`${coreIds.protocolPkg}::mint::mint_entry`,
|
|
5532
|
-
[coreIds.version, coreIds.market, coin,
|
|
6144
|
+
[coreIds.version, coreIds.market, coin, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
5533
6145
|
[coinType]
|
|
5534
6146
|
);
|
|
5535
6147
|
},
|
|
5536
|
-
withdraw: (marketCoin, poolCoinName) => {
|
|
6148
|
+
withdraw: async (marketCoin, poolCoinName) => {
|
|
5537
6149
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5538
|
-
return
|
|
6150
|
+
return await builder.moveCall(
|
|
6151
|
+
txBlock,
|
|
5539
6152
|
`${coreIds.protocolPkg}::redeem::redeem`,
|
|
5540
|
-
[coreIds.version, coreIds.market, marketCoin,
|
|
6153
|
+
[coreIds.version, coreIds.market, marketCoin, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
5541
6154
|
[coinType]
|
|
5542
6155
|
);
|
|
5543
6156
|
},
|
|
5544
|
-
withdrawEntry: (marketCoin, poolCoinName) => {
|
|
6157
|
+
withdrawEntry: async (marketCoin, poolCoinName) => {
|
|
5545
6158
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5546
|
-
return
|
|
6159
|
+
return await builder.moveCall(
|
|
6160
|
+
txBlock,
|
|
5547
6161
|
`${coreIds.protocolPkg}::redeem::redeem_entry`,
|
|
5548
|
-
[coreIds.version, coreIds.market, marketCoin,
|
|
6162
|
+
[coreIds.version, coreIds.market, marketCoin, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
5549
6163
|
[coinType]
|
|
5550
6164
|
);
|
|
5551
6165
|
},
|
|
5552
|
-
borrow: (obligation, obligationKey, amount, poolCoinName) => {
|
|
6166
|
+
borrow: async (obligation, obligationKey, amount, poolCoinName) => {
|
|
5553
6167
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5554
|
-
return
|
|
6168
|
+
return await builder.moveCall(
|
|
6169
|
+
txBlock,
|
|
5555
6170
|
`${coreIds.protocolPkg}::borrow::borrow`,
|
|
5556
6171
|
[
|
|
5557
6172
|
coreIds.version,
|
|
@@ -5561,14 +6176,15 @@ var generateCoreNormalMethod = ({
|
|
|
5561
6176
|
coreIds.coinDecimalsRegistry,
|
|
5562
6177
|
amount,
|
|
5563
6178
|
coreIds.xOracle,
|
|
5564
|
-
|
|
6179
|
+
import_utils14.SUI_CLOCK_OBJECT_ID
|
|
5565
6180
|
],
|
|
5566
6181
|
[coinType]
|
|
5567
6182
|
);
|
|
5568
6183
|
},
|
|
5569
|
-
borrowWithReferral: (obligation, obligationKey, borrowReferral, amount, poolCoinName) => {
|
|
6184
|
+
borrowWithReferral: async (obligation, obligationKey, borrowReferral, amount, poolCoinName) => {
|
|
5570
6185
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5571
|
-
return
|
|
6186
|
+
return await builder.moveCall(
|
|
6187
|
+
txBlock,
|
|
5572
6188
|
`${coreIds.protocolPkg}::borrow::borrow_with_referral`,
|
|
5573
6189
|
[
|
|
5574
6190
|
coreIds.version,
|
|
@@ -5577,16 +6193,17 @@ var generateCoreNormalMethod = ({
|
|
|
5577
6193
|
coreIds.market,
|
|
5578
6194
|
coreIds.coinDecimalsRegistry,
|
|
5579
6195
|
borrowReferral,
|
|
5580
|
-
txBlock.pure.u64(amount),
|
|
6196
|
+
typeof amount === "number" ? txBlock.pure.u64(amount) : amount,
|
|
5581
6197
|
coreIds.xOracle,
|
|
5582
|
-
|
|
6198
|
+
import_utils14.SUI_CLOCK_OBJECT_ID
|
|
5583
6199
|
],
|
|
5584
6200
|
[coinType, referralWitnessType]
|
|
5585
6201
|
);
|
|
5586
6202
|
},
|
|
5587
|
-
borrowEntry: (obligation, obligationKey, amount, poolCoinName) => {
|
|
6203
|
+
borrowEntry: async (obligation, obligationKey, amount, poolCoinName) => {
|
|
5588
6204
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5589
|
-
return
|
|
6205
|
+
return await builder.moveCall(
|
|
6206
|
+
txBlock,
|
|
5590
6207
|
`${coreIds.protocolPkg}::borrow::borrow_entry`,
|
|
5591
6208
|
[
|
|
5592
6209
|
coreIds.version,
|
|
@@ -5596,36 +6213,39 @@ var generateCoreNormalMethod = ({
|
|
|
5596
6213
|
coreIds.coinDecimalsRegistry,
|
|
5597
6214
|
txBlock.pure.u64(amount),
|
|
5598
6215
|
coreIds.xOracle,
|
|
5599
|
-
|
|
6216
|
+
import_utils14.SUI_CLOCK_OBJECT_ID
|
|
5600
6217
|
],
|
|
5601
6218
|
[coinType]
|
|
5602
6219
|
);
|
|
5603
6220
|
},
|
|
5604
|
-
repay: (obligation, coin, poolCoinName) => {
|
|
6221
|
+
repay: async (obligation, coin, poolCoinName) => {
|
|
5605
6222
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5606
|
-
|
|
6223
|
+
await builder.moveCall(
|
|
6224
|
+
txBlock,
|
|
5607
6225
|
`${coreIds.protocolPkg}::repay::repay`,
|
|
5608
6226
|
[
|
|
5609
6227
|
coreIds.version,
|
|
5610
6228
|
obligation,
|
|
5611
6229
|
coreIds.market,
|
|
5612
6230
|
coin,
|
|
5613
|
-
|
|
6231
|
+
import_utils14.SUI_CLOCK_OBJECT_ID
|
|
5614
6232
|
],
|
|
5615
6233
|
[coinType]
|
|
5616
6234
|
);
|
|
5617
6235
|
},
|
|
5618
|
-
borrowFlashLoan: (amount, poolCoinName) => {
|
|
6236
|
+
borrowFlashLoan: async (amount, poolCoinName) => {
|
|
5619
6237
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5620
|
-
return
|
|
6238
|
+
return await builder.moveCall(
|
|
6239
|
+
txBlock,
|
|
5621
6240
|
`${coreIds.protocolPkg}::flash_loan::borrow_flash_loan`,
|
|
5622
6241
|
[coreIds.version, coreIds.market, amount],
|
|
5623
6242
|
[coinType]
|
|
5624
6243
|
);
|
|
5625
6244
|
},
|
|
5626
|
-
repayFlashLoan: (coin, loan, poolCoinName) => {
|
|
6245
|
+
repayFlashLoan: async (coin, loan, poolCoinName) => {
|
|
5627
6246
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5628
|
-
|
|
6247
|
+
await builder.moveCall(
|
|
6248
|
+
txBlock,
|
|
5629
6249
|
`${coreIds.protocolPkg}::flash_loan::repay_flash_loan`,
|
|
5630
6250
|
[coreIds.version, coreIds.market, coin, loan],
|
|
5631
6251
|
[coinType]
|
|
@@ -5647,7 +6267,7 @@ var generateCoreQuickMethod = ({
|
|
|
5647
6267
|
);
|
|
5648
6268
|
if (collateralCoinName === "sui") {
|
|
5649
6269
|
const [suiCoin] = txBlock.splitSUIFromGas([amount]);
|
|
5650
|
-
txBlock.addCollateral(obligationArg, suiCoin, collateralCoinName);
|
|
6270
|
+
await txBlock.addCollateral(obligationArg, suiCoin, collateralCoinName);
|
|
5651
6271
|
} else {
|
|
5652
6272
|
const { leftCoin, takeCoin } = await builder.selectCoin(
|
|
5653
6273
|
txBlock,
|
|
@@ -5655,7 +6275,11 @@ var generateCoreQuickMethod = ({
|
|
|
5655
6275
|
amount,
|
|
5656
6276
|
sender
|
|
5657
6277
|
);
|
|
5658
|
-
txBlock.addCollateral(
|
|
6278
|
+
await txBlock.addCollateral(
|
|
6279
|
+
obligationArg,
|
|
6280
|
+
takeCoin,
|
|
6281
|
+
collateralCoinName
|
|
6282
|
+
);
|
|
5659
6283
|
txBlock.transferObjects([leftCoin], sender);
|
|
5660
6284
|
}
|
|
5661
6285
|
},
|
|
@@ -5670,7 +6294,7 @@ var generateCoreQuickMethod = ({
|
|
|
5670
6294
|
obligationInfo.obligationId
|
|
5671
6295
|
);
|
|
5672
6296
|
await updateOracles(builder, txBlock, updateCoinNames);
|
|
5673
|
-
return txBlock.takeCollateral(
|
|
6297
|
+
return await txBlock.takeCollateral(
|
|
5674
6298
|
obligationInfo.obligationId,
|
|
5675
6299
|
obligationInfo.obligationKey,
|
|
5676
6300
|
amount,
|
|
@@ -5682,7 +6306,7 @@ var generateCoreQuickMethod = ({
|
|
|
5682
6306
|
let marketCoinDeposit;
|
|
5683
6307
|
if (poolCoinName === "sui") {
|
|
5684
6308
|
const [suiCoin] = txBlock.splitSUIFromGas([amount]);
|
|
5685
|
-
marketCoinDeposit = txBlock.deposit(suiCoin, poolCoinName);
|
|
6309
|
+
marketCoinDeposit = await txBlock.deposit(suiCoin, poolCoinName);
|
|
5686
6310
|
} else {
|
|
5687
6311
|
const { leftCoin, takeCoin } = await builder.selectCoin(
|
|
5688
6312
|
txBlock,
|
|
@@ -5691,9 +6315,9 @@ var generateCoreQuickMethod = ({
|
|
|
5691
6315
|
sender
|
|
5692
6316
|
);
|
|
5693
6317
|
txBlock.transferObjects([leftCoin], sender);
|
|
5694
|
-
marketCoinDeposit = txBlock.deposit(takeCoin, poolCoinName);
|
|
6318
|
+
marketCoinDeposit = await txBlock.deposit(takeCoin, poolCoinName);
|
|
5695
6319
|
}
|
|
5696
|
-
return returnSCoin ? txBlock.mintSCoin(
|
|
6320
|
+
return returnSCoin ? await txBlock.mintSCoin(
|
|
5697
6321
|
builder.utils.parseMarketCoinName(poolCoinName),
|
|
5698
6322
|
marketCoinDeposit
|
|
5699
6323
|
) : marketCoinDeposit;
|
|
@@ -5711,7 +6335,7 @@ var generateCoreQuickMethod = ({
|
|
|
5711
6335
|
totalAmount
|
|
5712
6336
|
} = await builder.selectSCoin(txBlock, sCoinName, amount, sender);
|
|
5713
6337
|
txBlock.transferObjects([leftCoin], sender);
|
|
5714
|
-
const marketCoins2 = txBlock.burnSCoin(sCoinName, sCoins2);
|
|
6338
|
+
const marketCoins2 = await txBlock.burnSCoin(sCoinName, sCoins2);
|
|
5715
6339
|
amount -= totalAmount;
|
|
5716
6340
|
try {
|
|
5717
6341
|
if (amount > 0) {
|
|
@@ -5735,7 +6359,7 @@ var generateCoreQuickMethod = ({
|
|
|
5735
6359
|
sender
|
|
5736
6360
|
);
|
|
5737
6361
|
txBlock.transferObjects([leftCoin], sender);
|
|
5738
|
-
return txBlock.withdraw(walletMarketCoins, poolCoinName);
|
|
6362
|
+
return await txBlock.withdraw(walletMarketCoins, poolCoinName);
|
|
5739
6363
|
}
|
|
5740
6364
|
},
|
|
5741
6365
|
borrowQuick: async (amount, poolCoinName, obligationId, obligationKey) => {
|
|
@@ -5750,7 +6374,7 @@ var generateCoreQuickMethod = ({
|
|
|
5750
6374
|
) ?? [];
|
|
5751
6375
|
const updateCoinNames = [...obligationCoinNames, poolCoinName];
|
|
5752
6376
|
await updateOracles(builder, txBlock, updateCoinNames);
|
|
5753
|
-
return txBlock.borrow(
|
|
6377
|
+
return await txBlock.borrow(
|
|
5754
6378
|
obligationInfo.obligationId,
|
|
5755
6379
|
obligationInfo.obligationKey,
|
|
5756
6380
|
amount,
|
|
@@ -5769,7 +6393,7 @@ var generateCoreQuickMethod = ({
|
|
|
5769
6393
|
) ?? [];
|
|
5770
6394
|
const updateCoinNames = [...obligationCoinNames, poolCoinName];
|
|
5771
6395
|
await updateOracles(builder, txBlock, updateCoinNames);
|
|
5772
|
-
return txBlock.borrowWithReferral(
|
|
6396
|
+
return await txBlock.borrowWithReferral(
|
|
5773
6397
|
obligationInfo.obligationId,
|
|
5774
6398
|
obligationInfo.obligationKey,
|
|
5775
6399
|
borrowReferral,
|
|
@@ -5786,7 +6410,7 @@ var generateCoreQuickMethod = ({
|
|
|
5786
6410
|
);
|
|
5787
6411
|
if (poolCoinName === "sui") {
|
|
5788
6412
|
const [suiCoin] = txBlock.splitSUIFromGas([amount]);
|
|
5789
|
-
return txBlock.repay(
|
|
6413
|
+
return await txBlock.repay(
|
|
5790
6414
|
obligationInfo.obligationId,
|
|
5791
6415
|
suiCoin,
|
|
5792
6416
|
poolCoinName
|
|
@@ -5799,7 +6423,7 @@ var generateCoreQuickMethod = ({
|
|
|
5799
6423
|
sender
|
|
5800
6424
|
);
|
|
5801
6425
|
txBlock.transferObjects([leftCoin], sender);
|
|
5802
|
-
return txBlock.repay(
|
|
6426
|
+
return await txBlock.repay(
|
|
5803
6427
|
obligationInfo.obligationId,
|
|
5804
6428
|
takeCoin,
|
|
5805
6429
|
poolCoinName
|
|
@@ -5807,7 +6431,7 @@ var generateCoreQuickMethod = ({
|
|
|
5807
6431
|
}
|
|
5808
6432
|
},
|
|
5809
6433
|
updateAssetPricesQuick: async (assetCoinNames) => {
|
|
5810
|
-
return updateOracles(builder, txBlock, assetCoinNames);
|
|
6434
|
+
return await updateOracles(builder, txBlock, assetCoinNames);
|
|
5811
6435
|
}
|
|
5812
6436
|
};
|
|
5813
6437
|
};
|
|
@@ -5841,7 +6465,7 @@ var newCoreTxBlock = (builder, initTxBlock) => {
|
|
|
5841
6465
|
|
|
5842
6466
|
// src/builders/spoolBuilder.ts
|
|
5843
6467
|
var import_transactions2 = require("@mysten/sui/transactions");
|
|
5844
|
-
var
|
|
6468
|
+
var import_utils16 = require("@mysten/sui/utils");
|
|
5845
6469
|
var import_sui_kit6 = require("@scallop-io/sui-kit");
|
|
5846
6470
|
var requireStakeAccountIds = async (...params) => {
|
|
5847
6471
|
const [builder, txBlock, stakeMarketCoinName, stakeAccountId] = params;
|
|
@@ -5870,10 +6494,10 @@ var stakeHelper = async (builder, txBlock, stakeAccount, coinName, amount, sende
|
|
|
5870
6494
|
try {
|
|
5871
6495
|
const { takeCoin, leftCoin, totalAmount } = isSCoin ? await builder.selectSCoin(txBlock, coinName, amount, sender) : await builder.selectMarketCoin(txBlock, coinName, amount, sender);
|
|
5872
6496
|
if (isSCoin) {
|
|
5873
|
-
const marketCoin = txBlock.burnSCoin(coinName, takeCoin);
|
|
5874
|
-
txBlock.stake(stakeAccount, marketCoin, coinName);
|
|
6497
|
+
const marketCoin = await txBlock.burnSCoin(coinName, takeCoin);
|
|
6498
|
+
await txBlock.stake(stakeAccount, marketCoin, coinName);
|
|
5875
6499
|
} else {
|
|
5876
|
-
txBlock.stake(stakeAccount, takeCoin, coinName);
|
|
6500
|
+
await txBlock.stake(stakeAccount, takeCoin, coinName);
|
|
5877
6501
|
}
|
|
5878
6502
|
txBlock.transferObjects([leftCoin], sender);
|
|
5879
6503
|
return totalAmount;
|
|
@@ -5889,40 +6513,43 @@ var generateSpoolNormalMethod = ({
|
|
|
5889
6513
|
spoolPkg: builder.address.get("spool.id")
|
|
5890
6514
|
};
|
|
5891
6515
|
return {
|
|
5892
|
-
createStakeAccount: (stakeMarketCoinName) => {
|
|
6516
|
+
createStakeAccount: async (stakeMarketCoinName) => {
|
|
5893
6517
|
const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
|
|
5894
6518
|
const stakePoolId = builder.address.get(
|
|
5895
6519
|
`spool.pools.${stakeMarketCoinName}.id`
|
|
5896
6520
|
);
|
|
5897
|
-
return
|
|
6521
|
+
return await builder.moveCall(
|
|
6522
|
+
txBlock,
|
|
5898
6523
|
`${spoolIds.spoolPkg}::user::new_spool_account`,
|
|
5899
|
-
[stakePoolId,
|
|
6524
|
+
[stakePoolId, import_utils16.SUI_CLOCK_OBJECT_ID],
|
|
5900
6525
|
[marketCoinType]
|
|
5901
6526
|
);
|
|
5902
6527
|
},
|
|
5903
|
-
stake: (stakeAccount, coin, stakeMarketCoinName) => {
|
|
6528
|
+
stake: async (stakeAccount, coin, stakeMarketCoinName) => {
|
|
5904
6529
|
const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
|
|
5905
6530
|
const stakePoolId = builder.address.get(
|
|
5906
6531
|
`spool.pools.${stakeMarketCoinName}.id`
|
|
5907
6532
|
);
|
|
5908
|
-
|
|
6533
|
+
await builder.moveCall(
|
|
6534
|
+
txBlock,
|
|
5909
6535
|
`${spoolIds.spoolPkg}::user::stake`,
|
|
5910
|
-
[stakePoolId, stakeAccount, coin,
|
|
6536
|
+
[stakePoolId, stakeAccount, coin, import_utils16.SUI_CLOCK_OBJECT_ID],
|
|
5911
6537
|
[marketCoinType]
|
|
5912
6538
|
);
|
|
5913
6539
|
},
|
|
5914
|
-
unstake: (stakeAccount, amount, stakeMarketCoinName) => {
|
|
6540
|
+
unstake: async (stakeAccount, amount, stakeMarketCoinName) => {
|
|
5915
6541
|
const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
|
|
5916
6542
|
const stakePoolId = builder.address.get(
|
|
5917
6543
|
`spool.pools.${stakeMarketCoinName}.id`
|
|
5918
6544
|
);
|
|
5919
|
-
return
|
|
6545
|
+
return await builder.moveCall(
|
|
6546
|
+
txBlock,
|
|
5920
6547
|
`${spoolIds.spoolPkg}::user::unstake`,
|
|
5921
|
-
[stakePoolId, stakeAccount, amount,
|
|
6548
|
+
[stakePoolId, stakeAccount, amount, import_utils16.SUI_CLOCK_OBJECT_ID],
|
|
5922
6549
|
[marketCoinType]
|
|
5923
6550
|
);
|
|
5924
6551
|
},
|
|
5925
|
-
claim: (stakeAccount, stakeMarketCoinName) => {
|
|
6552
|
+
claim: async (stakeAccount, stakeMarketCoinName) => {
|
|
5926
6553
|
const stakePoolId = builder.address.get(
|
|
5927
6554
|
`spool.pools.${stakeMarketCoinName}.id`
|
|
5928
6555
|
);
|
|
@@ -5932,9 +6559,10 @@ var generateSpoolNormalMethod = ({
|
|
|
5932
6559
|
const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
|
|
5933
6560
|
const rewardCoinName = spoolRewardCoins[stakeMarketCoinName];
|
|
5934
6561
|
const rewardCoinType = builder.utils.parseCoinType(rewardCoinName);
|
|
5935
|
-
return
|
|
6562
|
+
return await builder.moveCall(
|
|
6563
|
+
txBlock,
|
|
5936
6564
|
`${spoolIds.spoolPkg}::user::redeem_rewards`,
|
|
5937
|
-
[stakePoolId, rewardPoolId, stakeAccount,
|
|
6565
|
+
[stakePoolId, rewardPoolId, stakeAccount, import_utils16.SUI_CLOCK_OBJECT_ID],
|
|
5938
6566
|
[marketCoinType, rewardCoinType]
|
|
5939
6567
|
);
|
|
5940
6568
|
}
|
|
@@ -5997,13 +6625,16 @@ var generateSpoolQuickMethod = ({
|
|
|
5997
6625
|
if (account.staked === 0)
|
|
5998
6626
|
continue;
|
|
5999
6627
|
const amountToUnstake = Math.min(amount, account.staked);
|
|
6000
|
-
const marketCoin = txBlock.unstake(
|
|
6628
|
+
const marketCoin = await txBlock.unstake(
|
|
6001
6629
|
account.id,
|
|
6002
6630
|
amountToUnstake,
|
|
6003
6631
|
stakeMarketCoinName
|
|
6004
6632
|
);
|
|
6005
6633
|
if (returnSCoin) {
|
|
6006
|
-
const sCoin = txBlock.mintSCoin(
|
|
6634
|
+
const sCoin = await txBlock.mintSCoin(
|
|
6635
|
+
stakeMarketCoinName,
|
|
6636
|
+
marketCoin
|
|
6637
|
+
);
|
|
6007
6638
|
toTransfer.push(sCoin);
|
|
6008
6639
|
} else {
|
|
6009
6640
|
toTransfer.push(marketCoin);
|
|
@@ -6029,7 +6660,7 @@ var generateSpoolQuickMethod = ({
|
|
|
6029
6660
|
);
|
|
6030
6661
|
const rewardCoins = [];
|
|
6031
6662
|
for (const accountId of stakeAccountIds) {
|
|
6032
|
-
const rewardCoin = txBlock.claim(accountId, stakeMarketCoinName);
|
|
6663
|
+
const rewardCoin = await txBlock.claim(accountId, stakeMarketCoinName);
|
|
6033
6664
|
rewardCoins.push(rewardCoin);
|
|
6034
6665
|
}
|
|
6035
6666
|
return rewardCoins;
|
|
@@ -6066,7 +6697,7 @@ var newSpoolTxBlock = (builder, initTxBlock) => {
|
|
|
6066
6697
|
|
|
6067
6698
|
// src/builders/borrowIncentiveBuilder.ts
|
|
6068
6699
|
var import_transactions3 = require("@mysten/sui/transactions");
|
|
6069
|
-
var
|
|
6700
|
+
var import_utils18 = require("@mysten/sui/utils");
|
|
6070
6701
|
var import_sui_kit7 = require("@scallop-io/sui-kit");
|
|
6071
6702
|
var requireObligationInfo2 = async (...params) => {
|
|
6072
6703
|
const [builder, txBlock, obligationId, obligationKey] = params;
|
|
@@ -6108,8 +6739,9 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6108
6739
|
config: builder.address.get("vesca.config")
|
|
6109
6740
|
};
|
|
6110
6741
|
return {
|
|
6111
|
-
stakeObligation: (obligationId, obligationKey) => {
|
|
6112
|
-
|
|
6742
|
+
stakeObligation: async (obligationId, obligationKey) => {
|
|
6743
|
+
await builder.moveCall(
|
|
6744
|
+
txBlock,
|
|
6113
6745
|
`${borrowIncentiveIds.borrowIncentivePkg}::user::stake`,
|
|
6114
6746
|
[
|
|
6115
6747
|
borrowIncentiveIds.config,
|
|
@@ -6118,12 +6750,13 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6118
6750
|
obligationKey,
|
|
6119
6751
|
obligationId,
|
|
6120
6752
|
borrowIncentiveIds.obligationAccessStore,
|
|
6121
|
-
|
|
6753
|
+
import_utils18.SUI_CLOCK_OBJECT_ID
|
|
6122
6754
|
]
|
|
6123
6755
|
);
|
|
6124
6756
|
},
|
|
6125
|
-
stakeObligationWithVesca: (obligationId, obligationKey, veScaKey) => {
|
|
6126
|
-
|
|
6757
|
+
stakeObligationWithVesca: async (obligationId, obligationKey, veScaKey) => {
|
|
6758
|
+
await builder.moveCall(
|
|
6759
|
+
txBlock,
|
|
6127
6760
|
`${borrowIncentiveIds.borrowIncentivePkg}::user::stake_with_ve_sca`,
|
|
6128
6761
|
[
|
|
6129
6762
|
borrowIncentiveIds.config,
|
|
@@ -6136,13 +6769,14 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6136
6769
|
veScaIds.treasury,
|
|
6137
6770
|
veScaIds.table,
|
|
6138
6771
|
veScaKey,
|
|
6139
|
-
|
|
6772
|
+
import_utils18.SUI_CLOCK_OBJECT_ID
|
|
6140
6773
|
],
|
|
6141
6774
|
[]
|
|
6142
6775
|
);
|
|
6143
6776
|
},
|
|
6144
|
-
unstakeObligation: (obligationId, obligationKey) => {
|
|
6145
|
-
|
|
6777
|
+
unstakeObligation: async (obligationId, obligationKey) => {
|
|
6778
|
+
await builder.moveCall(
|
|
6779
|
+
txBlock,
|
|
6146
6780
|
`${borrowIncentiveIds.borrowIncentivePkg}::user::unstake`,
|
|
6147
6781
|
[
|
|
6148
6782
|
borrowIncentiveIds.config,
|
|
@@ -6150,13 +6784,14 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6150
6784
|
borrowIncentiveIds.incentiveAccounts,
|
|
6151
6785
|
obligationKey,
|
|
6152
6786
|
obligationId,
|
|
6153
|
-
|
|
6787
|
+
import_utils18.SUI_CLOCK_OBJECT_ID
|
|
6154
6788
|
]
|
|
6155
6789
|
);
|
|
6156
6790
|
},
|
|
6157
|
-
claimBorrowIncentive: (obligationId, obligationKey, rewardCoinName) => {
|
|
6791
|
+
claimBorrowIncentive: async (obligationId, obligationKey, rewardCoinName) => {
|
|
6158
6792
|
const rewardType = builder.utils.parseCoinType(rewardCoinName);
|
|
6159
|
-
return
|
|
6793
|
+
return await builder.moveCall(
|
|
6794
|
+
txBlock,
|
|
6160
6795
|
`${borrowIncentiveIds.borrowIncentivePkg}::user::redeem_rewards`,
|
|
6161
6796
|
[
|
|
6162
6797
|
borrowIncentiveIds.config,
|
|
@@ -6164,13 +6799,14 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6164
6799
|
borrowIncentiveIds.incentiveAccounts,
|
|
6165
6800
|
obligationKey,
|
|
6166
6801
|
obligationId,
|
|
6167
|
-
|
|
6802
|
+
import_utils18.SUI_CLOCK_OBJECT_ID
|
|
6168
6803
|
],
|
|
6169
6804
|
[rewardType]
|
|
6170
6805
|
);
|
|
6171
6806
|
},
|
|
6172
|
-
deactivateBoost: (obligation, veScaKey) => {
|
|
6173
|
-
|
|
6807
|
+
deactivateBoost: async (obligation, veScaKey) => {
|
|
6808
|
+
await builder.moveCall(
|
|
6809
|
+
txBlock,
|
|
6174
6810
|
`${borrowIncentiveIds.borrowIncentivePkg}::user::deactivate_boost`,
|
|
6175
6811
|
[
|
|
6176
6812
|
borrowIncentiveIds.config,
|
|
@@ -6178,7 +6814,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6178
6814
|
borrowIncentiveIds.incentiveAccounts,
|
|
6179
6815
|
obligation,
|
|
6180
6816
|
veScaKey,
|
|
6181
|
-
|
|
6817
|
+
import_utils18.SUI_CLOCK_OBJECT_ID
|
|
6182
6818
|
]
|
|
6183
6819
|
);
|
|
6184
6820
|
}
|
|
@@ -6201,7 +6837,7 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
|
|
|
6201
6837
|
(txn) => txn.kind === "MoveCall" && (txn.target === `${OLD_BORROW_INCENTIVE_PROTOCOL_ID}::user::unstake` || txn.target === `${builder.address.get("borrowIncentive.id")}::user::unstake`)
|
|
6202
6838
|
);
|
|
6203
6839
|
if (!obligationLocked || unstakeObligationBeforeStake) {
|
|
6204
|
-
txBlock.stakeObligation(obligationArg, obligationKeyArg);
|
|
6840
|
+
await txBlock.stakeObligation(obligationArg, obligationKeyArg);
|
|
6205
6841
|
}
|
|
6206
6842
|
},
|
|
6207
6843
|
stakeObligationWithVeScaQuick: async (obligation, obligationKey, veScaKey) => {
|
|
@@ -6222,9 +6858,9 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
|
|
|
6222
6858
|
const bindedVeScaKey = await builder.query.getBindedVeScaKey(obligationArg);
|
|
6223
6859
|
const _veScaKey = bindedVeScaKey ?? veScaKey;
|
|
6224
6860
|
if (!_veScaKey) {
|
|
6225
|
-
txBlock.stakeObligation(obligationArg, obligationKeyArg);
|
|
6861
|
+
await txBlock.stakeObligation(obligationArg, obligationKeyArg);
|
|
6226
6862
|
} else {
|
|
6227
|
-
txBlock.stakeObligationWithVesca(
|
|
6863
|
+
await txBlock.stakeObligationWithVesca(
|
|
6228
6864
|
obligationArg,
|
|
6229
6865
|
obligationKeyArg,
|
|
6230
6866
|
_veScaKey
|
|
@@ -6244,7 +6880,7 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
|
|
|
6244
6880
|
obligationKey
|
|
6245
6881
|
);
|
|
6246
6882
|
if (obligationLocked) {
|
|
6247
|
-
txBlock.unstakeObligation(obligationArg, obligationKeyArg);
|
|
6883
|
+
await txBlock.unstakeObligation(obligationArg, obligationKeyArg);
|
|
6248
6884
|
}
|
|
6249
6885
|
},
|
|
6250
6886
|
claimBorrowIncentiveQuick: async (rewardCoinName, obligation, obligationKey) => {
|
|
@@ -6254,7 +6890,7 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
|
|
|
6254
6890
|
obligation,
|
|
6255
6891
|
obligationKey
|
|
6256
6892
|
);
|
|
6257
|
-
return txBlock.claimBorrowIncentive(
|
|
6893
|
+
return await txBlock.claimBorrowIncentive(
|
|
6258
6894
|
obligationArg,
|
|
6259
6895
|
obligationKeyArg,
|
|
6260
6896
|
rewardCoinName
|
|
@@ -6319,8 +6955,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6319
6955
|
config: builder.address.get("vesca.config")
|
|
6320
6956
|
};
|
|
6321
6957
|
return {
|
|
6322
|
-
lockSca: (scaCoin, unlockAtInSecondTimestamp) => {
|
|
6323
|
-
return
|
|
6958
|
+
lockSca: async (scaCoin, unlockAtInSecondTimestamp) => {
|
|
6959
|
+
return await builder.moveCall(
|
|
6960
|
+
txBlock,
|
|
6324
6961
|
`${veScaIds.pkgId}::ve_sca::mint_ve_sca_key`,
|
|
6325
6962
|
[
|
|
6326
6963
|
veScaIds.config,
|
|
@@ -6333,8 +6970,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6333
6970
|
[]
|
|
6334
6971
|
);
|
|
6335
6972
|
},
|
|
6336
|
-
extendLockPeriod: (veScaKey, newUnlockAtInSecondTimestamp) => {
|
|
6337
|
-
|
|
6973
|
+
extendLockPeriod: async (veScaKey, newUnlockAtInSecondTimestamp) => {
|
|
6974
|
+
await builder.moveCall(
|
|
6975
|
+
txBlock,
|
|
6338
6976
|
`${veScaIds.pkgId}::ve_sca::extend_lock_period`,
|
|
6339
6977
|
[
|
|
6340
6978
|
veScaIds.config,
|
|
@@ -6347,8 +6985,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6347
6985
|
[]
|
|
6348
6986
|
);
|
|
6349
6987
|
},
|
|
6350
|
-
extendLockAmount: (veScaKey, scaCoin) => {
|
|
6351
|
-
|
|
6988
|
+
extendLockAmount: async (veScaKey, scaCoin) => {
|
|
6989
|
+
await builder.moveCall(
|
|
6990
|
+
txBlock,
|
|
6352
6991
|
`${veScaIds.pkgId}::ve_sca::lock_more_sca`,
|
|
6353
6992
|
[
|
|
6354
6993
|
veScaIds.config,
|
|
@@ -6361,8 +7000,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6361
7000
|
[]
|
|
6362
7001
|
);
|
|
6363
7002
|
},
|
|
6364
|
-
renewExpiredVeSca: (veScaKey, scaCoin, newUnlockAtInSecondTimestamp) => {
|
|
6365
|
-
|
|
7003
|
+
renewExpiredVeSca: async (veScaKey, scaCoin, newUnlockAtInSecondTimestamp) => {
|
|
7004
|
+
await builder.moveCall(
|
|
7005
|
+
txBlock,
|
|
6366
7006
|
`${veScaIds.pkgId}::ve_sca::renew_expired_ve_sca`,
|
|
6367
7007
|
[
|
|
6368
7008
|
veScaIds.config,
|
|
@@ -6376,8 +7016,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6376
7016
|
[]
|
|
6377
7017
|
);
|
|
6378
7018
|
},
|
|
6379
|
-
redeemSca: (veScaKey) => {
|
|
6380
|
-
return
|
|
7019
|
+
redeemSca: async (veScaKey) => {
|
|
7020
|
+
return await builder.moveCall(
|
|
7021
|
+
txBlock,
|
|
6381
7022
|
`${veScaIds.pkgId}::ve_sca::redeem`,
|
|
6382
7023
|
[
|
|
6383
7024
|
veScaIds.config,
|
|
@@ -6389,8 +7030,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6389
7030
|
[]
|
|
6390
7031
|
);
|
|
6391
7032
|
},
|
|
6392
|
-
mintEmptyVeSca: () => {
|
|
6393
|
-
return
|
|
7033
|
+
mintEmptyVeSca: async () => {
|
|
7034
|
+
return await builder.moveCall(
|
|
7035
|
+
txBlock,
|
|
6394
7036
|
`${veScaIds.pkgId}::ve_sca::mint_ve_sca_placeholder_key`,
|
|
6395
7037
|
[veScaIds.config, veScaIds.table],
|
|
6396
7038
|
[]
|
|
@@ -6528,7 +7170,7 @@ var generateQuickVeScaMethod = ({
|
|
|
6528
7170
|
const veSca = await requireVeSca(builder, txBlock, veScaKey);
|
|
6529
7171
|
checkVesca(veSca?.unlockAt);
|
|
6530
7172
|
if (veSca) {
|
|
6531
|
-
const sca = txBlock.redeemSca(veSca.keyId);
|
|
7173
|
+
const sca = await txBlock.redeemSca(veSca.keyId);
|
|
6532
7174
|
if (transferSca) {
|
|
6533
7175
|
txBlock.transferObjects([sca], sender);
|
|
6534
7176
|
return;
|
|
@@ -6584,8 +7226,9 @@ var generateReferralNormalMethod = ({
|
|
|
6584
7226
|
};
|
|
6585
7227
|
const veScaTable = builder.address.get("vesca.table");
|
|
6586
7228
|
return {
|
|
6587
|
-
bindToReferral: (veScaKeyId) => {
|
|
6588
|
-
|
|
7229
|
+
bindToReferral: async (veScaKeyId) => {
|
|
7230
|
+
await builder.moveCall(
|
|
7231
|
+
txBlock,
|
|
6589
7232
|
`${referralIds.referralPgkId}::referral_bindings::bind_ve_sca_referrer`,
|
|
6590
7233
|
[
|
|
6591
7234
|
referralIds.referralBindings,
|
|
@@ -6596,9 +7239,10 @@ var generateReferralNormalMethod = ({
|
|
|
6596
7239
|
[]
|
|
6597
7240
|
);
|
|
6598
7241
|
},
|
|
6599
|
-
claimReferralTicket: (poolCoinName) => {
|
|
7242
|
+
claimReferralTicket: async (poolCoinName) => {
|
|
6600
7243
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
6601
|
-
return
|
|
7244
|
+
return await builder.moveCall(
|
|
7245
|
+
txBlock,
|
|
6602
7246
|
`${referralIds.referralPgkId}::scallop_referral_program::claim_ve_sca_referral_ticket`,
|
|
6603
7247
|
[
|
|
6604
7248
|
referralIds.version,
|
|
@@ -6611,9 +7255,10 @@ var generateReferralNormalMethod = ({
|
|
|
6611
7255
|
[coinType]
|
|
6612
7256
|
);
|
|
6613
7257
|
},
|
|
6614
|
-
burnReferralTicket: (ticket, poolCoinName) => {
|
|
7258
|
+
burnReferralTicket: async (ticket, poolCoinName) => {
|
|
6615
7259
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
6616
|
-
|
|
7260
|
+
await builder.moveCall(
|
|
7261
|
+
txBlock,
|
|
6617
7262
|
`${referralIds.referralPgkId}::scallop_referral_program::burn_ve_sca_referral_ticket`,
|
|
6618
7263
|
[
|
|
6619
7264
|
referralIds.version,
|
|
@@ -6624,9 +7269,10 @@ var generateReferralNormalMethod = ({
|
|
|
6624
7269
|
[coinType]
|
|
6625
7270
|
);
|
|
6626
7271
|
},
|
|
6627
|
-
claimReferralRevenue: (veScaKey, poolCoinName) => {
|
|
7272
|
+
claimReferralRevenue: async (veScaKey, poolCoinName) => {
|
|
6628
7273
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
6629
|
-
return
|
|
7274
|
+
return await builder.moveCall(
|
|
7275
|
+
txBlock,
|
|
6630
7276
|
`${referralIds.referralPgkId}::referral_revenue_pool::claim_revenue_with_ve_sca_key`,
|
|
6631
7277
|
[
|
|
6632
7278
|
referralIds.version,
|
|
@@ -6649,10 +7295,16 @@ var generateReferralQuickMethod = ({
|
|
|
6649
7295
|
const objToTransfer = [];
|
|
6650
7296
|
for (const coinName of coinNames) {
|
|
6651
7297
|
if (coinName === "sui") {
|
|
6652
|
-
const rewardCoin = txBlock.claimReferralRevenue(
|
|
7298
|
+
const rewardCoin = await txBlock.claimReferralRevenue(
|
|
7299
|
+
veScaKey,
|
|
7300
|
+
coinName
|
|
7301
|
+
);
|
|
6653
7302
|
objToTransfer.push(rewardCoin);
|
|
6654
7303
|
} else {
|
|
6655
|
-
const rewardCoin = txBlock.claimReferralRevenue(
|
|
7304
|
+
const rewardCoin = await txBlock.claimReferralRevenue(
|
|
7305
|
+
veScaKey,
|
|
7306
|
+
coinName
|
|
7307
|
+
);
|
|
6656
7308
|
try {
|
|
6657
7309
|
const coins = await builder.suiKit.suiInteractor.selectCoins(
|
|
6658
7310
|
sender,
|
|
@@ -6712,8 +7364,9 @@ var generateLoyaltyProgramNormalMethod = ({ builder, txBlock }) => {
|
|
|
6712
7364
|
)
|
|
6713
7365
|
};
|
|
6714
7366
|
return {
|
|
6715
|
-
claimLoyaltyRevenue: (veScaKey) => {
|
|
6716
|
-
return
|
|
7367
|
+
claimLoyaltyRevenue: async (veScaKey) => {
|
|
7368
|
+
return await builder.moveCall(
|
|
7369
|
+
txBlock,
|
|
6717
7370
|
`${loyaltyProgramIds.loyaltyProgramPkgId}::reward_pool::redeem_reward`,
|
|
6718
7371
|
[loyaltyProgramIds.rewardPool, veScaKey]
|
|
6719
7372
|
);
|
|
@@ -6730,7 +7383,7 @@ var generateLoyaltyProgramQuickMethod = ({
|
|
|
6730
7383
|
const sender = requireSender(txBlock);
|
|
6731
7384
|
if (!veScaKey)
|
|
6732
7385
|
throw new Error(`No veScaKey found for user ${sender}`);
|
|
6733
|
-
const rewardCoin = txBlock.claimLoyaltyRevenue(veScaKey);
|
|
7386
|
+
const rewardCoin = await txBlock.claimLoyaltyRevenue(veScaKey);
|
|
6734
7387
|
await builder.utils.mergeSimilarCoins(
|
|
6735
7388
|
txBlock,
|
|
6736
7389
|
rewardCoin,
|
|
@@ -6779,8 +7432,9 @@ var generateSCoinNormalMethod = ({
|
|
|
6779
7432
|
pkgId: builder.address.get("scoin.id")
|
|
6780
7433
|
};
|
|
6781
7434
|
return {
|
|
6782
|
-
mintSCoin: (marketCoinName, marketCoin) => {
|
|
6783
|
-
return
|
|
7435
|
+
mintSCoin: async (marketCoinName, marketCoin) => {
|
|
7436
|
+
return await builder.moveCall(
|
|
7437
|
+
txBlock,
|
|
6784
7438
|
`${sCoinPkgIds.pkgId}::s_coin_converter::mint_s_coin`,
|
|
6785
7439
|
[builder.utils.getSCoinTreasury(marketCoinName), marketCoin],
|
|
6786
7440
|
[
|
|
@@ -6789,8 +7443,9 @@ var generateSCoinNormalMethod = ({
|
|
|
6789
7443
|
]
|
|
6790
7444
|
);
|
|
6791
7445
|
},
|
|
6792
|
-
burnSCoin: (sCoinName, sCoin) => {
|
|
6793
|
-
return
|
|
7446
|
+
burnSCoin: async (sCoinName, sCoin) => {
|
|
7447
|
+
return await builder.moveCall(
|
|
7448
|
+
txBlock,
|
|
6794
7449
|
`${sCoinPkgIds.pkgId}::s_coin_converter::burn_s_coin`,
|
|
6795
7450
|
[builder.utils.getSCoinTreasury(sCoinName), sCoin],
|
|
6796
7451
|
[
|
|
@@ -6815,7 +7470,7 @@ var generateSCoinQuickMethod = ({
|
|
|
6815
7470
|
sender
|
|
6816
7471
|
);
|
|
6817
7472
|
txBlock.transferObjects([leftCoin], sender);
|
|
6818
|
-
return txBlock.mintSCoin(marketCoinName, takeCoin);
|
|
7473
|
+
return await txBlock.mintSCoin(marketCoinName, takeCoin);
|
|
6819
7474
|
},
|
|
6820
7475
|
burnSCoinQuick: async (sCoinName, amount) => {
|
|
6821
7476
|
const sender = requireSender(txBlock);
|
|
@@ -6826,7 +7481,7 @@ var generateSCoinQuickMethod = ({
|
|
|
6826
7481
|
sender
|
|
6827
7482
|
);
|
|
6828
7483
|
txBlock.transferObjects([leftCoin], sender);
|
|
6829
|
-
return txBlock.burnSCoin(sCoinName, takeCoin);
|
|
7484
|
+
return await txBlock.burnSCoin(sCoinName, takeCoin);
|
|
6830
7485
|
}
|
|
6831
7486
|
};
|
|
6832
7487
|
};
|
|
@@ -7068,12 +7723,12 @@ var ScallopIndexer = class {
|
|
|
7068
7723
|
};
|
|
7069
7724
|
|
|
7070
7725
|
// src/models/scallopQuery.ts
|
|
7071
|
-
var
|
|
7726
|
+
var import_utils24 = require("@mysten/sui/utils");
|
|
7072
7727
|
var ScallopQuery = class {
|
|
7073
7728
|
constructor(params, instance) {
|
|
7074
7729
|
this.params = params;
|
|
7075
7730
|
this.suiKit = instance?.suiKit ?? instance?.utils?.suiKit ?? newSuiKit(params);
|
|
7076
|
-
this.walletAddress = (0,
|
|
7731
|
+
this.walletAddress = (0, import_utils24.normalizeSuiAddress)(
|
|
7077
7732
|
params.walletAddress ?? this.suiKit.currentAddress()
|
|
7078
7733
|
);
|
|
7079
7734
|
if (instance?.utils) {
|
|
@@ -7148,6 +7803,7 @@ var ScallopQuery = class {
|
|
|
7148
7803
|
}
|
|
7149
7804
|
/* ==================== Core Query Methods ==================== */
|
|
7150
7805
|
/**
|
|
7806
|
+
* @deprecated use getMarketPools
|
|
7151
7807
|
* Query market data.
|
|
7152
7808
|
* @param indexer - Whether to use indexer.
|
|
7153
7809
|
* @return Market data.
|
|
@@ -7166,7 +7822,7 @@ var ScallopQuery = class {
|
|
|
7166
7822
|
* @param indexer - Whether to use indexer.
|
|
7167
7823
|
* @return Market pools data.
|
|
7168
7824
|
*/
|
|
7169
|
-
async getMarketPools(poolCoinNames, args) {
|
|
7825
|
+
async getMarketPools(poolCoinNames = [...SUPPORT_POOLS], args) {
|
|
7170
7826
|
return await getMarketPools(
|
|
7171
7827
|
this,
|
|
7172
7828
|
poolCoinNames,
|
|
@@ -7182,13 +7838,8 @@ var ScallopQuery = class {
|
|
|
7182
7838
|
* @return Market pool data.
|
|
7183
7839
|
*/
|
|
7184
7840
|
async getMarketPool(poolCoinName, args) {
|
|
7185
|
-
|
|
7186
|
-
|
|
7187
|
-
poolCoinName,
|
|
7188
|
-
args?.indexer,
|
|
7189
|
-
args?.marketObject,
|
|
7190
|
-
args?.coinPrice
|
|
7191
|
-
);
|
|
7841
|
+
const marketPools = await this.getMarketPools(void 0, args);
|
|
7842
|
+
return marketPools.pools[poolCoinName];
|
|
7192
7843
|
}
|
|
7193
7844
|
/**
|
|
7194
7845
|
* Get market collaterals.
|
|
@@ -7315,13 +7966,8 @@ var ScallopQuery = class {
|
|
|
7315
7966
|
* @return Spool data.
|
|
7316
7967
|
*/
|
|
7317
7968
|
async getSpool(stakeMarketCoinName, args) {
|
|
7318
|
-
|
|
7319
|
-
|
|
7320
|
-
stakeMarketCoinName,
|
|
7321
|
-
args?.indexer,
|
|
7322
|
-
args?.marketPool,
|
|
7323
|
-
args?.coinPrices
|
|
7324
|
-
);
|
|
7969
|
+
const spools = await this.getSpools(void 0, args);
|
|
7970
|
+
return spools[stakeMarketCoinName];
|
|
7325
7971
|
}
|
|
7326
7972
|
/**
|
|
7327
7973
|
* Get stake accounts data for all stake pools (spools).
|
|
@@ -7487,11 +8133,9 @@ var ScallopQuery = class {
|
|
|
7487
8133
|
* @return Borrowing and collateral information.
|
|
7488
8134
|
*/
|
|
7489
8135
|
async getObligationAccount(obligationId, ownerAddress = this.walletAddress, args) {
|
|
7490
|
-
|
|
7491
|
-
|
|
7492
|
-
obligationId
|
|
7493
|
-
ownerAddress,
|
|
7494
|
-
args?.indexer
|
|
8136
|
+
const results = await this.getObligationAccounts(ownerAddress, args);
|
|
8137
|
+
return Object.values(results).find(
|
|
8138
|
+
(obligation) => obligation?.obligationId === obligationId
|
|
7495
8139
|
);
|
|
7496
8140
|
}
|
|
7497
8141
|
/**
|
|
@@ -7626,7 +8270,7 @@ var ScallopQuery = class {
|
|
|
7626
8270
|
* Get list of isolated assets
|
|
7627
8271
|
*/
|
|
7628
8272
|
async getIsolatedAssets() {
|
|
7629
|
-
return await getIsolatedAssets(this
|
|
8273
|
+
return await getIsolatedAssets(this);
|
|
7630
8274
|
}
|
|
7631
8275
|
/**
|
|
7632
8276
|
* Check if asset is an isolated asset
|
|
@@ -7649,6 +8293,13 @@ var ScallopQuery = class {
|
|
|
7649
8293
|
async getAllCoinPrices(args) {
|
|
7650
8294
|
return getAllCoinPrices(this, args?.marketPools, args?.coinPrices);
|
|
7651
8295
|
}
|
|
8296
|
+
/**
|
|
8297
|
+
* Query all address (lending pool, collateral pool, borrow dynamics, interest models) of all pool
|
|
8298
|
+
* @returns
|
|
8299
|
+
*/
|
|
8300
|
+
async getPoolAddresses() {
|
|
8301
|
+
return getAllAddresses(this);
|
|
8302
|
+
}
|
|
7652
8303
|
};
|
|
7653
8304
|
|
|
7654
8305
|
// src/models/scallopBuilder.ts
|
|
@@ -7656,7 +8307,7 @@ var ScallopBuilder = class {
|
|
|
7656
8307
|
constructor(params, instance) {
|
|
7657
8308
|
this.suiKit = instance?.suiKit ?? newSuiKit(params);
|
|
7658
8309
|
this.params = params;
|
|
7659
|
-
this.walletAddress = (0,
|
|
8310
|
+
this.walletAddress = (0, import_utils25.normalizeSuiAddress)(
|
|
7660
8311
|
params?.walletAddress ?? this.suiKit.currentAddress()
|
|
7661
8312
|
);
|
|
7662
8313
|
if (instance?.query) {
|
|
@@ -7707,7 +8358,6 @@ var ScallopBuilder = class {
|
|
|
7707
8358
|
await this.address.read();
|
|
7708
8359
|
}
|
|
7709
8360
|
await this.query.init(force, this.address);
|
|
7710
|
-
await this.utils.init(force, this.address);
|
|
7711
8361
|
}
|
|
7712
8362
|
/**
|
|
7713
8363
|
* Create a scallop txBlock instance that enhances transaction block.
|
|
@@ -7796,6 +8446,9 @@ var ScallopBuilder = class {
|
|
|
7796
8446
|
txBlock
|
|
7797
8447
|
);
|
|
7798
8448
|
}
|
|
8449
|
+
moveCall(txb, target, args, typeArgs) {
|
|
8450
|
+
return txb.moveCall(target, args, typeArgs);
|
|
8451
|
+
}
|
|
7799
8452
|
};
|
|
7800
8453
|
|
|
7801
8454
|
// src/models/scallopClient.ts
|
|
@@ -7803,7 +8456,7 @@ var ScallopClient = class {
|
|
|
7803
8456
|
constructor(params, instance) {
|
|
7804
8457
|
this.params = params;
|
|
7805
8458
|
this.suiKit = instance?.suiKit ?? instance?.builder?.suiKit ?? newSuiKit(params);
|
|
7806
|
-
this.walletAddress = (0,
|
|
8459
|
+
this.walletAddress = (0, import_utils26.normalizeSuiAddress)(
|
|
7807
8460
|
params?.walletAddress ?? this.suiKit.currentAddress()
|
|
7808
8461
|
);
|
|
7809
8462
|
if (instance?.builder) {
|
|
@@ -7942,7 +8595,7 @@ var ScallopClient = class {
|
|
|
7942
8595
|
}
|
|
7943
8596
|
async openObligation(sign = true) {
|
|
7944
8597
|
const txBlock = this.builder.createTxBlock();
|
|
7945
|
-
txBlock.openObligationEntry();
|
|
8598
|
+
await txBlock.openObligationEntry();
|
|
7946
8599
|
if (sign) {
|
|
7947
8600
|
return await this.suiKit.signAndSendTxn(
|
|
7948
8601
|
txBlock
|
|
@@ -7964,9 +8617,9 @@ var ScallopClient = class {
|
|
|
7964
8617
|
specificObligationId
|
|
7965
8618
|
);
|
|
7966
8619
|
} else {
|
|
7967
|
-
const [obligation, obligationKey, hotPotato] = txBlock.openObligation();
|
|
8620
|
+
const [obligation, obligationKey, hotPotato] = await txBlock.openObligation();
|
|
7968
8621
|
await txBlock.addCollateralQuick(amount, collateralCoinName, obligation);
|
|
7969
|
-
txBlock.returnObligation(obligation, hotPotato);
|
|
8622
|
+
await txBlock.returnObligation(obligation, hotPotato);
|
|
7970
8623
|
txBlock.transferObjects([obligationKey], sender);
|
|
7971
8624
|
}
|
|
7972
8625
|
if (sign) {
|
|
@@ -8036,7 +8689,7 @@ var ScallopClient = class {
|
|
|
8036
8689
|
targetStakeAccount
|
|
8037
8690
|
);
|
|
8038
8691
|
} else {
|
|
8039
|
-
const account = txBlock.createStakeAccount(stakeMarketCoinName);
|
|
8692
|
+
const account = await txBlock.createStakeAccount(stakeMarketCoinName);
|
|
8040
8693
|
await txBlock.stakeQuick(marketCoin, stakeMarketCoinName, account);
|
|
8041
8694
|
txBlock.transferObjects([account], sender);
|
|
8042
8695
|
}
|
|
@@ -8133,8 +8786,12 @@ var ScallopClient = class {
|
|
|
8133
8786
|
const txBlock = this.builder.createTxBlock();
|
|
8134
8787
|
const sender = walletAddress ?? this.walletAddress;
|
|
8135
8788
|
txBlock.setSender(sender);
|
|
8136
|
-
const [coin, loan] = txBlock.borrowFlashLoan(amount, poolCoinName);
|
|
8137
|
-
txBlock.repayFlashLoan(
|
|
8789
|
+
const [coin, loan] = await txBlock.borrowFlashLoan(amount, poolCoinName);
|
|
8790
|
+
await txBlock.repayFlashLoan(
|
|
8791
|
+
await callback(txBlock, coin),
|
|
8792
|
+
loan,
|
|
8793
|
+
poolCoinName
|
|
8794
|
+
);
|
|
8138
8795
|
if (sign) {
|
|
8139
8796
|
return await this.suiKit.signAndSendTxn(
|
|
8140
8797
|
txBlock
|
|
@@ -8147,7 +8804,7 @@ var ScallopClient = class {
|
|
|
8147
8804
|
const txBlock = this.builder.createTxBlock();
|
|
8148
8805
|
const sender = walletAddress ?? this.walletAddress;
|
|
8149
8806
|
txBlock.setSender(sender);
|
|
8150
|
-
const stakeAccount = txBlock.createStakeAccount(marketCoinName);
|
|
8807
|
+
const stakeAccount = await txBlock.createStakeAccount(marketCoinName);
|
|
8151
8808
|
txBlock.transferObjects([stakeAccount], sender);
|
|
8152
8809
|
if (sign) {
|
|
8153
8810
|
return await this.suiKit.signAndSendTxn(
|
|
@@ -8166,7 +8823,7 @@ var ScallopClient = class {
|
|
|
8166
8823
|
if (targetStakeAccount) {
|
|
8167
8824
|
await txBlock.stakeQuick(amount, stakeMarketCoinName, targetStakeAccount);
|
|
8168
8825
|
} else {
|
|
8169
|
-
const account = txBlock.createStakeAccount(stakeMarketCoinName);
|
|
8826
|
+
const account = await txBlock.createStakeAccount(stakeMarketCoinName);
|
|
8170
8827
|
await txBlock.stakeQuick(amount, stakeMarketCoinName, account);
|
|
8171
8828
|
txBlock.transferObjects([account], sender);
|
|
8172
8829
|
}
|
|
@@ -8216,7 +8873,7 @@ var ScallopClient = class {
|
|
|
8216
8873
|
);
|
|
8217
8874
|
const stakeCoinName = this.utils.parseCoinName(stakeMarketCoinName);
|
|
8218
8875
|
if (stakeMarketCoin) {
|
|
8219
|
-
const coin = txBlock.withdraw(stakeMarketCoin, stakeCoinName);
|
|
8876
|
+
const coin = await txBlock.withdraw(stakeMarketCoin, stakeCoinName);
|
|
8220
8877
|
await this.utils.mergeSimilarCoins(
|
|
8221
8878
|
txBlock,
|
|
8222
8879
|
coin,
|
|
@@ -8313,6 +8970,8 @@ var ScallopClient = class {
|
|
|
8313
8970
|
txBlock.setSender(sender);
|
|
8314
8971
|
const rewardCoinsCollection = {};
|
|
8315
8972
|
const obligationAccount = await this.query.getObligationAccount(obligationId);
|
|
8973
|
+
if (!obligationAccount)
|
|
8974
|
+
throw new Error("Obligation not found");
|
|
8316
8975
|
const rewardCoinNames = Object.values(obligationAccount.borrowIncentives).flatMap(
|
|
8317
8976
|
({ rewards }) => rewards.filter(({ availableClaimAmount }) => availableClaimAmount > 0)
|
|
8318
8977
|
).flatMap(({ coinName }) => coinName);
|
|
@@ -8375,7 +9034,7 @@ var ScallopClient = class {
|
|
|
8375
9034
|
throw e;
|
|
8376
9035
|
}
|
|
8377
9036
|
if (toDestroyMarketCoin) {
|
|
8378
|
-
const sCoin = txBlock.mintSCoin(
|
|
9037
|
+
const sCoin = await txBlock.mintSCoin(
|
|
8379
9038
|
sCoinName,
|
|
8380
9039
|
toDestroyMarketCoin
|
|
8381
9040
|
);
|
|
@@ -8644,9 +9303,11 @@ var Scallop = class {
|
|
|
8644
9303
|
ScallopQuery,
|
|
8645
9304
|
ScallopUtils,
|
|
8646
9305
|
TEST_ADDRESSES,
|
|
9306
|
+
TokenBucket,
|
|
8647
9307
|
UNLOCK_ROUND_DURATION,
|
|
8648
9308
|
USE_TEST_ADDRESS,
|
|
8649
9309
|
assetCoins,
|
|
9310
|
+
callWithRateLimit,
|
|
8650
9311
|
coinDecimals,
|
|
8651
9312
|
coinIds,
|
|
8652
9313
|
marketCoins,
|