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

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.mjs CHANGED
@@ -254,18 +254,11 @@ var voloCoinIds = {
254
254
  var sCoinIds = {
255
255
  susdc: "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",
256
256
  ssbeth: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
257
- // TODO: Change this to the correct value on production release
258
- ssui: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
259
- // ssui: '0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI',
257
+ ssui: "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",
260
258
  scetus: "0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",
261
259
  ssca: "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",
262
- // TODO: Change this to the correct value on production release
263
- swusdc: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
264
- // '0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC',
265
- swusdt: (
266
- // '0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT',
267
- "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT"
268
- ),
260
+ swusdc: "0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
261
+ swusdt: "0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
269
262
  sweth: "0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
270
263
  safsui: "0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",
271
264
  shasui: "0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",
@@ -366,10 +359,10 @@ var queryKeys = {
366
359
  ]
367
360
  },
368
361
  oracle: {
369
- getPythLatestPriceFeed: (pythPriceId, endpoint) => [
362
+ getPythLatestPriceFeed: (pythPriceId) => [
370
363
  "oracle",
371
364
  "getPythPriceId",
372
- { pythPriceId, endpoint }
365
+ { pythPriceId }
373
366
  ]
374
367
  }
375
368
  };
@@ -381,430 +374,6 @@ var MAX_LOCK_DURATION = MAX_LOCK_ROUNDS * UNLOCK_ROUND_DURATION;
381
374
  var MIN_INITIAL_LOCK_AMOUNT = 1e10;
382
375
  var MIN_TOP_UP_AMOUNT = 1e9;
383
376
 
384
- // src/constants/testAddress.ts
385
- var TEST_ADDRESSES = {
386
- core: {
387
- // version:
388
- // '0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7',
389
- version: "0xd318de9b0f6873879a82cbfcc2daa1d1591a8b54e7cea9f4b567da63c692a52b",
390
- versionCap: "0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",
391
- // object:
392
- // '0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf',
393
- object: "0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d",
394
- // market:
395
- // '0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9',
396
- market: "0x9d6434e97f3f98fd9b0c0e1dca22632073985abcd22541feae7ee1e34cbe3af2",
397
- adminCap: "0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",
398
- coinDecimalsRegistry: "0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",
399
- // obligationAccessStore:
400
- // '0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9',
401
- obligationAccessStore: "0x46e9b44a77ee9c9d33cc2689ecdfbb8f681935cbc6bdf6ac3df048e396c36c82",
402
- coins: {
403
- usdc: {
404
- id: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7",
405
- metaData: "0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6",
406
- treasury: "",
407
- oracle: {
408
- supra: "",
409
- switchboard: "",
410
- pyth: {
411
- feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
412
- feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
413
- }
414
- }
415
- },
416
- cetus: {
417
- id: "0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",
418
- metaData: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",
419
- treasury: "",
420
- oracle: {
421
- supra: "",
422
- switchboard: "",
423
- pyth: {
424
- feed: "e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",
425
- feedObject: "0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"
426
- }
427
- }
428
- },
429
- wapt: {
430
- id: "0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",
431
- metaData: "0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",
432
- treasury: "",
433
- oracle: {
434
- supra: "",
435
- switchboard: "",
436
- pyth: {
437
- feed: "03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",
438
- feedObject: "0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"
439
- }
440
- }
441
- },
442
- wsol: {
443
- id: "0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",
444
- metaData: "0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",
445
- treasury: "",
446
- oracle: {
447
- supra: "",
448
- switchboard: "",
449
- pyth: {
450
- feed: "ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",
451
- feedObject: "0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"
452
- }
453
- }
454
- },
455
- wbtc: {
456
- id: "0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",
457
- metaData: "0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",
458
- treasury: "",
459
- oracle: {
460
- supra: "",
461
- switchboard: "",
462
- pyth: {
463
- feed: "e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
464
- feedObject: "0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"
465
- }
466
- }
467
- },
468
- weth: {
469
- id: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
470
- metaData: "0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",
471
- treasury: "",
472
- oracle: {
473
- supra: "",
474
- switchboard: "",
475
- pyth: {
476
- feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
477
- feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
478
- }
479
- }
480
- },
481
- wusdc: {
482
- id: "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",
483
- metaData: "0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",
484
- treasury: "",
485
- oracle: {
486
- supra: "",
487
- switchboard: "",
488
- pyth: {
489
- feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
490
- feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
491
- }
492
- }
493
- },
494
- wusdt: {
495
- id: "0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",
496
- metaData: "0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",
497
- treasury: "",
498
- oracle: {
499
- supra: "",
500
- switchboard: "",
501
- pyth: {
502
- feed: "2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",
503
- feedObject: "0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"
504
- }
505
- }
506
- },
507
- sui: {
508
- id: "0x0000000000000000000000000000000000000000000000000000000000000002",
509
- metaData: "0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",
510
- treasury: "",
511
- oracle: {
512
- supra: "",
513
- switchboard: "0xbca474133638352ba83ccf7b5c931d50f764b09550e16612c9f70f1e21f3f594",
514
- pyth: {
515
- feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
516
- feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
517
- }
518
- }
519
- },
520
- afsui: {
521
- id: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
522
- metaData: "0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",
523
- treasury: "",
524
- oracle: {
525
- supra: "",
526
- switchboard: "",
527
- pyth: {
528
- feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
529
- feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
530
- }
531
- }
532
- },
533
- hasui: {
534
- id: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
535
- metaData: "0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",
536
- treasury: "",
537
- oracle: {
538
- supra: "",
539
- switchboard: "",
540
- pyth: {
541
- feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
542
- feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
543
- }
544
- }
545
- },
546
- vsui: {
547
- id: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
548
- metaData: "0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",
549
- treasury: "",
550
- oracle: {
551
- supra: "",
552
- switchboard: "",
553
- pyth: {
554
- feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
555
- feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
556
- }
557
- }
558
- },
559
- sca: {
560
- id: "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
561
- metaData: "0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",
562
- treasury: "",
563
- oracle: {
564
- supra: "",
565
- switchboard: "",
566
- pyth: {
567
- feed: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
568
- feedObject: "0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"
569
- }
570
- }
571
- },
572
- sbeth: {
573
- id: "0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29",
574
- metaData: "0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0",
575
- treasury: "",
576
- oracle: {
577
- supra: "",
578
- switchboard: "",
579
- pyth: {
580
- feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
581
- feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
582
- }
583
- }
584
- }
585
- },
586
- oracles: {
587
- xOracle: "0x93d5bf0936b71eb27255941e532fac33b5a5c7759e377b4923af0a1359ad494f",
588
- xOracleCap: "0x1edeae568fde99e090dbdec4bcdbd33a15f53a1ce1f87aeef1a560dedf4b4a90",
589
- supra: { registry: "", registryCap: "", holder: "" },
590
- switchboard: { registry: "", registryCap: "" },
591
- pyth: {
592
- registry: "0xedc293f9413a5a7a5d53bdba1fd889d0a4030894469228f0acdae4aa3c55a213",
593
- registryCap: "0xbcb07141eb1f7e01fbda4130ecf5f5adaeabb77f5d9c32158b7532bcd2197acd",
594
- state: "0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",
595
- wormhole: "0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",
596
- wormholeState: "0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"
597
- }
598
- },
599
- packages: {
600
- coinDecimalsRegistry: {
601
- id: "0xca5a5a62f01c79a104bf4d31669e29daa387f325c241de4edbe30986a9bc8b0d",
602
- upgradeCap: "0x34e76a945d29f195bc53ca704fa70877d1cf3a5d7bbfdda1b13e633fff13c0f6"
603
- },
604
- math: {
605
- id: "0xad013d5fde39e15eabda32b3dbdafd67dac32b798ce63237c27a8f73339b9b6f",
606
- upgradeCap: "0x3a329598231de02e6135c62284b66005b41cad1d9ab7ca2dc79c08293aba2ec6"
607
- },
608
- whitelist: {
609
- id: "0x1318fdc90319ec9c24df1456d960a447521b0a658316155895014a6e39b5482f",
610
- upgradeCap: "0xf5a22aea23db664f7b69855b6a546747f17c1ec4230319cfc17225e462b05761"
611
- },
612
- x: {
613
- id: "0x779b5c547976899f5474f3a5bc0db36ddf4697ad7e5a901db0415c2281d28162",
614
- upgradeCap: "0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"
615
- },
616
- protocol: {
617
- id: "0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d",
618
- upgradeCap: "0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"
619
- },
620
- // protocol: {
621
- // id: '0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e',
622
- // upgradeCap:
623
- // '0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a',
624
- // },
625
- protocolWhitelist: {
626
- id: "0x4c262d9343dac53ecb28f482a2a3f62c73d0ebac5b5f03d57383d56ff219acdf",
627
- upgradeCap: "0x4a5e88a75039b00988f633f811f58117f31b8627a46bf822aa114d9010049449"
628
- },
629
- // query: {
630
- // id: '0xb8d603a39114a5efef3dd0bf84df0bed1be1fbd39b78b7dd6e8a61ccc5e6006f',
631
- // upgradeCap:
632
- // '0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f',
633
- // },
634
- query: {
635
- id: "0x89706958f43fb170de134579e3fbc53972b946ee78bd2442d8e1adc36074fbdc",
636
- upgradeCap: "0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"
637
- },
638
- supra: { id: "", upgradeCap: "" },
639
- pyth: {
640
- id: "0x910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a",
641
- upgradeCap: "0xdf0ffbae1ea5bb25fbca5efba433dcf00c7cced65679af2f04728901275c6157"
642
- },
643
- switchboard: { id: "", upgradeCap: "" },
644
- xOracle: {
645
- id: "0x1478a432123e4b3d61878b629f2c692969fdb375644f1251cd278a4b1e7d7cd6",
646
- upgradeCap: "0x0f928a6b2e26b73330fecaf9b44acfc9800a4a9794d6415c2a3153bc70e3c1f0"
647
- },
648
- testCoin: { id: "", upgradeCap: "" }
649
- }
650
- },
651
- spool: {
652
- // id: '0x7c4fdabe81c31b19a45d1e572a52a539997a90903fbb5bfab71480abe0fa62c3',
653
- id: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
654
- adminCap: "0xdd8a047cbbf802bfcde5288b8ef1910965d789cc614da11d39af05fca0bd020a",
655
- // object:
656
- // '0xe87f1b2d498106a2c61421cec75b7b5c5e348512b0dc263949a0e7a3c256571a',
657
- object: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
658
- pools: {
659
- sweth: {
660
- id: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
661
- rewardPoolId: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"
662
- },
663
- ssui: {
664
- // id: '0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4',
665
- id: "0xb9617f83c06ebdeac0a8834782b1015e1cc7ea23739e30c132c4bfb95c37a579",
666
- rewardPoolId: (
667
- // '0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9',
668
- "0xc3206071a8d43212efb6e3b5504f2321f8df97ab122b466c0bc7cfdf398dc13a"
669
- )
670
- },
671
- susdc: {
672
- id: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
673
- rewardPoolId: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166"
674
- },
675
- swusdc: {
676
- // id: '0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0',
677
- id: "0xf1b383b9cf2e9f515fc69567df1053098f273849d09cd84b0278a773429bd2b2",
678
- rewardPoolId: (
679
- // '0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8',
680
- "0xc71c53ee6505d928ba15bea4fe4f45d98c9c31eced94b72d00a7827d4b7ba3ff"
681
- )
682
- },
683
- swusdt: {
684
- // id: '0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f',
685
- id: "0xb5567dfa5c7fc17a249e959732664c50713dd8c23db1a11376b27df800c17418",
686
- rewardPoolId: (
687
- // '0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080',
688
- "0x60768b0687ff0235e376a039709a683e4c436098785e473b67b32dbab47b69ab"
689
- )
690
- },
691
- scetus: {
692
- id: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
693
- rewardPoolId: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"
694
- },
695
- safsui: {
696
- // id: '0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800',
697
- id: "0xc568bb4c991258e839aa54802ecda04fcd9838c826bc3b42b40af81b23c458c8",
698
- rewardPoolId: (
699
- // '0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e',
700
- "0x389a3cbeda742b918941bb24fd00e077bad3367484394d6234f8209b9a6aa03d"
701
- )
702
- },
703
- shasui: {
704
- // id: '0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa',
705
- id: "0x93f3f4499bf89f2d05ddc1f8b15f51701a7c6c4d0ac0b9c3bc99462cbbd8e321",
706
- rewardPoolId: (
707
- // '0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66',
708
- "0x94cee1be7f5ff34193f3aabef0b14142cb28af4d905fe487a9a7d85a15edb6aa"
709
- )
710
- },
711
- svsui: {
712
- // id: '0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670',
713
- id: "0xa970e9087f80cb59e9299b8e7af7175d977ad6c9af0322aa4440e138fbd7ae00",
714
- rewardPoolId: (
715
- // '0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a',
716
- "0x38eee9699c4fc132a6623e54b865f047df4fc6eb83af807300f44e8f4b235ff0"
717
- )
718
- }
719
- },
720
- config: ""
721
- },
722
- borrowIncentive: {
723
- id: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
724
- adminCap: "0x56ac8e6f2b360b2b35c0168d72cc6cd17d9592afb83709865cb87af24bb2025b",
725
- object: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
726
- query: "0x8e0d00f8ff1199d7c5fe56cea0e901a525daeefff0445a1635ace8282ae3302c",
727
- incentivePools: "0x9d564c93128c6ab0c0d3e050a47f11df0b91494f3bb779bdc1301c1c637f15eb",
728
- incentiveAccounts: "0x09e6040e798246de04941bc79a3ba62d3eca6d7a218cc30f21fb07f478fa2926",
729
- config: "0x43d4ca1dfc90b161c4240facd119e74e4b850cca2957f88c2ec289c9380da064"
730
- },
731
- referral: {
732
- id: "0x1bf5a8ce77050d8052549d743e16b469f15aa6b81b752b78b6ebb65179665f5a",
733
- object: "0x5658d4bf5ddcba27e4337b4262108b3ad1716643cac8c2054ac341538adc72ec",
734
- adminCap: "0xc5dc06b9074291259f2cac460c940012c781c4430e42125c541cc43101c3bcbd",
735
- referralBindings: "0xcf184487782bed962bf678001efe775d31fb94b9992333a57594cf15d79d5ced",
736
- bindingTableId: "0x41a50e258c0a266ce84e0e1a618dbf70b878cc943909e613089a50afcceb2bc0",
737
- referralRevenuePool: "0xc24e3e5e37032f29a3dd91a9a1f057af8821b7e6c148e9683900ac8b6d30f0c6",
738
- revenueTableId: "0x595baa3654c297bff84ab7786a2d250f019cefc66e8df8e89fd9d41e02bd30dd",
739
- referralTiers: "0x144350f3db9b46d11b140084cd54e6de0b9c3b8d265ce8059b51d0ef58ea464b",
740
- tiersTableId: "0xeac755a7a8b7798530905ac79e8c114f19d0f130f6eab012954f08faac29c75d",
741
- // authorizedWitnessList:
742
- // '0xf21b0ed043c9bb70842c0129159f4943dbcc3c9ef2f2f808af65f8be25cfd20e',
743
- authorizedWitnessList: "0x9d6223dc52015b8a3986a573590ef2af8f1b8f3e4685513888c052f001b87e7f",
744
- version: "0x3545849eb97723e676a476ec9d4fe5f2eb0eb2c6b78972851114fd4c7ed4639f"
745
- },
746
- vesca: {
747
- id: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
748
- object: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
749
- adminCap: "0x8ffa76135c5b85c5fbd73a6448a4a733d826cb63a267ab817656acb77c72d4a5",
750
- tableId: "0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",
751
- table: "0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",
752
- treasury: "0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",
753
- config: "0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"
754
- },
755
- loyaltyProgram: {
756
- id: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
757
- object: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
758
- rewardPool: "0xf9c090492ef476bd542109d0913ffe871cbfa28578b7114eca2a8c0e5671786f",
759
- userRewardTableId: "0x748a80395849ed37db1b0e14f2ab5d1d96458d2359ab3a84eb079d0f4ac7cf2e"
760
- },
761
- scoin: {
762
- id: "0x773dab39c90fe05439b06a2d061795e52a974ff92c2aef90b2ee467acf7f33c8",
763
- coins: {
764
- ssui: {
765
- coinType: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
766
- treasury: "0x0e499640a12c38dd9cc44532f5bc5fd1b6da86d2f9a8810357250f4b26e9e5c7"
767
- },
768
- scetus: {
769
- coinType: "0x8b71e6d323ed78515af2bead13bf3d0da1562ba4a99234eb7c4f14fd39ef0427::scallop_cetus::SCALLOP_CETUS",
770
- treasury: "0xd786f4b2d26278cc7911a3445b1b085eab60f269ef9dbb6b87e803d52f155003"
771
- },
772
- ssca: {
773
- coinType: "0x0a9d3c6c9af9f6e8def82921541bcbd17f73ed31bed3adcb684f2a4c267e42f0::scallop_sca::SCALLOP_SCA",
774
- treasury: "0xe818636d1d6c46d6ea1a2dce9d94696d7cbc18ce27451b603eeaa47aba8d75e0"
775
- },
776
- swusdc: {
777
- coinType: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
778
- treasury: "0x471fbab72578bab577263006fe32543b6e76153fffa2bef69affe4bc4934258f"
779
- },
780
- swusdt: {
781
- coinType: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
782
- treasury: "0x921a4ed4bb4b4f11f51a462c83f4c0f6b60a90e441d1bc0d26d6fd893146bf4d"
783
- },
784
- sweth: {
785
- coinType: "0x27d54f43e3eda701be56b82e5756e41c84467cd202f5cf713d5f9e45a9f1b6bc::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
786
- treasury: "0x032b4c8fac94c038dbe986f7587e9b1e4ef580b5ee06d2ef249d85459b7ef05d"
787
- },
788
- safsui: {
789
- coinType: "0xb75b46d975d8d80670b53a6bee90baaa8ce2e0b7d397f079447d641eef6b44ad::scallop_af_sui::SCALLOP_AF_SUI",
790
- treasury: "0x21450ef0570ef3d224ffa3b873ab802e439ece7b93cc7efad10ae0c1e3b3fcfe"
791
- },
792
- shasui: {
793
- coinType: "0xd973a723874e2c7cde196602a79155a1343a933f8cf87d9b1bb7408bc1acbc58::scallop_ha_sui::SCALLOP_HA_SUI",
794
- treasury: "0xf822fc1402207e47d2e3ba8ff6e1e594bf1de777dc5ebd2744619cd2726e3b0d"
795
- },
796
- svsui: {
797
- coinType: "0x97023a317320c4498cc4cd239dd02fd30c28246e5e8f81325d63f2bd8d70f6b3::scallop_v_sui::SCALLOP_V_SUI",
798
- treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6"
799
- },
800
- ssbeth: {
801
- coinType: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
802
- treasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed"
803
- }
804
- }
805
- }
806
- };
807
-
808
377
  // src/models/scallop.ts
809
378
  import { SuiKit as SuiKit7 } from "@scallop-io/sui-kit";
810
379
 
@@ -1586,62 +1155,454 @@ var ScallopCache = class {
1586
1155
  () => this.client.getOwnedObjects(input)
1587
1156
  );
1588
1157
  }
1589
- });
1590
- }
1591
- async queryGetDynamicFields(input) {
1592
- return this.queryClient.fetchQuery({
1593
- queryKey: queryKeys.rpc.getDynamicFields(input),
1594
- queryFn: async () => {
1595
- return await callWithRateLimit(
1596
- this.tokenBucket,
1597
- () => this.client.getDynamicFields(input)
1598
- );
1158
+ });
1159
+ }
1160
+ async queryGetDynamicFields(input) {
1161
+ return this.queryClient.fetchQuery({
1162
+ queryKey: queryKeys.rpc.getDynamicFields(input),
1163
+ queryFn: async () => {
1164
+ return await callWithRateLimit(
1165
+ this.tokenBucket,
1166
+ () => this.client.getDynamicFields(input)
1167
+ );
1168
+ }
1169
+ });
1170
+ }
1171
+ async queryGetDynamicFieldObject(input) {
1172
+ return this.queryClient.fetchQuery({
1173
+ queryKey: queryKeys.rpc.getDynamicFieldObject(input),
1174
+ queryFn: async () => {
1175
+ return await callWithRateLimit(
1176
+ this.tokenBucket,
1177
+ () => this.client.getDynamicFieldObject(input)
1178
+ );
1179
+ }
1180
+ });
1181
+ }
1182
+ async queryGetAllCoinBalances(owner) {
1183
+ return this.queryClient.fetchQuery({
1184
+ queryKey: queryKeys.rpc.getAllCoinBalances(owner),
1185
+ queryFn: async () => {
1186
+ const allBalances = await callWithRateLimit(
1187
+ this.tokenBucket,
1188
+ () => this.client.getAllBalances({ owner })
1189
+ );
1190
+ if (!allBalances)
1191
+ return {};
1192
+ const balances = allBalances.reduce(
1193
+ (acc, coinBalance) => {
1194
+ if (coinBalance.totalBalance !== "0") {
1195
+ acc[normalizeStructTag2(coinBalance.coinType)] = coinBalance.totalBalance;
1196
+ }
1197
+ return acc;
1198
+ },
1199
+ {}
1200
+ );
1201
+ return balances;
1202
+ }
1203
+ });
1204
+ }
1205
+ async queryGetCoinBalance(input) {
1206
+ if (!input.coinType)
1207
+ return "0";
1208
+ return (await this.queryGetAllCoinBalances(input.owner) || {})[normalizeStructTag2(input.coinType)] ?? "0";
1209
+ }
1210
+ };
1211
+
1212
+ // src/models/scallopAddress.ts
1213
+ import axios from "axios";
1214
+
1215
+ // src/constants/testAddress.ts
1216
+ var TEST_ADDRESSES = {
1217
+ core: {
1218
+ // version:
1219
+ // '0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7',
1220
+ version: "0x6156d5cd1538bec8a167a40fe1209a4ec9cf8137921fe0a697f191ac561f0b09",
1221
+ versionCap: "0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",
1222
+ // object:
1223
+ // '0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf',
1224
+ object: "0x87ddec2984645dbbe2403a509cc6edf393a43acdba9b77d45da2bcbefcf733c1",
1225
+ // market:
1226
+ // '0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9',
1227
+ market: "0x8606ed145cc887985b8ed793f7753ff5dc762a42c379dac035f568e1bac58490",
1228
+ adminCap: "0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",
1229
+ coinDecimalsRegistry: "0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",
1230
+ // obligationAccessStore:
1231
+ // '0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9',
1232
+ obligationAccessStore: "0x48b472d68ca910c45f7f3b6c26836b6aa6d2569810d94b1b939023da05ae0a23",
1233
+ coins: {
1234
+ cetus: {
1235
+ id: "0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",
1236
+ metaData: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",
1237
+ treasury: "",
1238
+ oracle: {
1239
+ supra: "",
1240
+ switchboard: "",
1241
+ pyth: {
1242
+ feed: "e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",
1243
+ feedObject: "0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"
1244
+ }
1245
+ }
1246
+ },
1247
+ wapt: {
1248
+ id: "0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",
1249
+ metaData: "0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",
1250
+ treasury: "",
1251
+ oracle: {
1252
+ supra: "",
1253
+ switchboard: "",
1254
+ pyth: {
1255
+ feed: "03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",
1256
+ feedObject: "0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"
1257
+ }
1258
+ }
1259
+ },
1260
+ wsol: {
1261
+ id: "0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",
1262
+ metaData: "0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",
1263
+ treasury: "",
1264
+ oracle: {
1265
+ supra: "",
1266
+ switchboard: "",
1267
+ pyth: {
1268
+ feed: "ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",
1269
+ feedObject: "0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"
1270
+ }
1271
+ }
1272
+ },
1273
+ wbtc: {
1274
+ id: "0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",
1275
+ metaData: "0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",
1276
+ treasury: "",
1277
+ oracle: {
1278
+ supra: "",
1279
+ switchboard: "",
1280
+ pyth: {
1281
+ feed: "e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
1282
+ feedObject: "0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"
1283
+ }
1284
+ }
1285
+ },
1286
+ weth: {
1287
+ id: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
1288
+ metaData: "0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",
1289
+ treasury: "",
1290
+ oracle: {
1291
+ supra: "",
1292
+ switchboard: "",
1293
+ pyth: {
1294
+ feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
1295
+ feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
1296
+ }
1297
+ }
1298
+ },
1299
+ wusdc: {
1300
+ id: "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",
1301
+ metaData: "0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",
1302
+ treasury: "",
1303
+ oracle: {
1304
+ supra: "",
1305
+ switchboard: "",
1306
+ pyth: {
1307
+ feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
1308
+ feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
1309
+ }
1310
+ }
1311
+ },
1312
+ wusdt: {
1313
+ id: "0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",
1314
+ metaData: "0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",
1315
+ treasury: "",
1316
+ oracle: {
1317
+ supra: "",
1318
+ switchboard: "",
1319
+ pyth: {
1320
+ feed: "2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",
1321
+ feedObject: "0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"
1322
+ }
1323
+ }
1324
+ },
1325
+ sui: {
1326
+ id: "0x0000000000000000000000000000000000000000000000000000000000000002",
1327
+ metaData: "0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",
1328
+ treasury: "",
1329
+ oracle: {
1330
+ supra: "",
1331
+ switchboard: "0xbca474133638352ba83ccf7b5c931d50f764b09550e16612c9f70f1e21f3f594",
1332
+ pyth: {
1333
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
1334
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
1335
+ }
1336
+ }
1337
+ },
1338
+ afsui: {
1339
+ id: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
1340
+ metaData: "0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",
1341
+ treasury: "",
1342
+ oracle: {
1343
+ supra: "",
1344
+ switchboard: "",
1345
+ pyth: {
1346
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
1347
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
1348
+ }
1349
+ }
1350
+ },
1351
+ hasui: {
1352
+ id: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
1353
+ metaData: "0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",
1354
+ treasury: "",
1355
+ oracle: {
1356
+ supra: "",
1357
+ switchboard: "",
1358
+ pyth: {
1359
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
1360
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
1361
+ }
1362
+ }
1363
+ },
1364
+ vsui: {
1365
+ id: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
1366
+ metaData: "0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",
1367
+ treasury: "",
1368
+ oracle: {
1369
+ supra: "",
1370
+ switchboard: "",
1371
+ pyth: {
1372
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
1373
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
1374
+ }
1375
+ }
1376
+ },
1377
+ sca: {
1378
+ id: "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
1379
+ metaData: "0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",
1380
+ treasury: "",
1381
+ oracle: {
1382
+ supra: "",
1383
+ switchboard: "",
1384
+ pyth: {
1385
+ feed: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
1386
+ feedObject: "0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"
1387
+ }
1388
+ }
1389
+ }
1390
+ },
1391
+ oracles: {
1392
+ xOracle: "0x93d5bf0936b71eb27255941e532fac33b5a5c7759e377b4923af0a1359ad494f",
1393
+ xOracleCap: "0x1edeae568fde99e090dbdec4bcdbd33a15f53a1ce1f87aeef1a560dedf4b4a90",
1394
+ supra: { registry: "", registryCap: "", holder: "" },
1395
+ switchboard: { registry: "", registryCap: "" },
1396
+ pyth: {
1397
+ registry: "0xedc293f9413a5a7a5d53bdba1fd889d0a4030894469228f0acdae4aa3c55a213",
1398
+ registryCap: "0xbcb07141eb1f7e01fbda4130ecf5f5adaeabb77f5d9c32158b7532bcd2197acd",
1399
+ state: "0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",
1400
+ wormhole: "0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",
1401
+ wormholeState: "0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"
1599
1402
  }
1600
- });
1601
- }
1602
- async queryGetDynamicFieldObject(input) {
1603
- return this.queryClient.fetchQuery({
1604
- queryKey: queryKeys.rpc.getDynamicFieldObject(input),
1605
- queryFn: async () => {
1606
- return await callWithRateLimit(
1607
- this.tokenBucket,
1608
- () => this.client.getDynamicFieldObject(input)
1609
- );
1403
+ },
1404
+ packages: {
1405
+ coinDecimalsRegistry: {
1406
+ id: "0xca5a5a62f01c79a104bf4d31669e29daa387f325c241de4edbe30986a9bc8b0d",
1407
+ upgradeCap: "0x34e76a945d29f195bc53ca704fa70877d1cf3a5d7bbfdda1b13e633fff13c0f6"
1408
+ },
1409
+ math: {
1410
+ id: "0xad013d5fde39e15eabda32b3dbdafd67dac32b798ce63237c27a8f73339b9b6f",
1411
+ upgradeCap: "0x3a329598231de02e6135c62284b66005b41cad1d9ab7ca2dc79c08293aba2ec6"
1412
+ },
1413
+ whitelist: {
1414
+ id: "0x1318fdc90319ec9c24df1456d960a447521b0a658316155895014a6e39b5482f",
1415
+ upgradeCap: "0xf5a22aea23db664f7b69855b6a546747f17c1ec4230319cfc17225e462b05761"
1416
+ },
1417
+ x: {
1418
+ id: "0x779b5c547976899f5474f3a5bc0db36ddf4697ad7e5a901db0415c2281d28162",
1419
+ upgradeCap: "0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"
1420
+ },
1421
+ protocol: {
1422
+ id: "0x87ddec2984645dbbe2403a509cc6edf393a43acdba9b77d45da2bcbefcf733c1",
1423
+ upgradeCap: "0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"
1424
+ },
1425
+ // protocol: {
1426
+ // id: '0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e',
1427
+ // upgradeCap:
1428
+ // '0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a',
1429
+ // },
1430
+ protocolWhitelist: {
1431
+ id: "0x4c262d9343dac53ecb28f482a2a3f62c73d0ebac5b5f03d57383d56ff219acdf",
1432
+ upgradeCap: "0x4a5e88a75039b00988f633f811f58117f31b8627a46bf822aa114d9010049449"
1433
+ },
1434
+ // query: {
1435
+ // id: '0xb8d603a39114a5efef3dd0bf84df0bed1be1fbd39b78b7dd6e8a61ccc5e6006f',
1436
+ // upgradeCap:
1437
+ // '0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f',
1438
+ // },
1439
+ query: {
1440
+ id: "0xe4f9d62d17746d5b9dbf0d5557747430021a71575780b515161210cdba0a4c1c",
1441
+ upgradeCap: "0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"
1442
+ },
1443
+ supra: { id: "", upgradeCap: "" },
1444
+ pyth: {
1445
+ id: "0x910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a",
1446
+ upgradeCap: "0xdf0ffbae1ea5bb25fbca5efba433dcf00c7cced65679af2f04728901275c6157"
1447
+ },
1448
+ switchboard: { id: "", upgradeCap: "" },
1449
+ xOracle: {
1450
+ id: "0x1478a432123e4b3d61878b629f2c692969fdb375644f1251cd278a4b1e7d7cd6",
1451
+ upgradeCap: "0x0f928a6b2e26b73330fecaf9b44acfc9800a4a9794d6415c2a3153bc70e3c1f0"
1452
+ },
1453
+ testCoin: { id: "", upgradeCap: "" }
1454
+ }
1455
+ },
1456
+ spool: {
1457
+ // id: '0x7c4fdabe81c31b19a45d1e572a52a539997a90903fbb5bfab71480abe0fa62c3',
1458
+ id: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
1459
+ adminCap: "0xdd8a047cbbf802bfcde5288b8ef1910965d789cc614da11d39af05fca0bd020a",
1460
+ // object:
1461
+ // '0xe87f1b2d498106a2c61421cec75b7b5c5e348512b0dc263949a0e7a3c256571a',
1462
+ object: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
1463
+ pools: {
1464
+ sweth: {
1465
+ id: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
1466
+ rewardPoolId: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"
1467
+ },
1468
+ ssui: {
1469
+ // id: '0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4',
1470
+ id: "0xb9617f83c06ebdeac0a8834782b1015e1cc7ea23739e30c132c4bfb95c37a579",
1471
+ rewardPoolId: (
1472
+ // '0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9',
1473
+ "0xc3206071a8d43212efb6e3b5504f2321f8df97ab122b466c0bc7cfdf398dc13a"
1474
+ )
1475
+ },
1476
+ swusdc: {
1477
+ // id: '0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0',
1478
+ id: "0xf1b383b9cf2e9f515fc69567df1053098f273849d09cd84b0278a773429bd2b2",
1479
+ rewardPoolId: (
1480
+ // '0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8',
1481
+ "0xc71c53ee6505d928ba15bea4fe4f45d98c9c31eced94b72d00a7827d4b7ba3ff"
1482
+ )
1483
+ },
1484
+ swusdt: {
1485
+ // id: '0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f',
1486
+ id: "0xb5567dfa5c7fc17a249e959732664c50713dd8c23db1a11376b27df800c17418",
1487
+ rewardPoolId: (
1488
+ // '0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080',
1489
+ "0x60768b0687ff0235e376a039709a683e4c436098785e473b67b32dbab47b69ab"
1490
+ )
1491
+ },
1492
+ scetus: {
1493
+ id: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
1494
+ rewardPoolId: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"
1495
+ },
1496
+ safsui: {
1497
+ // id: '0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800',
1498
+ id: "0xc568bb4c991258e839aa54802ecda04fcd9838c826bc3b42b40af81b23c458c8",
1499
+ rewardPoolId: (
1500
+ // '0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e',
1501
+ "0x389a3cbeda742b918941bb24fd00e077bad3367484394d6234f8209b9a6aa03d"
1502
+ )
1503
+ },
1504
+ shasui: {
1505
+ // id: '0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa',
1506
+ id: "0x93f3f4499bf89f2d05ddc1f8b15f51701a7c6c4d0ac0b9c3bc99462cbbd8e321",
1507
+ rewardPoolId: (
1508
+ // '0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66',
1509
+ "0x94cee1be7f5ff34193f3aabef0b14142cb28af4d905fe487a9a7d85a15edb6aa"
1510
+ )
1511
+ },
1512
+ svsui: {
1513
+ // id: '0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670',
1514
+ id: "0xa970e9087f80cb59e9299b8e7af7175d977ad6c9af0322aa4440e138fbd7ae00",
1515
+ rewardPoolId: (
1516
+ // '0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a',
1517
+ "0x38eee9699c4fc132a6623e54b865f047df4fc6eb83af807300f44e8f4b235ff0"
1518
+ )
1610
1519
  }
1611
- });
1612
- }
1613
- async queryGetAllCoinBalances(owner) {
1614
- return this.queryClient.fetchQuery({
1615
- queryKey: queryKeys.rpc.getAllCoinBalances(owner),
1616
- queryFn: async () => {
1617
- const allBalances = await callWithRateLimit(
1618
- this.tokenBucket,
1619
- () => this.client.getAllBalances({ owner })
1620
- );
1621
- if (!allBalances)
1622
- return {};
1623
- const balances = allBalances.reduce(
1624
- (acc, coinBalance) => {
1625
- if (coinBalance.totalBalance !== "0") {
1626
- acc[normalizeStructTag2(coinBalance.coinType)] = coinBalance.totalBalance;
1627
- }
1628
- return acc;
1629
- },
1630
- {}
1631
- );
1632
- return balances;
1520
+ },
1521
+ config: ""
1522
+ },
1523
+ borrowIncentive: {
1524
+ id: "0x6152f696fc3a658f33c4b891764731a59153125ffedfa8bff7167c42823f58a9",
1525
+ adminCap: "0xc486afa253646f4d381e81d7f1df8aa4723b845a6bb356f69bad635ffefffe2c",
1526
+ object: "0x002875153e09f8145ab63527bc85c00f2bd102e12f9573c47f8cdf1a1cb62934",
1527
+ query: "0x529edc54a3dce2207703ceebbccb0ac14133f7825c1f528775ba0d85a4063489",
1528
+ incentivePools: "0x6547e143d406b5ccd5f46aae482497de279cc1a68c406f701df70a05f9212ab4",
1529
+ incentiveAccounts: "0xc4701fdbc1c92f9a636d334d66012b3027659e9fb8aff27279a82edfb6b77d02",
1530
+ config: "0xdf5d04b4691cc67e82fd4db8394d89ff44823a9de29716c924f74bb4f11cc1f7"
1531
+ },
1532
+ referral: {
1533
+ id: "0xa3654ebb63eb06c0f4ff52f8aa6512df9f164f7772bdf15dac3709bd3798dda9",
1534
+ object: "0x5658d4bf5ddcba27e4337b4262108b3ad1716643cac8c2054ac341538adc72ec",
1535
+ adminCap: "0xc5dc06b9074291259f2cac460c940012c781c4430e42125c541cc43101c3bcbd",
1536
+ referralBindings: "0xf63299d58789d99de94092b9011323466e55ca0c1ea1a7a3786a589af46e1c09",
1537
+ bindingTableId: "0x1c8202b17267ec8d6cf97ca013615354181a04f179570e42601ff2dae19294b1",
1538
+ referralRevenuePool: "0x6abd852caf90769c1b185cdf636d841673fa95528f0550f018b8a138bd283c07",
1539
+ revenueTableId: "0x595baa3654c297bff84ab7786a2d250f019cefc66e8df8e89fd9d41e02bd30dd",
1540
+ referralTiers: "0x962cb903d8d7346190c5204785ccbb91b61086aa764f674c8145df82335cf83e",
1541
+ tiersTableId: "0xeac755a7a8b7798530905ac79e8c114f19d0f130f6eab012954f08faac29c75d",
1542
+ // authorizedWitnessList:
1543
+ // '0xf21b0ed043c9bb70842c0129159f4943dbcc3c9ef2f2f808af65f8be25cfd20e',
1544
+ authorizedWitnessList: "0x9d6223dc52015b8a3986a573590ef2af8f1b8f3e4685513888c052f001b87e7f",
1545
+ version: "0x1bd4b7285f72e11c316b828c7c47b3f4da18dcec9f9b3dba6d8629cbb6f93e5e"
1546
+ },
1547
+ vesca: {
1548
+ id: "0xb15b6e0cdd85afb5028bea851dd249405e734d800a259147bbc24980629723a4",
1549
+ object: "0xb15b6e0cdd85afb5028bea851dd249405e734d800a259147bbc24980629723a4",
1550
+ adminCap: "0x8ffa76135c5b85c5fbd73a6448a4a733d826cb63a267ab817656acb77c72d4a5",
1551
+ tableId: "0xe3153b2bf124be0b86cb8bd468346a861efd0da52fc42197b54d2f616488a311",
1552
+ table: "0x611cb8d9d4d90867467b5ebdf4cc447a0047ed5b01334a28a29fcfe733e3d609",
1553
+ treasury: "0xe8c112c09b88158dc6c8e23d1fbae5b3c7136cdee54b7dafc08e65db28c4a5bc",
1554
+ config: "0xe0a2ff281e73c1d53cfa85807080f87e833e4f1a7f93dcf8800b3865269a76b9"
1555
+ },
1556
+ loyaltyProgram: {
1557
+ id: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
1558
+ object: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
1559
+ rewardPool: "0xf9c090492ef476bd542109d0913ffe871cbfa28578b7114eca2a8c0e5671786f",
1560
+ userRewardTableId: "0x748a80395849ed37db1b0e14f2ab5d1d96458d2359ab3a84eb079d0f4ac7cf2e"
1561
+ },
1562
+ scoin: {
1563
+ id: "0xad2ca2aa5089df94bb2d444d5eb3520378c2f2dfb3a0bd2a2c994145ac4b0a53",
1564
+ coins: {
1565
+ ssui: {
1566
+ coinType: "0xfac769100bccc0caebcf4f4e2d00ac2f8883f07f724be28940df90605f5e7e9a::scallop_sui::SCALLOP_SUI",
1567
+ treasury: "0x9cb4551b36c17d37e19d700147fa819ea1c487ff8bcf18374de2cceb2e9d4845"
1568
+ },
1569
+ scetus: {
1570
+ coinType: "0x8b71e6d323ed78515af2bead13bf3d0da1562ba4a99234eb7c4f14fd39ef0427::scallop_cetus::SCALLOP_CETUS",
1571
+ treasury: "0xd786f4b2d26278cc7911a3445b1b085eab60f269ef9dbb6b87e803d52f155003"
1572
+ },
1573
+ ssca: {
1574
+ coinType: "0x0a9d3c6c9af9f6e8def82921541bcbd17f73ed31bed3adcb684f2a4c267e42f0::scallop_sca::SCALLOP_SCA",
1575
+ treasury: "0xe818636d1d6c46d6ea1a2dce9d94696d7cbc18ce27451b603eeaa47aba8d75e0"
1576
+ },
1577
+ swusdc: {
1578
+ coinType: "0xaedc3ab75db8680b81a755015fa90124d217be93457b893c05bac033817defaf::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
1579
+ treasury: "0xfc6971648f867f7fd6928d1b873af71577e2eaf2c7543ef8bc82c431d833ae78"
1580
+ },
1581
+ swusdt: {
1582
+ coinType: "0xbf02fc87ddc104b342ad8414c85ceadf5b0c823c055a06fb0ed776272c01a52a::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
1583
+ treasury: "0xb9593e2c3a0ba796ee815012b75ae46468ea78cda0188b9ac6816efe65503521"
1584
+ },
1585
+ sweth: {
1586
+ coinType: "0x27d54f43e3eda701be56b82e5756e41c84467cd202f5cf713d5f9e45a9f1b6bc::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
1587
+ treasury: "0x032b4c8fac94c038dbe986f7587e9b1e4ef580b5ee06d2ef249d85459b7ef05d"
1588
+ },
1589
+ safsui: {
1590
+ coinType: "0xb75b46d975d8d80670b53a6bee90baaa8ce2e0b7d397f079447d641eef6b44ad::scallop_af_sui::SCALLOP_AF_SUI",
1591
+ treasury: "0x21450ef0570ef3d224ffa3b873ab802e439ece7b93cc7efad10ae0c1e3b3fcfe"
1592
+ },
1593
+ shasui: {
1594
+ coinType: "0xd973a723874e2c7cde196602a79155a1343a933f8cf87d9b1bb7408bc1acbc58::scallop_ha_sui::SCALLOP_HA_SUI",
1595
+ treasury: "0xf822fc1402207e47d2e3ba8ff6e1e594bf1de777dc5ebd2744619cd2726e3b0d"
1596
+ },
1597
+ svsui: {
1598
+ coinType: "0x97023a317320c4498cc4cd239dd02fd30c28246e5e8f81325d63f2bd8d70f6b3::scallop_v_sui::SCALLOP_V_SUI",
1599
+ treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6\u0192"
1633
1600
  }
1634
- });
1635
- }
1636
- async queryGetCoinBalance(input) {
1637
- if (!input.coinType)
1638
- return "0";
1639
- return (await this.queryGetAllCoinBalances(input.owner) || {})[normalizeStructTag2(input.coinType)] ?? "0";
1601
+ }
1640
1602
  }
1641
1603
  };
1642
1604
 
1643
1605
  // src/models/scallopAddress.ts
1644
- import axios from "axios";
1645
1606
  var EMPTY_ADDRESSES = {
1646
1607
  core: {
1647
1608
  version: "",
@@ -2351,89 +2312,6 @@ var getSupplyLimit = async (utils, poolName) => {
2351
2312
  return parsedData.data.fields.value;
2352
2313
  };
2353
2314
 
2354
- // src/queries/isolatedAsset.ts
2355
- import { z as zod2 } from "zod";
2356
- var isolatedAssetZod = zod2.object({
2357
- dataType: zod2.string(),
2358
- type: zod2.string(),
2359
- hasPublicTransfer: zod2.boolean(),
2360
- fields: zod2.object({
2361
- id: zod2.object({
2362
- id: zod2.string()
2363
- }),
2364
- name: zod2.object({
2365
- type: zod2.string()
2366
- }),
2367
- value: zod2.boolean()
2368
- })
2369
- });
2370
- var getIsolatedAssets = async (address) => {
2371
- try {
2372
- const marketObject = address.get("core.market");
2373
- const protocolObject = address.get("core.packages.protocol.id");
2374
- const ISOLATED_ASSET_KEY = `${protocolObject}::market_dynamic_keys::IsolatedAssetKey`;
2375
- const isolatedAssets = [];
2376
- if (!marketObject)
2377
- return isolatedAssets;
2378
- let hasNextPage = false;
2379
- let nextCursor = null;
2380
- const isIsolatedDynamicField = (dynamicField) => {
2381
- return dynamicField.name.type === ISOLATED_ASSET_KEY;
2382
- };
2383
- do {
2384
- const response = await address.cache.queryGetDynamicFields({
2385
- parentId: marketObject,
2386
- cursor: nextCursor,
2387
- limit: 10
2388
- });
2389
- if (!response)
2390
- break;
2391
- const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
2392
- isolatedAssets.push(...isolatedAssetCoinTypes);
2393
- if (response && response.hasNextPage && response.nextCursor) {
2394
- hasNextPage = true;
2395
- nextCursor = response.nextCursor;
2396
- } else {
2397
- hasNextPage = false;
2398
- }
2399
- } while (hasNextPage);
2400
- return isolatedAssets;
2401
- } catch (e) {
2402
- console.error(e);
2403
- return [];
2404
- }
2405
- };
2406
- var isIsolatedAsset = async (utils, coinName) => {
2407
- try {
2408
- const marketObject = utils.address.get("core.market");
2409
- const protocolObject = utils.address.get("core.packages.protocol.id");
2410
- const ISOLATED_ASSET_KEY = `${protocolObject}::market_dynamic_keys::IsolatedAssetKey`;
2411
- const cachedData = utils.address.cache.queryClient.getQueryData([
2412
- "getDynamicFields",
2413
- marketObject
2414
- ]);
2415
- if (cachedData) {
2416
- const coinType2 = utils.parseCoinType(coinName);
2417
- return cachedData.includes(coinType2);
2418
- }
2419
- const coinType = utils.parseCoinType(coinName).slice(2);
2420
- const object = await utils.cache.queryGetDynamicFieldObject({
2421
- parentId: marketObject,
2422
- name: {
2423
- type: ISOLATED_ASSET_KEY,
2424
- value: coinType
2425
- }
2426
- });
2427
- const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
2428
- if (!parsedData.success)
2429
- return false;
2430
- return parsedData.data.fields.value;
2431
- } catch (e) {
2432
- console.error(e);
2433
- return false;
2434
- }
2435
- };
2436
-
2437
2315
  // src/queries/coreQuery.ts
2438
2316
  var queryMarket = async (query, indexer = false) => {
2439
2317
  const coinPrices = await query.utils.getCoinPrices();
@@ -2518,8 +2396,8 @@ var queryMarket = async (query, indexer = false) => {
2518
2396
  borrowFee: parsedMarketPoolData.borrowFee,
2519
2397
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
2520
2398
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
2521
- isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2522
- // isIsolated: false,
2399
+ // isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2400
+ isIsolated: false,
2523
2401
  maxSupplyCoin,
2524
2402
  ...calculatedMarketPoolData
2525
2403
  };
@@ -2558,7 +2436,6 @@ var queryMarket = async (query, indexer = false) => {
2558
2436
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
2559
2437
  liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
2560
2438
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
2561
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
2562
2439
  ...calculatedMarketCollateralData
2563
2440
  };
2564
2441
  }
@@ -2606,73 +2483,79 @@ var getMarketPools = async (query, poolCoinNames = [...SUPPORT_POOLS], indexer =
2606
2483
  return marketPools;
2607
2484
  };
2608
2485
  var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
2609
- try {
2610
- coinPrice = coinPrice || (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
2611
- if (indexer) {
2612
- const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
2613
- marketPoolIndexer.coinPrice = coinPrice || marketPoolIndexer.coinPrice;
2614
- marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
2615
- marketPoolIndexer.coinName
2616
- );
2617
- return marketPoolIndexer;
2618
- }
2619
- const marketId = query.address.get("core.market");
2620
- marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
2621
- showContent: true
2622
- }))?.data;
2623
- if (!(marketObject && marketObject.content?.dataType === "moveObject"))
2624
- throw new Error(`Failed to fetch marketObject`);
2625
- const fields = marketObject.content.fields;
2626
- const coinType = query.utils.parseCoinType(poolCoinName);
2627
- const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
2628
- const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2629
- parentId: balanceSheetParentId,
2630
- name: {
2631
- type: "0x1::type_name::TypeName",
2632
- value: {
2633
- name: coinType.substring(2)
2486
+ let marketPool;
2487
+ let balanceSheet;
2488
+ let borrowIndex;
2489
+ let interestModel;
2490
+ let borrowFeeRate;
2491
+ coinPrice = coinPrice || (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
2492
+ if (indexer) {
2493
+ const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
2494
+ marketPoolIndexer.coinPrice = coinPrice || marketPoolIndexer.coinPrice;
2495
+ marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
2496
+ marketPoolIndexer.coinName
2497
+ );
2498
+ return marketPoolIndexer;
2499
+ }
2500
+ const marketId = query.address.get("core.market");
2501
+ marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
2502
+ showContent: true
2503
+ }))?.data;
2504
+ if (marketObject) {
2505
+ if (marketObject.content && "fields" in marketObject.content) {
2506
+ const fields = marketObject.content.fields;
2507
+ const coinType = query.utils.parseCoinType(poolCoinName);
2508
+ const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
2509
+ const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2510
+ parentId: balanceSheetParentId,
2511
+ name: {
2512
+ type: "0x1::type_name::TypeName",
2513
+ value: {
2514
+ name: coinType.substring(2)
2515
+ }
2634
2516
  }
2517
+ });
2518
+ if (!balanceSheetDynamicFieldObjectResponse)
2519
+ return void 0;
2520
+ const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse.data;
2521
+ if (balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content) {
2522
+ const dynamicFields = balanceSheetDynamicFieldObject.content.fields;
2523
+ balanceSheet = dynamicFields.value.fields;
2635
2524
  }
2636
- });
2637
- const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
2638
- if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
2639
- throw new Error(
2640
- `Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
2641
- );
2642
- const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
2643
- const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
2644
- const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2645
- parentId: borrowIndexParentId,
2646
- name: {
2647
- type: "0x1::type_name::TypeName",
2648
- value: {
2649
- name: coinType.substring(2)
2525
+ const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
2526
+ const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2527
+ parentId: borrowIndexParentId,
2528
+ name: {
2529
+ type: "0x1::type_name::TypeName",
2530
+ value: {
2531
+ name: coinType.substring(2)
2532
+ }
2650
2533
  }
2534
+ });
2535
+ if (!borrowIndexDynamicFieldObjectResponse)
2536
+ return void 0;
2537
+ const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse.data;
2538
+ if (borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content) {
2539
+ const dynamicFields = borrowIndexDynamicFieldObject.content.fields;
2540
+ borrowIndex = dynamicFields.value.fields;
2651
2541
  }
2652
- });
2653
- const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
2654
- if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
2655
- throw new Error(
2656
- `Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
2657
- );
2658
- const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
2659
- const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
2660
- const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2661
- parentId: interestModelParentId,
2662
- name: {
2663
- type: "0x1::type_name::TypeName",
2664
- value: {
2665
- name: coinType.substring(2)
2542
+ const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
2543
+ const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2544
+ parentId: interestModelParentId,
2545
+ name: {
2546
+ type: "0x1::type_name::TypeName",
2547
+ value: {
2548
+ name: coinType.substring(2)
2549
+ }
2666
2550
  }
2551
+ });
2552
+ if (!interestModelDynamicFieldObjectResponse)
2553
+ return void 0;
2554
+ const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse.data;
2555
+ if (interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content) {
2556
+ const dynamicFields = interestModelDynamicFieldObject.content.fields;
2557
+ interestModel = dynamicFields.value.fields;
2667
2558
  }
2668
- });
2669
- const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse?.data;
2670
- if (!(interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content))
2671
- throw new Error(
2672
- `Failed to fetch interestModelDynamicFieldObject for ${poolCoinName}: ${interestModelDynamicFieldObject}`
2673
- );
2674
- const interestModel = interestModelDynamicFieldObject.content.fields.value.fields;
2675
- const getBorrowFee = async () => {
2676
2559
  const borrowFeeDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2677
2560
  parentId: marketId,
2678
2561
  name: {
@@ -2684,11 +2567,16 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2684
2567
  }
2685
2568
  }
2686
2569
  });
2687
- const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
2688
- if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
2689
- return { value: "0" };
2690
- return borrowFeeDynamicFieldObject.content.fields.value.fields;
2691
- };
2570
+ if (!borrowFeeDynamicFieldObjectResponse)
2571
+ return void 0;
2572
+ const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse.data;
2573
+ if (borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content) {
2574
+ const dynamicFields = borrowFeeDynamicFieldObject.content.fields;
2575
+ borrowFeeRate = dynamicFields.value.fields;
2576
+ }
2577
+ }
2578
+ }
2579
+ if (balanceSheet && borrowIndex && interestModel && (USE_TEST_ADDRESS || borrowFeeRate)) {
2692
2580
  const parsedMarketPoolData = parseOriginMarketPoolData({
2693
2581
  type: interestModel.type.fields,
2694
2582
  maxBorrowRate: interestModel.max_borrow_rate.fields,
@@ -2702,7 +2590,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2702
2590
  reserve: balanceSheet.revenue,
2703
2591
  reserveFactor: interestModel.revenue_factor.fields,
2704
2592
  borrowWeight: interestModel.borrow_weight.fields,
2705
- borrowFeeRate: await getBorrowFee(),
2593
+ borrowFeeRate: borrowFeeRate || { value: "0" },
2706
2594
  baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
2707
2595
  borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
2708
2596
  borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
@@ -2718,7 +2606,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2718
2606
  const maxSupplyCoin = BigNumber2(
2719
2607
  await getSupplyLimit(query.utils, poolCoinName) ?? "0"
2720
2608
  ).shiftedBy(-coinDecimal).toNumber();
2721
- return {
2609
+ marketPool = {
2722
2610
  coinName: poolCoinName,
2723
2611
  symbol: query.utils.parseSymbol(poolCoinName),
2724
2612
  coinType: query.utils.parseCoinType(poolCoinName),
@@ -2737,13 +2625,12 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2737
2625
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
2738
2626
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
2739
2627
  maxSupplyCoin,
2740
- isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2741
- // isIsolated: false,
2628
+ // isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2629
+ isIsolated: false,
2742
2630
  ...calculatedMarketPoolData
2743
2631
  };
2744
- } catch (e) {
2745
- console.error(e);
2746
2632
  }
2633
+ return marketPool;
2747
2634
  };
2748
2635
  var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
2749
2636
  const marketId = query.address.get("core.market");
@@ -2792,76 +2679,85 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
2792
2679
  );
2793
2680
  return marketCollateralIndexer;
2794
2681
  }
2682
+ let marketCollateral;
2683
+ let riskModel;
2684
+ let collateralStat;
2795
2685
  const marketId = query.address.get("core.market");
2796
2686
  marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
2797
2687
  showContent: true
2798
2688
  }))?.data;
2799
- if (!(marketObject && marketObject.content?.dataType === "moveObject"))
2800
- throw new Error(`Failed to fetch marketObject`);
2801
- const fields = marketObject.content.fields;
2802
- const coinType = query.utils.parseCoinType(collateralCoinName);
2803
- const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
2804
- const riskModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2805
- parentId: riskModelParentId,
2806
- name: {
2807
- type: "0x1::type_name::TypeName",
2808
- value: {
2809
- name: coinType.substring(2)
2689
+ if (marketObject) {
2690
+ if (marketObject.content && "fields" in marketObject.content) {
2691
+ const fields = marketObject.content.fields;
2692
+ const coinType = query.utils.parseCoinType(collateralCoinName);
2693
+ const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
2694
+ const riskModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2695
+ parentId: riskModelParentId,
2696
+ name: {
2697
+ type: "0x1::type_name::TypeName",
2698
+ value: {
2699
+ name: coinType.substring(2)
2700
+ }
2701
+ }
2702
+ });
2703
+ if (!riskModelDynamicFieldObjectResponse)
2704
+ return void 0;
2705
+ const riskModelDynamicFieldObject = riskModelDynamicFieldObjectResponse.data;
2706
+ if (riskModelDynamicFieldObject && riskModelDynamicFieldObject.content && "fields" in riskModelDynamicFieldObject.content) {
2707
+ const dynamicFields = riskModelDynamicFieldObject.content.fields;
2708
+ riskModel = dynamicFields.value.fields;
2810
2709
  }
2811
- }
2812
- });
2813
- const riskModelDynamicFieldObject = riskModelDynamicFieldObjectResponse?.data;
2814
- if (!(riskModelDynamicFieldObject && riskModelDynamicFieldObject.content && "fields" in riskModelDynamicFieldObject.content))
2815
- throw new Error(
2816
- `Failed to ftech riskModelDynamicFieldObject for ${riskModelDynamicFieldObjectResponse?.error?.code.toString()}: `
2817
- );
2818
- const riskModel = riskModelDynamicFieldObject.content.fields.value.fields;
2819
- const collateralStatParentId = fields.collateral_stats.fields.table.fields.id.id;
2820
- const collateralStatDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2821
- parentId: collateralStatParentId,
2822
- name: {
2823
- type: "0x1::type_name::TypeName",
2824
- value: {
2825
- name: coinType.substring(2)
2710
+ const collateralStatParentId = fields.collateral_stats.fields.table.fields.id.id;
2711
+ const collateralStatDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2712
+ parentId: collateralStatParentId,
2713
+ name: {
2714
+ type: "0x1::type_name::TypeName",
2715
+ value: {
2716
+ name: coinType.substring(2)
2717
+ }
2718
+ }
2719
+ });
2720
+ if (!collateralStatDynamicFieldObjectResponse)
2721
+ return void 0;
2722
+ const collateralStatDynamicFieldObject = collateralStatDynamicFieldObjectResponse.data;
2723
+ if (collateralStatDynamicFieldObject && collateralStatDynamicFieldObject.content && "fields" in collateralStatDynamicFieldObject.content) {
2724
+ const dynamicFields = collateralStatDynamicFieldObject.content.fields;
2725
+ collateralStat = dynamicFields.value.fields;
2826
2726
  }
2827
2727
  }
2828
- });
2829
- const collateralStatDynamicFieldObject = collateralStatDynamicFieldObjectResponse?.data;
2830
- if (!(collateralStatDynamicFieldObject && collateralStatDynamicFieldObject.content && "fields" in collateralStatDynamicFieldObject.content))
2831
- throw new Error(
2832
- `Failed to fetch collateralStatDynamicFieldObject for ${collateralCoinName}: ${collateralStatDynamicFieldObjectResponse?.error?.code.toString()}`
2728
+ }
2729
+ if (riskModel && collateralStat) {
2730
+ const parsedMarketCollateralData = parseOriginMarketCollateralData({
2731
+ type: riskModel.type.fields,
2732
+ collateralFactor: riskModel.collateral_factor.fields,
2733
+ liquidationFactor: riskModel.liquidation_factor.fields,
2734
+ liquidationDiscount: riskModel.liquidation_discount.fields,
2735
+ liquidationPanelty: riskModel.liquidation_penalty.fields,
2736
+ liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
2737
+ maxCollateralAmount: riskModel.max_collateral_amount,
2738
+ totalCollateralAmount: collateralStat.amount
2739
+ });
2740
+ const calculatedMarketCollateralData = calculateMarketCollateralData(
2741
+ query.utils,
2742
+ parsedMarketCollateralData
2833
2743
  );
2834
- const collateralStat = collateralStatDynamicFieldObject.content.fields.value.fields;
2835
- const parsedMarketCollateralData = parseOriginMarketCollateralData({
2836
- type: riskModel.type.fields,
2837
- collateralFactor: riskModel.collateral_factor.fields,
2838
- liquidationFactor: riskModel.liquidation_factor.fields,
2839
- liquidationDiscount: riskModel.liquidation_discount.fields,
2840
- liquidationPanelty: riskModel.liquidation_penalty.fields,
2841
- liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
2842
- maxCollateralAmount: riskModel.max_collateral_amount,
2843
- totalCollateralAmount: collateralStat.amount
2844
- });
2845
- const calculatedMarketCollateralData = calculateMarketCollateralData(
2846
- query.utils,
2847
- parsedMarketCollateralData
2848
- );
2849
- return {
2850
- coinName: collateralCoinName,
2851
- symbol: query.utils.parseSymbol(collateralCoinName),
2852
- coinType: query.utils.parseCoinType(collateralCoinName),
2853
- marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
2854
- coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
2855
- coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
2856
- coinPrice: coinPrice ?? 0,
2857
- collateralFactor: parsedMarketCollateralData.collateralFactor,
2858
- liquidationFactor: parsedMarketCollateralData.liquidationFactor,
2859
- liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
2860
- liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
2861
- liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
2862
- isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
2863
- ...calculatedMarketCollateralData
2864
- };
2744
+ marketCollateral = {
2745
+ coinName: collateralCoinName,
2746
+ symbol: query.utils.parseSymbol(collateralCoinName),
2747
+ coinType: query.utils.parseCoinType(collateralCoinName),
2748
+ marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
2749
+ coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
2750
+ coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
2751
+ coinPrice: coinPrice ?? 0,
2752
+ collateralFactor: parsedMarketCollateralData.collateralFactor,
2753
+ liquidationFactor: parsedMarketCollateralData.liquidationFactor,
2754
+ liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
2755
+ liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
2756
+ liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
2757
+ ...calculatedMarketCollateralData
2758
+ };
2759
+ }
2760
+ return marketCollateral;
2865
2761
  };
2866
2762
  var getObligations = async ({
2867
2763
  address
@@ -2877,6 +2773,9 @@ var getObligations = async ({
2877
2773
  filter: {
2878
2774
  StructType: `${protocolObjectId}::obligation::ObligationKey`
2879
2775
  },
2776
+ options: {
2777
+ showContent: true
2778
+ },
2880
2779
  cursor: nextCursor,
2881
2780
  limit: 10
2882
2781
  });
@@ -2890,14 +2789,14 @@ var getObligations = async ({
2890
2789
  hasNextPage = false;
2891
2790
  }
2892
2791
  } while (hasNextPage);
2893
- const keyObjectIds = keyObjectsResponse.map((ref) => ref?.data?.objectId).filter((id) => id !== void 0);
2894
- const keyObjects = await address.cache.queryGetObjects(keyObjectIds);
2792
+ const keyObjects = keyObjectsResponse.filter((ref) => !!ref.data);
2895
2793
  const obligations = [];
2896
2794
  await Promise.allSettled(
2897
- keyObjects.map(async (keyObject) => {
2898
- const keyId = keyObject.objectId;
2899
- if (keyObject.content && "fields" in keyObject.content) {
2900
- const fields = keyObject.content.fields;
2795
+ keyObjects.map(async ({ data }) => {
2796
+ const keyId = data?.objectId;
2797
+ const content = data?.content;
2798
+ if (keyId && content && "fields" in content) {
2799
+ const fields = content.fields;
2901
2800
  const obligationId = String(fields.ownership.fields.of);
2902
2801
  const locked = await getObligationLocked(address.cache, obligationId);
2903
2802
  obligations.push({ id: obligationId, keyId, locked });
@@ -3090,7 +2989,7 @@ var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPr
3090
2989
  const coinName = query.utils.parseCoinName(marketCoinName);
3091
2990
  marketPool = marketPool || await query.getMarketPool(coinName, indexer);
3092
2991
  if (!marketPool) {
3093
- throw new Error("Failed to fetch marketPool");
2992
+ throw new Error("Fail to fetch marketPool");
3094
2993
  }
3095
2994
  const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
3096
2995
  const rewardPoolId = query.address.get(
@@ -3165,6 +3064,7 @@ var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPr
3165
3064
  coinType: query.utils.parseCoinType(coinName),
3166
3065
  marketCoinType: query.utils.parseMarketCoinType(coinName),
3167
3066
  rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
3067
+ sCoinType: marketPool.sCoinType,
3168
3068
  coinDecimal: query.utils.getCoinDecimal(coinName),
3169
3069
  rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
3170
3070
  coinPrice: coinPrices?.[coinName] ?? 0,
@@ -3761,6 +3661,7 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
3761
3661
  symbol: query.utils.parseSymbol(poolCoinName),
3762
3662
  coinType: query.utils.parseCoinType(poolCoinName),
3763
3663
  marketCoinType: query.utils.parseMarketCoinType(poolCoinName),
3664
+ sCoinType: marketPool?.sCoinType ?? "",
3764
3665
  coinDecimal,
3765
3666
  coinPrice: coinPrice ?? 0,
3766
3667
  conversionRate: marketPool?.conversionRate ?? 1,
@@ -4149,7 +4050,7 @@ var getTotalValueLocked = async (query, indexer = false) => {
4149
4050
  import BigNumber5 from "bignumber.js";
4150
4051
  import { SUI_CLOCK_OBJECT_ID, SuiTxBlock as SuiTxBlock2 } from "@scallop-io/sui-kit";
4151
4052
  import { bcs } from "@mysten/sui/bcs";
4152
- import { z as zod3 } from "zod";
4053
+ import { z as zod2 } from "zod";
4153
4054
  import assert from "assert";
4154
4055
  var getVescaKeys = async (utils, ownerAddress) => {
4155
4056
  const owner = ownerAddress || utils.suiKit.currentAddress();
@@ -4198,14 +4099,13 @@ var getVeScas = async ({
4198
4099
  }
4199
4100
  return result;
4200
4101
  };
4201
- var SuiObjectRefZod = zod3.object({
4202
- objectId: zod3.string(),
4203
- digest: zod3.string(),
4204
- version: zod3.string()
4102
+ var SuiObjectRefZod = zod2.object({
4103
+ objectId: zod2.string(),
4104
+ digest: zod2.string(),
4105
+ version: zod2.string()
4205
4106
  });
4206
- var getVeSca = async (utils, veScaKey, ownerAddress) => {
4107
+ var getVeSca = async (utils, veScaKey) => {
4207
4108
  const tableId = utils.address.get(`vesca.tableId`);
4208
- veScaKey = veScaKey || (await getVescaKeys(utils, ownerAddress))[0];
4209
4109
  if (!veScaKey)
4210
4110
  return void 0;
4211
4111
  if (typeof veScaKey === "object") {
@@ -4335,16 +4235,16 @@ var queryVeScaKeyIdFromReferralBindings = async (address, refereeAddress) => {
4335
4235
 
4336
4236
  // src/queries/loyaltyProgramQuery.ts
4337
4237
  import BigNumber6 from "bignumber.js";
4338
- import { z as zod4 } from "zod";
4339
- var rewardPoolFieldsZod = zod4.object({
4340
- balance: zod4.string(),
4341
- enable_claim: zod4.boolean()
4238
+ import { z as zod3 } from "zod";
4239
+ var rewardPoolFieldsZod = zod3.object({
4240
+ balance: zod3.string(),
4241
+ enable_claim: zod3.boolean()
4342
4242
  }).transform((value) => ({
4343
4243
  totalPoolReward: BigNumber6(value.balance).shiftedBy(-9).toNumber(),
4344
4244
  isClaimEnabled: value.enable_claim
4345
4245
  }));
4346
- var userRewardFieldsZod = zod4.object({
4347
- value: zod4.string()
4246
+ var userRewardFieldsZod = zod3.object({
4247
+ value: zod3.string()
4348
4248
  }).transform((value) => BigNumber6(value.value).shiftedBy(-9).toNumber());
4349
4249
  var getLoyaltyProgramInformations = async (query, veScaKey) => {
4350
4250
  const rewardPool = query.address.get("loyaltyProgram.rewardPool");
@@ -4455,10 +4355,10 @@ var ScallopUtils = class {
4455
4355
  * @param address - ScallopAddress instance.
4456
4356
  */
4457
4357
  async init(force = false, address) {
4458
- if (address && !this.address)
4459
- this.address = address;
4460
- if (force || !this.address.getAddresses()) {
4358
+ if (force || !this.address.getAddresses() || !address?.getAddresses()) {
4461
4359
  await this.address.read();
4360
+ } else {
4361
+ this.address = address;
4462
4362
  }
4463
4363
  }
4464
4364
  /**
@@ -4758,38 +4658,30 @@ var ScallopUtils = class {
4758
4658
  const priceId = this.address.get(
4759
4659
  `core.coins.${coinName}.oracle.pyth.feed`
4760
4660
  );
4761
- if (priceId) {
4762
- acc[coinName] = priceId;
4763
- }
4661
+ acc[coinName] = priceId;
4764
4662
  return acc;
4765
4663
  },
4766
4664
  {}
4767
4665
  );
4768
4666
  await Promise.allSettled(
4769
- Object.entries(priceIds).filter(([_, priceId]) => !!priceId).map(async ([coinName, priceId]) => {
4667
+ Object.entries(priceIds).map(async ([coinName, priceId]) => {
4770
4668
  const pythConnection = new SuiPriceServiceConnection(endpoint);
4771
4669
  try {
4772
4670
  const feed = await this.cache.queryClient.fetchQuery({
4773
- queryKey: queryKeys.oracle.getPythLatestPriceFeed(
4774
- priceId,
4775
- endpoint
4776
- ),
4671
+ queryKey: queryKeys.oracle.getPythLatestPriceFeed(priceId),
4777
4672
  queryFn: async () => {
4778
4673
  return await pythConnection.getLatestPriceFeeds([priceId]) ?? [];
4779
4674
  }
4780
4675
  });
4781
4676
  if (feed[0]) {
4782
- const data = parseDataFromPythPriceFeed(
4783
- feed[0],
4784
- this.address
4785
- );
4677
+ const data = parseDataFromPythPriceFeed(feed[0], this.address);
4786
4678
  this._priceMap.set(coinName, {
4787
4679
  price: data.price,
4788
4680
  publishTime: data.publishTime
4789
4681
  });
4790
4682
  coinPrices[coinName] = data.price;
4791
- failedRequests.delete(coinName);
4792
4683
  }
4684
+ failedRequests.delete(coinName);
4793
4685
  } catch (e) {
4794
4686
  console.warn(
4795
4687
  `Failed to get price ${coinName} feeds with endpoint ${endpoint}: ${e}`
@@ -5801,13 +5693,14 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
5801
5693
  );
5802
5694
  if (!obligationLocked || unstakeObligationBeforeStake) {
5803
5695
  const bindedVeScaKey = await builder.query.getBindedVeScaKey(obligationArg);
5804
- if (veScaKey && veScaKey !== bindedVeScaKey || !bindedVeScaKey) {
5696
+ const _veScaKey = bindedVeScaKey ?? veScaKey;
5697
+ if (!_veScaKey) {
5805
5698
  txBlock.stakeObligation(obligationArg, obligationKeyArg);
5806
5699
  } else {
5807
5700
  txBlock.stakeObligationWithVesca(
5808
5701
  obligationArg,
5809
5702
  obligationKeyArg,
5810
- bindedVeScaKey
5703
+ _veScaKey
5811
5704
  );
5812
5705
  }
5813
5706
  }
@@ -6649,6 +6542,14 @@ var ScallopIndexer = class {
6649
6542
  throw Error("Failed to getTotalValueLocked.");
6650
6543
  }
6651
6544
  }
6545
+ /**
6546
+ * Get coin price index data.
6547
+ *
6548
+ * @return price data.
6549
+ */
6550
+ async getCoinPrice(poolCoinName) {
6551
+ return (await this.getMarketPool(poolCoinName))?.coinPrice ?? 0;
6552
+ }
6652
6553
  };
6653
6554
 
6654
6555
  // src/queries/sCoinQuery.ts
@@ -6746,6 +6647,88 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
6746
6647
 
6747
6648
  // src/models/scallopQuery.ts
6748
6649
  import { normalizeSuiAddress } from "@mysten/sui/utils";
6650
+
6651
+ // src/queries/isolatedAsset.ts
6652
+ import { z as zod4 } from "zod";
6653
+ var isolatedAssetZod = zod4.object({
6654
+ dataType: zod4.string(),
6655
+ type: zod4.string(),
6656
+ hasPublicTransfer: zod4.boolean(),
6657
+ fields: zod4.object({
6658
+ id: zod4.object({
6659
+ id: zod4.string()
6660
+ }),
6661
+ name: zod4.object({
6662
+ type: zod4.string()
6663
+ }),
6664
+ value: zod4.boolean()
6665
+ })
6666
+ });
6667
+ var ISOLATED_ASSET_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::IsolatedAssetKey";
6668
+ var getIsolatedAssets = async (address) => {
6669
+ try {
6670
+ const marketObject = address.get("core.market");
6671
+ const isolatedAssets = [];
6672
+ if (!marketObject)
6673
+ return isolatedAssets;
6674
+ let hasNextPage = false;
6675
+ let nextCursor = null;
6676
+ const isIsolatedDynamicField = (dynamicField) => {
6677
+ return dynamicField.name.type === ISOLATED_ASSET_KEY;
6678
+ };
6679
+ do {
6680
+ const response = await address.cache.queryGetDynamicFields({
6681
+ parentId: marketObject,
6682
+ cursor: nextCursor,
6683
+ limit: 10
6684
+ });
6685
+ if (!response)
6686
+ break;
6687
+ const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
6688
+ isolatedAssets.push(...isolatedAssetCoinTypes);
6689
+ if (response && response.hasNextPage && response.nextCursor) {
6690
+ hasNextPage = true;
6691
+ nextCursor = response.nextCursor;
6692
+ } else {
6693
+ hasNextPage = false;
6694
+ }
6695
+ } while (hasNextPage);
6696
+ return isolatedAssets;
6697
+ } catch (e) {
6698
+ console.error(e);
6699
+ return [];
6700
+ }
6701
+ };
6702
+ var isIsolatedAsset = async (utils, coinName) => {
6703
+ try {
6704
+ const marketObject = utils.address.get("core.market");
6705
+ const cachedData = utils.address.cache.queryClient.getQueryData([
6706
+ "getDynamicFields",
6707
+ marketObject
6708
+ ]);
6709
+ if (cachedData) {
6710
+ const coinType2 = utils.parseCoinType(coinName);
6711
+ return cachedData.includes(coinType2);
6712
+ }
6713
+ const coinType = utils.parseCoinType(coinName).slice(2);
6714
+ const object = await utils.cache.queryGetDynamicFieldObject({
6715
+ parentId: marketObject,
6716
+ name: {
6717
+ type: ISOLATED_ASSET_KEY,
6718
+ value: coinType
6719
+ }
6720
+ });
6721
+ const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
6722
+ if (!parsedData.success)
6723
+ return false;
6724
+ return parsedData.data.fields.value;
6725
+ } catch (e) {
6726
+ console.error(e);
6727
+ return false;
6728
+ }
6729
+ };
6730
+
6731
+ // src/models/scallopQuery.ts
6749
6732
  var ScallopQuery = class {
6750
6733
  constructor(params, instance) {
6751
6734
  this.params = params;
@@ -6815,11 +6798,10 @@ var ScallopQuery = class {
6815
6798
  * @param address - ScallopAddress instance.
6816
6799
  */
6817
6800
  async init(force = false, address) {
6818
- if (address && !this.address) {
6819
- this.address = address;
6820
- }
6821
- if (force || !this.address.getAddresses()) {
6801
+ if (force || !this.address.getAddresses() || !address?.getAddresses()) {
6822
6802
  await this.address.read();
6803
+ } else {
6804
+ this.address = address;
6823
6805
  }
6824
6806
  await this.utils.init(force, this.address);
6825
6807
  }
@@ -7276,6 +7258,14 @@ var ScallopQuery = class {
7276
7258
  async isIsolatedAsset(assetCoinName) {
7277
7259
  return isIsolatedAsset(this.utils, assetCoinName);
7278
7260
  }
7261
+ /**
7262
+ * Get pool coin price from indexer
7263
+ * @param coinName
7264
+ * @returns price data
7265
+ */
7266
+ async getCoinPriceByIndexer(poolName) {
7267
+ return this.indexer.getCoinPrice(poolName);
7268
+ }
7279
7269
  };
7280
7270
 
7281
7271
  // src/models/scallopBuilder.ts
@@ -7328,10 +7318,10 @@ var ScallopBuilder = class {
7328
7318
  * @param address - ScallopAddress instance.
7329
7319
  */
7330
7320
  async init(force = false, address) {
7331
- if (address && !this.address)
7332
- this.address = address;
7333
- if (force || !this.address.getAddresses()) {
7321
+ if (force || !this.address.getAddresses() || !address?.getAddresses()) {
7334
7322
  await this.address.read();
7323
+ } else {
7324
+ this.address = address;
7335
7325
  }
7336
7326
  await this.query.init(force, this.address);
7337
7327
  await this.utils.init(force, this.address);
@@ -7716,7 +7706,7 @@ var ScallopClient = class {
7716
7706
  );
7717
7707
  txBlock.transferObjects([coin], sender);
7718
7708
  if (sign && availableStake) {
7719
- await txBlock.stakeObligationQuick(obligationId, obligationKey);
7709
+ await txBlock.stakeObligationWithVeScaQuick(obligationId, obligationKey);
7720
7710
  }
7721
7711
  if (sign) {
7722
7712
  return await this.suiKit.signAndSendTxn(
@@ -7746,7 +7736,7 @@ var ScallopClient = class {
7746
7736
  }
7747
7737
  await txBlock.repayQuick(amount, poolCoinName, obligationId);
7748
7738
  if (sign && availableStake) {
7749
- await txBlock.stakeObligationQuick(obligationId, obligationKey);
7739
+ await txBlock.stakeObligationWithVeScaQuick(obligationId, obligationKey);
7750
7740
  }
7751
7741
  if (sign) {
7752
7742
  return await this.suiKit.signAndSendTxn(
@@ -7893,7 +7883,7 @@ var ScallopClient = class {
7893
7883
  const txBlock = this.builder.createTxBlock();
7894
7884
  const sender = walletAddress || this.walletAddress;
7895
7885
  txBlock.setSender(sender);
7896
- await txBlock.stakeObligationQuick(obligationId, obligationKeyId);
7886
+ await txBlock.stakeObligationWithVeScaQuick(obligationId, obligationKeyId);
7897
7887
  if (sign) {
7898
7888
  return await this.suiKit.signAndSendTxn(
7899
7889
  txBlock
@@ -8245,7 +8235,6 @@ export {
8245
8235
  ScallopIndexer,
8246
8236
  ScallopQuery,
8247
8237
  ScallopUtils,
8248
- TEST_ADDRESSES,
8249
8238
  UNLOCK_ROUND_DURATION,
8250
8239
  USE_TEST_ADDRESS,
8251
8240
  assetCoins,