@scallop-io/sui-scallop-sdk 1.3.3-alpha.2 → 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/constants/index.d.ts +0 -1
- package/dist/constants/queryKeys.d.ts +1 -2
- package/dist/index.js +1011 -1022
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1011 -1021
- package/dist/index.mjs.map +1 -1
- package/dist/models/scallopIndexer.d.ts +6 -0
- package/dist/models/scallopPrice.d.ts +0 -0
- package/dist/models/scallopQuery.d.ts +6 -0
- package/dist/queries/vescaQuery.d.ts +2 -2
- package/dist/types/query/core.d.ts +0 -1
- package/dist/types/query/portfolio.d.ts +1 -1
- package/dist/types/query/spool.d.ts +1 -0
- package/dist/types/query/vesca.d.ts +1 -1
- package/package.json +1 -1
- package/src/builders/borrowIncentiveBuilder.ts +3 -2
- package/src/constants/enum.ts +4 -11
- package/src/constants/index.ts +0 -1
- package/src/constants/queryKeys.ts +2 -2
- package/src/constants/testAddress.ts +35 -76
- package/src/models/scallopBuilder.ts +3 -2
- package/src/models/scallopClient.ts +3 -3
- package/src/models/scallopIndexer.ts +9 -0
- package/src/models/scallopPrice.ts +0 -0
- package/src/models/scallopQuery.ts +12 -4
- package/src/models/scallopUtils.ts +28 -39
- package/src/queries/coreQuery.ts +225 -230
- package/src/queries/isolatedAsset.ts +4 -4
- package/src/queries/portfolioQuery.ts +10 -6
- package/src/queries/referralQuery.ts +1 -0
- package/src/queries/spoolQuery.ts +2 -1
- package/src/queries/vescaQuery.ts +4 -6
- package/src/types/query/core.ts +0 -1
- package/src/types/query/portfolio.ts +1 -0
- package/src/types/query/spool.ts +1 -0
- package/src/types/query/vesca.ts +1 -1
package/dist/index.js
CHANGED
|
@@ -62,7 +62,6 @@ __export(src_exports, {
|
|
|
62
62
|
ScallopIndexer: () => ScallopIndexer,
|
|
63
63
|
ScallopQuery: () => ScallopQuery,
|
|
64
64
|
ScallopUtils: () => ScallopUtils,
|
|
65
|
-
TEST_ADDRESSES: () => TEST_ADDRESSES,
|
|
66
65
|
UNLOCK_ROUND_DURATION: () => UNLOCK_ROUND_DURATION,
|
|
67
66
|
USE_TEST_ADDRESS: () => USE_TEST_ADDRESS,
|
|
68
67
|
assetCoins: () => assetCoins,
|
|
@@ -337,20 +336,11 @@ var voloCoinIds = {
|
|
|
337
336
|
var sCoinIds = {
|
|
338
337
|
susdc: "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",
|
|
339
338
|
ssbeth: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
|
|
340
|
-
|
|
341
|
-
ssui: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
|
|
342
|
-
// ssui: '0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI',
|
|
339
|
+
ssui: "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",
|
|
343
340
|
scetus: "0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
// TODO: Change this to the correct value on production release
|
|
348
|
-
swusdc: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
|
|
349
|
-
// '0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC',
|
|
350
|
-
swusdt: (
|
|
351
|
-
// '0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT',
|
|
352
|
-
"0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT"
|
|
353
|
-
),
|
|
341
|
+
ssca: "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",
|
|
342
|
+
swusdc: "0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
|
|
343
|
+
swusdt: "0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
|
|
354
344
|
sweth: "0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
|
|
355
345
|
safsui: "0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",
|
|
356
346
|
shasui: "0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",
|
|
@@ -451,10 +441,10 @@ var queryKeys = {
|
|
|
451
441
|
]
|
|
452
442
|
},
|
|
453
443
|
oracle: {
|
|
454
|
-
getPythLatestPriceFeed: (pythPriceId
|
|
444
|
+
getPythLatestPriceFeed: (pythPriceId) => [
|
|
455
445
|
"oracle",
|
|
456
446
|
"getPythPriceId",
|
|
457
|
-
{ pythPriceId
|
|
447
|
+
{ pythPriceId }
|
|
458
448
|
]
|
|
459
449
|
}
|
|
460
450
|
};
|
|
@@ -466,430 +456,6 @@ var MAX_LOCK_DURATION = MAX_LOCK_ROUNDS * UNLOCK_ROUND_DURATION;
|
|
|
466
456
|
var MIN_INITIAL_LOCK_AMOUNT = 1e10;
|
|
467
457
|
var MIN_TOP_UP_AMOUNT = 1e9;
|
|
468
458
|
|
|
469
|
-
// src/constants/testAddress.ts
|
|
470
|
-
var TEST_ADDRESSES = {
|
|
471
|
-
core: {
|
|
472
|
-
// version:
|
|
473
|
-
// '0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7',
|
|
474
|
-
version: "0xd318de9b0f6873879a82cbfcc2daa1d1591a8b54e7cea9f4b567da63c692a52b",
|
|
475
|
-
versionCap: "0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",
|
|
476
|
-
// object:
|
|
477
|
-
// '0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf',
|
|
478
|
-
object: "0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d",
|
|
479
|
-
// market:
|
|
480
|
-
// '0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9',
|
|
481
|
-
market: "0x9d6434e97f3f98fd9b0c0e1dca22632073985abcd22541feae7ee1e34cbe3af2",
|
|
482
|
-
adminCap: "0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",
|
|
483
|
-
coinDecimalsRegistry: "0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",
|
|
484
|
-
// obligationAccessStore:
|
|
485
|
-
// '0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9',
|
|
486
|
-
obligationAccessStore: "0x46e9b44a77ee9c9d33cc2689ecdfbb8f681935cbc6bdf6ac3df048e396c36c82",
|
|
487
|
-
coins: {
|
|
488
|
-
usdc: {
|
|
489
|
-
id: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7",
|
|
490
|
-
metaData: "0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6",
|
|
491
|
-
treasury: "",
|
|
492
|
-
oracle: {
|
|
493
|
-
supra: "",
|
|
494
|
-
switchboard: "",
|
|
495
|
-
pyth: {
|
|
496
|
-
feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
|
|
497
|
-
feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
},
|
|
501
|
-
cetus: {
|
|
502
|
-
id: "0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",
|
|
503
|
-
metaData: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",
|
|
504
|
-
treasury: "",
|
|
505
|
-
oracle: {
|
|
506
|
-
supra: "",
|
|
507
|
-
switchboard: "",
|
|
508
|
-
pyth: {
|
|
509
|
-
feed: "e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",
|
|
510
|
-
feedObject: "0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
},
|
|
514
|
-
wapt: {
|
|
515
|
-
id: "0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",
|
|
516
|
-
metaData: "0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",
|
|
517
|
-
treasury: "",
|
|
518
|
-
oracle: {
|
|
519
|
-
supra: "",
|
|
520
|
-
switchboard: "",
|
|
521
|
-
pyth: {
|
|
522
|
-
feed: "03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",
|
|
523
|
-
feedObject: "0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
},
|
|
527
|
-
wsol: {
|
|
528
|
-
id: "0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",
|
|
529
|
-
metaData: "0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",
|
|
530
|
-
treasury: "",
|
|
531
|
-
oracle: {
|
|
532
|
-
supra: "",
|
|
533
|
-
switchboard: "",
|
|
534
|
-
pyth: {
|
|
535
|
-
feed: "ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",
|
|
536
|
-
feedObject: "0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
},
|
|
540
|
-
wbtc: {
|
|
541
|
-
id: "0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",
|
|
542
|
-
metaData: "0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",
|
|
543
|
-
treasury: "",
|
|
544
|
-
oracle: {
|
|
545
|
-
supra: "",
|
|
546
|
-
switchboard: "",
|
|
547
|
-
pyth: {
|
|
548
|
-
feed: "e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
|
|
549
|
-
feedObject: "0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"
|
|
550
|
-
}
|
|
551
|
-
}
|
|
552
|
-
},
|
|
553
|
-
weth: {
|
|
554
|
-
id: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
|
|
555
|
-
metaData: "0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",
|
|
556
|
-
treasury: "",
|
|
557
|
-
oracle: {
|
|
558
|
-
supra: "",
|
|
559
|
-
switchboard: "",
|
|
560
|
-
pyth: {
|
|
561
|
-
feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
|
|
562
|
-
feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
},
|
|
566
|
-
wusdc: {
|
|
567
|
-
id: "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",
|
|
568
|
-
metaData: "0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",
|
|
569
|
-
treasury: "",
|
|
570
|
-
oracle: {
|
|
571
|
-
supra: "",
|
|
572
|
-
switchboard: "",
|
|
573
|
-
pyth: {
|
|
574
|
-
feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
|
|
575
|
-
feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
},
|
|
579
|
-
wusdt: {
|
|
580
|
-
id: "0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",
|
|
581
|
-
metaData: "0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",
|
|
582
|
-
treasury: "",
|
|
583
|
-
oracle: {
|
|
584
|
-
supra: "",
|
|
585
|
-
switchboard: "",
|
|
586
|
-
pyth: {
|
|
587
|
-
feed: "2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",
|
|
588
|
-
feedObject: "0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
},
|
|
592
|
-
sui: {
|
|
593
|
-
id: "0x0000000000000000000000000000000000000000000000000000000000000002",
|
|
594
|
-
metaData: "0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",
|
|
595
|
-
treasury: "",
|
|
596
|
-
oracle: {
|
|
597
|
-
supra: "",
|
|
598
|
-
switchboard: "0xbca474133638352ba83ccf7b5c931d50f764b09550e16612c9f70f1e21f3f594",
|
|
599
|
-
pyth: {
|
|
600
|
-
feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
601
|
-
feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
|
|
602
|
-
}
|
|
603
|
-
}
|
|
604
|
-
},
|
|
605
|
-
afsui: {
|
|
606
|
-
id: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
|
|
607
|
-
metaData: "0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",
|
|
608
|
-
treasury: "",
|
|
609
|
-
oracle: {
|
|
610
|
-
supra: "",
|
|
611
|
-
switchboard: "",
|
|
612
|
-
pyth: {
|
|
613
|
-
feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
614
|
-
feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
|
|
615
|
-
}
|
|
616
|
-
}
|
|
617
|
-
},
|
|
618
|
-
hasui: {
|
|
619
|
-
id: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
|
|
620
|
-
metaData: "0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",
|
|
621
|
-
treasury: "",
|
|
622
|
-
oracle: {
|
|
623
|
-
supra: "",
|
|
624
|
-
switchboard: "",
|
|
625
|
-
pyth: {
|
|
626
|
-
feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
627
|
-
feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
},
|
|
631
|
-
vsui: {
|
|
632
|
-
id: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
|
|
633
|
-
metaData: "0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",
|
|
634
|
-
treasury: "",
|
|
635
|
-
oracle: {
|
|
636
|
-
supra: "",
|
|
637
|
-
switchboard: "",
|
|
638
|
-
pyth: {
|
|
639
|
-
feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
640
|
-
feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
|
|
641
|
-
}
|
|
642
|
-
}
|
|
643
|
-
},
|
|
644
|
-
sca: {
|
|
645
|
-
id: "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
|
|
646
|
-
metaData: "0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",
|
|
647
|
-
treasury: "",
|
|
648
|
-
oracle: {
|
|
649
|
-
supra: "",
|
|
650
|
-
switchboard: "",
|
|
651
|
-
pyth: {
|
|
652
|
-
feed: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
|
|
653
|
-
feedObject: "0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"
|
|
654
|
-
}
|
|
655
|
-
}
|
|
656
|
-
},
|
|
657
|
-
sbeth: {
|
|
658
|
-
id: "0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29",
|
|
659
|
-
metaData: "0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0",
|
|
660
|
-
treasury: "",
|
|
661
|
-
oracle: {
|
|
662
|
-
supra: "",
|
|
663
|
-
switchboard: "",
|
|
664
|
-
pyth: {
|
|
665
|
-
feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
|
|
666
|
-
feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
|
|
667
|
-
}
|
|
668
|
-
}
|
|
669
|
-
}
|
|
670
|
-
},
|
|
671
|
-
oracles: {
|
|
672
|
-
xOracle: "0x93d5bf0936b71eb27255941e532fac33b5a5c7759e377b4923af0a1359ad494f",
|
|
673
|
-
xOracleCap: "0x1edeae568fde99e090dbdec4bcdbd33a15f53a1ce1f87aeef1a560dedf4b4a90",
|
|
674
|
-
supra: { registry: "", registryCap: "", holder: "" },
|
|
675
|
-
switchboard: { registry: "", registryCap: "" },
|
|
676
|
-
pyth: {
|
|
677
|
-
registry: "0xedc293f9413a5a7a5d53bdba1fd889d0a4030894469228f0acdae4aa3c55a213",
|
|
678
|
-
registryCap: "0xbcb07141eb1f7e01fbda4130ecf5f5adaeabb77f5d9c32158b7532bcd2197acd",
|
|
679
|
-
state: "0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",
|
|
680
|
-
wormhole: "0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",
|
|
681
|
-
wormholeState: "0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"
|
|
682
|
-
}
|
|
683
|
-
},
|
|
684
|
-
packages: {
|
|
685
|
-
coinDecimalsRegistry: {
|
|
686
|
-
id: "0xca5a5a62f01c79a104bf4d31669e29daa387f325c241de4edbe30986a9bc8b0d",
|
|
687
|
-
upgradeCap: "0x34e76a945d29f195bc53ca704fa70877d1cf3a5d7bbfdda1b13e633fff13c0f6"
|
|
688
|
-
},
|
|
689
|
-
math: {
|
|
690
|
-
id: "0xad013d5fde39e15eabda32b3dbdafd67dac32b798ce63237c27a8f73339b9b6f",
|
|
691
|
-
upgradeCap: "0x3a329598231de02e6135c62284b66005b41cad1d9ab7ca2dc79c08293aba2ec6"
|
|
692
|
-
},
|
|
693
|
-
whitelist: {
|
|
694
|
-
id: "0x1318fdc90319ec9c24df1456d960a447521b0a658316155895014a6e39b5482f",
|
|
695
|
-
upgradeCap: "0xf5a22aea23db664f7b69855b6a546747f17c1ec4230319cfc17225e462b05761"
|
|
696
|
-
},
|
|
697
|
-
x: {
|
|
698
|
-
id: "0x779b5c547976899f5474f3a5bc0db36ddf4697ad7e5a901db0415c2281d28162",
|
|
699
|
-
upgradeCap: "0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"
|
|
700
|
-
},
|
|
701
|
-
protocol: {
|
|
702
|
-
id: "0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d",
|
|
703
|
-
upgradeCap: "0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"
|
|
704
|
-
},
|
|
705
|
-
// protocol: {
|
|
706
|
-
// id: '0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e',
|
|
707
|
-
// upgradeCap:
|
|
708
|
-
// '0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a',
|
|
709
|
-
// },
|
|
710
|
-
protocolWhitelist: {
|
|
711
|
-
id: "0x4c262d9343dac53ecb28f482a2a3f62c73d0ebac5b5f03d57383d56ff219acdf",
|
|
712
|
-
upgradeCap: "0x4a5e88a75039b00988f633f811f58117f31b8627a46bf822aa114d9010049449"
|
|
713
|
-
},
|
|
714
|
-
// query: {
|
|
715
|
-
// id: '0xb8d603a39114a5efef3dd0bf84df0bed1be1fbd39b78b7dd6e8a61ccc5e6006f',
|
|
716
|
-
// upgradeCap:
|
|
717
|
-
// '0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f',
|
|
718
|
-
// },
|
|
719
|
-
query: {
|
|
720
|
-
id: "0x89706958f43fb170de134579e3fbc53972b946ee78bd2442d8e1adc36074fbdc",
|
|
721
|
-
upgradeCap: "0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"
|
|
722
|
-
},
|
|
723
|
-
supra: { id: "", upgradeCap: "" },
|
|
724
|
-
pyth: {
|
|
725
|
-
id: "0x910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a",
|
|
726
|
-
upgradeCap: "0xdf0ffbae1ea5bb25fbca5efba433dcf00c7cced65679af2f04728901275c6157"
|
|
727
|
-
},
|
|
728
|
-
switchboard: { id: "", upgradeCap: "" },
|
|
729
|
-
xOracle: {
|
|
730
|
-
id: "0x1478a432123e4b3d61878b629f2c692969fdb375644f1251cd278a4b1e7d7cd6",
|
|
731
|
-
upgradeCap: "0x0f928a6b2e26b73330fecaf9b44acfc9800a4a9794d6415c2a3153bc70e3c1f0"
|
|
732
|
-
},
|
|
733
|
-
testCoin: { id: "", upgradeCap: "" }
|
|
734
|
-
}
|
|
735
|
-
},
|
|
736
|
-
spool: {
|
|
737
|
-
// id: '0x7c4fdabe81c31b19a45d1e572a52a539997a90903fbb5bfab71480abe0fa62c3',
|
|
738
|
-
id: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
|
|
739
|
-
adminCap: "0xdd8a047cbbf802bfcde5288b8ef1910965d789cc614da11d39af05fca0bd020a",
|
|
740
|
-
// object:
|
|
741
|
-
// '0xe87f1b2d498106a2c61421cec75b7b5c5e348512b0dc263949a0e7a3c256571a',
|
|
742
|
-
object: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
|
|
743
|
-
pools: {
|
|
744
|
-
sweth: {
|
|
745
|
-
id: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
|
|
746
|
-
rewardPoolId: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"
|
|
747
|
-
},
|
|
748
|
-
ssui: {
|
|
749
|
-
// id: '0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4',
|
|
750
|
-
id: "0xb9617f83c06ebdeac0a8834782b1015e1cc7ea23739e30c132c4bfb95c37a579",
|
|
751
|
-
rewardPoolId: (
|
|
752
|
-
// '0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9',
|
|
753
|
-
"0xc3206071a8d43212efb6e3b5504f2321f8df97ab122b466c0bc7cfdf398dc13a"
|
|
754
|
-
)
|
|
755
|
-
},
|
|
756
|
-
susdc: {
|
|
757
|
-
id: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
|
|
758
|
-
rewardPoolId: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166"
|
|
759
|
-
},
|
|
760
|
-
swusdc: {
|
|
761
|
-
// id: '0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0',
|
|
762
|
-
id: "0xf1b383b9cf2e9f515fc69567df1053098f273849d09cd84b0278a773429bd2b2",
|
|
763
|
-
rewardPoolId: (
|
|
764
|
-
// '0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8',
|
|
765
|
-
"0xc71c53ee6505d928ba15bea4fe4f45d98c9c31eced94b72d00a7827d4b7ba3ff"
|
|
766
|
-
)
|
|
767
|
-
},
|
|
768
|
-
swusdt: {
|
|
769
|
-
// id: '0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f',
|
|
770
|
-
id: "0xb5567dfa5c7fc17a249e959732664c50713dd8c23db1a11376b27df800c17418",
|
|
771
|
-
rewardPoolId: (
|
|
772
|
-
// '0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080',
|
|
773
|
-
"0x60768b0687ff0235e376a039709a683e4c436098785e473b67b32dbab47b69ab"
|
|
774
|
-
)
|
|
775
|
-
},
|
|
776
|
-
scetus: {
|
|
777
|
-
id: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
|
|
778
|
-
rewardPoolId: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"
|
|
779
|
-
},
|
|
780
|
-
safsui: {
|
|
781
|
-
// id: '0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800',
|
|
782
|
-
id: "0xc568bb4c991258e839aa54802ecda04fcd9838c826bc3b42b40af81b23c458c8",
|
|
783
|
-
rewardPoolId: (
|
|
784
|
-
// '0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e',
|
|
785
|
-
"0x389a3cbeda742b918941bb24fd00e077bad3367484394d6234f8209b9a6aa03d"
|
|
786
|
-
)
|
|
787
|
-
},
|
|
788
|
-
shasui: {
|
|
789
|
-
// id: '0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa',
|
|
790
|
-
id: "0x93f3f4499bf89f2d05ddc1f8b15f51701a7c6c4d0ac0b9c3bc99462cbbd8e321",
|
|
791
|
-
rewardPoolId: (
|
|
792
|
-
// '0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66',
|
|
793
|
-
"0x94cee1be7f5ff34193f3aabef0b14142cb28af4d905fe487a9a7d85a15edb6aa"
|
|
794
|
-
)
|
|
795
|
-
},
|
|
796
|
-
svsui: {
|
|
797
|
-
// id: '0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670',
|
|
798
|
-
id: "0xa970e9087f80cb59e9299b8e7af7175d977ad6c9af0322aa4440e138fbd7ae00",
|
|
799
|
-
rewardPoolId: (
|
|
800
|
-
// '0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a',
|
|
801
|
-
"0x38eee9699c4fc132a6623e54b865f047df4fc6eb83af807300f44e8f4b235ff0"
|
|
802
|
-
)
|
|
803
|
-
}
|
|
804
|
-
},
|
|
805
|
-
config: ""
|
|
806
|
-
},
|
|
807
|
-
borrowIncentive: {
|
|
808
|
-
id: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
|
|
809
|
-
adminCap: "0x56ac8e6f2b360b2b35c0168d72cc6cd17d9592afb83709865cb87af24bb2025b",
|
|
810
|
-
object: "0x85769d63565ce99c7622f8e336ca1460926ddf29738ad2a39407b5cac29f61fe",
|
|
811
|
-
query: "0x8e0d00f8ff1199d7c5fe56cea0e901a525daeefff0445a1635ace8282ae3302c",
|
|
812
|
-
incentivePools: "0x9d564c93128c6ab0c0d3e050a47f11df0b91494f3bb779bdc1301c1c637f15eb",
|
|
813
|
-
incentiveAccounts: "0x09e6040e798246de04941bc79a3ba62d3eca6d7a218cc30f21fb07f478fa2926",
|
|
814
|
-
config: "0x43d4ca1dfc90b161c4240facd119e74e4b850cca2957f88c2ec289c9380da064"
|
|
815
|
-
},
|
|
816
|
-
referral: {
|
|
817
|
-
id: "0x1bf5a8ce77050d8052549d743e16b469f15aa6b81b752b78b6ebb65179665f5a",
|
|
818
|
-
object: "0x5658d4bf5ddcba27e4337b4262108b3ad1716643cac8c2054ac341538adc72ec",
|
|
819
|
-
adminCap: "0xc5dc06b9074291259f2cac460c940012c781c4430e42125c541cc43101c3bcbd",
|
|
820
|
-
referralBindings: "0xcf184487782bed962bf678001efe775d31fb94b9992333a57594cf15d79d5ced",
|
|
821
|
-
bindingTableId: "0x41a50e258c0a266ce84e0e1a618dbf70b878cc943909e613089a50afcceb2bc0",
|
|
822
|
-
referralRevenuePool: "0xc24e3e5e37032f29a3dd91a9a1f057af8821b7e6c148e9683900ac8b6d30f0c6",
|
|
823
|
-
revenueTableId: "0x595baa3654c297bff84ab7786a2d250f019cefc66e8df8e89fd9d41e02bd30dd",
|
|
824
|
-
referralTiers: "0x144350f3db9b46d11b140084cd54e6de0b9c3b8d265ce8059b51d0ef58ea464b",
|
|
825
|
-
tiersTableId: "0xeac755a7a8b7798530905ac79e8c114f19d0f130f6eab012954f08faac29c75d",
|
|
826
|
-
// authorizedWitnessList:
|
|
827
|
-
// '0xf21b0ed043c9bb70842c0129159f4943dbcc3c9ef2f2f808af65f8be25cfd20e',
|
|
828
|
-
authorizedWitnessList: "0x9d6223dc52015b8a3986a573590ef2af8f1b8f3e4685513888c052f001b87e7f",
|
|
829
|
-
version: "0x3545849eb97723e676a476ec9d4fe5f2eb0eb2c6b78972851114fd4c7ed4639f"
|
|
830
|
-
},
|
|
831
|
-
vesca: {
|
|
832
|
-
id: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
|
|
833
|
-
object: "0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",
|
|
834
|
-
adminCap: "0x8ffa76135c5b85c5fbd73a6448a4a733d826cb63a267ab817656acb77c72d4a5",
|
|
835
|
-
tableId: "0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",
|
|
836
|
-
table: "0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",
|
|
837
|
-
treasury: "0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",
|
|
838
|
-
config: "0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"
|
|
839
|
-
},
|
|
840
|
-
loyaltyProgram: {
|
|
841
|
-
id: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
|
|
842
|
-
object: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
|
|
843
|
-
rewardPool: "0xf9c090492ef476bd542109d0913ffe871cbfa28578b7114eca2a8c0e5671786f",
|
|
844
|
-
userRewardTableId: "0x748a80395849ed37db1b0e14f2ab5d1d96458d2359ab3a84eb079d0f4ac7cf2e"
|
|
845
|
-
},
|
|
846
|
-
scoin: {
|
|
847
|
-
id: "0x773dab39c90fe05439b06a2d061795e52a974ff92c2aef90b2ee467acf7f33c8",
|
|
848
|
-
coins: {
|
|
849
|
-
ssui: {
|
|
850
|
-
coinType: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
|
|
851
|
-
treasury: "0x0e499640a12c38dd9cc44532f5bc5fd1b6da86d2f9a8810357250f4b26e9e5c7"
|
|
852
|
-
},
|
|
853
|
-
scetus: {
|
|
854
|
-
coinType: "0x8b71e6d323ed78515af2bead13bf3d0da1562ba4a99234eb7c4f14fd39ef0427::scallop_cetus::SCALLOP_CETUS",
|
|
855
|
-
treasury: "0xd786f4b2d26278cc7911a3445b1b085eab60f269ef9dbb6b87e803d52f155003"
|
|
856
|
-
},
|
|
857
|
-
ssca: {
|
|
858
|
-
coinType: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
|
|
859
|
-
treasury: "0x5f1c5de1df7341075d119570269b7b452af50afe8363080638f1ae29a554c038"
|
|
860
|
-
},
|
|
861
|
-
swusdc: {
|
|
862
|
-
coinType: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
|
|
863
|
-
treasury: "0x471fbab72578bab577263006fe32543b6e76153fffa2bef69affe4bc4934258f"
|
|
864
|
-
},
|
|
865
|
-
swusdt: {
|
|
866
|
-
coinType: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
|
|
867
|
-
treasury: "0x921a4ed4bb4b4f11f51a462c83f4c0f6b60a90e441d1bc0d26d6fd893146bf4d"
|
|
868
|
-
},
|
|
869
|
-
sweth: {
|
|
870
|
-
coinType: "0x27d54f43e3eda701be56b82e5756e41c84467cd202f5cf713d5f9e45a9f1b6bc::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
|
|
871
|
-
treasury: "0x032b4c8fac94c038dbe986f7587e9b1e4ef580b5ee06d2ef249d85459b7ef05d"
|
|
872
|
-
},
|
|
873
|
-
safsui: {
|
|
874
|
-
coinType: "0xb75b46d975d8d80670b53a6bee90baaa8ce2e0b7d397f079447d641eef6b44ad::scallop_af_sui::SCALLOP_AF_SUI",
|
|
875
|
-
treasury: "0x21450ef0570ef3d224ffa3b873ab802e439ece7b93cc7efad10ae0c1e3b3fcfe"
|
|
876
|
-
},
|
|
877
|
-
shasui: {
|
|
878
|
-
coinType: "0xd973a723874e2c7cde196602a79155a1343a933f8cf87d9b1bb7408bc1acbc58::scallop_ha_sui::SCALLOP_HA_SUI",
|
|
879
|
-
treasury: "0xf822fc1402207e47d2e3ba8ff6e1e594bf1de777dc5ebd2744619cd2726e3b0d"
|
|
880
|
-
},
|
|
881
|
-
svsui: {
|
|
882
|
-
coinType: "0x97023a317320c4498cc4cd239dd02fd30c28246e5e8f81325d63f2bd8d70f6b3::scallop_v_sui::SCALLOP_V_SUI",
|
|
883
|
-
treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6"
|
|
884
|
-
},
|
|
885
|
-
ssbeth: {
|
|
886
|
-
coinType: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
|
|
887
|
-
treasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed"
|
|
888
|
-
}
|
|
889
|
-
}
|
|
890
|
-
}
|
|
891
|
-
};
|
|
892
|
-
|
|
893
459
|
// src/models/scallop.ts
|
|
894
460
|
var import_sui_kit16 = require("@scallop-io/sui-kit");
|
|
895
461
|
|
|
@@ -1462,268 +1028,660 @@ var findClosestUnlockRound = (unlockAtInSecondTimestamp) => {
|
|
|
1462
1028
|
if (unlockDate.getUTCHours() >= 0) {
|
|
1463
1029
|
closestTwelveAM.setUTCDate(closestTwelveAM.getUTCDate() + 1);
|
|
1464
1030
|
}
|
|
1465
|
-
const now = (/* @__PURE__ */ new Date()).getTime();
|
|
1466
|
-
if (closestTwelveAM.getTime() - now > MAX_LOCK_DURATION * 1e3) {
|
|
1467
|
-
closestTwelveAM.setUTCDate(closestTwelveAM.getUTCDate() - 1);
|
|
1031
|
+
const now = (/* @__PURE__ */ new Date()).getTime();
|
|
1032
|
+
if (closestTwelveAM.getTime() - now > MAX_LOCK_DURATION * 1e3) {
|
|
1033
|
+
closestTwelveAM.setUTCDate(closestTwelveAM.getUTCDate() - 1);
|
|
1034
|
+
}
|
|
1035
|
+
return Math.floor(closestTwelveAM.getTime() / 1e3);
|
|
1036
|
+
};
|
|
1037
|
+
|
|
1038
|
+
// src/constants/tokenBucket.ts
|
|
1039
|
+
var DEFAULT_TOKENS_PER_INTERVAL = 50;
|
|
1040
|
+
var DEFAULT_INTERVAL_IN_MS = 300;
|
|
1041
|
+
|
|
1042
|
+
// src/utils/tokenBucket.ts
|
|
1043
|
+
var TokenBucket = class {
|
|
1044
|
+
constructor(tokensPerInterval, intervalInMs) {
|
|
1045
|
+
this.tokensPerInterval = tokensPerInterval;
|
|
1046
|
+
this.interval = intervalInMs;
|
|
1047
|
+
this.tokens = tokensPerInterval;
|
|
1048
|
+
this.lastRefill = Date.now();
|
|
1049
|
+
}
|
|
1050
|
+
refill() {
|
|
1051
|
+
const now = Date.now();
|
|
1052
|
+
const elapsed = now - this.lastRefill;
|
|
1053
|
+
if (elapsed > this.interval) {
|
|
1054
|
+
const tokensToAdd = Math.floor(elapsed / this.interval) * this.tokensPerInterval;
|
|
1055
|
+
this.tokens = Math.min(this.tokens + tokensToAdd, this.tokensPerInterval);
|
|
1056
|
+
this.lastRefill = now;
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
removeTokens(count) {
|
|
1060
|
+
this.refill();
|
|
1061
|
+
if (this.tokens >= count) {
|
|
1062
|
+
this.tokens -= count;
|
|
1063
|
+
return true;
|
|
1064
|
+
}
|
|
1065
|
+
return false;
|
|
1066
|
+
}
|
|
1067
|
+
};
|
|
1068
|
+
var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor = 1.25) => {
|
|
1069
|
+
let retries = 0;
|
|
1070
|
+
const tryRequest = async () => {
|
|
1071
|
+
if (tokenBucket.removeTokens(1)) {
|
|
1072
|
+
try {
|
|
1073
|
+
const result = await fn();
|
|
1074
|
+
if (result && result.status === 429) {
|
|
1075
|
+
throw new Error("Unexpected status code: 429");
|
|
1076
|
+
}
|
|
1077
|
+
return result;
|
|
1078
|
+
} catch (error) {
|
|
1079
|
+
if (error.message === "Unexpected status code: 429" && retries < maxRetries) {
|
|
1080
|
+
retries++;
|
|
1081
|
+
const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
|
|
1082
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
1083
|
+
return tryRequest();
|
|
1084
|
+
} else {
|
|
1085
|
+
console.error("An error occurred:", error.message);
|
|
1086
|
+
return null;
|
|
1087
|
+
}
|
|
1088
|
+
}
|
|
1089
|
+
} else if (retries < maxRetries) {
|
|
1090
|
+
retries++;
|
|
1091
|
+
const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
|
|
1092
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
1093
|
+
return tryRequest();
|
|
1094
|
+
} else {
|
|
1095
|
+
console.error("Maximum retries reached");
|
|
1096
|
+
return null;
|
|
1097
|
+
}
|
|
1098
|
+
};
|
|
1099
|
+
return tryRequest();
|
|
1100
|
+
};
|
|
1101
|
+
|
|
1102
|
+
// src/utils/indexer.ts
|
|
1103
|
+
async function callMethodWithIndexerFallback(method, context, ...args) {
|
|
1104
|
+
const indexer = args[args.length - 1];
|
|
1105
|
+
if (indexer) {
|
|
1106
|
+
try {
|
|
1107
|
+
return await method.apply(context, args);
|
|
1108
|
+
} catch (e) {
|
|
1109
|
+
console.warn(`Indexer requests failed: ${e}. Retrying without indexer..`);
|
|
1110
|
+
return await method.apply(context, [...args.slice(0, -1), false]);
|
|
1111
|
+
}
|
|
1112
|
+
}
|
|
1113
|
+
return await method.apply(context, args);
|
|
1114
|
+
}
|
|
1115
|
+
function withIndexerFallback(method) {
|
|
1116
|
+
return (...args) => {
|
|
1117
|
+
return callMethodWithIndexerFallback(method, this, ...args);
|
|
1118
|
+
};
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
// src/models/scallopCache.ts
|
|
1122
|
+
var ScallopCache = class {
|
|
1123
|
+
constructor(suiKit, walletAddress, cacheOptions, tokenBucket, queryClient) {
|
|
1124
|
+
this.queryClient = queryClient ?? new import_query_core.QueryClient(cacheOptions ?? DEFAULT_CACHE_OPTIONS);
|
|
1125
|
+
this._suiKit = suiKit;
|
|
1126
|
+
this.tokenBucket = tokenBucket ?? new TokenBucket(DEFAULT_TOKENS_PER_INTERVAL, DEFAULT_INTERVAL_IN_MS);
|
|
1127
|
+
this.walletAddress = walletAddress ?? suiKit.currentAddress();
|
|
1128
|
+
}
|
|
1129
|
+
get suiKit() {
|
|
1130
|
+
if (!this._suiKit) {
|
|
1131
|
+
throw new Error("SuiKit instance is not initialized");
|
|
1132
|
+
}
|
|
1133
|
+
return this._suiKit;
|
|
1134
|
+
}
|
|
1135
|
+
get client() {
|
|
1136
|
+
return this.suiKit.client();
|
|
1137
|
+
}
|
|
1138
|
+
/**
|
|
1139
|
+
* @description Invalidate cache based on the refetchType parameter
|
|
1140
|
+
* @param refetchType Determines the type of queries to be refetched. Defaults to `active`.
|
|
1141
|
+
*
|
|
1142
|
+
* - `active`: Only queries that match the refetch predicate and are actively being rendered via useQuery and related functions will be refetched in the background.
|
|
1143
|
+
* - `inactive`: Only queries that match the refetch predicate and are NOT actively being rendered via useQuery and related functions will be refetched in the background.
|
|
1144
|
+
* - `all`: All queries that match the refetch predicate will be refetched in the background.
|
|
1145
|
+
* - `none`: No queries will be refetched. Queries that match the refetch predicate will only be marked as invalid.
|
|
1146
|
+
*/
|
|
1147
|
+
async invalidateAllCache() {
|
|
1148
|
+
return Object.values(queryKeys.rpc).map(
|
|
1149
|
+
(t) => this.queryClient.invalidateQueries({
|
|
1150
|
+
queryKey: t(),
|
|
1151
|
+
type: "all"
|
|
1152
|
+
})
|
|
1153
|
+
);
|
|
1154
|
+
}
|
|
1155
|
+
/**
|
|
1156
|
+
* @description Provides cache for inspectTxn of the SuiKit.
|
|
1157
|
+
* @param QueryInspectTxnParams
|
|
1158
|
+
* @param txBlock
|
|
1159
|
+
* @returns Promise<DevInspectResults>
|
|
1160
|
+
*/
|
|
1161
|
+
async queryInspectTxn({
|
|
1162
|
+
queryTarget,
|
|
1163
|
+
args,
|
|
1164
|
+
typeArgs
|
|
1165
|
+
}) {
|
|
1166
|
+
const txBlock = new import_sui_kit.SuiTxBlock();
|
|
1167
|
+
txBlock.moveCall(queryTarget, args, typeArgs);
|
|
1168
|
+
const query = await this.queryClient.fetchQuery({
|
|
1169
|
+
queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
|
|
1170
|
+
queryFn: async () => {
|
|
1171
|
+
return await callWithRateLimit(
|
|
1172
|
+
this.tokenBucket,
|
|
1173
|
+
() => this.suiKit.inspectTxn(txBlock)
|
|
1174
|
+
);
|
|
1175
|
+
}
|
|
1176
|
+
});
|
|
1177
|
+
return query;
|
|
1178
|
+
}
|
|
1179
|
+
/**
|
|
1180
|
+
* @description Provides cache for getObject of the SuiKit.
|
|
1181
|
+
* @param objectId
|
|
1182
|
+
* @param QueryObjectParams
|
|
1183
|
+
* @returns Promise<SuiObjectResponse>
|
|
1184
|
+
*/
|
|
1185
|
+
async queryGetObject(objectId, options) {
|
|
1186
|
+
return this.queryClient.fetchQuery({
|
|
1187
|
+
queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
|
|
1188
|
+
queryFn: async () => {
|
|
1189
|
+
return await callWithRateLimit(
|
|
1190
|
+
this.tokenBucket,
|
|
1191
|
+
() => this.client.getObject({
|
|
1192
|
+
id: objectId,
|
|
1193
|
+
options
|
|
1194
|
+
})
|
|
1195
|
+
);
|
|
1196
|
+
}
|
|
1197
|
+
});
|
|
1198
|
+
}
|
|
1199
|
+
/**
|
|
1200
|
+
* @description Provides cache for getObjects of the SuiKit.
|
|
1201
|
+
* @param objectIds
|
|
1202
|
+
* @returns Promise<SuiObjectData[]>
|
|
1203
|
+
*/
|
|
1204
|
+
async queryGetObjects(objectIds, options = {
|
|
1205
|
+
showContent: true
|
|
1206
|
+
}) {
|
|
1207
|
+
if (objectIds.length === 0)
|
|
1208
|
+
return [];
|
|
1209
|
+
return this.queryClient.fetchQuery({
|
|
1210
|
+
queryKey: queryKeys.rpc.getObjects(
|
|
1211
|
+
objectIds,
|
|
1212
|
+
this.walletAddress,
|
|
1213
|
+
options
|
|
1214
|
+
),
|
|
1215
|
+
queryFn: async () => {
|
|
1216
|
+
return await callWithRateLimit(
|
|
1217
|
+
this.tokenBucket,
|
|
1218
|
+
() => this.suiKit.getObjects(objectIds, options)
|
|
1219
|
+
);
|
|
1220
|
+
}
|
|
1221
|
+
});
|
|
1222
|
+
}
|
|
1223
|
+
/**
|
|
1224
|
+
* @description Provides cache for getOwnedObjects of the SuiKit.
|
|
1225
|
+
* @param input
|
|
1226
|
+
* @returns Promise<PaginatedObjectsResponse>
|
|
1227
|
+
*/
|
|
1228
|
+
async queryGetOwnedObjects(input) {
|
|
1229
|
+
return this.queryClient.fetchQuery({
|
|
1230
|
+
queryKey: queryKeys.rpc.getOwnedObjects(input),
|
|
1231
|
+
queryFn: async () => {
|
|
1232
|
+
return await callWithRateLimit(
|
|
1233
|
+
this.tokenBucket,
|
|
1234
|
+
() => this.client.getOwnedObjects(input)
|
|
1235
|
+
);
|
|
1236
|
+
}
|
|
1237
|
+
});
|
|
1238
|
+
}
|
|
1239
|
+
async queryGetDynamicFields(input) {
|
|
1240
|
+
return this.queryClient.fetchQuery({
|
|
1241
|
+
queryKey: queryKeys.rpc.getDynamicFields(input),
|
|
1242
|
+
queryFn: async () => {
|
|
1243
|
+
return await callWithRateLimit(
|
|
1244
|
+
this.tokenBucket,
|
|
1245
|
+
() => this.client.getDynamicFields(input)
|
|
1246
|
+
);
|
|
1247
|
+
}
|
|
1248
|
+
});
|
|
1468
1249
|
}
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
this.tokensPerInterval = tokensPerInterval;
|
|
1480
|
-
this.interval = intervalInMs;
|
|
1481
|
-
this.tokens = tokensPerInterval;
|
|
1482
|
-
this.lastRefill = Date.now();
|
|
1250
|
+
async queryGetDynamicFieldObject(input) {
|
|
1251
|
+
return this.queryClient.fetchQuery({
|
|
1252
|
+
queryKey: queryKeys.rpc.getDynamicFieldObject(input),
|
|
1253
|
+
queryFn: async () => {
|
|
1254
|
+
return await callWithRateLimit(
|
|
1255
|
+
this.tokenBucket,
|
|
1256
|
+
() => this.client.getDynamicFieldObject(input)
|
|
1257
|
+
);
|
|
1258
|
+
}
|
|
1259
|
+
});
|
|
1483
1260
|
}
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1261
|
+
async queryGetAllCoinBalances(owner) {
|
|
1262
|
+
return this.queryClient.fetchQuery({
|
|
1263
|
+
queryKey: queryKeys.rpc.getAllCoinBalances(owner),
|
|
1264
|
+
queryFn: async () => {
|
|
1265
|
+
const allBalances = await callWithRateLimit(
|
|
1266
|
+
this.tokenBucket,
|
|
1267
|
+
() => this.client.getAllBalances({ owner })
|
|
1268
|
+
);
|
|
1269
|
+
if (!allBalances)
|
|
1270
|
+
return {};
|
|
1271
|
+
const balances = allBalances.reduce(
|
|
1272
|
+
(acc, coinBalance) => {
|
|
1273
|
+
if (coinBalance.totalBalance !== "0") {
|
|
1274
|
+
acc[(0, import_sui_kit.normalizeStructTag)(coinBalance.coinType)] = coinBalance.totalBalance;
|
|
1275
|
+
}
|
|
1276
|
+
return acc;
|
|
1277
|
+
},
|
|
1278
|
+
{}
|
|
1279
|
+
);
|
|
1280
|
+
return balances;
|
|
1281
|
+
}
|
|
1282
|
+
});
|
|
1492
1283
|
}
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
return true;
|
|
1498
|
-
}
|
|
1499
|
-
return false;
|
|
1284
|
+
async queryGetCoinBalance(input) {
|
|
1285
|
+
if (!input.coinType)
|
|
1286
|
+
return "0";
|
|
1287
|
+
return (await this.queryGetAllCoinBalances(input.owner) || {})[(0, import_sui_kit.normalizeStructTag)(input.coinType)] ?? "0";
|
|
1500
1288
|
}
|
|
1501
1289
|
};
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1290
|
+
|
|
1291
|
+
// src/models/scallopAddress.ts
|
|
1292
|
+
var import_axios = __toESM(require("axios"));
|
|
1293
|
+
|
|
1294
|
+
// src/constants/testAddress.ts
|
|
1295
|
+
var TEST_ADDRESSES = {
|
|
1296
|
+
core: {
|
|
1297
|
+
// version:
|
|
1298
|
+
// '0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7',
|
|
1299
|
+
version: "0x6156d5cd1538bec8a167a40fe1209a4ec9cf8137921fe0a697f191ac561f0b09",
|
|
1300
|
+
versionCap: "0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",
|
|
1301
|
+
// object:
|
|
1302
|
+
// '0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf',
|
|
1303
|
+
object: "0x87ddec2984645dbbe2403a509cc6edf393a43acdba9b77d45da2bcbefcf733c1",
|
|
1304
|
+
// market:
|
|
1305
|
+
// '0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9',
|
|
1306
|
+
market: "0x8606ed145cc887985b8ed793f7753ff5dc762a42c379dac035f568e1bac58490",
|
|
1307
|
+
adminCap: "0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",
|
|
1308
|
+
coinDecimalsRegistry: "0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",
|
|
1309
|
+
// obligationAccessStore:
|
|
1310
|
+
// '0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9',
|
|
1311
|
+
obligationAccessStore: "0x48b472d68ca910c45f7f3b6c26836b6aa6d2569810d94b1b939023da05ae0a23",
|
|
1312
|
+
coins: {
|
|
1313
|
+
cetus: {
|
|
1314
|
+
id: "0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",
|
|
1315
|
+
metaData: "0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",
|
|
1316
|
+
treasury: "",
|
|
1317
|
+
oracle: {
|
|
1318
|
+
supra: "",
|
|
1319
|
+
switchboard: "",
|
|
1320
|
+
pyth: {
|
|
1321
|
+
feed: "e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",
|
|
1322
|
+
feedObject: "0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"
|
|
1323
|
+
}
|
|
1510
1324
|
}
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1325
|
+
},
|
|
1326
|
+
wapt: {
|
|
1327
|
+
id: "0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",
|
|
1328
|
+
metaData: "0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",
|
|
1329
|
+
treasury: "",
|
|
1330
|
+
oracle: {
|
|
1331
|
+
supra: "",
|
|
1332
|
+
switchboard: "",
|
|
1333
|
+
pyth: {
|
|
1334
|
+
feed: "03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",
|
|
1335
|
+
feedObject: "0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"
|
|
1336
|
+
}
|
|
1337
|
+
}
|
|
1338
|
+
},
|
|
1339
|
+
wsol: {
|
|
1340
|
+
id: "0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",
|
|
1341
|
+
metaData: "0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",
|
|
1342
|
+
treasury: "",
|
|
1343
|
+
oracle: {
|
|
1344
|
+
supra: "",
|
|
1345
|
+
switchboard: "",
|
|
1346
|
+
pyth: {
|
|
1347
|
+
feed: "ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",
|
|
1348
|
+
feedObject: "0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"
|
|
1349
|
+
}
|
|
1350
|
+
}
|
|
1351
|
+
},
|
|
1352
|
+
wbtc: {
|
|
1353
|
+
id: "0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",
|
|
1354
|
+
metaData: "0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",
|
|
1355
|
+
treasury: "",
|
|
1356
|
+
oracle: {
|
|
1357
|
+
supra: "",
|
|
1358
|
+
switchboard: "",
|
|
1359
|
+
pyth: {
|
|
1360
|
+
feed: "e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
|
|
1361
|
+
feedObject: "0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"
|
|
1362
|
+
}
|
|
1363
|
+
}
|
|
1364
|
+
},
|
|
1365
|
+
weth: {
|
|
1366
|
+
id: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
|
|
1367
|
+
metaData: "0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",
|
|
1368
|
+
treasury: "",
|
|
1369
|
+
oracle: {
|
|
1370
|
+
supra: "",
|
|
1371
|
+
switchboard: "",
|
|
1372
|
+
pyth: {
|
|
1373
|
+
feed: "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",
|
|
1374
|
+
feedObject: "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"
|
|
1375
|
+
}
|
|
1376
|
+
}
|
|
1377
|
+
},
|
|
1378
|
+
wusdc: {
|
|
1379
|
+
id: "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",
|
|
1380
|
+
metaData: "0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",
|
|
1381
|
+
treasury: "",
|
|
1382
|
+
oracle: {
|
|
1383
|
+
supra: "",
|
|
1384
|
+
switchboard: "",
|
|
1385
|
+
pyth: {
|
|
1386
|
+
feed: "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
|
|
1387
|
+
feedObject: "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"
|
|
1388
|
+
}
|
|
1389
|
+
}
|
|
1390
|
+
},
|
|
1391
|
+
wusdt: {
|
|
1392
|
+
id: "0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",
|
|
1393
|
+
metaData: "0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",
|
|
1394
|
+
treasury: "",
|
|
1395
|
+
oracle: {
|
|
1396
|
+
supra: "",
|
|
1397
|
+
switchboard: "",
|
|
1398
|
+
pyth: {
|
|
1399
|
+
feed: "2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",
|
|
1400
|
+
feedObject: "0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"
|
|
1401
|
+
}
|
|
1402
|
+
}
|
|
1403
|
+
},
|
|
1404
|
+
sui: {
|
|
1405
|
+
id: "0x0000000000000000000000000000000000000000000000000000000000000002",
|
|
1406
|
+
metaData: "0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",
|
|
1407
|
+
treasury: "",
|
|
1408
|
+
oracle: {
|
|
1409
|
+
supra: "",
|
|
1410
|
+
switchboard: "0xbca474133638352ba83ccf7b5c931d50f764b09550e16612c9f70f1e21f3f594",
|
|
1411
|
+
pyth: {
|
|
1412
|
+
feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
1413
|
+
feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
|
|
1414
|
+
}
|
|
1415
|
+
}
|
|
1416
|
+
},
|
|
1417
|
+
afsui: {
|
|
1418
|
+
id: "0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",
|
|
1419
|
+
metaData: "0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",
|
|
1420
|
+
treasury: "",
|
|
1421
|
+
oracle: {
|
|
1422
|
+
supra: "",
|
|
1423
|
+
switchboard: "",
|
|
1424
|
+
pyth: {
|
|
1425
|
+
feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
1426
|
+
feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
|
|
1427
|
+
}
|
|
1428
|
+
}
|
|
1429
|
+
},
|
|
1430
|
+
hasui: {
|
|
1431
|
+
id: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
|
|
1432
|
+
metaData: "0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",
|
|
1433
|
+
treasury: "",
|
|
1434
|
+
oracle: {
|
|
1435
|
+
supra: "",
|
|
1436
|
+
switchboard: "",
|
|
1437
|
+
pyth: {
|
|
1438
|
+
feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
1439
|
+
feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
|
|
1440
|
+
}
|
|
1441
|
+
}
|
|
1442
|
+
},
|
|
1443
|
+
vsui: {
|
|
1444
|
+
id: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
|
|
1445
|
+
metaData: "0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",
|
|
1446
|
+
treasury: "",
|
|
1447
|
+
oracle: {
|
|
1448
|
+
supra: "",
|
|
1449
|
+
switchboard: "",
|
|
1450
|
+
pyth: {
|
|
1451
|
+
feed: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
|
|
1452
|
+
feedObject: "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"
|
|
1453
|
+
}
|
|
1454
|
+
}
|
|
1455
|
+
},
|
|
1456
|
+
sca: {
|
|
1457
|
+
id: "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
|
|
1458
|
+
metaData: "0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",
|
|
1459
|
+
treasury: "",
|
|
1460
|
+
oracle: {
|
|
1461
|
+
supra: "",
|
|
1462
|
+
switchboard: "",
|
|
1463
|
+
pyth: {
|
|
1464
|
+
feed: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
|
|
1465
|
+
feedObject: "0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"
|
|
1466
|
+
}
|
|
1521
1467
|
}
|
|
1522
1468
|
}
|
|
1523
|
-
}
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
// src/utils/indexer.ts
|
|
1537
|
-
async function callMethodWithIndexerFallback(method, context, ...args) {
|
|
1538
|
-
const indexer = args[args.length - 1];
|
|
1539
|
-
if (indexer) {
|
|
1540
|
-
try {
|
|
1541
|
-
return await method.apply(context, args);
|
|
1542
|
-
} catch (e) {
|
|
1543
|
-
console.warn(`Indexer requests failed: ${e}. Retrying without indexer..`);
|
|
1544
|
-
return await method.apply(context, [...args.slice(0, -1), false]);
|
|
1545
|
-
}
|
|
1546
|
-
}
|
|
1547
|
-
return await method.apply(context, args);
|
|
1548
|
-
}
|
|
1549
|
-
function withIndexerFallback(method) {
|
|
1550
|
-
return (...args) => {
|
|
1551
|
-
return callMethodWithIndexerFallback(method, this, ...args);
|
|
1552
|
-
};
|
|
1553
|
-
}
|
|
1554
|
-
|
|
1555
|
-
// src/models/scallopCache.ts
|
|
1556
|
-
var ScallopCache = class {
|
|
1557
|
-
constructor(suiKit, walletAddress, cacheOptions, tokenBucket, queryClient) {
|
|
1558
|
-
this.queryClient = queryClient ?? new import_query_core.QueryClient(cacheOptions ?? DEFAULT_CACHE_OPTIONS);
|
|
1559
|
-
this._suiKit = suiKit;
|
|
1560
|
-
this.tokenBucket = tokenBucket ?? new TokenBucket(DEFAULT_TOKENS_PER_INTERVAL, DEFAULT_INTERVAL_IN_MS);
|
|
1561
|
-
this.walletAddress = walletAddress ?? suiKit.currentAddress();
|
|
1562
|
-
}
|
|
1563
|
-
get suiKit() {
|
|
1564
|
-
if (!this._suiKit) {
|
|
1565
|
-
throw new Error("SuiKit instance is not initialized");
|
|
1566
|
-
}
|
|
1567
|
-
return this._suiKit;
|
|
1568
|
-
}
|
|
1569
|
-
get client() {
|
|
1570
|
-
return this.suiKit.client();
|
|
1571
|
-
}
|
|
1572
|
-
/**
|
|
1573
|
-
* @description Invalidate cache based on the refetchType parameter
|
|
1574
|
-
* @param refetchType Determines the type of queries to be refetched. Defaults to `active`.
|
|
1575
|
-
*
|
|
1576
|
-
* - `active`: Only queries that match the refetch predicate and are actively being rendered via useQuery and related functions will be refetched in the background.
|
|
1577
|
-
* - `inactive`: Only queries that match the refetch predicate and are NOT actively being rendered via useQuery and related functions will be refetched in the background.
|
|
1578
|
-
* - `all`: All queries that match the refetch predicate will be refetched in the background.
|
|
1579
|
-
* - `none`: No queries will be refetched. Queries that match the refetch predicate will only be marked as invalid.
|
|
1580
|
-
*/
|
|
1581
|
-
async invalidateAllCache() {
|
|
1582
|
-
return Object.values(queryKeys.rpc).map(
|
|
1583
|
-
(t) => this.queryClient.invalidateQueries({
|
|
1584
|
-
queryKey: t(),
|
|
1585
|
-
type: "all"
|
|
1586
|
-
})
|
|
1587
|
-
);
|
|
1588
|
-
}
|
|
1589
|
-
/**
|
|
1590
|
-
* @description Provides cache for inspectTxn of the SuiKit.
|
|
1591
|
-
* @param QueryInspectTxnParams
|
|
1592
|
-
* @param txBlock
|
|
1593
|
-
* @returns Promise<DevInspectResults>
|
|
1594
|
-
*/
|
|
1595
|
-
async queryInspectTxn({
|
|
1596
|
-
queryTarget,
|
|
1597
|
-
args,
|
|
1598
|
-
typeArgs
|
|
1599
|
-
}) {
|
|
1600
|
-
const txBlock = new import_sui_kit.SuiTxBlock();
|
|
1601
|
-
txBlock.moveCall(queryTarget, args, typeArgs);
|
|
1602
|
-
const query = await this.queryClient.fetchQuery({
|
|
1603
|
-
queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
|
|
1604
|
-
queryFn: async () => {
|
|
1605
|
-
return await callWithRateLimit(
|
|
1606
|
-
this.tokenBucket,
|
|
1607
|
-
() => this.suiKit.inspectTxn(txBlock)
|
|
1608
|
-
);
|
|
1609
|
-
}
|
|
1610
|
-
});
|
|
1611
|
-
return query;
|
|
1612
|
-
}
|
|
1613
|
-
/**
|
|
1614
|
-
* @description Provides cache for getObject of the SuiKit.
|
|
1615
|
-
* @param objectId
|
|
1616
|
-
* @param QueryObjectParams
|
|
1617
|
-
* @returns Promise<SuiObjectResponse>
|
|
1618
|
-
*/
|
|
1619
|
-
async queryGetObject(objectId, options) {
|
|
1620
|
-
return this.queryClient.fetchQuery({
|
|
1621
|
-
queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
|
|
1622
|
-
queryFn: async () => {
|
|
1623
|
-
return await callWithRateLimit(
|
|
1624
|
-
this.tokenBucket,
|
|
1625
|
-
() => this.client.getObject({
|
|
1626
|
-
id: objectId,
|
|
1627
|
-
options
|
|
1628
|
-
})
|
|
1629
|
-
);
|
|
1630
|
-
}
|
|
1631
|
-
});
|
|
1632
|
-
}
|
|
1633
|
-
/**
|
|
1634
|
-
* @description Provides cache for getObjects of the SuiKit.
|
|
1635
|
-
* @param objectIds
|
|
1636
|
-
* @returns Promise<SuiObjectData[]>
|
|
1637
|
-
*/
|
|
1638
|
-
async queryGetObjects(objectIds, options = {
|
|
1639
|
-
showContent: true
|
|
1640
|
-
}) {
|
|
1641
|
-
if (objectIds.length === 0)
|
|
1642
|
-
return [];
|
|
1643
|
-
return this.queryClient.fetchQuery({
|
|
1644
|
-
queryKey: queryKeys.rpc.getObjects(
|
|
1645
|
-
objectIds,
|
|
1646
|
-
this.walletAddress,
|
|
1647
|
-
options
|
|
1648
|
-
),
|
|
1649
|
-
queryFn: async () => {
|
|
1650
|
-
return await callWithRateLimit(
|
|
1651
|
-
this.tokenBucket,
|
|
1652
|
-
() => this.suiKit.getObjects(objectIds, options)
|
|
1653
|
-
);
|
|
1654
|
-
}
|
|
1655
|
-
});
|
|
1656
|
-
}
|
|
1657
|
-
/**
|
|
1658
|
-
* @description Provides cache for getOwnedObjects of the SuiKit.
|
|
1659
|
-
* @param input
|
|
1660
|
-
* @returns Promise<PaginatedObjectsResponse>
|
|
1661
|
-
*/
|
|
1662
|
-
async queryGetOwnedObjects(input) {
|
|
1663
|
-
return this.queryClient.fetchQuery({
|
|
1664
|
-
queryKey: queryKeys.rpc.getOwnedObjects(input),
|
|
1665
|
-
queryFn: async () => {
|
|
1666
|
-
return await callWithRateLimit(
|
|
1667
|
-
this.tokenBucket,
|
|
1668
|
-
() => this.client.getOwnedObjects(input)
|
|
1669
|
-
);
|
|
1670
|
-
}
|
|
1671
|
-
});
|
|
1672
|
-
}
|
|
1673
|
-
async queryGetDynamicFields(input) {
|
|
1674
|
-
return this.queryClient.fetchQuery({
|
|
1675
|
-
queryKey: queryKeys.rpc.getDynamicFields(input),
|
|
1676
|
-
queryFn: async () => {
|
|
1677
|
-
return await callWithRateLimit(
|
|
1678
|
-
this.tokenBucket,
|
|
1679
|
-
() => this.client.getDynamicFields(input)
|
|
1680
|
-
);
|
|
1469
|
+
},
|
|
1470
|
+
oracles: {
|
|
1471
|
+
xOracle: "0x93d5bf0936b71eb27255941e532fac33b5a5c7759e377b4923af0a1359ad494f",
|
|
1472
|
+
xOracleCap: "0x1edeae568fde99e090dbdec4bcdbd33a15f53a1ce1f87aeef1a560dedf4b4a90",
|
|
1473
|
+
supra: { registry: "", registryCap: "", holder: "" },
|
|
1474
|
+
switchboard: { registry: "", registryCap: "" },
|
|
1475
|
+
pyth: {
|
|
1476
|
+
registry: "0xedc293f9413a5a7a5d53bdba1fd889d0a4030894469228f0acdae4aa3c55a213",
|
|
1477
|
+
registryCap: "0xbcb07141eb1f7e01fbda4130ecf5f5adaeabb77f5d9c32158b7532bcd2197acd",
|
|
1478
|
+
state: "0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",
|
|
1479
|
+
wormhole: "0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",
|
|
1480
|
+
wormholeState: "0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"
|
|
1681
1481
|
}
|
|
1682
|
-
}
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1482
|
+
},
|
|
1483
|
+
packages: {
|
|
1484
|
+
coinDecimalsRegistry: {
|
|
1485
|
+
id: "0xca5a5a62f01c79a104bf4d31669e29daa387f325c241de4edbe30986a9bc8b0d",
|
|
1486
|
+
upgradeCap: "0x34e76a945d29f195bc53ca704fa70877d1cf3a5d7bbfdda1b13e633fff13c0f6"
|
|
1487
|
+
},
|
|
1488
|
+
math: {
|
|
1489
|
+
id: "0xad013d5fde39e15eabda32b3dbdafd67dac32b798ce63237c27a8f73339b9b6f",
|
|
1490
|
+
upgradeCap: "0x3a329598231de02e6135c62284b66005b41cad1d9ab7ca2dc79c08293aba2ec6"
|
|
1491
|
+
},
|
|
1492
|
+
whitelist: {
|
|
1493
|
+
id: "0x1318fdc90319ec9c24df1456d960a447521b0a658316155895014a6e39b5482f",
|
|
1494
|
+
upgradeCap: "0xf5a22aea23db664f7b69855b6a546747f17c1ec4230319cfc17225e462b05761"
|
|
1495
|
+
},
|
|
1496
|
+
x: {
|
|
1497
|
+
id: "0x779b5c547976899f5474f3a5bc0db36ddf4697ad7e5a901db0415c2281d28162",
|
|
1498
|
+
upgradeCap: "0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"
|
|
1499
|
+
},
|
|
1500
|
+
protocol: {
|
|
1501
|
+
id: "0x87ddec2984645dbbe2403a509cc6edf393a43acdba9b77d45da2bcbefcf733c1",
|
|
1502
|
+
upgradeCap: "0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"
|
|
1503
|
+
},
|
|
1504
|
+
// protocol: {
|
|
1505
|
+
// id: '0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e',
|
|
1506
|
+
// upgradeCap:
|
|
1507
|
+
// '0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a',
|
|
1508
|
+
// },
|
|
1509
|
+
protocolWhitelist: {
|
|
1510
|
+
id: "0x4c262d9343dac53ecb28f482a2a3f62c73d0ebac5b5f03d57383d56ff219acdf",
|
|
1511
|
+
upgradeCap: "0x4a5e88a75039b00988f633f811f58117f31b8627a46bf822aa114d9010049449"
|
|
1512
|
+
},
|
|
1513
|
+
// query: {
|
|
1514
|
+
// id: '0xb8d603a39114a5efef3dd0bf84df0bed1be1fbd39b78b7dd6e8a61ccc5e6006f',
|
|
1515
|
+
// upgradeCap:
|
|
1516
|
+
// '0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f',
|
|
1517
|
+
// },
|
|
1518
|
+
query: {
|
|
1519
|
+
id: "0xe4f9d62d17746d5b9dbf0d5557747430021a71575780b515161210cdba0a4c1c",
|
|
1520
|
+
upgradeCap: "0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"
|
|
1521
|
+
},
|
|
1522
|
+
supra: { id: "", upgradeCap: "" },
|
|
1523
|
+
pyth: {
|
|
1524
|
+
id: "0x910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a",
|
|
1525
|
+
upgradeCap: "0xdf0ffbae1ea5bb25fbca5efba433dcf00c7cced65679af2f04728901275c6157"
|
|
1526
|
+
},
|
|
1527
|
+
switchboard: { id: "", upgradeCap: "" },
|
|
1528
|
+
xOracle: {
|
|
1529
|
+
id: "0x1478a432123e4b3d61878b629f2c692969fdb375644f1251cd278a4b1e7d7cd6",
|
|
1530
|
+
upgradeCap: "0x0f928a6b2e26b73330fecaf9b44acfc9800a4a9794d6415c2a3153bc70e3c1f0"
|
|
1531
|
+
},
|
|
1532
|
+
testCoin: { id: "", upgradeCap: "" }
|
|
1533
|
+
}
|
|
1534
|
+
},
|
|
1535
|
+
spool: {
|
|
1536
|
+
// id: '0x7c4fdabe81c31b19a45d1e572a52a539997a90903fbb5bfab71480abe0fa62c3',
|
|
1537
|
+
id: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
|
|
1538
|
+
adminCap: "0xdd8a047cbbf802bfcde5288b8ef1910965d789cc614da11d39af05fca0bd020a",
|
|
1539
|
+
// object:
|
|
1540
|
+
// '0xe87f1b2d498106a2c61421cec75b7b5c5e348512b0dc263949a0e7a3c256571a',
|
|
1541
|
+
object: "0x1742655fe5872dfa6456673f9e38612a4965e6979e6cd7696a7f1225f28bae21",
|
|
1542
|
+
pools: {
|
|
1543
|
+
sweth: {
|
|
1544
|
+
id: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
|
|
1545
|
+
rewardPoolId: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"
|
|
1546
|
+
},
|
|
1547
|
+
ssui: {
|
|
1548
|
+
// id: '0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4',
|
|
1549
|
+
id: "0xb9617f83c06ebdeac0a8834782b1015e1cc7ea23739e30c132c4bfb95c37a579",
|
|
1550
|
+
rewardPoolId: (
|
|
1551
|
+
// '0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9',
|
|
1552
|
+
"0xc3206071a8d43212efb6e3b5504f2321f8df97ab122b466c0bc7cfdf398dc13a"
|
|
1553
|
+
)
|
|
1554
|
+
},
|
|
1555
|
+
swusdc: {
|
|
1556
|
+
// id: '0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0',
|
|
1557
|
+
id: "0xf1b383b9cf2e9f515fc69567df1053098f273849d09cd84b0278a773429bd2b2",
|
|
1558
|
+
rewardPoolId: (
|
|
1559
|
+
// '0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8',
|
|
1560
|
+
"0xc71c53ee6505d928ba15bea4fe4f45d98c9c31eced94b72d00a7827d4b7ba3ff"
|
|
1561
|
+
)
|
|
1562
|
+
},
|
|
1563
|
+
swusdt: {
|
|
1564
|
+
// id: '0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f',
|
|
1565
|
+
id: "0xb5567dfa5c7fc17a249e959732664c50713dd8c23db1a11376b27df800c17418",
|
|
1566
|
+
rewardPoolId: (
|
|
1567
|
+
// '0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080',
|
|
1568
|
+
"0x60768b0687ff0235e376a039709a683e4c436098785e473b67b32dbab47b69ab"
|
|
1569
|
+
)
|
|
1570
|
+
},
|
|
1571
|
+
scetus: {
|
|
1572
|
+
id: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
|
|
1573
|
+
rewardPoolId: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"
|
|
1574
|
+
},
|
|
1575
|
+
safsui: {
|
|
1576
|
+
// id: '0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800',
|
|
1577
|
+
id: "0xc568bb4c991258e839aa54802ecda04fcd9838c826bc3b42b40af81b23c458c8",
|
|
1578
|
+
rewardPoolId: (
|
|
1579
|
+
// '0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e',
|
|
1580
|
+
"0x389a3cbeda742b918941bb24fd00e077bad3367484394d6234f8209b9a6aa03d"
|
|
1581
|
+
)
|
|
1582
|
+
},
|
|
1583
|
+
shasui: {
|
|
1584
|
+
// id: '0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa',
|
|
1585
|
+
id: "0x93f3f4499bf89f2d05ddc1f8b15f51701a7c6c4d0ac0b9c3bc99462cbbd8e321",
|
|
1586
|
+
rewardPoolId: (
|
|
1587
|
+
// '0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66',
|
|
1588
|
+
"0x94cee1be7f5ff34193f3aabef0b14142cb28af4d905fe487a9a7d85a15edb6aa"
|
|
1589
|
+
)
|
|
1590
|
+
},
|
|
1591
|
+
svsui: {
|
|
1592
|
+
// id: '0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670',
|
|
1593
|
+
id: "0xa970e9087f80cb59e9299b8e7af7175d977ad6c9af0322aa4440e138fbd7ae00",
|
|
1594
|
+
rewardPoolId: (
|
|
1595
|
+
// '0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a',
|
|
1596
|
+
"0x38eee9699c4fc132a6623e54b865f047df4fc6eb83af807300f44e8f4b235ff0"
|
|
1597
|
+
)
|
|
1692
1598
|
}
|
|
1693
|
-
}
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1599
|
+
},
|
|
1600
|
+
config: ""
|
|
1601
|
+
},
|
|
1602
|
+
borrowIncentive: {
|
|
1603
|
+
id: "0x6152f696fc3a658f33c4b891764731a59153125ffedfa8bff7167c42823f58a9",
|
|
1604
|
+
adminCap: "0xc486afa253646f4d381e81d7f1df8aa4723b845a6bb356f69bad635ffefffe2c",
|
|
1605
|
+
object: "0x002875153e09f8145ab63527bc85c00f2bd102e12f9573c47f8cdf1a1cb62934",
|
|
1606
|
+
query: "0x529edc54a3dce2207703ceebbccb0ac14133f7825c1f528775ba0d85a4063489",
|
|
1607
|
+
incentivePools: "0x6547e143d406b5ccd5f46aae482497de279cc1a68c406f701df70a05f9212ab4",
|
|
1608
|
+
incentiveAccounts: "0xc4701fdbc1c92f9a636d334d66012b3027659e9fb8aff27279a82edfb6b77d02",
|
|
1609
|
+
config: "0xdf5d04b4691cc67e82fd4db8394d89ff44823a9de29716c924f74bb4f11cc1f7"
|
|
1610
|
+
},
|
|
1611
|
+
referral: {
|
|
1612
|
+
id: "0xa3654ebb63eb06c0f4ff52f8aa6512df9f164f7772bdf15dac3709bd3798dda9",
|
|
1613
|
+
object: "0x5658d4bf5ddcba27e4337b4262108b3ad1716643cac8c2054ac341538adc72ec",
|
|
1614
|
+
adminCap: "0xc5dc06b9074291259f2cac460c940012c781c4430e42125c541cc43101c3bcbd",
|
|
1615
|
+
referralBindings: "0xf63299d58789d99de94092b9011323466e55ca0c1ea1a7a3786a589af46e1c09",
|
|
1616
|
+
bindingTableId: "0x1c8202b17267ec8d6cf97ca013615354181a04f179570e42601ff2dae19294b1",
|
|
1617
|
+
referralRevenuePool: "0x6abd852caf90769c1b185cdf636d841673fa95528f0550f018b8a138bd283c07",
|
|
1618
|
+
revenueTableId: "0x595baa3654c297bff84ab7786a2d250f019cefc66e8df8e89fd9d41e02bd30dd",
|
|
1619
|
+
referralTiers: "0x962cb903d8d7346190c5204785ccbb91b61086aa764f674c8145df82335cf83e",
|
|
1620
|
+
tiersTableId: "0xeac755a7a8b7798530905ac79e8c114f19d0f130f6eab012954f08faac29c75d",
|
|
1621
|
+
// authorizedWitnessList:
|
|
1622
|
+
// '0xf21b0ed043c9bb70842c0129159f4943dbcc3c9ef2f2f808af65f8be25cfd20e',
|
|
1623
|
+
authorizedWitnessList: "0x9d6223dc52015b8a3986a573590ef2af8f1b8f3e4685513888c052f001b87e7f",
|
|
1624
|
+
version: "0x1bd4b7285f72e11c316b828c7c47b3f4da18dcec9f9b3dba6d8629cbb6f93e5e"
|
|
1625
|
+
},
|
|
1626
|
+
vesca: {
|
|
1627
|
+
id: "0xb15b6e0cdd85afb5028bea851dd249405e734d800a259147bbc24980629723a4",
|
|
1628
|
+
object: "0xb15b6e0cdd85afb5028bea851dd249405e734d800a259147bbc24980629723a4",
|
|
1629
|
+
adminCap: "0x8ffa76135c5b85c5fbd73a6448a4a733d826cb63a267ab817656acb77c72d4a5",
|
|
1630
|
+
tableId: "0xe3153b2bf124be0b86cb8bd468346a861efd0da52fc42197b54d2f616488a311",
|
|
1631
|
+
table: "0x611cb8d9d4d90867467b5ebdf4cc447a0047ed5b01334a28a29fcfe733e3d609",
|
|
1632
|
+
treasury: "0xe8c112c09b88158dc6c8e23d1fbae5b3c7136cdee54b7dafc08e65db28c4a5bc",
|
|
1633
|
+
config: "0xe0a2ff281e73c1d53cfa85807080f87e833e4f1a7f93dcf8800b3865269a76b9"
|
|
1634
|
+
},
|
|
1635
|
+
loyaltyProgram: {
|
|
1636
|
+
id: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
|
|
1637
|
+
object: "0xd17bcf8b5a59652c36225d478564a8593ae0ed7d650bcacdda1d6fe179127907",
|
|
1638
|
+
rewardPool: "0xf9c090492ef476bd542109d0913ffe871cbfa28578b7114eca2a8c0e5671786f",
|
|
1639
|
+
userRewardTableId: "0x748a80395849ed37db1b0e14f2ab5d1d96458d2359ab3a84eb079d0f4ac7cf2e"
|
|
1640
|
+
},
|
|
1641
|
+
scoin: {
|
|
1642
|
+
id: "0xad2ca2aa5089df94bb2d444d5eb3520378c2f2dfb3a0bd2a2c994145ac4b0a53",
|
|
1643
|
+
coins: {
|
|
1644
|
+
ssui: {
|
|
1645
|
+
coinType: "0xfac769100bccc0caebcf4f4e2d00ac2f8883f07f724be28940df90605f5e7e9a::scallop_sui::SCALLOP_SUI",
|
|
1646
|
+
treasury: "0x9cb4551b36c17d37e19d700147fa819ea1c487ff8bcf18374de2cceb2e9d4845"
|
|
1647
|
+
},
|
|
1648
|
+
scetus: {
|
|
1649
|
+
coinType: "0x8b71e6d323ed78515af2bead13bf3d0da1562ba4a99234eb7c4f14fd39ef0427::scallop_cetus::SCALLOP_CETUS",
|
|
1650
|
+
treasury: "0xd786f4b2d26278cc7911a3445b1b085eab60f269ef9dbb6b87e803d52f155003"
|
|
1651
|
+
},
|
|
1652
|
+
ssca: {
|
|
1653
|
+
coinType: "0x0a9d3c6c9af9f6e8def82921541bcbd17f73ed31bed3adcb684f2a4c267e42f0::scallop_sca::SCALLOP_SCA",
|
|
1654
|
+
treasury: "0xe818636d1d6c46d6ea1a2dce9d94696d7cbc18ce27451b603eeaa47aba8d75e0"
|
|
1655
|
+
},
|
|
1656
|
+
swusdc: {
|
|
1657
|
+
coinType: "0xaedc3ab75db8680b81a755015fa90124d217be93457b893c05bac033817defaf::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
|
|
1658
|
+
treasury: "0xfc6971648f867f7fd6928d1b873af71577e2eaf2c7543ef8bc82c431d833ae78"
|
|
1659
|
+
},
|
|
1660
|
+
swusdt: {
|
|
1661
|
+
coinType: "0xbf02fc87ddc104b342ad8414c85ceadf5b0c823c055a06fb0ed776272c01a52a::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
|
|
1662
|
+
treasury: "0xb9593e2c3a0ba796ee815012b75ae46468ea78cda0188b9ac6816efe65503521"
|
|
1663
|
+
},
|
|
1664
|
+
sweth: {
|
|
1665
|
+
coinType: "0x27d54f43e3eda701be56b82e5756e41c84467cd202f5cf713d5f9e45a9f1b6bc::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
|
|
1666
|
+
treasury: "0x032b4c8fac94c038dbe986f7587e9b1e4ef580b5ee06d2ef249d85459b7ef05d"
|
|
1667
|
+
},
|
|
1668
|
+
safsui: {
|
|
1669
|
+
coinType: "0xb75b46d975d8d80670b53a6bee90baaa8ce2e0b7d397f079447d641eef6b44ad::scallop_af_sui::SCALLOP_AF_SUI",
|
|
1670
|
+
treasury: "0x21450ef0570ef3d224ffa3b873ab802e439ece7b93cc7efad10ae0c1e3b3fcfe"
|
|
1671
|
+
},
|
|
1672
|
+
shasui: {
|
|
1673
|
+
coinType: "0xd973a723874e2c7cde196602a79155a1343a933f8cf87d9b1bb7408bc1acbc58::scallop_ha_sui::SCALLOP_HA_SUI",
|
|
1674
|
+
treasury: "0xf822fc1402207e47d2e3ba8ff6e1e594bf1de777dc5ebd2744619cd2726e3b0d"
|
|
1675
|
+
},
|
|
1676
|
+
svsui: {
|
|
1677
|
+
coinType: "0x97023a317320c4498cc4cd239dd02fd30c28246e5e8f81325d63f2bd8d70f6b3::scallop_v_sui::SCALLOP_V_SUI",
|
|
1678
|
+
treasury: "0x327114f0bf3559d7e2de10282147ed76a236c7c6775029165c4db09a6062ead6\u0192"
|
|
1715
1679
|
}
|
|
1716
|
-
}
|
|
1717
|
-
}
|
|
1718
|
-
async queryGetCoinBalance(input) {
|
|
1719
|
-
if (!input.coinType)
|
|
1720
|
-
return "0";
|
|
1721
|
-
return (await this.queryGetAllCoinBalances(input.owner) || {})[(0, import_sui_kit.normalizeStructTag)(input.coinType)] ?? "0";
|
|
1680
|
+
}
|
|
1722
1681
|
}
|
|
1723
1682
|
};
|
|
1724
1683
|
|
|
1725
1684
|
// src/models/scallopAddress.ts
|
|
1726
|
-
var import_axios = __toESM(require("axios"));
|
|
1727
1685
|
var EMPTY_ADDRESSES = {
|
|
1728
1686
|
core: {
|
|
1729
1687
|
version: "",
|
|
@@ -2369,153 +2327,70 @@ var ScallopAddress = class {
|
|
|
2369
2327
|
headers: {
|
|
2370
2328
|
"Content-Type": "application/json",
|
|
2371
2329
|
"api-key": auth || this._auth
|
|
2372
|
-
}
|
|
2373
|
-
}
|
|
2374
|
-
);
|
|
2375
|
-
if (response.status === 200) {
|
|
2376
|
-
this._id = void 0;
|
|
2377
|
-
this._currentAddresses = void 0;
|
|
2378
|
-
this._addressesMap.clear();
|
|
2379
|
-
} else {
|
|
2380
|
-
throw Error("Failed to delete addresses.");
|
|
2381
|
-
}
|
|
2382
|
-
} else {
|
|
2383
|
-
throw Error("You don't have permission to access this request.");
|
|
2384
|
-
}
|
|
2385
|
-
}
|
|
2386
|
-
};
|
|
2387
|
-
|
|
2388
|
-
// src/models/scallopClient.ts
|
|
2389
|
-
var import_utils25 = require("@mysten/sui/utils");
|
|
2390
|
-
var import_sui_kit15 = require("@scallop-io/sui-kit");
|
|
2391
|
-
|
|
2392
|
-
// src/models/scallopUtils.ts
|
|
2393
|
-
var import_utils10 = require("@mysten/sui/utils");
|
|
2394
|
-
var import_sui_kit4 = require("@scallop-io/sui-kit");
|
|
2395
|
-
var import_pyth_sui_js = require("@pythnetwork/pyth-sui-js");
|
|
2396
|
-
|
|
2397
|
-
// src/queries/coreQuery.ts
|
|
2398
|
-
var import_utils3 = require("@mysten/sui/utils");
|
|
2399
|
-
var import_bignumber2 = __toESM(require("bignumber.js"));
|
|
2400
|
-
|
|
2401
|
-
// src/queries/supplyLimit.ts
|
|
2402
|
-
var import_zod = require("zod");
|
|
2403
|
-
var supplyLimitZod = import_zod.z.object({
|
|
2404
|
-
dataType: import_zod.z.string(),
|
|
2405
|
-
type: import_zod.z.string(),
|
|
2406
|
-
hasPublicTransfer: import_zod.z.boolean(),
|
|
2407
|
-
fields: import_zod.z.object({
|
|
2408
|
-
id: import_zod.z.object({
|
|
2409
|
-
id: import_zod.z.string()
|
|
2410
|
-
}),
|
|
2411
|
-
name: import_zod.z.object({
|
|
2412
|
-
type: import_zod.z.string()
|
|
2413
|
-
}),
|
|
2414
|
-
value: import_zod.z.string()
|
|
2415
|
-
})
|
|
2416
|
-
});
|
|
2417
|
-
var SUPPLY_LIMIT_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey";
|
|
2418
|
-
var getSupplyLimit = async (utils, poolName) => {
|
|
2419
|
-
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
2420
|
-
const marketObject = utils.address.get("core.market");
|
|
2421
|
-
if (!marketObject)
|
|
2422
|
-
return null;
|
|
2423
|
-
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2424
|
-
parentId: marketObject,
|
|
2425
|
-
name: {
|
|
2426
|
-
type: SUPPLY_LIMIT_KEY,
|
|
2427
|
-
value: poolCoinType
|
|
2428
|
-
}
|
|
2429
|
-
});
|
|
2430
|
-
const parsedData = supplyLimitZod.safeParse(object?.data?.content);
|
|
2431
|
-
if (!parsedData.success)
|
|
2432
|
-
return null;
|
|
2433
|
-
return parsedData.data.fields.value;
|
|
2434
|
-
};
|
|
2435
|
-
|
|
2436
|
-
// src/queries/isolatedAsset.ts
|
|
2437
|
-
var import_zod2 = require("zod");
|
|
2438
|
-
var isolatedAssetZod = import_zod2.z.object({
|
|
2439
|
-
dataType: import_zod2.z.string(),
|
|
2440
|
-
type: import_zod2.z.string(),
|
|
2441
|
-
hasPublicTransfer: import_zod2.z.boolean(),
|
|
2442
|
-
fields: import_zod2.z.object({
|
|
2443
|
-
id: import_zod2.z.object({
|
|
2444
|
-
id: import_zod2.z.string()
|
|
2445
|
-
}),
|
|
2446
|
-
name: import_zod2.z.object({
|
|
2447
|
-
type: import_zod2.z.string()
|
|
2448
|
-
}),
|
|
2449
|
-
value: import_zod2.z.boolean()
|
|
2450
|
-
})
|
|
2451
|
-
});
|
|
2452
|
-
var getIsolatedAssets = async (address) => {
|
|
2453
|
-
try {
|
|
2454
|
-
const marketObject = address.get("core.market");
|
|
2455
|
-
const protocolObject = address.get("core.packages.protocol.id");
|
|
2456
|
-
const ISOLATED_ASSET_KEY = `${protocolObject}::market_dynamic_keys::IsolatedAssetKey`;
|
|
2457
|
-
const isolatedAssets = [];
|
|
2458
|
-
if (!marketObject)
|
|
2459
|
-
return isolatedAssets;
|
|
2460
|
-
let hasNextPage = false;
|
|
2461
|
-
let nextCursor = null;
|
|
2462
|
-
const isIsolatedDynamicField = (dynamicField) => {
|
|
2463
|
-
return dynamicField.name.type === ISOLATED_ASSET_KEY;
|
|
2464
|
-
};
|
|
2465
|
-
do {
|
|
2466
|
-
const response = await address.cache.queryGetDynamicFields({
|
|
2467
|
-
parentId: marketObject,
|
|
2468
|
-
cursor: nextCursor,
|
|
2469
|
-
limit: 10
|
|
2470
|
-
});
|
|
2471
|
-
if (!response)
|
|
2472
|
-
break;
|
|
2473
|
-
const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
|
|
2474
|
-
isolatedAssets.push(...isolatedAssetCoinTypes);
|
|
2475
|
-
if (response && response.hasNextPage && response.nextCursor) {
|
|
2476
|
-
hasNextPage = true;
|
|
2477
|
-
nextCursor = response.nextCursor;
|
|
2478
|
-
} else {
|
|
2479
|
-
hasNextPage = false;
|
|
2480
|
-
}
|
|
2481
|
-
} while (hasNextPage);
|
|
2482
|
-
return isolatedAssets;
|
|
2483
|
-
} catch (e) {
|
|
2484
|
-
console.error(e);
|
|
2485
|
-
return [];
|
|
2486
|
-
}
|
|
2487
|
-
};
|
|
2488
|
-
var isIsolatedAsset = async (utils, coinName) => {
|
|
2489
|
-
try {
|
|
2490
|
-
const marketObject = utils.address.get("core.market");
|
|
2491
|
-
const protocolObject = utils.address.get("core.packages.protocol.id");
|
|
2492
|
-
const ISOLATED_ASSET_KEY = `${protocolObject}::market_dynamic_keys::IsolatedAssetKey`;
|
|
2493
|
-
const cachedData = utils.address.cache.queryClient.getQueryData([
|
|
2494
|
-
"getDynamicFields",
|
|
2495
|
-
marketObject
|
|
2496
|
-
]);
|
|
2497
|
-
if (cachedData) {
|
|
2498
|
-
const coinType2 = utils.parseCoinType(coinName);
|
|
2499
|
-
return cachedData.includes(coinType2);
|
|
2500
|
-
}
|
|
2501
|
-
const coinType = utils.parseCoinType(coinName).slice(2);
|
|
2502
|
-
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2503
|
-
parentId: marketObject,
|
|
2504
|
-
name: {
|
|
2505
|
-
type: ISOLATED_ASSET_KEY,
|
|
2506
|
-
value: coinType
|
|
2330
|
+
}
|
|
2331
|
+
}
|
|
2332
|
+
);
|
|
2333
|
+
if (response.status === 200) {
|
|
2334
|
+
this._id = void 0;
|
|
2335
|
+
this._currentAddresses = void 0;
|
|
2336
|
+
this._addressesMap.clear();
|
|
2337
|
+
} else {
|
|
2338
|
+
throw Error("Failed to delete addresses.");
|
|
2507
2339
|
}
|
|
2508
|
-
}
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
return false;
|
|
2512
|
-
return parsedData.data.fields.value;
|
|
2513
|
-
} catch (e) {
|
|
2514
|
-
console.error(e);
|
|
2515
|
-
return false;
|
|
2340
|
+
} else {
|
|
2341
|
+
throw Error("You don't have permission to access this request.");
|
|
2342
|
+
}
|
|
2516
2343
|
}
|
|
2517
2344
|
};
|
|
2518
2345
|
|
|
2346
|
+
// src/models/scallopClient.ts
|
|
2347
|
+
var import_utils25 = require("@mysten/sui/utils");
|
|
2348
|
+
var import_sui_kit15 = require("@scallop-io/sui-kit");
|
|
2349
|
+
|
|
2350
|
+
// src/models/scallopUtils.ts
|
|
2351
|
+
var import_utils10 = require("@mysten/sui/utils");
|
|
2352
|
+
var import_sui_kit4 = require("@scallop-io/sui-kit");
|
|
2353
|
+
var import_pyth_sui_js = require("@pythnetwork/pyth-sui-js");
|
|
2354
|
+
|
|
2355
|
+
// src/queries/coreQuery.ts
|
|
2356
|
+
var import_utils3 = require("@mysten/sui/utils");
|
|
2357
|
+
var import_bignumber2 = __toESM(require("bignumber.js"));
|
|
2358
|
+
|
|
2359
|
+
// src/queries/supplyLimit.ts
|
|
2360
|
+
var import_zod = require("zod");
|
|
2361
|
+
var supplyLimitZod = import_zod.z.object({
|
|
2362
|
+
dataType: import_zod.z.string(),
|
|
2363
|
+
type: import_zod.z.string(),
|
|
2364
|
+
hasPublicTransfer: import_zod.z.boolean(),
|
|
2365
|
+
fields: import_zod.z.object({
|
|
2366
|
+
id: import_zod.z.object({
|
|
2367
|
+
id: import_zod.z.string()
|
|
2368
|
+
}),
|
|
2369
|
+
name: import_zod.z.object({
|
|
2370
|
+
type: import_zod.z.string()
|
|
2371
|
+
}),
|
|
2372
|
+
value: import_zod.z.string()
|
|
2373
|
+
})
|
|
2374
|
+
});
|
|
2375
|
+
var SUPPLY_LIMIT_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey";
|
|
2376
|
+
var getSupplyLimit = async (utils, poolName) => {
|
|
2377
|
+
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
2378
|
+
const marketObject = utils.address.get("core.market");
|
|
2379
|
+
if (!marketObject)
|
|
2380
|
+
return null;
|
|
2381
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2382
|
+
parentId: marketObject,
|
|
2383
|
+
name: {
|
|
2384
|
+
type: SUPPLY_LIMIT_KEY,
|
|
2385
|
+
value: poolCoinType
|
|
2386
|
+
}
|
|
2387
|
+
});
|
|
2388
|
+
const parsedData = supplyLimitZod.safeParse(object?.data?.content);
|
|
2389
|
+
if (!parsedData.success)
|
|
2390
|
+
return null;
|
|
2391
|
+
return parsedData.data.fields.value;
|
|
2392
|
+
};
|
|
2393
|
+
|
|
2519
2394
|
// src/queries/coreQuery.ts
|
|
2520
2395
|
var queryMarket = async (query, indexer = false) => {
|
|
2521
2396
|
const coinPrices = await query.utils.getCoinPrices();
|
|
@@ -2600,8 +2475,8 @@ var queryMarket = async (query, indexer = false) => {
|
|
|
2600
2475
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
2601
2476
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2602
2477
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2603
|
-
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2604
|
-
|
|
2478
|
+
// isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2479
|
+
isIsolated: false,
|
|
2605
2480
|
maxSupplyCoin,
|
|
2606
2481
|
...calculatedMarketPoolData
|
|
2607
2482
|
};
|
|
@@ -2640,7 +2515,6 @@ var queryMarket = async (query, indexer = false) => {
|
|
|
2640
2515
|
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
2641
2516
|
liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
|
|
2642
2517
|
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
2643
|
-
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
2644
2518
|
...calculatedMarketCollateralData
|
|
2645
2519
|
};
|
|
2646
2520
|
}
|
|
@@ -2688,73 +2562,79 @@ var getMarketPools = async (query, poolCoinNames = [...SUPPORT_POOLS], indexer =
|
|
|
2688
2562
|
return marketPools;
|
|
2689
2563
|
};
|
|
2690
2564
|
var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
2695
|
-
|
|
2696
|
-
|
|
2697
|
-
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
|
|
2702
|
-
|
|
2703
|
-
|
|
2704
|
-
|
|
2705
|
-
|
|
2706
|
-
|
|
2707
|
-
|
|
2708
|
-
|
|
2709
|
-
|
|
2710
|
-
|
|
2711
|
-
|
|
2712
|
-
|
|
2713
|
-
|
|
2714
|
-
|
|
2715
|
-
|
|
2565
|
+
let marketPool;
|
|
2566
|
+
let balanceSheet;
|
|
2567
|
+
let borrowIndex;
|
|
2568
|
+
let interestModel;
|
|
2569
|
+
let borrowFeeRate;
|
|
2570
|
+
coinPrice = coinPrice || (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
|
|
2571
|
+
if (indexer) {
|
|
2572
|
+
const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
|
|
2573
|
+
marketPoolIndexer.coinPrice = coinPrice || marketPoolIndexer.coinPrice;
|
|
2574
|
+
marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
|
|
2575
|
+
marketPoolIndexer.coinName
|
|
2576
|
+
);
|
|
2577
|
+
return marketPoolIndexer;
|
|
2578
|
+
}
|
|
2579
|
+
const marketId = query.address.get("core.market");
|
|
2580
|
+
marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
|
|
2581
|
+
showContent: true
|
|
2582
|
+
}))?.data;
|
|
2583
|
+
if (marketObject) {
|
|
2584
|
+
if (marketObject.content && "fields" in marketObject.content) {
|
|
2585
|
+
const fields = marketObject.content.fields;
|
|
2586
|
+
const coinType = query.utils.parseCoinType(poolCoinName);
|
|
2587
|
+
const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
|
|
2588
|
+
const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
2589
|
+
parentId: balanceSheetParentId,
|
|
2590
|
+
name: {
|
|
2591
|
+
type: "0x1::type_name::TypeName",
|
|
2592
|
+
value: {
|
|
2593
|
+
name: coinType.substring(2)
|
|
2594
|
+
}
|
|
2716
2595
|
}
|
|
2596
|
+
});
|
|
2597
|
+
if (!balanceSheetDynamicFieldObjectResponse)
|
|
2598
|
+
return void 0;
|
|
2599
|
+
const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse.data;
|
|
2600
|
+
if (balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content) {
|
|
2601
|
+
const dynamicFields = balanceSheetDynamicFieldObject.content.fields;
|
|
2602
|
+
balanceSheet = dynamicFields.value.fields;
|
|
2717
2603
|
}
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
|
|
2721
|
-
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
|
|
2726
|
-
const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
2727
|
-
parentId: borrowIndexParentId,
|
|
2728
|
-
name: {
|
|
2729
|
-
type: "0x1::type_name::TypeName",
|
|
2730
|
-
value: {
|
|
2731
|
-
name: coinType.substring(2)
|
|
2604
|
+
const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
|
|
2605
|
+
const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
2606
|
+
parentId: borrowIndexParentId,
|
|
2607
|
+
name: {
|
|
2608
|
+
type: "0x1::type_name::TypeName",
|
|
2609
|
+
value: {
|
|
2610
|
+
name: coinType.substring(2)
|
|
2611
|
+
}
|
|
2732
2612
|
}
|
|
2613
|
+
});
|
|
2614
|
+
if (!borrowIndexDynamicFieldObjectResponse)
|
|
2615
|
+
return void 0;
|
|
2616
|
+
const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse.data;
|
|
2617
|
+
if (borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content) {
|
|
2618
|
+
const dynamicFields = borrowIndexDynamicFieldObject.content.fields;
|
|
2619
|
+
borrowIndex = dynamicFields.value.fields;
|
|
2733
2620
|
}
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2737
|
-
|
|
2738
|
-
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
2743
|
-
parentId: interestModelParentId,
|
|
2744
|
-
name: {
|
|
2745
|
-
type: "0x1::type_name::TypeName",
|
|
2746
|
-
value: {
|
|
2747
|
-
name: coinType.substring(2)
|
|
2621
|
+
const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
|
|
2622
|
+
const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
2623
|
+
parentId: interestModelParentId,
|
|
2624
|
+
name: {
|
|
2625
|
+
type: "0x1::type_name::TypeName",
|
|
2626
|
+
value: {
|
|
2627
|
+
name: coinType.substring(2)
|
|
2628
|
+
}
|
|
2748
2629
|
}
|
|
2630
|
+
});
|
|
2631
|
+
if (!interestModelDynamicFieldObjectResponse)
|
|
2632
|
+
return void 0;
|
|
2633
|
+
const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse.data;
|
|
2634
|
+
if (interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content) {
|
|
2635
|
+
const dynamicFields = interestModelDynamicFieldObject.content.fields;
|
|
2636
|
+
interestModel = dynamicFields.value.fields;
|
|
2749
2637
|
}
|
|
2750
|
-
});
|
|
2751
|
-
const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse?.data;
|
|
2752
|
-
if (!(interestModelDynamicFieldObject && interestModelDynamicFieldObject.content && "fields" in interestModelDynamicFieldObject.content))
|
|
2753
|
-
throw new Error(
|
|
2754
|
-
`Failed to fetch interestModelDynamicFieldObject for ${poolCoinName}: ${interestModelDynamicFieldObject}`
|
|
2755
|
-
);
|
|
2756
|
-
const interestModel = interestModelDynamicFieldObject.content.fields.value.fields;
|
|
2757
|
-
const getBorrowFee = async () => {
|
|
2758
2638
|
const borrowFeeDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
2759
2639
|
parentId: marketId,
|
|
2760
2640
|
name: {
|
|
@@ -2766,11 +2646,16 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2766
2646
|
}
|
|
2767
2647
|
}
|
|
2768
2648
|
});
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2649
|
+
if (!borrowFeeDynamicFieldObjectResponse)
|
|
2650
|
+
return void 0;
|
|
2651
|
+
const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse.data;
|
|
2652
|
+
if (borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content) {
|
|
2653
|
+
const dynamicFields = borrowFeeDynamicFieldObject.content.fields;
|
|
2654
|
+
borrowFeeRate = dynamicFields.value.fields;
|
|
2655
|
+
}
|
|
2656
|
+
}
|
|
2657
|
+
}
|
|
2658
|
+
if (balanceSheet && borrowIndex && interestModel && (USE_TEST_ADDRESS || borrowFeeRate)) {
|
|
2774
2659
|
const parsedMarketPoolData = parseOriginMarketPoolData({
|
|
2775
2660
|
type: interestModel.type.fields,
|
|
2776
2661
|
maxBorrowRate: interestModel.max_borrow_rate.fields,
|
|
@@ -2784,7 +2669,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2784
2669
|
reserve: balanceSheet.revenue,
|
|
2785
2670
|
reserveFactor: interestModel.revenue_factor.fields,
|
|
2786
2671
|
borrowWeight: interestModel.borrow_weight.fields,
|
|
2787
|
-
borrowFeeRate:
|
|
2672
|
+
borrowFeeRate: borrowFeeRate || { value: "0" },
|
|
2788
2673
|
baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
|
|
2789
2674
|
borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
|
|
2790
2675
|
borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
|
|
@@ -2800,7 +2685,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2800
2685
|
const maxSupplyCoin = (0, import_bignumber2.default)(
|
|
2801
2686
|
await getSupplyLimit(query.utils, poolCoinName) ?? "0"
|
|
2802
2687
|
).shiftedBy(-coinDecimal).toNumber();
|
|
2803
|
-
|
|
2688
|
+
marketPool = {
|
|
2804
2689
|
coinName: poolCoinName,
|
|
2805
2690
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
2806
2691
|
coinType: query.utils.parseCoinType(poolCoinName),
|
|
@@ -2819,13 +2704,12 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2819
2704
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2820
2705
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2821
2706
|
maxSupplyCoin,
|
|
2822
|
-
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2823
|
-
|
|
2707
|
+
// isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2708
|
+
isIsolated: false,
|
|
2824
2709
|
...calculatedMarketPoolData
|
|
2825
2710
|
};
|
|
2826
|
-
} catch (e) {
|
|
2827
|
-
console.error(e);
|
|
2828
2711
|
}
|
|
2712
|
+
return marketPool;
|
|
2829
2713
|
};
|
|
2830
2714
|
var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
|
|
2831
2715
|
const marketId = query.address.get("core.market");
|
|
@@ -2874,76 +2758,85 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
|
|
|
2874
2758
|
);
|
|
2875
2759
|
return marketCollateralIndexer;
|
|
2876
2760
|
}
|
|
2761
|
+
let marketCollateral;
|
|
2762
|
+
let riskModel;
|
|
2763
|
+
let collateralStat;
|
|
2877
2764
|
const marketId = query.address.get("core.market");
|
|
2878
2765
|
marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
|
|
2879
2766
|
showContent: true
|
|
2880
2767
|
}))?.data;
|
|
2881
|
-
if (
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
2768
|
+
if (marketObject) {
|
|
2769
|
+
if (marketObject.content && "fields" in marketObject.content) {
|
|
2770
|
+
const fields = marketObject.content.fields;
|
|
2771
|
+
const coinType = query.utils.parseCoinType(collateralCoinName);
|
|
2772
|
+
const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
|
|
2773
|
+
const riskModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
2774
|
+
parentId: riskModelParentId,
|
|
2775
|
+
name: {
|
|
2776
|
+
type: "0x1::type_name::TypeName",
|
|
2777
|
+
value: {
|
|
2778
|
+
name: coinType.substring(2)
|
|
2779
|
+
}
|
|
2780
|
+
}
|
|
2781
|
+
});
|
|
2782
|
+
if (!riskModelDynamicFieldObjectResponse)
|
|
2783
|
+
return void 0;
|
|
2784
|
+
const riskModelDynamicFieldObject = riskModelDynamicFieldObjectResponse.data;
|
|
2785
|
+
if (riskModelDynamicFieldObject && riskModelDynamicFieldObject.content && "fields" in riskModelDynamicFieldObject.content) {
|
|
2786
|
+
const dynamicFields = riskModelDynamicFieldObject.content.fields;
|
|
2787
|
+
riskModel = dynamicFields.value.fields;
|
|
2892
2788
|
}
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2789
|
+
const collateralStatParentId = fields.collateral_stats.fields.table.fields.id.id;
|
|
2790
|
+
const collateralStatDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
2791
|
+
parentId: collateralStatParentId,
|
|
2792
|
+
name: {
|
|
2793
|
+
type: "0x1::type_name::TypeName",
|
|
2794
|
+
value: {
|
|
2795
|
+
name: coinType.substring(2)
|
|
2796
|
+
}
|
|
2797
|
+
}
|
|
2798
|
+
});
|
|
2799
|
+
if (!collateralStatDynamicFieldObjectResponse)
|
|
2800
|
+
return void 0;
|
|
2801
|
+
const collateralStatDynamicFieldObject = collateralStatDynamicFieldObjectResponse.data;
|
|
2802
|
+
if (collateralStatDynamicFieldObject && collateralStatDynamicFieldObject.content && "fields" in collateralStatDynamicFieldObject.content) {
|
|
2803
|
+
const dynamicFields = collateralStatDynamicFieldObject.content.fields;
|
|
2804
|
+
collateralStat = dynamicFields.value.fields;
|
|
2908
2805
|
}
|
|
2909
2806
|
}
|
|
2910
|
-
}
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2807
|
+
}
|
|
2808
|
+
if (riskModel && collateralStat) {
|
|
2809
|
+
const parsedMarketCollateralData = parseOriginMarketCollateralData({
|
|
2810
|
+
type: riskModel.type.fields,
|
|
2811
|
+
collateralFactor: riskModel.collateral_factor.fields,
|
|
2812
|
+
liquidationFactor: riskModel.liquidation_factor.fields,
|
|
2813
|
+
liquidationDiscount: riskModel.liquidation_discount.fields,
|
|
2814
|
+
liquidationPanelty: riskModel.liquidation_penalty.fields,
|
|
2815
|
+
liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
|
|
2816
|
+
maxCollateralAmount: riskModel.max_collateral_amount,
|
|
2817
|
+
totalCollateralAmount: collateralStat.amount
|
|
2818
|
+
});
|
|
2819
|
+
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
2820
|
+
query.utils,
|
|
2821
|
+
parsedMarketCollateralData
|
|
2915
2822
|
);
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
symbol: query.utils.parseSymbol(collateralCoinName),
|
|
2934
|
-
coinType: query.utils.parseCoinType(collateralCoinName),
|
|
2935
|
-
marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
|
|
2936
|
-
coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
|
|
2937
|
-
coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
|
|
2938
|
-
coinPrice: coinPrice ?? 0,
|
|
2939
|
-
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
2940
|
-
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
2941
|
-
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
2942
|
-
liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
|
|
2943
|
-
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
2944
|
-
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
2945
|
-
...calculatedMarketCollateralData
|
|
2946
|
-
};
|
|
2823
|
+
marketCollateral = {
|
|
2824
|
+
coinName: collateralCoinName,
|
|
2825
|
+
symbol: query.utils.parseSymbol(collateralCoinName),
|
|
2826
|
+
coinType: query.utils.parseCoinType(collateralCoinName),
|
|
2827
|
+
marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
|
|
2828
|
+
coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
|
|
2829
|
+
coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
|
|
2830
|
+
coinPrice: coinPrice ?? 0,
|
|
2831
|
+
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
2832
|
+
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
2833
|
+
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
2834
|
+
liquidationPanelty: parsedMarketCollateralData.liquidationPanelty,
|
|
2835
|
+
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
2836
|
+
...calculatedMarketCollateralData
|
|
2837
|
+
};
|
|
2838
|
+
}
|
|
2839
|
+
return marketCollateral;
|
|
2947
2840
|
};
|
|
2948
2841
|
var getObligations = async ({
|
|
2949
2842
|
address
|
|
@@ -2959,6 +2852,9 @@ var getObligations = async ({
|
|
|
2959
2852
|
filter: {
|
|
2960
2853
|
StructType: `${protocolObjectId}::obligation::ObligationKey`
|
|
2961
2854
|
},
|
|
2855
|
+
options: {
|
|
2856
|
+
showContent: true
|
|
2857
|
+
},
|
|
2962
2858
|
cursor: nextCursor,
|
|
2963
2859
|
limit: 10
|
|
2964
2860
|
});
|
|
@@ -2972,14 +2868,14 @@ var getObligations = async ({
|
|
|
2972
2868
|
hasNextPage = false;
|
|
2973
2869
|
}
|
|
2974
2870
|
} while (hasNextPage);
|
|
2975
|
-
const
|
|
2976
|
-
const keyObjects = await address.cache.queryGetObjects(keyObjectIds);
|
|
2871
|
+
const keyObjects = keyObjectsResponse.filter((ref) => !!ref.data);
|
|
2977
2872
|
const obligations = [];
|
|
2978
2873
|
await Promise.allSettled(
|
|
2979
|
-
keyObjects.map(async (
|
|
2980
|
-
const keyId =
|
|
2981
|
-
|
|
2982
|
-
|
|
2874
|
+
keyObjects.map(async ({ data }) => {
|
|
2875
|
+
const keyId = data?.objectId;
|
|
2876
|
+
const content = data?.content;
|
|
2877
|
+
if (keyId && content && "fields" in content) {
|
|
2878
|
+
const fields = content.fields;
|
|
2983
2879
|
const obligationId = String(fields.ownership.fields.of);
|
|
2984
2880
|
const locked = await getObligationLocked(address.cache, obligationId);
|
|
2985
2881
|
obligations.push({ id: obligationId, keyId, locked });
|
|
@@ -3172,7 +3068,7 @@ var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPr
|
|
|
3172
3068
|
const coinName = query.utils.parseCoinName(marketCoinName);
|
|
3173
3069
|
marketPool = marketPool || await query.getMarketPool(coinName, indexer);
|
|
3174
3070
|
if (!marketPool) {
|
|
3175
|
-
throw new Error(
|
|
3071
|
+
throw new Error("Fail to fetch marketPool");
|
|
3176
3072
|
}
|
|
3177
3073
|
const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
|
|
3178
3074
|
const rewardPoolId = query.address.get(
|
|
@@ -3247,6 +3143,7 @@ var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPr
|
|
|
3247
3143
|
coinType: query.utils.parseCoinType(coinName),
|
|
3248
3144
|
marketCoinType: query.utils.parseMarketCoinType(coinName),
|
|
3249
3145
|
rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
|
|
3146
|
+
sCoinType: marketPool.sCoinType,
|
|
3250
3147
|
coinDecimal: query.utils.getCoinDecimal(coinName),
|
|
3251
3148
|
rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
|
|
3252
3149
|
coinPrice: coinPrices?.[coinName] ?? 0,
|
|
@@ -3843,6 +3740,7 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
|
|
|
3843
3740
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
3844
3741
|
coinType: query.utils.parseCoinType(poolCoinName),
|
|
3845
3742
|
marketCoinType: query.utils.parseMarketCoinType(poolCoinName),
|
|
3743
|
+
sCoinType: marketPool?.sCoinType ?? "",
|
|
3846
3744
|
coinDecimal,
|
|
3847
3745
|
coinPrice: coinPrice ?? 0,
|
|
3848
3746
|
conversionRate: marketPool?.conversionRate ?? 1,
|
|
@@ -3900,8 +3798,12 @@ var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
|
|
|
3900
3798
|
};
|
|
3901
3799
|
var getObligationAccount = async (query, obligationId, ownerAddress, indexer = false, market, coinPrices, coinAmounts) => {
|
|
3902
3800
|
market = market || await query.queryMarket(indexer);
|
|
3903
|
-
const
|
|
3904
|
-
.../* @__PURE__ */ new Set([
|
|
3801
|
+
const collateralAssetCoinNames = [
|
|
3802
|
+
.../* @__PURE__ */ new Set([
|
|
3803
|
+
...Object.values(market.collaterals).map(
|
|
3804
|
+
(collateral) => collateral.coinName
|
|
3805
|
+
)
|
|
3806
|
+
])
|
|
3905
3807
|
];
|
|
3906
3808
|
const obligationQuery = await query.queryObligation(obligationId);
|
|
3907
3809
|
const borrowIncentivePools = await query.getBorrowIncentivePools(
|
|
@@ -3909,9 +3811,8 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
|
|
|
3909
3811
|
indexer
|
|
3910
3812
|
);
|
|
3911
3813
|
const borrowIncentiveAccounts = await query.getBorrowIncentiveAccounts(obligationId);
|
|
3912
|
-
coinPrices = coinPrices || await query.utils.getCoinPrices(
|
|
3913
|
-
coinAmounts = coinAmounts || await query.getCoinAmounts(
|
|
3914
|
-
console.log(coinPrices);
|
|
3814
|
+
coinPrices = coinPrices || await query.utils.getCoinPrices(collateralAssetCoinNames);
|
|
3815
|
+
coinAmounts = coinAmounts || await query.getCoinAmounts(collateralAssetCoinNames, ownerAddress);
|
|
3915
3816
|
const collaterals = {};
|
|
3916
3817
|
const debts = {};
|
|
3917
3818
|
const borrowIncentives = {};
|
|
@@ -3923,7 +3824,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
|
|
|
3923
3824
|
let totalRewardedPools = 0;
|
|
3924
3825
|
let totalBorrowedValue = (0, import_bignumber4.default)(0);
|
|
3925
3826
|
let totalBorrowedValueWithWeight = (0, import_bignumber4.default)(0);
|
|
3926
|
-
for (const assetCoinName of
|
|
3827
|
+
for (const assetCoinName of collateralAssetCoinNames) {
|
|
3927
3828
|
const collateral = obligationQuery?.collaterals.find((collateral2) => {
|
|
3928
3829
|
const collateralCoinName = query.utils.parseCoinNameFromType(
|
|
3929
3830
|
collateral2.type.name
|
|
@@ -4228,7 +4129,7 @@ var getTotalValueLocked = async (query, indexer = false) => {
|
|
|
4228
4129
|
var import_bignumber5 = __toESM(require("bignumber.js"));
|
|
4229
4130
|
var import_sui_kit3 = require("@scallop-io/sui-kit");
|
|
4230
4131
|
var import_bcs = require("@mysten/sui/bcs");
|
|
4231
|
-
var
|
|
4132
|
+
var import_zod2 = require("zod");
|
|
4232
4133
|
var import_assert = __toESM(require("assert"));
|
|
4233
4134
|
var getVescaKeys = async (utils, ownerAddress) => {
|
|
4234
4135
|
const owner = ownerAddress || utils.suiKit.currentAddress();
|
|
@@ -4277,14 +4178,13 @@ var getVeScas = async ({
|
|
|
4277
4178
|
}
|
|
4278
4179
|
return result;
|
|
4279
4180
|
};
|
|
4280
|
-
var SuiObjectRefZod =
|
|
4281
|
-
objectId:
|
|
4282
|
-
digest:
|
|
4283
|
-
version:
|
|
4181
|
+
var SuiObjectRefZod = import_zod2.z.object({
|
|
4182
|
+
objectId: import_zod2.z.string(),
|
|
4183
|
+
digest: import_zod2.z.string(),
|
|
4184
|
+
version: import_zod2.z.string()
|
|
4284
4185
|
});
|
|
4285
|
-
var getVeSca = async (utils, veScaKey
|
|
4186
|
+
var getVeSca = async (utils, veScaKey) => {
|
|
4286
4187
|
const tableId = utils.address.get(`vesca.tableId`);
|
|
4287
|
-
veScaKey = veScaKey || (await getVescaKeys(utils, ownerAddress))[0];
|
|
4288
4188
|
if (!veScaKey)
|
|
4289
4189
|
return void 0;
|
|
4290
4190
|
if (typeof veScaKey === "object") {
|
|
@@ -4414,16 +4314,16 @@ var queryVeScaKeyIdFromReferralBindings = async (address, refereeAddress) => {
|
|
|
4414
4314
|
|
|
4415
4315
|
// src/queries/loyaltyProgramQuery.ts
|
|
4416
4316
|
var import_bignumber6 = __toESM(require("bignumber.js"));
|
|
4417
|
-
var
|
|
4418
|
-
var rewardPoolFieldsZod =
|
|
4419
|
-
balance:
|
|
4420
|
-
enable_claim:
|
|
4317
|
+
var import_zod3 = require("zod");
|
|
4318
|
+
var rewardPoolFieldsZod = import_zod3.z.object({
|
|
4319
|
+
balance: import_zod3.z.string(),
|
|
4320
|
+
enable_claim: import_zod3.z.boolean()
|
|
4421
4321
|
}).transform((value) => ({
|
|
4422
4322
|
totalPoolReward: (0, import_bignumber6.default)(value.balance).shiftedBy(-9).toNumber(),
|
|
4423
4323
|
isClaimEnabled: value.enable_claim
|
|
4424
4324
|
}));
|
|
4425
|
-
var userRewardFieldsZod =
|
|
4426
|
-
value:
|
|
4325
|
+
var userRewardFieldsZod = import_zod3.z.object({
|
|
4326
|
+
value: import_zod3.z.string()
|
|
4427
4327
|
}).transform((value) => (0, import_bignumber6.default)(value.value).shiftedBy(-9).toNumber());
|
|
4428
4328
|
var getLoyaltyProgramInformations = async (query, veScaKey) => {
|
|
4429
4329
|
const rewardPool = query.address.get("loyaltyProgram.rewardPool");
|
|
@@ -4534,10 +4434,10 @@ var ScallopUtils = class {
|
|
|
4534
4434
|
* @param address - ScallopAddress instance.
|
|
4535
4435
|
*/
|
|
4536
4436
|
async init(force = false, address) {
|
|
4537
|
-
if (
|
|
4538
|
-
this.address = address;
|
|
4539
|
-
if (force || !this.address.getAddresses()) {
|
|
4437
|
+
if (force || !this.address.getAddresses() || !address?.getAddresses()) {
|
|
4540
4438
|
await this.address.read();
|
|
4439
|
+
} else {
|
|
4440
|
+
this.address = address;
|
|
4541
4441
|
}
|
|
4542
4442
|
}
|
|
4543
4443
|
/**
|
|
@@ -4837,38 +4737,30 @@ var ScallopUtils = class {
|
|
|
4837
4737
|
const priceId = this.address.get(
|
|
4838
4738
|
`core.coins.${coinName}.oracle.pyth.feed`
|
|
4839
4739
|
);
|
|
4840
|
-
|
|
4841
|
-
acc[coinName] = priceId;
|
|
4842
|
-
}
|
|
4740
|
+
acc[coinName] = priceId;
|
|
4843
4741
|
return acc;
|
|
4844
4742
|
},
|
|
4845
4743
|
{}
|
|
4846
4744
|
);
|
|
4847
4745
|
await Promise.allSettled(
|
|
4848
|
-
Object.entries(priceIds).
|
|
4746
|
+
Object.entries(priceIds).map(async ([coinName, priceId]) => {
|
|
4849
4747
|
const pythConnection = new import_pyth_sui_js.SuiPriceServiceConnection(endpoint);
|
|
4850
4748
|
try {
|
|
4851
4749
|
const feed = await this.cache.queryClient.fetchQuery({
|
|
4852
|
-
queryKey: queryKeys.oracle.getPythLatestPriceFeed(
|
|
4853
|
-
priceId,
|
|
4854
|
-
endpoint
|
|
4855
|
-
),
|
|
4750
|
+
queryKey: queryKeys.oracle.getPythLatestPriceFeed(priceId),
|
|
4856
4751
|
queryFn: async () => {
|
|
4857
4752
|
return await pythConnection.getLatestPriceFeeds([priceId]) ?? [];
|
|
4858
4753
|
}
|
|
4859
4754
|
});
|
|
4860
4755
|
if (feed[0]) {
|
|
4861
|
-
const data = parseDataFromPythPriceFeed(
|
|
4862
|
-
feed[0],
|
|
4863
|
-
this.address
|
|
4864
|
-
);
|
|
4756
|
+
const data = parseDataFromPythPriceFeed(feed[0], this.address);
|
|
4865
4757
|
this._priceMap.set(coinName, {
|
|
4866
4758
|
price: data.price,
|
|
4867
4759
|
publishTime: data.publishTime
|
|
4868
4760
|
});
|
|
4869
4761
|
coinPrices[coinName] = data.price;
|
|
4870
|
-
failedRequests.delete(coinName);
|
|
4871
4762
|
}
|
|
4763
|
+
failedRequests.delete(coinName);
|
|
4872
4764
|
} catch (e) {
|
|
4873
4765
|
console.warn(
|
|
4874
4766
|
`Failed to get price ${coinName} feeds with endpoint ${endpoint}: ${e}`
|
|
@@ -5877,13 +5769,14 @@ var generateBorrowIncentiveQuickMethod = ({ builder, txBlock }) => {
|
|
|
5877
5769
|
);
|
|
5878
5770
|
if (!obligationLocked || unstakeObligationBeforeStake) {
|
|
5879
5771
|
const bindedVeScaKey = await builder.query.getBindedVeScaKey(obligationArg);
|
|
5880
|
-
|
|
5772
|
+
const _veScaKey = bindedVeScaKey ?? veScaKey;
|
|
5773
|
+
if (!_veScaKey) {
|
|
5881
5774
|
txBlock.stakeObligation(obligationArg, obligationKeyArg);
|
|
5882
5775
|
} else {
|
|
5883
5776
|
txBlock.stakeObligationWithVesca(
|
|
5884
5777
|
obligationArg,
|
|
5885
5778
|
obligationKeyArg,
|
|
5886
|
-
|
|
5779
|
+
_veScaKey
|
|
5887
5780
|
);
|
|
5888
5781
|
}
|
|
5889
5782
|
}
|
|
@@ -6717,6 +6610,14 @@ var ScallopIndexer = class {
|
|
|
6717
6610
|
throw Error("Failed to getTotalValueLocked.");
|
|
6718
6611
|
}
|
|
6719
6612
|
}
|
|
6613
|
+
/**
|
|
6614
|
+
* Get coin price index data.
|
|
6615
|
+
*
|
|
6616
|
+
* @return price data.
|
|
6617
|
+
*/
|
|
6618
|
+
async getCoinPrice(poolCoinName) {
|
|
6619
|
+
return (await this.getMarketPool(poolCoinName))?.coinPrice ?? 0;
|
|
6620
|
+
}
|
|
6720
6621
|
};
|
|
6721
6622
|
|
|
6722
6623
|
// src/queries/sCoinQuery.ts
|
|
@@ -6814,6 +6715,88 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
|
|
|
6814
6715
|
|
|
6815
6716
|
// src/models/scallopQuery.ts
|
|
6816
6717
|
var import_utils23 = require("@mysten/sui/utils");
|
|
6718
|
+
|
|
6719
|
+
// src/queries/isolatedAsset.ts
|
|
6720
|
+
var import_zod4 = require("zod");
|
|
6721
|
+
var isolatedAssetZod = import_zod4.z.object({
|
|
6722
|
+
dataType: import_zod4.z.string(),
|
|
6723
|
+
type: import_zod4.z.string(),
|
|
6724
|
+
hasPublicTransfer: import_zod4.z.boolean(),
|
|
6725
|
+
fields: import_zod4.z.object({
|
|
6726
|
+
id: import_zod4.z.object({
|
|
6727
|
+
id: import_zod4.z.string()
|
|
6728
|
+
}),
|
|
6729
|
+
name: import_zod4.z.object({
|
|
6730
|
+
type: import_zod4.z.string()
|
|
6731
|
+
}),
|
|
6732
|
+
value: import_zod4.z.boolean()
|
|
6733
|
+
})
|
|
6734
|
+
});
|
|
6735
|
+
var ISOLATED_ASSET_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::IsolatedAssetKey";
|
|
6736
|
+
var getIsolatedAssets = async (address) => {
|
|
6737
|
+
try {
|
|
6738
|
+
const marketObject = address.get("core.market");
|
|
6739
|
+
const isolatedAssets = [];
|
|
6740
|
+
if (!marketObject)
|
|
6741
|
+
return isolatedAssets;
|
|
6742
|
+
let hasNextPage = false;
|
|
6743
|
+
let nextCursor = null;
|
|
6744
|
+
const isIsolatedDynamicField = (dynamicField) => {
|
|
6745
|
+
return dynamicField.name.type === ISOLATED_ASSET_KEY;
|
|
6746
|
+
};
|
|
6747
|
+
do {
|
|
6748
|
+
const response = await address.cache.queryGetDynamicFields({
|
|
6749
|
+
parentId: marketObject,
|
|
6750
|
+
cursor: nextCursor,
|
|
6751
|
+
limit: 10
|
|
6752
|
+
});
|
|
6753
|
+
if (!response)
|
|
6754
|
+
break;
|
|
6755
|
+
const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
|
|
6756
|
+
isolatedAssets.push(...isolatedAssetCoinTypes);
|
|
6757
|
+
if (response && response.hasNextPage && response.nextCursor) {
|
|
6758
|
+
hasNextPage = true;
|
|
6759
|
+
nextCursor = response.nextCursor;
|
|
6760
|
+
} else {
|
|
6761
|
+
hasNextPage = false;
|
|
6762
|
+
}
|
|
6763
|
+
} while (hasNextPage);
|
|
6764
|
+
return isolatedAssets;
|
|
6765
|
+
} catch (e) {
|
|
6766
|
+
console.error(e);
|
|
6767
|
+
return [];
|
|
6768
|
+
}
|
|
6769
|
+
};
|
|
6770
|
+
var isIsolatedAsset = async (utils, coinName) => {
|
|
6771
|
+
try {
|
|
6772
|
+
const marketObject = utils.address.get("core.market");
|
|
6773
|
+
const cachedData = utils.address.cache.queryClient.getQueryData([
|
|
6774
|
+
"getDynamicFields",
|
|
6775
|
+
marketObject
|
|
6776
|
+
]);
|
|
6777
|
+
if (cachedData) {
|
|
6778
|
+
const coinType2 = utils.parseCoinType(coinName);
|
|
6779
|
+
return cachedData.includes(coinType2);
|
|
6780
|
+
}
|
|
6781
|
+
const coinType = utils.parseCoinType(coinName).slice(2);
|
|
6782
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
6783
|
+
parentId: marketObject,
|
|
6784
|
+
name: {
|
|
6785
|
+
type: ISOLATED_ASSET_KEY,
|
|
6786
|
+
value: coinType
|
|
6787
|
+
}
|
|
6788
|
+
});
|
|
6789
|
+
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
6790
|
+
if (!parsedData.success)
|
|
6791
|
+
return false;
|
|
6792
|
+
return parsedData.data.fields.value;
|
|
6793
|
+
} catch (e) {
|
|
6794
|
+
console.error(e);
|
|
6795
|
+
return false;
|
|
6796
|
+
}
|
|
6797
|
+
};
|
|
6798
|
+
|
|
6799
|
+
// src/models/scallopQuery.ts
|
|
6817
6800
|
var ScallopQuery = class {
|
|
6818
6801
|
constructor(params, instance) {
|
|
6819
6802
|
this.params = params;
|
|
@@ -6883,11 +6866,10 @@ var ScallopQuery = class {
|
|
|
6883
6866
|
* @param address - ScallopAddress instance.
|
|
6884
6867
|
*/
|
|
6885
6868
|
async init(force = false, address) {
|
|
6886
|
-
if (
|
|
6887
|
-
this.address = address;
|
|
6888
|
-
}
|
|
6889
|
-
if (force || !this.address.getAddresses()) {
|
|
6869
|
+
if (force || !this.address.getAddresses() || !address?.getAddresses()) {
|
|
6890
6870
|
await this.address.read();
|
|
6871
|
+
} else {
|
|
6872
|
+
this.address = address;
|
|
6891
6873
|
}
|
|
6892
6874
|
await this.utils.init(force, this.address);
|
|
6893
6875
|
}
|
|
@@ -7344,6 +7326,14 @@ var ScallopQuery = class {
|
|
|
7344
7326
|
async isIsolatedAsset(assetCoinName) {
|
|
7345
7327
|
return isIsolatedAsset(this.utils, assetCoinName);
|
|
7346
7328
|
}
|
|
7329
|
+
/**
|
|
7330
|
+
* Get pool coin price from indexer
|
|
7331
|
+
* @param coinName
|
|
7332
|
+
* @returns price data
|
|
7333
|
+
*/
|
|
7334
|
+
async getCoinPriceByIndexer(poolName) {
|
|
7335
|
+
return this.indexer.getCoinPrice(poolName);
|
|
7336
|
+
}
|
|
7347
7337
|
};
|
|
7348
7338
|
|
|
7349
7339
|
// src/models/scallopBuilder.ts
|
|
@@ -7396,10 +7386,10 @@ var ScallopBuilder = class {
|
|
|
7396
7386
|
* @param address - ScallopAddress instance.
|
|
7397
7387
|
*/
|
|
7398
7388
|
async init(force = false, address) {
|
|
7399
|
-
if (
|
|
7400
|
-
this.address = address;
|
|
7401
|
-
if (force || !this.address.getAddresses()) {
|
|
7389
|
+
if (force || !this.address.getAddresses() || !address?.getAddresses()) {
|
|
7402
7390
|
await this.address.read();
|
|
7391
|
+
} else {
|
|
7392
|
+
this.address = address;
|
|
7403
7393
|
}
|
|
7404
7394
|
await this.query.init(force, this.address);
|
|
7405
7395
|
await this.utils.init(force, this.address);
|
|
@@ -7784,7 +7774,7 @@ var ScallopClient = class {
|
|
|
7784
7774
|
);
|
|
7785
7775
|
txBlock.transferObjects([coin], sender);
|
|
7786
7776
|
if (sign && availableStake) {
|
|
7787
|
-
await txBlock.
|
|
7777
|
+
await txBlock.stakeObligationWithVeScaQuick(obligationId, obligationKey);
|
|
7788
7778
|
}
|
|
7789
7779
|
if (sign) {
|
|
7790
7780
|
return await this.suiKit.signAndSendTxn(
|
|
@@ -7814,7 +7804,7 @@ var ScallopClient = class {
|
|
|
7814
7804
|
}
|
|
7815
7805
|
await txBlock.repayQuick(amount, poolCoinName, obligationId);
|
|
7816
7806
|
if (sign && availableStake) {
|
|
7817
|
-
await txBlock.
|
|
7807
|
+
await txBlock.stakeObligationWithVeScaQuick(obligationId, obligationKey);
|
|
7818
7808
|
}
|
|
7819
7809
|
if (sign) {
|
|
7820
7810
|
return await this.suiKit.signAndSendTxn(
|
|
@@ -7961,7 +7951,7 @@ var ScallopClient = class {
|
|
|
7961
7951
|
const txBlock = this.builder.createTxBlock();
|
|
7962
7952
|
const sender = walletAddress || this.walletAddress;
|
|
7963
7953
|
txBlock.setSender(sender);
|
|
7964
|
-
await txBlock.
|
|
7954
|
+
await txBlock.stakeObligationWithVeScaQuick(obligationId, obligationKeyId);
|
|
7965
7955
|
if (sign) {
|
|
7966
7956
|
return await this.suiKit.signAndSendTxn(
|
|
7967
7957
|
txBlock
|
|
@@ -8314,7 +8304,6 @@ var Scallop = class {
|
|
|
8314
8304
|
ScallopIndexer,
|
|
8315
8305
|
ScallopQuery,
|
|
8316
8306
|
ScallopUtils,
|
|
8317
|
-
TEST_ADDRESSES,
|
|
8318
8307
|
UNLOCK_ROUND_DURATION,
|
|
8319
8308
|
USE_TEST_ADDRESS,
|
|
8320
8309
|
assetCoins,
|