@scallop-io/sui-scallop-sdk 1.3.2 → 1.3.3-alpha.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
@@ -62,6 +62,7 @@ __export(src_exports, {
62
62
  ScallopIndexer: () => ScallopIndexer,
63
63
  ScallopQuery: () => ScallopQuery,
64
64
  ScallopUtils: () => ScallopUtils,
65
+ TEST_ADDRESSES: () => TEST_ADDRESSES,
65
66
  UNLOCK_ROUND_DURATION: () => UNLOCK_ROUND_DURATION,
66
67
  USE_TEST_ADDRESS: () => USE_TEST_ADDRESS,
67
68
  assetCoins: () => assetCoins,
@@ -336,11 +337,20 @@ var voloCoinIds = {
336
337
  var sCoinIds = {
337
338
  susdc: "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",
338
339
  ssbeth: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
339
- ssui: "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",
340
+ // TODO: Change this to the correct value on production release
341
+ ssui: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
342
+ // ssui: '0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI',
340
343
  scetus: "0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",
341
- ssca: "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",
342
- swusdc: "0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
343
- swusdt: "0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
344
+ // TODO: Change this to the correct value on production release
345
+ ssca: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
346
+ // '0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA',
347
+ // TODO: Change this to the correct value on production release
348
+ swusdc: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
349
+ // '0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC',
350
+ swusdt: (
351
+ // '0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT',
352
+ "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT"
353
+ ),
344
354
  sweth: "0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
345
355
  safsui: "0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",
346
356
  shasui: "0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",
@@ -441,10 +451,10 @@ var queryKeys = {
441
451
  ]
442
452
  },
443
453
  oracle: {
444
- getPythLatestPriceFeed: (pythPriceId) => [
454
+ getPythLatestPriceFeed: (pythPriceId, endpoint) => [
445
455
  "oracle",
446
456
  "getPythPriceId",
447
- { pythPriceId }
457
+ { pythPriceId, endpoint }
448
458
  ]
449
459
  }
450
460
  };
@@ -456,6 +466,430 @@ var MAX_LOCK_DURATION = MAX_LOCK_ROUNDS * UNLOCK_ROUND_DURATION;
456
466
  var MIN_INITIAL_LOCK_AMOUNT = 1e10;
457
467
  var MIN_TOP_UP_AMOUNT = 1e9;
458
468
 
469
+ // src/constants/testAddress.ts
470
+ var TEST_ADDRESSES = {
471
+ core: {
472
+ // version:
473
+ // '0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7',
474
+ version: "0xd318de9b0f6873879a82cbfcc2daa1d1591a8b54e7cea9f4b567da63c692a52b",
475
+ versionCap: "0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",
476
+ // object:
477
+ // '0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf',
478
+ object: "0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d",
479
+ // market:
480
+ // '0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9',
481
+ market: "0x9d6434e97f3f98fd9b0c0e1dca22632073985abcd22541feae7ee1e34cbe3af2",
482
+ adminCap: "0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",
483
+ coinDecimalsRegistry: "0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",
484
+ // obligationAccessStore:
485
+ // '0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9',
486
+ obligationAccessStore: "0x46e9b44a77ee9c9d33cc2689ecdfbb8f681935cbc6bdf6ac3df048e396c36c82",
487
+ coins: {
488
+ usdc: {
489
+ id: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7",
490
+ metaData: "0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6",
491
+ treasury: "",
492
+ oracle: {
493
+ supra: "",
494
+ switchboard: "",
495
+ pyth: {
496
+ feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
497
+ feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
498
+ }
499
+ }
500
+ },
501
+ cetus: {
502
+ id: "0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",
503
+ metaData: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",
504
+ treasury: "",
505
+ oracle: {
506
+ supra: "",
507
+ switchboard: "",
508
+ pyth: {
509
+ feed: "e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",
510
+ feedObject: "0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"
511
+ }
512
+ }
513
+ },
514
+ wapt: {
515
+ id: "0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",
516
+ metaData: "0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",
517
+ treasury: "",
518
+ oracle: {
519
+ supra: "",
520
+ switchboard: "",
521
+ pyth: {
522
+ feed: "03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",
523
+ feedObject: "0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"
524
+ }
525
+ }
526
+ },
527
+ wsol: {
528
+ id: "0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",
529
+ metaData: "0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",
530
+ treasury: "",
531
+ oracle: {
532
+ supra: "",
533
+ switchboard: "",
534
+ pyth: {
535
+ feed: "ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",
536
+ feedObject: "0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"
537
+ }
538
+ }
539
+ },
540
+ wbtc: {
541
+ id: "0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",
542
+ metaData: "0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",
543
+ treasury: "",
544
+ oracle: {
545
+ supra: "",
546
+ switchboard: "",
547
+ pyth: {
548
+ feed: "e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
549
+ feedObject: "0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"
550
+ }
551
+ }
552
+ },
553
+ weth: {
554
+ id: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
555
+ metaData: "0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",
556
+ treasury: "",
557
+ oracle: {
558
+ supra: "",
559
+ switchboard: "",
560
+ pyth: {
561
+ feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
562
+ feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
563
+ }
564
+ }
565
+ },
566
+ wusdc: {
567
+ id: "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",
568
+ metaData: "0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",
569
+ treasury: "",
570
+ oracle: {
571
+ supra: "",
572
+ switchboard: "",
573
+ pyth: {
574
+ feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
575
+ feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
576
+ }
577
+ }
578
+ },
579
+ wusdt: {
580
+ id: "0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",
581
+ metaData: "0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",
582
+ treasury: "",
583
+ oracle: {
584
+ supra: "",
585
+ switchboard: "",
586
+ pyth: {
587
+ feed: "2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",
588
+ feedObject: "0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"
589
+ }
590
+ }
591
+ },
592
+ sui: {
593
+ id: "0x0000000000000000000000000000000000000000000000000000000000000002",
594
+ metaData: "0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",
595
+ treasury: "",
596
+ oracle: {
597
+ supra: "",
598
+ switchboard: "0xbca474133638352ba83ccf7b5c931d50f764b09550e16612c9f70f1e21f3f594",
599
+ pyth: {
600
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
601
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
602
+ }
603
+ }
604
+ },
605
+ afsui: {
606
+ id: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
607
+ metaData: "0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",
608
+ treasury: "",
609
+ oracle: {
610
+ supra: "",
611
+ switchboard: "",
612
+ pyth: {
613
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
614
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
615
+ }
616
+ }
617
+ },
618
+ hasui: {
619
+ id: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
620
+ metaData: "0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",
621
+ treasury: "",
622
+ oracle: {
623
+ supra: "",
624
+ switchboard: "",
625
+ pyth: {
626
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
627
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
628
+ }
629
+ }
630
+ },
631
+ vsui: {
632
+ id: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
633
+ metaData: "0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",
634
+ treasury: "",
635
+ oracle: {
636
+ supra: "",
637
+ switchboard: "",
638
+ pyth: {
639
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
640
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
641
+ }
642
+ }
643
+ },
644
+ sca: {
645
+ id: "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
646
+ metaData: "0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",
647
+ treasury: "",
648
+ oracle: {
649
+ supra: "",
650
+ switchboard: "",
651
+ pyth: {
652
+ feed: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
653
+ feedObject: "0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"
654
+ }
655
+ }
656
+ },
657
+ sbeth: {
658
+ id: "0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29",
659
+ metaData: "0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0",
660
+ treasury: "",
661
+ oracle: {
662
+ supra: "",
663
+ switchboard: "",
664
+ pyth: {
665
+ feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
666
+ feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
667
+ }
668
+ }
669
+ }
670
+ },
671
+ oracles: {
672
+ xOracle: "0x93d5bf0936b71eb27255941e532fac33b5a5c7759e377b4923af0a1359ad494f",
673
+ xOracleCap: "0x1edeae568fde99e090dbdec4bcdbd33a15f53a1ce1f87aeef1a560dedf4b4a90",
674
+ supra: { registry: "", registryCap: "", holder: "" },
675
+ switchboard: { registry: "", registryCap: "" },
676
+ pyth: {
677
+ registry: "0xedc293f9413a5a7a5d53bdba1fd889d0a4030894469228f0acdae4aa3c55a213",
678
+ registryCap: "0xbcb07141eb1f7e01fbda4130ecf5f5adaeabb77f5d9c32158b7532bcd2197acd",
679
+ state: "0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",
680
+ wormhole: "0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",
681
+ wormholeState: "0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"
682
+ }
683
+ },
684
+ packages: {
685
+ coinDecimalsRegistry: {
686
+ id: "0xca5a5a62f01c79a104bf4d31669e29daa387f325c241de4edbe30986a9bc8b0d",
687
+ upgradeCap: "0x34e76a945d29f195bc53ca704fa70877d1cf3a5d7bbfdda1b13e633fff13c0f6"
688
+ },
689
+ math: {
690
+ id: "0xad013d5fde39e15eabda32b3dbdafd67dac32b798ce63237c27a8f73339b9b6f",
691
+ upgradeCap: "0x3a329598231de02e6135c62284b66005b41cad1d9ab7ca2dc79c08293aba2ec6"
692
+ },
693
+ whitelist: {
694
+ id: "0x1318fdc90319ec9c24df1456d960a447521b0a658316155895014a6e39b5482f",
695
+ upgradeCap: "0xf5a22aea23db664f7b69855b6a546747f17c1ec4230319cfc17225e462b05761"
696
+ },
697
+ x: {
698
+ id: "0x779b5c547976899f5474f3a5bc0db36ddf4697ad7e5a901db0415c2281d28162",
699
+ upgradeCap: "0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"
700
+ },
701
+ protocol: {
702
+ id: "0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d",
703
+ upgradeCap: "0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"
704
+ },
705
+ // protocol: {
706
+ // id: '0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e',
707
+ // upgradeCap:
708
+ // '0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a',
709
+ // },
710
+ protocolWhitelist: {
711
+ id: "0x4c262d9343dac53ecb28f482a2a3f62c73d0ebac5b5f03d57383d56ff219acdf",
712
+ upgradeCap: "0x4a5e88a75039b00988f633f811f58117f31b8627a46bf822aa114d9010049449"
713
+ },
714
+ // query: {
715
+ // id: '0xb8d603a39114a5efef3dd0bf84df0bed1be1fbd39b78b7dd6e8a61ccc5e6006f',
716
+ // upgradeCap:
717
+ // '0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f',
718
+ // },
719
+ query: {
720
+ id: "0x89706958f43fb170de134579e3fbc53972b946ee78bd2442d8e1adc36074fbdc",
721
+ upgradeCap: "0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"
722
+ },
723
+ supra: { id: "", upgradeCap: "" },
724
+ pyth: {
725
+ id: "0x910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a",
726
+ upgradeCap: "0xdf0ffbae1ea5bb25fbca5efba433dcf00c7cced65679af2f04728901275c6157"
727
+ },
728
+ switchboard: { id: "", upgradeCap: "" },
729
+ xOracle: {
730
+ id: "0x1478a432123e4b3d61878b629f2c692969fdb375644f1251cd278a4b1e7d7cd6",
731
+ upgradeCap: "0x0f928a6b2e26b73330fecaf9b44acfc9800a4a9794d6415c2a3153bc70e3c1f0"
732
+ },
733
+ testCoin: { id: "", upgradeCap: "" }
734
+ }
735
+ },
736
+ spool: {
737
+ // id: '0x7c4fdabe81c31b19a45d1e572a52a539997a90903fbb5bfab71480abe0fa62c3',
738
+ id: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
739
+ adminCap: "0xdd8a047cbbf802bfcde5288b8ef1910965d789cc614da11d39af05fca0bd020a",
740
+ // object:
741
+ // '0xe87f1b2d498106a2c61421cec75b7b5c5e348512b0dc263949a0e7a3c256571a',
742
+ object: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
743
+ pools: {
744
+ sweth: {
745
+ id: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
746
+ rewardPoolId: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"
747
+ },
748
+ ssui: {
749
+ // id: '0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4',
750
+ id: "0xb9617f83c06ebdeac0a8834782b1015e1cc7ea23739e30c132c4bfb95c37a579",
751
+ rewardPoolId: (
752
+ // '0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9',
753
+ "0xc3206071a8d43212efb6e3b5504f2321f8df97ab122b466c0bc7cfdf398dc13a"
754
+ )
755
+ },
756
+ susdc: {
757
+ id: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
758
+ rewardPoolId: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166"
759
+ },
760
+ swusdc: {
761
+ // id: '0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0',
762
+ id: "0xf1b383b9cf2e9f515fc69567df1053098f273849d09cd84b0278a773429bd2b2",
763
+ rewardPoolId: (
764
+ // '0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8',
765
+ "0xc71c53ee6505d928ba15bea4fe4f45d98c9c31eced94b72d00a7827d4b7ba3ff"
766
+ )
767
+ },
768
+ swusdt: {
769
+ // id: '0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f',
770
+ id: "0xb5567dfa5c7fc17a249e959732664c50713dd8c23db1a11376b27df800c17418",
771
+ rewardPoolId: (
772
+ // '0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080',
773
+ "0x60768b0687ff0235e376a039709a683e4c436098785e473b67b32dbab47b69ab"
774
+ )
775
+ },
776
+ scetus: {
777
+ id: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
778
+ rewardPoolId: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"
779
+ },
780
+ safsui: {
781
+ // id: '0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800',
782
+ id: "0xc568bb4c991258e839aa54802ecda04fcd9838c826bc3b42b40af81b23c458c8",
783
+ rewardPoolId: (
784
+ // '0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e',
785
+ "0x389a3cbeda742b918941bb24fd00e077bad3367484394d6234f8209b9a6aa03d"
786
+ )
787
+ },
788
+ shasui: {
789
+ // id: '0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa',
790
+ id: "0x93f3f4499bf89f2d05ddc1f8b15f51701a7c6c4d0ac0b9c3bc99462cbbd8e321",
791
+ rewardPoolId: (
792
+ // '0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66',
793
+ "0x94cee1be7f5ff34193f3aabef0b14142cb28af4d905fe487a9a7d85a15edb6aa"
794
+ )
795
+ },
796
+ svsui: {
797
+ // id: '0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670',
798
+ id: "0xa970e9087f80cb59e9299b8e7af7175d977ad6c9af0322aa4440e138fbd7ae00",
799
+ rewardPoolId: (
800
+ // '0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a',
801
+ "0x38eee9699c4fc132a6623e54b865f047df4fc6eb83af807300f44e8f4b235ff0"
802
+ )
803
+ }
804
+ },
805
+ config: ""
806
+ },
807
+ borrowIncentive: {
808
+ id: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
809
+ adminCap: "0x56ac8e6f2b360b2b35c0168d72cc6cd17d9592afb83709865cb87af24bb2025b",
810
+ object: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
811
+ query: "0x8e0d00f8ff1199d7c5fe56cea0e901a525daeefff0445a1635ace8282ae3302c",
812
+ incentivePools: "0x9d564c93128c6ab0c0d3e050a47f11df0b91494f3bb779bdc1301c1c637f15eb",
813
+ incentiveAccounts: "0x09e6040e798246de04941bc79a3ba62d3eca6d7a218cc30f21fb07f478fa2926",
814
+ config: "0x43d4ca1dfc90b161c4240facd119e74e4b850cca2957f88c2ec289c9380da064"
815
+ },
816
+ referral: {
817
+ id: "0x1bf5a8ce77050d8052549d743e16b469f15aa6b81b752b78b6ebb65179665f5a",
818
+ object: "0x5658d4bf5ddcba27e4337b4262108b3ad1716643cac8c2054ac341538adc72ec",
819
+ adminCap: "0xc5dc06b9074291259f2cac460c940012c781c4430e42125c541cc43101c3bcbd",
820
+ referralBindings: "0xcf184487782bed962bf678001efe775d31fb94b9992333a57594cf15d79d5ced",
821
+ bindingTableId: "0x41a50e258c0a266ce84e0e1a618dbf70b878cc943909e613089a50afcceb2bc0",
822
+ referralRevenuePool: "0xc24e3e5e37032f29a3dd91a9a1f057af8821b7e6c148e9683900ac8b6d30f0c6",
823
+ revenueTableId: "0x595baa3654c297bff84ab7786a2d250f019cefc66e8df8e89fd9d41e02bd30dd",
824
+ referralTiers: "0x144350f3db9b46d11b140084cd54e6de0b9c3b8d265ce8059b51d0ef58ea464b",
825
+ tiersTableId: "0xeac755a7a8b7798530905ac79e8c114f19d0f130f6eab012954f08faac29c75d",
826
+ // authorizedWitnessList:
827
+ // '0xf21b0ed043c9bb70842c0129159f4943dbcc3c9ef2f2f808af65f8be25cfd20e',
828
+ authorizedWitnessList: "0x9d6223dc52015b8a3986a573590ef2af8f1b8f3e4685513888c052f001b87e7f",
829
+ version: "0x3545849eb97723e676a476ec9d4fe5f2eb0eb2c6b78972851114fd4c7ed4639f"
830
+ },
831
+ vesca: {
832
+ id: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
833
+ object: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
834
+ adminCap: "0x8ffa76135c5b85c5fbd73a6448a4a733d826cb63a267ab817656acb77c72d4a5",
835
+ tableId: "0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",
836
+ table: "0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",
837
+ treasury: "0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",
838
+ config: "0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"
839
+ },
840
+ loyaltyProgram: {
841
+ id: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
842
+ object: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
843
+ rewardPool: "0xf9c090492ef476bd542109d0913ffe871cbfa28578b7114eca2a8c0e5671786f",
844
+ userRewardTableId: "0x748a80395849ed37db1b0e14f2ab5d1d96458d2359ab3a84eb079d0f4ac7cf2e"
845
+ },
846
+ scoin: {
847
+ id: "0x773dab39c90fe05439b06a2d061795e52a974ff92c2aef90b2ee467acf7f33c8",
848
+ coins: {
849
+ ssui: {
850
+ coinType: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
851
+ treasury: "0x0e499640a12c38dd9cc44532f5bc5fd1b6da86d2f9a8810357250f4b26e9e5c7"
852
+ },
853
+ scetus: {
854
+ coinType: "0x8b71e6d323ed78515af2bead13bf3d0da1562ba4a99234eb7c4f14fd39ef0427::scallop_cetus::SCALLOP_CETUS",
855
+ treasury: "0xd786f4b2d26278cc7911a3445b1b085eab60f269ef9dbb6b87e803d52f155003"
856
+ },
857
+ ssca: {
858
+ coinType: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
859
+ treasury: "0x5f1c5de1df7341075d119570269b7b452af50afe8363080638f1ae29a554c038"
860
+ },
861
+ swusdc: {
862
+ coinType: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
863
+ treasury: "0x471fbab72578bab577263006fe32543b6e76153fffa2bef69affe4bc4934258f"
864
+ },
865
+ swusdt: {
866
+ coinType: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
867
+ treasury: "0x921a4ed4bb4b4f11f51a462c83f4c0f6b60a90e441d1bc0d26d6fd893146bf4d"
868
+ },
869
+ sweth: {
870
+ coinType: "0x27d54f43e3eda701be56b82e5756e41c84467cd202f5cf713d5f9e45a9f1b6bc::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
871
+ treasury: "0x032b4c8fac94c038dbe986f7587e9b1e4ef580b5ee06d2ef249d85459b7ef05d"
872
+ },
873
+ safsui: {
874
+ coinType: "0xb75b46d975d8d80670b53a6bee90baaa8ce2e0b7d397f079447d641eef6b44ad::scallop_af_sui::SCALLOP_AF_SUI",
875
+ treasury: "0x21450ef0570ef3d224ffa3b873ab802e439ece7b93cc7efad10ae0c1e3b3fcfe"
876
+ },
877
+ shasui: {
878
+ coinType: "0xd973a723874e2c7cde196602a79155a1343a933f8cf87d9b1bb7408bc1acbc58::scallop_ha_sui::SCALLOP_HA_SUI",
879
+ treasury: "0xf822fc1402207e47d2e3ba8ff6e1e594bf1de777dc5ebd2744619cd2726e3b0d"
880
+ },
881
+ svsui: {
882
+ coinType: "0x97023a317320c4498cc4cd239dd02fd30c28246e5e8f81325d63f2bd8d70f6b3::scallop_v_sui::SCALLOP_V_SUI",
883
+ treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6"
884
+ },
885
+ ssbeth: {
886
+ coinType: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
887
+ treasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed"
888
+ }
889
+ }
890
+ }
891
+ };
892
+
459
893
  // src/models/scallop.ts
460
894
  var import_sui_kit16 = require("@scallop-io/sui-kit");
461
895
 
@@ -1147,541 +1581,149 @@ var ScallopCache = class {
1147
1581
  async invalidateAllCache() {
1148
1582
  return Object.values(queryKeys.rpc).map(
1149
1583
  (t) => this.queryClient.invalidateQueries({
1150
- queryKey: t(),
1151
- type: "all"
1152
- })
1153
- );
1154
- }
1155
- /**
1156
- * @description Provides cache for inspectTxn of the SuiKit.
1157
- * @param QueryInspectTxnParams
1158
- * @param txBlock
1159
- * @returns Promise<DevInspectResults>
1160
- */
1161
- async queryInspectTxn({
1162
- queryTarget,
1163
- args,
1164
- typeArgs
1165
- }) {
1166
- const txBlock = new import_sui_kit.SuiTxBlock();
1167
- txBlock.moveCall(queryTarget, args, typeArgs);
1168
- const query = await this.queryClient.fetchQuery({
1169
- queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
1170
- queryFn: async () => {
1171
- return await callWithRateLimit(
1172
- this.tokenBucket,
1173
- () => this.suiKit.inspectTxn(txBlock)
1174
- );
1175
- }
1176
- });
1177
- return query;
1178
- }
1179
- /**
1180
- * @description Provides cache for getObject of the SuiKit.
1181
- * @param objectId
1182
- * @param QueryObjectParams
1183
- * @returns Promise<SuiObjectResponse>
1184
- */
1185
- async queryGetObject(objectId, options) {
1186
- return this.queryClient.fetchQuery({
1187
- queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
1188
- queryFn: async () => {
1189
- return await callWithRateLimit(
1190
- this.tokenBucket,
1191
- () => this.client.getObject({
1192
- id: objectId,
1193
- options
1194
- })
1195
- );
1196
- }
1197
- });
1198
- }
1199
- /**
1200
- * @description Provides cache for getObjects of the SuiKit.
1201
- * @param objectIds
1202
- * @returns Promise<SuiObjectData[]>
1203
- */
1204
- async queryGetObjects(objectIds, options = {
1205
- showContent: true
1206
- }) {
1207
- if (objectIds.length === 0)
1208
- return [];
1209
- return this.queryClient.fetchQuery({
1210
- queryKey: queryKeys.rpc.getObjects(
1211
- objectIds,
1212
- this.walletAddress,
1213
- options
1214
- ),
1215
- queryFn: async () => {
1216
- return await callWithRateLimit(
1217
- this.tokenBucket,
1218
- () => this.suiKit.getObjects(objectIds, options)
1219
- );
1220
- }
1221
- });
1584
+ queryKey: t(),
1585
+ type: "all"
1586
+ })
1587
+ );
1222
1588
  }
1223
1589
  /**
1224
- * @description Provides cache for getOwnedObjects of the SuiKit.
1225
- * @param input
1226
- * @returns Promise<PaginatedObjectsResponse>
1590
+ * @description Provides cache for inspectTxn of the SuiKit.
1591
+ * @param QueryInspectTxnParams
1592
+ * @param txBlock
1593
+ * @returns Promise<DevInspectResults>
1227
1594
  */
1228
- async queryGetOwnedObjects(input) {
1229
- return this.queryClient.fetchQuery({
1230
- queryKey: queryKeys.rpc.getOwnedObjects(input),
1231
- queryFn: async () => {
1232
- return await callWithRateLimit(
1233
- this.tokenBucket,
1234
- () => this.client.getOwnedObjects(input)
1235
- );
1236
- }
1237
- });
1238
- }
1239
- async queryGetDynamicFields(input) {
1240
- return this.queryClient.fetchQuery({
1241
- queryKey: queryKeys.rpc.getDynamicFields(input),
1595
+ async queryInspectTxn({
1596
+ queryTarget,
1597
+ args,
1598
+ typeArgs
1599
+ }) {
1600
+ const txBlock = new import_sui_kit.SuiTxBlock();
1601
+ txBlock.moveCall(queryTarget, args, typeArgs);
1602
+ const query = await this.queryClient.fetchQuery({
1603
+ queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
1242
1604
  queryFn: async () => {
1243
1605
  return await callWithRateLimit(
1244
1606
  this.tokenBucket,
1245
- () => this.client.getDynamicFields(input)
1607
+ () => this.suiKit.inspectTxn(txBlock)
1246
1608
  );
1247
1609
  }
1248
1610
  });
1611
+ return query;
1249
1612
  }
1250
- async queryGetDynamicFieldObject(input) {
1613
+ /**
1614
+ * @description Provides cache for getObject of the SuiKit.
1615
+ * @param objectId
1616
+ * @param QueryObjectParams
1617
+ * @returns Promise<SuiObjectResponse>
1618
+ */
1619
+ async queryGetObject(objectId, options) {
1251
1620
  return this.queryClient.fetchQuery({
1252
- queryKey: queryKeys.rpc.getDynamicFieldObject(input),
1621
+ queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
1253
1622
  queryFn: async () => {
1254
1623
  return await callWithRateLimit(
1255
1624
  this.tokenBucket,
1256
- () => this.client.getDynamicFieldObject(input)
1257
- );
1258
- }
1259
- });
1260
- }
1261
- async queryGetAllCoinBalances(owner) {
1262
- return this.queryClient.fetchQuery({
1263
- queryKey: queryKeys.rpc.getAllCoinBalances(owner),
1264
- queryFn: async () => {
1265
- const allBalances = await callWithRateLimit(
1266
- this.tokenBucket,
1267
- () => this.client.getAllBalances({ owner })
1268
- );
1269
- if (!allBalances)
1270
- return {};
1271
- const balances = allBalances.reduce(
1272
- (acc, coinBalance) => {
1273
- if (coinBalance.totalBalance !== "0") {
1274
- acc[(0, import_sui_kit.normalizeStructTag)(coinBalance.coinType)] = coinBalance.totalBalance;
1275
- }
1276
- return acc;
1277
- },
1278
- {}
1625
+ () => this.client.getObject({
1626
+ id: objectId,
1627
+ options
1628
+ })
1279
1629
  );
1280
- return balances;
1281
1630
  }
1282
1631
  });
1283
- }
1284
- async queryGetCoinBalance(input) {
1285
- if (!input.coinType)
1286
- return "0";
1287
- return (await this.queryGetAllCoinBalances(input.owner) || {})[(0, import_sui_kit.normalizeStructTag)(input.coinType)] ?? "0";
1288
- }
1289
- };
1290
-
1291
- // src/models/scallopAddress.ts
1292
- var import_axios = __toESM(require("axios"));
1293
-
1294
- // src/constants/testAddress.ts
1295
- var TEST_ADDRESSES = {
1296
- core: {
1297
- // version:
1298
- // '0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7',
1299
- version: "0x6156d5cd1538bec8a167a40fe1209a4ec9cf8137921fe0a697f191ac561f0b09",
1300
- versionCap: "0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",
1301
- // object:
1302
- // '0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf',
1303
- object: "0x87ddec2984645dbbe2403a509cc6edf393a43acdba9b77d45da2bcbefcf733c1",
1304
- // market:
1305
- // '0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9',
1306
- market: "0x8606ed145cc887985b8ed793f7753ff5dc762a42c379dac035f568e1bac58490",
1307
- adminCap: "0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",
1308
- coinDecimalsRegistry: "0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",
1309
- // obligationAccessStore:
1310
- // '0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9',
1311
- obligationAccessStore: "0x48b472d68ca910c45f7f3b6c26836b6aa6d2569810d94b1b939023da05ae0a23",
1312
- coins: {
1313
- cetus: {
1314
- id: "0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",
1315
- metaData: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",
1316
- treasury: "",
1317
- oracle: {
1318
- supra: "",
1319
- switchboard: "",
1320
- pyth: {
1321
- feed: "e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",
1322
- feedObject: "0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"
1323
- }
1324
- }
1325
- },
1326
- wapt: {
1327
- id: "0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",
1328
- metaData: "0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",
1329
- treasury: "",
1330
- oracle: {
1331
- supra: "",
1332
- switchboard: "",
1333
- pyth: {
1334
- feed: "03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",
1335
- feedObject: "0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"
1336
- }
1337
- }
1338
- },
1339
- wsol: {
1340
- id: "0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",
1341
- metaData: "0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",
1342
- treasury: "",
1343
- oracle: {
1344
- supra: "",
1345
- switchboard: "",
1346
- pyth: {
1347
- feed: "ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",
1348
- feedObject: "0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"
1349
- }
1350
- }
1351
- },
1352
- wbtc: {
1353
- id: "0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",
1354
- metaData: "0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",
1355
- treasury: "",
1356
- oracle: {
1357
- supra: "",
1358
- switchboard: "",
1359
- pyth: {
1360
- feed: "e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
1361
- feedObject: "0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"
1362
- }
1363
- }
1364
- },
1365
- weth: {
1366
- id: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
1367
- metaData: "0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",
1368
- treasury: "",
1369
- oracle: {
1370
- supra: "",
1371
- switchboard: "",
1372
- pyth: {
1373
- feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
1374
- feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
1375
- }
1376
- }
1377
- },
1378
- wusdc: {
1379
- id: "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",
1380
- metaData: "0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",
1381
- treasury: "",
1382
- oracle: {
1383
- supra: "",
1384
- switchboard: "",
1385
- pyth: {
1386
- feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
1387
- feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
1388
- }
1389
- }
1390
- },
1391
- wusdt: {
1392
- id: "0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",
1393
- metaData: "0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",
1394
- treasury: "",
1395
- oracle: {
1396
- supra: "",
1397
- switchboard: "",
1398
- pyth: {
1399
- feed: "2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",
1400
- feedObject: "0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"
1401
- }
1402
- }
1403
- },
1404
- sui: {
1405
- id: "0x0000000000000000000000000000000000000000000000000000000000000002",
1406
- metaData: "0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",
1407
- treasury: "",
1408
- oracle: {
1409
- supra: "",
1410
- switchboard: "0xbca474133638352ba83ccf7b5c931d50f764b09550e16612c9f70f1e21f3f594",
1411
- pyth: {
1412
- feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
1413
- feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
1414
- }
1415
- }
1416
- },
1417
- afsui: {
1418
- id: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
1419
- metaData: "0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",
1420
- treasury: "",
1421
- oracle: {
1422
- supra: "",
1423
- switchboard: "",
1424
- pyth: {
1425
- feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
1426
- feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
1427
- }
1428
- }
1429
- },
1430
- hasui: {
1431
- id: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
1432
- metaData: "0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",
1433
- treasury: "",
1434
- oracle: {
1435
- supra: "",
1436
- switchboard: "",
1437
- pyth: {
1438
- feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
1439
- feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
1440
- }
1441
- }
1442
- },
1443
- vsui: {
1444
- id: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
1445
- metaData: "0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",
1446
- treasury: "",
1447
- oracle: {
1448
- supra: "",
1449
- switchboard: "",
1450
- pyth: {
1451
- feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
1452
- feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
1453
- }
1454
- }
1455
- },
1456
- sca: {
1457
- id: "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
1458
- metaData: "0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",
1459
- treasury: "",
1460
- oracle: {
1461
- supra: "",
1462
- switchboard: "",
1463
- pyth: {
1464
- feed: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
1465
- feedObject: "0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"
1466
- }
1467
- }
1632
+ }
1633
+ /**
1634
+ * @description Provides cache for getObjects of the SuiKit.
1635
+ * @param objectIds
1636
+ * @returns Promise<SuiObjectData[]>
1637
+ */
1638
+ async queryGetObjects(objectIds, options = {
1639
+ showContent: true
1640
+ }) {
1641
+ if (objectIds.length === 0)
1642
+ return [];
1643
+ return this.queryClient.fetchQuery({
1644
+ queryKey: queryKeys.rpc.getObjects(
1645
+ objectIds,
1646
+ this.walletAddress,
1647
+ options
1648
+ ),
1649
+ queryFn: async () => {
1650
+ return await callWithRateLimit(
1651
+ this.tokenBucket,
1652
+ () => this.suiKit.getObjects(objectIds, options)
1653
+ );
1468
1654
  }
1469
- },
1470
- oracles: {
1471
- xOracle: "0x93d5bf0936b71eb27255941e532fac33b5a5c7759e377b4923af0a1359ad494f",
1472
- xOracleCap: "0x1edeae568fde99e090dbdec4bcdbd33a15f53a1ce1f87aeef1a560dedf4b4a90",
1473
- supra: { registry: "", registryCap: "", holder: "" },
1474
- switchboard: { registry: "", registryCap: "" },
1475
- pyth: {
1476
- registry: "0xedc293f9413a5a7a5d53bdba1fd889d0a4030894469228f0acdae4aa3c55a213",
1477
- registryCap: "0xbcb07141eb1f7e01fbda4130ecf5f5adaeabb77f5d9c32158b7532bcd2197acd",
1478
- state: "0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",
1479
- wormhole: "0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",
1480
- wormholeState: "0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"
1655
+ });
1656
+ }
1657
+ /**
1658
+ * @description Provides cache for getOwnedObjects of the SuiKit.
1659
+ * @param input
1660
+ * @returns Promise<PaginatedObjectsResponse>
1661
+ */
1662
+ async queryGetOwnedObjects(input) {
1663
+ return this.queryClient.fetchQuery({
1664
+ queryKey: queryKeys.rpc.getOwnedObjects(input),
1665
+ queryFn: async () => {
1666
+ return await callWithRateLimit(
1667
+ this.tokenBucket,
1668
+ () => this.client.getOwnedObjects(input)
1669
+ );
1481
1670
  }
1482
- },
1483
- packages: {
1484
- coinDecimalsRegistry: {
1485
- id: "0xca5a5a62f01c79a104bf4d31669e29daa387f325c241de4edbe30986a9bc8b0d",
1486
- upgradeCap: "0x34e76a945d29f195bc53ca704fa70877d1cf3a5d7bbfdda1b13e633fff13c0f6"
1487
- },
1488
- math: {
1489
- id: "0xad013d5fde39e15eabda32b3dbdafd67dac32b798ce63237c27a8f73339b9b6f",
1490
- upgradeCap: "0x3a329598231de02e6135c62284b66005b41cad1d9ab7ca2dc79c08293aba2ec6"
1491
- },
1492
- whitelist: {
1493
- id: "0x1318fdc90319ec9c24df1456d960a447521b0a658316155895014a6e39b5482f",
1494
- upgradeCap: "0xf5a22aea23db664f7b69855b6a546747f17c1ec4230319cfc17225e462b05761"
1495
- },
1496
- x: {
1497
- id: "0x779b5c547976899f5474f3a5bc0db36ddf4697ad7e5a901db0415c2281d28162",
1498
- upgradeCap: "0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"
1499
- },
1500
- protocol: {
1501
- id: "0x87ddec2984645dbbe2403a509cc6edf393a43acdba9b77d45da2bcbefcf733c1",
1502
- upgradeCap: "0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"
1503
- },
1504
- // protocol: {
1505
- // id: '0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e',
1506
- // upgradeCap:
1507
- // '0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a',
1508
- // },
1509
- protocolWhitelist: {
1510
- id: "0x4c262d9343dac53ecb28f482a2a3f62c73d0ebac5b5f03d57383d56ff219acdf",
1511
- upgradeCap: "0x4a5e88a75039b00988f633f811f58117f31b8627a46bf822aa114d9010049449"
1512
- },
1513
- // query: {
1514
- // id: '0xb8d603a39114a5efef3dd0bf84df0bed1be1fbd39b78b7dd6e8a61ccc5e6006f',
1515
- // upgradeCap:
1516
- // '0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f',
1517
- // },
1518
- query: {
1519
- id: "0xe4f9d62d17746d5b9dbf0d5557747430021a71575780b515161210cdba0a4c1c",
1520
- upgradeCap: "0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"
1521
- },
1522
- supra: { id: "", upgradeCap: "" },
1523
- pyth: {
1524
- id: "0x910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a",
1525
- upgradeCap: "0xdf0ffbae1ea5bb25fbca5efba433dcf00c7cced65679af2f04728901275c6157"
1526
- },
1527
- switchboard: { id: "", upgradeCap: "" },
1528
- xOracle: {
1529
- id: "0x1478a432123e4b3d61878b629f2c692969fdb375644f1251cd278a4b1e7d7cd6",
1530
- upgradeCap: "0x0f928a6b2e26b73330fecaf9b44acfc9800a4a9794d6415c2a3153bc70e3c1f0"
1531
- },
1532
- testCoin: { id: "", upgradeCap: "" }
1533
- }
1534
- },
1535
- spool: {
1536
- // id: '0x7c4fdabe81c31b19a45d1e572a52a539997a90903fbb5bfab71480abe0fa62c3',
1537
- id: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
1538
- adminCap: "0xdd8a047cbbf802bfcde5288b8ef1910965d789cc614da11d39af05fca0bd020a",
1539
- // object:
1540
- // '0xe87f1b2d498106a2c61421cec75b7b5c5e348512b0dc263949a0e7a3c256571a',
1541
- object: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
1542
- pools: {
1543
- sweth: {
1544
- id: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
1545
- rewardPoolId: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"
1546
- },
1547
- ssui: {
1548
- // id: '0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4',
1549
- id: "0xb9617f83c06ebdeac0a8834782b1015e1cc7ea23739e30c132c4bfb95c37a579",
1550
- rewardPoolId: (
1551
- // '0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9',
1552
- "0xc3206071a8d43212efb6e3b5504f2321f8df97ab122b466c0bc7cfdf398dc13a"
1553
- )
1554
- },
1555
- swusdc: {
1556
- // id: '0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0',
1557
- id: "0xf1b383b9cf2e9f515fc69567df1053098f273849d09cd84b0278a773429bd2b2",
1558
- rewardPoolId: (
1559
- // '0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8',
1560
- "0xc71c53ee6505d928ba15bea4fe4f45d98c9c31eced94b72d00a7827d4b7ba3ff"
1561
- )
1562
- },
1563
- swusdt: {
1564
- // id: '0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f',
1565
- id: "0xb5567dfa5c7fc17a249e959732664c50713dd8c23db1a11376b27df800c17418",
1566
- rewardPoolId: (
1567
- // '0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080',
1568
- "0x60768b0687ff0235e376a039709a683e4c436098785e473b67b32dbab47b69ab"
1569
- )
1570
- },
1571
- scetus: {
1572
- id: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
1573
- rewardPoolId: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"
1574
- },
1575
- safsui: {
1576
- // id: '0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800',
1577
- id: "0xc568bb4c991258e839aa54802ecda04fcd9838c826bc3b42b40af81b23c458c8",
1578
- rewardPoolId: (
1579
- // '0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e',
1580
- "0x389a3cbeda742b918941bb24fd00e077bad3367484394d6234f8209b9a6aa03d"
1581
- )
1582
- },
1583
- shasui: {
1584
- // id: '0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa',
1585
- id: "0x93f3f4499bf89f2d05ddc1f8b15f51701a7c6c4d0ac0b9c3bc99462cbbd8e321",
1586
- rewardPoolId: (
1587
- // '0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66',
1588
- "0x94cee1be7f5ff34193f3aabef0b14142cb28af4d905fe487a9a7d85a15edb6aa"
1589
- )
1590
- },
1591
- svsui: {
1592
- // id: '0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670',
1593
- id: "0xa970e9087f80cb59e9299b8e7af7175d977ad6c9af0322aa4440e138fbd7ae00",
1594
- rewardPoolId: (
1595
- // '0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a',
1596
- "0x38eee9699c4fc132a6623e54b865f047df4fc6eb83af807300f44e8f4b235ff0"
1597
- )
1671
+ });
1672
+ }
1673
+ async queryGetDynamicFields(input) {
1674
+ return this.queryClient.fetchQuery({
1675
+ queryKey: queryKeys.rpc.getDynamicFields(input),
1676
+ queryFn: async () => {
1677
+ return await callWithRateLimit(
1678
+ this.tokenBucket,
1679
+ () => this.client.getDynamicFields(input)
1680
+ );
1598
1681
  }
1599
- },
1600
- config: ""
1601
- },
1602
- borrowIncentive: {
1603
- id: "0x6152f696fc3a658f33c4b891764731a59153125ffedfa8bff7167c42823f58a9",
1604
- adminCap: "0xc486afa253646f4d381e81d7f1df8aa4723b845a6bb356f69bad635ffefffe2c",
1605
- object: "0x002875153e09f8145ab63527bc85c00f2bd102e12f9573c47f8cdf1a1cb62934",
1606
- query: "0x529edc54a3dce2207703ceebbccb0ac14133f7825c1f528775ba0d85a4063489",
1607
- incentivePools: "0x6547e143d406b5ccd5f46aae482497de279cc1a68c406f701df70a05f9212ab4",
1608
- incentiveAccounts: "0xc4701fdbc1c92f9a636d334d66012b3027659e9fb8aff27279a82edfb6b77d02",
1609
- config: "0xdf5d04b4691cc67e82fd4db8394d89ff44823a9de29716c924f74bb4f11cc1f7"
1610
- },
1611
- referral: {
1612
- id: "0xa3654ebb63eb06c0f4ff52f8aa6512df9f164f7772bdf15dac3709bd3798dda9",
1613
- object: "0x5658d4bf5ddcba27e4337b4262108b3ad1716643cac8c2054ac341538adc72ec",
1614
- adminCap: "0xc5dc06b9074291259f2cac460c940012c781c4430e42125c541cc43101c3bcbd",
1615
- referralBindings: "0xf63299d58789d99de94092b9011323466e55ca0c1ea1a7a3786a589af46e1c09",
1616
- bindingTableId: "0x1c8202b17267ec8d6cf97ca013615354181a04f179570e42601ff2dae19294b1",
1617
- referralRevenuePool: "0x6abd852caf90769c1b185cdf636d841673fa95528f0550f018b8a138bd283c07",
1618
- revenueTableId: "0x595baa3654c297bff84ab7786a2d250f019cefc66e8df8e89fd9d41e02bd30dd",
1619
- referralTiers: "0x962cb903d8d7346190c5204785ccbb91b61086aa764f674c8145df82335cf83e",
1620
- tiersTableId: "0xeac755a7a8b7798530905ac79e8c114f19d0f130f6eab012954f08faac29c75d",
1621
- // authorizedWitnessList:
1622
- // '0xf21b0ed043c9bb70842c0129159f4943dbcc3c9ef2f2f808af65f8be25cfd20e',
1623
- authorizedWitnessList: "0x9d6223dc52015b8a3986a573590ef2af8f1b8f3e4685513888c052f001b87e7f",
1624
- version: "0x1bd4b7285f72e11c316b828c7c47b3f4da18dcec9f9b3dba6d8629cbb6f93e5e"
1625
- },
1626
- vesca: {
1627
- id: "0xb15b6e0cdd85afb5028bea851dd249405e734d800a259147bbc24980629723a4",
1628
- object: "0xb15b6e0cdd85afb5028bea851dd249405e734d800a259147bbc24980629723a4",
1629
- adminCap: "0x8ffa76135c5b85c5fbd73a6448a4a733d826cb63a267ab817656acb77c72d4a5",
1630
- tableId: "0xe3153b2bf124be0b86cb8bd468346a861efd0da52fc42197b54d2f616488a311",
1631
- table: "0x611cb8d9d4d90867467b5ebdf4cc447a0047ed5b01334a28a29fcfe733e3d609",
1632
- treasury: "0xe8c112c09b88158dc6c8e23d1fbae5b3c7136cdee54b7dafc08e65db28c4a5bc",
1633
- config: "0xe0a2ff281e73c1d53cfa85807080f87e833e4f1a7f93dcf8800b3865269a76b9"
1634
- },
1635
- loyaltyProgram: {
1636
- id: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
1637
- object: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
1638
- rewardPool: "0xf9c090492ef476bd542109d0913ffe871cbfa28578b7114eca2a8c0e5671786f",
1639
- userRewardTableId: "0x748a80395849ed37db1b0e14f2ab5d1d96458d2359ab3a84eb079d0f4ac7cf2e"
1640
- },
1641
- scoin: {
1642
- id: "0xad2ca2aa5089df94bb2d444d5eb3520378c2f2dfb3a0bd2a2c994145ac4b0a53",
1643
- coins: {
1644
- ssui: {
1645
- coinType: "0xfac769100bccc0caebcf4f4e2d00ac2f8883f07f724be28940df90605f5e7e9a::scallop_sui::SCALLOP_SUI",
1646
- treasury: "0x9cb4551b36c17d37e19d700147fa819ea1c487ff8bcf18374de2cceb2e9d4845"
1647
- },
1648
- scetus: {
1649
- coinType: "0x8b71e6d323ed78515af2bead13bf3d0da1562ba4a99234eb7c4f14fd39ef0427::scallop_cetus::SCALLOP_CETUS",
1650
- treasury: "0xd786f4b2d26278cc7911a3445b1b085eab60f269ef9dbb6b87e803d52f155003"
1651
- },
1652
- ssca: {
1653
- coinType: "0x0a9d3c6c9af9f6e8def82921541bcbd17f73ed31bed3adcb684f2a4c267e42f0::scallop_sca::SCALLOP_SCA",
1654
- treasury: "0xe818636d1d6c46d6ea1a2dce9d94696d7cbc18ce27451b603eeaa47aba8d75e0"
1655
- },
1656
- swusdc: {
1657
- coinType: "0xaedc3ab75db8680b81a755015fa90124d217be93457b893c05bac033817defaf::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
1658
- treasury: "0xfc6971648f867f7fd6928d1b873af71577e2eaf2c7543ef8bc82c431d833ae78"
1659
- },
1660
- swusdt: {
1661
- coinType: "0xbf02fc87ddc104b342ad8414c85ceadf5b0c823c055a06fb0ed776272c01a52a::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
1662
- treasury: "0xb9593e2c3a0ba796ee815012b75ae46468ea78cda0188b9ac6816efe65503521"
1663
- },
1664
- sweth: {
1665
- coinType: "0x27d54f43e3eda701be56b82e5756e41c84467cd202f5cf713d5f9e45a9f1b6bc::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
1666
- treasury: "0x032b4c8fac94c038dbe986f7587e9b1e4ef580b5ee06d2ef249d85459b7ef05d"
1667
- },
1668
- safsui: {
1669
- coinType: "0xb75b46d975d8d80670b53a6bee90baaa8ce2e0b7d397f079447d641eef6b44ad::scallop_af_sui::SCALLOP_AF_SUI",
1670
- treasury: "0x21450ef0570ef3d224ffa3b873ab802e439ece7b93cc7efad10ae0c1e3b3fcfe"
1671
- },
1672
- shasui: {
1673
- coinType: "0xd973a723874e2c7cde196602a79155a1343a933f8cf87d9b1bb7408bc1acbc58::scallop_ha_sui::SCALLOP_HA_SUI",
1674
- treasury: "0xf822fc1402207e47d2e3ba8ff6e1e594bf1de777dc5ebd2744619cd2726e3b0d"
1675
- },
1676
- svsui: {
1677
- coinType: "0x97023a317320c4498cc4cd239dd02fd30c28246e5e8f81325d63f2bd8d70f6b3::scallop_v_sui::SCALLOP_V_SUI",
1678
- treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6\u0192"
1682
+ });
1683
+ }
1684
+ async queryGetDynamicFieldObject(input) {
1685
+ return this.queryClient.fetchQuery({
1686
+ queryKey: queryKeys.rpc.getDynamicFieldObject(input),
1687
+ queryFn: async () => {
1688
+ return await callWithRateLimit(
1689
+ this.tokenBucket,
1690
+ () => this.client.getDynamicFieldObject(input)
1691
+ );
1692
+ }
1693
+ });
1694
+ }
1695
+ async queryGetAllCoinBalances(owner) {
1696
+ return this.queryClient.fetchQuery({
1697
+ queryKey: queryKeys.rpc.getAllCoinBalances(owner),
1698
+ queryFn: async () => {
1699
+ const allBalances = await callWithRateLimit(
1700
+ this.tokenBucket,
1701
+ () => this.client.getAllBalances({ owner })
1702
+ );
1703
+ if (!allBalances)
1704
+ return {};
1705
+ const balances = allBalances.reduce(
1706
+ (acc, coinBalance) => {
1707
+ if (coinBalance.totalBalance !== "0") {
1708
+ acc[(0, import_sui_kit.normalizeStructTag)(coinBalance.coinType)] = coinBalance.totalBalance;
1709
+ }
1710
+ return acc;
1711
+ },
1712
+ {}
1713
+ );
1714
+ return balances;
1679
1715
  }
1680
- }
1716
+ });
1717
+ }
1718
+ async queryGetCoinBalance(input) {
1719
+ if (!input.coinType)
1720
+ return "0";
1721
+ return (await this.queryGetAllCoinBalances(input.owner) || {})[(0, import_sui_kit.normalizeStructTag)(input.coinType)] ?? "0";
1681
1722
  }
1682
1723
  };
1683
1724
 
1684
1725
  // src/models/scallopAddress.ts
1726
+ var import_axios = __toESM(require("axios"));
1685
1727
  var EMPTY_ADDRESSES = {
1686
1728
  core: {
1687
1729
  version: "",
@@ -2391,6 +2433,89 @@ var getSupplyLimit = async (utils, poolName) => {
2391
2433
  return parsedData.data.fields.value;
2392
2434
  };
2393
2435
 
2436
+ // src/queries/isolatedAsset.ts
2437
+ var import_zod2 = require("zod");
2438
+ var isolatedAssetZod = import_zod2.z.object({
2439
+ dataType: import_zod2.z.string(),
2440
+ type: import_zod2.z.string(),
2441
+ hasPublicTransfer: import_zod2.z.boolean(),
2442
+ fields: import_zod2.z.object({
2443
+ id: import_zod2.z.object({
2444
+ id: import_zod2.z.string()
2445
+ }),
2446
+ name: import_zod2.z.object({
2447
+ type: import_zod2.z.string()
2448
+ }),
2449
+ value: import_zod2.z.boolean()
2450
+ })
2451
+ });
2452
+ var getIsolatedAssets = async (address) => {
2453
+ try {
2454
+ const marketObject = address.get("core.market");
2455
+ const protocolObject = address.get("core.packages.protocol.id");
2456
+ const ISOLATED_ASSET_KEY = `${protocolObject}::market_dynamic_keys::IsolatedAssetKey`;
2457
+ const isolatedAssets = [];
2458
+ if (!marketObject)
2459
+ return isolatedAssets;
2460
+ let hasNextPage = false;
2461
+ let nextCursor = null;
2462
+ const isIsolatedDynamicField = (dynamicField) => {
2463
+ return dynamicField.name.type === ISOLATED_ASSET_KEY;
2464
+ };
2465
+ do {
2466
+ const response = await address.cache.queryGetDynamicFields({
2467
+ parentId: marketObject,
2468
+ cursor: nextCursor,
2469
+ limit: 10
2470
+ });
2471
+ if (!response)
2472
+ break;
2473
+ const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
2474
+ isolatedAssets.push(...isolatedAssetCoinTypes);
2475
+ if (response && response.hasNextPage && response.nextCursor) {
2476
+ hasNextPage = true;
2477
+ nextCursor = response.nextCursor;
2478
+ } else {
2479
+ hasNextPage = false;
2480
+ }
2481
+ } while (hasNextPage);
2482
+ return isolatedAssets;
2483
+ } catch (e) {
2484
+ console.error(e);
2485
+ return [];
2486
+ }
2487
+ };
2488
+ var isIsolatedAsset = async (utils, coinName) => {
2489
+ try {
2490
+ const marketObject = utils.address.get("core.market");
2491
+ const protocolObject = utils.address.get("core.packages.protocol.id");
2492
+ const ISOLATED_ASSET_KEY = `${protocolObject}::market_dynamic_keys::IsolatedAssetKey`;
2493
+ const cachedData = utils.address.cache.queryClient.getQueryData([
2494
+ "getDynamicFields",
2495
+ marketObject
2496
+ ]);
2497
+ if (cachedData) {
2498
+ const coinType2 = utils.parseCoinType(coinName);
2499
+ return cachedData.includes(coinType2);
2500
+ }
2501
+ const coinType = utils.parseCoinType(coinName).slice(2);
2502
+ const object = await utils.cache.queryGetDynamicFieldObject({
2503
+ parentId: marketObject,
2504
+ name: {
2505
+ type: ISOLATED_ASSET_KEY,
2506
+ value: coinType
2507
+ }
2508
+ });
2509
+ const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
2510
+ if (!parsedData.success)
2511
+ return false;
2512
+ return parsedData.data.fields.value;
2513
+ } catch (e) {
2514
+ console.error(e);
2515
+ return false;
2516
+ }
2517
+ };
2518
+
2394
2519
  // src/queries/coreQuery.ts
2395
2520
  var queryMarket = async (query, indexer = false) => {
2396
2521
  const coinPrices = await query.utils.getCoinPrices();
@@ -2475,8 +2600,8 @@ var queryMarket = async (query, indexer = false) => {
2475
2600
  borrowFee: parsedMarketPoolData.borrowFee,
2476
2601
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
2477
2602
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
2478
- // isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2479
- isIsolated: false,
2603
+ isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2604
+ // isIsolated: false,
2480
2605
  maxSupplyCoin,
2481
2606
  ...calculatedMarketPoolData
2482
2607
  };
@@ -2515,6 +2640,7 @@ var queryMarket = async (query, indexer = false) => {
2515
2640
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
2516
2641
  liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
2517
2642
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
2643
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
2518
2644
  ...calculatedMarketCollateralData
2519
2645
  };
2520
2646
  }
@@ -2562,79 +2688,73 @@ var getMarketPools = async (query, poolCoinNames = [...SUPPORT_POOLS], indexer =
2562
2688
  return marketPools;
2563
2689
  };
2564
2690
  var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
2565
- let marketPool;
2566
- let balanceSheet;
2567
- let borrowIndex;
2568
- let interestModel;
2569
- let borrowFeeRate;
2570
- coinPrice = coinPrice || (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
2571
- if (indexer) {
2572
- const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
2573
- marketPoolIndexer.coinPrice = coinPrice || marketPoolIndexer.coinPrice;
2574
- marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
2575
- marketPoolIndexer.coinName
2576
- );
2577
- return marketPoolIndexer;
2578
- }
2579
- const marketId = query.address.get("core.market");
2580
- marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
2581
- showContent: true
2582
- }))?.data;
2583
- if (marketObject) {
2584
- if (marketObject.content && "fields" in marketObject.content) {
2585
- const fields = marketObject.content.fields;
2586
- const coinType = query.utils.parseCoinType(poolCoinName);
2587
- const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
2588
- const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2589
- parentId: balanceSheetParentId,
2590
- name: {
2591
- type: "0x1::type_name::TypeName",
2592
- value: {
2593
- name: coinType.substring(2)
2594
- }
2691
+ try {
2692
+ coinPrice = coinPrice || (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
2693
+ if (indexer) {
2694
+ const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
2695
+ marketPoolIndexer.coinPrice = coinPrice || marketPoolIndexer.coinPrice;
2696
+ marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
2697
+ marketPoolIndexer.coinName
2698
+ );
2699
+ return marketPoolIndexer;
2700
+ }
2701
+ const marketId = query.address.get("core.market");
2702
+ marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
2703
+ showContent: true
2704
+ }))?.data;
2705
+ if (!(marketObject && marketObject.content?.dataType === "moveObject"))
2706
+ throw new Error(`Failed to fetch marketObject`);
2707
+ const fields = marketObject.content.fields;
2708
+ const coinType = query.utils.parseCoinType(poolCoinName);
2709
+ const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
2710
+ const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2711
+ parentId: balanceSheetParentId,
2712
+ name: {
2713
+ type: "0x1::type_name::TypeName",
2714
+ value: {
2715
+ name: coinType.substring(2)
2595
2716
  }
2596
- });
2597
- if (!balanceSheetDynamicFieldObjectResponse)
2598
- return void 0;
2599
- const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse.data;
2600
- if (balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content) {
2601
- const dynamicFields = balanceSheetDynamicFieldObject.content.fields;
2602
- balanceSheet = dynamicFields.value.fields;
2603
2717
  }
2604
- const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
2605
- const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2606
- parentId: borrowIndexParentId,
2607
- name: {
2608
- type: "0x1::type_name::TypeName",
2609
- value: {
2610
- name: coinType.substring(2)
2611
- }
2718
+ });
2719
+ const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
2720
+ if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
2721
+ throw new Error(
2722
+ `Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
2723
+ );
2724
+ const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
2725
+ const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
2726
+ const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2727
+ parentId: borrowIndexParentId,
2728
+ name: {
2729
+ type: "0x1::type_name::TypeName",
2730
+ value: {
2731
+ name: coinType.substring(2)
2612
2732
  }
2613
- });
2614
- if (!borrowIndexDynamicFieldObjectResponse)
2615
- return void 0;
2616
- const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse.data;
2617
- if (borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content) {
2618
- const dynamicFields = borrowIndexDynamicFieldObject.content.fields;
2619
- borrowIndex = dynamicFields.value.fields;
2620
2733
  }
2621
- const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
2622
- const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2623
- parentId: interestModelParentId,
2624
- name: {
2625
- type: "0x1::type_name::TypeName",
2626
- value: {
2627
- name: coinType.substring(2)
2628
- }
2734
+ });
2735
+ const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
2736
+ if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
2737
+ throw new Error(
2738
+ `Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
2739
+ );
2740
+ const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
2741
+ const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
2742
+ const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2743
+ parentId: interestModelParentId,
2744
+ name: {
2745
+ type: "0x1::type_name::TypeName",
2746
+ value: {
2747
+ name: coinType.substring(2)
2629
2748
  }
2630
- });
2631
- if (!interestModelDynamicFieldObjectResponse)
2632
- return void 0;
2633
- const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse.data;
2634
- if (interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content) {
2635
- const dynamicFields = interestModelDynamicFieldObject.content.fields;
2636
- interestModel = dynamicFields.value.fields;
2637
2749
  }
2750
+ });
2751
+ const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse?.data;
2752
+ if (!(interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content))
2753
+ throw new Error(
2754
+ `Failed to fetch interestModelDynamicFieldObject for ${poolCoinName}: ${interestModelDynamicFieldObject}`
2755
+ );
2756
+ const interestModel = interestModelDynamicFieldObject.content.fields.value.fields;
2757
+ const getBorrowFee = async () => {
2638
2758
  const borrowFeeDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2639
2759
  parentId: marketId,
2640
2760
  name: {
@@ -2646,16 +2766,11 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2646
2766
  }
2647
2767
  }
2648
2768
  });
2649
- if (!borrowFeeDynamicFieldObjectResponse)
2650
- return void 0;
2651
- const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse.data;
2652
- if (borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content) {
2653
- const dynamicFields = borrowFeeDynamicFieldObject.content.fields;
2654
- borrowFeeRate = dynamicFields.value.fields;
2655
- }
2656
- }
2657
- }
2658
- if (balanceSheet && borrowIndex && interestModel && (USE_TEST_ADDRESS || borrowFeeRate)) {
2769
+ const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
2770
+ if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
2771
+ return { value: "0" };
2772
+ return borrowFeeDynamicFieldObject.content.fields.value.fields;
2773
+ };
2659
2774
  const parsedMarketPoolData = parseOriginMarketPoolData({
2660
2775
  type: interestModel.type.fields,
2661
2776
  maxBorrowRate: interestModel.max_borrow_rate.fields,
@@ -2669,7 +2784,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2669
2784
  reserve: balanceSheet.revenue,
2670
2785
  reserveFactor: interestModel.revenue_factor.fields,
2671
2786
  borrowWeight: interestModel.borrow_weight.fields,
2672
- borrowFeeRate: borrowFeeRate || { value: "0" },
2787
+ borrowFeeRate: await getBorrowFee(),
2673
2788
  baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
2674
2789
  borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
2675
2790
  borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
@@ -2685,7 +2800,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2685
2800
  const maxSupplyCoin = (0, import_bignumber2.default)(
2686
2801
  await getSupplyLimit(query.utils, poolCoinName) ?? "0"
2687
2802
  ).shiftedBy(-coinDecimal).toNumber();
2688
- marketPool = {
2803
+ return {
2689
2804
  coinName: poolCoinName,
2690
2805
  symbol: query.utils.parseSymbol(poolCoinName),
2691
2806
  coinType: query.utils.parseCoinType(poolCoinName),
@@ -2704,12 +2819,13 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2704
2819
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
2705
2820
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
2706
2821
  maxSupplyCoin,
2707
- // isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2708
- isIsolated: false,
2822
+ isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2823
+ // isIsolated: false,
2709
2824
  ...calculatedMarketPoolData
2710
2825
  };
2826
+ } catch (e) {
2827
+ console.error(e);
2711
2828
  }
2712
- return marketPool;
2713
2829
  };
2714
2830
  var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
2715
2831
  const marketId = query.address.get("core.market");
@@ -2758,85 +2874,76 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
2758
2874
  );
2759
2875
  return marketCollateralIndexer;
2760
2876
  }
2761
- let marketCollateral;
2762
- let riskModel;
2763
- let collateralStat;
2764
2877
  const marketId = query.address.get("core.market");
2765
2878
  marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
2766
2879
  showContent: true
2767
2880
  }))?.data;
2768
- if (marketObject) {
2769
- if (marketObject.content && "fields" in marketObject.content) {
2770
- const fields = marketObject.content.fields;
2771
- const coinType = query.utils.parseCoinType(collateralCoinName);
2772
- const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
2773
- const riskModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2774
- parentId: riskModelParentId,
2775
- name: {
2776
- type: "0x1::type_name::TypeName",
2777
- value: {
2778
- name: coinType.substring(2)
2779
- }
2780
- }
2781
- });
2782
- if (!riskModelDynamicFieldObjectResponse)
2783
- return void 0;
2784
- const riskModelDynamicFieldObject = riskModelDynamicFieldObjectResponse.data;
2785
- if (riskModelDynamicFieldObject && riskModelDynamicFieldObject.content && "fields" in riskModelDynamicFieldObject.content) {
2786
- const dynamicFields = riskModelDynamicFieldObject.content.fields;
2787
- riskModel = dynamicFields.value.fields;
2881
+ if (!(marketObject && marketObject.content?.dataType === "moveObject"))
2882
+ throw new Error(`Failed to fetch marketObject`);
2883
+ const fields = marketObject.content.fields;
2884
+ const coinType = query.utils.parseCoinType(collateralCoinName);
2885
+ const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
2886
+ const riskModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2887
+ parentId: riskModelParentId,
2888
+ name: {
2889
+ type: "0x1::type_name::TypeName",
2890
+ value: {
2891
+ name: coinType.substring(2)
2788
2892
  }
2789
- const collateralStatParentId = fields.collateral_stats.fields.table.fields.id.id;
2790
- const collateralStatDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2791
- parentId: collateralStatParentId,
2792
- name: {
2793
- type: "0x1::type_name::TypeName",
2794
- value: {
2795
- name: coinType.substring(2)
2796
- }
2797
- }
2798
- });
2799
- if (!collateralStatDynamicFieldObjectResponse)
2800
- return void 0;
2801
- const collateralStatDynamicFieldObject = collateralStatDynamicFieldObjectResponse.data;
2802
- if (collateralStatDynamicFieldObject && collateralStatDynamicFieldObject.content && "fields" in collateralStatDynamicFieldObject.content) {
2803
- const dynamicFields = collateralStatDynamicFieldObject.content.fields;
2804
- collateralStat = dynamicFields.value.fields;
2893
+ }
2894
+ });
2895
+ const riskModelDynamicFieldObject = riskModelDynamicFieldObjectResponse?.data;
2896
+ if (!(riskModelDynamicFieldObject && riskModelDynamicFieldObject.content && "fields" in riskModelDynamicFieldObject.content))
2897
+ throw new Error(
2898
+ `Failed to fetch riskModelDynamicFieldObject for ${riskModelDynamicFieldObjectResponse?.error?.code.toString()}: `
2899
+ );
2900
+ const riskModel = riskModelDynamicFieldObject.content.fields.value.fields;
2901
+ const collateralStatParentId = fields.collateral_stats.fields.table.fields.id.id;
2902
+ const collateralStatDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2903
+ parentId: collateralStatParentId,
2904
+ name: {
2905
+ type: "0x1::type_name::TypeName",
2906
+ value: {
2907
+ name: coinType.substring(2)
2805
2908
  }
2806
2909
  }
2807
- }
2808
- if (riskModel && collateralStat) {
2809
- const parsedMarketCollateralData = parseOriginMarketCollateralData({
2810
- type: riskModel.type.fields,
2811
- collateralFactor: riskModel.collateral_factor.fields,
2812
- liquidationFactor: riskModel.liquidation_factor.fields,
2813
- liquidationDiscount: riskModel.liquidation_discount.fields,
2814
- liquidationPanelty: riskModel.liquidation_penalty.fields,
2815
- liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
2816
- maxCollateralAmount: riskModel.max_collateral_amount,
2817
- totalCollateralAmount: collateralStat.amount
2818
- });
2819
- const calculatedMarketCollateralData = calculateMarketCollateralData(
2820
- query.utils,
2821
- parsedMarketCollateralData
2910
+ });
2911
+ const collateralStatDynamicFieldObject = collateralStatDynamicFieldObjectResponse?.data;
2912
+ if (!(collateralStatDynamicFieldObject && collateralStatDynamicFieldObject.content && "fields" in collateralStatDynamicFieldObject.content))
2913
+ throw new Error(
2914
+ `Failed to fetch collateralStatDynamicFieldObject for ${collateralCoinName}: ${collateralStatDynamicFieldObjectResponse?.error?.code.toString()}`
2822
2915
  );
2823
- marketCollateral = {
2824
- coinName: collateralCoinName,
2825
- symbol: query.utils.parseSymbol(collateralCoinName),
2826
- coinType: query.utils.parseCoinType(collateralCoinName),
2827
- marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
2828
- coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
2829
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
2830
- coinPrice: coinPrice ?? 0,
2831
- collateralFactor: parsedMarketCollateralData.collateralFactor,
2832
- liquidationFactor: parsedMarketCollateralData.liquidationFactor,
2833
- liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
2834
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
2835
- liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
2836
- ...calculatedMarketCollateralData
2837
- };
2838
- }
2839
- return marketCollateral;
2916
+ const collateralStat = collateralStatDynamicFieldObject.content.fields.value.fields;
2917
+ const parsedMarketCollateralData = parseOriginMarketCollateralData({
2918
+ type: riskModel.type.fields,
2919
+ collateralFactor: riskModel.collateral_factor.fields,
2920
+ liquidationFactor: riskModel.liquidation_factor.fields,
2921
+ liquidationDiscount: riskModel.liquidation_discount.fields,
2922
+ liquidationPanelty: riskModel.liquidation_penalty.fields,
2923
+ liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
2924
+ maxCollateralAmount: riskModel.max_collateral_amount,
2925
+ totalCollateralAmount: collateralStat.amount
2926
+ });
2927
+ const calculatedMarketCollateralData = calculateMarketCollateralData(
2928
+ query.utils,
2929
+ parsedMarketCollateralData
2930
+ );
2931
+ return {
2932
+ coinName: collateralCoinName,
2933
+ symbol: query.utils.parseSymbol(collateralCoinName),
2934
+ coinType: query.utils.parseCoinType(collateralCoinName),
2935
+ marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
2936
+ coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
2937
+ coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
2938
+ coinPrice: coinPrice ?? 0,
2939
+ collateralFactor: parsedMarketCollateralData.collateralFactor,
2940
+ liquidationFactor: parsedMarketCollateralData.liquidationFactor,
2941
+ liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
2942
+ liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
2943
+ liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
2944
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
2945
+ ...calculatedMarketCollateralData
2946
+ };
2840
2947
  };
2841
2948
  var getObligations = async ({
2842
2949
  address
@@ -3065,7 +3172,7 @@ var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPr
3065
3172
  const coinName = query.utils.parseCoinName(marketCoinName);
3066
3173
  marketPool = marketPool || await query.getMarketPool(coinName, indexer);
3067
3174
  if (!marketPool) {
3068
- throw new Error("Fail to fetch marketPool");
3175
+ throw new Error(`Failed to fetch marketPool for ${marketCoinName}`);
3069
3176
  }
3070
3177
  const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
3071
3178
  const rewardPoolId = query.address.get(
@@ -3793,12 +3900,8 @@ var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
3793
3900
  };
3794
3901
  var getObligationAccount = async (query, obligationId, ownerAddress, indexer = false, market, coinPrices, coinAmounts) => {
3795
3902
  market = market || await query.queryMarket(indexer);
3796
- const collateralAssetCoinNames = [
3797
- .../* @__PURE__ */ new Set([
3798
- ...Object.values(market.collaterals).map(
3799
- (collateral) => collateral.coinName
3800
- )
3801
- ])
3903
+ const poolAssetCoinNames = [
3904
+ .../* @__PURE__ */ new Set([...Object.values(market.pools).map((pool) => pool.coinName)])
3802
3905
  ];
3803
3906
  const obligationQuery = await query.queryObligation(obligationId);
3804
3907
  const borrowIncentivePools = await query.getBorrowIncentivePools(
@@ -3806,8 +3909,9 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
3806
3909
  indexer
3807
3910
  );
3808
3911
  const borrowIncentiveAccounts = await query.getBorrowIncentiveAccounts(obligationId);
3809
- coinPrices = coinPrices || await query.utils.getCoinPrices(collateralAssetCoinNames);
3810
- coinAmounts = coinAmounts || await query.getCoinAmounts(collateralAssetCoinNames, ownerAddress);
3912
+ coinPrices = coinPrices || await query.utils.getCoinPrices(poolAssetCoinNames);
3913
+ coinAmounts = coinAmounts || await query.getCoinAmounts(poolAssetCoinNames, ownerAddress);
3914
+ console.log(coinPrices);
3811
3915
  const collaterals = {};
3812
3916
  const debts = {};
3813
3917
  const borrowIncentives = {};
@@ -3819,7 +3923,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
3819
3923
  let totalRewardedPools = 0;
3820
3924
  let totalBorrowedValue = (0, import_bignumber4.default)(0);
3821
3925
  let totalBorrowedValueWithWeight = (0, import_bignumber4.default)(0);
3822
- for (const assetCoinName of collateralAssetCoinNames) {
3926
+ for (const assetCoinName of poolAssetCoinNames) {
3823
3927
  const collateral = obligationQuery?.collaterals.find((collateral2) => {
3824
3928
  const collateralCoinName = query.utils.parseCoinNameFromType(
3825
3929
  collateral2.type.name
@@ -4124,7 +4228,7 @@ var getTotalValueLocked = async (query, indexer = false) => {
4124
4228
  var import_bignumber5 = __toESM(require("bignumber.js"));
4125
4229
  var import_sui_kit3 = require("@scallop-io/sui-kit");
4126
4230
  var import_bcs = require("@mysten/sui/bcs");
4127
- var import_zod2 = require("zod");
4231
+ var import_zod3 = require("zod");
4128
4232
  var import_assert = __toESM(require("assert"));
4129
4233
  var getVescaKeys = async (utils, ownerAddress) => {
4130
4234
  const owner = ownerAddress || utils.suiKit.currentAddress();
@@ -4173,10 +4277,10 @@ var getVeScas = async ({
4173
4277
  }
4174
4278
  return result;
4175
4279
  };
4176
- var SuiObjectRefZod = import_zod2.z.object({
4177
- objectId: import_zod2.z.string(),
4178
- digest: import_zod2.z.string(),
4179
- version: import_zod2.z.string()
4280
+ var SuiObjectRefZod = import_zod3.z.object({
4281
+ objectId: import_zod3.z.string(),
4282
+ digest: import_zod3.z.string(),
4283
+ version: import_zod3.z.string()
4180
4284
  });
4181
4285
  var getVeSca = async (utils, veScaKey, ownerAddress) => {
4182
4286
  const tableId = utils.address.get(`vesca.tableId`);
@@ -4310,16 +4414,16 @@ var queryVeScaKeyIdFromReferralBindings = async (address, refereeAddress) => {
4310
4414
 
4311
4415
  // src/queries/loyaltyProgramQuery.ts
4312
4416
  var import_bignumber6 = __toESM(require("bignumber.js"));
4313
- var import_zod3 = require("zod");
4314
- var rewardPoolFieldsZod = import_zod3.z.object({
4315
- balance: import_zod3.z.string(),
4316
- enable_claim: import_zod3.z.boolean()
4417
+ var import_zod4 = require("zod");
4418
+ var rewardPoolFieldsZod = import_zod4.z.object({
4419
+ balance: import_zod4.z.string(),
4420
+ enable_claim: import_zod4.z.boolean()
4317
4421
  }).transform((value) => ({
4318
4422
  totalPoolReward: (0, import_bignumber6.default)(value.balance).shiftedBy(-9).toNumber(),
4319
4423
  isClaimEnabled: value.enable_claim
4320
4424
  }));
4321
- var userRewardFieldsZod = import_zod3.z.object({
4322
- value: import_zod3.z.string()
4425
+ var userRewardFieldsZod = import_zod4.z.object({
4426
+ value: import_zod4.z.string()
4323
4427
  }).transform((value) => (0, import_bignumber6.default)(value.value).shiftedBy(-9).toNumber());
4324
4428
  var getLoyaltyProgramInformations = async (query, veScaKey) => {
4325
4429
  const rewardPool = query.address.get("loyaltyProgram.rewardPool");
@@ -4430,10 +4534,10 @@ var ScallopUtils = class {
4430
4534
  * @param address - ScallopAddress instance.
4431
4535
  */
4432
4536
  async init(force = false, address) {
4433
- if (force || !this.address.getAddresses() || !address?.getAddresses()) {
4434
- await this.address.read();
4435
- } else {
4537
+ if (address && !this.address)
4436
4538
  this.address = address;
4539
+ if (force || !this.address.getAddresses()) {
4540
+ await this.address.read();
4437
4541
  }
4438
4542
  }
4439
4543
  /**
@@ -4733,30 +4837,38 @@ var ScallopUtils = class {
4733
4837
  const priceId = this.address.get(
4734
4838
  `core.coins.${coinName}.oracle.pyth.feed`
4735
4839
  );
4736
- acc[coinName] = priceId;
4840
+ if (priceId) {
4841
+ acc[coinName] = priceId;
4842
+ }
4737
4843
  return acc;
4738
4844
  },
4739
4845
  {}
4740
4846
  );
4741
4847
  await Promise.allSettled(
4742
- Object.entries(priceIds).map(async ([coinName, priceId]) => {
4848
+ Object.entries(priceIds).filter(([_, priceId]) => !!priceId).map(async ([coinName, priceId]) => {
4743
4849
  const pythConnection = new import_pyth_sui_js.SuiPriceServiceConnection(endpoint);
4744
4850
  try {
4745
4851
  const feed = await this.cache.queryClient.fetchQuery({
4746
- queryKey: queryKeys.oracle.getPythLatestPriceFeed(priceId),
4852
+ queryKey: queryKeys.oracle.getPythLatestPriceFeed(
4853
+ priceId,
4854
+ endpoint
4855
+ ),
4747
4856
  queryFn: async () => {
4748
4857
  return await pythConnection.getLatestPriceFeeds([priceId]) ?? [];
4749
4858
  }
4750
4859
  });
4751
4860
  if (feed[0]) {
4752
- const data = parseDataFromPythPriceFeed(feed[0], this.address);
4861
+ const data = parseDataFromPythPriceFeed(
4862
+ feed[0],
4863
+ this.address
4864
+ );
4753
4865
  this._priceMap.set(coinName, {
4754
4866
  price: data.price,
4755
4867
  publishTime: data.publishTime
4756
4868
  });
4757
4869
  coinPrices[coinName] = data.price;
4870
+ failedRequests.delete(coinName);
4758
4871
  }
4759
- failedRequests.delete(coinName);
4760
4872
  } catch (e) {
4761
4873
  console.warn(
4762
4874
  `Failed to get price ${coinName} feeds with endpoint ${endpoint}: ${e}`
@@ -6702,88 +6814,6 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
6702
6814
 
6703
6815
  // src/models/scallopQuery.ts
6704
6816
  var import_utils23 = require("@mysten/sui/utils");
6705
-
6706
- // src/queries/isolatedAsset.ts
6707
- var import_zod4 = require("zod");
6708
- var isolatedAssetZod = import_zod4.z.object({
6709
- dataType: import_zod4.z.string(),
6710
- type: import_zod4.z.string(),
6711
- hasPublicTransfer: import_zod4.z.boolean(),
6712
- fields: import_zod4.z.object({
6713
- id: import_zod4.z.object({
6714
- id: import_zod4.z.string()
6715
- }),
6716
- name: import_zod4.z.object({
6717
- type: import_zod4.z.string()
6718
- }),
6719
- value: import_zod4.z.boolean()
6720
- })
6721
- });
6722
- var ISOLATED_ASSET_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::IsolatedAssetKey";
6723
- var getIsolatedAssets = async (address) => {
6724
- try {
6725
- const marketObject = address.get("core.market");
6726
- const isolatedAssets = [];
6727
- if (!marketObject)
6728
- return isolatedAssets;
6729
- let hasNextPage = false;
6730
- let nextCursor = null;
6731
- const isIsolatedDynamicField = (dynamicField) => {
6732
- return dynamicField.name.type === ISOLATED_ASSET_KEY;
6733
- };
6734
- do {
6735
- const response = await address.cache.queryGetDynamicFields({
6736
- parentId: marketObject,
6737
- cursor: nextCursor,
6738
- limit: 10
6739
- });
6740
- if (!response)
6741
- break;
6742
- const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
6743
- isolatedAssets.push(...isolatedAssetCoinTypes);
6744
- if (response && response.hasNextPage && response.nextCursor) {
6745
- hasNextPage = true;
6746
- nextCursor = response.nextCursor;
6747
- } else {
6748
- hasNextPage = false;
6749
- }
6750
- } while (hasNextPage);
6751
- return isolatedAssets;
6752
- } catch (e) {
6753
- console.error(e);
6754
- return [];
6755
- }
6756
- };
6757
- var isIsolatedAsset = async (utils, coinName) => {
6758
- try {
6759
- const marketObject = utils.address.get("core.market");
6760
- const cachedData = utils.address.cache.queryClient.getQueryData([
6761
- "getDynamicFields",
6762
- marketObject
6763
- ]);
6764
- if (cachedData) {
6765
- const coinType2 = utils.parseCoinType(coinName);
6766
- return cachedData.includes(coinType2);
6767
- }
6768
- const coinType = utils.parseCoinType(coinName).slice(2);
6769
- const object = await utils.cache.queryGetDynamicFieldObject({
6770
- parentId: marketObject,
6771
- name: {
6772
- type: ISOLATED_ASSET_KEY,
6773
- value: coinType
6774
- }
6775
- });
6776
- const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
6777
- if (!parsedData.success)
6778
- return false;
6779
- return parsedData.data.fields.value;
6780
- } catch (e) {
6781
- console.error(e);
6782
- return false;
6783
- }
6784
- };
6785
-
6786
- // src/models/scallopQuery.ts
6787
6817
  var ScallopQuery = class {
6788
6818
  constructor(params, instance) {
6789
6819
  this.params = params;
@@ -6853,11 +6883,12 @@ var ScallopQuery = class {
6853
6883
  * @param address - ScallopAddress instance.
6854
6884
  */
6855
6885
  async init(force = false, address) {
6856
- if (force || !this.address.getAddresses() || !address?.getAddresses()) {
6857
- await this.address.read();
6858
- } else {
6886
+ if (address && !this.address) {
6859
6887
  this.address = address;
6860
6888
  }
6889
+ if (force || !this.address.getAddresses()) {
6890
+ await this.address.read();
6891
+ }
6861
6892
  await this.utils.init(force, this.address);
6862
6893
  }
6863
6894
  /* ==================== Core Query Methods ==================== */
@@ -7365,10 +7396,10 @@ var ScallopBuilder = class {
7365
7396
  * @param address - ScallopAddress instance.
7366
7397
  */
7367
7398
  async init(force = false, address) {
7368
- if (force || !this.address.getAddresses() || !address?.getAddresses()) {
7369
- await this.address.read();
7370
- } else {
7399
+ if (address && !this.address)
7371
7400
  this.address = address;
7401
+ if (force || !this.address.getAddresses()) {
7402
+ await this.address.read();
7372
7403
  }
7373
7404
  await this.query.init(force, this.address);
7374
7405
  await this.utils.init(force, this.address);
@@ -8283,6 +8314,7 @@ var Scallop = class {
8283
8314
  ScallopIndexer,
8284
8315
  ScallopQuery,
8285
8316
  ScallopUtils,
8317
+ TEST_ADDRESSES,
8286
8318
  UNLOCK_ROUND_DURATION,
8287
8319
  USE_TEST_ADDRESS,
8288
8320
  assetCoins,