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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/constants/poolAddress.d.ts +14 -4
  2. package/dist/constants/queryKeys.d.ts +1 -2
  3. package/dist/constants/tokenBucket.d.ts +2 -2
  4. package/dist/index.js +719 -307
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +674 -262
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/models/scallopCache.d.ts +1 -0
  9. package/dist/models/scallopQuery.d.ts +20 -17
  10. package/dist/queries/coreQuery.d.ts +18 -19
  11. package/dist/queries/index.d.ts +2 -0
  12. package/dist/queries/isolatedAssetQuery.d.ts +2 -2
  13. package/dist/queries/objectsQuery.d.ts +3 -0
  14. package/dist/queries/poolAddressesQuery.d.ts +15 -0
  15. package/dist/types/query/core.d.ts +22 -5
  16. package/dist/types/utils.d.ts +7 -2
  17. package/dist/utils/core.d.ts +2 -0
  18. package/dist/utils/index.d.ts +1 -0
  19. package/dist/utils/util.d.ts +1 -0
  20. package/package.json +1 -1
  21. package/src/constants/poolAddress.ts +290 -29
  22. package/src/constants/queryKeys.ts +5 -5
  23. package/src/constants/tokenBucket.ts +2 -2
  24. package/src/models/scallopCache.ts +43 -11
  25. package/src/models/scallopQuery.ts +24 -12
  26. package/src/queries/borrowIncentiveQuery.ts +1 -1
  27. package/src/queries/coreQuery.ts +378 -248
  28. package/src/queries/index.ts +2 -0
  29. package/src/queries/isolatedAssetQuery.ts +37 -31
  30. package/src/queries/objectsQuery.ts +20 -0
  31. package/src/queries/poolAddressesQuery.ts +134 -0
  32. package/src/queries/portfolioQuery.ts +14 -7
  33. package/src/queries/priceQuery.ts +3 -1
  34. package/src/queries/spoolQuery.ts +3 -1
  35. package/src/types/query/core.ts +21 -5
  36. package/src/types/utils.ts +8 -3
  37. package/src/utils/core.ts +11 -0
  38. package/src/utils/index.ts +1 -0
  39. package/src/utils/query.ts +16 -2
  40. package/src/utils/tokenBucket.ts +2 -2
  41. package/src/utils/util.ts +8 -0
package/dist/index.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",
@@ -972,8 +1122,8 @@ var TEST_ADDRESSES = {
972
1122
  };
973
1123
 
974
1124
  // src/constants/tokenBucket.ts
975
- var DEFAULT_TOKENS_PER_INTERVAL = 10;
976
- var DEFAULT_INTERVAL_IN_MS = 50;
1125
+ var DEFAULT_TOKENS_PER_INTERVAL = 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,16 @@ 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 value = object.content.fields.value;
1796
+ if (typeof value === "object" && "fields" in value)
1797
+ return object.content.fields.value.fields;
1798
+ return value;
1799
+ };
1800
+
1625
1801
  // src/models/scallopCache.ts
1626
1802
  var ScallopCache = class {
1627
1803
  constructor(suiKit, walletAddress, cacheOptions, tokenBucket, queryClient) {
@@ -1656,6 +1832,13 @@ var ScallopCache = class {
1656
1832
  })
1657
1833
  );
1658
1834
  }
1835
+ retryFn(errCount, e) {
1836
+ if (errCount === 5)
1837
+ return false;
1838
+ if (e.status === 429)
1839
+ return true;
1840
+ return false;
1841
+ }
1659
1842
  /**
1660
1843
  * @description Provides cache for inspectTxn of the SuiKit.
1661
1844
  * @param QueryInspectTxnParams
@@ -1668,9 +1851,17 @@ var ScallopCache = class {
1668
1851
  typeArgs
1669
1852
  }) {
1670
1853
  const txBlock = new SuiTxBlock();
1671
- txBlock.moveCall(queryTarget, args, typeArgs);
1854
+ const resolvedArgs = await Promise.all(
1855
+ args.map(async (arg) => {
1856
+ if (typeof arg === "string") {
1857
+ return (await this.queryGetObject(arg))?.data;
1858
+ }
1859
+ return arg;
1860
+ })
1861
+ );
1862
+ txBlock.moveCall(queryTarget, resolvedArgs, typeArgs);
1672
1863
  const query = await this.queryClient.fetchQuery({
1673
- retry: 5,
1864
+ retry: this.retryFn,
1674
1865
  retryDelay: 1e3,
1675
1866
  queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
1676
1867
  queryFn: async () => {
@@ -1690,9 +1881,9 @@ var ScallopCache = class {
1690
1881
  */
1691
1882
  async queryGetObject(objectId, options) {
1692
1883
  return this.queryClient.fetchQuery({
1693
- retry: 5,
1884
+ retry: this.retryFn,
1694
1885
  retryDelay: 1e3,
1695
- queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
1886
+ queryKey: queryKeys.rpc.getObject(objectId, options),
1696
1887
  queryFn: async () => {
1697
1888
  return await callWithRateLimit(
1698
1889
  this.tokenBucket,
@@ -1715,7 +1906,7 @@ var ScallopCache = class {
1715
1906
  if (objectIds.length === 0)
1716
1907
  return [];
1717
1908
  return this.queryClient.fetchQuery({
1718
- retry: 5,
1909
+ retry: this.retryFn,
1719
1910
  retryDelay: 1e3,
1720
1911
  queryKey: queryKeys.rpc.getObjects(
1721
1912
  objectIds,
@@ -1723,10 +1914,28 @@ var ScallopCache = class {
1723
1914
  options
1724
1915
  ),
1725
1916
  queryFn: async () => {
1726
- return await callWithRateLimit(
1917
+ const results = await callWithRateLimit(
1727
1918
  this.tokenBucket,
1728
1919
  async () => await this.suiKit.getObjects(objectIds, options)
1729
1920
  );
1921
+ if (results) {
1922
+ results.forEach((result) => {
1923
+ this.queryClient.setQueriesData(
1924
+ {
1925
+ exact: false,
1926
+ queryKey: queryKeys.rpc.getObject(result.objectId, options)
1927
+ },
1928
+ {
1929
+ data: result,
1930
+ error: null
1931
+ },
1932
+ {
1933
+ updatedAt: Date.now()
1934
+ }
1935
+ );
1936
+ });
1937
+ }
1938
+ return results;
1730
1939
  }
1731
1940
  });
1732
1941
  }
@@ -1737,7 +1946,7 @@ var ScallopCache = class {
1737
1946
  */
1738
1947
  async queryGetOwnedObjects(input) {
1739
1948
  return this.queryClient.fetchQuery({
1740
- retry: 5,
1949
+ retry: this.retryFn,
1741
1950
  retryDelay: 1e3,
1742
1951
  queryKey: queryKeys.rpc.getOwnedObjects(input),
1743
1952
  queryFn: async () => {
@@ -1750,7 +1959,7 @@ var ScallopCache = class {
1750
1959
  }
1751
1960
  async queryGetDynamicFields(input) {
1752
1961
  return this.queryClient.fetchQuery({
1753
- retry: 5,
1962
+ retry: this.retryFn,
1754
1963
  retryDelay: 1e3,
1755
1964
  queryKey: queryKeys.rpc.getDynamicFields(input),
1756
1965
  queryFn: async () => {
@@ -1763,7 +1972,7 @@ var ScallopCache = class {
1763
1972
  }
1764
1973
  async queryGetDynamicFieldObject(input) {
1765
1974
  return this.queryClient.fetchQuery({
1766
- retry: 5,
1975
+ retry: this.retryFn,
1767
1976
  retryDelay: (attemptIndex) => Math.min(1e3 * attemptIndex, 8e3),
1768
1977
  queryKey: queryKeys.rpc.getDynamicFieldObject(input),
1769
1978
  queryFn: async () => {
@@ -1776,7 +1985,7 @@ var ScallopCache = class {
1776
1985
  }
1777
1986
  async queryGetAllCoinBalances(owner) {
1778
1987
  return this.queryClient.fetchQuery({
1779
- retry: 5,
1988
+ retry: this.retryFn,
1780
1989
  retryDelay: 1e3,
1781
1990
  queryKey: queryKeys.rpc.getAllCoinBalances(owner),
1782
1991
  queryFn: async () => {
@@ -2495,7 +2704,7 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
2495
2704
  ...SUPPORT_BORROW_INCENTIVE_POOLS
2496
2705
  ], indexer = false, marketPools, coinPrices) => {
2497
2706
  const borrowIncentivePools = {};
2498
- marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices, indexer });
2707
+ marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices, indexer })).pools;
2499
2708
  coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools });
2500
2709
  if (indexer) {
2501
2710
  const borrowIncentivePoolsIndexer = await query.indexer.getBorrowIncentivePools();
@@ -2728,9 +2937,14 @@ var isolatedAssetZod = zod2.object({
2728
2937
  })
2729
2938
  });
2730
2939
  var isolatedAssetKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
2731
- var getIsolatedAssets = async (address) => {
2940
+ var getIsolatedAssets = async (query) => {
2941
+ if (SUPPORT_POOLS.every((t) => !!POOL_ADDRESSES[t])) {
2942
+ return SUPPORT_POOLS.filter(
2943
+ (t) => !!POOL_ADDRESSES[t]?.isolatedAssetKey && !!POOL_ADDRESSES[t]?.coinType
2944
+ ).map((t) => POOL_ADDRESSES[t]?.coinType);
2945
+ }
2732
2946
  try {
2733
- const marketObject = address.get("core.market");
2947
+ const marketObject = query.address.get("core.market");
2734
2948
  const isolatedAssets = [];
2735
2949
  if (!marketObject)
2736
2950
  return isolatedAssets;
@@ -2740,7 +2954,7 @@ var getIsolatedAssets = async (address) => {
2740
2954
  return dynamicField.name.type === isolatedAssetKeyType;
2741
2955
  };
2742
2956
  do {
2743
- const response = await address.cache.queryGetDynamicFields({
2957
+ const response = await query.cache.queryGetDynamicFields({
2744
2958
  parentId: marketObject,
2745
2959
  cursor: nextCursor,
2746
2960
  limit: 10
@@ -2763,32 +2977,30 @@ var getIsolatedAssets = async (address) => {
2763
2977
  }
2764
2978
  };
2765
2979
  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);
2980
+ if (POOL_ADDRESSES[coinName]) {
2981
+ return !!POOL_ADDRESSES[coinName].isolatedAssetKey;
2982
+ }
2983
+ const marketObject = utils.address.get("core.market");
2984
+ const cachedData = utils.address.cache.queryClient.getQueryData([
2985
+ "getDynamicFields",
2986
+ marketObject
2987
+ ]);
2988
+ if (cachedData) {
2989
+ const coinType2 = utils.parseCoinType(coinName);
2990
+ return cachedData.includes(coinType2);
2991
+ }
2992
+ const coinType = utils.parseCoinType(coinName).slice(2);
2993
+ const object = await utils.cache.queryGetDynamicFieldObject({
2994
+ parentId: marketObject,
2995
+ name: {
2996
+ type: isolatedAssetKeyType,
2997
+ value: coinType
2775
2998
  }
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);
2999
+ });
3000
+ const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
3001
+ if (!parsedData.success)
2790
3002
  return false;
2791
- }
3003
+ return parsedData.data.fields.value;
2792
3004
  };
2793
3005
 
2794
3006
  // src/queries/borrowLimitQuery.ts
@@ -2831,6 +3043,17 @@ var getBorrowLimit = async (utils, poolName) => {
2831
3043
  }
2832
3044
  };
2833
3045
 
3046
+ // src/queries/objectsQuery.ts
3047
+ var queryMultipleObjects = async (cache, objectIds, options, partitionSize = 50) => {
3048
+ const objectIdsPartition = partitionArray(objectIds, partitionSize);
3049
+ const objects = [];
3050
+ for (const objectIds2 of objectIdsPartition) {
3051
+ const result = await cache.queryGetObjects(objectIds2, options);
3052
+ objects.push(...result);
3053
+ }
3054
+ return objects;
3055
+ };
3056
+
2834
3057
  // src/queries/coreQuery.ts
2835
3058
  var queryMarket = async (query, indexer = false, coinPrices) => {
2836
3059
  coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
@@ -2887,19 +3110,15 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2887
3110
  borrowRateOnMidKink: pool.borrowRateOnMidKink,
2888
3111
  highKink: pool.highKink,
2889
3112
  midKink: pool.midKink,
2890
- minBorrowAmount: pool.minBorrowAmount
3113
+ minBorrowAmount: pool.minBorrowAmount,
3114
+ isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3115
+ supplyLimit: await getSupplyLimit(query.utils, poolCoinName) ?? "0",
3116
+ borrowLimit: await getBorrowLimit(query.utils, poolCoinName) ?? "0"
2891
3117
  });
2892
3118
  const calculatedMarketPoolData = calculateMarketPoolData(
2893
3119
  query.utils,
2894
3120
  parsedMarketPoolData
2895
3121
  );
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
3122
  pools[poolCoinName] = {
2904
3123
  coinName: poolCoinName,
2905
3124
  symbol: query.utils.parseSymbol(poolCoinName),
@@ -2909,7 +3128,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2909
3128
  query.utils.parseMarketCoinName(poolCoinName)
2910
3129
  ),
2911
3130
  coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
2912
- coinDecimal,
2913
3131
  coinPrice,
2914
3132
  highKink: parsedMarketPoolData.highKink,
2915
3133
  midKink: parsedMarketPoolData.midKink,
@@ -2918,10 +3136,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2918
3136
  borrowFee: parsedMarketPoolData.borrowFee,
2919
3137
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
2920
3138
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
2921
- isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2922
- // isIsolated: false,
2923
- maxSupplyCoin,
2924
- maxBorrowCoin,
2925
3139
  ...calculatedMarketPoolData
2926
3140
  };
2927
3141
  }
@@ -2937,10 +3151,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2937
3151
  collateralFactor: collateral.collateralFactor,
2938
3152
  liquidationFactor: collateral.liquidationFactor,
2939
3153
  liquidationDiscount: collateral.liquidationDiscount,
2940
- liquidationPanelty: collateral.liquidationPanelty,
3154
+ liquidationPenalty: collateral.liquidationPanelty,
2941
3155
  liquidationReserveFactor: collateral.liquidationReserveFactor,
2942
3156
  maxCollateralAmount: collateral.maxCollateralAmount,
2943
- totalCollateralAmount: collateral.totalCollateralAmount
3157
+ totalCollateralAmount: collateral.totalCollateralAmount,
3158
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
2944
3159
  });
2945
3160
  const calculatedMarketCollateralData = calculateMarketCollateralData(
2946
3161
  query.utils,
@@ -2952,14 +3167,12 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2952
3167
  coinType,
2953
3168
  marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
2954
3169
  coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
2955
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
2956
3170
  coinPrice,
2957
3171
  collateralFactor: parsedMarketCollateralData.collateralFactor,
2958
3172
  liquidationFactor: parsedMarketCollateralData.liquidationFactor,
2959
3173
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
2960
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3174
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
2961
3175
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
2962
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
2963
3176
  ...calculatedMarketCollateralData
2964
3177
  };
2965
3178
  }
@@ -2969,44 +3182,216 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2969
3182
  // data: marketData,
2970
3183
  };
2971
3184
  };
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
- });
3185
+ var queryRequiredMarketObjects = async (query, poolCoinNames) => {
3186
+ const tasks = poolCoinNames.map((t) => ({
3187
+ poolCoinName: t,
3188
+ balanceSheet: POOL_ADDRESSES[t]?.lendingPoolAddress,
3189
+ collateralStat: POOL_ADDRESSES[t]?.collateralPoolAddress,
3190
+ borrowDynamic: POOL_ADDRESSES[t]?.borrowDynamic,
3191
+ interestModel: POOL_ADDRESSES[t]?.interestModel,
3192
+ riskModel: POOL_ADDRESSES[t]?.riskModel,
3193
+ borrowFeeKey: POOL_ADDRESSES[t]?.borrowFeeKey,
3194
+ supplyLimitKey: POOL_ADDRESSES[t]?.supplyLimitKey,
3195
+ borrowLimitKey: POOL_ADDRESSES[t]?.borrowLimitKey,
3196
+ isolatedAssetKey: POOL_ADDRESSES[t]?.isolatedAssetKey
3197
+ }));
3198
+ const [
3199
+ balanceSheetObjects,
3200
+ collateralStatObjects,
3201
+ borrowDynamicObjects,
3202
+ interestModelObjects,
3203
+ riskModelObjects,
3204
+ borrowFeeObjects,
3205
+ supplyLimitObjects,
3206
+ borrowLimitObjects,
3207
+ isolatedAssetObjects
3208
+ ] = await Promise.all([
3209
+ queryMultipleObjects(
3210
+ query.cache,
3211
+ tasks.map((task) => task.balanceSheet).filter((t) => !!t)
3212
+ ),
3213
+ queryMultipleObjects(
3214
+ query.cache,
3215
+ tasks.map((task) => task.collateralStat).filter((t) => !!t)
3216
+ ),
3217
+ queryMultipleObjects(
3218
+ query.cache,
3219
+ tasks.map((task) => task.borrowDynamic).filter((t) => !!t)
3220
+ ),
3221
+ queryMultipleObjects(
3222
+ query.cache,
3223
+ tasks.map((task) => task.interestModel).filter((t) => !!t)
3224
+ ),
3225
+ queryMultipleObjects(
3226
+ query.cache,
3227
+ tasks.map((task) => task.riskModel).filter((t) => !!t)
3228
+ ),
3229
+ queryMultipleObjects(
3230
+ query.cache,
3231
+ tasks.map((task) => task.borrowFeeKey).filter((t) => !!t)
3232
+ ),
3233
+ queryMultipleObjects(
3234
+ query.cache,
3235
+ tasks.map((task) => task.supplyLimitKey).filter((t) => !!t)
3236
+ ),
3237
+ queryMultipleObjects(
3238
+ query.cache,
3239
+ tasks.map((task) => task.borrowLimitKey).filter((t) => !!t)
3240
+ ),
3241
+ queryMultipleObjects(
3242
+ query.cache,
3243
+ tasks.map((task) => task.isolatedAssetKey).filter((t) => !!t)
3244
+ )
3245
+ ]);
3246
+ const mapObjects = (tasks2, fetchedObjects) => {
3247
+ const resultMap = {};
3248
+ let fetchedIndex = 0;
3249
+ for (const task of tasks2) {
3250
+ const key = task[Object.keys(task)[1]];
3251
+ if (key) {
3252
+ resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
3253
+ fetchedIndex++;
3254
+ }
3255
+ }
3256
+ return resultMap;
3257
+ };
3258
+ const balanceSheetMap = mapObjects(tasks, balanceSheetObjects);
3259
+ const collateralStatMap = mapObjects(tasks, collateralStatObjects);
3260
+ const borrowDynamicMap = mapObjects(tasks, borrowDynamicObjects);
3261
+ const interestModelMap = mapObjects(tasks, interestModelObjects);
3262
+ const riskModelMap = mapObjects(tasks, riskModelObjects);
3263
+ const borrowFeeMap = mapObjects(tasks, borrowFeeObjects);
3264
+ const supplyLimitMap = mapObjects(tasks, supplyLimitObjects);
3265
+ const borrowLimitMap = mapObjects(tasks, borrowLimitObjects);
3266
+ const isolatedAssetMap = mapObjects(tasks, isolatedAssetObjects);
3267
+ return poolCoinNames.reduce(
3268
+ (acc, name) => {
3269
+ acc[name] = {
3270
+ balanceSheet: balanceSheetMap[name],
3271
+ collateralStat: collateralStatMap[name],
3272
+ borrowDynamic: borrowDynamicMap[name],
3273
+ interestModel: interestModelMap[name],
3274
+ riskModel: riskModelMap[name],
3275
+ borrowFeeKey: borrowFeeMap[name],
3276
+ supplyLimitKey: supplyLimitMap[name],
3277
+ borrowLimitKey: borrowLimitMap[name],
3278
+ isolatedAssetKey: isolatedAssetMap[name]
3279
+ };
3280
+ return acc;
3281
+ },
3282
+ {}
3283
+ );
3284
+ };
3285
+ var getMarketPools = async (query, poolCoinNames, indexer = false, coinPrices) => {
2977
3286
  coinPrices = coinPrices ?? await query.utils.getCoinPrices();
2978
- const marketPools = {};
3287
+ const pools = {};
3288
+ const collaterals = {};
2979
3289
  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;
3290
+ const marketIndexer = await query.indexer.getMarket();
3291
+ const updatePools = (item) => {
3292
+ item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
3293
+ item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
3294
+ pools[item.coinName] = item;
3295
+ };
3296
+ const updateCollaterals = (item) => {
3297
+ item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
3298
+ item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
3299
+ collaterals[item.coinName] = item;
3300
+ };
3301
+ Object.values(marketIndexer.pools).forEach(updatePools);
3302
+ Object.values(marketIndexer.collaterals).forEach(updateCollaterals);
3303
+ return {
3304
+ pools,
3305
+ collaterals
2989
3306
  };
2990
- Object.values(marketPoolsIndexer).forEach(updateMarketPool);
2991
- return marketPools;
2992
3307
  }
3308
+ const requiredObjects = await queryRequiredMarketObjects(
3309
+ query,
3310
+ poolCoinNames
3311
+ );
2993
3312
  await Promise.allSettled(
2994
3313
  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;
3314
+ try {
3315
+ const result = await getMarketPool(
3316
+ query,
3317
+ poolCoinName,
3318
+ indexer,
3319
+ coinPrices?.[poolCoinName] ?? 0,
3320
+ requiredObjects[poolCoinName]
3321
+ );
3322
+ if (result?.marketPool) {
3323
+ pools[poolCoinName] = result?.marketPool;
3324
+ }
3325
+ if (result?.collateral) {
3326
+ collaterals[poolCoinName] = result.collateral;
3327
+ }
3328
+ } catch (e) {
3329
+ console.error(e);
3004
3330
  }
3005
3331
  })
3006
3332
  );
3007
- return marketPools;
3333
+ return {
3334
+ pools,
3335
+ collaterals
3336
+ };
3337
+ };
3338
+ var parseMarketPoolObjects = ({
3339
+ balanceSheet,
3340
+ borrowDynamic,
3341
+ collateralStat,
3342
+ interestModel,
3343
+ riskModel,
3344
+ borrowFeeKey,
3345
+ supplyLimitKey,
3346
+ borrowLimitKey,
3347
+ isolatedAssetKey
3348
+ }) => {
3349
+ const _balanceSheet = parseObjectAs(balanceSheet);
3350
+ const _interestModel = parseObjectAs(interestModel);
3351
+ const _borrowDynamic = parseObjectAs(borrowDynamic);
3352
+ const _borrowFee = parseObjectAs(borrowFeeKey);
3353
+ const _supplyLimit = supplyLimitKey ? parseObjectAs(supplyLimitKey) : "0";
3354
+ const _borrowLimit = borrowLimitKey ? parseObjectAs(borrowLimitKey) : "0";
3355
+ const _riskModel = riskModel ? parseObjectAs(riskModel) : void 0;
3356
+ const _collateralStat = collateralStat ? parseObjectAs(collateralStat) : void 0;
3357
+ const parsedOriginMarketCollateral = _riskModel && _collateralStat ? {
3358
+ type: _interestModel.type.fields,
3359
+ isIsolated: !!isolatedAssetKey,
3360
+ collateralFactor: _riskModel.collateral_factor.fields,
3361
+ liquidationFactor: _riskModel.liquidation_factor.fields,
3362
+ liquidationPenalty: _riskModel.liquidation_penalty.fields,
3363
+ liquidationDiscount: _riskModel.liquidation_discount.fields,
3364
+ liquidationReserveFactor: _riskModel.liquidation_revenue_factor.fields,
3365
+ maxCollateralAmount: _riskModel.max_collateral_amount,
3366
+ totalCollateralAmount: _collateralStat.amount
3367
+ } : void 0;
3368
+ return {
3369
+ type: _interestModel.type.fields,
3370
+ maxBorrowRate: _interestModel.max_borrow_rate.fields,
3371
+ interestRate: _borrowDynamic.interest_rate.fields,
3372
+ interestRateScale: _borrowDynamic.interest_rate_scale,
3373
+ borrowIndex: _borrowDynamic.borrow_index,
3374
+ lastUpdated: _borrowDynamic.last_updated,
3375
+ cash: _balanceSheet.cash,
3376
+ debt: _balanceSheet.debt,
3377
+ marketCoinSupply: _balanceSheet.market_coin_supply,
3378
+ reserve: _balanceSheet.revenue,
3379
+ reserveFactor: _interestModel.revenue_factor.fields,
3380
+ borrowWeight: _interestModel.borrow_weight.fields,
3381
+ borrowFeeRate: _borrowFee,
3382
+ baseBorrowRatePerSec: _interestModel.base_borrow_rate_per_sec.fields,
3383
+ borrowRateOnHighKink: _interestModel.borrow_rate_on_high_kink.fields,
3384
+ borrowRateOnMidKink: _interestModel.borrow_rate_on_mid_kink.fields,
3385
+ highKink: _interestModel.high_kink.fields,
3386
+ midKink: _interestModel.mid_kink.fields,
3387
+ minBorrowAmount: _interestModel.min_borrow_amount,
3388
+ isIsolated: !!isolatedAssetKey,
3389
+ supplyLimit: _supplyLimit,
3390
+ borrowLimit: _borrowLimit,
3391
+ parsedOriginMarketCollateral
3392
+ };
3008
3393
  };
3009
- var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
3394
+ var getMarketPool = async (query, poolCoinName, indexer = false, coinPrice, requiredObjects) => {
3010
3395
  coinPrice = coinPrice ?? (await query.utils.getCoinPrices())?.[poolCoinName];
3011
3396
  if (indexer) {
3012
3397
  const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
@@ -3017,135 +3402,70 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
3017
3402
  marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
3018
3403
  marketPoolIndexer.coinName
3019
3404
  );
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
- }
3405
+ let marketCollateralIndexer = void 0;
3406
+ if (SUPPORT_COLLATERALS.includes(poolCoinName)) {
3407
+ marketCollateralIndexer = await query.indexer.getMarketCollateral(
3408
+ poolCoinName
3409
+ );
3410
+ marketCollateralIndexer.coinPrice = coinPrice ?? marketCollateralIndexer.coinPrice;
3411
+ marketCollateralIndexer.coinWrappedType = query.utils.getCoinWrappedType(
3412
+ marketCollateralIndexer.coinName
3413
+ );
3070
3414
  }
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
- });
3415
+ return {
3416
+ marketPool: marketPoolIndexer,
3417
+ collateral: marketCollateralIndexer
3418
+ };
3419
+ }
3420
+ requiredObjects ?? (requiredObjects = (await queryRequiredMarketObjects(query, [poolCoinName]))[poolCoinName]);
3421
+ const parsedMarketPoolObjects = parseMarketPoolObjects(requiredObjects);
3422
+ const parsedMarketPoolData = parseOriginMarketPoolData(
3423
+ parsedMarketPoolObjects
3424
+ );
3116
3425
  const calculatedMarketPoolData = calculateMarketPoolData(
3117
3426
  query.utils,
3118
3427
  parsedMarketPoolData
3119
3428
  );
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 {
3429
+ const parsedMarketCollateralData = parsedMarketPoolObjects.parsedOriginMarketCollateral ? parseOriginMarketCollateralData(
3430
+ parsedMarketPoolObjects.parsedOriginMarketCollateral
3431
+ ) : void 0;
3432
+ const basePoolData = () => ({
3128
3433
  coinName: poolCoinName,
3129
3434
  symbol: query.utils.parseSymbol(poolCoinName),
3130
- coinType: query.utils.parseCoinType(poolCoinName),
3131
3435
  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
3436
+ coinType: query.utils.parseCoinType(poolCoinName)
3437
+ });
3438
+ return {
3439
+ marketPool: {
3440
+ ...basePoolData(),
3441
+ sCoinType: query.utils.parseSCoinType(
3442
+ query.utils.parseMarketCoinName(poolCoinName)
3443
+ ),
3444
+ coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3445
+ coinPrice: coinPrice ?? 0,
3446
+ highKink: parsedMarketPoolData.highKink,
3447
+ midKink: parsedMarketPoolData.midKink,
3448
+ reserveFactor: parsedMarketPoolData.reserveFactor,
3449
+ borrowWeight: parsedMarketPoolData.borrowWeight,
3450
+ borrowFee: parsedMarketPoolData.borrowFee,
3451
+ marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
3452
+ minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
3453
+ ...calculatedMarketPoolData
3454
+ },
3455
+ collateral: parsedMarketCollateralData ? {
3456
+ ...basePoolData(),
3457
+ coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3458
+ coinPrice,
3459
+ collateralFactor: parsedMarketCollateralData.collateralFactor,
3460
+ liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3461
+ liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3462
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
3463
+ liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3464
+ ...calculateMarketCollateralData(
3465
+ query.utils,
3466
+ parsedMarketCollateralData
3467
+ )
3468
+ } : void 0
3149
3469
  };
3150
3470
  };
3151
3471
  var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
@@ -3240,10 +3560,11 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
3240
3560
  collateralFactor: riskModel.collateral_factor.fields,
3241
3561
  liquidationFactor: riskModel.liquidation_factor.fields,
3242
3562
  liquidationDiscount: riskModel.liquidation_discount.fields,
3243
- liquidationPanelty: riskModel.liquidation_penalty.fields,
3563
+ liquidationPenalty: riskModel.liquidation_penalty.fields,
3244
3564
  liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
3245
3565
  maxCollateralAmount: riskModel.max_collateral_amount,
3246
- totalCollateralAmount: collateralStat.amount
3566
+ totalCollateralAmount: collateralStat.amount,
3567
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
3247
3568
  });
3248
3569
  const calculatedMarketCollateralData = calculateMarketCollateralData(
3249
3570
  query.utils,
@@ -3255,14 +3576,12 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
3255
3576
  coinType: query.utils.parseCoinType(collateralCoinName),
3256
3577
  marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
3257
3578
  coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
3258
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
3259
3579
  coinPrice: coinPrice ?? 0,
3260
3580
  collateralFactor: parsedMarketCollateralData.collateralFactor,
3261
3581
  liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3262
3582
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3263
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3583
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
3264
3584
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3265
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
3266
3585
  ...calculatedMarketCollateralData
3267
3586
  };
3268
3587
  };
@@ -3503,10 +3822,10 @@ var getLendings = async (query, poolCoinNames = [...SUPPORT_POOLS], ownerAddress
3503
3822
  (marketCoinName) => SUPPORT_SPOOLS.includes(marketCoinName)
3504
3823
  );
3505
3824
  const coinPrices = await query.utils.getCoinPrices();
3506
- const marketPools = await query.getMarketPools(poolCoinNames, {
3825
+ const marketPools = (await query.getMarketPools(poolCoinNames, {
3507
3826
  indexer,
3508
3827
  coinPrices
3509
- });
3828
+ })).pools;
3510
3829
  const spools = await query.getSpools(stakeMarketCoinNames, {
3511
3830
  indexer,
3512
3831
  marketPools,
@@ -3675,7 +3994,7 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
3675
3994
  };
3676
3995
  var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
3677
3996
  const coinPrices = await query.utils.getCoinPrices();
3678
- const market = await query.queryMarket({ indexer, coinPrices });
3997
+ const market = await query.getMarketPools(void 0, { coinPrices, indexer });
3679
3998
  const [coinAmounts, obligations] = await Promise.all([
3680
3999
  query.getCoinAmounts(void 0, ownerAddress),
3681
4000
  query.getObligations(ownerAddress)
@@ -3703,7 +4022,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
3703
4022
  const collateralAssetCoinNames = [
3704
4023
  ...SUPPORT_COLLATERALS
3705
4024
  ];
3706
- market = market ?? await query.queryMarket({ indexer });
4025
+ market = market ?? await query.getMarketPools(void 0, { indexer });
3707
4026
  coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools: market.pools });
3708
4027
  coinAmounts = coinAmounts || await query.getCoinAmounts(coinNames, ownerAddress);
3709
4028
  const [obligationQuery, borrowIncentivePools, borrowIncentiveAccounts] = await Promise.all([
@@ -3994,7 +4313,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
3994
4313
  return obligationAccount;
3995
4314
  };
3996
4315
  var getTotalValueLocked = async (query, indexer = false) => {
3997
- const market = await query.queryMarket({ indexer });
4316
+ const market = await query.getMarketPools(void 0, { indexer });
3998
4317
  let supplyValue = BigNumber5(0);
3999
4318
  let borrowValue = BigNumber5(0);
4000
4319
  if (indexer) {
@@ -4115,7 +4434,7 @@ var getPythPrices = async ({
4115
4434
  };
4116
4435
  var getAllCoinPrices = async (query, marketPools, coinPrices) => {
4117
4436
  coinPrices = coinPrices ?? await query.utils.getCoinPrices();
4118
- marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices });
4437
+ marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices })).pools;
4119
4438
  if (!marketPools) {
4120
4439
  throw new Error(`Failed to fetch market pool for getAllCoinPrices`);
4121
4440
  }
@@ -4246,7 +4565,7 @@ var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexe
4246
4565
  (stakeMarketCoinName) => query.utils.parseCoinName(stakeMarketCoinName)
4247
4566
  );
4248
4567
  coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
4249
- marketPools = marketPools ?? await query.getMarketPools(stakeCoinNames, { indexer });
4568
+ marketPools = marketPools ?? (await query.getMarketPools(stakeCoinNames, { indexer })).pools;
4250
4569
  if (!marketPools)
4251
4570
  throw new Error(`Fail to fetch marketPools for ${stakeCoinNames}`);
4252
4571
  const spools = {};
@@ -4730,6 +5049,96 @@ var getVeScaTreasuryInfo = async (utils) => {
4730
5049
  };
4731
5050
  };
4732
5051
 
5052
+ // src/queries/poolAddressesQuery.ts
5053
+ var getAllAddresses = async (query) => {
5054
+ const results = {};
5055
+ const marketId = query.address.get("core.market");
5056
+ const marketObject = (await query.cache.queryGetObject(marketId, {
5057
+ showContent: true
5058
+ }))?.data;
5059
+ if (!(marketObject && marketObject.content?.dataType === "moveObject"))
5060
+ throw new Error(`Failed to fetch marketObject`);
5061
+ const fields = marketObject.content.fields;
5062
+ const coinTypesPairs = SUPPORT_POOLS.reduce(
5063
+ (acc, pool) => {
5064
+ acc.push([pool, query.utils.parseCoinType(pool).substring(2)]);
5065
+ return acc;
5066
+ },
5067
+ []
5068
+ );
5069
+ const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
5070
+ const collateralStatsParentId = fields.collateral_stats.fields.table.fields.id.id;
5071
+ const borrowDynamicsParentid = fields.borrow_dynamics.fields.table.fields.id.id;
5072
+ const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
5073
+ const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
5074
+ const ADDRESS_TYPE = `0x1::type_name::TypeName`;
5075
+ const BORROW_FEE_TYPE = `0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da::market_dynamic_keys::BorrowFeeKey`;
5076
+ const SUPPLY_LIMIT_TYPE = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
5077
+ const BORROW_LIMIT_TYPE = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
5078
+ const ISOLATED_ASSET_KEY = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
5079
+ const fetchDynamicObject = async (parentId, type, value) => {
5080
+ try {
5081
+ return (await query.cache.queryGetDynamicFieldObject({
5082
+ parentId,
5083
+ name: {
5084
+ type,
5085
+ value
5086
+ }
5087
+ }))?.data?.objectId;
5088
+ } catch (_e) {
5089
+ return void 0;
5090
+ }
5091
+ };
5092
+ await Promise.all(
5093
+ coinTypesPairs.map(async ([coinName, coinType]) => {
5094
+ const addresses = await Promise.all([
5095
+ fetchDynamicObject(balanceSheetParentId, ADDRESS_TYPE, {
5096
+ name: coinType
5097
+ }),
5098
+ fetchDynamicObject(collateralStatsParentId, ADDRESS_TYPE, {
5099
+ name: coinType
5100
+ }),
5101
+ fetchDynamicObject(borrowDynamicsParentid, ADDRESS_TYPE, {
5102
+ name: coinType
5103
+ }),
5104
+ fetchDynamicObject(interestModelParentId, ADDRESS_TYPE, {
5105
+ name: coinType
5106
+ }),
5107
+ fetchDynamicObject(riskModelParentId, ADDRESS_TYPE, {
5108
+ name: coinType
5109
+ }),
5110
+ fetchDynamicObject(marketId, BORROW_FEE_TYPE, coinType),
5111
+ fetchDynamicObject(marketId, SUPPLY_LIMIT_TYPE, coinType),
5112
+ fetchDynamicObject(marketId, BORROW_LIMIT_TYPE, coinType),
5113
+ fetchDynamicObject(marketId, ISOLATED_ASSET_KEY, coinType)
5114
+ ]);
5115
+ const spool = query.address.get(
5116
+ // @ts-ignore
5117
+ `spool.pools.s${coinName}.id`
5118
+ );
5119
+ const rewardPool = query.address.get(
5120
+ // @ts-ignore
5121
+ `spool.pools.s${coinName}.rewardPoolId`
5122
+ );
5123
+ results[coinName] = {
5124
+ lendingPoolAddress: addresses[0],
5125
+ collateralPoolAddress: addresses[1],
5126
+ borrowDynamic: addresses[2],
5127
+ interestModel: addresses[3],
5128
+ riskModel: addresses[4],
5129
+ borrowFeeKey: addresses[5],
5130
+ supplyLimitKey: addresses[6],
5131
+ borrowLimitKey: addresses[7],
5132
+ isolatedAssetKey: addresses[8],
5133
+ spool,
5134
+ spoolReward: rewardPool
5135
+ };
5136
+ await new Promise((resolve) => setTimeout(resolve, 200));
5137
+ })
5138
+ );
5139
+ return results;
5140
+ };
5141
+
4733
5142
  // src/models/suiKit.ts
4734
5143
  import { SuiKit as SuiKit2 } from "@scallop-io/sui-kit";
4735
5144
  var newSuiKit = (params) => {
@@ -7080,6 +7489,7 @@ var ScallopQuery = class {
7080
7489
  }
7081
7490
  /* ==================== Core Query Methods ==================== */
7082
7491
  /**
7492
+ * @deprecated use getMarketPools
7083
7493
  * Query market data.
7084
7494
  * @param indexer - Whether to use indexer.
7085
7495
  * @return Market data.
@@ -7098,7 +7508,7 @@ var ScallopQuery = class {
7098
7508
  * @param indexer - Whether to use indexer.
7099
7509
  * @return Market pools data.
7100
7510
  */
7101
- async getMarketPools(poolCoinNames, args) {
7511
+ async getMarketPools(poolCoinNames = [...SUPPORT_POOLS], args) {
7102
7512
  return await getMarketPools(
7103
7513
  this,
7104
7514
  poolCoinNames,
@@ -7114,13 +7524,8 @@ var ScallopQuery = class {
7114
7524
  * @return Market pool data.
7115
7525
  */
7116
7526
  async getMarketPool(poolCoinName, args) {
7117
- return await getMarketPool(
7118
- this,
7119
- poolCoinName,
7120
- args?.indexer,
7121
- args?.marketObject,
7122
- args?.coinPrice
7123
- );
7527
+ const marketPools = await this.getMarketPools(void 0, args);
7528
+ return marketPools.pools[poolCoinName];
7124
7529
  }
7125
7530
  /**
7126
7531
  * Get market collaterals.
@@ -7558,7 +7963,7 @@ var ScallopQuery = class {
7558
7963
  * Get list of isolated assets
7559
7964
  */
7560
7965
  async getIsolatedAssets() {
7561
- return await getIsolatedAssets(this.address);
7966
+ return await getIsolatedAssets(this);
7562
7967
  }
7563
7968
  /**
7564
7969
  * Check if asset is an isolated asset
@@ -7581,6 +7986,13 @@ var ScallopQuery = class {
7581
7986
  async getAllCoinPrices(args) {
7582
7987
  return getAllCoinPrices(this, args?.marketPools, args?.coinPrices);
7583
7988
  }
7989
+ /**
7990
+ * Query all address (lending pool, collateral pool, borrow dynamics, interest models) of all pool
7991
+ * @returns
7992
+ */
7993
+ async getPoolAddresses() {
7994
+ return getAllAddresses(this);
7995
+ }
7584
7996
  };
7585
7997
 
7586
7998
  // src/models/scallopBuilder.ts