@scallop-io/sui-scallop-sdk 1.4.14-alpha.1 → 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 (43) 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 +1 -1
  4. package/dist/index.js +714 -316
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +669 -271
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/models/scallopQuery.d.ts +20 -17
  9. package/dist/queries/coreQuery.d.ts +18 -19
  10. package/dist/queries/index.d.ts +2 -0
  11. package/dist/queries/isolatedAssetQuery.d.ts +2 -2
  12. package/dist/queries/objectsQuery.d.ts +3 -0
  13. package/dist/queries/poolAddressesQuery.d.ts +15 -0
  14. package/dist/types/query/core.d.ts +22 -5
  15. package/dist/types/utils.d.ts +7 -2
  16. package/dist/utils/core.d.ts +2 -0
  17. package/dist/utils/index.d.ts +1 -0
  18. package/dist/utils/util.d.ts +1 -0
  19. package/package.json +1 -1
  20. package/src/constants/enum.ts +6 -14
  21. package/src/constants/poolAddress.ts +290 -29
  22. package/src/constants/queryKeys.ts +5 -5
  23. package/src/constants/tokenBucket.ts +1 -1
  24. package/src/models/scallopCache.ts +34 -7
  25. package/src/models/scallopQuery.ts +24 -12
  26. package/src/queries/borrowIncentiveQuery.ts +1 -1
  27. package/src/queries/borrowLimitQuery.ts +2 -2
  28. package/src/queries/coreQuery.ts +378 -248
  29. package/src/queries/index.ts +2 -0
  30. package/src/queries/isolatedAssetQuery.ts +39 -33
  31. package/src/queries/objectsQuery.ts +20 -0
  32. package/src/queries/poolAddressesQuery.ts +134 -0
  33. package/src/queries/portfolioQuery.ts +14 -7
  34. package/src/queries/priceQuery.ts +3 -1
  35. package/src/queries/spoolQuery.ts +3 -1
  36. package/src/queries/supplyLimitQuery.ts +2 -2
  37. package/src/types/query/core.ts +21 -5
  38. package/src/types/utils.ts +8 -3
  39. package/src/utils/core.ts +11 -0
  40. package/src/utils/index.ts +1 -0
  41. package/src/utils/query.ts +16 -2
  42. package/src/utils/tokenBucket.ts +1 -1
  43. package/src/utils/util.ts +8 -0
package/dist/index.js CHANGED
@@ -371,19 +371,12 @@ var voloCoinIds = {
371
371
  vsui: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55"
372
372
  };
373
373
  var sCoinIds = {
374
- // prod values
375
- // ssui: '0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI',
376
- // swusdc:
377
- // '0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC',
378
- // swusdt:
379
- // '0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT',
380
- // ssca: '0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA',
381
- ssui: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
382
- swusdt: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
383
- swusdc: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
384
- ssca: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
385
374
  susdc: "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",
386
375
  ssbeth: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
376
+ ssui: "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",
377
+ swusdc: "0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
378
+ swusdt: "0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
379
+ ssca: "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",
387
380
  scetus: "0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",
388
381
  sweth: "0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
389
382
  safsui: "0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",
@@ -427,67 +420,213 @@ var FlashLoanFeeObjectMap = {
427
420
 
428
421
  // src/constants/poolAddress.ts
429
422
  var POOL_ADDRESSES = {
430
- usdc: {
431
- lendingPoolAddress: "0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",
432
- collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af"
433
- },
434
423
  sbeth: {
435
- lendingPoolAddress: "0x5f08c4f71d56dd3342c452cc70ffc47f2f4180146d821941b0b9c04761bb42e7",
436
- 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
437
435
  },
438
- weth: {
439
- lendingPoolAddress: "0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",
440
- 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"
441
448
  },
442
449
  wbtc: {
443
450
  lendingPoolAddress: "0x65cc08a5aca0a0b8d72e1993ded8d145f06dd102fd0d8f285b92934faed564ab",
444
- 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
445
461
  },
446
462
  wusdc: {
447
- lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
448
- 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"
449
487
  },
450
488
  wusdt: {
451
489
  lendingPoolAddress: "0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879",
452
- 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"
453
500
  },
454
501
  sui: {
455
502
  lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
456
- 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"
457
513
  },
458
514
  wapt: {
459
515
  lendingPoolAddress: "0xca8c14a24e0c32b198eaf479a3317461e3cc339097ce88eaf296a15df8dcfdf5",
460
- 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"
461
539
  },
462
540
  wsol: {
463
541
  lendingPoolAddress: "0x985682c42984cdfb03f9ff7d8923344c2fe096b1ae4b82ea17721af19d22a21f",
464
- 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
465
552
  },
466
553
  cetus: {
467
554
  lendingPoolAddress: "0xc09858f60e74a1b671635bec4e8a2c84a0ff313eb87f525fba3258e88c6b6282",
468
- collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a"
469
- },
470
- afsui: {
471
- lendingPoolAddress: "0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",
472
- 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"
473
565
  },
474
566
  hasui: {
475
567
  lendingPoolAddress: "0x7ebc607f6bdeb659fb6506cb91c5cc1d47bb365cfd5d2e637ea765346ec84ed4",
476
- 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"
477
578
  },
478
579
  vsui: {
479
580
  lendingPoolAddress: "0xda9257c0731d8822e8a438ebced13415850d705b779c79958dcf2aeb21fcb43d",
480
- 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"
481
591
  },
482
592
  sca: {
483
593
  lendingPoolAddress: "0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",
484
- collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31"
485
- },
486
- fud: {
487
- 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
488
604
  },
489
605
  deep: {
490
- 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
491
630
  }
492
631
  };
493
632
 
@@ -538,7 +677,11 @@ var queryKeys = {
538
677
  typeArgs: !typeArgs ? void 0 : JSON.stringify(typeArgs)
539
678
  }
540
679
  ],
541
- getObject: (objectId, walletAddress, options) => ["rpc", "getObject", { walletAddress, options, objectId }],
680
+ getObject: (objectId, options) => [
681
+ "rpc",
682
+ "getObject",
683
+ { options, objectId }
684
+ ],
542
685
  getObjects: (objectIds, walletAddress, options) => [
543
686
  "rpc",
544
687
  "getObjects",
@@ -1071,7 +1214,7 @@ var TEST_ADDRESSES = {
1071
1214
  };
1072
1215
 
1073
1216
  // src/constants/tokenBucket.ts
1074
- var DEFAULT_TOKENS_PER_INTERVAL = 10;
1217
+ var DEFAULT_TOKENS_PER_INTERVAL = 50;
1075
1218
  var DEFAULT_INTERVAL_IN_MS = 250;
1076
1219
 
1077
1220
  // src/constants/vesca.ts
@@ -1216,7 +1359,10 @@ var parseOriginMarketPoolData = (originMarketPoolData) => {
1216
1359
  borrowRateOnMidKink: Number(originMarketPoolData.borrowRateOnMidKink.value) / 2 ** 32,
1217
1360
  highKink: Number(originMarketPoolData.highKink.value) / 2 ** 32,
1218
1361
  midKink: Number(originMarketPoolData.midKink.value) / 2 ** 32,
1219
- minBorrowAmount: Number(originMarketPoolData.minBorrowAmount)
1362
+ minBorrowAmount: Number(originMarketPoolData.minBorrowAmount),
1363
+ isIsolated: originMarketPoolData.isIsolated,
1364
+ supplyLimit: Number(originMarketPoolData.supplyLimit),
1365
+ borrowLimit: Number(originMarketPoolData.borrowLimit)
1220
1366
  };
1221
1367
  };
1222
1368
  var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
@@ -1268,6 +1414,7 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
1268
1414
  borrowApyOnHighKink: utils.parseAprToApy(borrowAprOnHighKink),
1269
1415
  borrowAprOnMidKink,
1270
1416
  borrowApyOnMidKink: utils.parseAprToApy(borrowAprOnMidKink),
1417
+ coinDecimal,
1271
1418
  maxBorrowApr,
1272
1419
  maxBorrowApy: utils.parseAprToApy(maxBorrowApr),
1273
1420
  borrowApr: Math.min(borrowApr, maxBorrowApr),
@@ -1286,17 +1433,21 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
1286
1433
  utilizationRate: utilizationRate.toNumber(),
1287
1434
  supplyApr: supplyApr.toNumber(),
1288
1435
  supplyApy: utils.parseAprToApy(supplyApr.toNumber()),
1289
- 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()
1290
1440
  };
1291
1441
  };
1292
1442
  var parseOriginMarketCollateralData = (originMarketCollateralData) => {
1293
1443
  const divisor = 2 ** 32;
1294
1444
  return {
1295
1445
  coinType: (0, import_utils.normalizeStructTag)(originMarketCollateralData.type.name),
1446
+ isIsolated: originMarketCollateralData.isIsolated,
1296
1447
  collateralFactor: Number(originMarketCollateralData.collateralFactor.value) / divisor,
1297
1448
  liquidationFactor: Number(originMarketCollateralData.liquidationFactor.value) / divisor,
1298
1449
  liquidationDiscount: Number(originMarketCollateralData.liquidationDiscount.value) / divisor,
1299
- liquidationPanelty: Number(originMarketCollateralData.liquidationPanelty.value) / divisor,
1450
+ liquidationPenalty: Number(originMarketCollateralData.liquidationPenalty.value) / divisor,
1300
1451
  liquidationReserveFactor: Number(originMarketCollateralData.liquidationReserveFactor.value) / divisor,
1301
1452
  maxCollateralAmount: Number(originMarketCollateralData.maxCollateralAmount),
1302
1453
  totalCollateralAmount: Number(
@@ -1316,6 +1467,8 @@ var calculateMarketCollateralData = (utils, parsedMarketCollateralData) => {
1316
1467
  parsedMarketCollateralData.totalCollateralAmount
1317
1468
  ).shiftedBy(-1 * coinDecimal);
1318
1469
  return {
1470
+ coinDecimal,
1471
+ isIsolated: parsedMarketCollateralData.isIsolated,
1319
1472
  maxDepositAmount: parsedMarketCollateralData.maxCollateralAmount,
1320
1473
  maxDepositCoin: maxCollateralCoin.toNumber(),
1321
1474
  depositAmount: parsedMarketCollateralData.totalCollateralAmount,
@@ -1646,6 +1799,13 @@ var findClosestUnlockRound = (unlockAtInSecondTimestamp) => {
1646
1799
  }
1647
1800
  return Math.floor(closestTwelveAM.getTime() / 1e3);
1648
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
+ };
1649
1809
 
1650
1810
  // src/utils/tokenBucket.ts
1651
1811
  var TokenBucket = class {
@@ -1682,7 +1842,6 @@ var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVA
1682
1842
  } else if (retries < maxRetries) {
1683
1843
  retries++;
1684
1844
  const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
1685
- console.error(`Rate limit exceeded, retrying in ${delay} ms`);
1686
1845
  await new Promise((resolve) => setTimeout(resolve, delay));
1687
1846
  return tryRequest();
1688
1847
  } else {
@@ -1718,6 +1877,16 @@ function withIndexerFallback(method) {
1718
1877
  };
1719
1878
  }
1720
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
+
1721
1890
  // src/models/scallopCache.ts
1722
1891
  var ScallopCache = class {
1723
1892
  constructor(suiKit, walletAddress, cacheOptions, tokenBucket, queryClient) {
@@ -1752,11 +1921,11 @@ var ScallopCache = class {
1752
1921
  })
1753
1922
  );
1754
1923
  }
1755
- retryFn(errCount, err) {
1756
- if (err.status === 429)
1757
- return true;
1758
- if (errCount >= 5)
1924
+ retryFn(errCount, e) {
1925
+ if (errCount === 5)
1759
1926
  return false;
1927
+ if (e.status === 429)
1928
+ return true;
1760
1929
  return false;
1761
1930
  }
1762
1931
  /**
@@ -1771,7 +1940,15 @@ var ScallopCache = class {
1771
1940
  typeArgs
1772
1941
  }) {
1773
1942
  const txBlock = new import_sui_kit.SuiTxBlock();
1774
- 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);
1775
1952
  const query = await this.queryClient.fetchQuery({
1776
1953
  retry: this.retryFn,
1777
1954
  retryDelay: 1e3,
@@ -1795,7 +1972,7 @@ var ScallopCache = class {
1795
1972
  return this.queryClient.fetchQuery({
1796
1973
  retry: this.retryFn,
1797
1974
  retryDelay: 1e3,
1798
- queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
1975
+ queryKey: queryKeys.rpc.getObject(objectId, options),
1799
1976
  queryFn: async () => {
1800
1977
  return await callWithRateLimit(
1801
1978
  this.tokenBucket,
@@ -1826,10 +2003,28 @@ var ScallopCache = class {
1826
2003
  options
1827
2004
  ),
1828
2005
  queryFn: async () => {
1829
- return await callWithRateLimit(
2006
+ const results = await callWithRateLimit(
1830
2007
  this.tokenBucket,
1831
2008
  async () => await this.suiKit.getObjects(objectIds, options)
1832
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;
1833
2028
  }
1834
2029
  });
1835
2030
  }
@@ -2573,10 +2768,10 @@ var ScallopAddress = class {
2573
2768
  };
2574
2769
 
2575
2770
  // src/models/scallopClient.ts
2576
- var import_utils25 = require("@mysten/sui/utils");
2771
+ var import_utils26 = require("@mysten/sui/utils");
2577
2772
 
2578
2773
  // src/models/scallopUtils.ts
2579
- var import_utils10 = require("@mysten/sui/utils");
2774
+ var import_utils11 = require("@mysten/sui/utils");
2580
2775
  var import_pyth_sui_js = require("@pythnetwork/pyth-sui-js");
2581
2776
 
2582
2777
  // src/queries/borrowIncentiveQuery.ts
@@ -2598,7 +2793,7 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
2598
2793
  ...SUPPORT_BORROW_INCENTIVE_POOLS
2599
2794
  ], indexer = false, marketPools, coinPrices) => {
2600
2795
  const borrowIncentivePools = {};
2601
- marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices, indexer });
2796
+ marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices, indexer })).pools;
2602
2797
  coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools });
2603
2798
  if (indexer) {
2604
2799
  const borrowIncentivePoolsIndexer = await query.indexer.getBorrowIncentivePools();
@@ -2771,7 +2966,7 @@ var getBindedVeScaKey = async ({
2771
2966
  };
2772
2967
 
2773
2968
  // src/queries/coreQuery.ts
2774
- var import_utils5 = require("@mysten/sui/utils");
2969
+ var import_utils6 = require("@mysten/sui/utils");
2775
2970
  var import_bignumber3 = __toESM(require("bignumber.js"));
2776
2971
 
2777
2972
  // src/queries/supplyLimitQuery.ts
@@ -2790,7 +2985,7 @@ var supplyLimitZod = import_zod.z.object({
2790
2985
  value: import_zod.z.string()
2791
2986
  })
2792
2987
  });
2793
- var supplyLimitKeyType = `0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d::market_dynamic_keys::SupplyLimitKey`;
2988
+ var supplyLimitKeyType = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
2794
2989
  var getSupplyLimit = async (utils, poolName) => {
2795
2990
  try {
2796
2991
  const poolCoinType = utils.parseCoinType(poolName).slice(2);
@@ -2830,10 +3025,15 @@ var isolatedAssetZod = import_zod2.z.object({
2830
3025
  value: import_zod2.z.boolean()
2831
3026
  })
2832
3027
  });
2833
- var isolatedAssetKeyType = `0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d::market_dynamic_keys::IsolatedAssetKey`;
2834
- var getIsolatedAssets = async (address) => {
3028
+ var isolatedAssetKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
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
+ }
2835
3035
  try {
2836
- const marketObject = address.get("core.market");
3036
+ const marketObject = query.address.get("core.market");
2837
3037
  const isolatedAssets = [];
2838
3038
  if (!marketObject)
2839
3039
  return isolatedAssets;
@@ -2843,7 +3043,7 @@ var getIsolatedAssets = async (address) => {
2843
3043
  return dynamicField.name.type === isolatedAssetKeyType;
2844
3044
  };
2845
3045
  do {
2846
- const response = await address.cache.queryGetDynamicFields({
3046
+ const response = await query.cache.queryGetDynamicFields({
2847
3047
  parentId: marketObject,
2848
3048
  cursor: nextCursor,
2849
3049
  limit: 10
@@ -2866,32 +3066,30 @@ var getIsolatedAssets = async (address) => {
2866
3066
  }
2867
3067
  };
2868
3068
  var isIsolatedAsset = async (utils, coinName) => {
2869
- try {
2870
- const marketObject = utils.address.get("core.market");
2871
- const cachedData = utils.address.cache.queryClient.getQueryData([
2872
- "getDynamicFields",
2873
- marketObject
2874
- ]);
2875
- if (cachedData) {
2876
- const coinType2 = utils.parseCoinType(coinName);
2877
- 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
2878
3087
  }
2879
- const coinType = utils.parseCoinType(coinName).slice(2);
2880
- const object = await utils.cache.queryGetDynamicFieldObject({
2881
- parentId: marketObject,
2882
- name: {
2883
- type: isolatedAssetKeyType,
2884
- value: coinType
2885
- }
2886
- });
2887
- const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
2888
- if (!parsedData.success)
2889
- return false;
2890
- return parsedData.data.fields.value;
2891
- } catch (e) {
2892
- console.error(e);
3088
+ });
3089
+ const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
3090
+ if (!parsedData.success)
2893
3091
  return false;
2894
- }
3092
+ return parsedData.data.fields.value;
2895
3093
  };
2896
3094
 
2897
3095
  // src/queries/borrowLimitQuery.ts
@@ -2910,7 +3108,7 @@ var borrowLimitZod = import_zod3.z.object({
2910
3108
  value: import_zod3.z.string()
2911
3109
  })
2912
3110
  });
2913
- var borrowLimitKeyType = `0xb784ea287d944e478a3ceaa071f8885072cce6b7224cf245914dc2f9963f460e::market_dynamic_keys::BorrowLimitKey`;
3111
+ var borrowLimitKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
2914
3112
  var getBorrowLimit = async (utils, poolName) => {
2915
3113
  try {
2916
3114
  const poolCoinType = utils.parseCoinType(poolName).slice(2);
@@ -2934,6 +3132,17 @@ var getBorrowLimit = async (utils, poolName) => {
2934
3132
  }
2935
3133
  };
2936
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
+
2937
3146
  // src/queries/coreQuery.ts
2938
3147
  var queryMarket = async (query, indexer = false, coinPrices) => {
2939
3148
  coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
@@ -2965,7 +3174,7 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2965
3174
  const queryResult = await query.cache.queryInspectTxn({ queryTarget, args });
2966
3175
  const marketData = queryResult?.events[0]?.parsedJson;
2967
3176
  for (const pool of marketData?.pools ?? []) {
2968
- const coinType = (0, import_utils5.normalizeStructTag)(pool.type.name);
3177
+ const coinType = (0, import_utils6.normalizeStructTag)(pool.type.name);
2969
3178
  const poolCoinName = query.utils.parseCoinNameFromType(coinType);
2970
3179
  const coinPrice = coinPrices[poolCoinName] ?? 0;
2971
3180
  if (!SUPPORT_POOLS.includes(poolCoinName)) {
@@ -2990,19 +3199,15 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2990
3199
  borrowRateOnMidKink: pool.borrowRateOnMidKink,
2991
3200
  highKink: pool.highKink,
2992
3201
  midKink: pool.midKink,
2993
- 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"
2994
3206
  });
2995
3207
  const calculatedMarketPoolData = calculateMarketPoolData(
2996
3208
  query.utils,
2997
3209
  parsedMarketPoolData
2998
3210
  );
2999
- const coinDecimal = query.utils.getCoinDecimal(poolCoinName);
3000
- const maxSupplyCoin = (0, import_bignumber3.default)(
3001
- await getSupplyLimit(query.utils, poolCoinName) ?? "0"
3002
- ).shiftedBy(-coinDecimal).toNumber();
3003
- const maxBorrowCoin = (0, import_bignumber3.default)(
3004
- await getBorrowLimit(query.utils, poolCoinName) ?? "0"
3005
- ).shiftedBy(-coinDecimal).toNumber();
3006
3211
  pools[poolCoinName] = {
3007
3212
  coinName: poolCoinName,
3008
3213
  symbol: query.utils.parseSymbol(poolCoinName),
@@ -3012,7 +3217,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
3012
3217
  query.utils.parseMarketCoinName(poolCoinName)
3013
3218
  ),
3014
3219
  coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3015
- coinDecimal,
3016
3220
  coinPrice,
3017
3221
  highKink: parsedMarketPoolData.highKink,
3018
3222
  midKink: parsedMarketPoolData.midKink,
@@ -3021,15 +3225,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
3021
3225
  borrowFee: parsedMarketPoolData.borrowFee,
3022
3226
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
3023
3227
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
3024
- isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3025
- // isIsolated: false,
3026
- maxSupplyCoin,
3027
- maxBorrowCoin,
3028
3228
  ...calculatedMarketPoolData
3029
3229
  };
3030
3230
  }
3031
3231
  for (const collateral of marketData?.collaterals ?? []) {
3032
- const coinType = (0, import_utils5.normalizeStructTag)(collateral.type.name);
3232
+ const coinType = (0, import_utils6.normalizeStructTag)(collateral.type.name);
3033
3233
  const collateralCoinName = query.utils.parseCoinNameFromType(coinType);
3034
3234
  const coinPrice = coinPrices[collateralCoinName] ?? 0;
3035
3235
  if (!SUPPORT_COLLATERALS.includes(collateralCoinName)) {
@@ -3040,10 +3240,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
3040
3240
  collateralFactor: collateral.collateralFactor,
3041
3241
  liquidationFactor: collateral.liquidationFactor,
3042
3242
  liquidationDiscount: collateral.liquidationDiscount,
3043
- liquidationPanelty: collateral.liquidationPanelty,
3243
+ liquidationPenalty: collateral.liquidationPanelty,
3044
3244
  liquidationReserveFactor: collateral.liquidationReserveFactor,
3045
3245
  maxCollateralAmount: collateral.maxCollateralAmount,
3046
- totalCollateralAmount: collateral.totalCollateralAmount
3246
+ totalCollateralAmount: collateral.totalCollateralAmount,
3247
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
3047
3248
  });
3048
3249
  const calculatedMarketCollateralData = calculateMarketCollateralData(
3049
3250
  query.utils,
@@ -3055,14 +3256,12 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
3055
3256
  coinType,
3056
3257
  marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
3057
3258
  coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
3058
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
3059
3259
  coinPrice,
3060
3260
  collateralFactor: parsedMarketCollateralData.collateralFactor,
3061
3261
  liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3062
3262
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3063
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3263
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
3064
3264
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3065
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
3066
3265
  ...calculatedMarketCollateralData
3067
3266
  };
3068
3267
  }
@@ -3072,44 +3271,216 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
3072
3271
  // data: marketData,
3073
3272
  };
3074
3273
  };
3075
- var getMarketPools = async (query, poolCoinNames = [...SUPPORT_POOLS], indexer = false, coinPrices) => {
3076
- const marketId = query.address.get("core.market");
3077
- const marketObjectResponse = await query.cache.queryGetObject(marketId, {
3078
- showContent: true
3079
- });
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) => {
3080
3375
  coinPrices = coinPrices ?? await query.utils.getCoinPrices();
3081
- const marketPools = {};
3376
+ const pools = {};
3377
+ const collaterals = {};
3082
3378
  if (indexer) {
3083
- const marketPoolsIndexer = await query.indexer.getMarketPools();
3084
- const updateMarketPool = (marketPool) => {
3085
- if (!poolCoinNames.includes(marketPool.coinName))
3086
- return;
3087
- marketPool.coinPrice = coinPrices[marketPool.coinName] ?? marketPool.coinPrice;
3088
- marketPool.coinWrappedType = query.utils.getCoinWrappedType(
3089
- marketPool.coinName
3090
- );
3091
- 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
3092
3395
  };
3093
- Object.values(marketPoolsIndexer).forEach(updateMarketPool);
3094
- return marketPools;
3095
3396
  }
3397
+ const requiredObjects = await queryRequiredMarketObjects(
3398
+ query,
3399
+ poolCoinNames
3400
+ );
3096
3401
  await Promise.allSettled(
3097
3402
  poolCoinNames.map(async (poolCoinName) => {
3098
- const marketPool = await getMarketPool(
3099
- query,
3100
- poolCoinName,
3101
- indexer,
3102
- marketObjectResponse?.data,
3103
- coinPrices?.[poolCoinName]
3104
- );
3105
- if (marketPool) {
3106
- 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);
3107
3419
  }
3108
3420
  })
3109
3421
  );
3110
- 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
+ };
3111
3482
  };
3112
- var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
3483
+ var getMarketPool = async (query, poolCoinName, indexer = false, coinPrice, requiredObjects) => {
3113
3484
  coinPrice = coinPrice ?? (await query.utils.getCoinPrices())?.[poolCoinName];
3114
3485
  if (indexer) {
3115
3486
  const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
@@ -3120,135 +3491,70 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
3120
3491
  marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
3121
3492
  marketPoolIndexer.coinName
3122
3493
  );
3123
- return marketPoolIndexer;
3124
- }
3125
- const marketId = query.address.get("core.market");
3126
- marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
3127
- showContent: true
3128
- }))?.data;
3129
- if (!(marketObject && marketObject.content?.dataType === "moveObject"))
3130
- throw new Error(`Failed to fetch marketObject`);
3131
- const fields = marketObject.content.fields;
3132
- const coinType = query.utils.parseCoinType(poolCoinName);
3133
- const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
3134
- const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3135
- parentId: balanceSheetParentId,
3136
- name: {
3137
- type: "0x1::type_name::TypeName",
3138
- value: {
3139
- name: coinType.substring(2)
3140
- }
3141
- }
3142
- });
3143
- const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
3144
- if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
3145
- throw new Error(
3146
- `Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
3147
- );
3148
- const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
3149
- const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
3150
- const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3151
- parentId: borrowIndexParentId,
3152
- name: {
3153
- type: "0x1::type_name::TypeName",
3154
- value: {
3155
- name: coinType.substring(2)
3156
- }
3157
- }
3158
- });
3159
- const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
3160
- if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
3161
- throw new Error(
3162
- `Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
3163
- );
3164
- const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
3165
- const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
3166
- const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3167
- parentId: interestModelParentId,
3168
- name: {
3169
- type: "0x1::type_name::TypeName",
3170
- value: {
3171
- name: coinType.substring(2)
3172
- }
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
+ );
3173
3503
  }
3174
- });
3175
- const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse?.data;
3176
- if (!(interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content))
3177
- throw new Error(
3178
- `Failed to fetch interestModelDynamicFieldObject for ${poolCoinName}: ${interestModelDynamicFieldObject}`
3179
- );
3180
- const interestModel = interestModelDynamicFieldObject.content.fields.value.fields;
3181
- const getBorrowFee = async () => {
3182
- const borrowFeeDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3183
- parentId: marketId,
3184
- name: {
3185
- type: `${BORROW_FEE_PROTOCOL_ID}::market_dynamic_keys::BorrowFeeKey`,
3186
- value: {
3187
- type: {
3188
- name: coinType.substring(2)
3189
- }
3190
- }
3191
- }
3192
- });
3193
- const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
3194
- if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
3195
- return { value: "0" };
3196
- return borrowFeeDynamicFieldObject.content.fields.value.fields;
3197
- };
3198
- const parsedMarketPoolData = parseOriginMarketPoolData({
3199
- type: interestModel.type.fields,
3200
- maxBorrowRate: interestModel.max_borrow_rate.fields,
3201
- interestRate: borrowIndex.interest_rate.fields,
3202
- interestRateScale: borrowIndex.interest_rate_scale,
3203
- borrowIndex: borrowIndex.borrow_index,
3204
- lastUpdated: borrowIndex.last_updated,
3205
- cash: balanceSheet.cash,
3206
- debt: balanceSheet.debt,
3207
- marketCoinSupply: balanceSheet.market_coin_supply,
3208
- reserve: balanceSheet.revenue,
3209
- reserveFactor: interestModel.revenue_factor.fields,
3210
- borrowWeight: interestModel.borrow_weight.fields,
3211
- borrowFeeRate: await getBorrowFee(),
3212
- baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
3213
- borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
3214
- borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
3215
- highKink: interestModel.high_kink.fields,
3216
- midKink: interestModel.mid_kink.fields,
3217
- minBorrowAmount: interestModel.min_borrow_amount
3218
- });
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
+ );
3219
3514
  const calculatedMarketPoolData = calculateMarketPoolData(
3220
3515
  query.utils,
3221
3516
  parsedMarketPoolData
3222
3517
  );
3223
- const coinDecimal = query.utils.getCoinDecimal(poolCoinName);
3224
- const maxSupplyCoin = (0, import_bignumber3.default)(
3225
- await getSupplyLimit(query.utils, poolCoinName) ?? "0"
3226
- ).shiftedBy(-coinDecimal).toNumber();
3227
- const maxBorrowCoin = (0, import_bignumber3.default)(
3228
- await getBorrowLimit(query.utils, poolCoinName) ?? "0"
3229
- ).shiftedBy(-coinDecimal).toNumber();
3230
- return {
3518
+ const parsedMarketCollateralData = parsedMarketPoolObjects.parsedOriginMarketCollateral ? parseOriginMarketCollateralData(
3519
+ parsedMarketPoolObjects.parsedOriginMarketCollateral
3520
+ ) : void 0;
3521
+ const basePoolData = () => ({
3231
3522
  coinName: poolCoinName,
3232
3523
  symbol: query.utils.parseSymbol(poolCoinName),
3233
- coinType: query.utils.parseCoinType(poolCoinName),
3234
3524
  marketCoinType: query.utils.parseMarketCoinType(poolCoinName),
3235
- sCoinType: query.utils.parseSCoinType(
3236
- query.utils.parseMarketCoinName(poolCoinName)
3237
- ),
3238
- coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3239
- coinDecimal,
3240
- coinPrice: coinPrice ?? 0,
3241
- highKink: parsedMarketPoolData.highKink,
3242
- midKink: parsedMarketPoolData.midKink,
3243
- reserveFactor: parsedMarketPoolData.reserveFactor,
3244
- borrowWeight: parsedMarketPoolData.borrowWeight,
3245
- borrowFee: parsedMarketPoolData.borrowFee,
3246
- marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
3247
- minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
3248
- maxSupplyCoin,
3249
- maxBorrowCoin,
3250
- isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3251
- ...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
3252
3558
  };
3253
3559
  };
3254
3560
  var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
@@ -3343,10 +3649,11 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
3343
3649
  collateralFactor: riskModel.collateral_factor.fields,
3344
3650
  liquidationFactor: riskModel.liquidation_factor.fields,
3345
3651
  liquidationDiscount: riskModel.liquidation_discount.fields,
3346
- liquidationPanelty: riskModel.liquidation_penalty.fields,
3652
+ liquidationPenalty: riskModel.liquidation_penalty.fields,
3347
3653
  liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
3348
3654
  maxCollateralAmount: riskModel.max_collateral_amount,
3349
- totalCollateralAmount: collateralStat.amount
3655
+ totalCollateralAmount: collateralStat.amount,
3656
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
3350
3657
  });
3351
3658
  const calculatedMarketCollateralData = calculateMarketCollateralData(
3352
3659
  query.utils,
@@ -3358,14 +3665,12 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
3358
3665
  coinType: query.utils.parseCoinType(collateralCoinName),
3359
3666
  marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
3360
3667
  coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
3361
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
3362
3668
  coinPrice: coinPrice ?? 0,
3363
3669
  collateralFactor: parsedMarketCollateralData.collateralFactor,
3364
3670
  liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3365
3671
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3366
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3672
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
3367
3673
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3368
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
3369
3674
  ...calculatedMarketCollateralData
3370
3675
  };
3371
3676
  };
@@ -3606,10 +3911,10 @@ var getLendings = async (query, poolCoinNames = [...SUPPORT_POOLS], ownerAddress
3606
3911
  (marketCoinName) => SUPPORT_SPOOLS.includes(marketCoinName)
3607
3912
  );
3608
3913
  const coinPrices = await query.utils.getCoinPrices();
3609
- const marketPools = await query.getMarketPools(poolCoinNames, {
3914
+ const marketPools = (await query.getMarketPools(poolCoinNames, {
3610
3915
  indexer,
3611
3916
  coinPrices
3612
- });
3917
+ })).pools;
3613
3918
  const spools = await query.getSpools(stakeMarketCoinNames, {
3614
3919
  indexer,
3615
3920
  marketPools,
@@ -3778,7 +4083,7 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
3778
4083
  };
3779
4084
  var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
3780
4085
  const coinPrices = await query.utils.getCoinPrices();
3781
- const market = await query.queryMarket({ indexer, coinPrices });
4086
+ const market = await query.getMarketPools(void 0, { coinPrices, indexer });
3782
4087
  const [coinAmounts, obligations] = await Promise.all([
3783
4088
  query.getCoinAmounts(void 0, ownerAddress),
3784
4089
  query.getObligations(ownerAddress)
@@ -3806,7 +4111,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
3806
4111
  const collateralAssetCoinNames = [
3807
4112
  ...SUPPORT_COLLATERALS
3808
4113
  ];
3809
- market = market ?? await query.queryMarket({ indexer });
4114
+ market = market ?? await query.getMarketPools(void 0, { indexer });
3810
4115
  coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools: market.pools });
3811
4116
  coinAmounts = coinAmounts || await query.getCoinAmounts(coinNames, ownerAddress);
3812
4117
  const [obligationQuery, borrowIncentivePools, borrowIncentiveAccounts] = await Promise.all([
@@ -4097,7 +4402,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
4097
4402
  return obligationAccount;
4098
4403
  };
4099
4404
  var getTotalValueLocked = async (query, indexer = false) => {
4100
- const market = await query.queryMarket({ indexer });
4405
+ const market = await query.getMarketPools(void 0, { indexer });
4101
4406
  let supplyValue = (0, import_bignumber5.default)(0);
4102
4407
  let borrowValue = (0, import_bignumber5.default)(0);
4103
4408
  if (indexer) {
@@ -4218,7 +4523,7 @@ var getPythPrices = async ({
4218
4523
  };
4219
4524
  var getAllCoinPrices = async (query, marketPools, coinPrices) => {
4220
4525
  coinPrices = coinPrices ?? await query.utils.getCoinPrices();
4221
- marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices });
4526
+ marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices })).pools;
4222
4527
  if (!marketPools) {
4223
4528
  throw new Error(`Failed to fetch market pool for getAllCoinPrices`);
4224
4529
  }
@@ -4343,13 +4648,13 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
4343
4648
  };
4344
4649
 
4345
4650
  // src/queries/spoolQuery.ts
4346
- var import_utils8 = require("@mysten/sui/utils");
4651
+ var import_utils9 = require("@mysten/sui/utils");
4347
4652
  var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexer = false, marketPools, coinPrices) => {
4348
4653
  const stakeCoinNames = stakeMarketCoinNames.map(
4349
4654
  (stakeMarketCoinName) => query.utils.parseCoinName(stakeMarketCoinName)
4350
4655
  );
4351
4656
  coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
4352
- marketPools = marketPools ?? await query.getMarketPools(stakeCoinNames, { indexer });
4657
+ marketPools = marketPools ?? (await query.getMarketPools(stakeCoinNames, { indexer })).pools;
4353
4658
  if (!marketPools)
4354
4659
  throw new Error(`Fail to fetch marketPools for ${stakeCoinNames}`);
4355
4660
  const spools = {};
@@ -4560,14 +4865,14 @@ var getStakeAccounts = async ({
4560
4865
  svsui: stakeAccounts.svsui,
4561
4866
  susdc: stakeAccounts.susdc
4562
4867
  };
4563
- const normalizedType = (0, import_utils8.normalizeStructTag)(type);
4868
+ const normalizedType = (0, import_utils9.normalizeStructTag)(type);
4564
4869
  const stakeAccountArray = stakeMarketCoinTypeMap[reversedStakeMarketCoinTypes[normalizedType]];
4565
4870
  if (stakeAccountArray) {
4566
4871
  stakeAccountArray.push({
4567
4872
  id,
4568
4873
  type: normalizedType,
4569
4874
  stakePoolId,
4570
- stakeType: (0, import_utils8.normalizeStructTag)(stakeType),
4875
+ stakeType: (0, import_utils9.normalizeStructTag)(stakeType),
4571
4876
  staked,
4572
4877
  index,
4573
4878
  points,
@@ -4605,13 +4910,13 @@ var getStakePool = async ({
4605
4910
  const lastUpdate = Number(fields.last_update);
4606
4911
  stakePool = {
4607
4912
  id,
4608
- type: (0, import_utils8.normalizeStructTag)(type),
4913
+ type: (0, import_utils9.normalizeStructTag)(type),
4609
4914
  maxPoint,
4610
4915
  distributedPoint,
4611
4916
  pointPerPeriod,
4612
4917
  period,
4613
4918
  maxStake,
4614
- stakeType: (0, import_utils8.normalizeStructTag)(stakeType),
4919
+ stakeType: (0, import_utils9.normalizeStructTag)(stakeType),
4615
4920
  totalStaked,
4616
4921
  index,
4617
4922
  createdAt,
@@ -4650,7 +4955,7 @@ var getStakeRewardPool = async ({
4650
4955
  const claimedRewards = Number(rewardPoolFields.claimed_rewards);
4651
4956
  stakeRewardPool = {
4652
4957
  id,
4653
- type: (0, import_utils8.normalizeStructTag)(type),
4958
+ type: (0, import_utils9.normalizeStructTag)(type),
4654
4959
  stakePoolId,
4655
4960
  ratioNumerator,
4656
4961
  ratioDenominator,
@@ -4833,6 +5138,96 @@ var getVeScaTreasuryInfo = async (utils) => {
4833
5138
  };
4834
5139
  };
4835
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
+
4836
5231
  // src/models/suiKit.ts
4837
5232
  var import_sui_kit4 = require("@scallop-io/sui-kit");
4838
5233
  var newSuiKit = (params) => {
@@ -4935,7 +5330,7 @@ var ScallopUtils = class {
4935
5330
  throw Error(`Coin ${coinName} is not supported`);
4936
5331
  }
4937
5332
  if (coinName === "sui")
4938
- return (0, import_utils10.normalizeStructTag)(`${coinPackageId}::sui::SUI`);
5333
+ return (0, import_utils11.normalizeStructTag)(`${coinPackageId}::sui::SUI`);
4939
5334
  const wormHolePackageIds = [
4940
5335
  this.address.get("core.coins.wusdc.id") ?? wormholeCoinIds.wusdc,
4941
5336
  this.address.get("core.coins.wusdt.id") ?? wormholeCoinIds.wusdt,
@@ -5039,7 +5434,7 @@ var ScallopUtils = class {
5039
5434
  return `${protocolObjectId}::reserve::MarketCoin<${coinType}>`;
5040
5435
  }
5041
5436
  parseCoinNameFromType(coinType) {
5042
- coinType = (0, import_utils10.normalizeStructTag)(coinType);
5437
+ coinType = (0, import_utils11.normalizeStructTag)(coinType);
5043
5438
  if (sCoinTypeToName[coinType]) {
5044
5439
  return sCoinTypeToName[coinType];
5045
5440
  }
@@ -5123,7 +5518,7 @@ var ScallopUtils = class {
5123
5518
  * @param coinType - The coin type, default is 0x2::SUI::SUI.
5124
5519
  * @return The selected transaction coin arguments.
5125
5520
  */
5126
- async selectCoins(amount, coinType = import_utils10.SUI_TYPE_ARG, ownerAddress) {
5521
+ async selectCoins(amount, coinType = import_utils11.SUI_TYPE_ARG, ownerAddress) {
5127
5522
  ownerAddress = ownerAddress ?? this.suiKit.currentAddress();
5128
5523
  const coins = await this.suiKit.suiInteractor.selectCoins(
5129
5524
  ownerAddress,
@@ -5321,15 +5716,15 @@ var ScallopUtils = class {
5321
5716
  };
5322
5717
 
5323
5718
  // src/models/scallopBuilder.ts
5324
- var import_utils24 = require("@mysten/sui/utils");
5719
+ var import_utils25 = require("@mysten/sui/utils");
5325
5720
 
5326
5721
  // src/builders/coreBuilder.ts
5327
5722
  var import_transactions = require("@mysten/sui/transactions");
5328
- var import_utils13 = require("@mysten/sui/utils");
5723
+ var import_utils14 = require("@mysten/sui/utils");
5329
5724
  var import_sui_kit5 = require("@scallop-io/sui-kit");
5330
5725
 
5331
5726
  // src/builders/oracle.ts
5332
- var import_utils12 = require("@mysten/sui/utils");
5727
+ var import_utils13 = require("@mysten/sui/utils");
5333
5728
  var import_pyth_sui_js2 = require("@pythnetwork/pyth-sui-js");
5334
5729
  var updateOracles = async (builder, txBlock, assetCoinNames, options = { usePythPullModel: true }) => {
5335
5730
  const usePythPullModel = builder.params.usePythPullModel ?? options.usePythPullModel;
@@ -5445,27 +5840,27 @@ var priceUpdateRequest = (txBlock, packageId, xOracleId, coinType) => {
5445
5840
  var confirmPriceUpdateRequest = (txBlock, packageId, xOracleId, request, coinType) => {
5446
5841
  const target = `${packageId}::x_oracle::confirm_price_update_request`;
5447
5842
  const typeArgs = [coinType];
5448
- 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);
5449
5844
  return txBlock;
5450
5845
  };
5451
5846
  var updateSupraPrice = (txBlock, packageId, request, holderId, registryId, coinType) => {
5452
5847
  txBlock.moveCall(
5453
5848
  `${packageId}::rule::set_price`,
5454
- [request, holderId, registryId, import_utils12.SUI_CLOCK_OBJECT_ID],
5849
+ [request, holderId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
5455
5850
  [coinType]
5456
5851
  );
5457
5852
  };
5458
5853
  var updateSwitchboardPrice = (txBlock, packageId, request, aggregatorId, registryId, coinType) => {
5459
5854
  txBlock.moveCall(
5460
5855
  `${packageId}::rule::set_price`,
5461
- [request, aggregatorId, registryId, import_utils12.SUI_CLOCK_OBJECT_ID],
5856
+ [request, aggregatorId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
5462
5857
  [coinType]
5463
5858
  );
5464
5859
  };
5465
5860
  var updatePythPrice = (txBlock, packageId, request, stateId, feedObjectId, registryId, coinType) => {
5466
5861
  txBlock.moveCall(
5467
5862
  `${packageId}::rule::set_price`,
5468
- [request, stateId, feedObjectId, registryId, import_utils12.SUI_CLOCK_OBJECT_ID],
5863
+ [request, stateId, feedObjectId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
5469
5864
  [coinType]
5470
5865
  );
5471
5866
  };
@@ -5536,7 +5931,7 @@ var generateCoreNormalMethod = ({
5536
5931
  coreIds.coinDecimalsRegistry,
5537
5932
  txBlock.pure.u64(amount),
5538
5933
  coreIds.xOracle,
5539
- import_utils13.SUI_CLOCK_OBJECT_ID
5934
+ import_utils14.SUI_CLOCK_OBJECT_ID
5540
5935
  ],
5541
5936
  [coinType]
5542
5937
  );
@@ -5545,7 +5940,7 @@ var generateCoreNormalMethod = ({
5545
5940
  const coinType = builder.utils.parseCoinType(poolCoinName);
5546
5941
  return txBlock.moveCall(
5547
5942
  `${coreIds.protocolPkg}::mint::mint`,
5548
- [coreIds.version, coreIds.market, coin, import_utils13.SUI_CLOCK_OBJECT_ID],
5943
+ [coreIds.version, coreIds.market, coin, import_utils14.SUI_CLOCK_OBJECT_ID],
5549
5944
  [coinType]
5550
5945
  );
5551
5946
  },
@@ -5553,7 +5948,7 @@ var generateCoreNormalMethod = ({
5553
5948
  const coinType = builder.utils.parseCoinType(poolCoinName);
5554
5949
  return txBlock.moveCall(
5555
5950
  `${coreIds.protocolPkg}::mint::mint_entry`,
5556
- [coreIds.version, coreIds.market, coin, import_utils13.SUI_CLOCK_OBJECT_ID],
5951
+ [coreIds.version, coreIds.market, coin, import_utils14.SUI_CLOCK_OBJECT_ID],
5557
5952
  [coinType]
5558
5953
  );
5559
5954
  },
@@ -5561,7 +5956,7 @@ var generateCoreNormalMethod = ({
5561
5956
  const coinType = builder.utils.parseCoinType(poolCoinName);
5562
5957
  return txBlock.moveCall(
5563
5958
  `${coreIds.protocolPkg}::redeem::redeem`,
5564
- [coreIds.version, coreIds.market, marketCoin, import_utils13.SUI_CLOCK_OBJECT_ID],
5959
+ [coreIds.version, coreIds.market, marketCoin, import_utils14.SUI_CLOCK_OBJECT_ID],
5565
5960
  [coinType]
5566
5961
  );
5567
5962
  },
@@ -5569,7 +5964,7 @@ var generateCoreNormalMethod = ({
5569
5964
  const coinType = builder.utils.parseCoinType(poolCoinName);
5570
5965
  return txBlock.moveCall(
5571
5966
  `${coreIds.protocolPkg}::redeem::redeem_entry`,
5572
- [coreIds.version, coreIds.market, marketCoin, import_utils13.SUI_CLOCK_OBJECT_ID],
5967
+ [coreIds.version, coreIds.market, marketCoin, import_utils14.SUI_CLOCK_OBJECT_ID],
5573
5968
  [coinType]
5574
5969
  );
5575
5970
  },
@@ -5585,7 +5980,7 @@ var generateCoreNormalMethod = ({
5585
5980
  coreIds.coinDecimalsRegistry,
5586
5981
  amount,
5587
5982
  coreIds.xOracle,
5588
- import_utils13.SUI_CLOCK_OBJECT_ID
5983
+ import_utils14.SUI_CLOCK_OBJECT_ID
5589
5984
  ],
5590
5985
  [coinType]
5591
5986
  );
@@ -5603,7 +5998,7 @@ var generateCoreNormalMethod = ({
5603
5998
  borrowReferral,
5604
5999
  txBlock.pure.u64(amount),
5605
6000
  coreIds.xOracle,
5606
- import_utils13.SUI_CLOCK_OBJECT_ID
6001
+ import_utils14.SUI_CLOCK_OBJECT_ID
5607
6002
  ],
5608
6003
  [coinType, referralWitnessType]
5609
6004
  );
@@ -5620,7 +6015,7 @@ var generateCoreNormalMethod = ({
5620
6015
  coreIds.coinDecimalsRegistry,
5621
6016
  txBlock.pure.u64(amount),
5622
6017
  coreIds.xOracle,
5623
- import_utils13.SUI_CLOCK_OBJECT_ID
6018
+ import_utils14.SUI_CLOCK_OBJECT_ID
5624
6019
  ],
5625
6020
  [coinType]
5626
6021
  );
@@ -5634,7 +6029,7 @@ var generateCoreNormalMethod = ({
5634
6029
  obligation,
5635
6030
  coreIds.market,
5636
6031
  coin,
5637
- import_utils13.SUI_CLOCK_OBJECT_ID
6032
+ import_utils14.SUI_CLOCK_OBJECT_ID
5638
6033
  ],
5639
6034
  [coinType]
5640
6035
  );
@@ -5865,7 +6260,7 @@ var newCoreTxBlock = (builder, initTxBlock) => {
5865
6260
 
5866
6261
  // src/builders/spoolBuilder.ts
5867
6262
  var import_transactions2 = require("@mysten/sui/transactions");
5868
- var import_utils15 = require("@mysten/sui/utils");
6263
+ var import_utils16 = require("@mysten/sui/utils");
5869
6264
  var import_sui_kit6 = require("@scallop-io/sui-kit");
5870
6265
  var requireStakeAccountIds = async (...params) => {
5871
6266
  const [builder, txBlock, stakeMarketCoinName, stakeAccountId] = params;
@@ -5920,7 +6315,7 @@ var generateSpoolNormalMethod = ({
5920
6315
  );
5921
6316
  return txBlock.moveCall(
5922
6317
  `${spoolIds.spoolPkg}::user::new_spool_account`,
5923
- [stakePoolId, import_utils15.SUI_CLOCK_OBJECT_ID],
6318
+ [stakePoolId, import_utils16.SUI_CLOCK_OBJECT_ID],
5924
6319
  [marketCoinType]
5925
6320
  );
5926
6321
  },
@@ -5931,7 +6326,7 @@ var generateSpoolNormalMethod = ({
5931
6326
  );
5932
6327
  txBlock.moveCall(
5933
6328
  `${spoolIds.spoolPkg}::user::stake`,
5934
- [stakePoolId, stakeAccount, coin, import_utils15.SUI_CLOCK_OBJECT_ID],
6329
+ [stakePoolId, stakeAccount, coin, import_utils16.SUI_CLOCK_OBJECT_ID],
5935
6330
  [marketCoinType]
5936
6331
  );
5937
6332
  },
@@ -5942,7 +6337,7 @@ var generateSpoolNormalMethod = ({
5942
6337
  );
5943
6338
  return txBlock.moveCall(
5944
6339
  `${spoolIds.spoolPkg}::user::unstake`,
5945
- [stakePoolId, stakeAccount, amount, import_utils15.SUI_CLOCK_OBJECT_ID],
6340
+ [stakePoolId, stakeAccount, amount, import_utils16.SUI_CLOCK_OBJECT_ID],
5946
6341
  [marketCoinType]
5947
6342
  );
5948
6343
  },
@@ -5958,7 +6353,7 @@ var generateSpoolNormalMethod = ({
5958
6353
  const rewardCoinType = builder.utils.parseCoinType(rewardCoinName);
5959
6354
  return txBlock.moveCall(
5960
6355
  `${spoolIds.spoolPkg}::user::redeem_rewards`,
5961
- [stakePoolId, rewardPoolId, stakeAccount, import_utils15.SUI_CLOCK_OBJECT_ID],
6356
+ [stakePoolId, rewardPoolId, stakeAccount, import_utils16.SUI_CLOCK_OBJECT_ID],
5962
6357
  [marketCoinType, rewardCoinType]
5963
6358
  );
5964
6359
  }
@@ -6090,7 +6485,7 @@ var newSpoolTxBlock = (builder, initTxBlock) => {
6090
6485
 
6091
6486
  // src/builders/borrowIncentiveBuilder.ts
6092
6487
  var import_transactions3 = require("@mysten/sui/transactions");
6093
- var import_utils17 = require("@mysten/sui/utils");
6488
+ var import_utils18 = require("@mysten/sui/utils");
6094
6489
  var import_sui_kit7 = require("@scallop-io/sui-kit");
6095
6490
  var requireObligationInfo2 = async (...params) => {
6096
6491
  const [builder, txBlock, obligationId, obligationKey] = params;
@@ -6142,7 +6537,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6142
6537
  obligationKey,
6143
6538
  obligationId,
6144
6539
  borrowIncentiveIds.obligationAccessStore,
6145
- import_utils17.SUI_CLOCK_OBJECT_ID
6540
+ import_utils18.SUI_CLOCK_OBJECT_ID
6146
6541
  ]
6147
6542
  );
6148
6543
  },
@@ -6160,7 +6555,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6160
6555
  veScaIds.treasury,
6161
6556
  veScaIds.table,
6162
6557
  veScaKey,
6163
- import_utils17.SUI_CLOCK_OBJECT_ID
6558
+ import_utils18.SUI_CLOCK_OBJECT_ID
6164
6559
  ],
6165
6560
  []
6166
6561
  );
@@ -6174,7 +6569,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6174
6569
  borrowIncentiveIds.incentiveAccounts,
6175
6570
  obligationKey,
6176
6571
  obligationId,
6177
- import_utils17.SUI_CLOCK_OBJECT_ID
6572
+ import_utils18.SUI_CLOCK_OBJECT_ID
6178
6573
  ]
6179
6574
  );
6180
6575
  },
@@ -6188,7 +6583,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6188
6583
  borrowIncentiveIds.incentiveAccounts,
6189
6584
  obligationKey,
6190
6585
  obligationId,
6191
- import_utils17.SUI_CLOCK_OBJECT_ID
6586
+ import_utils18.SUI_CLOCK_OBJECT_ID
6192
6587
  ],
6193
6588
  [rewardType]
6194
6589
  );
@@ -6202,7 +6597,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6202
6597
  borrowIncentiveIds.incentiveAccounts,
6203
6598
  obligation,
6204
6599
  veScaKey,
6205
- import_utils17.SUI_CLOCK_OBJECT_ID
6600
+ import_utils18.SUI_CLOCK_OBJECT_ID
6206
6601
  ]
6207
6602
  );
6208
6603
  }
@@ -7092,12 +7487,12 @@ var ScallopIndexer = class {
7092
7487
  };
7093
7488
 
7094
7489
  // src/models/scallopQuery.ts
7095
- var import_utils23 = require("@mysten/sui/utils");
7490
+ var import_utils24 = require("@mysten/sui/utils");
7096
7491
  var ScallopQuery = class {
7097
7492
  constructor(params, instance) {
7098
7493
  this.params = params;
7099
7494
  this.suiKit = instance?.suiKit ?? instance?.utils?.suiKit ?? newSuiKit(params);
7100
- this.walletAddress = (0, import_utils23.normalizeSuiAddress)(
7495
+ this.walletAddress = (0, import_utils24.normalizeSuiAddress)(
7101
7496
  params.walletAddress ?? this.suiKit.currentAddress()
7102
7497
  );
7103
7498
  if (instance?.utils) {
@@ -7172,6 +7567,7 @@ var ScallopQuery = class {
7172
7567
  }
7173
7568
  /* ==================== Core Query Methods ==================== */
7174
7569
  /**
7570
+ * @deprecated use getMarketPools
7175
7571
  * Query market data.
7176
7572
  * @param indexer - Whether to use indexer.
7177
7573
  * @return Market data.
@@ -7190,7 +7586,7 @@ var ScallopQuery = class {
7190
7586
  * @param indexer - Whether to use indexer.
7191
7587
  * @return Market pools data.
7192
7588
  */
7193
- async getMarketPools(poolCoinNames, args) {
7589
+ async getMarketPools(poolCoinNames = [...SUPPORT_POOLS], args) {
7194
7590
  return await getMarketPools(
7195
7591
  this,
7196
7592
  poolCoinNames,
@@ -7206,13 +7602,8 @@ var ScallopQuery = class {
7206
7602
  * @return Market pool data.
7207
7603
  */
7208
7604
  async getMarketPool(poolCoinName, args) {
7209
- return await getMarketPool(
7210
- this,
7211
- poolCoinName,
7212
- args?.indexer,
7213
- args?.marketObject,
7214
- args?.coinPrice
7215
- );
7605
+ const marketPools = await this.getMarketPools(void 0, args);
7606
+ return marketPools.pools[poolCoinName];
7216
7607
  }
7217
7608
  /**
7218
7609
  * Get market collaterals.
@@ -7650,7 +8041,7 @@ var ScallopQuery = class {
7650
8041
  * Get list of isolated assets
7651
8042
  */
7652
8043
  async getIsolatedAssets() {
7653
- return await getIsolatedAssets(this.address);
8044
+ return await getIsolatedAssets(this);
7654
8045
  }
7655
8046
  /**
7656
8047
  * Check if asset is an isolated asset
@@ -7673,6 +8064,13 @@ var ScallopQuery = class {
7673
8064
  async getAllCoinPrices(args) {
7674
8065
  return getAllCoinPrices(this, args?.marketPools, args?.coinPrices);
7675
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
+ }
7676
8074
  };
7677
8075
 
7678
8076
  // src/models/scallopBuilder.ts
@@ -7680,7 +8078,7 @@ var ScallopBuilder = class {
7680
8078
  constructor(params, instance) {
7681
8079
  this.suiKit = instance?.suiKit ?? newSuiKit(params);
7682
8080
  this.params = params;
7683
- this.walletAddress = (0, import_utils24.normalizeSuiAddress)(
8081
+ this.walletAddress = (0, import_utils25.normalizeSuiAddress)(
7684
8082
  params?.walletAddress ?? this.suiKit.currentAddress()
7685
8083
  );
7686
8084
  if (instance?.query) {
@@ -7827,7 +8225,7 @@ var ScallopClient = class {
7827
8225
  constructor(params, instance) {
7828
8226
  this.params = params;
7829
8227
  this.suiKit = instance?.suiKit ?? instance?.builder?.suiKit ?? newSuiKit(params);
7830
- this.walletAddress = (0, import_utils25.normalizeSuiAddress)(
8228
+ this.walletAddress = (0, import_utils26.normalizeSuiAddress)(
7831
8229
  params?.walletAddress ?? this.suiKit.currentAddress()
7832
8230
  );
7833
8231
  if (instance?.builder) {