@scallop-io/sui-scallop-sdk 1.4.14 → 1.4.15-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants/poolAddress.d.ts +15 -4
- package/dist/constants/queryKeys.d.ts +1 -2
- package/dist/constants/tokenBucket.d.ts +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +873 -416
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +826 -371
- package/dist/index.mjs.map +1 -1
- package/dist/models/scallopCache.d.ts +1 -0
- package/dist/models/scallopQuery.d.ts +21 -17
- 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 +16 -0
- package/dist/queries/spoolQuery.d.ts +6 -2
- package/dist/test.d.ts +1 -0
- 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/util.d.ts +1 -0
- package/package.json +1 -1
- package/src/constants/poolAddress.ts +291 -29
- package/src/constants/queryKeys.ts +5 -5
- package/src/constants/tokenBucket.ts +1 -1
- package/src/index.ts +1 -0
- package/src/models/scallopCache.ts +43 -11
- package/src/models/scallopQuery.ts +25 -20
- package/src/queries/borrowIncentiveQuery.ts +1 -1
- package/src/queries/coreQuery.ts +378 -248
- 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 +140 -0
- package/src/queries/portfolioQuery.ts +14 -7
- package/src/queries/priceQuery.ts +3 -1
- package/src/queries/spoolQuery.ts +189 -122
- package/src/test.ts +17 -0
- 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 +16 -2
- package/src/utils/tokenBucket.ts +2 -2
- 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,
|
|
@@ -420,67 +422,213 @@ var FlashLoanFeeObjectMap = {
|
|
|
420
422
|
|
|
421
423
|
// src/constants/poolAddress.ts
|
|
422
424
|
var POOL_ADDRESSES = {
|
|
423
|
-
usdc: {
|
|
424
|
-
lendingPoolAddress: "0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",
|
|
425
|
-
collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af"
|
|
426
|
-
},
|
|
427
425
|
sbeth: {
|
|
428
|
-
lendingPoolAddress: "
|
|
429
|
-
collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f"
|
|
426
|
+
lendingPoolAddress: "0xaa34c938e0394e5186c7dc626ad69be96af2194b23fdc6ac1c63090e399f5ba4",
|
|
427
|
+
collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f",
|
|
428
|
+
borrowDynamic: "0x7bbe75e8b924229f2f2110838ff612ea66e670fa3766759515dee78f617b1ea3",
|
|
429
|
+
interestModel: "0x9e6cae260d05155785a1904d24e6abc98368509c5752c8a9cec15a35aabc1512",
|
|
430
|
+
riskModel: "0xcf10334cfee675ecea2d2fee37b0f7cd2835c84b8b5692a853021debe6af80ab",
|
|
431
|
+
borrowFeeKey: "0x4298c8b6afe7a42a8e3ff93773fb9769529fe6d37e085ab411acf2ba2a44a931",
|
|
432
|
+
supplyLimitKey: "0x812fe508b78d3e0817149c0b39976221ddb267b5cc9514e81679f9b9a2f3624c",
|
|
433
|
+
borrowLimitKey: "0x165c274c67eda2b0d13563124741fffd0ce7d643f4c1c4b59d7e53a83796ae25",
|
|
434
|
+
isolatedAssetKey: void 0,
|
|
435
|
+
spool: void 0,
|
|
436
|
+
spoolReward: void 0
|
|
430
437
|
},
|
|
431
|
-
|
|
432
|
-
lendingPoolAddress: "
|
|
433
|
-
collateralPoolAddress: "
|
|
438
|
+
usdc: {
|
|
439
|
+
lendingPoolAddress: "0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",
|
|
440
|
+
collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af",
|
|
441
|
+
borrowDynamic: "0x77837ecd4f26fac9a410fff594f2c0bd3288904a15492ca77cb8a52684dbb866",
|
|
442
|
+
interestModel: "0xaae3f179d63009380cbdcb9acb12907afc9c3cb79cc3460be296a9c6d28f3ff3",
|
|
443
|
+
riskModel: "0x198b24db213bfeb8b3c80ae63dde92e32fd24984d25da8233ff777b851edd574",
|
|
444
|
+
borrowFeeKey: "0xd37c5316cfe0a5967d14264fa6b423f880518b294a1ee6581ccbb49ccc401fb8",
|
|
445
|
+
supplyLimitKey: "0x4be9ae54ac4d320f4f9c14cae78cb85c8e0e67791dd9bdba6d2db20614a28a24",
|
|
446
|
+
borrowLimitKey: "0x6b01093cba95b835181f00e3a2c31ed8dfc8d64fe3db0fb80933a09f66e1ccf1",
|
|
447
|
+
isolatedAssetKey: void 0,
|
|
448
|
+
spool: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
|
|
449
|
+
spoolReward: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166"
|
|
434
450
|
},
|
|
435
451
|
wbtc: {
|
|
436
452
|
lendingPoolAddress: "0x65cc08a5aca0a0b8d72e1993ded8d145f06dd102fd0d8f285b92934faed564ab",
|
|
437
|
-
collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3"
|
|
453
|
+
collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3",
|
|
454
|
+
borrowDynamic: "0x6f97dcf54158a5d08f359a213a41e347bc1e6316414288dc1e1b674dc008742e",
|
|
455
|
+
interestModel: "0x582b915cca0ffca9576a7cedd505d0fd7cb146e9521ccf10e7453ed93705684d",
|
|
456
|
+
riskModel: "0x1d0a242bf1682e259112239720da19d3155dd99d70b1f4b3b973eecbab858911",
|
|
457
|
+
borrowFeeKey: "0x654ab7e8ff6d9ef04da697e1f12ca21eaf72ebb495daf877e0776e65187dcb92",
|
|
458
|
+
supplyLimitKey: "0xac3b0d17df9f98aa2798c54405cf1d8d5356ef22f76f02d150cbe5195e9f3a36",
|
|
459
|
+
borrowLimitKey: "0x231e13ba6b1eb26c562f4a125778d3152f9a77e31f124bd6012e234a73012169",
|
|
460
|
+
isolatedAssetKey: void 0,
|
|
461
|
+
spool: void 0,
|
|
462
|
+
spoolReward: void 0
|
|
438
463
|
},
|
|
439
464
|
wusdc: {
|
|
440
|
-
lendingPoolAddress: "
|
|
441
|
-
collateralPoolAddress: "
|
|
465
|
+
lendingPoolAddress: "0x2f4df5e1368fbbdaa5c712d28b837b3d41c2d3872979ccededcdfdac55ff8a93",
|
|
466
|
+
collateralPoolAddress: "0x94cf69158114c5b242d2ee5d0149a335bddf3b9c9a6ba919cca58097a4814980",
|
|
467
|
+
borrowDynamic: "0x0464d117908b52fc75f7f85322a47caa078ef56f48681bcfdcb630a66f2591e6",
|
|
468
|
+
interestModel: "0xd72e2b5ba486752939d6dfb86a67b86ce9a60c83cb8fb893caac54a0f112577f",
|
|
469
|
+
riskModel: "0xb74035de8f70c1531ceb8e2e8c152d6b8db24c8a9fe7bbf6f75dbf7c6700a0a3",
|
|
470
|
+
borrowFeeKey: "0x76dcf1acbd9951fe3d1a3fe28403fec089ffe53a7c7d6c77e3ea97033a63581a",
|
|
471
|
+
supplyLimitKey: "0x7b302196907e87c5d5872f2e6f40628d110170f994e0e08bc607bded001958c3",
|
|
472
|
+
borrowLimitKey: "0x97f1502ce994db0bcb15aac1760d174def9e88e97cd2262eed54521ee2c19f81",
|
|
473
|
+
isolatedAssetKey: void 0,
|
|
474
|
+
spool: "0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",
|
|
475
|
+
spoolReward: "0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8"
|
|
476
|
+
},
|
|
477
|
+
weth: {
|
|
478
|
+
lendingPoolAddress: "0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",
|
|
479
|
+
collateralPoolAddress: "0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf",
|
|
480
|
+
borrowDynamic: "0xd1578e1d1c9c82eb4c5bf14beece8142a67a683b2647d7276e92984119fc1445",
|
|
481
|
+
interestModel: "0xa1dc08541cd2cb7cfb4e56272292d5c6a4780e80fd210c58abffae98268b5ed9",
|
|
482
|
+
riskModel: "0x9f05a25fd33a9e8cf33962126b175d038e184f0ee1b87dc41d4cedbe6abebbe5",
|
|
483
|
+
borrowFeeKey: "0x29672ba8ab4625b8181d8ed739e5344de22a97d417748c4d1276c7379283d7a3",
|
|
484
|
+
supplyLimitKey: "0x2b957941bdc9432bbc83ab74dc194b6ebb7c927bc4c6926a5492b5503499e509",
|
|
485
|
+
borrowLimitKey: "0x51f256d87e51a7ca2b1c482923096f4b6dac6beac89d8ecf4c65b7d5764115d6",
|
|
486
|
+
isolatedAssetKey: void 0,
|
|
487
|
+
spool: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
|
|
488
|
+
spoolReward: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"
|
|
442
489
|
},
|
|
443
490
|
wusdt: {
|
|
444
491
|
lendingPoolAddress: "0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879",
|
|
445
|
-
collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3"
|
|
492
|
+
collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3",
|
|
493
|
+
borrowDynamic: "0xb524030cc8f7cdbf13f1925a0a2b5e77cc52bab73b070f42c5e510f6083da1ba",
|
|
494
|
+
interestModel: "0x92f93c4431b4c51774d6d964da516af2def18b78f49dbbf519e58449a8ba4659",
|
|
495
|
+
riskModel: "0xdf89d66988cb506ddeff46f5dfd1d11aaece345e9a05a0c6a18a0788647de2a7",
|
|
496
|
+
borrowFeeKey: "0xda8f8b3522fc4086eae4ae7ce8844d60aa0dc3eab8ffc91fe93e922a72639b2d",
|
|
497
|
+
supplyLimitKey: "0xa9cb5ebb90ca6e808a2bd7728cca4a6fa8b565d4deeda96eb23c8322c477c24e",
|
|
498
|
+
borrowLimitKey: "0xa3278564fc613680a69c10972a0299965bf6e12e9ac171388842fc958de0f90e",
|
|
499
|
+
isolatedAssetKey: void 0,
|
|
500
|
+
spool: "0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",
|
|
501
|
+
spoolReward: "0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080"
|
|
446
502
|
},
|
|
447
503
|
sui: {
|
|
448
504
|
lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
|
|
449
|
-
collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb"
|
|
505
|
+
collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb",
|
|
506
|
+
borrowDynamic: "0xbf68e6159c99dcaf87717385f1143d2891c2d19663bd51f0bc9b6909e4bb7c27",
|
|
507
|
+
interestModel: "0x0dad9baa89b863c15a0487575de7cc428b01f1aa3998ad7a9e9752d96e83ffa9",
|
|
508
|
+
riskModel: "0xcd6675864690b5648a6e309f2f02a66914b2b2bd9c31936f4e0f7fc0f792bc86",
|
|
509
|
+
borrowFeeKey: "0xda5ede87a05c0677b17511c859b22d0a2b0229ee374d5d7a1274cb836b9fe5f8",
|
|
510
|
+
supplyLimitKey: "0x0602418e66fb7a73fa997077bd66f248ad5b090d43344a14b9f1db598ecc1d47",
|
|
511
|
+
borrowLimitKey: "0x2b33a7efdcf6a6df24f4d8a356dd52f58d75bc023c3f171d99502d4d008b53f0",
|
|
512
|
+
isolatedAssetKey: void 0,
|
|
513
|
+
spool: "0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",
|
|
514
|
+
spoolReward: "0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9"
|
|
450
515
|
},
|
|
451
516
|
wapt: {
|
|
452
517
|
lendingPoolAddress: "0xca8c14a24e0c32b198eaf479a3317461e3cc339097ce88eaf296a15df8dcfdf5",
|
|
453
|
-
collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c"
|
|
518
|
+
collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c",
|
|
519
|
+
borrowDynamic: "0xadda873fb6bf68e1ba3f2dfaa51cf75d4a1bef73d9627bd36e77d2baecb1f2dc",
|
|
520
|
+
interestModel: "0xa4a29d07beecea5eb0c59745bb89d7a1380c6f206a7f1ca37046e05db6025c43",
|
|
521
|
+
riskModel: "0x7ada83b473af30aed50d187de82a0912878b53ade7ac30e11ce23953cf739d84",
|
|
522
|
+
borrowFeeKey: "0x768735df587c7e0f141dcd035fbbcbf9d2149a7b23888baed4e2baa160fa2eeb",
|
|
523
|
+
supplyLimitKey: void 0,
|
|
524
|
+
borrowLimitKey: void 0,
|
|
525
|
+
isolatedAssetKey: void 0,
|
|
526
|
+
spool: void 0,
|
|
527
|
+
spoolReward: void 0
|
|
528
|
+
},
|
|
529
|
+
afsui: {
|
|
530
|
+
lendingPoolAddress: "0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",
|
|
531
|
+
collateralPoolAddress: "0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341",
|
|
532
|
+
borrowDynamic: "0x1c76d4df9506154a117bbac0f5e005d8a9c0d9ca60e3fe0c9d080006f6f54e81",
|
|
533
|
+
interestModel: "0xb155c536b37c9601baaa734ad1dd0ef335b2b597aceb8d3ecee41a43f94dcd70",
|
|
534
|
+
riskModel: "0x75371b1d04b5bebc0738af548ba64ea658e74f78228ec8014336d8eebb992312",
|
|
535
|
+
borrowFeeKey: "0xabc6422db2d4ee01635ddaeaa44ba68370eebd785d2c4632515f841ae9bc47d9",
|
|
536
|
+
supplyLimitKey: "0x61a2054eb37f543c0d774da57f2c9542aad8d79a197f748ac08ef5df6cc47028",
|
|
537
|
+
borrowLimitKey: "0x4459498a043872cd107ea917493fee0baf2d37a273c7538e1d6581cc61b92af8",
|
|
538
|
+
isolatedAssetKey: void 0,
|
|
539
|
+
spool: "0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",
|
|
540
|
+
spoolReward: "0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e"
|
|
454
541
|
},
|
|
455
542
|
wsol: {
|
|
456
543
|
lendingPoolAddress: "0x985682c42984cdfb03f9ff7d8923344c2fe096b1ae4b82ea17721af19d22a21f",
|
|
457
|
-
collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f"
|
|
544
|
+
collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f",
|
|
545
|
+
borrowDynamic: "0xe3f301e16d4f1273ea659dd82c5c3f124ca5a5883a5726c7ec0f77bf43b70895",
|
|
546
|
+
interestModel: "0xd95affaee077006b8dbb4b108c1b087e95fc6e5143ef0682da345d5b35bc6356",
|
|
547
|
+
riskModel: "0x8e0da6358073144ec3557400c87f04991ba3a13ca7e0d0a19daed45260b32f16",
|
|
548
|
+
borrowFeeKey: "0x604bffbc817e8e12db15f2373a9e15b2c7adbc510649cdf2cc62a594af90671c",
|
|
549
|
+
supplyLimitKey: "0xbd419b536b3f9c9d4adfc20372ca6feedc53cc31798ac860dbfc847bcf05f54b",
|
|
550
|
+
borrowLimitKey: "0x77d453c51948f32564c810bc73f9ba7abde880657b7f89e1c8a3bc28fa36ee87",
|
|
551
|
+
isolatedAssetKey: void 0,
|
|
552
|
+
spool: void 0,
|
|
553
|
+
spoolReward: void 0
|
|
458
554
|
},
|
|
459
555
|
cetus: {
|
|
460
556
|
lendingPoolAddress: "0xc09858f60e74a1b671635bec4e8a2c84a0ff313eb87f525fba3258e88c6b6282",
|
|
461
|
-
collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a"
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
557
|
+
collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a",
|
|
558
|
+
borrowDynamic: "0xcc725fd5d71990cdccc7e16c88a2abde6dbcd0bf6e805ccc1c0cb83a106bbf4e",
|
|
559
|
+
interestModel: "0x2f1258aab89d04d11834121599ab1317dfecb582b4246f106df399911125845a",
|
|
560
|
+
riskModel: "0x03fed312dbba624dff5edaf4736891a1c7d864445fd268e7572b42ec7381132e",
|
|
561
|
+
borrowFeeKey: "0xdf5fb0cc4ebbf5eebfae23dfa5b266f6a58c18a894a13054ae60c0eb6e79c382",
|
|
562
|
+
supplyLimitKey: "0xa5ea3d4bf663d7bc667e82b40a98923590ff3851b9ea8e7afbc26c588c7007d3",
|
|
563
|
+
borrowLimitKey: "0xf44218a5f0feb128e6fbe74b91d1e7e9ef859bd23a576ff0de151829e015a157",
|
|
564
|
+
isolatedAssetKey: void 0,
|
|
565
|
+
spool: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
|
|
566
|
+
spoolReward: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"
|
|
466
567
|
},
|
|
467
568
|
hasui: {
|
|
468
569
|
lendingPoolAddress: "0x7ebc607f6bdeb659fb6506cb91c5cc1d47bb365cfd5d2e637ea765346ec84ed4",
|
|
469
|
-
collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d"
|
|
570
|
+
collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d",
|
|
571
|
+
borrowDynamic: "0x13ec1220b41c6e0f11dd6113199a2aff8e4cf2223047b5bd06d7a3ed5d23e1d2",
|
|
572
|
+
interestModel: "0x987c58cbe48096618f4d9d83e0bde2ff638ce4753aba40dab7c302ac3e4b4519",
|
|
573
|
+
riskModel: "0xe42d8497d423eca0d8df89850c2d77d3644e7f54a2d28f59c315903ea5ec8dec",
|
|
574
|
+
borrowFeeKey: "0xef885c382d461c4fb14d1f3b3758c380c78a1a4b2a3d2fafe6e8649a60fdd7ab",
|
|
575
|
+
supplyLimitKey: "0xc7385b1703693cbbc9c97227fe3fd5c91d7afda00e0da69d942c3260d78e45e0",
|
|
576
|
+
borrowLimitKey: "0x65333e606eead786a999c8267bc9886b0fdbc298a8a8635a48a9c9b8838d9395",
|
|
577
|
+
isolatedAssetKey: void 0,
|
|
578
|
+
spool: "0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",
|
|
579
|
+
spoolReward: "0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66"
|
|
470
580
|
},
|
|
471
581
|
vsui: {
|
|
472
582
|
lendingPoolAddress: "0xda9257c0731d8822e8a438ebced13415850d705b779c79958dcf2aeb21fcb43d",
|
|
473
|
-
collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e"
|
|
583
|
+
collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e",
|
|
584
|
+
borrowDynamic: "0x8eae703505246f975e83f5af24780e5f1b89ef403d5a80ea15534624d6f1a503",
|
|
585
|
+
interestModel: "0xaf6a52b5eaaa5af4d9e49d83de0d504c295ae21f3a37560c3f48e0e15a1d4625",
|
|
586
|
+
riskModel: "0x1e862f27a6bd47c3041159a5cf392f549485c6605ed9aa937f16ecc951e82e65",
|
|
587
|
+
borrowFeeKey: "0x5230de0f41a5e4c05b3d1187a90a9eeab491cec97b08b71512d9785e8af36aa6",
|
|
588
|
+
supplyLimitKey: "0x1d40e34d1f365ec431fff020bd75c16b14b340b3ed6c139803cc15c2384621b2",
|
|
589
|
+
borrowLimitKey: "0x4eb206b4417642cfc1b02f80bb5f5e366af2af2f9fb4ea4f4e898ae82367f8a0",
|
|
590
|
+
isolatedAssetKey: void 0,
|
|
591
|
+
spool: "0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",
|
|
592
|
+
spoolReward: "0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a"
|
|
474
593
|
},
|
|
475
594
|
sca: {
|
|
476
595
|
lendingPoolAddress: "0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",
|
|
477
|
-
collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31"
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
596
|
+
collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31",
|
|
597
|
+
borrowDynamic: "0x4e24f52edd739dab59ca4c6353ca430b7ce57e7f333abd0957958570a7cd09ca",
|
|
598
|
+
interestModel: "0xbdcd48cf5b1a814911dc2d5c72d393a980c87820199fe5d799289ce94f4c47df",
|
|
599
|
+
riskModel: "0xc437c24b67b8e2676907700fa395af337ad6463d2c0b4f4fa2e9276414026089",
|
|
600
|
+
borrowFeeKey: "0xee55ba0f9800a62d9e7aef667f87e658258f41814d2c9fa02e25590671b4e5ad",
|
|
601
|
+
supplyLimitKey: "0x8dd938856b972a10ea27ecab2af7ed78e48fc5f6ccedaf2b2119959f747dc2e3",
|
|
602
|
+
borrowLimitKey: "0x04c7de61c5b42972f9bf6a8b1848e5fea2d037ee8deba81741ecd4a70aa80d30",
|
|
603
|
+
isolatedAssetKey: void 0,
|
|
604
|
+
spool: void 0,
|
|
605
|
+
spoolReward: void 0
|
|
481
606
|
},
|
|
482
607
|
deep: {
|
|
483
|
-
lendingPoolAddress: "0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03"
|
|
608
|
+
lendingPoolAddress: "0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03",
|
|
609
|
+
collateralPoolAddress: void 0,
|
|
610
|
+
borrowDynamic: "0x95e00d7466f97a100e70f08bd37788dc49335796f6f49fab996d40dd0681c6d3",
|
|
611
|
+
interestModel: "0x4143c298506a332d92ea8a995e6f3991ee3215f58f6fc6441752835d275b9a69",
|
|
612
|
+
riskModel: void 0,
|
|
613
|
+
borrowFeeKey: "0xb14ee43f4ad2a2c40bac8c4406a401690e93c982e289cf3802fedf74a159cab2",
|
|
614
|
+
supplyLimitKey: "0x599528fdfdc253e90dfd0acf4f4a166b391e2aac1ca6528abbff63225b548fee",
|
|
615
|
+
borrowLimitKey: "0xf4217e8ef9d9c32e8992092e910a77535a8124c19b8a762a673f227f5f765a4e",
|
|
616
|
+
isolatedAssetKey: "0x208d3a24ba369dcfc8f0387333d1512b98199eb150d2f2a69359ff708cf761e3",
|
|
617
|
+
spool: void 0,
|
|
618
|
+
spoolReward: void 0
|
|
619
|
+
},
|
|
620
|
+
fud: {
|
|
621
|
+
lendingPoolAddress: "0xefed2cbe76b344792ac724523c8b2236740d1cea2100d46a0ed0dc760c7f4231",
|
|
622
|
+
collateralPoolAddress: void 0,
|
|
623
|
+
borrowDynamic: "0x14367ddca30e2860cb89ed4eaca20c7ece260c5d59dd9990d2c85a8321326acb",
|
|
624
|
+
interestModel: "0x2600ac100ef154eb2329ffd3aad47aca308ff9f9348de3e8e94aaeb906ec2303",
|
|
625
|
+
riskModel: void 0,
|
|
626
|
+
borrowFeeKey: "0xa87e8b26e07ff35ac9fb57adcc779be2883080fc7d12de2d9e7e16d8d8d5e529",
|
|
627
|
+
supplyLimitKey: "0xf98419aecc37a3c5de716f8ec590f8991a5be34da72ce1a2da09531ff45adf7d",
|
|
628
|
+
borrowLimitKey: "0x3d928a001c453c50004baa54e14b0a0e1b0907d9c613dfd76064fd7ed4e8beb8",
|
|
629
|
+
isolatedAssetKey: "0xfcb533e9e4e31f9c9f32d6cbf7fbb3425f1d60474e229a363a2dc7f835d587e2",
|
|
630
|
+
spool: void 0,
|
|
631
|
+
spoolReward: void 0
|
|
484
632
|
}
|
|
485
633
|
};
|
|
486
634
|
|
|
@@ -531,7 +679,11 @@ var queryKeys = {
|
|
|
531
679
|
typeArgs: !typeArgs ? void 0 : JSON.stringify(typeArgs)
|
|
532
680
|
}
|
|
533
681
|
],
|
|
534
|
-
getObject: (objectId,
|
|
682
|
+
getObject: (objectId, options) => [
|
|
683
|
+
"rpc",
|
|
684
|
+
"getObject",
|
|
685
|
+
{ options, objectId }
|
|
686
|
+
],
|
|
535
687
|
getObjects: (objectIds, walletAddress, options) => [
|
|
536
688
|
"rpc",
|
|
537
689
|
"getObjects",
|
|
@@ -1065,7 +1217,7 @@ var TEST_ADDRESSES = {
|
|
|
1065
1217
|
|
|
1066
1218
|
// src/constants/tokenBucket.ts
|
|
1067
1219
|
var DEFAULT_TOKENS_PER_INTERVAL = 10;
|
|
1068
|
-
var DEFAULT_INTERVAL_IN_MS =
|
|
1220
|
+
var DEFAULT_INTERVAL_IN_MS = 250;
|
|
1069
1221
|
|
|
1070
1222
|
// src/constants/vesca.ts
|
|
1071
1223
|
var UNLOCK_ROUND_DURATION = 60 * 60 * 24;
|
|
@@ -1209,7 +1361,10 @@ var parseOriginMarketPoolData = (originMarketPoolData) => {
|
|
|
1209
1361
|
borrowRateOnMidKink: Number(originMarketPoolData.borrowRateOnMidKink.value) / 2 ** 32,
|
|
1210
1362
|
highKink: Number(originMarketPoolData.highKink.value) / 2 ** 32,
|
|
1211
1363
|
midKink: Number(originMarketPoolData.midKink.value) / 2 ** 32,
|
|
1212
|
-
minBorrowAmount: Number(originMarketPoolData.minBorrowAmount)
|
|
1364
|
+
minBorrowAmount: Number(originMarketPoolData.minBorrowAmount),
|
|
1365
|
+
isIsolated: originMarketPoolData.isIsolated,
|
|
1366
|
+
supplyLimit: Number(originMarketPoolData.supplyLimit),
|
|
1367
|
+
borrowLimit: Number(originMarketPoolData.borrowLimit)
|
|
1213
1368
|
};
|
|
1214
1369
|
};
|
|
1215
1370
|
var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
@@ -1261,6 +1416,7 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
|
1261
1416
|
borrowApyOnHighKink: utils.parseAprToApy(borrowAprOnHighKink),
|
|
1262
1417
|
borrowAprOnMidKink,
|
|
1263
1418
|
borrowApyOnMidKink: utils.parseAprToApy(borrowAprOnMidKink),
|
|
1419
|
+
coinDecimal,
|
|
1264
1420
|
maxBorrowApr,
|
|
1265
1421
|
maxBorrowApy: utils.parseAprToApy(maxBorrowApr),
|
|
1266
1422
|
borrowApr: Math.min(borrowApr, maxBorrowApr),
|
|
@@ -1279,17 +1435,21 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
|
1279
1435
|
utilizationRate: utilizationRate.toNumber(),
|
|
1280
1436
|
supplyApr: supplyApr.toNumber(),
|
|
1281
1437
|
supplyApy: utils.parseAprToApy(supplyApr.toNumber()),
|
|
1282
|
-
conversionRate: conversionRate.toNumber()
|
|
1438
|
+
conversionRate: conversionRate.toNumber(),
|
|
1439
|
+
isIsolated: parsedMarketPoolData.isIsolated,
|
|
1440
|
+
maxSupplyCoin: (0, import_bignumber.default)(parsedMarketPoolData.supplyLimit).shiftedBy(coinDecimal).toNumber(),
|
|
1441
|
+
maxBorrowCoin: (0, import_bignumber.default)(parsedMarketPoolData.borrowLimit).shiftedBy(coinDecimal).toNumber()
|
|
1283
1442
|
};
|
|
1284
1443
|
};
|
|
1285
1444
|
var parseOriginMarketCollateralData = (originMarketCollateralData) => {
|
|
1286
1445
|
const divisor = 2 ** 32;
|
|
1287
1446
|
return {
|
|
1288
1447
|
coinType: (0, import_utils.normalizeStructTag)(originMarketCollateralData.type.name),
|
|
1448
|
+
isIsolated: originMarketCollateralData.isIsolated,
|
|
1289
1449
|
collateralFactor: Number(originMarketCollateralData.collateralFactor.value) / divisor,
|
|
1290
1450
|
liquidationFactor: Number(originMarketCollateralData.liquidationFactor.value) / divisor,
|
|
1291
1451
|
liquidationDiscount: Number(originMarketCollateralData.liquidationDiscount.value) / divisor,
|
|
1292
|
-
|
|
1452
|
+
liquidationPenalty: Number(originMarketCollateralData.liquidationPenalty.value) / divisor,
|
|
1293
1453
|
liquidationReserveFactor: Number(originMarketCollateralData.liquidationReserveFactor.value) / divisor,
|
|
1294
1454
|
maxCollateralAmount: Number(originMarketCollateralData.maxCollateralAmount),
|
|
1295
1455
|
totalCollateralAmount: Number(
|
|
@@ -1309,6 +1469,8 @@ var calculateMarketCollateralData = (utils, parsedMarketCollateralData) => {
|
|
|
1309
1469
|
parsedMarketCollateralData.totalCollateralAmount
|
|
1310
1470
|
).shiftedBy(-1 * coinDecimal);
|
|
1311
1471
|
return {
|
|
1472
|
+
coinDecimal,
|
|
1473
|
+
isIsolated: parsedMarketCollateralData.isIsolated,
|
|
1312
1474
|
maxDepositAmount: parsedMarketCollateralData.maxCollateralAmount,
|
|
1313
1475
|
maxDepositCoin: maxCollateralCoin.toNumber(),
|
|
1314
1476
|
depositAmount: parsedMarketCollateralData.totalCollateralAmount,
|
|
@@ -1639,6 +1801,13 @@ var findClosestUnlockRound = (unlockAtInSecondTimestamp) => {
|
|
|
1639
1801
|
}
|
|
1640
1802
|
return Math.floor(closestTwelveAM.getTime() / 1e3);
|
|
1641
1803
|
};
|
|
1804
|
+
var partitionArray = (array, chunkSize) => {
|
|
1805
|
+
const result = [];
|
|
1806
|
+
for (let i = 0; i < array.length; i += chunkSize) {
|
|
1807
|
+
result.push(array.slice(i, i + chunkSize));
|
|
1808
|
+
}
|
|
1809
|
+
return result;
|
|
1810
|
+
};
|
|
1642
1811
|
|
|
1643
1812
|
// src/utils/tokenBucket.ts
|
|
1644
1813
|
var TokenBucket = class {
|
|
@@ -1666,7 +1835,7 @@ var TokenBucket = class {
|
|
|
1666
1835
|
return false;
|
|
1667
1836
|
}
|
|
1668
1837
|
};
|
|
1669
|
-
var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor =
|
|
1838
|
+
var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor = 1.25) => {
|
|
1670
1839
|
let retries = 0;
|
|
1671
1840
|
const tryRequest = async () => {
|
|
1672
1841
|
if (tokenBucket.removeTokens(1)) {
|
|
@@ -1675,7 +1844,6 @@ var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVA
|
|
|
1675
1844
|
} else if (retries < maxRetries) {
|
|
1676
1845
|
retries++;
|
|
1677
1846
|
const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
|
|
1678
|
-
console.error(`Rate limit exceeded, retrying in ${delay} ms`);
|
|
1679
1847
|
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
1680
1848
|
return tryRequest();
|
|
1681
1849
|
} else {
|
|
@@ -1711,6 +1879,22 @@ function withIndexerFallback(method) {
|
|
|
1711
1879
|
};
|
|
1712
1880
|
}
|
|
1713
1881
|
|
|
1882
|
+
// src/utils/core.ts
|
|
1883
|
+
var parseObjectAs = (object) => {
|
|
1884
|
+
if (!(object && object.content && "fields" in object.content))
|
|
1885
|
+
throw new Error(`Failed to parse object`);
|
|
1886
|
+
const fields = object.content.fields;
|
|
1887
|
+
if (typeof fields === "object" && "value" in fields) {
|
|
1888
|
+
const value = fields.value;
|
|
1889
|
+
if (typeof value === "object" && "fields" in value)
|
|
1890
|
+
return value.fields;
|
|
1891
|
+
return value;
|
|
1892
|
+
} else if (typeof fields === "object") {
|
|
1893
|
+
return fields;
|
|
1894
|
+
}
|
|
1895
|
+
return fields;
|
|
1896
|
+
};
|
|
1897
|
+
|
|
1714
1898
|
// src/models/scallopCache.ts
|
|
1715
1899
|
var ScallopCache = class {
|
|
1716
1900
|
constructor(suiKit, walletAddress, cacheOptions, tokenBucket, queryClient) {
|
|
@@ -1745,6 +1929,13 @@ var ScallopCache = class {
|
|
|
1745
1929
|
})
|
|
1746
1930
|
);
|
|
1747
1931
|
}
|
|
1932
|
+
retryFn(errCount, e) {
|
|
1933
|
+
if (errCount === 5)
|
|
1934
|
+
return false;
|
|
1935
|
+
if (e.status === 429)
|
|
1936
|
+
return true;
|
|
1937
|
+
return false;
|
|
1938
|
+
}
|
|
1748
1939
|
/**
|
|
1749
1940
|
* @description Provides cache for inspectTxn of the SuiKit.
|
|
1750
1941
|
* @param QueryInspectTxnParams
|
|
@@ -1757,9 +1948,17 @@ var ScallopCache = class {
|
|
|
1757
1948
|
typeArgs
|
|
1758
1949
|
}) {
|
|
1759
1950
|
const txBlock = new import_sui_kit.SuiTxBlock();
|
|
1760
|
-
|
|
1951
|
+
const resolvedArgs = await Promise.all(
|
|
1952
|
+
args.map(async (arg) => {
|
|
1953
|
+
if (typeof arg === "string") {
|
|
1954
|
+
return (await this.queryGetObject(arg))?.data;
|
|
1955
|
+
}
|
|
1956
|
+
return arg;
|
|
1957
|
+
})
|
|
1958
|
+
);
|
|
1959
|
+
txBlock.moveCall(queryTarget, resolvedArgs, typeArgs);
|
|
1761
1960
|
const query = await this.queryClient.fetchQuery({
|
|
1762
|
-
retry:
|
|
1961
|
+
retry: this.retryFn,
|
|
1763
1962
|
retryDelay: 1e3,
|
|
1764
1963
|
queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
|
|
1765
1964
|
queryFn: async () => {
|
|
@@ -1779,9 +1978,9 @@ var ScallopCache = class {
|
|
|
1779
1978
|
*/
|
|
1780
1979
|
async queryGetObject(objectId, options) {
|
|
1781
1980
|
return this.queryClient.fetchQuery({
|
|
1782
|
-
retry:
|
|
1981
|
+
retry: this.retryFn,
|
|
1783
1982
|
retryDelay: 1e3,
|
|
1784
|
-
queryKey: queryKeys.rpc.getObject(objectId,
|
|
1983
|
+
queryKey: queryKeys.rpc.getObject(objectId, options),
|
|
1785
1984
|
queryFn: async () => {
|
|
1786
1985
|
return await callWithRateLimit(
|
|
1787
1986
|
this.tokenBucket,
|
|
@@ -1804,7 +2003,7 @@ var ScallopCache = class {
|
|
|
1804
2003
|
if (objectIds.length === 0)
|
|
1805
2004
|
return [];
|
|
1806
2005
|
return this.queryClient.fetchQuery({
|
|
1807
|
-
retry:
|
|
2006
|
+
retry: this.retryFn,
|
|
1808
2007
|
retryDelay: 1e3,
|
|
1809
2008
|
queryKey: queryKeys.rpc.getObjects(
|
|
1810
2009
|
objectIds,
|
|
@@ -1812,10 +2011,28 @@ var ScallopCache = class {
|
|
|
1812
2011
|
options
|
|
1813
2012
|
),
|
|
1814
2013
|
queryFn: async () => {
|
|
1815
|
-
|
|
2014
|
+
const results = await callWithRateLimit(
|
|
1816
2015
|
this.tokenBucket,
|
|
1817
2016
|
async () => await this.suiKit.getObjects(objectIds, options)
|
|
1818
2017
|
);
|
|
2018
|
+
if (results) {
|
|
2019
|
+
results.forEach((result) => {
|
|
2020
|
+
this.queryClient.setQueriesData(
|
|
2021
|
+
{
|
|
2022
|
+
exact: false,
|
|
2023
|
+
queryKey: queryKeys.rpc.getObject(result.objectId, options)
|
|
2024
|
+
},
|
|
2025
|
+
{
|
|
2026
|
+
data: result,
|
|
2027
|
+
error: null
|
|
2028
|
+
},
|
|
2029
|
+
{
|
|
2030
|
+
updatedAt: Date.now()
|
|
2031
|
+
}
|
|
2032
|
+
);
|
|
2033
|
+
});
|
|
2034
|
+
}
|
|
2035
|
+
return results;
|
|
1819
2036
|
}
|
|
1820
2037
|
});
|
|
1821
2038
|
}
|
|
@@ -1826,7 +2043,7 @@ var ScallopCache = class {
|
|
|
1826
2043
|
*/
|
|
1827
2044
|
async queryGetOwnedObjects(input) {
|
|
1828
2045
|
return this.queryClient.fetchQuery({
|
|
1829
|
-
retry:
|
|
2046
|
+
retry: this.retryFn,
|
|
1830
2047
|
retryDelay: 1e3,
|
|
1831
2048
|
queryKey: queryKeys.rpc.getOwnedObjects(input),
|
|
1832
2049
|
queryFn: async () => {
|
|
@@ -1839,7 +2056,7 @@ var ScallopCache = class {
|
|
|
1839
2056
|
}
|
|
1840
2057
|
async queryGetDynamicFields(input) {
|
|
1841
2058
|
return this.queryClient.fetchQuery({
|
|
1842
|
-
retry:
|
|
2059
|
+
retry: this.retryFn,
|
|
1843
2060
|
retryDelay: 1e3,
|
|
1844
2061
|
queryKey: queryKeys.rpc.getDynamicFields(input),
|
|
1845
2062
|
queryFn: async () => {
|
|
@@ -1852,7 +2069,7 @@ var ScallopCache = class {
|
|
|
1852
2069
|
}
|
|
1853
2070
|
async queryGetDynamicFieldObject(input) {
|
|
1854
2071
|
return this.queryClient.fetchQuery({
|
|
1855
|
-
retry:
|
|
2072
|
+
retry: this.retryFn,
|
|
1856
2073
|
retryDelay: (attemptIndex) => Math.min(1e3 * attemptIndex, 8e3),
|
|
1857
2074
|
queryKey: queryKeys.rpc.getDynamicFieldObject(input),
|
|
1858
2075
|
queryFn: async () => {
|
|
@@ -1865,7 +2082,7 @@ var ScallopCache = class {
|
|
|
1865
2082
|
}
|
|
1866
2083
|
async queryGetAllCoinBalances(owner) {
|
|
1867
2084
|
return this.queryClient.fetchQuery({
|
|
1868
|
-
retry:
|
|
2085
|
+
retry: this.retryFn,
|
|
1869
2086
|
retryDelay: 1e3,
|
|
1870
2087
|
queryKey: queryKeys.rpc.getAllCoinBalances(owner),
|
|
1871
2088
|
queryFn: async () => {
|
|
@@ -2559,10 +2776,10 @@ var ScallopAddress = class {
|
|
|
2559
2776
|
};
|
|
2560
2777
|
|
|
2561
2778
|
// src/models/scallopClient.ts
|
|
2562
|
-
var
|
|
2779
|
+
var import_utils26 = require("@mysten/sui/utils");
|
|
2563
2780
|
|
|
2564
2781
|
// src/models/scallopUtils.ts
|
|
2565
|
-
var
|
|
2782
|
+
var import_utils11 = require("@mysten/sui/utils");
|
|
2566
2783
|
var import_pyth_sui_js = require("@pythnetwork/pyth-sui-js");
|
|
2567
2784
|
|
|
2568
2785
|
// src/queries/borrowIncentiveQuery.ts
|
|
@@ -2584,7 +2801,7 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
|
|
|
2584
2801
|
...SUPPORT_BORROW_INCENTIVE_POOLS
|
|
2585
2802
|
], indexer = false, marketPools, coinPrices) => {
|
|
2586
2803
|
const borrowIncentivePools = {};
|
|
2587
|
-
marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices, indexer });
|
|
2804
|
+
marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices, indexer })).pools;
|
|
2588
2805
|
coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools });
|
|
2589
2806
|
if (indexer) {
|
|
2590
2807
|
const borrowIncentivePoolsIndexer = await query.indexer.getBorrowIncentivePools();
|
|
@@ -2757,7 +2974,7 @@ var getBindedVeScaKey = async ({
|
|
|
2757
2974
|
};
|
|
2758
2975
|
|
|
2759
2976
|
// src/queries/coreQuery.ts
|
|
2760
|
-
var
|
|
2977
|
+
var import_utils6 = require("@mysten/sui/utils");
|
|
2761
2978
|
var import_bignumber3 = __toESM(require("bignumber.js"));
|
|
2762
2979
|
|
|
2763
2980
|
// src/queries/supplyLimitQuery.ts
|
|
@@ -2817,9 +3034,14 @@ var isolatedAssetZod = import_zod2.z.object({
|
|
|
2817
3034
|
})
|
|
2818
3035
|
});
|
|
2819
3036
|
var isolatedAssetKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
|
|
2820
|
-
var getIsolatedAssets = async (
|
|
3037
|
+
var getIsolatedAssets = async (query) => {
|
|
3038
|
+
if (SUPPORT_POOLS.every((t) => !!POOL_ADDRESSES[t])) {
|
|
3039
|
+
return SUPPORT_POOLS.filter(
|
|
3040
|
+
(t) => !!POOL_ADDRESSES[t]?.isolatedAssetKey && !!POOL_ADDRESSES[t]?.coinType
|
|
3041
|
+
).map((t) => POOL_ADDRESSES[t]?.coinType);
|
|
3042
|
+
}
|
|
2821
3043
|
try {
|
|
2822
|
-
const marketObject = address.get("core.market");
|
|
3044
|
+
const marketObject = query.address.get("core.market");
|
|
2823
3045
|
const isolatedAssets = [];
|
|
2824
3046
|
if (!marketObject)
|
|
2825
3047
|
return isolatedAssets;
|
|
@@ -2829,7 +3051,7 @@ var getIsolatedAssets = async (address) => {
|
|
|
2829
3051
|
return dynamicField.name.type === isolatedAssetKeyType;
|
|
2830
3052
|
};
|
|
2831
3053
|
do {
|
|
2832
|
-
const response = await
|
|
3054
|
+
const response = await query.cache.queryGetDynamicFields({
|
|
2833
3055
|
parentId: marketObject,
|
|
2834
3056
|
cursor: nextCursor,
|
|
2835
3057
|
limit: 10
|
|
@@ -2852,32 +3074,30 @@ var getIsolatedAssets = async (address) => {
|
|
|
2852
3074
|
}
|
|
2853
3075
|
};
|
|
2854
3076
|
var isIsolatedAsset = async (utils, coinName) => {
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
3077
|
+
if (POOL_ADDRESSES[coinName]) {
|
|
3078
|
+
return !!POOL_ADDRESSES[coinName].isolatedAssetKey;
|
|
3079
|
+
}
|
|
3080
|
+
const marketObject = utils.address.get("core.market");
|
|
3081
|
+
const cachedData = utils.address.cache.queryClient.getQueryData([
|
|
3082
|
+
"getDynamicFields",
|
|
3083
|
+
marketObject
|
|
3084
|
+
]);
|
|
3085
|
+
if (cachedData) {
|
|
3086
|
+
const coinType2 = utils.parseCoinType(coinName);
|
|
3087
|
+
return cachedData.includes(coinType2);
|
|
3088
|
+
}
|
|
3089
|
+
const coinType = utils.parseCoinType(coinName).slice(2);
|
|
3090
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
3091
|
+
parentId: marketObject,
|
|
3092
|
+
name: {
|
|
3093
|
+
type: isolatedAssetKeyType,
|
|
3094
|
+
value: coinType
|
|
2864
3095
|
}
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
name: {
|
|
2869
|
-
type: isolatedAssetKeyType,
|
|
2870
|
-
value: coinType
|
|
2871
|
-
}
|
|
2872
|
-
});
|
|
2873
|
-
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
2874
|
-
if (!parsedData.success)
|
|
2875
|
-
return false;
|
|
2876
|
-
return parsedData.data.fields.value;
|
|
2877
|
-
} catch (e) {
|
|
2878
|
-
console.error(e);
|
|
3096
|
+
});
|
|
3097
|
+
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
3098
|
+
if (!parsedData.success)
|
|
2879
3099
|
return false;
|
|
2880
|
-
|
|
3100
|
+
return parsedData.data.fields.value;
|
|
2881
3101
|
};
|
|
2882
3102
|
|
|
2883
3103
|
// src/queries/borrowLimitQuery.ts
|
|
@@ -2920,6 +3140,17 @@ var getBorrowLimit = async (utils, poolName) => {
|
|
|
2920
3140
|
}
|
|
2921
3141
|
};
|
|
2922
3142
|
|
|
3143
|
+
// src/queries/objectsQuery.ts
|
|
3144
|
+
var queryMultipleObjects = async (cache, objectIds, options, partitionSize = 50) => {
|
|
3145
|
+
const objectIdsPartition = partitionArray(objectIds, partitionSize);
|
|
3146
|
+
const objects = [];
|
|
3147
|
+
for (const objectIds2 of objectIdsPartition) {
|
|
3148
|
+
const result = await cache.queryGetObjects(objectIds2, options);
|
|
3149
|
+
objects.push(...result);
|
|
3150
|
+
}
|
|
3151
|
+
return objects;
|
|
3152
|
+
};
|
|
3153
|
+
|
|
2923
3154
|
// src/queries/coreQuery.ts
|
|
2924
3155
|
var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
2925
3156
|
coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
|
|
@@ -2951,7 +3182,7 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2951
3182
|
const queryResult = await query.cache.queryInspectTxn({ queryTarget, args });
|
|
2952
3183
|
const marketData = queryResult?.events[0]?.parsedJson;
|
|
2953
3184
|
for (const pool of marketData?.pools ?? []) {
|
|
2954
|
-
const coinType = (0,
|
|
3185
|
+
const coinType = (0, import_utils6.normalizeStructTag)(pool.type.name);
|
|
2955
3186
|
const poolCoinName = query.utils.parseCoinNameFromType(coinType);
|
|
2956
3187
|
const coinPrice = coinPrices[poolCoinName] ?? 0;
|
|
2957
3188
|
if (!SUPPORT_POOLS.includes(poolCoinName)) {
|
|
@@ -2976,19 +3207,15 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2976
3207
|
borrowRateOnMidKink: pool.borrowRateOnMidKink,
|
|
2977
3208
|
highKink: pool.highKink,
|
|
2978
3209
|
midKink: pool.midKink,
|
|
2979
|
-
minBorrowAmount: pool.minBorrowAmount
|
|
3210
|
+
minBorrowAmount: pool.minBorrowAmount,
|
|
3211
|
+
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
3212
|
+
supplyLimit: await getSupplyLimit(query.utils, poolCoinName) ?? "0",
|
|
3213
|
+
borrowLimit: await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
2980
3214
|
});
|
|
2981
3215
|
const calculatedMarketPoolData = calculateMarketPoolData(
|
|
2982
3216
|
query.utils,
|
|
2983
3217
|
parsedMarketPoolData
|
|
2984
3218
|
);
|
|
2985
|
-
const coinDecimal = query.utils.getCoinDecimal(poolCoinName);
|
|
2986
|
-
const maxSupplyCoin = (0, import_bignumber3.default)(
|
|
2987
|
-
await getSupplyLimit(query.utils, poolCoinName) ?? "0"
|
|
2988
|
-
).shiftedBy(-coinDecimal).toNumber();
|
|
2989
|
-
const maxBorrowCoin = (0, import_bignumber3.default)(
|
|
2990
|
-
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
2991
|
-
).shiftedBy(-coinDecimal).toNumber();
|
|
2992
3219
|
pools[poolCoinName] = {
|
|
2993
3220
|
coinName: poolCoinName,
|
|
2994
3221
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
@@ -2998,7 +3225,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2998
3225
|
query.utils.parseMarketCoinName(poolCoinName)
|
|
2999
3226
|
),
|
|
3000
3227
|
coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
|
|
3001
|
-
coinDecimal,
|
|
3002
3228
|
coinPrice,
|
|
3003
3229
|
highKink: parsedMarketPoolData.highKink,
|
|
3004
3230
|
midKink: parsedMarketPoolData.midKink,
|
|
@@ -3007,15 +3233,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
3007
3233
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
3008
3234
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
3009
3235
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
3010
|
-
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
3011
|
-
// isIsolated: false,
|
|
3012
|
-
maxSupplyCoin,
|
|
3013
|
-
maxBorrowCoin,
|
|
3014
3236
|
...calculatedMarketPoolData
|
|
3015
3237
|
};
|
|
3016
3238
|
}
|
|
3017
3239
|
for (const collateral of marketData?.collaterals ?? []) {
|
|
3018
|
-
const coinType = (0,
|
|
3240
|
+
const coinType = (0, import_utils6.normalizeStructTag)(collateral.type.name);
|
|
3019
3241
|
const collateralCoinName = query.utils.parseCoinNameFromType(coinType);
|
|
3020
3242
|
const coinPrice = coinPrices[collateralCoinName] ?? 0;
|
|
3021
3243
|
if (!SUPPORT_COLLATERALS.includes(collateralCoinName)) {
|
|
@@ -3026,10 +3248,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
3026
3248
|
collateralFactor: collateral.collateralFactor,
|
|
3027
3249
|
liquidationFactor: collateral.liquidationFactor,
|
|
3028
3250
|
liquidationDiscount: collateral.liquidationDiscount,
|
|
3029
|
-
|
|
3251
|
+
liquidationPenalty: collateral.liquidationPanelty,
|
|
3030
3252
|
liquidationReserveFactor: collateral.liquidationReserveFactor,
|
|
3031
3253
|
maxCollateralAmount: collateral.maxCollateralAmount,
|
|
3032
|
-
totalCollateralAmount: collateral.totalCollateralAmount
|
|
3254
|
+
totalCollateralAmount: collateral.totalCollateralAmount,
|
|
3255
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
|
|
3033
3256
|
});
|
|
3034
3257
|
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
3035
3258
|
query.utils,
|
|
@@ -3041,14 +3264,12 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
3041
3264
|
coinType,
|
|
3042
3265
|
marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
|
|
3043
3266
|
coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
|
|
3044
|
-
coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
|
|
3045
3267
|
coinPrice,
|
|
3046
3268
|
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
3047
3269
|
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
3048
3270
|
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
3049
|
-
|
|
3271
|
+
liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
|
|
3050
3272
|
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3051
|
-
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
3052
3273
|
...calculatedMarketCollateralData
|
|
3053
3274
|
};
|
|
3054
3275
|
}
|
|
@@ -3058,44 +3279,216 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
3058
3279
|
// data: marketData,
|
|
3059
3280
|
};
|
|
3060
3281
|
};
|
|
3061
|
-
var
|
|
3062
|
-
const
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3282
|
+
var queryRequiredMarketObjects = async (query, poolCoinNames) => {
|
|
3283
|
+
const tasks = poolCoinNames.map((t) => ({
|
|
3284
|
+
poolCoinName: t,
|
|
3285
|
+
balanceSheet: POOL_ADDRESSES[t]?.lendingPoolAddress,
|
|
3286
|
+
collateralStat: POOL_ADDRESSES[t]?.collateralPoolAddress,
|
|
3287
|
+
borrowDynamic: POOL_ADDRESSES[t]?.borrowDynamic,
|
|
3288
|
+
interestModel: POOL_ADDRESSES[t]?.interestModel,
|
|
3289
|
+
riskModel: POOL_ADDRESSES[t]?.riskModel,
|
|
3290
|
+
borrowFeeKey: POOL_ADDRESSES[t]?.borrowFeeKey,
|
|
3291
|
+
supplyLimitKey: POOL_ADDRESSES[t]?.supplyLimitKey,
|
|
3292
|
+
borrowLimitKey: POOL_ADDRESSES[t]?.borrowLimitKey,
|
|
3293
|
+
isolatedAssetKey: POOL_ADDRESSES[t]?.isolatedAssetKey
|
|
3294
|
+
}));
|
|
3295
|
+
const [
|
|
3296
|
+
balanceSheetObjects,
|
|
3297
|
+
collateralStatObjects,
|
|
3298
|
+
borrowDynamicObjects,
|
|
3299
|
+
interestModelObjects,
|
|
3300
|
+
riskModelObjects,
|
|
3301
|
+
borrowFeeObjects,
|
|
3302
|
+
supplyLimitObjects,
|
|
3303
|
+
borrowLimitObjects,
|
|
3304
|
+
isolatedAssetObjects
|
|
3305
|
+
] = await Promise.all([
|
|
3306
|
+
queryMultipleObjects(
|
|
3307
|
+
query.cache,
|
|
3308
|
+
tasks.map((task) => task.balanceSheet).filter((t) => !!t)
|
|
3309
|
+
),
|
|
3310
|
+
queryMultipleObjects(
|
|
3311
|
+
query.cache,
|
|
3312
|
+
tasks.map((task) => task.collateralStat).filter((t) => !!t)
|
|
3313
|
+
),
|
|
3314
|
+
queryMultipleObjects(
|
|
3315
|
+
query.cache,
|
|
3316
|
+
tasks.map((task) => task.borrowDynamic).filter((t) => !!t)
|
|
3317
|
+
),
|
|
3318
|
+
queryMultipleObjects(
|
|
3319
|
+
query.cache,
|
|
3320
|
+
tasks.map((task) => task.interestModel).filter((t) => !!t)
|
|
3321
|
+
),
|
|
3322
|
+
queryMultipleObjects(
|
|
3323
|
+
query.cache,
|
|
3324
|
+
tasks.map((task) => task.riskModel).filter((t) => !!t)
|
|
3325
|
+
),
|
|
3326
|
+
queryMultipleObjects(
|
|
3327
|
+
query.cache,
|
|
3328
|
+
tasks.map((task) => task.borrowFeeKey).filter((t) => !!t)
|
|
3329
|
+
),
|
|
3330
|
+
queryMultipleObjects(
|
|
3331
|
+
query.cache,
|
|
3332
|
+
tasks.map((task) => task.supplyLimitKey).filter((t) => !!t)
|
|
3333
|
+
),
|
|
3334
|
+
queryMultipleObjects(
|
|
3335
|
+
query.cache,
|
|
3336
|
+
tasks.map((task) => task.borrowLimitKey).filter((t) => !!t)
|
|
3337
|
+
),
|
|
3338
|
+
queryMultipleObjects(
|
|
3339
|
+
query.cache,
|
|
3340
|
+
tasks.map((task) => task.isolatedAssetKey).filter((t) => !!t)
|
|
3341
|
+
)
|
|
3342
|
+
]);
|
|
3343
|
+
const mapObjects = (tasks2, fetchedObjects) => {
|
|
3344
|
+
const resultMap = {};
|
|
3345
|
+
let fetchedIndex = 0;
|
|
3346
|
+
for (const task of tasks2) {
|
|
3347
|
+
const key = task[Object.keys(task)[1]];
|
|
3348
|
+
if (key) {
|
|
3349
|
+
resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
|
|
3350
|
+
fetchedIndex++;
|
|
3351
|
+
}
|
|
3352
|
+
}
|
|
3353
|
+
return resultMap;
|
|
3354
|
+
};
|
|
3355
|
+
const balanceSheetMap = mapObjects(tasks, balanceSheetObjects);
|
|
3356
|
+
const collateralStatMap = mapObjects(tasks, collateralStatObjects);
|
|
3357
|
+
const borrowDynamicMap = mapObjects(tasks, borrowDynamicObjects);
|
|
3358
|
+
const interestModelMap = mapObjects(tasks, interestModelObjects);
|
|
3359
|
+
const riskModelMap = mapObjects(tasks, riskModelObjects);
|
|
3360
|
+
const borrowFeeMap = mapObjects(tasks, borrowFeeObjects);
|
|
3361
|
+
const supplyLimitMap = mapObjects(tasks, supplyLimitObjects);
|
|
3362
|
+
const borrowLimitMap = mapObjects(tasks, borrowLimitObjects);
|
|
3363
|
+
const isolatedAssetMap = mapObjects(tasks, isolatedAssetObjects);
|
|
3364
|
+
return poolCoinNames.reduce(
|
|
3365
|
+
(acc, name) => {
|
|
3366
|
+
acc[name] = {
|
|
3367
|
+
balanceSheet: balanceSheetMap[name],
|
|
3368
|
+
collateralStat: collateralStatMap[name],
|
|
3369
|
+
borrowDynamic: borrowDynamicMap[name],
|
|
3370
|
+
interestModel: interestModelMap[name],
|
|
3371
|
+
riskModel: riskModelMap[name],
|
|
3372
|
+
borrowFeeKey: borrowFeeMap[name],
|
|
3373
|
+
supplyLimitKey: supplyLimitMap[name],
|
|
3374
|
+
borrowLimitKey: borrowLimitMap[name],
|
|
3375
|
+
isolatedAssetKey: isolatedAssetMap[name]
|
|
3376
|
+
};
|
|
3377
|
+
return acc;
|
|
3378
|
+
},
|
|
3379
|
+
{}
|
|
3380
|
+
);
|
|
3381
|
+
};
|
|
3382
|
+
var getMarketPools = async (query, poolCoinNames, indexer = false, coinPrices) => {
|
|
3066
3383
|
coinPrices = coinPrices ?? await query.utils.getCoinPrices();
|
|
3067
|
-
const
|
|
3384
|
+
const pools = {};
|
|
3385
|
+
const collaterals = {};
|
|
3068
3386
|
if (indexer) {
|
|
3069
|
-
const
|
|
3070
|
-
const
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3387
|
+
const marketIndexer = await query.indexer.getMarket();
|
|
3388
|
+
const updatePools = (item) => {
|
|
3389
|
+
item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
|
|
3390
|
+
item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
|
|
3391
|
+
pools[item.coinName] = item;
|
|
3392
|
+
};
|
|
3393
|
+
const updateCollaterals = (item) => {
|
|
3394
|
+
item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
|
|
3395
|
+
item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
|
|
3396
|
+
collaterals[item.coinName] = item;
|
|
3397
|
+
};
|
|
3398
|
+
Object.values(marketIndexer.pools).forEach(updatePools);
|
|
3399
|
+
Object.values(marketIndexer.collaterals).forEach(updateCollaterals);
|
|
3400
|
+
return {
|
|
3401
|
+
pools,
|
|
3402
|
+
collaterals
|
|
3078
3403
|
};
|
|
3079
|
-
Object.values(marketPoolsIndexer).forEach(updateMarketPool);
|
|
3080
|
-
return marketPools;
|
|
3081
3404
|
}
|
|
3405
|
+
const requiredObjects = await queryRequiredMarketObjects(
|
|
3406
|
+
query,
|
|
3407
|
+
poolCoinNames
|
|
3408
|
+
);
|
|
3082
3409
|
await Promise.allSettled(
|
|
3083
3410
|
poolCoinNames.map(async (poolCoinName) => {
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3411
|
+
try {
|
|
3412
|
+
const result = await getMarketPool(
|
|
3413
|
+
query,
|
|
3414
|
+
poolCoinName,
|
|
3415
|
+
indexer,
|
|
3416
|
+
coinPrices?.[poolCoinName] ?? 0,
|
|
3417
|
+
requiredObjects[poolCoinName]
|
|
3418
|
+
);
|
|
3419
|
+
if (result?.marketPool) {
|
|
3420
|
+
pools[poolCoinName] = result?.marketPool;
|
|
3421
|
+
}
|
|
3422
|
+
if (result?.collateral) {
|
|
3423
|
+
collaterals[poolCoinName] = result.collateral;
|
|
3424
|
+
}
|
|
3425
|
+
} catch (e) {
|
|
3426
|
+
console.error(e);
|
|
3093
3427
|
}
|
|
3094
3428
|
})
|
|
3095
3429
|
);
|
|
3096
|
-
return
|
|
3430
|
+
return {
|
|
3431
|
+
pools,
|
|
3432
|
+
collaterals
|
|
3433
|
+
};
|
|
3097
3434
|
};
|
|
3098
|
-
var
|
|
3435
|
+
var parseMarketPoolObjects = ({
|
|
3436
|
+
balanceSheet,
|
|
3437
|
+
borrowDynamic,
|
|
3438
|
+
collateralStat,
|
|
3439
|
+
interestModel,
|
|
3440
|
+
riskModel,
|
|
3441
|
+
borrowFeeKey,
|
|
3442
|
+
supplyLimitKey,
|
|
3443
|
+
borrowLimitKey,
|
|
3444
|
+
isolatedAssetKey
|
|
3445
|
+
}) => {
|
|
3446
|
+
const _balanceSheet = parseObjectAs(balanceSheet);
|
|
3447
|
+
const _interestModel = parseObjectAs(interestModel);
|
|
3448
|
+
const _borrowDynamic = parseObjectAs(borrowDynamic);
|
|
3449
|
+
const _borrowFee = parseObjectAs(borrowFeeKey);
|
|
3450
|
+
const _supplyLimit = supplyLimitKey ? parseObjectAs(supplyLimitKey) : "0";
|
|
3451
|
+
const _borrowLimit = borrowLimitKey ? parseObjectAs(borrowLimitKey) : "0";
|
|
3452
|
+
const _riskModel = riskModel ? parseObjectAs(riskModel) : void 0;
|
|
3453
|
+
const _collateralStat = collateralStat ? parseObjectAs(collateralStat) : void 0;
|
|
3454
|
+
const parsedOriginMarketCollateral = _riskModel && _collateralStat ? {
|
|
3455
|
+
type: _interestModel.type.fields,
|
|
3456
|
+
isIsolated: !!isolatedAssetKey,
|
|
3457
|
+
collateralFactor: _riskModel.collateral_factor.fields,
|
|
3458
|
+
liquidationFactor: _riskModel.liquidation_factor.fields,
|
|
3459
|
+
liquidationPenalty: _riskModel.liquidation_penalty.fields,
|
|
3460
|
+
liquidationDiscount: _riskModel.liquidation_discount.fields,
|
|
3461
|
+
liquidationReserveFactor: _riskModel.liquidation_revenue_factor.fields,
|
|
3462
|
+
maxCollateralAmount: _riskModel.max_collateral_amount,
|
|
3463
|
+
totalCollateralAmount: _collateralStat.amount
|
|
3464
|
+
} : void 0;
|
|
3465
|
+
return {
|
|
3466
|
+
type: _interestModel.type.fields,
|
|
3467
|
+
maxBorrowRate: _interestModel.max_borrow_rate.fields,
|
|
3468
|
+
interestRate: _borrowDynamic.interest_rate.fields,
|
|
3469
|
+
interestRateScale: _borrowDynamic.interest_rate_scale,
|
|
3470
|
+
borrowIndex: _borrowDynamic.borrow_index,
|
|
3471
|
+
lastUpdated: _borrowDynamic.last_updated,
|
|
3472
|
+
cash: _balanceSheet.cash,
|
|
3473
|
+
debt: _balanceSheet.debt,
|
|
3474
|
+
marketCoinSupply: _balanceSheet.market_coin_supply,
|
|
3475
|
+
reserve: _balanceSheet.revenue,
|
|
3476
|
+
reserveFactor: _interestModel.revenue_factor.fields,
|
|
3477
|
+
borrowWeight: _interestModel.borrow_weight.fields,
|
|
3478
|
+
borrowFeeRate: _borrowFee,
|
|
3479
|
+
baseBorrowRatePerSec: _interestModel.base_borrow_rate_per_sec.fields,
|
|
3480
|
+
borrowRateOnHighKink: _interestModel.borrow_rate_on_high_kink.fields,
|
|
3481
|
+
borrowRateOnMidKink: _interestModel.borrow_rate_on_mid_kink.fields,
|
|
3482
|
+
highKink: _interestModel.high_kink.fields,
|
|
3483
|
+
midKink: _interestModel.mid_kink.fields,
|
|
3484
|
+
minBorrowAmount: _interestModel.min_borrow_amount,
|
|
3485
|
+
isIsolated: !!isolatedAssetKey,
|
|
3486
|
+
supplyLimit: _supplyLimit,
|
|
3487
|
+
borrowLimit: _borrowLimit,
|
|
3488
|
+
parsedOriginMarketCollateral
|
|
3489
|
+
};
|
|
3490
|
+
};
|
|
3491
|
+
var getMarketPool = async (query, poolCoinName, indexer = false, coinPrice, requiredObjects) => {
|
|
3099
3492
|
coinPrice = coinPrice ?? (await query.utils.getCoinPrices())?.[poolCoinName];
|
|
3100
3493
|
if (indexer) {
|
|
3101
3494
|
const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
|
|
@@ -3106,135 +3499,70 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
3106
3499
|
marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
|
|
3107
3500
|
marketPoolIndexer.coinName
|
|
3108
3501
|
);
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
|
|
3117
|
-
|
|
3118
|
-
const coinType = query.utils.parseCoinType(poolCoinName);
|
|
3119
|
-
const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
|
|
3120
|
-
const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3121
|
-
parentId: balanceSheetParentId,
|
|
3122
|
-
name: {
|
|
3123
|
-
type: "0x1::type_name::TypeName",
|
|
3124
|
-
value: {
|
|
3125
|
-
name: coinType.substring(2)
|
|
3126
|
-
}
|
|
3127
|
-
}
|
|
3128
|
-
});
|
|
3129
|
-
const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
|
|
3130
|
-
if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
|
|
3131
|
-
throw new Error(
|
|
3132
|
-
`Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
|
|
3133
|
-
);
|
|
3134
|
-
const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
|
|
3135
|
-
const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
|
|
3136
|
-
const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3137
|
-
parentId: borrowIndexParentId,
|
|
3138
|
-
name: {
|
|
3139
|
-
type: "0x1::type_name::TypeName",
|
|
3140
|
-
value: {
|
|
3141
|
-
name: coinType.substring(2)
|
|
3142
|
-
}
|
|
3143
|
-
}
|
|
3144
|
-
});
|
|
3145
|
-
const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
|
|
3146
|
-
if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
|
|
3147
|
-
throw new Error(
|
|
3148
|
-
`Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
|
|
3149
|
-
);
|
|
3150
|
-
const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
|
|
3151
|
-
const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
|
|
3152
|
-
const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3153
|
-
parentId: interestModelParentId,
|
|
3154
|
-
name: {
|
|
3155
|
-
type: "0x1::type_name::TypeName",
|
|
3156
|
-
value: {
|
|
3157
|
-
name: coinType.substring(2)
|
|
3158
|
-
}
|
|
3502
|
+
let marketCollateralIndexer = void 0;
|
|
3503
|
+
if (SUPPORT_COLLATERALS.includes(poolCoinName)) {
|
|
3504
|
+
marketCollateralIndexer = await query.indexer.getMarketCollateral(
|
|
3505
|
+
poolCoinName
|
|
3506
|
+
);
|
|
3507
|
+
marketCollateralIndexer.coinPrice = coinPrice ?? marketCollateralIndexer.coinPrice;
|
|
3508
|
+
marketCollateralIndexer.coinWrappedType = query.utils.getCoinWrappedType(
|
|
3509
|
+
marketCollateralIndexer.coinName
|
|
3510
|
+
);
|
|
3159
3511
|
}
|
|
3160
|
-
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
const
|
|
3167
|
-
const
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
name: {
|
|
3171
|
-
type: `${BORROW_FEE_PROTOCOL_ID}::market_dynamic_keys::BorrowFeeKey`,
|
|
3172
|
-
value: {
|
|
3173
|
-
type: {
|
|
3174
|
-
name: coinType.substring(2)
|
|
3175
|
-
}
|
|
3176
|
-
}
|
|
3177
|
-
}
|
|
3178
|
-
});
|
|
3179
|
-
const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
|
|
3180
|
-
if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
|
|
3181
|
-
return { value: "0" };
|
|
3182
|
-
return borrowFeeDynamicFieldObject.content.fields.value.fields;
|
|
3183
|
-
};
|
|
3184
|
-
const parsedMarketPoolData = parseOriginMarketPoolData({
|
|
3185
|
-
type: interestModel.type.fields,
|
|
3186
|
-
maxBorrowRate: interestModel.max_borrow_rate.fields,
|
|
3187
|
-
interestRate: borrowIndex.interest_rate.fields,
|
|
3188
|
-
interestRateScale: borrowIndex.interest_rate_scale,
|
|
3189
|
-
borrowIndex: borrowIndex.borrow_index,
|
|
3190
|
-
lastUpdated: borrowIndex.last_updated,
|
|
3191
|
-
cash: balanceSheet.cash,
|
|
3192
|
-
debt: balanceSheet.debt,
|
|
3193
|
-
marketCoinSupply: balanceSheet.market_coin_supply,
|
|
3194
|
-
reserve: balanceSheet.revenue,
|
|
3195
|
-
reserveFactor: interestModel.revenue_factor.fields,
|
|
3196
|
-
borrowWeight: interestModel.borrow_weight.fields,
|
|
3197
|
-
borrowFeeRate: await getBorrowFee(),
|
|
3198
|
-
baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
|
|
3199
|
-
borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
|
|
3200
|
-
borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
|
|
3201
|
-
highKink: interestModel.high_kink.fields,
|
|
3202
|
-
midKink: interestModel.mid_kink.fields,
|
|
3203
|
-
minBorrowAmount: interestModel.min_borrow_amount
|
|
3204
|
-
});
|
|
3512
|
+
return {
|
|
3513
|
+
marketPool: marketPoolIndexer,
|
|
3514
|
+
collateral: marketCollateralIndexer
|
|
3515
|
+
};
|
|
3516
|
+
}
|
|
3517
|
+
requiredObjects ?? (requiredObjects = (await queryRequiredMarketObjects(query, [poolCoinName]))[poolCoinName]);
|
|
3518
|
+
const parsedMarketPoolObjects = parseMarketPoolObjects(requiredObjects);
|
|
3519
|
+
const parsedMarketPoolData = parseOriginMarketPoolData(
|
|
3520
|
+
parsedMarketPoolObjects
|
|
3521
|
+
);
|
|
3205
3522
|
const calculatedMarketPoolData = calculateMarketPoolData(
|
|
3206
3523
|
query.utils,
|
|
3207
3524
|
parsedMarketPoolData
|
|
3208
3525
|
);
|
|
3209
|
-
const
|
|
3210
|
-
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
const maxBorrowCoin = (0, import_bignumber3.default)(
|
|
3214
|
-
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
3215
|
-
).shiftedBy(-coinDecimal).toNumber();
|
|
3216
|
-
return {
|
|
3526
|
+
const parsedMarketCollateralData = parsedMarketPoolObjects.parsedOriginMarketCollateral ? parseOriginMarketCollateralData(
|
|
3527
|
+
parsedMarketPoolObjects.parsedOriginMarketCollateral
|
|
3528
|
+
) : void 0;
|
|
3529
|
+
const basePoolData = () => ({
|
|
3217
3530
|
coinName: poolCoinName,
|
|
3218
3531
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
3219
|
-
coinType: query.utils.parseCoinType(poolCoinName),
|
|
3220
3532
|
marketCoinType: query.utils.parseMarketCoinType(poolCoinName),
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
|
|
3236
|
-
|
|
3237
|
-
|
|
3533
|
+
coinType: query.utils.parseCoinType(poolCoinName)
|
|
3534
|
+
});
|
|
3535
|
+
return {
|
|
3536
|
+
marketPool: {
|
|
3537
|
+
...basePoolData(),
|
|
3538
|
+
sCoinType: query.utils.parseSCoinType(
|
|
3539
|
+
query.utils.parseMarketCoinName(poolCoinName)
|
|
3540
|
+
),
|
|
3541
|
+
coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
|
|
3542
|
+
coinPrice: coinPrice ?? 0,
|
|
3543
|
+
highKink: parsedMarketPoolData.highKink,
|
|
3544
|
+
midKink: parsedMarketPoolData.midKink,
|
|
3545
|
+
reserveFactor: parsedMarketPoolData.reserveFactor,
|
|
3546
|
+
borrowWeight: parsedMarketPoolData.borrowWeight,
|
|
3547
|
+
borrowFee: parsedMarketPoolData.borrowFee,
|
|
3548
|
+
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
3549
|
+
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
3550
|
+
...calculatedMarketPoolData
|
|
3551
|
+
},
|
|
3552
|
+
collateral: parsedMarketCollateralData ? {
|
|
3553
|
+
...basePoolData(),
|
|
3554
|
+
coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
|
|
3555
|
+
coinPrice,
|
|
3556
|
+
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
3557
|
+
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
3558
|
+
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
3559
|
+
liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
|
|
3560
|
+
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3561
|
+
...calculateMarketCollateralData(
|
|
3562
|
+
query.utils,
|
|
3563
|
+
parsedMarketCollateralData
|
|
3564
|
+
)
|
|
3565
|
+
} : void 0
|
|
3238
3566
|
};
|
|
3239
3567
|
};
|
|
3240
3568
|
var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
|
|
@@ -3329,10 +3657,11 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
|
|
|
3329
3657
|
collateralFactor: riskModel.collateral_factor.fields,
|
|
3330
3658
|
liquidationFactor: riskModel.liquidation_factor.fields,
|
|
3331
3659
|
liquidationDiscount: riskModel.liquidation_discount.fields,
|
|
3332
|
-
|
|
3660
|
+
liquidationPenalty: riskModel.liquidation_penalty.fields,
|
|
3333
3661
|
liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
|
|
3334
3662
|
maxCollateralAmount: riskModel.max_collateral_amount,
|
|
3335
|
-
totalCollateralAmount: collateralStat.amount
|
|
3663
|
+
totalCollateralAmount: collateralStat.amount,
|
|
3664
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
|
|
3336
3665
|
});
|
|
3337
3666
|
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
3338
3667
|
query.utils,
|
|
@@ -3344,14 +3673,12 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
|
|
|
3344
3673
|
coinType: query.utils.parseCoinType(collateralCoinName),
|
|
3345
3674
|
marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
|
|
3346
3675
|
coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
|
|
3347
|
-
coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
|
|
3348
3676
|
coinPrice: coinPrice ?? 0,
|
|
3349
3677
|
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
3350
3678
|
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
3351
3679
|
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
3352
|
-
|
|
3680
|
+
liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
|
|
3353
3681
|
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3354
|
-
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
3355
3682
|
...calculatedMarketCollateralData
|
|
3356
3683
|
};
|
|
3357
3684
|
};
|
|
@@ -3592,10 +3919,10 @@ var getLendings = async (query, poolCoinNames = [...SUPPORT_POOLS], ownerAddress
|
|
|
3592
3919
|
(marketCoinName) => SUPPORT_SPOOLS.includes(marketCoinName)
|
|
3593
3920
|
);
|
|
3594
3921
|
const coinPrices = await query.utils.getCoinPrices();
|
|
3595
|
-
const marketPools = await query.getMarketPools(poolCoinNames, {
|
|
3922
|
+
const marketPools = (await query.getMarketPools(poolCoinNames, {
|
|
3596
3923
|
indexer,
|
|
3597
3924
|
coinPrices
|
|
3598
|
-
});
|
|
3925
|
+
})).pools;
|
|
3599
3926
|
const spools = await query.getSpools(stakeMarketCoinNames, {
|
|
3600
3927
|
indexer,
|
|
3601
3928
|
marketPools,
|
|
@@ -3764,7 +4091,7 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
|
|
|
3764
4091
|
};
|
|
3765
4092
|
var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
|
|
3766
4093
|
const coinPrices = await query.utils.getCoinPrices();
|
|
3767
|
-
const market = await query.
|
|
4094
|
+
const market = await query.getMarketPools(void 0, { coinPrices, indexer });
|
|
3768
4095
|
const [coinAmounts, obligations] = await Promise.all([
|
|
3769
4096
|
query.getCoinAmounts(void 0, ownerAddress),
|
|
3770
4097
|
query.getObligations(ownerAddress)
|
|
@@ -3792,7 +4119,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
|
|
|
3792
4119
|
const collateralAssetCoinNames = [
|
|
3793
4120
|
...SUPPORT_COLLATERALS
|
|
3794
4121
|
];
|
|
3795
|
-
market = market ?? await query.
|
|
4122
|
+
market = market ?? await query.getMarketPools(void 0, { indexer });
|
|
3796
4123
|
coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools: market.pools });
|
|
3797
4124
|
coinAmounts = coinAmounts || await query.getCoinAmounts(coinNames, ownerAddress);
|
|
3798
4125
|
const [obligationQuery, borrowIncentivePools, borrowIncentiveAccounts] = await Promise.all([
|
|
@@ -4083,7 +4410,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
|
|
|
4083
4410
|
return obligationAccount;
|
|
4084
4411
|
};
|
|
4085
4412
|
var getTotalValueLocked = async (query, indexer = false) => {
|
|
4086
|
-
const market = await query.
|
|
4413
|
+
const market = await query.getMarketPools(void 0, { indexer });
|
|
4087
4414
|
let supplyValue = (0, import_bignumber5.default)(0);
|
|
4088
4415
|
let borrowValue = (0, import_bignumber5.default)(0);
|
|
4089
4416
|
if (indexer) {
|
|
@@ -4204,7 +4531,7 @@ var getPythPrices = async ({
|
|
|
4204
4531
|
};
|
|
4205
4532
|
var getAllCoinPrices = async (query, marketPools, coinPrices) => {
|
|
4206
4533
|
coinPrices = coinPrices ?? await query.utils.getCoinPrices();
|
|
4207
|
-
marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices });
|
|
4534
|
+
marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices })).pools;
|
|
4208
4535
|
if (!marketPools) {
|
|
4209
4536
|
throw new Error(`Failed to fetch market pool for getAllCoinPrices`);
|
|
4210
4537
|
}
|
|
@@ -4329,13 +4656,81 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
|
|
|
4329
4656
|
};
|
|
4330
4657
|
|
|
4331
4658
|
// src/queries/spoolQuery.ts
|
|
4332
|
-
var
|
|
4659
|
+
var import_utils9 = require("@mysten/sui/utils");
|
|
4660
|
+
var queryRequiredSpoolObjects = async (query, stakePoolCoinNames) => {
|
|
4661
|
+
const tasks = stakePoolCoinNames.map((t, idx) => ({
|
|
4662
|
+
poolCoinName: stakePoolCoinNames[idx],
|
|
4663
|
+
spool: POOL_ADDRESSES[t]?.spool,
|
|
4664
|
+
spoolReward: POOL_ADDRESSES[t]?.spoolReward,
|
|
4665
|
+
sCoinTreasury: POOL_ADDRESSES[t]?.sCoinTreasury
|
|
4666
|
+
}));
|
|
4667
|
+
const [spoolObjects, spoolRewardObjects, sCoinTreasuryObjects] = await Promise.all([
|
|
4668
|
+
queryMultipleObjects(
|
|
4669
|
+
query.cache,
|
|
4670
|
+
tasks.map((task) => task.spool).filter((t) => !!t)
|
|
4671
|
+
),
|
|
4672
|
+
queryMultipleObjects(
|
|
4673
|
+
query.cache,
|
|
4674
|
+
tasks.map((task) => task.spoolReward).filter((t) => !!t)
|
|
4675
|
+
),
|
|
4676
|
+
queryMultipleObjects(
|
|
4677
|
+
query.cache,
|
|
4678
|
+
tasks.map((task) => task.sCoinTreasury).filter((t) => !!t)
|
|
4679
|
+
)
|
|
4680
|
+
]);
|
|
4681
|
+
const mapObjects = (tasks2, fetchedObjects) => {
|
|
4682
|
+
const resultMap = {};
|
|
4683
|
+
let fetchedIndex = 0;
|
|
4684
|
+
for (const task of tasks2) {
|
|
4685
|
+
const key = task[Object.keys(task)[1]];
|
|
4686
|
+
if (key) {
|
|
4687
|
+
resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
|
|
4688
|
+
fetchedIndex++;
|
|
4689
|
+
}
|
|
4690
|
+
}
|
|
4691
|
+
return resultMap;
|
|
4692
|
+
};
|
|
4693
|
+
const spoolMap = mapObjects(tasks, spoolObjects);
|
|
4694
|
+
const spoolRewardMap = mapObjects(tasks, spoolRewardObjects);
|
|
4695
|
+
const sCoinTreasuryMap = mapObjects(tasks, sCoinTreasuryObjects);
|
|
4696
|
+
return stakePoolCoinNames.reduce(
|
|
4697
|
+
(acc, name) => {
|
|
4698
|
+
acc[name] = {
|
|
4699
|
+
spool: spoolMap[name],
|
|
4700
|
+
spoolReward: spoolRewardMap[name],
|
|
4701
|
+
sCoinTreasury: sCoinTreasuryMap[name]
|
|
4702
|
+
};
|
|
4703
|
+
return acc;
|
|
4704
|
+
},
|
|
4705
|
+
{}
|
|
4706
|
+
);
|
|
4707
|
+
};
|
|
4708
|
+
var parseSpoolObjects = ({
|
|
4709
|
+
spool,
|
|
4710
|
+
spoolReward
|
|
4711
|
+
}) => {
|
|
4712
|
+
const _spool = parseObjectAs(spool);
|
|
4713
|
+
const _spoolReward = parseObjectAs(spoolReward);
|
|
4714
|
+
return {
|
|
4715
|
+
stakeType: _spool.stake_type,
|
|
4716
|
+
maxDistributedPoint: _spool.max_distributed_point,
|
|
4717
|
+
distributedPoint: _spool.distributed_point,
|
|
4718
|
+
distributedPointPerPeriod: _spool.distributed_point_per_period,
|
|
4719
|
+
pointDistributionTime: _spool.point_distribution_time,
|
|
4720
|
+
maxStake: _spool.max_stakes,
|
|
4721
|
+
stakes: _spool.stakes,
|
|
4722
|
+
index: _spool.index,
|
|
4723
|
+
createdAt: _spool.created_at,
|
|
4724
|
+
lastUpdate: _spool.last_update,
|
|
4725
|
+
..._spoolReward
|
|
4726
|
+
};
|
|
4727
|
+
};
|
|
4333
4728
|
var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexer = false, marketPools, coinPrices) => {
|
|
4334
4729
|
const stakeCoinNames = stakeMarketCoinNames.map(
|
|
4335
4730
|
(stakeMarketCoinName) => query.utils.parseCoinName(stakeMarketCoinName)
|
|
4336
4731
|
);
|
|
4337
|
-
|
|
4338
|
-
|
|
4732
|
+
marketPools = marketPools ?? (await query.getMarketPools(stakeCoinNames, { indexer })).pools;
|
|
4733
|
+
coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools }) ?? {};
|
|
4339
4734
|
if (!marketPools)
|
|
4340
4735
|
throw new Error(`Fail to fetch marketPools for ${stakeCoinNames}`);
|
|
4341
4736
|
const spools = {};
|
|
@@ -4350,126 +4745,93 @@ var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexe
|
|
|
4350
4745
|
const rewardCoinName = query.utils.getSpoolRewardCoinName(
|
|
4351
4746
|
spool.marketCoinName
|
|
4352
4747
|
);
|
|
4353
|
-
const marketPool = marketPools[coinName];
|
|
4354
4748
|
spool.coinPrice = coinPrices[coinName] ?? spool.coinPrice;
|
|
4355
|
-
spool.marketCoinPrice = coinPrices[
|
|
4749
|
+
spool.marketCoinPrice = coinPrices[spool.marketCoinName] ?? spool.marketCoinPrice;
|
|
4356
4750
|
spool.rewardCoinPrice = coinPrices[rewardCoinName] ?? spool.rewardCoinPrice;
|
|
4357
4751
|
spools[spool.marketCoinName] = spool;
|
|
4358
4752
|
};
|
|
4359
4753
|
Object.values(spoolsIndexer).forEach(updateSpools);
|
|
4360
4754
|
return spools;
|
|
4361
4755
|
}
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
|
|
4369
|
-
|
|
4370
|
-
|
|
4371
|
-
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
|
|
4756
|
+
const requiredObjects = await queryRequiredSpoolObjects(
|
|
4757
|
+
query,
|
|
4758
|
+
stakeCoinNames
|
|
4759
|
+
);
|
|
4760
|
+
await Promise.allSettled(
|
|
4761
|
+
stakeMarketCoinNames.map(async (stakeMarketCoinName, idx) => {
|
|
4762
|
+
try {
|
|
4763
|
+
const stakeCoinName = stakeCoinNames[idx];
|
|
4764
|
+
const spool = await getSpool(
|
|
4765
|
+
query,
|
|
4766
|
+
stakeMarketCoinName,
|
|
4767
|
+
indexer,
|
|
4768
|
+
coinPrices,
|
|
4769
|
+
requiredObjects[stakeCoinName]
|
|
4770
|
+
);
|
|
4771
|
+
if (spool) {
|
|
4772
|
+
spools[stakeMarketCoinName] = spool;
|
|
4773
|
+
}
|
|
4774
|
+
} catch (e) {
|
|
4775
|
+
console.error(e);
|
|
4776
|
+
}
|
|
4777
|
+
})
|
|
4778
|
+
);
|
|
4375
4779
|
return spools;
|
|
4376
4780
|
};
|
|
4377
|
-
var getSpool = async (query, marketCoinName, indexer = false,
|
|
4781
|
+
var getSpool = async (query, marketCoinName, indexer = false, coinPrices, requiredObjects) => {
|
|
4378
4782
|
const coinName = query.utils.parseCoinName(marketCoinName);
|
|
4379
|
-
|
|
4380
|
-
if (!marketPool) {
|
|
4381
|
-
throw new Error(`Failed to fetch marketPool for ${marketCoinName}`);
|
|
4382
|
-
}
|
|
4383
|
-
const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
|
|
4384
|
-
const rewardPoolId = query.address.get(
|
|
4385
|
-
`spool.pools.${marketCoinName}.rewardPoolId`
|
|
4386
|
-
);
|
|
4387
|
-
let spool = void 0;
|
|
4388
|
-
coinPrices = coinPrices || await query.utils.getCoinPrices();
|
|
4783
|
+
coinPrices = coinPrices || await query.getAllCoinPrices();
|
|
4389
4784
|
if (indexer) {
|
|
4390
4785
|
const spoolIndexer = await query.indexer.getSpool(marketCoinName);
|
|
4391
4786
|
const coinName2 = query.utils.parseCoinName(marketCoinName);
|
|
4392
4787
|
const rewardCoinName2 = query.utils.getSpoolRewardCoinName(marketCoinName);
|
|
4393
|
-
spoolIndexer.coinPrice = coinPrices?.[coinName2]
|
|
4394
|
-
spoolIndexer.marketCoinPrice =
|
|
4395
|
-
spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2]
|
|
4788
|
+
spoolIndexer.coinPrice = coinPrices?.[coinName2] ?? spoolIndexer.coinPrice;
|
|
4789
|
+
spoolIndexer.marketCoinPrice = coinPrices?.[marketCoinName] ?? spoolIndexer.marketCoinPrice;
|
|
4790
|
+
spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2] ?? spoolIndexer.rewardCoinPrice;
|
|
4396
4791
|
return spoolIndexer;
|
|
4397
4792
|
}
|
|
4398
|
-
|
|
4399
|
-
[poolId, rewardPoolId],
|
|
4400
|
-
{
|
|
4401
|
-
showContent: true
|
|
4402
|
-
}
|
|
4403
|
-
);
|
|
4404
|
-
if (!(spoolObjectResponse[0] && spoolObjectResponse[1])) {
|
|
4405
|
-
throw new Error("Fail to fetch spoolObjectResponse!");
|
|
4406
|
-
}
|
|
4793
|
+
requiredObjects ?? (requiredObjects = (await queryRequiredSpoolObjects(query, [coinName]))[coinName]);
|
|
4407
4794
|
const rewardCoinName = query.utils.getSpoolRewardCoinName(marketCoinName);
|
|
4408
4795
|
coinPrices = coinPrices || await query.utils.getCoinPrices();
|
|
4409
|
-
const
|
|
4410
|
-
const
|
|
4411
|
-
|
|
4412
|
-
|
|
4413
|
-
|
|
4414
|
-
|
|
4415
|
-
|
|
4416
|
-
|
|
4417
|
-
|
|
4418
|
-
|
|
4419
|
-
|
|
4420
|
-
|
|
4421
|
-
|
|
4422
|
-
|
|
4423
|
-
|
|
4424
|
-
|
|
4425
|
-
|
|
4426
|
-
|
|
4427
|
-
|
|
4428
|
-
|
|
4429
|
-
|
|
4430
|
-
|
|
4431
|
-
)
|
|
4432
|
-
|
|
4433
|
-
|
|
4434
|
-
|
|
4435
|
-
|
|
4436
|
-
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
rewardCoinDecimal
|
|
4449
|
-
);
|
|
4450
|
-
spool = {
|
|
4451
|
-
marketCoinName,
|
|
4452
|
-
symbol: query.utils.parseSymbol(marketCoinName),
|
|
4453
|
-
coinType: query.utils.parseCoinType(coinName),
|
|
4454
|
-
marketCoinType: query.utils.parseMarketCoinType(coinName),
|
|
4455
|
-
rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
|
|
4456
|
-
sCoinType: marketPool.sCoinType,
|
|
4457
|
-
coinDecimal: query.utils.getCoinDecimal(coinName),
|
|
4458
|
-
rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
|
|
4459
|
-
coinPrice: coinPrices?.[coinName] ?? 0,
|
|
4460
|
-
marketCoinPrice,
|
|
4461
|
-
rewardCoinPrice,
|
|
4462
|
-
maxPoint: parsedSpoolData.maxPoint,
|
|
4463
|
-
distributedPoint: parsedSpoolData.distributedPoint,
|
|
4464
|
-
maxStake: parsedSpoolData.maxStake,
|
|
4465
|
-
...calculatedSpoolData,
|
|
4466
|
-
exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
|
|
4467
|
-
exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
|
|
4468
|
-
...calculatedRewardPoolData
|
|
4469
|
-
};
|
|
4470
|
-
}
|
|
4471
|
-
}
|
|
4472
|
-
return spool;
|
|
4796
|
+
const parsedSpoolObjects = parseSpoolObjects(requiredObjects);
|
|
4797
|
+
const parsedSpoolData = parseOriginSpoolData(parsedSpoolObjects);
|
|
4798
|
+
const marketCoinPrice = coinPrices?.[marketCoinName] ?? 0;
|
|
4799
|
+
const marketCoinDecimal = query.utils.getCoinDecimal(marketCoinName);
|
|
4800
|
+
const calculatedSpoolData = calculateSpoolData(
|
|
4801
|
+
parsedSpoolData,
|
|
4802
|
+
marketCoinPrice,
|
|
4803
|
+
marketCoinDecimal
|
|
4804
|
+
);
|
|
4805
|
+
const parsedSpoolRewardPoolData = parseOriginSpoolRewardPoolData(parsedSpoolObjects);
|
|
4806
|
+
const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
|
|
4807
|
+
const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
|
|
4808
|
+
const calculatedRewardPoolData = calculateSpoolRewardPoolData(
|
|
4809
|
+
parsedSpoolData,
|
|
4810
|
+
parsedSpoolRewardPoolData,
|
|
4811
|
+
calculatedSpoolData,
|
|
4812
|
+
rewardCoinPrice,
|
|
4813
|
+
rewardCoinDecimal
|
|
4814
|
+
);
|
|
4815
|
+
return {
|
|
4816
|
+
marketCoinName,
|
|
4817
|
+
symbol: query.utils.parseSymbol(marketCoinName),
|
|
4818
|
+
coinType: query.utils.parseCoinType(coinName),
|
|
4819
|
+
marketCoinType: query.utils.parseMarketCoinType(coinName),
|
|
4820
|
+
rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
|
|
4821
|
+
sCoinType: query.utils.parseSCoinType(marketCoinName),
|
|
4822
|
+
coinDecimal: query.utils.getCoinDecimal(coinName),
|
|
4823
|
+
rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
|
|
4824
|
+
coinPrice: coinPrices?.[coinName] ?? 0,
|
|
4825
|
+
marketCoinPrice,
|
|
4826
|
+
rewardCoinPrice,
|
|
4827
|
+
maxPoint: parsedSpoolData.maxPoint,
|
|
4828
|
+
distributedPoint: parsedSpoolData.distributedPoint,
|
|
4829
|
+
maxStake: parsedSpoolData.maxStake,
|
|
4830
|
+
...calculatedSpoolData,
|
|
4831
|
+
exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
|
|
4832
|
+
exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
|
|
4833
|
+
...calculatedRewardPoolData
|
|
4834
|
+
};
|
|
4473
4835
|
};
|
|
4474
4836
|
var getStakeAccounts = async ({
|
|
4475
4837
|
utils
|
|
@@ -4546,14 +4908,14 @@ var getStakeAccounts = async ({
|
|
|
4546
4908
|
svsui: stakeAccounts.svsui,
|
|
4547
4909
|
susdc: stakeAccounts.susdc
|
|
4548
4910
|
};
|
|
4549
|
-
const normalizedType = (0,
|
|
4911
|
+
const normalizedType = (0, import_utils9.normalizeStructTag)(type);
|
|
4550
4912
|
const stakeAccountArray = stakeMarketCoinTypeMap[reversedStakeMarketCoinTypes[normalizedType]];
|
|
4551
4913
|
if (stakeAccountArray) {
|
|
4552
4914
|
stakeAccountArray.push({
|
|
4553
4915
|
id,
|
|
4554
4916
|
type: normalizedType,
|
|
4555
4917
|
stakePoolId,
|
|
4556
|
-
stakeType: (0,
|
|
4918
|
+
stakeType: (0, import_utils9.normalizeStructTag)(stakeType),
|
|
4557
4919
|
staked,
|
|
4558
4920
|
index,
|
|
4559
4921
|
points,
|
|
@@ -4591,13 +4953,13 @@ var getStakePool = async ({
|
|
|
4591
4953
|
const lastUpdate = Number(fields.last_update);
|
|
4592
4954
|
stakePool = {
|
|
4593
4955
|
id,
|
|
4594
|
-
type: (0,
|
|
4956
|
+
type: (0, import_utils9.normalizeStructTag)(type),
|
|
4595
4957
|
maxPoint,
|
|
4596
4958
|
distributedPoint,
|
|
4597
4959
|
pointPerPeriod,
|
|
4598
4960
|
period,
|
|
4599
4961
|
maxStake,
|
|
4600
|
-
stakeType: (0,
|
|
4962
|
+
stakeType: (0, import_utils9.normalizeStructTag)(stakeType),
|
|
4601
4963
|
totalStaked,
|
|
4602
4964
|
index,
|
|
4603
4965
|
createdAt,
|
|
@@ -4636,7 +4998,7 @@ var getStakeRewardPool = async ({
|
|
|
4636
4998
|
const claimedRewards = Number(rewardPoolFields.claimed_rewards);
|
|
4637
4999
|
stakeRewardPool = {
|
|
4638
5000
|
id,
|
|
4639
|
-
type: (0,
|
|
5001
|
+
type: (0, import_utils9.normalizeStructTag)(type),
|
|
4640
5002
|
stakePoolId,
|
|
4641
5003
|
ratioNumerator,
|
|
4642
5004
|
ratioDenominator,
|
|
@@ -4819,6 +5181,101 @@ var getVeScaTreasuryInfo = async (utils) => {
|
|
|
4819
5181
|
};
|
|
4820
5182
|
};
|
|
4821
5183
|
|
|
5184
|
+
// src/queries/poolAddressesQuery.ts
|
|
5185
|
+
var getAllAddresses = async (query) => {
|
|
5186
|
+
const results = {};
|
|
5187
|
+
const marketId = query.address.get("core.market");
|
|
5188
|
+
const marketObject = (await query.cache.queryGetObject(marketId, {
|
|
5189
|
+
showContent: true
|
|
5190
|
+
}))?.data;
|
|
5191
|
+
if (!(marketObject && marketObject.content?.dataType === "moveObject"))
|
|
5192
|
+
throw new Error(`Failed to fetch marketObject`);
|
|
5193
|
+
const fields = marketObject.content.fields;
|
|
5194
|
+
const coinTypesPairs = SUPPORT_POOLS.reduce(
|
|
5195
|
+
(acc, pool) => {
|
|
5196
|
+
acc.push([pool, query.utils.parseCoinType(pool).substring(2)]);
|
|
5197
|
+
return acc;
|
|
5198
|
+
},
|
|
5199
|
+
[]
|
|
5200
|
+
);
|
|
5201
|
+
const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
|
|
5202
|
+
const collateralStatsParentId = fields.collateral_stats.fields.table.fields.id.id;
|
|
5203
|
+
const borrowDynamicsParentid = fields.borrow_dynamics.fields.table.fields.id.id;
|
|
5204
|
+
const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
|
|
5205
|
+
const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
|
|
5206
|
+
const ADDRESS_TYPE = `0x1::type_name::TypeName`;
|
|
5207
|
+
const BORROW_FEE_TYPE = `0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da::market_dynamic_keys::BorrowFeeKey`;
|
|
5208
|
+
const SUPPLY_LIMIT_TYPE = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
|
|
5209
|
+
const BORROW_LIMIT_TYPE = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
|
|
5210
|
+
const ISOLATED_ASSET_KEY = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
|
|
5211
|
+
const fetchDynamicObject = async (parentId, type, value) => {
|
|
5212
|
+
try {
|
|
5213
|
+
return (await query.cache.queryGetDynamicFieldObject({
|
|
5214
|
+
parentId,
|
|
5215
|
+
name: {
|
|
5216
|
+
type,
|
|
5217
|
+
value
|
|
5218
|
+
}
|
|
5219
|
+
}))?.data?.objectId;
|
|
5220
|
+
} catch (_e) {
|
|
5221
|
+
return void 0;
|
|
5222
|
+
}
|
|
5223
|
+
};
|
|
5224
|
+
await Promise.all(
|
|
5225
|
+
coinTypesPairs.map(async ([coinName, coinType]) => {
|
|
5226
|
+
const addresses = await Promise.all([
|
|
5227
|
+
fetchDynamicObject(balanceSheetParentId, ADDRESS_TYPE, {
|
|
5228
|
+
name: coinType
|
|
5229
|
+
}),
|
|
5230
|
+
fetchDynamicObject(collateralStatsParentId, ADDRESS_TYPE, {
|
|
5231
|
+
name: coinType
|
|
5232
|
+
}),
|
|
5233
|
+
fetchDynamicObject(borrowDynamicsParentid, ADDRESS_TYPE, {
|
|
5234
|
+
name: coinType
|
|
5235
|
+
}),
|
|
5236
|
+
fetchDynamicObject(interestModelParentId, ADDRESS_TYPE, {
|
|
5237
|
+
name: coinType
|
|
5238
|
+
}),
|
|
5239
|
+
fetchDynamicObject(riskModelParentId, ADDRESS_TYPE, {
|
|
5240
|
+
name: coinType
|
|
5241
|
+
}),
|
|
5242
|
+
fetchDynamicObject(marketId, BORROW_FEE_TYPE, coinType),
|
|
5243
|
+
fetchDynamicObject(marketId, SUPPLY_LIMIT_TYPE, coinType),
|
|
5244
|
+
fetchDynamicObject(marketId, BORROW_LIMIT_TYPE, coinType),
|
|
5245
|
+
fetchDynamicObject(marketId, ISOLATED_ASSET_KEY, coinType)
|
|
5246
|
+
]);
|
|
5247
|
+
const spool = query.address.get(
|
|
5248
|
+
// @ts-ignore
|
|
5249
|
+
`spool.pools.s${coinName}.id`
|
|
5250
|
+
);
|
|
5251
|
+
const rewardPool = query.address.get(
|
|
5252
|
+
// @ts-ignore
|
|
5253
|
+
`spool.pools.s${coinName}.rewardPoolId`
|
|
5254
|
+
);
|
|
5255
|
+
const sCoinTreasury = query.address.get(
|
|
5256
|
+
// @ts-ignore
|
|
5257
|
+
`scoin.coins.s${coinName}.treasury`
|
|
5258
|
+
);
|
|
5259
|
+
results[coinName] = {
|
|
5260
|
+
lendingPoolAddress: addresses[0],
|
|
5261
|
+
collateralPoolAddress: addresses[1],
|
|
5262
|
+
borrowDynamic: addresses[2],
|
|
5263
|
+
interestModel: addresses[3],
|
|
5264
|
+
riskModel: addresses[4],
|
|
5265
|
+
borrowFeeKey: addresses[5],
|
|
5266
|
+
supplyLimitKey: addresses[6],
|
|
5267
|
+
borrowLimitKey: addresses[7],
|
|
5268
|
+
isolatedAssetKey: addresses[8],
|
|
5269
|
+
spool,
|
|
5270
|
+
spoolReward: rewardPool,
|
|
5271
|
+
sCoinTreasury
|
|
5272
|
+
};
|
|
5273
|
+
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
5274
|
+
})
|
|
5275
|
+
);
|
|
5276
|
+
return results;
|
|
5277
|
+
};
|
|
5278
|
+
|
|
4822
5279
|
// src/models/suiKit.ts
|
|
4823
5280
|
var import_sui_kit4 = require("@scallop-io/sui-kit");
|
|
4824
5281
|
var newSuiKit = (params) => {
|
|
@@ -4921,7 +5378,7 @@ var ScallopUtils = class {
|
|
|
4921
5378
|
throw Error(`Coin ${coinName} is not supported`);
|
|
4922
5379
|
}
|
|
4923
5380
|
if (coinName === "sui")
|
|
4924
|
-
return (0,
|
|
5381
|
+
return (0, import_utils11.normalizeStructTag)(`${coinPackageId}::sui::SUI`);
|
|
4925
5382
|
const wormHolePackageIds = [
|
|
4926
5383
|
this.address.get("core.coins.wusdc.id") ?? wormholeCoinIds.wusdc,
|
|
4927
5384
|
this.address.get("core.coins.wusdt.id") ?? wormholeCoinIds.wusdt,
|
|
@@ -5025,7 +5482,7 @@ var ScallopUtils = class {
|
|
|
5025
5482
|
return `${protocolObjectId}::reserve::MarketCoin<${coinType}>`;
|
|
5026
5483
|
}
|
|
5027
5484
|
parseCoinNameFromType(coinType) {
|
|
5028
|
-
coinType = (0,
|
|
5485
|
+
coinType = (0, import_utils11.normalizeStructTag)(coinType);
|
|
5029
5486
|
if (sCoinTypeToName[coinType]) {
|
|
5030
5487
|
return sCoinTypeToName[coinType];
|
|
5031
5488
|
}
|
|
@@ -5109,7 +5566,7 @@ var ScallopUtils = class {
|
|
|
5109
5566
|
* @param coinType - The coin type, default is 0x2::SUI::SUI.
|
|
5110
5567
|
* @return The selected transaction coin arguments.
|
|
5111
5568
|
*/
|
|
5112
|
-
async selectCoins(amount, coinType =
|
|
5569
|
+
async selectCoins(amount, coinType = import_utils11.SUI_TYPE_ARG, ownerAddress) {
|
|
5113
5570
|
ownerAddress = ownerAddress ?? this.suiKit.currentAddress();
|
|
5114
5571
|
const coins = await this.suiKit.suiInteractor.selectCoins(
|
|
5115
5572
|
ownerAddress,
|
|
@@ -5307,15 +5764,15 @@ var ScallopUtils = class {
|
|
|
5307
5764
|
};
|
|
5308
5765
|
|
|
5309
5766
|
// src/models/scallopBuilder.ts
|
|
5310
|
-
var
|
|
5767
|
+
var import_utils25 = require("@mysten/sui/utils");
|
|
5311
5768
|
|
|
5312
5769
|
// src/builders/coreBuilder.ts
|
|
5313
5770
|
var import_transactions = require("@mysten/sui/transactions");
|
|
5314
|
-
var
|
|
5771
|
+
var import_utils14 = require("@mysten/sui/utils");
|
|
5315
5772
|
var import_sui_kit5 = require("@scallop-io/sui-kit");
|
|
5316
5773
|
|
|
5317
5774
|
// src/builders/oracle.ts
|
|
5318
|
-
var
|
|
5775
|
+
var import_utils13 = require("@mysten/sui/utils");
|
|
5319
5776
|
var import_pyth_sui_js2 = require("@pythnetwork/pyth-sui-js");
|
|
5320
5777
|
var updateOracles = async (builder, txBlock, assetCoinNames, options = { usePythPullModel: true }) => {
|
|
5321
5778
|
const usePythPullModel = builder.params.usePythPullModel ?? options.usePythPullModel;
|
|
@@ -5431,27 +5888,27 @@ var priceUpdateRequest = (txBlock, packageId, xOracleId, coinType) => {
|
|
|
5431
5888
|
var confirmPriceUpdateRequest = (txBlock, packageId, xOracleId, request, coinType) => {
|
|
5432
5889
|
const target = `${packageId}::x_oracle::confirm_price_update_request`;
|
|
5433
5890
|
const typeArgs = [coinType];
|
|
5434
|
-
txBlock.moveCall(target, [xOracleId, request,
|
|
5891
|
+
txBlock.moveCall(target, [xOracleId, request, import_utils13.SUI_CLOCK_OBJECT_ID], typeArgs);
|
|
5435
5892
|
return txBlock;
|
|
5436
5893
|
};
|
|
5437
5894
|
var updateSupraPrice = (txBlock, packageId, request, holderId, registryId, coinType) => {
|
|
5438
5895
|
txBlock.moveCall(
|
|
5439
5896
|
`${packageId}::rule::set_price`,
|
|
5440
|
-
[request, holderId, registryId,
|
|
5897
|
+
[request, holderId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
|
|
5441
5898
|
[coinType]
|
|
5442
5899
|
);
|
|
5443
5900
|
};
|
|
5444
5901
|
var updateSwitchboardPrice = (txBlock, packageId, request, aggregatorId, registryId, coinType) => {
|
|
5445
5902
|
txBlock.moveCall(
|
|
5446
5903
|
`${packageId}::rule::set_price`,
|
|
5447
|
-
[request, aggregatorId, registryId,
|
|
5904
|
+
[request, aggregatorId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
|
|
5448
5905
|
[coinType]
|
|
5449
5906
|
);
|
|
5450
5907
|
};
|
|
5451
5908
|
var updatePythPrice = (txBlock, packageId, request, stateId, feedObjectId, registryId, coinType) => {
|
|
5452
5909
|
txBlock.moveCall(
|
|
5453
5910
|
`${packageId}::rule::set_price`,
|
|
5454
|
-
[request, stateId, feedObjectId, registryId,
|
|
5911
|
+
[request, stateId, feedObjectId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
|
|
5455
5912
|
[coinType]
|
|
5456
5913
|
);
|
|
5457
5914
|
};
|
|
@@ -5522,7 +5979,7 @@ var generateCoreNormalMethod = ({
|
|
|
5522
5979
|
coreIds.coinDecimalsRegistry,
|
|
5523
5980
|
txBlock.pure.u64(amount),
|
|
5524
5981
|
coreIds.xOracle,
|
|
5525
|
-
|
|
5982
|
+
import_utils14.SUI_CLOCK_OBJECT_ID
|
|
5526
5983
|
],
|
|
5527
5984
|
[coinType]
|
|
5528
5985
|
);
|
|
@@ -5531,7 +5988,7 @@ var generateCoreNormalMethod = ({
|
|
|
5531
5988
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5532
5989
|
return txBlock.moveCall(
|
|
5533
5990
|
`${coreIds.protocolPkg}::mint::mint`,
|
|
5534
|
-
[coreIds.version, coreIds.market, coin,
|
|
5991
|
+
[coreIds.version, coreIds.market, coin, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
5535
5992
|
[coinType]
|
|
5536
5993
|
);
|
|
5537
5994
|
},
|
|
@@ -5539,7 +5996,7 @@ var generateCoreNormalMethod = ({
|
|
|
5539
5996
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5540
5997
|
return txBlock.moveCall(
|
|
5541
5998
|
`${coreIds.protocolPkg}::mint::mint_entry`,
|
|
5542
|
-
[coreIds.version, coreIds.market, coin,
|
|
5999
|
+
[coreIds.version, coreIds.market, coin, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
5543
6000
|
[coinType]
|
|
5544
6001
|
);
|
|
5545
6002
|
},
|
|
@@ -5547,7 +6004,7 @@ var generateCoreNormalMethod = ({
|
|
|
5547
6004
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5548
6005
|
return txBlock.moveCall(
|
|
5549
6006
|
`${coreIds.protocolPkg}::redeem::redeem`,
|
|
5550
|
-
[coreIds.version, coreIds.market, marketCoin,
|
|
6007
|
+
[coreIds.version, coreIds.market, marketCoin, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
5551
6008
|
[coinType]
|
|
5552
6009
|
);
|
|
5553
6010
|
},
|
|
@@ -5555,7 +6012,7 @@ var generateCoreNormalMethod = ({
|
|
|
5555
6012
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
5556
6013
|
return txBlock.moveCall(
|
|
5557
6014
|
`${coreIds.protocolPkg}::redeem::redeem_entry`,
|
|
5558
|
-
[coreIds.version, coreIds.market, marketCoin,
|
|
6015
|
+
[coreIds.version, coreIds.market, marketCoin, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
5559
6016
|
[coinType]
|
|
5560
6017
|
);
|
|
5561
6018
|
},
|
|
@@ -5571,7 +6028,7 @@ var generateCoreNormalMethod = ({
|
|
|
5571
6028
|
coreIds.coinDecimalsRegistry,
|
|
5572
6029
|
amount,
|
|
5573
6030
|
coreIds.xOracle,
|
|
5574
|
-
|
|
6031
|
+
import_utils14.SUI_CLOCK_OBJECT_ID
|
|
5575
6032
|
],
|
|
5576
6033
|
[coinType]
|
|
5577
6034
|
);
|
|
@@ -5589,7 +6046,7 @@ var generateCoreNormalMethod = ({
|
|
|
5589
6046
|
borrowReferral,
|
|
5590
6047
|
txBlock.pure.u64(amount),
|
|
5591
6048
|
coreIds.xOracle,
|
|
5592
|
-
|
|
6049
|
+
import_utils14.SUI_CLOCK_OBJECT_ID
|
|
5593
6050
|
],
|
|
5594
6051
|
[coinType, referralWitnessType]
|
|
5595
6052
|
);
|
|
@@ -5606,7 +6063,7 @@ var generateCoreNormalMethod = ({
|
|
|
5606
6063
|
coreIds.coinDecimalsRegistry,
|
|
5607
6064
|
txBlock.pure.u64(amount),
|
|
5608
6065
|
coreIds.xOracle,
|
|
5609
|
-
|
|
6066
|
+
import_utils14.SUI_CLOCK_OBJECT_ID
|
|
5610
6067
|
],
|
|
5611
6068
|
[coinType]
|
|
5612
6069
|
);
|
|
@@ -5620,7 +6077,7 @@ var generateCoreNormalMethod = ({
|
|
|
5620
6077
|
obligation,
|
|
5621
6078
|
coreIds.market,
|
|
5622
6079
|
coin,
|
|
5623
|
-
|
|
6080
|
+
import_utils14.SUI_CLOCK_OBJECT_ID
|
|
5624
6081
|
],
|
|
5625
6082
|
[coinType]
|
|
5626
6083
|
);
|
|
@@ -5851,7 +6308,7 @@ var newCoreTxBlock = (builder, initTxBlock) => {
|
|
|
5851
6308
|
|
|
5852
6309
|
// src/builders/spoolBuilder.ts
|
|
5853
6310
|
var import_transactions2 = require("@mysten/sui/transactions");
|
|
5854
|
-
var
|
|
6311
|
+
var import_utils16 = require("@mysten/sui/utils");
|
|
5855
6312
|
var import_sui_kit6 = require("@scallop-io/sui-kit");
|
|
5856
6313
|
var requireStakeAccountIds = async (...params) => {
|
|
5857
6314
|
const [builder, txBlock, stakeMarketCoinName, stakeAccountId] = params;
|
|
@@ -5906,7 +6363,7 @@ var generateSpoolNormalMethod = ({
|
|
|
5906
6363
|
);
|
|
5907
6364
|
return txBlock.moveCall(
|
|
5908
6365
|
`${spoolIds.spoolPkg}::user::new_spool_account`,
|
|
5909
|
-
[stakePoolId,
|
|
6366
|
+
[stakePoolId, import_utils16.SUI_CLOCK_OBJECT_ID],
|
|
5910
6367
|
[marketCoinType]
|
|
5911
6368
|
);
|
|
5912
6369
|
},
|
|
@@ -5917,7 +6374,7 @@ var generateSpoolNormalMethod = ({
|
|
|
5917
6374
|
);
|
|
5918
6375
|
txBlock.moveCall(
|
|
5919
6376
|
`${spoolIds.spoolPkg}::user::stake`,
|
|
5920
|
-
[stakePoolId, stakeAccount, coin,
|
|
6377
|
+
[stakePoolId, stakeAccount, coin, import_utils16.SUI_CLOCK_OBJECT_ID],
|
|
5921
6378
|
[marketCoinType]
|
|
5922
6379
|
);
|
|
5923
6380
|
},
|
|
@@ -5928,7 +6385,7 @@ var generateSpoolNormalMethod = ({
|
|
|
5928
6385
|
);
|
|
5929
6386
|
return txBlock.moveCall(
|
|
5930
6387
|
`${spoolIds.spoolPkg}::user::unstake`,
|
|
5931
|
-
[stakePoolId, stakeAccount, amount,
|
|
6388
|
+
[stakePoolId, stakeAccount, amount, import_utils16.SUI_CLOCK_OBJECT_ID],
|
|
5932
6389
|
[marketCoinType]
|
|
5933
6390
|
);
|
|
5934
6391
|
},
|
|
@@ -5944,7 +6401,7 @@ var generateSpoolNormalMethod = ({
|
|
|
5944
6401
|
const rewardCoinType = builder.utils.parseCoinType(rewardCoinName);
|
|
5945
6402
|
return txBlock.moveCall(
|
|
5946
6403
|
`${spoolIds.spoolPkg}::user::redeem_rewards`,
|
|
5947
|
-
[stakePoolId, rewardPoolId, stakeAccount,
|
|
6404
|
+
[stakePoolId, rewardPoolId, stakeAccount, import_utils16.SUI_CLOCK_OBJECT_ID],
|
|
5948
6405
|
[marketCoinType, rewardCoinType]
|
|
5949
6406
|
);
|
|
5950
6407
|
}
|
|
@@ -6076,7 +6533,7 @@ var newSpoolTxBlock = (builder, initTxBlock) => {
|
|
|
6076
6533
|
|
|
6077
6534
|
// src/builders/borrowIncentiveBuilder.ts
|
|
6078
6535
|
var import_transactions3 = require("@mysten/sui/transactions");
|
|
6079
|
-
var
|
|
6536
|
+
var import_utils18 = require("@mysten/sui/utils");
|
|
6080
6537
|
var import_sui_kit7 = require("@scallop-io/sui-kit");
|
|
6081
6538
|
var requireObligationInfo2 = async (...params) => {
|
|
6082
6539
|
const [builder, txBlock, obligationId, obligationKey] = params;
|
|
@@ -6128,7 +6585,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6128
6585
|
obligationKey,
|
|
6129
6586
|
obligationId,
|
|
6130
6587
|
borrowIncentiveIds.obligationAccessStore,
|
|
6131
|
-
|
|
6588
|
+
import_utils18.SUI_CLOCK_OBJECT_ID
|
|
6132
6589
|
]
|
|
6133
6590
|
);
|
|
6134
6591
|
},
|
|
@@ -6146,7 +6603,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6146
6603
|
veScaIds.treasury,
|
|
6147
6604
|
veScaIds.table,
|
|
6148
6605
|
veScaKey,
|
|
6149
|
-
|
|
6606
|
+
import_utils18.SUI_CLOCK_OBJECT_ID
|
|
6150
6607
|
],
|
|
6151
6608
|
[]
|
|
6152
6609
|
);
|
|
@@ -6160,7 +6617,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6160
6617
|
borrowIncentiveIds.incentiveAccounts,
|
|
6161
6618
|
obligationKey,
|
|
6162
6619
|
obligationId,
|
|
6163
|
-
|
|
6620
|
+
import_utils18.SUI_CLOCK_OBJECT_ID
|
|
6164
6621
|
]
|
|
6165
6622
|
);
|
|
6166
6623
|
},
|
|
@@ -6174,7 +6631,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6174
6631
|
borrowIncentiveIds.incentiveAccounts,
|
|
6175
6632
|
obligationKey,
|
|
6176
6633
|
obligationId,
|
|
6177
|
-
|
|
6634
|
+
import_utils18.SUI_CLOCK_OBJECT_ID
|
|
6178
6635
|
],
|
|
6179
6636
|
[rewardType]
|
|
6180
6637
|
);
|
|
@@ -6188,7 +6645,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
6188
6645
|
borrowIncentiveIds.incentiveAccounts,
|
|
6189
6646
|
obligation,
|
|
6190
6647
|
veScaKey,
|
|
6191
|
-
|
|
6648
|
+
import_utils18.SUI_CLOCK_OBJECT_ID
|
|
6192
6649
|
]
|
|
6193
6650
|
);
|
|
6194
6651
|
}
|
|
@@ -7078,12 +7535,12 @@ var ScallopIndexer = class {
|
|
|
7078
7535
|
};
|
|
7079
7536
|
|
|
7080
7537
|
// src/models/scallopQuery.ts
|
|
7081
|
-
var
|
|
7538
|
+
var import_utils24 = require("@mysten/sui/utils");
|
|
7082
7539
|
var ScallopQuery = class {
|
|
7083
7540
|
constructor(params, instance) {
|
|
7084
7541
|
this.params = params;
|
|
7085
7542
|
this.suiKit = instance?.suiKit ?? instance?.utils?.suiKit ?? newSuiKit(params);
|
|
7086
|
-
this.walletAddress = (0,
|
|
7543
|
+
this.walletAddress = (0, import_utils24.normalizeSuiAddress)(
|
|
7087
7544
|
params.walletAddress ?? this.suiKit.currentAddress()
|
|
7088
7545
|
);
|
|
7089
7546
|
if (instance?.utils) {
|
|
@@ -7158,6 +7615,7 @@ var ScallopQuery = class {
|
|
|
7158
7615
|
}
|
|
7159
7616
|
/* ==================== Core Query Methods ==================== */
|
|
7160
7617
|
/**
|
|
7618
|
+
* @deprecated use getMarketPools
|
|
7161
7619
|
* Query market data.
|
|
7162
7620
|
* @param indexer - Whether to use indexer.
|
|
7163
7621
|
* @return Market data.
|
|
@@ -7176,7 +7634,7 @@ var ScallopQuery = class {
|
|
|
7176
7634
|
* @param indexer - Whether to use indexer.
|
|
7177
7635
|
* @return Market pools data.
|
|
7178
7636
|
*/
|
|
7179
|
-
async getMarketPools(poolCoinNames, args) {
|
|
7637
|
+
async getMarketPools(poolCoinNames = [...SUPPORT_POOLS], args) {
|
|
7180
7638
|
return await getMarketPools(
|
|
7181
7639
|
this,
|
|
7182
7640
|
poolCoinNames,
|
|
@@ -7192,13 +7650,8 @@ var ScallopQuery = class {
|
|
|
7192
7650
|
* @return Market pool data.
|
|
7193
7651
|
*/
|
|
7194
7652
|
async getMarketPool(poolCoinName, args) {
|
|
7195
|
-
|
|
7196
|
-
|
|
7197
|
-
poolCoinName,
|
|
7198
|
-
args?.indexer,
|
|
7199
|
-
args?.marketObject,
|
|
7200
|
-
args?.coinPrice
|
|
7201
|
-
);
|
|
7653
|
+
const marketPools = await this.getMarketPools(void 0, args);
|
|
7654
|
+
return marketPools.pools[poolCoinName];
|
|
7202
7655
|
}
|
|
7203
7656
|
/**
|
|
7204
7657
|
* Get market collaterals.
|
|
@@ -7325,13 +7778,8 @@ var ScallopQuery = class {
|
|
|
7325
7778
|
* @return Spool data.
|
|
7326
7779
|
*/
|
|
7327
7780
|
async getSpool(stakeMarketCoinName, args) {
|
|
7328
|
-
|
|
7329
|
-
|
|
7330
|
-
stakeMarketCoinName,
|
|
7331
|
-
args?.indexer,
|
|
7332
|
-
args?.marketPool,
|
|
7333
|
-
args?.coinPrices
|
|
7334
|
-
);
|
|
7781
|
+
const spools = await this.getSpools(void 0, args);
|
|
7782
|
+
return spools[stakeMarketCoinName];
|
|
7335
7783
|
}
|
|
7336
7784
|
/**
|
|
7337
7785
|
* Get stake accounts data for all stake pools (spools).
|
|
@@ -7636,7 +8084,7 @@ var ScallopQuery = class {
|
|
|
7636
8084
|
* Get list of isolated assets
|
|
7637
8085
|
*/
|
|
7638
8086
|
async getIsolatedAssets() {
|
|
7639
|
-
return await getIsolatedAssets(this
|
|
8087
|
+
return await getIsolatedAssets(this);
|
|
7640
8088
|
}
|
|
7641
8089
|
/**
|
|
7642
8090
|
* Check if asset is an isolated asset
|
|
@@ -7659,6 +8107,13 @@ var ScallopQuery = class {
|
|
|
7659
8107
|
async getAllCoinPrices(args) {
|
|
7660
8108
|
return getAllCoinPrices(this, args?.marketPools, args?.coinPrices);
|
|
7661
8109
|
}
|
|
8110
|
+
/**
|
|
8111
|
+
* Query all address (lending pool, collateral pool, borrow dynamics, interest models) of all pool
|
|
8112
|
+
* @returns
|
|
8113
|
+
*/
|
|
8114
|
+
async getPoolAddresses() {
|
|
8115
|
+
return getAllAddresses(this);
|
|
8116
|
+
}
|
|
7662
8117
|
};
|
|
7663
8118
|
|
|
7664
8119
|
// src/models/scallopBuilder.ts
|
|
@@ -7666,7 +8121,7 @@ var ScallopBuilder = class {
|
|
|
7666
8121
|
constructor(params, instance) {
|
|
7667
8122
|
this.suiKit = instance?.suiKit ?? newSuiKit(params);
|
|
7668
8123
|
this.params = params;
|
|
7669
|
-
this.walletAddress = (0,
|
|
8124
|
+
this.walletAddress = (0, import_utils25.normalizeSuiAddress)(
|
|
7670
8125
|
params?.walletAddress ?? this.suiKit.currentAddress()
|
|
7671
8126
|
);
|
|
7672
8127
|
if (instance?.query) {
|
|
@@ -7813,7 +8268,7 @@ var ScallopClient = class {
|
|
|
7813
8268
|
constructor(params, instance) {
|
|
7814
8269
|
this.params = params;
|
|
7815
8270
|
this.suiKit = instance?.suiKit ?? instance?.builder?.suiKit ?? newSuiKit(params);
|
|
7816
|
-
this.walletAddress = (0,
|
|
8271
|
+
this.walletAddress = (0, import_utils26.normalizeSuiAddress)(
|
|
7817
8272
|
params?.walletAddress ?? this.suiKit.currentAddress()
|
|
7818
8273
|
);
|
|
7819
8274
|
if (instance?.builder) {
|
|
@@ -8654,9 +9109,11 @@ var Scallop = class {
|
|
|
8654
9109
|
ScallopQuery,
|
|
8655
9110
|
ScallopUtils,
|
|
8656
9111
|
TEST_ADDRESSES,
|
|
9112
|
+
TokenBucket,
|
|
8657
9113
|
UNLOCK_ROUND_DURATION,
|
|
8658
9114
|
USE_TEST_ADDRESS,
|
|
8659
9115
|
assetCoins,
|
|
9116
|
+
callWithRateLimit,
|
|
8660
9117
|
coinDecimals,
|
|
8661
9118
|
coinIds,
|
|
8662
9119
|
marketCoins,
|