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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/constants/poolAddress.d.ts +15 -4
  2. package/dist/constants/queryKeys.d.ts +1 -2
  3. package/dist/constants/tokenBucket.d.ts +1 -1
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.js +873 -416
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +826 -371
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/models/scallopCache.d.ts +1 -0
  10. package/dist/models/scallopQuery.d.ts +21 -17
  11. package/dist/queries/coreQuery.d.ts +18 -19
  12. package/dist/queries/index.d.ts +2 -0
  13. package/dist/queries/isolatedAssetQuery.d.ts +2 -2
  14. package/dist/queries/objectsQuery.d.ts +3 -0
  15. package/dist/queries/poolAddressesQuery.d.ts +16 -0
  16. package/dist/queries/spoolQuery.d.ts +6 -2
  17. package/dist/test.d.ts +1 -0
  18. package/dist/types/query/core.d.ts +22 -5
  19. package/dist/types/query/spool.d.ts +20 -0
  20. package/dist/types/utils.d.ts +7 -2
  21. package/dist/utils/core.d.ts +2 -0
  22. package/dist/utils/index.d.ts +2 -0
  23. package/dist/utils/util.d.ts +1 -0
  24. package/package.json +1 -1
  25. package/src/constants/poolAddress.ts +291 -29
  26. package/src/constants/queryKeys.ts +5 -5
  27. package/src/constants/tokenBucket.ts +1 -1
  28. package/src/index.ts +1 -0
  29. package/src/models/scallopCache.ts +43 -11
  30. package/src/models/scallopQuery.ts +25 -20
  31. package/src/queries/borrowIncentiveQuery.ts +1 -1
  32. package/src/queries/coreQuery.ts +378 -248
  33. package/src/queries/index.ts +2 -0
  34. package/src/queries/isolatedAssetQuery.ts +37 -31
  35. package/src/queries/objectsQuery.ts +20 -0
  36. package/src/queries/poolAddressesQuery.ts +140 -0
  37. package/src/queries/portfolioQuery.ts +14 -7
  38. package/src/queries/priceQuery.ts +3 -1
  39. package/src/queries/spoolQuery.ts +189 -122
  40. package/src/test.ts +17 -0
  41. package/src/types/query/core.ts +21 -5
  42. package/src/types/query/spool.ts +21 -0
  43. package/src/types/utils.ts +8 -3
  44. package/src/utils/core.ts +18 -0
  45. package/src/utils/index.ts +2 -0
  46. package/src/utils/query.ts +16 -2
  47. package/src/utils/tokenBucket.ts +2 -2
  48. package/src/utils/util.ts +8 -0
package/dist/index.mjs CHANGED
@@ -328,67 +328,213 @@ var FlashLoanFeeObjectMap = {
328
328
 
329
329
  // src/constants/poolAddress.ts
330
330
  var POOL_ADDRESSES = {
331
- usdc: {
332
- lendingPoolAddress: "0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",
333
- collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af"
334
- },
335
331
  sbeth: {
336
- lendingPoolAddress: "0x5f08c4f71d56dd3342c452cc70ffc47f2f4180146d821941b0b9c04761bb42e7",
337
- collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f"
332
+ lendingPoolAddress: "0xaa34c938e0394e5186c7dc626ad69be96af2194b23fdc6ac1c63090e399f5ba4",
333
+ collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f",
334
+ borrowDynamic: "0x7bbe75e8b924229f2f2110838ff612ea66e670fa3766759515dee78f617b1ea3",
335
+ interestModel: "0x9e6cae260d05155785a1904d24e6abc98368509c5752c8a9cec15a35aabc1512",
336
+ riskModel: "0xcf10334cfee675ecea2d2fee37b0f7cd2835c84b8b5692a853021debe6af80ab",
337
+ borrowFeeKey: "0x4298c8b6afe7a42a8e3ff93773fb9769529fe6d37e085ab411acf2ba2a44a931",
338
+ supplyLimitKey: "0x812fe508b78d3e0817149c0b39976221ddb267b5cc9514e81679f9b9a2f3624c",
339
+ borrowLimitKey: "0x165c274c67eda2b0d13563124741fffd0ce7d643f4c1c4b59d7e53a83796ae25",
340
+ isolatedAssetKey: void 0,
341
+ spool: void 0,
342
+ spoolReward: void 0
338
343
  },
339
- weth: {
340
- lendingPoolAddress: "0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",
341
- collateralPoolAddress: "0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf"
344
+ usdc: {
345
+ lendingPoolAddress: "0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",
346
+ collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af",
347
+ borrowDynamic: "0x77837ecd4f26fac9a410fff594f2c0bd3288904a15492ca77cb8a52684dbb866",
348
+ interestModel: "0xaae3f179d63009380cbdcb9acb12907afc9c3cb79cc3460be296a9c6d28f3ff3",
349
+ riskModel: "0x198b24db213bfeb8b3c80ae63dde92e32fd24984d25da8233ff777b851edd574",
350
+ borrowFeeKey: "0xd37c5316cfe0a5967d14264fa6b423f880518b294a1ee6581ccbb49ccc401fb8",
351
+ supplyLimitKey: "0x4be9ae54ac4d320f4f9c14cae78cb85c8e0e67791dd9bdba6d2db20614a28a24",
352
+ borrowLimitKey: "0x6b01093cba95b835181f00e3a2c31ed8dfc8d64fe3db0fb80933a09f66e1ccf1",
353
+ isolatedAssetKey: void 0,
354
+ spool: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
355
+ spoolReward: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166"
342
356
  },
343
357
  wbtc: {
344
358
  lendingPoolAddress: "0x65cc08a5aca0a0b8d72e1993ded8d145f06dd102fd0d8f285b92934faed564ab",
345
- collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3"
359
+ collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3",
360
+ borrowDynamic: "0x6f97dcf54158a5d08f359a213a41e347bc1e6316414288dc1e1b674dc008742e",
361
+ interestModel: "0x582b915cca0ffca9576a7cedd505d0fd7cb146e9521ccf10e7453ed93705684d",
362
+ riskModel: "0x1d0a242bf1682e259112239720da19d3155dd99d70b1f4b3b973eecbab858911",
363
+ borrowFeeKey: "0x654ab7e8ff6d9ef04da697e1f12ca21eaf72ebb495daf877e0776e65187dcb92",
364
+ supplyLimitKey: "0xac3b0d17df9f98aa2798c54405cf1d8d5356ef22f76f02d150cbe5195e9f3a36",
365
+ borrowLimitKey: "0x231e13ba6b1eb26c562f4a125778d3152f9a77e31f124bd6012e234a73012169",
366
+ isolatedAssetKey: void 0,
367
+ spool: void 0,
368
+ spoolReward: void 0
346
369
  },
347
370
  wusdc: {
348
- lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
349
- collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb"
371
+ lendingPoolAddress: "0x2f4df5e1368fbbdaa5c712d28b837b3d41c2d3872979ccededcdfdac55ff8a93",
372
+ collateralPoolAddress: "0x94cf69158114c5b242d2ee5d0149a335bddf3b9c9a6ba919cca58097a4814980",
373
+ borrowDynamic: "0x0464d117908b52fc75f7f85322a47caa078ef56f48681bcfdcb630a66f2591e6",
374
+ interestModel: "0xd72e2b5ba486752939d6dfb86a67b86ce9a60c83cb8fb893caac54a0f112577f",
375
+ riskModel: "0xb74035de8f70c1531ceb8e2e8c152d6b8db24c8a9fe7bbf6f75dbf7c6700a0a3",
376
+ borrowFeeKey: "0x76dcf1acbd9951fe3d1a3fe28403fec089ffe53a7c7d6c77e3ea97033a63581a",
377
+ supplyLimitKey: "0x7b302196907e87c5d5872f2e6f40628d110170f994e0e08bc607bded001958c3",
378
+ borrowLimitKey: "0x97f1502ce994db0bcb15aac1760d174def9e88e97cd2262eed54521ee2c19f81",
379
+ isolatedAssetKey: void 0,
380
+ spool: "0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",
381
+ spoolReward: "0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8"
382
+ },
383
+ weth: {
384
+ lendingPoolAddress: "0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",
385
+ collateralPoolAddress: "0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf",
386
+ borrowDynamic: "0xd1578e1d1c9c82eb4c5bf14beece8142a67a683b2647d7276e92984119fc1445",
387
+ interestModel: "0xa1dc08541cd2cb7cfb4e56272292d5c6a4780e80fd210c58abffae98268b5ed9",
388
+ riskModel: "0x9f05a25fd33a9e8cf33962126b175d038e184f0ee1b87dc41d4cedbe6abebbe5",
389
+ borrowFeeKey: "0x29672ba8ab4625b8181d8ed739e5344de22a97d417748c4d1276c7379283d7a3",
390
+ supplyLimitKey: "0x2b957941bdc9432bbc83ab74dc194b6ebb7c927bc4c6926a5492b5503499e509",
391
+ borrowLimitKey: "0x51f256d87e51a7ca2b1c482923096f4b6dac6beac89d8ecf4c65b7d5764115d6",
392
+ isolatedAssetKey: void 0,
393
+ spool: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
394
+ spoolReward: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"
350
395
  },
351
396
  wusdt: {
352
397
  lendingPoolAddress: "0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879",
353
- collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3"
398
+ collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3",
399
+ borrowDynamic: "0xb524030cc8f7cdbf13f1925a0a2b5e77cc52bab73b070f42c5e510f6083da1ba",
400
+ interestModel: "0x92f93c4431b4c51774d6d964da516af2def18b78f49dbbf519e58449a8ba4659",
401
+ riskModel: "0xdf89d66988cb506ddeff46f5dfd1d11aaece345e9a05a0c6a18a0788647de2a7",
402
+ borrowFeeKey: "0xda8f8b3522fc4086eae4ae7ce8844d60aa0dc3eab8ffc91fe93e922a72639b2d",
403
+ supplyLimitKey: "0xa9cb5ebb90ca6e808a2bd7728cca4a6fa8b565d4deeda96eb23c8322c477c24e",
404
+ borrowLimitKey: "0xa3278564fc613680a69c10972a0299965bf6e12e9ac171388842fc958de0f90e",
405
+ isolatedAssetKey: void 0,
406
+ spool: "0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",
407
+ spoolReward: "0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080"
354
408
  },
355
409
  sui: {
356
410
  lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
357
- collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb"
411
+ collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb",
412
+ borrowDynamic: "0xbf68e6159c99dcaf87717385f1143d2891c2d19663bd51f0bc9b6909e4bb7c27",
413
+ interestModel: "0x0dad9baa89b863c15a0487575de7cc428b01f1aa3998ad7a9e9752d96e83ffa9",
414
+ riskModel: "0xcd6675864690b5648a6e309f2f02a66914b2b2bd9c31936f4e0f7fc0f792bc86",
415
+ borrowFeeKey: "0xda5ede87a05c0677b17511c859b22d0a2b0229ee374d5d7a1274cb836b9fe5f8",
416
+ supplyLimitKey: "0x0602418e66fb7a73fa997077bd66f248ad5b090d43344a14b9f1db598ecc1d47",
417
+ borrowLimitKey: "0x2b33a7efdcf6a6df24f4d8a356dd52f58d75bc023c3f171d99502d4d008b53f0",
418
+ isolatedAssetKey: void 0,
419
+ spool: "0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",
420
+ spoolReward: "0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9"
358
421
  },
359
422
  wapt: {
360
423
  lendingPoolAddress: "0xca8c14a24e0c32b198eaf479a3317461e3cc339097ce88eaf296a15df8dcfdf5",
361
- collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c"
424
+ collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c",
425
+ borrowDynamic: "0xadda873fb6bf68e1ba3f2dfaa51cf75d4a1bef73d9627bd36e77d2baecb1f2dc",
426
+ interestModel: "0xa4a29d07beecea5eb0c59745bb89d7a1380c6f206a7f1ca37046e05db6025c43",
427
+ riskModel: "0x7ada83b473af30aed50d187de82a0912878b53ade7ac30e11ce23953cf739d84",
428
+ borrowFeeKey: "0x768735df587c7e0f141dcd035fbbcbf9d2149a7b23888baed4e2baa160fa2eeb",
429
+ supplyLimitKey: void 0,
430
+ borrowLimitKey: void 0,
431
+ isolatedAssetKey: void 0,
432
+ spool: void 0,
433
+ spoolReward: void 0
434
+ },
435
+ afsui: {
436
+ lendingPoolAddress: "0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",
437
+ collateralPoolAddress: "0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341",
438
+ borrowDynamic: "0x1c76d4df9506154a117bbac0f5e005d8a9c0d9ca60e3fe0c9d080006f6f54e81",
439
+ interestModel: "0xb155c536b37c9601baaa734ad1dd0ef335b2b597aceb8d3ecee41a43f94dcd70",
440
+ riskModel: "0x75371b1d04b5bebc0738af548ba64ea658e74f78228ec8014336d8eebb992312",
441
+ borrowFeeKey: "0xabc6422db2d4ee01635ddaeaa44ba68370eebd785d2c4632515f841ae9bc47d9",
442
+ supplyLimitKey: "0x61a2054eb37f543c0d774da57f2c9542aad8d79a197f748ac08ef5df6cc47028",
443
+ borrowLimitKey: "0x4459498a043872cd107ea917493fee0baf2d37a273c7538e1d6581cc61b92af8",
444
+ isolatedAssetKey: void 0,
445
+ spool: "0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",
446
+ spoolReward: "0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e"
362
447
  },
363
448
  wsol: {
364
449
  lendingPoolAddress: "0x985682c42984cdfb03f9ff7d8923344c2fe096b1ae4b82ea17721af19d22a21f",
365
- collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f"
450
+ collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f",
451
+ borrowDynamic: "0xe3f301e16d4f1273ea659dd82c5c3f124ca5a5883a5726c7ec0f77bf43b70895",
452
+ interestModel: "0xd95affaee077006b8dbb4b108c1b087e95fc6e5143ef0682da345d5b35bc6356",
453
+ riskModel: "0x8e0da6358073144ec3557400c87f04991ba3a13ca7e0d0a19daed45260b32f16",
454
+ borrowFeeKey: "0x604bffbc817e8e12db15f2373a9e15b2c7adbc510649cdf2cc62a594af90671c",
455
+ supplyLimitKey: "0xbd419b536b3f9c9d4adfc20372ca6feedc53cc31798ac860dbfc847bcf05f54b",
456
+ borrowLimitKey: "0x77d453c51948f32564c810bc73f9ba7abde880657b7f89e1c8a3bc28fa36ee87",
457
+ isolatedAssetKey: void 0,
458
+ spool: void 0,
459
+ spoolReward: void 0
366
460
  },
367
461
  cetus: {
368
462
  lendingPoolAddress: "0xc09858f60e74a1b671635bec4e8a2c84a0ff313eb87f525fba3258e88c6b6282",
369
- collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a"
370
- },
371
- afsui: {
372
- lendingPoolAddress: "0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",
373
- collateralPoolAddress: "0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341"
463
+ collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a",
464
+ borrowDynamic: "0xcc725fd5d71990cdccc7e16c88a2abde6dbcd0bf6e805ccc1c0cb83a106bbf4e",
465
+ interestModel: "0x2f1258aab89d04d11834121599ab1317dfecb582b4246f106df399911125845a",
466
+ riskModel: "0x03fed312dbba624dff5edaf4736891a1c7d864445fd268e7572b42ec7381132e",
467
+ borrowFeeKey: "0xdf5fb0cc4ebbf5eebfae23dfa5b266f6a58c18a894a13054ae60c0eb6e79c382",
468
+ supplyLimitKey: "0xa5ea3d4bf663d7bc667e82b40a98923590ff3851b9ea8e7afbc26c588c7007d3",
469
+ borrowLimitKey: "0xf44218a5f0feb128e6fbe74b91d1e7e9ef859bd23a576ff0de151829e015a157",
470
+ isolatedAssetKey: void 0,
471
+ spool: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
472
+ spoolReward: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"
374
473
  },
375
474
  hasui: {
376
475
  lendingPoolAddress: "0x7ebc607f6bdeb659fb6506cb91c5cc1d47bb365cfd5d2e637ea765346ec84ed4",
377
- collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d"
476
+ collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d",
477
+ borrowDynamic: "0x13ec1220b41c6e0f11dd6113199a2aff8e4cf2223047b5bd06d7a3ed5d23e1d2",
478
+ interestModel: "0x987c58cbe48096618f4d9d83e0bde2ff638ce4753aba40dab7c302ac3e4b4519",
479
+ riskModel: "0xe42d8497d423eca0d8df89850c2d77d3644e7f54a2d28f59c315903ea5ec8dec",
480
+ borrowFeeKey: "0xef885c382d461c4fb14d1f3b3758c380c78a1a4b2a3d2fafe6e8649a60fdd7ab",
481
+ supplyLimitKey: "0xc7385b1703693cbbc9c97227fe3fd5c91d7afda00e0da69d942c3260d78e45e0",
482
+ borrowLimitKey: "0x65333e606eead786a999c8267bc9886b0fdbc298a8a8635a48a9c9b8838d9395",
483
+ isolatedAssetKey: void 0,
484
+ spool: "0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",
485
+ spoolReward: "0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66"
378
486
  },
379
487
  vsui: {
380
488
  lendingPoolAddress: "0xda9257c0731d8822e8a438ebced13415850d705b779c79958dcf2aeb21fcb43d",
381
- collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e"
489
+ collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e",
490
+ borrowDynamic: "0x8eae703505246f975e83f5af24780e5f1b89ef403d5a80ea15534624d6f1a503",
491
+ interestModel: "0xaf6a52b5eaaa5af4d9e49d83de0d504c295ae21f3a37560c3f48e0e15a1d4625",
492
+ riskModel: "0x1e862f27a6bd47c3041159a5cf392f549485c6605ed9aa937f16ecc951e82e65",
493
+ borrowFeeKey: "0x5230de0f41a5e4c05b3d1187a90a9eeab491cec97b08b71512d9785e8af36aa6",
494
+ supplyLimitKey: "0x1d40e34d1f365ec431fff020bd75c16b14b340b3ed6c139803cc15c2384621b2",
495
+ borrowLimitKey: "0x4eb206b4417642cfc1b02f80bb5f5e366af2af2f9fb4ea4f4e898ae82367f8a0",
496
+ isolatedAssetKey: void 0,
497
+ spool: "0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",
498
+ spoolReward: "0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a"
382
499
  },
383
500
  sca: {
384
501
  lendingPoolAddress: "0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",
385
- collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31"
386
- },
387
- fud: {
388
- lendingPoolAddress: "0x14367ddca30e2860cb89ed4eaca20c7ece260c5d59dd9990d2c85a8321326acb"
502
+ collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31",
503
+ borrowDynamic: "0x4e24f52edd739dab59ca4c6353ca430b7ce57e7f333abd0957958570a7cd09ca",
504
+ interestModel: "0xbdcd48cf5b1a814911dc2d5c72d393a980c87820199fe5d799289ce94f4c47df",
505
+ riskModel: "0xc437c24b67b8e2676907700fa395af337ad6463d2c0b4f4fa2e9276414026089",
506
+ borrowFeeKey: "0xee55ba0f9800a62d9e7aef667f87e658258f41814d2c9fa02e25590671b4e5ad",
507
+ supplyLimitKey: "0x8dd938856b972a10ea27ecab2af7ed78e48fc5f6ccedaf2b2119959f747dc2e3",
508
+ borrowLimitKey: "0x04c7de61c5b42972f9bf6a8b1848e5fea2d037ee8deba81741ecd4a70aa80d30",
509
+ isolatedAssetKey: void 0,
510
+ spool: void 0,
511
+ spoolReward: void 0
389
512
  },
390
513
  deep: {
391
- lendingPoolAddress: "0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03"
514
+ lendingPoolAddress: "0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03",
515
+ collateralPoolAddress: void 0,
516
+ borrowDynamic: "0x95e00d7466f97a100e70f08bd37788dc49335796f6f49fab996d40dd0681c6d3",
517
+ interestModel: "0x4143c298506a332d92ea8a995e6f3991ee3215f58f6fc6441752835d275b9a69",
518
+ riskModel: void 0,
519
+ borrowFeeKey: "0xb14ee43f4ad2a2c40bac8c4406a401690e93c982e289cf3802fedf74a159cab2",
520
+ supplyLimitKey: "0x599528fdfdc253e90dfd0acf4f4a166b391e2aac1ca6528abbff63225b548fee",
521
+ borrowLimitKey: "0xf4217e8ef9d9c32e8992092e910a77535a8124c19b8a762a673f227f5f765a4e",
522
+ isolatedAssetKey: "0x208d3a24ba369dcfc8f0387333d1512b98199eb150d2f2a69359ff708cf761e3",
523
+ spool: void 0,
524
+ spoolReward: void 0
525
+ },
526
+ fud: {
527
+ lendingPoolAddress: "0xefed2cbe76b344792ac724523c8b2236740d1cea2100d46a0ed0dc760c7f4231",
528
+ collateralPoolAddress: void 0,
529
+ borrowDynamic: "0x14367ddca30e2860cb89ed4eaca20c7ece260c5d59dd9990d2c85a8321326acb",
530
+ interestModel: "0x2600ac100ef154eb2329ffd3aad47aca308ff9f9348de3e8e94aaeb906ec2303",
531
+ riskModel: void 0,
532
+ borrowFeeKey: "0xa87e8b26e07ff35ac9fb57adcc779be2883080fc7d12de2d9e7e16d8d8d5e529",
533
+ supplyLimitKey: "0xf98419aecc37a3c5de716f8ec590f8991a5be34da72ce1a2da09531ff45adf7d",
534
+ borrowLimitKey: "0x3d928a001c453c50004baa54e14b0a0e1b0907d9c613dfd76064fd7ed4e8beb8",
535
+ isolatedAssetKey: "0xfcb533e9e4e31f9c9f32d6cbf7fbb3425f1d60474e229a363a2dc7f835d587e2",
536
+ spool: void 0,
537
+ spoolReward: void 0
392
538
  }
393
539
  };
394
540
 
@@ -439,7 +585,11 @@ var queryKeys = {
439
585
  typeArgs: !typeArgs ? void 0 : JSON.stringify(typeArgs)
440
586
  }
441
587
  ],
442
- getObject: (objectId, walletAddress, options) => ["rpc", "getObject", { walletAddress, options, objectId }],
588
+ getObject: (objectId, options) => [
589
+ "rpc",
590
+ "getObject",
591
+ { options, objectId }
592
+ ],
443
593
  getObjects: (objectIds, walletAddress, options) => [
444
594
  "rpc",
445
595
  "getObjects",
@@ -973,7 +1123,7 @@ var TEST_ADDRESSES = {
973
1123
 
974
1124
  // src/constants/tokenBucket.ts
975
1125
  var DEFAULT_TOKENS_PER_INTERVAL = 10;
976
- var DEFAULT_INTERVAL_IN_MS = 50;
1126
+ var DEFAULT_INTERVAL_IN_MS = 250;
977
1127
 
978
1128
  // src/constants/vesca.ts
979
1129
  var UNLOCK_ROUND_DURATION = 60 * 60 * 24;
@@ -1120,7 +1270,10 @@ var parseOriginMarketPoolData = (originMarketPoolData) => {
1120
1270
  borrowRateOnMidKink: Number(originMarketPoolData.borrowRateOnMidKink.value) / 2 ** 32,
1121
1271
  highKink: Number(originMarketPoolData.highKink.value) / 2 ** 32,
1122
1272
  midKink: Number(originMarketPoolData.midKink.value) / 2 ** 32,
1123
- minBorrowAmount: Number(originMarketPoolData.minBorrowAmount)
1273
+ minBorrowAmount: Number(originMarketPoolData.minBorrowAmount),
1274
+ isIsolated: originMarketPoolData.isIsolated,
1275
+ supplyLimit: Number(originMarketPoolData.supplyLimit),
1276
+ borrowLimit: Number(originMarketPoolData.borrowLimit)
1124
1277
  };
1125
1278
  };
1126
1279
  var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
@@ -1172,6 +1325,7 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
1172
1325
  borrowApyOnHighKink: utils.parseAprToApy(borrowAprOnHighKink),
1173
1326
  borrowAprOnMidKink,
1174
1327
  borrowApyOnMidKink: utils.parseAprToApy(borrowAprOnMidKink),
1328
+ coinDecimal,
1175
1329
  maxBorrowApr,
1176
1330
  maxBorrowApy: utils.parseAprToApy(maxBorrowApr),
1177
1331
  borrowApr: Math.min(borrowApr, maxBorrowApr),
@@ -1190,17 +1344,21 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
1190
1344
  utilizationRate: utilizationRate.toNumber(),
1191
1345
  supplyApr: supplyApr.toNumber(),
1192
1346
  supplyApy: utils.parseAprToApy(supplyApr.toNumber()),
1193
- conversionRate: conversionRate.toNumber()
1347
+ conversionRate: conversionRate.toNumber(),
1348
+ isIsolated: parsedMarketPoolData.isIsolated,
1349
+ maxSupplyCoin: BigNumber(parsedMarketPoolData.supplyLimit).shiftedBy(coinDecimal).toNumber(),
1350
+ maxBorrowCoin: BigNumber(parsedMarketPoolData.borrowLimit).shiftedBy(coinDecimal).toNumber()
1194
1351
  };
1195
1352
  };
1196
1353
  var parseOriginMarketCollateralData = (originMarketCollateralData) => {
1197
1354
  const divisor = 2 ** 32;
1198
1355
  return {
1199
1356
  coinType: normalizeStructTag(originMarketCollateralData.type.name),
1357
+ isIsolated: originMarketCollateralData.isIsolated,
1200
1358
  collateralFactor: Number(originMarketCollateralData.collateralFactor.value) / divisor,
1201
1359
  liquidationFactor: Number(originMarketCollateralData.liquidationFactor.value) / divisor,
1202
1360
  liquidationDiscount: Number(originMarketCollateralData.liquidationDiscount.value) / divisor,
1203
- liquidationPanelty: Number(originMarketCollateralData.liquidationPanelty.value) / divisor,
1361
+ liquidationPenalty: Number(originMarketCollateralData.liquidationPenalty.value) / divisor,
1204
1362
  liquidationReserveFactor: Number(originMarketCollateralData.liquidationReserveFactor.value) / divisor,
1205
1363
  maxCollateralAmount: Number(originMarketCollateralData.maxCollateralAmount),
1206
1364
  totalCollateralAmount: Number(
@@ -1220,6 +1378,8 @@ var calculateMarketCollateralData = (utils, parsedMarketCollateralData) => {
1220
1378
  parsedMarketCollateralData.totalCollateralAmount
1221
1379
  ).shiftedBy(-1 * coinDecimal);
1222
1380
  return {
1381
+ coinDecimal,
1382
+ isIsolated: parsedMarketCollateralData.isIsolated,
1223
1383
  maxDepositAmount: parsedMarketCollateralData.maxCollateralAmount,
1224
1384
  maxDepositCoin: maxCollateralCoin.toNumber(),
1225
1385
  depositAmount: parsedMarketCollateralData.totalCollateralAmount,
@@ -1550,6 +1710,13 @@ var findClosestUnlockRound = (unlockAtInSecondTimestamp) => {
1550
1710
  }
1551
1711
  return Math.floor(closestTwelveAM.getTime() / 1e3);
1552
1712
  };
1713
+ var partitionArray = (array, chunkSize) => {
1714
+ const result = [];
1715
+ for (let i = 0; i < array.length; i += chunkSize) {
1716
+ result.push(array.slice(i, i + chunkSize));
1717
+ }
1718
+ return result;
1719
+ };
1553
1720
 
1554
1721
  // src/utils/tokenBucket.ts
1555
1722
  var TokenBucket = class {
@@ -1577,7 +1744,7 @@ var TokenBucket = class {
1577
1744
  return false;
1578
1745
  }
1579
1746
  };
1580
- var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor = 2) => {
1747
+ var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor = 1.25) => {
1581
1748
  let retries = 0;
1582
1749
  const tryRequest = async () => {
1583
1750
  if (tokenBucket.removeTokens(1)) {
@@ -1586,7 +1753,6 @@ var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVA
1586
1753
  } else if (retries < maxRetries) {
1587
1754
  retries++;
1588
1755
  const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
1589
- console.error(`Rate limit exceeded, retrying in ${delay} ms`);
1590
1756
  await new Promise((resolve) => setTimeout(resolve, delay));
1591
1757
  return tryRequest();
1592
1758
  } else {
@@ -1622,6 +1788,22 @@ function withIndexerFallback(method) {
1622
1788
  };
1623
1789
  }
1624
1790
 
1791
+ // src/utils/core.ts
1792
+ var parseObjectAs = (object) => {
1793
+ if (!(object && object.content && "fields" in object.content))
1794
+ throw new Error(`Failed to parse object`);
1795
+ const fields = object.content.fields;
1796
+ if (typeof fields === "object" && "value" in fields) {
1797
+ const value = fields.value;
1798
+ if (typeof value === "object" && "fields" in value)
1799
+ return value.fields;
1800
+ return value;
1801
+ } else if (typeof fields === "object") {
1802
+ return fields;
1803
+ }
1804
+ return fields;
1805
+ };
1806
+
1625
1807
  // src/models/scallopCache.ts
1626
1808
  var ScallopCache = class {
1627
1809
  constructor(suiKit, walletAddress, cacheOptions, tokenBucket, queryClient) {
@@ -1656,6 +1838,13 @@ var ScallopCache = class {
1656
1838
  })
1657
1839
  );
1658
1840
  }
1841
+ retryFn(errCount, e) {
1842
+ if (errCount === 5)
1843
+ return false;
1844
+ if (e.status === 429)
1845
+ return true;
1846
+ return false;
1847
+ }
1659
1848
  /**
1660
1849
  * @description Provides cache for inspectTxn of the SuiKit.
1661
1850
  * @param QueryInspectTxnParams
@@ -1668,9 +1857,17 @@ var ScallopCache = class {
1668
1857
  typeArgs
1669
1858
  }) {
1670
1859
  const txBlock = new SuiTxBlock();
1671
- txBlock.moveCall(queryTarget, args, typeArgs);
1860
+ const resolvedArgs = await Promise.all(
1861
+ args.map(async (arg) => {
1862
+ if (typeof arg === "string") {
1863
+ return (await this.queryGetObject(arg))?.data;
1864
+ }
1865
+ return arg;
1866
+ })
1867
+ );
1868
+ txBlock.moveCall(queryTarget, resolvedArgs, typeArgs);
1672
1869
  const query = await this.queryClient.fetchQuery({
1673
- retry: 5,
1870
+ retry: this.retryFn,
1674
1871
  retryDelay: 1e3,
1675
1872
  queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
1676
1873
  queryFn: async () => {
@@ -1690,9 +1887,9 @@ var ScallopCache = class {
1690
1887
  */
1691
1888
  async queryGetObject(objectId, options) {
1692
1889
  return this.queryClient.fetchQuery({
1693
- retry: 5,
1890
+ retry: this.retryFn,
1694
1891
  retryDelay: 1e3,
1695
- queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
1892
+ queryKey: queryKeys.rpc.getObject(objectId, options),
1696
1893
  queryFn: async () => {
1697
1894
  return await callWithRateLimit(
1698
1895
  this.tokenBucket,
@@ -1715,7 +1912,7 @@ var ScallopCache = class {
1715
1912
  if (objectIds.length === 0)
1716
1913
  return [];
1717
1914
  return this.queryClient.fetchQuery({
1718
- retry: 5,
1915
+ retry: this.retryFn,
1719
1916
  retryDelay: 1e3,
1720
1917
  queryKey: queryKeys.rpc.getObjects(
1721
1918
  objectIds,
@@ -1723,10 +1920,28 @@ var ScallopCache = class {
1723
1920
  options
1724
1921
  ),
1725
1922
  queryFn: async () => {
1726
- return await callWithRateLimit(
1923
+ const results = await callWithRateLimit(
1727
1924
  this.tokenBucket,
1728
1925
  async () => await this.suiKit.getObjects(objectIds, options)
1729
1926
  );
1927
+ if (results) {
1928
+ results.forEach((result) => {
1929
+ this.queryClient.setQueriesData(
1930
+ {
1931
+ exact: false,
1932
+ queryKey: queryKeys.rpc.getObject(result.objectId, options)
1933
+ },
1934
+ {
1935
+ data: result,
1936
+ error: null
1937
+ },
1938
+ {
1939
+ updatedAt: Date.now()
1940
+ }
1941
+ );
1942
+ });
1943
+ }
1944
+ return results;
1730
1945
  }
1731
1946
  });
1732
1947
  }
@@ -1737,7 +1952,7 @@ var ScallopCache = class {
1737
1952
  */
1738
1953
  async queryGetOwnedObjects(input) {
1739
1954
  return this.queryClient.fetchQuery({
1740
- retry: 5,
1955
+ retry: this.retryFn,
1741
1956
  retryDelay: 1e3,
1742
1957
  queryKey: queryKeys.rpc.getOwnedObjects(input),
1743
1958
  queryFn: async () => {
@@ -1750,7 +1965,7 @@ var ScallopCache = class {
1750
1965
  }
1751
1966
  async queryGetDynamicFields(input) {
1752
1967
  return this.queryClient.fetchQuery({
1753
- retry: 5,
1968
+ retry: this.retryFn,
1754
1969
  retryDelay: 1e3,
1755
1970
  queryKey: queryKeys.rpc.getDynamicFields(input),
1756
1971
  queryFn: async () => {
@@ -1763,7 +1978,7 @@ var ScallopCache = class {
1763
1978
  }
1764
1979
  async queryGetDynamicFieldObject(input) {
1765
1980
  return this.queryClient.fetchQuery({
1766
- retry: 5,
1981
+ retry: this.retryFn,
1767
1982
  retryDelay: (attemptIndex) => Math.min(1e3 * attemptIndex, 8e3),
1768
1983
  queryKey: queryKeys.rpc.getDynamicFieldObject(input),
1769
1984
  queryFn: async () => {
@@ -1776,7 +1991,7 @@ var ScallopCache = class {
1776
1991
  }
1777
1992
  async queryGetAllCoinBalances(owner) {
1778
1993
  return this.queryClient.fetchQuery({
1779
- retry: 5,
1994
+ retry: this.retryFn,
1780
1995
  retryDelay: 1e3,
1781
1996
  queryKey: queryKeys.rpc.getAllCoinBalances(owner),
1782
1997
  queryFn: async () => {
@@ -2495,7 +2710,7 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
2495
2710
  ...SUPPORT_BORROW_INCENTIVE_POOLS
2496
2711
  ], indexer = false, marketPools, coinPrices) => {
2497
2712
  const borrowIncentivePools = {};
2498
- marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices, indexer });
2713
+ marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices, indexer })).pools;
2499
2714
  coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools });
2500
2715
  if (indexer) {
2501
2716
  const borrowIncentivePoolsIndexer = await query.indexer.getBorrowIncentivePools();
@@ -2728,9 +2943,14 @@ var isolatedAssetZod = zod2.object({
2728
2943
  })
2729
2944
  });
2730
2945
  var isolatedAssetKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
2731
- var getIsolatedAssets = async (address) => {
2946
+ var getIsolatedAssets = async (query) => {
2947
+ if (SUPPORT_POOLS.every((t) => !!POOL_ADDRESSES[t])) {
2948
+ return SUPPORT_POOLS.filter(
2949
+ (t) => !!POOL_ADDRESSES[t]?.isolatedAssetKey && !!POOL_ADDRESSES[t]?.coinType
2950
+ ).map((t) => POOL_ADDRESSES[t]?.coinType);
2951
+ }
2732
2952
  try {
2733
- const marketObject = address.get("core.market");
2953
+ const marketObject = query.address.get("core.market");
2734
2954
  const isolatedAssets = [];
2735
2955
  if (!marketObject)
2736
2956
  return isolatedAssets;
@@ -2740,7 +2960,7 @@ var getIsolatedAssets = async (address) => {
2740
2960
  return dynamicField.name.type === isolatedAssetKeyType;
2741
2961
  };
2742
2962
  do {
2743
- const response = await address.cache.queryGetDynamicFields({
2963
+ const response = await query.cache.queryGetDynamicFields({
2744
2964
  parentId: marketObject,
2745
2965
  cursor: nextCursor,
2746
2966
  limit: 10
@@ -2763,32 +2983,30 @@ var getIsolatedAssets = async (address) => {
2763
2983
  }
2764
2984
  };
2765
2985
  var isIsolatedAsset = async (utils, coinName) => {
2766
- try {
2767
- const marketObject = utils.address.get("core.market");
2768
- const cachedData = utils.address.cache.queryClient.getQueryData([
2769
- "getDynamicFields",
2770
- marketObject
2771
- ]);
2772
- if (cachedData) {
2773
- const coinType2 = utils.parseCoinType(coinName);
2774
- return cachedData.includes(coinType2);
2986
+ if (POOL_ADDRESSES[coinName]) {
2987
+ return !!POOL_ADDRESSES[coinName].isolatedAssetKey;
2988
+ }
2989
+ const marketObject = utils.address.get("core.market");
2990
+ const cachedData = utils.address.cache.queryClient.getQueryData([
2991
+ "getDynamicFields",
2992
+ marketObject
2993
+ ]);
2994
+ if (cachedData) {
2995
+ const coinType2 = utils.parseCoinType(coinName);
2996
+ return cachedData.includes(coinType2);
2997
+ }
2998
+ const coinType = utils.parseCoinType(coinName).slice(2);
2999
+ const object = await utils.cache.queryGetDynamicFieldObject({
3000
+ parentId: marketObject,
3001
+ name: {
3002
+ type: isolatedAssetKeyType,
3003
+ value: coinType
2775
3004
  }
2776
- const coinType = utils.parseCoinType(coinName).slice(2);
2777
- const object = await utils.cache.queryGetDynamicFieldObject({
2778
- parentId: marketObject,
2779
- name: {
2780
- type: isolatedAssetKeyType,
2781
- value: coinType
2782
- }
2783
- });
2784
- const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
2785
- if (!parsedData.success)
2786
- return false;
2787
- return parsedData.data.fields.value;
2788
- } catch (e) {
2789
- console.error(e);
3005
+ });
3006
+ const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
3007
+ if (!parsedData.success)
2790
3008
  return false;
2791
- }
3009
+ return parsedData.data.fields.value;
2792
3010
  };
2793
3011
 
2794
3012
  // src/queries/borrowLimitQuery.ts
@@ -2831,6 +3049,17 @@ var getBorrowLimit = async (utils, poolName) => {
2831
3049
  }
2832
3050
  };
2833
3051
 
3052
+ // src/queries/objectsQuery.ts
3053
+ var queryMultipleObjects = async (cache, objectIds, options, partitionSize = 50) => {
3054
+ const objectIdsPartition = partitionArray(objectIds, partitionSize);
3055
+ const objects = [];
3056
+ for (const objectIds2 of objectIdsPartition) {
3057
+ const result = await cache.queryGetObjects(objectIds2, options);
3058
+ objects.push(...result);
3059
+ }
3060
+ return objects;
3061
+ };
3062
+
2834
3063
  // src/queries/coreQuery.ts
2835
3064
  var queryMarket = async (query, indexer = false, coinPrices) => {
2836
3065
  coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
@@ -2887,19 +3116,15 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2887
3116
  borrowRateOnMidKink: pool.borrowRateOnMidKink,
2888
3117
  highKink: pool.highKink,
2889
3118
  midKink: pool.midKink,
2890
- minBorrowAmount: pool.minBorrowAmount
3119
+ minBorrowAmount: pool.minBorrowAmount,
3120
+ isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3121
+ supplyLimit: await getSupplyLimit(query.utils, poolCoinName) ?? "0",
3122
+ borrowLimit: await getBorrowLimit(query.utils, poolCoinName) ?? "0"
2891
3123
  });
2892
3124
  const calculatedMarketPoolData = calculateMarketPoolData(
2893
3125
  query.utils,
2894
3126
  parsedMarketPoolData
2895
3127
  );
2896
- const coinDecimal = query.utils.getCoinDecimal(poolCoinName);
2897
- const maxSupplyCoin = BigNumber3(
2898
- await getSupplyLimit(query.utils, poolCoinName) ?? "0"
2899
- ).shiftedBy(-coinDecimal).toNumber();
2900
- const maxBorrowCoin = BigNumber3(
2901
- await getBorrowLimit(query.utils, poolCoinName) ?? "0"
2902
- ).shiftedBy(-coinDecimal).toNumber();
2903
3128
  pools[poolCoinName] = {
2904
3129
  coinName: poolCoinName,
2905
3130
  symbol: query.utils.parseSymbol(poolCoinName),
@@ -2909,7 +3134,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2909
3134
  query.utils.parseMarketCoinName(poolCoinName)
2910
3135
  ),
2911
3136
  coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
2912
- coinDecimal,
2913
3137
  coinPrice,
2914
3138
  highKink: parsedMarketPoolData.highKink,
2915
3139
  midKink: parsedMarketPoolData.midKink,
@@ -2918,10 +3142,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2918
3142
  borrowFee: parsedMarketPoolData.borrowFee,
2919
3143
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
2920
3144
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
2921
- isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2922
- // isIsolated: false,
2923
- maxSupplyCoin,
2924
- maxBorrowCoin,
2925
3145
  ...calculatedMarketPoolData
2926
3146
  };
2927
3147
  }
@@ -2937,10 +3157,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2937
3157
  collateralFactor: collateral.collateralFactor,
2938
3158
  liquidationFactor: collateral.liquidationFactor,
2939
3159
  liquidationDiscount: collateral.liquidationDiscount,
2940
- liquidationPanelty: collateral.liquidationPanelty,
3160
+ liquidationPenalty: collateral.liquidationPanelty,
2941
3161
  liquidationReserveFactor: collateral.liquidationReserveFactor,
2942
3162
  maxCollateralAmount: collateral.maxCollateralAmount,
2943
- totalCollateralAmount: collateral.totalCollateralAmount
3163
+ totalCollateralAmount: collateral.totalCollateralAmount,
3164
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
2944
3165
  });
2945
3166
  const calculatedMarketCollateralData = calculateMarketCollateralData(
2946
3167
  query.utils,
@@ -2952,14 +3173,12 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2952
3173
  coinType,
2953
3174
  marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
2954
3175
  coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
2955
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
2956
3176
  coinPrice,
2957
3177
  collateralFactor: parsedMarketCollateralData.collateralFactor,
2958
3178
  liquidationFactor: parsedMarketCollateralData.liquidationFactor,
2959
3179
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
2960
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3180
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
2961
3181
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
2962
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
2963
3182
  ...calculatedMarketCollateralData
2964
3183
  };
2965
3184
  }
@@ -2969,44 +3188,216 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2969
3188
  // data: marketData,
2970
3189
  };
2971
3190
  };
2972
- var getMarketPools = async (query, poolCoinNames = [...SUPPORT_POOLS], indexer = false, coinPrices) => {
2973
- const marketId = query.address.get("core.market");
2974
- const marketObjectResponse = await query.cache.queryGetObject(marketId, {
2975
- showContent: true
2976
- });
3191
+ var queryRequiredMarketObjects = async (query, poolCoinNames) => {
3192
+ const tasks = poolCoinNames.map((t) => ({
3193
+ poolCoinName: t,
3194
+ balanceSheet: POOL_ADDRESSES[t]?.lendingPoolAddress,
3195
+ collateralStat: POOL_ADDRESSES[t]?.collateralPoolAddress,
3196
+ borrowDynamic: POOL_ADDRESSES[t]?.borrowDynamic,
3197
+ interestModel: POOL_ADDRESSES[t]?.interestModel,
3198
+ riskModel: POOL_ADDRESSES[t]?.riskModel,
3199
+ borrowFeeKey: POOL_ADDRESSES[t]?.borrowFeeKey,
3200
+ supplyLimitKey: POOL_ADDRESSES[t]?.supplyLimitKey,
3201
+ borrowLimitKey: POOL_ADDRESSES[t]?.borrowLimitKey,
3202
+ isolatedAssetKey: POOL_ADDRESSES[t]?.isolatedAssetKey
3203
+ }));
3204
+ const [
3205
+ balanceSheetObjects,
3206
+ collateralStatObjects,
3207
+ borrowDynamicObjects,
3208
+ interestModelObjects,
3209
+ riskModelObjects,
3210
+ borrowFeeObjects,
3211
+ supplyLimitObjects,
3212
+ borrowLimitObjects,
3213
+ isolatedAssetObjects
3214
+ ] = await Promise.all([
3215
+ queryMultipleObjects(
3216
+ query.cache,
3217
+ tasks.map((task) => task.balanceSheet).filter((t) => !!t)
3218
+ ),
3219
+ queryMultipleObjects(
3220
+ query.cache,
3221
+ tasks.map((task) => task.collateralStat).filter((t) => !!t)
3222
+ ),
3223
+ queryMultipleObjects(
3224
+ query.cache,
3225
+ tasks.map((task) => task.borrowDynamic).filter((t) => !!t)
3226
+ ),
3227
+ queryMultipleObjects(
3228
+ query.cache,
3229
+ tasks.map((task) => task.interestModel).filter((t) => !!t)
3230
+ ),
3231
+ queryMultipleObjects(
3232
+ query.cache,
3233
+ tasks.map((task) => task.riskModel).filter((t) => !!t)
3234
+ ),
3235
+ queryMultipleObjects(
3236
+ query.cache,
3237
+ tasks.map((task) => task.borrowFeeKey).filter((t) => !!t)
3238
+ ),
3239
+ queryMultipleObjects(
3240
+ query.cache,
3241
+ tasks.map((task) => task.supplyLimitKey).filter((t) => !!t)
3242
+ ),
3243
+ queryMultipleObjects(
3244
+ query.cache,
3245
+ tasks.map((task) => task.borrowLimitKey).filter((t) => !!t)
3246
+ ),
3247
+ queryMultipleObjects(
3248
+ query.cache,
3249
+ tasks.map((task) => task.isolatedAssetKey).filter((t) => !!t)
3250
+ )
3251
+ ]);
3252
+ const mapObjects = (tasks2, fetchedObjects) => {
3253
+ const resultMap = {};
3254
+ let fetchedIndex = 0;
3255
+ for (const task of tasks2) {
3256
+ const key = task[Object.keys(task)[1]];
3257
+ if (key) {
3258
+ resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
3259
+ fetchedIndex++;
3260
+ }
3261
+ }
3262
+ return resultMap;
3263
+ };
3264
+ const balanceSheetMap = mapObjects(tasks, balanceSheetObjects);
3265
+ const collateralStatMap = mapObjects(tasks, collateralStatObjects);
3266
+ const borrowDynamicMap = mapObjects(tasks, borrowDynamicObjects);
3267
+ const interestModelMap = mapObjects(tasks, interestModelObjects);
3268
+ const riskModelMap = mapObjects(tasks, riskModelObjects);
3269
+ const borrowFeeMap = mapObjects(tasks, borrowFeeObjects);
3270
+ const supplyLimitMap = mapObjects(tasks, supplyLimitObjects);
3271
+ const borrowLimitMap = mapObjects(tasks, borrowLimitObjects);
3272
+ const isolatedAssetMap = mapObjects(tasks, isolatedAssetObjects);
3273
+ return poolCoinNames.reduce(
3274
+ (acc, name) => {
3275
+ acc[name] = {
3276
+ balanceSheet: balanceSheetMap[name],
3277
+ collateralStat: collateralStatMap[name],
3278
+ borrowDynamic: borrowDynamicMap[name],
3279
+ interestModel: interestModelMap[name],
3280
+ riskModel: riskModelMap[name],
3281
+ borrowFeeKey: borrowFeeMap[name],
3282
+ supplyLimitKey: supplyLimitMap[name],
3283
+ borrowLimitKey: borrowLimitMap[name],
3284
+ isolatedAssetKey: isolatedAssetMap[name]
3285
+ };
3286
+ return acc;
3287
+ },
3288
+ {}
3289
+ );
3290
+ };
3291
+ var getMarketPools = async (query, poolCoinNames, indexer = false, coinPrices) => {
2977
3292
  coinPrices = coinPrices ?? await query.utils.getCoinPrices();
2978
- const marketPools = {};
3293
+ const pools = {};
3294
+ const collaterals = {};
2979
3295
  if (indexer) {
2980
- const marketPoolsIndexer = await query.indexer.getMarketPools();
2981
- const updateMarketPool = (marketPool) => {
2982
- if (!poolCoinNames.includes(marketPool.coinName))
2983
- return;
2984
- marketPool.coinPrice = coinPrices[marketPool.coinName] ?? marketPool.coinPrice;
2985
- marketPool.coinWrappedType = query.utils.getCoinWrappedType(
2986
- marketPool.coinName
2987
- );
2988
- marketPools[marketPool.coinName] = marketPool;
3296
+ const marketIndexer = await query.indexer.getMarket();
3297
+ const updatePools = (item) => {
3298
+ item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
3299
+ item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
3300
+ pools[item.coinName] = item;
3301
+ };
3302
+ const updateCollaterals = (item) => {
3303
+ item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
3304
+ item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
3305
+ collaterals[item.coinName] = item;
3306
+ };
3307
+ Object.values(marketIndexer.pools).forEach(updatePools);
3308
+ Object.values(marketIndexer.collaterals).forEach(updateCollaterals);
3309
+ return {
3310
+ pools,
3311
+ collaterals
2989
3312
  };
2990
- Object.values(marketPoolsIndexer).forEach(updateMarketPool);
2991
- return marketPools;
2992
3313
  }
3314
+ const requiredObjects = await queryRequiredMarketObjects(
3315
+ query,
3316
+ poolCoinNames
3317
+ );
2993
3318
  await Promise.allSettled(
2994
3319
  poolCoinNames.map(async (poolCoinName) => {
2995
- const marketPool = await getMarketPool(
2996
- query,
2997
- poolCoinName,
2998
- indexer,
2999
- marketObjectResponse?.data,
3000
- coinPrices?.[poolCoinName]
3001
- );
3002
- if (marketPool) {
3003
- marketPools[poolCoinName] = marketPool;
3320
+ try {
3321
+ const result = await getMarketPool(
3322
+ query,
3323
+ poolCoinName,
3324
+ indexer,
3325
+ coinPrices?.[poolCoinName] ?? 0,
3326
+ requiredObjects[poolCoinName]
3327
+ );
3328
+ if (result?.marketPool) {
3329
+ pools[poolCoinName] = result?.marketPool;
3330
+ }
3331
+ if (result?.collateral) {
3332
+ collaterals[poolCoinName] = result.collateral;
3333
+ }
3334
+ } catch (e) {
3335
+ console.error(e);
3004
3336
  }
3005
3337
  })
3006
3338
  );
3007
- return marketPools;
3339
+ return {
3340
+ pools,
3341
+ collaterals
3342
+ };
3008
3343
  };
3009
- var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
3344
+ var parseMarketPoolObjects = ({
3345
+ balanceSheet,
3346
+ borrowDynamic,
3347
+ collateralStat,
3348
+ interestModel,
3349
+ riskModel,
3350
+ borrowFeeKey,
3351
+ supplyLimitKey,
3352
+ borrowLimitKey,
3353
+ isolatedAssetKey
3354
+ }) => {
3355
+ const _balanceSheet = parseObjectAs(balanceSheet);
3356
+ const _interestModel = parseObjectAs(interestModel);
3357
+ const _borrowDynamic = parseObjectAs(borrowDynamic);
3358
+ const _borrowFee = parseObjectAs(borrowFeeKey);
3359
+ const _supplyLimit = supplyLimitKey ? parseObjectAs(supplyLimitKey) : "0";
3360
+ const _borrowLimit = borrowLimitKey ? parseObjectAs(borrowLimitKey) : "0";
3361
+ const _riskModel = riskModel ? parseObjectAs(riskModel) : void 0;
3362
+ const _collateralStat = collateralStat ? parseObjectAs(collateralStat) : void 0;
3363
+ const parsedOriginMarketCollateral = _riskModel && _collateralStat ? {
3364
+ type: _interestModel.type.fields,
3365
+ isIsolated: !!isolatedAssetKey,
3366
+ collateralFactor: _riskModel.collateral_factor.fields,
3367
+ liquidationFactor: _riskModel.liquidation_factor.fields,
3368
+ liquidationPenalty: _riskModel.liquidation_penalty.fields,
3369
+ liquidationDiscount: _riskModel.liquidation_discount.fields,
3370
+ liquidationReserveFactor: _riskModel.liquidation_revenue_factor.fields,
3371
+ maxCollateralAmount: _riskModel.max_collateral_amount,
3372
+ totalCollateralAmount: _collateralStat.amount
3373
+ } : void 0;
3374
+ return {
3375
+ type: _interestModel.type.fields,
3376
+ maxBorrowRate: _interestModel.max_borrow_rate.fields,
3377
+ interestRate: _borrowDynamic.interest_rate.fields,
3378
+ interestRateScale: _borrowDynamic.interest_rate_scale,
3379
+ borrowIndex: _borrowDynamic.borrow_index,
3380
+ lastUpdated: _borrowDynamic.last_updated,
3381
+ cash: _balanceSheet.cash,
3382
+ debt: _balanceSheet.debt,
3383
+ marketCoinSupply: _balanceSheet.market_coin_supply,
3384
+ reserve: _balanceSheet.revenue,
3385
+ reserveFactor: _interestModel.revenue_factor.fields,
3386
+ borrowWeight: _interestModel.borrow_weight.fields,
3387
+ borrowFeeRate: _borrowFee,
3388
+ baseBorrowRatePerSec: _interestModel.base_borrow_rate_per_sec.fields,
3389
+ borrowRateOnHighKink: _interestModel.borrow_rate_on_high_kink.fields,
3390
+ borrowRateOnMidKink: _interestModel.borrow_rate_on_mid_kink.fields,
3391
+ highKink: _interestModel.high_kink.fields,
3392
+ midKink: _interestModel.mid_kink.fields,
3393
+ minBorrowAmount: _interestModel.min_borrow_amount,
3394
+ isIsolated: !!isolatedAssetKey,
3395
+ supplyLimit: _supplyLimit,
3396
+ borrowLimit: _borrowLimit,
3397
+ parsedOriginMarketCollateral
3398
+ };
3399
+ };
3400
+ var getMarketPool = async (query, poolCoinName, indexer = false, coinPrice, requiredObjects) => {
3010
3401
  coinPrice = coinPrice ?? (await query.utils.getCoinPrices())?.[poolCoinName];
3011
3402
  if (indexer) {
3012
3403
  const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
@@ -3017,135 +3408,70 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
3017
3408
  marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
3018
3409
  marketPoolIndexer.coinName
3019
3410
  );
3020
- return marketPoolIndexer;
3021
- }
3022
- const marketId = query.address.get("core.market");
3023
- marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
3024
- showContent: true
3025
- }))?.data;
3026
- if (!(marketObject && marketObject.content?.dataType === "moveObject"))
3027
- throw new Error(`Failed to fetch marketObject`);
3028
- const fields = marketObject.content.fields;
3029
- const coinType = query.utils.parseCoinType(poolCoinName);
3030
- const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
3031
- const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3032
- parentId: balanceSheetParentId,
3033
- name: {
3034
- type: "0x1::type_name::TypeName",
3035
- value: {
3036
- name: coinType.substring(2)
3037
- }
3038
- }
3039
- });
3040
- const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
3041
- if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
3042
- throw new Error(
3043
- `Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
3044
- );
3045
- const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
3046
- const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
3047
- const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3048
- parentId: borrowIndexParentId,
3049
- name: {
3050
- type: "0x1::type_name::TypeName",
3051
- value: {
3052
- name: coinType.substring(2)
3053
- }
3054
- }
3055
- });
3056
- const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
3057
- if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
3058
- throw new Error(
3059
- `Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
3060
- );
3061
- const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
3062
- const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
3063
- const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3064
- parentId: interestModelParentId,
3065
- name: {
3066
- type: "0x1::type_name::TypeName",
3067
- value: {
3068
- name: coinType.substring(2)
3069
- }
3411
+ let marketCollateralIndexer = void 0;
3412
+ if (SUPPORT_COLLATERALS.includes(poolCoinName)) {
3413
+ marketCollateralIndexer = await query.indexer.getMarketCollateral(
3414
+ poolCoinName
3415
+ );
3416
+ marketCollateralIndexer.coinPrice = coinPrice ?? marketCollateralIndexer.coinPrice;
3417
+ marketCollateralIndexer.coinWrappedType = query.utils.getCoinWrappedType(
3418
+ marketCollateralIndexer.coinName
3419
+ );
3070
3420
  }
3071
- });
3072
- const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse?.data;
3073
- if (!(interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content))
3074
- throw new Error(
3075
- `Failed to fetch interestModelDynamicFieldObject for ${poolCoinName}: ${interestModelDynamicFieldObject}`
3076
- );
3077
- const interestModel = interestModelDynamicFieldObject.content.fields.value.fields;
3078
- const getBorrowFee = async () => {
3079
- const borrowFeeDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3080
- parentId: marketId,
3081
- name: {
3082
- type: `${BORROW_FEE_PROTOCOL_ID}::market_dynamic_keys::BorrowFeeKey`,
3083
- value: {
3084
- type: {
3085
- name: coinType.substring(2)
3086
- }
3087
- }
3088
- }
3089
- });
3090
- const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
3091
- if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
3092
- return { value: "0" };
3093
- return borrowFeeDynamicFieldObject.content.fields.value.fields;
3094
- };
3095
- const parsedMarketPoolData = parseOriginMarketPoolData({
3096
- type: interestModel.type.fields,
3097
- maxBorrowRate: interestModel.max_borrow_rate.fields,
3098
- interestRate: borrowIndex.interest_rate.fields,
3099
- interestRateScale: borrowIndex.interest_rate_scale,
3100
- borrowIndex: borrowIndex.borrow_index,
3101
- lastUpdated: borrowIndex.last_updated,
3102
- cash: balanceSheet.cash,
3103
- debt: balanceSheet.debt,
3104
- marketCoinSupply: balanceSheet.market_coin_supply,
3105
- reserve: balanceSheet.revenue,
3106
- reserveFactor: interestModel.revenue_factor.fields,
3107
- borrowWeight: interestModel.borrow_weight.fields,
3108
- borrowFeeRate: await getBorrowFee(),
3109
- baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
3110
- borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
3111
- borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
3112
- highKink: interestModel.high_kink.fields,
3113
- midKink: interestModel.mid_kink.fields,
3114
- minBorrowAmount: interestModel.min_borrow_amount
3115
- });
3421
+ return {
3422
+ marketPool: marketPoolIndexer,
3423
+ collateral: marketCollateralIndexer
3424
+ };
3425
+ }
3426
+ requiredObjects ?? (requiredObjects = (await queryRequiredMarketObjects(query, [poolCoinName]))[poolCoinName]);
3427
+ const parsedMarketPoolObjects = parseMarketPoolObjects(requiredObjects);
3428
+ const parsedMarketPoolData = parseOriginMarketPoolData(
3429
+ parsedMarketPoolObjects
3430
+ );
3116
3431
  const calculatedMarketPoolData = calculateMarketPoolData(
3117
3432
  query.utils,
3118
3433
  parsedMarketPoolData
3119
3434
  );
3120
- const coinDecimal = query.utils.getCoinDecimal(poolCoinName);
3121
- const maxSupplyCoin = BigNumber3(
3122
- await getSupplyLimit(query.utils, poolCoinName) ?? "0"
3123
- ).shiftedBy(-coinDecimal).toNumber();
3124
- const maxBorrowCoin = BigNumber3(
3125
- await getBorrowLimit(query.utils, poolCoinName) ?? "0"
3126
- ).shiftedBy(-coinDecimal).toNumber();
3127
- return {
3435
+ const parsedMarketCollateralData = parsedMarketPoolObjects.parsedOriginMarketCollateral ? parseOriginMarketCollateralData(
3436
+ parsedMarketPoolObjects.parsedOriginMarketCollateral
3437
+ ) : void 0;
3438
+ const basePoolData = () => ({
3128
3439
  coinName: poolCoinName,
3129
3440
  symbol: query.utils.parseSymbol(poolCoinName),
3130
- coinType: query.utils.parseCoinType(poolCoinName),
3131
3441
  marketCoinType: query.utils.parseMarketCoinType(poolCoinName),
3132
- sCoinType: query.utils.parseSCoinType(
3133
- query.utils.parseMarketCoinName(poolCoinName)
3134
- ),
3135
- coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3136
- coinDecimal,
3137
- coinPrice: coinPrice ?? 0,
3138
- highKink: parsedMarketPoolData.highKink,
3139
- midKink: parsedMarketPoolData.midKink,
3140
- reserveFactor: parsedMarketPoolData.reserveFactor,
3141
- borrowWeight: parsedMarketPoolData.borrowWeight,
3142
- borrowFee: parsedMarketPoolData.borrowFee,
3143
- marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
3144
- minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
3145
- maxSupplyCoin,
3146
- maxBorrowCoin,
3147
- isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3148
- ...calculatedMarketPoolData
3442
+ coinType: query.utils.parseCoinType(poolCoinName)
3443
+ });
3444
+ return {
3445
+ marketPool: {
3446
+ ...basePoolData(),
3447
+ sCoinType: query.utils.parseSCoinType(
3448
+ query.utils.parseMarketCoinName(poolCoinName)
3449
+ ),
3450
+ coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3451
+ coinPrice: coinPrice ?? 0,
3452
+ highKink: parsedMarketPoolData.highKink,
3453
+ midKink: parsedMarketPoolData.midKink,
3454
+ reserveFactor: parsedMarketPoolData.reserveFactor,
3455
+ borrowWeight: parsedMarketPoolData.borrowWeight,
3456
+ borrowFee: parsedMarketPoolData.borrowFee,
3457
+ marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
3458
+ minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
3459
+ ...calculatedMarketPoolData
3460
+ },
3461
+ collateral: parsedMarketCollateralData ? {
3462
+ ...basePoolData(),
3463
+ coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3464
+ coinPrice,
3465
+ collateralFactor: parsedMarketCollateralData.collateralFactor,
3466
+ liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3467
+ liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3468
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
3469
+ liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3470
+ ...calculateMarketCollateralData(
3471
+ query.utils,
3472
+ parsedMarketCollateralData
3473
+ )
3474
+ } : void 0
3149
3475
  };
3150
3476
  };
3151
3477
  var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
@@ -3240,10 +3566,11 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
3240
3566
  collateralFactor: riskModel.collateral_factor.fields,
3241
3567
  liquidationFactor: riskModel.liquidation_factor.fields,
3242
3568
  liquidationDiscount: riskModel.liquidation_discount.fields,
3243
- liquidationPanelty: riskModel.liquidation_penalty.fields,
3569
+ liquidationPenalty: riskModel.liquidation_penalty.fields,
3244
3570
  liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
3245
3571
  maxCollateralAmount: riskModel.max_collateral_amount,
3246
- totalCollateralAmount: collateralStat.amount
3572
+ totalCollateralAmount: collateralStat.amount,
3573
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
3247
3574
  });
3248
3575
  const calculatedMarketCollateralData = calculateMarketCollateralData(
3249
3576
  query.utils,
@@ -3255,14 +3582,12 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
3255
3582
  coinType: query.utils.parseCoinType(collateralCoinName),
3256
3583
  marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
3257
3584
  coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
3258
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
3259
3585
  coinPrice: coinPrice ?? 0,
3260
3586
  collateralFactor: parsedMarketCollateralData.collateralFactor,
3261
3587
  liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3262
3588
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3263
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3589
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
3264
3590
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3265
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
3266
3591
  ...calculatedMarketCollateralData
3267
3592
  };
3268
3593
  };
@@ -3503,10 +3828,10 @@ var getLendings = async (query, poolCoinNames = [...SUPPORT_POOLS], ownerAddress
3503
3828
  (marketCoinName) => SUPPORT_SPOOLS.includes(marketCoinName)
3504
3829
  );
3505
3830
  const coinPrices = await query.utils.getCoinPrices();
3506
- const marketPools = await query.getMarketPools(poolCoinNames, {
3831
+ const marketPools = (await query.getMarketPools(poolCoinNames, {
3507
3832
  indexer,
3508
3833
  coinPrices
3509
- });
3834
+ })).pools;
3510
3835
  const spools = await query.getSpools(stakeMarketCoinNames, {
3511
3836
  indexer,
3512
3837
  marketPools,
@@ -3675,7 +4000,7 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
3675
4000
  };
3676
4001
  var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
3677
4002
  const coinPrices = await query.utils.getCoinPrices();
3678
- const market = await query.queryMarket({ indexer, coinPrices });
4003
+ const market = await query.getMarketPools(void 0, { coinPrices, indexer });
3679
4004
  const [coinAmounts, obligations] = await Promise.all([
3680
4005
  query.getCoinAmounts(void 0, ownerAddress),
3681
4006
  query.getObligations(ownerAddress)
@@ -3703,7 +4028,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
3703
4028
  const collateralAssetCoinNames = [
3704
4029
  ...SUPPORT_COLLATERALS
3705
4030
  ];
3706
- market = market ?? await query.queryMarket({ indexer });
4031
+ market = market ?? await query.getMarketPools(void 0, { indexer });
3707
4032
  coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools: market.pools });
3708
4033
  coinAmounts = coinAmounts || await query.getCoinAmounts(coinNames, ownerAddress);
3709
4034
  const [obligationQuery, borrowIncentivePools, borrowIncentiveAccounts] = await Promise.all([
@@ -3994,7 +4319,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
3994
4319
  return obligationAccount;
3995
4320
  };
3996
4321
  var getTotalValueLocked = async (query, indexer = false) => {
3997
- const market = await query.queryMarket({ indexer });
4322
+ const market = await query.getMarketPools(void 0, { indexer });
3998
4323
  let supplyValue = BigNumber5(0);
3999
4324
  let borrowValue = BigNumber5(0);
4000
4325
  if (indexer) {
@@ -4115,7 +4440,7 @@ var getPythPrices = async ({
4115
4440
  };
4116
4441
  var getAllCoinPrices = async (query, marketPools, coinPrices) => {
4117
4442
  coinPrices = coinPrices ?? await query.utils.getCoinPrices();
4118
- marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices });
4443
+ marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices })).pools;
4119
4444
  if (!marketPools) {
4120
4445
  throw new Error(`Failed to fetch market pool for getAllCoinPrices`);
4121
4446
  }
@@ -4241,12 +4566,80 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
4241
4566
 
4242
4567
  // src/queries/spoolQuery.ts
4243
4568
  import { normalizeStructTag as normalizeStructTag5 } from "@mysten/sui/utils";
4569
+ var queryRequiredSpoolObjects = async (query, stakePoolCoinNames) => {
4570
+ const tasks = stakePoolCoinNames.map((t, idx) => ({
4571
+ poolCoinName: stakePoolCoinNames[idx],
4572
+ spool: POOL_ADDRESSES[t]?.spool,
4573
+ spoolReward: POOL_ADDRESSES[t]?.spoolReward,
4574
+ sCoinTreasury: POOL_ADDRESSES[t]?.sCoinTreasury
4575
+ }));
4576
+ const [spoolObjects, spoolRewardObjects, sCoinTreasuryObjects] = await Promise.all([
4577
+ queryMultipleObjects(
4578
+ query.cache,
4579
+ tasks.map((task) => task.spool).filter((t) => !!t)
4580
+ ),
4581
+ queryMultipleObjects(
4582
+ query.cache,
4583
+ tasks.map((task) => task.spoolReward).filter((t) => !!t)
4584
+ ),
4585
+ queryMultipleObjects(
4586
+ query.cache,
4587
+ tasks.map((task) => task.sCoinTreasury).filter((t) => !!t)
4588
+ )
4589
+ ]);
4590
+ const mapObjects = (tasks2, fetchedObjects) => {
4591
+ const resultMap = {};
4592
+ let fetchedIndex = 0;
4593
+ for (const task of tasks2) {
4594
+ const key = task[Object.keys(task)[1]];
4595
+ if (key) {
4596
+ resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
4597
+ fetchedIndex++;
4598
+ }
4599
+ }
4600
+ return resultMap;
4601
+ };
4602
+ const spoolMap = mapObjects(tasks, spoolObjects);
4603
+ const spoolRewardMap = mapObjects(tasks, spoolRewardObjects);
4604
+ const sCoinTreasuryMap = mapObjects(tasks, sCoinTreasuryObjects);
4605
+ return stakePoolCoinNames.reduce(
4606
+ (acc, name) => {
4607
+ acc[name] = {
4608
+ spool: spoolMap[name],
4609
+ spoolReward: spoolRewardMap[name],
4610
+ sCoinTreasury: sCoinTreasuryMap[name]
4611
+ };
4612
+ return acc;
4613
+ },
4614
+ {}
4615
+ );
4616
+ };
4617
+ var parseSpoolObjects = ({
4618
+ spool,
4619
+ spoolReward
4620
+ }) => {
4621
+ const _spool = parseObjectAs(spool);
4622
+ const _spoolReward = parseObjectAs(spoolReward);
4623
+ return {
4624
+ stakeType: _spool.stake_type,
4625
+ maxDistributedPoint: _spool.max_distributed_point,
4626
+ distributedPoint: _spool.distributed_point,
4627
+ distributedPointPerPeriod: _spool.distributed_point_per_period,
4628
+ pointDistributionTime: _spool.point_distribution_time,
4629
+ maxStake: _spool.max_stakes,
4630
+ stakes: _spool.stakes,
4631
+ index: _spool.index,
4632
+ createdAt: _spool.created_at,
4633
+ lastUpdate: _spool.last_update,
4634
+ ..._spoolReward
4635
+ };
4636
+ };
4244
4637
  var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexer = false, marketPools, coinPrices) => {
4245
4638
  const stakeCoinNames = stakeMarketCoinNames.map(
4246
4639
  (stakeMarketCoinName) => query.utils.parseCoinName(stakeMarketCoinName)
4247
4640
  );
4248
- coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
4249
- marketPools = marketPools ?? await query.getMarketPools(stakeCoinNames, { indexer });
4641
+ marketPools = marketPools ?? (await query.getMarketPools(stakeCoinNames, { indexer })).pools;
4642
+ coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools }) ?? {};
4250
4643
  if (!marketPools)
4251
4644
  throw new Error(`Fail to fetch marketPools for ${stakeCoinNames}`);
4252
4645
  const spools = {};
@@ -4261,126 +4654,93 @@ var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexe
4261
4654
  const rewardCoinName = query.utils.getSpoolRewardCoinName(
4262
4655
  spool.marketCoinName
4263
4656
  );
4264
- const marketPool = marketPools[coinName];
4265
4657
  spool.coinPrice = coinPrices[coinName] ?? spool.coinPrice;
4266
- spool.marketCoinPrice = coinPrices[coinName] ? (coinPrices[coinName] ?? 0) * (marketPool ? marketPool.conversionRate : 0) : spool.marketCoinPrice;
4658
+ spool.marketCoinPrice = coinPrices[spool.marketCoinName] ?? spool.marketCoinPrice;
4267
4659
  spool.rewardCoinPrice = coinPrices[rewardCoinName] ?? spool.rewardCoinPrice;
4268
4660
  spools[spool.marketCoinName] = spool;
4269
4661
  };
4270
4662
  Object.values(spoolsIndexer).forEach(updateSpools);
4271
4663
  return spools;
4272
4664
  }
4273
- for (const stakeMarketCoinName of stakeMarketCoinNames) {
4274
- const stakeCoinName = query.utils.parseCoinName(stakeMarketCoinName);
4275
- const spool = await getSpool(
4276
- query,
4277
- stakeMarketCoinName,
4278
- indexer,
4279
- marketPools[stakeCoinName],
4280
- coinPrices
4281
- );
4282
- if (spool) {
4283
- spools[stakeMarketCoinName] = spool;
4284
- }
4285
- }
4665
+ const requiredObjects = await queryRequiredSpoolObjects(
4666
+ query,
4667
+ stakeCoinNames
4668
+ );
4669
+ await Promise.allSettled(
4670
+ stakeMarketCoinNames.map(async (stakeMarketCoinName, idx) => {
4671
+ try {
4672
+ const stakeCoinName = stakeCoinNames[idx];
4673
+ const spool = await getSpool(
4674
+ query,
4675
+ stakeMarketCoinName,
4676
+ indexer,
4677
+ coinPrices,
4678
+ requiredObjects[stakeCoinName]
4679
+ );
4680
+ if (spool) {
4681
+ spools[stakeMarketCoinName] = spool;
4682
+ }
4683
+ } catch (e) {
4684
+ console.error(e);
4685
+ }
4686
+ })
4687
+ );
4286
4688
  return spools;
4287
4689
  };
4288
- var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPrices) => {
4690
+ var getSpool = async (query, marketCoinName, indexer = false, coinPrices, requiredObjects) => {
4289
4691
  const coinName = query.utils.parseCoinName(marketCoinName);
4290
- marketPool = marketPool || await query.getMarketPool(coinName, { indexer });
4291
- if (!marketPool) {
4292
- throw new Error(`Failed to fetch marketPool for ${marketCoinName}`);
4293
- }
4294
- const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
4295
- const rewardPoolId = query.address.get(
4296
- `spool.pools.${marketCoinName}.rewardPoolId`
4297
- );
4298
- let spool = void 0;
4299
- coinPrices = coinPrices || await query.utils.getCoinPrices();
4692
+ coinPrices = coinPrices || await query.getAllCoinPrices();
4300
4693
  if (indexer) {
4301
4694
  const spoolIndexer = await query.indexer.getSpool(marketCoinName);
4302
4695
  const coinName2 = query.utils.parseCoinName(marketCoinName);
4303
4696
  const rewardCoinName2 = query.utils.getSpoolRewardCoinName(marketCoinName);
4304
- spoolIndexer.coinPrice = coinPrices?.[coinName2] || spoolIndexer.coinPrice;
4305
- spoolIndexer.marketCoinPrice = (coinPrices?.[coinName2] ?? 0) * (marketPool ? marketPool.conversionRate : 0) || spoolIndexer.marketCoinPrice;
4306
- spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2] || spoolIndexer.rewardCoinPrice;
4697
+ spoolIndexer.coinPrice = coinPrices?.[coinName2] ?? spoolIndexer.coinPrice;
4698
+ spoolIndexer.marketCoinPrice = coinPrices?.[marketCoinName] ?? spoolIndexer.marketCoinPrice;
4699
+ spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2] ?? spoolIndexer.rewardCoinPrice;
4307
4700
  return spoolIndexer;
4308
4701
  }
4309
- const spoolObjectResponse = await query.cache.queryGetObjects(
4310
- [poolId, rewardPoolId],
4311
- {
4312
- showContent: true
4313
- }
4314
- );
4315
- if (!(spoolObjectResponse[0] && spoolObjectResponse[1])) {
4316
- throw new Error("Fail to fetch spoolObjectResponse!");
4317
- }
4702
+ requiredObjects ?? (requiredObjects = (await queryRequiredSpoolObjects(query, [coinName]))[coinName]);
4318
4703
  const rewardCoinName = query.utils.getSpoolRewardCoinName(marketCoinName);
4319
4704
  coinPrices = coinPrices || await query.utils.getCoinPrices();
4320
- const spoolObject = spoolObjectResponse[0];
4321
- const rewardPoolObject = spoolObjectResponse[1];
4322
- if (spoolObject.content && "fields" in spoolObject.content) {
4323
- const spoolFields = spoolObject.content.fields;
4324
- const parsedSpoolData = parseOriginSpoolData({
4325
- stakeType: spoolFields.stake_type,
4326
- maxDistributedPoint: spoolFields.max_distributed_point,
4327
- distributedPoint: spoolFields.distributed_point,
4328
- distributedPointPerPeriod: spoolFields.distributed_point_per_period,
4329
- pointDistributionTime: spoolFields.point_distribution_time,
4330
- maxStake: spoolFields.max_stakes,
4331
- stakes: spoolFields.stakes,
4332
- index: spoolFields.index,
4333
- createdAt: spoolFields.created_at,
4334
- lastUpdate: spoolFields.last_update
4335
- });
4336
- const marketCoinPrice = (coinPrices?.[coinName] ?? 0) * marketPool.conversionRate;
4337
- const marketCoinDecimal = query.utils.getCoinDecimal(marketCoinName);
4338
- const calculatedSpoolData = calculateSpoolData(
4339
- parsedSpoolData,
4340
- marketCoinPrice,
4341
- marketCoinDecimal
4342
- );
4343
- if (rewardPoolObject.content && "fields" in rewardPoolObject.content) {
4344
- const rewardPoolFields = rewardPoolObject.content.fields;
4345
- const parsedSpoolRewardPoolData = parseOriginSpoolRewardPoolData({
4346
- claimed_rewards: rewardPoolFields.claimed_rewards,
4347
- exchange_rate_numerator: rewardPoolFields.exchange_rate_numerator,
4348
- exchange_rate_denominator: rewardPoolFields.exchange_rate_denominator,
4349
- rewards: rewardPoolFields.rewards,
4350
- spool_id: rewardPoolFields.spool_id
4351
- });
4352
- const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
4353
- const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
4354
- const calculatedRewardPoolData = calculateSpoolRewardPoolData(
4355
- parsedSpoolData,
4356
- parsedSpoolRewardPoolData,
4357
- calculatedSpoolData,
4358
- rewardCoinPrice,
4359
- rewardCoinDecimal
4360
- );
4361
- spool = {
4362
- marketCoinName,
4363
- symbol: query.utils.parseSymbol(marketCoinName),
4364
- coinType: query.utils.parseCoinType(coinName),
4365
- marketCoinType: query.utils.parseMarketCoinType(coinName),
4366
- rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
4367
- sCoinType: marketPool.sCoinType,
4368
- coinDecimal: query.utils.getCoinDecimal(coinName),
4369
- rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
4370
- coinPrice: coinPrices?.[coinName] ?? 0,
4371
- marketCoinPrice,
4372
- rewardCoinPrice,
4373
- maxPoint: parsedSpoolData.maxPoint,
4374
- distributedPoint: parsedSpoolData.distributedPoint,
4375
- maxStake: parsedSpoolData.maxStake,
4376
- ...calculatedSpoolData,
4377
- exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
4378
- exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
4379
- ...calculatedRewardPoolData
4380
- };
4381
- }
4382
- }
4383
- return spool;
4705
+ const parsedSpoolObjects = parseSpoolObjects(requiredObjects);
4706
+ const parsedSpoolData = parseOriginSpoolData(parsedSpoolObjects);
4707
+ const marketCoinPrice = coinPrices?.[marketCoinName] ?? 0;
4708
+ const marketCoinDecimal = query.utils.getCoinDecimal(marketCoinName);
4709
+ const calculatedSpoolData = calculateSpoolData(
4710
+ parsedSpoolData,
4711
+ marketCoinPrice,
4712
+ marketCoinDecimal
4713
+ );
4714
+ const parsedSpoolRewardPoolData = parseOriginSpoolRewardPoolData(parsedSpoolObjects);
4715
+ const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
4716
+ const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
4717
+ const calculatedRewardPoolData = calculateSpoolRewardPoolData(
4718
+ parsedSpoolData,
4719
+ parsedSpoolRewardPoolData,
4720
+ calculatedSpoolData,
4721
+ rewardCoinPrice,
4722
+ rewardCoinDecimal
4723
+ );
4724
+ return {
4725
+ marketCoinName,
4726
+ symbol: query.utils.parseSymbol(marketCoinName),
4727
+ coinType: query.utils.parseCoinType(coinName),
4728
+ marketCoinType: query.utils.parseMarketCoinType(coinName),
4729
+ rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
4730
+ sCoinType: query.utils.parseSCoinType(marketCoinName),
4731
+ coinDecimal: query.utils.getCoinDecimal(coinName),
4732
+ rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
4733
+ coinPrice: coinPrices?.[coinName] ?? 0,
4734
+ marketCoinPrice,
4735
+ rewardCoinPrice,
4736
+ maxPoint: parsedSpoolData.maxPoint,
4737
+ distributedPoint: parsedSpoolData.distributedPoint,
4738
+ maxStake: parsedSpoolData.maxStake,
4739
+ ...calculatedSpoolData,
4740
+ exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
4741
+ exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
4742
+ ...calculatedRewardPoolData
4743
+ };
4384
4744
  };
4385
4745
  var getStakeAccounts = async ({
4386
4746
  utils
@@ -4730,6 +5090,101 @@ var getVeScaTreasuryInfo = async (utils) => {
4730
5090
  };
4731
5091
  };
4732
5092
 
5093
+ // src/queries/poolAddressesQuery.ts
5094
+ var getAllAddresses = async (query) => {
5095
+ const results = {};
5096
+ const marketId = query.address.get("core.market");
5097
+ const marketObject = (await query.cache.queryGetObject(marketId, {
5098
+ showContent: true
5099
+ }))?.data;
5100
+ if (!(marketObject && marketObject.content?.dataType === "moveObject"))
5101
+ throw new Error(`Failed to fetch marketObject`);
5102
+ const fields = marketObject.content.fields;
5103
+ const coinTypesPairs = SUPPORT_POOLS.reduce(
5104
+ (acc, pool) => {
5105
+ acc.push([pool, query.utils.parseCoinType(pool).substring(2)]);
5106
+ return acc;
5107
+ },
5108
+ []
5109
+ );
5110
+ const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
5111
+ const collateralStatsParentId = fields.collateral_stats.fields.table.fields.id.id;
5112
+ const borrowDynamicsParentid = fields.borrow_dynamics.fields.table.fields.id.id;
5113
+ const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
5114
+ const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
5115
+ const ADDRESS_TYPE = `0x1::type_name::TypeName`;
5116
+ const BORROW_FEE_TYPE = `0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da::market_dynamic_keys::BorrowFeeKey`;
5117
+ const SUPPLY_LIMIT_TYPE = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
5118
+ const BORROW_LIMIT_TYPE = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
5119
+ const ISOLATED_ASSET_KEY = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
5120
+ const fetchDynamicObject = async (parentId, type, value) => {
5121
+ try {
5122
+ return (await query.cache.queryGetDynamicFieldObject({
5123
+ parentId,
5124
+ name: {
5125
+ type,
5126
+ value
5127
+ }
5128
+ }))?.data?.objectId;
5129
+ } catch (_e) {
5130
+ return void 0;
5131
+ }
5132
+ };
5133
+ await Promise.all(
5134
+ coinTypesPairs.map(async ([coinName, coinType]) => {
5135
+ const addresses = await Promise.all([
5136
+ fetchDynamicObject(balanceSheetParentId, ADDRESS_TYPE, {
5137
+ name: coinType
5138
+ }),
5139
+ fetchDynamicObject(collateralStatsParentId, ADDRESS_TYPE, {
5140
+ name: coinType
5141
+ }),
5142
+ fetchDynamicObject(borrowDynamicsParentid, ADDRESS_TYPE, {
5143
+ name: coinType
5144
+ }),
5145
+ fetchDynamicObject(interestModelParentId, ADDRESS_TYPE, {
5146
+ name: coinType
5147
+ }),
5148
+ fetchDynamicObject(riskModelParentId, ADDRESS_TYPE, {
5149
+ name: coinType
5150
+ }),
5151
+ fetchDynamicObject(marketId, BORROW_FEE_TYPE, coinType),
5152
+ fetchDynamicObject(marketId, SUPPLY_LIMIT_TYPE, coinType),
5153
+ fetchDynamicObject(marketId, BORROW_LIMIT_TYPE, coinType),
5154
+ fetchDynamicObject(marketId, ISOLATED_ASSET_KEY, coinType)
5155
+ ]);
5156
+ const spool = query.address.get(
5157
+ // @ts-ignore
5158
+ `spool.pools.s${coinName}.id`
5159
+ );
5160
+ const rewardPool = query.address.get(
5161
+ // @ts-ignore
5162
+ `spool.pools.s${coinName}.rewardPoolId`
5163
+ );
5164
+ const sCoinTreasury = query.address.get(
5165
+ // @ts-ignore
5166
+ `scoin.coins.s${coinName}.treasury`
5167
+ );
5168
+ results[coinName] = {
5169
+ lendingPoolAddress: addresses[0],
5170
+ collateralPoolAddress: addresses[1],
5171
+ borrowDynamic: addresses[2],
5172
+ interestModel: addresses[3],
5173
+ riskModel: addresses[4],
5174
+ borrowFeeKey: addresses[5],
5175
+ supplyLimitKey: addresses[6],
5176
+ borrowLimitKey: addresses[7],
5177
+ isolatedAssetKey: addresses[8],
5178
+ spool,
5179
+ spoolReward: rewardPool,
5180
+ sCoinTreasury
5181
+ };
5182
+ await new Promise((resolve) => setTimeout(resolve, 200));
5183
+ })
5184
+ );
5185
+ return results;
5186
+ };
5187
+
4733
5188
  // src/models/suiKit.ts
4734
5189
  import { SuiKit as SuiKit2 } from "@scallop-io/sui-kit";
4735
5190
  var newSuiKit = (params) => {
@@ -7080,6 +7535,7 @@ var ScallopQuery = class {
7080
7535
  }
7081
7536
  /* ==================== Core Query Methods ==================== */
7082
7537
  /**
7538
+ * @deprecated use getMarketPools
7083
7539
  * Query market data.
7084
7540
  * @param indexer - Whether to use indexer.
7085
7541
  * @return Market data.
@@ -7098,7 +7554,7 @@ var ScallopQuery = class {
7098
7554
  * @param indexer - Whether to use indexer.
7099
7555
  * @return Market pools data.
7100
7556
  */
7101
- async getMarketPools(poolCoinNames, args) {
7557
+ async getMarketPools(poolCoinNames = [...SUPPORT_POOLS], args) {
7102
7558
  return await getMarketPools(
7103
7559
  this,
7104
7560
  poolCoinNames,
@@ -7114,13 +7570,8 @@ var ScallopQuery = class {
7114
7570
  * @return Market pool data.
7115
7571
  */
7116
7572
  async getMarketPool(poolCoinName, args) {
7117
- return await getMarketPool(
7118
- this,
7119
- poolCoinName,
7120
- args?.indexer,
7121
- args?.marketObject,
7122
- args?.coinPrice
7123
- );
7573
+ const marketPools = await this.getMarketPools(void 0, args);
7574
+ return marketPools.pools[poolCoinName];
7124
7575
  }
7125
7576
  /**
7126
7577
  * Get market collaterals.
@@ -7247,13 +7698,8 @@ var ScallopQuery = class {
7247
7698
  * @return Spool data.
7248
7699
  */
7249
7700
  async getSpool(stakeMarketCoinName, args) {
7250
- return await getSpool(
7251
- this,
7252
- stakeMarketCoinName,
7253
- args?.indexer,
7254
- args?.marketPool,
7255
- args?.coinPrices
7256
- );
7701
+ const spools = await this.getSpools(void 0, args);
7702
+ return spools[stakeMarketCoinName];
7257
7703
  }
7258
7704
  /**
7259
7705
  * Get stake accounts data for all stake pools (spools).
@@ -7558,7 +8004,7 @@ var ScallopQuery = class {
7558
8004
  * Get list of isolated assets
7559
8005
  */
7560
8006
  async getIsolatedAssets() {
7561
- return await getIsolatedAssets(this.address);
8007
+ return await getIsolatedAssets(this);
7562
8008
  }
7563
8009
  /**
7564
8010
  * Check if asset is an isolated asset
@@ -7581,6 +8027,13 @@ var ScallopQuery = class {
7581
8027
  async getAllCoinPrices(args) {
7582
8028
  return getAllCoinPrices(this, args?.marketPools, args?.coinPrices);
7583
8029
  }
8030
+ /**
8031
+ * Query all address (lending pool, collateral pool, borrow dynamics, interest models) of all pool
8032
+ * @returns
8033
+ */
8034
+ async getPoolAddresses() {
8035
+ return getAllAddresses(this);
8036
+ }
7584
8037
  };
7585
8038
 
7586
8039
  // src/models/scallopBuilder.ts
@@ -8575,9 +9028,11 @@ export {
8575
9028
  ScallopQuery,
8576
9029
  ScallopUtils,
8577
9030
  TEST_ADDRESSES,
9031
+ TokenBucket,
8578
9032
  UNLOCK_ROUND_DURATION,
8579
9033
  USE_TEST_ADDRESS,
8580
9034
  assetCoins,
9035
+ callWithRateLimit,
8581
9036
  coinDecimals,
8582
9037
  coinIds,
8583
9038
  marketCoins,