@scallop-io/sui-scallop-sdk 1.4.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 +1 -1
- 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 +1270 -588
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1225 -544
- 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 +38 -20
- package/dist/models/scallopUtils.d.ts +4 -2
- package/dist/queries/borrowIncentiveQuery.d.ts +12 -0
- package/dist/queries/coreQuery.d.ts +18 -19
- 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/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/common.ts +1 -12
- package/src/constants/poolAddress.ts +336 -10
- 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 +1 -0
- package/src/queries/coreQuery.ts +408 -258
- package/src/queries/index.ts +2 -0
- package/src/queries/isolatedAssetQuery.ts +37 -31
- 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/test.ts +17 -0
- 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,
|
|
@@ -206,18 +208,7 @@ var SUPPORT_WORMHOLE = [
|
|
|
206
208
|
"wsol"
|
|
207
209
|
];
|
|
208
210
|
var SUPPORT_SPOOLS_REWARDS = ["sui"];
|
|
209
|
-
var SUPPORT_BORROW_INCENTIVE_POOLS = [
|
|
210
|
-
"sui",
|
|
211
|
-
"wusdc",
|
|
212
|
-
"wusdt",
|
|
213
|
-
"afsui",
|
|
214
|
-
"hasui",
|
|
215
|
-
"vsui",
|
|
216
|
-
"weth",
|
|
217
|
-
"sbeth",
|
|
218
|
-
"sca",
|
|
219
|
-
"usdc"
|
|
220
|
-
];
|
|
211
|
+
var SUPPORT_BORROW_INCENTIVE_POOLS = [...SUPPORT_POOLS];
|
|
221
212
|
var SUPPORT_BORROW_INCENTIVE_REWARDS = [
|
|
222
213
|
...SUPPORT_POOLS,
|
|
223
214
|
...SUPPORT_SCOIN
|
|
@@ -433,65 +424,243 @@ var FlashLoanFeeObjectMap = {
|
|
|
433
424
|
var POOL_ADDRESSES = {
|
|
434
425
|
usdc: {
|
|
435
426
|
lendingPoolAddress: "0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",
|
|
436
|
-
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"
|
|
437
439
|
},
|
|
438
440
|
sbeth: {
|
|
439
|
-
lendingPoolAddress: "
|
|
440
|
-
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"
|
|
441
454
|
},
|
|
442
455
|
weth: {
|
|
443
456
|
lendingPoolAddress: "0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",
|
|
444
|
-
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"
|
|
445
469
|
},
|
|
446
470
|
wbtc: {
|
|
447
471
|
lendingPoolAddress: "0x65cc08a5aca0a0b8d72e1993ded8d145f06dd102fd0d8f285b92934faed564ab",
|
|
448
|
-
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"
|
|
449
484
|
},
|
|
450
485
|
wusdc: {
|
|
451
|
-
lendingPoolAddress: "
|
|
452
|
-
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"
|
|
453
499
|
},
|
|
454
500
|
wusdt: {
|
|
455
501
|
lendingPoolAddress: "0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879",
|
|
456
|
-
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"
|
|
457
514
|
},
|
|
458
515
|
sui: {
|
|
459
516
|
lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
|
|
460
|
-
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"
|
|
461
529
|
},
|
|
462
530
|
wapt: {
|
|
463
531
|
lendingPoolAddress: "0xca8c14a24e0c32b198eaf479a3317461e3cc339097ce88eaf296a15df8dcfdf5",
|
|
464
|
-
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"
|
|
465
544
|
},
|
|
466
545
|
wsol: {
|
|
467
546
|
lendingPoolAddress: "0x985682c42984cdfb03f9ff7d8923344c2fe096b1ae4b82ea17721af19d22a21f",
|
|
468
|
-
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"
|
|
469
559
|
},
|
|
470
560
|
cetus: {
|
|
471
561
|
lendingPoolAddress: "0xc09858f60e74a1b671635bec4e8a2c84a0ff313eb87f525fba3258e88c6b6282",
|
|
472
|
-
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"
|
|
473
574
|
},
|
|
474
575
|
afsui: {
|
|
475
576
|
lendingPoolAddress: "0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",
|
|
476
|
-
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"
|
|
477
589
|
},
|
|
478
590
|
hasui: {
|
|
479
591
|
lendingPoolAddress: "0x7ebc607f6bdeb659fb6506cb91c5cc1d47bb365cfd5d2e637ea765346ec84ed4",
|
|
480
|
-
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"
|
|
481
604
|
},
|
|
482
605
|
vsui: {
|
|
483
606
|
lendingPoolAddress: "0xda9257c0731d8822e8a438ebced13415850d705b779c79958dcf2aeb21fcb43d",
|
|
484
|
-
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"
|
|
485
619
|
},
|
|
486
620
|
sca: {
|
|
487
621
|
lendingPoolAddress: "0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",
|
|
488
|
-
collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31"
|
|
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"
|
|
489
634
|
},
|
|
490
635
|
fud: {
|
|
491
|
-
lendingPoolAddress: "
|
|
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"
|
|
492
649
|
},
|
|
493
650
|
deep: {
|
|
494
|
-
lendingPoolAddress: "0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03"
|
|
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"
|
|
495
664
|
}
|
|
496
665
|
};
|
|
497
666
|
|
|
@@ -542,7 +711,11 @@ var queryKeys = {
|
|
|
542
711
|
typeArgs: !typeArgs ? void 0 : JSON.stringify(typeArgs)
|
|
543
712
|
}
|
|
544
713
|
],
|
|
545
|
-
getObject: (objectId,
|
|
714
|
+
getObject: (objectId, options) => [
|
|
715
|
+
"rpc",
|
|
716
|
+
"getObject",
|
|
717
|
+
{ options, objectId }
|
|
718
|
+
],
|
|
546
719
|
getObjects: (objectIds, walletAddress, options) => [
|
|
547
720
|
"rpc",
|
|
548
721
|
"getObjects",
|
|
@@ -592,7 +765,10 @@ var queryKeys = {
|
|
|
592
765
|
"rpc",
|
|
593
766
|
"getAllCoinBalances",
|
|
594
767
|
{ owner }
|
|
595
|
-
]
|
|
768
|
+
],
|
|
769
|
+
getNormalizedMoveFunction: (target) => {
|
|
770
|
+
return ["rpc", "getNormalizedMoveCall", target];
|
|
771
|
+
}
|
|
596
772
|
},
|
|
597
773
|
oracle: {
|
|
598
774
|
getPythLatestPriceFeeds: () => ["oracle", "getPythPriceIds"]
|
|
@@ -816,6 +992,32 @@ var TEST_ADDRESSES = {
|
|
|
816
992
|
feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
|
|
817
993
|
}
|
|
818
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
|
+
}
|
|
819
1021
|
}
|
|
820
1022
|
},
|
|
821
1023
|
oracles: {
|
|
@@ -1035,14 +1237,22 @@ var TEST_ADDRESSES = {
|
|
|
1035
1237
|
ssbeth: {
|
|
1036
1238
|
coinType: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
|
|
1037
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"
|
|
1038
1248
|
}
|
|
1039
1249
|
}
|
|
1040
1250
|
}
|
|
1041
1251
|
};
|
|
1042
1252
|
|
|
1043
1253
|
// src/constants/tokenBucket.ts
|
|
1044
|
-
var DEFAULT_TOKENS_PER_INTERVAL =
|
|
1045
|
-
var DEFAULT_INTERVAL_IN_MS =
|
|
1254
|
+
var DEFAULT_TOKENS_PER_INTERVAL = 10;
|
|
1255
|
+
var DEFAULT_INTERVAL_IN_MS = 250;
|
|
1046
1256
|
|
|
1047
1257
|
// src/constants/vesca.ts
|
|
1048
1258
|
var UNLOCK_ROUND_DURATION = 60 * 60 * 24;
|
|
@@ -1186,7 +1396,10 @@ var parseOriginMarketPoolData = (originMarketPoolData) => {
|
|
|
1186
1396
|
borrowRateOnMidKink: Number(originMarketPoolData.borrowRateOnMidKink.value) / 2 ** 32,
|
|
1187
1397
|
highKink: Number(originMarketPoolData.highKink.value) / 2 ** 32,
|
|
1188
1398
|
midKink: Number(originMarketPoolData.midKink.value) / 2 ** 32,
|
|
1189
|
-
minBorrowAmount: Number(originMarketPoolData.minBorrowAmount)
|
|
1399
|
+
minBorrowAmount: Number(originMarketPoolData.minBorrowAmount),
|
|
1400
|
+
isIsolated: originMarketPoolData.isIsolated,
|
|
1401
|
+
supplyLimit: Number(originMarketPoolData.supplyLimit),
|
|
1402
|
+
borrowLimit: Number(originMarketPoolData.borrowLimit)
|
|
1190
1403
|
};
|
|
1191
1404
|
};
|
|
1192
1405
|
var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
@@ -1238,6 +1451,7 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
|
1238
1451
|
borrowApyOnHighKink: utils.parseAprToApy(borrowAprOnHighKink),
|
|
1239
1452
|
borrowAprOnMidKink,
|
|
1240
1453
|
borrowApyOnMidKink: utils.parseAprToApy(borrowAprOnMidKink),
|
|
1454
|
+
coinDecimal,
|
|
1241
1455
|
maxBorrowApr,
|
|
1242
1456
|
maxBorrowApy: utils.parseAprToApy(maxBorrowApr),
|
|
1243
1457
|
borrowApr: Math.min(borrowApr, maxBorrowApr),
|
|
@@ -1256,17 +1470,21 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
|
1256
1470
|
utilizationRate: utilizationRate.toNumber(),
|
|
1257
1471
|
supplyApr: supplyApr.toNumber(),
|
|
1258
1472
|
supplyApy: utils.parseAprToApy(supplyApr.toNumber()),
|
|
1259
|
-
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()
|
|
1260
1477
|
};
|
|
1261
1478
|
};
|
|
1262
1479
|
var parseOriginMarketCollateralData = (originMarketCollateralData) => {
|
|
1263
1480
|
const divisor = 2 ** 32;
|
|
1264
1481
|
return {
|
|
1265
1482
|
coinType: (0, import_utils.normalizeStructTag)(originMarketCollateralData.type.name),
|
|
1483
|
+
isIsolated: originMarketCollateralData.isIsolated,
|
|
1266
1484
|
collateralFactor: Number(originMarketCollateralData.collateralFactor.value) / divisor,
|
|
1267
1485
|
liquidationFactor: Number(originMarketCollateralData.liquidationFactor.value) / divisor,
|
|
1268
1486
|
liquidationDiscount: Number(originMarketCollateralData.liquidationDiscount.value) / divisor,
|
|
1269
|
-
|
|
1487
|
+
liquidationPenalty: Number(originMarketCollateralData.liquidationPenalty.value) / divisor,
|
|
1270
1488
|
liquidationReserveFactor: Number(originMarketCollateralData.liquidationReserveFactor.value) / divisor,
|
|
1271
1489
|
maxCollateralAmount: Number(originMarketCollateralData.maxCollateralAmount),
|
|
1272
1490
|
totalCollateralAmount: Number(
|
|
@@ -1286,6 +1504,8 @@ var calculateMarketCollateralData = (utils, parsedMarketCollateralData) => {
|
|
|
1286
1504
|
parsedMarketCollateralData.totalCollateralAmount
|
|
1287
1505
|
).shiftedBy(-1 * coinDecimal);
|
|
1288
1506
|
return {
|
|
1507
|
+
coinDecimal,
|
|
1508
|
+
isIsolated: parsedMarketCollateralData.isIsolated,
|
|
1289
1509
|
maxDepositAmount: parsedMarketCollateralData.maxCollateralAmount,
|
|
1290
1510
|
maxDepositCoin: maxCollateralCoin.toNumber(),
|
|
1291
1511
|
depositAmount: parsedMarketCollateralData.totalCollateralAmount,
|
|
@@ -1418,7 +1638,7 @@ var parseOriginBorrowIncentivesPoolPointData = (originBorrowIncentivePoolPointDa
|
|
|
1418
1638
|
createdAt: Number(originBorrowIncentivePoolPointData.created_at)
|
|
1419
1639
|
};
|
|
1420
1640
|
};
|
|
1421
|
-
var parseOriginBorrowIncentivePoolData = (originBorrowIncentivePoolData) => {
|
|
1641
|
+
var parseOriginBorrowIncentivePoolData = (utils, originBorrowIncentivePoolData) => {
|
|
1422
1642
|
return {
|
|
1423
1643
|
poolType: (0, import_utils.normalizeStructTag)(originBorrowIncentivePoolData.pool_type.name),
|
|
1424
1644
|
minStakes: Number(originBorrowIncentivePoolData.min_stakes),
|
|
@@ -1427,9 +1647,9 @@ var parseOriginBorrowIncentivePoolData = (originBorrowIncentivePoolData) => {
|
|
|
1427
1647
|
poolPoints: originBorrowIncentivePoolData.points.reduce(
|
|
1428
1648
|
(acc, point) => {
|
|
1429
1649
|
const parsed = parseOriginBorrowIncentivesPoolPointData(point);
|
|
1430
|
-
const name =
|
|
1431
|
-
parsed.pointType
|
|
1432
|
-
)
|
|
1650
|
+
const name = utils.parseSCoinTypeNameToMarketCoinName(
|
|
1651
|
+
(0, import_utils.parseStructTag)(parsed.pointType).name.toLowerCase()
|
|
1652
|
+
);
|
|
1433
1653
|
acc[name] = parsed;
|
|
1434
1654
|
return acc;
|
|
1435
1655
|
},
|
|
@@ -1616,6 +1836,13 @@ var findClosestUnlockRound = (unlockAtInSecondTimestamp) => {
|
|
|
1616
1836
|
}
|
|
1617
1837
|
return Math.floor(closestTwelveAM.getTime() / 1e3);
|
|
1618
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
|
+
};
|
|
1619
1846
|
|
|
1620
1847
|
// src/utils/tokenBucket.ts
|
|
1621
1848
|
var TokenBucket = class {
|
|
@@ -1628,10 +1855,10 @@ var TokenBucket = class {
|
|
|
1628
1855
|
refill() {
|
|
1629
1856
|
const now = Date.now();
|
|
1630
1857
|
const elapsed = now - this.lastRefill;
|
|
1631
|
-
if (elapsed
|
|
1858
|
+
if (elapsed >= this.interval) {
|
|
1632
1859
|
const tokensToAdd = Math.floor(elapsed / this.interval) * this.tokensPerInterval;
|
|
1633
1860
|
this.tokens = Math.min(this.tokens + tokensToAdd, this.tokensPerInterval);
|
|
1634
|
-
this.lastRefill
|
|
1861
|
+
this.lastRefill += Math.floor(elapsed / this.interval) * this.interval;
|
|
1635
1862
|
}
|
|
1636
1863
|
}
|
|
1637
1864
|
removeTokens(count) {
|
|
@@ -1643,27 +1870,12 @@ var TokenBucket = class {
|
|
|
1643
1870
|
return false;
|
|
1644
1871
|
}
|
|
1645
1872
|
};
|
|
1646
|
-
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) => {
|
|
1647
1874
|
let retries = 0;
|
|
1648
1875
|
const tryRequest = async () => {
|
|
1649
1876
|
if (tokenBucket.removeTokens(1)) {
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
if (result && result.status === 429) {
|
|
1653
|
-
throw new Error("Unexpected status code: 429");
|
|
1654
|
-
}
|
|
1655
|
-
return result;
|
|
1656
|
-
} catch (error) {
|
|
1657
|
-
if (error.message === "Unexpected status code: 429" && retries < maxRetries) {
|
|
1658
|
-
retries++;
|
|
1659
|
-
const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
|
|
1660
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
1661
|
-
return tryRequest();
|
|
1662
|
-
} else {
|
|
1663
|
-
console.error("An error occurred:", error.message);
|
|
1664
|
-
return null;
|
|
1665
|
-
}
|
|
1666
|
-
}
|
|
1877
|
+
const result = await fn();
|
|
1878
|
+
return result;
|
|
1667
1879
|
} else if (retries < maxRetries) {
|
|
1668
1880
|
retries++;
|
|
1669
1881
|
const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
|
|
@@ -1702,6 +1914,22 @@ function withIndexerFallback(method) {
|
|
|
1702
1914
|
};
|
|
1703
1915
|
}
|
|
1704
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
|
+
|
|
1705
1933
|
// src/models/scallopCache.ts
|
|
1706
1934
|
var ScallopCache = class {
|
|
1707
1935
|
constructor(suiKit, walletAddress, cacheOptions, tokenBucket, queryClient) {
|
|
@@ -1736,6 +1964,13 @@ var ScallopCache = class {
|
|
|
1736
1964
|
})
|
|
1737
1965
|
);
|
|
1738
1966
|
}
|
|
1967
|
+
retryFn(errCount, e) {
|
|
1968
|
+
if (errCount === 5)
|
|
1969
|
+
return false;
|
|
1970
|
+
if (e.status === 429)
|
|
1971
|
+
return true;
|
|
1972
|
+
return false;
|
|
1973
|
+
}
|
|
1739
1974
|
/**
|
|
1740
1975
|
* @description Provides cache for inspectTxn of the SuiKit.
|
|
1741
1976
|
* @param QueryInspectTxnParams
|
|
@@ -1748,18 +1983,64 @@ var ScallopCache = class {
|
|
|
1748
1983
|
typeArgs
|
|
1749
1984
|
}) {
|
|
1750
1985
|
const txBlock = new import_sui_kit.SuiTxBlock();
|
|
1751
|
-
|
|
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);
|
|
1752
2015
|
const query = await this.queryClient.fetchQuery({
|
|
2016
|
+
retry: this.retryFn,
|
|
2017
|
+
retryDelay: 1e3,
|
|
1753
2018
|
queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
|
|
1754
2019
|
queryFn: async () => {
|
|
1755
2020
|
return await callWithRateLimit(
|
|
1756
2021
|
this.tokenBucket,
|
|
1757
|
-
() => this.suiKit.inspectTxn(txBlock)
|
|
2022
|
+
async () => await this.suiKit.inspectTxn(txBlock)
|
|
1758
2023
|
);
|
|
1759
2024
|
}
|
|
1760
2025
|
});
|
|
1761
2026
|
return query;
|
|
1762
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
|
+
}
|
|
1763
2044
|
/**
|
|
1764
2045
|
* @description Provides cache for getObject of the SuiKit.
|
|
1765
2046
|
* @param objectId
|
|
@@ -1767,12 +2048,19 @@ var ScallopCache = class {
|
|
|
1767
2048
|
* @returns Promise<SuiObjectResponse>
|
|
1768
2049
|
*/
|
|
1769
2050
|
async queryGetObject(objectId, options) {
|
|
2051
|
+
options = {
|
|
2052
|
+
...options,
|
|
2053
|
+
showOwner: true,
|
|
2054
|
+
showContent: true
|
|
2055
|
+
};
|
|
1770
2056
|
return this.queryClient.fetchQuery({
|
|
1771
|
-
|
|
2057
|
+
retry: this.retryFn,
|
|
2058
|
+
retryDelay: 1e3,
|
|
2059
|
+
queryKey: queryKeys.rpc.getObject(objectId, options),
|
|
1772
2060
|
queryFn: async () => {
|
|
1773
2061
|
return await callWithRateLimit(
|
|
1774
2062
|
this.tokenBucket,
|
|
1775
|
-
() => this.client.getObject({
|
|
2063
|
+
async () => await this.client.getObject({
|
|
1776
2064
|
id: objectId,
|
|
1777
2065
|
options
|
|
1778
2066
|
})
|
|
@@ -1791,16 +2079,36 @@ var ScallopCache = class {
|
|
|
1791
2079
|
if (objectIds.length === 0)
|
|
1792
2080
|
return [];
|
|
1793
2081
|
return this.queryClient.fetchQuery({
|
|
2082
|
+
retry: this.retryFn,
|
|
2083
|
+
retryDelay: 1e3,
|
|
1794
2084
|
queryKey: queryKeys.rpc.getObjects(
|
|
1795
2085
|
objectIds,
|
|
1796
2086
|
this.walletAddress,
|
|
1797
2087
|
options
|
|
1798
2088
|
),
|
|
1799
2089
|
queryFn: async () => {
|
|
1800
|
-
|
|
2090
|
+
const results = await callWithRateLimit(
|
|
1801
2091
|
this.tokenBucket,
|
|
1802
|
-
() => this.suiKit.getObjects(objectIds, options)
|
|
2092
|
+
async () => await this.suiKit.getObjects(objectIds, options)
|
|
1803
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;
|
|
1804
2112
|
}
|
|
1805
2113
|
});
|
|
1806
2114
|
}
|
|
@@ -1811,44 +2119,94 @@ var ScallopCache = class {
|
|
|
1811
2119
|
*/
|
|
1812
2120
|
async queryGetOwnedObjects(input) {
|
|
1813
2121
|
return this.queryClient.fetchQuery({
|
|
2122
|
+
retry: this.retryFn,
|
|
2123
|
+
retryDelay: 1e3,
|
|
1814
2124
|
queryKey: queryKeys.rpc.getOwnedObjects(input),
|
|
1815
2125
|
queryFn: async () => {
|
|
1816
|
-
|
|
2126
|
+
const results = await callWithRateLimit(
|
|
1817
2127
|
this.tokenBucket,
|
|
1818
|
-
() => this.client.getOwnedObjects(input)
|
|
2128
|
+
async () => await this.client.getOwnedObjects(input)
|
|
1819
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;
|
|
1820
2153
|
}
|
|
1821
2154
|
});
|
|
1822
2155
|
}
|
|
1823
2156
|
async queryGetDynamicFields(input) {
|
|
1824
2157
|
return this.queryClient.fetchQuery({
|
|
2158
|
+
retry: this.retryFn,
|
|
2159
|
+
retryDelay: 1e3,
|
|
1825
2160
|
queryKey: queryKeys.rpc.getDynamicFields(input),
|
|
1826
2161
|
queryFn: async () => {
|
|
1827
2162
|
return await callWithRateLimit(
|
|
1828
2163
|
this.tokenBucket,
|
|
1829
|
-
() => this.client.getDynamicFields(input)
|
|
2164
|
+
async () => await this.client.getDynamicFields(input)
|
|
1830
2165
|
);
|
|
1831
2166
|
}
|
|
1832
2167
|
});
|
|
1833
2168
|
}
|
|
1834
2169
|
async queryGetDynamicFieldObject(input) {
|
|
1835
2170
|
return this.queryClient.fetchQuery({
|
|
2171
|
+
retry: this.retryFn,
|
|
2172
|
+
retryDelay: (attemptIndex) => Math.min(1e3 * attemptIndex, 8e3),
|
|
1836
2173
|
queryKey: queryKeys.rpc.getDynamicFieldObject(input),
|
|
1837
2174
|
queryFn: async () => {
|
|
1838
|
-
|
|
2175
|
+
const result = await callWithRateLimit(
|
|
1839
2176
|
this.tokenBucket,
|
|
1840
2177
|
() => this.client.getDynamicFieldObject(input)
|
|
1841
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;
|
|
1842
2198
|
}
|
|
1843
2199
|
});
|
|
1844
2200
|
}
|
|
1845
2201
|
async queryGetAllCoinBalances(owner) {
|
|
1846
2202
|
return this.queryClient.fetchQuery({
|
|
2203
|
+
retry: this.retryFn,
|
|
2204
|
+
retryDelay: 1e3,
|
|
1847
2205
|
queryKey: queryKeys.rpc.getAllCoinBalances(owner),
|
|
1848
2206
|
queryFn: async () => {
|
|
1849
2207
|
const allBalances = await callWithRateLimit(
|
|
1850
2208
|
this.tokenBucket,
|
|
1851
|
-
() => this.client.getAllBalances({ owner })
|
|
2209
|
+
async () => await this.client.getAllBalances({ owner })
|
|
1852
2210
|
);
|
|
1853
2211
|
if (!allBalances)
|
|
1854
2212
|
return {};
|
|
@@ -2536,10 +2894,10 @@ var ScallopAddress = class {
|
|
|
2536
2894
|
};
|
|
2537
2895
|
|
|
2538
2896
|
// src/models/scallopClient.ts
|
|
2539
|
-
var
|
|
2897
|
+
var import_utils26 = require("@mysten/sui/utils");
|
|
2540
2898
|
|
|
2541
2899
|
// src/models/scallopUtils.ts
|
|
2542
|
-
var
|
|
2900
|
+
var import_utils11 = require("@mysten/sui/utils");
|
|
2543
2901
|
var import_pyth_sui_js = require("@pythnetwork/pyth-sui-js");
|
|
2544
2902
|
|
|
2545
2903
|
// src/queries/borrowIncentiveQuery.ts
|
|
@@ -2561,7 +2919,7 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
|
|
|
2561
2919
|
...SUPPORT_BORROW_INCENTIVE_POOLS
|
|
2562
2920
|
], indexer = false, marketPools, coinPrices) => {
|
|
2563
2921
|
const borrowIncentivePools = {};
|
|
2564
|
-
marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices, indexer });
|
|
2922
|
+
marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices, indexer })).pools;
|
|
2565
2923
|
coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools });
|
|
2566
2924
|
if (indexer) {
|
|
2567
2925
|
const borrowIncentivePoolsIndexer = await query.indexer.getBorrowIncentivePools();
|
|
@@ -2586,7 +2944,10 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
|
|
|
2586
2944
|
);
|
|
2587
2945
|
for (const pool of borrowIncentivePoolsQueryData?.incentive_pools ?? []) {
|
|
2588
2946
|
const borrowIncentivePoolPoints = {};
|
|
2589
|
-
const parsedBorrowIncentivePoolData = parseOriginBorrowIncentivePoolData(
|
|
2947
|
+
const parsedBorrowIncentivePoolData = parseOriginBorrowIncentivePoolData(
|
|
2948
|
+
query.utils,
|
|
2949
|
+
pool
|
|
2950
|
+
);
|
|
2590
2951
|
const poolCoinType = (0, import_utils3.normalizeStructTag)(pool.pool_type.name);
|
|
2591
2952
|
const poolCoinName = query.utils.parseCoinNameFromType(
|
|
2592
2953
|
poolCoinType
|
|
@@ -2600,12 +2961,9 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
|
|
|
2600
2961
|
parsedBorrowIncentivePoolData.poolPoints
|
|
2601
2962
|
)) {
|
|
2602
2963
|
const rewardCoinType = poolPoint.pointType;
|
|
2603
|
-
|
|
2964
|
+
const rewardCoinName = query.utils.parseCoinNameFromType(
|
|
2604
2965
|
rewardCoinType
|
|
2605
2966
|
);
|
|
2606
|
-
if (sCoinRawNameToName[rewardCoinName]) {
|
|
2607
|
-
rewardCoinName = sCoinRawNameToName[rewardCoinName];
|
|
2608
|
-
}
|
|
2609
2967
|
const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
|
|
2610
2968
|
const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
|
|
2611
2969
|
const symbol = query.utils.parseSymbol(rewardCoinName);
|
|
@@ -2734,7 +3092,7 @@ var getBindedVeScaKey = async ({
|
|
|
2734
3092
|
};
|
|
2735
3093
|
|
|
2736
3094
|
// src/queries/coreQuery.ts
|
|
2737
|
-
var
|
|
3095
|
+
var import_utils6 = require("@mysten/sui/utils");
|
|
2738
3096
|
var import_bignumber3 = __toESM(require("bignumber.js"));
|
|
2739
3097
|
|
|
2740
3098
|
// src/queries/supplyLimitQuery.ts
|
|
@@ -2794,9 +3152,14 @@ var isolatedAssetZod = import_zod2.z.object({
|
|
|
2794
3152
|
})
|
|
2795
3153
|
});
|
|
2796
3154
|
var isolatedAssetKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
|
|
2797
|
-
var getIsolatedAssets = async (
|
|
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
|
+
}
|
|
2798
3161
|
try {
|
|
2799
|
-
const marketObject = address.get("core.market");
|
|
3162
|
+
const marketObject = query.address.get("core.market");
|
|
2800
3163
|
const isolatedAssets = [];
|
|
2801
3164
|
if (!marketObject)
|
|
2802
3165
|
return isolatedAssets;
|
|
@@ -2806,7 +3169,7 @@ var getIsolatedAssets = async (address) => {
|
|
|
2806
3169
|
return dynamicField.name.type === isolatedAssetKeyType;
|
|
2807
3170
|
};
|
|
2808
3171
|
do {
|
|
2809
|
-
const response = await
|
|
3172
|
+
const response = await query.cache.queryGetDynamicFields({
|
|
2810
3173
|
parentId: marketObject,
|
|
2811
3174
|
cursor: nextCursor,
|
|
2812
3175
|
limit: 10
|
|
@@ -2829,32 +3192,30 @@ var getIsolatedAssets = async (address) => {
|
|
|
2829
3192
|
}
|
|
2830
3193
|
};
|
|
2831
3194
|
var isIsolatedAsset = async (utils, coinName) => {
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
|
|
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
|
|
2841
3213
|
}
|
|
2842
|
-
|
|
2843
|
-
|
|
2844
|
-
|
|
2845
|
-
name: {
|
|
2846
|
-
type: isolatedAssetKeyType,
|
|
2847
|
-
value: coinType
|
|
2848
|
-
}
|
|
2849
|
-
});
|
|
2850
|
-
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
2851
|
-
if (!parsedData.success)
|
|
2852
|
-
return false;
|
|
2853
|
-
return parsedData.data.fields.value;
|
|
2854
|
-
} catch (e) {
|
|
2855
|
-
console.error(e);
|
|
3214
|
+
});
|
|
3215
|
+
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
3216
|
+
if (!parsedData.success)
|
|
2856
3217
|
return false;
|
|
2857
|
-
|
|
3218
|
+
return parsedData.data.fields.value;
|
|
2858
3219
|
};
|
|
2859
3220
|
|
|
2860
3221
|
// src/queries/borrowLimitQuery.ts
|
|
@@ -2897,6 +3258,17 @@ var getBorrowLimit = async (utils, poolName) => {
|
|
|
2897
3258
|
}
|
|
2898
3259
|
};
|
|
2899
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
|
+
|
|
2900
3272
|
// src/queries/coreQuery.ts
|
|
2901
3273
|
var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
2902
3274
|
coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
|
|
@@ -2928,7 +3300,7 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2928
3300
|
const queryResult = await query.cache.queryInspectTxn({ queryTarget, args });
|
|
2929
3301
|
const marketData = queryResult?.events[0]?.parsedJson;
|
|
2930
3302
|
for (const pool of marketData?.pools ?? []) {
|
|
2931
|
-
const coinType = (0,
|
|
3303
|
+
const coinType = (0, import_utils6.normalizeStructTag)(pool.type.name);
|
|
2932
3304
|
const poolCoinName = query.utils.parseCoinNameFromType(coinType);
|
|
2933
3305
|
const coinPrice = coinPrices[poolCoinName] ?? 0;
|
|
2934
3306
|
if (!SUPPORT_POOLS.includes(poolCoinName)) {
|
|
@@ -2953,19 +3325,15 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2953
3325
|
borrowRateOnMidKink: pool.borrowRateOnMidKink,
|
|
2954
3326
|
highKink: pool.highKink,
|
|
2955
3327
|
midKink: pool.midKink,
|
|
2956
|
-
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"
|
|
2957
3332
|
});
|
|
2958
3333
|
const calculatedMarketPoolData = calculateMarketPoolData(
|
|
2959
3334
|
query.utils,
|
|
2960
3335
|
parsedMarketPoolData
|
|
2961
3336
|
);
|
|
2962
|
-
const coinDecimal = query.utils.getCoinDecimal(poolCoinName);
|
|
2963
|
-
const maxSupplyCoin = (0, import_bignumber3.default)(
|
|
2964
|
-
await getSupplyLimit(query.utils, poolCoinName) ?? "0"
|
|
2965
|
-
).shiftedBy(-coinDecimal).toNumber();
|
|
2966
|
-
const maxBorrowCoin = (0, import_bignumber3.default)(
|
|
2967
|
-
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
2968
|
-
).shiftedBy(-coinDecimal).toNumber();
|
|
2969
3337
|
pools[poolCoinName] = {
|
|
2970
3338
|
coinName: poolCoinName,
|
|
2971
3339
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
@@ -2975,7 +3343,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2975
3343
|
query.utils.parseMarketCoinName(poolCoinName)
|
|
2976
3344
|
),
|
|
2977
3345
|
coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
|
|
2978
|
-
coinDecimal,
|
|
2979
3346
|
coinPrice,
|
|
2980
3347
|
highKink: parsedMarketPoolData.highKink,
|
|
2981
3348
|
midKink: parsedMarketPoolData.midKink,
|
|
@@ -2984,15 +3351,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2984
3351
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
2985
3352
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2986
3353
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2987
|
-
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2988
|
-
// isIsolated: false,
|
|
2989
|
-
maxSupplyCoin,
|
|
2990
|
-
maxBorrowCoin,
|
|
2991
3354
|
...calculatedMarketPoolData
|
|
2992
3355
|
};
|
|
2993
3356
|
}
|
|
2994
3357
|
for (const collateral of marketData?.collaterals ?? []) {
|
|
2995
|
-
const coinType = (0,
|
|
3358
|
+
const coinType = (0, import_utils6.normalizeStructTag)(collateral.type.name);
|
|
2996
3359
|
const collateralCoinName = query.utils.parseCoinNameFromType(coinType);
|
|
2997
3360
|
const coinPrice = coinPrices[collateralCoinName] ?? 0;
|
|
2998
3361
|
if (!SUPPORT_COLLATERALS.includes(collateralCoinName)) {
|
|
@@ -3003,10 +3366,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
3003
3366
|
collateralFactor: collateral.collateralFactor,
|
|
3004
3367
|
liquidationFactor: collateral.liquidationFactor,
|
|
3005
3368
|
liquidationDiscount: collateral.liquidationDiscount,
|
|
3006
|
-
|
|
3369
|
+
liquidationPenalty: collateral.liquidationPanelty,
|
|
3007
3370
|
liquidationReserveFactor: collateral.liquidationReserveFactor,
|
|
3008
3371
|
maxCollateralAmount: collateral.maxCollateralAmount,
|
|
3009
|
-
totalCollateralAmount: collateral.totalCollateralAmount
|
|
3372
|
+
totalCollateralAmount: collateral.totalCollateralAmount,
|
|
3373
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
|
|
3010
3374
|
});
|
|
3011
3375
|
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
3012
3376
|
query.utils,
|
|
@@ -3018,14 +3382,12 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
3018
3382
|
coinType,
|
|
3019
3383
|
marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
|
|
3020
3384
|
coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
|
|
3021
|
-
coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
|
|
3022
3385
|
coinPrice,
|
|
3023
3386
|
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
3024
3387
|
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
3025
3388
|
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
3026
|
-
|
|
3389
|
+
liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
|
|
3027
3390
|
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3028
|
-
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
3029
3391
|
...calculatedMarketCollateralData
|
|
3030
3392
|
};
|
|
3031
3393
|
}
|
|
@@ -3035,44 +3397,216 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
3035
3397
|
// data: marketData,
|
|
3036
3398
|
};
|
|
3037
3399
|
};
|
|
3038
|
-
var
|
|
3039
|
-
const
|
|
3040
|
-
|
|
3041
|
-
|
|
3042
|
-
|
|
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) => {
|
|
3043
3501
|
coinPrices = coinPrices ?? await query.utils.getCoinPrices();
|
|
3044
|
-
const
|
|
3502
|
+
const pools = {};
|
|
3503
|
+
const collaterals = {};
|
|
3045
3504
|
if (indexer) {
|
|
3046
|
-
const
|
|
3047
|
-
const
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
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
|
|
3055
3521
|
};
|
|
3056
|
-
Object.values(marketPoolsIndexer).forEach(updateMarketPool);
|
|
3057
|
-
return marketPools;
|
|
3058
3522
|
}
|
|
3523
|
+
const requiredObjects = await queryRequiredMarketObjects(
|
|
3524
|
+
query,
|
|
3525
|
+
poolCoinNames
|
|
3526
|
+
);
|
|
3059
3527
|
await Promise.allSettled(
|
|
3060
3528
|
poolCoinNames.map(async (poolCoinName) => {
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
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);
|
|
3070
3545
|
}
|
|
3071
3546
|
})
|
|
3072
3547
|
);
|
|
3073
|
-
return
|
|
3548
|
+
return {
|
|
3549
|
+
pools,
|
|
3550
|
+
collaterals
|
|
3551
|
+
};
|
|
3074
3552
|
};
|
|
3075
|
-
var
|
|
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
|
+
};
|
|
3608
|
+
};
|
|
3609
|
+
var getMarketPool = async (query, poolCoinName, indexer = false, coinPrice, requiredObjects) => {
|
|
3076
3610
|
coinPrice = coinPrice ?? (await query.utils.getCoinPrices())?.[poolCoinName];
|
|
3077
3611
|
if (indexer) {
|
|
3078
3612
|
const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
|
|
@@ -3083,135 +3617,70 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
3083
3617
|
marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
|
|
3084
3618
|
marketPoolIndexer.coinName
|
|
3085
3619
|
);
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
const coinType = query.utils.parseCoinType(poolCoinName);
|
|
3096
|
-
const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
|
|
3097
|
-
const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3098
|
-
parentId: balanceSheetParentId,
|
|
3099
|
-
name: {
|
|
3100
|
-
type: "0x1::type_name::TypeName",
|
|
3101
|
-
value: {
|
|
3102
|
-
name: coinType.substring(2)
|
|
3103
|
-
}
|
|
3104
|
-
}
|
|
3105
|
-
});
|
|
3106
|
-
const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
|
|
3107
|
-
if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
|
|
3108
|
-
throw new Error(
|
|
3109
|
-
`Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
|
|
3110
|
-
);
|
|
3111
|
-
const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
|
|
3112
|
-
const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
|
|
3113
|
-
const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3114
|
-
parentId: borrowIndexParentId,
|
|
3115
|
-
name: {
|
|
3116
|
-
type: "0x1::type_name::TypeName",
|
|
3117
|
-
value: {
|
|
3118
|
-
name: coinType.substring(2)
|
|
3119
|
-
}
|
|
3120
|
-
}
|
|
3121
|
-
});
|
|
3122
|
-
const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
|
|
3123
|
-
if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
|
|
3124
|
-
throw new Error(
|
|
3125
|
-
`Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
|
|
3126
|
-
);
|
|
3127
|
-
const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
|
|
3128
|
-
const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
|
|
3129
|
-
const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3130
|
-
parentId: interestModelParentId,
|
|
3131
|
-
name: {
|
|
3132
|
-
type: "0x1::type_name::TypeName",
|
|
3133
|
-
value: {
|
|
3134
|
-
name: coinType.substring(2)
|
|
3135
|
-
}
|
|
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
|
+
);
|
|
3136
3629
|
}
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
|
|
3140
|
-
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
const
|
|
3144
|
-
const
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
name: {
|
|
3148
|
-
type: `${BORROW_FEE_PROTOCOL_ID}::market_dynamic_keys::BorrowFeeKey`,
|
|
3149
|
-
value: {
|
|
3150
|
-
type: {
|
|
3151
|
-
name: coinType.substring(2)
|
|
3152
|
-
}
|
|
3153
|
-
}
|
|
3154
|
-
}
|
|
3155
|
-
});
|
|
3156
|
-
const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
|
|
3157
|
-
if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
|
|
3158
|
-
return { value: "0" };
|
|
3159
|
-
return borrowFeeDynamicFieldObject.content.fields.value.fields;
|
|
3160
|
-
};
|
|
3161
|
-
const parsedMarketPoolData = parseOriginMarketPoolData({
|
|
3162
|
-
type: interestModel.type.fields,
|
|
3163
|
-
maxBorrowRate: interestModel.max_borrow_rate.fields,
|
|
3164
|
-
interestRate: borrowIndex.interest_rate.fields,
|
|
3165
|
-
interestRateScale: borrowIndex.interest_rate_scale,
|
|
3166
|
-
borrowIndex: borrowIndex.borrow_index,
|
|
3167
|
-
lastUpdated: borrowIndex.last_updated,
|
|
3168
|
-
cash: balanceSheet.cash,
|
|
3169
|
-
debt: balanceSheet.debt,
|
|
3170
|
-
marketCoinSupply: balanceSheet.market_coin_supply,
|
|
3171
|
-
reserve: balanceSheet.revenue,
|
|
3172
|
-
reserveFactor: interestModel.revenue_factor.fields,
|
|
3173
|
-
borrowWeight: interestModel.borrow_weight.fields,
|
|
3174
|
-
borrowFeeRate: await getBorrowFee(),
|
|
3175
|
-
baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
|
|
3176
|
-
borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
|
|
3177
|
-
borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
|
|
3178
|
-
highKink: interestModel.high_kink.fields,
|
|
3179
|
-
midKink: interestModel.mid_kink.fields,
|
|
3180
|
-
minBorrowAmount: interestModel.min_borrow_amount
|
|
3181
|
-
});
|
|
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
|
+
);
|
|
3182
3640
|
const calculatedMarketPoolData = calculateMarketPoolData(
|
|
3183
3641
|
query.utils,
|
|
3184
3642
|
parsedMarketPoolData
|
|
3185
3643
|
);
|
|
3186
|
-
const
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
const maxBorrowCoin = (0, import_bignumber3.default)(
|
|
3191
|
-
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
3192
|
-
).shiftedBy(-coinDecimal).toNumber();
|
|
3193
|
-
return {
|
|
3644
|
+
const parsedMarketCollateralData = parsedMarketPoolObjects.parsedOriginMarketCollateral ? parseOriginMarketCollateralData(
|
|
3645
|
+
parsedMarketPoolObjects.parsedOriginMarketCollateral
|
|
3646
|
+
) : void 0;
|
|
3647
|
+
const basePoolData = () => ({
|
|
3194
3648
|
coinName: poolCoinName,
|
|
3195
3649
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
3196
|
-
coinType: query.utils.parseCoinType(poolCoinName),
|
|
3197
3650
|
marketCoinType: query.utils.parseMarketCoinType(poolCoinName),
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
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
|
|
3215
3684
|
};
|
|
3216
3685
|
};
|
|
3217
3686
|
var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
|
|
@@ -3306,10 +3775,11 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
|
|
|
3306
3775
|
collateralFactor: riskModel.collateral_factor.fields,
|
|
3307
3776
|
liquidationFactor: riskModel.liquidation_factor.fields,
|
|
3308
3777
|
liquidationDiscount: riskModel.liquidation_discount.fields,
|
|
3309
|
-
|
|
3778
|
+
liquidationPenalty: riskModel.liquidation_penalty.fields,
|
|
3310
3779
|
liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
|
|
3311
3780
|
maxCollateralAmount: riskModel.max_collateral_amount,
|
|
3312
|
-
totalCollateralAmount: collateralStat.amount
|
|
3781
|
+
totalCollateralAmount: collateralStat.amount,
|
|
3782
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
|
|
3313
3783
|
});
|
|
3314
3784
|
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
3315
3785
|
query.utils,
|
|
@@ -3321,14 +3791,12 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
|
|
|
3321
3791
|
coinType: query.utils.parseCoinType(collateralCoinName),
|
|
3322
3792
|
marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
|
|
3323
3793
|
coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
|
|
3324
|
-
coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
|
|
3325
3794
|
coinPrice: coinPrice ?? 0,
|
|
3326
3795
|
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
3327
3796
|
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
3328
3797
|
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
3329
|
-
|
|
3798
|
+
liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
|
|
3330
3799
|
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3331
|
-
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
3332
3800
|
...calculatedMarketCollateralData
|
|
3333
3801
|
};
|
|
3334
3802
|
};
|
|
@@ -3364,14 +3832,26 @@ var getObligations = async ({
|
|
|
3364
3832
|
} while (hasNextPage);
|
|
3365
3833
|
const keyObjects = keyObjectsResponse.filter((ref) => !!ref.data);
|
|
3366
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
|
+
);
|
|
3367
3844
|
await Promise.allSettled(
|
|
3368
|
-
keyObjects.map(async ({ data }) => {
|
|
3845
|
+
keyObjects.map(async ({ data }, idx) => {
|
|
3369
3846
|
const keyId = data?.objectId;
|
|
3370
3847
|
const content = data?.content;
|
|
3371
3848
|
if (keyId && content && "fields" in content) {
|
|
3372
3849
|
const fields = content.fields;
|
|
3373
3850
|
const obligationId = String(fields.ownership.fields.of);
|
|
3374
|
-
const locked = await getObligationLocked(
|
|
3851
|
+
const locked = await getObligationLocked(
|
|
3852
|
+
address.cache,
|
|
3853
|
+
obligationsObjects[idx]
|
|
3854
|
+
);
|
|
3375
3855
|
obligations.push({ id: obligationId, keyId, locked });
|
|
3376
3856
|
}
|
|
3377
3857
|
})
|
|
@@ -3379,14 +3859,12 @@ var getObligations = async ({
|
|
|
3379
3859
|
return obligations;
|
|
3380
3860
|
};
|
|
3381
3861
|
var getObligationLocked = async (cache, obligation) => {
|
|
3382
|
-
const
|
|
3862
|
+
const obligationObjectData = typeof obligation === "string" ? (await cache.queryGetObject(obligation, {
|
|
3383
3863
|
showContent: true
|
|
3384
3864
|
}))?.data : obligation;
|
|
3385
3865
|
let obligationLocked = false;
|
|
3386
|
-
if (
|
|
3387
|
-
obligationLocked = Boolean(
|
|
3388
|
-
obligationObjectResponse.content.fields.lock_key
|
|
3389
|
-
);
|
|
3866
|
+
if (obligationObjectData && obligationObjectData?.content?.dataType === "moveObject" && "lock_key" in obligationObjectData.content.fields) {
|
|
3867
|
+
obligationLocked = Boolean(obligationObjectData.content.fields.lock_key);
|
|
3390
3868
|
}
|
|
3391
3869
|
return obligationLocked;
|
|
3392
3870
|
};
|
|
@@ -3569,10 +4047,10 @@ var getLendings = async (query, poolCoinNames = [...SUPPORT_POOLS], ownerAddress
|
|
|
3569
4047
|
(marketCoinName) => SUPPORT_SPOOLS.includes(marketCoinName)
|
|
3570
4048
|
);
|
|
3571
4049
|
const coinPrices = await query.utils.getCoinPrices();
|
|
3572
|
-
const marketPools = await query.getMarketPools(poolCoinNames, {
|
|
4050
|
+
const marketPools = (await query.getMarketPools(poolCoinNames, {
|
|
3573
4051
|
indexer,
|
|
3574
4052
|
coinPrices
|
|
3575
|
-
});
|
|
4053
|
+
})).pools;
|
|
3576
4054
|
const spools = await query.getSpools(stakeMarketCoinNames, {
|
|
3577
4055
|
indexer,
|
|
3578
4056
|
marketPools,
|
|
@@ -3740,8 +4218,10 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
|
|
|
3740
4218
|
return lending;
|
|
3741
4219
|
};
|
|
3742
4220
|
var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
|
|
3743
|
-
const
|
|
3744
|
-
const
|
|
4221
|
+
const market = await query.queryMarket({ indexer });
|
|
4222
|
+
const coinPrices = await query.getAllCoinPrices({
|
|
4223
|
+
marketPools: market.pools
|
|
4224
|
+
});
|
|
3745
4225
|
const [coinAmounts, obligations] = await Promise.all([
|
|
3746
4226
|
query.getCoinAmounts(void 0, ownerAddress),
|
|
3747
4227
|
query.getObligations(ownerAddress)
|
|
@@ -3763,17 +4243,21 @@ var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
|
|
|
3763
4243
|
return obligationAccounts;
|
|
3764
4244
|
};
|
|
3765
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
|
+
);
|
|
3766
4249
|
const collateralAssetCoinNames = [
|
|
3767
4250
|
...SUPPORT_COLLATERALS
|
|
3768
4251
|
];
|
|
3769
|
-
market = market ?? await query.
|
|
4252
|
+
market = market ?? await query.getMarketPools(void 0, { indexer });
|
|
3770
4253
|
coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools: market.pools });
|
|
3771
|
-
coinAmounts = coinAmounts
|
|
4254
|
+
coinAmounts = coinAmounts ?? await query.getCoinAmounts(coinNames, ownerAddress);
|
|
3772
4255
|
const [obligationQuery, borrowIncentivePools, borrowIncentiveAccounts] = await Promise.all([
|
|
3773
4256
|
query.queryObligation(obligationId),
|
|
3774
4257
|
query.getBorrowIncentivePools(void 0, {
|
|
3775
4258
|
coinPrices,
|
|
3776
|
-
indexer
|
|
4259
|
+
indexer,
|
|
4260
|
+
marketPools: market.pools
|
|
3777
4261
|
}),
|
|
3778
4262
|
query.getBorrowIncentiveAccounts(obligationId)
|
|
3779
4263
|
]);
|
|
@@ -3911,7 +4395,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
|
|
|
3911
4395
|
const rewards = [];
|
|
3912
4396
|
Object.entries(borrowIncentiveAccount.pointList).forEach(
|
|
3913
4397
|
([key, accountPoint]) => {
|
|
3914
|
-
const poolPoint = borrowIncentivePool.points[key];
|
|
4398
|
+
const poolPoint = borrowIncentivePool.points[query.utils.parseSCoinTypeNameToMarketCoinName(key)];
|
|
3915
4399
|
if (accountPoint && poolPoint) {
|
|
3916
4400
|
let availableClaimAmount = (0, import_bignumber5.default)(0);
|
|
3917
4401
|
let availableClaimCoin = (0, import_bignumber5.default)(0);
|
|
@@ -4056,7 +4540,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
|
|
|
4056
4540
|
return obligationAccount;
|
|
4057
4541
|
};
|
|
4058
4542
|
var getTotalValueLocked = async (query, indexer = false) => {
|
|
4059
|
-
const market = await query.
|
|
4543
|
+
const market = await query.getMarketPools(void 0, { indexer });
|
|
4060
4544
|
let supplyValue = (0, import_bignumber5.default)(0);
|
|
4061
4545
|
let borrowValue = (0, import_bignumber5.default)(0);
|
|
4062
4546
|
if (indexer) {
|
|
@@ -4177,7 +4661,7 @@ var getPythPrices = async ({
|
|
|
4177
4661
|
};
|
|
4178
4662
|
var getAllCoinPrices = async (query, marketPools, coinPrices) => {
|
|
4179
4663
|
coinPrices = coinPrices ?? await query.utils.getCoinPrices();
|
|
4180
|
-
marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices });
|
|
4664
|
+
marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices })).pools;
|
|
4181
4665
|
if (!marketPools) {
|
|
4182
4666
|
throw new Error(`Failed to fetch market pool for getAllCoinPrices`);
|
|
4183
4667
|
}
|
|
@@ -4302,13 +4786,81 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
|
|
|
4302
4786
|
};
|
|
4303
4787
|
|
|
4304
4788
|
// src/queries/spoolQuery.ts
|
|
4305
|
-
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
|
+
};
|
|
4306
4858
|
var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexer = false, marketPools, coinPrices) => {
|
|
4307
4859
|
const stakeCoinNames = stakeMarketCoinNames.map(
|
|
4308
4860
|
(stakeMarketCoinName) => query.utils.parseCoinName(stakeMarketCoinName)
|
|
4309
4861
|
);
|
|
4310
|
-
|
|
4311
|
-
|
|
4862
|
+
marketPools = marketPools ?? (await query.getMarketPools(stakeCoinNames, { indexer })).pools;
|
|
4863
|
+
coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools }) ?? {};
|
|
4312
4864
|
if (!marketPools)
|
|
4313
4865
|
throw new Error(`Fail to fetch marketPools for ${stakeCoinNames}`);
|
|
4314
4866
|
const spools = {};
|
|
@@ -4323,126 +4875,93 @@ var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexe
|
|
|
4323
4875
|
const rewardCoinName = query.utils.getSpoolRewardCoinName(
|
|
4324
4876
|
spool.marketCoinName
|
|
4325
4877
|
);
|
|
4326
|
-
const marketPool = marketPools[coinName];
|
|
4327
4878
|
spool.coinPrice = coinPrices[coinName] ?? spool.coinPrice;
|
|
4328
|
-
spool.marketCoinPrice = coinPrices[
|
|
4879
|
+
spool.marketCoinPrice = coinPrices[spool.marketCoinName] ?? spool.marketCoinPrice;
|
|
4329
4880
|
spool.rewardCoinPrice = coinPrices[rewardCoinName] ?? spool.rewardCoinPrice;
|
|
4330
4881
|
spools[spool.marketCoinName] = spool;
|
|
4331
4882
|
};
|
|
4332
4883
|
Object.values(spoolsIndexer).forEach(updateSpools);
|
|
4333
4884
|
return spools;
|
|
4334
4885
|
}
|
|
4335
|
-
|
|
4336
|
-
|
|
4337
|
-
|
|
4338
|
-
|
|
4339
|
-
|
|
4340
|
-
|
|
4341
|
-
|
|
4342
|
-
|
|
4343
|
-
|
|
4344
|
-
|
|
4345
|
-
|
|
4346
|
-
|
|
4347
|
-
|
|
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
|
+
);
|
|
4348
4909
|
return spools;
|
|
4349
4910
|
};
|
|
4350
|
-
var getSpool = async (query, marketCoinName, indexer = false,
|
|
4911
|
+
var getSpool = async (query, marketCoinName, indexer = false, coinPrices, requiredObjects) => {
|
|
4351
4912
|
const coinName = query.utils.parseCoinName(marketCoinName);
|
|
4352
|
-
|
|
4353
|
-
if (!marketPool) {
|
|
4354
|
-
throw new Error(`Failed to fetch marketPool for ${marketCoinName}`);
|
|
4355
|
-
}
|
|
4356
|
-
const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
|
|
4357
|
-
const rewardPoolId = query.address.get(
|
|
4358
|
-
`spool.pools.${marketCoinName}.rewardPoolId`
|
|
4359
|
-
);
|
|
4360
|
-
let spool = void 0;
|
|
4361
|
-
coinPrices = coinPrices || await query.utils.getCoinPrices();
|
|
4913
|
+
coinPrices = coinPrices || await query.getAllCoinPrices();
|
|
4362
4914
|
if (indexer) {
|
|
4363
4915
|
const spoolIndexer = await query.indexer.getSpool(marketCoinName);
|
|
4364
4916
|
const coinName2 = query.utils.parseCoinName(marketCoinName);
|
|
4365
4917
|
const rewardCoinName2 = query.utils.getSpoolRewardCoinName(marketCoinName);
|
|
4366
|
-
spoolIndexer.coinPrice = coinPrices?.[coinName2]
|
|
4367
|
-
spoolIndexer.marketCoinPrice =
|
|
4368
|
-
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;
|
|
4369
4921
|
return spoolIndexer;
|
|
4370
4922
|
}
|
|
4371
|
-
|
|
4372
|
-
[poolId, rewardPoolId],
|
|
4373
|
-
{
|
|
4374
|
-
showContent: true
|
|
4375
|
-
}
|
|
4376
|
-
);
|
|
4377
|
-
if (!(spoolObjectResponse[0] && spoolObjectResponse[1])) {
|
|
4378
|
-
throw new Error("Fail to fetch spoolObjectResponse!");
|
|
4379
|
-
}
|
|
4923
|
+
requiredObjects ?? (requiredObjects = (await queryRequiredSpoolObjects(query, [coinName]))[coinName]);
|
|
4380
4924
|
const rewardCoinName = query.utils.getSpoolRewardCoinName(marketCoinName);
|
|
4381
4925
|
coinPrices = coinPrices || await query.utils.getCoinPrices();
|
|
4382
|
-
const
|
|
4383
|
-
const
|
|
4384
|
-
|
|
4385
|
-
|
|
4386
|
-
|
|
4387
|
-
|
|
4388
|
-
|
|
4389
|
-
|
|
4390
|
-
|
|
4391
|
-
|
|
4392
|
-
|
|
4393
|
-
|
|
4394
|
-
|
|
4395
|
-
|
|
4396
|
-
|
|
4397
|
-
|
|
4398
|
-
|
|
4399
|
-
|
|
4400
|
-
|
|
4401
|
-
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
)
|
|
4405
|
-
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
|
|
4409
|
-
|
|
4410
|
-
|
|
4411
|
-
|
|
4412
|
-
|
|
4413
|
-
|
|
4414
|
-
|
|
4415
|
-
|
|
4416
|
-
|
|
4417
|
-
|
|
4418
|
-
|
|
4419
|
-
|
|
4420
|
-
|
|
4421
|
-
rewardCoinDecimal
|
|
4422
|
-
);
|
|
4423
|
-
spool = {
|
|
4424
|
-
marketCoinName,
|
|
4425
|
-
symbol: query.utils.parseSymbol(marketCoinName),
|
|
4426
|
-
coinType: query.utils.parseCoinType(coinName),
|
|
4427
|
-
marketCoinType: query.utils.parseMarketCoinType(coinName),
|
|
4428
|
-
rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
|
|
4429
|
-
sCoinType: marketPool.sCoinType,
|
|
4430
|
-
coinDecimal: query.utils.getCoinDecimal(coinName),
|
|
4431
|
-
rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
|
|
4432
|
-
coinPrice: coinPrices?.[coinName] ?? 0,
|
|
4433
|
-
marketCoinPrice,
|
|
4434
|
-
rewardCoinPrice,
|
|
4435
|
-
maxPoint: parsedSpoolData.maxPoint,
|
|
4436
|
-
distributedPoint: parsedSpoolData.distributedPoint,
|
|
4437
|
-
maxStake: parsedSpoolData.maxStake,
|
|
4438
|
-
...calculatedSpoolData,
|
|
4439
|
-
exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
|
|
4440
|
-
exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
|
|
4441
|
-
...calculatedRewardPoolData
|
|
4442
|
-
};
|
|
4443
|
-
}
|
|
4444
|
-
}
|
|
4445
|
-
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
|
+
};
|
|
4446
4965
|
};
|
|
4447
4966
|
var getStakeAccounts = async ({
|
|
4448
4967
|
utils
|
|
@@ -4519,14 +5038,14 @@ var getStakeAccounts = async ({
|
|
|
4519
5038
|
svsui: stakeAccounts.svsui,
|
|
4520
5039
|
susdc: stakeAccounts.susdc
|
|
4521
5040
|
};
|
|
4522
|
-
const normalizedType = (0,
|
|
5041
|
+
const normalizedType = (0, import_utils9.normalizeStructTag)(type);
|
|
4523
5042
|
const stakeAccountArray = stakeMarketCoinTypeMap[reversedStakeMarketCoinTypes[normalizedType]];
|
|
4524
5043
|
if (stakeAccountArray) {
|
|
4525
5044
|
stakeAccountArray.push({
|
|
4526
5045
|
id,
|
|
4527
5046
|
type: normalizedType,
|
|
4528
5047
|
stakePoolId,
|
|
4529
|
-
stakeType: (0,
|
|
5048
|
+
stakeType: (0, import_utils9.normalizeStructTag)(stakeType),
|
|
4530
5049
|
staked,
|
|
4531
5050
|
index,
|
|
4532
5051
|
points,
|
|
@@ -4564,13 +5083,13 @@ var getStakePool = async ({
|
|
|
4564
5083
|
const lastUpdate = Number(fields.last_update);
|
|
4565
5084
|
stakePool = {
|
|
4566
5085
|
id,
|
|
4567
|
-
type: (0,
|
|
5086
|
+
type: (0, import_utils9.normalizeStructTag)(type),
|
|
4568
5087
|
maxPoint,
|
|
4569
5088
|
distributedPoint,
|
|
4570
5089
|
pointPerPeriod,
|
|
4571
5090
|
period,
|
|
4572
5091
|
maxStake,
|
|
4573
|
-
stakeType: (0,
|
|
5092
|
+
stakeType: (0, import_utils9.normalizeStructTag)(stakeType),
|
|
4574
5093
|
totalStaked,
|
|
4575
5094
|
index,
|
|
4576
5095
|
createdAt,
|
|
@@ -4609,7 +5128,7 @@ var getStakeRewardPool = async ({
|
|
|
4609
5128
|
const claimedRewards = Number(rewardPoolFields.claimed_rewards);
|
|
4610
5129
|
stakeRewardPool = {
|
|
4611
5130
|
id,
|
|
4612
|
-
type: (0,
|
|
5131
|
+
type: (0, import_utils9.normalizeStructTag)(type),
|
|
4613
5132
|
stakePoolId,
|
|
4614
5133
|
ratioNumerator,
|
|
4615
5134
|
ratioDenominator,
|
|
@@ -4792,6 +5311,105 @@ var getVeScaTreasuryInfo = async (utils) => {
|
|
|
4792
5311
|
};
|
|
4793
5312
|
};
|
|
4794
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
|
+
|
|
4795
5413
|
// src/models/suiKit.ts
|
|
4796
5414
|
var import_sui_kit4 = require("@scallop-io/sui-kit");
|
|
4797
5415
|
var newSuiKit = (params) => {
|
|
@@ -4894,7 +5512,7 @@ var ScallopUtils = class {
|
|
|
4894
5512
|
throw Error(`Coin ${coinName} is not supported`);
|
|
4895
5513
|
}
|
|
4896
5514
|
if (coinName === "sui")
|
|
4897
|
-
return (0,
|
|
5515
|
+
return (0, import_utils11.normalizeStructTag)(`${coinPackageId}::sui::SUI`);
|
|
4898
5516
|
const wormHolePackageIds = [
|
|
4899
5517
|
this.address.get("core.coins.wusdc.id") ?? wormholeCoinIds.wusdc,
|
|
4900
5518
|
this.address.get("core.coins.wusdt.id") ?? wormholeCoinIds.wusdt,
|
|
@@ -4943,13 +5561,14 @@ var ScallopUtils = class {
|
|
|
4943
5561
|
}
|
|
4944
5562
|
}
|
|
4945
5563
|
/**
|
|
4946
|
-
* Convert sCoin name to coin name.
|
|
5564
|
+
* Convert sCoin name to market coin name.
|
|
4947
5565
|
* This function will parse new sCoin name `scallop_...` to its old market coin name which is shorter
|
|
4948
5566
|
* e.g: `scallop_sui -> ssui
|
|
5567
|
+
* if no `scallop_...` is encountered, return coinName
|
|
4949
5568
|
* @return sCoin name
|
|
4950
5569
|
*/
|
|
4951
|
-
|
|
4952
|
-
return sCoinRawNameToName[coinName];
|
|
5570
|
+
parseSCoinTypeNameToMarketCoinName(coinName) {
|
|
5571
|
+
return sCoinRawNameToName[coinName] ?? coinName;
|
|
4953
5572
|
}
|
|
4954
5573
|
/**
|
|
4955
5574
|
* Convert sCoin name into sCoin type
|
|
@@ -4997,7 +5616,10 @@ var ScallopUtils = class {
|
|
|
4997
5616
|
return `${protocolObjectId}::reserve::MarketCoin<${coinType}>`;
|
|
4998
5617
|
}
|
|
4999
5618
|
parseCoinNameFromType(coinType) {
|
|
5000
|
-
coinType = (0,
|
|
5619
|
+
coinType = (0, import_utils11.normalizeStructTag)(coinType);
|
|
5620
|
+
if (sCoinTypeToName[coinType]) {
|
|
5621
|
+
return sCoinTypeToName[coinType];
|
|
5622
|
+
}
|
|
5001
5623
|
const coinTypeRegex = new RegExp(`((0x[^:]+::[^:]+::[^<>]+))(?![^<>]*<)`);
|
|
5002
5624
|
const coinTypeMatch = coinType.match(coinTypeRegex);
|
|
5003
5625
|
const isMarketCoinType = coinType.includes("reserve::MarketCoin");
|
|
@@ -5078,7 +5700,7 @@ var ScallopUtils = class {
|
|
|
5078
5700
|
* @param coinType - The coin type, default is 0x2::SUI::SUI.
|
|
5079
5701
|
* @return The selected transaction coin arguments.
|
|
5080
5702
|
*/
|
|
5081
|
-
async selectCoins(amount, coinType =
|
|
5703
|
+
async selectCoins(amount, coinType = import_utils11.SUI_TYPE_ARG, ownerAddress) {
|
|
5082
5704
|
ownerAddress = ownerAddress ?? this.suiKit.currentAddress();
|
|
5083
5705
|
const coins = await this.suiKit.suiInteractor.selectCoins(
|
|
5084
5706
|
ownerAddress,
|
|
@@ -5167,7 +5789,7 @@ var ScallopUtils = class {
|
|
|
5167
5789
|
);
|
|
5168
5790
|
const priceIds = priceIdPairs.map(([_2, priceId]) => priceId);
|
|
5169
5791
|
const pythConnection = new import_pyth_sui_js.SuiPriceServiceConnection(endpoint, {
|
|
5170
|
-
timeout:
|
|
5792
|
+
timeout: 4e3
|
|
5171
5793
|
});
|
|
5172
5794
|
try {
|
|
5173
5795
|
const feeds = await this.cache.queryClient.fetchQuery({
|
|
@@ -5276,15 +5898,15 @@ var ScallopUtils = class {
|
|
|
5276
5898
|
};
|
|
5277
5899
|
|
|
5278
5900
|
// src/models/scallopBuilder.ts
|
|
5279
|
-
var
|
|
5901
|
+
var import_utils25 = require("@mysten/sui/utils");
|
|
5280
5902
|
|
|
5281
5903
|
// src/builders/coreBuilder.ts
|
|
5282
5904
|
var import_transactions = require("@mysten/sui/transactions");
|
|
5283
|
-
var
|
|
5905
|
+
var import_utils14 = require("@mysten/sui/utils");
|
|
5284
5906
|
var import_sui_kit5 = require("@scallop-io/sui-kit");
|
|
5285
5907
|
|
|
5286
5908
|
// src/builders/oracle.ts
|
|
5287
|
-
var
|
|
5909
|
+
var import_utils13 = require("@mysten/sui/utils");
|
|
5288
5910
|
var import_pyth_sui_js2 = require("@pythnetwork/pyth-sui-js");
|
|
5289
5911
|
var updateOracles = async (builder, txBlock, assetCoinNames, options = { usePythPullModel: true }) => {
|
|
5290
5912
|
const usePythPullModel = builder.params.usePythPullModel ?? options.usePythPullModel;
|
|
@@ -5400,27 +6022,27 @@ var priceUpdateRequest = (txBlock, packageId, xOracleId, coinType) => {
|
|
|
5400
6022
|
var confirmPriceUpdateRequest = (txBlock, packageId, xOracleId, request, coinType) => {
|
|
5401
6023
|
const target = `${packageId}::x_oracle::confirm_price_update_request`;
|
|
5402
6024
|
const typeArgs = [coinType];
|
|
5403
|
-
txBlock.moveCall(target, [xOracleId, request,
|
|
6025
|
+
txBlock.moveCall(target, [xOracleId, request, import_utils13.SUI_CLOCK_OBJECT_ID], typeArgs);
|
|
5404
6026
|
return txBlock;
|
|
5405
6027
|
};
|
|
5406
6028
|
var updateSupraPrice = (txBlock, packageId, request, holderId, registryId, coinType) => {
|
|
5407
6029
|
txBlock.moveCall(
|
|
5408
6030
|
`${packageId}::rule::set_price`,
|
|
5409
|
-
[request, holderId, registryId,
|
|
6031
|
+
[request, holderId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
|
|
5410
6032
|
[coinType]
|
|
5411
6033
|
);
|
|
5412
6034
|
};
|
|
5413
6035
|
var updateSwitchboardPrice = (txBlock, packageId, request, aggregatorId, registryId, coinType) => {
|
|
5414
6036
|
txBlock.moveCall(
|
|
5415
6037
|
`${packageId}::rule::set_price`,
|
|
5416
|
-
[request, aggregatorId, registryId,
|
|
6038
|
+
[request, aggregatorId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
|
|
5417
6039
|
[coinType]
|
|
5418
6040
|
);
|
|
5419
6041
|
};
|
|
5420
6042
|
var updatePythPrice = (txBlock, packageId, request, stateId, feedObjectId, registryId, coinType) => {
|
|
5421
6043
|
txBlock.moveCall(
|
|
5422
6044
|
`${packageId}::rule::set_price`,
|
|
5423
|
-
[request, stateId, feedObjectId, registryId,
|
|
6045
|
+
[request, stateId, feedObjectId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
|
|
5424
6046
|
[coinType]
|
|
5425
6047
|
);
|
|
5426
6048
|
};
|
|
@@ -5456,32 +6078,41 @@ var generateCoreNormalMethod = ({
|
|
|
5456
6078
|
const referralPkgId = builder.address.get("referral.id");
|
|
5457
6079
|
const referralWitnessType = `${referralPkgId}::scallop_referral_program::REFERRAL_WITNESS`;
|
|
5458
6080
|
return {
|
|
5459
|
-
openObligation: () => {
|
|
5460
|
-
const [obligation, obligationKey, obligationHotPotato] =
|
|
6081
|
+
openObligation: async () => {
|
|
6082
|
+
const [obligation, obligationKey, obligationHotPotato] = await builder.moveCall(
|
|
6083
|
+
txBlock,
|
|
5461
6084
|
`${coreIds.protocolPkg}::open_obligation::open_obligation`,
|
|
5462
6085
|
[coreIds.version]
|
|
5463
6086
|
);
|
|
5464
6087
|
return [obligation, obligationKey, obligationHotPotato];
|
|
5465
6088
|
},
|
|
5466
|
-
returnObligation: (obligation, obligationHotPotato) =>
|
|
5467
|
-
|
|
5468
|
-
|
|
5469
|
-
|
|
5470
|
-
|
|
5471
|
-
|
|
5472
|
-
|
|
5473
|
-
)
|
|
5474
|
-
|
|
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) => {
|
|
5475
6104
|
const coinType = builder.utils.parseCoinType(collateralCoinName);
|
|
5476
|
-
|
|
6105
|
+
await builder.moveCall(
|
|
6106
|
+
txBlock,
|
|
5477
6107
|
`${coreIds.protocolPkg}::deposit_collateral::deposit_collateral`,
|
|
5478
6108
|
[coreIds.version, obligation, coreIds.market, coin],
|
|
5479
6109
|
[coinType]
|
|
5480
6110
|
);
|
|
5481
6111
|
},
|
|
5482
|
-
takeCollateral: (obligation, obligationKey, amount, collateralCoinName) => {
|
|
6112
|
+
takeCollateral: async (obligation, obligationKey, amount, collateralCoinName) => {
|
|
5483
6113
|
const coinType = builder.utils.parseCoinType(collateralCoinName);
|
|
5484
|
-
return
|
|
6114
|
+
return await builder.moveCall(
|
|
6115
|
+
txBlock,
|
|
5485
6116
|
`${coreIds.protocolPkg}::withdraw_collateral::withdraw_collateral`,
|
|
5486
6117
|
[
|
|
5487
6118
|
coreIds.version,
|
|
@@ -5491,46 +6122,51 @@ var generateCoreNormalMethod = ({
|
|
|
5491
6122
|
coreIds.coinDecimalsRegistry,
|
|
5492
6123
|
txBlock.pure.u64(amount),
|
|
5493
6124
|
coreIds.xOracle,
|
|
5494
|
-
|
|
6125
|
+
import_utils14.SUI_CLOCK_OBJECT_ID
|
|
5495
6126
|
],
|
|
5496
6127
|
[coinType]
|
|
5497
6128
|
);
|
|
5498
6129
|
},
|
|
5499
|
-
deposit: (coin, poolCoinName) => {
|
|
6130
|
+
deposit: async (coin, poolCoinName) => {
|
|
5500
6131
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5501
|
-
return
|
|
6132
|
+
return await builder.moveCall(
|
|
6133
|
+
txBlock,
|
|
5502
6134
|
`${coreIds.protocolPkg}::mint::mint`,
|
|
5503
|
-
[coreIds.version, coreIds.market, coin,
|
|
6135
|
+
[coreIds.version, coreIds.market, coin, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
5504
6136
|
[coinType]
|
|
5505
6137
|
);
|
|
5506
6138
|
},
|
|
5507
|
-
depositEntry: (coin, poolCoinName) => {
|
|
6139
|
+
depositEntry: async (coin, poolCoinName) => {
|
|
5508
6140
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5509
|
-
return
|
|
6141
|
+
return await builder.moveCall(
|
|
6142
|
+
txBlock,
|
|
5510
6143
|
`${coreIds.protocolPkg}::mint::mint_entry`,
|
|
5511
|
-
[coreIds.version, coreIds.market, coin,
|
|
6144
|
+
[coreIds.version, coreIds.market, coin, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
5512
6145
|
[coinType]
|
|
5513
6146
|
);
|
|
5514
6147
|
},
|
|
5515
|
-
withdraw: (marketCoin, poolCoinName) => {
|
|
6148
|
+
withdraw: async (marketCoin, poolCoinName) => {
|
|
5516
6149
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5517
|
-
return
|
|
6150
|
+
return await builder.moveCall(
|
|
6151
|
+
txBlock,
|
|
5518
6152
|
`${coreIds.protocolPkg}::redeem::redeem`,
|
|
5519
|
-
[coreIds.version, coreIds.market, marketCoin,
|
|
6153
|
+
[coreIds.version, coreIds.market, marketCoin, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
5520
6154
|
[coinType]
|
|
5521
6155
|
);
|
|
5522
6156
|
},
|
|
5523
|
-
withdrawEntry: (marketCoin, poolCoinName) => {
|
|
6157
|
+
withdrawEntry: async (marketCoin, poolCoinName) => {
|
|
5524
6158
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5525
|
-
return
|
|
6159
|
+
return await builder.moveCall(
|
|
6160
|
+
txBlock,
|
|
5526
6161
|
`${coreIds.protocolPkg}::redeem::redeem_entry`,
|
|
5527
|
-
[coreIds.version, coreIds.market, marketCoin,
|
|
6162
|
+
[coreIds.version, coreIds.market, marketCoin, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
5528
6163
|
[coinType]
|
|
5529
6164
|
);
|
|
5530
6165
|
},
|
|
5531
|
-
borrow: (obligation, obligationKey, amount, poolCoinName) => {
|
|
6166
|
+
borrow: async (obligation, obligationKey, amount, poolCoinName) => {
|
|
5532
6167
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5533
|
-
return
|
|
6168
|
+
return await builder.moveCall(
|
|
6169
|
+
txBlock,
|
|
5534
6170
|
`${coreIds.protocolPkg}::borrow::borrow`,
|
|
5535
6171
|
[
|
|
5536
6172
|
coreIds.version,
|
|
@@ -5540,14 +6176,15 @@ var generateCoreNormalMethod = ({
|
|
|
5540
6176
|
coreIds.coinDecimalsRegistry,
|
|
5541
6177
|
amount,
|
|
5542
6178
|
coreIds.xOracle,
|
|
5543
|
-
|
|
6179
|
+
import_utils14.SUI_CLOCK_OBJECT_ID
|
|
5544
6180
|
],
|
|
5545
6181
|
[coinType]
|
|
5546
6182
|
);
|
|
5547
6183
|
},
|
|
5548
|
-
borrowWithReferral: (obligation, obligationKey, borrowReferral, amount, poolCoinName) => {
|
|
6184
|
+
borrowWithReferral: async (obligation, obligationKey, borrowReferral, amount, poolCoinName) => {
|
|
5549
6185
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5550
|
-
return
|
|
6186
|
+
return await builder.moveCall(
|
|
6187
|
+
txBlock,
|
|
5551
6188
|
`${coreIds.protocolPkg}::borrow::borrow_with_referral`,
|
|
5552
6189
|
[
|
|
5553
6190
|
coreIds.version,
|
|
@@ -5556,16 +6193,17 @@ var generateCoreNormalMethod = ({
|
|
|
5556
6193
|
coreIds.market,
|
|
5557
6194
|
coreIds.coinDecimalsRegistry,
|
|
5558
6195
|
borrowReferral,
|
|
5559
|
-
txBlock.pure.u64(amount),
|
|
6196
|
+
typeof amount === "number" ? txBlock.pure.u64(amount) : amount,
|
|
5560
6197
|
coreIds.xOracle,
|
|
5561
|
-
|
|
6198
|
+
import_utils14.SUI_CLOCK_OBJECT_ID
|
|
5562
6199
|
],
|
|
5563
6200
|
[coinType, referralWitnessType]
|
|
5564
6201
|
);
|
|
5565
6202
|
},
|
|
5566
|
-
borrowEntry: (obligation, obligationKey, amount, poolCoinName) => {
|
|
6203
|
+
borrowEntry: async (obligation, obligationKey, amount, poolCoinName) => {
|
|
5567
6204
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5568
|
-
return
|
|
6205
|
+
return await builder.moveCall(
|
|
6206
|
+
txBlock,
|
|
5569
6207
|
`${coreIds.protocolPkg}::borrow::borrow_entry`,
|
|
5570
6208
|
[
|
|
5571
6209
|
coreIds.version,
|
|
@@ -5575,36 +6213,39 @@ var generateCoreNormalMethod = ({
|
|
|
5575
6213
|
coreIds.coinDecimalsRegistry,
|
|
5576
6214
|
txBlock.pure.u64(amount),
|
|
5577
6215
|
coreIds.xOracle,
|
|
5578
|
-
|
|
6216
|
+
import_utils14.SUI_CLOCK_OBJECT_ID
|
|
5579
6217
|
],
|
|
5580
6218
|
[coinType]
|
|
5581
6219
|
);
|
|
5582
6220
|
},
|
|
5583
|
-
repay: (obligation, coin, poolCoinName) => {
|
|
6221
|
+
repay: async (obligation, coin, poolCoinName) => {
|
|
5584
6222
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5585
|
-
|
|
6223
|
+
await builder.moveCall(
|
|
6224
|
+
txBlock,
|
|
5586
6225
|
`${coreIds.protocolPkg}::repay::repay`,
|
|
5587
6226
|
[
|
|
5588
6227
|
coreIds.version,
|
|
5589
6228
|
obligation,
|
|
5590
6229
|
coreIds.market,
|
|
5591
6230
|
coin,
|
|
5592
|
-
|
|
6231
|
+
import_utils14.SUI_CLOCK_OBJECT_ID
|
|
5593
6232
|
],
|
|
5594
6233
|
[coinType]
|
|
5595
6234
|
);
|
|
5596
6235
|
},
|
|
5597
|
-
borrowFlashLoan: (amount, poolCoinName) => {
|
|
6236
|
+
borrowFlashLoan: async (amount, poolCoinName) => {
|
|
5598
6237
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5599
|
-
return
|
|
6238
|
+
return await builder.moveCall(
|
|
6239
|
+
txBlock,
|
|
5600
6240
|
`${coreIds.protocolPkg}::flash_loan::borrow_flash_loan`,
|
|
5601
6241
|
[coreIds.version, coreIds.market, amount],
|
|
5602
6242
|
[coinType]
|
|
5603
6243
|
);
|
|
5604
6244
|
},
|
|
5605
|
-
repayFlashLoan: (coin, loan, poolCoinName) => {
|
|
6245
|
+
repayFlashLoan: async (coin, loan, poolCoinName) => {
|
|
5606
6246
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5607
|
-
|
|
6247
|
+
await builder.moveCall(
|
|
6248
|
+
txBlock,
|
|
5608
6249
|
`${coreIds.protocolPkg}::flash_loan::repay_flash_loan`,
|
|
5609
6250
|
[coreIds.version, coreIds.market, coin, loan],
|
|
5610
6251
|
[coinType]
|
|
@@ -5626,7 +6267,7 @@ var generateCoreQuickMethod = ({
|
|
|
5626
6267
|
);
|
|
5627
6268
|
if (collateralCoinName === "sui") {
|
|
5628
6269
|
const [suiCoin] = txBlock.splitSUIFromGas([amount]);
|
|
5629
|
-
txBlock.addCollateral(obligationArg, suiCoin, collateralCoinName);
|
|
6270
|
+
await txBlock.addCollateral(obligationArg, suiCoin, collateralCoinName);
|
|
5630
6271
|
} else {
|
|
5631
6272
|
const { leftCoin, takeCoin } = await builder.selectCoin(
|
|
5632
6273
|
txBlock,
|
|
@@ -5634,7 +6275,11 @@ var generateCoreQuickMethod = ({
|
|
|
5634
6275
|
amount,
|
|
5635
6276
|
sender
|
|
5636
6277
|
);
|
|
5637
|
-
txBlock.addCollateral(
|
|
6278
|
+
await txBlock.addCollateral(
|
|
6279
|
+
obligationArg,
|
|
6280
|
+
takeCoin,
|
|
6281
|
+
collateralCoinName
|
|
6282
|
+
);
|
|
5638
6283
|
txBlock.transferObjects([leftCoin], sender);
|
|
5639
6284
|
}
|
|
5640
6285
|
},
|
|
@@ -5649,7 +6294,7 @@ var generateCoreQuickMethod = ({
|
|
|
5649
6294
|
obligationInfo.obligationId
|
|
5650
6295
|
);
|
|
5651
6296
|
await updateOracles(builder, txBlock, updateCoinNames);
|
|
5652
|
-
return txBlock.takeCollateral(
|
|
6297
|
+
return await txBlock.takeCollateral(
|
|
5653
6298
|
obligationInfo.obligationId,
|
|
5654
6299
|
obligationInfo.obligationKey,
|
|
5655
6300
|
amount,
|
|
@@ -5661,7 +6306,7 @@ var generateCoreQuickMethod = ({
|
|
|
5661
6306
|
let marketCoinDeposit;
|
|
5662
6307
|
if (poolCoinName === "sui") {
|
|
5663
6308
|
const [suiCoin] = txBlock.splitSUIFromGas([amount]);
|
|
5664
|
-
marketCoinDeposit = txBlock.deposit(suiCoin, poolCoinName);
|
|
6309
|
+
marketCoinDeposit = await txBlock.deposit(suiCoin, poolCoinName);
|
|
5665
6310
|
} else {
|
|
5666
6311
|
const { leftCoin, takeCoin } = await builder.selectCoin(
|
|
5667
6312
|
txBlock,
|
|
@@ -5670,9 +6315,9 @@ var generateCoreQuickMethod = ({
|
|
|
5670
6315
|
sender
|
|
5671
6316
|
);
|
|
5672
6317
|
txBlock.transferObjects([leftCoin], sender);
|
|
5673
|
-
marketCoinDeposit = txBlock.deposit(takeCoin, poolCoinName);
|
|
6318
|
+
marketCoinDeposit = await txBlock.deposit(takeCoin, poolCoinName);
|
|
5674
6319
|
}
|
|
5675
|
-
return returnSCoin ? txBlock.mintSCoin(
|
|
6320
|
+
return returnSCoin ? await txBlock.mintSCoin(
|
|
5676
6321
|
builder.utils.parseMarketCoinName(poolCoinName),
|
|
5677
6322
|
marketCoinDeposit
|
|
5678
6323
|
) : marketCoinDeposit;
|
|
@@ -5690,7 +6335,7 @@ var generateCoreQuickMethod = ({
|
|
|
5690
6335
|
totalAmount
|
|
5691
6336
|
} = await builder.selectSCoin(txBlock, sCoinName, amount, sender);
|
|
5692
6337
|
txBlock.transferObjects([leftCoin], sender);
|
|
5693
|
-
const marketCoins2 = txBlock.burnSCoin(sCoinName, sCoins2);
|
|
6338
|
+
const marketCoins2 = await txBlock.burnSCoin(sCoinName, sCoins2);
|
|
5694
6339
|
amount -= totalAmount;
|
|
5695
6340
|
try {
|
|
5696
6341
|
if (amount > 0) {
|
|
@@ -5714,7 +6359,7 @@ var generateCoreQuickMethod = ({
|
|
|
5714
6359
|
sender
|
|
5715
6360
|
);
|
|
5716
6361
|
txBlock.transferObjects([leftCoin], sender);
|
|
5717
|
-
return txBlock.withdraw(walletMarketCoins, poolCoinName);
|
|
6362
|
+
return await txBlock.withdraw(walletMarketCoins, poolCoinName);
|
|
5718
6363
|
}
|
|
5719
6364
|
},
|
|
5720
6365
|
borrowQuick: async (amount, poolCoinName, obligationId, obligationKey) => {
|
|
@@ -5729,7 +6374,7 @@ var generateCoreQuickMethod = ({
|
|
|
5729
6374
|
) ?? [];
|
|
5730
6375
|
const updateCoinNames = [...obligationCoinNames, poolCoinName];
|
|
5731
6376
|
await updateOracles(builder, txBlock, updateCoinNames);
|
|
5732
|
-
return txBlock.borrow(
|
|
6377
|
+
return await txBlock.borrow(
|
|
5733
6378
|
obligationInfo.obligationId,
|
|
5734
6379
|
obligationInfo.obligationKey,
|
|
5735
6380
|
amount,
|
|
@@ -5748,7 +6393,7 @@ var generateCoreQuickMethod = ({
|
|
|
5748
6393
|
) ?? [];
|
|
5749
6394
|
const updateCoinNames = [...obligationCoinNames, poolCoinName];
|
|
5750
6395
|
await updateOracles(builder, txBlock, updateCoinNames);
|
|
5751
|
-
return txBlock.borrowWithReferral(
|
|
6396
|
+
return await txBlock.borrowWithReferral(
|
|
5752
6397
|
obligationInfo.obligationId,
|
|
5753
6398
|
obligationInfo.obligationKey,
|
|
5754
6399
|
borrowReferral,
|
|
@@ -5765,7 +6410,7 @@ var generateCoreQuickMethod = ({
|
|
|
5765
6410
|
);
|
|
5766
6411
|
if (poolCoinName === "sui") {
|
|
5767
6412
|
const [suiCoin] = txBlock.splitSUIFromGas([amount]);
|
|
5768
|
-
return txBlock.repay(
|
|
6413
|
+
return await txBlock.repay(
|
|
5769
6414
|
obligationInfo.obligationId,
|
|
5770
6415
|
suiCoin,
|
|
5771
6416
|
poolCoinName
|
|
@@ -5778,7 +6423,7 @@ var generateCoreQuickMethod = ({
|
|
|
5778
6423
|
sender
|
|
5779
6424
|
);
|
|
5780
6425
|
txBlock.transferObjects([leftCoin], sender);
|
|
5781
|
-
return txBlock.repay(
|
|
6426
|
+
return await txBlock.repay(
|
|
5782
6427
|
obligationInfo.obligationId,
|
|
5783
6428
|
takeCoin,
|
|
5784
6429
|
poolCoinName
|
|
@@ -5786,7 +6431,7 @@ var generateCoreQuickMethod = ({
|
|
|
5786
6431
|
}
|
|
5787
6432
|
},
|
|
5788
6433
|
updateAssetPricesQuick: async (assetCoinNames) => {
|
|
5789
|
-
return updateOracles(builder, txBlock, assetCoinNames);
|
|
6434
|
+
return await updateOracles(builder, txBlock, assetCoinNames);
|
|
5790
6435
|
}
|
|
5791
6436
|
};
|
|
5792
6437
|
};
|
|
@@ -5820,7 +6465,7 @@ var newCoreTxBlock = (builder, initTxBlock) => {
|
|
|
5820
6465
|
|
|
5821
6466
|
// src/builders/spoolBuilder.ts
|
|
5822
6467
|
var import_transactions2 = require("@mysten/sui/transactions");
|
|
5823
|
-
var
|
|
6468
|
+
var import_utils16 = require("@mysten/sui/utils");
|
|
5824
6469
|
var import_sui_kit6 = require("@scallop-io/sui-kit");
|
|
5825
6470
|
var requireStakeAccountIds = async (...params) => {
|
|
5826
6471
|
const [builder, txBlock, stakeMarketCoinName, stakeAccountId] = params;
|
|
@@ -5849,10 +6494,10 @@ var stakeHelper = async (builder, txBlock, stakeAccount, coinName, amount, sende
|
|
|
5849
6494
|
try {
|
|
5850
6495
|
const { takeCoin, leftCoin, totalAmount } = isSCoin ? await builder.selectSCoin(txBlock, coinName, amount, sender) : await builder.selectMarketCoin(txBlock, coinName, amount, sender);
|
|
5851
6496
|
if (isSCoin) {
|
|
5852
|
-
const marketCoin = txBlock.burnSCoin(coinName, takeCoin);
|
|
5853
|
-
txBlock.stake(stakeAccount, marketCoin, coinName);
|
|
6497
|
+
const marketCoin = await txBlock.burnSCoin(coinName, takeCoin);
|
|
6498
|
+
await txBlock.stake(stakeAccount, marketCoin, coinName);
|
|
5854
6499
|
} else {
|
|
5855
|
-
txBlock.stake(stakeAccount, takeCoin, coinName);
|
|
6500
|
+
await txBlock.stake(stakeAccount, takeCoin, coinName);
|
|
5856
6501
|
}
|
|
5857
6502
|
txBlock.transferObjects([leftCoin], sender);
|
|
5858
6503
|
return totalAmount;
|
|
@@ -5868,40 +6513,43 @@ var generateSpoolNormalMethod = ({
|
|
|
5868
6513
|
spoolPkg: builder.address.get("spool.id")
|
|
5869
6514
|
};
|
|
5870
6515
|
return {
|
|
5871
|
-
createStakeAccount: (stakeMarketCoinName) => {
|
|
6516
|
+
createStakeAccount: async (stakeMarketCoinName) => {
|
|
5872
6517
|
const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
|
|
5873
6518
|
const stakePoolId = builder.address.get(
|
|
5874
6519
|
`spool.pools.${stakeMarketCoinName}.id`
|
|
5875
6520
|
);
|
|
5876
|
-
return
|
|
6521
|
+
return await builder.moveCall(
|
|
6522
|
+
txBlock,
|
|
5877
6523
|
`${spoolIds.spoolPkg}::user::new_spool_account`,
|
|
5878
|
-
[stakePoolId,
|
|
6524
|
+
[stakePoolId, import_utils16.SUI_CLOCK_OBJECT_ID],
|
|
5879
6525
|
[marketCoinType]
|
|
5880
6526
|
);
|
|
5881
6527
|
},
|
|
5882
|
-
stake: (stakeAccount, coin, stakeMarketCoinName) => {
|
|
6528
|
+
stake: async (stakeAccount, coin, stakeMarketCoinName) => {
|
|
5883
6529
|
const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
|
|
5884
6530
|
const stakePoolId = builder.address.get(
|
|
5885
6531
|
`spool.pools.${stakeMarketCoinName}.id`
|
|
5886
6532
|
);
|
|
5887
|
-
|
|
6533
|
+
await builder.moveCall(
|
|
6534
|
+
txBlock,
|
|
5888
6535
|
`${spoolIds.spoolPkg}::user::stake`,
|
|
5889
|
-
[stakePoolId, stakeAccount, coin,
|
|
6536
|
+
[stakePoolId, stakeAccount, coin, import_utils16.SUI_CLOCK_OBJECT_ID],
|
|
5890
6537
|
[marketCoinType]
|
|
5891
6538
|
);
|
|
5892
6539
|
},
|
|
5893
|
-
unstake: (stakeAccount, amount, stakeMarketCoinName) => {
|
|
6540
|
+
unstake: async (stakeAccount, amount, stakeMarketCoinName) => {
|
|
5894
6541
|
const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
|
|
5895
6542
|
const stakePoolId = builder.address.get(
|
|
5896
6543
|
`spool.pools.${stakeMarketCoinName}.id`
|
|
5897
6544
|
);
|
|
5898
|
-
return
|
|
6545
|
+
return await builder.moveCall(
|
|
6546
|
+
txBlock,
|
|
5899
6547
|
`${spoolIds.spoolPkg}::user::unstake`,
|
|
5900
|
-
[stakePoolId, stakeAccount, amount,
|
|
6548
|
+
[stakePoolId, stakeAccount, amount, import_utils16.SUI_CLOCK_OBJECT_ID],
|
|
5901
6549
|
[marketCoinType]
|
|
5902
6550
|
);
|
|
5903
6551
|
},
|
|
5904
|
-
claim: (stakeAccount, stakeMarketCoinName) => {
|
|
6552
|
+
claim: async (stakeAccount, stakeMarketCoinName) => {
|
|
5905
6553
|
const stakePoolId = builder.address.get(
|
|
5906
6554
|
`spool.pools.${stakeMarketCoinName}.id`
|
|
5907
6555
|
);
|
|
@@ -5911,9 +6559,10 @@ var generateSpoolNormalMethod = ({
|
|
|
5911
6559
|
const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
|
|
5912
6560
|
const rewardCoinName = spoolRewardCoins[stakeMarketCoinName];
|
|
5913
6561
|
const rewardCoinType = builder.utils.parseCoinType(rewardCoinName);
|
|
5914
|
-
return
|
|
6562
|
+
return await builder.moveCall(
|
|
6563
|
+
txBlock,
|
|
5915
6564
|
`${spoolIds.spoolPkg}::user::redeem_rewards`,
|
|
5916
|
-
[stakePoolId, rewardPoolId, stakeAccount,
|
|
6565
|
+
[stakePoolId, rewardPoolId, stakeAccount, import_utils16.SUI_CLOCK_OBJECT_ID],
|
|
5917
6566
|
[marketCoinType, rewardCoinType]
|
|
5918
6567
|
);
|
|
5919
6568
|
}
|
|
@@ -5976,13 +6625,16 @@ var generateSpoolQuickMethod = ({
|
|
|
5976
6625
|
if (account.staked === 0)
|
|
5977
6626
|
continue;
|
|
5978
6627
|
const amountToUnstake = Math.min(amount, account.staked);
|
|
5979
|
-
const marketCoin = txBlock.unstake(
|
|
6628
|
+
const marketCoin = await txBlock.unstake(
|
|
5980
6629
|
account.id,
|
|
5981
6630
|
amountToUnstake,
|
|
5982
6631
|
stakeMarketCoinName
|
|
5983
6632
|
);
|
|
5984
6633
|
if (returnSCoin) {
|
|
5985
|
-
const sCoin = txBlock.mintSCoin(
|
|
6634
|
+
const sCoin = await txBlock.mintSCoin(
|
|
6635
|
+
stakeMarketCoinName,
|
|
6636
|
+
marketCoin
|
|
6637
|
+
);
|
|
5986
6638
|
toTransfer.push(sCoin);
|
|
5987
6639
|
} else {
|
|
5988
6640
|
toTransfer.push(marketCoin);
|
|
@@ -6008,7 +6660,7 @@ var generateSpoolQuickMethod = ({
|
|
|
6008
6660
|
);
|
|
6009
6661
|
const rewardCoins = [];
|
|
6010
6662
|
for (const accountId of stakeAccountIds) {
|
|
6011
|
-
const rewardCoin = txBlock.claim(accountId, stakeMarketCoinName);
|
|
6663
|
+
const rewardCoin = await txBlock.claim(accountId, stakeMarketCoinName);
|
|
6012
6664
|
rewardCoins.push(rewardCoin);
|
|
6013
6665
|
}
|
|
6014
6666
|
return rewardCoins;
|
|
@@ -6045,7 +6697,7 @@ var newSpoolTxBlock = (builder, initTxBlock) => {
|
|
|
6045
6697
|
|
|
6046
6698
|
// src/builders/borrowIncentiveBuilder.ts
|
|
6047
6699
|
var import_transactions3 = require("@mysten/sui/transactions");
|
|
6048
|
-
var
|
|
6700
|
+
var import_utils18 = require("@mysten/sui/utils");
|
|
6049
6701
|
var import_sui_kit7 = require("@scallop-io/sui-kit");
|
|
6050
6702
|
var requireObligationInfo2 = async (...params) => {
|
|
6051
6703
|
const [builder, txBlock, obligationId, obligationKey] = params;
|
|
@@ -6087,8 +6739,9 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6087
6739
|
config: builder.address.get("vesca.config")
|
|
6088
6740
|
};
|
|
6089
6741
|
return {
|
|
6090
|
-
stakeObligation: (obligationId, obligationKey) => {
|
|
6091
|
-
|
|
6742
|
+
stakeObligation: async (obligationId, obligationKey) => {
|
|
6743
|
+
await builder.moveCall(
|
|
6744
|
+
txBlock,
|
|
6092
6745
|
`${borrowIncentiveIds.borrowIncentivePkg}::user::stake`,
|
|
6093
6746
|
[
|
|
6094
6747
|
borrowIncentiveIds.config,
|
|
@@ -6097,12 +6750,13 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6097
6750
|
obligationKey,
|
|
6098
6751
|
obligationId,
|
|
6099
6752
|
borrowIncentiveIds.obligationAccessStore,
|
|
6100
|
-
|
|
6753
|
+
import_utils18.SUI_CLOCK_OBJECT_ID
|
|
6101
6754
|
]
|
|
6102
6755
|
);
|
|
6103
6756
|
},
|
|
6104
|
-
stakeObligationWithVesca: (obligationId, obligationKey, veScaKey) => {
|
|
6105
|
-
|
|
6757
|
+
stakeObligationWithVesca: async (obligationId, obligationKey, veScaKey) => {
|
|
6758
|
+
await builder.moveCall(
|
|
6759
|
+
txBlock,
|
|
6106
6760
|
`${borrowIncentiveIds.borrowIncentivePkg}::user::stake_with_ve_sca`,
|
|
6107
6761
|
[
|
|
6108
6762
|
borrowIncentiveIds.config,
|
|
@@ -6115,13 +6769,14 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6115
6769
|
veScaIds.treasury,
|
|
6116
6770
|
veScaIds.table,
|
|
6117
6771
|
veScaKey,
|
|
6118
|
-
|
|
6772
|
+
import_utils18.SUI_CLOCK_OBJECT_ID
|
|
6119
6773
|
],
|
|
6120
6774
|
[]
|
|
6121
6775
|
);
|
|
6122
6776
|
},
|
|
6123
|
-
unstakeObligation: (obligationId, obligationKey) => {
|
|
6124
|
-
|
|
6777
|
+
unstakeObligation: async (obligationId, obligationKey) => {
|
|
6778
|
+
await builder.moveCall(
|
|
6779
|
+
txBlock,
|
|
6125
6780
|
`${borrowIncentiveIds.borrowIncentivePkg}::user::unstake`,
|
|
6126
6781
|
[
|
|
6127
6782
|
borrowIncentiveIds.config,
|
|
@@ -6129,13 +6784,14 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6129
6784
|
borrowIncentiveIds.incentiveAccounts,
|
|
6130
6785
|
obligationKey,
|
|
6131
6786
|
obligationId,
|
|
6132
|
-
|
|
6787
|
+
import_utils18.SUI_CLOCK_OBJECT_ID
|
|
6133
6788
|
]
|
|
6134
6789
|
);
|
|
6135
6790
|
},
|
|
6136
|
-
claimBorrowIncentive: (obligationId, obligationKey, rewardCoinName) => {
|
|
6791
|
+
claimBorrowIncentive: async (obligationId, obligationKey, rewardCoinName) => {
|
|
6137
6792
|
const rewardType = builder.utils.parseCoinType(rewardCoinName);
|
|
6138
|
-
return
|
|
6793
|
+
return await builder.moveCall(
|
|
6794
|
+
txBlock,
|
|
6139
6795
|
`${borrowIncentiveIds.borrowIncentivePkg}::user::redeem_rewards`,
|
|
6140
6796
|
[
|
|
6141
6797
|
borrowIncentiveIds.config,
|
|
@@ -6143,13 +6799,14 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6143
6799
|
borrowIncentiveIds.incentiveAccounts,
|
|
6144
6800
|
obligationKey,
|
|
6145
6801
|
obligationId,
|
|
6146
|
-
|
|
6802
|
+
import_utils18.SUI_CLOCK_OBJECT_ID
|
|
6147
6803
|
],
|
|
6148
6804
|
[rewardType]
|
|
6149
6805
|
);
|
|
6150
6806
|
},
|
|
6151
|
-
deactivateBoost: (obligation, veScaKey) => {
|
|
6152
|
-
|
|
6807
|
+
deactivateBoost: async (obligation, veScaKey) => {
|
|
6808
|
+
await builder.moveCall(
|
|
6809
|
+
txBlock,
|
|
6153
6810
|
`${borrowIncentiveIds.borrowIncentivePkg}::user::deactivate_boost`,
|
|
6154
6811
|
[
|
|
6155
6812
|
borrowIncentiveIds.config,
|
|
@@ -6157,7 +6814,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6157
6814
|
borrowIncentiveIds.incentiveAccounts,
|
|
6158
6815
|
obligation,
|
|
6159
6816
|
veScaKey,
|
|
6160
|
-
|
|
6817
|
+
import_utils18.SUI_CLOCK_OBJECT_ID
|
|
6161
6818
|
]
|
|
6162
6819
|
);
|
|
6163
6820
|
}
|
|
@@ -6180,7 +6837,7 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
|
|
|
6180
6837
|
(txn) => txn.kind === "MoveCall" && (txn.target === `${OLD_BORROW_INCENTIVE_PROTOCOL_ID}::user::unstake` || txn.target === `${builder.address.get("borrowIncentive.id")}::user::unstake`)
|
|
6181
6838
|
);
|
|
6182
6839
|
if (!obligationLocked || unstakeObligationBeforeStake) {
|
|
6183
|
-
txBlock.stakeObligation(obligationArg, obligationKeyArg);
|
|
6840
|
+
await txBlock.stakeObligation(obligationArg, obligationKeyArg);
|
|
6184
6841
|
}
|
|
6185
6842
|
},
|
|
6186
6843
|
stakeObligationWithVeScaQuick: async (obligation, obligationKey, veScaKey) => {
|
|
@@ -6201,9 +6858,9 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
|
|
|
6201
6858
|
const bindedVeScaKey = await builder.query.getBindedVeScaKey(obligationArg);
|
|
6202
6859
|
const _veScaKey = bindedVeScaKey ?? veScaKey;
|
|
6203
6860
|
if (!_veScaKey) {
|
|
6204
|
-
txBlock.stakeObligation(obligationArg, obligationKeyArg);
|
|
6861
|
+
await txBlock.stakeObligation(obligationArg, obligationKeyArg);
|
|
6205
6862
|
} else {
|
|
6206
|
-
txBlock.stakeObligationWithVesca(
|
|
6863
|
+
await txBlock.stakeObligationWithVesca(
|
|
6207
6864
|
obligationArg,
|
|
6208
6865
|
obligationKeyArg,
|
|
6209
6866
|
_veScaKey
|
|
@@ -6223,7 +6880,7 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
|
|
|
6223
6880
|
obligationKey
|
|
6224
6881
|
);
|
|
6225
6882
|
if (obligationLocked) {
|
|
6226
|
-
txBlock.unstakeObligation(obligationArg, obligationKeyArg);
|
|
6883
|
+
await txBlock.unstakeObligation(obligationArg, obligationKeyArg);
|
|
6227
6884
|
}
|
|
6228
6885
|
},
|
|
6229
6886
|
claimBorrowIncentiveQuick: async (rewardCoinName, obligation, obligationKey) => {
|
|
@@ -6233,7 +6890,7 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
|
|
|
6233
6890
|
obligation,
|
|
6234
6891
|
obligationKey
|
|
6235
6892
|
);
|
|
6236
|
-
return txBlock.claimBorrowIncentive(
|
|
6893
|
+
return await txBlock.claimBorrowIncentive(
|
|
6237
6894
|
obligationArg,
|
|
6238
6895
|
obligationKeyArg,
|
|
6239
6896
|
rewardCoinName
|
|
@@ -6298,8 +6955,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6298
6955
|
config: builder.address.get("vesca.config")
|
|
6299
6956
|
};
|
|
6300
6957
|
return {
|
|
6301
|
-
lockSca: (scaCoin, unlockAtInSecondTimestamp) => {
|
|
6302
|
-
return
|
|
6958
|
+
lockSca: async (scaCoin, unlockAtInSecondTimestamp) => {
|
|
6959
|
+
return await builder.moveCall(
|
|
6960
|
+
txBlock,
|
|
6303
6961
|
`${veScaIds.pkgId}::ve_sca::mint_ve_sca_key`,
|
|
6304
6962
|
[
|
|
6305
6963
|
veScaIds.config,
|
|
@@ -6312,8 +6970,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6312
6970
|
[]
|
|
6313
6971
|
);
|
|
6314
6972
|
},
|
|
6315
|
-
extendLockPeriod: (veScaKey, newUnlockAtInSecondTimestamp) => {
|
|
6316
|
-
|
|
6973
|
+
extendLockPeriod: async (veScaKey, newUnlockAtInSecondTimestamp) => {
|
|
6974
|
+
await builder.moveCall(
|
|
6975
|
+
txBlock,
|
|
6317
6976
|
`${veScaIds.pkgId}::ve_sca::extend_lock_period`,
|
|
6318
6977
|
[
|
|
6319
6978
|
veScaIds.config,
|
|
@@ -6326,8 +6985,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6326
6985
|
[]
|
|
6327
6986
|
);
|
|
6328
6987
|
},
|
|
6329
|
-
extendLockAmount: (veScaKey, scaCoin) => {
|
|
6330
|
-
|
|
6988
|
+
extendLockAmount: async (veScaKey, scaCoin) => {
|
|
6989
|
+
await builder.moveCall(
|
|
6990
|
+
txBlock,
|
|
6331
6991
|
`${veScaIds.pkgId}::ve_sca::lock_more_sca`,
|
|
6332
6992
|
[
|
|
6333
6993
|
veScaIds.config,
|
|
@@ -6340,8 +7000,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6340
7000
|
[]
|
|
6341
7001
|
);
|
|
6342
7002
|
},
|
|
6343
|
-
renewExpiredVeSca: (veScaKey, scaCoin, newUnlockAtInSecondTimestamp) => {
|
|
6344
|
-
|
|
7003
|
+
renewExpiredVeSca: async (veScaKey, scaCoin, newUnlockAtInSecondTimestamp) => {
|
|
7004
|
+
await builder.moveCall(
|
|
7005
|
+
txBlock,
|
|
6345
7006
|
`${veScaIds.pkgId}::ve_sca::renew_expired_ve_sca`,
|
|
6346
7007
|
[
|
|
6347
7008
|
veScaIds.config,
|
|
@@ -6355,8 +7016,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6355
7016
|
[]
|
|
6356
7017
|
);
|
|
6357
7018
|
},
|
|
6358
|
-
redeemSca: (veScaKey) => {
|
|
6359
|
-
return
|
|
7019
|
+
redeemSca: async (veScaKey) => {
|
|
7020
|
+
return await builder.moveCall(
|
|
7021
|
+
txBlock,
|
|
6360
7022
|
`${veScaIds.pkgId}::ve_sca::redeem`,
|
|
6361
7023
|
[
|
|
6362
7024
|
veScaIds.config,
|
|
@@ -6368,8 +7030,9 @@ var generateNormalVeScaMethod = ({
|
|
|
6368
7030
|
[]
|
|
6369
7031
|
);
|
|
6370
7032
|
},
|
|
6371
|
-
mintEmptyVeSca: () => {
|
|
6372
|
-
return
|
|
7033
|
+
mintEmptyVeSca: async () => {
|
|
7034
|
+
return await builder.moveCall(
|
|
7035
|
+
txBlock,
|
|
6373
7036
|
`${veScaIds.pkgId}::ve_sca::mint_ve_sca_placeholder_key`,
|
|
6374
7037
|
[veScaIds.config, veScaIds.table],
|
|
6375
7038
|
[]
|
|
@@ -6507,7 +7170,7 @@ var generateQuickVeScaMethod = ({
|
|
|
6507
7170
|
const veSca = await requireVeSca(builder, txBlock, veScaKey);
|
|
6508
7171
|
checkVesca(veSca?.unlockAt);
|
|
6509
7172
|
if (veSca) {
|
|
6510
|
-
const sca = txBlock.redeemSca(veSca.keyId);
|
|
7173
|
+
const sca = await txBlock.redeemSca(veSca.keyId);
|
|
6511
7174
|
if (transferSca) {
|
|
6512
7175
|
txBlock.transferObjects([sca], sender);
|
|
6513
7176
|
return;
|
|
@@ -6563,8 +7226,9 @@ var generateReferralNormalMethod = ({
|
|
|
6563
7226
|
};
|
|
6564
7227
|
const veScaTable = builder.address.get("vesca.table");
|
|
6565
7228
|
return {
|
|
6566
|
-
bindToReferral: (veScaKeyId) => {
|
|
6567
|
-
|
|
7229
|
+
bindToReferral: async (veScaKeyId) => {
|
|
7230
|
+
await builder.moveCall(
|
|
7231
|
+
txBlock,
|
|
6568
7232
|
`${referralIds.referralPgkId}::referral_bindings::bind_ve_sca_referrer`,
|
|
6569
7233
|
[
|
|
6570
7234
|
referralIds.referralBindings,
|
|
@@ -6575,9 +7239,10 @@ var generateReferralNormalMethod = ({
|
|
|
6575
7239
|
[]
|
|
6576
7240
|
);
|
|
6577
7241
|
},
|
|
6578
|
-
claimReferralTicket: (poolCoinName) => {
|
|
7242
|
+
claimReferralTicket: async (poolCoinName) => {
|
|
6579
7243
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
6580
|
-
return
|
|
7244
|
+
return await builder.moveCall(
|
|
7245
|
+
txBlock,
|
|
6581
7246
|
`${referralIds.referralPgkId}::scallop_referral_program::claim_ve_sca_referral_ticket`,
|
|
6582
7247
|
[
|
|
6583
7248
|
referralIds.version,
|
|
@@ -6590,9 +7255,10 @@ var generateReferralNormalMethod = ({
|
|
|
6590
7255
|
[coinType]
|
|
6591
7256
|
);
|
|
6592
7257
|
},
|
|
6593
|
-
burnReferralTicket: (ticket, poolCoinName) => {
|
|
7258
|
+
burnReferralTicket: async (ticket, poolCoinName) => {
|
|
6594
7259
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
6595
|
-
|
|
7260
|
+
await builder.moveCall(
|
|
7261
|
+
txBlock,
|
|
6596
7262
|
`${referralIds.referralPgkId}::scallop_referral_program::burn_ve_sca_referral_ticket`,
|
|
6597
7263
|
[
|
|
6598
7264
|
referralIds.version,
|
|
@@ -6603,9 +7269,10 @@ var generateReferralNormalMethod = ({
|
|
|
6603
7269
|
[coinType]
|
|
6604
7270
|
);
|
|
6605
7271
|
},
|
|
6606
|
-
claimReferralRevenue: (veScaKey, poolCoinName) => {
|
|
7272
|
+
claimReferralRevenue: async (veScaKey, poolCoinName) => {
|
|
6607
7273
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
6608
|
-
return
|
|
7274
|
+
return await builder.moveCall(
|
|
7275
|
+
txBlock,
|
|
6609
7276
|
`${referralIds.referralPgkId}::referral_revenue_pool::claim_revenue_with_ve_sca_key`,
|
|
6610
7277
|
[
|
|
6611
7278
|
referralIds.version,
|
|
@@ -6628,10 +7295,16 @@ var generateReferralQuickMethod = ({
|
|
|
6628
7295
|
const objToTransfer = [];
|
|
6629
7296
|
for (const coinName of coinNames) {
|
|
6630
7297
|
if (coinName === "sui") {
|
|
6631
|
-
const rewardCoin = txBlock.claimReferralRevenue(
|
|
7298
|
+
const rewardCoin = await txBlock.claimReferralRevenue(
|
|
7299
|
+
veScaKey,
|
|
7300
|
+
coinName
|
|
7301
|
+
);
|
|
6632
7302
|
objToTransfer.push(rewardCoin);
|
|
6633
7303
|
} else {
|
|
6634
|
-
const rewardCoin = txBlock.claimReferralRevenue(
|
|
7304
|
+
const rewardCoin = await txBlock.claimReferralRevenue(
|
|
7305
|
+
veScaKey,
|
|
7306
|
+
coinName
|
|
7307
|
+
);
|
|
6635
7308
|
try {
|
|
6636
7309
|
const coins = await builder.suiKit.suiInteractor.selectCoins(
|
|
6637
7310
|
sender,
|
|
@@ -6691,8 +7364,9 @@ var generateLoyaltyProgramNormalMethod = ({ builder, txBlock }) => {
|
|
|
6691
7364
|
)
|
|
6692
7365
|
};
|
|
6693
7366
|
return {
|
|
6694
|
-
claimLoyaltyRevenue: (veScaKey) => {
|
|
6695
|
-
return
|
|
7367
|
+
claimLoyaltyRevenue: async (veScaKey) => {
|
|
7368
|
+
return await builder.moveCall(
|
|
7369
|
+
txBlock,
|
|
6696
7370
|
`${loyaltyProgramIds.loyaltyProgramPkgId}::reward_pool::redeem_reward`,
|
|
6697
7371
|
[loyaltyProgramIds.rewardPool, veScaKey]
|
|
6698
7372
|
);
|
|
@@ -6709,7 +7383,7 @@ var generateLoyaltyProgramQuickMethod = ({
|
|
|
6709
7383
|
const sender = requireSender(txBlock);
|
|
6710
7384
|
if (!veScaKey)
|
|
6711
7385
|
throw new Error(`No veScaKey found for user ${sender}`);
|
|
6712
|
-
const rewardCoin = txBlock.claimLoyaltyRevenue(veScaKey);
|
|
7386
|
+
const rewardCoin = await txBlock.claimLoyaltyRevenue(veScaKey);
|
|
6713
7387
|
await builder.utils.mergeSimilarCoins(
|
|
6714
7388
|
txBlock,
|
|
6715
7389
|
rewardCoin,
|
|
@@ -6758,8 +7432,9 @@ var generateSCoinNormalMethod = ({
|
|
|
6758
7432
|
pkgId: builder.address.get("scoin.id")
|
|
6759
7433
|
};
|
|
6760
7434
|
return {
|
|
6761
|
-
mintSCoin: (marketCoinName, marketCoin) => {
|
|
6762
|
-
return
|
|
7435
|
+
mintSCoin: async (marketCoinName, marketCoin) => {
|
|
7436
|
+
return await builder.moveCall(
|
|
7437
|
+
txBlock,
|
|
6763
7438
|
`${sCoinPkgIds.pkgId}::s_coin_converter::mint_s_coin`,
|
|
6764
7439
|
[builder.utils.getSCoinTreasury(marketCoinName), marketCoin],
|
|
6765
7440
|
[
|
|
@@ -6768,8 +7443,9 @@ var generateSCoinNormalMethod = ({
|
|
|
6768
7443
|
]
|
|
6769
7444
|
);
|
|
6770
7445
|
},
|
|
6771
|
-
burnSCoin: (sCoinName, sCoin) => {
|
|
6772
|
-
return
|
|
7446
|
+
burnSCoin: async (sCoinName, sCoin) => {
|
|
7447
|
+
return await builder.moveCall(
|
|
7448
|
+
txBlock,
|
|
6773
7449
|
`${sCoinPkgIds.pkgId}::s_coin_converter::burn_s_coin`,
|
|
6774
7450
|
[builder.utils.getSCoinTreasury(sCoinName), sCoin],
|
|
6775
7451
|
[
|
|
@@ -6794,7 +7470,7 @@ var generateSCoinQuickMethod = ({
|
|
|
6794
7470
|
sender
|
|
6795
7471
|
);
|
|
6796
7472
|
txBlock.transferObjects([leftCoin], sender);
|
|
6797
|
-
return txBlock.mintSCoin(marketCoinName, takeCoin);
|
|
7473
|
+
return await txBlock.mintSCoin(marketCoinName, takeCoin);
|
|
6798
7474
|
},
|
|
6799
7475
|
burnSCoinQuick: async (sCoinName, amount) => {
|
|
6800
7476
|
const sender = requireSender(txBlock);
|
|
@@ -6805,7 +7481,7 @@ var generateSCoinQuickMethod = ({
|
|
|
6805
7481
|
sender
|
|
6806
7482
|
);
|
|
6807
7483
|
txBlock.transferObjects([leftCoin], sender);
|
|
6808
|
-
return txBlock.burnSCoin(sCoinName, takeCoin);
|
|
7484
|
+
return await txBlock.burnSCoin(sCoinName, takeCoin);
|
|
6809
7485
|
}
|
|
6810
7486
|
};
|
|
6811
7487
|
};
|
|
@@ -7047,12 +7723,12 @@ var ScallopIndexer = class {
|
|
|
7047
7723
|
};
|
|
7048
7724
|
|
|
7049
7725
|
// src/models/scallopQuery.ts
|
|
7050
|
-
var
|
|
7726
|
+
var import_utils24 = require("@mysten/sui/utils");
|
|
7051
7727
|
var ScallopQuery = class {
|
|
7052
7728
|
constructor(params, instance) {
|
|
7053
7729
|
this.params = params;
|
|
7054
7730
|
this.suiKit = instance?.suiKit ?? instance?.utils?.suiKit ?? newSuiKit(params);
|
|
7055
|
-
this.walletAddress = (0,
|
|
7731
|
+
this.walletAddress = (0, import_utils24.normalizeSuiAddress)(
|
|
7056
7732
|
params.walletAddress ?? this.suiKit.currentAddress()
|
|
7057
7733
|
);
|
|
7058
7734
|
if (instance?.utils) {
|
|
@@ -7127,6 +7803,7 @@ var ScallopQuery = class {
|
|
|
7127
7803
|
}
|
|
7128
7804
|
/* ==================== Core Query Methods ==================== */
|
|
7129
7805
|
/**
|
|
7806
|
+
* @deprecated use getMarketPools
|
|
7130
7807
|
* Query market data.
|
|
7131
7808
|
* @param indexer - Whether to use indexer.
|
|
7132
7809
|
* @return Market data.
|
|
@@ -7145,7 +7822,7 @@ var ScallopQuery = class {
|
|
|
7145
7822
|
* @param indexer - Whether to use indexer.
|
|
7146
7823
|
* @return Market pools data.
|
|
7147
7824
|
*/
|
|
7148
|
-
async getMarketPools(poolCoinNames, args) {
|
|
7825
|
+
async getMarketPools(poolCoinNames = [...SUPPORT_POOLS], args) {
|
|
7149
7826
|
return await getMarketPools(
|
|
7150
7827
|
this,
|
|
7151
7828
|
poolCoinNames,
|
|
@@ -7161,13 +7838,8 @@ var ScallopQuery = class {
|
|
|
7161
7838
|
* @return Market pool data.
|
|
7162
7839
|
*/
|
|
7163
7840
|
async getMarketPool(poolCoinName, args) {
|
|
7164
|
-
|
|
7165
|
-
|
|
7166
|
-
poolCoinName,
|
|
7167
|
-
args?.indexer,
|
|
7168
|
-
args?.marketObject,
|
|
7169
|
-
args?.coinPrice
|
|
7170
|
-
);
|
|
7841
|
+
const marketPools = await this.getMarketPools(void 0, args);
|
|
7842
|
+
return marketPools.pools[poolCoinName];
|
|
7171
7843
|
}
|
|
7172
7844
|
/**
|
|
7173
7845
|
* Get market collaterals.
|
|
@@ -7294,13 +7966,8 @@ var ScallopQuery = class {
|
|
|
7294
7966
|
* @return Spool data.
|
|
7295
7967
|
*/
|
|
7296
7968
|
async getSpool(stakeMarketCoinName, args) {
|
|
7297
|
-
|
|
7298
|
-
|
|
7299
|
-
stakeMarketCoinName,
|
|
7300
|
-
args?.indexer,
|
|
7301
|
-
args?.marketPool,
|
|
7302
|
-
args?.coinPrices
|
|
7303
|
-
);
|
|
7969
|
+
const spools = await this.getSpools(void 0, args);
|
|
7970
|
+
return spools[stakeMarketCoinName];
|
|
7304
7971
|
}
|
|
7305
7972
|
/**
|
|
7306
7973
|
* Get stake accounts data for all stake pools (spools).
|
|
@@ -7466,11 +8133,9 @@ var ScallopQuery = class {
|
|
|
7466
8133
|
* @return Borrowing and collateral information.
|
|
7467
8134
|
*/
|
|
7468
8135
|
async getObligationAccount(obligationId, ownerAddress = this.walletAddress, args) {
|
|
7469
|
-
|
|
7470
|
-
|
|
7471
|
-
obligationId
|
|
7472
|
-
ownerAddress,
|
|
7473
|
-
args?.indexer
|
|
8136
|
+
const results = await this.getObligationAccounts(ownerAddress, args);
|
|
8137
|
+
return Object.values(results).find(
|
|
8138
|
+
(obligation) => obligation?.obligationId === obligationId
|
|
7474
8139
|
);
|
|
7475
8140
|
}
|
|
7476
8141
|
/**
|
|
@@ -7605,7 +8270,7 @@ var ScallopQuery = class {
|
|
|
7605
8270
|
* Get list of isolated assets
|
|
7606
8271
|
*/
|
|
7607
8272
|
async getIsolatedAssets() {
|
|
7608
|
-
return await getIsolatedAssets(this
|
|
8273
|
+
return await getIsolatedAssets(this);
|
|
7609
8274
|
}
|
|
7610
8275
|
/**
|
|
7611
8276
|
* Check if asset is an isolated asset
|
|
@@ -7628,6 +8293,13 @@ var ScallopQuery = class {
|
|
|
7628
8293
|
async getAllCoinPrices(args) {
|
|
7629
8294
|
return getAllCoinPrices(this, args?.marketPools, args?.coinPrices);
|
|
7630
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
|
+
}
|
|
7631
8303
|
};
|
|
7632
8304
|
|
|
7633
8305
|
// src/models/scallopBuilder.ts
|
|
@@ -7635,7 +8307,7 @@ var ScallopBuilder = class {
|
|
|
7635
8307
|
constructor(params, instance) {
|
|
7636
8308
|
this.suiKit = instance?.suiKit ?? newSuiKit(params);
|
|
7637
8309
|
this.params = params;
|
|
7638
|
-
this.walletAddress = (0,
|
|
8310
|
+
this.walletAddress = (0, import_utils25.normalizeSuiAddress)(
|
|
7639
8311
|
params?.walletAddress ?? this.suiKit.currentAddress()
|
|
7640
8312
|
);
|
|
7641
8313
|
if (instance?.query) {
|
|
@@ -7686,7 +8358,6 @@ var ScallopBuilder = class {
|
|
|
7686
8358
|
await this.address.read();
|
|
7687
8359
|
}
|
|
7688
8360
|
await this.query.init(force, this.address);
|
|
7689
|
-
await this.utils.init(force, this.address);
|
|
7690
8361
|
}
|
|
7691
8362
|
/**
|
|
7692
8363
|
* Create a scallop txBlock instance that enhances transaction block.
|
|
@@ -7775,6 +8446,9 @@ var ScallopBuilder = class {
|
|
|
7775
8446
|
txBlock
|
|
7776
8447
|
);
|
|
7777
8448
|
}
|
|
8449
|
+
moveCall(txb, target, args, typeArgs) {
|
|
8450
|
+
return txb.moveCall(target, args, typeArgs);
|
|
8451
|
+
}
|
|
7778
8452
|
};
|
|
7779
8453
|
|
|
7780
8454
|
// src/models/scallopClient.ts
|
|
@@ -7782,7 +8456,7 @@ var ScallopClient = class {
|
|
|
7782
8456
|
constructor(params, instance) {
|
|
7783
8457
|
this.params = params;
|
|
7784
8458
|
this.suiKit = instance?.suiKit ?? instance?.builder?.suiKit ?? newSuiKit(params);
|
|
7785
|
-
this.walletAddress = (0,
|
|
8459
|
+
this.walletAddress = (0, import_utils26.normalizeSuiAddress)(
|
|
7786
8460
|
params?.walletAddress ?? this.suiKit.currentAddress()
|
|
7787
8461
|
);
|
|
7788
8462
|
if (instance?.builder) {
|
|
@@ -7921,7 +8595,7 @@ var ScallopClient = class {
|
|
|
7921
8595
|
}
|
|
7922
8596
|
async openObligation(sign = true) {
|
|
7923
8597
|
const txBlock = this.builder.createTxBlock();
|
|
7924
|
-
txBlock.openObligationEntry();
|
|
8598
|
+
await txBlock.openObligationEntry();
|
|
7925
8599
|
if (sign) {
|
|
7926
8600
|
return await this.suiKit.signAndSendTxn(
|
|
7927
8601
|
txBlock
|
|
@@ -7943,9 +8617,9 @@ var ScallopClient = class {
|
|
|
7943
8617
|
specificObligationId
|
|
7944
8618
|
);
|
|
7945
8619
|
} else {
|
|
7946
|
-
const [obligation, obligationKey, hotPotato] = txBlock.openObligation();
|
|
8620
|
+
const [obligation, obligationKey, hotPotato] = await txBlock.openObligation();
|
|
7947
8621
|
await txBlock.addCollateralQuick(amount, collateralCoinName, obligation);
|
|
7948
|
-
txBlock.returnObligation(obligation, hotPotato);
|
|
8622
|
+
await txBlock.returnObligation(obligation, hotPotato);
|
|
7949
8623
|
txBlock.transferObjects([obligationKey], sender);
|
|
7950
8624
|
}
|
|
7951
8625
|
if (sign) {
|
|
@@ -8015,7 +8689,7 @@ var ScallopClient = class {
|
|
|
8015
8689
|
targetStakeAccount
|
|
8016
8690
|
);
|
|
8017
8691
|
} else {
|
|
8018
|
-
const account = txBlock.createStakeAccount(stakeMarketCoinName);
|
|
8692
|
+
const account = await txBlock.createStakeAccount(stakeMarketCoinName);
|
|
8019
8693
|
await txBlock.stakeQuick(marketCoin, stakeMarketCoinName, account);
|
|
8020
8694
|
txBlock.transferObjects([account], sender);
|
|
8021
8695
|
}
|
|
@@ -8112,8 +8786,12 @@ var ScallopClient = class {
|
|
|
8112
8786
|
const txBlock = this.builder.createTxBlock();
|
|
8113
8787
|
const sender = walletAddress ?? this.walletAddress;
|
|
8114
8788
|
txBlock.setSender(sender);
|
|
8115
|
-
const [coin, loan] = txBlock.borrowFlashLoan(amount, poolCoinName);
|
|
8116
|
-
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
|
+
);
|
|
8117
8795
|
if (sign) {
|
|
8118
8796
|
return await this.suiKit.signAndSendTxn(
|
|
8119
8797
|
txBlock
|
|
@@ -8126,7 +8804,7 @@ var ScallopClient = class {
|
|
|
8126
8804
|
const txBlock = this.builder.createTxBlock();
|
|
8127
8805
|
const sender = walletAddress ?? this.walletAddress;
|
|
8128
8806
|
txBlock.setSender(sender);
|
|
8129
|
-
const stakeAccount = txBlock.createStakeAccount(marketCoinName);
|
|
8807
|
+
const stakeAccount = await txBlock.createStakeAccount(marketCoinName);
|
|
8130
8808
|
txBlock.transferObjects([stakeAccount], sender);
|
|
8131
8809
|
if (sign) {
|
|
8132
8810
|
return await this.suiKit.signAndSendTxn(
|
|
@@ -8145,7 +8823,7 @@ var ScallopClient = class {
|
|
|
8145
8823
|
if (targetStakeAccount) {
|
|
8146
8824
|
await txBlock.stakeQuick(amount, stakeMarketCoinName, targetStakeAccount);
|
|
8147
8825
|
} else {
|
|
8148
|
-
const account = txBlock.createStakeAccount(stakeMarketCoinName);
|
|
8826
|
+
const account = await txBlock.createStakeAccount(stakeMarketCoinName);
|
|
8149
8827
|
await txBlock.stakeQuick(amount, stakeMarketCoinName, account);
|
|
8150
8828
|
txBlock.transferObjects([account], sender);
|
|
8151
8829
|
}
|
|
@@ -8195,7 +8873,7 @@ var ScallopClient = class {
|
|
|
8195
8873
|
);
|
|
8196
8874
|
const stakeCoinName = this.utils.parseCoinName(stakeMarketCoinName);
|
|
8197
8875
|
if (stakeMarketCoin) {
|
|
8198
|
-
const coin = txBlock.withdraw(stakeMarketCoin, stakeCoinName);
|
|
8876
|
+
const coin = await txBlock.withdraw(stakeMarketCoin, stakeCoinName);
|
|
8199
8877
|
await this.utils.mergeSimilarCoins(
|
|
8200
8878
|
txBlock,
|
|
8201
8879
|
coin,
|
|
@@ -8292,6 +8970,8 @@ var ScallopClient = class {
|
|
|
8292
8970
|
txBlock.setSender(sender);
|
|
8293
8971
|
const rewardCoinsCollection = {};
|
|
8294
8972
|
const obligationAccount = await this.query.getObligationAccount(obligationId);
|
|
8973
|
+
if (!obligationAccount)
|
|
8974
|
+
throw new Error("Obligation not found");
|
|
8295
8975
|
const rewardCoinNames = Object.values(obligationAccount.borrowIncentives).flatMap(
|
|
8296
8976
|
({ rewards }) => rewards.filter(({ availableClaimAmount }) => availableClaimAmount > 0)
|
|
8297
8977
|
).flatMap(({ coinName }) => coinName);
|
|
@@ -8354,7 +9034,7 @@ var ScallopClient = class {
|
|
|
8354
9034
|
throw e;
|
|
8355
9035
|
}
|
|
8356
9036
|
if (toDestroyMarketCoin) {
|
|
8357
|
-
const sCoin = txBlock.mintSCoin(
|
|
9037
|
+
const sCoin = await txBlock.mintSCoin(
|
|
8358
9038
|
sCoinName,
|
|
8359
9039
|
toDestroyMarketCoin
|
|
8360
9040
|
);
|
|
@@ -8623,9 +9303,11 @@ var Scallop = class {
|
|
|
8623
9303
|
ScallopQuery,
|
|
8624
9304
|
ScallopUtils,
|
|
8625
9305
|
TEST_ADDRESSES,
|
|
9306
|
+
TokenBucket,
|
|
8626
9307
|
UNLOCK_ROUND_DURATION,
|
|
8627
9308
|
USE_TEST_ADDRESS,
|
|
8628
9309
|
assetCoins,
|
|
9310
|
+
callWithRateLimit,
|
|
8629
9311
|
coinDecimals,
|
|
8630
9312
|
coinIds,
|
|
8631
9313
|
marketCoins,
|