@scallop-io/sui-scallop-sdk 1.4.13 → 1.4.14-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -279,12 +279,19 @@ var voloCoinIds = {
279
279
  vsui: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55"
280
280
  };
281
281
  var sCoinIds = {
282
+ // prod values
283
+ // ssui: '0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI',
284
+ // swusdc:
285
+ // '0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC',
286
+ // swusdt:
287
+ // '0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT',
288
+ // ssca: '0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA',
289
+ ssui: "0xf569919046f19a0c40b519ecfbb6ca0319698cd5908716c29b62ef56541f298b::scallop_sui::SCALLOP_SUI",
290
+ swusdt: "0xac781d9f73058ff5e69f9bf8dde32f2e8c71c66d7fe8497fc83b2d9182254b22::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
291
+ swusdc: "0xf5447c4305a486d8c8557559887c2c39449ddb5e748f15d33946d02a1663c158::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
292
+ ssca: "0x958428555e778e55918a59eb1c92c77f32b5c554fa3a5e56cd0815086b5072e7::scallop_sca::SCALLOP_SCA",
282
293
  susdc: "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",
283
294
  ssbeth: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
284
- ssui: "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",
285
- swusdc: "0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",
286
- swusdt: "0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",
287
- ssca: "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",
288
295
  scetus: "0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",
289
296
  sweth: "0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",
290
297
  safsui: "0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",
@@ -973,7 +980,7 @@ var TEST_ADDRESSES = {
973
980
 
974
981
  // src/constants/tokenBucket.ts
975
982
  var DEFAULT_TOKENS_PER_INTERVAL = 10;
976
- var DEFAULT_INTERVAL_IN_MS = 50;
983
+ var DEFAULT_INTERVAL_IN_MS = 250;
977
984
 
978
985
  // src/constants/vesca.ts
979
986
  var UNLOCK_ROUND_DURATION = 60 * 60 * 24;
@@ -1352,7 +1359,7 @@ var parseOriginBorrowIncentivesPoolPointData = (originBorrowIncentivePoolPointDa
1352
1359
  createdAt: Number(originBorrowIncentivePoolPointData.created_at)
1353
1360
  };
1354
1361
  };
1355
- var parseOriginBorrowIncentivePoolData = (originBorrowIncentivePoolData) => {
1362
+ var parseOriginBorrowIncentivePoolData = (utils, originBorrowIncentivePoolData) => {
1356
1363
  return {
1357
1364
  poolType: normalizeStructTag(originBorrowIncentivePoolData.pool_type.name),
1358
1365
  minStakes: Number(originBorrowIncentivePoolData.min_stakes),
@@ -1361,12 +1368,9 @@ var parseOriginBorrowIncentivePoolData = (originBorrowIncentivePoolData) => {
1361
1368
  poolPoints: originBorrowIncentivePoolData.points.reduce(
1362
1369
  (acc, point) => {
1363
1370
  const parsed = parseOriginBorrowIncentivesPoolPointData(point);
1364
- let name = parseStructTag(
1365
- parsed.pointType
1366
- ).name.toLowerCase();
1367
- if (sCoinRawNameToName[name]) {
1368
- name = sCoinRawNameToName[name];
1369
- }
1371
+ const name = utils.parseSCoinTypeNameToMarketCoinName(
1372
+ parseStructTag(parsed.pointType).name.toLowerCase()
1373
+ );
1370
1374
  acc[name] = parsed;
1371
1375
  return acc;
1372
1376
  },
@@ -1580,7 +1584,7 @@ var TokenBucket = class {
1580
1584
  return false;
1581
1585
  }
1582
1586
  };
1583
- var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor = 2) => {
1587
+ var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor = 1.25) => {
1584
1588
  let retries = 0;
1585
1589
  const tryRequest = async () => {
1586
1590
  if (tokenBucket.removeTokens(1)) {
@@ -1659,6 +1663,13 @@ var ScallopCache = class {
1659
1663
  })
1660
1664
  );
1661
1665
  }
1666
+ retryFn(errCount, err) {
1667
+ if (err.status === 429)
1668
+ return true;
1669
+ if (errCount >= 5)
1670
+ return false;
1671
+ return false;
1672
+ }
1662
1673
  /**
1663
1674
  * @description Provides cache for inspectTxn of the SuiKit.
1664
1675
  * @param QueryInspectTxnParams
@@ -1673,7 +1684,7 @@ var ScallopCache = class {
1673
1684
  const txBlock = new SuiTxBlock();
1674
1685
  txBlock.moveCall(queryTarget, args, typeArgs);
1675
1686
  const query = await this.queryClient.fetchQuery({
1676
- retry: 5,
1687
+ retry: this.retryFn,
1677
1688
  retryDelay: 1e3,
1678
1689
  queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
1679
1690
  queryFn: async () => {
@@ -1693,7 +1704,7 @@ var ScallopCache = class {
1693
1704
  */
1694
1705
  async queryGetObject(objectId, options) {
1695
1706
  return this.queryClient.fetchQuery({
1696
- retry: 5,
1707
+ retry: this.retryFn,
1697
1708
  retryDelay: 1e3,
1698
1709
  queryKey: queryKeys.rpc.getObject(objectId, this.walletAddress, options),
1699
1710
  queryFn: async () => {
@@ -1718,7 +1729,7 @@ var ScallopCache = class {
1718
1729
  if (objectIds.length === 0)
1719
1730
  return [];
1720
1731
  return this.queryClient.fetchQuery({
1721
- retry: 5,
1732
+ retry: this.retryFn,
1722
1733
  retryDelay: 1e3,
1723
1734
  queryKey: queryKeys.rpc.getObjects(
1724
1735
  objectIds,
@@ -1740,7 +1751,7 @@ var ScallopCache = class {
1740
1751
  */
1741
1752
  async queryGetOwnedObjects(input) {
1742
1753
  return this.queryClient.fetchQuery({
1743
- retry: 5,
1754
+ retry: this.retryFn,
1744
1755
  retryDelay: 1e3,
1745
1756
  queryKey: queryKeys.rpc.getOwnedObjects(input),
1746
1757
  queryFn: async () => {
@@ -1753,7 +1764,7 @@ var ScallopCache = class {
1753
1764
  }
1754
1765
  async queryGetDynamicFields(input) {
1755
1766
  return this.queryClient.fetchQuery({
1756
- retry: 5,
1767
+ retry: this.retryFn,
1757
1768
  retryDelay: 1e3,
1758
1769
  queryKey: queryKeys.rpc.getDynamicFields(input),
1759
1770
  queryFn: async () => {
@@ -1766,7 +1777,7 @@ var ScallopCache = class {
1766
1777
  }
1767
1778
  async queryGetDynamicFieldObject(input) {
1768
1779
  return this.queryClient.fetchQuery({
1769
- retry: 5,
1780
+ retry: this.retryFn,
1770
1781
  retryDelay: (attemptIndex) => Math.min(1e3 * attemptIndex, 8e3),
1771
1782
  queryKey: queryKeys.rpc.getDynamicFieldObject(input),
1772
1783
  queryFn: async () => {
@@ -1779,7 +1790,7 @@ var ScallopCache = class {
1779
1790
  }
1780
1791
  async queryGetAllCoinBalances(owner) {
1781
1792
  return this.queryClient.fetchQuery({
1782
- retry: 5,
1793
+ retry: this.retryFn,
1783
1794
  retryDelay: 1e3,
1784
1795
  queryKey: queryKeys.rpc.getAllCoinBalances(owner),
1785
1796
  queryFn: async () => {
@@ -2523,7 +2534,10 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
2523
2534
  );
2524
2535
  for (const pool of borrowIncentivePoolsQueryData?.incentive_pools ?? []) {
2525
2536
  const borrowIncentivePoolPoints = {};
2526
- const parsedBorrowIncentivePoolData = parseOriginBorrowIncentivePoolData(pool);
2537
+ const parsedBorrowIncentivePoolData = parseOriginBorrowIncentivePoolData(
2538
+ query.utils,
2539
+ pool
2540
+ );
2527
2541
  const poolCoinType = normalizeStructTag3(pool.pool_type.name);
2528
2542
  const poolCoinName = query.utils.parseCoinNameFromType(
2529
2543
  poolCoinType
@@ -2537,12 +2551,9 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
2537
2551
  parsedBorrowIncentivePoolData.poolPoints
2538
2552
  )) {
2539
2553
  const rewardCoinType = poolPoint.pointType;
2540
- let rewardCoinName = query.utils.parseCoinNameFromType(
2554
+ const rewardCoinName = query.utils.parseCoinNameFromType(
2541
2555
  rewardCoinType
2542
2556
  );
2543
- if (sCoinRawNameToName[rewardCoinName]) {
2544
- rewardCoinName = sCoinRawNameToName[rewardCoinName];
2545
- }
2546
2557
  const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
2547
2558
  const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
2548
2559
  const symbol = query.utils.parseSymbol(rewardCoinName);
@@ -2690,7 +2701,7 @@ var supplyLimitZod = zod.object({
2690
2701
  value: zod.string()
2691
2702
  })
2692
2703
  });
2693
- var supplyLimitKeyType = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
2704
+ var supplyLimitKeyType = `0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d::market_dynamic_keys::SupplyLimitKey`;
2694
2705
  var getSupplyLimit = async (utils, poolName) => {
2695
2706
  try {
2696
2707
  const poolCoinType = utils.parseCoinType(poolName).slice(2);
@@ -2730,7 +2741,7 @@ var isolatedAssetZod = zod2.object({
2730
2741
  value: zod2.boolean()
2731
2742
  })
2732
2743
  });
2733
- var isolatedAssetKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
2744
+ var isolatedAssetKeyType = `0x6c23585e940a989588432509107e98bae06dbca4e333f26d0635d401b3c7c76d::market_dynamic_keys::IsolatedAssetKey`;
2734
2745
  var getIsolatedAssets = async (address) => {
2735
2746
  try {
2736
2747
  const marketObject = address.get("core.market");
@@ -2810,7 +2821,7 @@ var borrowLimitZod = zod3.object({
2810
2821
  value: zod3.string()
2811
2822
  })
2812
2823
  });
2813
- var borrowLimitKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
2824
+ var borrowLimitKeyType = `0xb784ea287d944e478a3ceaa071f8885072cce6b7224cf245914dc2f9963f460e::market_dynamic_keys::BorrowLimitKey`;
2814
2825
  var getBorrowLimit = async (utils, poolName) => {
2815
2826
  try {
2816
2827
  const poolCoinType = utils.parseCoinType(poolName).slice(2);
@@ -3852,7 +3863,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
3852
3863
  const rewards = [];
3853
3864
  Object.entries(borrowIncentiveAccount.pointList).forEach(
3854
3865
  ([key, accountPoint]) => {
3855
- const poolPoint = borrowIncentivePool.points[key];
3866
+ const poolPoint = borrowIncentivePool.points[query.utils.parseSCoinTypeNameToMarketCoinName(key)];
3856
3867
  if (accountPoint && poolPoint) {
3857
3868
  let availableClaimAmount = BigNumber5(0);
3858
3869
  let availableClaimCoin = BigNumber5(0);
@@ -4884,13 +4895,14 @@ var ScallopUtils = class {
4884
4895
  }
4885
4896
  }
4886
4897
  /**
4887
- * Convert sCoin name to coin name.
4898
+ * Convert sCoin name to market coin name.
4888
4899
  * This function will parse new sCoin name `scallop_...` to its old market coin name which is shorter
4889
4900
  * e.g: `scallop_sui -> ssui
4901
+ * if no `scallop_...` is encountered, return coinName
4890
4902
  * @return sCoin name
4891
4903
  */
4892
- parseCoinNameFromSCoinName(coinName) {
4893
- return sCoinRawNameToName[coinName];
4904
+ parseSCoinTypeNameToMarketCoinName(coinName) {
4905
+ return sCoinRawNameToName[coinName] ?? coinName;
4894
4906
  }
4895
4907
  /**
4896
4908
  * Convert sCoin name into sCoin type
@@ -4939,6 +4951,9 @@ var ScallopUtils = class {
4939
4951
  }
4940
4952
  parseCoinNameFromType(coinType) {
4941
4953
  coinType = normalizeStructTag6(coinType);
4954
+ if (sCoinTypeToName[coinType]) {
4955
+ return sCoinTypeToName[coinType];
4956
+ }
4942
4957
  const coinTypeRegex = new RegExp(`((0x[^:]+::[^:]+::[^<>]+))(?![^<>]*<)`);
4943
4958
  const coinTypeMatch = coinType.match(coinTypeRegex);
4944
4959
  const isMarketCoinType = coinType.includes("reserve::MarketCoin");