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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/constants/poolAddress.d.ts +14 -4
  2. package/dist/constants/queryKeys.d.ts +1 -2
  3. package/dist/constants/tokenBucket.d.ts +1 -1
  4. package/dist/index.js +714 -316
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +669 -271
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/models/scallopQuery.d.ts +20 -17
  9. package/dist/queries/coreQuery.d.ts +18 -19
  10. package/dist/queries/index.d.ts +2 -0
  11. package/dist/queries/isolatedAssetQuery.d.ts +2 -2
  12. package/dist/queries/objectsQuery.d.ts +3 -0
  13. package/dist/queries/poolAddressesQuery.d.ts +15 -0
  14. package/dist/types/query/core.d.ts +22 -5
  15. package/dist/types/utils.d.ts +7 -2
  16. package/dist/utils/core.d.ts +2 -0
  17. package/dist/utils/index.d.ts +1 -0
  18. package/dist/utils/util.d.ts +1 -0
  19. package/package.json +1 -1
  20. package/src/constants/enum.ts +6 -14
  21. package/src/constants/poolAddress.ts +290 -29
  22. package/src/constants/queryKeys.ts +5 -5
  23. package/src/constants/tokenBucket.ts +1 -1
  24. package/src/models/scallopCache.ts +34 -7
  25. package/src/models/scallopQuery.ts +24 -12
  26. package/src/queries/borrowIncentiveQuery.ts +1 -1
  27. package/src/queries/borrowLimitQuery.ts +2 -2
  28. package/src/queries/coreQuery.ts +378 -248
  29. package/src/queries/index.ts +2 -0
  30. package/src/queries/isolatedAssetQuery.ts +39 -33
  31. package/src/queries/objectsQuery.ts +20 -0
  32. package/src/queries/poolAddressesQuery.ts +134 -0
  33. package/src/queries/portfolioQuery.ts +14 -7
  34. package/src/queries/priceQuery.ts +3 -1
  35. package/src/queries/spoolQuery.ts +3 -1
  36. package/src/queries/supplyLimitQuery.ts +2 -2
  37. package/src/types/query/core.ts +21 -5
  38. package/src/types/utils.ts +8 -3
  39. package/src/utils/core.ts +11 -0
  40. package/src/utils/index.ts +1 -0
  41. package/src/utils/query.ts +16 -2
  42. package/src/utils/tokenBucket.ts +1 -1
  43. package/src/utils/util.ts +8 -0
package/dist/index.mjs CHANGED
@@ -279,19 +279,12 @@ var voloCoinIds = {
279
279
  vsui: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55"
280
280
  };
281
281
  var sCoinIds = {
282
- // prod values
283
- // ssui: '0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI',
284
- // swusdc:
285
- // '0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC',
286
- // swusdt:
287
- // '0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT',
288
- // ssca: '0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA',
289
- ssui: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
290
- swusdt: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
291
- swusdc: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
292
- ssca: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
293
282
  susdc: "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",
294
283
  ssbeth: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
284
+ ssui: "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",
285
+ swusdc: "0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
286
+ swusdt: "0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
287
+ ssca: "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",
295
288
  scetus: "0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",
296
289
  sweth: "0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
297
290
  safsui: "0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",
@@ -335,67 +328,213 @@ var FlashLoanFeeObjectMap = {
335
328
 
336
329
  // src/constants/poolAddress.ts
337
330
  var POOL_ADDRESSES = {
338
- usdc: {
339
- lendingPoolAddress: "0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",
340
- collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af"
341
- },
342
331
  sbeth: {
343
- lendingPoolAddress: "0x5f08c4f71d56dd3342c452cc70ffc47f2f4180146d821941b0b9c04761bb42e7",
344
- 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
345
343
  },
346
- weth: {
347
- lendingPoolAddress: "0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",
348
- 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"
349
356
  },
350
357
  wbtc: {
351
358
  lendingPoolAddress: "0x65cc08a5aca0a0b8d72e1993ded8d145f06dd102fd0d8f285b92934faed564ab",
352
- 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
353
369
  },
354
370
  wusdc: {
355
- lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
356
- 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"
357
395
  },
358
396
  wusdt: {
359
397
  lendingPoolAddress: "0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879",
360
- 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"
361
408
  },
362
409
  sui: {
363
410
  lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
364
- 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"
365
421
  },
366
422
  wapt: {
367
423
  lendingPoolAddress: "0xca8c14a24e0c32b198eaf479a3317461e3cc339097ce88eaf296a15df8dcfdf5",
368
- 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"
369
447
  },
370
448
  wsol: {
371
449
  lendingPoolAddress: "0x985682c42984cdfb03f9ff7d8923344c2fe096b1ae4b82ea17721af19d22a21f",
372
- 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
373
460
  },
374
461
  cetus: {
375
462
  lendingPoolAddress: "0xc09858f60e74a1b671635bec4e8a2c84a0ff313eb87f525fba3258e88c6b6282",
376
- collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a"
377
- },
378
- afsui: {
379
- lendingPoolAddress: "0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",
380
- 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"
381
473
  },
382
474
  hasui: {
383
475
  lendingPoolAddress: "0x7ebc607f6bdeb659fb6506cb91c5cc1d47bb365cfd5d2e637ea765346ec84ed4",
384
- 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"
385
486
  },
386
487
  vsui: {
387
488
  lendingPoolAddress: "0xda9257c0731d8822e8a438ebced13415850d705b779c79958dcf2aeb21fcb43d",
388
- 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"
389
499
  },
390
500
  sca: {
391
501
  lendingPoolAddress: "0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",
392
- collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31"
393
- },
394
- fud: {
395
- 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
396
512
  },
397
513
  deep: {
398
- 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
399
538
  }
400
539
  };
401
540
 
@@ -446,7 +585,11 @@ var queryKeys = {
446
585
  typeArgs: !typeArgs ? void 0 : JSON.stringify(typeArgs)
447
586
  }
448
587
  ],
449
- getObject: (objectId, walletAddress, options) => ["rpc", "getObject", { walletAddress, options, objectId }],
588
+ getObject: (objectId, options) => [
589
+ "rpc",
590
+ "getObject",
591
+ { options, objectId }
592
+ ],
450
593
  getObjects: (objectIds, walletAddress, options) => [
451
594
  "rpc",
452
595
  "getObjects",
@@ -979,7 +1122,7 @@ var TEST_ADDRESSES = {
979
1122
  };
980
1123
 
981
1124
  // src/constants/tokenBucket.ts
982
- var DEFAULT_TOKENS_PER_INTERVAL = 10;
1125
+ var DEFAULT_TOKENS_PER_INTERVAL = 50;
983
1126
  var DEFAULT_INTERVAL_IN_MS = 250;
984
1127
 
985
1128
  // src/constants/vesca.ts
@@ -1127,7 +1270,10 @@ var parseOriginMarketPoolData = (originMarketPoolData) => {
1127
1270
  borrowRateOnMidKink: Number(originMarketPoolData.borrowRateOnMidKink.value) / 2 ** 32,
1128
1271
  highKink: Number(originMarketPoolData.highKink.value) / 2 ** 32,
1129
1272
  midKink: Number(originMarketPoolData.midKink.value) / 2 ** 32,
1130
- minBorrowAmount: Number(originMarketPoolData.minBorrowAmount)
1273
+ minBorrowAmount: Number(originMarketPoolData.minBorrowAmount),
1274
+ isIsolated: originMarketPoolData.isIsolated,
1275
+ supplyLimit: Number(originMarketPoolData.supplyLimit),
1276
+ borrowLimit: Number(originMarketPoolData.borrowLimit)
1131
1277
  };
1132
1278
  };
1133
1279
  var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
@@ -1179,6 +1325,7 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
1179
1325
  borrowApyOnHighKink: utils.parseAprToApy(borrowAprOnHighKink),
1180
1326
  borrowAprOnMidKink,
1181
1327
  borrowApyOnMidKink: utils.parseAprToApy(borrowAprOnMidKink),
1328
+ coinDecimal,
1182
1329
  maxBorrowApr,
1183
1330
  maxBorrowApy: utils.parseAprToApy(maxBorrowApr),
1184
1331
  borrowApr: Math.min(borrowApr, maxBorrowApr),
@@ -1197,17 +1344,21 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
1197
1344
  utilizationRate: utilizationRate.toNumber(),
1198
1345
  supplyApr: supplyApr.toNumber(),
1199
1346
  supplyApy: utils.parseAprToApy(supplyApr.toNumber()),
1200
- 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()
1201
1351
  };
1202
1352
  };
1203
1353
  var parseOriginMarketCollateralData = (originMarketCollateralData) => {
1204
1354
  const divisor = 2 ** 32;
1205
1355
  return {
1206
1356
  coinType: normalizeStructTag(originMarketCollateralData.type.name),
1357
+ isIsolated: originMarketCollateralData.isIsolated,
1207
1358
  collateralFactor: Number(originMarketCollateralData.collateralFactor.value) / divisor,
1208
1359
  liquidationFactor: Number(originMarketCollateralData.liquidationFactor.value) / divisor,
1209
1360
  liquidationDiscount: Number(originMarketCollateralData.liquidationDiscount.value) / divisor,
1210
- liquidationPanelty: Number(originMarketCollateralData.liquidationPanelty.value) / divisor,
1361
+ liquidationPenalty: Number(originMarketCollateralData.liquidationPenalty.value) / divisor,
1211
1362
  liquidationReserveFactor: Number(originMarketCollateralData.liquidationReserveFactor.value) / divisor,
1212
1363
  maxCollateralAmount: Number(originMarketCollateralData.maxCollateralAmount),
1213
1364
  totalCollateralAmount: Number(
@@ -1227,6 +1378,8 @@ var calculateMarketCollateralData = (utils, parsedMarketCollateralData) => {
1227
1378
  parsedMarketCollateralData.totalCollateralAmount
1228
1379
  ).shiftedBy(-1 * coinDecimal);
1229
1380
  return {
1381
+ coinDecimal,
1382
+ isIsolated: parsedMarketCollateralData.isIsolated,
1230
1383
  maxDepositAmount: parsedMarketCollateralData.maxCollateralAmount,
1231
1384
  maxDepositCoin: maxCollateralCoin.toNumber(),
1232
1385
  depositAmount: parsedMarketCollateralData.totalCollateralAmount,
@@ -1557,6 +1710,13 @@ var findClosestUnlockRound = (unlockAtInSecondTimestamp) => {
1557
1710
  }
1558
1711
  return Math.floor(closestTwelveAM.getTime() / 1e3);
1559
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
+ };
1560
1720
 
1561
1721
  // src/utils/tokenBucket.ts
1562
1722
  var TokenBucket = class {
@@ -1593,7 +1753,6 @@ var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVA
1593
1753
  } else if (retries < maxRetries) {
1594
1754
  retries++;
1595
1755
  const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
1596
- console.error(`Rate limit exceeded, retrying in ${delay} ms`);
1597
1756
  await new Promise((resolve) => setTimeout(resolve, delay));
1598
1757
  return tryRequest();
1599
1758
  } else {
@@ -1629,6 +1788,16 @@ function withIndexerFallback(method) {
1629
1788
  };
1630
1789
  }
1631
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
+
1632
1801
  // src/models/scallopCache.ts
1633
1802
  var ScallopCache = class {
1634
1803
  constructor(suiKit, walletAddress, cacheOptions, tokenBucket, queryClient) {
@@ -1663,11 +1832,11 @@ var ScallopCache = class {
1663
1832
  })
1664
1833
  );
1665
1834
  }
1666
- retryFn(errCount, err) {
1667
- if (err.status === 429)
1668
- return true;
1669
- if (errCount >= 5)
1835
+ retryFn(errCount, e) {
1836
+ if (errCount === 5)
1670
1837
  return false;
1838
+ if (e.status === 429)
1839
+ return true;
1671
1840
  return false;
1672
1841
  }
1673
1842
  /**
@@ -1682,7 +1851,15 @@ var ScallopCache = class {
1682
1851
  typeArgs
1683
1852
  }) {
1684
1853
  const txBlock = new SuiTxBlock();
1685
- 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);
1686
1863
  const query = await this.queryClient.fetchQuery({
1687
1864
  retry: this.retryFn,
1688
1865
  retryDelay: 1e3,
@@ -1706,7 +1883,7 @@ var ScallopCache = class {
1706
1883
  return this.queryClient.fetchQuery({
1707
1884
  retry: this.retryFn,
1708
1885
  retryDelay: 1e3,
1709
- queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
1886
+ queryKey: queryKeys.rpc.getObject(objectId, options),
1710
1887
  queryFn: async () => {
1711
1888
  return await callWithRateLimit(
1712
1889
  this.tokenBucket,
@@ -1737,10 +1914,28 @@ var ScallopCache = class {
1737
1914
  options
1738
1915
  ),
1739
1916
  queryFn: async () => {
1740
- return await callWithRateLimit(
1917
+ const results = await callWithRateLimit(
1741
1918
  this.tokenBucket,
1742
1919
  async () => await this.suiKit.getObjects(objectIds, options)
1743
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;
1744
1939
  }
1745
1940
  });
1746
1941
  }
@@ -2509,7 +2704,7 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
2509
2704
  ...SUPPORT_BORROW_INCENTIVE_POOLS
2510
2705
  ], indexer = false, marketPools, coinPrices) => {
2511
2706
  const borrowIncentivePools = {};
2512
- marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices, indexer });
2707
+ marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices, indexer })).pools;
2513
2708
  coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools });
2514
2709
  if (indexer) {
2515
2710
  const borrowIncentivePoolsIndexer = await query.indexer.getBorrowIncentivePools();
@@ -2701,7 +2896,7 @@ var supplyLimitZod = zod.object({
2701
2896
  value: zod.string()
2702
2897
  })
2703
2898
  });
2704
- var supplyLimitKeyType = `0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d::market_dynamic_keys::SupplyLimitKey`;
2899
+ var supplyLimitKeyType = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
2705
2900
  var getSupplyLimit = async (utils, poolName) => {
2706
2901
  try {
2707
2902
  const poolCoinType = utils.parseCoinType(poolName).slice(2);
@@ -2741,10 +2936,15 @@ var isolatedAssetZod = zod2.object({
2741
2936
  value: zod2.boolean()
2742
2937
  })
2743
2938
  });
2744
- var isolatedAssetKeyType = `0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d::market_dynamic_keys::IsolatedAssetKey`;
2745
- var getIsolatedAssets = async (address) => {
2939
+ var isolatedAssetKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
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
+ }
2746
2946
  try {
2747
- const marketObject = address.get("core.market");
2947
+ const marketObject = query.address.get("core.market");
2748
2948
  const isolatedAssets = [];
2749
2949
  if (!marketObject)
2750
2950
  return isolatedAssets;
@@ -2754,7 +2954,7 @@ var getIsolatedAssets = async (address) => {
2754
2954
  return dynamicField.name.type === isolatedAssetKeyType;
2755
2955
  };
2756
2956
  do {
2757
- const response = await address.cache.queryGetDynamicFields({
2957
+ const response = await query.cache.queryGetDynamicFields({
2758
2958
  parentId: marketObject,
2759
2959
  cursor: nextCursor,
2760
2960
  limit: 10
@@ -2777,32 +2977,30 @@ var getIsolatedAssets = async (address) => {
2777
2977
  }
2778
2978
  };
2779
2979
  var isIsolatedAsset = async (utils, coinName) => {
2780
- try {
2781
- const marketObject = utils.address.get("core.market");
2782
- const cachedData = utils.address.cache.queryClient.getQueryData([
2783
- "getDynamicFields",
2784
- marketObject
2785
- ]);
2786
- if (cachedData) {
2787
- const coinType2 = utils.parseCoinType(coinName);
2788
- 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
2789
2998
  }
2790
- const coinType = utils.parseCoinType(coinName).slice(2);
2791
- const object = await utils.cache.queryGetDynamicFieldObject({
2792
- parentId: marketObject,
2793
- name: {
2794
- type: isolatedAssetKeyType,
2795
- value: coinType
2796
- }
2797
- });
2798
- const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
2799
- if (!parsedData.success)
2800
- return false;
2801
- return parsedData.data.fields.value;
2802
- } catch (e) {
2803
- console.error(e);
2999
+ });
3000
+ const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
3001
+ if (!parsedData.success)
2804
3002
  return false;
2805
- }
3003
+ return parsedData.data.fields.value;
2806
3004
  };
2807
3005
 
2808
3006
  // src/queries/borrowLimitQuery.ts
@@ -2821,7 +3019,7 @@ var borrowLimitZod = zod3.object({
2821
3019
  value: zod3.string()
2822
3020
  })
2823
3021
  });
2824
- var borrowLimitKeyType = `0xb784ea287d944e478a3ceaa071f8885072cce6b7224cf245914dc2f9963f460e::market_dynamic_keys::BorrowLimitKey`;
3022
+ var borrowLimitKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
2825
3023
  var getBorrowLimit = async (utils, poolName) => {
2826
3024
  try {
2827
3025
  const poolCoinType = utils.parseCoinType(poolName).slice(2);
@@ -2845,6 +3043,17 @@ var getBorrowLimit = async (utils, poolName) => {
2845
3043
  }
2846
3044
  };
2847
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
+
2848
3057
  // src/queries/coreQuery.ts
2849
3058
  var queryMarket = async (query, indexer = false, coinPrices) => {
2850
3059
  coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
@@ -2901,19 +3110,15 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2901
3110
  borrowRateOnMidKink: pool.borrowRateOnMidKink,
2902
3111
  highKink: pool.highKink,
2903
3112
  midKink: pool.midKink,
2904
- 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"
2905
3117
  });
2906
3118
  const calculatedMarketPoolData = calculateMarketPoolData(
2907
3119
  query.utils,
2908
3120
  parsedMarketPoolData
2909
3121
  );
2910
- const coinDecimal = query.utils.getCoinDecimal(poolCoinName);
2911
- const maxSupplyCoin = BigNumber3(
2912
- await getSupplyLimit(query.utils, poolCoinName) ?? "0"
2913
- ).shiftedBy(-coinDecimal).toNumber();
2914
- const maxBorrowCoin = BigNumber3(
2915
- await getBorrowLimit(query.utils, poolCoinName) ?? "0"
2916
- ).shiftedBy(-coinDecimal).toNumber();
2917
3122
  pools[poolCoinName] = {
2918
3123
  coinName: poolCoinName,
2919
3124
  symbol: query.utils.parseSymbol(poolCoinName),
@@ -2923,7 +3128,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2923
3128
  query.utils.parseMarketCoinName(poolCoinName)
2924
3129
  ),
2925
3130
  coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
2926
- coinDecimal,
2927
3131
  coinPrice,
2928
3132
  highKink: parsedMarketPoolData.highKink,
2929
3133
  midKink: parsedMarketPoolData.midKink,
@@ -2932,10 +3136,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2932
3136
  borrowFee: parsedMarketPoolData.borrowFee,
2933
3137
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
2934
3138
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
2935
- isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2936
- // isIsolated: false,
2937
- maxSupplyCoin,
2938
- maxBorrowCoin,
2939
3139
  ...calculatedMarketPoolData
2940
3140
  };
2941
3141
  }
@@ -2951,10 +3151,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2951
3151
  collateralFactor: collateral.collateralFactor,
2952
3152
  liquidationFactor: collateral.liquidationFactor,
2953
3153
  liquidationDiscount: collateral.liquidationDiscount,
2954
- liquidationPanelty: collateral.liquidationPanelty,
3154
+ liquidationPenalty: collateral.liquidationPanelty,
2955
3155
  liquidationReserveFactor: collateral.liquidationReserveFactor,
2956
3156
  maxCollateralAmount: collateral.maxCollateralAmount,
2957
- totalCollateralAmount: collateral.totalCollateralAmount
3157
+ totalCollateralAmount: collateral.totalCollateralAmount,
3158
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
2958
3159
  });
2959
3160
  const calculatedMarketCollateralData = calculateMarketCollateralData(
2960
3161
  query.utils,
@@ -2966,14 +3167,12 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2966
3167
  coinType,
2967
3168
  marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
2968
3169
  coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
2969
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
2970
3170
  coinPrice,
2971
3171
  collateralFactor: parsedMarketCollateralData.collateralFactor,
2972
3172
  liquidationFactor: parsedMarketCollateralData.liquidationFactor,
2973
3173
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
2974
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3174
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
2975
3175
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
2976
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
2977
3176
  ...calculatedMarketCollateralData
2978
3177
  };
2979
3178
  }
@@ -2983,44 +3182,216 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2983
3182
  // data: marketData,
2984
3183
  };
2985
3184
  };
2986
- var getMarketPools = async (query, poolCoinNames = [...SUPPORT_POOLS], indexer = false, coinPrices) => {
2987
- const marketId = query.address.get("core.market");
2988
- const marketObjectResponse = await query.cache.queryGetObject(marketId, {
2989
- showContent: true
2990
- });
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) => {
2991
3286
  coinPrices = coinPrices ?? await query.utils.getCoinPrices();
2992
- const marketPools = {};
3287
+ const pools = {};
3288
+ const collaterals = {};
2993
3289
  if (indexer) {
2994
- const marketPoolsIndexer = await query.indexer.getMarketPools();
2995
- const updateMarketPool = (marketPool) => {
2996
- if (!poolCoinNames.includes(marketPool.coinName))
2997
- return;
2998
- marketPool.coinPrice = coinPrices[marketPool.coinName] ?? marketPool.coinPrice;
2999
- marketPool.coinWrappedType = query.utils.getCoinWrappedType(
3000
- marketPool.coinName
3001
- );
3002
- 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
3003
3306
  };
3004
- Object.values(marketPoolsIndexer).forEach(updateMarketPool);
3005
- return marketPools;
3006
3307
  }
3308
+ const requiredObjects = await queryRequiredMarketObjects(
3309
+ query,
3310
+ poolCoinNames
3311
+ );
3007
3312
  await Promise.allSettled(
3008
3313
  poolCoinNames.map(async (poolCoinName) => {
3009
- const marketPool = await getMarketPool(
3010
- query,
3011
- poolCoinName,
3012
- indexer,
3013
- marketObjectResponse?.data,
3014
- coinPrices?.[poolCoinName]
3015
- );
3016
- if (marketPool) {
3017
- 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);
3018
3330
  }
3019
3331
  })
3020
3332
  );
3021
- return marketPools;
3333
+ return {
3334
+ pools,
3335
+ collaterals
3336
+ };
3022
3337
  };
3023
- var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
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
+ };
3393
+ };
3394
+ var getMarketPool = async (query, poolCoinName, indexer = false, coinPrice, requiredObjects) => {
3024
3395
  coinPrice = coinPrice ?? (await query.utils.getCoinPrices())?.[poolCoinName];
3025
3396
  if (indexer) {
3026
3397
  const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
@@ -3031,135 +3402,70 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
3031
3402
  marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
3032
3403
  marketPoolIndexer.coinName
3033
3404
  );
3034
- return marketPoolIndexer;
3035
- }
3036
- const marketId = query.address.get("core.market");
3037
- marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
3038
- showContent: true
3039
- }))?.data;
3040
- if (!(marketObject && marketObject.content?.dataType === "moveObject"))
3041
- throw new Error(`Failed to fetch marketObject`);
3042
- const fields = marketObject.content.fields;
3043
- const coinType = query.utils.parseCoinType(poolCoinName);
3044
- const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
3045
- const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3046
- parentId: balanceSheetParentId,
3047
- name: {
3048
- type: "0x1::type_name::TypeName",
3049
- value: {
3050
- name: coinType.substring(2)
3051
- }
3052
- }
3053
- });
3054
- const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
3055
- if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
3056
- throw new Error(
3057
- `Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
3058
- );
3059
- const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
3060
- const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
3061
- const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3062
- parentId: borrowIndexParentId,
3063
- name: {
3064
- type: "0x1::type_name::TypeName",
3065
- value: {
3066
- name: coinType.substring(2)
3067
- }
3068
- }
3069
- });
3070
- const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
3071
- if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
3072
- throw new Error(
3073
- `Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
3074
- );
3075
- const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
3076
- const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
3077
- const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3078
- parentId: interestModelParentId,
3079
- name: {
3080
- type: "0x1::type_name::TypeName",
3081
- value: {
3082
- name: coinType.substring(2)
3083
- }
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
+ );
3084
3414
  }
3085
- });
3086
- const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse?.data;
3087
- if (!(interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content))
3088
- throw new Error(
3089
- `Failed to fetch interestModelDynamicFieldObject for ${poolCoinName}: ${interestModelDynamicFieldObject}`
3090
- );
3091
- const interestModel = interestModelDynamicFieldObject.content.fields.value.fields;
3092
- const getBorrowFee = async () => {
3093
- const borrowFeeDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3094
- parentId: marketId,
3095
- name: {
3096
- type: `${BORROW_FEE_PROTOCOL_ID}::market_dynamic_keys::BorrowFeeKey`,
3097
- value: {
3098
- type: {
3099
- name: coinType.substring(2)
3100
- }
3101
- }
3102
- }
3103
- });
3104
- const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
3105
- if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
3106
- return { value: "0" };
3107
- return borrowFeeDynamicFieldObject.content.fields.value.fields;
3108
- };
3109
- const parsedMarketPoolData = parseOriginMarketPoolData({
3110
- type: interestModel.type.fields,
3111
- maxBorrowRate: interestModel.max_borrow_rate.fields,
3112
- interestRate: borrowIndex.interest_rate.fields,
3113
- interestRateScale: borrowIndex.interest_rate_scale,
3114
- borrowIndex: borrowIndex.borrow_index,
3115
- lastUpdated: borrowIndex.last_updated,
3116
- cash: balanceSheet.cash,
3117
- debt: balanceSheet.debt,
3118
- marketCoinSupply: balanceSheet.market_coin_supply,
3119
- reserve: balanceSheet.revenue,
3120
- reserveFactor: interestModel.revenue_factor.fields,
3121
- borrowWeight: interestModel.borrow_weight.fields,
3122
- borrowFeeRate: await getBorrowFee(),
3123
- baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
3124
- borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
3125
- borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
3126
- highKink: interestModel.high_kink.fields,
3127
- midKink: interestModel.mid_kink.fields,
3128
- minBorrowAmount: interestModel.min_borrow_amount
3129
- });
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
+ );
3130
3425
  const calculatedMarketPoolData = calculateMarketPoolData(
3131
3426
  query.utils,
3132
3427
  parsedMarketPoolData
3133
3428
  );
3134
- const coinDecimal = query.utils.getCoinDecimal(poolCoinName);
3135
- const maxSupplyCoin = BigNumber3(
3136
- await getSupplyLimit(query.utils, poolCoinName) ?? "0"
3137
- ).shiftedBy(-coinDecimal).toNumber();
3138
- const maxBorrowCoin = BigNumber3(
3139
- await getBorrowLimit(query.utils, poolCoinName) ?? "0"
3140
- ).shiftedBy(-coinDecimal).toNumber();
3141
- return {
3429
+ const parsedMarketCollateralData = parsedMarketPoolObjects.parsedOriginMarketCollateral ? parseOriginMarketCollateralData(
3430
+ parsedMarketPoolObjects.parsedOriginMarketCollateral
3431
+ ) : void 0;
3432
+ const basePoolData = () => ({
3142
3433
  coinName: poolCoinName,
3143
3434
  symbol: query.utils.parseSymbol(poolCoinName),
3144
- coinType: query.utils.parseCoinType(poolCoinName),
3145
3435
  marketCoinType: query.utils.parseMarketCoinType(poolCoinName),
3146
- sCoinType: query.utils.parseSCoinType(
3147
- query.utils.parseMarketCoinName(poolCoinName)
3148
- ),
3149
- coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3150
- coinDecimal,
3151
- coinPrice: coinPrice ?? 0,
3152
- highKink: parsedMarketPoolData.highKink,
3153
- midKink: parsedMarketPoolData.midKink,
3154
- reserveFactor: parsedMarketPoolData.reserveFactor,
3155
- borrowWeight: parsedMarketPoolData.borrowWeight,
3156
- borrowFee: parsedMarketPoolData.borrowFee,
3157
- marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
3158
- minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
3159
- maxSupplyCoin,
3160
- maxBorrowCoin,
3161
- isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3162
- ...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
3163
3469
  };
3164
3470
  };
3165
3471
  var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
@@ -3254,10 +3560,11 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
3254
3560
  collateralFactor: riskModel.collateral_factor.fields,
3255
3561
  liquidationFactor: riskModel.liquidation_factor.fields,
3256
3562
  liquidationDiscount: riskModel.liquidation_discount.fields,
3257
- liquidationPanelty: riskModel.liquidation_penalty.fields,
3563
+ liquidationPenalty: riskModel.liquidation_penalty.fields,
3258
3564
  liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
3259
3565
  maxCollateralAmount: riskModel.max_collateral_amount,
3260
- totalCollateralAmount: collateralStat.amount
3566
+ totalCollateralAmount: collateralStat.amount,
3567
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
3261
3568
  });
3262
3569
  const calculatedMarketCollateralData = calculateMarketCollateralData(
3263
3570
  query.utils,
@@ -3269,14 +3576,12 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
3269
3576
  coinType: query.utils.parseCoinType(collateralCoinName),
3270
3577
  marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
3271
3578
  coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
3272
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
3273
3579
  coinPrice: coinPrice ?? 0,
3274
3580
  collateralFactor: parsedMarketCollateralData.collateralFactor,
3275
3581
  liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3276
3582
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3277
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3583
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
3278
3584
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3279
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
3280
3585
  ...calculatedMarketCollateralData
3281
3586
  };
3282
3587
  };
@@ -3517,10 +3822,10 @@ var getLendings = async (query, poolCoinNames = [...SUPPORT_POOLS], ownerAddress
3517
3822
  (marketCoinName) => SUPPORT_SPOOLS.includes(marketCoinName)
3518
3823
  );
3519
3824
  const coinPrices = await query.utils.getCoinPrices();
3520
- const marketPools = await query.getMarketPools(poolCoinNames, {
3825
+ const marketPools = (await query.getMarketPools(poolCoinNames, {
3521
3826
  indexer,
3522
3827
  coinPrices
3523
- });
3828
+ })).pools;
3524
3829
  const spools = await query.getSpools(stakeMarketCoinNames, {
3525
3830
  indexer,
3526
3831
  marketPools,
@@ -3689,7 +3994,7 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
3689
3994
  };
3690
3995
  var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
3691
3996
  const coinPrices = await query.utils.getCoinPrices();
3692
- const market = await query.queryMarket({ indexer, coinPrices });
3997
+ const market = await query.getMarketPools(void 0, { coinPrices, indexer });
3693
3998
  const [coinAmounts, obligations] = await Promise.all([
3694
3999
  query.getCoinAmounts(void 0, ownerAddress),
3695
4000
  query.getObligations(ownerAddress)
@@ -3717,7 +4022,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
3717
4022
  const collateralAssetCoinNames = [
3718
4023
  ...SUPPORT_COLLATERALS
3719
4024
  ];
3720
- market = market ?? await query.queryMarket({ indexer });
4025
+ market = market ?? await query.getMarketPools(void 0, { indexer });
3721
4026
  coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools: market.pools });
3722
4027
  coinAmounts = coinAmounts || await query.getCoinAmounts(coinNames, ownerAddress);
3723
4028
  const [obligationQuery, borrowIncentivePools, borrowIncentiveAccounts] = await Promise.all([
@@ -4008,7 +4313,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
4008
4313
  return obligationAccount;
4009
4314
  };
4010
4315
  var getTotalValueLocked = async (query, indexer = false) => {
4011
- const market = await query.queryMarket({ indexer });
4316
+ const market = await query.getMarketPools(void 0, { indexer });
4012
4317
  let supplyValue = BigNumber5(0);
4013
4318
  let borrowValue = BigNumber5(0);
4014
4319
  if (indexer) {
@@ -4129,7 +4434,7 @@ var getPythPrices = async ({
4129
4434
  };
4130
4435
  var getAllCoinPrices = async (query, marketPools, coinPrices) => {
4131
4436
  coinPrices = coinPrices ?? await query.utils.getCoinPrices();
4132
- marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices });
4437
+ marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices })).pools;
4133
4438
  if (!marketPools) {
4134
4439
  throw new Error(`Failed to fetch market pool for getAllCoinPrices`);
4135
4440
  }
@@ -4260,7 +4565,7 @@ var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexe
4260
4565
  (stakeMarketCoinName) => query.utils.parseCoinName(stakeMarketCoinName)
4261
4566
  );
4262
4567
  coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
4263
- marketPools = marketPools ?? await query.getMarketPools(stakeCoinNames, { indexer });
4568
+ marketPools = marketPools ?? (await query.getMarketPools(stakeCoinNames, { indexer })).pools;
4264
4569
  if (!marketPools)
4265
4570
  throw new Error(`Fail to fetch marketPools for ${stakeCoinNames}`);
4266
4571
  const spools = {};
@@ -4744,6 +5049,96 @@ var getVeScaTreasuryInfo = async (utils) => {
4744
5049
  };
4745
5050
  };
4746
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
+
4747
5142
  // src/models/suiKit.ts
4748
5143
  import { SuiKit as SuiKit2 } from "@scallop-io/sui-kit";
4749
5144
  var newSuiKit = (params) => {
@@ -7094,6 +7489,7 @@ var ScallopQuery = class {
7094
7489
  }
7095
7490
  /* ==================== Core Query Methods ==================== */
7096
7491
  /**
7492
+ * @deprecated use getMarketPools
7097
7493
  * Query market data.
7098
7494
  * @param indexer - Whether to use indexer.
7099
7495
  * @return Market data.
@@ -7112,7 +7508,7 @@ var ScallopQuery = class {
7112
7508
  * @param indexer - Whether to use indexer.
7113
7509
  * @return Market pools data.
7114
7510
  */
7115
- async getMarketPools(poolCoinNames, args) {
7511
+ async getMarketPools(poolCoinNames = [...SUPPORT_POOLS], args) {
7116
7512
  return await getMarketPools(
7117
7513
  this,
7118
7514
  poolCoinNames,
@@ -7128,13 +7524,8 @@ var ScallopQuery = class {
7128
7524
  * @return Market pool data.
7129
7525
  */
7130
7526
  async getMarketPool(poolCoinName, args) {
7131
- return await getMarketPool(
7132
- this,
7133
- poolCoinName,
7134
- args?.indexer,
7135
- args?.marketObject,
7136
- args?.coinPrice
7137
- );
7527
+ const marketPools = await this.getMarketPools(void 0, args);
7528
+ return marketPools.pools[poolCoinName];
7138
7529
  }
7139
7530
  /**
7140
7531
  * Get market collaterals.
@@ -7572,7 +7963,7 @@ var ScallopQuery = class {
7572
7963
  * Get list of isolated assets
7573
7964
  */
7574
7965
  async getIsolatedAssets() {
7575
- return await getIsolatedAssets(this.address);
7966
+ return await getIsolatedAssets(this);
7576
7967
  }
7577
7968
  /**
7578
7969
  * Check if asset is an isolated asset
@@ -7595,6 +7986,13 @@ var ScallopQuery = class {
7595
7986
  async getAllCoinPrices(args) {
7596
7987
  return getAllCoinPrices(this, args?.marketPools, args?.coinPrices);
7597
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
+ }
7598
7996
  };
7599
7997
 
7600
7998
  // src/models/scallopBuilder.ts