@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.mjs CHANGED
@@ -23,10 +23,9 @@ var COIN_GECKGO_IDS = {
23
23
  afsui: "sui",
24
24
  hasui: "sui",
25
25
  vsui: "sui",
26
- sca: "scallop-2"
27
- // TODO: enable for production
28
- // deep: 'deepbook',
29
- // fud: 'fud-the-pug',
26
+ sca: "scallop-2",
27
+ deep: "deepbook",
28
+ fud: "fud-the-pug"
30
29
  };
31
30
 
32
31
  // src/constants/common.ts
@@ -55,10 +54,9 @@ var SUPPORT_POOLS = [
55
54
  "afsui",
56
55
  "hasui",
57
56
  "vsui",
58
- "sca"
59
- // TODO: enable for production
60
- // 'fud',
61
- // 'deep',
57
+ "sca",
58
+ "fud",
59
+ "deep"
62
60
  ];
63
61
  var SUPPORT_COLLATERALS = [
64
62
  "usdc",
@@ -102,10 +100,9 @@ var SUPPORT_SCOIN = [
102
100
  "ssca",
103
101
  "scetus",
104
102
  "swsol",
105
- "swbtc"
106
- // TODO: enable for production
107
- // 'sdeep',
108
- // 'sfud',
103
+ "swbtc",
104
+ "sdeep",
105
+ "sfud"
109
106
  ];
110
107
  var SUPPORT_SUI_BRIDGE = ["sbeth"];
111
108
  var SUPPORT_WORMHOLE = [
@@ -117,18 +114,7 @@ var SUPPORT_WORMHOLE = [
117
114
  "wsol"
118
115
  ];
119
116
  var SUPPORT_SPOOLS_REWARDS = ["sui"];
120
- var SUPPORT_BORROW_INCENTIVE_POOLS = [
121
- "sui",
122
- "wusdc",
123
- "wusdt",
124
- "afsui",
125
- "hasui",
126
- "vsui",
127
- "weth",
128
- "sbeth",
129
- "sca",
130
- "usdc"
131
- ];
117
+ var SUPPORT_BORROW_INCENTIVE_POOLS = [...SUPPORT_POOLS];
132
118
  var SUPPORT_BORROW_INCENTIVE_REWARDS = [
133
119
  ...SUPPORT_POOLS,
134
120
  ...SUPPORT_SCOIN
@@ -165,9 +151,8 @@ var coinDecimals = {
165
151
  hasui: 9,
166
152
  vsui: 9,
167
153
  sca: 9,
168
- // TODO: enable for production
169
- // deep: 6,
170
- // fud: 5,
154
+ deep: 6,
155
+ fud: 5,
171
156
  susdc: 6,
172
157
  sweth: 8,
173
158
  ssbeth: 8,
@@ -181,10 +166,9 @@ var coinDecimals = {
181
166
  safsui: 9,
182
167
  shasui: 9,
183
168
  svsui: 9,
184
- ssca: 9
185
- // TODO: enable for production
186
- // sdeep: 6,
187
- // sfud: 5,
169
+ ssca: 9,
170
+ sdeep: 6,
171
+ sfud: 5
188
172
  };
189
173
  var assetCoins = {
190
174
  usdc: "usdc",
@@ -200,10 +184,9 @@ var assetCoins = {
200
184
  afsui: "afsui",
201
185
  hasui: "hasui",
202
186
  vsui: "vsui",
203
- sca: "sca"
204
- // TODO: enable for production
205
- // deep: 'deep',
206
- // fud: 'fud',
187
+ sca: "sca",
188
+ deep: "deep",
189
+ fud: "fud"
207
190
  };
208
191
  var marketCoins = {
209
192
  susdc: "susdc",
@@ -219,10 +202,9 @@ var marketCoins = {
219
202
  safsui: "safsui",
220
203
  shasui: "shasui",
221
204
  svsui: "svsui",
222
- ssca: "ssca"
223
- // TODO: enable for production
224
- // sdeep: 'sdeep',
225
- // sfud: 'sfud',
205
+ ssca: "ssca",
206
+ sdeep: "sdeep",
207
+ sfud: "sfud"
226
208
  };
227
209
  var sCoins = {
228
210
  susdc: "susdc",
@@ -237,10 +219,9 @@ var sCoins = {
237
219
  svsui: "svsui",
238
220
  ssca: "ssca",
239
221
  swsol: "swsol",
240
- swbtc: "swbtc"
241
- // TODO: enable for production
242
- // sfud: 'sfud',
243
- // sdeep: 'sdeep',
222
+ swbtc: "swbtc",
223
+ sfud: "sfud",
224
+ sdeep: "sdeep"
244
225
  };
245
226
  var stakeMarketCoins = {
246
227
  susdc: "susdc",
@@ -281,10 +262,10 @@ var coinIds = {
281
262
  afsui: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
282
263
  hasui: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
283
264
  vsui: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
284
- sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6"
265
+ sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
285
266
  // isolated assets
286
- // deep: '0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270',
287
- // fud: '0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1',
267
+ deep: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",
268
+ fud: "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1"
288
269
  };
289
270
  var wormholeCoinIds = {
290
271
  weth: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
@@ -300,28 +281,19 @@ var voloCoinIds = {
300
281
  var sCoinIds = {
301
282
  susdc: "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",
302
283
  ssbeth: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
303
- // prod values
304
- // ssui: '0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI',
305
- // swusdc:
306
- // '0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC',
307
- // swusdt:
308
- // '0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT',
309
- // ssca: '0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA',
310
- // test values
311
- ssui: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
312
- swusdt: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
313
- swusdc: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
314
- ssca: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
284
+ ssui: "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",
285
+ swusdc: "0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
286
+ swusdt: "0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
287
+ ssca: "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",
315
288
  scetus: "0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",
316
289
  sweth: "0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
317
290
  safsui: "0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",
318
291
  shasui: "0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",
319
292
  svsui: "0xe1a1cc6bcf0001a015eab84bcc6713393ce20535f55b8b6f35c142e057a25fbe::scallop_v_sui::SCALLOP_V_SUI",
320
293
  swsol: "0x1392650f2eca9e3f6ffae3ff89e42a3590d7102b80e2b430f674730bc30d3259::scallop_wormhole_sol::SCALLOP_WORMHOLE_SOL",
321
- swbtc: "0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC"
322
- // sdeep:
323
- // '0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP',
324
- // sfud: '0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD',
294
+ swbtc: "0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC",
295
+ sdeep: "0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",
296
+ sfud: "0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD"
325
297
  };
326
298
  var sCoinTypeToName = Object.entries(sCoinIds).reduce(
327
299
  (acc, [coinName, coinType]) => {
@@ -358,69 +330,244 @@ var FlashLoanFeeObjectMap = {
358
330
  var POOL_ADDRESSES = {
359
331
  usdc: {
360
332
  lendingPoolAddress: "0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",
361
- collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af"
333
+ collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af",
334
+ borrowDynamic: "0x77837ecd4f26fac9a410fff594f2c0bd3288904a15492ca77cb8a52684dbb866",
335
+ interestModel: "0xaae3f179d63009380cbdcb9acb12907afc9c3cb79cc3460be296a9c6d28f3ff3",
336
+ riskModel: "0x198b24db213bfeb8b3c80ae63dde92e32fd24984d25da8233ff777b851edd574",
337
+ borrowFeeKey: "0xd37c5316cfe0a5967d14264fa6b423f880518b294a1ee6581ccbb49ccc401fb8",
338
+ supplyLimitKey: "0x4be9ae54ac4d320f4f9c14cae78cb85c8e0e67791dd9bdba6d2db20614a28a24",
339
+ borrowLimitKey: "0x6b01093cba95b835181f00e3a2c31ed8dfc8d64fe3db0fb80933a09f66e1ccf1",
340
+ isolatedAssetKey: void 0,
341
+ spool: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
342
+ spoolReward: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166",
343
+ sCoinTreasury: "0xbe6b63021f3d82e0e7e977cdd718ed7c019cf2eba374b7b546220402452f938e",
344
+ coinDecimalId: "0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6"
362
345
  },
363
346
  sbeth: {
364
- lendingPoolAddress: "0x5f08c4f71d56dd3342c452cc70ffc47f2f4180146d821941b0b9c04761bb42e7",
365
- collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f"
347
+ lendingPoolAddress: "0xaa34c938e0394e5186c7dc626ad69be96af2194b23fdc6ac1c63090e399f5ba4",
348
+ collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f",
349
+ borrowDynamic: "0x7bbe75e8b924229f2f2110838ff612ea66e670fa3766759515dee78f617b1ea3",
350
+ interestModel: "0x9e6cae260d05155785a1904d24e6abc98368509c5752c8a9cec15a35aabc1512",
351
+ riskModel: "0xcf10334cfee675ecea2d2fee37b0f7cd2835c84b8b5692a853021debe6af80ab",
352
+ borrowFeeKey: "0x4298c8b6afe7a42a8e3ff93773fb9769529fe6d37e085ab411acf2ba2a44a931",
353
+ supplyLimitKey: "0x812fe508b78d3e0817149c0b39976221ddb267b5cc9514e81679f9b9a2f3624c",
354
+ borrowLimitKey: "0x165c274c67eda2b0d13563124741fffd0ce7d643f4c1c4b59d7e53a83796ae25",
355
+ isolatedAssetKey: void 0,
356
+ spool: void 0,
357
+ spoolReward: void 0,
358
+ sCoinTreasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed",
359
+ coinDecimalId: "0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0"
366
360
  },
367
361
  weth: {
368
362
  lendingPoolAddress: "0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",
369
- collateralPoolAddress: "0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf"
363
+ collateralPoolAddress: "0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf",
364
+ borrowDynamic: "0xd1578e1d1c9c82eb4c5bf14beece8142a67a683b2647d7276e92984119fc1445",
365
+ interestModel: "0xa1dc08541cd2cb7cfb4e56272292d5c6a4780e80fd210c58abffae98268b5ed9",
366
+ riskModel: "0x9f05a25fd33a9e8cf33962126b175d038e184f0ee1b87dc41d4cedbe6abebbe5",
367
+ borrowFeeKey: "0x29672ba8ab4625b8181d8ed739e5344de22a97d417748c4d1276c7379283d7a3",
368
+ supplyLimitKey: "0x2b957941bdc9432bbc83ab74dc194b6ebb7c927bc4c6926a5492b5503499e509",
369
+ borrowLimitKey: "0x51f256d87e51a7ca2b1c482923096f4b6dac6beac89d8ecf4c65b7d5764115d6",
370
+ isolatedAssetKey: void 0,
371
+ spool: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
372
+ spoolReward: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077",
373
+ sCoinTreasury: "0x4b7f5da0e306c9d52490a0c1d4091e653d6b89778b9b4f23c877e534e4d9cd21",
374
+ coinDecimalId: "0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f"
370
375
  },
371
376
  wbtc: {
372
377
  lendingPoolAddress: "0x65cc08a5aca0a0b8d72e1993ded8d145f06dd102fd0d8f285b92934faed564ab",
373
- collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3"
378
+ collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3",
379
+ borrowDynamic: "0x6f97dcf54158a5d08f359a213a41e347bc1e6316414288dc1e1b674dc008742e",
380
+ interestModel: "0x582b915cca0ffca9576a7cedd505d0fd7cb146e9521ccf10e7453ed93705684d",
381
+ riskModel: "0x1d0a242bf1682e259112239720da19d3155dd99d70b1f4b3b973eecbab858911",
382
+ borrowFeeKey: "0x654ab7e8ff6d9ef04da697e1f12ca21eaf72ebb495daf877e0776e65187dcb92",
383
+ supplyLimitKey: "0xac3b0d17df9f98aa2798c54405cf1d8d5356ef22f76f02d150cbe5195e9f3a36",
384
+ borrowLimitKey: "0x231e13ba6b1eb26c562f4a125778d3152f9a77e31f124bd6012e234a73012169",
385
+ isolatedAssetKey: void 0,
386
+ spool: void 0,
387
+ spoolReward: void 0,
388
+ sCoinTreasury: "0xe2883934ea42c99bc998bbe0f01dd6d27aa0e27a56455707b1b34e6a41c20baa",
389
+ coinDecimalId: "0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd"
374
390
  },
375
391
  wusdc: {
376
- lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
377
- collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb"
392
+ lendingPoolAddress: "0x2f4df5e1368fbbdaa5c712d28b837b3d41c2d3872979ccededcdfdac55ff8a93",
393
+ collateralPoolAddress: "0x94cf69158114c5b242d2ee5d0149a335bddf3b9c9a6ba919cca58097a4814980",
394
+ borrowDynamic: "0x0464d117908b52fc75f7f85322a47caa078ef56f48681bcfdcb630a66f2591e6",
395
+ interestModel: "0xd72e2b5ba486752939d6dfb86a67b86ce9a60c83cb8fb893caac54a0f112577f",
396
+ riskModel: "0xb74035de8f70c1531ceb8e2e8c152d6b8db24c8a9fe7bbf6f75dbf7c6700a0a3",
397
+ borrowFeeKey: "0x76dcf1acbd9951fe3d1a3fe28403fec089ffe53a7c7d6c77e3ea97033a63581a",
398
+ supplyLimitKey: "0x7b302196907e87c5d5872f2e6f40628d110170f994e0e08bc607bded001958c3",
399
+ borrowLimitKey: "0x97f1502ce994db0bcb15aac1760d174def9e88e97cd2262eed54521ee2c19f81",
400
+ isolatedAssetKey: void 0,
401
+ spool: "0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",
402
+ spoolReward: "0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8",
403
+ sCoinTreasury: "0x50c5cfcbcca3aaacab0984e4d7ad9a6ad034265bebb440f0d1cd688ec20b2548",
404
+ coinDecimalId: "0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189"
378
405
  },
379
406
  wusdt: {
380
407
  lendingPoolAddress: "0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879",
381
- collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3"
408
+ collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3",
409
+ borrowDynamic: "0xb524030cc8f7cdbf13f1925a0a2b5e77cc52bab73b070f42c5e510f6083da1ba",
410
+ interestModel: "0x92f93c4431b4c51774d6d964da516af2def18b78f49dbbf519e58449a8ba4659",
411
+ riskModel: "0xdf89d66988cb506ddeff46f5dfd1d11aaece345e9a05a0c6a18a0788647de2a7",
412
+ borrowFeeKey: "0xda8f8b3522fc4086eae4ae7ce8844d60aa0dc3eab8ffc91fe93e922a72639b2d",
413
+ supplyLimitKey: "0xa9cb5ebb90ca6e808a2bd7728cca4a6fa8b565d4deeda96eb23c8322c477c24e",
414
+ borrowLimitKey: "0xa3278564fc613680a69c10972a0299965bf6e12e9ac171388842fc958de0f90e",
415
+ isolatedAssetKey: void 0,
416
+ spool: "0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",
417
+ spoolReward: "0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080",
418
+ sCoinTreasury: "0x1f02e2fed702b477732d4ad6044aaed04f2e8e586a169153694861a901379df0",
419
+ coinDecimalId: "0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c"
382
420
  },
383
421
  sui: {
384
422
  lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
385
- collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb"
423
+ collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb",
424
+ borrowDynamic: "0xbf68e6159c99dcaf87717385f1143d2891c2d19663bd51f0bc9b6909e4bb7c27",
425
+ interestModel: "0x0dad9baa89b863c15a0487575de7cc428b01f1aa3998ad7a9e9752d96e83ffa9",
426
+ riskModel: "0xcd6675864690b5648a6e309f2f02a66914b2b2bd9c31936f4e0f7fc0f792bc86",
427
+ borrowFeeKey: "0xda5ede87a05c0677b17511c859b22d0a2b0229ee374d5d7a1274cb836b9fe5f8",
428
+ supplyLimitKey: "0x0602418e66fb7a73fa997077bd66f248ad5b090d43344a14b9f1db598ecc1d47",
429
+ borrowLimitKey: "0x2b33a7efdcf6a6df24f4d8a356dd52f58d75bc023c3f171d99502d4d008b53f0",
430
+ isolatedAssetKey: void 0,
431
+ spool: "0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",
432
+ spoolReward: "0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9",
433
+ sCoinTreasury: "0x5c1678c8261ac9eec024d4d630006a9f55c80dc0b1aa38a003fcb1d425818c6b",
434
+ coinDecimalId: "0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3"
386
435
  },
387
436
  wapt: {
388
437
  lendingPoolAddress: "0xca8c14a24e0c32b198eaf479a3317461e3cc339097ce88eaf296a15df8dcfdf5",
389
- collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c"
438
+ collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c",
439
+ borrowDynamic: "0xadda873fb6bf68e1ba3f2dfaa51cf75d4a1bef73d9627bd36e77d2baecb1f2dc",
440
+ interestModel: "0xa4a29d07beecea5eb0c59745bb89d7a1380c6f206a7f1ca37046e05db6025c43",
441
+ riskModel: "0x7ada83b473af30aed50d187de82a0912878b53ade7ac30e11ce23953cf739d84",
442
+ borrowFeeKey: "0x768735df587c7e0f141dcd035fbbcbf9d2149a7b23888baed4e2baa160fa2eeb",
443
+ supplyLimitKey: void 0,
444
+ borrowLimitKey: void 0,
445
+ isolatedAssetKey: void 0,
446
+ spool: void 0,
447
+ spoolReward: void 0,
448
+ sCoinTreasury: void 0,
449
+ coinDecimalId: "0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8"
390
450
  },
391
451
  wsol: {
392
452
  lendingPoolAddress: "0x985682c42984cdfb03f9ff7d8923344c2fe096b1ae4b82ea17721af19d22a21f",
393
- collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f"
453
+ collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f",
454
+ borrowDynamic: "0xe3f301e16d4f1273ea659dd82c5c3f124ca5a5883a5726c7ec0f77bf43b70895",
455
+ interestModel: "0xd95affaee077006b8dbb4b108c1b087e95fc6e5143ef0682da345d5b35bc6356",
456
+ riskModel: "0x8e0da6358073144ec3557400c87f04991ba3a13ca7e0d0a19daed45260b32f16",
457
+ borrowFeeKey: "0x604bffbc817e8e12db15f2373a9e15b2c7adbc510649cdf2cc62a594af90671c",
458
+ supplyLimitKey: "0xbd419b536b3f9c9d4adfc20372ca6feedc53cc31798ac860dbfc847bcf05f54b",
459
+ borrowLimitKey: "0x77d453c51948f32564c810bc73f9ba7abde880657b7f89e1c8a3bc28fa36ee87",
460
+ isolatedAssetKey: void 0,
461
+ spool: void 0,
462
+ spoolReward: void 0,
463
+ sCoinTreasury: "0x760fd66f5be869af4382fa32b812b3c67f0eca1bb1ed7a5578b21d56e1848819",
464
+ coinDecimalId: "0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e"
394
465
  },
395
466
  cetus: {
396
467
  lendingPoolAddress: "0xc09858f60e74a1b671635bec4e8a2c84a0ff313eb87f525fba3258e88c6b6282",
397
- collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a"
468
+ collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a",
469
+ borrowDynamic: "0xcc725fd5d71990cdccc7e16c88a2abde6dbcd0bf6e805ccc1c0cb83a106bbf4e",
470
+ interestModel: "0x2f1258aab89d04d11834121599ab1317dfecb582b4246f106df399911125845a",
471
+ riskModel: "0x03fed312dbba624dff5edaf4736891a1c7d864445fd268e7572b42ec7381132e",
472
+ borrowFeeKey: "0xdf5fb0cc4ebbf5eebfae23dfa5b266f6a58c18a894a13054ae60c0eb6e79c382",
473
+ supplyLimitKey: "0xa5ea3d4bf663d7bc667e82b40a98923590ff3851b9ea8e7afbc26c588c7007d3",
474
+ borrowLimitKey: "0xf44218a5f0feb128e6fbe74b91d1e7e9ef859bd23a576ff0de151829e015a157",
475
+ isolatedAssetKey: void 0,
476
+ spool: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
477
+ spoolReward: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f",
478
+ sCoinTreasury: "0xa283c63488773c916cb3d6c64109536160d5eb496caddc721eb39aad2977d735",
479
+ coinDecimalId: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da"
398
480
  },
399
481
  afsui: {
400
482
  lendingPoolAddress: "0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",
401
- collateralPoolAddress: "0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341"
483
+ collateralPoolAddress: "0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341",
484
+ borrowDynamic: "0x1c76d4df9506154a117bbac0f5e005d8a9c0d9ca60e3fe0c9d080006f6f54e81",
485
+ interestModel: "0xb155c536b37c9601baaa734ad1dd0ef335b2b597aceb8d3ecee41a43f94dcd70",
486
+ riskModel: "0x75371b1d04b5bebc0738af548ba64ea658e74f78228ec8014336d8eebb992312",
487
+ borrowFeeKey: "0xabc6422db2d4ee01635ddaeaa44ba68370eebd785d2c4632515f841ae9bc47d9",
488
+ supplyLimitKey: "0x61a2054eb37f543c0d774da57f2c9542aad8d79a197f748ac08ef5df6cc47028",
489
+ borrowLimitKey: "0x4459498a043872cd107ea917493fee0baf2d37a273c7538e1d6581cc61b92af8",
490
+ isolatedAssetKey: void 0,
491
+ spool: "0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",
492
+ spoolReward: "0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e",
493
+ sCoinTreasury: "0x55f4dfe9e40bc4cc11c70fcb1f3daefa2bdc330567c58d4f0792fbd9f9175a62",
494
+ coinDecimalId: "0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d"
402
495
  },
403
496
  hasui: {
404
497
  lendingPoolAddress: "0x7ebc607f6bdeb659fb6506cb91c5cc1d47bb365cfd5d2e637ea765346ec84ed4",
405
- collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d"
498
+ collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d",
499
+ borrowDynamic: "0x13ec1220b41c6e0f11dd6113199a2aff8e4cf2223047b5bd06d7a3ed5d23e1d2",
500
+ interestModel: "0x987c58cbe48096618f4d9d83e0bde2ff638ce4753aba40dab7c302ac3e4b4519",
501
+ riskModel: "0xe42d8497d423eca0d8df89850c2d77d3644e7f54a2d28f59c315903ea5ec8dec",
502
+ borrowFeeKey: "0xef885c382d461c4fb14d1f3b3758c380c78a1a4b2a3d2fafe6e8649a60fdd7ab",
503
+ supplyLimitKey: "0xc7385b1703693cbbc9c97227fe3fd5c91d7afda00e0da69d942c3260d78e45e0",
504
+ borrowLimitKey: "0x65333e606eead786a999c8267bc9886b0fdbc298a8a8635a48a9c9b8838d9395",
505
+ isolatedAssetKey: void 0,
506
+ spool: "0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",
507
+ spoolReward: "0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66",
508
+ sCoinTreasury: "0x404ccc1404d74a90eb6f9c9d4b6cda6d417fb03189f80d9070a35e5dab1df0f5",
509
+ coinDecimalId: "0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24"
406
510
  },
407
511
  vsui: {
408
512
  lendingPoolAddress: "0xda9257c0731d8822e8a438ebced13415850d705b779c79958dcf2aeb21fcb43d",
409
- collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e"
513
+ collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e",
514
+ borrowDynamic: "0x8eae703505246f975e83f5af24780e5f1b89ef403d5a80ea15534624d6f1a503",
515
+ interestModel: "0xaf6a52b5eaaa5af4d9e49d83de0d504c295ae21f3a37560c3f48e0e15a1d4625",
516
+ riskModel: "0x1e862f27a6bd47c3041159a5cf392f549485c6605ed9aa937f16ecc951e82e65",
517
+ borrowFeeKey: "0x5230de0f41a5e4c05b3d1187a90a9eeab491cec97b08b71512d9785e8af36aa6",
518
+ supplyLimitKey: "0x1d40e34d1f365ec431fff020bd75c16b14b340b3ed6c139803cc15c2384621b2",
519
+ borrowLimitKey: "0x4eb206b4417642cfc1b02f80bb5f5e366af2af2f9fb4ea4f4e898ae82367f8a0",
520
+ isolatedAssetKey: void 0,
521
+ spool: "0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",
522
+ spoolReward: "0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a",
523
+ sCoinTreasury: "0xc06688ee1af25abc286ffb1d18ce273d1d5907cd1064c25f4e8ca61ea989c1d1",
524
+ coinDecimalId: "0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd"
410
525
  },
411
526
  sca: {
412
527
  lendingPoolAddress: "0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",
413
- collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31"
414
- }
415
- // TODO: enable for production
416
- // fud: {
417
- // lendingPoolAddress:
418
- // '0x14367ddca30e2860cb89ed4eaca20c7ece260c5d59dd9990d2c85a8321326acb',
419
- // },
420
- // deep: {
421
- // lendingPoolAddress:
422
- // '0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03',
423
- // },
528
+ collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31",
529
+ borrowDynamic: "0x4e24f52edd739dab59ca4c6353ca430b7ce57e7f333abd0957958570a7cd09ca",
530
+ interestModel: "0xbdcd48cf5b1a814911dc2d5c72d393a980c87820199fe5d799289ce94f4c47df",
531
+ riskModel: "0xc437c24b67b8e2676907700fa395af337ad6463d2c0b4f4fa2e9276414026089",
532
+ borrowFeeKey: "0xee55ba0f9800a62d9e7aef667f87e658258f41814d2c9fa02e25590671b4e5ad",
533
+ supplyLimitKey: "0x8dd938856b972a10ea27ecab2af7ed78e48fc5f6ccedaf2b2119959f747dc2e3",
534
+ borrowLimitKey: "0x04c7de61c5b42972f9bf6a8b1848e5fea2d037ee8deba81741ecd4a70aa80d30",
535
+ isolatedAssetKey: void 0,
536
+ spool: void 0,
537
+ spoolReward: void 0,
538
+ sCoinTreasury: "0xe04bfc95e00252bd654ee13c08edef9ac5e4b6ae4074e8390db39e9a0109c529",
539
+ coinDecimalId: "0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844"
540
+ },
541
+ fud: {
542
+ lendingPoolAddress: "0xefed2cbe76b344792ac724523c8b2236740d1cea2100d46a0ed0dc760c7f4231",
543
+ collateralPoolAddress: void 0,
544
+ borrowDynamic: "0x14367ddca30e2860cb89ed4eaca20c7ece260c5d59dd9990d2c85a8321326acb",
545
+ interestModel: "0x2600ac100ef154eb2329ffd3aad47aca308ff9f9348de3e8e94aaeb906ec2303",
546
+ riskModel: void 0,
547
+ borrowFeeKey: "0xa87e8b26e07ff35ac9fb57adcc779be2883080fc7d12de2d9e7e16d8d8d5e529",
548
+ supplyLimitKey: "0xf98419aecc37a3c5de716f8ec590f8991a5be34da72ce1a2da09531ff45adf7d",
549
+ borrowLimitKey: "0x3d928a001c453c50004baa54e14b0a0e1b0907d9c613dfd76064fd7ed4e8beb8",
550
+ isolatedAssetKey: "0xfcb533e9e4e31f9c9f32d6cbf7fbb3425f1d60474e229a363a2dc7f835d587e2",
551
+ spool: void 0,
552
+ spoolReward: void 0,
553
+ sCoinTreasury: "0xf25212f11d182decff7a86165699a73e3d5787aced203ca539f43cfbc10db867",
554
+ coinDecimalId: "0x01087411ef48aaac1eb6e24803213e3a60a03b147dac930e5e341f17a85e524e"
555
+ },
556
+ deep: {
557
+ lendingPoolAddress: "0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03",
558
+ collateralPoolAddress: void 0,
559
+ borrowDynamic: "0x95e00d7466f97a100e70f08bd37788dc49335796f6f49fab996d40dd0681c6d3",
560
+ interestModel: "0x4143c298506a332d92ea8a995e6f3991ee3215f58f6fc6441752835d275b9a69",
561
+ riskModel: void 0,
562
+ borrowFeeKey: "0xb14ee43f4ad2a2c40bac8c4406a401690e93c982e289cf3802fedf74a159cab2",
563
+ supplyLimitKey: "0x599528fdfdc253e90dfd0acf4f4a166b391e2aac1ca6528abbff63225b548fee",
564
+ borrowLimitKey: "0xf4217e8ef9d9c32e8992092e910a77535a8124c19b8a762a673f227f5f765a4e",
565
+ isolatedAssetKey: "0x208d3a24ba369dcfc8f0387333d1512b98199eb150d2f2a69359ff708cf761e3",
566
+ spool: void 0,
567
+ spoolReward: void 0,
568
+ sCoinTreasury: "0xc63838fabe37b25ad897392d89876d920f5e0c6a406bf3abcb84753d2829bc88",
569
+ coinDecimalId: "0x6e60b051a08fa836f5a7acd7c464c8d9825bc29c44657fe170fe9b8e1e4770c0"
570
+ }
424
571
  };
425
572
 
426
573
  // src/constants/pyth.ts
@@ -442,10 +589,9 @@ var PYTH_FEED_IDS = {
442
589
  afsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
443
590
  hasui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
444
591
  vsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
445
- sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc"
446
- // TODO: enable for production
447
- // deep: '29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff',
448
- // fud: '6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75',
592
+ sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
593
+ deep: "29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",
594
+ fud: "6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75"
449
595
  };
450
596
 
451
597
  // src/constants/queryKeys.ts
@@ -471,7 +617,11 @@ var queryKeys = {
471
617
  typeArgs: !typeArgs ? void 0 : JSON.stringify(typeArgs)
472
618
  }
473
619
  ],
474
- getObject: (objectId, walletAddress, options) => ["rpc", "getObject", { walletAddress, options, objectId }],
620
+ getObject: (objectId, options) => [
621
+ "rpc",
622
+ "getObject",
623
+ { options, objectId }
624
+ ],
475
625
  getObjects: (objectIds, walletAddress, options) => [
476
626
  "rpc",
477
627
  "getObjects",
@@ -521,7 +671,10 @@ var queryKeys = {
521
671
  "rpc",
522
672
  "getAllCoinBalances",
523
673
  { owner }
524
- ]
674
+ ],
675
+ getNormalizedMoveFunction: (target) => {
676
+ return ["rpc", "getNormalizedMoveCall", target];
677
+ }
525
678
  },
526
679
  oracle: {
527
680
  getPythLatestPriceFeeds: () => ["oracle", "getPythPriceIds"]
@@ -745,6 +898,32 @@ var TEST_ADDRESSES = {
745
898
  feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
746
899
  }
747
900
  }
901
+ },
902
+ deep: {
903
+ id: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",
904
+ metaData: "0x6e60b051a08fa836f5a7acd7c464c8d9825bc29c44657fe170fe9b8e1e4770c0",
905
+ treasury: "",
906
+ oracle: {
907
+ supra: "",
908
+ switchboard: "",
909
+ pyth: {
910
+ feed: "29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",
911
+ feedObject: "0x8c7f3a322b94cc69db2a2ac575cbd94bf5766113324c3a3eceac91e3e88a51ed"
912
+ }
913
+ }
914
+ },
915
+ fud: {
916
+ id: "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1",
917
+ metaData: "0x01087411ef48aaac1eb6e24803213e3a60a03b147dac930e5e341f17a85e524e",
918
+ treasury: "",
919
+ oracle: {
920
+ supra: "",
921
+ switchboard: "",
922
+ pyth: {
923
+ feed: "6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75",
924
+ feedObject: "0x4531c3ed0d22f21f5fce882905372006c9aafa30f01db03b789e95a6c50de7b2"
925
+ }
926
+ }
748
927
  }
749
928
  },
750
929
  oracles: {
@@ -964,14 +1143,22 @@ var TEST_ADDRESSES = {
964
1143
  ssbeth: {
965
1144
  coinType: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
966
1145
  treasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed"
1146
+ },
1147
+ sdeep: {
1148
+ coinType: "0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",
1149
+ treasury: "0xc63838fabe37b25ad897392d89876d920f5e0c6a406bf3abcb84753d2829bc88"
1150
+ },
1151
+ sfud: {
1152
+ coinType: "0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD",
1153
+ treasury: "0xf25212f11d182decff7a86165699a73e3d5787aced203ca539f43cfbc10db867"
967
1154
  }
968
1155
  }
969
1156
  }
970
1157
  };
971
1158
 
972
1159
  // src/constants/tokenBucket.ts
973
- var DEFAULT_TOKENS_PER_INTERVAL = 50;
974
- var DEFAULT_INTERVAL_IN_MS = 100;
1160
+ var DEFAULT_TOKENS_PER_INTERVAL = 10;
1161
+ var DEFAULT_INTERVAL_IN_MS = 250;
975
1162
 
976
1163
  // src/constants/vesca.ts
977
1164
  var UNLOCK_ROUND_DURATION = 60 * 60 * 24;
@@ -987,7 +1174,8 @@ import { SuiKit } from "@scallop-io/sui-kit";
987
1174
  import { QueryClient } from "@tanstack/query-core";
988
1175
  import {
989
1176
  SuiTxBlock,
990
- normalizeStructTag as normalizeStructTag2
1177
+ normalizeStructTag as normalizeStructTag2,
1178
+ parseStructTag as parseStructTag2
991
1179
  } from "@scallop-io/sui-kit";
992
1180
 
993
1181
  // src/utils/builder.ts
@@ -1118,7 +1306,10 @@ var parseOriginMarketPoolData = (originMarketPoolData) => {
1118
1306
  borrowRateOnMidKink: Number(originMarketPoolData.borrowRateOnMidKink.value) / 2 ** 32,
1119
1307
  highKink: Number(originMarketPoolData.highKink.value) / 2 ** 32,
1120
1308
  midKink: Number(originMarketPoolData.midKink.value) / 2 ** 32,
1121
- minBorrowAmount: Number(originMarketPoolData.minBorrowAmount)
1309
+ minBorrowAmount: Number(originMarketPoolData.minBorrowAmount),
1310
+ isIsolated: originMarketPoolData.isIsolated,
1311
+ supplyLimit: Number(originMarketPoolData.supplyLimit),
1312
+ borrowLimit: Number(originMarketPoolData.borrowLimit)
1122
1313
  };
1123
1314
  };
1124
1315
  var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
@@ -1170,6 +1361,7 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
1170
1361
  borrowApyOnHighKink: utils.parseAprToApy(borrowAprOnHighKink),
1171
1362
  borrowAprOnMidKink,
1172
1363
  borrowApyOnMidKink: utils.parseAprToApy(borrowAprOnMidKink),
1364
+ coinDecimal,
1173
1365
  maxBorrowApr,
1174
1366
  maxBorrowApy: utils.parseAprToApy(maxBorrowApr),
1175
1367
  borrowApr: Math.min(borrowApr, maxBorrowApr),
@@ -1188,17 +1380,21 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
1188
1380
  utilizationRate: utilizationRate.toNumber(),
1189
1381
  supplyApr: supplyApr.toNumber(),
1190
1382
  supplyApy: utils.parseAprToApy(supplyApr.toNumber()),
1191
- conversionRate: conversionRate.toNumber()
1383
+ conversionRate: conversionRate.toNumber(),
1384
+ isIsolated: parsedMarketPoolData.isIsolated,
1385
+ maxSupplyCoin: BigNumber(parsedMarketPoolData.supplyLimit).shiftedBy(coinDecimal).toNumber(),
1386
+ maxBorrowCoin: BigNumber(parsedMarketPoolData.borrowLimit).shiftedBy(coinDecimal).toNumber()
1192
1387
  };
1193
1388
  };
1194
1389
  var parseOriginMarketCollateralData = (originMarketCollateralData) => {
1195
1390
  const divisor = 2 ** 32;
1196
1391
  return {
1197
1392
  coinType: normalizeStructTag(originMarketCollateralData.type.name),
1393
+ isIsolated: originMarketCollateralData.isIsolated,
1198
1394
  collateralFactor: Number(originMarketCollateralData.collateralFactor.value) / divisor,
1199
1395
  liquidationFactor: Number(originMarketCollateralData.liquidationFactor.value) / divisor,
1200
1396
  liquidationDiscount: Number(originMarketCollateralData.liquidationDiscount.value) / divisor,
1201
- liquidationPanelty: Number(originMarketCollateralData.liquidationPanelty.value) / divisor,
1397
+ liquidationPenalty: Number(originMarketCollateralData.liquidationPenalty.value) / divisor,
1202
1398
  liquidationReserveFactor: Number(originMarketCollateralData.liquidationReserveFactor.value) / divisor,
1203
1399
  maxCollateralAmount: Number(originMarketCollateralData.maxCollateralAmount),
1204
1400
  totalCollateralAmount: Number(
@@ -1218,6 +1414,8 @@ var calculateMarketCollateralData = (utils, parsedMarketCollateralData) => {
1218
1414
  parsedMarketCollateralData.totalCollateralAmount
1219
1415
  ).shiftedBy(-1 * coinDecimal);
1220
1416
  return {
1417
+ coinDecimal,
1418
+ isIsolated: parsedMarketCollateralData.isIsolated,
1221
1419
  maxDepositAmount: parsedMarketCollateralData.maxCollateralAmount,
1222
1420
  maxDepositCoin: maxCollateralCoin.toNumber(),
1223
1421
  depositAmount: parsedMarketCollateralData.totalCollateralAmount,
@@ -1350,7 +1548,7 @@ var parseOriginBorrowIncentivesPoolPointData = (originBorrowIncentivePoolPointDa
1350
1548
  createdAt: Number(originBorrowIncentivePoolPointData.created_at)
1351
1549
  };
1352
1550
  };
1353
- var parseOriginBorrowIncentivePoolData = (originBorrowIncentivePoolData) => {
1551
+ var parseOriginBorrowIncentivePoolData = (utils, originBorrowIncentivePoolData) => {
1354
1552
  return {
1355
1553
  poolType: normalizeStructTag(originBorrowIncentivePoolData.pool_type.name),
1356
1554
  minStakes: Number(originBorrowIncentivePoolData.min_stakes),
@@ -1359,9 +1557,9 @@ var parseOriginBorrowIncentivePoolData = (originBorrowIncentivePoolData) => {
1359
1557
  poolPoints: originBorrowIncentivePoolData.points.reduce(
1360
1558
  (acc, point) => {
1361
1559
  const parsed = parseOriginBorrowIncentivesPoolPointData(point);
1362
- const name = parseStructTag(
1363
- parsed.pointType
1364
- ).name.toLowerCase();
1560
+ const name = utils.parseSCoinTypeNameToMarketCoinName(
1561
+ parseStructTag(parsed.pointType).name.toLowerCase()
1562
+ );
1365
1563
  acc[name] = parsed;
1366
1564
  return acc;
1367
1565
  },
@@ -1548,6 +1746,13 @@ var findClosestUnlockRound = (unlockAtInSecondTimestamp) => {
1548
1746
  }
1549
1747
  return Math.floor(closestTwelveAM.getTime() / 1e3);
1550
1748
  };
1749
+ var partitionArray = (array, chunkSize) => {
1750
+ const result = [];
1751
+ for (let i = 0; i < array.length; i += chunkSize) {
1752
+ result.push(array.slice(i, i + chunkSize));
1753
+ }
1754
+ return result;
1755
+ };
1551
1756
 
1552
1757
  // src/utils/tokenBucket.ts
1553
1758
  var TokenBucket = class {
@@ -1560,10 +1765,10 @@ var TokenBucket = class {
1560
1765
  refill() {
1561
1766
  const now = Date.now();
1562
1767
  const elapsed = now - this.lastRefill;
1563
- if (elapsed > this.interval) {
1768
+ if (elapsed >= this.interval) {
1564
1769
  const tokensToAdd = Math.floor(elapsed / this.interval) * this.tokensPerInterval;
1565
1770
  this.tokens = Math.min(this.tokens + tokensToAdd, this.tokensPerInterval);
1566
- this.lastRefill = now;
1771
+ this.lastRefill += Math.floor(elapsed / this.interval) * this.interval;
1567
1772
  }
1568
1773
  }
1569
1774
  removeTokens(count) {
@@ -1575,27 +1780,12 @@ var TokenBucket = class {
1575
1780
  return false;
1576
1781
  }
1577
1782
  };
1578
- var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor = 2) => {
1783
+ var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor = 1.25) => {
1579
1784
  let retries = 0;
1580
1785
  const tryRequest = async () => {
1581
1786
  if (tokenBucket.removeTokens(1)) {
1582
- try {
1583
- const result = await fn();
1584
- if (result && result.status === 429) {
1585
- throw new Error("Unexpected status code: 429");
1586
- }
1587
- return result;
1588
- } catch (error) {
1589
- if (error.message === "Unexpected status code: 429" && retries < maxRetries) {
1590
- retries++;
1591
- const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
1592
- await new Promise((resolve) => setTimeout(resolve, delay));
1593
- return tryRequest();
1594
- } else {
1595
- console.error("An error occurred:", error.message);
1596
- return null;
1597
- }
1598
- }
1787
+ const result = await fn();
1788
+ return result;
1599
1789
  } else if (retries < maxRetries) {
1600
1790
  retries++;
1601
1791
  const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
@@ -1634,6 +1824,22 @@ function withIndexerFallback(method) {
1634
1824
  };
1635
1825
  }
1636
1826
 
1827
+ // src/utils/core.ts
1828
+ var parseObjectAs = (object) => {
1829
+ if (!(object && object.content && "fields" in object.content))
1830
+ throw new Error(`Failed to parse object`);
1831
+ const fields = object.content.fields;
1832
+ if (typeof fields === "object" && "value" in fields) {
1833
+ const value = fields.value;
1834
+ if (typeof value === "object" && "fields" in value)
1835
+ return value.fields;
1836
+ return value;
1837
+ } else if (typeof fields === "object") {
1838
+ return fields;
1839
+ }
1840
+ return fields;
1841
+ };
1842
+
1637
1843
  // src/models/scallopCache.ts
1638
1844
  var ScallopCache = class {
1639
1845
  constructor(suiKit, walletAddress, cacheOptions, tokenBucket, queryClient) {
@@ -1668,6 +1874,13 @@ var ScallopCache = class {
1668
1874
  })
1669
1875
  );
1670
1876
  }
1877
+ retryFn(errCount, e) {
1878
+ if (errCount === 5)
1879
+ return false;
1880
+ if (e.status === 429)
1881
+ return true;
1882
+ return false;
1883
+ }
1671
1884
  /**
1672
1885
  * @description Provides cache for inspectTxn of the SuiKit.
1673
1886
  * @param QueryInspectTxnParams
@@ -1680,18 +1893,64 @@ var ScallopCache = class {
1680
1893
  typeArgs
1681
1894
  }) {
1682
1895
  const txBlock = new SuiTxBlock();
1683
- txBlock.moveCall(queryTarget, args, typeArgs);
1896
+ const resolvedQueryTarget = await this.queryGetNormalizedMoveFunction(queryTarget);
1897
+ if (!resolvedQueryTarget)
1898
+ throw new Error("Invalid query target");
1899
+ const { parameters } = resolvedQueryTarget;
1900
+ const resolvedArgs = await Promise.all(
1901
+ (args ?? []).map(async (arg, idx) => {
1902
+ if (typeof arg !== "string")
1903
+ return arg;
1904
+ const cachedData = (await this.queryGetObject(arg))?.data;
1905
+ if (!cachedData)
1906
+ return arg;
1907
+ const owner = cachedData.owner;
1908
+ if (!owner || typeof owner !== "object" || !("Shared" in owner))
1909
+ return {
1910
+ objectId: cachedData.objectId,
1911
+ version: cachedData.version,
1912
+ digest: cachedData.digest
1913
+ };
1914
+ const parameter = parameters[idx];
1915
+ if (typeof parameter !== "object" || !("MutableReference" in parameter || "Reference" in parameter))
1916
+ return arg;
1917
+ return {
1918
+ objectId: cachedData.objectId,
1919
+ initialSharedVersion: owner.Shared.initial_shared_version,
1920
+ mutable: "MutableReference" in parameter
1921
+ };
1922
+ })
1923
+ );
1924
+ txBlock.moveCall(queryTarget, resolvedArgs, typeArgs);
1684
1925
  const query = await this.queryClient.fetchQuery({
1926
+ retry: this.retryFn,
1927
+ retryDelay: 1e3,
1685
1928
  queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
1686
1929
  queryFn: async () => {
1687
1930
  return await callWithRateLimit(
1688
1931
  this.tokenBucket,
1689
- () => this.suiKit.inspectTxn(txBlock)
1932
+ async () => await this.suiKit.inspectTxn(txBlock)
1690
1933
  );
1691
1934
  }
1692
1935
  });
1693
1936
  return query;
1694
1937
  }
1938
+ async queryGetNormalizedMoveFunction(target) {
1939
+ const { address, module, name } = parseStructTag2(target);
1940
+ return this.queryClient.fetchQuery({
1941
+ queryKey: queryKeys.rpc.getNormalizedMoveFunction(target),
1942
+ queryFn: async () => {
1943
+ return await callWithRateLimit(
1944
+ this.tokenBucket,
1945
+ async () => await this.suiKit.client().getNormalizedMoveFunction({
1946
+ package: address,
1947
+ module,
1948
+ function: name
1949
+ })
1950
+ );
1951
+ }
1952
+ });
1953
+ }
1695
1954
  /**
1696
1955
  * @description Provides cache for getObject of the SuiKit.
1697
1956
  * @param objectId
@@ -1699,12 +1958,19 @@ var ScallopCache = class {
1699
1958
  * @returns Promise<SuiObjectResponse>
1700
1959
  */
1701
1960
  async queryGetObject(objectId, options) {
1961
+ options = {
1962
+ ...options,
1963
+ showOwner: true,
1964
+ showContent: true
1965
+ };
1702
1966
  return this.queryClient.fetchQuery({
1703
- queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
1967
+ retry: this.retryFn,
1968
+ retryDelay: 1e3,
1969
+ queryKey: queryKeys.rpc.getObject(objectId, options),
1704
1970
  queryFn: async () => {
1705
1971
  return await callWithRateLimit(
1706
1972
  this.tokenBucket,
1707
- () => this.client.getObject({
1973
+ async () => await this.client.getObject({
1708
1974
  id: objectId,
1709
1975
  options
1710
1976
  })
@@ -1723,16 +1989,36 @@ var ScallopCache = class {
1723
1989
  if (objectIds.length === 0)
1724
1990
  return [];
1725
1991
  return this.queryClient.fetchQuery({
1992
+ retry: this.retryFn,
1993
+ retryDelay: 1e3,
1726
1994
  queryKey: queryKeys.rpc.getObjects(
1727
1995
  objectIds,
1728
1996
  this.walletAddress,
1729
1997
  options
1730
1998
  ),
1731
1999
  queryFn: async () => {
1732
- return await callWithRateLimit(
2000
+ const results = await callWithRateLimit(
1733
2001
  this.tokenBucket,
1734
- () => this.suiKit.getObjects(objectIds, options)
2002
+ async () => await this.suiKit.getObjects(objectIds, options)
1735
2003
  );
2004
+ if (results) {
2005
+ results.forEach((result) => {
2006
+ this.queryClient.setQueriesData(
2007
+ {
2008
+ exact: false,
2009
+ queryKey: queryKeys.rpc.getObject(result.objectId, options)
2010
+ },
2011
+ {
2012
+ data: result,
2013
+ error: null
2014
+ },
2015
+ {
2016
+ updatedAt: Date.now()
2017
+ }
2018
+ );
2019
+ });
2020
+ }
2021
+ return results;
1736
2022
  }
1737
2023
  });
1738
2024
  }
@@ -1743,44 +2029,94 @@ var ScallopCache = class {
1743
2029
  */
1744
2030
  async queryGetOwnedObjects(input) {
1745
2031
  return this.queryClient.fetchQuery({
2032
+ retry: this.retryFn,
2033
+ retryDelay: 1e3,
1746
2034
  queryKey: queryKeys.rpc.getOwnedObjects(input),
1747
2035
  queryFn: async () => {
1748
- return await callWithRateLimit(
2036
+ const results = await callWithRateLimit(
1749
2037
  this.tokenBucket,
1750
- () => this.client.getOwnedObjects(input)
2038
+ async () => await this.client.getOwnedObjects(input)
1751
2039
  );
2040
+ if (results && results.data.length > 0) {
2041
+ results.data.filter(
2042
+ (result) => !!result.data
2043
+ ).forEach((result) => {
2044
+ this.queryClient.setQueriesData(
2045
+ {
2046
+ exact: false,
2047
+ queryKey: queryKeys.rpc.getObject(
2048
+ result.data.objectId,
2049
+ input.options ?? {}
2050
+ )
2051
+ },
2052
+ {
2053
+ data: result.data,
2054
+ error: null
2055
+ },
2056
+ {
2057
+ updatedAt: Date.now()
2058
+ }
2059
+ );
2060
+ });
2061
+ }
2062
+ return results;
1752
2063
  }
1753
2064
  });
1754
2065
  }
1755
2066
  async queryGetDynamicFields(input) {
1756
2067
  return this.queryClient.fetchQuery({
2068
+ retry: this.retryFn,
2069
+ retryDelay: 1e3,
1757
2070
  queryKey: queryKeys.rpc.getDynamicFields(input),
1758
2071
  queryFn: async () => {
1759
2072
  return await callWithRateLimit(
1760
2073
  this.tokenBucket,
1761
- () => this.client.getDynamicFields(input)
2074
+ async () => await this.client.getDynamicFields(input)
1762
2075
  );
1763
2076
  }
1764
2077
  });
1765
2078
  }
1766
2079
  async queryGetDynamicFieldObject(input) {
1767
2080
  return this.queryClient.fetchQuery({
2081
+ retry: this.retryFn,
2082
+ retryDelay: (attemptIndex) => Math.min(1e3 * attemptIndex, 8e3),
1768
2083
  queryKey: queryKeys.rpc.getDynamicFieldObject(input),
1769
2084
  queryFn: async () => {
1770
- return await callWithRateLimit(
2085
+ const result = await callWithRateLimit(
1771
2086
  this.tokenBucket,
1772
2087
  () => this.client.getDynamicFieldObject(input)
1773
2088
  );
2089
+ if (result?.data) {
2090
+ this.queryClient.setQueriesData(
2091
+ {
2092
+ exact: false,
2093
+ queryKey: queryKeys.rpc.getObject(result?.data.objectId, {
2094
+ showContent: true,
2095
+ showOwner: true
2096
+ })
2097
+ },
2098
+ {
2099
+ data: result.data,
2100
+ error: null
2101
+ },
2102
+ {
2103
+ updatedAt: Date.now()
2104
+ }
2105
+ );
2106
+ }
2107
+ return result;
1774
2108
  }
1775
2109
  });
1776
2110
  }
1777
2111
  async queryGetAllCoinBalances(owner) {
1778
2112
  return this.queryClient.fetchQuery({
2113
+ retry: this.retryFn,
2114
+ retryDelay: 1e3,
1779
2115
  queryKey: queryKeys.rpc.getAllCoinBalances(owner),
1780
2116
  queryFn: async () => {
1781
2117
  const allBalances = await callWithRateLimit(
1782
2118
  this.tokenBucket,
1783
- () => this.client.getAllBalances({ owner })
2119
+ async () => await this.client.getAllBalances({ owner })
1784
2120
  );
1785
2121
  if (!allBalances)
1786
2122
  return {};
@@ -2493,7 +2829,7 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
2493
2829
  ...SUPPORT_BORROW_INCENTIVE_POOLS
2494
2830
  ], indexer = false, marketPools, coinPrices) => {
2495
2831
  const borrowIncentivePools = {};
2496
- marketPools = marketPools ?? await query.getMarketPools(void 0, { indexer, coinPrices });
2832
+ marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices, indexer })).pools;
2497
2833
  coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools });
2498
2834
  if (indexer) {
2499
2835
  const borrowIncentivePoolsIndexer = await query.indexer.getBorrowIncentivePools();
@@ -2518,7 +2854,10 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
2518
2854
  );
2519
2855
  for (const pool of borrowIncentivePoolsQueryData?.incentive_pools ?? []) {
2520
2856
  const borrowIncentivePoolPoints = {};
2521
- const parsedBorrowIncentivePoolData = parseOriginBorrowIncentivePoolData(pool);
2857
+ const parsedBorrowIncentivePoolData = parseOriginBorrowIncentivePoolData(
2858
+ query.utils,
2859
+ pool
2860
+ );
2522
2861
  const poolCoinType = normalizeStructTag3(pool.pool_type.name);
2523
2862
  const poolCoinName = query.utils.parseCoinNameFromType(
2524
2863
  poolCoinType
@@ -2532,12 +2871,9 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
2532
2871
  parsedBorrowIncentivePoolData.poolPoints
2533
2872
  )) {
2534
2873
  const rewardCoinType = poolPoint.pointType;
2535
- let rewardCoinName = query.utils.parseCoinNameFromType(
2874
+ const rewardCoinName = query.utils.parseCoinNameFromType(
2536
2875
  rewardCoinType
2537
2876
  );
2538
- if (sCoinRawNameToName[rewardCoinName]) {
2539
- rewardCoinName = sCoinRawNameToName[rewardCoinName];
2540
- }
2541
2877
  const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
2542
2878
  const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
2543
2879
  const symbol = query.utils.parseSymbol(rewardCoinName);
@@ -2685,7 +3021,7 @@ var supplyLimitZod = zod.object({
2685
3021
  value: zod.string()
2686
3022
  })
2687
3023
  });
2688
- var supplyLimitKeyType = `0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d::market_dynamic_keys::SupplyLimitKey`;
3024
+ var supplyLimitKeyType = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
2689
3025
  var getSupplyLimit = async (utils, poolName) => {
2690
3026
  try {
2691
3027
  const poolCoinType = utils.parseCoinType(poolName).slice(2);
@@ -2725,10 +3061,15 @@ var isolatedAssetZod = zod2.object({
2725
3061
  value: zod2.boolean()
2726
3062
  })
2727
3063
  });
2728
- var isolatedAssetKeyType = `0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d::market_dynamic_keys::IsolatedAssetKey`;
2729
- var getIsolatedAssets = async (address) => {
3064
+ var isolatedAssetKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
3065
+ var getIsolatedAssets = async (query) => {
3066
+ if (SUPPORT_POOLS.every((t) => !!POOL_ADDRESSES[t])) {
3067
+ return SUPPORT_POOLS.filter(
3068
+ (t) => !!POOL_ADDRESSES[t]?.isolatedAssetKey && !!POOL_ADDRESSES[t]?.coinType
3069
+ ).map((t) => POOL_ADDRESSES[t]?.coinType);
3070
+ }
2730
3071
  try {
2731
- const marketObject = address.get("core.market");
3072
+ const marketObject = query.address.get("core.market");
2732
3073
  const isolatedAssets = [];
2733
3074
  if (!marketObject)
2734
3075
  return isolatedAssets;
@@ -2738,7 +3079,7 @@ var getIsolatedAssets = async (address) => {
2738
3079
  return dynamicField.name.type === isolatedAssetKeyType;
2739
3080
  };
2740
3081
  do {
2741
- const response = await address.cache.queryGetDynamicFields({
3082
+ const response = await query.cache.queryGetDynamicFields({
2742
3083
  parentId: marketObject,
2743
3084
  cursor: nextCursor,
2744
3085
  limit: 10
@@ -2761,32 +3102,30 @@ var getIsolatedAssets = async (address) => {
2761
3102
  }
2762
3103
  };
2763
3104
  var isIsolatedAsset = async (utils, coinName) => {
2764
- try {
2765
- const marketObject = utils.address.get("core.market");
2766
- const cachedData = utils.address.cache.queryClient.getQueryData([
2767
- "getDynamicFields",
2768
- marketObject
2769
- ]);
2770
- if (cachedData) {
2771
- const coinType2 = utils.parseCoinType(coinName);
2772
- return cachedData.includes(coinType2);
3105
+ if (POOL_ADDRESSES[coinName]) {
3106
+ return !!POOL_ADDRESSES[coinName].isolatedAssetKey;
3107
+ }
3108
+ const marketObject = utils.address.get("core.market");
3109
+ const cachedData = utils.address.cache.queryClient.getQueryData([
3110
+ "getDynamicFields",
3111
+ marketObject
3112
+ ]);
3113
+ if (cachedData) {
3114
+ const coinType2 = utils.parseCoinType(coinName);
3115
+ return cachedData.includes(coinType2);
3116
+ }
3117
+ const coinType = utils.parseCoinType(coinName).slice(2);
3118
+ const object = await utils.cache.queryGetDynamicFieldObject({
3119
+ parentId: marketObject,
3120
+ name: {
3121
+ type: isolatedAssetKeyType,
3122
+ value: coinType
2773
3123
  }
2774
- const coinType = utils.parseCoinType(coinName).slice(2);
2775
- const object = await utils.cache.queryGetDynamicFieldObject({
2776
- parentId: marketObject,
2777
- name: {
2778
- type: isolatedAssetKeyType,
2779
- value: coinType
2780
- }
2781
- });
2782
- const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
2783
- if (!parsedData.success)
2784
- return false;
2785
- return parsedData.data.fields.value;
2786
- } catch (e) {
2787
- console.error(e);
3124
+ });
3125
+ const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
3126
+ if (!parsedData.success)
2788
3127
  return false;
2789
- }
3128
+ return parsedData.data.fields.value;
2790
3129
  };
2791
3130
 
2792
3131
  // src/queries/borrowLimitQuery.ts
@@ -2805,7 +3144,7 @@ var borrowLimitZod = zod3.object({
2805
3144
  value: zod3.string()
2806
3145
  })
2807
3146
  });
2808
- var borrowLimitKeyType = `0xb784ea287d944e478a3ceaa071f8885072cce6b7224cf245914dc2f9963f460e::market_dynamic_keys::BorrowLimitKey`;
3147
+ var borrowLimitKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
2809
3148
  var getBorrowLimit = async (utils, poolName) => {
2810
3149
  try {
2811
3150
  const poolCoinType = utils.parseCoinType(poolName).slice(2);
@@ -2829,6 +3168,17 @@ var getBorrowLimit = async (utils, poolName) => {
2829
3168
  }
2830
3169
  };
2831
3170
 
3171
+ // src/queries/objectsQuery.ts
3172
+ var queryMultipleObjects = async (cache, objectIds, options, partitionSize = 50) => {
3173
+ const objectIdsPartition = partitionArray(objectIds, partitionSize);
3174
+ const objects = [];
3175
+ for (const objectIds2 of objectIdsPartition) {
3176
+ const result = await cache.queryGetObjects(objectIds2, options);
3177
+ objects.push(...result);
3178
+ }
3179
+ return objects;
3180
+ };
3181
+
2832
3182
  // src/queries/coreQuery.ts
2833
3183
  var queryMarket = async (query, indexer = false, coinPrices) => {
2834
3184
  coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
@@ -2885,19 +3235,15 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2885
3235
  borrowRateOnMidKink: pool.borrowRateOnMidKink,
2886
3236
  highKink: pool.highKink,
2887
3237
  midKink: pool.midKink,
2888
- minBorrowAmount: pool.minBorrowAmount
3238
+ minBorrowAmount: pool.minBorrowAmount,
3239
+ isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3240
+ supplyLimit: await getSupplyLimit(query.utils, poolCoinName) ?? "0",
3241
+ borrowLimit: await getBorrowLimit(query.utils, poolCoinName) ?? "0"
2889
3242
  });
2890
3243
  const calculatedMarketPoolData = calculateMarketPoolData(
2891
3244
  query.utils,
2892
3245
  parsedMarketPoolData
2893
3246
  );
2894
- const coinDecimal = query.utils.getCoinDecimal(poolCoinName);
2895
- const maxSupplyCoin = BigNumber3(
2896
- await getSupplyLimit(query.utils, poolCoinName) ?? "0"
2897
- ).shiftedBy(-coinDecimal).toNumber();
2898
- const maxBorrowCoin = BigNumber3(
2899
- await getBorrowLimit(query.utils, poolCoinName) ?? "0"
2900
- ).shiftedBy(-coinDecimal).toNumber();
2901
3247
  pools[poolCoinName] = {
2902
3248
  coinName: poolCoinName,
2903
3249
  symbol: query.utils.parseSymbol(poolCoinName),
@@ -2907,7 +3253,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2907
3253
  query.utils.parseMarketCoinName(poolCoinName)
2908
3254
  ),
2909
3255
  coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
2910
- coinDecimal,
2911
3256
  coinPrice,
2912
3257
  highKink: parsedMarketPoolData.highKink,
2913
3258
  midKink: parsedMarketPoolData.midKink,
@@ -2916,10 +3261,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2916
3261
  borrowFee: parsedMarketPoolData.borrowFee,
2917
3262
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
2918
3263
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
2919
- isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2920
- // isIsolated: false,
2921
- maxSupplyCoin,
2922
- maxBorrowCoin,
2923
3264
  ...calculatedMarketPoolData
2924
3265
  };
2925
3266
  }
@@ -2935,10 +3276,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2935
3276
  collateralFactor: collateral.collateralFactor,
2936
3277
  liquidationFactor: collateral.liquidationFactor,
2937
3278
  liquidationDiscount: collateral.liquidationDiscount,
2938
- liquidationPanelty: collateral.liquidationPanelty,
3279
+ liquidationPenalty: collateral.liquidationPanelty,
2939
3280
  liquidationReserveFactor: collateral.liquidationReserveFactor,
2940
3281
  maxCollateralAmount: collateral.maxCollateralAmount,
2941
- totalCollateralAmount: collateral.totalCollateralAmount
3282
+ totalCollateralAmount: collateral.totalCollateralAmount,
3283
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
2942
3284
  });
2943
3285
  const calculatedMarketCollateralData = calculateMarketCollateralData(
2944
3286
  query.utils,
@@ -2950,14 +3292,12 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2950
3292
  coinType,
2951
3293
  marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
2952
3294
  coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
2953
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
2954
3295
  coinPrice,
2955
3296
  collateralFactor: parsedMarketCollateralData.collateralFactor,
2956
3297
  liquidationFactor: parsedMarketCollateralData.liquidationFactor,
2957
3298
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
2958
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3299
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
2959
3300
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
2960
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
2961
3301
  ...calculatedMarketCollateralData
2962
3302
  };
2963
3303
  }
@@ -2967,44 +3307,216 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2967
3307
  // data: marketData,
2968
3308
  };
2969
3309
  };
2970
- var getMarketPools = async (query, poolCoinNames = [...SUPPORT_POOLS], indexer = false, coinPrices) => {
2971
- const marketId = query.address.get("core.market");
2972
- const marketObjectResponse = await query.cache.queryGetObject(marketId, {
2973
- showContent: true
2974
- });
3310
+ var queryRequiredMarketObjects = async (query, poolCoinNames) => {
3311
+ const tasks = poolCoinNames.map((t) => ({
3312
+ poolCoinName: t,
3313
+ balanceSheet: POOL_ADDRESSES[t]?.lendingPoolAddress,
3314
+ collateralStat: POOL_ADDRESSES[t]?.collateralPoolAddress,
3315
+ borrowDynamic: POOL_ADDRESSES[t]?.borrowDynamic,
3316
+ interestModel: POOL_ADDRESSES[t]?.interestModel,
3317
+ riskModel: POOL_ADDRESSES[t]?.riskModel,
3318
+ borrowFeeKey: POOL_ADDRESSES[t]?.borrowFeeKey,
3319
+ supplyLimitKey: POOL_ADDRESSES[t]?.supplyLimitKey,
3320
+ borrowLimitKey: POOL_ADDRESSES[t]?.borrowLimitKey,
3321
+ isolatedAssetKey: POOL_ADDRESSES[t]?.isolatedAssetKey
3322
+ }));
3323
+ const [
3324
+ balanceSheetObjects,
3325
+ collateralStatObjects,
3326
+ borrowDynamicObjects,
3327
+ interestModelObjects,
3328
+ riskModelObjects,
3329
+ borrowFeeObjects,
3330
+ supplyLimitObjects,
3331
+ borrowLimitObjects,
3332
+ isolatedAssetObjects
3333
+ ] = await Promise.all([
3334
+ queryMultipleObjects(
3335
+ query.cache,
3336
+ tasks.map((task) => task.balanceSheet).filter((t) => !!t)
3337
+ ),
3338
+ queryMultipleObjects(
3339
+ query.cache,
3340
+ tasks.map((task) => task.collateralStat).filter((t) => !!t)
3341
+ ),
3342
+ queryMultipleObjects(
3343
+ query.cache,
3344
+ tasks.map((task) => task.borrowDynamic).filter((t) => !!t)
3345
+ ),
3346
+ queryMultipleObjects(
3347
+ query.cache,
3348
+ tasks.map((task) => task.interestModel).filter((t) => !!t)
3349
+ ),
3350
+ queryMultipleObjects(
3351
+ query.cache,
3352
+ tasks.map((task) => task.riskModel).filter((t) => !!t)
3353
+ ),
3354
+ queryMultipleObjects(
3355
+ query.cache,
3356
+ tasks.map((task) => task.borrowFeeKey).filter((t) => !!t)
3357
+ ),
3358
+ queryMultipleObjects(
3359
+ query.cache,
3360
+ tasks.map((task) => task.supplyLimitKey).filter((t) => !!t)
3361
+ ),
3362
+ queryMultipleObjects(
3363
+ query.cache,
3364
+ tasks.map((task) => task.borrowLimitKey).filter((t) => !!t)
3365
+ ),
3366
+ queryMultipleObjects(
3367
+ query.cache,
3368
+ tasks.map((task) => task.isolatedAssetKey).filter((t) => !!t)
3369
+ )
3370
+ ]);
3371
+ const mapObjects = (tasks2, fetchedObjects) => {
3372
+ const resultMap = {};
3373
+ let fetchedIndex = 0;
3374
+ for (const task of tasks2) {
3375
+ const key = task[Object.keys(task)[1]];
3376
+ if (key) {
3377
+ resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
3378
+ fetchedIndex++;
3379
+ }
3380
+ }
3381
+ return resultMap;
3382
+ };
3383
+ const balanceSheetMap = mapObjects(tasks, balanceSheetObjects);
3384
+ const collateralStatMap = mapObjects(tasks, collateralStatObjects);
3385
+ const borrowDynamicMap = mapObjects(tasks, borrowDynamicObjects);
3386
+ const interestModelMap = mapObjects(tasks, interestModelObjects);
3387
+ const riskModelMap = mapObjects(tasks, riskModelObjects);
3388
+ const borrowFeeMap = mapObjects(tasks, borrowFeeObjects);
3389
+ const supplyLimitMap = mapObjects(tasks, supplyLimitObjects);
3390
+ const borrowLimitMap = mapObjects(tasks, borrowLimitObjects);
3391
+ const isolatedAssetMap = mapObjects(tasks, isolatedAssetObjects);
3392
+ return poolCoinNames.reduce(
3393
+ (acc, name) => {
3394
+ acc[name] = {
3395
+ balanceSheet: balanceSheetMap[name],
3396
+ collateralStat: collateralStatMap[name],
3397
+ borrowDynamic: borrowDynamicMap[name],
3398
+ interestModel: interestModelMap[name],
3399
+ riskModel: riskModelMap[name],
3400
+ borrowFeeKey: borrowFeeMap[name],
3401
+ supplyLimitKey: supplyLimitMap[name],
3402
+ borrowLimitKey: borrowLimitMap[name],
3403
+ isolatedAssetKey: isolatedAssetMap[name]
3404
+ };
3405
+ return acc;
3406
+ },
3407
+ {}
3408
+ );
3409
+ };
3410
+ var getMarketPools = async (query, poolCoinNames, indexer = false, coinPrices) => {
2975
3411
  coinPrices = coinPrices ?? await query.utils.getCoinPrices();
2976
- const marketPools = {};
3412
+ const pools = {};
3413
+ const collaterals = {};
2977
3414
  if (indexer) {
2978
- const marketPoolsIndexer = await query.indexer.getMarketPools();
2979
- const updateMarketPool = (marketPool) => {
2980
- if (!poolCoinNames.includes(marketPool.coinName))
2981
- return;
2982
- marketPool.coinPrice = coinPrices[marketPool.coinName] ?? marketPool.coinPrice;
2983
- marketPool.coinWrappedType = query.utils.getCoinWrappedType(
2984
- marketPool.coinName
2985
- );
2986
- marketPools[marketPool.coinName] = marketPool;
3415
+ const marketIndexer = await query.indexer.getMarket();
3416
+ const updatePools = (item) => {
3417
+ item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
3418
+ item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
3419
+ pools[item.coinName] = item;
3420
+ };
3421
+ const updateCollaterals = (item) => {
3422
+ item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
3423
+ item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
3424
+ collaterals[item.coinName] = item;
3425
+ };
3426
+ Object.values(marketIndexer.pools).forEach(updatePools);
3427
+ Object.values(marketIndexer.collaterals).forEach(updateCollaterals);
3428
+ return {
3429
+ pools,
3430
+ collaterals
2987
3431
  };
2988
- Object.values(marketPoolsIndexer).forEach(updateMarketPool);
2989
- return marketPools;
2990
3432
  }
3433
+ const requiredObjects = await queryRequiredMarketObjects(
3434
+ query,
3435
+ poolCoinNames
3436
+ );
2991
3437
  await Promise.allSettled(
2992
3438
  poolCoinNames.map(async (poolCoinName) => {
2993
- const marketPool = await getMarketPool(
2994
- query,
2995
- poolCoinName,
2996
- indexer,
2997
- marketObjectResponse?.data,
2998
- coinPrices?.[poolCoinName]
2999
- );
3000
- if (marketPool) {
3001
- marketPools[poolCoinName] = marketPool;
3439
+ try {
3440
+ const result = await getMarketPool(
3441
+ query,
3442
+ poolCoinName,
3443
+ indexer,
3444
+ coinPrices?.[poolCoinName] ?? 0,
3445
+ requiredObjects[poolCoinName]
3446
+ );
3447
+ if (result?.marketPool) {
3448
+ pools[poolCoinName] = result?.marketPool;
3449
+ }
3450
+ if (result?.collateral) {
3451
+ collaterals[poolCoinName] = result.collateral;
3452
+ }
3453
+ } catch (e) {
3454
+ console.error(e);
3002
3455
  }
3003
3456
  })
3004
3457
  );
3005
- return marketPools;
3458
+ return {
3459
+ pools,
3460
+ collaterals
3461
+ };
3006
3462
  };
3007
- var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
3463
+ var parseMarketPoolObjects = ({
3464
+ balanceSheet,
3465
+ borrowDynamic,
3466
+ collateralStat,
3467
+ interestModel,
3468
+ riskModel,
3469
+ borrowFeeKey,
3470
+ supplyLimitKey,
3471
+ borrowLimitKey,
3472
+ isolatedAssetKey
3473
+ }) => {
3474
+ const _balanceSheet = parseObjectAs(balanceSheet);
3475
+ const _interestModel = parseObjectAs(interestModel);
3476
+ const _borrowDynamic = parseObjectAs(borrowDynamic);
3477
+ const _borrowFee = parseObjectAs(borrowFeeKey);
3478
+ const _supplyLimit = supplyLimitKey ? parseObjectAs(supplyLimitKey) : "0";
3479
+ const _borrowLimit = borrowLimitKey ? parseObjectAs(borrowLimitKey) : "0";
3480
+ const _riskModel = riskModel ? parseObjectAs(riskModel) : void 0;
3481
+ const _collateralStat = collateralStat ? parseObjectAs(collateralStat) : void 0;
3482
+ const parsedOriginMarketCollateral = _riskModel && _collateralStat ? {
3483
+ type: _interestModel.type.fields,
3484
+ isIsolated: !!isolatedAssetKey,
3485
+ collateralFactor: _riskModel.collateral_factor.fields,
3486
+ liquidationFactor: _riskModel.liquidation_factor.fields,
3487
+ liquidationPenalty: _riskModel.liquidation_penalty.fields,
3488
+ liquidationDiscount: _riskModel.liquidation_discount.fields,
3489
+ liquidationReserveFactor: _riskModel.liquidation_revenue_factor.fields,
3490
+ maxCollateralAmount: _riskModel.max_collateral_amount,
3491
+ totalCollateralAmount: _collateralStat.amount
3492
+ } : void 0;
3493
+ return {
3494
+ type: _interestModel.type.fields,
3495
+ maxBorrowRate: _interestModel.max_borrow_rate.fields,
3496
+ interestRate: _borrowDynamic.interest_rate.fields,
3497
+ interestRateScale: _borrowDynamic.interest_rate_scale,
3498
+ borrowIndex: _borrowDynamic.borrow_index,
3499
+ lastUpdated: _borrowDynamic.last_updated,
3500
+ cash: _balanceSheet.cash,
3501
+ debt: _balanceSheet.debt,
3502
+ marketCoinSupply: _balanceSheet.market_coin_supply,
3503
+ reserve: _balanceSheet.revenue,
3504
+ reserveFactor: _interestModel.revenue_factor.fields,
3505
+ borrowWeight: _interestModel.borrow_weight.fields,
3506
+ borrowFeeRate: _borrowFee,
3507
+ baseBorrowRatePerSec: _interestModel.base_borrow_rate_per_sec.fields,
3508
+ borrowRateOnHighKink: _interestModel.borrow_rate_on_high_kink.fields,
3509
+ borrowRateOnMidKink: _interestModel.borrow_rate_on_mid_kink.fields,
3510
+ highKink: _interestModel.high_kink.fields,
3511
+ midKink: _interestModel.mid_kink.fields,
3512
+ minBorrowAmount: _interestModel.min_borrow_amount,
3513
+ isIsolated: !!isolatedAssetKey,
3514
+ supplyLimit: _supplyLimit,
3515
+ borrowLimit: _borrowLimit,
3516
+ parsedOriginMarketCollateral
3517
+ };
3518
+ };
3519
+ var getMarketPool = async (query, poolCoinName, indexer = false, coinPrice, requiredObjects) => {
3008
3520
  coinPrice = coinPrice ?? (await query.utils.getCoinPrices())?.[poolCoinName];
3009
3521
  if (indexer) {
3010
3522
  const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
@@ -3015,135 +3527,70 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
3015
3527
  marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
3016
3528
  marketPoolIndexer.coinName
3017
3529
  );
3018
- return marketPoolIndexer;
3019
- }
3020
- const marketId = query.address.get("core.market");
3021
- marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
3022
- showContent: true
3023
- }))?.data;
3024
- if (!(marketObject && marketObject.content?.dataType === "moveObject"))
3025
- throw new Error(`Failed to fetch marketObject`);
3026
- const fields = marketObject.content.fields;
3027
- const coinType = query.utils.parseCoinType(poolCoinName);
3028
- const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
3029
- const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3030
- parentId: balanceSheetParentId,
3031
- name: {
3032
- type: "0x1::type_name::TypeName",
3033
- value: {
3034
- name: coinType.substring(2)
3035
- }
3036
- }
3037
- });
3038
- const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
3039
- if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
3040
- throw new Error(
3041
- `Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
3042
- );
3043
- const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
3044
- const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
3045
- const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3046
- parentId: borrowIndexParentId,
3047
- name: {
3048
- type: "0x1::type_name::TypeName",
3049
- value: {
3050
- name: coinType.substring(2)
3051
- }
3052
- }
3053
- });
3054
- const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
3055
- if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
3056
- throw new Error(
3057
- `Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
3058
- );
3059
- const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
3060
- const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
3061
- const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3062
- parentId: interestModelParentId,
3063
- name: {
3064
- type: "0x1::type_name::TypeName",
3065
- value: {
3066
- name: coinType.substring(2)
3067
- }
3530
+ let marketCollateralIndexer = void 0;
3531
+ if (SUPPORT_COLLATERALS.includes(poolCoinName)) {
3532
+ marketCollateralIndexer = await query.indexer.getMarketCollateral(
3533
+ poolCoinName
3534
+ );
3535
+ marketCollateralIndexer.coinPrice = coinPrice ?? marketCollateralIndexer.coinPrice;
3536
+ marketCollateralIndexer.coinWrappedType = query.utils.getCoinWrappedType(
3537
+ marketCollateralIndexer.coinName
3538
+ );
3068
3539
  }
3069
- });
3070
- const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse?.data;
3071
- if (!(interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content))
3072
- throw new Error(
3073
- `Failed to fetch interestModelDynamicFieldObject for ${poolCoinName}: ${interestModelDynamicFieldObject}`
3074
- );
3075
- const interestModel = interestModelDynamicFieldObject.content.fields.value.fields;
3076
- const getBorrowFee = async () => {
3077
- const borrowFeeDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3078
- parentId: marketId,
3079
- name: {
3080
- type: `${BORROW_FEE_PROTOCOL_ID}::market_dynamic_keys::BorrowFeeKey`,
3081
- value: {
3082
- type: {
3083
- name: coinType.substring(2)
3084
- }
3085
- }
3086
- }
3087
- });
3088
- const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
3089
- if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
3090
- return { value: "0" };
3091
- return borrowFeeDynamicFieldObject.content.fields.value.fields;
3092
- };
3093
- const parsedMarketPoolData = parseOriginMarketPoolData({
3094
- type: interestModel.type.fields,
3095
- maxBorrowRate: interestModel.max_borrow_rate.fields,
3096
- interestRate: borrowIndex.interest_rate.fields,
3097
- interestRateScale: borrowIndex.interest_rate_scale,
3098
- borrowIndex: borrowIndex.borrow_index,
3099
- lastUpdated: borrowIndex.last_updated,
3100
- cash: balanceSheet.cash,
3101
- debt: balanceSheet.debt,
3102
- marketCoinSupply: balanceSheet.market_coin_supply,
3103
- reserve: balanceSheet.revenue,
3104
- reserveFactor: interestModel.revenue_factor.fields,
3105
- borrowWeight: interestModel.borrow_weight.fields,
3106
- borrowFeeRate: await getBorrowFee(),
3107
- baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
3108
- borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
3109
- borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
3110
- highKink: interestModel.high_kink.fields,
3111
- midKink: interestModel.mid_kink.fields,
3112
- minBorrowAmount: interestModel.min_borrow_amount
3113
- });
3540
+ return {
3541
+ marketPool: marketPoolIndexer,
3542
+ collateral: marketCollateralIndexer
3543
+ };
3544
+ }
3545
+ requiredObjects ?? (requiredObjects = (await queryRequiredMarketObjects(query, [poolCoinName]))[poolCoinName]);
3546
+ const parsedMarketPoolObjects = parseMarketPoolObjects(requiredObjects);
3547
+ const parsedMarketPoolData = parseOriginMarketPoolData(
3548
+ parsedMarketPoolObjects
3549
+ );
3114
3550
  const calculatedMarketPoolData = calculateMarketPoolData(
3115
3551
  query.utils,
3116
3552
  parsedMarketPoolData
3117
3553
  );
3118
- const coinDecimal = query.utils.getCoinDecimal(poolCoinName);
3119
- const maxSupplyCoin = BigNumber3(
3120
- await getSupplyLimit(query.utils, poolCoinName) ?? "0"
3121
- ).shiftedBy(-coinDecimal).toNumber();
3122
- const maxBorrowCoin = BigNumber3(
3123
- await getBorrowLimit(query.utils, poolCoinName) ?? "0"
3124
- ).shiftedBy(-coinDecimal).toNumber();
3125
- return {
3554
+ const parsedMarketCollateralData = parsedMarketPoolObjects.parsedOriginMarketCollateral ? parseOriginMarketCollateralData(
3555
+ parsedMarketPoolObjects.parsedOriginMarketCollateral
3556
+ ) : void 0;
3557
+ const basePoolData = () => ({
3126
3558
  coinName: poolCoinName,
3127
3559
  symbol: query.utils.parseSymbol(poolCoinName),
3128
- coinType: query.utils.parseCoinType(poolCoinName),
3129
3560
  marketCoinType: query.utils.parseMarketCoinType(poolCoinName),
3130
- sCoinType: query.utils.parseSCoinType(
3131
- query.utils.parseMarketCoinName(poolCoinName)
3132
- ),
3133
- coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3134
- coinDecimal,
3135
- coinPrice: coinPrice ?? 0,
3136
- highKink: parsedMarketPoolData.highKink,
3137
- midKink: parsedMarketPoolData.midKink,
3138
- reserveFactor: parsedMarketPoolData.reserveFactor,
3139
- borrowWeight: parsedMarketPoolData.borrowWeight,
3140
- borrowFee: parsedMarketPoolData.borrowFee,
3141
- marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
3142
- minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
3143
- maxSupplyCoin,
3144
- maxBorrowCoin,
3145
- isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3146
- ...calculatedMarketPoolData
3561
+ coinType: query.utils.parseCoinType(poolCoinName)
3562
+ });
3563
+ return {
3564
+ marketPool: {
3565
+ ...basePoolData(),
3566
+ sCoinType: query.utils.parseSCoinType(
3567
+ query.utils.parseMarketCoinName(poolCoinName)
3568
+ ),
3569
+ coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3570
+ coinPrice: coinPrice ?? 0,
3571
+ highKink: parsedMarketPoolData.highKink,
3572
+ midKink: parsedMarketPoolData.midKink,
3573
+ reserveFactor: parsedMarketPoolData.reserveFactor,
3574
+ borrowWeight: parsedMarketPoolData.borrowWeight,
3575
+ borrowFee: parsedMarketPoolData.borrowFee,
3576
+ marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
3577
+ minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
3578
+ ...calculatedMarketPoolData
3579
+ },
3580
+ collateral: parsedMarketCollateralData ? {
3581
+ ...basePoolData(),
3582
+ coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
3583
+ coinPrice,
3584
+ collateralFactor: parsedMarketCollateralData.collateralFactor,
3585
+ liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3586
+ liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3587
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
3588
+ liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3589
+ ...calculateMarketCollateralData(
3590
+ query.utils,
3591
+ parsedMarketCollateralData
3592
+ )
3593
+ } : void 0
3147
3594
  };
3148
3595
  };
3149
3596
  var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
@@ -3238,10 +3685,11 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
3238
3685
  collateralFactor: riskModel.collateral_factor.fields,
3239
3686
  liquidationFactor: riskModel.liquidation_factor.fields,
3240
3687
  liquidationDiscount: riskModel.liquidation_discount.fields,
3241
- liquidationPanelty: riskModel.liquidation_penalty.fields,
3688
+ liquidationPenalty: riskModel.liquidation_penalty.fields,
3242
3689
  liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
3243
3690
  maxCollateralAmount: riskModel.max_collateral_amount,
3244
- totalCollateralAmount: collateralStat.amount
3691
+ totalCollateralAmount: collateralStat.amount,
3692
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
3245
3693
  });
3246
3694
  const calculatedMarketCollateralData = calculateMarketCollateralData(
3247
3695
  query.utils,
@@ -3253,14 +3701,12 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
3253
3701
  coinType: query.utils.parseCoinType(collateralCoinName),
3254
3702
  marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
3255
3703
  coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
3256
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
3257
3704
  coinPrice: coinPrice ?? 0,
3258
3705
  collateralFactor: parsedMarketCollateralData.collateralFactor,
3259
3706
  liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3260
3707
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3261
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3708
+ liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
3262
3709
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3263
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
3264
3710
  ...calculatedMarketCollateralData
3265
3711
  };
3266
3712
  };
@@ -3296,14 +3742,26 @@ var getObligations = async ({
3296
3742
  } while (hasNextPage);
3297
3743
  const keyObjects = keyObjectsResponse.filter((ref) => !!ref.data);
3298
3744
  const obligations = [];
3745
+ const obligationsObjects = await queryMultipleObjects(
3746
+ address.cache,
3747
+ keyObjects.map((ref) => ref.data?.content).filter(
3748
+ (content) => content?.dataType === "moveObject"
3749
+ ).map((content) => content.fields.ownership.fields.of),
3750
+ {
3751
+ showContent: true
3752
+ }
3753
+ );
3299
3754
  await Promise.allSettled(
3300
- keyObjects.map(async ({ data }) => {
3755
+ keyObjects.map(async ({ data }, idx) => {
3301
3756
  const keyId = data?.objectId;
3302
3757
  const content = data?.content;
3303
3758
  if (keyId && content && "fields" in content) {
3304
3759
  const fields = content.fields;
3305
3760
  const obligationId = String(fields.ownership.fields.of);
3306
- const locked = await getObligationLocked(address.cache, obligationId);
3761
+ const locked = await getObligationLocked(
3762
+ address.cache,
3763
+ obligationsObjects[idx]
3764
+ );
3307
3765
  obligations.push({ id: obligationId, keyId, locked });
3308
3766
  }
3309
3767
  })
@@ -3311,14 +3769,12 @@ var getObligations = async ({
3311
3769
  return obligations;
3312
3770
  };
3313
3771
  var getObligationLocked = async (cache, obligation) => {
3314
- const obligationObjectResponse = typeof obligation === "string" ? (await cache.queryGetObject(obligation, {
3772
+ const obligationObjectData = typeof obligation === "string" ? (await cache.queryGetObject(obligation, {
3315
3773
  showContent: true
3316
3774
  }))?.data : obligation;
3317
3775
  let obligationLocked = false;
3318
- if (obligationObjectResponse && obligationObjectResponse?.content?.dataType === "moveObject" && "lock_key" in obligationObjectResponse.content.fields) {
3319
- obligationLocked = Boolean(
3320
- obligationObjectResponse.content.fields.lock_key
3321
- );
3776
+ if (obligationObjectData && obligationObjectData?.content?.dataType === "moveObject" && "lock_key" in obligationObjectData.content.fields) {
3777
+ obligationLocked = Boolean(obligationObjectData.content.fields.lock_key);
3322
3778
  }
3323
3779
  return obligationLocked;
3324
3780
  };
@@ -3501,10 +3957,10 @@ var getLendings = async (query, poolCoinNames = [...SUPPORT_POOLS], ownerAddress
3501
3957
  (marketCoinName) => SUPPORT_SPOOLS.includes(marketCoinName)
3502
3958
  );
3503
3959
  const coinPrices = await query.utils.getCoinPrices();
3504
- const marketPools = await query.getMarketPools(poolCoinNames, {
3960
+ const marketPools = (await query.getMarketPools(poolCoinNames, {
3505
3961
  indexer,
3506
3962
  coinPrices
3507
- });
3963
+ })).pools;
3508
3964
  const spools = await query.getSpools(stakeMarketCoinNames, {
3509
3965
  indexer,
3510
3966
  marketPools,
@@ -3672,8 +4128,10 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
3672
4128
  return lending;
3673
4129
  };
3674
4130
  var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
3675
- const coinPrices = await query.utils.getCoinPrices();
3676
- const market = await query.queryMarket({ indexer, coinPrices });
4131
+ const market = await query.queryMarket({ indexer });
4132
+ const coinPrices = await query.getAllCoinPrices({
4133
+ marketPools: market.pools
4134
+ });
3677
4135
  const [coinAmounts, obligations] = await Promise.all([
3678
4136
  query.getCoinAmounts(void 0, ownerAddress),
3679
4137
  query.getObligations(ownerAddress)
@@ -3695,17 +4153,21 @@ var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
3695
4153
  return obligationAccounts;
3696
4154
  };
3697
4155
  var getObligationAccount = async (query, obligationId, ownerAddress, indexer = false, market, coinPrices, coinAmounts) => {
4156
+ const coinNames = Array.from(
4157
+ /* @__PURE__ */ new Set([...SUPPORT_POOLS, ...SUPPORT_COLLATERALS])
4158
+ );
3698
4159
  const collateralAssetCoinNames = [
3699
4160
  ...SUPPORT_COLLATERALS
3700
4161
  ];
3701
- market = market ?? await query.queryMarket({ indexer });
4162
+ market = market ?? await query.getMarketPools(void 0, { indexer });
3702
4163
  coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools: market.pools });
3703
- coinAmounts = coinAmounts || await query.getCoinAmounts(collateralAssetCoinNames, ownerAddress);
4164
+ coinAmounts = coinAmounts ?? await query.getCoinAmounts(coinNames, ownerAddress);
3704
4165
  const [obligationQuery, borrowIncentivePools, borrowIncentiveAccounts] = await Promise.all([
3705
4166
  query.queryObligation(obligationId),
3706
4167
  query.getBorrowIncentivePools(void 0, {
3707
4168
  coinPrices,
3708
- indexer
4169
+ indexer,
4170
+ marketPools: market.pools
3709
4171
  }),
3710
4172
  query.getBorrowIncentiveAccounts(obligationId)
3711
4173
  ]);
@@ -3843,7 +4305,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
3843
4305
  const rewards = [];
3844
4306
  Object.entries(borrowIncentiveAccount.pointList).forEach(
3845
4307
  ([key, accountPoint]) => {
3846
- const poolPoint = borrowIncentivePool.points[key];
4308
+ const poolPoint = borrowIncentivePool.points[query.utils.parseSCoinTypeNameToMarketCoinName(key)];
3847
4309
  if (accountPoint && poolPoint) {
3848
4310
  let availableClaimAmount = BigNumber5(0);
3849
4311
  let availableClaimCoin = BigNumber5(0);
@@ -3988,7 +4450,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
3988
4450
  return obligationAccount;
3989
4451
  };
3990
4452
  var getTotalValueLocked = async (query, indexer = false) => {
3991
- const market = await query.queryMarket({ indexer });
4453
+ const market = await query.getMarketPools(void 0, { indexer });
3992
4454
  let supplyValue = BigNumber5(0);
3993
4455
  let borrowValue = BigNumber5(0);
3994
4456
  if (indexer) {
@@ -4109,7 +4571,7 @@ var getPythPrices = async ({
4109
4571
  };
4110
4572
  var getAllCoinPrices = async (query, marketPools, coinPrices) => {
4111
4573
  coinPrices = coinPrices ?? await query.utils.getCoinPrices();
4112
- marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices });
4574
+ marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices })).pools;
4113
4575
  if (!marketPools) {
4114
4576
  throw new Error(`Failed to fetch market pool for getAllCoinPrices`);
4115
4577
  }
@@ -4235,12 +4697,80 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
4235
4697
 
4236
4698
  // src/queries/spoolQuery.ts
4237
4699
  import { normalizeStructTag as normalizeStructTag5 } from "@mysten/sui/utils";
4700
+ var queryRequiredSpoolObjects = async (query, stakePoolCoinNames) => {
4701
+ const tasks = stakePoolCoinNames.map((t, idx) => ({
4702
+ poolCoinName: stakePoolCoinNames[idx],
4703
+ spool: POOL_ADDRESSES[t]?.spool,
4704
+ spoolReward: POOL_ADDRESSES[t]?.spoolReward,
4705
+ sCoinTreasury: POOL_ADDRESSES[t]?.sCoinTreasury
4706
+ }));
4707
+ const [spoolObjects, spoolRewardObjects, sCoinTreasuryObjects] = await Promise.all([
4708
+ queryMultipleObjects(
4709
+ query.cache,
4710
+ tasks.map((task) => task.spool).filter((t) => !!t)
4711
+ ),
4712
+ queryMultipleObjects(
4713
+ query.cache,
4714
+ tasks.map((task) => task.spoolReward).filter((t) => !!t)
4715
+ ),
4716
+ queryMultipleObjects(
4717
+ query.cache,
4718
+ tasks.map((task) => task.sCoinTreasury).filter((t) => !!t)
4719
+ )
4720
+ ]);
4721
+ const mapObjects = (tasks2, fetchedObjects) => {
4722
+ const resultMap = {};
4723
+ let fetchedIndex = 0;
4724
+ for (const task of tasks2) {
4725
+ const key = task[Object.keys(task)[1]];
4726
+ if (key) {
4727
+ resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
4728
+ fetchedIndex++;
4729
+ }
4730
+ }
4731
+ return resultMap;
4732
+ };
4733
+ const spoolMap = mapObjects(tasks, spoolObjects);
4734
+ const spoolRewardMap = mapObjects(tasks, spoolRewardObjects);
4735
+ const sCoinTreasuryMap = mapObjects(tasks, sCoinTreasuryObjects);
4736
+ return stakePoolCoinNames.reduce(
4737
+ (acc, name) => {
4738
+ acc[name] = {
4739
+ spool: spoolMap[name],
4740
+ spoolReward: spoolRewardMap[name],
4741
+ sCoinTreasury: sCoinTreasuryMap[name]
4742
+ };
4743
+ return acc;
4744
+ },
4745
+ {}
4746
+ );
4747
+ };
4748
+ var parseSpoolObjects = ({
4749
+ spool,
4750
+ spoolReward
4751
+ }) => {
4752
+ const _spool = parseObjectAs(spool);
4753
+ const _spoolReward = parseObjectAs(spoolReward);
4754
+ return {
4755
+ stakeType: _spool.stake_type,
4756
+ maxDistributedPoint: _spool.max_distributed_point,
4757
+ distributedPoint: _spool.distributed_point,
4758
+ distributedPointPerPeriod: _spool.distributed_point_per_period,
4759
+ pointDistributionTime: _spool.point_distribution_time,
4760
+ maxStake: _spool.max_stakes,
4761
+ stakes: _spool.stakes,
4762
+ index: _spool.index,
4763
+ createdAt: _spool.created_at,
4764
+ lastUpdate: _spool.last_update,
4765
+ ..._spoolReward
4766
+ };
4767
+ };
4238
4768
  var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexer = false, marketPools, coinPrices) => {
4239
4769
  const stakeCoinNames = stakeMarketCoinNames.map(
4240
4770
  (stakeMarketCoinName) => query.utils.parseCoinName(stakeMarketCoinName)
4241
4771
  );
4242
- coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
4243
- marketPools = marketPools ?? await query.getMarketPools(stakeCoinNames, { indexer });
4772
+ marketPools = marketPools ?? (await query.getMarketPools(stakeCoinNames, { indexer })).pools;
4773
+ coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools }) ?? {};
4244
4774
  if (!marketPools)
4245
4775
  throw new Error(`Fail to fetch marketPools for ${stakeCoinNames}`);
4246
4776
  const spools = {};
@@ -4255,126 +4785,93 @@ var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexe
4255
4785
  const rewardCoinName = query.utils.getSpoolRewardCoinName(
4256
4786
  spool.marketCoinName
4257
4787
  );
4258
- const marketPool = marketPools[coinName];
4259
4788
  spool.coinPrice = coinPrices[coinName] ?? spool.coinPrice;
4260
- spool.marketCoinPrice = coinPrices[coinName] ? (coinPrices[coinName] ?? 0) * (marketPool ? marketPool.conversionRate : 0) : spool.marketCoinPrice;
4789
+ spool.marketCoinPrice = coinPrices[spool.marketCoinName] ?? spool.marketCoinPrice;
4261
4790
  spool.rewardCoinPrice = coinPrices[rewardCoinName] ?? spool.rewardCoinPrice;
4262
4791
  spools[spool.marketCoinName] = spool;
4263
4792
  };
4264
4793
  Object.values(spoolsIndexer).forEach(updateSpools);
4265
4794
  return spools;
4266
4795
  }
4267
- for (const stakeMarketCoinName of stakeMarketCoinNames) {
4268
- const stakeCoinName = query.utils.parseCoinName(stakeMarketCoinName);
4269
- const spool = await getSpool(
4270
- query,
4271
- stakeMarketCoinName,
4272
- indexer,
4273
- marketPools[stakeCoinName],
4274
- coinPrices
4275
- );
4276
- if (spool) {
4277
- spools[stakeMarketCoinName] = spool;
4278
- }
4279
- }
4796
+ const requiredObjects = await queryRequiredSpoolObjects(
4797
+ query,
4798
+ stakeCoinNames
4799
+ );
4800
+ await Promise.allSettled(
4801
+ stakeMarketCoinNames.map(async (stakeMarketCoinName, idx) => {
4802
+ try {
4803
+ const stakeCoinName = stakeCoinNames[idx];
4804
+ const spool = await getSpool(
4805
+ query,
4806
+ stakeMarketCoinName,
4807
+ indexer,
4808
+ coinPrices,
4809
+ requiredObjects[stakeCoinName]
4810
+ );
4811
+ if (spool) {
4812
+ spools[stakeMarketCoinName] = spool;
4813
+ }
4814
+ } catch (e) {
4815
+ console.error(e);
4816
+ }
4817
+ })
4818
+ );
4280
4819
  return spools;
4281
4820
  };
4282
- var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPrices) => {
4821
+ var getSpool = async (query, marketCoinName, indexer = false, coinPrices, requiredObjects) => {
4283
4822
  const coinName = query.utils.parseCoinName(marketCoinName);
4284
- marketPool = marketPool || await query.getMarketPool(coinName, { indexer });
4285
- if (!marketPool) {
4286
- throw new Error(`Failed to fetch marketPool for ${marketCoinName}`);
4287
- }
4288
- const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
4289
- const rewardPoolId = query.address.get(
4290
- `spool.pools.${marketCoinName}.rewardPoolId`
4291
- );
4292
- let spool = void 0;
4293
- coinPrices = coinPrices || await query.utils.getCoinPrices();
4823
+ coinPrices = coinPrices || await query.getAllCoinPrices();
4294
4824
  if (indexer) {
4295
4825
  const spoolIndexer = await query.indexer.getSpool(marketCoinName);
4296
4826
  const coinName2 = query.utils.parseCoinName(marketCoinName);
4297
4827
  const rewardCoinName2 = query.utils.getSpoolRewardCoinName(marketCoinName);
4298
- spoolIndexer.coinPrice = coinPrices?.[coinName2] || spoolIndexer.coinPrice;
4299
- spoolIndexer.marketCoinPrice = (coinPrices?.[coinName2] ?? 0) * (marketPool ? marketPool.conversionRate : 0) || spoolIndexer.marketCoinPrice;
4300
- spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2] || spoolIndexer.rewardCoinPrice;
4828
+ spoolIndexer.coinPrice = coinPrices?.[coinName2] ?? spoolIndexer.coinPrice;
4829
+ spoolIndexer.marketCoinPrice = coinPrices?.[marketCoinName] ?? spoolIndexer.marketCoinPrice;
4830
+ spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2] ?? spoolIndexer.rewardCoinPrice;
4301
4831
  return spoolIndexer;
4302
4832
  }
4303
- const spoolObjectResponse = await query.cache.queryGetObjects(
4304
- [poolId, rewardPoolId],
4305
- {
4306
- showContent: true
4307
- }
4308
- );
4309
- if (!(spoolObjectResponse[0] && spoolObjectResponse[1])) {
4310
- throw new Error("Fail to fetch spoolObjectResponse!");
4311
- }
4833
+ requiredObjects ?? (requiredObjects = (await queryRequiredSpoolObjects(query, [coinName]))[coinName]);
4312
4834
  const rewardCoinName = query.utils.getSpoolRewardCoinName(marketCoinName);
4313
4835
  coinPrices = coinPrices || await query.utils.getCoinPrices();
4314
- const spoolObject = spoolObjectResponse[0];
4315
- const rewardPoolObject = spoolObjectResponse[1];
4316
- if (spoolObject.content && "fields" in spoolObject.content) {
4317
- const spoolFields = spoolObject.content.fields;
4318
- const parsedSpoolData = parseOriginSpoolData({
4319
- stakeType: spoolFields.stake_type,
4320
- maxDistributedPoint: spoolFields.max_distributed_point,
4321
- distributedPoint: spoolFields.distributed_point,
4322
- distributedPointPerPeriod: spoolFields.distributed_point_per_period,
4323
- pointDistributionTime: spoolFields.point_distribution_time,
4324
- maxStake: spoolFields.max_stakes,
4325
- stakes: spoolFields.stakes,
4326
- index: spoolFields.index,
4327
- createdAt: spoolFields.created_at,
4328
- lastUpdate: spoolFields.last_update
4329
- });
4330
- const marketCoinPrice = (coinPrices?.[coinName] ?? 0) * marketPool.conversionRate;
4331
- const marketCoinDecimal = query.utils.getCoinDecimal(marketCoinName);
4332
- const calculatedSpoolData = calculateSpoolData(
4333
- parsedSpoolData,
4334
- marketCoinPrice,
4335
- marketCoinDecimal
4336
- );
4337
- if (rewardPoolObject.content && "fields" in rewardPoolObject.content) {
4338
- const rewardPoolFields = rewardPoolObject.content.fields;
4339
- const parsedSpoolRewardPoolData = parseOriginSpoolRewardPoolData({
4340
- claimed_rewards: rewardPoolFields.claimed_rewards,
4341
- exchange_rate_numerator: rewardPoolFields.exchange_rate_numerator,
4342
- exchange_rate_denominator: rewardPoolFields.exchange_rate_denominator,
4343
- rewards: rewardPoolFields.rewards,
4344
- spool_id: rewardPoolFields.spool_id
4345
- });
4346
- const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
4347
- const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
4348
- const calculatedRewardPoolData = calculateSpoolRewardPoolData(
4349
- parsedSpoolData,
4350
- parsedSpoolRewardPoolData,
4351
- calculatedSpoolData,
4352
- rewardCoinPrice,
4353
- rewardCoinDecimal
4354
- );
4355
- spool = {
4356
- marketCoinName,
4357
- symbol: query.utils.parseSymbol(marketCoinName),
4358
- coinType: query.utils.parseCoinType(coinName),
4359
- marketCoinType: query.utils.parseMarketCoinType(coinName),
4360
- rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
4361
- sCoinType: marketPool.sCoinType,
4362
- coinDecimal: query.utils.getCoinDecimal(coinName),
4363
- rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
4364
- coinPrice: coinPrices?.[coinName] ?? 0,
4365
- marketCoinPrice,
4366
- rewardCoinPrice,
4367
- maxPoint: parsedSpoolData.maxPoint,
4368
- distributedPoint: parsedSpoolData.distributedPoint,
4369
- maxStake: parsedSpoolData.maxStake,
4370
- ...calculatedSpoolData,
4371
- exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
4372
- exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
4373
- ...calculatedRewardPoolData
4374
- };
4375
- }
4376
- }
4377
- return spool;
4836
+ const parsedSpoolObjects = parseSpoolObjects(requiredObjects);
4837
+ const parsedSpoolData = parseOriginSpoolData(parsedSpoolObjects);
4838
+ const marketCoinPrice = coinPrices?.[marketCoinName] ?? 0;
4839
+ const marketCoinDecimal = query.utils.getCoinDecimal(marketCoinName);
4840
+ const calculatedSpoolData = calculateSpoolData(
4841
+ parsedSpoolData,
4842
+ marketCoinPrice,
4843
+ marketCoinDecimal
4844
+ );
4845
+ const parsedSpoolRewardPoolData = parseOriginSpoolRewardPoolData(parsedSpoolObjects);
4846
+ const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
4847
+ const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
4848
+ const calculatedRewardPoolData = calculateSpoolRewardPoolData(
4849
+ parsedSpoolData,
4850
+ parsedSpoolRewardPoolData,
4851
+ calculatedSpoolData,
4852
+ rewardCoinPrice,
4853
+ rewardCoinDecimal
4854
+ );
4855
+ return {
4856
+ marketCoinName,
4857
+ symbol: query.utils.parseSymbol(marketCoinName),
4858
+ coinType: query.utils.parseCoinType(coinName),
4859
+ marketCoinType: query.utils.parseMarketCoinType(coinName),
4860
+ rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
4861
+ sCoinType: query.utils.parseSCoinType(marketCoinName),
4862
+ coinDecimal: query.utils.getCoinDecimal(coinName),
4863
+ rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
4864
+ coinPrice: coinPrices?.[coinName] ?? 0,
4865
+ marketCoinPrice,
4866
+ rewardCoinPrice,
4867
+ maxPoint: parsedSpoolData.maxPoint,
4868
+ distributedPoint: parsedSpoolData.distributedPoint,
4869
+ maxStake: parsedSpoolData.maxStake,
4870
+ ...calculatedSpoolData,
4871
+ exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
4872
+ exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
4873
+ ...calculatedRewardPoolData
4874
+ };
4378
4875
  };
4379
4876
  var getStakeAccounts = async ({
4380
4877
  utils
@@ -4724,6 +5221,105 @@ var getVeScaTreasuryInfo = async (utils) => {
4724
5221
  };
4725
5222
  };
4726
5223
 
5224
+ // src/queries/poolAddressesQuery.ts
5225
+ var getAllAddresses = async (query) => {
5226
+ const results = {};
5227
+ const marketId = query.address.get("core.market");
5228
+ const marketObject = (await query.cache.queryGetObject(marketId, {
5229
+ showContent: true
5230
+ }))?.data;
5231
+ if (!(marketObject && marketObject.content?.dataType === "moveObject"))
5232
+ throw new Error(`Failed to fetch marketObject`);
5233
+ const fields = marketObject.content.fields;
5234
+ const coinTypesPairs = SUPPORT_POOLS.reduce(
5235
+ (acc, pool) => {
5236
+ acc.push([pool, query.utils.parseCoinType(pool).substring(2)]);
5237
+ return acc;
5238
+ },
5239
+ []
5240
+ );
5241
+ const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
5242
+ const collateralStatsParentId = fields.collateral_stats.fields.table.fields.id.id;
5243
+ const borrowDynamicsParentid = fields.borrow_dynamics.fields.table.fields.id.id;
5244
+ const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
5245
+ const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
5246
+ const ADDRESS_TYPE = `0x1::type_name::TypeName`;
5247
+ const BORROW_FEE_TYPE = `0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da::market_dynamic_keys::BorrowFeeKey`;
5248
+ const SUPPLY_LIMIT_TYPE = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
5249
+ const BORROW_LIMIT_TYPE = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
5250
+ const ISOLATED_ASSET_KEY = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
5251
+ const fetchDynamicObject = async (parentId, type, value) => {
5252
+ try {
5253
+ return (await query.cache.queryGetDynamicFieldObject({
5254
+ parentId,
5255
+ name: {
5256
+ type,
5257
+ value
5258
+ }
5259
+ }))?.data?.objectId;
5260
+ } catch (_e) {
5261
+ return void 0;
5262
+ }
5263
+ };
5264
+ await Promise.all(
5265
+ coinTypesPairs.map(async ([coinName, coinType]) => {
5266
+ const addresses = await Promise.all([
5267
+ fetchDynamicObject(balanceSheetParentId, ADDRESS_TYPE, {
5268
+ name: coinType
5269
+ }),
5270
+ fetchDynamicObject(collateralStatsParentId, ADDRESS_TYPE, {
5271
+ name: coinType
5272
+ }),
5273
+ fetchDynamicObject(borrowDynamicsParentid, ADDRESS_TYPE, {
5274
+ name: coinType
5275
+ }),
5276
+ fetchDynamicObject(interestModelParentId, ADDRESS_TYPE, {
5277
+ name: coinType
5278
+ }),
5279
+ fetchDynamicObject(riskModelParentId, ADDRESS_TYPE, {
5280
+ name: coinType
5281
+ }),
5282
+ fetchDynamicObject(marketId, BORROW_FEE_TYPE, coinType),
5283
+ fetchDynamicObject(marketId, SUPPLY_LIMIT_TYPE, coinType),
5284
+ fetchDynamicObject(marketId, BORROW_LIMIT_TYPE, coinType),
5285
+ fetchDynamicObject(marketId, ISOLATED_ASSET_KEY, coinType)
5286
+ ]);
5287
+ const spool = query.address.get(
5288
+ // @ts-ignore
5289
+ `spool.pools.s${coinName}.id`
5290
+ );
5291
+ const rewardPool = query.address.get(
5292
+ // @ts-ignore
5293
+ `spool.pools.s${coinName}.rewardPoolId`
5294
+ );
5295
+ const sCoinTreasury = query.address.get(
5296
+ // @ts-ignore
5297
+ `scoin.coins.s${coinName}.treasury`
5298
+ );
5299
+ const coinDecimalId = query.address.get(
5300
+ `core.coins.${coinName}.metaData`
5301
+ );
5302
+ results[coinName] = {
5303
+ lendingPoolAddress: addresses[0],
5304
+ collateralPoolAddress: addresses[1],
5305
+ borrowDynamic: addresses[2],
5306
+ interestModel: addresses[3],
5307
+ riskModel: addresses[4],
5308
+ borrowFeeKey: addresses[5],
5309
+ supplyLimitKey: addresses[6],
5310
+ borrowLimitKey: addresses[7],
5311
+ isolatedAssetKey: addresses[8],
5312
+ spool,
5313
+ spoolReward: rewardPool,
5314
+ sCoinTreasury,
5315
+ coinDecimalId
5316
+ };
5317
+ await new Promise((resolve) => setTimeout(resolve, 200));
5318
+ })
5319
+ );
5320
+ return results;
5321
+ };
5322
+
4727
5323
  // src/models/suiKit.ts
4728
5324
  import { SuiKit as SuiKit2 } from "@scallop-io/sui-kit";
4729
5325
  var newSuiKit = (params) => {
@@ -4875,13 +5471,14 @@ var ScallopUtils = class {
4875
5471
  }
4876
5472
  }
4877
5473
  /**
4878
- * Convert sCoin name to coin name.
5474
+ * Convert sCoin name to market coin name.
4879
5475
  * This function will parse new sCoin name `scallop_...` to its old market coin name which is shorter
4880
5476
  * e.g: `scallop_sui -> ssui
5477
+ * if no `scallop_...` is encountered, return coinName
4881
5478
  * @return sCoin name
4882
5479
  */
4883
- parseCoinNameFromSCoinName(coinName) {
4884
- return sCoinRawNameToName[coinName];
5480
+ parseSCoinTypeNameToMarketCoinName(coinName) {
5481
+ return sCoinRawNameToName[coinName] ?? coinName;
4885
5482
  }
4886
5483
  /**
4887
5484
  * Convert sCoin name into sCoin type
@@ -4930,6 +5527,9 @@ var ScallopUtils = class {
4930
5527
  }
4931
5528
  parseCoinNameFromType(coinType) {
4932
5529
  coinType = normalizeStructTag6(coinType);
5530
+ if (sCoinTypeToName[coinType]) {
5531
+ return sCoinTypeToName[coinType];
5532
+ }
4933
5533
  const coinTypeRegex = new RegExp(`((0x[^:]+::[^:]+::[^<>]+))(?![^<>]*<)`);
4934
5534
  const coinTypeMatch = coinType.match(coinTypeRegex);
4935
5535
  const isMarketCoinType = coinType.includes("reserve::MarketCoin");
@@ -5099,7 +5699,7 @@ var ScallopUtils = class {
5099
5699
  );
5100
5700
  const priceIds = priceIdPairs.map(([_2, priceId]) => priceId);
5101
5701
  const pythConnection = new SuiPriceServiceConnection(endpoint, {
5102
- timeout: 2e3
5702
+ timeout: 4e3
5103
5703
  });
5104
5704
  try {
5105
5705
  const feeds = await this.cache.queryClient.fetchQuery({
@@ -5391,32 +5991,41 @@ var generateCoreNormalMethod = ({
5391
5991
  const referralPkgId = builder.address.get("referral.id");
5392
5992
  const referralWitnessType = `${referralPkgId}::scallop_referral_program::REFERRAL_WITNESS`;
5393
5993
  return {
5394
- openObligation: () => {
5395
- const [obligation, obligationKey, obligationHotPotato] = txBlock.moveCall(
5994
+ openObligation: async () => {
5995
+ const [obligation, obligationKey, obligationHotPotato] = await builder.moveCall(
5996
+ txBlock,
5396
5997
  `${coreIds.protocolPkg}::open_obligation::open_obligation`,
5397
5998
  [coreIds.version]
5398
5999
  );
5399
6000
  return [obligation, obligationKey, obligationHotPotato];
5400
6001
  },
5401
- returnObligation: (obligation, obligationHotPotato) => txBlock.moveCall(
5402
- `${coreIds.protocolPkg}::open_obligation::return_obligation`,
5403
- [coreIds.version, obligation, obligationHotPotato]
5404
- ),
5405
- openObligationEntry: () => txBlock.moveCall(
5406
- `${coreIds.protocolPkg}::open_obligation::open_obligation_entry`,
5407
- [coreIds.version]
5408
- ),
5409
- addCollateral: (obligation, coin, collateralCoinName) => {
6002
+ returnObligation: async (obligation, obligationHotPotato) => {
6003
+ await builder.moveCall(
6004
+ txBlock,
6005
+ `${coreIds.protocolPkg}::open_obligation::return_obligation`,
6006
+ [coreIds.version, obligation, obligationHotPotato]
6007
+ );
6008
+ },
6009
+ openObligationEntry: async () => {
6010
+ await builder.moveCall(
6011
+ txBlock,
6012
+ `${coreIds.protocolPkg}::open_obligation::open_obligation_entry`,
6013
+ [coreIds.version]
6014
+ );
6015
+ },
6016
+ addCollateral: async (obligation, coin, collateralCoinName) => {
5410
6017
  const coinType = builder.utils.parseCoinType(collateralCoinName);
5411
- return txBlock.moveCall(
6018
+ await builder.moveCall(
6019
+ txBlock,
5412
6020
  `${coreIds.protocolPkg}::deposit_collateral::deposit_collateral`,
5413
6021
  [coreIds.version, obligation, coreIds.market, coin],
5414
6022
  [coinType]
5415
6023
  );
5416
6024
  },
5417
- takeCollateral: (obligation, obligationKey, amount, collateralCoinName) => {
6025
+ takeCollateral: async (obligation, obligationKey, amount, collateralCoinName) => {
5418
6026
  const coinType = builder.utils.parseCoinType(collateralCoinName);
5419
- return txBlock.moveCall(
6027
+ return await builder.moveCall(
6028
+ txBlock,
5420
6029
  `${coreIds.protocolPkg}::withdraw_collateral::withdraw_collateral`,
5421
6030
  [
5422
6031
  coreIds.version,
@@ -5431,41 +6040,46 @@ var generateCoreNormalMethod = ({
5431
6040
  [coinType]
5432
6041
  );
5433
6042
  },
5434
- deposit: (coin, poolCoinName) => {
6043
+ deposit: async (coin, poolCoinName) => {
5435
6044
  const coinType = builder.utils.parseCoinType(poolCoinName);
5436
- return txBlock.moveCall(
6045
+ return await builder.moveCall(
6046
+ txBlock,
5437
6047
  `${coreIds.protocolPkg}::mint::mint`,
5438
6048
  [coreIds.version, coreIds.market, coin, SUI_CLOCK_OBJECT_ID3],
5439
6049
  [coinType]
5440
6050
  );
5441
6051
  },
5442
- depositEntry: (coin, poolCoinName) => {
6052
+ depositEntry: async (coin, poolCoinName) => {
5443
6053
  const coinType = builder.utils.parseCoinType(poolCoinName);
5444
- return txBlock.moveCall(
6054
+ return await builder.moveCall(
6055
+ txBlock,
5445
6056
  `${coreIds.protocolPkg}::mint::mint_entry`,
5446
6057
  [coreIds.version, coreIds.market, coin, SUI_CLOCK_OBJECT_ID3],
5447
6058
  [coinType]
5448
6059
  );
5449
6060
  },
5450
- withdraw: (marketCoin, poolCoinName) => {
6061
+ withdraw: async (marketCoin, poolCoinName) => {
5451
6062
  const coinType = builder.utils.parseCoinType(poolCoinName);
5452
- return txBlock.moveCall(
6063
+ return await builder.moveCall(
6064
+ txBlock,
5453
6065
  `${coreIds.protocolPkg}::redeem::redeem`,
5454
6066
  [coreIds.version, coreIds.market, marketCoin, SUI_CLOCK_OBJECT_ID3],
5455
6067
  [coinType]
5456
6068
  );
5457
6069
  },
5458
- withdrawEntry: (marketCoin, poolCoinName) => {
6070
+ withdrawEntry: async (marketCoin, poolCoinName) => {
5459
6071
  const coinType = builder.utils.parseCoinType(poolCoinName);
5460
- return txBlock.moveCall(
6072
+ return await builder.moveCall(
6073
+ txBlock,
5461
6074
  `${coreIds.protocolPkg}::redeem::redeem_entry`,
5462
6075
  [coreIds.version, coreIds.market, marketCoin, SUI_CLOCK_OBJECT_ID3],
5463
6076
  [coinType]
5464
6077
  );
5465
6078
  },
5466
- borrow: (obligation, obligationKey, amount, poolCoinName) => {
6079
+ borrow: async (obligation, obligationKey, amount, poolCoinName) => {
5467
6080
  const coinType = builder.utils.parseCoinType(poolCoinName);
5468
- return txBlock.moveCall(
6081
+ return await builder.moveCall(
6082
+ txBlock,
5469
6083
  `${coreIds.protocolPkg}::borrow::borrow`,
5470
6084
  [
5471
6085
  coreIds.version,
@@ -5480,9 +6094,10 @@ var generateCoreNormalMethod = ({
5480
6094
  [coinType]
5481
6095
  );
5482
6096
  },
5483
- borrowWithReferral: (obligation, obligationKey, borrowReferral, amount, poolCoinName) => {
6097
+ borrowWithReferral: async (obligation, obligationKey, borrowReferral, amount, poolCoinName) => {
5484
6098
  const coinType = builder.utils.parseCoinType(poolCoinName);
5485
- return txBlock.moveCall(
6099
+ return await builder.moveCall(
6100
+ txBlock,
5486
6101
  `${coreIds.protocolPkg}::borrow::borrow_with_referral`,
5487
6102
  [
5488
6103
  coreIds.version,
@@ -5491,16 +6106,17 @@ var generateCoreNormalMethod = ({
5491
6106
  coreIds.market,
5492
6107
  coreIds.coinDecimalsRegistry,
5493
6108
  borrowReferral,
5494
- txBlock.pure.u64(amount),
6109
+ typeof amount === "number" ? txBlock.pure.u64(amount) : amount,
5495
6110
  coreIds.xOracle,
5496
6111
  SUI_CLOCK_OBJECT_ID3
5497
6112
  ],
5498
6113
  [coinType, referralWitnessType]
5499
6114
  );
5500
6115
  },
5501
- borrowEntry: (obligation, obligationKey, amount, poolCoinName) => {
6116
+ borrowEntry: async (obligation, obligationKey, amount, poolCoinName) => {
5502
6117
  const coinType = builder.utils.parseCoinType(poolCoinName);
5503
- return txBlock.moveCall(
6118
+ return await builder.moveCall(
6119
+ txBlock,
5504
6120
  `${coreIds.protocolPkg}::borrow::borrow_entry`,
5505
6121
  [
5506
6122
  coreIds.version,
@@ -5515,9 +6131,10 @@ var generateCoreNormalMethod = ({
5515
6131
  [coinType]
5516
6132
  );
5517
6133
  },
5518
- repay: (obligation, coin, poolCoinName) => {
6134
+ repay: async (obligation, coin, poolCoinName) => {
5519
6135
  const coinType = builder.utils.parseCoinType(poolCoinName);
5520
- return txBlock.moveCall(
6136
+ await builder.moveCall(
6137
+ txBlock,
5521
6138
  `${coreIds.protocolPkg}::repay::repay`,
5522
6139
  [
5523
6140
  coreIds.version,
@@ -5529,17 +6146,19 @@ var generateCoreNormalMethod = ({
5529
6146
  [coinType]
5530
6147
  );
5531
6148
  },
5532
- borrowFlashLoan: (amount, poolCoinName) => {
6149
+ borrowFlashLoan: async (amount, poolCoinName) => {
5533
6150
  const coinType = builder.utils.parseCoinType(poolCoinName);
5534
- return txBlock.moveCall(
6151
+ return await builder.moveCall(
6152
+ txBlock,
5535
6153
  `${coreIds.protocolPkg}::flash_loan::borrow_flash_loan`,
5536
6154
  [coreIds.version, coreIds.market, amount],
5537
6155
  [coinType]
5538
6156
  );
5539
6157
  },
5540
- repayFlashLoan: (coin, loan, poolCoinName) => {
6158
+ repayFlashLoan: async (coin, loan, poolCoinName) => {
5541
6159
  const coinType = builder.utils.parseCoinType(poolCoinName);
5542
- return txBlock.moveCall(
6160
+ await builder.moveCall(
6161
+ txBlock,
5543
6162
  `${coreIds.protocolPkg}::flash_loan::repay_flash_loan`,
5544
6163
  [coreIds.version, coreIds.market, coin, loan],
5545
6164
  [coinType]
@@ -5561,7 +6180,7 @@ var generateCoreQuickMethod = ({
5561
6180
  );
5562
6181
  if (collateralCoinName === "sui") {
5563
6182
  const [suiCoin] = txBlock.splitSUIFromGas([amount]);
5564
- txBlock.addCollateral(obligationArg, suiCoin, collateralCoinName);
6183
+ await txBlock.addCollateral(obligationArg, suiCoin, collateralCoinName);
5565
6184
  } else {
5566
6185
  const { leftCoin, takeCoin } = await builder.selectCoin(
5567
6186
  txBlock,
@@ -5569,7 +6188,11 @@ var generateCoreQuickMethod = ({
5569
6188
  amount,
5570
6189
  sender
5571
6190
  );
5572
- txBlock.addCollateral(obligationArg, takeCoin, collateralCoinName);
6191
+ await txBlock.addCollateral(
6192
+ obligationArg,
6193
+ takeCoin,
6194
+ collateralCoinName
6195
+ );
5573
6196
  txBlock.transferObjects([leftCoin], sender);
5574
6197
  }
5575
6198
  },
@@ -5584,7 +6207,7 @@ var generateCoreQuickMethod = ({
5584
6207
  obligationInfo.obligationId
5585
6208
  );
5586
6209
  await updateOracles(builder, txBlock, updateCoinNames);
5587
- return txBlock.takeCollateral(
6210
+ return await txBlock.takeCollateral(
5588
6211
  obligationInfo.obligationId,
5589
6212
  obligationInfo.obligationKey,
5590
6213
  amount,
@@ -5596,7 +6219,7 @@ var generateCoreQuickMethod = ({
5596
6219
  let marketCoinDeposit;
5597
6220
  if (poolCoinName === "sui") {
5598
6221
  const [suiCoin] = txBlock.splitSUIFromGas([amount]);
5599
- marketCoinDeposit = txBlock.deposit(suiCoin, poolCoinName);
6222
+ marketCoinDeposit = await txBlock.deposit(suiCoin, poolCoinName);
5600
6223
  } else {
5601
6224
  const { leftCoin, takeCoin } = await builder.selectCoin(
5602
6225
  txBlock,
@@ -5605,9 +6228,9 @@ var generateCoreQuickMethod = ({
5605
6228
  sender
5606
6229
  );
5607
6230
  txBlock.transferObjects([leftCoin], sender);
5608
- marketCoinDeposit = txBlock.deposit(takeCoin, poolCoinName);
6231
+ marketCoinDeposit = await txBlock.deposit(takeCoin, poolCoinName);
5609
6232
  }
5610
- return returnSCoin ? txBlock.mintSCoin(
6233
+ return returnSCoin ? await txBlock.mintSCoin(
5611
6234
  builder.utils.parseMarketCoinName(poolCoinName),
5612
6235
  marketCoinDeposit
5613
6236
  ) : marketCoinDeposit;
@@ -5625,7 +6248,7 @@ var generateCoreQuickMethod = ({
5625
6248
  totalAmount
5626
6249
  } = await builder.selectSCoin(txBlock, sCoinName, amount, sender);
5627
6250
  txBlock.transferObjects([leftCoin], sender);
5628
- const marketCoins2 = txBlock.burnSCoin(sCoinName, sCoins2);
6251
+ const marketCoins2 = await txBlock.burnSCoin(sCoinName, sCoins2);
5629
6252
  amount -= totalAmount;
5630
6253
  try {
5631
6254
  if (amount > 0) {
@@ -5649,7 +6272,7 @@ var generateCoreQuickMethod = ({
5649
6272
  sender
5650
6273
  );
5651
6274
  txBlock.transferObjects([leftCoin], sender);
5652
- return txBlock.withdraw(walletMarketCoins, poolCoinName);
6275
+ return await txBlock.withdraw(walletMarketCoins, poolCoinName);
5653
6276
  }
5654
6277
  },
5655
6278
  borrowQuick: async (amount, poolCoinName, obligationId, obligationKey) => {
@@ -5664,7 +6287,7 @@ var generateCoreQuickMethod = ({
5664
6287
  ) ?? [];
5665
6288
  const updateCoinNames = [...obligationCoinNames, poolCoinName];
5666
6289
  await updateOracles(builder, txBlock, updateCoinNames);
5667
- return txBlock.borrow(
6290
+ return await txBlock.borrow(
5668
6291
  obligationInfo.obligationId,
5669
6292
  obligationInfo.obligationKey,
5670
6293
  amount,
@@ -5683,7 +6306,7 @@ var generateCoreQuickMethod = ({
5683
6306
  ) ?? [];
5684
6307
  const updateCoinNames = [...obligationCoinNames, poolCoinName];
5685
6308
  await updateOracles(builder, txBlock, updateCoinNames);
5686
- return txBlock.borrowWithReferral(
6309
+ return await txBlock.borrowWithReferral(
5687
6310
  obligationInfo.obligationId,
5688
6311
  obligationInfo.obligationKey,
5689
6312
  borrowReferral,
@@ -5700,7 +6323,7 @@ var generateCoreQuickMethod = ({
5700
6323
  );
5701
6324
  if (poolCoinName === "sui") {
5702
6325
  const [suiCoin] = txBlock.splitSUIFromGas([amount]);
5703
- return txBlock.repay(
6326
+ return await txBlock.repay(
5704
6327
  obligationInfo.obligationId,
5705
6328
  suiCoin,
5706
6329
  poolCoinName
@@ -5713,7 +6336,7 @@ var generateCoreQuickMethod = ({
5713
6336
  sender
5714
6337
  );
5715
6338
  txBlock.transferObjects([leftCoin], sender);
5716
- return txBlock.repay(
6339
+ return await txBlock.repay(
5717
6340
  obligationInfo.obligationId,
5718
6341
  takeCoin,
5719
6342
  poolCoinName
@@ -5721,7 +6344,7 @@ var generateCoreQuickMethod = ({
5721
6344
  }
5722
6345
  },
5723
6346
  updateAssetPricesQuick: async (assetCoinNames) => {
5724
- return updateOracles(builder, txBlock, assetCoinNames);
6347
+ return await updateOracles(builder, txBlock, assetCoinNames);
5725
6348
  }
5726
6349
  };
5727
6350
  };
@@ -5784,10 +6407,10 @@ var stakeHelper = async (builder, txBlock, stakeAccount, coinName, amount, sende
5784
6407
  try {
5785
6408
  const { takeCoin, leftCoin, totalAmount } = isSCoin ? await builder.selectSCoin(txBlock, coinName, amount, sender) : await builder.selectMarketCoin(txBlock, coinName, amount, sender);
5786
6409
  if (isSCoin) {
5787
- const marketCoin = txBlock.burnSCoin(coinName, takeCoin);
5788
- txBlock.stake(stakeAccount, marketCoin, coinName);
6410
+ const marketCoin = await txBlock.burnSCoin(coinName, takeCoin);
6411
+ await txBlock.stake(stakeAccount, marketCoin, coinName);
5789
6412
  } else {
5790
- txBlock.stake(stakeAccount, takeCoin, coinName);
6413
+ await txBlock.stake(stakeAccount, takeCoin, coinName);
5791
6414
  }
5792
6415
  txBlock.transferObjects([leftCoin], sender);
5793
6416
  return totalAmount;
@@ -5803,40 +6426,43 @@ var generateSpoolNormalMethod = ({
5803
6426
  spoolPkg: builder.address.get("spool.id")
5804
6427
  };
5805
6428
  return {
5806
- createStakeAccount: (stakeMarketCoinName) => {
6429
+ createStakeAccount: async (stakeMarketCoinName) => {
5807
6430
  const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
5808
6431
  const stakePoolId = builder.address.get(
5809
6432
  `spool.pools.${stakeMarketCoinName}.id`
5810
6433
  );
5811
- return txBlock.moveCall(
6434
+ return await builder.moveCall(
6435
+ txBlock,
5812
6436
  `${spoolIds.spoolPkg}::user::new_spool_account`,
5813
6437
  [stakePoolId, SUI_CLOCK_OBJECT_ID4],
5814
6438
  [marketCoinType]
5815
6439
  );
5816
6440
  },
5817
- stake: (stakeAccount, coin, stakeMarketCoinName) => {
6441
+ stake: async (stakeAccount, coin, stakeMarketCoinName) => {
5818
6442
  const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
5819
6443
  const stakePoolId = builder.address.get(
5820
6444
  `spool.pools.${stakeMarketCoinName}.id`
5821
6445
  );
5822
- txBlock.moveCall(
6446
+ await builder.moveCall(
6447
+ txBlock,
5823
6448
  `${spoolIds.spoolPkg}::user::stake`,
5824
6449
  [stakePoolId, stakeAccount, coin, SUI_CLOCK_OBJECT_ID4],
5825
6450
  [marketCoinType]
5826
6451
  );
5827
6452
  },
5828
- unstake: (stakeAccount, amount, stakeMarketCoinName) => {
6453
+ unstake: async (stakeAccount, amount, stakeMarketCoinName) => {
5829
6454
  const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
5830
6455
  const stakePoolId = builder.address.get(
5831
6456
  `spool.pools.${stakeMarketCoinName}.id`
5832
6457
  );
5833
- return txBlock.moveCall(
6458
+ return await builder.moveCall(
6459
+ txBlock,
5834
6460
  `${spoolIds.spoolPkg}::user::unstake`,
5835
6461
  [stakePoolId, stakeAccount, amount, SUI_CLOCK_OBJECT_ID4],
5836
6462
  [marketCoinType]
5837
6463
  );
5838
6464
  },
5839
- claim: (stakeAccount, stakeMarketCoinName) => {
6465
+ claim: async (stakeAccount, stakeMarketCoinName) => {
5840
6466
  const stakePoolId = builder.address.get(
5841
6467
  `spool.pools.${stakeMarketCoinName}.id`
5842
6468
  );
@@ -5846,7 +6472,8 @@ var generateSpoolNormalMethod = ({
5846
6472
  const marketCoinType = builder.utils.parseMarketCoinType(stakeMarketCoinName);
5847
6473
  const rewardCoinName = spoolRewardCoins[stakeMarketCoinName];
5848
6474
  const rewardCoinType = builder.utils.parseCoinType(rewardCoinName);
5849
- return txBlock.moveCall(
6475
+ return await builder.moveCall(
6476
+ txBlock,
5850
6477
  `${spoolIds.spoolPkg}::user::redeem_rewards`,
5851
6478
  [stakePoolId, rewardPoolId, stakeAccount, SUI_CLOCK_OBJECT_ID4],
5852
6479
  [marketCoinType, rewardCoinType]
@@ -5911,13 +6538,16 @@ var generateSpoolQuickMethod = ({
5911
6538
  if (account.staked === 0)
5912
6539
  continue;
5913
6540
  const amountToUnstake = Math.min(amount, account.staked);
5914
- const marketCoin = txBlock.unstake(
6541
+ const marketCoin = await txBlock.unstake(
5915
6542
  account.id,
5916
6543
  amountToUnstake,
5917
6544
  stakeMarketCoinName
5918
6545
  );
5919
6546
  if (returnSCoin) {
5920
- const sCoin = txBlock.mintSCoin(stakeMarketCoinName, marketCoin);
6547
+ const sCoin = await txBlock.mintSCoin(
6548
+ stakeMarketCoinName,
6549
+ marketCoin
6550
+ );
5921
6551
  toTransfer.push(sCoin);
5922
6552
  } else {
5923
6553
  toTransfer.push(marketCoin);
@@ -5943,7 +6573,7 @@ var generateSpoolQuickMethod = ({
5943
6573
  );
5944
6574
  const rewardCoins = [];
5945
6575
  for (const accountId of stakeAccountIds) {
5946
- const rewardCoin = txBlock.claim(accountId, stakeMarketCoinName);
6576
+ const rewardCoin = await txBlock.claim(accountId, stakeMarketCoinName);
5947
6577
  rewardCoins.push(rewardCoin);
5948
6578
  }
5949
6579
  return rewardCoins;
@@ -6022,8 +6652,9 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6022
6652
  config: builder.address.get("vesca.config")
6023
6653
  };
6024
6654
  return {
6025
- stakeObligation: (obligationId, obligationKey) => {
6026
- txBlock.moveCall(
6655
+ stakeObligation: async (obligationId, obligationKey) => {
6656
+ await builder.moveCall(
6657
+ txBlock,
6027
6658
  `${borrowIncentiveIds.borrowIncentivePkg}::user::stake`,
6028
6659
  [
6029
6660
  borrowIncentiveIds.config,
@@ -6036,8 +6667,9 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6036
6667
  ]
6037
6668
  );
6038
6669
  },
6039
- stakeObligationWithVesca: (obligationId, obligationKey, veScaKey) => {
6040
- txBlock.moveCall(
6670
+ stakeObligationWithVesca: async (obligationId, obligationKey, veScaKey) => {
6671
+ await builder.moveCall(
6672
+ txBlock,
6041
6673
  `${borrowIncentiveIds.borrowIncentivePkg}::user::stake_with_ve_sca`,
6042
6674
  [
6043
6675
  borrowIncentiveIds.config,
@@ -6055,8 +6687,9 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6055
6687
  []
6056
6688
  );
6057
6689
  },
6058
- unstakeObligation: (obligationId, obligationKey) => {
6059
- txBlock.moveCall(
6690
+ unstakeObligation: async (obligationId, obligationKey) => {
6691
+ await builder.moveCall(
6692
+ txBlock,
6060
6693
  `${borrowIncentiveIds.borrowIncentivePkg}::user::unstake`,
6061
6694
  [
6062
6695
  borrowIncentiveIds.config,
@@ -6068,9 +6701,10 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6068
6701
  ]
6069
6702
  );
6070
6703
  },
6071
- claimBorrowIncentive: (obligationId, obligationKey, rewardCoinName) => {
6704
+ claimBorrowIncentive: async (obligationId, obligationKey, rewardCoinName) => {
6072
6705
  const rewardType = builder.utils.parseCoinType(rewardCoinName);
6073
- return txBlock.moveCall(
6706
+ return await builder.moveCall(
6707
+ txBlock,
6074
6708
  `${borrowIncentiveIds.borrowIncentivePkg}::user::redeem_rewards`,
6075
6709
  [
6076
6710
  borrowIncentiveIds.config,
@@ -6083,8 +6717,9 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
6083
6717
  [rewardType]
6084
6718
  );
6085
6719
  },
6086
- deactivateBoost: (obligation, veScaKey) => {
6087
- return txBlock.moveCall(
6720
+ deactivateBoost: async (obligation, veScaKey) => {
6721
+ await builder.moveCall(
6722
+ txBlock,
6088
6723
  `${borrowIncentiveIds.borrowIncentivePkg}::user::deactivate_boost`,
6089
6724
  [
6090
6725
  borrowIncentiveIds.config,
@@ -6115,7 +6750,7 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
6115
6750
  (txn) => txn.kind === "MoveCall" && (txn.target === `${OLD_BORROW_INCENTIVE_PROTOCOL_ID}::user::unstake` || txn.target === `${builder.address.get("borrowIncentive.id")}::user::unstake`)
6116
6751
  );
6117
6752
  if (!obligationLocked || unstakeObligationBeforeStake) {
6118
- txBlock.stakeObligation(obligationArg, obligationKeyArg);
6753
+ await txBlock.stakeObligation(obligationArg, obligationKeyArg);
6119
6754
  }
6120
6755
  },
6121
6756
  stakeObligationWithVeScaQuick: async (obligation, obligationKey, veScaKey) => {
@@ -6136,9 +6771,9 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
6136
6771
  const bindedVeScaKey = await builder.query.getBindedVeScaKey(obligationArg);
6137
6772
  const _veScaKey = bindedVeScaKey ?? veScaKey;
6138
6773
  if (!_veScaKey) {
6139
- txBlock.stakeObligation(obligationArg, obligationKeyArg);
6774
+ await txBlock.stakeObligation(obligationArg, obligationKeyArg);
6140
6775
  } else {
6141
- txBlock.stakeObligationWithVesca(
6776
+ await txBlock.stakeObligationWithVesca(
6142
6777
  obligationArg,
6143
6778
  obligationKeyArg,
6144
6779
  _veScaKey
@@ -6158,7 +6793,7 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
6158
6793
  obligationKey
6159
6794
  );
6160
6795
  if (obligationLocked) {
6161
- txBlock.unstakeObligation(obligationArg, obligationKeyArg);
6796
+ await txBlock.unstakeObligation(obligationArg, obligationKeyArg);
6162
6797
  }
6163
6798
  },
6164
6799
  claimBorrowIncentiveQuick: async (rewardCoinName, obligation, obligationKey) => {
@@ -6168,7 +6803,7 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
6168
6803
  obligation,
6169
6804
  obligationKey
6170
6805
  );
6171
- return txBlock.claimBorrowIncentive(
6806
+ return await txBlock.claimBorrowIncentive(
6172
6807
  obligationArg,
6173
6808
  obligationKeyArg,
6174
6809
  rewardCoinName
@@ -6237,8 +6872,9 @@ var generateNormalVeScaMethod = ({
6237
6872
  config: builder.address.get("vesca.config")
6238
6873
  };
6239
6874
  return {
6240
- lockSca: (scaCoin, unlockAtInSecondTimestamp) => {
6241
- return txBlock.moveCall(
6875
+ lockSca: async (scaCoin, unlockAtInSecondTimestamp) => {
6876
+ return await builder.moveCall(
6877
+ txBlock,
6242
6878
  `${veScaIds.pkgId}::ve_sca::mint_ve_sca_key`,
6243
6879
  [
6244
6880
  veScaIds.config,
@@ -6251,8 +6887,9 @@ var generateNormalVeScaMethod = ({
6251
6887
  []
6252
6888
  );
6253
6889
  },
6254
- extendLockPeriod: (veScaKey, newUnlockAtInSecondTimestamp) => {
6255
- txBlock.moveCall(
6890
+ extendLockPeriod: async (veScaKey, newUnlockAtInSecondTimestamp) => {
6891
+ await builder.moveCall(
6892
+ txBlock,
6256
6893
  `${veScaIds.pkgId}::ve_sca::extend_lock_period`,
6257
6894
  [
6258
6895
  veScaIds.config,
@@ -6265,8 +6902,9 @@ var generateNormalVeScaMethod = ({
6265
6902
  []
6266
6903
  );
6267
6904
  },
6268
- extendLockAmount: (veScaKey, scaCoin) => {
6269
- txBlock.moveCall(
6905
+ extendLockAmount: async (veScaKey, scaCoin) => {
6906
+ await builder.moveCall(
6907
+ txBlock,
6270
6908
  `${veScaIds.pkgId}::ve_sca::lock_more_sca`,
6271
6909
  [
6272
6910
  veScaIds.config,
@@ -6279,8 +6917,9 @@ var generateNormalVeScaMethod = ({
6279
6917
  []
6280
6918
  );
6281
6919
  },
6282
- renewExpiredVeSca: (veScaKey, scaCoin, newUnlockAtInSecondTimestamp) => {
6283
- txBlock.moveCall(
6920
+ renewExpiredVeSca: async (veScaKey, scaCoin, newUnlockAtInSecondTimestamp) => {
6921
+ await builder.moveCall(
6922
+ txBlock,
6284
6923
  `${veScaIds.pkgId}::ve_sca::renew_expired_ve_sca`,
6285
6924
  [
6286
6925
  veScaIds.config,
@@ -6294,8 +6933,9 @@ var generateNormalVeScaMethod = ({
6294
6933
  []
6295
6934
  );
6296
6935
  },
6297
- redeemSca: (veScaKey) => {
6298
- return txBlock.moveCall(
6936
+ redeemSca: async (veScaKey) => {
6937
+ return await builder.moveCall(
6938
+ txBlock,
6299
6939
  `${veScaIds.pkgId}::ve_sca::redeem`,
6300
6940
  [
6301
6941
  veScaIds.config,
@@ -6307,8 +6947,9 @@ var generateNormalVeScaMethod = ({
6307
6947
  []
6308
6948
  );
6309
6949
  },
6310
- mintEmptyVeSca: () => {
6311
- return txBlock.moveCall(
6950
+ mintEmptyVeSca: async () => {
6951
+ return await builder.moveCall(
6952
+ txBlock,
6312
6953
  `${veScaIds.pkgId}::ve_sca::mint_ve_sca_placeholder_key`,
6313
6954
  [veScaIds.config, veScaIds.table],
6314
6955
  []
@@ -6446,7 +7087,7 @@ var generateQuickVeScaMethod = ({
6446
7087
  const veSca = await requireVeSca(builder, txBlock, veScaKey);
6447
7088
  checkVesca(veSca?.unlockAt);
6448
7089
  if (veSca) {
6449
- const sca = txBlock.redeemSca(veSca.keyId);
7090
+ const sca = await txBlock.redeemSca(veSca.keyId);
6450
7091
  if (transferSca) {
6451
7092
  txBlock.transferObjects([sca], sender);
6452
7093
  return;
@@ -6506,8 +7147,9 @@ var generateReferralNormalMethod = ({
6506
7147
  };
6507
7148
  const veScaTable = builder.address.get("vesca.table");
6508
7149
  return {
6509
- bindToReferral: (veScaKeyId) => {
6510
- return txBlock.moveCall(
7150
+ bindToReferral: async (veScaKeyId) => {
7151
+ await builder.moveCall(
7152
+ txBlock,
6511
7153
  `${referralIds.referralPgkId}::referral_bindings::bind_ve_sca_referrer`,
6512
7154
  [
6513
7155
  referralIds.referralBindings,
@@ -6518,9 +7160,10 @@ var generateReferralNormalMethod = ({
6518
7160
  []
6519
7161
  );
6520
7162
  },
6521
- claimReferralTicket: (poolCoinName) => {
7163
+ claimReferralTicket: async (poolCoinName) => {
6522
7164
  const coinType = builder.utils.parseCoinType(poolCoinName);
6523
- return txBlock.moveCall(
7165
+ return await builder.moveCall(
7166
+ txBlock,
6524
7167
  `${referralIds.referralPgkId}::scallop_referral_program::claim_ve_sca_referral_ticket`,
6525
7168
  [
6526
7169
  referralIds.version,
@@ -6533,9 +7176,10 @@ var generateReferralNormalMethod = ({
6533
7176
  [coinType]
6534
7177
  );
6535
7178
  },
6536
- burnReferralTicket: (ticket, poolCoinName) => {
7179
+ burnReferralTicket: async (ticket, poolCoinName) => {
6537
7180
  const coinType = builder.utils.parseCoinType(poolCoinName);
6538
- return txBlock.moveCall(
7181
+ await builder.moveCall(
7182
+ txBlock,
6539
7183
  `${referralIds.referralPgkId}::scallop_referral_program::burn_ve_sca_referral_ticket`,
6540
7184
  [
6541
7185
  referralIds.version,
@@ -6546,9 +7190,10 @@ var generateReferralNormalMethod = ({
6546
7190
  [coinType]
6547
7191
  );
6548
7192
  },
6549
- claimReferralRevenue: (veScaKey, poolCoinName) => {
7193
+ claimReferralRevenue: async (veScaKey, poolCoinName) => {
6550
7194
  const coinType = builder.utils.parseCoinType(poolCoinName);
6551
- return txBlock.moveCall(
7195
+ return await builder.moveCall(
7196
+ txBlock,
6552
7197
  `${referralIds.referralPgkId}::referral_revenue_pool::claim_revenue_with_ve_sca_key`,
6553
7198
  [
6554
7199
  referralIds.version,
@@ -6571,10 +7216,16 @@ var generateReferralQuickMethod = ({
6571
7216
  const objToTransfer = [];
6572
7217
  for (const coinName of coinNames) {
6573
7218
  if (coinName === "sui") {
6574
- const rewardCoin = txBlock.claimReferralRevenue(veScaKey, coinName);
7219
+ const rewardCoin = await txBlock.claimReferralRevenue(
7220
+ veScaKey,
7221
+ coinName
7222
+ );
6575
7223
  objToTransfer.push(rewardCoin);
6576
7224
  } else {
6577
- const rewardCoin = txBlock.claimReferralRevenue(veScaKey, coinName);
7225
+ const rewardCoin = await txBlock.claimReferralRevenue(
7226
+ veScaKey,
7227
+ coinName
7228
+ );
6578
7229
  try {
6579
7230
  const coins = await builder.suiKit.suiInteractor.selectCoins(
6580
7231
  sender,
@@ -6634,8 +7285,9 @@ var generateLoyaltyProgramNormalMethod = ({ builder, txBlock }) => {
6634
7285
  )
6635
7286
  };
6636
7287
  return {
6637
- claimLoyaltyRevenue: (veScaKey) => {
6638
- return txBlock.moveCall(
7288
+ claimLoyaltyRevenue: async (veScaKey) => {
7289
+ return await builder.moveCall(
7290
+ txBlock,
6639
7291
  `${loyaltyProgramIds.loyaltyProgramPkgId}::reward_pool::redeem_reward`,
6640
7292
  [loyaltyProgramIds.rewardPool, veScaKey]
6641
7293
  );
@@ -6652,7 +7304,7 @@ var generateLoyaltyProgramQuickMethod = ({
6652
7304
  const sender = requireSender(txBlock);
6653
7305
  if (!veScaKey)
6654
7306
  throw new Error(`No veScaKey found for user ${sender}`);
6655
- const rewardCoin = txBlock.claimLoyaltyRevenue(veScaKey);
7307
+ const rewardCoin = await txBlock.claimLoyaltyRevenue(veScaKey);
6656
7308
  await builder.utils.mergeSimilarCoins(
6657
7309
  txBlock,
6658
7310
  rewardCoin,
@@ -6701,8 +7353,9 @@ var generateSCoinNormalMethod = ({
6701
7353
  pkgId: builder.address.get("scoin.id")
6702
7354
  };
6703
7355
  return {
6704
- mintSCoin: (marketCoinName, marketCoin) => {
6705
- return txBlock.moveCall(
7356
+ mintSCoin: async (marketCoinName, marketCoin) => {
7357
+ return await builder.moveCall(
7358
+ txBlock,
6706
7359
  `${sCoinPkgIds.pkgId}::s_coin_converter::mint_s_coin`,
6707
7360
  [builder.utils.getSCoinTreasury(marketCoinName), marketCoin],
6708
7361
  [
@@ -6711,8 +7364,9 @@ var generateSCoinNormalMethod = ({
6711
7364
  ]
6712
7365
  );
6713
7366
  },
6714
- burnSCoin: (sCoinName, sCoin) => {
6715
- return txBlock.moveCall(
7367
+ burnSCoin: async (sCoinName, sCoin) => {
7368
+ return await builder.moveCall(
7369
+ txBlock,
6716
7370
  `${sCoinPkgIds.pkgId}::s_coin_converter::burn_s_coin`,
6717
7371
  [builder.utils.getSCoinTreasury(sCoinName), sCoin],
6718
7372
  [
@@ -6737,7 +7391,7 @@ var generateSCoinQuickMethod = ({
6737
7391
  sender
6738
7392
  );
6739
7393
  txBlock.transferObjects([leftCoin], sender);
6740
- return txBlock.mintSCoin(marketCoinName, takeCoin);
7394
+ return await txBlock.mintSCoin(marketCoinName, takeCoin);
6741
7395
  },
6742
7396
  burnSCoinQuick: async (sCoinName, amount) => {
6743
7397
  const sender = requireSender(txBlock);
@@ -6748,7 +7402,7 @@ var generateSCoinQuickMethod = ({
6748
7402
  sender
6749
7403
  );
6750
7404
  txBlock.transferObjects([leftCoin], sender);
6751
- return txBlock.burnSCoin(sCoinName, takeCoin);
7405
+ return await txBlock.burnSCoin(sCoinName, takeCoin);
6752
7406
  }
6753
7407
  };
6754
7408
  };
@@ -7070,6 +7724,7 @@ var ScallopQuery = class {
7070
7724
  }
7071
7725
  /* ==================== Core Query Methods ==================== */
7072
7726
  /**
7727
+ * @deprecated use getMarketPools
7073
7728
  * Query market data.
7074
7729
  * @param indexer - Whether to use indexer.
7075
7730
  * @return Market data.
@@ -7088,7 +7743,7 @@ var ScallopQuery = class {
7088
7743
  * @param indexer - Whether to use indexer.
7089
7744
  * @return Market pools data.
7090
7745
  */
7091
- async getMarketPools(poolCoinNames, args) {
7746
+ async getMarketPools(poolCoinNames = [...SUPPORT_POOLS], args) {
7092
7747
  return await getMarketPools(
7093
7748
  this,
7094
7749
  poolCoinNames,
@@ -7104,13 +7759,8 @@ var ScallopQuery = class {
7104
7759
  * @return Market pool data.
7105
7760
  */
7106
7761
  async getMarketPool(poolCoinName, args) {
7107
- return await getMarketPool(
7108
- this,
7109
- poolCoinName,
7110
- args?.indexer,
7111
- args?.marketObject,
7112
- args?.coinPrice
7113
- );
7762
+ const marketPools = await this.getMarketPools(void 0, args);
7763
+ return marketPools.pools[poolCoinName];
7114
7764
  }
7115
7765
  /**
7116
7766
  * Get market collaterals.
@@ -7237,13 +7887,8 @@ var ScallopQuery = class {
7237
7887
  * @return Spool data.
7238
7888
  */
7239
7889
  async getSpool(stakeMarketCoinName, args) {
7240
- return await getSpool(
7241
- this,
7242
- stakeMarketCoinName,
7243
- args?.indexer,
7244
- args?.marketPool,
7245
- args?.coinPrices
7246
- );
7890
+ const spools = await this.getSpools(void 0, args);
7891
+ return spools[stakeMarketCoinName];
7247
7892
  }
7248
7893
  /**
7249
7894
  * Get stake accounts data for all stake pools (spools).
@@ -7409,11 +8054,9 @@ var ScallopQuery = class {
7409
8054
  * @return Borrowing and collateral information.
7410
8055
  */
7411
8056
  async getObligationAccount(obligationId, ownerAddress = this.walletAddress, args) {
7412
- return await getObligationAccount(
7413
- this,
7414
- obligationId,
7415
- ownerAddress,
7416
- args?.indexer
8057
+ const results = await this.getObligationAccounts(ownerAddress, args);
8058
+ return Object.values(results).find(
8059
+ (obligation) => obligation?.obligationId === obligationId
7417
8060
  );
7418
8061
  }
7419
8062
  /**
@@ -7548,7 +8191,7 @@ var ScallopQuery = class {
7548
8191
  * Get list of isolated assets
7549
8192
  */
7550
8193
  async getIsolatedAssets() {
7551
- return await getIsolatedAssets(this.address);
8194
+ return await getIsolatedAssets(this);
7552
8195
  }
7553
8196
  /**
7554
8197
  * Check if asset is an isolated asset
@@ -7571,6 +8214,13 @@ var ScallopQuery = class {
7571
8214
  async getAllCoinPrices(args) {
7572
8215
  return getAllCoinPrices(this, args?.marketPools, args?.coinPrices);
7573
8216
  }
8217
+ /**
8218
+ * Query all address (lending pool, collateral pool, borrow dynamics, interest models) of all pool
8219
+ * @returns
8220
+ */
8221
+ async getPoolAddresses() {
8222
+ return getAllAddresses(this);
8223
+ }
7574
8224
  };
7575
8225
 
7576
8226
  // src/models/scallopBuilder.ts
@@ -7629,7 +8279,6 @@ var ScallopBuilder = class {
7629
8279
  await this.address.read();
7630
8280
  }
7631
8281
  await this.query.init(force, this.address);
7632
- await this.utils.init(force, this.address);
7633
8282
  }
7634
8283
  /**
7635
8284
  * Create a scallop txBlock instance that enhances transaction block.
@@ -7718,6 +8367,9 @@ var ScallopBuilder = class {
7718
8367
  txBlock
7719
8368
  );
7720
8369
  }
8370
+ moveCall(txb, target, args, typeArgs) {
8371
+ return txb.moveCall(target, args, typeArgs);
8372
+ }
7721
8373
  };
7722
8374
 
7723
8375
  // src/models/scallopClient.ts
@@ -7864,7 +8516,7 @@ var ScallopClient = class {
7864
8516
  }
7865
8517
  async openObligation(sign = true) {
7866
8518
  const txBlock = this.builder.createTxBlock();
7867
- txBlock.openObligationEntry();
8519
+ await txBlock.openObligationEntry();
7868
8520
  if (sign) {
7869
8521
  return await this.suiKit.signAndSendTxn(
7870
8522
  txBlock
@@ -7886,9 +8538,9 @@ var ScallopClient = class {
7886
8538
  specificObligationId
7887
8539
  );
7888
8540
  } else {
7889
- const [obligation, obligationKey, hotPotato] = txBlock.openObligation();
8541
+ const [obligation, obligationKey, hotPotato] = await txBlock.openObligation();
7890
8542
  await txBlock.addCollateralQuick(amount, collateralCoinName, obligation);
7891
- txBlock.returnObligation(obligation, hotPotato);
8543
+ await txBlock.returnObligation(obligation, hotPotato);
7892
8544
  txBlock.transferObjects([obligationKey], sender);
7893
8545
  }
7894
8546
  if (sign) {
@@ -7958,7 +8610,7 @@ var ScallopClient = class {
7958
8610
  targetStakeAccount
7959
8611
  );
7960
8612
  } else {
7961
- const account = txBlock.createStakeAccount(stakeMarketCoinName);
8613
+ const account = await txBlock.createStakeAccount(stakeMarketCoinName);
7962
8614
  await txBlock.stakeQuick(marketCoin, stakeMarketCoinName, account);
7963
8615
  txBlock.transferObjects([account], sender);
7964
8616
  }
@@ -8055,8 +8707,12 @@ var ScallopClient = class {
8055
8707
  const txBlock = this.builder.createTxBlock();
8056
8708
  const sender = walletAddress ?? this.walletAddress;
8057
8709
  txBlock.setSender(sender);
8058
- const [coin, loan] = txBlock.borrowFlashLoan(amount, poolCoinName);
8059
- txBlock.repayFlashLoan(await callback(txBlock, coin), loan, poolCoinName);
8710
+ const [coin, loan] = await txBlock.borrowFlashLoan(amount, poolCoinName);
8711
+ await txBlock.repayFlashLoan(
8712
+ await callback(txBlock, coin),
8713
+ loan,
8714
+ poolCoinName
8715
+ );
8060
8716
  if (sign) {
8061
8717
  return await this.suiKit.signAndSendTxn(
8062
8718
  txBlock
@@ -8069,7 +8725,7 @@ var ScallopClient = class {
8069
8725
  const txBlock = this.builder.createTxBlock();
8070
8726
  const sender = walletAddress ?? this.walletAddress;
8071
8727
  txBlock.setSender(sender);
8072
- const stakeAccount = txBlock.createStakeAccount(marketCoinName);
8728
+ const stakeAccount = await txBlock.createStakeAccount(marketCoinName);
8073
8729
  txBlock.transferObjects([stakeAccount], sender);
8074
8730
  if (sign) {
8075
8731
  return await this.suiKit.signAndSendTxn(
@@ -8088,7 +8744,7 @@ var ScallopClient = class {
8088
8744
  if (targetStakeAccount) {
8089
8745
  await txBlock.stakeQuick(amount, stakeMarketCoinName, targetStakeAccount);
8090
8746
  } else {
8091
- const account = txBlock.createStakeAccount(stakeMarketCoinName);
8747
+ const account = await txBlock.createStakeAccount(stakeMarketCoinName);
8092
8748
  await txBlock.stakeQuick(amount, stakeMarketCoinName, account);
8093
8749
  txBlock.transferObjects([account], sender);
8094
8750
  }
@@ -8138,7 +8794,7 @@ var ScallopClient = class {
8138
8794
  );
8139
8795
  const stakeCoinName = this.utils.parseCoinName(stakeMarketCoinName);
8140
8796
  if (stakeMarketCoin) {
8141
- const coin = txBlock.withdraw(stakeMarketCoin, stakeCoinName);
8797
+ const coin = await txBlock.withdraw(stakeMarketCoin, stakeCoinName);
8142
8798
  await this.utils.mergeSimilarCoins(
8143
8799
  txBlock,
8144
8800
  coin,
@@ -8235,6 +8891,8 @@ var ScallopClient = class {
8235
8891
  txBlock.setSender(sender);
8236
8892
  const rewardCoinsCollection = {};
8237
8893
  const obligationAccount = await this.query.getObligationAccount(obligationId);
8894
+ if (!obligationAccount)
8895
+ throw new Error("Obligation not found");
8238
8896
  const rewardCoinNames = Object.values(obligationAccount.borrowIncentives).flatMap(
8239
8897
  ({ rewards }) => rewards.filter(({ availableClaimAmount }) => availableClaimAmount > 0)
8240
8898
  ).flatMap(({ coinName }) => coinName);
@@ -8297,7 +8955,7 @@ var ScallopClient = class {
8297
8955
  throw e;
8298
8956
  }
8299
8957
  if (toDestroyMarketCoin) {
8300
- const sCoin = txBlock.mintSCoin(
8958
+ const sCoin = await txBlock.mintSCoin(
8301
8959
  sCoinName,
8302
8960
  toDestroyMarketCoin
8303
8961
  );
@@ -8565,9 +9223,11 @@ export {
8565
9223
  ScallopQuery,
8566
9224
  ScallopUtils,
8567
9225
  TEST_ADDRESSES,
9226
+ TokenBucket,
8568
9227
  UNLOCK_ROUND_DURATION,
8569
9228
  USE_TEST_ADDRESS,
8570
9229
  assetCoins,
9230
+ callWithRateLimit,
8571
9231
  coinDecimals,
8572
9232
  coinIds,
8573
9233
  marketCoins,