@scallop-io/sui-scallop-sdk 1.3.4-alpha.7 → 1.3.4-isolated-asset.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -102,11 +102,11 @@ var DEFAULT_CACHE_OPTIONS = {
102
102
 
103
103
  // src/constants/coinGecko.ts
104
104
  var COIN_GECKGO_IDS = {
105
- usdc: "usdc-coin",
105
+ usdc: "usdc",
106
106
  sbeth: "ethereum",
107
107
  weth: "ethereum",
108
108
  wbtc: "bitcoin",
109
- wusdc: "usdc-coin",
109
+ wusdc: "usdc",
110
110
  wusdt: "tether",
111
111
  sui: "sui",
112
112
  wapt: "aptos",
@@ -115,7 +115,9 @@ var COIN_GECKGO_IDS = {
115
115
  afsui: "sui",
116
116
  hasui: "sui",
117
117
  vsui: "sui",
118
- sca: "scallop-2"
118
+ sca: "scallop-2",
119
+ deep: "deepbook",
120
+ fud: "fud-the-pug"
119
121
  };
120
122
 
121
123
  // src/constants/common.ts
@@ -144,7 +146,9 @@ var SUPPORT_POOLS = [
144
146
  "afsui",
145
147
  "hasui",
146
148
  "vsui",
147
- "sca"
149
+ "sca",
150
+ "fud",
151
+ "deep"
148
152
  ];
149
153
  var SUPPORT_COLLATERALS = [
150
154
  "usdc",
@@ -245,6 +249,8 @@ var coinDecimals = {
245
249
  hasui: 9,
246
250
  vsui: 9,
247
251
  sca: 9,
252
+ deep: 6,
253
+ fud: 5,
248
254
  susdc: 6,
249
255
  sweth: 8,
250
256
  ssbeth: 8,
@@ -258,7 +264,9 @@ var coinDecimals = {
258
264
  safsui: 9,
259
265
  shasui: 9,
260
266
  svsui: 9,
261
- ssca: 9
267
+ ssca: 9,
268
+ sdeep: 6,
269
+ sfud: 5
262
270
  };
263
271
  var assetCoins = {
264
272
  usdc: "usdc",
@@ -274,7 +282,9 @@ var assetCoins = {
274
282
  afsui: "afsui",
275
283
  hasui: "hasui",
276
284
  vsui: "vsui",
277
- sca: "sca"
285
+ sca: "sca",
286
+ deep: "deep",
287
+ fud: "fud"
278
288
  };
279
289
  var marketCoins = {
280
290
  susdc: "susdc",
@@ -290,7 +300,9 @@ var marketCoins = {
290
300
  safsui: "safsui",
291
301
  shasui: "shasui",
292
302
  svsui: "svsui",
293
- ssca: "ssca"
303
+ ssca: "ssca",
304
+ sdeep: "sdeep",
305
+ sfud: "sfud"
294
306
  };
295
307
  var sCoins = {
296
308
  susdc: "susdc",
@@ -358,7 +370,10 @@ var coinIds = {
358
370
  afsui: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
359
371
  hasui: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
360
372
  vsui: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
361
- sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6"
373
+ sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
374
+ // isolated assets
375
+ deep: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",
376
+ fud: "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1::fud::FUD"
362
377
  };
363
378
  var wormholeCoinIds = {
364
379
  weth: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
@@ -374,11 +389,27 @@ var voloCoinIds = {
374
389
  var sCoinIds = {
375
390
  susdc: "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",
376
391
  ssbeth: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
377
- ssui: "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",
392
+ ssui: (
393
+ // TODO: use prod value
394
+ // '0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI',
395
+ "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI"
396
+ ),
378
397
  scetus: "0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",
379
- ssca: "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",
380
- swusdc: "0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
381
- swusdt: "0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
398
+ ssca: (
399
+ // TODO: use prod value
400
+ // '0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA',
401
+ "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA"
402
+ ),
403
+ swusdc: (
404
+ // TODO: use prod value
405
+ // '0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC',
406
+ "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC"
407
+ ),
408
+ swusdt: (
409
+ // TODO: use prod value
410
+ // '0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT',
411
+ "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT"
412
+ ),
382
413
  sweth: "0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
383
414
  safsui: "0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",
384
415
  shasui: "0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",
@@ -467,6 +498,12 @@ var POOL_ADDRESSES = {
467
498
  sca: {
468
499
  lendingPoolAddress: "0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",
469
500
  collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31"
501
+ },
502
+ fud: {
503
+ lendingPoolAddress: ""
504
+ },
505
+ deep: {
506
+ lendingPoolAddress: ""
470
507
  }
471
508
  };
472
509
 
@@ -489,7 +526,9 @@ var PYTH_FEED_IDS = {
489
526
  afsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
490
527
  hasui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
491
528
  vsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
492
- sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc"
529
+ sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
530
+ deep: "29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",
531
+ fud: "6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75"
493
532
  };
494
533
 
495
534
  // src/constants/queryKeys.ts
@@ -594,20 +633,33 @@ var TEST_ADDRESSES = {
594
633
  core: {
595
634
  // version:
596
635
  // '0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7',
597
- version: "0x6156d5cd1538bec8a167a40fe1209a4ec9cf8137921fe0a697f191ac561f0b09",
636
+ version: "0xd318de9b0f6873879a82cbfcc2daa1d1591a8b54e7cea9f4b567da63c692a52b",
598
637
  versionCap: "0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",
599
638
  // object:
600
639
  // '0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf',
601
- object: "0x87ddec2984645dbbe2403a509cc6edf393a43acdba9b77d45da2bcbefcf733c1",
640
+ object: "0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d",
602
641
  // market:
603
642
  // '0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9',
604
- market: "0x8606ed145cc887985b8ed793f7753ff5dc762a42c379dac035f568e1bac58490",
643
+ market: "0x9d6434e97f3f98fd9b0c0e1dca22632073985abcd22541feae7ee1e34cbe3af2",
605
644
  adminCap: "0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",
606
645
  coinDecimalsRegistry: "0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",
607
646
  // obligationAccessStore:
608
647
  // '0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9',
609
- obligationAccessStore: "0x48b472d68ca910c45f7f3b6c26836b6aa6d2569810d94b1b939023da05ae0a23",
648
+ obligationAccessStore: "0x46e9b44a77ee9c9d33cc2689ecdfbb8f681935cbc6bdf6ac3df048e396c36c82",
610
649
  coins: {
650
+ usdc: {
651
+ id: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7",
652
+ metaData: "0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6",
653
+ treasury: "",
654
+ oracle: {
655
+ supra: "",
656
+ switchboard: "",
657
+ pyth: {
658
+ feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
659
+ feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
660
+ }
661
+ }
662
+ },
611
663
  cetus: {
612
664
  id: "0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",
613
665
  metaData: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",
@@ -763,6 +815,19 @@ var TEST_ADDRESSES = {
763
815
  feedObject: "0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"
764
816
  }
765
817
  }
818
+ },
819
+ sbeth: {
820
+ id: "0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29",
821
+ metaData: "0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0",
822
+ treasury: "",
823
+ oracle: {
824
+ supra: "",
825
+ switchboard: "",
826
+ pyth: {
827
+ feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
828
+ feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
829
+ }
830
+ }
766
831
  }
767
832
  },
768
833
  oracles: {
@@ -796,7 +861,7 @@ var TEST_ADDRESSES = {
796
861
  upgradeCap: "0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"
797
862
  },
798
863
  protocol: {
799
- id: "0x87ddec2984645dbbe2403a509cc6edf393a43acdba9b77d45da2bcbefcf733c1",
864
+ id: "0xb784ea287d944e478a3ceaa071f8885072cce6b7224cf245914dc2f9963f460e",
800
865
  upgradeCap: "0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"
801
866
  },
802
867
  // protocol: {
@@ -814,7 +879,7 @@ var TEST_ADDRESSES = {
814
879
  // '0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f',
815
880
  // },
816
881
  query: {
817
- id: "0xe4f9d62d17746d5b9dbf0d5557747430021a71575780b515161210cdba0a4c1c",
882
+ id: "0x89706958f43fb170de134579e3fbc53972b946ee78bd2442d8e1adc36074fbdc",
818
883
  upgradeCap: "0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"
819
884
  },
820
885
  supra: { id: "", upgradeCap: "" },
@@ -850,6 +915,10 @@ var TEST_ADDRESSES = {
850
915
  "0xc3206071a8d43212efb6e3b5504f2321f8df97ab122b466c0bc7cfdf398dc13a"
851
916
  )
852
917
  },
918
+ susdc: {
919
+ id: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
920
+ rewardPoolId: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166"
921
+ },
853
922
  swusdc: {
854
923
  // id: '0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0',
855
924
  id: "0xf1b383b9cf2e9f515fc69567df1053098f273849d09cd84b0278a773429bd2b2",
@@ -898,37 +967,37 @@ var TEST_ADDRESSES = {
898
967
  config: ""
899
968
  },
900
969
  borrowIncentive: {
901
- id: "0x6152f696fc3a658f33c4b891764731a59153125ffedfa8bff7167c42823f58a9",
902
- adminCap: "0xc486afa253646f4d381e81d7f1df8aa4723b845a6bb356f69bad635ffefffe2c",
903
- object: "0x002875153e09f8145ab63527bc85c00f2bd102e12f9573c47f8cdf1a1cb62934",
904
- query: "0x529edc54a3dce2207703ceebbccb0ac14133f7825c1f528775ba0d85a4063489",
905
- incentivePools: "0x6547e143d406b5ccd5f46aae482497de279cc1a68c406f701df70a05f9212ab4",
906
- incentiveAccounts: "0xc4701fdbc1c92f9a636d334d66012b3027659e9fb8aff27279a82edfb6b77d02",
907
- config: "0xdf5d04b4691cc67e82fd4db8394d89ff44823a9de29716c924f74bb4f11cc1f7"
970
+ id: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
971
+ adminCap: "0x56ac8e6f2b360b2b35c0168d72cc6cd17d9592afb83709865cb87af24bb2025b",
972
+ object: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
973
+ query: "0x8e0d00f8ff1199d7c5fe56cea0e901a525daeefff0445a1635ace8282ae3302c",
974
+ incentivePools: "0x9d564c93128c6ab0c0d3e050a47f11df0b91494f3bb779bdc1301c1c637f15eb",
975
+ incentiveAccounts: "0x09e6040e798246de04941bc79a3ba62d3eca6d7a218cc30f21fb07f478fa2926",
976
+ config: "0x43d4ca1dfc90b161c4240facd119e74e4b850cca2957f88c2ec289c9380da064"
908
977
  },
909
978
  referral: {
910
- id: "0xa3654ebb63eb06c0f4ff52f8aa6512df9f164f7772bdf15dac3709bd3798dda9",
979
+ id: "0x1bf5a8ce77050d8052549d743e16b469f15aa6b81b752b78b6ebb65179665f5a",
911
980
  object: "0x5658d4bf5ddcba27e4337b4262108b3ad1716643cac8c2054ac341538adc72ec",
912
981
  adminCap: "0xc5dc06b9074291259f2cac460c940012c781c4430e42125c541cc43101c3bcbd",
913
- referralBindings: "0xf63299d58789d99de94092b9011323466e55ca0c1ea1a7a3786a589af46e1c09",
914
- bindingTableId: "0x1c8202b17267ec8d6cf97ca013615354181a04f179570e42601ff2dae19294b1",
915
- referralRevenuePool: "0x6abd852caf90769c1b185cdf636d841673fa95528f0550f018b8a138bd283c07",
982
+ referralBindings: "0xcf184487782bed962bf678001efe775d31fb94b9992333a57594cf15d79d5ced",
983
+ bindingTableId: "0x41a50e258c0a266ce84e0e1a618dbf70b878cc943909e613089a50afcceb2bc0",
984
+ referralRevenuePool: "0xc24e3e5e37032f29a3dd91a9a1f057af8821b7e6c148e9683900ac8b6d30f0c6",
916
985
  revenueTableId: "0x595baa3654c297bff84ab7786a2d250f019cefc66e8df8e89fd9d41e02bd30dd",
917
- referralTiers: "0x962cb903d8d7346190c5204785ccbb91b61086aa764f674c8145df82335cf83e",
986
+ referralTiers: "0x144350f3db9b46d11b140084cd54e6de0b9c3b8d265ce8059b51d0ef58ea464b",
918
987
  tiersTableId: "0xeac755a7a8b7798530905ac79e8c114f19d0f130f6eab012954f08faac29c75d",
919
988
  // authorizedWitnessList:
920
989
  // '0xf21b0ed043c9bb70842c0129159f4943dbcc3c9ef2f2f808af65f8be25cfd20e',
921
990
  authorizedWitnessList: "0x9d6223dc52015b8a3986a573590ef2af8f1b8f3e4685513888c052f001b87e7f",
922
- version: "0x1bd4b7285f72e11c316b828c7c47b3f4da18dcec9f9b3dba6d8629cbb6f93e5e"
991
+ version: "0x3545849eb97723e676a476ec9d4fe5f2eb0eb2c6b78972851114fd4c7ed4639f"
923
992
  },
924
993
  vesca: {
925
- id: "0xb15b6e0cdd85afb5028bea851dd249405e734d800a259147bbc24980629723a4",
926
- object: "0xb15b6e0cdd85afb5028bea851dd249405e734d800a259147bbc24980629723a4",
994
+ id: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
995
+ object: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
927
996
  adminCap: "0x8ffa76135c5b85c5fbd73a6448a4a733d826cb63a267ab817656acb77c72d4a5",
928
- tableId: "0xe3153b2bf124be0b86cb8bd468346a861efd0da52fc42197b54d2f616488a311",
929
- table: "0x611cb8d9d4d90867467b5ebdf4cc447a0047ed5b01334a28a29fcfe733e3d609",
930
- treasury: "0xe8c112c09b88158dc6c8e23d1fbae5b3c7136cdee54b7dafc08e65db28c4a5bc",
931
- config: "0xe0a2ff281e73c1d53cfa85807080f87e833e4f1a7f93dcf8800b3865269a76b9"
997
+ tableId: "0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",
998
+ table: "0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",
999
+ treasury: "0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",
1000
+ config: "0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"
932
1001
  },
933
1002
  loyaltyProgram: {
934
1003
  id: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
@@ -937,27 +1006,27 @@ var TEST_ADDRESSES = {
937
1006
  userRewardTableId: "0x748a80395849ed37db1b0e14f2ab5d1d96458d2359ab3a84eb079d0f4ac7cf2e"
938
1007
  },
939
1008
  scoin: {
940
- id: "0xad2ca2aa5089df94bb2d444d5eb3520378c2f2dfb3a0bd2a2c994145ac4b0a53",
1009
+ id: "0x773dab39c90fe05439b06a2d061795e52a974ff92c2aef90b2ee467acf7f33c8",
941
1010
  coins: {
942
1011
  ssui: {
943
- coinType: "0xfac769100bccc0caebcf4f4e2d00ac2f8883f07f724be28940df90605f5e7e9a::scallop_sui::SCALLOP_SUI",
944
- treasury: "0x9cb4551b36c17d37e19d700147fa819ea1c487ff8bcf18374de2cceb2e9d4845"
1012
+ coinType: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
1013
+ treasury: "0x0e499640a12c38dd9cc44532f5bc5fd1b6da86d2f9a8810357250f4b26e9e5c7"
945
1014
  },
946
1015
  scetus: {
947
1016
  coinType: "0x8b71e6d323ed78515af2bead13bf3d0da1562ba4a99234eb7c4f14fd39ef0427::scallop_cetus::SCALLOP_CETUS",
948
1017
  treasury: "0xd786f4b2d26278cc7911a3445b1b085eab60f269ef9dbb6b87e803d52f155003"
949
1018
  },
950
1019
  ssca: {
951
- coinType: "0x0a9d3c6c9af9f6e8def82921541bcbd17f73ed31bed3adcb684f2a4c267e42f0::scallop_sca::SCALLOP_SCA",
952
- treasury: "0xe818636d1d6c46d6ea1a2dce9d94696d7cbc18ce27451b603eeaa47aba8d75e0"
1020
+ coinType: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
1021
+ treasury: "0x5f1c5de1df7341075d119570269b7b452af50afe8363080638f1ae29a554c038"
953
1022
  },
954
1023
  swusdc: {
955
- coinType: "0xaedc3ab75db8680b81a755015fa90124d217be93457b893c05bac033817defaf::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
956
- treasury: "0xfc6971648f867f7fd6928d1b873af71577e2eaf2c7543ef8bc82c431d833ae78"
1024
+ coinType: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
1025
+ treasury: "0x471fbab72578bab577263006fe32543b6e76153fffa2bef69affe4bc4934258f"
957
1026
  },
958
1027
  swusdt: {
959
- coinType: "0xbf02fc87ddc104b342ad8414c85ceadf5b0c823c055a06fb0ed776272c01a52a::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
960
- treasury: "0xb9593e2c3a0ba796ee815012b75ae46468ea78cda0188b9ac6816efe65503521"
1028
+ coinType: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
1029
+ treasury: "0x921a4ed4bb4b4f11f51a462c83f4c0f6b60a90e441d1bc0d26d6fd893146bf4d"
961
1030
  },
962
1031
  sweth: {
963
1032
  coinType: "0x27d54f43e3eda701be56b82e5756e41c84467cd202f5cf713d5f9e45a9f1b6bc::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
@@ -973,7 +1042,11 @@ var TEST_ADDRESSES = {
973
1042
  },
974
1043
  svsui: {
975
1044
  coinType: "0x97023a317320c4498cc4cd239dd02fd30c28246e5e8f81325d63f2bd8d70f6b3::scallop_v_sui::SCALLOP_V_SUI",
976
- treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6\u0192"
1045
+ treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6"
1046
+ },
1047
+ ssbeth: {
1048
+ coinType: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
1049
+ treasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed"
977
1050
  }
978
1051
  }
979
1052
  }
@@ -2677,23 +2750,148 @@ var supplyLimitZod = import_zod.z.object({
2677
2750
  value: import_zod.z.string()
2678
2751
  })
2679
2752
  });
2680
- var SUPPLY_LIMIT_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey";
2753
+ var supplyLimitKeyType = `0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d::market_dynamic_keys::SupplyLimitKey`;
2681
2754
  var getSupplyLimit = async (utils, poolName) => {
2682
- const poolCoinType = utils.parseCoinType(poolName).slice(2);
2683
- const marketObject = utils.address.get("core.market");
2684
- if (!marketObject)
2685
- return null;
2686
- const object = await utils.cache.queryGetDynamicFieldObject({
2687
- parentId: marketObject,
2688
- name: {
2689
- type: SUPPLY_LIMIT_KEY,
2690
- value: poolCoinType
2755
+ try {
2756
+ const poolCoinType = utils.parseCoinType(poolName).slice(2);
2757
+ const marketObject = utils.address.get("core.market");
2758
+ if (!marketObject)
2759
+ return null;
2760
+ const object = await utils.cache.queryGetDynamicFieldObject({
2761
+ parentId: marketObject,
2762
+ name: {
2763
+ type: supplyLimitKeyType,
2764
+ value: poolCoinType
2765
+ }
2766
+ });
2767
+ const parsedData = supplyLimitZod.safeParse(object?.data?.content);
2768
+ if (!parsedData.success)
2769
+ return null;
2770
+ return parsedData.data.fields.value;
2771
+ } catch (e) {
2772
+ console.error(`Error in getSupplyLimit for ${poolName}: ${e.message}`);
2773
+ return "0";
2774
+ }
2775
+ };
2776
+
2777
+ // src/queries/isolatedAssetQuery.ts
2778
+ var import_zod2 = require("zod");
2779
+ var isolatedAssetZod = import_zod2.z.object({
2780
+ dataType: import_zod2.z.string(),
2781
+ type: import_zod2.z.string(),
2782
+ hasPublicTransfer: import_zod2.z.boolean(),
2783
+ fields: import_zod2.z.object({
2784
+ id: import_zod2.z.object({
2785
+ id: import_zod2.z.string()
2786
+ }),
2787
+ name: import_zod2.z.object({
2788
+ type: import_zod2.z.string()
2789
+ }),
2790
+ value: import_zod2.z.boolean()
2791
+ })
2792
+ });
2793
+ var isolatedAssetKeyType = `0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d::market_dynamic_keys::IsolatedAssetKey`;
2794
+ var getIsolatedAssets = async (address) => {
2795
+ try {
2796
+ const marketObject = address.get("core.market");
2797
+ const isolatedAssets = [];
2798
+ if (!marketObject)
2799
+ return isolatedAssets;
2800
+ let hasNextPage = false;
2801
+ let nextCursor = null;
2802
+ const isIsolatedDynamicField = (dynamicField) => {
2803
+ return dynamicField.name.type === isolatedAssetKeyType;
2804
+ };
2805
+ do {
2806
+ const response = await address.cache.queryGetDynamicFields({
2807
+ parentId: marketObject,
2808
+ cursor: nextCursor,
2809
+ limit: 10
2810
+ });
2811
+ if (!response)
2812
+ break;
2813
+ const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
2814
+ isolatedAssets.push(...isolatedAssetCoinTypes);
2815
+ if (response && response.hasNextPage && response.nextCursor) {
2816
+ hasNextPage = true;
2817
+ nextCursor = response.nextCursor;
2818
+ } else {
2819
+ hasNextPage = false;
2820
+ }
2821
+ } while (hasNextPage);
2822
+ return isolatedAssets;
2823
+ } catch (e) {
2824
+ console.error(e);
2825
+ return [];
2826
+ }
2827
+ };
2828
+ var isIsolatedAsset = async (utils, coinName) => {
2829
+ try {
2830
+ const marketObject = utils.address.get("core.market");
2831
+ const cachedData = utils.address.cache.queryClient.getQueryData([
2832
+ "getDynamicFields",
2833
+ marketObject
2834
+ ]);
2835
+ if (cachedData) {
2836
+ const coinType2 = utils.parseCoinType(coinName);
2837
+ return cachedData.includes(coinType2);
2691
2838
  }
2692
- });
2693
- const parsedData = supplyLimitZod.safeParse(object?.data?.content);
2694
- if (!parsedData.success)
2695
- return null;
2696
- return parsedData.data.fields.value;
2839
+ const coinType = utils.parseCoinType(coinName).slice(2);
2840
+ const object = await utils.cache.queryGetDynamicFieldObject({
2841
+ parentId: marketObject,
2842
+ name: {
2843
+ type: isolatedAssetKeyType,
2844
+ value: coinType
2845
+ }
2846
+ });
2847
+ const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
2848
+ if (!parsedData.success)
2849
+ return false;
2850
+ return parsedData.data.fields.value;
2851
+ } catch (e) {
2852
+ console.error(e);
2853
+ return false;
2854
+ }
2855
+ };
2856
+
2857
+ // src/queries/borrowLimitQuery.ts
2858
+ var import_zod3 = require("zod");
2859
+ var borrowLimitZod = import_zod3.z.object({
2860
+ dataType: import_zod3.z.string(),
2861
+ type: import_zod3.z.string(),
2862
+ hasPublicTransfer: import_zod3.z.boolean(),
2863
+ fields: import_zod3.z.object({
2864
+ id: import_zod3.z.object({
2865
+ id: import_zod3.z.string()
2866
+ }),
2867
+ name: import_zod3.z.object({
2868
+ type: import_zod3.z.string()
2869
+ }),
2870
+ value: import_zod3.z.string()
2871
+ })
2872
+ });
2873
+ var borrowLimitKeyType = `0xb784ea287d944e478a3ceaa071f8885072cce6b7224cf245914dc2f9963f460e::market_dynamic_keys::BorrowLimitKey`;
2874
+ var getBorrowLimit = async (utils, poolName) => {
2875
+ try {
2876
+ const poolCoinType = utils.parseCoinType(poolName).slice(2);
2877
+ const marketObject = utils.address.get("core.market");
2878
+ if (!marketObject)
2879
+ return null;
2880
+ const object = await utils.cache.queryGetDynamicFieldObject({
2881
+ parentId: marketObject,
2882
+ name: {
2883
+ type: borrowLimitKeyType,
2884
+ value: poolCoinType
2885
+ }
2886
+ });
2887
+ const parsedData = borrowLimitZod.safeParse(object?.data?.content);
2888
+ if (!parsedData.success)
2889
+ return null;
2890
+ return parsedData.data.fields.value;
2891
+ } catch (e) {
2892
+ console.error(`Error in getBorrowLimit for ${poolName}: ${e.message}`);
2893
+ return "0";
2894
+ }
2697
2895
  };
2698
2896
 
2699
2897
  // src/queries/coreQuery.ts
@@ -2762,6 +2960,9 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2762
2960
  const maxSupplyCoin = (0, import_bignumber3.default)(
2763
2961
  await getSupplyLimit(query.utils, poolCoinName) ?? "0"
2764
2962
  ).shiftedBy(-coinDecimal).toNumber();
2963
+ const maxBorrowCoin = (0, import_bignumber3.default)(
2964
+ await getBorrowLimit(query.utils, poolCoinName) ?? "0"
2965
+ ).shiftedBy(-coinDecimal).toNumber();
2765
2966
  pools[poolCoinName] = {
2766
2967
  coinName: poolCoinName,
2767
2968
  symbol: query.utils.parseSymbol(poolCoinName),
@@ -2780,9 +2981,10 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2780
2981
  borrowFee: parsedMarketPoolData.borrowFee,
2781
2982
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
2782
2983
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
2783
- // isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2784
- isIsolated: false,
2984
+ isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2985
+ // isIsolated: false,
2785
2986
  maxSupplyCoin,
2987
+ maxBorrowCoin,
2786
2988
  ...calculatedMarketPoolData
2787
2989
  };
2788
2990
  }
@@ -2820,6 +3022,7 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
2820
3022
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
2821
3023
  liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
2822
3024
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3025
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
2823
3026
  ...calculatedMarketCollateralData
2824
3027
  };
2825
3028
  }
@@ -2867,85 +3070,76 @@ var getMarketPools = async (query, poolCoinNames = [...SUPPORT_POOLS], indexer =
2867
3070
  return marketPools;
2868
3071
  };
2869
3072
  var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
2870
- let marketPool;
2871
- let balanceSheet;
2872
- let borrowIndex;
2873
- let interestModel;
2874
- let borrowFeeRate;
2875
- coinPrice = coinPrice ?? (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
2876
- if (indexer) {
2877
- const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
2878
- marketPoolIndexer.coinPrice = coinPrice ?? marketPoolIndexer.coinPrice;
2879
- marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
2880
- marketPoolIndexer.coinName
2881
- );
2882
- return marketPoolIndexer;
2883
- }
2884
- const marketId = query.address.get("core.market");
2885
- marketObject = marketObject ?? (await query.cache.queryGetObject(marketId, {
2886
- showContent: true
2887
- }))?.data;
2888
- if (marketObject) {
2889
- if (marketObject.content && "fields" in marketObject.content) {
2890
- const fields = marketObject.content.fields;
2891
- const coinType = query.utils.parseCoinType(poolCoinName);
2892
- const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
2893
- const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2894
- parentId: balanceSheetParentId,
2895
- name: {
2896
- type: "0x1::type_name::TypeName",
2897
- value: {
2898
- name: coinType.substring(2)
2899
- }
3073
+ try {
3074
+ coinPrice = coinPrice || (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
3075
+ if (indexer) {
3076
+ const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
3077
+ if (!marketPoolIndexer) {
3078
+ return void 0;
3079
+ }
3080
+ marketPoolIndexer.coinPrice = coinPrice ?? marketPoolIndexer.coinPrice;
3081
+ marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
3082
+ marketPoolIndexer.coinName
3083
+ );
3084
+ return marketPoolIndexer;
3085
+ }
3086
+ const marketId = query.address.get("core.market");
3087
+ marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
3088
+ showContent: true
3089
+ }))?.data;
3090
+ if (!(marketObject && marketObject.content?.dataType === "moveObject"))
3091
+ throw new Error(`Failed to fetch marketObject`);
3092
+ const fields = marketObject.content.fields;
3093
+ const coinType = query.utils.parseCoinType(poolCoinName);
3094
+ const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
3095
+ const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3096
+ parentId: balanceSheetParentId,
3097
+ name: {
3098
+ type: "0x1::type_name::TypeName",
3099
+ value: {
3100
+ name: coinType.substring(2)
2900
3101
  }
2901
- });
2902
- if (!balanceSheetDynamicFieldObjectResponse)
2903
- throw new Error(
2904
- `Failed to fetch balanceSheetDynamicFieldObjectResponse for ${poolCoinName}`
2905
- );
2906
- const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse.data;
2907
- if (balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content) {
2908
- const dynamicFields = balanceSheetDynamicFieldObject.content.fields;
2909
- balanceSheet = dynamicFields.value.fields;
2910
3102
  }
2911
- const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
2912
- const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2913
- parentId: borrowIndexParentId,
2914
- name: {
2915
- type: "0x1::type_name::TypeName",
2916
- value: {
2917
- name: coinType.substring(2)
2918
- }
3103
+ });
3104
+ const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
3105
+ if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
3106
+ throw new Error(
3107
+ `Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
3108
+ );
3109
+ const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
3110
+ const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
3111
+ const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3112
+ parentId: borrowIndexParentId,
3113
+ name: {
3114
+ type: "0x1::type_name::TypeName",
3115
+ value: {
3116
+ name: coinType.substring(2)
2919
3117
  }
2920
- });
2921
- if (!borrowIndexDynamicFieldObjectResponse)
2922
- throw new Error(
2923
- `Failed to fetch borrowIndexDynamicFieldObjectResponse for ${poolCoinName}`
2924
- );
2925
- const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse.data;
2926
- if (borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content) {
2927
- const dynamicFields = borrowIndexDynamicFieldObject.content.fields;
2928
- borrowIndex = dynamicFields.value.fields;
2929
3118
  }
2930
- const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
2931
- const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2932
- parentId: interestModelParentId,
2933
- name: {
2934
- type: "0x1::type_name::TypeName",
2935
- value: {
2936
- name: coinType.substring(2)
2937
- }
3119
+ });
3120
+ const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
3121
+ if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
3122
+ throw new Error(
3123
+ `Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
3124
+ );
3125
+ const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
3126
+ const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
3127
+ const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3128
+ parentId: interestModelParentId,
3129
+ name: {
3130
+ type: "0x1::type_name::TypeName",
3131
+ value: {
3132
+ name: coinType.substring(2)
2938
3133
  }
2939
- });
2940
- if (!interestModelDynamicFieldObjectResponse)
2941
- throw new Error(
2942
- `Failed to fetch interestModelDynamicFieldObjectResponse for ${poolCoinName}`
2943
- );
2944
- const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse.data;
2945
- if (interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content) {
2946
- const dynamicFields = interestModelDynamicFieldObject.content.fields;
2947
- interestModel = dynamicFields.value.fields;
2948
3134
  }
3135
+ });
3136
+ const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse?.data;
3137
+ if (!(interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content))
3138
+ throw new Error(
3139
+ `Failed to fetch interestModelDynamicFieldObject for ${poolCoinName}: ${interestModelDynamicFieldObject}`
3140
+ );
3141
+ const interestModel = interestModelDynamicFieldObject.content.fields.value.fields;
3142
+ const getBorrowFee = async () => {
2949
3143
  const borrowFeeDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2950
3144
  parentId: marketId,
2951
3145
  name: {
@@ -2957,18 +3151,11 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2957
3151
  }
2958
3152
  }
2959
3153
  });
2960
- if (!borrowFeeDynamicFieldObjectResponse)
2961
- throw new Error(
2962
- `Failed to fetch borrowFeeDynamicFieldObjectResponse for ${poolCoinName}`
2963
- );
2964
- const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse.data;
2965
- if (borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content) {
2966
- const dynamicFields = borrowFeeDynamicFieldObject.content.fields;
2967
- borrowFeeRate = dynamicFields.value.fields;
2968
- }
2969
- }
2970
- }
2971
- if (balanceSheet && borrowIndex && interestModel && (USE_TEST_ADDRESS || borrowFeeRate)) {
3154
+ const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
3155
+ if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
3156
+ return { value: "0" };
3157
+ return borrowFeeDynamicFieldObject.content.fields.value.fields;
3158
+ };
2972
3159
  const parsedMarketPoolData = parseOriginMarketPoolData({
2973
3160
  type: interestModel.type.fields,
2974
3161
  maxBorrowRate: interestModel.max_borrow_rate.fields,
@@ -2982,7 +3169,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2982
3169
  reserve: balanceSheet.revenue,
2983
3170
  reserveFactor: interestModel.revenue_factor.fields,
2984
3171
  borrowWeight: interestModel.borrow_weight.fields,
2985
- borrowFeeRate: borrowFeeRate ?? { value: "0" },
3172
+ borrowFeeRate: await getBorrowFee(),
2986
3173
  baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
2987
3174
  borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
2988
3175
  borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
@@ -2998,7 +3185,10 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2998
3185
  const maxSupplyCoin = (0, import_bignumber3.default)(
2999
3186
  await getSupplyLimit(query.utils, poolCoinName) ?? "0"
3000
3187
  ).shiftedBy(-coinDecimal).toNumber();
3001
- marketPool = {
3188
+ const maxBorrowCoin = (0, import_bignumber3.default)(
3189
+ await getBorrowLimit(query.utils, poolCoinName) ?? "0"
3190
+ ).shiftedBy(-coinDecimal).toNumber();
3191
+ return {
3002
3192
  coinName: poolCoinName,
3003
3193
  symbol: query.utils.parseSymbol(poolCoinName),
3004
3194
  coinType: query.utils.parseCoinType(poolCoinName),
@@ -3017,12 +3207,13 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
3017
3207
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
3018
3208
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
3019
3209
  maxSupplyCoin,
3020
- // isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3021
- isIsolated: false,
3210
+ maxBorrowCoin,
3211
+ isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
3022
3212
  ...calculatedMarketPoolData
3023
3213
  };
3214
+ } catch (e) {
3215
+ console.error(e.message);
3024
3216
  }
3025
- return marketPool;
3026
3217
  };
3027
3218
  var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
3028
3219
  const marketId = query.address.get("core.market");
@@ -3071,85 +3262,76 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
3071
3262
  );
3072
3263
  return marketCollateralIndexer;
3073
3264
  }
3074
- let marketCollateral;
3075
- let riskModel;
3076
- let collateralStat;
3077
3265
  const marketId = query.address.get("core.market");
3078
3266
  marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
3079
3267
  showContent: true
3080
3268
  }))?.data;
3081
- if (marketObject) {
3082
- if (marketObject.content && "fields" in marketObject.content) {
3083
- const fields = marketObject.content.fields;
3084
- const coinType = query.utils.parseCoinType(collateralCoinName);
3085
- const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
3086
- const riskModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3087
- parentId: riskModelParentId,
3088
- name: {
3089
- type: "0x1::type_name::TypeName",
3090
- value: {
3091
- name: coinType.substring(2)
3092
- }
3093
- }
3094
- });
3095
- if (!riskModelDynamicFieldObjectResponse)
3096
- return void 0;
3097
- const riskModelDynamicFieldObject = riskModelDynamicFieldObjectResponse.data;
3098
- if (riskModelDynamicFieldObject && riskModelDynamicFieldObject.content && "fields" in riskModelDynamicFieldObject.content) {
3099
- const dynamicFields = riskModelDynamicFieldObject.content.fields;
3100
- riskModel = dynamicFields.value.fields;
3269
+ if (!(marketObject && marketObject.content?.dataType === "moveObject"))
3270
+ throw new Error(`Failed to fetch marketObject`);
3271
+ const fields = marketObject.content.fields;
3272
+ const coinType = query.utils.parseCoinType(collateralCoinName);
3273
+ const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
3274
+ const riskModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3275
+ parentId: riskModelParentId,
3276
+ name: {
3277
+ type: "0x1::type_name::TypeName",
3278
+ value: {
3279
+ name: coinType.substring(2)
3101
3280
  }
3102
- const collateralStatParentId = fields.collateral_stats.fields.table.fields.id.id;
3103
- const collateralStatDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3104
- parentId: collateralStatParentId,
3105
- name: {
3106
- type: "0x1::type_name::TypeName",
3107
- value: {
3108
- name: coinType.substring(2)
3109
- }
3110
- }
3111
- });
3112
- if (!collateralStatDynamicFieldObjectResponse)
3113
- return void 0;
3114
- const collateralStatDynamicFieldObject = collateralStatDynamicFieldObjectResponse.data;
3115
- if (collateralStatDynamicFieldObject && collateralStatDynamicFieldObject.content && "fields" in collateralStatDynamicFieldObject.content) {
3116
- const dynamicFields = collateralStatDynamicFieldObject.content.fields;
3117
- collateralStat = dynamicFields.value.fields;
3281
+ }
3282
+ });
3283
+ const riskModelDynamicFieldObject = riskModelDynamicFieldObjectResponse?.data;
3284
+ if (!(riskModelDynamicFieldObject && riskModelDynamicFieldObject.content && "fields" in riskModelDynamicFieldObject.content))
3285
+ throw new Error(
3286
+ `Failed to fetch riskModelDynamicFieldObject for ${riskModelDynamicFieldObjectResponse?.error?.code.toString()}: `
3287
+ );
3288
+ const riskModel = riskModelDynamicFieldObject.content.fields.value.fields;
3289
+ const collateralStatParentId = fields.collateral_stats.fields.table.fields.id.id;
3290
+ const collateralStatDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
3291
+ parentId: collateralStatParentId,
3292
+ name: {
3293
+ type: "0x1::type_name::TypeName",
3294
+ value: {
3295
+ name: coinType.substring(2)
3118
3296
  }
3119
3297
  }
3120
- }
3121
- if (riskModel && collateralStat) {
3122
- const parsedMarketCollateralData = parseOriginMarketCollateralData({
3123
- type: riskModel.type.fields,
3124
- collateralFactor: riskModel.collateral_factor.fields,
3125
- liquidationFactor: riskModel.liquidation_factor.fields,
3126
- liquidationDiscount: riskModel.liquidation_discount.fields,
3127
- liquidationPanelty: riskModel.liquidation_penalty.fields,
3128
- liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
3129
- maxCollateralAmount: riskModel.max_collateral_amount,
3130
- totalCollateralAmount: collateralStat.amount
3131
- });
3132
- const calculatedMarketCollateralData = calculateMarketCollateralData(
3133
- query.utils,
3134
- parsedMarketCollateralData
3298
+ });
3299
+ const collateralStatDynamicFieldObject = collateralStatDynamicFieldObjectResponse?.data;
3300
+ if (!(collateralStatDynamicFieldObject && collateralStatDynamicFieldObject.content && "fields" in collateralStatDynamicFieldObject.content))
3301
+ throw new Error(
3302
+ `Failed to fetch collateralStatDynamicFieldObject for ${collateralCoinName}: ${collateralStatDynamicFieldObjectResponse?.error?.code.toString()}`
3135
3303
  );
3136
- marketCollateral = {
3137
- coinName: collateralCoinName,
3138
- symbol: query.utils.parseSymbol(collateralCoinName),
3139
- coinType: query.utils.parseCoinType(collateralCoinName),
3140
- marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
3141
- coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
3142
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
3143
- coinPrice: coinPrice ?? 0,
3144
- collateralFactor: parsedMarketCollateralData.collateralFactor,
3145
- liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3146
- liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3147
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3148
- liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3149
- ...calculatedMarketCollateralData
3150
- };
3151
- }
3152
- return marketCollateral;
3304
+ const collateralStat = collateralStatDynamicFieldObject.content.fields.value.fields;
3305
+ const parsedMarketCollateralData = parseOriginMarketCollateralData({
3306
+ type: riskModel.type.fields,
3307
+ collateralFactor: riskModel.collateral_factor.fields,
3308
+ liquidationFactor: riskModel.liquidation_factor.fields,
3309
+ liquidationDiscount: riskModel.liquidation_discount.fields,
3310
+ liquidationPanelty: riskModel.liquidation_penalty.fields,
3311
+ liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
3312
+ maxCollateralAmount: riskModel.max_collateral_amount,
3313
+ totalCollateralAmount: collateralStat.amount
3314
+ });
3315
+ const calculatedMarketCollateralData = calculateMarketCollateralData(
3316
+ query.utils,
3317
+ parsedMarketCollateralData
3318
+ );
3319
+ return {
3320
+ coinName: collateralCoinName,
3321
+ symbol: query.utils.parseSymbol(collateralCoinName),
3322
+ coinType: query.utils.parseCoinType(collateralCoinName),
3323
+ marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
3324
+ coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
3325
+ coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
3326
+ coinPrice: coinPrice ?? 0,
3327
+ collateralFactor: parsedMarketCollateralData.collateralFactor,
3328
+ liquidationFactor: parsedMarketCollateralData.liquidationFactor,
3329
+ liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
3330
+ liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
3331
+ liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
3332
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
3333
+ ...calculatedMarketCollateralData
3334
+ };
3153
3335
  };
3154
3336
  var getObligations = async ({
3155
3337
  address
@@ -3327,98 +3509,18 @@ var getFlashLoanFees = async (query, assetNames) => {
3327
3509
  );
3328
3510
  };
3329
3511
 
3330
- // src/queries/isolatedAssetQuery.ts
3331
- var import_zod2 = require("zod");
3332
- var isolatedAssetZod = import_zod2.z.object({
3333
- dataType: import_zod2.z.string(),
3334
- type: import_zod2.z.string(),
3335
- hasPublicTransfer: import_zod2.z.boolean(),
3336
- fields: import_zod2.z.object({
3337
- id: import_zod2.z.object({
3338
- id: import_zod2.z.string()
3339
- }),
3340
- name: import_zod2.z.object({
3341
- type: import_zod2.z.string()
3342
- }),
3343
- value: import_zod2.z.boolean()
3344
- })
3345
- });
3346
- var ISOLATED_ASSET_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::IsolatedAssetKey";
3347
- var getIsolatedAssets = async (address) => {
3348
- try {
3349
- const marketObject = address.get("core.market");
3350
- const isolatedAssets = [];
3351
- if (!marketObject)
3352
- return isolatedAssets;
3353
- let hasNextPage = false;
3354
- let nextCursor = null;
3355
- const isIsolatedDynamicField = (dynamicField) => {
3356
- return dynamicField.name.type === ISOLATED_ASSET_KEY;
3357
- };
3358
- do {
3359
- const response = await address.cache.queryGetDynamicFields({
3360
- parentId: marketObject,
3361
- cursor: nextCursor,
3362
- limit: 10
3363
- });
3364
- if (!response)
3365
- break;
3366
- const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
3367
- isolatedAssets.push(...isolatedAssetCoinTypes);
3368
- if (response && response.hasNextPage && response.nextCursor) {
3369
- hasNextPage = true;
3370
- nextCursor = response.nextCursor;
3371
- } else {
3372
- hasNextPage = false;
3373
- }
3374
- } while (hasNextPage);
3375
- return isolatedAssets;
3376
- } catch (e) {
3377
- console.error(e);
3378
- return [];
3379
- }
3380
- };
3381
- var isIsolatedAsset = async (utils, coinName) => {
3382
- try {
3383
- const marketObject = utils.address.get("core.market");
3384
- const cachedData = utils.address.cache.queryClient.getQueryData([
3385
- "getDynamicFields",
3386
- marketObject
3387
- ]);
3388
- if (cachedData) {
3389
- const coinType2 = utils.parseCoinType(coinName);
3390
- return cachedData.includes(coinType2);
3391
- }
3392
- const coinType = utils.parseCoinType(coinName).slice(2);
3393
- const object = await utils.cache.queryGetDynamicFieldObject({
3394
- parentId: marketObject,
3395
- name: {
3396
- type: ISOLATED_ASSET_KEY,
3397
- value: coinType
3398
- }
3399
- });
3400
- const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
3401
- if (!parsedData.success)
3402
- return false;
3403
- return parsedData.data.fields.value;
3404
- } catch (e) {
3405
- console.error(e);
3406
- return false;
3407
- }
3408
- };
3409
-
3410
3512
  // src/queries/loyaltyProgramQuery.ts
3411
3513
  var import_bignumber4 = __toESM(require("bignumber.js"));
3412
- var import_zod3 = require("zod");
3413
- var rewardPoolFieldsZod = import_zod3.z.object({
3414
- balance: import_zod3.z.string(),
3415
- enable_claim: import_zod3.z.boolean()
3514
+ var import_zod4 = require("zod");
3515
+ var rewardPoolFieldsZod = import_zod4.z.object({
3516
+ balance: import_zod4.z.string(),
3517
+ enable_claim: import_zod4.z.boolean()
3416
3518
  }).transform((value) => ({
3417
3519
  totalPoolReward: (0, import_bignumber4.default)(value.balance).shiftedBy(-9).toNumber(),
3418
3520
  isClaimEnabled: value.enable_claim
3419
3521
  }));
3420
- var userRewardFieldsZod = import_zod3.z.object({
3421
- value: import_zod3.z.string()
3522
+ var userRewardFieldsZod = import_zod4.z.object({
3523
+ value: import_zod4.z.string()
3422
3524
  }).transform((value) => (0, import_bignumber4.default)(value.value).shiftedBy(-9).toNumber());
3423
3525
  var getLoyaltyProgramInformations = async (query, veScaKey) => {
3424
3526
  const rewardPool = query.address.get("loyaltyProgram.rewardPool");
@@ -4227,7 +4329,7 @@ var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPr
4227
4329
  const coinName = query.utils.parseCoinName(marketCoinName);
4228
4330
  marketPool = marketPool || await query.getMarketPool(coinName, indexer);
4229
4331
  if (!marketPool) {
4230
- throw new Error(`Fail to fetch marketPool for ${coinName}`);
4332
+ throw new Error(`Failed to fetch marketPool for ${marketCoinName}`);
4231
4333
  }
4232
4334
  const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
4233
4335
  const rewardPoolId = query.address.get(
@@ -4501,7 +4603,7 @@ var getStakeRewardPool = async ({
4501
4603
  var import_bignumber7 = __toESM(require("bignumber.js"));
4502
4604
  var import_sui_kit3 = require("@scallop-io/sui-kit");
4503
4605
  var import_bcs2 = require("@mysten/sui/bcs");
4504
- var import_zod4 = require("zod");
4606
+ var import_zod5 = require("zod");
4505
4607
  var import_assert2 = __toESM(require("assert"));
4506
4608
  var getVescaKeys = async (utils, ownerAddress) => {
4507
4609
  const owner = ownerAddress || utils.suiKit.currentAddress();
@@ -4550,10 +4652,10 @@ var getVeScas = async ({
4550
4652
  }
4551
4653
  return result;
4552
4654
  };
4553
- var SuiObjectRefZod = import_zod4.z.object({
4554
- objectId: import_zod4.z.string(),
4555
- digest: import_zod4.z.string(),
4556
- version: import_zod4.z.string()
4655
+ var SuiObjectRefZod = import_zod5.z.object({
4656
+ objectId: import_zod5.z.string(),
4657
+ digest: import_zod5.z.string(),
4658
+ version: import_zod5.z.string()
4557
4659
  });
4558
4660
  var getVeSca = async (utils, veScaKey) => {
4559
4661
  const tableId = utils.address.get(`vesca.tableId`);
@@ -4743,10 +4845,10 @@ var ScallopUtils = class {
4743
4845
  * @param address - ScallopAddress instance.
4744
4846
  */
4745
4847
  async init(force = false, address) {
4746
- if (force || !this.address.getAddresses() || !address?.getAddresses()) {
4747
- await this.address.read();
4748
- } else {
4848
+ if (address && !this.address)
4749
4849
  this.address = address;
4850
+ if (force || !this.address.getAddresses()) {
4851
+ await this.address.read();
4750
4852
  }
4751
4853
  }
4752
4854
  /**
@@ -5032,9 +5134,7 @@ var ScallopUtils = class {
5032
5134
  for (const endpoint of endpoints) {
5033
5135
  const priceIdPairs = Array.from(failedRequests.values()).reduce(
5034
5136
  (acc, coinName) => {
5035
- const priceId = this.address.get(
5036
- `core.coins.${coinName}.oracle.pyth.feed`
5037
- );
5137
+ const priceId = this.address.get(`core.coins.${coinName}.oracle.pyth.feed`) ?? PYTH_FEED_IDS[coinName];
5038
5138
  acc.push([coinName, priceId]);
5039
5139
  return acc;
5040
5140
  },
@@ -6997,11 +7097,12 @@ var ScallopQuery = class {
6997
7097
  * @param address - ScallopAddress instance.
6998
7098
  */
6999
7099
  async init(force = false, address) {
7000
- if (force || !this.address.getAddresses() || !address?.getAddresses()) {
7001
- await this.address.read();
7002
- } else {
7100
+ if (address && !this.address) {
7003
7101
  this.address = address;
7004
7102
  }
7103
+ if (force || !this.address.getAddresses()) {
7104
+ await this.address.read();
7105
+ }
7005
7106
  await this.utils.init(force, this.address);
7006
7107
  }
7007
7108
  /* ==================== Core Query Methods ==================== */
@@ -7463,11 +7564,17 @@ var ScallopQuery = class {
7463
7564
  return await getFlashLoanFees(this, assetCoinNames);
7464
7565
  }
7465
7566
  /**
7466
- * Get supply limit of supply pool
7567
+ * Get supply limit of lending pool
7467
7568
  */
7468
7569
  async getPoolSupplyLimit(poolName) {
7469
7570
  return await getSupplyLimit(this.utils, poolName);
7470
7571
  }
7572
+ /**
7573
+ * Get borrow limit of borrow pool
7574
+ */
7575
+ async getPoolBorrowLimit(poolName) {
7576
+ return await getBorrowLimit(this.utils, poolName);
7577
+ }
7471
7578
  /**
7472
7579
  * Get list of isolated assets
7473
7580
  */
@@ -7540,10 +7647,10 @@ var ScallopBuilder = class {
7540
7647
  * @param address - ScallopAddress instance.
7541
7648
  */
7542
7649
  async init(force = false, address) {
7543
- if (force || !this.address.getAddresses() || !address?.getAddresses()) {
7544
- await this.address.read();
7545
- } else {
7650
+ if (address && !this.address)
7546
7651
  this.address = address;
7652
+ if (force || !this.address.getAddresses()) {
7653
+ await this.address.read();
7547
7654
  }
7548
7655
  await this.query.init(force, this.address);
7549
7656
  await this.utils.init(force, this.address);