@scallop-io/sui-scallop-sdk 1.3.2 → 1.3.3-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,18 @@ 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
344
  ssca: "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",
342
- swusdc: "0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
343
- swusdt: "0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
345
+ // TODO: Change this to the correct value on production release
346
+ swusdc: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
347
+ // '0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC',
348
+ swusdt: (
349
+ // '0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT',
350
+ "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT"
351
+ ),
344
352
  sweth: "0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
345
353
  safsui: "0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",
346
354
  shasui: "0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",
@@ -441,10 +449,10 @@ var queryKeys = {
441
449
  ]
442
450
  },
443
451
  oracle: {
444
- getPythLatestPriceFeed: (pythPriceId) => [
452
+ getPythLatestPriceFeed: (pythPriceId, endpoint) => [
445
453
  "oracle",
446
454
  "getPythPriceId",
447
- { pythPriceId }
455
+ { pythPriceId, endpoint }
448
456
  ]
449
457
  }
450
458
  };
@@ -456,6 +464,430 @@ var MAX_LOCK_DURATION = MAX_LOCK_ROUNDS * UNLOCK_ROUND_DURATION;
456
464
  var MIN_INITIAL_LOCK_AMOUNT = 1e10;
457
465
  var MIN_TOP_UP_AMOUNT = 1e9;
458
466
 
467
+ // src/constants/testAddress.ts
468
+ var TEST_ADDRESSES = {
469
+ core: {
470
+ // version:
471
+ // '0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7',
472
+ version: "0xd318de9b0f6873879a82cbfcc2daa1d1591a8b54e7cea9f4b567da63c692a52b",
473
+ versionCap: "0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",
474
+ // object:
475
+ // '0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf',
476
+ object: "0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d",
477
+ // market:
478
+ // '0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9',
479
+ market: "0x9d6434e97f3f98fd9b0c0e1dca22632073985abcd22541feae7ee1e34cbe3af2",
480
+ adminCap: "0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",
481
+ coinDecimalsRegistry: "0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",
482
+ // obligationAccessStore:
483
+ // '0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9',
484
+ obligationAccessStore: "0x46e9b44a77ee9c9d33cc2689ecdfbb8f681935cbc6bdf6ac3df048e396c36c82",
485
+ coins: {
486
+ usdc: {
487
+ id: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7",
488
+ metaData: "0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6",
489
+ treasury: "",
490
+ oracle: {
491
+ supra: "",
492
+ switchboard: "",
493
+ pyth: {
494
+ feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
495
+ feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
496
+ }
497
+ }
498
+ },
499
+ cetus: {
500
+ id: "0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",
501
+ metaData: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",
502
+ treasury: "",
503
+ oracle: {
504
+ supra: "",
505
+ switchboard: "",
506
+ pyth: {
507
+ feed: "e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",
508
+ feedObject: "0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"
509
+ }
510
+ }
511
+ },
512
+ wapt: {
513
+ id: "0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",
514
+ metaData: "0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",
515
+ treasury: "",
516
+ oracle: {
517
+ supra: "",
518
+ switchboard: "",
519
+ pyth: {
520
+ feed: "03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",
521
+ feedObject: "0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"
522
+ }
523
+ }
524
+ },
525
+ wsol: {
526
+ id: "0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",
527
+ metaData: "0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",
528
+ treasury: "",
529
+ oracle: {
530
+ supra: "",
531
+ switchboard: "",
532
+ pyth: {
533
+ feed: "ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",
534
+ feedObject: "0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"
535
+ }
536
+ }
537
+ },
538
+ wbtc: {
539
+ id: "0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",
540
+ metaData: "0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",
541
+ treasury: "",
542
+ oracle: {
543
+ supra: "",
544
+ switchboard: "",
545
+ pyth: {
546
+ feed: "e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
547
+ feedObject: "0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"
548
+ }
549
+ }
550
+ },
551
+ weth: {
552
+ id: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
553
+ metaData: "0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",
554
+ treasury: "",
555
+ oracle: {
556
+ supra: "",
557
+ switchboard: "",
558
+ pyth: {
559
+ feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
560
+ feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
561
+ }
562
+ }
563
+ },
564
+ wusdc: {
565
+ id: "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",
566
+ metaData: "0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",
567
+ treasury: "",
568
+ oracle: {
569
+ supra: "",
570
+ switchboard: "",
571
+ pyth: {
572
+ feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
573
+ feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
574
+ }
575
+ }
576
+ },
577
+ wusdt: {
578
+ id: "0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",
579
+ metaData: "0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",
580
+ treasury: "",
581
+ oracle: {
582
+ supra: "",
583
+ switchboard: "",
584
+ pyth: {
585
+ feed: "2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",
586
+ feedObject: "0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"
587
+ }
588
+ }
589
+ },
590
+ sui: {
591
+ id: "0x0000000000000000000000000000000000000000000000000000000000000002",
592
+ metaData: "0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",
593
+ treasury: "",
594
+ oracle: {
595
+ supra: "",
596
+ switchboard: "0xbca474133638352ba83ccf7b5c931d50f764b09550e16612c9f70f1e21f3f594",
597
+ pyth: {
598
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
599
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
600
+ }
601
+ }
602
+ },
603
+ afsui: {
604
+ id: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
605
+ metaData: "0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",
606
+ treasury: "",
607
+ oracle: {
608
+ supra: "",
609
+ switchboard: "",
610
+ pyth: {
611
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
612
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
613
+ }
614
+ }
615
+ },
616
+ hasui: {
617
+ id: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
618
+ metaData: "0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",
619
+ treasury: "",
620
+ oracle: {
621
+ supra: "",
622
+ switchboard: "",
623
+ pyth: {
624
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
625
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
626
+ }
627
+ }
628
+ },
629
+ vsui: {
630
+ id: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
631
+ metaData: "0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",
632
+ treasury: "",
633
+ oracle: {
634
+ supra: "",
635
+ switchboard: "",
636
+ pyth: {
637
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
638
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
639
+ }
640
+ }
641
+ },
642
+ sca: {
643
+ id: "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
644
+ metaData: "0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",
645
+ treasury: "",
646
+ oracle: {
647
+ supra: "",
648
+ switchboard: "",
649
+ pyth: {
650
+ feed: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
651
+ feedObject: "0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"
652
+ }
653
+ }
654
+ },
655
+ sbeth: {
656
+ id: "0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29",
657
+ metaData: "0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0",
658
+ treasury: "",
659
+ oracle: {
660
+ supra: "",
661
+ switchboard: "",
662
+ pyth: {
663
+ feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
664
+ feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
665
+ }
666
+ }
667
+ }
668
+ },
669
+ oracles: {
670
+ xOracle: "0x93d5bf0936b71eb27255941e532fac33b5a5c7759e377b4923af0a1359ad494f",
671
+ xOracleCap: "0x1edeae568fde99e090dbdec4bcdbd33a15f53a1ce1f87aeef1a560dedf4b4a90",
672
+ supra: { registry: "", registryCap: "", holder: "" },
673
+ switchboard: { registry: "", registryCap: "" },
674
+ pyth: {
675
+ registry: "0xedc293f9413a5a7a5d53bdba1fd889d0a4030894469228f0acdae4aa3c55a213",
676
+ registryCap: "0xbcb07141eb1f7e01fbda4130ecf5f5adaeabb77f5d9c32158b7532bcd2197acd",
677
+ state: "0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",
678
+ wormhole: "0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",
679
+ wormholeState: "0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"
680
+ }
681
+ },
682
+ packages: {
683
+ coinDecimalsRegistry: {
684
+ id: "0xca5a5a62f01c79a104bf4d31669e29daa387f325c241de4edbe30986a9bc8b0d",
685
+ upgradeCap: "0x34e76a945d29f195bc53ca704fa70877d1cf3a5d7bbfdda1b13e633fff13c0f6"
686
+ },
687
+ math: {
688
+ id: "0xad013d5fde39e15eabda32b3dbdafd67dac32b798ce63237c27a8f73339b9b6f",
689
+ upgradeCap: "0x3a329598231de02e6135c62284b66005b41cad1d9ab7ca2dc79c08293aba2ec6"
690
+ },
691
+ whitelist: {
692
+ id: "0x1318fdc90319ec9c24df1456d960a447521b0a658316155895014a6e39b5482f",
693
+ upgradeCap: "0xf5a22aea23db664f7b69855b6a546747f17c1ec4230319cfc17225e462b05761"
694
+ },
695
+ x: {
696
+ id: "0x779b5c547976899f5474f3a5bc0db36ddf4697ad7e5a901db0415c2281d28162",
697
+ upgradeCap: "0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"
698
+ },
699
+ protocol: {
700
+ id: "0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d",
701
+ upgradeCap: "0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"
702
+ },
703
+ // protocol: {
704
+ // id: '0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e',
705
+ // upgradeCap:
706
+ // '0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a',
707
+ // },
708
+ protocolWhitelist: {
709
+ id: "0x4c262d9343dac53ecb28f482a2a3f62c73d0ebac5b5f03d57383d56ff219acdf",
710
+ upgradeCap: "0x4a5e88a75039b00988f633f811f58117f31b8627a46bf822aa114d9010049449"
711
+ },
712
+ // query: {
713
+ // id: '0xb8d603a39114a5efef3dd0bf84df0bed1be1fbd39b78b7dd6e8a61ccc5e6006f',
714
+ // upgradeCap:
715
+ // '0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f',
716
+ // },
717
+ query: {
718
+ id: "0x89706958f43fb170de134579e3fbc53972b946ee78bd2442d8e1adc36074fbdc",
719
+ upgradeCap: "0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"
720
+ },
721
+ supra: { id: "", upgradeCap: "" },
722
+ pyth: {
723
+ id: "0x910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a",
724
+ upgradeCap: "0xdf0ffbae1ea5bb25fbca5efba433dcf00c7cced65679af2f04728901275c6157"
725
+ },
726
+ switchboard: { id: "", upgradeCap: "" },
727
+ xOracle: {
728
+ id: "0x1478a432123e4b3d61878b629f2c692969fdb375644f1251cd278a4b1e7d7cd6",
729
+ upgradeCap: "0x0f928a6b2e26b73330fecaf9b44acfc9800a4a9794d6415c2a3153bc70e3c1f0"
730
+ },
731
+ testCoin: { id: "", upgradeCap: "" }
732
+ }
733
+ },
734
+ spool: {
735
+ // id: '0x7c4fdabe81c31b19a45d1e572a52a539997a90903fbb5bfab71480abe0fa62c3',
736
+ id: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
737
+ adminCap: "0xdd8a047cbbf802bfcde5288b8ef1910965d789cc614da11d39af05fca0bd020a",
738
+ // object:
739
+ // '0xe87f1b2d498106a2c61421cec75b7b5c5e348512b0dc263949a0e7a3c256571a',
740
+ object: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
741
+ pools: {
742
+ sweth: {
743
+ id: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
744
+ rewardPoolId: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"
745
+ },
746
+ ssui: {
747
+ // id: '0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4',
748
+ id: "0xb9617f83c06ebdeac0a8834782b1015e1cc7ea23739e30c132c4bfb95c37a579",
749
+ rewardPoolId: (
750
+ // '0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9',
751
+ "0xc3206071a8d43212efb6e3b5504f2321f8df97ab122b466c0bc7cfdf398dc13a"
752
+ )
753
+ },
754
+ susdc: {
755
+ id: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
756
+ rewardPoolId: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166"
757
+ },
758
+ swusdc: {
759
+ // id: '0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0',
760
+ id: "0xf1b383b9cf2e9f515fc69567df1053098f273849d09cd84b0278a773429bd2b2",
761
+ rewardPoolId: (
762
+ // '0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8',
763
+ "0xc71c53ee6505d928ba15bea4fe4f45d98c9c31eced94b72d00a7827d4b7ba3ff"
764
+ )
765
+ },
766
+ swusdt: {
767
+ // id: '0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f',
768
+ id: "0xb5567dfa5c7fc17a249e959732664c50713dd8c23db1a11376b27df800c17418",
769
+ rewardPoolId: (
770
+ // '0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080',
771
+ "0x60768b0687ff0235e376a039709a683e4c436098785e473b67b32dbab47b69ab"
772
+ )
773
+ },
774
+ scetus: {
775
+ id: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
776
+ rewardPoolId: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"
777
+ },
778
+ safsui: {
779
+ // id: '0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800',
780
+ id: "0xc568bb4c991258e839aa54802ecda04fcd9838c826bc3b42b40af81b23c458c8",
781
+ rewardPoolId: (
782
+ // '0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e',
783
+ "0x389a3cbeda742b918941bb24fd00e077bad3367484394d6234f8209b9a6aa03d"
784
+ )
785
+ },
786
+ shasui: {
787
+ // id: '0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa',
788
+ id: "0x93f3f4499bf89f2d05ddc1f8b15f51701a7c6c4d0ac0b9c3bc99462cbbd8e321",
789
+ rewardPoolId: (
790
+ // '0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66',
791
+ "0x94cee1be7f5ff34193f3aabef0b14142cb28af4d905fe487a9a7d85a15edb6aa"
792
+ )
793
+ },
794
+ svsui: {
795
+ // id: '0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670',
796
+ id: "0xa970e9087f80cb59e9299b8e7af7175d977ad6c9af0322aa4440e138fbd7ae00",
797
+ rewardPoolId: (
798
+ // '0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a',
799
+ "0x38eee9699c4fc132a6623e54b865f047df4fc6eb83af807300f44e8f4b235ff0"
800
+ )
801
+ }
802
+ },
803
+ config: ""
804
+ },
805
+ borrowIncentive: {
806
+ id: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
807
+ adminCap: "0x56ac8e6f2b360b2b35c0168d72cc6cd17d9592afb83709865cb87af24bb2025b",
808
+ object: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
809
+ query: "0x8e0d00f8ff1199d7c5fe56cea0e901a525daeefff0445a1635ace8282ae3302c",
810
+ incentivePools: "0x9d564c93128c6ab0c0d3e050a47f11df0b91494f3bb779bdc1301c1c637f15eb",
811
+ incentiveAccounts: "0x09e6040e798246de04941bc79a3ba62d3eca6d7a218cc30f21fb07f478fa2926",
812
+ config: "0x43d4ca1dfc90b161c4240facd119e74e4b850cca2957f88c2ec289c9380da064"
813
+ },
814
+ referral: {
815
+ id: "0x1bf5a8ce77050d8052549d743e16b469f15aa6b81b752b78b6ebb65179665f5a",
816
+ object: "0x5658d4bf5ddcba27e4337b4262108b3ad1716643cac8c2054ac341538adc72ec",
817
+ adminCap: "0xc5dc06b9074291259f2cac460c940012c781c4430e42125c541cc43101c3bcbd",
818
+ referralBindings: "0xcf184487782bed962bf678001efe775d31fb94b9992333a57594cf15d79d5ced",
819
+ bindingTableId: "0x41a50e258c0a266ce84e0e1a618dbf70b878cc943909e613089a50afcceb2bc0",
820
+ referralRevenuePool: "0xc24e3e5e37032f29a3dd91a9a1f057af8821b7e6c148e9683900ac8b6d30f0c6",
821
+ revenueTableId: "0x595baa3654c297bff84ab7786a2d250f019cefc66e8df8e89fd9d41e02bd30dd",
822
+ referralTiers: "0x144350f3db9b46d11b140084cd54e6de0b9c3b8d265ce8059b51d0ef58ea464b",
823
+ tiersTableId: "0xeac755a7a8b7798530905ac79e8c114f19d0f130f6eab012954f08faac29c75d",
824
+ // authorizedWitnessList:
825
+ // '0xf21b0ed043c9bb70842c0129159f4943dbcc3c9ef2f2f808af65f8be25cfd20e',
826
+ authorizedWitnessList: "0x9d6223dc52015b8a3986a573590ef2af8f1b8f3e4685513888c052f001b87e7f",
827
+ version: "0x3545849eb97723e676a476ec9d4fe5f2eb0eb2c6b78972851114fd4c7ed4639f"
828
+ },
829
+ vesca: {
830
+ id: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
831
+ object: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
832
+ adminCap: "0x8ffa76135c5b85c5fbd73a6448a4a733d826cb63a267ab817656acb77c72d4a5",
833
+ tableId: "0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",
834
+ table: "0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",
835
+ treasury: "0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",
836
+ config: "0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"
837
+ },
838
+ loyaltyProgram: {
839
+ id: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
840
+ object: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
841
+ rewardPool: "0xf9c090492ef476bd542109d0913ffe871cbfa28578b7114eca2a8c0e5671786f",
842
+ userRewardTableId: "0x748a80395849ed37db1b0e14f2ab5d1d96458d2359ab3a84eb079d0f4ac7cf2e"
843
+ },
844
+ scoin: {
845
+ id: "0x773dab39c90fe05439b06a2d061795e52a974ff92c2aef90b2ee467acf7f33c8",
846
+ coins: {
847
+ ssui: {
848
+ coinType: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
849
+ treasury: "0x0e499640a12c38dd9cc44532f5bc5fd1b6da86d2f9a8810357250f4b26e9e5c7"
850
+ },
851
+ scetus: {
852
+ coinType: "0x8b71e6d323ed78515af2bead13bf3d0da1562ba4a99234eb7c4f14fd39ef0427::scallop_cetus::SCALLOP_CETUS",
853
+ treasury: "0xd786f4b2d26278cc7911a3445b1b085eab60f269ef9dbb6b87e803d52f155003"
854
+ },
855
+ ssca: {
856
+ coinType: "0x0a9d3c6c9af9f6e8def82921541bcbd17f73ed31bed3adcb684f2a4c267e42f0::scallop_sca::SCALLOP_SCA",
857
+ treasury: "0xe818636d1d6c46d6ea1a2dce9d94696d7cbc18ce27451b603eeaa47aba8d75e0"
858
+ },
859
+ swusdc: {
860
+ coinType: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
861
+ treasury: "0x471fbab72578bab577263006fe32543b6e76153fffa2bef69affe4bc4934258f"
862
+ },
863
+ swusdt: {
864
+ coinType: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
865
+ treasury: "0x921a4ed4bb4b4f11f51a462c83f4c0f6b60a90e441d1bc0d26d6fd893146bf4d"
866
+ },
867
+ sweth: {
868
+ coinType: "0x27d54f43e3eda701be56b82e5756e41c84467cd202f5cf713d5f9e45a9f1b6bc::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
869
+ treasury: "0x032b4c8fac94c038dbe986f7587e9b1e4ef580b5ee06d2ef249d85459b7ef05d"
870
+ },
871
+ safsui: {
872
+ coinType: "0xb75b46d975d8d80670b53a6bee90baaa8ce2e0b7d397f079447d641eef6b44ad::scallop_af_sui::SCALLOP_AF_SUI",
873
+ treasury: "0x21450ef0570ef3d224ffa3b873ab802e439ece7b93cc7efad10ae0c1e3b3fcfe"
874
+ },
875
+ shasui: {
876
+ coinType: "0xd973a723874e2c7cde196602a79155a1343a933f8cf87d9b1bb7408bc1acbc58::scallop_ha_sui::SCALLOP_HA_SUI",
877
+ treasury: "0xf822fc1402207e47d2e3ba8ff6e1e594bf1de777dc5ebd2744619cd2726e3b0d"
878
+ },
879
+ svsui: {
880
+ coinType: "0x97023a317320c4498cc4cd239dd02fd30c28246e5e8f81325d63f2bd8d70f6b3::scallop_v_sui::SCALLOP_V_SUI",
881
+ treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6"
882
+ },
883
+ ssbeth: {
884
+ coinType: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
885
+ treasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed"
886
+ }
887
+ }
888
+ }
889
+ };
890
+
459
891
  // src/models/scallop.ts
460
892
  var import_sui_kit16 = require("@scallop-io/sui-kit");
461
893
 
@@ -1148,540 +1580,148 @@ var ScallopCache = class {
1148
1580
  return Object.values(queryKeys.rpc).map(
1149
1581
  (t) => this.queryClient.invalidateQueries({
1150
1582
  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
- });
1583
+ type: "all"
1584
+ })
1585
+ );
1222
1586
  }
1223
1587
  /**
1224
- * @description Provides cache for getOwnedObjects of the SuiKit.
1225
- * @param input
1226
- * @returns Promise<PaginatedObjectsResponse>
1588
+ * @description Provides cache for inspectTxn of the SuiKit.
1589
+ * @param QueryInspectTxnParams
1590
+ * @param txBlock
1591
+ * @returns Promise<DevInspectResults>
1227
1592
  */
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),
1593
+ async queryInspectTxn({
1594
+ queryTarget,
1595
+ args,
1596
+ typeArgs
1597
+ }) {
1598
+ const txBlock = new import_sui_kit.SuiTxBlock();
1599
+ txBlock.moveCall(queryTarget, args, typeArgs);
1600
+ const query = await this.queryClient.fetchQuery({
1601
+ queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
1242
1602
  queryFn: async () => {
1243
1603
  return await callWithRateLimit(
1244
1604
  this.tokenBucket,
1245
- () => this.client.getDynamicFields(input)
1605
+ () => this.suiKit.inspectTxn(txBlock)
1246
1606
  );
1247
1607
  }
1248
1608
  });
1609
+ return query;
1249
1610
  }
1250
- async queryGetDynamicFieldObject(input) {
1611
+ /**
1612
+ * @description Provides cache for getObject of the SuiKit.
1613
+ * @param objectId
1614
+ * @param QueryObjectParams
1615
+ * @returns Promise<SuiObjectResponse>
1616
+ */
1617
+ async queryGetObject(objectId, options) {
1251
1618
  return this.queryClient.fetchQuery({
1252
- queryKey: queryKeys.rpc.getDynamicFieldObject(input),
1619
+ queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
1253
1620
  queryFn: async () => {
1254
1621
  return await callWithRateLimit(
1255
1622
  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
- {}
1623
+ () => this.client.getObject({
1624
+ id: objectId,
1625
+ options
1626
+ })
1279
1627
  );
1280
- return balances;
1281
1628
  }
1282
- });
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
- }
1629
+ });
1630
+ }
1631
+ /**
1632
+ * @description Provides cache for getObjects of the SuiKit.
1633
+ * @param objectIds
1634
+ * @returns Promise<SuiObjectData[]>
1635
+ */
1636
+ async queryGetObjects(objectIds, options = {
1637
+ showContent: true
1638
+ }) {
1639
+ if (objectIds.length === 0)
1640
+ return [];
1641
+ return this.queryClient.fetchQuery({
1642
+ queryKey: queryKeys.rpc.getObjects(
1643
+ objectIds,
1644
+ this.walletAddress,
1645
+ options
1646
+ ),
1647
+ queryFn: async () => {
1648
+ return await callWithRateLimit(
1649
+ this.tokenBucket,
1650
+ () => this.suiKit.getObjects(objectIds, options)
1651
+ );
1468
1652
  }
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"
1653
+ });
1654
+ }
1655
+ /**
1656
+ * @description Provides cache for getOwnedObjects of the SuiKit.
1657
+ * @param input
1658
+ * @returns Promise<PaginatedObjectsResponse>
1659
+ */
1660
+ async queryGetOwnedObjects(input) {
1661
+ return this.queryClient.fetchQuery({
1662
+ queryKey: queryKeys.rpc.getOwnedObjects(input),
1663
+ queryFn: async () => {
1664
+ return await callWithRateLimit(
1665
+ this.tokenBucket,
1666
+ () => this.client.getOwnedObjects(input)
1667
+ );
1481
1668
  }
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
- )
1669
+ });
1670
+ }
1671
+ async queryGetDynamicFields(input) {
1672
+ return this.queryClient.fetchQuery({
1673
+ queryKey: queryKeys.rpc.getDynamicFields(input),
1674
+ queryFn: async () => {
1675
+ return await callWithRateLimit(
1676
+ this.tokenBucket,
1677
+ () => this.client.getDynamicFields(input)
1678
+ );
1598
1679
  }
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"
1680
+ });
1681
+ }
1682
+ async queryGetDynamicFieldObject(input) {
1683
+ return this.queryClient.fetchQuery({
1684
+ queryKey: queryKeys.rpc.getDynamicFieldObject(input),
1685
+ queryFn: async () => {
1686
+ return await callWithRateLimit(
1687
+ this.tokenBucket,
1688
+ () => this.client.getDynamicFieldObject(input)
1689
+ );
1690
+ }
1691
+ });
1692
+ }
1693
+ async queryGetAllCoinBalances(owner) {
1694
+ return this.queryClient.fetchQuery({
1695
+ queryKey: queryKeys.rpc.getAllCoinBalances(owner),
1696
+ queryFn: async () => {
1697
+ const allBalances = await callWithRateLimit(
1698
+ this.tokenBucket,
1699
+ () => this.client.getAllBalances({ owner })
1700
+ );
1701
+ if (!allBalances)
1702
+ return {};
1703
+ const balances = allBalances.reduce(
1704
+ (acc, coinBalance) => {
1705
+ if (coinBalance.totalBalance !== "0") {
1706
+ acc[(0, import_sui_kit.normalizeStructTag)(coinBalance.coinType)] = coinBalance.totalBalance;
1707
+ }
1708
+ return acc;
1709
+ },
1710
+ {}
1711
+ );
1712
+ return balances;
1679
1713
  }
1680
- }
1714
+ });
1715
+ }
1716
+ async queryGetCoinBalance(input) {
1717
+ if (!input.coinType)
1718
+ return "0";
1719
+ return (await this.queryGetAllCoinBalances(input.owner) || {})[(0, import_sui_kit.normalizeStructTag)(input.coinType)] ?? "0";
1681
1720
  }
1682
1721
  };
1683
1722
 
1684
1723
  // src/models/scallopAddress.ts
1724
+ var import_axios = __toESM(require("axios"));
1685
1725
  var EMPTY_ADDRESSES = {
1686
1726
  core: {
1687
1727
  version: "",
@@ -2391,6 +2431,89 @@ var getSupplyLimit = async (utils, poolName) => {
2391
2431
  return parsedData.data.fields.value;
2392
2432
  };
2393
2433
 
2434
+ // src/queries/isolatedAsset.ts
2435
+ var import_zod2 = require("zod");
2436
+ var isolatedAssetZod = import_zod2.z.object({
2437
+ dataType: import_zod2.z.string(),
2438
+ type: import_zod2.z.string(),
2439
+ hasPublicTransfer: import_zod2.z.boolean(),
2440
+ fields: import_zod2.z.object({
2441
+ id: import_zod2.z.object({
2442
+ id: import_zod2.z.string()
2443
+ }),
2444
+ name: import_zod2.z.object({
2445
+ type: import_zod2.z.string()
2446
+ }),
2447
+ value: import_zod2.z.boolean()
2448
+ })
2449
+ });
2450
+ var getIsolatedAssets = async (address) => {
2451
+ try {
2452
+ const marketObject = address.get("core.market");
2453
+ const protocolObject = address.get("core.packages.protocol.id");
2454
+ const ISOLATED_ASSET_KEY = `${protocolObject}::market_dynamic_keys::IsolatedAssetKey`;
2455
+ const isolatedAssets = [];
2456
+ if (!marketObject)
2457
+ return isolatedAssets;
2458
+ let hasNextPage = false;
2459
+ let nextCursor = null;
2460
+ const isIsolatedDynamicField = (dynamicField) => {
2461
+ return dynamicField.name.type === ISOLATED_ASSET_KEY;
2462
+ };
2463
+ do {
2464
+ const response = await address.cache.queryGetDynamicFields({
2465
+ parentId: marketObject,
2466
+ cursor: nextCursor,
2467
+ limit: 10
2468
+ });
2469
+ if (!response)
2470
+ break;
2471
+ const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
2472
+ isolatedAssets.push(...isolatedAssetCoinTypes);
2473
+ if (response && response.hasNextPage && response.nextCursor) {
2474
+ hasNextPage = true;
2475
+ nextCursor = response.nextCursor;
2476
+ } else {
2477
+ hasNextPage = false;
2478
+ }
2479
+ } while (hasNextPage);
2480
+ return isolatedAssets;
2481
+ } catch (e) {
2482
+ console.error(e);
2483
+ return [];
2484
+ }
2485
+ };
2486
+ var isIsolatedAsset = async (utils, coinName) => {
2487
+ try {
2488
+ const marketObject = utils.address.get("core.market");
2489
+ const protocolObject = utils.address.get("core.packages.protocol.id");
2490
+ const ISOLATED_ASSET_KEY = `${protocolObject}::market_dynamic_keys::IsolatedAssetKey`;
2491
+ const cachedData = utils.address.cache.queryClient.getQueryData([
2492
+ "getDynamicFields",
2493
+ marketObject
2494
+ ]);
2495
+ if (cachedData) {
2496
+ const coinType2 = utils.parseCoinType(coinName);
2497
+ return cachedData.includes(coinType2);
2498
+ }
2499
+ const coinType = utils.parseCoinType(coinName).slice(2);
2500
+ const object = await utils.cache.queryGetDynamicFieldObject({
2501
+ parentId: marketObject,
2502
+ name: {
2503
+ type: ISOLATED_ASSET_KEY,
2504
+ value: coinType
2505
+ }
2506
+ });
2507
+ const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
2508
+ if (!parsedData.success)
2509
+ return false;
2510
+ return parsedData.data.fields.value;
2511
+ } catch (e) {
2512
+ console.error(e);
2513
+ return false;
2514
+ }
2515
+ };
2516
+
2394
2517
  // src/queries/coreQuery.ts
2395
2518
  var queryMarket = async (query, indexer = false) => {
2396
2519
  const coinPrices = await query.utils.getCoinPrices();
@@ -2475,8 +2598,8 @@ var queryMarket = async (query, indexer = false) => {
2475
2598
  borrowFee: parsedMarketPoolData.borrowFee,
2476
2599
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
2477
2600
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
2478
- // isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2479
- isIsolated: false,
2601
+ isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2602
+ // isIsolated: false,
2480
2603
  maxSupplyCoin,
2481
2604
  ...calculatedMarketPoolData
2482
2605
  };
@@ -2515,6 +2638,7 @@ var queryMarket = async (query, indexer = false) => {
2515
2638
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
2516
2639
  liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
2517
2640
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
2641
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
2518
2642
  ...calculatedMarketCollateralData
2519
2643
  };
2520
2644
  }
@@ -2562,79 +2686,73 @@ var getMarketPools = async (query, poolCoinNames = [...SUPPORT_POOLS], indexer =
2562
2686
  return marketPools;
2563
2687
  };
2564
2688
  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
- }
2689
+ try {
2690
+ coinPrice = coinPrice || (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
2691
+ if (indexer) {
2692
+ const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
2693
+ marketPoolIndexer.coinPrice = coinPrice || marketPoolIndexer.coinPrice;
2694
+ marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
2695
+ marketPoolIndexer.coinName
2696
+ );
2697
+ return marketPoolIndexer;
2698
+ }
2699
+ const marketId = query.address.get("core.market");
2700
+ marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
2701
+ showContent: true
2702
+ }))?.data;
2703
+ if (!(marketObject && marketObject.content?.dataType === "moveObject"))
2704
+ throw new Error(`Failed to fetch marketObject`);
2705
+ const fields = marketObject.content.fields;
2706
+ const coinType = query.utils.parseCoinType(poolCoinName);
2707
+ const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
2708
+ const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2709
+ parentId: balanceSheetParentId,
2710
+ name: {
2711
+ type: "0x1::type_name::TypeName",
2712
+ value: {
2713
+ name: coinType.substring(2)
2595
2714
  }
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
2715
  }
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
- }
2716
+ });
2717
+ const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
2718
+ if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
2719
+ throw new Error(
2720
+ `Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
2721
+ );
2722
+ const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
2723
+ const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
2724
+ const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2725
+ parentId: borrowIndexParentId,
2726
+ name: {
2727
+ type: "0x1::type_name::TypeName",
2728
+ value: {
2729
+ name: coinType.substring(2)
2612
2730
  }
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
2731
  }
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
- }
2732
+ });
2733
+ const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
2734
+ if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
2735
+ throw new Error(
2736
+ `Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
2737
+ );
2738
+ const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
2739
+ const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
2740
+ const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2741
+ parentId: interestModelParentId,
2742
+ name: {
2743
+ type: "0x1::type_name::TypeName",
2744
+ value: {
2745
+ name: coinType.substring(2)
2629
2746
  }
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
2747
  }
2748
+ });
2749
+ const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse?.data;
2750
+ if (!(interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content))
2751
+ throw new Error(
2752
+ `Failed to fetch interestModelDynamicFieldObject for ${poolCoinName}: ${interestModelDynamicFieldObject}`
2753
+ );
2754
+ const interestModel = interestModelDynamicFieldObject.content.fields.value.fields;
2755
+ const getBorrowFee = async () => {
2638
2756
  const borrowFeeDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2639
2757
  parentId: marketId,
2640
2758
  name: {
@@ -2646,16 +2764,11 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2646
2764
  }
2647
2765
  }
2648
2766
  });
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)) {
2767
+ const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
2768
+ if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
2769
+ return { value: "0" };
2770
+ return borrowFeeDynamicFieldObject.content.fields.value.fields;
2771
+ };
2659
2772
  const parsedMarketPoolData = parseOriginMarketPoolData({
2660
2773
  type: interestModel.type.fields,
2661
2774
  maxBorrowRate: interestModel.max_borrow_rate.fields,
@@ -2669,7 +2782,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2669
2782
  reserve: balanceSheet.revenue,
2670
2783
  reserveFactor: interestModel.revenue_factor.fields,
2671
2784
  borrowWeight: interestModel.borrow_weight.fields,
2672
- borrowFeeRate: borrowFeeRate || { value: "0" },
2785
+ borrowFeeRate: await getBorrowFee(),
2673
2786
  baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
2674
2787
  borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
2675
2788
  borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
@@ -2685,7 +2798,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2685
2798
  const maxSupplyCoin = (0, import_bignumber2.default)(
2686
2799
  await getSupplyLimit(query.utils, poolCoinName) ?? "0"
2687
2800
  ).shiftedBy(-coinDecimal).toNumber();
2688
- marketPool = {
2801
+ return {
2689
2802
  coinName: poolCoinName,
2690
2803
  symbol: query.utils.parseSymbol(poolCoinName),
2691
2804
  coinType: query.utils.parseCoinType(poolCoinName),
@@ -2704,12 +2817,13 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2704
2817
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
2705
2818
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
2706
2819
  maxSupplyCoin,
2707
- // isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2708
- isIsolated: false,
2820
+ isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2821
+ // isIsolated: false,
2709
2822
  ...calculatedMarketPoolData
2710
2823
  };
2824
+ } catch (e) {
2825
+ console.error(e);
2711
2826
  }
2712
- return marketPool;
2713
2827
  };
2714
2828
  var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
2715
2829
  const marketId = query.address.get("core.market");
@@ -2758,85 +2872,76 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
2758
2872
  );
2759
2873
  return marketCollateralIndexer;
2760
2874
  }
2761
- let marketCollateral;
2762
- let riskModel;
2763
- let collateralStat;
2764
2875
  const marketId = query.address.get("core.market");
2765
2876
  marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
2766
2877
  showContent: true
2767
2878
  }))?.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;
2879
+ if (!(marketObject && marketObject.content?.dataType === "moveObject"))
2880
+ throw new Error(`Failed to fetch marketObject`);
2881
+ const fields = marketObject.content.fields;
2882
+ const coinType = query.utils.parseCoinType(collateralCoinName);
2883
+ const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
2884
+ const riskModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2885
+ parentId: riskModelParentId,
2886
+ name: {
2887
+ type: "0x1::type_name::TypeName",
2888
+ value: {
2889
+ name: coinType.substring(2)
2788
2890
  }
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;
2891
+ }
2892
+ });
2893
+ const riskModelDynamicFieldObject = riskModelDynamicFieldObjectResponse?.data;
2894
+ if (!(riskModelDynamicFieldObject && riskModelDynamicFieldObject.content && "fields" in riskModelDynamicFieldObject.content))
2895
+ throw new Error(
2896
+ `Failed to ftech riskModelDynamicFieldObject for ${riskModelDynamicFieldObjectResponse?.error?.code.toString()}: `
2897
+ );
2898
+ const riskModel = riskModelDynamicFieldObject.content.fields.value.fields;
2899
+ const collateralStatParentId = fields.collateral_stats.fields.table.fields.id.id;
2900
+ const collateralStatDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2901
+ parentId: collateralStatParentId,
2902
+ name: {
2903
+ type: "0x1::type_name::TypeName",
2904
+ value: {
2905
+ name: coinType.substring(2)
2805
2906
  }
2806
2907
  }
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
2908
+ });
2909
+ const collateralStatDynamicFieldObject = collateralStatDynamicFieldObjectResponse?.data;
2910
+ if (!(collateralStatDynamicFieldObject && collateralStatDynamicFieldObject.content && "fields" in collateralStatDynamicFieldObject.content))
2911
+ throw new Error(
2912
+ `Failed to fetch collateralStatDynamicFieldObject for ${collateralCoinName}: ${collateralStatDynamicFieldObjectResponse?.error?.code.toString()}`
2822
2913
  );
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;
2914
+ const collateralStat = collateralStatDynamicFieldObject.content.fields.value.fields;
2915
+ const parsedMarketCollateralData = parseOriginMarketCollateralData({
2916
+ type: riskModel.type.fields,
2917
+ collateralFactor: riskModel.collateral_factor.fields,
2918
+ liquidationFactor: riskModel.liquidation_factor.fields,
2919
+ liquidationDiscount: riskModel.liquidation_discount.fields,
2920
+ liquidationPanelty: riskModel.liquidation_penalty.fields,
2921
+ liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
2922
+ maxCollateralAmount: riskModel.max_collateral_amount,
2923
+ totalCollateralAmount: collateralStat.amount
2924
+ });
2925
+ const calculatedMarketCollateralData = calculateMarketCollateralData(
2926
+ query.utils,
2927
+ parsedMarketCollateralData
2928
+ );
2929
+ return {
2930
+ coinName: collateralCoinName,
2931
+ symbol: query.utils.parseSymbol(collateralCoinName),
2932
+ coinType: query.utils.parseCoinType(collateralCoinName),
2933
+ marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
2934
+ coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
2935
+ coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
2936
+ coinPrice: coinPrice ?? 0,
2937
+ collateralFactor: parsedMarketCollateralData.collateralFactor,
2938
+ liquidationFactor: parsedMarketCollateralData.liquidationFactor,
2939
+ liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
2940
+ liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
2941
+ liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
2942
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
2943
+ ...calculatedMarketCollateralData
2944
+ };
2840
2945
  };
2841
2946
  var getObligations = async ({
2842
2947
  address
@@ -3065,7 +3170,7 @@ var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPr
3065
3170
  const coinName = query.utils.parseCoinName(marketCoinName);
3066
3171
  marketPool = marketPool || await query.getMarketPool(coinName, indexer);
3067
3172
  if (!marketPool) {
3068
- throw new Error("Fail to fetch marketPool");
3173
+ throw new Error("Failed to fetch marketPool");
3069
3174
  }
3070
3175
  const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
3071
3176
  const rewardPoolId = query.address.get(
@@ -4124,7 +4229,7 @@ var getTotalValueLocked = async (query, indexer = false) => {
4124
4229
  var import_bignumber5 = __toESM(require("bignumber.js"));
4125
4230
  var import_sui_kit3 = require("@scallop-io/sui-kit");
4126
4231
  var import_bcs = require("@mysten/sui/bcs");
4127
- var import_zod2 = require("zod");
4232
+ var import_zod3 = require("zod");
4128
4233
  var import_assert = __toESM(require("assert"));
4129
4234
  var getVescaKeys = async (utils, ownerAddress) => {
4130
4235
  const owner = ownerAddress || utils.suiKit.currentAddress();
@@ -4173,10 +4278,10 @@ var getVeScas = async ({
4173
4278
  }
4174
4279
  return result;
4175
4280
  };
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()
4281
+ var SuiObjectRefZod = import_zod3.z.object({
4282
+ objectId: import_zod3.z.string(),
4283
+ digest: import_zod3.z.string(),
4284
+ version: import_zod3.z.string()
4180
4285
  });
4181
4286
  var getVeSca = async (utils, veScaKey, ownerAddress) => {
4182
4287
  const tableId = utils.address.get(`vesca.tableId`);
@@ -4310,16 +4415,16 @@ var queryVeScaKeyIdFromReferralBindings = async (address, refereeAddress) => {
4310
4415
 
4311
4416
  // src/queries/loyaltyProgramQuery.ts
4312
4417
  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()
4418
+ var import_zod4 = require("zod");
4419
+ var rewardPoolFieldsZod = import_zod4.z.object({
4420
+ balance: import_zod4.z.string(),
4421
+ enable_claim: import_zod4.z.boolean()
4317
4422
  }).transform((value) => ({
4318
4423
  totalPoolReward: (0, import_bignumber6.default)(value.balance).shiftedBy(-9).toNumber(),
4319
4424
  isClaimEnabled: value.enable_claim
4320
4425
  }));
4321
- var userRewardFieldsZod = import_zod3.z.object({
4322
- value: import_zod3.z.string()
4426
+ var userRewardFieldsZod = import_zod4.z.object({
4427
+ value: import_zod4.z.string()
4323
4428
  }).transform((value) => (0, import_bignumber6.default)(value.value).shiftedBy(-9).toNumber());
4324
4429
  var getLoyaltyProgramInformations = async (query, veScaKey) => {
4325
4430
  const rewardPool = query.address.get("loyaltyProgram.rewardPool");
@@ -4430,10 +4535,10 @@ var ScallopUtils = class {
4430
4535
  * @param address - ScallopAddress instance.
4431
4536
  */
4432
4537
  async init(force = false, address) {
4433
- if (force || !this.address.getAddresses() || !address?.getAddresses()) {
4434
- await this.address.read();
4435
- } else {
4538
+ if (address && !this.address)
4436
4539
  this.address = address;
4540
+ if (force || !this.address.getAddresses()) {
4541
+ await this.address.read();
4437
4542
  }
4438
4543
  }
4439
4544
  /**
@@ -4733,30 +4838,38 @@ var ScallopUtils = class {
4733
4838
  const priceId = this.address.get(
4734
4839
  `core.coins.${coinName}.oracle.pyth.feed`
4735
4840
  );
4736
- acc[coinName] = priceId;
4841
+ if (priceId) {
4842
+ acc[coinName] = priceId;
4843
+ }
4737
4844
  return acc;
4738
4845
  },
4739
4846
  {}
4740
4847
  );
4741
4848
  await Promise.allSettled(
4742
- Object.entries(priceIds).map(async ([coinName, priceId]) => {
4849
+ Object.entries(priceIds).filter(([_, priceId]) => !!priceId).map(async ([coinName, priceId]) => {
4743
4850
  const pythConnection = new import_pyth_sui_js.SuiPriceServiceConnection(endpoint);
4744
4851
  try {
4745
4852
  const feed = await this.cache.queryClient.fetchQuery({
4746
- queryKey: queryKeys.oracle.getPythLatestPriceFeed(priceId),
4853
+ queryKey: queryKeys.oracle.getPythLatestPriceFeed(
4854
+ priceId,
4855
+ endpoint
4856
+ ),
4747
4857
  queryFn: async () => {
4748
4858
  return await pythConnection.getLatestPriceFeeds([priceId]) ?? [];
4749
4859
  }
4750
4860
  });
4751
4861
  if (feed[0]) {
4752
- const data = parseDataFromPythPriceFeed(feed[0], this.address);
4862
+ const data = parseDataFromPythPriceFeed(
4863
+ feed[0],
4864
+ this.address
4865
+ );
4753
4866
  this._priceMap.set(coinName, {
4754
4867
  price: data.price,
4755
4868
  publishTime: data.publishTime
4756
4869
  });
4757
4870
  coinPrices[coinName] = data.price;
4871
+ failedRequests.delete(coinName);
4758
4872
  }
4759
- failedRequests.delete(coinName);
4760
4873
  } catch (e) {
4761
4874
  console.warn(
4762
4875
  `Failed to get price ${coinName} feeds with endpoint ${endpoint}: ${e}`
@@ -6702,88 +6815,6 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
6702
6815
 
6703
6816
  // src/models/scallopQuery.ts
6704
6817
  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
6818
  var ScallopQuery = class {
6788
6819
  constructor(params, instance) {
6789
6820
  this.params = params;
@@ -6853,11 +6884,12 @@ var ScallopQuery = class {
6853
6884
  * @param address - ScallopAddress instance.
6854
6885
  */
6855
6886
  async init(force = false, address) {
6856
- if (force || !this.address.getAddresses() || !address?.getAddresses()) {
6857
- await this.address.read();
6858
- } else {
6887
+ if (address && !this.address) {
6859
6888
  this.address = address;
6860
6889
  }
6890
+ if (force || !this.address.getAddresses()) {
6891
+ await this.address.read();
6892
+ }
6861
6893
  await this.utils.init(force, this.address);
6862
6894
  }
6863
6895
  /* ==================== Core Query Methods ==================== */
@@ -7365,10 +7397,10 @@ var ScallopBuilder = class {
7365
7397
  * @param address - ScallopAddress instance.
7366
7398
  */
7367
7399
  async init(force = false, address) {
7368
- if (force || !this.address.getAddresses() || !address?.getAddresses()) {
7369
- await this.address.read();
7370
- } else {
7400
+ if (address && !this.address)
7371
7401
  this.address = address;
7402
+ if (force || !this.address.getAddresses()) {
7403
+ await this.address.read();
7372
7404
  }
7373
7405
  await this.query.init(force, this.address);
7374
7406
  await this.utils.init(force, this.address);
@@ -8283,6 +8315,7 @@ var Scallop = class {
8283
8315
  ScallopIndexer,
8284
8316
  ScallopQuery,
8285
8317
  ScallopUtils,
8318
+ TEST_ADDRESSES,
8286
8319
  UNLOCK_ROUND_DURATION,
8287
8320
  USE_TEST_ADDRESS,
8288
8321
  assetCoins,