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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -254,11 +254,20 @@ 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
- ssui: "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",
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',
258
260
  scetus: "0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",
259
- ssca: "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",
260
- swusdc: "0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
261
- swusdt: "0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
261
+ // TODO: Change this to the correct value on production release
262
+ ssca: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
263
+ // '0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA',
264
+ // TODO: Change this to the correct value on production release
265
+ swusdc: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
266
+ // '0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC',
267
+ swusdt: (
268
+ // '0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT',
269
+ "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT"
270
+ ),
262
271
  sweth: "0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
263
272
  safsui: "0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",
264
273
  shasui: "0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",
@@ -359,10 +368,10 @@ var queryKeys = {
359
368
  ]
360
369
  },
361
370
  oracle: {
362
- getPythLatestPriceFeed: (pythPriceId) => [
371
+ getPythLatestPriceFeed: (pythPriceId, endpoint) => [
363
372
  "oracle",
364
373
  "getPythPriceId",
365
- { pythPriceId }
374
+ { pythPriceId, endpoint }
366
375
  ]
367
376
  }
368
377
  };
@@ -374,6 +383,430 @@ var MAX_LOCK_DURATION = MAX_LOCK_ROUNDS * UNLOCK_ROUND_DURATION;
374
383
  var MIN_INITIAL_LOCK_AMOUNT = 1e10;
375
384
  var MIN_TOP_UP_AMOUNT = 1e9;
376
385
 
386
+ // src/constants/testAddress.ts
387
+ var TEST_ADDRESSES = {
388
+ core: {
389
+ // version:
390
+ // '0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7',
391
+ version: "0xd318de9b0f6873879a82cbfcc2daa1d1591a8b54e7cea9f4b567da63c692a52b",
392
+ versionCap: "0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",
393
+ // object:
394
+ // '0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf',
395
+ object: "0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d",
396
+ // market:
397
+ // '0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9',
398
+ market: "0x9d6434e97f3f98fd9b0c0e1dca22632073985abcd22541feae7ee1e34cbe3af2",
399
+ adminCap: "0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",
400
+ coinDecimalsRegistry: "0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",
401
+ // obligationAccessStore:
402
+ // '0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9',
403
+ obligationAccessStore: "0x46e9b44a77ee9c9d33cc2689ecdfbb8f681935cbc6bdf6ac3df048e396c36c82",
404
+ coins: {
405
+ usdc: {
406
+ id: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7",
407
+ metaData: "0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6",
408
+ treasury: "",
409
+ oracle: {
410
+ supra: "",
411
+ switchboard: "",
412
+ pyth: {
413
+ feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
414
+ feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
415
+ }
416
+ }
417
+ },
418
+ cetus: {
419
+ id: "0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",
420
+ metaData: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",
421
+ treasury: "",
422
+ oracle: {
423
+ supra: "",
424
+ switchboard: "",
425
+ pyth: {
426
+ feed: "e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",
427
+ feedObject: "0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"
428
+ }
429
+ }
430
+ },
431
+ wapt: {
432
+ id: "0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",
433
+ metaData: "0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",
434
+ treasury: "",
435
+ oracle: {
436
+ supra: "",
437
+ switchboard: "",
438
+ pyth: {
439
+ feed: "03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",
440
+ feedObject: "0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"
441
+ }
442
+ }
443
+ },
444
+ wsol: {
445
+ id: "0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",
446
+ metaData: "0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",
447
+ treasury: "",
448
+ oracle: {
449
+ supra: "",
450
+ switchboard: "",
451
+ pyth: {
452
+ feed: "ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",
453
+ feedObject: "0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"
454
+ }
455
+ }
456
+ },
457
+ wbtc: {
458
+ id: "0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",
459
+ metaData: "0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",
460
+ treasury: "",
461
+ oracle: {
462
+ supra: "",
463
+ switchboard: "",
464
+ pyth: {
465
+ feed: "e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
466
+ feedObject: "0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"
467
+ }
468
+ }
469
+ },
470
+ weth: {
471
+ id: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
472
+ metaData: "0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",
473
+ treasury: "",
474
+ oracle: {
475
+ supra: "",
476
+ switchboard: "",
477
+ pyth: {
478
+ feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
479
+ feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
480
+ }
481
+ }
482
+ },
483
+ wusdc: {
484
+ id: "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",
485
+ metaData: "0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",
486
+ treasury: "",
487
+ oracle: {
488
+ supra: "",
489
+ switchboard: "",
490
+ pyth: {
491
+ feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
492
+ feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
493
+ }
494
+ }
495
+ },
496
+ wusdt: {
497
+ id: "0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",
498
+ metaData: "0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",
499
+ treasury: "",
500
+ oracle: {
501
+ supra: "",
502
+ switchboard: "",
503
+ pyth: {
504
+ feed: "2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",
505
+ feedObject: "0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"
506
+ }
507
+ }
508
+ },
509
+ sui: {
510
+ id: "0x0000000000000000000000000000000000000000000000000000000000000002",
511
+ metaData: "0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",
512
+ treasury: "",
513
+ oracle: {
514
+ supra: "",
515
+ switchboard: "0xbca474133638352ba83ccf7b5c931d50f764b09550e16612c9f70f1e21f3f594",
516
+ pyth: {
517
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
518
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
519
+ }
520
+ }
521
+ },
522
+ afsui: {
523
+ id: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
524
+ metaData: "0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",
525
+ treasury: "",
526
+ oracle: {
527
+ supra: "",
528
+ switchboard: "",
529
+ pyth: {
530
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
531
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
532
+ }
533
+ }
534
+ },
535
+ hasui: {
536
+ id: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
537
+ metaData: "0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",
538
+ treasury: "",
539
+ oracle: {
540
+ supra: "",
541
+ switchboard: "",
542
+ pyth: {
543
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
544
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
545
+ }
546
+ }
547
+ },
548
+ vsui: {
549
+ id: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
550
+ metaData: "0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",
551
+ treasury: "",
552
+ oracle: {
553
+ supra: "",
554
+ switchboard: "",
555
+ pyth: {
556
+ feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
557
+ feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
558
+ }
559
+ }
560
+ },
561
+ sca: {
562
+ id: "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
563
+ metaData: "0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",
564
+ treasury: "",
565
+ oracle: {
566
+ supra: "",
567
+ switchboard: "",
568
+ pyth: {
569
+ feed: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
570
+ feedObject: "0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"
571
+ }
572
+ }
573
+ },
574
+ sbeth: {
575
+ id: "0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29",
576
+ metaData: "0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0",
577
+ treasury: "",
578
+ oracle: {
579
+ supra: "",
580
+ switchboard: "",
581
+ pyth: {
582
+ feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
583
+ feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
584
+ }
585
+ }
586
+ }
587
+ },
588
+ oracles: {
589
+ xOracle: "0x93d5bf0936b71eb27255941e532fac33b5a5c7759e377b4923af0a1359ad494f",
590
+ xOracleCap: "0x1edeae568fde99e090dbdec4bcdbd33a15f53a1ce1f87aeef1a560dedf4b4a90",
591
+ supra: { registry: "", registryCap: "", holder: "" },
592
+ switchboard: { registry: "", registryCap: "" },
593
+ pyth: {
594
+ registry: "0xedc293f9413a5a7a5d53bdba1fd889d0a4030894469228f0acdae4aa3c55a213",
595
+ registryCap: "0xbcb07141eb1f7e01fbda4130ecf5f5adaeabb77f5d9c32158b7532bcd2197acd",
596
+ state: "0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",
597
+ wormhole: "0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",
598
+ wormholeState: "0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"
599
+ }
600
+ },
601
+ packages: {
602
+ coinDecimalsRegistry: {
603
+ id: "0xca5a5a62f01c79a104bf4d31669e29daa387f325c241de4edbe30986a9bc8b0d",
604
+ upgradeCap: "0x34e76a945d29f195bc53ca704fa70877d1cf3a5d7bbfdda1b13e633fff13c0f6"
605
+ },
606
+ math: {
607
+ id: "0xad013d5fde39e15eabda32b3dbdafd67dac32b798ce63237c27a8f73339b9b6f",
608
+ upgradeCap: "0x3a329598231de02e6135c62284b66005b41cad1d9ab7ca2dc79c08293aba2ec6"
609
+ },
610
+ whitelist: {
611
+ id: "0x1318fdc90319ec9c24df1456d960a447521b0a658316155895014a6e39b5482f",
612
+ upgradeCap: "0xf5a22aea23db664f7b69855b6a546747f17c1ec4230319cfc17225e462b05761"
613
+ },
614
+ x: {
615
+ id: "0x779b5c547976899f5474f3a5bc0db36ddf4697ad7e5a901db0415c2281d28162",
616
+ upgradeCap: "0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"
617
+ },
618
+ protocol: {
619
+ id: "0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d",
620
+ upgradeCap: "0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"
621
+ },
622
+ // protocol: {
623
+ // id: '0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e',
624
+ // upgradeCap:
625
+ // '0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a',
626
+ // },
627
+ protocolWhitelist: {
628
+ id: "0x4c262d9343dac53ecb28f482a2a3f62c73d0ebac5b5f03d57383d56ff219acdf",
629
+ upgradeCap: "0x4a5e88a75039b00988f633f811f58117f31b8627a46bf822aa114d9010049449"
630
+ },
631
+ // query: {
632
+ // id: '0xb8d603a39114a5efef3dd0bf84df0bed1be1fbd39b78b7dd6e8a61ccc5e6006f',
633
+ // upgradeCap:
634
+ // '0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f',
635
+ // },
636
+ query: {
637
+ id: "0x89706958f43fb170de134579e3fbc53972b946ee78bd2442d8e1adc36074fbdc",
638
+ upgradeCap: "0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"
639
+ },
640
+ supra: { id: "", upgradeCap: "" },
641
+ pyth: {
642
+ id: "0x910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a",
643
+ upgradeCap: "0xdf0ffbae1ea5bb25fbca5efba433dcf00c7cced65679af2f04728901275c6157"
644
+ },
645
+ switchboard: { id: "", upgradeCap: "" },
646
+ xOracle: {
647
+ id: "0x1478a432123e4b3d61878b629f2c692969fdb375644f1251cd278a4b1e7d7cd6",
648
+ upgradeCap: "0x0f928a6b2e26b73330fecaf9b44acfc9800a4a9794d6415c2a3153bc70e3c1f0"
649
+ },
650
+ testCoin: { id: "", upgradeCap: "" }
651
+ }
652
+ },
653
+ spool: {
654
+ // id: '0x7c4fdabe81c31b19a45d1e572a52a539997a90903fbb5bfab71480abe0fa62c3',
655
+ id: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
656
+ adminCap: "0xdd8a047cbbf802bfcde5288b8ef1910965d789cc614da11d39af05fca0bd020a",
657
+ // object:
658
+ // '0xe87f1b2d498106a2c61421cec75b7b5c5e348512b0dc263949a0e7a3c256571a',
659
+ object: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
660
+ pools: {
661
+ sweth: {
662
+ id: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
663
+ rewardPoolId: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"
664
+ },
665
+ ssui: {
666
+ // id: '0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4',
667
+ id: "0xb9617f83c06ebdeac0a8834782b1015e1cc7ea23739e30c132c4bfb95c37a579",
668
+ rewardPoolId: (
669
+ // '0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9',
670
+ "0xc3206071a8d43212efb6e3b5504f2321f8df97ab122b466c0bc7cfdf398dc13a"
671
+ )
672
+ },
673
+ susdc: {
674
+ id: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
675
+ rewardPoolId: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166"
676
+ },
677
+ swusdc: {
678
+ // id: '0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0',
679
+ id: "0xf1b383b9cf2e9f515fc69567df1053098f273849d09cd84b0278a773429bd2b2",
680
+ rewardPoolId: (
681
+ // '0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8',
682
+ "0xc71c53ee6505d928ba15bea4fe4f45d98c9c31eced94b72d00a7827d4b7ba3ff"
683
+ )
684
+ },
685
+ swusdt: {
686
+ // id: '0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f',
687
+ id: "0xb5567dfa5c7fc17a249e959732664c50713dd8c23db1a11376b27df800c17418",
688
+ rewardPoolId: (
689
+ // '0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080',
690
+ "0x60768b0687ff0235e376a039709a683e4c436098785e473b67b32dbab47b69ab"
691
+ )
692
+ },
693
+ scetus: {
694
+ id: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
695
+ rewardPoolId: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"
696
+ },
697
+ safsui: {
698
+ // id: '0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800',
699
+ id: "0xc568bb4c991258e839aa54802ecda04fcd9838c826bc3b42b40af81b23c458c8",
700
+ rewardPoolId: (
701
+ // '0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e',
702
+ "0x389a3cbeda742b918941bb24fd00e077bad3367484394d6234f8209b9a6aa03d"
703
+ )
704
+ },
705
+ shasui: {
706
+ // id: '0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa',
707
+ id: "0x93f3f4499bf89f2d05ddc1f8b15f51701a7c6c4d0ac0b9c3bc99462cbbd8e321",
708
+ rewardPoolId: (
709
+ // '0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66',
710
+ "0x94cee1be7f5ff34193f3aabef0b14142cb28af4d905fe487a9a7d85a15edb6aa"
711
+ )
712
+ },
713
+ svsui: {
714
+ // id: '0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670',
715
+ id: "0xa970e9087f80cb59e9299b8e7af7175d977ad6c9af0322aa4440e138fbd7ae00",
716
+ rewardPoolId: (
717
+ // '0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a',
718
+ "0x38eee9699c4fc132a6623e54b865f047df4fc6eb83af807300f44e8f4b235ff0"
719
+ )
720
+ }
721
+ },
722
+ config: ""
723
+ },
724
+ borrowIncentive: {
725
+ id: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
726
+ adminCap: "0x56ac8e6f2b360b2b35c0168d72cc6cd17d9592afb83709865cb87af24bb2025b",
727
+ object: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
728
+ query: "0x8e0d00f8ff1199d7c5fe56cea0e901a525daeefff0445a1635ace8282ae3302c",
729
+ incentivePools: "0x9d564c93128c6ab0c0d3e050a47f11df0b91494f3bb779bdc1301c1c637f15eb",
730
+ incentiveAccounts: "0x09e6040e798246de04941bc79a3ba62d3eca6d7a218cc30f21fb07f478fa2926",
731
+ config: "0x43d4ca1dfc90b161c4240facd119e74e4b850cca2957f88c2ec289c9380da064"
732
+ },
733
+ referral: {
734
+ id: "0x1bf5a8ce77050d8052549d743e16b469f15aa6b81b752b78b6ebb65179665f5a",
735
+ object: "0x5658d4bf5ddcba27e4337b4262108b3ad1716643cac8c2054ac341538adc72ec",
736
+ adminCap: "0xc5dc06b9074291259f2cac460c940012c781c4430e42125c541cc43101c3bcbd",
737
+ referralBindings: "0xcf184487782bed962bf678001efe775d31fb94b9992333a57594cf15d79d5ced",
738
+ bindingTableId: "0x41a50e258c0a266ce84e0e1a618dbf70b878cc943909e613089a50afcceb2bc0",
739
+ referralRevenuePool: "0xc24e3e5e37032f29a3dd91a9a1f057af8821b7e6c148e9683900ac8b6d30f0c6",
740
+ revenueTableId: "0x595baa3654c297bff84ab7786a2d250f019cefc66e8df8e89fd9d41e02bd30dd",
741
+ referralTiers: "0x144350f3db9b46d11b140084cd54e6de0b9c3b8d265ce8059b51d0ef58ea464b",
742
+ tiersTableId: "0xeac755a7a8b7798530905ac79e8c114f19d0f130f6eab012954f08faac29c75d",
743
+ // authorizedWitnessList:
744
+ // '0xf21b0ed043c9bb70842c0129159f4943dbcc3c9ef2f2f808af65f8be25cfd20e',
745
+ authorizedWitnessList: "0x9d6223dc52015b8a3986a573590ef2af8f1b8f3e4685513888c052f001b87e7f",
746
+ version: "0x3545849eb97723e676a476ec9d4fe5f2eb0eb2c6b78972851114fd4c7ed4639f"
747
+ },
748
+ vesca: {
749
+ id: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
750
+ object: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
751
+ adminCap: "0x8ffa76135c5b85c5fbd73a6448a4a733d826cb63a267ab817656acb77c72d4a5",
752
+ tableId: "0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",
753
+ table: "0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",
754
+ treasury: "0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",
755
+ config: "0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"
756
+ },
757
+ loyaltyProgram: {
758
+ id: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
759
+ object: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
760
+ rewardPool: "0xf9c090492ef476bd542109d0913ffe871cbfa28578b7114eca2a8c0e5671786f",
761
+ userRewardTableId: "0x748a80395849ed37db1b0e14f2ab5d1d96458d2359ab3a84eb079d0f4ac7cf2e"
762
+ },
763
+ scoin: {
764
+ id: "0x773dab39c90fe05439b06a2d061795e52a974ff92c2aef90b2ee467acf7f33c8",
765
+ coins: {
766
+ ssui: {
767
+ coinType: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
768
+ treasury: "0x0e499640a12c38dd9cc44532f5bc5fd1b6da86d2f9a8810357250f4b26e9e5c7"
769
+ },
770
+ scetus: {
771
+ coinType: "0x8b71e6d323ed78515af2bead13bf3d0da1562ba4a99234eb7c4f14fd39ef0427::scallop_cetus::SCALLOP_CETUS",
772
+ treasury: "0xd786f4b2d26278cc7911a3445b1b085eab60f269ef9dbb6b87e803d52f155003"
773
+ },
774
+ ssca: {
775
+ coinType: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
776
+ treasury: "0x5f1c5de1df7341075d119570269b7b452af50afe8363080638f1ae29a554c038"
777
+ },
778
+ swusdc: {
779
+ coinType: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
780
+ treasury: "0x471fbab72578bab577263006fe32543b6e76153fffa2bef69affe4bc4934258f"
781
+ },
782
+ swusdt: {
783
+ coinType: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
784
+ treasury: "0x921a4ed4bb4b4f11f51a462c83f4c0f6b60a90e441d1bc0d26d6fd893146bf4d"
785
+ },
786
+ sweth: {
787
+ coinType: "0x27d54f43e3eda701be56b82e5756e41c84467cd202f5cf713d5f9e45a9f1b6bc::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
788
+ treasury: "0x032b4c8fac94c038dbe986f7587e9b1e4ef580b5ee06d2ef249d85459b7ef05d"
789
+ },
790
+ safsui: {
791
+ coinType: "0xb75b46d975d8d80670b53a6bee90baaa8ce2e0b7d397f079447d641eef6b44ad::scallop_af_sui::SCALLOP_AF_SUI",
792
+ treasury: "0x21450ef0570ef3d224ffa3b873ab802e439ece7b93cc7efad10ae0c1e3b3fcfe"
793
+ },
794
+ shasui: {
795
+ coinType: "0xd973a723874e2c7cde196602a79155a1343a933f8cf87d9b1bb7408bc1acbc58::scallop_ha_sui::SCALLOP_HA_SUI",
796
+ treasury: "0xf822fc1402207e47d2e3ba8ff6e1e594bf1de777dc5ebd2744619cd2726e3b0d"
797
+ },
798
+ svsui: {
799
+ coinType: "0x97023a317320c4498cc4cd239dd02fd30c28246e5e8f81325d63f2bd8d70f6b3::scallop_v_sui::SCALLOP_V_SUI",
800
+ treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6"
801
+ },
802
+ ssbeth: {
803
+ coinType: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
804
+ treasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed"
805
+ }
806
+ }
807
+ }
808
+ };
809
+
377
810
  // src/models/scallop.ts
378
811
  import { SuiKit as SuiKit7 } from "@scallop-io/sui-kit";
379
812
 
@@ -1068,541 +1501,149 @@ var ScallopCache = class {
1068
1501
  async invalidateAllCache() {
1069
1502
  return Object.values(queryKeys.rpc).map(
1070
1503
  (t) => this.queryClient.invalidateQueries({
1071
- queryKey: t(),
1072
- type: "all"
1073
- })
1074
- );
1075
- }
1076
- /**
1077
- * @description Provides cache for inspectTxn of the SuiKit.
1078
- * @param QueryInspectTxnParams
1079
- * @param txBlock
1080
- * @returns Promise<DevInspectResults>
1081
- */
1082
- async queryInspectTxn({
1083
- queryTarget,
1084
- args,
1085
- typeArgs
1086
- }) {
1087
- const txBlock = new SuiTxBlock();
1088
- txBlock.moveCall(queryTarget, args, typeArgs);
1089
- const query = await this.queryClient.fetchQuery({
1090
- queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
1091
- queryFn: async () => {
1092
- return await callWithRateLimit(
1093
- this.tokenBucket,
1094
- () => this.suiKit.inspectTxn(txBlock)
1095
- );
1096
- }
1097
- });
1098
- return query;
1099
- }
1100
- /**
1101
- * @description Provides cache for getObject of the SuiKit.
1102
- * @param objectId
1103
- * @param QueryObjectParams
1104
- * @returns Promise<SuiObjectResponse>
1105
- */
1106
- async queryGetObject(objectId, options) {
1107
- return this.queryClient.fetchQuery({
1108
- queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
1109
- queryFn: async () => {
1110
- return await callWithRateLimit(
1111
- this.tokenBucket,
1112
- () => this.client.getObject({
1113
- id: objectId,
1114
- options
1115
- })
1116
- );
1117
- }
1118
- });
1119
- }
1120
- /**
1121
- * @description Provides cache for getObjects of the SuiKit.
1122
- * @param objectIds
1123
- * @returns Promise<SuiObjectData[]>
1124
- */
1125
- async queryGetObjects(objectIds, options = {
1126
- showContent: true
1127
- }) {
1128
- if (objectIds.length === 0)
1129
- return [];
1130
- return this.queryClient.fetchQuery({
1131
- queryKey: queryKeys.rpc.getObjects(
1132
- objectIds,
1133
- this.walletAddress,
1134
- options
1135
- ),
1136
- queryFn: async () => {
1137
- return await callWithRateLimit(
1138
- this.tokenBucket,
1139
- () => this.suiKit.getObjects(objectIds, options)
1140
- );
1141
- }
1142
- });
1504
+ queryKey: t(),
1505
+ type: "all"
1506
+ })
1507
+ );
1143
1508
  }
1144
1509
  /**
1145
- * @description Provides cache for getOwnedObjects of the SuiKit.
1146
- * @param input
1147
- * @returns Promise<PaginatedObjectsResponse>
1510
+ * @description Provides cache for inspectTxn of the SuiKit.
1511
+ * @param QueryInspectTxnParams
1512
+ * @param txBlock
1513
+ * @returns Promise<DevInspectResults>
1148
1514
  */
1149
- async queryGetOwnedObjects(input) {
1150
- return this.queryClient.fetchQuery({
1151
- queryKey: queryKeys.rpc.getOwnedObjects(input),
1152
- queryFn: async () => {
1153
- return await callWithRateLimit(
1154
- this.tokenBucket,
1155
- () => this.client.getOwnedObjects(input)
1156
- );
1157
- }
1158
- });
1159
- }
1160
- async queryGetDynamicFields(input) {
1161
- return this.queryClient.fetchQuery({
1162
- queryKey: queryKeys.rpc.getDynamicFields(input),
1515
+ async queryInspectTxn({
1516
+ queryTarget,
1517
+ args,
1518
+ typeArgs
1519
+ }) {
1520
+ const txBlock = new SuiTxBlock();
1521
+ txBlock.moveCall(queryTarget, args, typeArgs);
1522
+ const query = await this.queryClient.fetchQuery({
1523
+ queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
1163
1524
  queryFn: async () => {
1164
1525
  return await callWithRateLimit(
1165
1526
  this.tokenBucket,
1166
- () => this.client.getDynamicFields(input)
1527
+ () => this.suiKit.inspectTxn(txBlock)
1167
1528
  );
1168
1529
  }
1169
1530
  });
1531
+ return query;
1170
1532
  }
1171
- async queryGetDynamicFieldObject(input) {
1533
+ /**
1534
+ * @description Provides cache for getObject of the SuiKit.
1535
+ * @param objectId
1536
+ * @param QueryObjectParams
1537
+ * @returns Promise<SuiObjectResponse>
1538
+ */
1539
+ async queryGetObject(objectId, options) {
1172
1540
  return this.queryClient.fetchQuery({
1173
- queryKey: queryKeys.rpc.getDynamicFieldObject(input),
1541
+ queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
1174
1542
  queryFn: async () => {
1175
1543
  return await callWithRateLimit(
1176
1544
  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
- {}
1545
+ () => this.client.getObject({
1546
+ id: objectId,
1547
+ options
1548
+ })
1200
1549
  );
1201
- return balances;
1202
1550
  }
1203
1551
  });
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
- }
1552
+ }
1553
+ /**
1554
+ * @description Provides cache for getObjects of the SuiKit.
1555
+ * @param objectIds
1556
+ * @returns Promise<SuiObjectData[]>
1557
+ */
1558
+ async queryGetObjects(objectIds, options = {
1559
+ showContent: true
1560
+ }) {
1561
+ if (objectIds.length === 0)
1562
+ return [];
1563
+ return this.queryClient.fetchQuery({
1564
+ queryKey: queryKeys.rpc.getObjects(
1565
+ objectIds,
1566
+ this.walletAddress,
1567
+ options
1568
+ ),
1569
+ queryFn: async () => {
1570
+ return await callWithRateLimit(
1571
+ this.tokenBucket,
1572
+ () => this.suiKit.getObjects(objectIds, options)
1573
+ );
1389
1574
  }
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"
1575
+ });
1576
+ }
1577
+ /**
1578
+ * @description Provides cache for getOwnedObjects of the SuiKit.
1579
+ * @param input
1580
+ * @returns Promise<PaginatedObjectsResponse>
1581
+ */
1582
+ async queryGetOwnedObjects(input) {
1583
+ return this.queryClient.fetchQuery({
1584
+ queryKey: queryKeys.rpc.getOwnedObjects(input),
1585
+ queryFn: async () => {
1586
+ return await callWithRateLimit(
1587
+ this.tokenBucket,
1588
+ () => this.client.getOwnedObjects(input)
1589
+ );
1402
1590
  }
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
- )
1591
+ });
1592
+ }
1593
+ async queryGetDynamicFields(input) {
1594
+ return this.queryClient.fetchQuery({
1595
+ queryKey: queryKeys.rpc.getDynamicFields(input),
1596
+ queryFn: async () => {
1597
+ return await callWithRateLimit(
1598
+ this.tokenBucket,
1599
+ () => this.client.getDynamicFields(input)
1600
+ );
1519
1601
  }
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"
1602
+ });
1603
+ }
1604
+ async queryGetDynamicFieldObject(input) {
1605
+ return this.queryClient.fetchQuery({
1606
+ queryKey: queryKeys.rpc.getDynamicFieldObject(input),
1607
+ queryFn: async () => {
1608
+ return await callWithRateLimit(
1609
+ this.tokenBucket,
1610
+ () => this.client.getDynamicFieldObject(input)
1611
+ );
1612
+ }
1613
+ });
1614
+ }
1615
+ async queryGetAllCoinBalances(owner) {
1616
+ return this.queryClient.fetchQuery({
1617
+ queryKey: queryKeys.rpc.getAllCoinBalances(owner),
1618
+ queryFn: async () => {
1619
+ const allBalances = await callWithRateLimit(
1620
+ this.tokenBucket,
1621
+ () => this.client.getAllBalances({ owner })
1622
+ );
1623
+ if (!allBalances)
1624
+ return {};
1625
+ const balances = allBalances.reduce(
1626
+ (acc, coinBalance) => {
1627
+ if (coinBalance.totalBalance !== "0") {
1628
+ acc[normalizeStructTag2(coinBalance.coinType)] = coinBalance.totalBalance;
1629
+ }
1630
+ return acc;
1631
+ },
1632
+ {}
1633
+ );
1634
+ return balances;
1600
1635
  }
1601
- }
1636
+ });
1637
+ }
1638
+ async queryGetCoinBalance(input) {
1639
+ if (!input.coinType)
1640
+ return "0";
1641
+ return (await this.queryGetAllCoinBalances(input.owner) || {})[normalizeStructTag2(input.coinType)] ?? "0";
1602
1642
  }
1603
1643
  };
1604
1644
 
1605
1645
  // src/models/scallopAddress.ts
1646
+ import axios from "axios";
1606
1647
  var EMPTY_ADDRESSES = {
1607
1648
  core: {
1608
1649
  version: "",
@@ -2312,6 +2353,89 @@ var getSupplyLimit = async (utils, poolName) => {
2312
2353
  return parsedData.data.fields.value;
2313
2354
  };
2314
2355
 
2356
+ // src/queries/isolatedAsset.ts
2357
+ import { z as zod2 } from "zod";
2358
+ var isolatedAssetZod = zod2.object({
2359
+ dataType: zod2.string(),
2360
+ type: zod2.string(),
2361
+ hasPublicTransfer: zod2.boolean(),
2362
+ fields: zod2.object({
2363
+ id: zod2.object({
2364
+ id: zod2.string()
2365
+ }),
2366
+ name: zod2.object({
2367
+ type: zod2.string()
2368
+ }),
2369
+ value: zod2.boolean()
2370
+ })
2371
+ });
2372
+ var getIsolatedAssets = async (address) => {
2373
+ try {
2374
+ const marketObject = address.get("core.market");
2375
+ const protocolObject = address.get("core.packages.protocol.id");
2376
+ const ISOLATED_ASSET_KEY = `${protocolObject}::market_dynamic_keys::IsolatedAssetKey`;
2377
+ const isolatedAssets = [];
2378
+ if (!marketObject)
2379
+ return isolatedAssets;
2380
+ let hasNextPage = false;
2381
+ let nextCursor = null;
2382
+ const isIsolatedDynamicField = (dynamicField) => {
2383
+ return dynamicField.name.type === ISOLATED_ASSET_KEY;
2384
+ };
2385
+ do {
2386
+ const response = await address.cache.queryGetDynamicFields({
2387
+ parentId: marketObject,
2388
+ cursor: nextCursor,
2389
+ limit: 10
2390
+ });
2391
+ if (!response)
2392
+ break;
2393
+ const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
2394
+ isolatedAssets.push(...isolatedAssetCoinTypes);
2395
+ if (response && response.hasNextPage && response.nextCursor) {
2396
+ hasNextPage = true;
2397
+ nextCursor = response.nextCursor;
2398
+ } else {
2399
+ hasNextPage = false;
2400
+ }
2401
+ } while (hasNextPage);
2402
+ return isolatedAssets;
2403
+ } catch (e) {
2404
+ console.error(e);
2405
+ return [];
2406
+ }
2407
+ };
2408
+ var isIsolatedAsset = async (utils, coinName) => {
2409
+ try {
2410
+ const marketObject = utils.address.get("core.market");
2411
+ const protocolObject = utils.address.get("core.packages.protocol.id");
2412
+ const ISOLATED_ASSET_KEY = `${protocolObject}::market_dynamic_keys::IsolatedAssetKey`;
2413
+ const cachedData = utils.address.cache.queryClient.getQueryData([
2414
+ "getDynamicFields",
2415
+ marketObject
2416
+ ]);
2417
+ if (cachedData) {
2418
+ const coinType2 = utils.parseCoinType(coinName);
2419
+ return cachedData.includes(coinType2);
2420
+ }
2421
+ const coinType = utils.parseCoinType(coinName).slice(2);
2422
+ const object = await utils.cache.queryGetDynamicFieldObject({
2423
+ parentId: marketObject,
2424
+ name: {
2425
+ type: ISOLATED_ASSET_KEY,
2426
+ value: coinType
2427
+ }
2428
+ });
2429
+ const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
2430
+ if (!parsedData.success)
2431
+ return false;
2432
+ return parsedData.data.fields.value;
2433
+ } catch (e) {
2434
+ console.error(e);
2435
+ return false;
2436
+ }
2437
+ };
2438
+
2315
2439
  // src/queries/coreQuery.ts
2316
2440
  var queryMarket = async (query, indexer = false) => {
2317
2441
  const coinPrices = await query.utils.getCoinPrices();
@@ -2396,8 +2520,8 @@ var queryMarket = async (query, indexer = false) => {
2396
2520
  borrowFee: parsedMarketPoolData.borrowFee,
2397
2521
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
2398
2522
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
2399
- // isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2400
- isIsolated: false,
2523
+ isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2524
+ // isIsolated: false,
2401
2525
  maxSupplyCoin,
2402
2526
  ...calculatedMarketPoolData
2403
2527
  };
@@ -2436,6 +2560,7 @@ var queryMarket = async (query, indexer = false) => {
2436
2560
  liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
2437
2561
  liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
2438
2562
  liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
2563
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
2439
2564
  ...calculatedMarketCollateralData
2440
2565
  };
2441
2566
  }
@@ -2483,79 +2608,73 @@ var getMarketPools = async (query, poolCoinNames = [...SUPPORT_POOLS], indexer =
2483
2608
  return marketPools;
2484
2609
  };
2485
2610
  var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
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
- }
2611
+ try {
2612
+ coinPrice = coinPrice || (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
2613
+ if (indexer) {
2614
+ const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
2615
+ marketPoolIndexer.coinPrice = coinPrice || marketPoolIndexer.coinPrice;
2616
+ marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
2617
+ marketPoolIndexer.coinName
2618
+ );
2619
+ return marketPoolIndexer;
2620
+ }
2621
+ const marketId = query.address.get("core.market");
2622
+ marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
2623
+ showContent: true
2624
+ }))?.data;
2625
+ if (!(marketObject && marketObject.content?.dataType === "moveObject"))
2626
+ throw new Error(`Failed to fetch marketObject`);
2627
+ const fields = marketObject.content.fields;
2628
+ const coinType = query.utils.parseCoinType(poolCoinName);
2629
+ const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
2630
+ const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2631
+ parentId: balanceSheetParentId,
2632
+ name: {
2633
+ type: "0x1::type_name::TypeName",
2634
+ value: {
2635
+ name: coinType.substring(2)
2516
2636
  }
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;
2524
2637
  }
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
- }
2638
+ });
2639
+ const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
2640
+ if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
2641
+ throw new Error(
2642
+ `Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
2643
+ );
2644
+ const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
2645
+ const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
2646
+ const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2647
+ parentId: borrowIndexParentId,
2648
+ name: {
2649
+ type: "0x1::type_name::TypeName",
2650
+ value: {
2651
+ name: coinType.substring(2)
2533
2652
  }
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;
2541
2653
  }
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
- }
2654
+ });
2655
+ const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
2656
+ if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
2657
+ throw new Error(
2658
+ `Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
2659
+ );
2660
+ const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
2661
+ const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
2662
+ const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2663
+ parentId: interestModelParentId,
2664
+ name: {
2665
+ type: "0x1::type_name::TypeName",
2666
+ value: {
2667
+ name: coinType.substring(2)
2550
2668
  }
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;
2558
2669
  }
2670
+ });
2671
+ const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse?.data;
2672
+ if (!(interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content))
2673
+ throw new Error(
2674
+ `Failed to fetch interestModelDynamicFieldObject for ${poolCoinName}: ${interestModelDynamicFieldObject}`
2675
+ );
2676
+ const interestModel = interestModelDynamicFieldObject.content.fields.value.fields;
2677
+ const getBorrowFee = async () => {
2559
2678
  const borrowFeeDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2560
2679
  parentId: marketId,
2561
2680
  name: {
@@ -2567,16 +2686,11 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2567
2686
  }
2568
2687
  }
2569
2688
  });
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)) {
2689
+ const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
2690
+ if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
2691
+ return { value: "0" };
2692
+ return borrowFeeDynamicFieldObject.content.fields.value.fields;
2693
+ };
2580
2694
  const parsedMarketPoolData = parseOriginMarketPoolData({
2581
2695
  type: interestModel.type.fields,
2582
2696
  maxBorrowRate: interestModel.max_borrow_rate.fields,
@@ -2590,7 +2704,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2590
2704
  reserve: balanceSheet.revenue,
2591
2705
  reserveFactor: interestModel.revenue_factor.fields,
2592
2706
  borrowWeight: interestModel.borrow_weight.fields,
2593
- borrowFeeRate: borrowFeeRate || { value: "0" },
2707
+ borrowFeeRate: await getBorrowFee(),
2594
2708
  baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
2595
2709
  borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
2596
2710
  borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
@@ -2606,7 +2720,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2606
2720
  const maxSupplyCoin = BigNumber2(
2607
2721
  await getSupplyLimit(query.utils, poolCoinName) ?? "0"
2608
2722
  ).shiftedBy(-coinDecimal).toNumber();
2609
- marketPool = {
2723
+ return {
2610
2724
  coinName: poolCoinName,
2611
2725
  symbol: query.utils.parseSymbol(poolCoinName),
2612
2726
  coinType: query.utils.parseCoinType(poolCoinName),
@@ -2625,12 +2739,13 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
2625
2739
  marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
2626
2740
  minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
2627
2741
  maxSupplyCoin,
2628
- // isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2629
- isIsolated: false,
2742
+ isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
2743
+ // isIsolated: false,
2630
2744
  ...calculatedMarketPoolData
2631
2745
  };
2746
+ } catch (e) {
2747
+ console.error(e);
2632
2748
  }
2633
- return marketPool;
2634
2749
  };
2635
2750
  var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
2636
2751
  const marketId = query.address.get("core.market");
@@ -2679,85 +2794,76 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
2679
2794
  );
2680
2795
  return marketCollateralIndexer;
2681
2796
  }
2682
- let marketCollateral;
2683
- let riskModel;
2684
- let collateralStat;
2685
2797
  const marketId = query.address.get("core.market");
2686
2798
  marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
2687
2799
  showContent: true
2688
2800
  }))?.data;
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;
2801
+ if (!(marketObject && marketObject.content?.dataType === "moveObject"))
2802
+ throw new Error(`Failed to fetch marketObject`);
2803
+ const fields = marketObject.content.fields;
2804
+ const coinType = query.utils.parseCoinType(collateralCoinName);
2805
+ const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
2806
+ const riskModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2807
+ parentId: riskModelParentId,
2808
+ name: {
2809
+ type: "0x1::type_name::TypeName",
2810
+ value: {
2811
+ name: coinType.substring(2)
2709
2812
  }
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;
2813
+ }
2814
+ });
2815
+ const riskModelDynamicFieldObject = riskModelDynamicFieldObjectResponse?.data;
2816
+ if (!(riskModelDynamicFieldObject && riskModelDynamicFieldObject.content && "fields" in riskModelDynamicFieldObject.content))
2817
+ throw new Error(
2818
+ `Failed to fetch riskModelDynamicFieldObject for ${riskModelDynamicFieldObjectResponse?.error?.code.toString()}: `
2819
+ );
2820
+ const riskModel = riskModelDynamicFieldObject.content.fields.value.fields;
2821
+ const collateralStatParentId = fields.collateral_stats.fields.table.fields.id.id;
2822
+ const collateralStatDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
2823
+ parentId: collateralStatParentId,
2824
+ name: {
2825
+ type: "0x1::type_name::TypeName",
2826
+ value: {
2827
+ name: coinType.substring(2)
2726
2828
  }
2727
2829
  }
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
2830
+ });
2831
+ const collateralStatDynamicFieldObject = collateralStatDynamicFieldObjectResponse?.data;
2832
+ if (!(collateralStatDynamicFieldObject && collateralStatDynamicFieldObject.content && "fields" in collateralStatDynamicFieldObject.content))
2833
+ throw new Error(
2834
+ `Failed to fetch collateralStatDynamicFieldObject for ${collateralCoinName}: ${collateralStatDynamicFieldObjectResponse?.error?.code.toString()}`
2743
2835
  );
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;
2836
+ const collateralStat = collateralStatDynamicFieldObject.content.fields.value.fields;
2837
+ const parsedMarketCollateralData = parseOriginMarketCollateralData({
2838
+ type: riskModel.type.fields,
2839
+ collateralFactor: riskModel.collateral_factor.fields,
2840
+ liquidationFactor: riskModel.liquidation_factor.fields,
2841
+ liquidationDiscount: riskModel.liquidation_discount.fields,
2842
+ liquidationPanelty: riskModel.liquidation_penalty.fields,
2843
+ liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
2844
+ maxCollateralAmount: riskModel.max_collateral_amount,
2845
+ totalCollateralAmount: collateralStat.amount
2846
+ });
2847
+ const calculatedMarketCollateralData = calculateMarketCollateralData(
2848
+ query.utils,
2849
+ parsedMarketCollateralData
2850
+ );
2851
+ return {
2852
+ coinName: collateralCoinName,
2853
+ symbol: query.utils.parseSymbol(collateralCoinName),
2854
+ coinType: query.utils.parseCoinType(collateralCoinName),
2855
+ marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
2856
+ coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
2857
+ coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
2858
+ coinPrice: coinPrice ?? 0,
2859
+ collateralFactor: parsedMarketCollateralData.collateralFactor,
2860
+ liquidationFactor: parsedMarketCollateralData.liquidationFactor,
2861
+ liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
2862
+ liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
2863
+ liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
2864
+ isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
2865
+ ...calculatedMarketCollateralData
2866
+ };
2761
2867
  };
2762
2868
  var getObligations = async ({
2763
2869
  address
@@ -2986,7 +3092,7 @@ var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPr
2986
3092
  const coinName = query.utils.parseCoinName(marketCoinName);
2987
3093
  marketPool = marketPool || await query.getMarketPool(coinName, indexer);
2988
3094
  if (!marketPool) {
2989
- throw new Error("Fail to fetch marketPool");
3095
+ throw new Error(`Failed to fetch marketPool for ${marketCoinName}`);
2990
3096
  }
2991
3097
  const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
2992
3098
  const rewardPoolId = query.address.get(
@@ -3714,12 +3820,8 @@ var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
3714
3820
  };
3715
3821
  var getObligationAccount = async (query, obligationId, ownerAddress, indexer = false, market, coinPrices, coinAmounts) => {
3716
3822
  market = market || await query.queryMarket(indexer);
3717
- const collateralAssetCoinNames = [
3718
- .../* @__PURE__ */ new Set([
3719
- ...Object.values(market.collaterals).map(
3720
- (collateral) => collateral.coinName
3721
- )
3722
- ])
3823
+ const poolAssetCoinNames = [
3824
+ .../* @__PURE__ */ new Set([...Object.values(market.pools).map((pool) => pool.coinName)])
3723
3825
  ];
3724
3826
  const obligationQuery = await query.queryObligation(obligationId);
3725
3827
  const borrowIncentivePools = await query.getBorrowIncentivePools(
@@ -3727,8 +3829,9 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
3727
3829
  indexer
3728
3830
  );
3729
3831
  const borrowIncentiveAccounts = await query.getBorrowIncentiveAccounts(obligationId);
3730
- coinPrices = coinPrices || await query.utils.getCoinPrices(collateralAssetCoinNames);
3731
- coinAmounts = coinAmounts || await query.getCoinAmounts(collateralAssetCoinNames, ownerAddress);
3832
+ coinPrices = coinPrices || await query.utils.getCoinPrices(poolAssetCoinNames);
3833
+ coinAmounts = coinAmounts || await query.getCoinAmounts(poolAssetCoinNames, ownerAddress);
3834
+ console.log(coinPrices);
3732
3835
  const collaterals = {};
3733
3836
  const debts = {};
3734
3837
  const borrowIncentives = {};
@@ -3740,7 +3843,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
3740
3843
  let totalRewardedPools = 0;
3741
3844
  let totalBorrowedValue = BigNumber4(0);
3742
3845
  let totalBorrowedValueWithWeight = BigNumber4(0);
3743
- for (const assetCoinName of collateralAssetCoinNames) {
3846
+ for (const assetCoinName of poolAssetCoinNames) {
3744
3847
  const collateral = obligationQuery?.collaterals.find((collateral2) => {
3745
3848
  const collateralCoinName = query.utils.parseCoinNameFromType(
3746
3849
  collateral2.type.name
@@ -4045,7 +4148,7 @@ var getTotalValueLocked = async (query, indexer = false) => {
4045
4148
  import BigNumber5 from "bignumber.js";
4046
4149
  import { SUI_CLOCK_OBJECT_ID, SuiTxBlock as SuiTxBlock2 } from "@scallop-io/sui-kit";
4047
4150
  import { bcs } from "@mysten/sui/bcs";
4048
- import { z as zod2 } from "zod";
4151
+ import { z as zod3 } from "zod";
4049
4152
  import assert from "assert";
4050
4153
  var getVescaKeys = async (utils, ownerAddress) => {
4051
4154
  const owner = ownerAddress || utils.suiKit.currentAddress();
@@ -4094,10 +4197,10 @@ var getVeScas = async ({
4094
4197
  }
4095
4198
  return result;
4096
4199
  };
4097
- var SuiObjectRefZod = zod2.object({
4098
- objectId: zod2.string(),
4099
- digest: zod2.string(),
4100
- version: zod2.string()
4200
+ var SuiObjectRefZod = zod3.object({
4201
+ objectId: zod3.string(),
4202
+ digest: zod3.string(),
4203
+ version: zod3.string()
4101
4204
  });
4102
4205
  var getVeSca = async (utils, veScaKey, ownerAddress) => {
4103
4206
  const tableId = utils.address.get(`vesca.tableId`);
@@ -4231,16 +4334,16 @@ var queryVeScaKeyIdFromReferralBindings = async (address, refereeAddress) => {
4231
4334
 
4232
4335
  // src/queries/loyaltyProgramQuery.ts
4233
4336
  import BigNumber6 from "bignumber.js";
4234
- import { z as zod3 } from "zod";
4235
- var rewardPoolFieldsZod = zod3.object({
4236
- balance: zod3.string(),
4237
- enable_claim: zod3.boolean()
4337
+ import { z as zod4 } from "zod";
4338
+ var rewardPoolFieldsZod = zod4.object({
4339
+ balance: zod4.string(),
4340
+ enable_claim: zod4.boolean()
4238
4341
  }).transform((value) => ({
4239
4342
  totalPoolReward: BigNumber6(value.balance).shiftedBy(-9).toNumber(),
4240
4343
  isClaimEnabled: value.enable_claim
4241
4344
  }));
4242
- var userRewardFieldsZod = zod3.object({
4243
- value: zod3.string()
4345
+ var userRewardFieldsZod = zod4.object({
4346
+ value: zod4.string()
4244
4347
  }).transform((value) => BigNumber6(value.value).shiftedBy(-9).toNumber());
4245
4348
  var getLoyaltyProgramInformations = async (query, veScaKey) => {
4246
4349
  const rewardPool = query.address.get("loyaltyProgram.rewardPool");
@@ -4351,10 +4454,10 @@ var ScallopUtils = class {
4351
4454
  * @param address - ScallopAddress instance.
4352
4455
  */
4353
4456
  async init(force = false, address) {
4354
- if (force || !this.address.getAddresses() || !address?.getAddresses()) {
4355
- await this.address.read();
4356
- } else {
4457
+ if (address && !this.address)
4357
4458
  this.address = address;
4459
+ if (force || !this.address.getAddresses()) {
4460
+ await this.address.read();
4358
4461
  }
4359
4462
  }
4360
4463
  /**
@@ -4654,30 +4757,38 @@ var ScallopUtils = class {
4654
4757
  const priceId = this.address.get(
4655
4758
  `core.coins.${coinName}.oracle.pyth.feed`
4656
4759
  );
4657
- acc[coinName] = priceId;
4760
+ if (priceId) {
4761
+ acc[coinName] = priceId;
4762
+ }
4658
4763
  return acc;
4659
4764
  },
4660
4765
  {}
4661
4766
  );
4662
4767
  await Promise.allSettled(
4663
- Object.entries(priceIds).map(async ([coinName, priceId]) => {
4768
+ Object.entries(priceIds).filter(([_, priceId]) => !!priceId).map(async ([coinName, priceId]) => {
4664
4769
  const pythConnection = new SuiPriceServiceConnection(endpoint);
4665
4770
  try {
4666
4771
  const feed = await this.cache.queryClient.fetchQuery({
4667
- queryKey: queryKeys.oracle.getPythLatestPriceFeed(priceId),
4772
+ queryKey: queryKeys.oracle.getPythLatestPriceFeed(
4773
+ priceId,
4774
+ endpoint
4775
+ ),
4668
4776
  queryFn: async () => {
4669
4777
  return await pythConnection.getLatestPriceFeeds([priceId]) ?? [];
4670
4778
  }
4671
4779
  });
4672
4780
  if (feed[0]) {
4673
- const data = parseDataFromPythPriceFeed(feed[0], this.address);
4781
+ const data = parseDataFromPythPriceFeed(
4782
+ feed[0],
4783
+ this.address
4784
+ );
4674
4785
  this._priceMap.set(coinName, {
4675
4786
  price: data.price,
4676
4787
  publishTime: data.publishTime
4677
4788
  });
4678
4789
  coinPrices[coinName] = data.price;
4790
+ failedRequests.delete(coinName);
4679
4791
  }
4680
- failedRequests.delete(coinName);
4681
4792
  } catch (e) {
4682
4793
  console.warn(
4683
4794
  `Failed to get price ${coinName} feeds with endpoint ${endpoint}: ${e}`
@@ -6634,88 +6745,6 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
6634
6745
 
6635
6746
  // src/models/scallopQuery.ts
6636
6747
  import { normalizeSuiAddress } from "@mysten/sui/utils";
6637
-
6638
- // src/queries/isolatedAsset.ts
6639
- import { z as zod4 } from "zod";
6640
- var isolatedAssetZod = zod4.object({
6641
- dataType: zod4.string(),
6642
- type: zod4.string(),
6643
- hasPublicTransfer: zod4.boolean(),
6644
- fields: zod4.object({
6645
- id: zod4.object({
6646
- id: zod4.string()
6647
- }),
6648
- name: zod4.object({
6649
- type: zod4.string()
6650
- }),
6651
- value: zod4.boolean()
6652
- })
6653
- });
6654
- var ISOLATED_ASSET_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::IsolatedAssetKey";
6655
- var getIsolatedAssets = async (address) => {
6656
- try {
6657
- const marketObject = address.get("core.market");
6658
- const isolatedAssets = [];
6659
- if (!marketObject)
6660
- return isolatedAssets;
6661
- let hasNextPage = false;
6662
- let nextCursor = null;
6663
- const isIsolatedDynamicField = (dynamicField) => {
6664
- return dynamicField.name.type === ISOLATED_ASSET_KEY;
6665
- };
6666
- do {
6667
- const response = await address.cache.queryGetDynamicFields({
6668
- parentId: marketObject,
6669
- cursor: nextCursor,
6670
- limit: 10
6671
- });
6672
- if (!response)
6673
- break;
6674
- const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
6675
- isolatedAssets.push(...isolatedAssetCoinTypes);
6676
- if (response && response.hasNextPage && response.nextCursor) {
6677
- hasNextPage = true;
6678
- nextCursor = response.nextCursor;
6679
- } else {
6680
- hasNextPage = false;
6681
- }
6682
- } while (hasNextPage);
6683
- return isolatedAssets;
6684
- } catch (e) {
6685
- console.error(e);
6686
- return [];
6687
- }
6688
- };
6689
- var isIsolatedAsset = async (utils, coinName) => {
6690
- try {
6691
- const marketObject = utils.address.get("core.market");
6692
- const cachedData = utils.address.cache.queryClient.getQueryData([
6693
- "getDynamicFields",
6694
- marketObject
6695
- ]);
6696
- if (cachedData) {
6697
- const coinType2 = utils.parseCoinType(coinName);
6698
- return cachedData.includes(coinType2);
6699
- }
6700
- const coinType = utils.parseCoinType(coinName).slice(2);
6701
- const object = await utils.cache.queryGetDynamicFieldObject({
6702
- parentId: marketObject,
6703
- name: {
6704
- type: ISOLATED_ASSET_KEY,
6705
- value: coinType
6706
- }
6707
- });
6708
- const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
6709
- if (!parsedData.success)
6710
- return false;
6711
- return parsedData.data.fields.value;
6712
- } catch (e) {
6713
- console.error(e);
6714
- return false;
6715
- }
6716
- };
6717
-
6718
- // src/models/scallopQuery.ts
6719
6748
  var ScallopQuery = class {
6720
6749
  constructor(params, instance) {
6721
6750
  this.params = params;
@@ -6785,11 +6814,12 @@ var ScallopQuery = class {
6785
6814
  * @param address - ScallopAddress instance.
6786
6815
  */
6787
6816
  async init(force = false, address) {
6788
- if (force || !this.address.getAddresses() || !address?.getAddresses()) {
6789
- await this.address.read();
6790
- } else {
6817
+ if (address && !this.address) {
6791
6818
  this.address = address;
6792
6819
  }
6820
+ if (force || !this.address.getAddresses()) {
6821
+ await this.address.read();
6822
+ }
6793
6823
  await this.utils.init(force, this.address);
6794
6824
  }
6795
6825
  /* ==================== Core Query Methods ==================== */
@@ -7297,10 +7327,10 @@ var ScallopBuilder = class {
7297
7327
  * @param address - ScallopAddress instance.
7298
7328
  */
7299
7329
  async init(force = false, address) {
7300
- if (force || !this.address.getAddresses() || !address?.getAddresses()) {
7301
- await this.address.read();
7302
- } else {
7330
+ if (address && !this.address)
7303
7331
  this.address = address;
7332
+ if (force || !this.address.getAddresses()) {
7333
+ await this.address.read();
7304
7334
  }
7305
7335
  await this.query.init(force, this.address);
7306
7336
  await this.utils.init(force, this.address);
@@ -8214,6 +8244,7 @@ export {
8214
8244
  ScallopIndexer,
8215
8245
  ScallopQuery,
8216
8246
  ScallopUtils,
8247
+ TEST_ADDRESSES,
8217
8248
  UNLOCK_ROUND_DURATION,
8218
8249
  USE_TEST_ADDRESS,
8219
8250
  assetCoins,