@scallop-io/sui-scallop-sdk 1.4.14 → 1.4.15-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/constants/poolAddress.d.ts +14 -4
  2. package/dist/constants/queryKeys.d.ts +1 -2
  3. package/dist/constants/tokenBucket.d.ts +2 -2
  4. package/dist/index.js +719 -307
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +674 -262
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/models/scallopCache.d.ts +1 -0
  9. package/dist/models/scallopQuery.d.ts +20 -17
  10. package/dist/queries/coreQuery.d.ts +18 -19
  11. package/dist/queries/index.d.ts +2 -0
  12. package/dist/queries/isolatedAssetQuery.d.ts +2 -2
  13. package/dist/queries/objectsQuery.d.ts +3 -0
  14. package/dist/queries/poolAddressesQuery.d.ts +15 -0
  15. package/dist/types/query/core.d.ts +22 -5
  16. package/dist/types/utils.d.ts +7 -2
  17. package/dist/utils/core.d.ts +2 -0
  18. package/dist/utils/index.d.ts +1 -0
  19. package/dist/utils/util.d.ts +1 -0
  20. package/package.json +1 -1
  21. package/src/constants/poolAddress.ts +290 -29
  22. package/src/constants/queryKeys.ts +5 -5
  23. package/src/constants/tokenBucket.ts +2 -2
  24. package/src/models/scallopCache.ts +43 -11
  25. package/src/models/scallopQuery.ts +24 -12
  26. package/src/queries/borrowIncentiveQuery.ts +1 -1
  27. package/src/queries/coreQuery.ts +378 -248
  28. package/src/queries/index.ts +2 -0
  29. package/src/queries/isolatedAssetQuery.ts +37 -31
  30. package/src/queries/objectsQuery.ts +20 -0
  31. package/src/queries/poolAddressesQuery.ts +134 -0
  32. package/src/queries/portfolioQuery.ts +14 -7
  33. package/src/queries/priceQuery.ts +3 -1
  34. package/src/queries/spoolQuery.ts +3 -1
  35. package/src/types/query/core.ts +21 -5
  36. package/src/types/utils.ts +8 -3
  37. package/src/utils/core.ts +11 -0
  38. package/src/utils/index.ts +1 -0
  39. package/src/utils/query.ts +16 -2
  40. package/src/utils/tokenBucket.ts +2 -2
  41. package/src/utils/util.ts +8 -0
package/dist/index.js CHANGED
@@ -420,67 +420,213 @@ var FlashLoanFeeObjectMap = {
420
420
 
421
421
  // src/constants/poolAddress.ts
422
422
  var POOL_ADDRESSES = {
423
- usdc: {
424
- lendingPoolAddress: "0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",
425
- collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af"
426
- },
427
423
  sbeth: {
428
- lendingPoolAddress: "0x5f08c4f71d56dd3342c452cc70ffc47f2f4180146d821941b0b9c04761bb42e7",
429
- collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f"
424
+ lendingPoolAddress: "0xaa34c938e0394e5186c7dc626ad69be96af2194b23fdc6ac1c63090e399f5ba4",
425
+ collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f",
426
+ borrowDynamic: "0x7bbe75e8b924229f2f2110838ff612ea66e670fa3766759515dee78f617b1ea3",
427
+ interestModel: "0x9e6cae260d05155785a1904d24e6abc98368509c5752c8a9cec15a35aabc1512",
428
+ riskModel: "0xcf10334cfee675ecea2d2fee37b0f7cd2835c84b8b5692a853021debe6af80ab",
429
+ borrowFeeKey: "0x4298c8b6afe7a42a8e3ff93773fb9769529fe6d37e085ab411acf2ba2a44a931",
430
+ supplyLimitKey: "0x812fe508b78d3e0817149c0b39976221ddb267b5cc9514e81679f9b9a2f3624c",
431
+ borrowLimitKey: "0x165c274c67eda2b0d13563124741fffd0ce7d643f4c1c4b59d7e53a83796ae25",
432
+ isolatedAssetKey: void 0,
433
+ spool: void 0,
434
+ spoolReward: void 0
430
435
  },
431
- weth: {
432
- lendingPoolAddress: "0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",
433
- collateralPoolAddress: "0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf"
436
+ usdc: {
437
+ lendingPoolAddress: "0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",
438
+ collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af",
439
+ borrowDynamic: "0x77837ecd4f26fac9a410fff594f2c0bd3288904a15492ca77cb8a52684dbb866",
440
+ interestModel: "0xaae3f179d63009380cbdcb9acb12907afc9c3cb79cc3460be296a9c6d28f3ff3",
441
+ riskModel: "0x198b24db213bfeb8b3c80ae63dde92e32fd24984d25da8233ff777b851edd574",
442
+ borrowFeeKey: "0xd37c5316cfe0a5967d14264fa6b423f880518b294a1ee6581ccbb49ccc401fb8",
443
+ supplyLimitKey: "0x4be9ae54ac4d320f4f9c14cae78cb85c8e0e67791dd9bdba6d2db20614a28a24",
444
+ borrowLimitKey: "0x6b01093cba95b835181f00e3a2c31ed8dfc8d64fe3db0fb80933a09f66e1ccf1",
445
+ isolatedAssetKey: void 0,
446
+ spool: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
447
+ spoolReward: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166"
434
448
  },
435
449
  wbtc: {
436
450
  lendingPoolAddress: "0x65cc08a5aca0a0b8d72e1993ded8d145f06dd102fd0d8f285b92934faed564ab",
437
- collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3"
451
+ collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3",
452
+ borrowDynamic: "0x6f97dcf54158a5d08f359a213a41e347bc1e6316414288dc1e1b674dc008742e",
453
+ interestModel: "0x582b915cca0ffca9576a7cedd505d0fd7cb146e9521ccf10e7453ed93705684d",
454
+ riskModel: "0x1d0a242bf1682e259112239720da19d3155dd99d70b1f4b3b973eecbab858911",
455
+ borrowFeeKey: "0x654ab7e8ff6d9ef04da697e1f12ca21eaf72ebb495daf877e0776e65187dcb92",
456
+ supplyLimitKey: "0xac3b0d17df9f98aa2798c54405cf1d8d5356ef22f76f02d150cbe5195e9f3a36",
457
+ borrowLimitKey: "0x231e13ba6b1eb26c562f4a125778d3152f9a77e31f124bd6012e234a73012169",
458
+ isolatedAssetKey: void 0,
459
+ spool: void 0,
460
+ spoolReward: void 0
438
461
  },
439
462
  wusdc: {
440
- lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
441
- collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb"
463
+ lendingPoolAddress: "0x2f4df5e1368fbbdaa5c712d28b837b3d41c2d3872979ccededcdfdac55ff8a93",
464
+ collateralPoolAddress: "0x94cf69158114c5b242d2ee5d0149a335bddf3b9c9a6ba919cca58097a4814980",
465
+ borrowDynamic: "0x0464d117908b52fc75f7f85322a47caa078ef56f48681bcfdcb630a66f2591e6",
466
+ interestModel: "0xd72e2b5ba486752939d6dfb86a67b86ce9a60c83cb8fb893caac54a0f112577f",
467
+ riskModel: "0xb74035de8f70c1531ceb8e2e8c152d6b8db24c8a9fe7bbf6f75dbf7c6700a0a3",
468
+ borrowFeeKey: "0x76dcf1acbd9951fe3d1a3fe28403fec089ffe53a7c7d6c77e3ea97033a63581a",
469
+ supplyLimitKey: "0x7b302196907e87c5d5872f2e6f40628d110170f994e0e08bc607bded001958c3",
470
+ borrowLimitKey: "0x97f1502ce994db0bcb15aac1760d174def9e88e97cd2262eed54521ee2c19f81",
471
+ isolatedAssetKey: void 0,
472
+ spool: "0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",
473
+ spoolReward: "0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8"
474
+ },
475
+ weth: {
476
+ lendingPoolAddress: "0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",
477
+ collateralPoolAddress: "0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf",
478
+ borrowDynamic: "0xd1578e1d1c9c82eb4c5bf14beece8142a67a683b2647d7276e92984119fc1445",
479
+ interestModel: "0xa1dc08541cd2cb7cfb4e56272292d5c6a4780e80fd210c58abffae98268b5ed9",
480
+ riskModel: "0x9f05a25fd33a9e8cf33962126b175d038e184f0ee1b87dc41d4cedbe6abebbe5",
481
+ borrowFeeKey: "0x29672ba8ab4625b8181d8ed739e5344de22a97d417748c4d1276c7379283d7a3",
482
+ supplyLimitKey: "0x2b957941bdc9432bbc83ab74dc194b6ebb7c927bc4c6926a5492b5503499e509",
483
+ borrowLimitKey: "0x51f256d87e51a7ca2b1c482923096f4b6dac6beac89d8ecf4c65b7d5764115d6",
484
+ isolatedAssetKey: void 0,
485
+ spool: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
486
+ spoolReward: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"
442
487
  },
443
488
  wusdt: {
444
489
  lendingPoolAddress: "0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879",
445
- collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3"
490
+ collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3",
491
+ borrowDynamic: "0xb524030cc8f7cdbf13f1925a0a2b5e77cc52bab73b070f42c5e510f6083da1ba",
492
+ interestModel: "0x92f93c4431b4c51774d6d964da516af2def18b78f49dbbf519e58449a8ba4659",
493
+ riskModel: "0xdf89d66988cb506ddeff46f5dfd1d11aaece345e9a05a0c6a18a0788647de2a7",
494
+ borrowFeeKey: "0xda8f8b3522fc4086eae4ae7ce8844d60aa0dc3eab8ffc91fe93e922a72639b2d",
495
+ supplyLimitKey: "0xa9cb5ebb90ca6e808a2bd7728cca4a6fa8b565d4deeda96eb23c8322c477c24e",
496
+ borrowLimitKey: "0xa3278564fc613680a69c10972a0299965bf6e12e9ac171388842fc958de0f90e",
497
+ isolatedAssetKey: void 0,
498
+ spool: "0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",
499
+ spoolReward: "0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080"
446
500
  },
447
501
  sui: {
448
502
  lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
449
- collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb"
503
+ collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb",
504
+ borrowDynamic: "0xbf68e6159c99dcaf87717385f1143d2891c2d19663bd51f0bc9b6909e4bb7c27",
505
+ interestModel: "0x0dad9baa89b863c15a0487575de7cc428b01f1aa3998ad7a9e9752d96e83ffa9",
506
+ riskModel: "0xcd6675864690b5648a6e309f2f02a66914b2b2bd9c31936f4e0f7fc0f792bc86",
507
+ borrowFeeKey: "0xda5ede87a05c0677b17511c859b22d0a2b0229ee374d5d7a1274cb836b9fe5f8",
508
+ supplyLimitKey: "0x0602418e66fb7a73fa997077bd66f248ad5b090d43344a14b9f1db598ecc1d47",
509
+ borrowLimitKey: "0x2b33a7efdcf6a6df24f4d8a356dd52f58d75bc023c3f171d99502d4d008b53f0",
510
+ isolatedAssetKey: void 0,
511
+ spool: "0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",
512
+ spoolReward: "0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9"
450
513
  },
451
514
  wapt: {
452
515
  lendingPoolAddress: "0xca8c14a24e0c32b198eaf479a3317461e3cc339097ce88eaf296a15df8dcfdf5",
453
- collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c"
516
+ collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c",
517
+ borrowDynamic: "0xadda873fb6bf68e1ba3f2dfaa51cf75d4a1bef73d9627bd36e77d2baecb1f2dc",
518
+ interestModel: "0xa4a29d07beecea5eb0c59745bb89d7a1380c6f206a7f1ca37046e05db6025c43",
519
+ riskModel: "0x7ada83b473af30aed50d187de82a0912878b53ade7ac30e11ce23953cf739d84",
520
+ borrowFeeKey: "0x768735df587c7e0f141dcd035fbbcbf9d2149a7b23888baed4e2baa160fa2eeb",
521
+ supplyLimitKey: void 0,
522
+ borrowLimitKey: void 0,
523
+ isolatedAssetKey: void 0,
524
+ spool: void 0,
525
+ spoolReward: void 0
526
+ },
527
+ afsui: {
528
+ lendingPoolAddress: "0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",
529
+ collateralPoolAddress: "0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341",
530
+ borrowDynamic: "0x1c76d4df9506154a117bbac0f5e005d8a9c0d9ca60e3fe0c9d080006f6f54e81",
531
+ interestModel: "0xb155c536b37c9601baaa734ad1dd0ef335b2b597aceb8d3ecee41a43f94dcd70",
532
+ riskModel: "0x75371b1d04b5bebc0738af548ba64ea658e74f78228ec8014336d8eebb992312",
533
+ borrowFeeKey: "0xabc6422db2d4ee01635ddaeaa44ba68370eebd785d2c4632515f841ae9bc47d9",
534
+ supplyLimitKey: "0x61a2054eb37f543c0d774da57f2c9542aad8d79a197f748ac08ef5df6cc47028",
535
+ borrowLimitKey: "0x4459498a043872cd107ea917493fee0baf2d37a273c7538e1d6581cc61b92af8",
536
+ isolatedAssetKey: void 0,
537
+ spool: "0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",
538
+ spoolReward: "0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e"
454
539
  },
455
540
  wsol: {
456
541
  lendingPoolAddress: "0x985682c42984cdfb03f9ff7d8923344c2fe096b1ae4b82ea17721af19d22a21f",
457
- collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f"
542
+ collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f",
543
+ borrowDynamic: "0xe3f301e16d4f1273ea659dd82c5c3f124ca5a5883a5726c7ec0f77bf43b70895",
544
+ interestModel: "0xd95affaee077006b8dbb4b108c1b087e95fc6e5143ef0682da345d5b35bc6356",
545
+ riskModel: "0x8e0da6358073144ec3557400c87f04991ba3a13ca7e0d0a19daed45260b32f16",
546
+ borrowFeeKey: "0x604bffbc817e8e12db15f2373a9e15b2c7adbc510649cdf2cc62a594af90671c",
547
+ supplyLimitKey: "0xbd419b536b3f9c9d4adfc20372ca6feedc53cc31798ac860dbfc847bcf05f54b",
548
+ borrowLimitKey: "0x77d453c51948f32564c810bc73f9ba7abde880657b7f89e1c8a3bc28fa36ee87",
549
+ isolatedAssetKey: void 0,
550
+ spool: void 0,
551
+ spoolReward: void 0
458
552
  },
459
553
  cetus: {
460
554
  lendingPoolAddress: "0xc09858f60e74a1b671635bec4e8a2c84a0ff313eb87f525fba3258e88c6b6282",
461
- collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a"
462
- },
463
- afsui: {
464
- lendingPoolAddress: "0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",
465
- collateralPoolAddress: "0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341"
555
+ collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a",
556
+ borrowDynamic: "0xcc725fd5d71990cdccc7e16c88a2abde6dbcd0bf6e805ccc1c0cb83a106bbf4e",
557
+ interestModel: "0x2f1258aab89d04d11834121599ab1317dfecb582b4246f106df399911125845a",
558
+ riskModel: "0x03fed312dbba624dff5edaf4736891a1c7d864445fd268e7572b42ec7381132e",
559
+ borrowFeeKey: "0xdf5fb0cc4ebbf5eebfae23dfa5b266f6a58c18a894a13054ae60c0eb6e79c382",
560
+ supplyLimitKey: "0xa5ea3d4bf663d7bc667e82b40a98923590ff3851b9ea8e7afbc26c588c7007d3",
561
+ borrowLimitKey: "0xf44218a5f0feb128e6fbe74b91d1e7e9ef859bd23a576ff0de151829e015a157",
562
+ isolatedAssetKey: void 0,
563
+ spool: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
564
+ spoolReward: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"
466
565
  },
467
566
  hasui: {
468
567
  lendingPoolAddress: "0x7ebc607f6bdeb659fb6506cb91c5cc1d47bb365cfd5d2e637ea765346ec84ed4",
469
- collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d"
568
+ collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d",
569
+ borrowDynamic: "0x13ec1220b41c6e0f11dd6113199a2aff8e4cf2223047b5bd06d7a3ed5d23e1d2",
570
+ interestModel: "0x987c58cbe48096618f4d9d83e0bde2ff638ce4753aba40dab7c302ac3e4b4519",
571
+ riskModel: "0xe42d8497d423eca0d8df89850c2d77d3644e7f54a2d28f59c315903ea5ec8dec",
572
+ borrowFeeKey: "0xef885c382d461c4fb14d1f3b3758c380c78a1a4b2a3d2fafe6e8649a60fdd7ab",
573
+ supplyLimitKey: "0xc7385b1703693cbbc9c97227fe3fd5c91d7afda00e0da69d942c3260d78e45e0",
574
+ borrowLimitKey: "0x65333e606eead786a999c8267bc9886b0fdbc298a8a8635a48a9c9b8838d9395",
575
+ isolatedAssetKey: void 0,
576
+ spool: "0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",
577
+ spoolReward: "0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66"
470
578
  },
471
579
  vsui: {
472
580
  lendingPoolAddress: "0xda9257c0731d8822e8a438ebced13415850d705b779c79958dcf2aeb21fcb43d",
473
- collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e"
581
+ collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e",
582
+ borrowDynamic: "0x8eae703505246f975e83f5af24780e5f1b89ef403d5a80ea15534624d6f1a503",
583
+ interestModel: "0xaf6a52b5eaaa5af4d9e49d83de0d504c295ae21f3a37560c3f48e0e15a1d4625",
584
+ riskModel: "0x1e862f27a6bd47c3041159a5cf392f549485c6605ed9aa937f16ecc951e82e65",
585
+ borrowFeeKey: "0x5230de0f41a5e4c05b3d1187a90a9eeab491cec97b08b71512d9785e8af36aa6",
586
+ supplyLimitKey: "0x1d40e34d1f365ec431fff020bd75c16b14b340b3ed6c139803cc15c2384621b2",
587
+ borrowLimitKey: "0x4eb206b4417642cfc1b02f80bb5f5e366af2af2f9fb4ea4f4e898ae82367f8a0",
588
+ isolatedAssetKey: void 0,
589
+ spool: "0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",
590
+ spoolReward: "0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a"
474
591
  },
475
592
  sca: {
476
593
  lendingPoolAddress: "0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",
477
- collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31"
478
- },
479
- fud: {
480
- lendingPoolAddress: "0x14367ddca30e2860cb89ed4eaca20c7ece260c5d59dd9990d2c85a8321326acb"
594
+ collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31",
595
+ borrowDynamic: "0x4e24f52edd739dab59ca4c6353ca430b7ce57e7f333abd0957958570a7cd09ca",
596
+ interestModel: "0xbdcd48cf5b1a814911dc2d5c72d393a980c87820199fe5d799289ce94f4c47df",
597
+ riskModel: "0xc437c24b67b8e2676907700fa395af337ad6463d2c0b4f4fa2e9276414026089",
598
+ borrowFeeKey: "0xee55ba0f9800a62d9e7aef667f87e658258f41814d2c9fa02e25590671b4e5ad",
599
+ supplyLimitKey: "0x8dd938856b972a10ea27ecab2af7ed78e48fc5f6ccedaf2b2119959f747dc2e3",
600
+ borrowLimitKey: "0x04c7de61c5b42972f9bf6a8b1848e5fea2d037ee8deba81741ecd4a70aa80d30",
601
+ isolatedAssetKey: void 0,
602
+ spool: void 0,
603
+ spoolReward: void 0
481
604
  },
482
605
  deep: {
483
- lendingPoolAddress: "0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03"
606
+ lendingPoolAddress: "0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03",
607
+ collateralPoolAddress: void 0,
608
+ borrowDynamic: "0x95e00d7466f97a100e70f08bd37788dc49335796f6f49fab996d40dd0681c6d3",
609
+ interestModel: "0x4143c298506a332d92ea8a995e6f3991ee3215f58f6fc6441752835d275b9a69",
610
+ riskModel: void 0,
611
+ borrowFeeKey: "0xb14ee43f4ad2a2c40bac8c4406a401690e93c982e289cf3802fedf74a159cab2",
612
+ supplyLimitKey: "0x599528fdfdc253e90dfd0acf4f4a166b391e2aac1ca6528abbff63225b548fee",
613
+ borrowLimitKey: "0xf4217e8ef9d9c32e8992092e910a77535a8124c19b8a762a673f227f5f765a4e",
614
+ isolatedAssetKey: "0x208d3a24ba369dcfc8f0387333d1512b98199eb150d2f2a69359ff708cf761e3",
615
+ spool: void 0,
616
+ spoolReward: void 0
617
+ },
618
+ fud: {
619
+ lendingPoolAddress: "0xefed2cbe76b344792ac724523c8b2236740d1cea2100d46a0ed0dc760c7f4231",
620
+ collateralPoolAddress: void 0,
621
+ borrowDynamic: "0x14367ddca30e2860cb89ed4eaca20c7ece260c5d59dd9990d2c85a8321326acb",
622
+ interestModel: "0x2600ac100ef154eb2329ffd3aad47aca308ff9f9348de3e8e94aaeb906ec2303",
623
+ riskModel: void 0,
624
+ borrowFeeKey: "0xa87e8b26e07ff35ac9fb57adcc779be2883080fc7d12de2d9e7e16d8d8d5e529",
625
+ supplyLimitKey: "0xf98419aecc37a3c5de716f8ec590f8991a5be34da72ce1a2da09531ff45adf7d",
626
+ borrowLimitKey: "0x3d928a001c453c50004baa54e14b0a0e1b0907d9c613dfd76064fd7ed4e8beb8",
627
+ isolatedAssetKey: "0xfcb533e9e4e31f9c9f32d6cbf7fbb3425f1d60474e229a363a2dc7f835d587e2",
628
+ spool: void 0,
629
+ spoolReward: void 0
484
630
  }
485
631
  };
486
632
 
@@ -531,7 +677,11 @@ var queryKeys = {
531
677
  typeArgs: !typeArgs ? void 0 : JSON.stringify(typeArgs)
532
678
  }
533
679
  ],
534
- getObject: (objectId, walletAddress, options) => ["rpc", "getObject", { walletAddress, options, objectId }],
680
+ getObject: (objectId, options) => [
681
+ "rpc",
682
+ "getObject",
683
+ { options, objectId }
684
+ ],
535
685
  getObjects: (objectIds, walletAddress, options) => [
536
686
  "rpc",
537
687
  "getObjects",
@@ -1064,8 +1214,8 @@ var TEST_ADDRESSES = {
1064
1214
  };
1065
1215
 
1066
1216
  // src/constants/tokenBucket.ts
1067
- var DEFAULT_TOKENS_PER_INTERVAL = 10;
1068
- var DEFAULT_INTERVAL_IN_MS = 50;
1217
+ var DEFAULT_TOKENS_PER_INTERVAL = 50;
1218
+ var DEFAULT_INTERVAL_IN_MS = 250;
1069
1219
 
1070
1220
  // src/constants/vesca.ts
1071
1221
  var UNLOCK_ROUND_DURATION = 60 * 60 * 24;
@@ -1209,7 +1359,10 @@ var parseOriginMarketPoolData = (originMarketPoolData) => {
1209
1359
  borrowRateOnMidKink: Number(originMarketPoolData.borrowRateOnMidKink.value) / 2 ** 32,
1210
1360
  highKink: Number(originMarketPoolData.highKink.value) / 2 ** 32,
1211
1361
  midKink: Number(originMarketPoolData.midKink.value) / 2 ** 32,
1212
- minBorrowAmount: Number(originMarketPoolData.minBorrowAmount)
1362
+ minBorrowAmount: Number(originMarketPoolData.minBorrowAmount),
1363
+ isIsolated: originMarketPoolData.isIsolated,
1364
+ supplyLimit: Number(originMarketPoolData.supplyLimit),
1365
+ borrowLimit: Number(originMarketPoolData.borrowLimit)
1213
1366
  };
1214
1367
  };
1215
1368
  var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
@@ -1261,6 +1414,7 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
1261
1414
  borrowApyOnHighKink: utils.parseAprToApy(borrowAprOnHighKink),
1262
1415
  borrowAprOnMidKink,
1263
1416
  borrowApyOnMidKink: utils.parseAprToApy(borrowAprOnMidKink),
1417
+ coinDecimal,
1264
1418
  maxBorrowApr,
1265
1419
  maxBorrowApy: utils.parseAprToApy(maxBorrowApr),
1266
1420
  borrowApr: Math.min(borrowApr, maxBorrowApr),
@@ -1279,17 +1433,21 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
1279
1433
  utilizationRate: utilizationRate.toNumber(),
1280
1434
  supplyApr: supplyApr.toNumber(),
1281
1435
  supplyApy: utils.parseAprToApy(supplyApr.toNumber()),
1282
- conversionRate: conversionRate.toNumber()
1436
+ conversionRate: conversionRate.toNumber(),
1437
+ isIsolated: parsedMarketPoolData.isIsolated,
1438
+ maxSupplyCoin: (0, import_bignumber.default)(parsedMarketPoolData.supplyLimit).shiftedBy(coinDecimal).toNumber(),
1439
+ maxBorrowCoin: (0, import_bignumber.default)(parsedMarketPoolData.borrowLimit).shiftedBy(coinDecimal).toNumber()
1283
1440
  };
1284
1441
  };
1285
1442
  var parseOriginMarketCollateralData = (originMarketCollateralData) => {
1286
1443
  const divisor = 2 ** 32;
1287
1444
  return {
1288
1445
  coinType: (0, import_utils.normalizeStructTag)(originMarketCollateralData.type.name),
1446
+ isIsolated: originMarketCollateralData.isIsolated,
1289
1447
  collateralFactor: Number(originMarketCollateralData.collateralFactor.value) / divisor,
1290
1448
  liquidationFactor: Number(originMarketCollateralData.liquidationFactor.value) / divisor,
1291
1449
  liquidationDiscount: Number(originMarketCollateralData.liquidationDiscount.value) / divisor,
1292
- liquidationPanelty: Number(originMarketCollateralData.liquidationPanelty.value) / divisor,
1450
+ liquidationPenalty: Number(originMarketCollateralData.liquidationPenalty.value) / divisor,
1293
1451
  liquidationReserveFactor: Number(originMarketCollateralData.liquidationReserveFactor.value) / divisor,
1294
1452
  maxCollateralAmount: Number(originMarketCollateralData.maxCollateralAmount),
1295
1453
  totalCollateralAmount: Number(
@@ -1309,6 +1467,8 @@ var calculateMarketCollateralData = (utils, parsedMarketCollateralData) => {
1309
1467
  parsedMarketCollateralData.totalCollateralAmount
1310
1468
  ).shiftedBy(-1 * coinDecimal);
1311
1469
  return {
1470
+ coinDecimal,
1471
+ isIsolated: parsedMarketCollateralData.isIsolated,
1312
1472
  maxDepositAmount: parsedMarketCollateralData.maxCollateralAmount,
1313
1473
  maxDepositCoin: maxCollateralCoin.toNumber(),
1314
1474
  depositAmount: parsedMarketCollateralData.totalCollateralAmount,
@@ -1639,6 +1799,13 @@ var findClosestUnlockRound = (unlockAtInSecondTimestamp) => {
1639
1799
  }
1640
1800
  return Math.floor(closestTwelveAM.getTime() / 1e3);
1641
1801
  };
1802
+ var partitionArray = (array, chunkSize) => {
1803
+ const result = [];
1804
+ for (let i = 0; i < array.length; i += chunkSize) {
1805
+ result.push(array.slice(i, i + chunkSize));
1806
+ }
1807
+ return result;
1808
+ };
1642
1809
 
1643
1810
  // src/utils/tokenBucket.ts
1644
1811
  var TokenBucket = class {
@@ -1666,7 +1833,7 @@ var TokenBucket = class {
1666
1833
  return false;
1667
1834
  }
1668
1835
  };
1669
- var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor = 2) => {
1836
+ var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor = 1.25) => {
1670
1837
  let retries = 0;
1671
1838
  const tryRequest = async () => {
1672
1839
  if (tokenBucket.removeTokens(1)) {
@@ -1675,7 +1842,6 @@ var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVA
1675
1842
  } else if (retries < maxRetries) {
1676
1843
  retries++;
1677
1844
  const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
1678
- console.error(`Rate limit exceeded, retrying in ${delay} ms`);
1679
1845
  await new Promise((resolve) => setTimeout(resolve, delay));
1680
1846
  return tryRequest();
1681
1847
  } else {
@@ -1711,6 +1877,16 @@ function withIndexerFallback(method) {
1711
1877
  };
1712
1878
  }
1713
1879
 
1880
+ // src/utils/core.ts
1881
+ var parseObjectAs = (object) => {
1882
+ if (!(object && object.content && "fields" in object.content))
1883
+ throw new Error(`Failed to parse object`);
1884
+ const value = object.content.fields.value;
1885
+ if (typeof value === "object" && "fields" in value)
1886
+ return object.content.fields.value.fields;
1887
+ return value;
1888
+ };
1889
+
1714
1890
  // src/models/scallopCache.ts
1715
1891
  var ScallopCache = class {
1716
1892
  constructor(suiKit, walletAddress, cacheOptions, tokenBucket, queryClient) {
@@ -1745,6 +1921,13 @@ var ScallopCache = class {
1745
1921
  })
1746
1922
  );
1747
1923
  }
1924
+ retryFn(errCount, e) {
1925
+ if (errCount === 5)
1926
+ return false;
1927
+ if (e.status === 429)
1928
+ return true;
1929
+ return false;
1930
+ }
1748
1931
  /**
1749
1932
  * @description Provides cache for inspectTxn of the SuiKit.
1750
1933
  * @param QueryInspectTxnParams
@@ -1757,9 +1940,17 @@ var ScallopCache = class {
1757
1940
  typeArgs
1758
1941
  }) {
1759
1942
  const txBlock = new import_sui_kit.SuiTxBlock();
1760
- txBlock.moveCall(queryTarget, args, typeArgs);
1943
+ const resolvedArgs = await Promise.all(
1944
+ args.map(async (arg) => {
1945
+ if (typeof arg === "string") {
1946
+ return (await this.queryGetObject(arg))?.data;
1947
+ }
1948
+ return arg;
1949
+ })
1950
+ );
1951
+ txBlock.moveCall(queryTarget, resolvedArgs, typeArgs);
1761
1952
  const query = await this.queryClient.fetchQuery({
1762
- retry: 5,
1953
+ retry: this.retryFn,
1763
1954
  retryDelay: 1e3,
1764
1955
  queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
1765
1956
  queryFn: async () => {
@@ -1779,9 +1970,9 @@ var ScallopCache = class {
1779
1970
  */
1780
1971
  async queryGetObject(objectId, options) {
1781
1972
  return this.queryClient.fetchQuery({
1782
- retry: 5,
1973
+ retry: this.retryFn,
1783
1974
  retryDelay: 1e3,
1784
- queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
1975
+ queryKey: queryKeys.rpc.getObject(objectId, options),
1785
1976
  queryFn: async () => {
1786
1977
  return await callWithRateLimit(
1787
1978
  this.tokenBucket,
@@ -1804,7 +1995,7 @@ var ScallopCache = class {
1804
1995
  if (objectIds.length === 0)
1805
1996
  return [];
1806
1997
  return this.queryClient.fetchQuery({
1807
- retry: 5,
1998
+ retry: this.retryFn,
1808
1999
  retryDelay: 1e3,
1809
2000
  queryKey: queryKeys.rpc.getObjects(
1810
2001
  objectIds,
@@ -1812,10 +2003,28 @@ var ScallopCache = class {
1812
2003
  options
1813
2004
  ),
1814
2005
  queryFn: async () => {
1815
- return await callWithRateLimit(
2006
+ const results = await callWithRateLimit(
1816
2007
  this.tokenBucket,
1817
2008
  async () => await this.suiKit.getObjects(objectIds, options)
1818
2009
  );
2010
+ if (results) {
2011
+ results.forEach((result) => {
2012
+ this.queryClient.setQueriesData(
2013
+ {
2014
+ exact: false,
2015
+ queryKey: queryKeys.rpc.getObject(result.objectId, options)
2016
+ },
2017
+ {
2018
+ data: result,
2019
+ error: null
2020
+ },
2021
+ {
2022
+ updatedAt: Date.now()
2023
+ }
2024
+ );
2025
+ });
2026
+ }
2027
+ return results;
1819
2028
  }
1820
2029
  });
1821
2030
  }
@@ -1826,7 +2035,7 @@ var ScallopCache = class {
1826
2035
  */
1827
2036
  async queryGetOwnedObjects(input) {
1828
2037
  return this.queryClient.fetchQuery({
1829
- retry: 5,
2038
+ retry: this.retryFn,
1830
2039
  retryDelay: 1e3,
1831
2040
  queryKey: queryKeys.rpc.getOwnedObjects(input),
1832
2041
  queryFn: async () => {
@@ -1839,7 +2048,7 @@ var ScallopCache = class {
1839
2048
  }
1840
2049
  async queryGetDynamicFields(input) {
1841
2050
  return this.queryClient.fetchQuery({
1842
- retry: 5,
2051
+ retry: this.retryFn,
1843
2052
  retryDelay: 1e3,
1844
2053
  queryKey: queryKeys.rpc.getDynamicFields(input),
1845
2054
  queryFn: async () => {
@@ -1852,7 +2061,7 @@ var ScallopCache = class {
1852
2061
  }
1853
2062
  async queryGetDynamicFieldObject(input) {
1854
2063
  return this.queryClient.fetchQuery({
1855
- retry: 5,
2064
+ retry: this.retryFn,
1856
2065
  retryDelay: (attemptIndex) => Math.min(1e3 * attemptIndex, 8e3),
1857
2066
  queryKey: queryKeys.rpc.getDynamicFieldObject(input),
1858
2067
  queryFn: async () => {
@@ -1865,7 +2074,7 @@ var ScallopCache = class {
1865
2074
  }
1866
2075
  async queryGetAllCoinBalances(owner) {
1867
2076
  return this.queryClient.fetchQuery({
1868
- retry: 5,
2077
+ retry: this.retryFn,
1869
2078
  retryDelay: 1e3,
1870
2079
  queryKey: queryKeys.rpc.getAllCoinBalances(owner),
1871
2080
  queryFn: async () => {
@@ -2559,10 +2768,10 @@ var ScallopAddress = class {
2559
2768
  };
2560
2769
 
2561
2770
  // src/models/scallopClient.ts
2562
- var import_utils25 = require("@mysten/sui/utils");
2771
+ var import_utils26 = require("@mysten/sui/utils");
2563
2772
 
2564
2773
  // src/models/scallopUtils.ts
2565
- var import_utils10 = require("@mysten/sui/utils");
2774
+ var import_utils11 = require("@mysten/sui/utils");
2566
2775
  var import_pyth_sui_js = require("@pythnetwork/pyth-sui-js");
2567
2776
 
2568
2777
  // src/queries/borrowIncentiveQuery.ts
@@ -2584,7 +2793,7 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
2584
2793
  ...SUPPORT_BORROW_INCENTIVE_POOLS
2585
2794
  ], indexer = false, marketPools, coinPrices) => {
2586
2795
  const borrowIncentivePools = {};
2587
- marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices, indexer });
2796
+ marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices, indexer })).pools;
2588
2797
  coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools });
2589
2798
  if (indexer) {
2590
2799
  const borrowIncentivePoolsIndexer = await query.indexer.getBorrowIncentivePools();
@@ -2757,7 +2966,7 @@ var getBindedVeScaKey = async ({
2757
2966
  };
2758
2967
 
2759
2968
  // src/queries/coreQuery.ts
2760
- var import_utils5 = require("@mysten/sui/utils");
2969
+ var import_utils6 = require("@mysten/sui/utils");
2761
2970
  var import_bignumber3 = __toESM(require("bignumber.js"));
2762
2971
 
2763
2972
  // src/queries/supplyLimitQuery.ts
@@ -2817,9 +3026,14 @@ var isolatedAssetZod = import_zod2.z.object({
2817
3026
  })
2818
3027
  });
2819
3028
  var isolatedAssetKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
2820
- var getIsolatedAssets = async (address) => {
3029
+ var getIsolatedAssets = async (query) => {
3030
+ if (SUPPORT_POOLS.every((t) => !!POOL_ADDRESSES[t])) {
3031
+ return SUPPORT_POOLS.filter(
3032
+ (t) => !!POOL_ADDRESSES[t]?.isolatedAssetKey && !!POOL_ADDRESSES[t]?.coinType
3033
+ ).map((t) => POOL_ADDRESSES[t]?.coinType);
3034
+ }
2821
3035
  try {
2822
- const marketObject = address.get("core.market");
3036
+ const marketObject = query.address.get("core.market");
2823
3037
  const isolatedAssets = [];
2824
3038
  if (!marketObject)
2825
3039
  return isolatedAssets;
@@ -2829,7 +3043,7 @@ var getIsolatedAssets = async (address) => {
2829
3043
  return dynamicField.name.type === isolatedAssetKeyType;
2830
3044
  };
2831
3045
  do {
2832
- const response = await address.cache.queryGetDynamicFields({
3046
+ const response = await query.cache.queryGetDynamicFields({
2833
3047
  parentId: marketObject,
2834
3048
  cursor: nextCursor,
2835
3049
  limit: 10
@@ -2852,32 +3066,30 @@ var getIsolatedAssets = async (address) => {
2852
3066
  }
2853
3067
  };
2854
3068
  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);
3069
+ if (POOL_ADDRESSES[coinName]) {
3070
+ return !!POOL_ADDRESSES[coinName].isolatedAssetKey;
3071
+ }
3072
+ const marketObject = utils.address.get("core.market");
3073
+ const cachedData = utils.address.cache.queryClient.getQueryData([
3074
+ "getDynamicFields",
3075
+ marketObject
3076
+ ]);
3077
+ if (cachedData) {
3078
+ const coinType2 = utils.parseCoinType(coinName);
3079
+ return cachedData.includes(coinType2);
3080
+ }
3081
+ const coinType = utils.parseCoinType(coinName).slice(2);
3082
+ const object = await utils.cache.queryGetDynamicFieldObject({
3083
+ parentId: marketObject,
3084
+ name: {
3085
+ type: isolatedAssetKeyType,
3086
+ value: coinType
2864
3087
  }
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);
3088
+ });
3089
+ const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
3090
+ if (!parsedData.success)
2879
3091
  return false;
2880
- }
3092
+ return parsedData.data.fields.value;
2881
3093
  };
2882
3094
 
2883
3095
  // src/queries/borrowLimitQuery.ts
@@ -2920,6 +3132,17 @@ var getBorrowLimit = async (utils, poolName) => {
2920
3132
  }
2921
3133
  };
2922
3134
 
3135
+ // src/queries/objectsQuery.ts
3136
+ var queryMultipleObjects = async (cache, objectIds, options, partitionSize = 50) => {
3137
+ const objectIdsPartition = partitionArray(objectIds, partitionSize);
3138
+ const objects = [];
3139
+ for (const objectIds2 of objectIdsPartition) {
3140
+ const result = await cache.queryGetObjects(objectIds2, options);
3141
+ objects.push(...result);
3142
+ }
3143
+ return objects;
3144
+ };
3145
+
2923
3146
  // src/queries/coreQuery.ts
2924
3147
  var queryMarket = async (query, indexer = false, coinPrices) => {
2925
3148
  coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
@@ -2951,7 +3174,7 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2951
3174
  const queryResult = await query.cache.queryInspectTxn({ queryTarget, args });
2952
3175
  const marketData = queryResult?.events[0]?.parsedJson;
2953
3176
  for (const pool of marketData?.pools ?? []) {
2954
- const coinType = (0, import_utils5.normalizeStructTag)(pool.type.name);
3177
+ const coinType = (0, import_utils6.normalizeStructTag)(pool.type.name);
2955
3178
  const poolCoinName = query.utils.parseCoinNameFromType(coinType);
2956
3179
  const coinPrice = coinPrices[poolCoinName] ?? 0;
2957
3180
  if (!SUPPORT_POOLS.includes(poolCoinName)) {
@@ -2976,19 +3199,15 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2976
3199
  borrowRateOnMidKink: pool.borrowRateOnMidKink,
2977
3200
  highKink: pool.highKink,
2978
3201
  midKink: pool.midKink,
2979
- minBorrowAmount: pool.minBorrowAmount
3202
+ minBorrowAmount: pool.minBorrowAmount,
3203
+ isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3204
+ supplyLimit: await getSupplyLimit(query.utils, poolCoinName) ?? "0",
3205
+ borrowLimit: await getBorrowLimit(query.utils, poolCoinName) ?? "0"
2980
3206
  });
2981
3207
  const calculatedMarketPoolData = calculateMarketPoolData(
2982
3208
  query.utils,
2983
3209
  parsedMarketPoolData
2984
3210
  );
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
3211
  pools[poolCoinName] = {
2993
3212
  coinName: poolCoinName,
2994
3213
  symbol: query.utils.parseSymbol(poolCoinName),
@@ -2998,7 +3217,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2998
3217
  query.utils.parseMarketCoinName(poolCoinName)
2999
3218
  ),
3000
3219
  coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3001
- coinDecimal,
3002
3220
  coinPrice,
3003
3221
  highKink: parsedMarketPoolData.highKink,
3004
3222
  midKink: parsedMarketPoolData.midKink,
@@ -3007,15 +3225,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
3007
3225
  borrowFee: parsedMarketPoolData.borrowFee,
3008
3226
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
3009
3227
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
3010
- isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3011
- // isIsolated: false,
3012
- maxSupplyCoin,
3013
- maxBorrowCoin,
3014
3228
  ...calculatedMarketPoolData
3015
3229
  };
3016
3230
  }
3017
3231
  for (const collateral of marketData?.collaterals ?? []) {
3018
- const coinType = (0, import_utils5.normalizeStructTag)(collateral.type.name);
3232
+ const coinType = (0, import_utils6.normalizeStructTag)(collateral.type.name);
3019
3233
  const collateralCoinName = query.utils.parseCoinNameFromType(coinType);
3020
3234
  const coinPrice = coinPrices[collateralCoinName] ?? 0;
3021
3235
  if (!SUPPORT_COLLATERALS.includes(collateralCoinName)) {
@@ -3026,10 +3240,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
3026
3240
  collateralFactor: collateral.collateralFactor,
3027
3241
  liquidationFactor: collateral.liquidationFactor,
3028
3242
  liquidationDiscount: collateral.liquidationDiscount,
3029
- liquidationPanelty: collateral.liquidationPanelty,
3243
+ liquidationPenalty: collateral.liquidationPanelty,
3030
3244
  liquidationReserveFactor: collateral.liquidationReserveFactor,
3031
3245
  maxCollateralAmount: collateral.maxCollateralAmount,
3032
- totalCollateralAmount: collateral.totalCollateralAmount
3246
+ totalCollateralAmount: collateral.totalCollateralAmount,
3247
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
3033
3248
  });
3034
3249
  const calculatedMarketCollateralData = calculateMarketCollateralData(
3035
3250
  query.utils,
@@ -3041,14 +3256,12 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
3041
3256
  coinType,
3042
3257
  marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
3043
3258
  coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
3044
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
3045
3259
  coinPrice,
3046
3260
  collateralFactor: parsedMarketCollateralData.collateralFactor,
3047
3261
  liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3048
3262
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3049
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3263
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
3050
3264
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3051
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
3052
3265
  ...calculatedMarketCollateralData
3053
3266
  };
3054
3267
  }
@@ -3058,44 +3271,216 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
3058
3271
  // data: marketData,
3059
3272
  };
3060
3273
  };
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
- });
3274
+ var queryRequiredMarketObjects = async (query, poolCoinNames) => {
3275
+ const tasks = poolCoinNames.map((t) => ({
3276
+ poolCoinName: t,
3277
+ balanceSheet: POOL_ADDRESSES[t]?.lendingPoolAddress,
3278
+ collateralStat: POOL_ADDRESSES[t]?.collateralPoolAddress,
3279
+ borrowDynamic: POOL_ADDRESSES[t]?.borrowDynamic,
3280
+ interestModel: POOL_ADDRESSES[t]?.interestModel,
3281
+ riskModel: POOL_ADDRESSES[t]?.riskModel,
3282
+ borrowFeeKey: POOL_ADDRESSES[t]?.borrowFeeKey,
3283
+ supplyLimitKey: POOL_ADDRESSES[t]?.supplyLimitKey,
3284
+ borrowLimitKey: POOL_ADDRESSES[t]?.borrowLimitKey,
3285
+ isolatedAssetKey: POOL_ADDRESSES[t]?.isolatedAssetKey
3286
+ }));
3287
+ const [
3288
+ balanceSheetObjects,
3289
+ collateralStatObjects,
3290
+ borrowDynamicObjects,
3291
+ interestModelObjects,
3292
+ riskModelObjects,
3293
+ borrowFeeObjects,
3294
+ supplyLimitObjects,
3295
+ borrowLimitObjects,
3296
+ isolatedAssetObjects
3297
+ ] = await Promise.all([
3298
+ queryMultipleObjects(
3299
+ query.cache,
3300
+ tasks.map((task) => task.balanceSheet).filter((t) => !!t)
3301
+ ),
3302
+ queryMultipleObjects(
3303
+ query.cache,
3304
+ tasks.map((task) => task.collateralStat).filter((t) => !!t)
3305
+ ),
3306
+ queryMultipleObjects(
3307
+ query.cache,
3308
+ tasks.map((task) => task.borrowDynamic).filter((t) => !!t)
3309
+ ),
3310
+ queryMultipleObjects(
3311
+ query.cache,
3312
+ tasks.map((task) => task.interestModel).filter((t) => !!t)
3313
+ ),
3314
+ queryMultipleObjects(
3315
+ query.cache,
3316
+ tasks.map((task) => task.riskModel).filter((t) => !!t)
3317
+ ),
3318
+ queryMultipleObjects(
3319
+ query.cache,
3320
+ tasks.map((task) => task.borrowFeeKey).filter((t) => !!t)
3321
+ ),
3322
+ queryMultipleObjects(
3323
+ query.cache,
3324
+ tasks.map((task) => task.supplyLimitKey).filter((t) => !!t)
3325
+ ),
3326
+ queryMultipleObjects(
3327
+ query.cache,
3328
+ tasks.map((task) => task.borrowLimitKey).filter((t) => !!t)
3329
+ ),
3330
+ queryMultipleObjects(
3331
+ query.cache,
3332
+ tasks.map((task) => task.isolatedAssetKey).filter((t) => !!t)
3333
+ )
3334
+ ]);
3335
+ const mapObjects = (tasks2, fetchedObjects) => {
3336
+ const resultMap = {};
3337
+ let fetchedIndex = 0;
3338
+ for (const task of tasks2) {
3339
+ const key = task[Object.keys(task)[1]];
3340
+ if (key) {
3341
+ resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
3342
+ fetchedIndex++;
3343
+ }
3344
+ }
3345
+ return resultMap;
3346
+ };
3347
+ const balanceSheetMap = mapObjects(tasks, balanceSheetObjects);
3348
+ const collateralStatMap = mapObjects(tasks, collateralStatObjects);
3349
+ const borrowDynamicMap = mapObjects(tasks, borrowDynamicObjects);
3350
+ const interestModelMap = mapObjects(tasks, interestModelObjects);
3351
+ const riskModelMap = mapObjects(tasks, riskModelObjects);
3352
+ const borrowFeeMap = mapObjects(tasks, borrowFeeObjects);
3353
+ const supplyLimitMap = mapObjects(tasks, supplyLimitObjects);
3354
+ const borrowLimitMap = mapObjects(tasks, borrowLimitObjects);
3355
+ const isolatedAssetMap = mapObjects(tasks, isolatedAssetObjects);
3356
+ return poolCoinNames.reduce(
3357
+ (acc, name) => {
3358
+ acc[name] = {
3359
+ balanceSheet: balanceSheetMap[name],
3360
+ collateralStat: collateralStatMap[name],
3361
+ borrowDynamic: borrowDynamicMap[name],
3362
+ interestModel: interestModelMap[name],
3363
+ riskModel: riskModelMap[name],
3364
+ borrowFeeKey: borrowFeeMap[name],
3365
+ supplyLimitKey: supplyLimitMap[name],
3366
+ borrowLimitKey: borrowLimitMap[name],
3367
+ isolatedAssetKey: isolatedAssetMap[name]
3368
+ };
3369
+ return acc;
3370
+ },
3371
+ {}
3372
+ );
3373
+ };
3374
+ var getMarketPools = async (query, poolCoinNames, indexer = false, coinPrices) => {
3066
3375
  coinPrices = coinPrices ?? await query.utils.getCoinPrices();
3067
- const marketPools = {};
3376
+ const pools = {};
3377
+ const collaterals = {};
3068
3378
  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;
3379
+ const marketIndexer = await query.indexer.getMarket();
3380
+ const updatePools = (item) => {
3381
+ item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
3382
+ item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
3383
+ pools[item.coinName] = item;
3384
+ };
3385
+ const updateCollaterals = (item) => {
3386
+ item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
3387
+ item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
3388
+ collaterals[item.coinName] = item;
3389
+ };
3390
+ Object.values(marketIndexer.pools).forEach(updatePools);
3391
+ Object.values(marketIndexer.collaterals).forEach(updateCollaterals);
3392
+ return {
3393
+ pools,
3394
+ collaterals
3078
3395
  };
3079
- Object.values(marketPoolsIndexer).forEach(updateMarketPool);
3080
- return marketPools;
3081
3396
  }
3397
+ const requiredObjects = await queryRequiredMarketObjects(
3398
+ query,
3399
+ poolCoinNames
3400
+ );
3082
3401
  await Promise.allSettled(
3083
3402
  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;
3403
+ try {
3404
+ const result = await getMarketPool(
3405
+ query,
3406
+ poolCoinName,
3407
+ indexer,
3408
+ coinPrices?.[poolCoinName] ?? 0,
3409
+ requiredObjects[poolCoinName]
3410
+ );
3411
+ if (result?.marketPool) {
3412
+ pools[poolCoinName] = result?.marketPool;
3413
+ }
3414
+ if (result?.collateral) {
3415
+ collaterals[poolCoinName] = result.collateral;
3416
+ }
3417
+ } catch (e) {
3418
+ console.error(e);
3093
3419
  }
3094
3420
  })
3095
3421
  );
3096
- return marketPools;
3422
+ return {
3423
+ pools,
3424
+ collaterals
3425
+ };
3426
+ };
3427
+ var parseMarketPoolObjects = ({
3428
+ balanceSheet,
3429
+ borrowDynamic,
3430
+ collateralStat,
3431
+ interestModel,
3432
+ riskModel,
3433
+ borrowFeeKey,
3434
+ supplyLimitKey,
3435
+ borrowLimitKey,
3436
+ isolatedAssetKey
3437
+ }) => {
3438
+ const _balanceSheet = parseObjectAs(balanceSheet);
3439
+ const _interestModel = parseObjectAs(interestModel);
3440
+ const _borrowDynamic = parseObjectAs(borrowDynamic);
3441
+ const _borrowFee = parseObjectAs(borrowFeeKey);
3442
+ const _supplyLimit = supplyLimitKey ? parseObjectAs(supplyLimitKey) : "0";
3443
+ const _borrowLimit = borrowLimitKey ? parseObjectAs(borrowLimitKey) : "0";
3444
+ const _riskModel = riskModel ? parseObjectAs(riskModel) : void 0;
3445
+ const _collateralStat = collateralStat ? parseObjectAs(collateralStat) : void 0;
3446
+ const parsedOriginMarketCollateral = _riskModel && _collateralStat ? {
3447
+ type: _interestModel.type.fields,
3448
+ isIsolated: !!isolatedAssetKey,
3449
+ collateralFactor: _riskModel.collateral_factor.fields,
3450
+ liquidationFactor: _riskModel.liquidation_factor.fields,
3451
+ liquidationPenalty: _riskModel.liquidation_penalty.fields,
3452
+ liquidationDiscount: _riskModel.liquidation_discount.fields,
3453
+ liquidationReserveFactor: _riskModel.liquidation_revenue_factor.fields,
3454
+ maxCollateralAmount: _riskModel.max_collateral_amount,
3455
+ totalCollateralAmount: _collateralStat.amount
3456
+ } : void 0;
3457
+ return {
3458
+ type: _interestModel.type.fields,
3459
+ maxBorrowRate: _interestModel.max_borrow_rate.fields,
3460
+ interestRate: _borrowDynamic.interest_rate.fields,
3461
+ interestRateScale: _borrowDynamic.interest_rate_scale,
3462
+ borrowIndex: _borrowDynamic.borrow_index,
3463
+ lastUpdated: _borrowDynamic.last_updated,
3464
+ cash: _balanceSheet.cash,
3465
+ debt: _balanceSheet.debt,
3466
+ marketCoinSupply: _balanceSheet.market_coin_supply,
3467
+ reserve: _balanceSheet.revenue,
3468
+ reserveFactor: _interestModel.revenue_factor.fields,
3469
+ borrowWeight: _interestModel.borrow_weight.fields,
3470
+ borrowFeeRate: _borrowFee,
3471
+ baseBorrowRatePerSec: _interestModel.base_borrow_rate_per_sec.fields,
3472
+ borrowRateOnHighKink: _interestModel.borrow_rate_on_high_kink.fields,
3473
+ borrowRateOnMidKink: _interestModel.borrow_rate_on_mid_kink.fields,
3474
+ highKink: _interestModel.high_kink.fields,
3475
+ midKink: _interestModel.mid_kink.fields,
3476
+ minBorrowAmount: _interestModel.min_borrow_amount,
3477
+ isIsolated: !!isolatedAssetKey,
3478
+ supplyLimit: _supplyLimit,
3479
+ borrowLimit: _borrowLimit,
3480
+ parsedOriginMarketCollateral
3481
+ };
3097
3482
  };
3098
- var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
3483
+ var getMarketPool = async (query, poolCoinName, indexer = false, coinPrice, requiredObjects) => {
3099
3484
  coinPrice = coinPrice ?? (await query.utils.getCoinPrices())?.[poolCoinName];
3100
3485
  if (indexer) {
3101
3486
  const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
@@ -3106,135 +3491,70 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
3106
3491
  marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
3107
3492
  marketPoolIndexer.coinName
3108
3493
  );
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
- }
3494
+ let marketCollateralIndexer = void 0;
3495
+ if (SUPPORT_COLLATERALS.includes(poolCoinName)) {
3496
+ marketCollateralIndexer = await query.indexer.getMarketCollateral(
3497
+ poolCoinName
3498
+ );
3499
+ marketCollateralIndexer.coinPrice = coinPrice ?? marketCollateralIndexer.coinPrice;
3500
+ marketCollateralIndexer.coinWrappedType = query.utils.getCoinWrappedType(
3501
+ marketCollateralIndexer.coinName
3502
+ );
3159
3503
  }
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
- });
3504
+ return {
3505
+ marketPool: marketPoolIndexer,
3506
+ collateral: marketCollateralIndexer
3507
+ };
3508
+ }
3509
+ requiredObjects ?? (requiredObjects = (await queryRequiredMarketObjects(query, [poolCoinName]))[poolCoinName]);
3510
+ const parsedMarketPoolObjects = parseMarketPoolObjects(requiredObjects);
3511
+ const parsedMarketPoolData = parseOriginMarketPoolData(
3512
+ parsedMarketPoolObjects
3513
+ );
3205
3514
  const calculatedMarketPoolData = calculateMarketPoolData(
3206
3515
  query.utils,
3207
3516
  parsedMarketPoolData
3208
3517
  );
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 {
3518
+ const parsedMarketCollateralData = parsedMarketPoolObjects.parsedOriginMarketCollateral ? parseOriginMarketCollateralData(
3519
+ parsedMarketPoolObjects.parsedOriginMarketCollateral
3520
+ ) : void 0;
3521
+ const basePoolData = () => ({
3217
3522
  coinName: poolCoinName,
3218
3523
  symbol: query.utils.parseSymbol(poolCoinName),
3219
- coinType: query.utils.parseCoinType(poolCoinName),
3220
3524
  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
3525
+ coinType: query.utils.parseCoinType(poolCoinName)
3526
+ });
3527
+ return {
3528
+ marketPool: {
3529
+ ...basePoolData(),
3530
+ sCoinType: query.utils.parseSCoinType(
3531
+ query.utils.parseMarketCoinName(poolCoinName)
3532
+ ),
3533
+ coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3534
+ coinPrice: coinPrice ?? 0,
3535
+ highKink: parsedMarketPoolData.highKink,
3536
+ midKink: parsedMarketPoolData.midKink,
3537
+ reserveFactor: parsedMarketPoolData.reserveFactor,
3538
+ borrowWeight: parsedMarketPoolData.borrowWeight,
3539
+ borrowFee: parsedMarketPoolData.borrowFee,
3540
+ marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
3541
+ minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
3542
+ ...calculatedMarketPoolData
3543
+ },
3544
+ collateral: parsedMarketCollateralData ? {
3545
+ ...basePoolData(),
3546
+ coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3547
+ coinPrice,
3548
+ collateralFactor: parsedMarketCollateralData.collateralFactor,
3549
+ liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3550
+ liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3551
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
3552
+ liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3553
+ ...calculateMarketCollateralData(
3554
+ query.utils,
3555
+ parsedMarketCollateralData
3556
+ )
3557
+ } : void 0
3238
3558
  };
3239
3559
  };
3240
3560
  var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
@@ -3329,10 +3649,11 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
3329
3649
  collateralFactor: riskModel.collateral_factor.fields,
3330
3650
  liquidationFactor: riskModel.liquidation_factor.fields,
3331
3651
  liquidationDiscount: riskModel.liquidation_discount.fields,
3332
- liquidationPanelty: riskModel.liquidation_penalty.fields,
3652
+ liquidationPenalty: riskModel.liquidation_penalty.fields,
3333
3653
  liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
3334
3654
  maxCollateralAmount: riskModel.max_collateral_amount,
3335
- totalCollateralAmount: collateralStat.amount
3655
+ totalCollateralAmount: collateralStat.amount,
3656
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
3336
3657
  });
3337
3658
  const calculatedMarketCollateralData = calculateMarketCollateralData(
3338
3659
  query.utils,
@@ -3344,14 +3665,12 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
3344
3665
  coinType: query.utils.parseCoinType(collateralCoinName),
3345
3666
  marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
3346
3667
  coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
3347
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
3348
3668
  coinPrice: coinPrice ?? 0,
3349
3669
  collateralFactor: parsedMarketCollateralData.collateralFactor,
3350
3670
  liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3351
3671
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3352
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3672
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
3353
3673
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3354
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
3355
3674
  ...calculatedMarketCollateralData
3356
3675
  };
3357
3676
  };
@@ -3592,10 +3911,10 @@ var getLendings = async (query, poolCoinNames = [...SUPPORT_POOLS], ownerAddress
3592
3911
  (marketCoinName) => SUPPORT_SPOOLS.includes(marketCoinName)
3593
3912
  );
3594
3913
  const coinPrices = await query.utils.getCoinPrices();
3595
- const marketPools = await query.getMarketPools(poolCoinNames, {
3914
+ const marketPools = (await query.getMarketPools(poolCoinNames, {
3596
3915
  indexer,
3597
3916
  coinPrices
3598
- });
3917
+ })).pools;
3599
3918
  const spools = await query.getSpools(stakeMarketCoinNames, {
3600
3919
  indexer,
3601
3920
  marketPools,
@@ -3764,7 +4083,7 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
3764
4083
  };
3765
4084
  var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
3766
4085
  const coinPrices = await query.utils.getCoinPrices();
3767
- const market = await query.queryMarket({ indexer, coinPrices });
4086
+ const market = await query.getMarketPools(void 0, { coinPrices, indexer });
3768
4087
  const [coinAmounts, obligations] = await Promise.all([
3769
4088
  query.getCoinAmounts(void 0, ownerAddress),
3770
4089
  query.getObligations(ownerAddress)
@@ -3792,7 +4111,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
3792
4111
  const collateralAssetCoinNames = [
3793
4112
  ...SUPPORT_COLLATERALS
3794
4113
  ];
3795
- market = market ?? await query.queryMarket({ indexer });
4114
+ market = market ?? await query.getMarketPools(void 0, { indexer });
3796
4115
  coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools: market.pools });
3797
4116
  coinAmounts = coinAmounts || await query.getCoinAmounts(coinNames, ownerAddress);
3798
4117
  const [obligationQuery, borrowIncentivePools, borrowIncentiveAccounts] = await Promise.all([
@@ -4083,7 +4402,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
4083
4402
  return obligationAccount;
4084
4403
  };
4085
4404
  var getTotalValueLocked = async (query, indexer = false) => {
4086
- const market = await query.queryMarket({ indexer });
4405
+ const market = await query.getMarketPools(void 0, { indexer });
4087
4406
  let supplyValue = (0, import_bignumber5.default)(0);
4088
4407
  let borrowValue = (0, import_bignumber5.default)(0);
4089
4408
  if (indexer) {
@@ -4204,7 +4523,7 @@ var getPythPrices = async ({
4204
4523
  };
4205
4524
  var getAllCoinPrices = async (query, marketPools, coinPrices) => {
4206
4525
  coinPrices = coinPrices ?? await query.utils.getCoinPrices();
4207
- marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices });
4526
+ marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices })).pools;
4208
4527
  if (!marketPools) {
4209
4528
  throw new Error(`Failed to fetch market pool for getAllCoinPrices`);
4210
4529
  }
@@ -4329,13 +4648,13 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
4329
4648
  };
4330
4649
 
4331
4650
  // src/queries/spoolQuery.ts
4332
- var import_utils8 = require("@mysten/sui/utils");
4651
+ var import_utils9 = require("@mysten/sui/utils");
4333
4652
  var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexer = false, marketPools, coinPrices) => {
4334
4653
  const stakeCoinNames = stakeMarketCoinNames.map(
4335
4654
  (stakeMarketCoinName) => query.utils.parseCoinName(stakeMarketCoinName)
4336
4655
  );
4337
4656
  coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
4338
- marketPools = marketPools ?? await query.getMarketPools(stakeCoinNames, { indexer });
4657
+ marketPools = marketPools ?? (await query.getMarketPools(stakeCoinNames, { indexer })).pools;
4339
4658
  if (!marketPools)
4340
4659
  throw new Error(`Fail to fetch marketPools for ${stakeCoinNames}`);
4341
4660
  const spools = {};
@@ -4546,14 +4865,14 @@ var getStakeAccounts = async ({
4546
4865
  svsui: stakeAccounts.svsui,
4547
4866
  susdc: stakeAccounts.susdc
4548
4867
  };
4549
- const normalizedType = (0, import_utils8.normalizeStructTag)(type);
4868
+ const normalizedType = (0, import_utils9.normalizeStructTag)(type);
4550
4869
  const stakeAccountArray = stakeMarketCoinTypeMap[reversedStakeMarketCoinTypes[normalizedType]];
4551
4870
  if (stakeAccountArray) {
4552
4871
  stakeAccountArray.push({
4553
4872
  id,
4554
4873
  type: normalizedType,
4555
4874
  stakePoolId,
4556
- stakeType: (0, import_utils8.normalizeStructTag)(stakeType),
4875
+ stakeType: (0, import_utils9.normalizeStructTag)(stakeType),
4557
4876
  staked,
4558
4877
  index,
4559
4878
  points,
@@ -4591,13 +4910,13 @@ var getStakePool = async ({
4591
4910
  const lastUpdate = Number(fields.last_update);
4592
4911
  stakePool = {
4593
4912
  id,
4594
- type: (0, import_utils8.normalizeStructTag)(type),
4913
+ type: (0, import_utils9.normalizeStructTag)(type),
4595
4914
  maxPoint,
4596
4915
  distributedPoint,
4597
4916
  pointPerPeriod,
4598
4917
  period,
4599
4918
  maxStake,
4600
- stakeType: (0, import_utils8.normalizeStructTag)(stakeType),
4919
+ stakeType: (0, import_utils9.normalizeStructTag)(stakeType),
4601
4920
  totalStaked,
4602
4921
  index,
4603
4922
  createdAt,
@@ -4636,7 +4955,7 @@ var getStakeRewardPool = async ({
4636
4955
  const claimedRewards = Number(rewardPoolFields.claimed_rewards);
4637
4956
  stakeRewardPool = {
4638
4957
  id,
4639
- type: (0, import_utils8.normalizeStructTag)(type),
4958
+ type: (0, import_utils9.normalizeStructTag)(type),
4640
4959
  stakePoolId,
4641
4960
  ratioNumerator,
4642
4961
  ratioDenominator,
@@ -4819,6 +5138,96 @@ var getVeScaTreasuryInfo = async (utils) => {
4819
5138
  };
4820
5139
  };
4821
5140
 
5141
+ // src/queries/poolAddressesQuery.ts
5142
+ var getAllAddresses = async (query) => {
5143
+ const results = {};
5144
+ const marketId = query.address.get("core.market");
5145
+ const marketObject = (await query.cache.queryGetObject(marketId, {
5146
+ showContent: true
5147
+ }))?.data;
5148
+ if (!(marketObject && marketObject.content?.dataType === "moveObject"))
5149
+ throw new Error(`Failed to fetch marketObject`);
5150
+ const fields = marketObject.content.fields;
5151
+ const coinTypesPairs = SUPPORT_POOLS.reduce(
5152
+ (acc, pool) => {
5153
+ acc.push([pool, query.utils.parseCoinType(pool).substring(2)]);
5154
+ return acc;
5155
+ },
5156
+ []
5157
+ );
5158
+ const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
5159
+ const collateralStatsParentId = fields.collateral_stats.fields.table.fields.id.id;
5160
+ const borrowDynamicsParentid = fields.borrow_dynamics.fields.table.fields.id.id;
5161
+ const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
5162
+ const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
5163
+ const ADDRESS_TYPE = `0x1::type_name::TypeName`;
5164
+ const BORROW_FEE_TYPE = `0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da::market_dynamic_keys::BorrowFeeKey`;
5165
+ const SUPPLY_LIMIT_TYPE = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
5166
+ const BORROW_LIMIT_TYPE = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
5167
+ const ISOLATED_ASSET_KEY = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
5168
+ const fetchDynamicObject = async (parentId, type, value) => {
5169
+ try {
5170
+ return (await query.cache.queryGetDynamicFieldObject({
5171
+ parentId,
5172
+ name: {
5173
+ type,
5174
+ value
5175
+ }
5176
+ }))?.data?.objectId;
5177
+ } catch (_e) {
5178
+ return void 0;
5179
+ }
5180
+ };
5181
+ await Promise.all(
5182
+ coinTypesPairs.map(async ([coinName, coinType]) => {
5183
+ const addresses = await Promise.all([
5184
+ fetchDynamicObject(balanceSheetParentId, ADDRESS_TYPE, {
5185
+ name: coinType
5186
+ }),
5187
+ fetchDynamicObject(collateralStatsParentId, ADDRESS_TYPE, {
5188
+ name: coinType
5189
+ }),
5190
+ fetchDynamicObject(borrowDynamicsParentid, ADDRESS_TYPE, {
5191
+ name: coinType
5192
+ }),
5193
+ fetchDynamicObject(interestModelParentId, ADDRESS_TYPE, {
5194
+ name: coinType
5195
+ }),
5196
+ fetchDynamicObject(riskModelParentId, ADDRESS_TYPE, {
5197
+ name: coinType
5198
+ }),
5199
+ fetchDynamicObject(marketId, BORROW_FEE_TYPE, coinType),
5200
+ fetchDynamicObject(marketId, SUPPLY_LIMIT_TYPE, coinType),
5201
+ fetchDynamicObject(marketId, BORROW_LIMIT_TYPE, coinType),
5202
+ fetchDynamicObject(marketId, ISOLATED_ASSET_KEY, coinType)
5203
+ ]);
5204
+ const spool = query.address.get(
5205
+ // @ts-ignore
5206
+ `spool.pools.s${coinName}.id`
5207
+ );
5208
+ const rewardPool = query.address.get(
5209
+ // @ts-ignore
5210
+ `spool.pools.s${coinName}.rewardPoolId`
5211
+ );
5212
+ results[coinName] = {
5213
+ lendingPoolAddress: addresses[0],
5214
+ collateralPoolAddress: addresses[1],
5215
+ borrowDynamic: addresses[2],
5216
+ interestModel: addresses[3],
5217
+ riskModel: addresses[4],
5218
+ borrowFeeKey: addresses[5],
5219
+ supplyLimitKey: addresses[6],
5220
+ borrowLimitKey: addresses[7],
5221
+ isolatedAssetKey: addresses[8],
5222
+ spool,
5223
+ spoolReward: rewardPool
5224
+ };
5225
+ await new Promise((resolve) => setTimeout(resolve, 200));
5226
+ })
5227
+ );
5228
+ return results;
5229
+ };
5230
+
4822
5231
  // src/models/suiKit.ts
4823
5232
  var import_sui_kit4 = require("@scallop-io/sui-kit");
4824
5233
  var newSuiKit = (params) => {
@@ -4921,7 +5330,7 @@ var ScallopUtils = class {
4921
5330
  throw Error(`Coin ${coinName} is not supported`);
4922
5331
  }
4923
5332
  if (coinName === "sui")
4924
- return (0, import_utils10.normalizeStructTag)(`${coinPackageId}::sui::SUI`);
5333
+ return (0, import_utils11.normalizeStructTag)(`${coinPackageId}::sui::SUI`);
4925
5334
  const wormHolePackageIds = [
4926
5335
  this.address.get("core.coins.wusdc.id") ?? wormholeCoinIds.wusdc,
4927
5336
  this.address.get("core.coins.wusdt.id") ?? wormholeCoinIds.wusdt,
@@ -5025,7 +5434,7 @@ var ScallopUtils = class {
5025
5434
  return `${protocolObjectId}::reserve::MarketCoin<${coinType}>`;
5026
5435
  }
5027
5436
  parseCoinNameFromType(coinType) {
5028
- coinType = (0, import_utils10.normalizeStructTag)(coinType);
5437
+ coinType = (0, import_utils11.normalizeStructTag)(coinType);
5029
5438
  if (sCoinTypeToName[coinType]) {
5030
5439
  return sCoinTypeToName[coinType];
5031
5440
  }
@@ -5109,7 +5518,7 @@ var ScallopUtils = class {
5109
5518
  * @param coinType - The coin type, default is 0x2::SUI::SUI.
5110
5519
  * @return The selected transaction coin arguments.
5111
5520
  */
5112
- async selectCoins(amount, coinType = import_utils10.SUI_TYPE_ARG, ownerAddress) {
5521
+ async selectCoins(amount, coinType = import_utils11.SUI_TYPE_ARG, ownerAddress) {
5113
5522
  ownerAddress = ownerAddress ?? this.suiKit.currentAddress();
5114
5523
  const coins = await this.suiKit.suiInteractor.selectCoins(
5115
5524
  ownerAddress,
@@ -5307,15 +5716,15 @@ var ScallopUtils = class {
5307
5716
  };
5308
5717
 
5309
5718
  // src/models/scallopBuilder.ts
5310
- var import_utils24 = require("@mysten/sui/utils");
5719
+ var import_utils25 = require("@mysten/sui/utils");
5311
5720
 
5312
5721
  // src/builders/coreBuilder.ts
5313
5722
  var import_transactions = require("@mysten/sui/transactions");
5314
- var import_utils13 = require("@mysten/sui/utils");
5723
+ var import_utils14 = require("@mysten/sui/utils");
5315
5724
  var import_sui_kit5 = require("@scallop-io/sui-kit");
5316
5725
 
5317
5726
  // src/builders/oracle.ts
5318
- var import_utils12 = require("@mysten/sui/utils");
5727
+ var import_utils13 = require("@mysten/sui/utils");
5319
5728
  var import_pyth_sui_js2 = require("@pythnetwork/pyth-sui-js");
5320
5729
  var updateOracles = async (builder, txBlock, assetCoinNames, options = { usePythPullModel: true }) => {
5321
5730
  const usePythPullModel = builder.params.usePythPullModel ?? options.usePythPullModel;
@@ -5431,27 +5840,27 @@ var priceUpdateRequest = (txBlock, packageId, xOracleId, coinType) => {
5431
5840
  var confirmPriceUpdateRequest = (txBlock, packageId, xOracleId, request, coinType) => {
5432
5841
  const target = `${packageId}::x_oracle::confirm_price_update_request`;
5433
5842
  const typeArgs = [coinType];
5434
- txBlock.moveCall(target, [xOracleId, request, import_utils12.SUI_CLOCK_OBJECT_ID], typeArgs);
5843
+ txBlock.moveCall(target, [xOracleId, request, import_utils13.SUI_CLOCK_OBJECT_ID], typeArgs);
5435
5844
  return txBlock;
5436
5845
  };
5437
5846
  var updateSupraPrice = (txBlock, packageId, request, holderId, registryId, coinType) => {
5438
5847
  txBlock.moveCall(
5439
5848
  `${packageId}::rule::set_price`,
5440
- [request, holderId, registryId, import_utils12.SUI_CLOCK_OBJECT_ID],
5849
+ [request, holderId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
5441
5850
  [coinType]
5442
5851
  );
5443
5852
  };
5444
5853
  var updateSwitchboardPrice = (txBlock, packageId, request, aggregatorId, registryId, coinType) => {
5445
5854
  txBlock.moveCall(
5446
5855
  `${packageId}::rule::set_price`,
5447
- [request, aggregatorId, registryId, import_utils12.SUI_CLOCK_OBJECT_ID],
5856
+ [request, aggregatorId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
5448
5857
  [coinType]
5449
5858
  );
5450
5859
  };
5451
5860
  var updatePythPrice = (txBlock, packageId, request, stateId, feedObjectId, registryId, coinType) => {
5452
5861
  txBlock.moveCall(
5453
5862
  `${packageId}::rule::set_price`,
5454
- [request, stateId, feedObjectId, registryId, import_utils12.SUI_CLOCK_OBJECT_ID],
5863
+ [request, stateId, feedObjectId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
5455
5864
  [coinType]
5456
5865
  );
5457
5866
  };
@@ -5522,7 +5931,7 @@ var generateCoreNormalMethod = ({
5522
5931
  coreIds.coinDecimalsRegistry,
5523
5932
  txBlock.pure.u64(amount),
5524
5933
  coreIds.xOracle,
5525
- import_utils13.SUI_CLOCK_OBJECT_ID
5934
+ import_utils14.SUI_CLOCK_OBJECT_ID
5526
5935
  ],
5527
5936
  [coinType]
5528
5937
  );
@@ -5531,7 +5940,7 @@ var generateCoreNormalMethod = ({
5531
5940
  const coinType = builder.utils.parseCoinType(poolCoinName);
5532
5941
  return txBlock.moveCall(
5533
5942
  `${coreIds.protocolPkg}::mint::mint`,
5534
- [coreIds.version, coreIds.market, coin, import_utils13.SUI_CLOCK_OBJECT_ID],
5943
+ [coreIds.version, coreIds.market, coin, import_utils14.SUI_CLOCK_OBJECT_ID],
5535
5944
  [coinType]
5536
5945
  );
5537
5946
  },
@@ -5539,7 +5948,7 @@ var generateCoreNormalMethod = ({
5539
5948
  const coinType = builder.utils.parseCoinType(poolCoinName);
5540
5949
  return txBlock.moveCall(
5541
5950
  `${coreIds.protocolPkg}::mint::mint_entry`,
5542
- [coreIds.version, coreIds.market, coin, import_utils13.SUI_CLOCK_OBJECT_ID],
5951
+ [coreIds.version, coreIds.market, coin, import_utils14.SUI_CLOCK_OBJECT_ID],
5543
5952
  [coinType]
5544
5953
  );
5545
5954
  },
@@ -5547,7 +5956,7 @@ var generateCoreNormalMethod = ({
5547
5956
  const coinType = builder.utils.parseCoinType(poolCoinName);
5548
5957
  return txBlock.moveCall(
5549
5958
  `${coreIds.protocolPkg}::redeem::redeem`,
5550
- [coreIds.version, coreIds.market, marketCoin, import_utils13.SUI_CLOCK_OBJECT_ID],
5959
+ [coreIds.version, coreIds.market, marketCoin, import_utils14.SUI_CLOCK_OBJECT_ID],
5551
5960
  [coinType]
5552
5961
  );
5553
5962
  },
@@ -5555,7 +5964,7 @@ var generateCoreNormalMethod = ({
5555
5964
  const coinType = builder.utils.parseCoinType(poolCoinName);
5556
5965
  return txBlock.moveCall(
5557
5966
  `${coreIds.protocolPkg}::redeem::redeem_entry`,
5558
- [coreIds.version, coreIds.market, marketCoin, import_utils13.SUI_CLOCK_OBJECT_ID],
5967
+ [coreIds.version, coreIds.market, marketCoin, import_utils14.SUI_CLOCK_OBJECT_ID],
5559
5968
  [coinType]
5560
5969
  );
5561
5970
  },
@@ -5571,7 +5980,7 @@ var generateCoreNormalMethod = ({
5571
5980
  coreIds.coinDecimalsRegistry,
5572
5981
  amount,
5573
5982
  coreIds.xOracle,
5574
- import_utils13.SUI_CLOCK_OBJECT_ID
5983
+ import_utils14.SUI_CLOCK_OBJECT_ID
5575
5984
  ],
5576
5985
  [coinType]
5577
5986
  );
@@ -5589,7 +5998,7 @@ var generateCoreNormalMethod = ({
5589
5998
  borrowReferral,
5590
5999
  txBlock.pure.u64(amount),
5591
6000
  coreIds.xOracle,
5592
- import_utils13.SUI_CLOCK_OBJECT_ID
6001
+ import_utils14.SUI_CLOCK_OBJECT_ID
5593
6002
  ],
5594
6003
  [coinType, referralWitnessType]
5595
6004
  );
@@ -5606,7 +6015,7 @@ var generateCoreNormalMethod = ({
5606
6015
  coreIds.coinDecimalsRegistry,
5607
6016
  txBlock.pure.u64(amount),
5608
6017
  coreIds.xOracle,
5609
- import_utils13.SUI_CLOCK_OBJECT_ID
6018
+ import_utils14.SUI_CLOCK_OBJECT_ID
5610
6019
  ],
5611
6020
  [coinType]
5612
6021
  );
@@ -5620,7 +6029,7 @@ var generateCoreNormalMethod = ({
5620
6029
  obligation,
5621
6030
  coreIds.market,
5622
6031
  coin,
5623
- import_utils13.SUI_CLOCK_OBJECT_ID
6032
+ import_utils14.SUI_CLOCK_OBJECT_ID
5624
6033
  ],
5625
6034
  [coinType]
5626
6035
  );
@@ -5851,7 +6260,7 @@ var newCoreTxBlock = (builder, initTxBlock) => {
5851
6260
 
5852
6261
  // src/builders/spoolBuilder.ts
5853
6262
  var import_transactions2 = require("@mysten/sui/transactions");
5854
- var import_utils15 = require("@mysten/sui/utils");
6263
+ var import_utils16 = require("@mysten/sui/utils");
5855
6264
  var import_sui_kit6 = require("@scallop-io/sui-kit");
5856
6265
  var requireStakeAccountIds = async (...params) => {
5857
6266
  const [builder, txBlock, stakeMarketCoinName, stakeAccountId] = params;
@@ -5906,7 +6315,7 @@ var generateSpoolNormalMethod = ({
5906
6315
  );
5907
6316
  return txBlock.moveCall(
5908
6317
  `${spoolIds.spoolPkg}::user::new_spool_account`,
5909
- [stakePoolId, import_utils15.SUI_CLOCK_OBJECT_ID],
6318
+ [stakePoolId, import_utils16.SUI_CLOCK_OBJECT_ID],
5910
6319
  [marketCoinType]
5911
6320
  );
5912
6321
  },
@@ -5917,7 +6326,7 @@ var generateSpoolNormalMethod = ({
5917
6326
  );
5918
6327
  txBlock.moveCall(
5919
6328
  `${spoolIds.spoolPkg}::user::stake`,
5920
- [stakePoolId, stakeAccount, coin, import_utils15.SUI_CLOCK_OBJECT_ID],
6329
+ [stakePoolId, stakeAccount, coin, import_utils16.SUI_CLOCK_OBJECT_ID],
5921
6330
  [marketCoinType]
5922
6331
  );
5923
6332
  },
@@ -5928,7 +6337,7 @@ var generateSpoolNormalMethod = ({
5928
6337
  );
5929
6338
  return txBlock.moveCall(
5930
6339
  `${spoolIds.spoolPkg}::user::unstake`,
5931
- [stakePoolId, stakeAccount, amount, import_utils15.SUI_CLOCK_OBJECT_ID],
6340
+ [stakePoolId, stakeAccount, amount, import_utils16.SUI_CLOCK_OBJECT_ID],
5932
6341
  [marketCoinType]
5933
6342
  );
5934
6343
  },
@@ -5944,7 +6353,7 @@ var generateSpoolNormalMethod = ({
5944
6353
  const rewardCoinType = builder.utils.parseCoinType(rewardCoinName);
5945
6354
  return txBlock.moveCall(
5946
6355
  `${spoolIds.spoolPkg}::user::redeem_rewards`,
5947
- [stakePoolId, rewardPoolId, stakeAccount, import_utils15.SUI_CLOCK_OBJECT_ID],
6356
+ [stakePoolId, rewardPoolId, stakeAccount, import_utils16.SUI_CLOCK_OBJECT_ID],
5948
6357
  [marketCoinType, rewardCoinType]
5949
6358
  );
5950
6359
  }
@@ -6076,7 +6485,7 @@ var newSpoolTxBlock = (builder, initTxBlock) => {
6076
6485
 
6077
6486
  // src/builders/borrowIncentiveBuilder.ts
6078
6487
  var import_transactions3 = require("@mysten/sui/transactions");
6079
- var import_utils17 = require("@mysten/sui/utils");
6488
+ var import_utils18 = require("@mysten/sui/utils");
6080
6489
  var import_sui_kit7 = require("@scallop-io/sui-kit");
6081
6490
  var requireObligationInfo2 = async (...params) => {
6082
6491
  const [builder, txBlock, obligationId, obligationKey] = params;
@@ -6128,7 +6537,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6128
6537
  obligationKey,
6129
6538
  obligationId,
6130
6539
  borrowIncentiveIds.obligationAccessStore,
6131
- import_utils17.SUI_CLOCK_OBJECT_ID
6540
+ import_utils18.SUI_CLOCK_OBJECT_ID
6132
6541
  ]
6133
6542
  );
6134
6543
  },
@@ -6146,7 +6555,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6146
6555
  veScaIds.treasury,
6147
6556
  veScaIds.table,
6148
6557
  veScaKey,
6149
- import_utils17.SUI_CLOCK_OBJECT_ID
6558
+ import_utils18.SUI_CLOCK_OBJECT_ID
6150
6559
  ],
6151
6560
  []
6152
6561
  );
@@ -6160,7 +6569,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6160
6569
  borrowIncentiveIds.incentiveAccounts,
6161
6570
  obligationKey,
6162
6571
  obligationId,
6163
- import_utils17.SUI_CLOCK_OBJECT_ID
6572
+ import_utils18.SUI_CLOCK_OBJECT_ID
6164
6573
  ]
6165
6574
  );
6166
6575
  },
@@ -6174,7 +6583,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6174
6583
  borrowIncentiveIds.incentiveAccounts,
6175
6584
  obligationKey,
6176
6585
  obligationId,
6177
- import_utils17.SUI_CLOCK_OBJECT_ID
6586
+ import_utils18.SUI_CLOCK_OBJECT_ID
6178
6587
  ],
6179
6588
  [rewardType]
6180
6589
  );
@@ -6188,7 +6597,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6188
6597
  borrowIncentiveIds.incentiveAccounts,
6189
6598
  obligation,
6190
6599
  veScaKey,
6191
- import_utils17.SUI_CLOCK_OBJECT_ID
6600
+ import_utils18.SUI_CLOCK_OBJECT_ID
6192
6601
  ]
6193
6602
  );
6194
6603
  }
@@ -7078,12 +7487,12 @@ var ScallopIndexer = class {
7078
7487
  };
7079
7488
 
7080
7489
  // src/models/scallopQuery.ts
7081
- var import_utils23 = require("@mysten/sui/utils");
7490
+ var import_utils24 = require("@mysten/sui/utils");
7082
7491
  var ScallopQuery = class {
7083
7492
  constructor(params, instance) {
7084
7493
  this.params = params;
7085
7494
  this.suiKit = instance?.suiKit ?? instance?.utils?.suiKit ?? newSuiKit(params);
7086
- this.walletAddress = (0, import_utils23.normalizeSuiAddress)(
7495
+ this.walletAddress = (0, import_utils24.normalizeSuiAddress)(
7087
7496
  params.walletAddress ?? this.suiKit.currentAddress()
7088
7497
  );
7089
7498
  if (instance?.utils) {
@@ -7158,6 +7567,7 @@ var ScallopQuery = class {
7158
7567
  }
7159
7568
  /* ==================== Core Query Methods ==================== */
7160
7569
  /**
7570
+ * @deprecated use getMarketPools
7161
7571
  * Query market data.
7162
7572
  * @param indexer - Whether to use indexer.
7163
7573
  * @return Market data.
@@ -7176,7 +7586,7 @@ var ScallopQuery = class {
7176
7586
  * @param indexer - Whether to use indexer.
7177
7587
  * @return Market pools data.
7178
7588
  */
7179
- async getMarketPools(poolCoinNames, args) {
7589
+ async getMarketPools(poolCoinNames = [...SUPPORT_POOLS], args) {
7180
7590
  return await getMarketPools(
7181
7591
  this,
7182
7592
  poolCoinNames,
@@ -7192,13 +7602,8 @@ var ScallopQuery = class {
7192
7602
  * @return Market pool data.
7193
7603
  */
7194
7604
  async getMarketPool(poolCoinName, args) {
7195
- return await getMarketPool(
7196
- this,
7197
- poolCoinName,
7198
- args?.indexer,
7199
- args?.marketObject,
7200
- args?.coinPrice
7201
- );
7605
+ const marketPools = await this.getMarketPools(void 0, args);
7606
+ return marketPools.pools[poolCoinName];
7202
7607
  }
7203
7608
  /**
7204
7609
  * Get market collaterals.
@@ -7636,7 +8041,7 @@ var ScallopQuery = class {
7636
8041
  * Get list of isolated assets
7637
8042
  */
7638
8043
  async getIsolatedAssets() {
7639
- return await getIsolatedAssets(this.address);
8044
+ return await getIsolatedAssets(this);
7640
8045
  }
7641
8046
  /**
7642
8047
  * Check if asset is an isolated asset
@@ -7659,6 +8064,13 @@ var ScallopQuery = class {
7659
8064
  async getAllCoinPrices(args) {
7660
8065
  return getAllCoinPrices(this, args?.marketPools, args?.coinPrices);
7661
8066
  }
8067
+ /**
8068
+ * Query all address (lending pool, collateral pool, borrow dynamics, interest models) of all pool
8069
+ * @returns
8070
+ */
8071
+ async getPoolAddresses() {
8072
+ return getAllAddresses(this);
8073
+ }
7662
8074
  };
7663
8075
 
7664
8076
  // src/models/scallopBuilder.ts
@@ -7666,7 +8078,7 @@ var ScallopBuilder = class {
7666
8078
  constructor(params, instance) {
7667
8079
  this.suiKit = instance?.suiKit ?? newSuiKit(params);
7668
8080
  this.params = params;
7669
- this.walletAddress = (0, import_utils24.normalizeSuiAddress)(
8081
+ this.walletAddress = (0, import_utils25.normalizeSuiAddress)(
7670
8082
  params?.walletAddress ?? this.suiKit.currentAddress()
7671
8083
  );
7672
8084
  if (instance?.query) {
@@ -7813,7 +8225,7 @@ var ScallopClient = class {
7813
8225
  constructor(params, instance) {
7814
8226
  this.params = params;
7815
8227
  this.suiKit = instance?.suiKit ?? instance?.builder?.suiKit ?? newSuiKit(params);
7816
- this.walletAddress = (0, import_utils25.normalizeSuiAddress)(
8228
+ this.walletAddress = (0, import_utils26.normalizeSuiAddress)(
7817
8229
  params?.walletAddress ?? this.suiKit.currentAddress()
7818
8230
  );
7819
8231
  if (instance?.builder) {