@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.
Files changed (48) hide show
  1. package/dist/constants/poolAddress.d.ts +15 -4
  2. package/dist/constants/queryKeys.d.ts +1 -2
  3. package/dist/constants/tokenBucket.d.ts +1 -1
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.js +873 -416
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +826 -371
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/models/scallopCache.d.ts +1 -0
  10. package/dist/models/scallopQuery.d.ts +21 -17
  11. package/dist/queries/coreQuery.d.ts +18 -19
  12. package/dist/queries/index.d.ts +2 -0
  13. package/dist/queries/isolatedAssetQuery.d.ts +2 -2
  14. package/dist/queries/objectsQuery.d.ts +3 -0
  15. package/dist/queries/poolAddressesQuery.d.ts +16 -0
  16. package/dist/queries/spoolQuery.d.ts +6 -2
  17. package/dist/test.d.ts +1 -0
  18. package/dist/types/query/core.d.ts +22 -5
  19. package/dist/types/query/spool.d.ts +20 -0
  20. package/dist/types/utils.d.ts +7 -2
  21. package/dist/utils/core.d.ts +2 -0
  22. package/dist/utils/index.d.ts +2 -0
  23. package/dist/utils/util.d.ts +1 -0
  24. package/package.json +1 -1
  25. package/src/constants/poolAddress.ts +291 -29
  26. package/src/constants/queryKeys.ts +5 -5
  27. package/src/constants/tokenBucket.ts +1 -1
  28. package/src/index.ts +1 -0
  29. package/src/models/scallopCache.ts +43 -11
  30. package/src/models/scallopQuery.ts +25 -20
  31. package/src/queries/borrowIncentiveQuery.ts +1 -1
  32. package/src/queries/coreQuery.ts +378 -248
  33. package/src/queries/index.ts +2 -0
  34. package/src/queries/isolatedAssetQuery.ts +37 -31
  35. package/src/queries/objectsQuery.ts +20 -0
  36. package/src/queries/poolAddressesQuery.ts +140 -0
  37. package/src/queries/portfolioQuery.ts +14 -7
  38. package/src/queries/priceQuery.ts +3 -1
  39. package/src/queries/spoolQuery.ts +189 -122
  40. package/src/test.ts +17 -0
  41. package/src/types/query/core.ts +21 -5
  42. package/src/types/query/spool.ts +21 -0
  43. package/src/types/utils.ts +8 -3
  44. package/src/utils/core.ts +18 -0
  45. package/src/utils/index.ts +2 -0
  46. package/src/utils/query.ts +16 -2
  47. package/src/utils/tokenBucket.ts +2 -2
  48. 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: "0x5f08c4f71d56dd3342c452cc70ffc47f2f4180146d821941b0b9c04761bb42e7",
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
- weth: {
432
- lendingPoolAddress: "0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",
433
- collateralPoolAddress: "0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf"
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: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
441
- collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb"
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
- afsui: {
464
- lendingPoolAddress: "0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",
465
- collateralPoolAddress: "0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341"
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
- fud: {
480
- lendingPoolAddress: "0x14367ddca30e2860cb89ed4eaca20c7ece260c5d59dd9990d2c85a8321326acb"
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, walletAddress, options) => ["rpc", "getObject", { walletAddress, options, 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 = 50;
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
- liquidationPanelty: Number(originMarketCollateralData.liquidationPanelty.value) / divisor,
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 = 2) => {
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
- txBlock.moveCall(queryTarget, args, typeArgs);
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: 5,
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: 5,
1981
+ retry: this.retryFn,
1783
1982
  retryDelay: 1e3,
1784
- queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
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: 5,
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
- return await callWithRateLimit(
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: 5,
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: 5,
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: 5,
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: 5,
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 import_utils25 = require("@mysten/sui/utils");
2779
+ var import_utils26 = require("@mysten/sui/utils");
2563
2780
 
2564
2781
  // src/models/scallopUtils.ts
2565
- var import_utils10 = require("@mysten/sui/utils");
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 import_utils5 = require("@mysten/sui/utils");
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 (address) => {
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 address.cache.queryGetDynamicFields({
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
- try {
2856
- const marketObject = utils.address.get("core.market");
2857
- const cachedData = utils.address.cache.queryClient.getQueryData([
2858
- "getDynamicFields",
2859
- marketObject
2860
- ]);
2861
- if (cachedData) {
2862
- const coinType2 = utils.parseCoinType(coinName);
2863
- return cachedData.includes(coinType2);
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
- const coinType = utils.parseCoinType(coinName).slice(2);
2866
- const object = await utils.cache.queryGetDynamicFieldObject({
2867
- parentId: marketObject,
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, import_utils5.normalizeStructTag)(pool.type.name);
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, import_utils5.normalizeStructTag)(collateral.type.name);
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
- liquidationPanelty: collateral.liquidationPanelty,
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
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
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 getMarketPools = async (query, poolCoinNames = [...SUPPORT_POOLS], indexer = false, coinPrices) => {
3062
- const marketId = query.address.get("core.market");
3063
- const marketObjectResponse = await query.cache.queryGetObject(marketId, {
3064
- showContent: true
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 marketPools = {};
3384
+ const pools = {};
3385
+ const collaterals = {};
3068
3386
  if (indexer) {
3069
- const marketPoolsIndexer = await query.indexer.getMarketPools();
3070
- const updateMarketPool = (marketPool) => {
3071
- if (!poolCoinNames.includes(marketPool.coinName))
3072
- return;
3073
- marketPool.coinPrice = coinPrices[marketPool.coinName] ?? marketPool.coinPrice;
3074
- marketPool.coinWrappedType = query.utils.getCoinWrappedType(
3075
- marketPool.coinName
3076
- );
3077
- marketPools[marketPool.coinName] = marketPool;
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
- const marketPool = await getMarketPool(
3085
- query,
3086
- poolCoinName,
3087
- indexer,
3088
- marketObjectResponse?.data,
3089
- coinPrices?.[poolCoinName]
3090
- );
3091
- if (marketPool) {
3092
- marketPools[poolCoinName] = marketPool;
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 marketPools;
3430
+ return {
3431
+ pools,
3432
+ collaterals
3433
+ };
3097
3434
  };
3098
- var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
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
- return marketPoolIndexer;
3110
- }
3111
- const marketId = query.address.get("core.market");
3112
- marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
3113
- showContent: true
3114
- }))?.data;
3115
- if (!(marketObject && marketObject.content?.dataType === "moveObject"))
3116
- throw new Error(`Failed to fetch marketObject`);
3117
- const fields = marketObject.content.fields;
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
- const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse?.data;
3162
- if (!(interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content))
3163
- throw new Error(
3164
- `Failed to fetch interestModelDynamicFieldObject for ${poolCoinName}: ${interestModelDynamicFieldObject}`
3165
- );
3166
- const interestModel = interestModelDynamicFieldObject.content.fields.value.fields;
3167
- const getBorrowFee = async () => {
3168
- const borrowFeeDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3169
- parentId: marketId,
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 coinDecimal = query.utils.getCoinDecimal(poolCoinName);
3210
- const maxSupplyCoin = (0, import_bignumber3.default)(
3211
- await getSupplyLimit(query.utils, poolCoinName) ?? "0"
3212
- ).shiftedBy(-coinDecimal).toNumber();
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
- sCoinType: query.utils.parseSCoinType(
3222
- query.utils.parseMarketCoinName(poolCoinName)
3223
- ),
3224
- coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3225
- coinDecimal,
3226
- coinPrice: coinPrice ?? 0,
3227
- highKink: parsedMarketPoolData.highKink,
3228
- midKink: parsedMarketPoolData.midKink,
3229
- reserveFactor: parsedMarketPoolData.reserveFactor,
3230
- borrowWeight: parsedMarketPoolData.borrowWeight,
3231
- borrowFee: parsedMarketPoolData.borrowFee,
3232
- marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
3233
- minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
3234
- maxSupplyCoin,
3235
- maxBorrowCoin,
3236
- isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3237
- ...calculatedMarketPoolData
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
- liquidationPanelty: riskModel.liquidation_penalty.fields,
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
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
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.queryMarket({ indexer, coinPrices });
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.queryMarket({ indexer });
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.queryMarket({ indexer });
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 import_utils8 = require("@mysten/sui/utils");
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
- coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
4338
- marketPools = marketPools ?? await query.getMarketPools(stakeCoinNames, { indexer });
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[coinName] ? (coinPrices[coinName] ?? 0) * (marketPool ? marketPool.conversionRate : 0) : spool.marketCoinPrice;
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
- for (const stakeMarketCoinName of stakeMarketCoinNames) {
4363
- const stakeCoinName = query.utils.parseCoinName(stakeMarketCoinName);
4364
- const spool = await getSpool(
4365
- query,
4366
- stakeMarketCoinName,
4367
- indexer,
4368
- marketPools[stakeCoinName],
4369
- coinPrices
4370
- );
4371
- if (spool) {
4372
- spools[stakeMarketCoinName] = spool;
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, marketPool, coinPrices) => {
4781
+ var getSpool = async (query, marketCoinName, indexer = false, coinPrices, requiredObjects) => {
4378
4782
  const coinName = query.utils.parseCoinName(marketCoinName);
4379
- marketPool = marketPool || await query.getMarketPool(coinName, { indexer });
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] || spoolIndexer.coinPrice;
4394
- spoolIndexer.marketCoinPrice = (coinPrices?.[coinName2] ?? 0) * (marketPool ? marketPool.conversionRate : 0) || spoolIndexer.marketCoinPrice;
4395
- spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2] || spoolIndexer.rewardCoinPrice;
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
- const spoolObjectResponse = await query.cache.queryGetObjects(
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 spoolObject = spoolObjectResponse[0];
4410
- const rewardPoolObject = spoolObjectResponse[1];
4411
- if (spoolObject.content && "fields" in spoolObject.content) {
4412
- const spoolFields = spoolObject.content.fields;
4413
- const parsedSpoolData = parseOriginSpoolData({
4414
- stakeType: spoolFields.stake_type,
4415
- maxDistributedPoint: spoolFields.max_distributed_point,
4416
- distributedPoint: spoolFields.distributed_point,
4417
- distributedPointPerPeriod: spoolFields.distributed_point_per_period,
4418
- pointDistributionTime: spoolFields.point_distribution_time,
4419
- maxStake: spoolFields.max_stakes,
4420
- stakes: spoolFields.stakes,
4421
- index: spoolFields.index,
4422
- createdAt: spoolFields.created_at,
4423
- lastUpdate: spoolFields.last_update
4424
- });
4425
- const marketCoinPrice = (coinPrices?.[coinName] ?? 0) * marketPool.conversionRate;
4426
- const marketCoinDecimal = query.utils.getCoinDecimal(marketCoinName);
4427
- const calculatedSpoolData = calculateSpoolData(
4428
- parsedSpoolData,
4429
- marketCoinPrice,
4430
- marketCoinDecimal
4431
- );
4432
- if (rewardPoolObject.content && "fields" in rewardPoolObject.content) {
4433
- const rewardPoolFields = rewardPoolObject.content.fields;
4434
- const parsedSpoolRewardPoolData = parseOriginSpoolRewardPoolData({
4435
- claimed_rewards: rewardPoolFields.claimed_rewards,
4436
- exchange_rate_numerator: rewardPoolFields.exchange_rate_numerator,
4437
- exchange_rate_denominator: rewardPoolFields.exchange_rate_denominator,
4438
- rewards: rewardPoolFields.rewards,
4439
- spool_id: rewardPoolFields.spool_id
4440
- });
4441
- const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
4442
- const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
4443
- const calculatedRewardPoolData = calculateSpoolRewardPoolData(
4444
- parsedSpoolData,
4445
- parsedSpoolRewardPoolData,
4446
- calculatedSpoolData,
4447
- rewardCoinPrice,
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, import_utils8.normalizeStructTag)(type);
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, import_utils8.normalizeStructTag)(stakeType),
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, import_utils8.normalizeStructTag)(type),
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, import_utils8.normalizeStructTag)(stakeType),
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, import_utils8.normalizeStructTag)(type),
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, import_utils10.normalizeStructTag)(`${coinPackageId}::sui::SUI`);
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, import_utils10.normalizeStructTag)(coinType);
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 = import_utils10.SUI_TYPE_ARG, ownerAddress) {
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 import_utils24 = require("@mysten/sui/utils");
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 import_utils13 = require("@mysten/sui/utils");
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 import_utils12 = require("@mysten/sui/utils");
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, import_utils12.SUI_CLOCK_OBJECT_ID], typeArgs);
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, import_utils12.SUI_CLOCK_OBJECT_ID],
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, import_utils12.SUI_CLOCK_OBJECT_ID],
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, import_utils12.SUI_CLOCK_OBJECT_ID],
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
- import_utils13.SUI_CLOCK_OBJECT_ID
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, import_utils13.SUI_CLOCK_OBJECT_ID],
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, import_utils13.SUI_CLOCK_OBJECT_ID],
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, import_utils13.SUI_CLOCK_OBJECT_ID],
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, import_utils13.SUI_CLOCK_OBJECT_ID],
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
- import_utils13.SUI_CLOCK_OBJECT_ID
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
- import_utils13.SUI_CLOCK_OBJECT_ID
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
- import_utils13.SUI_CLOCK_OBJECT_ID
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
- import_utils13.SUI_CLOCK_OBJECT_ID
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 import_utils15 = require("@mysten/sui/utils");
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, import_utils15.SUI_CLOCK_OBJECT_ID],
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, import_utils15.SUI_CLOCK_OBJECT_ID],
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, import_utils15.SUI_CLOCK_OBJECT_ID],
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, import_utils15.SUI_CLOCK_OBJECT_ID],
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 import_utils17 = require("@mysten/sui/utils");
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
- import_utils17.SUI_CLOCK_OBJECT_ID
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
- import_utils17.SUI_CLOCK_OBJECT_ID
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
- import_utils17.SUI_CLOCK_OBJECT_ID
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
- import_utils17.SUI_CLOCK_OBJECT_ID
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
- import_utils17.SUI_CLOCK_OBJECT_ID
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 import_utils23 = require("@mysten/sui/utils");
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, import_utils23.normalizeSuiAddress)(
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
- return await getMarketPool(
7196
- this,
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
- return await getSpool(
7329
- this,
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.address);
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, import_utils24.normalizeSuiAddress)(
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, import_utils25.normalizeSuiAddress)(
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,