@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/constants/tokenBucket.d.ts +1 -1
- package/dist/index.js +47 -32
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +47 -32
- package/dist/index.mjs.map +1 -1
- package/dist/models/scallopCache.d.ts +1 -0
- package/dist/models/scallopUtils.d.ts +4 -2
- package/dist/utils/query.d.ts +1 -1
- package/package.json +1 -1
- package/src/constants/enum.ts +14 -6
- package/src/constants/tokenBucket.ts +1 -1
- package/src/models/scallopCache.ts +12 -7
- package/src/models/scallopUtils.ts +10 -3
- package/src/queries/borrowIncentiveQuery.ts +5 -7
- package/src/queries/borrowLimitQuery.ts +2 -2
- package/src/queries/isolatedAssetQuery.ts +2 -2
- package/src/queries/portfolioQuery.ts +6 -1
- package/src/queries/supplyLimitQuery.ts +2 -2
- package/src/utils/query.ts +5 -7
- package/src/utils/tokenBucket.ts +1 -1
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 =
|
|
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
|
-
|
|
1365
|
-
parsed.pointType
|
|
1366
|
-
)
|
|
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 =
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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(
|
|
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
|
-
|
|
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 = `
|
|
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 = `
|
|
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 = `
|
|
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
|
-
|
|
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");
|