@scallop-io/sui-scallop-sdk 1.4.1-alpha.1 → 1.4.2-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 (88) hide show
  1. package/dist/constants/common.d.ts +4 -4
  2. package/dist/constants/enum.d.ts +2 -2
  3. package/dist/constants/poolAddress.d.ts +16 -4
  4. package/dist/constants/queryKeys.d.ts +2 -2
  5. package/dist/constants/tokenBucket.d.ts +2 -2
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.js +1314 -653
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.mjs +1269 -609
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/models/scallopBuilder.d.ts +2 -1
  12. package/dist/models/scallopCache.d.ts +2 -0
  13. package/dist/models/scallopQuery.d.ts +46 -20
  14. package/dist/models/scallopUtils.d.ts +5 -3
  15. package/dist/queries/borrowIncentiveQuery.d.ts +12 -0
  16. package/dist/queries/coreQuery.d.ts +18 -17
  17. package/dist/queries/index.d.ts +2 -0
  18. package/dist/queries/isolatedAssetQuery.d.ts +2 -2
  19. package/dist/queries/objectsQuery.d.ts +3 -0
  20. package/dist/queries/poolAddressesQuery.d.ts +18 -0
  21. package/dist/queries/portfolioQuery.d.ts +2 -0
  22. package/dist/queries/priceQuery.d.ts +4 -0
  23. package/dist/queries/sCoinQuery.d.ts +1 -1
  24. package/dist/queries/spoolQuery.d.ts +6 -2
  25. package/dist/test.d.ts +1 -0
  26. package/dist/types/builder/borrowIncentive.d.ts +5 -5
  27. package/dist/types/builder/core.d.ts +20 -16
  28. package/dist/types/builder/loyaltyProgram.d.ts +1 -1
  29. package/dist/types/builder/referral.d.ts +4 -4
  30. package/dist/types/builder/sCoin.d.ts +2 -2
  31. package/dist/types/builder/spool.d.ts +4 -4
  32. package/dist/types/builder/vesca.d.ts +6 -6
  33. package/dist/types/query/core.d.ts +22 -5
  34. package/dist/types/query/spool.d.ts +20 -0
  35. package/dist/types/utils.d.ts +7 -2
  36. package/dist/utils/core.d.ts +2 -0
  37. package/dist/utils/index.d.ts +2 -0
  38. package/dist/utils/query.d.ts +1 -1
  39. package/dist/utils/util.d.ts +1 -0
  40. package/package.json +7 -7
  41. package/src/builders/borrowIncentiveBuilder.ts +28 -15
  42. package/src/builders/coreBuilder.ts +76 -49
  43. package/src/builders/loyaltyProgramBuilder.ts +4 -3
  44. package/src/builders/referralBuilder.ts +23 -10
  45. package/src/builders/sCoinBuilder.ts +8 -6
  46. package/src/builders/spoolBuilder.ts +21 -14
  47. package/src/builders/vescaBuilder.ts +23 -13
  48. package/src/constants/coinGecko.ts +2 -3
  49. package/src/constants/common.ts +5 -19
  50. package/src/constants/enum.ts +20 -35
  51. package/src/constants/poolAddress.ts +344 -19
  52. package/src/constants/pyth.ts +2 -3
  53. package/src/constants/queryKeys.ts +9 -5
  54. package/src/constants/testAddress.ts +42 -0
  55. package/src/constants/tokenBucket.ts +2 -2
  56. package/src/index.ts +1 -0
  57. package/src/models/scallopBuilder.ts +59 -2
  58. package/src/models/scallopCache.ts +171 -19
  59. package/src/models/scallopClient.ts +16 -10
  60. package/src/models/scallopQuery.ts +36 -28
  61. package/src/models/scallopUtils.ts +11 -4
  62. package/src/queries/borrowIncentiveQuery.ts +6 -8
  63. package/src/queries/borrowLimitQuery.ts +3 -3
  64. package/src/queries/coreQuery.ts +408 -258
  65. package/src/queries/index.ts +2 -0
  66. package/src/queries/isolatedAssetQuery.ts +39 -34
  67. package/src/queries/objectsQuery.ts +20 -0
  68. package/src/queries/poolAddressesQuery.ts +146 -0
  69. package/src/queries/portfolioQuery.ts +31 -13
  70. package/src/queries/priceQuery.ts +3 -1
  71. package/src/queries/spoolQuery.ts +189 -122
  72. package/src/queries/supplyLimitQuery.ts +2 -3
  73. package/src/test.ts +14 -17
  74. package/src/types/builder/borrowIncentive.ts +8 -5
  75. package/src/types/builder/core.ts +23 -17
  76. package/src/types/builder/loyaltyProgram.ts +1 -1
  77. package/src/types/builder/referral.ts +6 -4
  78. package/src/types/builder/sCoin.ts +2 -2
  79. package/src/types/builder/spool.ts +4 -4
  80. package/src/types/builder/vesca.ts +9 -6
  81. package/src/types/query/core.ts +21 -5
  82. package/src/types/query/spool.ts +21 -0
  83. package/src/types/utils.ts +8 -3
  84. package/src/utils/core.ts +18 -0
  85. package/src/utils/index.ts +2 -0
  86. package/src/utils/query.ts +21 -5
  87. package/src/utils/tokenBucket.ts +9 -29
  88. package/src/utils/util.ts +8 -0
package/dist/index.js CHANGED
@@ -71,9 +71,11 @@ __export(src_exports, {
71
71
  ScallopQuery: () => ScallopQuery,
72
72
  ScallopUtils: () => ScallopUtils,
73
73
  TEST_ADDRESSES: () => TEST_ADDRESSES,
74
+ TokenBucket: () => TokenBucket,
74
75
  UNLOCK_ROUND_DURATION: () => UNLOCK_ROUND_DURATION,
75
76
  USE_TEST_ADDRESS: () => USE_TEST_ADDRESS,
76
77
  assetCoins: () => assetCoins,
78
+ callWithRateLimit: () => callWithRateLimit,
77
79
  coinDecimals: () => coinDecimals,
78
80
  coinIds: () => coinIds,
79
81
  marketCoins: () => marketCoins,
@@ -115,10 +117,9 @@ var COIN_GECKGO_IDS = {
115
117
  afsui: "sui",
116
118
  hasui: "sui",
117
119
  vsui: "sui",
118
- sca: "scallop-2"
119
- // TODO: enable for production
120
- // deep: 'deepbook',
121
- // fud: 'fud-the-pug',
120
+ sca: "scallop-2",
121
+ deep: "deepbook",
122
+ fud: "fud-the-pug"
122
123
  };
123
124
 
124
125
  // src/constants/common.ts
@@ -147,10 +148,9 @@ var SUPPORT_POOLS = [
147
148
  "afsui",
148
149
  "hasui",
149
150
  "vsui",
150
- "sca"
151
- // TODO: enable for production
152
- // 'fud',
153
- // 'deep',
151
+ "sca",
152
+ "fud",
153
+ "deep"
154
154
  ];
155
155
  var SUPPORT_COLLATERALS = [
156
156
  "usdc",
@@ -194,10 +194,9 @@ var SUPPORT_SCOIN = [
194
194
  "ssca",
195
195
  "scetus",
196
196
  "swsol",
197
- "swbtc"
198
- // TODO: enable for production
199
- // 'sdeep',
200
- // 'sfud',
197
+ "swbtc",
198
+ "sdeep",
199
+ "sfud"
201
200
  ];
202
201
  var SUPPORT_SUI_BRIDGE = ["sbeth"];
203
202
  var SUPPORT_WORMHOLE = [
@@ -209,18 +208,7 @@ var SUPPORT_WORMHOLE = [
209
208
  "wsol"
210
209
  ];
211
210
  var SUPPORT_SPOOLS_REWARDS = ["sui"];
212
- var SUPPORT_BORROW_INCENTIVE_POOLS = [
213
- "sui",
214
- "wusdc",
215
- "wusdt",
216
- "afsui",
217
- "hasui",
218
- "vsui",
219
- "weth",
220
- "sbeth",
221
- "sca",
222
- "usdc"
223
- ];
211
+ var SUPPORT_BORROW_INCENTIVE_POOLS = [...SUPPORT_POOLS];
224
212
  var SUPPORT_BORROW_INCENTIVE_REWARDS = [
225
213
  ...SUPPORT_POOLS,
226
214
  ...SUPPORT_SCOIN
@@ -257,9 +245,8 @@ var coinDecimals = {
257
245
  hasui: 9,
258
246
  vsui: 9,
259
247
  sca: 9,
260
- // TODO: enable for production
261
- // deep: 6,
262
- // fud: 5,
248
+ deep: 6,
249
+ fud: 5,
263
250
  susdc: 6,
264
251
  sweth: 8,
265
252
  ssbeth: 8,
@@ -273,10 +260,9 @@ var coinDecimals = {
273
260
  safsui: 9,
274
261
  shasui: 9,
275
262
  svsui: 9,
276
- ssca: 9
277
- // TODO: enable for production
278
- // sdeep: 6,
279
- // sfud: 5,
263
+ ssca: 9,
264
+ sdeep: 6,
265
+ sfud: 5
280
266
  };
281
267
  var assetCoins = {
282
268
  usdc: "usdc",
@@ -292,10 +278,9 @@ var assetCoins = {
292
278
  afsui: "afsui",
293
279
  hasui: "hasui",
294
280
  vsui: "vsui",
295
- sca: "sca"
296
- // TODO: enable for production
297
- // deep: 'deep',
298
- // fud: 'fud',
281
+ sca: "sca",
282
+ deep: "deep",
283
+ fud: "fud"
299
284
  };
300
285
  var marketCoins = {
301
286
  susdc: "susdc",
@@ -311,10 +296,9 @@ var marketCoins = {
311
296
  safsui: "safsui",
312
297
  shasui: "shasui",
313
298
  svsui: "svsui",
314
- ssca: "ssca"
315
- // TODO: enable for production
316
- // sdeep: 'sdeep',
317
- // sfud: 'sfud',
299
+ ssca: "ssca",
300
+ sdeep: "sdeep",
301
+ sfud: "sfud"
318
302
  };
319
303
  var sCoins = {
320
304
  susdc: "susdc",
@@ -329,10 +313,9 @@ var sCoins = {
329
313
  svsui: "svsui",
330
314
  ssca: "ssca",
331
315
  swsol: "swsol",
332
- swbtc: "swbtc"
333
- // TODO: enable for production
334
- // sfud: 'sfud',
335
- // sdeep: 'sdeep',
316
+ swbtc: "swbtc",
317
+ sfud: "sfud",
318
+ sdeep: "sdeep"
336
319
  };
337
320
  var stakeMarketCoins = {
338
321
  susdc: "susdc",
@@ -373,10 +356,10 @@ var coinIds = {
373
356
  afsui: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
374
357
  hasui: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
375
358
  vsui: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
376
- sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6"
359
+ sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
377
360
  // isolated assets
378
- // deep: '0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270',
379
- // fud: '0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1',
361
+ deep: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",
362
+ fud: "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1"
380
363
  };
381
364
  var wormholeCoinIds = {
382
365
  weth: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
@@ -392,28 +375,19 @@ var voloCoinIds = {
392
375
  var sCoinIds = {
393
376
  susdc: "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",
394
377
  ssbeth: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
395
- // prod values
396
- // ssui: '0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI',
397
- // swusdc:
398
- // '0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC',
399
- // swusdt:
400
- // '0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT',
401
- // ssca: '0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA',
402
- // test values
403
- ssui: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
404
- swusdt: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
405
- swusdc: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
406
- ssca: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
378
+ ssui: "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",
379
+ swusdc: "0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
380
+ swusdt: "0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
381
+ ssca: "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",
407
382
  scetus: "0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",
408
383
  sweth: "0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
409
384
  safsui: "0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",
410
385
  shasui: "0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",
411
386
  svsui: "0xe1a1cc6bcf0001a015eab84bcc6713393ce20535f55b8b6f35c142e057a25fbe::scallop_v_sui::SCALLOP_V_SUI",
412
387
  swsol: "0x1392650f2eca9e3f6ffae3ff89e42a3590d7102b80e2b430f674730bc30d3259::scallop_wormhole_sol::SCALLOP_WORMHOLE_SOL",
413
- swbtc: "0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC"
414
- // sdeep:
415
- // '0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP',
416
- // sfud: '0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD',
388
+ swbtc: "0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC",
389
+ sdeep: "0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",
390
+ sfud: "0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD"
417
391
  };
418
392
  var sCoinTypeToName = Object.entries(sCoinIds).reduce(
419
393
  (acc, [coinName, coinType]) => {
@@ -450,69 +424,244 @@ var FlashLoanFeeObjectMap = {
450
424
  var POOL_ADDRESSES = {
451
425
  usdc: {
452
426
  lendingPoolAddress: "0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",
453
- collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af"
427
+ collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af",
428
+ borrowDynamic: "0x77837ecd4f26fac9a410fff594f2c0bd3288904a15492ca77cb8a52684dbb866",
429
+ interestModel: "0xaae3f179d63009380cbdcb9acb12907afc9c3cb79cc3460be296a9c6d28f3ff3",
430
+ riskModel: "0x198b24db213bfeb8b3c80ae63dde92e32fd24984d25da8233ff777b851edd574",
431
+ borrowFeeKey: "0xd37c5316cfe0a5967d14264fa6b423f880518b294a1ee6581ccbb49ccc401fb8",
432
+ supplyLimitKey: "0x4be9ae54ac4d320f4f9c14cae78cb85c8e0e67791dd9bdba6d2db20614a28a24",
433
+ borrowLimitKey: "0x6b01093cba95b835181f00e3a2c31ed8dfc8d64fe3db0fb80933a09f66e1ccf1",
434
+ isolatedAssetKey: void 0,
435
+ spool: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
436
+ spoolReward: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166",
437
+ sCoinTreasury: "0xbe6b63021f3d82e0e7e977cdd718ed7c019cf2eba374b7b546220402452f938e",
438
+ coinDecimalId: "0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6"
454
439
  },
455
440
  sbeth: {
456
- lendingPoolAddress: "0x5f08c4f71d56dd3342c452cc70ffc47f2f4180146d821941b0b9c04761bb42e7",
457
- collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f"
441
+ lendingPoolAddress: "0xaa34c938e0394e5186c7dc626ad69be96af2194b23fdc6ac1c63090e399f5ba4",
442
+ collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f",
443
+ borrowDynamic: "0x7bbe75e8b924229f2f2110838ff612ea66e670fa3766759515dee78f617b1ea3",
444
+ interestModel: "0x9e6cae260d05155785a1904d24e6abc98368509c5752c8a9cec15a35aabc1512",
445
+ riskModel: "0xcf10334cfee675ecea2d2fee37b0f7cd2835c84b8b5692a853021debe6af80ab",
446
+ borrowFeeKey: "0x4298c8b6afe7a42a8e3ff93773fb9769529fe6d37e085ab411acf2ba2a44a931",
447
+ supplyLimitKey: "0x812fe508b78d3e0817149c0b39976221ddb267b5cc9514e81679f9b9a2f3624c",
448
+ borrowLimitKey: "0x165c274c67eda2b0d13563124741fffd0ce7d643f4c1c4b59d7e53a83796ae25",
449
+ isolatedAssetKey: void 0,
450
+ spool: void 0,
451
+ spoolReward: void 0,
452
+ sCoinTreasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed",
453
+ coinDecimalId: "0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0"
458
454
  },
459
455
  weth: {
460
456
  lendingPoolAddress: "0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",
461
- collateralPoolAddress: "0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf"
457
+ collateralPoolAddress: "0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf",
458
+ borrowDynamic: "0xd1578e1d1c9c82eb4c5bf14beece8142a67a683b2647d7276e92984119fc1445",
459
+ interestModel: "0xa1dc08541cd2cb7cfb4e56272292d5c6a4780e80fd210c58abffae98268b5ed9",
460
+ riskModel: "0x9f05a25fd33a9e8cf33962126b175d038e184f0ee1b87dc41d4cedbe6abebbe5",
461
+ borrowFeeKey: "0x29672ba8ab4625b8181d8ed739e5344de22a97d417748c4d1276c7379283d7a3",
462
+ supplyLimitKey: "0x2b957941bdc9432bbc83ab74dc194b6ebb7c927bc4c6926a5492b5503499e509",
463
+ borrowLimitKey: "0x51f256d87e51a7ca2b1c482923096f4b6dac6beac89d8ecf4c65b7d5764115d6",
464
+ isolatedAssetKey: void 0,
465
+ spool: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
466
+ spoolReward: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077",
467
+ sCoinTreasury: "0x4b7f5da0e306c9d52490a0c1d4091e653d6b89778b9b4f23c877e534e4d9cd21",
468
+ coinDecimalId: "0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f"
462
469
  },
463
470
  wbtc: {
464
471
  lendingPoolAddress: "0x65cc08a5aca0a0b8d72e1993ded8d145f06dd102fd0d8f285b92934faed564ab",
465
- collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3"
472
+ collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3",
473
+ borrowDynamic: "0x6f97dcf54158a5d08f359a213a41e347bc1e6316414288dc1e1b674dc008742e",
474
+ interestModel: "0x582b915cca0ffca9576a7cedd505d0fd7cb146e9521ccf10e7453ed93705684d",
475
+ riskModel: "0x1d0a242bf1682e259112239720da19d3155dd99d70b1f4b3b973eecbab858911",
476
+ borrowFeeKey: "0x654ab7e8ff6d9ef04da697e1f12ca21eaf72ebb495daf877e0776e65187dcb92",
477
+ supplyLimitKey: "0xac3b0d17df9f98aa2798c54405cf1d8d5356ef22f76f02d150cbe5195e9f3a36",
478
+ borrowLimitKey: "0x231e13ba6b1eb26c562f4a125778d3152f9a77e31f124bd6012e234a73012169",
479
+ isolatedAssetKey: void 0,
480
+ spool: void 0,
481
+ spoolReward: void 0,
482
+ sCoinTreasury: "0xe2883934ea42c99bc998bbe0f01dd6d27aa0e27a56455707b1b34e6a41c20baa",
483
+ coinDecimalId: "0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd"
466
484
  },
467
485
  wusdc: {
468
- lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
469
- collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb"
486
+ lendingPoolAddress: "0x2f4df5e1368fbbdaa5c712d28b837b3d41c2d3872979ccededcdfdac55ff8a93",
487
+ collateralPoolAddress: "0x94cf69158114c5b242d2ee5d0149a335bddf3b9c9a6ba919cca58097a4814980",
488
+ borrowDynamic: "0x0464d117908b52fc75f7f85322a47caa078ef56f48681bcfdcb630a66f2591e6",
489
+ interestModel: "0xd72e2b5ba486752939d6dfb86a67b86ce9a60c83cb8fb893caac54a0f112577f",
490
+ riskModel: "0xb74035de8f70c1531ceb8e2e8c152d6b8db24c8a9fe7bbf6f75dbf7c6700a0a3",
491
+ borrowFeeKey: "0x76dcf1acbd9951fe3d1a3fe28403fec089ffe53a7c7d6c77e3ea97033a63581a",
492
+ supplyLimitKey: "0x7b302196907e87c5d5872f2e6f40628d110170f994e0e08bc607bded001958c3",
493
+ borrowLimitKey: "0x97f1502ce994db0bcb15aac1760d174def9e88e97cd2262eed54521ee2c19f81",
494
+ isolatedAssetKey: void 0,
495
+ spool: "0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",
496
+ spoolReward: "0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8",
497
+ sCoinTreasury: "0x50c5cfcbcca3aaacab0984e4d7ad9a6ad034265bebb440f0d1cd688ec20b2548",
498
+ coinDecimalId: "0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189"
470
499
  },
471
500
  wusdt: {
472
501
  lendingPoolAddress: "0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879",
473
- collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3"
502
+ collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3",
503
+ borrowDynamic: "0xb524030cc8f7cdbf13f1925a0a2b5e77cc52bab73b070f42c5e510f6083da1ba",
504
+ interestModel: "0x92f93c4431b4c51774d6d964da516af2def18b78f49dbbf519e58449a8ba4659",
505
+ riskModel: "0xdf89d66988cb506ddeff46f5dfd1d11aaece345e9a05a0c6a18a0788647de2a7",
506
+ borrowFeeKey: "0xda8f8b3522fc4086eae4ae7ce8844d60aa0dc3eab8ffc91fe93e922a72639b2d",
507
+ supplyLimitKey: "0xa9cb5ebb90ca6e808a2bd7728cca4a6fa8b565d4deeda96eb23c8322c477c24e",
508
+ borrowLimitKey: "0xa3278564fc613680a69c10972a0299965bf6e12e9ac171388842fc958de0f90e",
509
+ isolatedAssetKey: void 0,
510
+ spool: "0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",
511
+ spoolReward: "0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080",
512
+ sCoinTreasury: "0x1f02e2fed702b477732d4ad6044aaed04f2e8e586a169153694861a901379df0",
513
+ coinDecimalId: "0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c"
474
514
  },
475
515
  sui: {
476
516
  lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
477
- collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb"
517
+ collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb",
518
+ borrowDynamic: "0xbf68e6159c99dcaf87717385f1143d2891c2d19663bd51f0bc9b6909e4bb7c27",
519
+ interestModel: "0x0dad9baa89b863c15a0487575de7cc428b01f1aa3998ad7a9e9752d96e83ffa9",
520
+ riskModel: "0xcd6675864690b5648a6e309f2f02a66914b2b2bd9c31936f4e0f7fc0f792bc86",
521
+ borrowFeeKey: "0xda5ede87a05c0677b17511c859b22d0a2b0229ee374d5d7a1274cb836b9fe5f8",
522
+ supplyLimitKey: "0x0602418e66fb7a73fa997077bd66f248ad5b090d43344a14b9f1db598ecc1d47",
523
+ borrowLimitKey: "0x2b33a7efdcf6a6df24f4d8a356dd52f58d75bc023c3f171d99502d4d008b53f0",
524
+ isolatedAssetKey: void 0,
525
+ spool: "0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",
526
+ spoolReward: "0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9",
527
+ sCoinTreasury: "0x5c1678c8261ac9eec024d4d630006a9f55c80dc0b1aa38a003fcb1d425818c6b",
528
+ coinDecimalId: "0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3"
478
529
  },
479
530
  wapt: {
480
531
  lendingPoolAddress: "0xca8c14a24e0c32b198eaf479a3317461e3cc339097ce88eaf296a15df8dcfdf5",
481
- collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c"
532
+ collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c",
533
+ borrowDynamic: "0xadda873fb6bf68e1ba3f2dfaa51cf75d4a1bef73d9627bd36e77d2baecb1f2dc",
534
+ interestModel: "0xa4a29d07beecea5eb0c59745bb89d7a1380c6f206a7f1ca37046e05db6025c43",
535
+ riskModel: "0x7ada83b473af30aed50d187de82a0912878b53ade7ac30e11ce23953cf739d84",
536
+ borrowFeeKey: "0x768735df587c7e0f141dcd035fbbcbf9d2149a7b23888baed4e2baa160fa2eeb",
537
+ supplyLimitKey: void 0,
538
+ borrowLimitKey: void 0,
539
+ isolatedAssetKey: void 0,
540
+ spool: void 0,
541
+ spoolReward: void 0,
542
+ sCoinTreasury: void 0,
543
+ coinDecimalId: "0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8"
482
544
  },
483
545
  wsol: {
484
546
  lendingPoolAddress: "0x985682c42984cdfb03f9ff7d8923344c2fe096b1ae4b82ea17721af19d22a21f",
485
- collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f"
547
+ collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f",
548
+ borrowDynamic: "0xe3f301e16d4f1273ea659dd82c5c3f124ca5a5883a5726c7ec0f77bf43b70895",
549
+ interestModel: "0xd95affaee077006b8dbb4b108c1b087e95fc6e5143ef0682da345d5b35bc6356",
550
+ riskModel: "0x8e0da6358073144ec3557400c87f04991ba3a13ca7e0d0a19daed45260b32f16",
551
+ borrowFeeKey: "0x604bffbc817e8e12db15f2373a9e15b2c7adbc510649cdf2cc62a594af90671c",
552
+ supplyLimitKey: "0xbd419b536b3f9c9d4adfc20372ca6feedc53cc31798ac860dbfc847bcf05f54b",
553
+ borrowLimitKey: "0x77d453c51948f32564c810bc73f9ba7abde880657b7f89e1c8a3bc28fa36ee87",
554
+ isolatedAssetKey: void 0,
555
+ spool: void 0,
556
+ spoolReward: void 0,
557
+ sCoinTreasury: "0x760fd66f5be869af4382fa32b812b3c67f0eca1bb1ed7a5578b21d56e1848819",
558
+ coinDecimalId: "0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e"
486
559
  },
487
560
  cetus: {
488
561
  lendingPoolAddress: "0xc09858f60e74a1b671635bec4e8a2c84a0ff313eb87f525fba3258e88c6b6282",
489
- collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a"
562
+ collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a",
563
+ borrowDynamic: "0xcc725fd5d71990cdccc7e16c88a2abde6dbcd0bf6e805ccc1c0cb83a106bbf4e",
564
+ interestModel: "0x2f1258aab89d04d11834121599ab1317dfecb582b4246f106df399911125845a",
565
+ riskModel: "0x03fed312dbba624dff5edaf4736891a1c7d864445fd268e7572b42ec7381132e",
566
+ borrowFeeKey: "0xdf5fb0cc4ebbf5eebfae23dfa5b266f6a58c18a894a13054ae60c0eb6e79c382",
567
+ supplyLimitKey: "0xa5ea3d4bf663d7bc667e82b40a98923590ff3851b9ea8e7afbc26c588c7007d3",
568
+ borrowLimitKey: "0xf44218a5f0feb128e6fbe74b91d1e7e9ef859bd23a576ff0de151829e015a157",
569
+ isolatedAssetKey: void 0,
570
+ spool: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
571
+ spoolReward: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f",
572
+ sCoinTreasury: "0xa283c63488773c916cb3d6c64109536160d5eb496caddc721eb39aad2977d735",
573
+ coinDecimalId: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da"
490
574
  },
491
575
  afsui: {
492
576
  lendingPoolAddress: "0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",
493
- collateralPoolAddress: "0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341"
577
+ collateralPoolAddress: "0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341",
578
+ borrowDynamic: "0x1c76d4df9506154a117bbac0f5e005d8a9c0d9ca60e3fe0c9d080006f6f54e81",
579
+ interestModel: "0xb155c536b37c9601baaa734ad1dd0ef335b2b597aceb8d3ecee41a43f94dcd70",
580
+ riskModel: "0x75371b1d04b5bebc0738af548ba64ea658e74f78228ec8014336d8eebb992312",
581
+ borrowFeeKey: "0xabc6422db2d4ee01635ddaeaa44ba68370eebd785d2c4632515f841ae9bc47d9",
582
+ supplyLimitKey: "0x61a2054eb37f543c0d774da57f2c9542aad8d79a197f748ac08ef5df6cc47028",
583
+ borrowLimitKey: "0x4459498a043872cd107ea917493fee0baf2d37a273c7538e1d6581cc61b92af8",
584
+ isolatedAssetKey: void 0,
585
+ spool: "0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",
586
+ spoolReward: "0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e",
587
+ sCoinTreasury: "0x55f4dfe9e40bc4cc11c70fcb1f3daefa2bdc330567c58d4f0792fbd9f9175a62",
588
+ coinDecimalId: "0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d"
494
589
  },
495
590
  hasui: {
496
591
  lendingPoolAddress: "0x7ebc607f6bdeb659fb6506cb91c5cc1d47bb365cfd5d2e637ea765346ec84ed4",
497
- collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d"
592
+ collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d",
593
+ borrowDynamic: "0x13ec1220b41c6e0f11dd6113199a2aff8e4cf2223047b5bd06d7a3ed5d23e1d2",
594
+ interestModel: "0x987c58cbe48096618f4d9d83e0bde2ff638ce4753aba40dab7c302ac3e4b4519",
595
+ riskModel: "0xe42d8497d423eca0d8df89850c2d77d3644e7f54a2d28f59c315903ea5ec8dec",
596
+ borrowFeeKey: "0xef885c382d461c4fb14d1f3b3758c380c78a1a4b2a3d2fafe6e8649a60fdd7ab",
597
+ supplyLimitKey: "0xc7385b1703693cbbc9c97227fe3fd5c91d7afda00e0da69d942c3260d78e45e0",
598
+ borrowLimitKey: "0x65333e606eead786a999c8267bc9886b0fdbc298a8a8635a48a9c9b8838d9395",
599
+ isolatedAssetKey: void 0,
600
+ spool: "0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",
601
+ spoolReward: "0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66",
602
+ sCoinTreasury: "0x404ccc1404d74a90eb6f9c9d4b6cda6d417fb03189f80d9070a35e5dab1df0f5",
603
+ coinDecimalId: "0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24"
498
604
  },
499
605
  vsui: {
500
606
  lendingPoolAddress: "0xda9257c0731d8822e8a438ebced13415850d705b779c79958dcf2aeb21fcb43d",
501
- collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e"
607
+ collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e",
608
+ borrowDynamic: "0x8eae703505246f975e83f5af24780e5f1b89ef403d5a80ea15534624d6f1a503",
609
+ interestModel: "0xaf6a52b5eaaa5af4d9e49d83de0d504c295ae21f3a37560c3f48e0e15a1d4625",
610
+ riskModel: "0x1e862f27a6bd47c3041159a5cf392f549485c6605ed9aa937f16ecc951e82e65",
611
+ borrowFeeKey: "0x5230de0f41a5e4c05b3d1187a90a9eeab491cec97b08b71512d9785e8af36aa6",
612
+ supplyLimitKey: "0x1d40e34d1f365ec431fff020bd75c16b14b340b3ed6c139803cc15c2384621b2",
613
+ borrowLimitKey: "0x4eb206b4417642cfc1b02f80bb5f5e366af2af2f9fb4ea4f4e898ae82367f8a0",
614
+ isolatedAssetKey: void 0,
615
+ spool: "0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",
616
+ spoolReward: "0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a",
617
+ sCoinTreasury: "0xc06688ee1af25abc286ffb1d18ce273d1d5907cd1064c25f4e8ca61ea989c1d1",
618
+ coinDecimalId: "0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd"
502
619
  },
503
620
  sca: {
504
621
  lendingPoolAddress: "0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",
505
- collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31"
506
- }
507
- // TODO: enable for production
508
- // fud: {
509
- // lendingPoolAddress:
510
- // '0x14367ddca30e2860cb89ed4eaca20c7ece260c5d59dd9990d2c85a8321326acb',
511
- // },
512
- // deep: {
513
- // lendingPoolAddress:
514
- // '0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03',
515
- // },
622
+ collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31",
623
+ borrowDynamic: "0x4e24f52edd739dab59ca4c6353ca430b7ce57e7f333abd0957958570a7cd09ca",
624
+ interestModel: "0xbdcd48cf5b1a814911dc2d5c72d393a980c87820199fe5d799289ce94f4c47df",
625
+ riskModel: "0xc437c24b67b8e2676907700fa395af337ad6463d2c0b4f4fa2e9276414026089",
626
+ borrowFeeKey: "0xee55ba0f9800a62d9e7aef667f87e658258f41814d2c9fa02e25590671b4e5ad",
627
+ supplyLimitKey: "0x8dd938856b972a10ea27ecab2af7ed78e48fc5f6ccedaf2b2119959f747dc2e3",
628
+ borrowLimitKey: "0x04c7de61c5b42972f9bf6a8b1848e5fea2d037ee8deba81741ecd4a70aa80d30",
629
+ isolatedAssetKey: void 0,
630
+ spool: void 0,
631
+ spoolReward: void 0,
632
+ sCoinTreasury: "0xe04bfc95e00252bd654ee13c08edef9ac5e4b6ae4074e8390db39e9a0109c529",
633
+ coinDecimalId: "0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844"
634
+ },
635
+ fud: {
636
+ lendingPoolAddress: "0xefed2cbe76b344792ac724523c8b2236740d1cea2100d46a0ed0dc760c7f4231",
637
+ collateralPoolAddress: void 0,
638
+ borrowDynamic: "0x14367ddca30e2860cb89ed4eaca20c7ece260c5d59dd9990d2c85a8321326acb",
639
+ interestModel: "0x2600ac100ef154eb2329ffd3aad47aca308ff9f9348de3e8e94aaeb906ec2303",
640
+ riskModel: void 0,
641
+ borrowFeeKey: "0xa87e8b26e07ff35ac9fb57adcc779be2883080fc7d12de2d9e7e16d8d8d5e529",
642
+ supplyLimitKey: "0xf98419aecc37a3c5de716f8ec590f8991a5be34da72ce1a2da09531ff45adf7d",
643
+ borrowLimitKey: "0x3d928a001c453c50004baa54e14b0a0e1b0907d9c613dfd76064fd7ed4e8beb8",
644
+ isolatedAssetKey: "0xfcb533e9e4e31f9c9f32d6cbf7fbb3425f1d60474e229a363a2dc7f835d587e2",
645
+ spool: void 0,
646
+ spoolReward: void 0,
647
+ sCoinTreasury: "0xf25212f11d182decff7a86165699a73e3d5787aced203ca539f43cfbc10db867",
648
+ coinDecimalId: "0x01087411ef48aaac1eb6e24803213e3a60a03b147dac930e5e341f17a85e524e"
649
+ },
650
+ deep: {
651
+ lendingPoolAddress: "0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03",
652
+ collateralPoolAddress: void 0,
653
+ borrowDynamic: "0x95e00d7466f97a100e70f08bd37788dc49335796f6f49fab996d40dd0681c6d3",
654
+ interestModel: "0x4143c298506a332d92ea8a995e6f3991ee3215f58f6fc6441752835d275b9a69",
655
+ riskModel: void 0,
656
+ borrowFeeKey: "0xb14ee43f4ad2a2c40bac8c4406a401690e93c982e289cf3802fedf74a159cab2",
657
+ supplyLimitKey: "0x599528fdfdc253e90dfd0acf4f4a166b391e2aac1ca6528abbff63225b548fee",
658
+ borrowLimitKey: "0xf4217e8ef9d9c32e8992092e910a77535a8124c19b8a762a673f227f5f765a4e",
659
+ isolatedAssetKey: "0x208d3a24ba369dcfc8f0387333d1512b98199eb150d2f2a69359ff708cf761e3",
660
+ spool: void 0,
661
+ spoolReward: void 0,
662
+ sCoinTreasury: "0xc63838fabe37b25ad897392d89876d920f5e0c6a406bf3abcb84753d2829bc88",
663
+ coinDecimalId: "0x6e60b051a08fa836f5a7acd7c464c8d9825bc29c44657fe170fe9b8e1e4770c0"
664
+ }
516
665
  };
517
666
 
518
667
  // src/constants/pyth.ts
@@ -534,10 +683,9 @@ var PYTH_FEED_IDS = {
534
683
  afsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
535
684
  hasui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
536
685
  vsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
537
- sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc"
538
- // TODO: enable for production
539
- // deep: '29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff',
540
- // fud: '6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75',
686
+ sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
687
+ deep: "29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",
688
+ fud: "6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75"
541
689
  };
542
690
 
543
691
  // src/constants/queryKeys.ts
@@ -563,7 +711,11 @@ var queryKeys = {
563
711
  typeArgs: !typeArgs ? void 0 : JSON.stringify(typeArgs)
564
712
  }
565
713
  ],
566
- getObject: (objectId, walletAddress, options) => ["rpc", "getObject", { walletAddress, options, objectId }],
714
+ getObject: (objectId, options) => [
715
+ "rpc",
716
+ "getObject",
717
+ { options, objectId }
718
+ ],
567
719
  getObjects: (objectIds, walletAddress, options) => [
568
720
  "rpc",
569
721
  "getObjects",
@@ -613,7 +765,10 @@ var queryKeys = {
613
765
  "rpc",
614
766
  "getAllCoinBalances",
615
767
  { owner }
616
- ]
768
+ ],
769
+ getNormalizedMoveFunction: (target) => {
770
+ return ["rpc", "getNormalizedMoveCall", target];
771
+ }
617
772
  },
618
773
  oracle: {
619
774
  getPythLatestPriceFeeds: () => ["oracle", "getPythPriceIds"]
@@ -837,6 +992,32 @@ var TEST_ADDRESSES = {
837
992
  feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
838
993
  }
839
994
  }
995
+ },
996
+ deep: {
997
+ id: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",
998
+ metaData: "0x6e60b051a08fa836f5a7acd7c464c8d9825bc29c44657fe170fe9b8e1e4770c0",
999
+ treasury: "",
1000
+ oracle: {
1001
+ supra: "",
1002
+ switchboard: "",
1003
+ pyth: {
1004
+ feed: "29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",
1005
+ feedObject: "0x8c7f3a322b94cc69db2a2ac575cbd94bf5766113324c3a3eceac91e3e88a51ed"
1006
+ }
1007
+ }
1008
+ },
1009
+ fud: {
1010
+ id: "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1",
1011
+ metaData: "0x01087411ef48aaac1eb6e24803213e3a60a03b147dac930e5e341f17a85e524e",
1012
+ treasury: "",
1013
+ oracle: {
1014
+ supra: "",
1015
+ switchboard: "",
1016
+ pyth: {
1017
+ feed: "6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75",
1018
+ feedObject: "0x4531c3ed0d22f21f5fce882905372006c9aafa30f01db03b789e95a6c50de7b2"
1019
+ }
1020
+ }
840
1021
  }
841
1022
  },
842
1023
  oracles: {
@@ -1056,14 +1237,22 @@ var TEST_ADDRESSES = {
1056
1237
  ssbeth: {
1057
1238
  coinType: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
1058
1239
  treasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed"
1240
+ },
1241
+ sdeep: {
1242
+ coinType: "0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",
1243
+ treasury: "0xc63838fabe37b25ad897392d89876d920f5e0c6a406bf3abcb84753d2829bc88"
1244
+ },
1245
+ sfud: {
1246
+ coinType: "0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD",
1247
+ treasury: "0xf25212f11d182decff7a86165699a73e3d5787aced203ca539f43cfbc10db867"
1059
1248
  }
1060
1249
  }
1061
1250
  }
1062
1251
  };
1063
1252
 
1064
1253
  // src/constants/tokenBucket.ts
1065
- var DEFAULT_TOKENS_PER_INTERVAL = 50;
1066
- var DEFAULT_INTERVAL_IN_MS = 100;
1254
+ var DEFAULT_TOKENS_PER_INTERVAL = 10;
1255
+ var DEFAULT_INTERVAL_IN_MS = 250;
1067
1256
 
1068
1257
  // src/constants/vesca.ts
1069
1258
  var UNLOCK_ROUND_DURATION = 60 * 60 * 24;
@@ -1207,7 +1396,10 @@ var parseOriginMarketPoolData = (originMarketPoolData) => {
1207
1396
  borrowRateOnMidKink: Number(originMarketPoolData.borrowRateOnMidKink.value) / 2 ** 32,
1208
1397
  highKink: Number(originMarketPoolData.highKink.value) / 2 ** 32,
1209
1398
  midKink: Number(originMarketPoolData.midKink.value) / 2 ** 32,
1210
- minBorrowAmount: Number(originMarketPoolData.minBorrowAmount)
1399
+ minBorrowAmount: Number(originMarketPoolData.minBorrowAmount),
1400
+ isIsolated: originMarketPoolData.isIsolated,
1401
+ supplyLimit: Number(originMarketPoolData.supplyLimit),
1402
+ borrowLimit: Number(originMarketPoolData.borrowLimit)
1211
1403
  };
1212
1404
  };
1213
1405
  var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
@@ -1259,6 +1451,7 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
1259
1451
  borrowApyOnHighKink: utils.parseAprToApy(borrowAprOnHighKink),
1260
1452
  borrowAprOnMidKink,
1261
1453
  borrowApyOnMidKink: utils.parseAprToApy(borrowAprOnMidKink),
1454
+ coinDecimal,
1262
1455
  maxBorrowApr,
1263
1456
  maxBorrowApy: utils.parseAprToApy(maxBorrowApr),
1264
1457
  borrowApr: Math.min(borrowApr, maxBorrowApr),
@@ -1277,17 +1470,21 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
1277
1470
  utilizationRate: utilizationRate.toNumber(),
1278
1471
  supplyApr: supplyApr.toNumber(),
1279
1472
  supplyApy: utils.parseAprToApy(supplyApr.toNumber()),
1280
- conversionRate: conversionRate.toNumber()
1473
+ conversionRate: conversionRate.toNumber(),
1474
+ isIsolated: parsedMarketPoolData.isIsolated,
1475
+ maxSupplyCoin: (0, import_bignumber.default)(parsedMarketPoolData.supplyLimit).shiftedBy(coinDecimal).toNumber(),
1476
+ maxBorrowCoin: (0, import_bignumber.default)(parsedMarketPoolData.borrowLimit).shiftedBy(coinDecimal).toNumber()
1281
1477
  };
1282
1478
  };
1283
1479
  var parseOriginMarketCollateralData = (originMarketCollateralData) => {
1284
1480
  const divisor = 2 ** 32;
1285
1481
  return {
1286
1482
  coinType: (0, import_utils.normalizeStructTag)(originMarketCollateralData.type.name),
1483
+ isIsolated: originMarketCollateralData.isIsolated,
1287
1484
  collateralFactor: Number(originMarketCollateralData.collateralFactor.value) / divisor,
1288
1485
  liquidationFactor: Number(originMarketCollateralData.liquidationFactor.value) / divisor,
1289
1486
  liquidationDiscount: Number(originMarketCollateralData.liquidationDiscount.value) / divisor,
1290
- liquidationPanelty: Number(originMarketCollateralData.liquidationPanelty.value) / divisor,
1487
+ liquidationPenalty: Number(originMarketCollateralData.liquidationPenalty.value) / divisor,
1291
1488
  liquidationReserveFactor: Number(originMarketCollateralData.liquidationReserveFactor.value) / divisor,
1292
1489
  maxCollateralAmount: Number(originMarketCollateralData.maxCollateralAmount),
1293
1490
  totalCollateralAmount: Number(
@@ -1307,6 +1504,8 @@ var calculateMarketCollateralData = (utils, parsedMarketCollateralData) => {
1307
1504
  parsedMarketCollateralData.totalCollateralAmount
1308
1505
  ).shiftedBy(-1 * coinDecimal);
1309
1506
  return {
1507
+ coinDecimal,
1508
+ isIsolated: parsedMarketCollateralData.isIsolated,
1310
1509
  maxDepositAmount: parsedMarketCollateralData.maxCollateralAmount,
1311
1510
  maxDepositCoin: maxCollateralCoin.toNumber(),
1312
1511
  depositAmount: parsedMarketCollateralData.totalCollateralAmount,
@@ -1439,7 +1638,7 @@ var parseOriginBorrowIncentivesPoolPointData = (originBorrowIncentivePoolPointDa
1439
1638
  createdAt: Number(originBorrowIncentivePoolPointData.created_at)
1440
1639
  };
1441
1640
  };
1442
- var parseOriginBorrowIncentivePoolData = (originBorrowIncentivePoolData) => {
1641
+ var parseOriginBorrowIncentivePoolData = (utils, originBorrowIncentivePoolData) => {
1443
1642
  return {
1444
1643
  poolType: (0, import_utils.normalizeStructTag)(originBorrowIncentivePoolData.pool_type.name),
1445
1644
  minStakes: Number(originBorrowIncentivePoolData.min_stakes),
@@ -1448,9 +1647,9 @@ var parseOriginBorrowIncentivePoolData = (originBorrowIncentivePoolData) => {
1448
1647
  poolPoints: originBorrowIncentivePoolData.points.reduce(
1449
1648
  (acc, point) => {
1450
1649
  const parsed = parseOriginBorrowIncentivesPoolPointData(point);
1451
- const name = (0, import_utils.parseStructTag)(
1452
- parsed.pointType
1453
- ).name.toLowerCase();
1650
+ const name = utils.parseSCoinTypeNameToMarketCoinName(
1651
+ (0, import_utils.parseStructTag)(parsed.pointType).name.toLowerCase()
1652
+ );
1454
1653
  acc[name] = parsed;
1455
1654
  return acc;
1456
1655
  },
@@ -1637,6 +1836,13 @@ var findClosestUnlockRound = (unlockAtInSecondTimestamp) => {
1637
1836
  }
1638
1837
  return Math.floor(closestTwelveAM.getTime() / 1e3);
1639
1838
  };
1839
+ var partitionArray = (array, chunkSize) => {
1840
+ const result = [];
1841
+ for (let i = 0; i < array.length; i += chunkSize) {
1842
+ result.push(array.slice(i, i + chunkSize));
1843
+ }
1844
+ return result;
1845
+ };
1640
1846
 
1641
1847
  // src/utils/tokenBucket.ts
1642
1848
  var TokenBucket = class {
@@ -1649,10 +1855,10 @@ var TokenBucket = class {
1649
1855
  refill() {
1650
1856
  const now = Date.now();
1651
1857
  const elapsed = now - this.lastRefill;
1652
- if (elapsed > this.interval) {
1858
+ if (elapsed >= this.interval) {
1653
1859
  const tokensToAdd = Math.floor(elapsed / this.interval) * this.tokensPerInterval;
1654
1860
  this.tokens = Math.min(this.tokens + tokensToAdd, this.tokensPerInterval);
1655
- this.lastRefill = now;
1861
+ this.lastRefill += Math.floor(elapsed / this.interval) * this.interval;
1656
1862
  }
1657
1863
  }
1658
1864
  removeTokens(count) {
@@ -1664,27 +1870,12 @@ var TokenBucket = class {
1664
1870
  return false;
1665
1871
  }
1666
1872
  };
1667
- var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor = 2) => {
1873
+ var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor = 1.25) => {
1668
1874
  let retries = 0;
1669
1875
  const tryRequest = async () => {
1670
1876
  if (tokenBucket.removeTokens(1)) {
1671
- try {
1672
- const result = await fn();
1673
- if (result && result.status === 429) {
1674
- throw new Error("Unexpected status code: 429");
1675
- }
1676
- return result;
1677
- } catch (error) {
1678
- if (error.message === "Unexpected status code: 429" && retries < maxRetries) {
1679
- retries++;
1680
- const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
1681
- await new Promise((resolve) => setTimeout(resolve, delay));
1682
- return tryRequest();
1683
- } else {
1684
- console.error("An error occurred:", error.message);
1685
- return null;
1686
- }
1687
- }
1877
+ const result = await fn();
1878
+ return result;
1688
1879
  } else if (retries < maxRetries) {
1689
1880
  retries++;
1690
1881
  const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
@@ -1723,6 +1914,22 @@ function withIndexerFallback(method) {
1723
1914
  };
1724
1915
  }
1725
1916
 
1917
+ // src/utils/core.ts
1918
+ var parseObjectAs = (object) => {
1919
+ if (!(object && object.content && "fields" in object.content))
1920
+ throw new Error(`Failed to parse object`);
1921
+ const fields = object.content.fields;
1922
+ if (typeof fields === "object" && "value" in fields) {
1923
+ const value = fields.value;
1924
+ if (typeof value === "object" && "fields" in value)
1925
+ return value.fields;
1926
+ return value;
1927
+ } else if (typeof fields === "object") {
1928
+ return fields;
1929
+ }
1930
+ return fields;
1931
+ };
1932
+
1726
1933
  // src/models/scallopCache.ts
1727
1934
  var ScallopCache = class {
1728
1935
  constructor(suiKit, walletAddress, cacheOptions, tokenBucket, queryClient) {
@@ -1757,6 +1964,13 @@ var ScallopCache = class {
1757
1964
  })
1758
1965
  );
1759
1966
  }
1967
+ retryFn(errCount, e) {
1968
+ if (errCount === 5)
1969
+ return false;
1970
+ if (e.status === 429)
1971
+ return true;
1972
+ return false;
1973
+ }
1760
1974
  /**
1761
1975
  * @description Provides cache for inspectTxn of the SuiKit.
1762
1976
  * @param QueryInspectTxnParams
@@ -1769,18 +1983,64 @@ var ScallopCache = class {
1769
1983
  typeArgs
1770
1984
  }) {
1771
1985
  const txBlock = new import_sui_kit.SuiTxBlock();
1772
- txBlock.moveCall(queryTarget, args, typeArgs);
1986
+ const resolvedQueryTarget = await this.queryGetNormalizedMoveFunction(queryTarget);
1987
+ if (!resolvedQueryTarget)
1988
+ throw new Error("Invalid query target");
1989
+ const { parameters } = resolvedQueryTarget;
1990
+ const resolvedArgs = await Promise.all(
1991
+ (args ?? []).map(async (arg, idx) => {
1992
+ if (typeof arg !== "string")
1993
+ return arg;
1994
+ const cachedData = (await this.queryGetObject(arg))?.data;
1995
+ if (!cachedData)
1996
+ return arg;
1997
+ const owner = cachedData.owner;
1998
+ if (!owner || typeof owner !== "object" || !("Shared" in owner))
1999
+ return {
2000
+ objectId: cachedData.objectId,
2001
+ version: cachedData.version,
2002
+ digest: cachedData.digest
2003
+ };
2004
+ const parameter = parameters[idx];
2005
+ if (typeof parameter !== "object" || !("MutableReference" in parameter || "Reference" in parameter))
2006
+ return arg;
2007
+ return {
2008
+ objectId: cachedData.objectId,
2009
+ initialSharedVersion: owner.Shared.initial_shared_version,
2010
+ mutable: "MutableReference" in parameter
2011
+ };
2012
+ })
2013
+ );
2014
+ txBlock.moveCall(queryTarget, resolvedArgs, typeArgs);
1773
2015
  const query = await this.queryClient.fetchQuery({
2016
+ retry: this.retryFn,
2017
+ retryDelay: 1e3,
1774
2018
  queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
1775
2019
  queryFn: async () => {
1776
2020
  return await callWithRateLimit(
1777
2021
  this.tokenBucket,
1778
- () => this.suiKit.inspectTxn(txBlock)
2022
+ async () => await this.suiKit.inspectTxn(txBlock)
1779
2023
  );
1780
2024
  }
1781
2025
  });
1782
2026
  return query;
1783
2027
  }
2028
+ async queryGetNormalizedMoveFunction(target) {
2029
+ const { address, module: module2, name } = (0, import_sui_kit.parseStructTag)(target);
2030
+ return this.queryClient.fetchQuery({
2031
+ queryKey: queryKeys.rpc.getNormalizedMoveFunction(target),
2032
+ queryFn: async () => {
2033
+ return await callWithRateLimit(
2034
+ this.tokenBucket,
2035
+ async () => await this.suiKit.client().getNormalizedMoveFunction({
2036
+ package: address,
2037
+ module: module2,
2038
+ function: name
2039
+ })
2040
+ );
2041
+ }
2042
+ });
2043
+ }
1784
2044
  /**
1785
2045
  * @description Provides cache for getObject of the SuiKit.
1786
2046
  * @param objectId
@@ -1788,12 +2048,19 @@ var ScallopCache = class {
1788
2048
  * @returns Promise<SuiObjectResponse>
1789
2049
  */
1790
2050
  async queryGetObject(objectId, options) {
2051
+ options = {
2052
+ ...options,
2053
+ showOwner: true,
2054
+ showContent: true
2055
+ };
1791
2056
  return this.queryClient.fetchQuery({
1792
- queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
2057
+ retry: this.retryFn,
2058
+ retryDelay: 1e3,
2059
+ queryKey: queryKeys.rpc.getObject(objectId, options),
1793
2060
  queryFn: async () => {
1794
2061
  return await callWithRateLimit(
1795
2062
  this.tokenBucket,
1796
- () => this.client.getObject({
2063
+ async () => await this.client.getObject({
1797
2064
  id: objectId,
1798
2065
  options
1799
2066
  })
@@ -1812,16 +2079,36 @@ var ScallopCache = class {
1812
2079
  if (objectIds.length === 0)
1813
2080
  return [];
1814
2081
  return this.queryClient.fetchQuery({
2082
+ retry: this.retryFn,
2083
+ retryDelay: 1e3,
1815
2084
  queryKey: queryKeys.rpc.getObjects(
1816
2085
  objectIds,
1817
2086
  this.walletAddress,
1818
2087
  options
1819
2088
  ),
1820
2089
  queryFn: async () => {
1821
- return await callWithRateLimit(
2090
+ const results = await callWithRateLimit(
1822
2091
  this.tokenBucket,
1823
- () => this.suiKit.getObjects(objectIds, options)
2092
+ async () => await this.suiKit.getObjects(objectIds, options)
1824
2093
  );
2094
+ if (results) {
2095
+ results.forEach((result) => {
2096
+ this.queryClient.setQueriesData(
2097
+ {
2098
+ exact: false,
2099
+ queryKey: queryKeys.rpc.getObject(result.objectId, options)
2100
+ },
2101
+ {
2102
+ data: result,
2103
+ error: null
2104
+ },
2105
+ {
2106
+ updatedAt: Date.now()
2107
+ }
2108
+ );
2109
+ });
2110
+ }
2111
+ return results;
1825
2112
  }
1826
2113
  });
1827
2114
  }
@@ -1832,44 +2119,94 @@ var ScallopCache = class {
1832
2119
  */
1833
2120
  async queryGetOwnedObjects(input) {
1834
2121
  return this.queryClient.fetchQuery({
2122
+ retry: this.retryFn,
2123
+ retryDelay: 1e3,
1835
2124
  queryKey: queryKeys.rpc.getOwnedObjects(input),
1836
2125
  queryFn: async () => {
1837
- return await callWithRateLimit(
2126
+ const results = await callWithRateLimit(
1838
2127
  this.tokenBucket,
1839
- () => this.client.getOwnedObjects(input)
2128
+ async () => await this.client.getOwnedObjects(input)
1840
2129
  );
2130
+ if (results && results.data.length > 0) {
2131
+ results.data.filter(
2132
+ (result) => !!result.data
2133
+ ).forEach((result) => {
2134
+ this.queryClient.setQueriesData(
2135
+ {
2136
+ exact: false,
2137
+ queryKey: queryKeys.rpc.getObject(
2138
+ result.data.objectId,
2139
+ input.options ?? {}
2140
+ )
2141
+ },
2142
+ {
2143
+ data: result.data,
2144
+ error: null
2145
+ },
2146
+ {
2147
+ updatedAt: Date.now()
2148
+ }
2149
+ );
2150
+ });
2151
+ }
2152
+ return results;
1841
2153
  }
1842
2154
  });
1843
2155
  }
1844
2156
  async queryGetDynamicFields(input) {
1845
2157
  return this.queryClient.fetchQuery({
2158
+ retry: this.retryFn,
2159
+ retryDelay: 1e3,
1846
2160
  queryKey: queryKeys.rpc.getDynamicFields(input),
1847
2161
  queryFn: async () => {
1848
2162
  return await callWithRateLimit(
1849
2163
  this.tokenBucket,
1850
- () => this.client.getDynamicFields(input)
2164
+ async () => await this.client.getDynamicFields(input)
1851
2165
  );
1852
2166
  }
1853
2167
  });
1854
2168
  }
1855
2169
  async queryGetDynamicFieldObject(input) {
1856
2170
  return this.queryClient.fetchQuery({
2171
+ retry: this.retryFn,
2172
+ retryDelay: (attemptIndex) => Math.min(1e3 * attemptIndex, 8e3),
1857
2173
  queryKey: queryKeys.rpc.getDynamicFieldObject(input),
1858
2174
  queryFn: async () => {
1859
- return await callWithRateLimit(
2175
+ const result = await callWithRateLimit(
1860
2176
  this.tokenBucket,
1861
2177
  () => this.client.getDynamicFieldObject(input)
1862
2178
  );
2179
+ if (result?.data) {
2180
+ this.queryClient.setQueriesData(
2181
+ {
2182
+ exact: false,
2183
+ queryKey: queryKeys.rpc.getObject(result?.data.objectId, {
2184
+ showContent: true,
2185
+ showOwner: true
2186
+ })
2187
+ },
2188
+ {
2189
+ data: result.data,
2190
+ error: null
2191
+ },
2192
+ {
2193
+ updatedAt: Date.now()
2194
+ }
2195
+ );
2196
+ }
2197
+ return result;
1863
2198
  }
1864
2199
  });
1865
2200
  }
1866
2201
  async queryGetAllCoinBalances(owner) {
1867
2202
  return this.queryClient.fetchQuery({
2203
+ retry: this.retryFn,
2204
+ retryDelay: 1e3,
1868
2205
  queryKey: queryKeys.rpc.getAllCoinBalances(owner),
1869
2206
  queryFn: async () => {
1870
2207
  const allBalances = await callWithRateLimit(
1871
2208
  this.tokenBucket,
1872
- () => this.client.getAllBalances({ owner })
2209
+ async () => await this.client.getAllBalances({ owner })
1873
2210
  );
1874
2211
  if (!allBalances)
1875
2212
  return {};
@@ -2557,10 +2894,10 @@ var ScallopAddress = class {
2557
2894
  };
2558
2895
 
2559
2896
  // src/models/scallopClient.ts
2560
- var import_utils25 = require("@mysten/sui/utils");
2897
+ var import_utils26 = require("@mysten/sui/utils");
2561
2898
 
2562
2899
  // src/models/scallopUtils.ts
2563
- var import_utils10 = require("@mysten/sui/utils");
2900
+ var import_utils11 = require("@mysten/sui/utils");
2564
2901
  var import_pyth_sui_js = require("@pythnetwork/pyth-sui-js");
2565
2902
 
2566
2903
  // src/queries/borrowIncentiveQuery.ts
@@ -2582,7 +2919,7 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
2582
2919
  ...SUPPORT_BORROW_INCENTIVE_POOLS
2583
2920
  ], indexer = false, marketPools, coinPrices) => {
2584
2921
  const borrowIncentivePools = {};
2585
- marketPools = marketPools ?? await query.getMarketPools(void 0, { indexer, coinPrices });
2922
+ marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices, indexer })).pools;
2586
2923
  coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools });
2587
2924
  if (indexer) {
2588
2925
  const borrowIncentivePoolsIndexer = await query.indexer.getBorrowIncentivePools();
@@ -2607,7 +2944,10 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
2607
2944
  );
2608
2945
  for (const pool of borrowIncentivePoolsQueryData?.incentive_pools ?? []) {
2609
2946
  const borrowIncentivePoolPoints = {};
2610
- const parsedBorrowIncentivePoolData = parseOriginBorrowIncentivePoolData(pool);
2947
+ const parsedBorrowIncentivePoolData = parseOriginBorrowIncentivePoolData(
2948
+ query.utils,
2949
+ pool
2950
+ );
2611
2951
  const poolCoinType = (0, import_utils3.normalizeStructTag)(pool.pool_type.name);
2612
2952
  const poolCoinName = query.utils.parseCoinNameFromType(
2613
2953
  poolCoinType
@@ -2621,12 +2961,9 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
2621
2961
  parsedBorrowIncentivePoolData.poolPoints
2622
2962
  )) {
2623
2963
  const rewardCoinType = poolPoint.pointType;
2624
- let rewardCoinName = query.utils.parseCoinNameFromType(
2964
+ const rewardCoinName = query.utils.parseCoinNameFromType(
2625
2965
  rewardCoinType
2626
2966
  );
2627
- if (sCoinRawNameToName[rewardCoinName]) {
2628
- rewardCoinName = sCoinRawNameToName[rewardCoinName];
2629
- }
2630
2967
  const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
2631
2968
  const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
2632
2969
  const symbol = query.utils.parseSymbol(rewardCoinName);
@@ -2755,7 +3092,7 @@ var getBindedVeScaKey = async ({
2755
3092
  };
2756
3093
 
2757
3094
  // src/queries/coreQuery.ts
2758
- var import_utils5 = require("@mysten/sui/utils");
3095
+ var import_utils6 = require("@mysten/sui/utils");
2759
3096
  var import_bignumber3 = __toESM(require("bignumber.js"));
2760
3097
 
2761
3098
  // src/queries/supplyLimitQuery.ts
@@ -2774,7 +3111,7 @@ var supplyLimitZod = import_zod.z.object({
2774
3111
  value: import_zod.z.string()
2775
3112
  })
2776
3113
  });
2777
- var supplyLimitKeyType = `0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d::market_dynamic_keys::SupplyLimitKey`;
3114
+ var supplyLimitKeyType = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
2778
3115
  var getSupplyLimit = async (utils, poolName) => {
2779
3116
  try {
2780
3117
  const poolCoinType = utils.parseCoinType(poolName).slice(2);
@@ -2814,10 +3151,15 @@ var isolatedAssetZod = import_zod2.z.object({
2814
3151
  value: import_zod2.z.boolean()
2815
3152
  })
2816
3153
  });
2817
- var isolatedAssetKeyType = `0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d::market_dynamic_keys::IsolatedAssetKey`;
2818
- var getIsolatedAssets = async (address) => {
3154
+ var isolatedAssetKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
3155
+ var getIsolatedAssets = async (query) => {
3156
+ if (SUPPORT_POOLS.every((t) => !!POOL_ADDRESSES[t])) {
3157
+ return SUPPORT_POOLS.filter(
3158
+ (t) => !!POOL_ADDRESSES[t]?.isolatedAssetKey && !!POOL_ADDRESSES[t]?.coinType
3159
+ ).map((t) => POOL_ADDRESSES[t]?.coinType);
3160
+ }
2819
3161
  try {
2820
- const marketObject = address.get("core.market");
3162
+ const marketObject = query.address.get("core.market");
2821
3163
  const isolatedAssets = [];
2822
3164
  if (!marketObject)
2823
3165
  return isolatedAssets;
@@ -2827,7 +3169,7 @@ var getIsolatedAssets = async (address) => {
2827
3169
  return dynamicField.name.type === isolatedAssetKeyType;
2828
3170
  };
2829
3171
  do {
2830
- const response = await address.cache.queryGetDynamicFields({
3172
+ const response = await query.cache.queryGetDynamicFields({
2831
3173
  parentId: marketObject,
2832
3174
  cursor: nextCursor,
2833
3175
  limit: 10
@@ -2850,32 +3192,30 @@ var getIsolatedAssets = async (address) => {
2850
3192
  }
2851
3193
  };
2852
3194
  var isIsolatedAsset = async (utils, coinName) => {
2853
- try {
2854
- const marketObject = utils.address.get("core.market");
2855
- const cachedData = utils.address.cache.queryClient.getQueryData([
2856
- "getDynamicFields",
2857
- marketObject
2858
- ]);
2859
- if (cachedData) {
2860
- const coinType2 = utils.parseCoinType(coinName);
2861
- return cachedData.includes(coinType2);
3195
+ if (POOL_ADDRESSES[coinName]) {
3196
+ return !!POOL_ADDRESSES[coinName].isolatedAssetKey;
3197
+ }
3198
+ const marketObject = utils.address.get("core.market");
3199
+ const cachedData = utils.address.cache.queryClient.getQueryData([
3200
+ "getDynamicFields",
3201
+ marketObject
3202
+ ]);
3203
+ if (cachedData) {
3204
+ const coinType2 = utils.parseCoinType(coinName);
3205
+ return cachedData.includes(coinType2);
3206
+ }
3207
+ const coinType = utils.parseCoinType(coinName).slice(2);
3208
+ const object = await utils.cache.queryGetDynamicFieldObject({
3209
+ parentId: marketObject,
3210
+ name: {
3211
+ type: isolatedAssetKeyType,
3212
+ value: coinType
2862
3213
  }
2863
- const coinType = utils.parseCoinType(coinName).slice(2);
2864
- const object = await utils.cache.queryGetDynamicFieldObject({
2865
- parentId: marketObject,
2866
- name: {
2867
- type: isolatedAssetKeyType,
2868
- value: coinType
2869
- }
2870
- });
2871
- const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
2872
- if (!parsedData.success)
2873
- return false;
2874
- return parsedData.data.fields.value;
2875
- } catch (e) {
2876
- console.error(e);
3214
+ });
3215
+ const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
3216
+ if (!parsedData.success)
2877
3217
  return false;
2878
- }
3218
+ return parsedData.data.fields.value;
2879
3219
  };
2880
3220
 
2881
3221
  // src/queries/borrowLimitQuery.ts
@@ -2894,7 +3234,7 @@ var borrowLimitZod = import_zod3.z.object({
2894
3234
  value: import_zod3.z.string()
2895
3235
  })
2896
3236
  });
2897
- var borrowLimitKeyType = `0xb784ea287d944e478a3ceaa071f8885072cce6b7224cf245914dc2f9963f460e::market_dynamic_keys::BorrowLimitKey`;
3237
+ var borrowLimitKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
2898
3238
  var getBorrowLimit = async (utils, poolName) => {
2899
3239
  try {
2900
3240
  const poolCoinType = utils.parseCoinType(poolName).slice(2);
@@ -2918,6 +3258,17 @@ var getBorrowLimit = async (utils, poolName) => {
2918
3258
  }
2919
3259
  };
2920
3260
 
3261
+ // src/queries/objectsQuery.ts
3262
+ var queryMultipleObjects = async (cache, objectIds, options, partitionSize = 50) => {
3263
+ const objectIdsPartition = partitionArray(objectIds, partitionSize);
3264
+ const objects = [];
3265
+ for (const objectIds2 of objectIdsPartition) {
3266
+ const result = await cache.queryGetObjects(objectIds2, options);
3267
+ objects.push(...result);
3268
+ }
3269
+ return objects;
3270
+ };
3271
+
2921
3272
  // src/queries/coreQuery.ts
2922
3273
  var queryMarket = async (query, indexer = false, coinPrices) => {
2923
3274
  coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
@@ -2949,7 +3300,7 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2949
3300
  const queryResult = await query.cache.queryInspectTxn({ queryTarget, args });
2950
3301
  const marketData = queryResult?.events[0]?.parsedJson;
2951
3302
  for (const pool of marketData?.pools ?? []) {
2952
- const coinType = (0, import_utils5.normalizeStructTag)(pool.type.name);
3303
+ const coinType = (0, import_utils6.normalizeStructTag)(pool.type.name);
2953
3304
  const poolCoinName = query.utils.parseCoinNameFromType(coinType);
2954
3305
  const coinPrice = coinPrices[poolCoinName] ?? 0;
2955
3306
  if (!SUPPORT_POOLS.includes(poolCoinName)) {
@@ -2974,19 +3325,15 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2974
3325
  borrowRateOnMidKink: pool.borrowRateOnMidKink,
2975
3326
  highKink: pool.highKink,
2976
3327
  midKink: pool.midKink,
2977
- minBorrowAmount: pool.minBorrowAmount
3328
+ minBorrowAmount: pool.minBorrowAmount,
3329
+ isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3330
+ supplyLimit: await getSupplyLimit(query.utils, poolCoinName) ?? "0",
3331
+ borrowLimit: await getBorrowLimit(query.utils, poolCoinName) ?? "0"
2978
3332
  });
2979
3333
  const calculatedMarketPoolData = calculateMarketPoolData(
2980
3334
  query.utils,
2981
3335
  parsedMarketPoolData
2982
3336
  );
2983
- const coinDecimal = query.utils.getCoinDecimal(poolCoinName);
2984
- const maxSupplyCoin = (0, import_bignumber3.default)(
2985
- await getSupplyLimit(query.utils, poolCoinName) ?? "0"
2986
- ).shiftedBy(-coinDecimal).toNumber();
2987
- const maxBorrowCoin = (0, import_bignumber3.default)(
2988
- await getBorrowLimit(query.utils, poolCoinName) ?? "0"
2989
- ).shiftedBy(-coinDecimal).toNumber();
2990
3337
  pools[poolCoinName] = {
2991
3338
  coinName: poolCoinName,
2992
3339
  symbol: query.utils.parseSymbol(poolCoinName),
@@ -2996,7 +3343,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2996
3343
  query.utils.parseMarketCoinName(poolCoinName)
2997
3344
  ),
2998
3345
  coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
2999
- coinDecimal,
3000
3346
  coinPrice,
3001
3347
  highKink: parsedMarketPoolData.highKink,
3002
3348
  midKink: parsedMarketPoolData.midKink,
@@ -3005,15 +3351,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
3005
3351
  borrowFee: parsedMarketPoolData.borrowFee,
3006
3352
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
3007
3353
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
3008
- isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3009
- // isIsolated: false,
3010
- maxSupplyCoin,
3011
- maxBorrowCoin,
3012
3354
  ...calculatedMarketPoolData
3013
3355
  };
3014
3356
  }
3015
3357
  for (const collateral of marketData?.collaterals ?? []) {
3016
- const coinType = (0, import_utils5.normalizeStructTag)(collateral.type.name);
3358
+ const coinType = (0, import_utils6.normalizeStructTag)(collateral.type.name);
3017
3359
  const collateralCoinName = query.utils.parseCoinNameFromType(coinType);
3018
3360
  const coinPrice = coinPrices[collateralCoinName] ?? 0;
3019
3361
  if (!SUPPORT_COLLATERALS.includes(collateralCoinName)) {
@@ -3024,10 +3366,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
3024
3366
  collateralFactor: collateral.collateralFactor,
3025
3367
  liquidationFactor: collateral.liquidationFactor,
3026
3368
  liquidationDiscount: collateral.liquidationDiscount,
3027
- liquidationPanelty: collateral.liquidationPanelty,
3369
+ liquidationPenalty: collateral.liquidationPanelty,
3028
3370
  liquidationReserveFactor: collateral.liquidationReserveFactor,
3029
3371
  maxCollateralAmount: collateral.maxCollateralAmount,
3030
- totalCollateralAmount: collateral.totalCollateralAmount
3372
+ totalCollateralAmount: collateral.totalCollateralAmount,
3373
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
3031
3374
  });
3032
3375
  const calculatedMarketCollateralData = calculateMarketCollateralData(
3033
3376
  query.utils,
@@ -3039,14 +3382,12 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
3039
3382
  coinType,
3040
3383
  marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
3041
3384
  coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
3042
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
3043
3385
  coinPrice,
3044
3386
  collateralFactor: parsedMarketCollateralData.collateralFactor,
3045
3387
  liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3046
3388
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3047
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3389
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
3048
3390
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3049
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
3050
3391
  ...calculatedMarketCollateralData
3051
3392
  };
3052
3393
  }
@@ -3056,44 +3397,216 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
3056
3397
  // data: marketData,
3057
3398
  };
3058
3399
  };
3059
- var getMarketPools = async (query, poolCoinNames = [...SUPPORT_POOLS], indexer = false, coinPrices) => {
3060
- const marketId = query.address.get("core.market");
3061
- const marketObjectResponse = await query.cache.queryGetObject(marketId, {
3062
- showContent: true
3063
- });
3400
+ var queryRequiredMarketObjects = async (query, poolCoinNames) => {
3401
+ const tasks = poolCoinNames.map((t) => ({
3402
+ poolCoinName: t,
3403
+ balanceSheet: POOL_ADDRESSES[t]?.lendingPoolAddress,
3404
+ collateralStat: POOL_ADDRESSES[t]?.collateralPoolAddress,
3405
+ borrowDynamic: POOL_ADDRESSES[t]?.borrowDynamic,
3406
+ interestModel: POOL_ADDRESSES[t]?.interestModel,
3407
+ riskModel: POOL_ADDRESSES[t]?.riskModel,
3408
+ borrowFeeKey: POOL_ADDRESSES[t]?.borrowFeeKey,
3409
+ supplyLimitKey: POOL_ADDRESSES[t]?.supplyLimitKey,
3410
+ borrowLimitKey: POOL_ADDRESSES[t]?.borrowLimitKey,
3411
+ isolatedAssetKey: POOL_ADDRESSES[t]?.isolatedAssetKey
3412
+ }));
3413
+ const [
3414
+ balanceSheetObjects,
3415
+ collateralStatObjects,
3416
+ borrowDynamicObjects,
3417
+ interestModelObjects,
3418
+ riskModelObjects,
3419
+ borrowFeeObjects,
3420
+ supplyLimitObjects,
3421
+ borrowLimitObjects,
3422
+ isolatedAssetObjects
3423
+ ] = await Promise.all([
3424
+ queryMultipleObjects(
3425
+ query.cache,
3426
+ tasks.map((task) => task.balanceSheet).filter((t) => !!t)
3427
+ ),
3428
+ queryMultipleObjects(
3429
+ query.cache,
3430
+ tasks.map((task) => task.collateralStat).filter((t) => !!t)
3431
+ ),
3432
+ queryMultipleObjects(
3433
+ query.cache,
3434
+ tasks.map((task) => task.borrowDynamic).filter((t) => !!t)
3435
+ ),
3436
+ queryMultipleObjects(
3437
+ query.cache,
3438
+ tasks.map((task) => task.interestModel).filter((t) => !!t)
3439
+ ),
3440
+ queryMultipleObjects(
3441
+ query.cache,
3442
+ tasks.map((task) => task.riskModel).filter((t) => !!t)
3443
+ ),
3444
+ queryMultipleObjects(
3445
+ query.cache,
3446
+ tasks.map((task) => task.borrowFeeKey).filter((t) => !!t)
3447
+ ),
3448
+ queryMultipleObjects(
3449
+ query.cache,
3450
+ tasks.map((task) => task.supplyLimitKey).filter((t) => !!t)
3451
+ ),
3452
+ queryMultipleObjects(
3453
+ query.cache,
3454
+ tasks.map((task) => task.borrowLimitKey).filter((t) => !!t)
3455
+ ),
3456
+ queryMultipleObjects(
3457
+ query.cache,
3458
+ tasks.map((task) => task.isolatedAssetKey).filter((t) => !!t)
3459
+ )
3460
+ ]);
3461
+ const mapObjects = (tasks2, fetchedObjects) => {
3462
+ const resultMap = {};
3463
+ let fetchedIndex = 0;
3464
+ for (const task of tasks2) {
3465
+ const key = task[Object.keys(task)[1]];
3466
+ if (key) {
3467
+ resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
3468
+ fetchedIndex++;
3469
+ }
3470
+ }
3471
+ return resultMap;
3472
+ };
3473
+ const balanceSheetMap = mapObjects(tasks, balanceSheetObjects);
3474
+ const collateralStatMap = mapObjects(tasks, collateralStatObjects);
3475
+ const borrowDynamicMap = mapObjects(tasks, borrowDynamicObjects);
3476
+ const interestModelMap = mapObjects(tasks, interestModelObjects);
3477
+ const riskModelMap = mapObjects(tasks, riskModelObjects);
3478
+ const borrowFeeMap = mapObjects(tasks, borrowFeeObjects);
3479
+ const supplyLimitMap = mapObjects(tasks, supplyLimitObjects);
3480
+ const borrowLimitMap = mapObjects(tasks, borrowLimitObjects);
3481
+ const isolatedAssetMap = mapObjects(tasks, isolatedAssetObjects);
3482
+ return poolCoinNames.reduce(
3483
+ (acc, name) => {
3484
+ acc[name] = {
3485
+ balanceSheet: balanceSheetMap[name],
3486
+ collateralStat: collateralStatMap[name],
3487
+ borrowDynamic: borrowDynamicMap[name],
3488
+ interestModel: interestModelMap[name],
3489
+ riskModel: riskModelMap[name],
3490
+ borrowFeeKey: borrowFeeMap[name],
3491
+ supplyLimitKey: supplyLimitMap[name],
3492
+ borrowLimitKey: borrowLimitMap[name],
3493
+ isolatedAssetKey: isolatedAssetMap[name]
3494
+ };
3495
+ return acc;
3496
+ },
3497
+ {}
3498
+ );
3499
+ };
3500
+ var getMarketPools = async (query, poolCoinNames, indexer = false, coinPrices) => {
3064
3501
  coinPrices = coinPrices ?? await query.utils.getCoinPrices();
3065
- const marketPools = {};
3502
+ const pools = {};
3503
+ const collaterals = {};
3066
3504
  if (indexer) {
3067
- const marketPoolsIndexer = await query.indexer.getMarketPools();
3068
- const updateMarketPool = (marketPool) => {
3069
- if (!poolCoinNames.includes(marketPool.coinName))
3070
- return;
3071
- marketPool.coinPrice = coinPrices[marketPool.coinName] ?? marketPool.coinPrice;
3072
- marketPool.coinWrappedType = query.utils.getCoinWrappedType(
3073
- marketPool.coinName
3074
- );
3075
- marketPools[marketPool.coinName] = marketPool;
3505
+ const marketIndexer = await query.indexer.getMarket();
3506
+ const updatePools = (item) => {
3507
+ item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
3508
+ item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
3509
+ pools[item.coinName] = item;
3510
+ };
3511
+ const updateCollaterals = (item) => {
3512
+ item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
3513
+ item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
3514
+ collaterals[item.coinName] = item;
3515
+ };
3516
+ Object.values(marketIndexer.pools).forEach(updatePools);
3517
+ Object.values(marketIndexer.collaterals).forEach(updateCollaterals);
3518
+ return {
3519
+ pools,
3520
+ collaterals
3076
3521
  };
3077
- Object.values(marketPoolsIndexer).forEach(updateMarketPool);
3078
- return marketPools;
3079
3522
  }
3523
+ const requiredObjects = await queryRequiredMarketObjects(
3524
+ query,
3525
+ poolCoinNames
3526
+ );
3080
3527
  await Promise.allSettled(
3081
3528
  poolCoinNames.map(async (poolCoinName) => {
3082
- const marketPool = await getMarketPool(
3083
- query,
3084
- poolCoinName,
3085
- indexer,
3086
- marketObjectResponse?.data,
3087
- coinPrices?.[poolCoinName]
3088
- );
3089
- if (marketPool) {
3090
- marketPools[poolCoinName] = marketPool;
3529
+ try {
3530
+ const result = await getMarketPool(
3531
+ query,
3532
+ poolCoinName,
3533
+ indexer,
3534
+ coinPrices?.[poolCoinName] ?? 0,
3535
+ requiredObjects[poolCoinName]
3536
+ );
3537
+ if (result?.marketPool) {
3538
+ pools[poolCoinName] = result?.marketPool;
3539
+ }
3540
+ if (result?.collateral) {
3541
+ collaterals[poolCoinName] = result.collateral;
3542
+ }
3543
+ } catch (e) {
3544
+ console.error(e);
3091
3545
  }
3092
3546
  })
3093
3547
  );
3094
- return marketPools;
3548
+ return {
3549
+ pools,
3550
+ collaterals
3551
+ };
3552
+ };
3553
+ var parseMarketPoolObjects = ({
3554
+ balanceSheet,
3555
+ borrowDynamic,
3556
+ collateralStat,
3557
+ interestModel,
3558
+ riskModel,
3559
+ borrowFeeKey,
3560
+ supplyLimitKey,
3561
+ borrowLimitKey,
3562
+ isolatedAssetKey
3563
+ }) => {
3564
+ const _balanceSheet = parseObjectAs(balanceSheet);
3565
+ const _interestModel = parseObjectAs(interestModel);
3566
+ const _borrowDynamic = parseObjectAs(borrowDynamic);
3567
+ const _borrowFee = parseObjectAs(borrowFeeKey);
3568
+ const _supplyLimit = supplyLimitKey ? parseObjectAs(supplyLimitKey) : "0";
3569
+ const _borrowLimit = borrowLimitKey ? parseObjectAs(borrowLimitKey) : "0";
3570
+ const _riskModel = riskModel ? parseObjectAs(riskModel) : void 0;
3571
+ const _collateralStat = collateralStat ? parseObjectAs(collateralStat) : void 0;
3572
+ const parsedOriginMarketCollateral = _riskModel && _collateralStat ? {
3573
+ type: _interestModel.type.fields,
3574
+ isIsolated: !!isolatedAssetKey,
3575
+ collateralFactor: _riskModel.collateral_factor.fields,
3576
+ liquidationFactor: _riskModel.liquidation_factor.fields,
3577
+ liquidationPenalty: _riskModel.liquidation_penalty.fields,
3578
+ liquidationDiscount: _riskModel.liquidation_discount.fields,
3579
+ liquidationReserveFactor: _riskModel.liquidation_revenue_factor.fields,
3580
+ maxCollateralAmount: _riskModel.max_collateral_amount,
3581
+ totalCollateralAmount: _collateralStat.amount
3582
+ } : void 0;
3583
+ return {
3584
+ type: _interestModel.type.fields,
3585
+ maxBorrowRate: _interestModel.max_borrow_rate.fields,
3586
+ interestRate: _borrowDynamic.interest_rate.fields,
3587
+ interestRateScale: _borrowDynamic.interest_rate_scale,
3588
+ borrowIndex: _borrowDynamic.borrow_index,
3589
+ lastUpdated: _borrowDynamic.last_updated,
3590
+ cash: _balanceSheet.cash,
3591
+ debt: _balanceSheet.debt,
3592
+ marketCoinSupply: _balanceSheet.market_coin_supply,
3593
+ reserve: _balanceSheet.revenue,
3594
+ reserveFactor: _interestModel.revenue_factor.fields,
3595
+ borrowWeight: _interestModel.borrow_weight.fields,
3596
+ borrowFeeRate: _borrowFee,
3597
+ baseBorrowRatePerSec: _interestModel.base_borrow_rate_per_sec.fields,
3598
+ borrowRateOnHighKink: _interestModel.borrow_rate_on_high_kink.fields,
3599
+ borrowRateOnMidKink: _interestModel.borrow_rate_on_mid_kink.fields,
3600
+ highKink: _interestModel.high_kink.fields,
3601
+ midKink: _interestModel.mid_kink.fields,
3602
+ minBorrowAmount: _interestModel.min_borrow_amount,
3603
+ isIsolated: !!isolatedAssetKey,
3604
+ supplyLimit: _supplyLimit,
3605
+ borrowLimit: _borrowLimit,
3606
+ parsedOriginMarketCollateral
3607
+ };
3095
3608
  };
3096
- var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
3609
+ var getMarketPool = async (query, poolCoinName, indexer = false, coinPrice, requiredObjects) => {
3097
3610
  coinPrice = coinPrice ?? (await query.utils.getCoinPrices())?.[poolCoinName];
3098
3611
  if (indexer) {
3099
3612
  const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
@@ -3104,135 +3617,70 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
3104
3617
  marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
3105
3618
  marketPoolIndexer.coinName
3106
3619
  );
3107
- return marketPoolIndexer;
3108
- }
3109
- const marketId = query.address.get("core.market");
3110
- marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
3111
- showContent: true
3112
- }))?.data;
3113
- if (!(marketObject && marketObject.content?.dataType === "moveObject"))
3114
- throw new Error(`Failed to fetch marketObject`);
3115
- const fields = marketObject.content.fields;
3116
- const coinType = query.utils.parseCoinType(poolCoinName);
3117
- const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
3118
- const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3119
- parentId: balanceSheetParentId,
3120
- name: {
3121
- type: "0x1::type_name::TypeName",
3122
- value: {
3123
- name: coinType.substring(2)
3124
- }
3125
- }
3126
- });
3127
- const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
3128
- if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
3129
- throw new Error(
3130
- `Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
3131
- );
3132
- const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
3133
- const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
3134
- const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3135
- parentId: borrowIndexParentId,
3136
- name: {
3137
- type: "0x1::type_name::TypeName",
3138
- value: {
3139
- name: coinType.substring(2)
3140
- }
3141
- }
3142
- });
3143
- const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
3144
- if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
3145
- throw new Error(
3146
- `Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
3147
- );
3148
- const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
3149
- const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
3150
- const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3151
- parentId: interestModelParentId,
3152
- name: {
3153
- type: "0x1::type_name::TypeName",
3154
- value: {
3155
- name: coinType.substring(2)
3156
- }
3620
+ let marketCollateralIndexer = void 0;
3621
+ if (SUPPORT_COLLATERALS.includes(poolCoinName)) {
3622
+ marketCollateralIndexer = await query.indexer.getMarketCollateral(
3623
+ poolCoinName
3624
+ );
3625
+ marketCollateralIndexer.coinPrice = coinPrice ?? marketCollateralIndexer.coinPrice;
3626
+ marketCollateralIndexer.coinWrappedType = query.utils.getCoinWrappedType(
3627
+ marketCollateralIndexer.coinName
3628
+ );
3157
3629
  }
3158
- });
3159
- const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse?.data;
3160
- if (!(interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content))
3161
- throw new Error(
3162
- `Failed to fetch interestModelDynamicFieldObject for ${poolCoinName}: ${interestModelDynamicFieldObject}`
3163
- );
3164
- const interestModel = interestModelDynamicFieldObject.content.fields.value.fields;
3165
- const getBorrowFee = async () => {
3166
- const borrowFeeDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3167
- parentId: marketId,
3168
- name: {
3169
- type: `${BORROW_FEE_PROTOCOL_ID}::market_dynamic_keys::BorrowFeeKey`,
3170
- value: {
3171
- type: {
3172
- name: coinType.substring(2)
3173
- }
3174
- }
3175
- }
3176
- });
3177
- const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
3178
- if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
3179
- return { value: "0" };
3180
- return borrowFeeDynamicFieldObject.content.fields.value.fields;
3181
- };
3182
- const parsedMarketPoolData = parseOriginMarketPoolData({
3183
- type: interestModel.type.fields,
3184
- maxBorrowRate: interestModel.max_borrow_rate.fields,
3185
- interestRate: borrowIndex.interest_rate.fields,
3186
- interestRateScale: borrowIndex.interest_rate_scale,
3187
- borrowIndex: borrowIndex.borrow_index,
3188
- lastUpdated: borrowIndex.last_updated,
3189
- cash: balanceSheet.cash,
3190
- debt: balanceSheet.debt,
3191
- marketCoinSupply: balanceSheet.market_coin_supply,
3192
- reserve: balanceSheet.revenue,
3193
- reserveFactor: interestModel.revenue_factor.fields,
3194
- borrowWeight: interestModel.borrow_weight.fields,
3195
- borrowFeeRate: await getBorrowFee(),
3196
- baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
3197
- borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
3198
- borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
3199
- highKink: interestModel.high_kink.fields,
3200
- midKink: interestModel.mid_kink.fields,
3201
- minBorrowAmount: interestModel.min_borrow_amount
3202
- });
3630
+ return {
3631
+ marketPool: marketPoolIndexer,
3632
+ collateral: marketCollateralIndexer
3633
+ };
3634
+ }
3635
+ requiredObjects ?? (requiredObjects = (await queryRequiredMarketObjects(query, [poolCoinName]))[poolCoinName]);
3636
+ const parsedMarketPoolObjects = parseMarketPoolObjects(requiredObjects);
3637
+ const parsedMarketPoolData = parseOriginMarketPoolData(
3638
+ parsedMarketPoolObjects
3639
+ );
3203
3640
  const calculatedMarketPoolData = calculateMarketPoolData(
3204
3641
  query.utils,
3205
3642
  parsedMarketPoolData
3206
3643
  );
3207
- const coinDecimal = query.utils.getCoinDecimal(poolCoinName);
3208
- const maxSupplyCoin = (0, import_bignumber3.default)(
3209
- await getSupplyLimit(query.utils, poolCoinName) ?? "0"
3210
- ).shiftedBy(-coinDecimal).toNumber();
3211
- const maxBorrowCoin = (0, import_bignumber3.default)(
3212
- await getBorrowLimit(query.utils, poolCoinName) ?? "0"
3213
- ).shiftedBy(-coinDecimal).toNumber();
3214
- return {
3644
+ const parsedMarketCollateralData = parsedMarketPoolObjects.parsedOriginMarketCollateral ? parseOriginMarketCollateralData(
3645
+ parsedMarketPoolObjects.parsedOriginMarketCollateral
3646
+ ) : void 0;
3647
+ const basePoolData = () => ({
3215
3648
  coinName: poolCoinName,
3216
3649
  symbol: query.utils.parseSymbol(poolCoinName),
3217
- coinType: query.utils.parseCoinType(poolCoinName),
3218
3650
  marketCoinType: query.utils.parseMarketCoinType(poolCoinName),
3219
- sCoinType: query.utils.parseSCoinType(
3220
- query.utils.parseMarketCoinName(poolCoinName)
3221
- ),
3222
- coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3223
- coinDecimal,
3224
- coinPrice: coinPrice ?? 0,
3225
- highKink: parsedMarketPoolData.highKink,
3226
- midKink: parsedMarketPoolData.midKink,
3227
- reserveFactor: parsedMarketPoolData.reserveFactor,
3228
- borrowWeight: parsedMarketPoolData.borrowWeight,
3229
- borrowFee: parsedMarketPoolData.borrowFee,
3230
- marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
3231
- minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
3232
- maxSupplyCoin,
3233
- maxBorrowCoin,
3234
- isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3235
- ...calculatedMarketPoolData
3651
+ coinType: query.utils.parseCoinType(poolCoinName)
3652
+ });
3653
+ return {
3654
+ marketPool: {
3655
+ ...basePoolData(),
3656
+ sCoinType: query.utils.parseSCoinType(
3657
+ query.utils.parseMarketCoinName(poolCoinName)
3658
+ ),
3659
+ coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3660
+ coinPrice: coinPrice ?? 0,
3661
+ highKink: parsedMarketPoolData.highKink,
3662
+ midKink: parsedMarketPoolData.midKink,
3663
+ reserveFactor: parsedMarketPoolData.reserveFactor,
3664
+ borrowWeight: parsedMarketPoolData.borrowWeight,
3665
+ borrowFee: parsedMarketPoolData.borrowFee,
3666
+ marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
3667
+ minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
3668
+ ...calculatedMarketPoolData
3669
+ },
3670
+ collateral: parsedMarketCollateralData ? {
3671
+ ...basePoolData(),
3672
+ coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3673
+ coinPrice,
3674
+ collateralFactor: parsedMarketCollateralData.collateralFactor,
3675
+ liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3676
+ liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3677
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
3678
+ liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3679
+ ...calculateMarketCollateralData(
3680
+ query.utils,
3681
+ parsedMarketCollateralData
3682
+ )
3683
+ } : void 0
3236
3684
  };
3237
3685
  };
3238
3686
  var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
@@ -3327,10 +3775,11 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
3327
3775
  collateralFactor: riskModel.collateral_factor.fields,
3328
3776
  liquidationFactor: riskModel.liquidation_factor.fields,
3329
3777
  liquidationDiscount: riskModel.liquidation_discount.fields,
3330
- liquidationPanelty: riskModel.liquidation_penalty.fields,
3778
+ liquidationPenalty: riskModel.liquidation_penalty.fields,
3331
3779
  liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
3332
3780
  maxCollateralAmount: riskModel.max_collateral_amount,
3333
- totalCollateralAmount: collateralStat.amount
3781
+ totalCollateralAmount: collateralStat.amount,
3782
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
3334
3783
  });
3335
3784
  const calculatedMarketCollateralData = calculateMarketCollateralData(
3336
3785
  query.utils,
@@ -3342,14 +3791,12 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
3342
3791
  coinType: query.utils.parseCoinType(collateralCoinName),
3343
3792
  marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
3344
3793
  coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
3345
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
3346
3794
  coinPrice: coinPrice ?? 0,
3347
3795
  collateralFactor: parsedMarketCollateralData.collateralFactor,
3348
3796
  liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3349
3797
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3350
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3798
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
3351
3799
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3352
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
3353
3800
  ...calculatedMarketCollateralData
3354
3801
  };
3355
3802
  };
@@ -3385,14 +3832,26 @@ var getObligations = async ({
3385
3832
  } while (hasNextPage);
3386
3833
  const keyObjects = keyObjectsResponse.filter((ref) => !!ref.data);
3387
3834
  const obligations = [];
3835
+ const obligationsObjects = await queryMultipleObjects(
3836
+ address.cache,
3837
+ keyObjects.map((ref) => ref.data?.content).filter(
3838
+ (content) => content?.dataType === "moveObject"
3839
+ ).map((content) => content.fields.ownership.fields.of),
3840
+ {
3841
+ showContent: true
3842
+ }
3843
+ );
3388
3844
  await Promise.allSettled(
3389
- keyObjects.map(async ({ data }) => {
3845
+ keyObjects.map(async ({ data }, idx) => {
3390
3846
  const keyId = data?.objectId;
3391
3847
  const content = data?.content;
3392
3848
  if (keyId && content && "fields" in content) {
3393
3849
  const fields = content.fields;
3394
3850
  const obligationId = String(fields.ownership.fields.of);
3395
- const locked = await getObligationLocked(address.cache, obligationId);
3851
+ const locked = await getObligationLocked(
3852
+ address.cache,
3853
+ obligationsObjects[idx]
3854
+ );
3396
3855
  obligations.push({ id: obligationId, keyId, locked });
3397
3856
  }
3398
3857
  })
@@ -3400,14 +3859,12 @@ var getObligations = async ({
3400
3859
  return obligations;
3401
3860
  };
3402
3861
  var getObligationLocked = async (cache, obligation) => {
3403
- const obligationObjectResponse = typeof obligation === "string" ? (await cache.queryGetObject(obligation, {
3862
+ const obligationObjectData = typeof obligation === "string" ? (await cache.queryGetObject(obligation, {
3404
3863
  showContent: true
3405
3864
  }))?.data : obligation;
3406
3865
  let obligationLocked = false;
3407
- if (obligationObjectResponse && obligationObjectResponse?.content?.dataType === "moveObject" && "lock_key" in obligationObjectResponse.content.fields) {
3408
- obligationLocked = Boolean(
3409
- obligationObjectResponse.content.fields.lock_key
3410
- );
3866
+ if (obligationObjectData && obligationObjectData?.content?.dataType === "moveObject" && "lock_key" in obligationObjectData.content.fields) {
3867
+ obligationLocked = Boolean(obligationObjectData.content.fields.lock_key);
3411
3868
  }
3412
3869
  return obligationLocked;
3413
3870
  };
@@ -3590,10 +4047,10 @@ var getLendings = async (query, poolCoinNames = [...SUPPORT_POOLS], ownerAddress
3590
4047
  (marketCoinName) => SUPPORT_SPOOLS.includes(marketCoinName)
3591
4048
  );
3592
4049
  const coinPrices = await query.utils.getCoinPrices();
3593
- const marketPools = await query.getMarketPools(poolCoinNames, {
4050
+ const marketPools = (await query.getMarketPools(poolCoinNames, {
3594
4051
  indexer,
3595
4052
  coinPrices
3596
- });
4053
+ })).pools;
3597
4054
  const spools = await query.getSpools(stakeMarketCoinNames, {
3598
4055
  indexer,
3599
4056
  marketPools,
@@ -3761,8 +4218,10 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
3761
4218
  return lending;
3762
4219
  };
3763
4220
  var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
3764
- const coinPrices = await query.utils.getCoinPrices();
3765
- const market = await query.queryMarket({ indexer, coinPrices });
4221
+ const market = await query.queryMarket({ indexer });
4222
+ const coinPrices = await query.getAllCoinPrices({
4223
+ marketPools: market.pools
4224
+ });
3766
4225
  const [coinAmounts, obligations] = await Promise.all([
3767
4226
  query.getCoinAmounts(void 0, ownerAddress),
3768
4227
  query.getObligations(ownerAddress)
@@ -3784,17 +4243,21 @@ var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
3784
4243
  return obligationAccounts;
3785
4244
  };
3786
4245
  var getObligationAccount = async (query, obligationId, ownerAddress, indexer = false, market, coinPrices, coinAmounts) => {
4246
+ const coinNames = Array.from(
4247
+ /* @__PURE__ */ new Set([...SUPPORT_POOLS, ...SUPPORT_COLLATERALS])
4248
+ );
3787
4249
  const collateralAssetCoinNames = [
3788
4250
  ...SUPPORT_COLLATERALS
3789
4251
  ];
3790
- market = market ?? await query.queryMarket({ indexer });
4252
+ market = market ?? await query.getMarketPools(void 0, { indexer });
3791
4253
  coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools: market.pools });
3792
- coinAmounts = coinAmounts || await query.getCoinAmounts(collateralAssetCoinNames, ownerAddress);
4254
+ coinAmounts = coinAmounts ?? await query.getCoinAmounts(coinNames, ownerAddress);
3793
4255
  const [obligationQuery, borrowIncentivePools, borrowIncentiveAccounts] = await Promise.all([
3794
4256
  query.queryObligation(obligationId),
3795
4257
  query.getBorrowIncentivePools(void 0, {
3796
4258
  coinPrices,
3797
- indexer
4259
+ indexer,
4260
+ marketPools: market.pools
3798
4261
  }),
3799
4262
  query.getBorrowIncentiveAccounts(obligationId)
3800
4263
  ]);
@@ -3932,7 +4395,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
3932
4395
  const rewards = [];
3933
4396
  Object.entries(borrowIncentiveAccount.pointList).forEach(
3934
4397
  ([key, accountPoint]) => {
3935
- const poolPoint = borrowIncentivePool.points[key];
4398
+ const poolPoint = borrowIncentivePool.points[query.utils.parseSCoinTypeNameToMarketCoinName(key)];
3936
4399
  if (accountPoint && poolPoint) {
3937
4400
  let availableClaimAmount = (0, import_bignumber5.default)(0);
3938
4401
  let availableClaimCoin = (0, import_bignumber5.default)(0);
@@ -4077,7 +4540,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
4077
4540
  return obligationAccount;
4078
4541
  };
4079
4542
  var getTotalValueLocked = async (query, indexer = false) => {
4080
- const market = await query.queryMarket({ indexer });
4543
+ const market = await query.getMarketPools(void 0, { indexer });
4081
4544
  let supplyValue = (0, import_bignumber5.default)(0);
4082
4545
  let borrowValue = (0, import_bignumber5.default)(0);
4083
4546
  if (indexer) {
@@ -4198,7 +4661,7 @@ var getPythPrices = async ({
4198
4661
  };
4199
4662
  var getAllCoinPrices = async (query, marketPools, coinPrices) => {
4200
4663
  coinPrices = coinPrices ?? await query.utils.getCoinPrices();
4201
- marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices });
4664
+ marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices })).pools;
4202
4665
  if (!marketPools) {
4203
4666
  throw new Error(`Failed to fetch market pool for getAllCoinPrices`);
4204
4667
  }
@@ -4323,13 +4786,81 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
4323
4786
  };
4324
4787
 
4325
4788
  // src/queries/spoolQuery.ts
4326
- var import_utils8 = require("@mysten/sui/utils");
4789
+ var import_utils9 = require("@mysten/sui/utils");
4790
+ var queryRequiredSpoolObjects = async (query, stakePoolCoinNames) => {
4791
+ const tasks = stakePoolCoinNames.map((t, idx) => ({
4792
+ poolCoinName: stakePoolCoinNames[idx],
4793
+ spool: POOL_ADDRESSES[t]?.spool,
4794
+ spoolReward: POOL_ADDRESSES[t]?.spoolReward,
4795
+ sCoinTreasury: POOL_ADDRESSES[t]?.sCoinTreasury
4796
+ }));
4797
+ const [spoolObjects, spoolRewardObjects, sCoinTreasuryObjects] = await Promise.all([
4798
+ queryMultipleObjects(
4799
+ query.cache,
4800
+ tasks.map((task) => task.spool).filter((t) => !!t)
4801
+ ),
4802
+ queryMultipleObjects(
4803
+ query.cache,
4804
+ tasks.map((task) => task.spoolReward).filter((t) => !!t)
4805
+ ),
4806
+ queryMultipleObjects(
4807
+ query.cache,
4808
+ tasks.map((task) => task.sCoinTreasury).filter((t) => !!t)
4809
+ )
4810
+ ]);
4811
+ const mapObjects = (tasks2, fetchedObjects) => {
4812
+ const resultMap = {};
4813
+ let fetchedIndex = 0;
4814
+ for (const task of tasks2) {
4815
+ const key = task[Object.keys(task)[1]];
4816
+ if (key) {
4817
+ resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
4818
+ fetchedIndex++;
4819
+ }
4820
+ }
4821
+ return resultMap;
4822
+ };
4823
+ const spoolMap = mapObjects(tasks, spoolObjects);
4824
+ const spoolRewardMap = mapObjects(tasks, spoolRewardObjects);
4825
+ const sCoinTreasuryMap = mapObjects(tasks, sCoinTreasuryObjects);
4826
+ return stakePoolCoinNames.reduce(
4827
+ (acc, name) => {
4828
+ acc[name] = {
4829
+ spool: spoolMap[name],
4830
+ spoolReward: spoolRewardMap[name],
4831
+ sCoinTreasury: sCoinTreasuryMap[name]
4832
+ };
4833
+ return acc;
4834
+ },
4835
+ {}
4836
+ );
4837
+ };
4838
+ var parseSpoolObjects = ({
4839
+ spool,
4840
+ spoolReward
4841
+ }) => {
4842
+ const _spool = parseObjectAs(spool);
4843
+ const _spoolReward = parseObjectAs(spoolReward);
4844
+ return {
4845
+ stakeType: _spool.stake_type,
4846
+ maxDistributedPoint: _spool.max_distributed_point,
4847
+ distributedPoint: _spool.distributed_point,
4848
+ distributedPointPerPeriod: _spool.distributed_point_per_period,
4849
+ pointDistributionTime: _spool.point_distribution_time,
4850
+ maxStake: _spool.max_stakes,
4851
+ stakes: _spool.stakes,
4852
+ index: _spool.index,
4853
+ createdAt: _spool.created_at,
4854
+ lastUpdate: _spool.last_update,
4855
+ ..._spoolReward
4856
+ };
4857
+ };
4327
4858
  var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexer = false, marketPools, coinPrices) => {
4328
4859
  const stakeCoinNames = stakeMarketCoinNames.map(
4329
4860
  (stakeMarketCoinName) => query.utils.parseCoinName(stakeMarketCoinName)
4330
4861
  );
4331
- coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
4332
- marketPools = marketPools ?? await query.getMarketPools(stakeCoinNames, { indexer });
4862
+ marketPools = marketPools ?? (await query.getMarketPools(stakeCoinNames, { indexer })).pools;
4863
+ coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools }) ?? {};
4333
4864
  if (!marketPools)
4334
4865
  throw new Error(`Fail to fetch marketPools for ${stakeCoinNames}`);
4335
4866
  const spools = {};
@@ -4344,126 +4875,93 @@ var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexe
4344
4875
  const rewardCoinName = query.utils.getSpoolRewardCoinName(
4345
4876
  spool.marketCoinName
4346
4877
  );
4347
- const marketPool = marketPools[coinName];
4348
4878
  spool.coinPrice = coinPrices[coinName] ?? spool.coinPrice;
4349
- spool.marketCoinPrice = coinPrices[coinName] ? (coinPrices[coinName] ?? 0) * (marketPool ? marketPool.conversionRate : 0) : spool.marketCoinPrice;
4879
+ spool.marketCoinPrice = coinPrices[spool.marketCoinName] ?? spool.marketCoinPrice;
4350
4880
  spool.rewardCoinPrice = coinPrices[rewardCoinName] ?? spool.rewardCoinPrice;
4351
4881
  spools[spool.marketCoinName] = spool;
4352
4882
  };
4353
4883
  Object.values(spoolsIndexer).forEach(updateSpools);
4354
4884
  return spools;
4355
4885
  }
4356
- for (const stakeMarketCoinName of stakeMarketCoinNames) {
4357
- const stakeCoinName = query.utils.parseCoinName(stakeMarketCoinName);
4358
- const spool = await getSpool(
4359
- query,
4360
- stakeMarketCoinName,
4361
- indexer,
4362
- marketPools[stakeCoinName],
4363
- coinPrices
4364
- );
4365
- if (spool) {
4366
- spools[stakeMarketCoinName] = spool;
4367
- }
4368
- }
4886
+ const requiredObjects = await queryRequiredSpoolObjects(
4887
+ query,
4888
+ stakeCoinNames
4889
+ );
4890
+ await Promise.allSettled(
4891
+ stakeMarketCoinNames.map(async (stakeMarketCoinName, idx) => {
4892
+ try {
4893
+ const stakeCoinName = stakeCoinNames[idx];
4894
+ const spool = await getSpool(
4895
+ query,
4896
+ stakeMarketCoinName,
4897
+ indexer,
4898
+ coinPrices,
4899
+ requiredObjects[stakeCoinName]
4900
+ );
4901
+ if (spool) {
4902
+ spools[stakeMarketCoinName] = spool;
4903
+ }
4904
+ } catch (e) {
4905
+ console.error(e);
4906
+ }
4907
+ })
4908
+ );
4369
4909
  return spools;
4370
4910
  };
4371
- var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPrices) => {
4911
+ var getSpool = async (query, marketCoinName, indexer = false, coinPrices, requiredObjects) => {
4372
4912
  const coinName = query.utils.parseCoinName(marketCoinName);
4373
- marketPool = marketPool || await query.getMarketPool(coinName, { indexer });
4374
- if (!marketPool) {
4375
- throw new Error(`Failed to fetch marketPool for ${marketCoinName}`);
4376
- }
4377
- const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
4378
- const rewardPoolId = query.address.get(
4379
- `spool.pools.${marketCoinName}.rewardPoolId`
4380
- );
4381
- let spool = void 0;
4382
- coinPrices = coinPrices || await query.utils.getCoinPrices();
4913
+ coinPrices = coinPrices || await query.getAllCoinPrices();
4383
4914
  if (indexer) {
4384
4915
  const spoolIndexer = await query.indexer.getSpool(marketCoinName);
4385
4916
  const coinName2 = query.utils.parseCoinName(marketCoinName);
4386
4917
  const rewardCoinName2 = query.utils.getSpoolRewardCoinName(marketCoinName);
4387
- spoolIndexer.coinPrice = coinPrices?.[coinName2] || spoolIndexer.coinPrice;
4388
- spoolIndexer.marketCoinPrice = (coinPrices?.[coinName2] ?? 0) * (marketPool ? marketPool.conversionRate : 0) || spoolIndexer.marketCoinPrice;
4389
- spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2] || spoolIndexer.rewardCoinPrice;
4918
+ spoolIndexer.coinPrice = coinPrices?.[coinName2] ?? spoolIndexer.coinPrice;
4919
+ spoolIndexer.marketCoinPrice = coinPrices?.[marketCoinName] ?? spoolIndexer.marketCoinPrice;
4920
+ spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2] ?? spoolIndexer.rewardCoinPrice;
4390
4921
  return spoolIndexer;
4391
4922
  }
4392
- const spoolObjectResponse = await query.cache.queryGetObjects(
4393
- [poolId, rewardPoolId],
4394
- {
4395
- showContent: true
4396
- }
4397
- );
4398
- if (!(spoolObjectResponse[0] && spoolObjectResponse[1])) {
4399
- throw new Error("Fail to fetch spoolObjectResponse!");
4400
- }
4923
+ requiredObjects ?? (requiredObjects = (await queryRequiredSpoolObjects(query, [coinName]))[coinName]);
4401
4924
  const rewardCoinName = query.utils.getSpoolRewardCoinName(marketCoinName);
4402
4925
  coinPrices = coinPrices || await query.utils.getCoinPrices();
4403
- const spoolObject = spoolObjectResponse[0];
4404
- const rewardPoolObject = spoolObjectResponse[1];
4405
- if (spoolObject.content && "fields" in spoolObject.content) {
4406
- const spoolFields = spoolObject.content.fields;
4407
- const parsedSpoolData = parseOriginSpoolData({
4408
- stakeType: spoolFields.stake_type,
4409
- maxDistributedPoint: spoolFields.max_distributed_point,
4410
- distributedPoint: spoolFields.distributed_point,
4411
- distributedPointPerPeriod: spoolFields.distributed_point_per_period,
4412
- pointDistributionTime: spoolFields.point_distribution_time,
4413
- maxStake: spoolFields.max_stakes,
4414
- stakes: spoolFields.stakes,
4415
- index: spoolFields.index,
4416
- createdAt: spoolFields.created_at,
4417
- lastUpdate: spoolFields.last_update
4418
- });
4419
- const marketCoinPrice = (coinPrices?.[coinName] ?? 0) * marketPool.conversionRate;
4420
- const marketCoinDecimal = query.utils.getCoinDecimal(marketCoinName);
4421
- const calculatedSpoolData = calculateSpoolData(
4422
- parsedSpoolData,
4423
- marketCoinPrice,
4424
- marketCoinDecimal
4425
- );
4426
- if (rewardPoolObject.content && "fields" in rewardPoolObject.content) {
4427
- const rewardPoolFields = rewardPoolObject.content.fields;
4428
- const parsedSpoolRewardPoolData = parseOriginSpoolRewardPoolData({
4429
- claimed_rewards: rewardPoolFields.claimed_rewards,
4430
- exchange_rate_numerator: rewardPoolFields.exchange_rate_numerator,
4431
- exchange_rate_denominator: rewardPoolFields.exchange_rate_denominator,
4432
- rewards: rewardPoolFields.rewards,
4433
- spool_id: rewardPoolFields.spool_id
4434
- });
4435
- const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
4436
- const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
4437
- const calculatedRewardPoolData = calculateSpoolRewardPoolData(
4438
- parsedSpoolData,
4439
- parsedSpoolRewardPoolData,
4440
- calculatedSpoolData,
4441
- rewardCoinPrice,
4442
- rewardCoinDecimal
4443
- );
4444
- spool = {
4445
- marketCoinName,
4446
- symbol: query.utils.parseSymbol(marketCoinName),
4447
- coinType: query.utils.parseCoinType(coinName),
4448
- marketCoinType: query.utils.parseMarketCoinType(coinName),
4449
- rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
4450
- sCoinType: marketPool.sCoinType,
4451
- coinDecimal: query.utils.getCoinDecimal(coinName),
4452
- rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
4453
- coinPrice: coinPrices?.[coinName] ?? 0,
4454
- marketCoinPrice,
4455
- rewardCoinPrice,
4456
- maxPoint: parsedSpoolData.maxPoint,
4457
- distributedPoint: parsedSpoolData.distributedPoint,
4458
- maxStake: parsedSpoolData.maxStake,
4459
- ...calculatedSpoolData,
4460
- exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
4461
- exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
4462
- ...calculatedRewardPoolData
4463
- };
4464
- }
4465
- }
4466
- return spool;
4926
+ const parsedSpoolObjects = parseSpoolObjects(requiredObjects);
4927
+ const parsedSpoolData = parseOriginSpoolData(parsedSpoolObjects);
4928
+ const marketCoinPrice = coinPrices?.[marketCoinName] ?? 0;
4929
+ const marketCoinDecimal = query.utils.getCoinDecimal(marketCoinName);
4930
+ const calculatedSpoolData = calculateSpoolData(
4931
+ parsedSpoolData,
4932
+ marketCoinPrice,
4933
+ marketCoinDecimal
4934
+ );
4935
+ const parsedSpoolRewardPoolData = parseOriginSpoolRewardPoolData(parsedSpoolObjects);
4936
+ const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
4937
+ const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
4938
+ const calculatedRewardPoolData = calculateSpoolRewardPoolData(
4939
+ parsedSpoolData,
4940
+ parsedSpoolRewardPoolData,
4941
+ calculatedSpoolData,
4942
+ rewardCoinPrice,
4943
+ rewardCoinDecimal
4944
+ );
4945
+ return {
4946
+ marketCoinName,
4947
+ symbol: query.utils.parseSymbol(marketCoinName),
4948
+ coinType: query.utils.parseCoinType(coinName),
4949
+ marketCoinType: query.utils.parseMarketCoinType(coinName),
4950
+ rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
4951
+ sCoinType: query.utils.parseSCoinType(marketCoinName),
4952
+ coinDecimal: query.utils.getCoinDecimal(coinName),
4953
+ rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
4954
+ coinPrice: coinPrices?.[coinName] ?? 0,
4955
+ marketCoinPrice,
4956
+ rewardCoinPrice,
4957
+ maxPoint: parsedSpoolData.maxPoint,
4958
+ distributedPoint: parsedSpoolData.distributedPoint,
4959
+ maxStake: parsedSpoolData.maxStake,
4960
+ ...calculatedSpoolData,
4961
+ exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
4962
+ exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
4963
+ ...calculatedRewardPoolData
4964
+ };
4467
4965
  };
4468
4966
  var getStakeAccounts = async ({
4469
4967
  utils
@@ -4540,14 +5038,14 @@ var getStakeAccounts = async ({
4540
5038
  svsui: stakeAccounts.svsui,
4541
5039
  susdc: stakeAccounts.susdc
4542
5040
  };
4543
- const normalizedType = (0, import_utils8.normalizeStructTag)(type);
5041
+ const normalizedType = (0, import_utils9.normalizeStructTag)(type);
4544
5042
  const stakeAccountArray = stakeMarketCoinTypeMap[reversedStakeMarketCoinTypes[normalizedType]];
4545
5043
  if (stakeAccountArray) {
4546
5044
  stakeAccountArray.push({
4547
5045
  id,
4548
5046
  type: normalizedType,
4549
5047
  stakePoolId,
4550
- stakeType: (0, import_utils8.normalizeStructTag)(stakeType),
5048
+ stakeType: (0, import_utils9.normalizeStructTag)(stakeType),
4551
5049
  staked,
4552
5050
  index,
4553
5051
  points,
@@ -4585,13 +5083,13 @@ var getStakePool = async ({
4585
5083
  const lastUpdate = Number(fields.last_update);
4586
5084
  stakePool = {
4587
5085
  id,
4588
- type: (0, import_utils8.normalizeStructTag)(type),
5086
+ type: (0, import_utils9.normalizeStructTag)(type),
4589
5087
  maxPoint,
4590
5088
  distributedPoint,
4591
5089
  pointPerPeriod,
4592
5090
  period,
4593
5091
  maxStake,
4594
- stakeType: (0, import_utils8.normalizeStructTag)(stakeType),
5092
+ stakeType: (0, import_utils9.normalizeStructTag)(stakeType),
4595
5093
  totalStaked,
4596
5094
  index,
4597
5095
  createdAt,
@@ -4630,7 +5128,7 @@ var getStakeRewardPool = async ({
4630
5128
  const claimedRewards = Number(rewardPoolFields.claimed_rewards);
4631
5129
  stakeRewardPool = {
4632
5130
  id,
4633
- type: (0, import_utils8.normalizeStructTag)(type),
5131
+ type: (0, import_utils9.normalizeStructTag)(type),
4634
5132
  stakePoolId,
4635
5133
  ratioNumerator,
4636
5134
  ratioDenominator,
@@ -4813,6 +5311,105 @@ var getVeScaTreasuryInfo = async (utils) => {
4813
5311
  };
4814
5312
  };
4815
5313
 
5314
+ // src/queries/poolAddressesQuery.ts
5315
+ var getAllAddresses = async (query) => {
5316
+ const results = {};
5317
+ const marketId = query.address.get("core.market");
5318
+ const marketObject = (await query.cache.queryGetObject(marketId, {
5319
+ showContent: true
5320
+ }))?.data;
5321
+ if (!(marketObject && marketObject.content?.dataType === "moveObject"))
5322
+ throw new Error(`Failed to fetch marketObject`);
5323
+ const fields = marketObject.content.fields;
5324
+ const coinTypesPairs = SUPPORT_POOLS.reduce(
5325
+ (acc, pool) => {
5326
+ acc.push([pool, query.utils.parseCoinType(pool).substring(2)]);
5327
+ return acc;
5328
+ },
5329
+ []
5330
+ );
5331
+ const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
5332
+ const collateralStatsParentId = fields.collateral_stats.fields.table.fields.id.id;
5333
+ const borrowDynamicsParentid = fields.borrow_dynamics.fields.table.fields.id.id;
5334
+ const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
5335
+ const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
5336
+ const ADDRESS_TYPE = `0x1::type_name::TypeName`;
5337
+ const BORROW_FEE_TYPE = `0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da::market_dynamic_keys::BorrowFeeKey`;
5338
+ const SUPPLY_LIMIT_TYPE = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
5339
+ const BORROW_LIMIT_TYPE = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
5340
+ const ISOLATED_ASSET_KEY = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
5341
+ const fetchDynamicObject = async (parentId, type, value) => {
5342
+ try {
5343
+ return (await query.cache.queryGetDynamicFieldObject({
5344
+ parentId,
5345
+ name: {
5346
+ type,
5347
+ value
5348
+ }
5349
+ }))?.data?.objectId;
5350
+ } catch (_e) {
5351
+ return void 0;
5352
+ }
5353
+ };
5354
+ await Promise.all(
5355
+ coinTypesPairs.map(async ([coinName, coinType]) => {
5356
+ const addresses = await Promise.all([
5357
+ fetchDynamicObject(balanceSheetParentId, ADDRESS_TYPE, {
5358
+ name: coinType
5359
+ }),
5360
+ fetchDynamicObject(collateralStatsParentId, ADDRESS_TYPE, {
5361
+ name: coinType
5362
+ }),
5363
+ fetchDynamicObject(borrowDynamicsParentid, ADDRESS_TYPE, {
5364
+ name: coinType
5365
+ }),
5366
+ fetchDynamicObject(interestModelParentId, ADDRESS_TYPE, {
5367
+ name: coinType
5368
+ }),
5369
+ fetchDynamicObject(riskModelParentId, ADDRESS_TYPE, {
5370
+ name: coinType
5371
+ }),
5372
+ fetchDynamicObject(marketId, BORROW_FEE_TYPE, coinType),
5373
+ fetchDynamicObject(marketId, SUPPLY_LIMIT_TYPE, coinType),
5374
+ fetchDynamicObject(marketId, BORROW_LIMIT_TYPE, coinType),
5375
+ fetchDynamicObject(marketId, ISOLATED_ASSET_KEY, coinType)
5376
+ ]);
5377
+ const spool = query.address.get(
5378
+ // @ts-ignore
5379
+ `spool.pools.s${coinName}.id`
5380
+ );
5381
+ const rewardPool = query.address.get(
5382
+ // @ts-ignore
5383
+ `spool.pools.s${coinName}.rewardPoolId`
5384
+ );
5385
+ const sCoinTreasury = query.address.get(
5386
+ // @ts-ignore
5387
+ `scoin.coins.s${coinName}.treasury`
5388
+ );
5389
+ const coinDecimalId = query.address.get(
5390
+ `core.coins.${coinName}.metaData`
5391
+ );
5392
+ results[coinName] = {
5393
+ lendingPoolAddress: addresses[0],
5394
+ collateralPoolAddress: addresses[1],
5395
+ borrowDynamic: addresses[2],
5396
+ interestModel: addresses[3],
5397
+ riskModel: addresses[4],
5398
+ borrowFeeKey: addresses[5],
5399
+ supplyLimitKey: addresses[6],
5400
+ borrowLimitKey: addresses[7],
5401
+ isolatedAssetKey: addresses[8],
5402
+ spool,
5403
+ spoolReward: rewardPool,
5404
+ sCoinTreasury,
5405
+ coinDecimalId
5406
+ };
5407
+ await new Promise((resolve) => setTimeout(resolve, 200));
5408
+ })
5409
+ );
5410
+ return results;
5411
+ };
5412
+
4816
5413
  // src/models/suiKit.ts
4817
5414
  var import_sui_kit4 = require("@scallop-io/sui-kit");
4818
5415
  var newSuiKit = (params) => {
@@ -4915,7 +5512,7 @@ var ScallopUtils = class {
4915
5512
  throw Error(`Coin ${coinName} is not supported`);
4916
5513
  }
4917
5514
  if (coinName === "sui")
4918
- return (0, import_utils10.normalizeStructTag)(`${coinPackageId}::sui::SUI`);
5515
+ return (0, import_utils11.normalizeStructTag)(`${coinPackageId}::sui::SUI`);
4919
5516
  const wormHolePackageIds = [
4920
5517
  this.address.get("core.coins.wusdc.id") ?? wormholeCoinIds.wusdc,
4921
5518
  this.address.get("core.coins.wusdt.id") ?? wormholeCoinIds.wusdt,
@@ -4964,13 +5561,14 @@ var ScallopUtils = class {
4964
5561
  }
4965
5562
  }
4966
5563
  /**
4967
- * Convert sCoin name to coin name.
5564
+ * Convert sCoin name to market coin name.
4968
5565
  * This function will parse new sCoin name `scallop_...` to its old market coin name which is shorter
4969
5566
  * e.g: `scallop_sui -> ssui
5567
+ * if no `scallop_...` is encountered, return coinName
4970
5568
  * @return sCoin name
4971
5569
  */
4972
- parseCoinNameFromSCoinName(coinName) {
4973
- return sCoinRawNameToName[coinName];
5570
+ parseSCoinTypeNameToMarketCoinName(coinName) {
5571
+ return sCoinRawNameToName[coinName] ?? coinName;
4974
5572
  }
4975
5573
  /**
4976
5574
  * Convert sCoin name into sCoin type
@@ -5018,7 +5616,10 @@ var ScallopUtils = class {
5018
5616
  return `${protocolObjectId}::reserve::MarketCoin<${coinType}>`;
5019
5617
  }
5020
5618
  parseCoinNameFromType(coinType) {
5021
- coinType = (0, import_utils10.normalizeStructTag)(coinType);
5619
+ coinType = (0, import_utils11.normalizeStructTag)(coinType);
5620
+ if (sCoinTypeToName[coinType]) {
5621
+ return sCoinTypeToName[coinType];
5622
+ }
5022
5623
  const coinTypeRegex = new RegExp(`((0x[^:]+::[^:]+::[^<>]+))(?![^<>]*<)`);
5023
5624
  const coinTypeMatch = coinType.match(coinTypeRegex);
5024
5625
  const isMarketCoinType = coinType.includes("reserve::MarketCoin");
@@ -5099,7 +5700,7 @@ var ScallopUtils = class {
5099
5700
  * @param coinType - The coin type, default is 0x2::SUI::SUI.
5100
5701
  * @return The selected transaction coin arguments.
5101
5702
  */
5102
- async selectCoins(amount, coinType = import_utils10.SUI_TYPE_ARG, ownerAddress) {
5703
+ async selectCoins(amount, coinType = import_utils11.SUI_TYPE_ARG, ownerAddress) {
5103
5704
  ownerAddress = ownerAddress ?? this.suiKit.currentAddress();
5104
5705
  const coins = await this.suiKit.suiInteractor.selectCoins(
5105
5706
  ownerAddress,
@@ -5188,7 +5789,7 @@ var ScallopUtils = class {
5188
5789
  );
5189
5790
  const priceIds = priceIdPairs.map(([_2, priceId]) => priceId);
5190
5791
  const pythConnection = new import_pyth_sui_js.SuiPriceServiceConnection(endpoint, {
5191
- timeout: 2e3
5792
+ timeout: 4e3
5192
5793
  });
5193
5794
  try {
5194
5795
  const feeds = await this.cache.queryClient.fetchQuery({
@@ -5297,15 +5898,15 @@ var ScallopUtils = class {
5297
5898
  };
5298
5899
 
5299
5900
  // src/models/scallopBuilder.ts
5300
- var import_utils24 = require("@mysten/sui/utils");
5901
+ var import_utils25 = require("@mysten/sui/utils");
5301
5902
 
5302
5903
  // src/builders/coreBuilder.ts
5303
5904
  var import_transactions = require("@mysten/sui/transactions");
5304
- var import_utils13 = require("@mysten/sui/utils");
5905
+ var import_utils14 = require("@mysten/sui/utils");
5305
5906
  var import_sui_kit5 = require("@scallop-io/sui-kit");
5306
5907
 
5307
5908
  // src/builders/oracle.ts
5308
- var import_utils12 = require("@mysten/sui/utils");
5909
+ var import_utils13 = require("@mysten/sui/utils");
5309
5910
  var import_pyth_sui_js2 = require("@pythnetwork/pyth-sui-js");
5310
5911
  var updateOracles = async (builder, txBlock, assetCoinNames, options = { usePythPullModel: true }) => {
5311
5912
  const usePythPullModel = builder.params.usePythPullModel ?? options.usePythPullModel;
@@ -5421,27 +6022,27 @@ var priceUpdateRequest = (txBlock, packageId, xOracleId, coinType) => {
5421
6022
  var confirmPriceUpdateRequest = (txBlock, packageId, xOracleId, request, coinType) => {
5422
6023
  const target = `${packageId}::x_oracle::confirm_price_update_request`;
5423
6024
  const typeArgs = [coinType];
5424
- txBlock.moveCall(target, [xOracleId, request, import_utils12.SUI_CLOCK_OBJECT_ID], typeArgs);
6025
+ txBlock.moveCall(target, [xOracleId, request, import_utils13.SUI_CLOCK_OBJECT_ID], typeArgs);
5425
6026
  return txBlock;
5426
6027
  };
5427
6028
  var updateSupraPrice = (txBlock, packageId, request, holderId, registryId, coinType) => {
5428
6029
  txBlock.moveCall(
5429
6030
  `${packageId}::rule::set_price`,
5430
- [request, holderId, registryId, import_utils12.SUI_CLOCK_OBJECT_ID],
6031
+ [request, holderId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
5431
6032
  [coinType]
5432
6033
  );
5433
6034
  };
5434
6035
  var updateSwitchboardPrice = (txBlock, packageId, request, aggregatorId, registryId, coinType) => {
5435
6036
  txBlock.moveCall(
5436
6037
  `${packageId}::rule::set_price`,
5437
- [request, aggregatorId, registryId, import_utils12.SUI_CLOCK_OBJECT_ID],
6038
+ [request, aggregatorId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
5438
6039
  [coinType]
5439
6040
  );
5440
6041
  };
5441
6042
  var updatePythPrice = (txBlock, packageId, request, stateId, feedObjectId, registryId, coinType) => {
5442
6043
  txBlock.moveCall(
5443
6044
  `${packageId}::rule::set_price`,
5444
- [request, stateId, feedObjectId, registryId, import_utils12.SUI_CLOCK_OBJECT_ID],
6045
+ [request, stateId, feedObjectId, registryId, import_utils13.SUI_CLOCK_OBJECT_ID],
5445
6046
  [coinType]
5446
6047
  );
5447
6048
  };
@@ -5477,32 +6078,41 @@ var generateCoreNormalMethod = ({
5477
6078
  const referralPkgId = builder.address.get("referral.id");
5478
6079
  const referralWitnessType = `${referralPkgId}::scallop_referral_program::REFERRAL_WITNESS`;
5479
6080
  return {
5480
- openObligation: () => {
5481
- const [obligation, obligationKey, obligationHotPotato] = txBlock.moveCall(
6081
+ openObligation: async () => {
6082
+ const [obligation, obligationKey, obligationHotPotato] = await builder.moveCall(
6083
+ txBlock,
5482
6084
  `${coreIds.protocolPkg}::open_obligation::open_obligation`,
5483
6085
  [coreIds.version]
5484
6086
  );
5485
6087
  return [obligation, obligationKey, obligationHotPotato];
5486
6088
  },
5487
- returnObligation: (obligation, obligationHotPotato) => txBlock.moveCall(
5488
- `${coreIds.protocolPkg}::open_obligation::return_obligation`,
5489
- [coreIds.version, obligation, obligationHotPotato]
5490
- ),
5491
- openObligationEntry: () => txBlock.moveCall(
5492
- `${coreIds.protocolPkg}::open_obligation::open_obligation_entry`,
5493
- [coreIds.version]
5494
- ),
5495
- addCollateral: (obligation, coin, collateralCoinName) => {
6089
+ returnObligation: async (obligation, obligationHotPotato) => {
6090
+ await builder.moveCall(
6091
+ txBlock,
6092
+ `${coreIds.protocolPkg}::open_obligation::return_obligation`,
6093
+ [coreIds.version, obligation, obligationHotPotato]
6094
+ );
6095
+ },
6096
+ openObligationEntry: async () => {
6097
+ await builder.moveCall(
6098
+ txBlock,
6099
+ `${coreIds.protocolPkg}::open_obligation::open_obligation_entry`,
6100
+ [coreIds.version]
6101
+ );
6102
+ },
6103
+ addCollateral: async (obligation, coin, collateralCoinName) => {
5496
6104
  const coinType = builder.utils.parseCoinType(collateralCoinName);
5497
- return txBlock.moveCall(
6105
+ await builder.moveCall(
6106
+ txBlock,
5498
6107
  `${coreIds.protocolPkg}::deposit_collateral::deposit_collateral`,
5499
6108
  [coreIds.version, obligation, coreIds.market, coin],
5500
6109
  [coinType]
5501
6110
  );
5502
6111
  },
5503
- takeCollateral: (obligation, obligationKey, amount, collateralCoinName) => {
6112
+ takeCollateral: async (obligation, obligationKey, amount, collateralCoinName) => {
5504
6113
  const coinType = builder.utils.parseCoinType(collateralCoinName);
5505
- return txBlock.moveCall(
6114
+ return await builder.moveCall(
6115
+ txBlock,
5506
6116
  `${coreIds.protocolPkg}::withdraw_collateral::withdraw_collateral`,
5507
6117
  [
5508
6118
  coreIds.version,
@@ -5512,46 +6122,51 @@ var generateCoreNormalMethod = ({
5512
6122
  coreIds.coinDecimalsRegistry,
5513
6123
  txBlock.pure.u64(amount),
5514
6124
  coreIds.xOracle,
5515
- import_utils13.SUI_CLOCK_OBJECT_ID
6125
+ import_utils14.SUI_CLOCK_OBJECT_ID
5516
6126
  ],
5517
6127
  [coinType]
5518
6128
  );
5519
6129
  },
5520
- deposit: (coin, poolCoinName) => {
6130
+ deposit: async (coin, poolCoinName) => {
5521
6131
  const coinType = builder.utils.parseCoinType(poolCoinName);
5522
- return txBlock.moveCall(
6132
+ return await builder.moveCall(
6133
+ txBlock,
5523
6134
  `${coreIds.protocolPkg}::mint::mint`,
5524
- [coreIds.version, coreIds.market, coin, import_utils13.SUI_CLOCK_OBJECT_ID],
6135
+ [coreIds.version, coreIds.market, coin, import_utils14.SUI_CLOCK_OBJECT_ID],
5525
6136
  [coinType]
5526
6137
  );
5527
6138
  },
5528
- depositEntry: (coin, poolCoinName) => {
6139
+ depositEntry: async (coin, poolCoinName) => {
5529
6140
  const coinType = builder.utils.parseCoinType(poolCoinName);
5530
- return txBlock.moveCall(
6141
+ return await builder.moveCall(
6142
+ txBlock,
5531
6143
  `${coreIds.protocolPkg}::mint::mint_entry`,
5532
- [coreIds.version, coreIds.market, coin, import_utils13.SUI_CLOCK_OBJECT_ID],
6144
+ [coreIds.version, coreIds.market, coin, import_utils14.SUI_CLOCK_OBJECT_ID],
5533
6145
  [coinType]
5534
6146
  );
5535
6147
  },
5536
- withdraw: (marketCoin, poolCoinName) => {
6148
+ withdraw: async (marketCoin, poolCoinName) => {
5537
6149
  const coinType = builder.utils.parseCoinType(poolCoinName);
5538
- return txBlock.moveCall(
6150
+ return await builder.moveCall(
6151
+ txBlock,
5539
6152
  `${coreIds.protocolPkg}::redeem::redeem`,
5540
- [coreIds.version, coreIds.market, marketCoin, import_utils13.SUI_CLOCK_OBJECT_ID],
6153
+ [coreIds.version, coreIds.market, marketCoin, import_utils14.SUI_CLOCK_OBJECT_ID],
5541
6154
  [coinType]
5542
6155
  );
5543
6156
  },
5544
- withdrawEntry: (marketCoin, poolCoinName) => {
6157
+ withdrawEntry: async (marketCoin, poolCoinName) => {
5545
6158
  const coinType = builder.utils.parseCoinType(poolCoinName);
5546
- return txBlock.moveCall(
6159
+ return await builder.moveCall(
6160
+ txBlock,
5547
6161
  `${coreIds.protocolPkg}::redeem::redeem_entry`,
5548
- [coreIds.version, coreIds.market, marketCoin, import_utils13.SUI_CLOCK_OBJECT_ID],
6162
+ [coreIds.version, coreIds.market, marketCoin, import_utils14.SUI_CLOCK_OBJECT_ID],
5549
6163
  [coinType]
5550
6164
  );
5551
6165
  },
5552
- borrow: (obligation, obligationKey, amount, poolCoinName) => {
6166
+ borrow: async (obligation, obligationKey, amount, poolCoinName) => {
5553
6167
  const coinType = builder.utils.parseCoinType(poolCoinName);
5554
- return txBlock.moveCall(
6168
+ return await builder.moveCall(
6169
+ txBlock,
5555
6170
  `${coreIds.protocolPkg}::borrow::borrow`,
5556
6171
  [
5557
6172
  coreIds.version,
@@ -5561,14 +6176,15 @@ var generateCoreNormalMethod = ({
5561
6176
  coreIds.coinDecimalsRegistry,
5562
6177
  amount,
5563
6178
  coreIds.xOracle,
5564
- import_utils13.SUI_CLOCK_OBJECT_ID
6179
+ import_utils14.SUI_CLOCK_OBJECT_ID
5565
6180
  ],
5566
6181
  [coinType]
5567
6182
  );
5568
6183
  },
5569
- borrowWithReferral: (obligation, obligationKey, borrowReferral, amount, poolCoinName) => {
6184
+ borrowWithReferral: async (obligation, obligationKey, borrowReferral, amount, poolCoinName) => {
5570
6185
  const coinType = builder.utils.parseCoinType(poolCoinName);
5571
- return txBlock.moveCall(
6186
+ return await builder.moveCall(
6187
+ txBlock,
5572
6188
  `${coreIds.protocolPkg}::borrow::borrow_with_referral`,
5573
6189
  [
5574
6190
  coreIds.version,
@@ -5577,16 +6193,17 @@ var generateCoreNormalMethod = ({
5577
6193
  coreIds.market,
5578
6194
  coreIds.coinDecimalsRegistry,
5579
6195
  borrowReferral,
5580
- txBlock.pure.u64(amount),
6196
+ typeof amount === "number" ? txBlock.pure.u64(amount) : amount,
5581
6197
  coreIds.xOracle,
5582
- import_utils13.SUI_CLOCK_OBJECT_ID
6198
+ import_utils14.SUI_CLOCK_OBJECT_ID
5583
6199
  ],
5584
6200
  [coinType, referralWitnessType]
5585
6201
  );
5586
6202
  },
5587
- borrowEntry: (obligation, obligationKey, amount, poolCoinName) => {
6203
+ borrowEntry: async (obligation, obligationKey, amount, poolCoinName) => {
5588
6204
  const coinType = builder.utils.parseCoinType(poolCoinName);
5589
- return txBlock.moveCall(
6205
+ return await builder.moveCall(
6206
+ txBlock,
5590
6207
  `${coreIds.protocolPkg}::borrow::borrow_entry`,
5591
6208
  [
5592
6209
  coreIds.version,
@@ -5596,36 +6213,39 @@ var generateCoreNormalMethod = ({
5596
6213
  coreIds.coinDecimalsRegistry,
5597
6214
  txBlock.pure.u64(amount),
5598
6215
  coreIds.xOracle,
5599
- import_utils13.SUI_CLOCK_OBJECT_ID
6216
+ import_utils14.SUI_CLOCK_OBJECT_ID
5600
6217
  ],
5601
6218
  [coinType]
5602
6219
  );
5603
6220
  },
5604
- repay: (obligation, coin, poolCoinName) => {
6221
+ repay: async (obligation, coin, poolCoinName) => {
5605
6222
  const coinType = builder.utils.parseCoinType(poolCoinName);
5606
- return txBlock.moveCall(
6223
+ await builder.moveCall(
6224
+ txBlock,
5607
6225
  `${coreIds.protocolPkg}::repay::repay`,
5608
6226
  [
5609
6227
  coreIds.version,
5610
6228
  obligation,
5611
6229
  coreIds.market,
5612
6230
  coin,
5613
- import_utils13.SUI_CLOCK_OBJECT_ID
6231
+ import_utils14.SUI_CLOCK_OBJECT_ID
5614
6232
  ],
5615
6233
  [coinType]
5616
6234
  );
5617
6235
  },
5618
- borrowFlashLoan: (amount, poolCoinName) => {
6236
+ borrowFlashLoan: async (amount, poolCoinName) => {
5619
6237
  const coinType = builder.utils.parseCoinType(poolCoinName);
5620
- return txBlock.moveCall(
6238
+ return await builder.moveCall(
6239
+ txBlock,
5621
6240
  `${coreIds.protocolPkg}::flash_loan::borrow_flash_loan`,
5622
6241
  [coreIds.version, coreIds.market, amount],
5623
6242
  [coinType]
5624
6243
  );
5625
6244
  },
5626
- repayFlashLoan: (coin, loan, poolCoinName) => {
6245
+ repayFlashLoan: async (coin, loan, poolCoinName) => {
5627
6246
  const coinType = builder.utils.parseCoinType(poolCoinName);
5628
- return txBlock.moveCall(
6247
+ await builder.moveCall(
6248
+ txBlock,
5629
6249
  `${coreIds.protocolPkg}::flash_loan::repay_flash_loan`,
5630
6250
  [coreIds.version, coreIds.market, coin, loan],
5631
6251
  [coinType]
@@ -5647,7 +6267,7 @@ var generateCoreQuickMethod = ({
5647
6267
  );
5648
6268
  if (collateralCoinName === "sui") {
5649
6269
  const [suiCoin] = txBlock.splitSUIFromGas([amount]);
5650
- txBlock.addCollateral(obligationArg, suiCoin, collateralCoinName);
6270
+ await txBlock.addCollateral(obligationArg, suiCoin, collateralCoinName);
5651
6271
  } else {
5652
6272
  const { leftCoin, takeCoin } = await builder.selectCoin(
5653
6273
  txBlock,
@@ -5655,7 +6275,11 @@ var generateCoreQuickMethod = ({
5655
6275
  amount,
5656
6276
  sender
5657
6277
  );
5658
- txBlock.addCollateral(obligationArg, takeCoin, collateralCoinName);
6278
+ await txBlock.addCollateral(
6279
+ obligationArg,
6280
+ takeCoin,
6281
+ collateralCoinName
6282
+ );
5659
6283
  txBlock.transferObjects([leftCoin], sender);
5660
6284
  }
5661
6285
  },
@@ -5670,7 +6294,7 @@ var generateCoreQuickMethod = ({
5670
6294
  obligationInfo.obligationId
5671
6295
  );
5672
6296
  await updateOracles(builder, txBlock, updateCoinNames);
5673
- return txBlock.takeCollateral(
6297
+ return await txBlock.takeCollateral(
5674
6298
  obligationInfo.obligationId,
5675
6299
  obligationInfo.obligationKey,
5676
6300
  amount,
@@ -5682,7 +6306,7 @@ var generateCoreQuickMethod = ({
5682
6306
  let marketCoinDeposit;
5683
6307
  if (poolCoinName === "sui") {
5684
6308
  const [suiCoin] = txBlock.splitSUIFromGas([amount]);
5685
- marketCoinDeposit = txBlock.deposit(suiCoin, poolCoinName);
6309
+ marketCoinDeposit = await txBlock.deposit(suiCoin, poolCoinName);
5686
6310
  } else {
5687
6311
  const { leftCoin, takeCoin } = await builder.selectCoin(
5688
6312
  txBlock,
@@ -5691,9 +6315,9 @@ var generateCoreQuickMethod = ({
5691
6315
  sender
5692
6316
  );
5693
6317
  txBlock.transferObjects([leftCoin], sender);
5694
- marketCoinDeposit = txBlock.deposit(takeCoin, poolCoinName);
6318
+ marketCoinDeposit = await txBlock.deposit(takeCoin, poolCoinName);
5695
6319
  }
5696
- return returnSCoin ? txBlock.mintSCoin(
6320
+ return returnSCoin ? await txBlock.mintSCoin(
5697
6321
  builder.utils.parseMarketCoinName(poolCoinName),
5698
6322
  marketCoinDeposit
5699
6323
  ) : marketCoinDeposit;
@@ -5711,7 +6335,7 @@ var generateCoreQuickMethod = ({
5711
6335
  totalAmount
5712
6336
  } = await builder.selectSCoin(txBlock, sCoinName, amount, sender);
5713
6337
  txBlock.transferObjects([leftCoin], sender);
5714
- const marketCoins2 = txBlock.burnSCoin(sCoinName, sCoins2);
6338
+ const marketCoins2 = await txBlock.burnSCoin(sCoinName, sCoins2);
5715
6339
  amount -= totalAmount;
5716
6340
  try {
5717
6341
  if (amount > 0) {
@@ -5735,7 +6359,7 @@ var generateCoreQuickMethod = ({
5735
6359
  sender
5736
6360
  );
5737
6361
  txBlock.transferObjects([leftCoin], sender);
5738
- return txBlock.withdraw(walletMarketCoins, poolCoinName);
6362
+ return await txBlock.withdraw(walletMarketCoins, poolCoinName);
5739
6363
  }
5740
6364
  },
5741
6365
  borrowQuick: async (amount, poolCoinName, obligationId, obligationKey) => {
@@ -5750,7 +6374,7 @@ var generateCoreQuickMethod = ({
5750
6374
  ) ?? [];
5751
6375
  const updateCoinNames = [...obligationCoinNames, poolCoinName];
5752
6376
  await updateOracles(builder, txBlock, updateCoinNames);
5753
- return txBlock.borrow(
6377
+ return await txBlock.borrow(
5754
6378
  obligationInfo.obligationId,
5755
6379
  obligationInfo.obligationKey,
5756
6380
  amount,
@@ -5769,7 +6393,7 @@ var generateCoreQuickMethod = ({
5769
6393
  ) ?? [];
5770
6394
  const updateCoinNames = [...obligationCoinNames, poolCoinName];
5771
6395
  await updateOracles(builder, txBlock, updateCoinNames);
5772
- return txBlock.borrowWithReferral(
6396
+ return await txBlock.borrowWithReferral(
5773
6397
  obligationInfo.obligationId,
5774
6398
  obligationInfo.obligationKey,
5775
6399
  borrowReferral,
@@ -5786,7 +6410,7 @@ var generateCoreQuickMethod = ({
5786
6410
  );
5787
6411
  if (poolCoinName === "sui") {
5788
6412
  const [suiCoin] = txBlock.splitSUIFromGas([amount]);
5789
- return txBlock.repay(
6413
+ return await txBlock.repay(
5790
6414
  obligationInfo.obligationId,
5791
6415
  suiCoin,
5792
6416
  poolCoinName
@@ -5799,7 +6423,7 @@ var generateCoreQuickMethod = ({
5799
6423
  sender
5800
6424
  );
5801
6425
  txBlock.transferObjects([leftCoin], sender);
5802
- return txBlock.repay(
6426
+ return await txBlock.repay(
5803
6427
  obligationInfo.obligationId,
5804
6428
  takeCoin,
5805
6429
  poolCoinName
@@ -5807,7 +6431,7 @@ var generateCoreQuickMethod = ({
5807
6431
  }
5808
6432
  },
5809
6433
  updateAssetPricesQuick: async (assetCoinNames) => {
5810
- return updateOracles(builder, txBlock, assetCoinNames);
6434
+ return await updateOracles(builder, txBlock, assetCoinNames);
5811
6435
  }
5812
6436
  };
5813
6437
  };
@@ -5841,7 +6465,7 @@ var newCoreTxBlock = (builder, initTxBlock) => {
5841
6465
 
5842
6466
  // src/builders/spoolBuilder.ts
5843
6467
  var import_transactions2 = require("@mysten/sui/transactions");
5844
- var import_utils15 = require("@mysten/sui/utils");
6468
+ var import_utils16 = require("@mysten/sui/utils");
5845
6469
  var import_sui_kit6 = require("@scallop-io/sui-kit");
5846
6470
  var requireStakeAccountIds = async (...params) => {
5847
6471
  const [builder, txBlock, stakeMarketCoinName, stakeAccountId] = params;
@@ -5870,10 +6494,10 @@ var stakeHelper = async (builder, txBlock, stakeAccount, coinName, amount, sende
5870
6494
  try {
5871
6495
  const { takeCoin, leftCoin, totalAmount } = isSCoin ? await builder.selectSCoin(txBlock, coinName, amount, sender) : await builder.selectMarketCoin(txBlock, coinName, amount, sender);
5872
6496
  if (isSCoin) {
5873
- const marketCoin = txBlock.burnSCoin(coinName, takeCoin);
5874
- txBlock.stake(stakeAccount, marketCoin, coinName);
6497
+ const marketCoin = await txBlock.burnSCoin(coinName, takeCoin);
6498
+ await txBlock.stake(stakeAccount, marketCoin, coinName);
5875
6499
  } else {
5876
- txBlock.stake(stakeAccount, takeCoin, coinName);
6500
+ await txBlock.stake(stakeAccount, takeCoin, coinName);
5877
6501
  }
5878
6502
  txBlock.transferObjects([leftCoin], sender);
5879
6503
  return totalAmount;
@@ -5889,40 +6513,43 @@ var generateSpoolNormalMethod = ({
5889
6513
  spoolPkg: builder.address.get("spool.id")
5890
6514
  };
5891
6515
  return {
5892
- createStakeAccount: (stakeMarketCoinName) => {
6516
+ createStakeAccount: async (stakeMarketCoinName) => {
5893
6517
  const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
5894
6518
  const stakePoolId = builder.address.get(
5895
6519
  `spool.pools.${stakeMarketCoinName}.id`
5896
6520
  );
5897
- return txBlock.moveCall(
6521
+ return await builder.moveCall(
6522
+ txBlock,
5898
6523
  `${spoolIds.spoolPkg}::user::new_spool_account`,
5899
- [stakePoolId, import_utils15.SUI_CLOCK_OBJECT_ID],
6524
+ [stakePoolId, import_utils16.SUI_CLOCK_OBJECT_ID],
5900
6525
  [marketCoinType]
5901
6526
  );
5902
6527
  },
5903
- stake: (stakeAccount, coin, stakeMarketCoinName) => {
6528
+ stake: async (stakeAccount, coin, stakeMarketCoinName) => {
5904
6529
  const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
5905
6530
  const stakePoolId = builder.address.get(
5906
6531
  `spool.pools.${stakeMarketCoinName}.id`
5907
6532
  );
5908
- txBlock.moveCall(
6533
+ await builder.moveCall(
6534
+ txBlock,
5909
6535
  `${spoolIds.spoolPkg}::user::stake`,
5910
- [stakePoolId, stakeAccount, coin, import_utils15.SUI_CLOCK_OBJECT_ID],
6536
+ [stakePoolId, stakeAccount, coin, import_utils16.SUI_CLOCK_OBJECT_ID],
5911
6537
  [marketCoinType]
5912
6538
  );
5913
6539
  },
5914
- unstake: (stakeAccount, amount, stakeMarketCoinName) => {
6540
+ unstake: async (stakeAccount, amount, stakeMarketCoinName) => {
5915
6541
  const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
5916
6542
  const stakePoolId = builder.address.get(
5917
6543
  `spool.pools.${stakeMarketCoinName}.id`
5918
6544
  );
5919
- return txBlock.moveCall(
6545
+ return await builder.moveCall(
6546
+ txBlock,
5920
6547
  `${spoolIds.spoolPkg}::user::unstake`,
5921
- [stakePoolId, stakeAccount, amount, import_utils15.SUI_CLOCK_OBJECT_ID],
6548
+ [stakePoolId, stakeAccount, amount, import_utils16.SUI_CLOCK_OBJECT_ID],
5922
6549
  [marketCoinType]
5923
6550
  );
5924
6551
  },
5925
- claim: (stakeAccount, stakeMarketCoinName) => {
6552
+ claim: async (stakeAccount, stakeMarketCoinName) => {
5926
6553
  const stakePoolId = builder.address.get(
5927
6554
  `spool.pools.${stakeMarketCoinName}.id`
5928
6555
  );
@@ -5932,9 +6559,10 @@ var generateSpoolNormalMethod = ({
5932
6559
  const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
5933
6560
  const rewardCoinName = spoolRewardCoins[stakeMarketCoinName];
5934
6561
  const rewardCoinType = builder.utils.parseCoinType(rewardCoinName);
5935
- return txBlock.moveCall(
6562
+ return await builder.moveCall(
6563
+ txBlock,
5936
6564
  `${spoolIds.spoolPkg}::user::redeem_rewards`,
5937
- [stakePoolId, rewardPoolId, stakeAccount, import_utils15.SUI_CLOCK_OBJECT_ID],
6565
+ [stakePoolId, rewardPoolId, stakeAccount, import_utils16.SUI_CLOCK_OBJECT_ID],
5938
6566
  [marketCoinType, rewardCoinType]
5939
6567
  );
5940
6568
  }
@@ -5997,13 +6625,16 @@ var generateSpoolQuickMethod = ({
5997
6625
  if (account.staked === 0)
5998
6626
  continue;
5999
6627
  const amountToUnstake = Math.min(amount, account.staked);
6000
- const marketCoin = txBlock.unstake(
6628
+ const marketCoin = await txBlock.unstake(
6001
6629
  account.id,
6002
6630
  amountToUnstake,
6003
6631
  stakeMarketCoinName
6004
6632
  );
6005
6633
  if (returnSCoin) {
6006
- const sCoin = txBlock.mintSCoin(stakeMarketCoinName, marketCoin);
6634
+ const sCoin = await txBlock.mintSCoin(
6635
+ stakeMarketCoinName,
6636
+ marketCoin
6637
+ );
6007
6638
  toTransfer.push(sCoin);
6008
6639
  } else {
6009
6640
  toTransfer.push(marketCoin);
@@ -6029,7 +6660,7 @@ var generateSpoolQuickMethod = ({
6029
6660
  );
6030
6661
  const rewardCoins = [];
6031
6662
  for (const accountId of stakeAccountIds) {
6032
- const rewardCoin = txBlock.claim(accountId, stakeMarketCoinName);
6663
+ const rewardCoin = await txBlock.claim(accountId, stakeMarketCoinName);
6033
6664
  rewardCoins.push(rewardCoin);
6034
6665
  }
6035
6666
  return rewardCoins;
@@ -6066,7 +6697,7 @@ var newSpoolTxBlock = (builder, initTxBlock) => {
6066
6697
 
6067
6698
  // src/builders/borrowIncentiveBuilder.ts
6068
6699
  var import_transactions3 = require("@mysten/sui/transactions");
6069
- var import_utils17 = require("@mysten/sui/utils");
6700
+ var import_utils18 = require("@mysten/sui/utils");
6070
6701
  var import_sui_kit7 = require("@scallop-io/sui-kit");
6071
6702
  var requireObligationInfo2 = async (...params) => {
6072
6703
  const [builder, txBlock, obligationId, obligationKey] = params;
@@ -6108,8 +6739,9 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6108
6739
  config: builder.address.get("vesca.config")
6109
6740
  };
6110
6741
  return {
6111
- stakeObligation: (obligationId, obligationKey) => {
6112
- txBlock.moveCall(
6742
+ stakeObligation: async (obligationId, obligationKey) => {
6743
+ await builder.moveCall(
6744
+ txBlock,
6113
6745
  `${borrowIncentiveIds.borrowIncentivePkg}::user::stake`,
6114
6746
  [
6115
6747
  borrowIncentiveIds.config,
@@ -6118,12 +6750,13 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6118
6750
  obligationKey,
6119
6751
  obligationId,
6120
6752
  borrowIncentiveIds.obligationAccessStore,
6121
- import_utils17.SUI_CLOCK_OBJECT_ID
6753
+ import_utils18.SUI_CLOCK_OBJECT_ID
6122
6754
  ]
6123
6755
  );
6124
6756
  },
6125
- stakeObligationWithVesca: (obligationId, obligationKey, veScaKey) => {
6126
- txBlock.moveCall(
6757
+ stakeObligationWithVesca: async (obligationId, obligationKey, veScaKey) => {
6758
+ await builder.moveCall(
6759
+ txBlock,
6127
6760
  `${borrowIncentiveIds.borrowIncentivePkg}::user::stake_with_ve_sca`,
6128
6761
  [
6129
6762
  borrowIncentiveIds.config,
@@ -6136,13 +6769,14 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6136
6769
  veScaIds.treasury,
6137
6770
  veScaIds.table,
6138
6771
  veScaKey,
6139
- import_utils17.SUI_CLOCK_OBJECT_ID
6772
+ import_utils18.SUI_CLOCK_OBJECT_ID
6140
6773
  ],
6141
6774
  []
6142
6775
  );
6143
6776
  },
6144
- unstakeObligation: (obligationId, obligationKey) => {
6145
- txBlock.moveCall(
6777
+ unstakeObligation: async (obligationId, obligationKey) => {
6778
+ await builder.moveCall(
6779
+ txBlock,
6146
6780
  `${borrowIncentiveIds.borrowIncentivePkg}::user::unstake`,
6147
6781
  [
6148
6782
  borrowIncentiveIds.config,
@@ -6150,13 +6784,14 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6150
6784
  borrowIncentiveIds.incentiveAccounts,
6151
6785
  obligationKey,
6152
6786
  obligationId,
6153
- import_utils17.SUI_CLOCK_OBJECT_ID
6787
+ import_utils18.SUI_CLOCK_OBJECT_ID
6154
6788
  ]
6155
6789
  );
6156
6790
  },
6157
- claimBorrowIncentive: (obligationId, obligationKey, rewardCoinName) => {
6791
+ claimBorrowIncentive: async (obligationId, obligationKey, rewardCoinName) => {
6158
6792
  const rewardType = builder.utils.parseCoinType(rewardCoinName);
6159
- return txBlock.moveCall(
6793
+ return await builder.moveCall(
6794
+ txBlock,
6160
6795
  `${borrowIncentiveIds.borrowIncentivePkg}::user::redeem_rewards`,
6161
6796
  [
6162
6797
  borrowIncentiveIds.config,
@@ -6164,13 +6799,14 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6164
6799
  borrowIncentiveIds.incentiveAccounts,
6165
6800
  obligationKey,
6166
6801
  obligationId,
6167
- import_utils17.SUI_CLOCK_OBJECT_ID
6802
+ import_utils18.SUI_CLOCK_OBJECT_ID
6168
6803
  ],
6169
6804
  [rewardType]
6170
6805
  );
6171
6806
  },
6172
- deactivateBoost: (obligation, veScaKey) => {
6173
- return txBlock.moveCall(
6807
+ deactivateBoost: async (obligation, veScaKey) => {
6808
+ await builder.moveCall(
6809
+ txBlock,
6174
6810
  `${borrowIncentiveIds.borrowIncentivePkg}::user::deactivate_boost`,
6175
6811
  [
6176
6812
  borrowIncentiveIds.config,
@@ -6178,7 +6814,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6178
6814
  borrowIncentiveIds.incentiveAccounts,
6179
6815
  obligation,
6180
6816
  veScaKey,
6181
- import_utils17.SUI_CLOCK_OBJECT_ID
6817
+ import_utils18.SUI_CLOCK_OBJECT_ID
6182
6818
  ]
6183
6819
  );
6184
6820
  }
@@ -6201,7 +6837,7 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
6201
6837
  (txn) => txn.kind === "MoveCall" && (txn.target === `${OLD_BORROW_INCENTIVE_PROTOCOL_ID}::user::unstake` || txn.target === `${builder.address.get("borrowIncentive.id")}::user::unstake`)
6202
6838
  );
6203
6839
  if (!obligationLocked || unstakeObligationBeforeStake) {
6204
- txBlock.stakeObligation(obligationArg, obligationKeyArg);
6840
+ await txBlock.stakeObligation(obligationArg, obligationKeyArg);
6205
6841
  }
6206
6842
  },
6207
6843
  stakeObligationWithVeScaQuick: async (obligation, obligationKey, veScaKey) => {
@@ -6222,9 +6858,9 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
6222
6858
  const bindedVeScaKey = await builder.query.getBindedVeScaKey(obligationArg);
6223
6859
  const _veScaKey = bindedVeScaKey ?? veScaKey;
6224
6860
  if (!_veScaKey) {
6225
- txBlock.stakeObligation(obligationArg, obligationKeyArg);
6861
+ await txBlock.stakeObligation(obligationArg, obligationKeyArg);
6226
6862
  } else {
6227
- txBlock.stakeObligationWithVesca(
6863
+ await txBlock.stakeObligationWithVesca(
6228
6864
  obligationArg,
6229
6865
  obligationKeyArg,
6230
6866
  _veScaKey
@@ -6244,7 +6880,7 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
6244
6880
  obligationKey
6245
6881
  );
6246
6882
  if (obligationLocked) {
6247
- txBlock.unstakeObligation(obligationArg, obligationKeyArg);
6883
+ await txBlock.unstakeObligation(obligationArg, obligationKeyArg);
6248
6884
  }
6249
6885
  },
6250
6886
  claimBorrowIncentiveQuick: async (rewardCoinName, obligation, obligationKey) => {
@@ -6254,7 +6890,7 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
6254
6890
  obligation,
6255
6891
  obligationKey
6256
6892
  );
6257
- return txBlock.claimBorrowIncentive(
6893
+ return await txBlock.claimBorrowIncentive(
6258
6894
  obligationArg,
6259
6895
  obligationKeyArg,
6260
6896
  rewardCoinName
@@ -6319,8 +6955,9 @@ var generateNormalVeScaMethod = ({
6319
6955
  config: builder.address.get("vesca.config")
6320
6956
  };
6321
6957
  return {
6322
- lockSca: (scaCoin, unlockAtInSecondTimestamp) => {
6323
- return txBlock.moveCall(
6958
+ lockSca: async (scaCoin, unlockAtInSecondTimestamp) => {
6959
+ return await builder.moveCall(
6960
+ txBlock,
6324
6961
  `${veScaIds.pkgId}::ve_sca::mint_ve_sca_key`,
6325
6962
  [
6326
6963
  veScaIds.config,
@@ -6333,8 +6970,9 @@ var generateNormalVeScaMethod = ({
6333
6970
  []
6334
6971
  );
6335
6972
  },
6336
- extendLockPeriod: (veScaKey, newUnlockAtInSecondTimestamp) => {
6337
- txBlock.moveCall(
6973
+ extendLockPeriod: async (veScaKey, newUnlockAtInSecondTimestamp) => {
6974
+ await builder.moveCall(
6975
+ txBlock,
6338
6976
  `${veScaIds.pkgId}::ve_sca::extend_lock_period`,
6339
6977
  [
6340
6978
  veScaIds.config,
@@ -6347,8 +6985,9 @@ var generateNormalVeScaMethod = ({
6347
6985
  []
6348
6986
  );
6349
6987
  },
6350
- extendLockAmount: (veScaKey, scaCoin) => {
6351
- txBlock.moveCall(
6988
+ extendLockAmount: async (veScaKey, scaCoin) => {
6989
+ await builder.moveCall(
6990
+ txBlock,
6352
6991
  `${veScaIds.pkgId}::ve_sca::lock_more_sca`,
6353
6992
  [
6354
6993
  veScaIds.config,
@@ -6361,8 +7000,9 @@ var generateNormalVeScaMethod = ({
6361
7000
  []
6362
7001
  );
6363
7002
  },
6364
- renewExpiredVeSca: (veScaKey, scaCoin, newUnlockAtInSecondTimestamp) => {
6365
- txBlock.moveCall(
7003
+ renewExpiredVeSca: async (veScaKey, scaCoin, newUnlockAtInSecondTimestamp) => {
7004
+ await builder.moveCall(
7005
+ txBlock,
6366
7006
  `${veScaIds.pkgId}::ve_sca::renew_expired_ve_sca`,
6367
7007
  [
6368
7008
  veScaIds.config,
@@ -6376,8 +7016,9 @@ var generateNormalVeScaMethod = ({
6376
7016
  []
6377
7017
  );
6378
7018
  },
6379
- redeemSca: (veScaKey) => {
6380
- return txBlock.moveCall(
7019
+ redeemSca: async (veScaKey) => {
7020
+ return await builder.moveCall(
7021
+ txBlock,
6381
7022
  `${veScaIds.pkgId}::ve_sca::redeem`,
6382
7023
  [
6383
7024
  veScaIds.config,
@@ -6389,8 +7030,9 @@ var generateNormalVeScaMethod = ({
6389
7030
  []
6390
7031
  );
6391
7032
  },
6392
- mintEmptyVeSca: () => {
6393
- return txBlock.moveCall(
7033
+ mintEmptyVeSca: async () => {
7034
+ return await builder.moveCall(
7035
+ txBlock,
6394
7036
  `${veScaIds.pkgId}::ve_sca::mint_ve_sca_placeholder_key`,
6395
7037
  [veScaIds.config, veScaIds.table],
6396
7038
  []
@@ -6528,7 +7170,7 @@ var generateQuickVeScaMethod = ({
6528
7170
  const veSca = await requireVeSca(builder, txBlock, veScaKey);
6529
7171
  checkVesca(veSca?.unlockAt);
6530
7172
  if (veSca) {
6531
- const sca = txBlock.redeemSca(veSca.keyId);
7173
+ const sca = await txBlock.redeemSca(veSca.keyId);
6532
7174
  if (transferSca) {
6533
7175
  txBlock.transferObjects([sca], sender);
6534
7176
  return;
@@ -6584,8 +7226,9 @@ var generateReferralNormalMethod = ({
6584
7226
  };
6585
7227
  const veScaTable = builder.address.get("vesca.table");
6586
7228
  return {
6587
- bindToReferral: (veScaKeyId) => {
6588
- return txBlock.moveCall(
7229
+ bindToReferral: async (veScaKeyId) => {
7230
+ await builder.moveCall(
7231
+ txBlock,
6589
7232
  `${referralIds.referralPgkId}::referral_bindings::bind_ve_sca_referrer`,
6590
7233
  [
6591
7234
  referralIds.referralBindings,
@@ -6596,9 +7239,10 @@ var generateReferralNormalMethod = ({
6596
7239
  []
6597
7240
  );
6598
7241
  },
6599
- claimReferralTicket: (poolCoinName) => {
7242
+ claimReferralTicket: async (poolCoinName) => {
6600
7243
  const coinType = builder.utils.parseCoinType(poolCoinName);
6601
- return txBlock.moveCall(
7244
+ return await builder.moveCall(
7245
+ txBlock,
6602
7246
  `${referralIds.referralPgkId}::scallop_referral_program::claim_ve_sca_referral_ticket`,
6603
7247
  [
6604
7248
  referralIds.version,
@@ -6611,9 +7255,10 @@ var generateReferralNormalMethod = ({
6611
7255
  [coinType]
6612
7256
  );
6613
7257
  },
6614
- burnReferralTicket: (ticket, poolCoinName) => {
7258
+ burnReferralTicket: async (ticket, poolCoinName) => {
6615
7259
  const coinType = builder.utils.parseCoinType(poolCoinName);
6616
- return txBlock.moveCall(
7260
+ await builder.moveCall(
7261
+ txBlock,
6617
7262
  `${referralIds.referralPgkId}::scallop_referral_program::burn_ve_sca_referral_ticket`,
6618
7263
  [
6619
7264
  referralIds.version,
@@ -6624,9 +7269,10 @@ var generateReferralNormalMethod = ({
6624
7269
  [coinType]
6625
7270
  );
6626
7271
  },
6627
- claimReferralRevenue: (veScaKey, poolCoinName) => {
7272
+ claimReferralRevenue: async (veScaKey, poolCoinName) => {
6628
7273
  const coinType = builder.utils.parseCoinType(poolCoinName);
6629
- return txBlock.moveCall(
7274
+ return await builder.moveCall(
7275
+ txBlock,
6630
7276
  `${referralIds.referralPgkId}::referral_revenue_pool::claim_revenue_with_ve_sca_key`,
6631
7277
  [
6632
7278
  referralIds.version,
@@ -6649,10 +7295,16 @@ var generateReferralQuickMethod = ({
6649
7295
  const objToTransfer = [];
6650
7296
  for (const coinName of coinNames) {
6651
7297
  if (coinName === "sui") {
6652
- const rewardCoin = txBlock.claimReferralRevenue(veScaKey, coinName);
7298
+ const rewardCoin = await txBlock.claimReferralRevenue(
7299
+ veScaKey,
7300
+ coinName
7301
+ );
6653
7302
  objToTransfer.push(rewardCoin);
6654
7303
  } else {
6655
- const rewardCoin = txBlock.claimReferralRevenue(veScaKey, coinName);
7304
+ const rewardCoin = await txBlock.claimReferralRevenue(
7305
+ veScaKey,
7306
+ coinName
7307
+ );
6656
7308
  try {
6657
7309
  const coins = await builder.suiKit.suiInteractor.selectCoins(
6658
7310
  sender,
@@ -6712,8 +7364,9 @@ var generateLoyaltyProgramNormalMethod = ({ builder, txBlock }) => {
6712
7364
  )
6713
7365
  };
6714
7366
  return {
6715
- claimLoyaltyRevenue: (veScaKey) => {
6716
- return txBlock.moveCall(
7367
+ claimLoyaltyRevenue: async (veScaKey) => {
7368
+ return await builder.moveCall(
7369
+ txBlock,
6717
7370
  `${loyaltyProgramIds.loyaltyProgramPkgId}::reward_pool::redeem_reward`,
6718
7371
  [loyaltyProgramIds.rewardPool, veScaKey]
6719
7372
  );
@@ -6730,7 +7383,7 @@ var generateLoyaltyProgramQuickMethod = ({
6730
7383
  const sender = requireSender(txBlock);
6731
7384
  if (!veScaKey)
6732
7385
  throw new Error(`No veScaKey found for user ${sender}`);
6733
- const rewardCoin = txBlock.claimLoyaltyRevenue(veScaKey);
7386
+ const rewardCoin = await txBlock.claimLoyaltyRevenue(veScaKey);
6734
7387
  await builder.utils.mergeSimilarCoins(
6735
7388
  txBlock,
6736
7389
  rewardCoin,
@@ -6779,8 +7432,9 @@ var generateSCoinNormalMethod = ({
6779
7432
  pkgId: builder.address.get("scoin.id")
6780
7433
  };
6781
7434
  return {
6782
- mintSCoin: (marketCoinName, marketCoin) => {
6783
- return txBlock.moveCall(
7435
+ mintSCoin: async (marketCoinName, marketCoin) => {
7436
+ return await builder.moveCall(
7437
+ txBlock,
6784
7438
  `${sCoinPkgIds.pkgId}::s_coin_converter::mint_s_coin`,
6785
7439
  [builder.utils.getSCoinTreasury(marketCoinName), marketCoin],
6786
7440
  [
@@ -6789,8 +7443,9 @@ var generateSCoinNormalMethod = ({
6789
7443
  ]
6790
7444
  );
6791
7445
  },
6792
- burnSCoin: (sCoinName, sCoin) => {
6793
- return txBlock.moveCall(
7446
+ burnSCoin: async (sCoinName, sCoin) => {
7447
+ return await builder.moveCall(
7448
+ txBlock,
6794
7449
  `${sCoinPkgIds.pkgId}::s_coin_converter::burn_s_coin`,
6795
7450
  [builder.utils.getSCoinTreasury(sCoinName), sCoin],
6796
7451
  [
@@ -6815,7 +7470,7 @@ var generateSCoinQuickMethod = ({
6815
7470
  sender
6816
7471
  );
6817
7472
  txBlock.transferObjects([leftCoin], sender);
6818
- return txBlock.mintSCoin(marketCoinName, takeCoin);
7473
+ return await txBlock.mintSCoin(marketCoinName, takeCoin);
6819
7474
  },
6820
7475
  burnSCoinQuick: async (sCoinName, amount) => {
6821
7476
  const sender = requireSender(txBlock);
@@ -6826,7 +7481,7 @@ var generateSCoinQuickMethod = ({
6826
7481
  sender
6827
7482
  );
6828
7483
  txBlock.transferObjects([leftCoin], sender);
6829
- return txBlock.burnSCoin(sCoinName, takeCoin);
7484
+ return await txBlock.burnSCoin(sCoinName, takeCoin);
6830
7485
  }
6831
7486
  };
6832
7487
  };
@@ -7068,12 +7723,12 @@ var ScallopIndexer = class {
7068
7723
  };
7069
7724
 
7070
7725
  // src/models/scallopQuery.ts
7071
- var import_utils23 = require("@mysten/sui/utils");
7726
+ var import_utils24 = require("@mysten/sui/utils");
7072
7727
  var ScallopQuery = class {
7073
7728
  constructor(params, instance) {
7074
7729
  this.params = params;
7075
7730
  this.suiKit = instance?.suiKit ?? instance?.utils?.suiKit ?? newSuiKit(params);
7076
- this.walletAddress = (0, import_utils23.normalizeSuiAddress)(
7731
+ this.walletAddress = (0, import_utils24.normalizeSuiAddress)(
7077
7732
  params.walletAddress ?? this.suiKit.currentAddress()
7078
7733
  );
7079
7734
  if (instance?.utils) {
@@ -7148,6 +7803,7 @@ var ScallopQuery = class {
7148
7803
  }
7149
7804
  /* ==================== Core Query Methods ==================== */
7150
7805
  /**
7806
+ * @deprecated use getMarketPools
7151
7807
  * Query market data.
7152
7808
  * @param indexer - Whether to use indexer.
7153
7809
  * @return Market data.
@@ -7166,7 +7822,7 @@ var ScallopQuery = class {
7166
7822
  * @param indexer - Whether to use indexer.
7167
7823
  * @return Market pools data.
7168
7824
  */
7169
- async getMarketPools(poolCoinNames, args) {
7825
+ async getMarketPools(poolCoinNames = [...SUPPORT_POOLS], args) {
7170
7826
  return await getMarketPools(
7171
7827
  this,
7172
7828
  poolCoinNames,
@@ -7182,13 +7838,8 @@ var ScallopQuery = class {
7182
7838
  * @return Market pool data.
7183
7839
  */
7184
7840
  async getMarketPool(poolCoinName, args) {
7185
- return await getMarketPool(
7186
- this,
7187
- poolCoinName,
7188
- args?.indexer,
7189
- args?.marketObject,
7190
- args?.coinPrice
7191
- );
7841
+ const marketPools = await this.getMarketPools(void 0, args);
7842
+ return marketPools.pools[poolCoinName];
7192
7843
  }
7193
7844
  /**
7194
7845
  * Get market collaterals.
@@ -7315,13 +7966,8 @@ var ScallopQuery = class {
7315
7966
  * @return Spool data.
7316
7967
  */
7317
7968
  async getSpool(stakeMarketCoinName, args) {
7318
- return await getSpool(
7319
- this,
7320
- stakeMarketCoinName,
7321
- args?.indexer,
7322
- args?.marketPool,
7323
- args?.coinPrices
7324
- );
7969
+ const spools = await this.getSpools(void 0, args);
7970
+ return spools[stakeMarketCoinName];
7325
7971
  }
7326
7972
  /**
7327
7973
  * Get stake accounts data for all stake pools (spools).
@@ -7487,11 +8133,9 @@ var ScallopQuery = class {
7487
8133
  * @return Borrowing and collateral information.
7488
8134
  */
7489
8135
  async getObligationAccount(obligationId, ownerAddress = this.walletAddress, args) {
7490
- return await getObligationAccount(
7491
- this,
7492
- obligationId,
7493
- ownerAddress,
7494
- args?.indexer
8136
+ const results = await this.getObligationAccounts(ownerAddress, args);
8137
+ return Object.values(results).find(
8138
+ (obligation) => obligation?.obligationId === obligationId
7495
8139
  );
7496
8140
  }
7497
8141
  /**
@@ -7626,7 +8270,7 @@ var ScallopQuery = class {
7626
8270
  * Get list of isolated assets
7627
8271
  */
7628
8272
  async getIsolatedAssets() {
7629
- return await getIsolatedAssets(this.address);
8273
+ return await getIsolatedAssets(this);
7630
8274
  }
7631
8275
  /**
7632
8276
  * Check if asset is an isolated asset
@@ -7649,6 +8293,13 @@ var ScallopQuery = class {
7649
8293
  async getAllCoinPrices(args) {
7650
8294
  return getAllCoinPrices(this, args?.marketPools, args?.coinPrices);
7651
8295
  }
8296
+ /**
8297
+ * Query all address (lending pool, collateral pool, borrow dynamics, interest models) of all pool
8298
+ * @returns
8299
+ */
8300
+ async getPoolAddresses() {
8301
+ return getAllAddresses(this);
8302
+ }
7652
8303
  };
7653
8304
 
7654
8305
  // src/models/scallopBuilder.ts
@@ -7656,7 +8307,7 @@ var ScallopBuilder = class {
7656
8307
  constructor(params, instance) {
7657
8308
  this.suiKit = instance?.suiKit ?? newSuiKit(params);
7658
8309
  this.params = params;
7659
- this.walletAddress = (0, import_utils24.normalizeSuiAddress)(
8310
+ this.walletAddress = (0, import_utils25.normalizeSuiAddress)(
7660
8311
  params?.walletAddress ?? this.suiKit.currentAddress()
7661
8312
  );
7662
8313
  if (instance?.query) {
@@ -7707,7 +8358,6 @@ var ScallopBuilder = class {
7707
8358
  await this.address.read();
7708
8359
  }
7709
8360
  await this.query.init(force, this.address);
7710
- await this.utils.init(force, this.address);
7711
8361
  }
7712
8362
  /**
7713
8363
  * Create a scallop txBlock instance that enhances transaction block.
@@ -7796,6 +8446,9 @@ var ScallopBuilder = class {
7796
8446
  txBlock
7797
8447
  );
7798
8448
  }
8449
+ moveCall(txb, target, args, typeArgs) {
8450
+ return txb.moveCall(target, args, typeArgs);
8451
+ }
7799
8452
  };
7800
8453
 
7801
8454
  // src/models/scallopClient.ts
@@ -7803,7 +8456,7 @@ var ScallopClient = class {
7803
8456
  constructor(params, instance) {
7804
8457
  this.params = params;
7805
8458
  this.suiKit = instance?.suiKit ?? instance?.builder?.suiKit ?? newSuiKit(params);
7806
- this.walletAddress = (0, import_utils25.normalizeSuiAddress)(
8459
+ this.walletAddress = (0, import_utils26.normalizeSuiAddress)(
7807
8460
  params?.walletAddress ?? this.suiKit.currentAddress()
7808
8461
  );
7809
8462
  if (instance?.builder) {
@@ -7942,7 +8595,7 @@ var ScallopClient = class {
7942
8595
  }
7943
8596
  async openObligation(sign = true) {
7944
8597
  const txBlock = this.builder.createTxBlock();
7945
- txBlock.openObligationEntry();
8598
+ await txBlock.openObligationEntry();
7946
8599
  if (sign) {
7947
8600
  return await this.suiKit.signAndSendTxn(
7948
8601
  txBlock
@@ -7964,9 +8617,9 @@ var ScallopClient = class {
7964
8617
  specificObligationId
7965
8618
  );
7966
8619
  } else {
7967
- const [obligation, obligationKey, hotPotato] = txBlock.openObligation();
8620
+ const [obligation, obligationKey, hotPotato] = await txBlock.openObligation();
7968
8621
  await txBlock.addCollateralQuick(amount, collateralCoinName, obligation);
7969
- txBlock.returnObligation(obligation, hotPotato);
8622
+ await txBlock.returnObligation(obligation, hotPotato);
7970
8623
  txBlock.transferObjects([obligationKey], sender);
7971
8624
  }
7972
8625
  if (sign) {
@@ -8036,7 +8689,7 @@ var ScallopClient = class {
8036
8689
  targetStakeAccount
8037
8690
  );
8038
8691
  } else {
8039
- const account = txBlock.createStakeAccount(stakeMarketCoinName);
8692
+ const account = await txBlock.createStakeAccount(stakeMarketCoinName);
8040
8693
  await txBlock.stakeQuick(marketCoin, stakeMarketCoinName, account);
8041
8694
  txBlock.transferObjects([account], sender);
8042
8695
  }
@@ -8133,8 +8786,12 @@ var ScallopClient = class {
8133
8786
  const txBlock = this.builder.createTxBlock();
8134
8787
  const sender = walletAddress ?? this.walletAddress;
8135
8788
  txBlock.setSender(sender);
8136
- const [coin, loan] = txBlock.borrowFlashLoan(amount, poolCoinName);
8137
- txBlock.repayFlashLoan(await callback(txBlock, coin), loan, poolCoinName);
8789
+ const [coin, loan] = await txBlock.borrowFlashLoan(amount, poolCoinName);
8790
+ await txBlock.repayFlashLoan(
8791
+ await callback(txBlock, coin),
8792
+ loan,
8793
+ poolCoinName
8794
+ );
8138
8795
  if (sign) {
8139
8796
  return await this.suiKit.signAndSendTxn(
8140
8797
  txBlock
@@ -8147,7 +8804,7 @@ var ScallopClient = class {
8147
8804
  const txBlock = this.builder.createTxBlock();
8148
8805
  const sender = walletAddress ?? this.walletAddress;
8149
8806
  txBlock.setSender(sender);
8150
- const stakeAccount = txBlock.createStakeAccount(marketCoinName);
8807
+ const stakeAccount = await txBlock.createStakeAccount(marketCoinName);
8151
8808
  txBlock.transferObjects([stakeAccount], sender);
8152
8809
  if (sign) {
8153
8810
  return await this.suiKit.signAndSendTxn(
@@ -8166,7 +8823,7 @@ var ScallopClient = class {
8166
8823
  if (targetStakeAccount) {
8167
8824
  await txBlock.stakeQuick(amount, stakeMarketCoinName, targetStakeAccount);
8168
8825
  } else {
8169
- const account = txBlock.createStakeAccount(stakeMarketCoinName);
8826
+ const account = await txBlock.createStakeAccount(stakeMarketCoinName);
8170
8827
  await txBlock.stakeQuick(amount, stakeMarketCoinName, account);
8171
8828
  txBlock.transferObjects([account], sender);
8172
8829
  }
@@ -8216,7 +8873,7 @@ var ScallopClient = class {
8216
8873
  );
8217
8874
  const stakeCoinName = this.utils.parseCoinName(stakeMarketCoinName);
8218
8875
  if (stakeMarketCoin) {
8219
- const coin = txBlock.withdraw(stakeMarketCoin, stakeCoinName);
8876
+ const coin = await txBlock.withdraw(stakeMarketCoin, stakeCoinName);
8220
8877
  await this.utils.mergeSimilarCoins(
8221
8878
  txBlock,
8222
8879
  coin,
@@ -8313,6 +8970,8 @@ var ScallopClient = class {
8313
8970
  txBlock.setSender(sender);
8314
8971
  const rewardCoinsCollection = {};
8315
8972
  const obligationAccount = await this.query.getObligationAccount(obligationId);
8973
+ if (!obligationAccount)
8974
+ throw new Error("Obligation not found");
8316
8975
  const rewardCoinNames = Object.values(obligationAccount.borrowIncentives).flatMap(
8317
8976
  ({ rewards }) => rewards.filter(({ availableClaimAmount }) => availableClaimAmount > 0)
8318
8977
  ).flatMap(({ coinName }) => coinName);
@@ -8375,7 +9034,7 @@ var ScallopClient = class {
8375
9034
  throw e;
8376
9035
  }
8377
9036
  if (toDestroyMarketCoin) {
8378
- const sCoin = txBlock.mintSCoin(
9037
+ const sCoin = await txBlock.mintSCoin(
8379
9038
  sCoinName,
8380
9039
  toDestroyMarketCoin
8381
9040
  );
@@ -8644,9 +9303,11 @@ var Scallop = class {
8644
9303
  ScallopQuery,
8645
9304
  ScallopUtils,
8646
9305
  TEST_ADDRESSES,
9306
+ TokenBucket,
8647
9307
  UNLOCK_ROUND_DURATION,
8648
9308
  USE_TEST_ADDRESS,
8649
9309
  assetCoins,
9310
+ callWithRateLimit,
8650
9311
  coinDecimals,
8651
9312
  coinIds,
8652
9313
  marketCoins,