@scallop-io/sui-scallop-sdk 0.44.14 → 0.44.16
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/common.d.ts +1 -1
- package/dist/index.js +84 -54
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +84 -54
- package/dist/index.mjs.map +1 -1
- package/dist/models/scallopBuilder.d.ts +2 -2
- package/dist/models/scallopQuery.d.ts +12 -3
- package/dist/queries/coreQuery.d.ts +3 -3
- package/dist/queries/spoolQuery.d.ts +3 -0
- package/dist/types/query/borrowIncentive.d.ts +0 -5
- package/dist/types/query/portfolio.d.ts +2 -1
- package/dist/types/query/spool.d.ts +0 -7
- package/package.json +1 -1
- package/src/builders/spoolBuilder.ts +2 -2
- package/src/constants/common.ts +8 -1
- package/src/constants/enum.ts +6 -0
- package/src/models/scallopAddress.ts +16 -0
- package/src/models/scallopBuilder.ts +5 -5
- package/src/queries/portfolioQuery.ts +5 -0
- package/src/queries/spoolQuery.ts +39 -47
- package/src/types/query/borrowIncentive.ts +0 -5
- package/src/types/query/portfolio.ts +4 -1
- package/src/types/query/spool.ts +0 -7
- package/src/utils/query.ts +0 -18
package/dist/index.mjs
CHANGED
|
@@ -30,7 +30,14 @@ var SUPPORT_COLLATERALS = [
|
|
|
30
30
|
"hasui",
|
|
31
31
|
"vsui"
|
|
32
32
|
];
|
|
33
|
-
var SUPPORT_SPOOLS = [
|
|
33
|
+
var SUPPORT_SPOOLS = [
|
|
34
|
+
"ssui",
|
|
35
|
+
"susdc",
|
|
36
|
+
"susdt",
|
|
37
|
+
"safsui",
|
|
38
|
+
"shasui",
|
|
39
|
+
"svsui"
|
|
40
|
+
];
|
|
34
41
|
var SUPPORT_SPOOLS_REWARDS = ["sui"];
|
|
35
42
|
var SUPPORT_BORROW_INCENTIVE_POOLS = ["sui", "usdc", "usdt"];
|
|
36
43
|
var SUPPORT_BORROW_INCENTIVE_REWARDS = ["sui"];
|
|
@@ -104,12 +111,18 @@ var marketCoins = {
|
|
|
104
111
|
var stakeMarketCoins = {
|
|
105
112
|
ssui: "ssui",
|
|
106
113
|
susdc: "susdc",
|
|
107
|
-
susdt: "susdt"
|
|
114
|
+
susdt: "susdt",
|
|
115
|
+
safsui: "safsui",
|
|
116
|
+
shasui: "shasui",
|
|
117
|
+
svsui: "svsui"
|
|
108
118
|
};
|
|
109
119
|
var spoolRewardCoins = {
|
|
110
120
|
ssui: "sui",
|
|
111
121
|
susdc: "sui",
|
|
112
|
-
susdt: "sui"
|
|
122
|
+
susdt: "sui",
|
|
123
|
+
safsui: "sui",
|
|
124
|
+
shasui: "sui",
|
|
125
|
+
svsui: "sui"
|
|
113
126
|
};
|
|
114
127
|
var borrowIncentiveRewardCoins = {
|
|
115
128
|
sui: "sui",
|
|
@@ -337,6 +350,22 @@ var EMPTY_ADDRESSES = {
|
|
|
337
350
|
susdc: {
|
|
338
351
|
id: "",
|
|
339
352
|
rewardPoolId: ""
|
|
353
|
+
},
|
|
354
|
+
susdt: {
|
|
355
|
+
id: "",
|
|
356
|
+
rewardPoolId: ""
|
|
357
|
+
},
|
|
358
|
+
safsui: {
|
|
359
|
+
id: "",
|
|
360
|
+
rewardPoolId: ""
|
|
361
|
+
},
|
|
362
|
+
shasui: {
|
|
363
|
+
id: "",
|
|
364
|
+
rewardPoolId: ""
|
|
365
|
+
},
|
|
366
|
+
svsui: {
|
|
367
|
+
id: "",
|
|
368
|
+
rewardPoolId: ""
|
|
340
369
|
}
|
|
341
370
|
}
|
|
342
371
|
},
|
|
@@ -870,8 +899,6 @@ var parseOriginSpoolRewardPoolData = (originSpoolRewardPoolData) => {
|
|
|
870
899
|
exchangeRateNumerator: Number(
|
|
871
900
|
originSpoolRewardPoolData.exchange_rate_numerator
|
|
872
901
|
),
|
|
873
|
-
feeRateDenominator: Number(originSpoolRewardPoolData.fee_rate_denominator),
|
|
874
|
-
feeRateNumerator: Number(originSpoolRewardPoolData.fee_rate_numerator),
|
|
875
902
|
rewards: Number(originSpoolRewardPoolData.rewards),
|
|
876
903
|
spoolId: String(originSpoolRewardPoolData.spool_id)
|
|
877
904
|
};
|
|
@@ -896,7 +923,6 @@ var calculateSpoolRewardPoolData = (parsedSpoolData, parsedSpoolRewardPoolData,
|
|
|
896
923
|
const claimedRewardValue = claimedRewardCoin.multipliedBy(rewardCoinPrice);
|
|
897
924
|
const rewardValueForYear = BigNumber(rewardPerSec).shiftedBy(-1 * rewardCoinDecimal).multipliedBy(rateYearFactor).multipliedBy(rewardCoinPrice);
|
|
898
925
|
const rewardRate = rewardValueForYear.dividedBy(calculatedSpoolData.stakedValue).isFinite() ? rewardValueForYear.dividedBy(calculatedSpoolData.stakedValue).toNumber() : Infinity;
|
|
899
|
-
const rewardFeeRate = BigNumber(parsedSpoolRewardPoolData.feeRateNumerator).dividedBy(parsedSpoolRewardPoolData.feeRateDenominator).toNumber();
|
|
900
926
|
return {
|
|
901
927
|
rewardApr: rewardRate,
|
|
902
928
|
totalRewardAmount: totalRewardAmount.toNumber(),
|
|
@@ -908,8 +934,7 @@ var calculateSpoolRewardPoolData = (parsedSpoolData, parsedSpoolRewardPoolData,
|
|
|
908
934
|
claimedRewardAmount: claimedRewardAmount.toNumber(),
|
|
909
935
|
claimedRewardCoin: claimedRewardCoin.toNumber(),
|
|
910
936
|
claimedRewardValue: claimedRewardValue.toNumber(),
|
|
911
|
-
rewardPerSec: rewardPerSec.toNumber()
|
|
912
|
-
rewardFee: rewardFeeRate
|
|
937
|
+
rewardPerSec: rewardPerSec.toNumber()
|
|
913
938
|
};
|
|
914
939
|
};
|
|
915
940
|
var parseOriginBorrowIncentivePoolData = (originBorrowIncentivePoolData) => {
|
|
@@ -984,12 +1009,6 @@ var parseOriginBorrowIncentiveRewardPoolData = (originBorrowIncentiveRewardPoolD
|
|
|
984
1009
|
exchangeRateDenominator: Number(
|
|
985
1010
|
originBorrowIncentiveRewardPoolData.exchange_rate_denominator
|
|
986
1011
|
),
|
|
987
|
-
rewardsFeeRateNumerator: Number(
|
|
988
|
-
originBorrowIncentiveRewardPoolData.rewards_fee_rate_numerator
|
|
989
|
-
),
|
|
990
|
-
rewardsFeeRateDenominator: Number(
|
|
991
|
-
originBorrowIncentiveRewardPoolData.rewards_fee_rate_denominator
|
|
992
|
-
),
|
|
993
1012
|
remainingRewards: Number(
|
|
994
1013
|
originBorrowIncentiveRewardPoolData.remaining_reward
|
|
995
1014
|
)
|
|
@@ -1019,9 +1038,6 @@ var calculateBorrowIncentiveRewardPoolData = (parsedBorrowIncentivePoolData, par
|
|
|
1019
1038
|
const claimedRewardValue = claimedRewardCoin.multipliedBy(rewardCoinPrice);
|
|
1020
1039
|
const rewardValueForYear = BigNumber(rewardPerSec).shiftedBy(-1 * rewardCoinDecimal).multipliedBy(rateYearFactor).multipliedBy(rewardCoinPrice);
|
|
1021
1040
|
const rewardRate = rewardValueForYear.dividedBy(calculatedBorrowIncentivePoolData.stakedValue).isFinite() ? rewardValueForYear.dividedBy(calculatedBorrowIncentivePoolData.stakedValue).toNumber() : Infinity;
|
|
1022
|
-
const rewardFeeRate = BigNumber(
|
|
1023
|
-
parsedBorrowIncentiveRewardPoolData.rewardsFeeRateNumerator
|
|
1024
|
-
).dividedBy(parsedBorrowIncentiveRewardPoolData.rewardsFeeRateDenominator).toNumber();
|
|
1025
1041
|
return {
|
|
1026
1042
|
rewardApr: rewardRate,
|
|
1027
1043
|
totalRewardAmount: totalRewardAmount.toNumber(),
|
|
@@ -1033,8 +1049,7 @@ var calculateBorrowIncentiveRewardPoolData = (parsedBorrowIncentivePoolData, par
|
|
|
1033
1049
|
claimedRewardAmount: claimedRewardAmount.toNumber(),
|
|
1034
1050
|
claimedRewardCoin: claimedRewardCoin.toNumber(),
|
|
1035
1051
|
claimedRewardValue: claimedRewardValue.toNumber(),
|
|
1036
|
-
rewardPerSec: rewardPerSec.toNumber()
|
|
1037
|
-
rewardFee: rewardFeeRate
|
|
1052
|
+
rewardPerSec: rewardPerSec.toNumber()
|
|
1038
1053
|
};
|
|
1039
1054
|
};
|
|
1040
1055
|
var parseOriginBorrowIncentiveAccountData = (originBorrowIncentiveAccountData) => {
|
|
@@ -1815,7 +1830,6 @@ var getSpools = async (query, stakeMarketCoinNames, indexer = false) => {
|
|
|
1815
1830
|
var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPrices) => {
|
|
1816
1831
|
const coinName = query.utils.parseCoinName(marketCoinName);
|
|
1817
1832
|
marketPool = marketPool || await query.getMarketPool(coinName, indexer);
|
|
1818
|
-
const spoolPkgId = query.address.get(`spool.id`);
|
|
1819
1833
|
const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
|
|
1820
1834
|
const rewardPoolId = query.address.get(
|
|
1821
1835
|
`spool.pools.${marketCoinName}.rewardPoolId`
|
|
@@ -1836,19 +1850,11 @@ var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPr
|
|
|
1836
1850
|
showContent: true
|
|
1837
1851
|
}
|
|
1838
1852
|
});
|
|
1839
|
-
const spoolRewardFeeDynamicFieldsResponse = await query.suiKit.client().getDynamicFieldObject({
|
|
1840
|
-
parentId: rewardPoolId,
|
|
1841
|
-
name: {
|
|
1842
|
-
type: `${spoolPkgId}::rewards_pool::RewardsPoolFeeKey`,
|
|
1843
|
-
value: { dummy_field: false }
|
|
1844
|
-
}
|
|
1845
|
-
});
|
|
1846
1853
|
if (marketPool && spoolObjectResponse[0].data && spoolObjectResponse[1].data) {
|
|
1847
1854
|
const rewardCoinName = query.utils.getSpoolRewardCoinName(marketCoinName);
|
|
1848
1855
|
coinPrices = coinPrices || await query.utils.getCoinPrices([coinName, rewardCoinName]);
|
|
1849
1856
|
const spoolObject = spoolObjectResponse[0].data;
|
|
1850
1857
|
const rewardPoolObject = spoolObjectResponse[1].data;
|
|
1851
|
-
const rewardFeeObject = spoolRewardFeeDynamicFieldsResponse.data;
|
|
1852
1858
|
if (spoolObject.content && "fields" in spoolObject.content) {
|
|
1853
1859
|
const spoolFields = spoolObject.content.fields;
|
|
1854
1860
|
const parsedSpoolData = parseOriginSpoolData({
|
|
@@ -1870,15 +1876,12 @@ var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPr
|
|
|
1870
1876
|
marketCoinPrice,
|
|
1871
1877
|
marketCoinDecimal
|
|
1872
1878
|
);
|
|
1873
|
-
if (rewardPoolObject.content &&
|
|
1879
|
+
if (rewardPoolObject.content && "fields" in rewardPoolObject.content) {
|
|
1874
1880
|
const rewardPoolFields = rewardPoolObject.content.fields;
|
|
1875
|
-
const rewardFeeFields = rewardFeeObject.content.fields.value.fields;
|
|
1876
1881
|
const parsedSpoolRewardPoolData = parseOriginSpoolRewardPoolData({
|
|
1877
1882
|
claimed_rewards: rewardPoolFields.claimed_rewards,
|
|
1878
1883
|
exchange_rate_numerator: rewardPoolFields.exchange_rate_numerator,
|
|
1879
1884
|
exchange_rate_denominator: rewardPoolFields.exchange_rate_denominator,
|
|
1880
|
-
fee_rate_numerator: rewardFeeFields.fee_rate_numerator,
|
|
1881
|
-
fee_rate_denominator: rewardFeeFields.fee_rate_denominator,
|
|
1882
1885
|
rewards: rewardPoolFields.rewards,
|
|
1883
1886
|
spool_id: rewardPoolFields.spool_id
|
|
1884
1887
|
});
|
|
@@ -1943,7 +1946,10 @@ var getStakeAccounts = async (query, ownerAddress) => {
|
|
|
1943
1946
|
const stakeAccounts = {
|
|
1944
1947
|
ssui: [],
|
|
1945
1948
|
susdc: [],
|
|
1946
|
-
susdt: []
|
|
1949
|
+
susdt: [],
|
|
1950
|
+
safsui: [],
|
|
1951
|
+
shasui: [],
|
|
1952
|
+
svsui: []
|
|
1947
1953
|
};
|
|
1948
1954
|
const stakeMarketCoinTypes = Object.keys(stakeAccounts).reduce(
|
|
1949
1955
|
(types, stakeMarketCoinName) => {
|
|
@@ -2000,6 +2006,39 @@ var getStakeAccounts = async (query, ownerAddress) => {
|
|
|
2000
2006
|
points,
|
|
2001
2007
|
totalPoints
|
|
2002
2008
|
});
|
|
2009
|
+
} else if (normalizeStructTag3(type) === stakeMarketCoinTypes.safsui) {
|
|
2010
|
+
stakeAccounts.safsui.push({
|
|
2011
|
+
id,
|
|
2012
|
+
type: normalizeStructTag3(type),
|
|
2013
|
+
stakePoolId,
|
|
2014
|
+
stakeType: normalizeStructTag3(stakeType),
|
|
2015
|
+
staked,
|
|
2016
|
+
index,
|
|
2017
|
+
points,
|
|
2018
|
+
totalPoints
|
|
2019
|
+
});
|
|
2020
|
+
} else if (normalizeStructTag3(type) === stakeMarketCoinTypes.shasui) {
|
|
2021
|
+
stakeAccounts.shasui.push({
|
|
2022
|
+
id,
|
|
2023
|
+
type: normalizeStructTag3(type),
|
|
2024
|
+
stakePoolId,
|
|
2025
|
+
stakeType: normalizeStructTag3(stakeType),
|
|
2026
|
+
staked,
|
|
2027
|
+
index,
|
|
2028
|
+
points,
|
|
2029
|
+
totalPoints
|
|
2030
|
+
});
|
|
2031
|
+
} else if (normalizeStructTag3(type) === stakeMarketCoinTypes.svsui) {
|
|
2032
|
+
stakeAccounts.svsui.push({
|
|
2033
|
+
id,
|
|
2034
|
+
type: normalizeStructTag3(type),
|
|
2035
|
+
stakePoolId,
|
|
2036
|
+
stakeType: normalizeStructTag3(stakeType),
|
|
2037
|
+
staked,
|
|
2038
|
+
index,
|
|
2039
|
+
points,
|
|
2040
|
+
totalPoints
|
|
2041
|
+
});
|
|
2003
2042
|
}
|
|
2004
2043
|
}
|
|
2005
2044
|
}
|
|
@@ -2050,7 +2089,6 @@ var getStakePool = async (query, marketCoinName) => {
|
|
|
2050
2089
|
return stakePool;
|
|
2051
2090
|
};
|
|
2052
2091
|
var getStakeRewardPool = async (query, marketCoinName) => {
|
|
2053
|
-
const spoolPkgId = query.address.get("spool.id");
|
|
2054
2092
|
const poolId = query.address.get(
|
|
2055
2093
|
`spool.pools.${marketCoinName}.rewardPoolId`
|
|
2056
2094
|
);
|
|
@@ -2062,21 +2100,12 @@ var getStakeRewardPool = async (query, marketCoinName) => {
|
|
|
2062
2100
|
showType: true
|
|
2063
2101
|
}
|
|
2064
2102
|
});
|
|
2065
|
-
|
|
2066
|
-
parentId: poolId,
|
|
2067
|
-
name: {
|
|
2068
|
-
type: `${spoolPkgId}::rewards_pool::RewardsPoolFeeKey`,
|
|
2069
|
-
value: { dummy_field: false }
|
|
2070
|
-
}
|
|
2071
|
-
});
|
|
2072
|
-
if (stakeRewardPoolObjectResponse.data && stakeRewardFeeDynamicFieldsResponse.data) {
|
|
2103
|
+
if (stakeRewardPoolObjectResponse.data) {
|
|
2073
2104
|
const stakeRewardPoolObject = stakeRewardPoolObjectResponse.data;
|
|
2074
|
-
const stakeRewardFeeDynamicFieldObject = stakeRewardFeeDynamicFieldsResponse.data;
|
|
2075
2105
|
const id = stakeRewardPoolObject.objectId;
|
|
2076
2106
|
const type = stakeRewardPoolObject.type;
|
|
2077
|
-
if (stakeRewardPoolObject.content &&
|
|
2107
|
+
if (stakeRewardPoolObject.content && "fields" in stakeRewardPoolObject.content) {
|
|
2078
2108
|
const rewardPoolFields = stakeRewardPoolObject.content.fields;
|
|
2079
|
-
const rewardFeeFields = stakeRewardFeeDynamicFieldObject.content.fields.value.fields;
|
|
2080
2109
|
const stakePoolId = String(rewardPoolFields.spool_id);
|
|
2081
2110
|
const ratioNumerator = Number(rewardPoolFields.exchange_rate_numerator);
|
|
2082
2111
|
const ratioDenominator = Number(
|
|
@@ -2084,16 +2113,12 @@ var getStakeRewardPool = async (query, marketCoinName) => {
|
|
|
2084
2113
|
);
|
|
2085
2114
|
const rewards = Number(rewardPoolFields.rewards);
|
|
2086
2115
|
const claimedRewards = Number(rewardPoolFields.claimed_rewards);
|
|
2087
|
-
const feeRateNumerator = Number(rewardFeeFields.fee_rate_numerator);
|
|
2088
|
-
const feeRateDenominator = Number(rewardFeeFields.fee_rate_denominator);
|
|
2089
2116
|
stakeRewardPool = {
|
|
2090
2117
|
id,
|
|
2091
2118
|
type: normalizeStructTag3(type),
|
|
2092
2119
|
stakePoolId,
|
|
2093
2120
|
ratioNumerator,
|
|
2094
2121
|
ratioDenominator,
|
|
2095
|
-
feeRateNumerator,
|
|
2096
|
-
feeRateDenominator,
|
|
2097
2122
|
rewards,
|
|
2098
2123
|
claimedRewards
|
|
2099
2124
|
};
|
|
@@ -2354,6 +2379,9 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
|
|
|
2354
2379
|
);
|
|
2355
2380
|
const suppliedCoin = suppliedAmount.shiftedBy(-1 * coinDecimal);
|
|
2356
2381
|
const suppliedValue = suppliedCoin.multipliedBy(coinPrice ?? 0);
|
|
2382
|
+
const marketCoinPrice = BigNumber3(coinPrice ?? 0).multipliedBy(
|
|
2383
|
+
marketPool?.conversionRate ?? 1
|
|
2384
|
+
);
|
|
2357
2385
|
const unstakedMarketAmount = BigNumber3(marketCoinAmount);
|
|
2358
2386
|
const unstakedMarketCoin = unstakedMarketAmount.shiftedBy(-1 * coinDecimal);
|
|
2359
2387
|
const availableSupplyAmount = BigNumber3(coinAmount);
|
|
@@ -2373,6 +2401,8 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
|
|
|
2373
2401
|
marketCoinType: query.utils.parseMarketCoinType(poolCoinName),
|
|
2374
2402
|
coinDecimal,
|
|
2375
2403
|
coinPrice: coinPrice ?? 0,
|
|
2404
|
+
conversionRate: marketPool?.conversionRate ?? 1,
|
|
2405
|
+
marketCoinPrice: marketCoinPrice.toNumber(),
|
|
2376
2406
|
supplyApr: marketPool?.supplyApr ?? 0,
|
|
2377
2407
|
supplyApy: marketPool?.supplyApy ?? 0,
|
|
2378
2408
|
rewardApr: spool?.rewardApr ?? 0,
|
|
@@ -4400,14 +4430,14 @@ var ScallopBuilder = class {
|
|
|
4400
4430
|
/**
|
|
4401
4431
|
* Request the scallop API to initialize data.
|
|
4402
4432
|
*
|
|
4403
|
-
* @param
|
|
4433
|
+
* @param force - Whether to force initialization.
|
|
4404
4434
|
*/
|
|
4405
|
-
async init(
|
|
4406
|
-
if (
|
|
4435
|
+
async init(force = false) {
|
|
4436
|
+
if (force || !this.address.getAddresses()) {
|
|
4407
4437
|
await this.address.read();
|
|
4408
4438
|
}
|
|
4409
|
-
await this.query.init(
|
|
4410
|
-
await this.utils.init(
|
|
4439
|
+
await this.query.init(force);
|
|
4440
|
+
await this.utils.init(force);
|
|
4411
4441
|
}
|
|
4412
4442
|
/**
|
|
4413
4443
|
* Create a scallop txBlock instance that enhances transaction block.
|