@scallop-io/sui-scallop-sdk 0.44.4 → 0.44.6
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 -0
- package/dist/index.js +145 -66
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +144 -66
- package/dist/index.mjs.map +1 -1
- package/dist/models/scallopQuery.d.ts +2 -1
- package/dist/types/address.d.ts +3 -0
- package/dist/types/query/borrowIncentive.d.ts +6 -1
- package/dist/types/query/core.d.ts +13 -1
- package/dist/types/query/spool.d.ts +9 -2
- package/package.json +1 -1
- package/src/constants/common.ts +3 -0
- package/src/models/scallopAddress.ts +3 -0
- package/src/models/scallopQuery.ts +6 -2
- package/src/models/scallopUtils.ts +3 -1
- package/src/queries/coreQuery.ts +36 -2
- package/src/queries/portfolioQuery.ts +38 -29
- package/src/queries/spoolQuery.ts +76 -29
- package/src/types/address.ts +3 -0
- package/src/types/query/borrowIncentive.ts +6 -1
- package/src/types/query/core.ts +11 -0
- package/src/types/query/spool.ts +9 -2
- package/src/utils/query.ts +22 -3
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const API_BASE_URL = "https://sui.api.scallop.io";
|
|
2
2
|
export declare const ADDRESSES_ID = "6462a088a7ace142bb6d7e9b";
|
|
3
3
|
export declare const PROTOCOL_OBJECT_ID = "0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf";
|
|
4
|
+
export declare const BORROW_FEE_PROTOCOL_ID = "0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da";
|
|
4
5
|
export declare const SUPPORT_POOLS: readonly ["eth", "btc", "usdc", "usdt", "sui", "apt", "sol", "cetus", "afsui", "hasui", "vsui"];
|
|
5
6
|
export declare const SUPPORT_COLLATERALS: readonly ["eth", "btc", "usdc", "usdt", "sui", "apt", "sol", "cetus", "afsui", "hasui", "vsui"];
|
|
6
7
|
export declare const SUPPORT_SPOOLS: readonly ["ssui", "susdc", "susdt"];
|
package/dist/index.js
CHANGED
|
@@ -32,6 +32,7 @@ var src_exports = {};
|
|
|
32
32
|
__export(src_exports, {
|
|
33
33
|
ADDRESSES_ID: () => ADDRESSES_ID,
|
|
34
34
|
API_BASE_URL: () => API_BASE_URL,
|
|
35
|
+
BORROW_FEE_PROTOCOL_ID: () => BORROW_FEE_PROTOCOL_ID,
|
|
35
36
|
PROTOCOL_OBJECT_ID: () => PROTOCOL_OBJECT_ID,
|
|
36
37
|
SUPPORT_BORROW_INCENTIVE_POOLS: () => SUPPORT_BORROW_INCENTIVE_POOLS,
|
|
37
38
|
SUPPORT_BORROW_INCENTIVE_REWARDS: () => SUPPORT_BORROW_INCENTIVE_REWARDS,
|
|
@@ -63,6 +64,7 @@ module.exports = __toCommonJS(src_exports);
|
|
|
63
64
|
var API_BASE_URL = "https://sui.api.scallop.io";
|
|
64
65
|
var ADDRESSES_ID = "6462a088a7ace142bb6d7e9b";
|
|
65
66
|
var PROTOCOL_OBJECT_ID = "0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf";
|
|
67
|
+
var BORROW_FEE_PROTOCOL_ID = "0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da";
|
|
66
68
|
var SUPPORT_POOLS = [
|
|
67
69
|
"eth",
|
|
68
70
|
"btc",
|
|
@@ -208,6 +210,7 @@ var EMPTY_ADDRESSES = {
|
|
|
208
210
|
core: {
|
|
209
211
|
version: "",
|
|
210
212
|
versionCap: "",
|
|
213
|
+
object: "",
|
|
211
214
|
market: "",
|
|
212
215
|
adminCap: "",
|
|
213
216
|
coinDecimalsRegistry: "",
|
|
@@ -385,6 +388,7 @@ var EMPTY_ADDRESSES = {
|
|
|
385
388
|
spool: {
|
|
386
389
|
id: "",
|
|
387
390
|
adminCap: "",
|
|
391
|
+
object: "",
|
|
388
392
|
pools: {
|
|
389
393
|
ssui: {
|
|
390
394
|
id: "",
|
|
@@ -399,6 +403,7 @@ var EMPTY_ADDRESSES = {
|
|
|
399
403
|
borrowIncentive: {
|
|
400
404
|
id: "",
|
|
401
405
|
adminCap: "",
|
|
406
|
+
object: "",
|
|
402
407
|
query: "",
|
|
403
408
|
incentivePools: "",
|
|
404
409
|
incentiveAccounts: ""
|
|
@@ -748,6 +753,7 @@ var parseOriginMarketPoolData = (originMarketPoolData) => {
|
|
|
748
753
|
reserveAmount: Number(originMarketPoolData.reserve),
|
|
749
754
|
reserveFactor: Number(originMarketPoolData.reserveFactor.value) / 2 ** 32,
|
|
750
755
|
borrowWeight: Number(originMarketPoolData.borrowWeight.value) / 2 ** 32,
|
|
756
|
+
borrowFee: Number(originMarketPoolData.borrowFeeRate.value) / 2 ** 32,
|
|
751
757
|
// Parse origin data required for additional display.
|
|
752
758
|
baseBorrowRate: Number(originMarketPoolData.baseBorrowRatePerSec.value) / 2 ** 32,
|
|
753
759
|
borrowRateOnHighKink: Number(originMarketPoolData.borrowRateOnHighKink.value) / 2 ** 32,
|
|
@@ -918,12 +924,14 @@ var calculateSpoolData = (parsedSpoolData, stakeMarketCoinPrice, stakeMarketCoin
|
|
|
918
924
|
var parseOriginSpoolRewardPoolData = (originSpoolRewardPoolData) => {
|
|
919
925
|
return {
|
|
920
926
|
claimedRewards: Number(originSpoolRewardPoolData.claimed_rewards),
|
|
921
|
-
exchangeRateNumerator: Number(
|
|
922
|
-
originSpoolRewardPoolData.exchange_rate_numerator
|
|
923
|
-
),
|
|
924
927
|
exchangeRateDenominator: Number(
|
|
925
928
|
originSpoolRewardPoolData.exchange_rate_denominator
|
|
926
929
|
),
|
|
930
|
+
exchangeRateNumerator: Number(
|
|
931
|
+
originSpoolRewardPoolData.exchange_rate_numerator
|
|
932
|
+
),
|
|
933
|
+
feeRateDenominator: Number(originSpoolRewardPoolData.fee_rate_denominator),
|
|
934
|
+
feeRateNumerator: Number(originSpoolRewardPoolData.fee_rate_numerator),
|
|
927
935
|
rewards: Number(originSpoolRewardPoolData.rewards),
|
|
928
936
|
spoolId: String(originSpoolRewardPoolData.spool_id)
|
|
929
937
|
};
|
|
@@ -948,6 +956,7 @@ var calculateSpoolRewardPoolData = (parsedSpoolData, parsedSpoolRewardPoolData,
|
|
|
948
956
|
const claimedRewardValue = claimedRewardCoin.multipliedBy(rewardCoinPrice);
|
|
949
957
|
const rewardValueForYear = (0, import_bignumber.default)(rewardPerSec).shiftedBy(-1 * rewardCoinDecimal).multipliedBy(rateYearFactor).multipliedBy(rewardCoinPrice);
|
|
950
958
|
const rewardRate = rewardValueForYear.dividedBy(calculatedSpoolData.stakedValue).isFinite() ? rewardValueForYear.dividedBy(calculatedSpoolData.stakedValue).toNumber() : Infinity;
|
|
959
|
+
const rewardFeeRate = (0, import_bignumber.default)(parsedSpoolRewardPoolData.feeRateNumerator).dividedBy(parsedSpoolRewardPoolData.feeRateDenominator).toNumber();
|
|
951
960
|
return {
|
|
952
961
|
rewardApr: rewardRate,
|
|
953
962
|
totalRewardAmount: totalRewardAmount.toNumber(),
|
|
@@ -959,7 +968,8 @@ var calculateSpoolRewardPoolData = (parsedSpoolData, parsedSpoolRewardPoolData,
|
|
|
959
968
|
claimedRewardAmount: claimedRewardAmount.toNumber(),
|
|
960
969
|
claimedRewardCoin: claimedRewardCoin.toNumber(),
|
|
961
970
|
claimedRewardValue: claimedRewardValue.toNumber(),
|
|
962
|
-
rewardPerSec: rewardPerSec.toNumber()
|
|
971
|
+
rewardPerSec: rewardPerSec.toNumber(),
|
|
972
|
+
rewardFee: rewardFeeRate
|
|
963
973
|
};
|
|
964
974
|
};
|
|
965
975
|
var parseOriginBorrowIncentivePoolData = (originBorrowIncentivePoolData) => {
|
|
@@ -1034,6 +1044,12 @@ var parseOriginBorrowIncentiveRewardPoolData = (originBorrowIncentiveRewardPoolD
|
|
|
1034
1044
|
exchangeRateDenominator: Number(
|
|
1035
1045
|
originBorrowIncentiveRewardPoolData.exchange_rate_denominator
|
|
1036
1046
|
),
|
|
1047
|
+
rewardsFeeRateNumerator: Number(
|
|
1048
|
+
originBorrowIncentiveRewardPoolData.rewards_fee_rate_numerator
|
|
1049
|
+
),
|
|
1050
|
+
rewardsFeeRateDenominator: Number(
|
|
1051
|
+
originBorrowIncentiveRewardPoolData.rewards_fee_rate_denominator
|
|
1052
|
+
),
|
|
1037
1053
|
remainingRewards: Number(
|
|
1038
1054
|
originBorrowIncentiveRewardPoolData.remaining_reward
|
|
1039
1055
|
)
|
|
@@ -1063,6 +1079,9 @@ var calculateBorrowIncentiveRewardPoolData = (parsedBorrowIncentivePoolData, par
|
|
|
1063
1079
|
const claimedRewardValue = claimedRewardCoin.multipliedBy(rewardCoinPrice);
|
|
1064
1080
|
const rewardValueForYear = (0, import_bignumber.default)(rewardPerSec).shiftedBy(-1 * rewardCoinDecimal).multipliedBy(rateYearFactor).multipliedBy(rewardCoinPrice);
|
|
1065
1081
|
const rewardRate = rewardValueForYear.dividedBy(calculatedBorrowIncentivePoolData.stakedValue).isFinite() ? rewardValueForYear.dividedBy(calculatedBorrowIncentivePoolData.stakedValue).toNumber() : Infinity;
|
|
1082
|
+
const rewardFeeRate = (0, import_bignumber.default)(
|
|
1083
|
+
parsedBorrowIncentiveRewardPoolData.rewardsFeeRateNumerator
|
|
1084
|
+
).dividedBy(parsedBorrowIncentiveRewardPoolData.rewardsFeeRateDenominator).toNumber();
|
|
1066
1085
|
return {
|
|
1067
1086
|
rewardApr: rewardRate,
|
|
1068
1087
|
totalRewardAmount: totalRewardAmount.toNumber(),
|
|
@@ -1074,7 +1093,8 @@ var calculateBorrowIncentiveRewardPoolData = (parsedBorrowIncentivePoolData, par
|
|
|
1074
1093
|
claimedRewardAmount: claimedRewardAmount.toNumber(),
|
|
1075
1094
|
claimedRewardCoin: claimedRewardCoin.toNumber(),
|
|
1076
1095
|
claimedRewardValue: claimedRewardValue.toNumber(),
|
|
1077
|
-
rewardPerSec: rewardPerSec.toNumber()
|
|
1096
|
+
rewardPerSec: rewardPerSec.toNumber(),
|
|
1097
|
+
rewardFee: rewardFeeRate
|
|
1078
1098
|
};
|
|
1079
1099
|
};
|
|
1080
1100
|
var parseOriginBorrowIncentiveAccountData = (originBorrowIncentiveAccountData) => {
|
|
@@ -1169,6 +1189,7 @@ var queryMarket = async (query) => {
|
|
|
1169
1189
|
reserve: pool.reserve,
|
|
1170
1190
|
reserveFactor: pool.reserveFactor,
|
|
1171
1191
|
borrowWeight: pool.borrowWeight,
|
|
1192
|
+
borrowFeeRate: pool.borrowFeeRate,
|
|
1172
1193
|
baseBorrowRatePerSec: pool.baseBorrowRatePerSec,
|
|
1173
1194
|
borrowRateOnHighKink: pool.borrowRateOnHighKink,
|
|
1174
1195
|
borrowRateOnMidKink: pool.borrowRateOnMidKink,
|
|
@@ -1192,6 +1213,7 @@ var queryMarket = async (query) => {
|
|
|
1192
1213
|
midKink: parsedMarketPoolData.midKink,
|
|
1193
1214
|
reserveFactor: parsedMarketPoolData.reserveFactor,
|
|
1194
1215
|
borrowWeight: parsedMarketPoolData.borrowWeight,
|
|
1216
|
+
borrowFee: parsedMarketPoolData.borrowFee,
|
|
1195
1217
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
1196
1218
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
1197
1219
|
...calculatedMarketPoolData
|
|
@@ -1276,6 +1298,7 @@ var getMarketPool = async (query, poolCoinName, marketObject, coinPrice) => {
|
|
|
1276
1298
|
let balanceSheet;
|
|
1277
1299
|
let borrowIndex;
|
|
1278
1300
|
let interestModel;
|
|
1301
|
+
let borrowFeeRate;
|
|
1279
1302
|
if (marketObject) {
|
|
1280
1303
|
if (marketObject.content && "fields" in marketObject.content) {
|
|
1281
1304
|
const fields = marketObject.content.fields;
|
|
@@ -1325,9 +1348,25 @@ var getMarketPool = async (query, poolCoinName, marketObject, coinPrice) => {
|
|
|
1325
1348
|
const dynamicFields = interestModelDynamicFieldObject.content.fields;
|
|
1326
1349
|
interestModel = dynamicFields.value.fields;
|
|
1327
1350
|
}
|
|
1351
|
+
const borrowFeeDynamicFieldObjectResponse = await query.suiKit.client().getDynamicFieldObject({
|
|
1352
|
+
parentId: marketId,
|
|
1353
|
+
name: {
|
|
1354
|
+
type: `${BORROW_FEE_PROTOCOL_ID}::market_dynamic_keys::BorrowFeeKey`,
|
|
1355
|
+
value: {
|
|
1356
|
+
type: {
|
|
1357
|
+
name: coinType.substring(2)
|
|
1358
|
+
}
|
|
1359
|
+
}
|
|
1360
|
+
}
|
|
1361
|
+
});
|
|
1362
|
+
const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse.data;
|
|
1363
|
+
if (borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content) {
|
|
1364
|
+
const dynamicFields = borrowFeeDynamicFieldObject.content.fields;
|
|
1365
|
+
borrowFeeRate = dynamicFields.value.fields;
|
|
1366
|
+
}
|
|
1328
1367
|
}
|
|
1329
1368
|
}
|
|
1330
|
-
if (balanceSheet && borrowIndex && interestModel) {
|
|
1369
|
+
if (balanceSheet && borrowIndex && interestModel && borrowFeeRate) {
|
|
1331
1370
|
const parsedMarketPoolData = parseOriginMarketPoolData({
|
|
1332
1371
|
type: interestModel.type.fields,
|
|
1333
1372
|
maxBorrowRate: interestModel.max_borrow_rate.fields,
|
|
@@ -1341,6 +1380,7 @@ var getMarketPool = async (query, poolCoinName, marketObject, coinPrice) => {
|
|
|
1341
1380
|
reserve: balanceSheet.revenue,
|
|
1342
1381
|
reserveFactor: interestModel.revenue_factor.fields,
|
|
1343
1382
|
borrowWeight: interestModel.borrow_weight.fields,
|
|
1383
|
+
borrowFeeRate,
|
|
1344
1384
|
baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
|
|
1345
1385
|
borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
|
|
1346
1386
|
borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
|
|
@@ -1365,6 +1405,7 @@ var getMarketPool = async (query, poolCoinName, marketObject, coinPrice) => {
|
|
|
1365
1405
|
midKink: parsedMarketPoolData.midKink,
|
|
1366
1406
|
reserveFactor: parsedMarketPoolData.reserveFactor,
|
|
1367
1407
|
borrowWeight: parsedMarketPoolData.borrowWeight,
|
|
1408
|
+
borrowFee: parsedMarketPoolData.borrowFee,
|
|
1368
1409
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
1369
1410
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
1370
1411
|
...calculatedMarketPoolData
|
|
@@ -1479,6 +1520,7 @@ var getMarketCollateral = async (query, collateralCoinName, marketObject, coinPr
|
|
|
1479
1520
|
};
|
|
1480
1521
|
var getObligations = async (query, ownerAddress) => {
|
|
1481
1522
|
const owner = ownerAddress || query.suiKit.currentAddress();
|
|
1523
|
+
const protocolObjectId = query.address.get("core.object") || PROTOCOL_OBJECT_ID;
|
|
1482
1524
|
const keyObjectsResponse = [];
|
|
1483
1525
|
let hasNextPage = false;
|
|
1484
1526
|
let nextCursor = null;
|
|
@@ -1486,7 +1528,7 @@ var getObligations = async (query, ownerAddress) => {
|
|
|
1486
1528
|
const paginatedKeyObjectsResponse = await query.suiKit.client().getOwnedObjects({
|
|
1487
1529
|
owner,
|
|
1488
1530
|
filter: {
|
|
1489
|
-
StructType: `${
|
|
1531
|
+
StructType: `${protocolObjectId}::obligation::ObligationKey`
|
|
1490
1532
|
},
|
|
1491
1533
|
cursor: nextCursor
|
|
1492
1534
|
});
|
|
@@ -1723,6 +1765,7 @@ var getSpools = async (query, stakeMarketCoinNames) => {
|
|
|
1723
1765
|
var getSpool = async (query, marketCoinName, marketPool) => {
|
|
1724
1766
|
const coinName = query.utils.parseCoinName(marketCoinName);
|
|
1725
1767
|
marketPool = marketPool || await query.getMarketPool(coinName);
|
|
1768
|
+
const spoolPkgId = query.address.get(`spool.id`);
|
|
1726
1769
|
const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
|
|
1727
1770
|
const rewardPoolId = query.address.get(
|
|
1728
1771
|
`spool.pools.${marketCoinName}.rewardPoolId`
|
|
@@ -1734,6 +1777,13 @@ var getSpool = async (query, marketCoinName, marketPool) => {
|
|
|
1734
1777
|
showContent: true
|
|
1735
1778
|
}
|
|
1736
1779
|
});
|
|
1780
|
+
const spoolRewardFeeDynamicFieldsResponse = await query.suiKit.client().getDynamicFieldObject({
|
|
1781
|
+
parentId: rewardPoolId,
|
|
1782
|
+
name: {
|
|
1783
|
+
type: `${spoolPkgId}::rewards_pool::RewardsPoolFeeKey`,
|
|
1784
|
+
value: { dummy_field: false }
|
|
1785
|
+
}
|
|
1786
|
+
});
|
|
1737
1787
|
if (marketPool && spoolObjectResponse[0].data && spoolObjectResponse[1].data) {
|
|
1738
1788
|
const rewardCoinName = query.utils.getSpoolRewardCoinName(marketCoinName);
|
|
1739
1789
|
const coinPrices = await query.utils.getCoinPrices([
|
|
@@ -1742,19 +1792,20 @@ var getSpool = async (query, marketCoinName, marketPool) => {
|
|
|
1742
1792
|
]);
|
|
1743
1793
|
const spoolObject = spoolObjectResponse[0].data;
|
|
1744
1794
|
const rewardPoolObject = spoolObjectResponse[1].data;
|
|
1795
|
+
const rewardFeeObject = spoolRewardFeeDynamicFieldsResponse.data;
|
|
1745
1796
|
if (spoolObject.content && "fields" in spoolObject.content) {
|
|
1746
|
-
const
|
|
1797
|
+
const spoolFields = spoolObject.content.fields;
|
|
1747
1798
|
const parsedSpoolData = parseOriginSpoolData({
|
|
1748
|
-
stakeType:
|
|
1749
|
-
maxDistributedPoint:
|
|
1750
|
-
distributedPoint:
|
|
1751
|
-
distributedPointPerPeriod:
|
|
1752
|
-
pointDistributionTime:
|
|
1753
|
-
maxStake:
|
|
1754
|
-
stakes:
|
|
1755
|
-
index:
|
|
1756
|
-
createdAt:
|
|
1757
|
-
lastUpdate:
|
|
1799
|
+
stakeType: spoolFields.stake_type,
|
|
1800
|
+
maxDistributedPoint: spoolFields.max_distributed_point,
|
|
1801
|
+
distributedPoint: spoolFields.distributed_point,
|
|
1802
|
+
distributedPointPerPeriod: spoolFields.distributed_point_per_period,
|
|
1803
|
+
pointDistributionTime: spoolFields.point_distribution_time,
|
|
1804
|
+
maxStake: spoolFields.max_stakes,
|
|
1805
|
+
stakes: spoolFields.stakes,
|
|
1806
|
+
index: spoolFields.index,
|
|
1807
|
+
createdAt: spoolFields.created_at,
|
|
1808
|
+
lastUpdate: spoolFields.last_update
|
|
1758
1809
|
});
|
|
1759
1810
|
const marketCoinPrice = (coinPrices?.[coinName] ?? 0) * marketPool.conversionRate;
|
|
1760
1811
|
const marketCoinDecimal = query.utils.getCoinDecimal(marketCoinName);
|
|
@@ -1763,14 +1814,17 @@ var getSpool = async (query, marketCoinName, marketPool) => {
|
|
|
1763
1814
|
marketCoinPrice,
|
|
1764
1815
|
marketCoinDecimal
|
|
1765
1816
|
);
|
|
1766
|
-
if (rewardPoolObject.content && "fields" in rewardPoolObject.content) {
|
|
1767
|
-
const
|
|
1817
|
+
if (rewardPoolObject.content && rewardFeeObject?.content && "fields" in rewardPoolObject.content && "fields" in rewardFeeObject.content) {
|
|
1818
|
+
const rewardPoolFields = rewardPoolObject.content.fields;
|
|
1819
|
+
const rewardFeeFields = rewardFeeObject.content.fields.value.fields;
|
|
1768
1820
|
const parsedSpoolRewardPoolData = parseOriginSpoolRewardPoolData({
|
|
1769
|
-
claimed_rewards:
|
|
1770
|
-
exchange_rate_numerator:
|
|
1771
|
-
exchange_rate_denominator:
|
|
1772
|
-
|
|
1773
|
-
|
|
1821
|
+
claimed_rewards: rewardPoolFields.claimed_rewards,
|
|
1822
|
+
exchange_rate_numerator: rewardPoolFields.exchange_rate_numerator,
|
|
1823
|
+
exchange_rate_denominator: rewardPoolFields.exchange_rate_denominator,
|
|
1824
|
+
fee_rate_numerator: rewardFeeFields.fee_rate_numerator,
|
|
1825
|
+
fee_rate_denominator: rewardFeeFields.fee_rate_denominator,
|
|
1826
|
+
rewards: rewardPoolFields.rewards,
|
|
1827
|
+
spool_id: rewardPoolFields.spool_id
|
|
1774
1828
|
});
|
|
1775
1829
|
const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
|
|
1776
1830
|
const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
|
|
@@ -1807,8 +1861,8 @@ var getSpool = async (query, marketCoinName, marketPool) => {
|
|
|
1807
1861
|
};
|
|
1808
1862
|
var getStakeAccounts = async (query, ownerAddress) => {
|
|
1809
1863
|
const owner = ownerAddress || query.suiKit.currentAddress();
|
|
1810
|
-
const
|
|
1811
|
-
const stakeAccountType = `${
|
|
1864
|
+
const spoolObjectId = query.address.get("spool.object");
|
|
1865
|
+
const stakeAccountType = `${spoolObjectId}::spool_account::SpoolAccount`;
|
|
1812
1866
|
const stakeObjectsResponse = [];
|
|
1813
1867
|
let hasNextPage = false;
|
|
1814
1868
|
let nextCursor = null;
|
|
@@ -1837,7 +1891,7 @@ var getStakeAccounts = async (query, ownerAddress) => {
|
|
|
1837
1891
|
(types, stakeMarketCoinName) => {
|
|
1838
1892
|
const stakeCoinName = query.utils.parseCoinName(stakeMarketCoinName);
|
|
1839
1893
|
const marketCoinType = query.utils.parseMarketCoinType(stakeCoinName);
|
|
1840
|
-
types[stakeMarketCoinName] = `${
|
|
1894
|
+
types[stakeMarketCoinName] = `${spoolObjectId}::spool_account::SpoolAccount<${marketCoinType}>`;
|
|
1841
1895
|
return types;
|
|
1842
1896
|
},
|
|
1843
1897
|
{}
|
|
@@ -1938,6 +1992,7 @@ var getStakePool = async (query, marketCoinName) => {
|
|
|
1938
1992
|
return stakePool;
|
|
1939
1993
|
};
|
|
1940
1994
|
var getStakeRewardPool = async (query, marketCoinName) => {
|
|
1995
|
+
const spoolPkgId = query.address.get("spool.id");
|
|
1941
1996
|
const poolId = query.address.get(
|
|
1942
1997
|
`spool.pools.${marketCoinName}.rewardPoolId`
|
|
1943
1998
|
);
|
|
@@ -1949,23 +2004,38 @@ var getStakeRewardPool = async (query, marketCoinName) => {
|
|
|
1949
2004
|
showType: true
|
|
1950
2005
|
}
|
|
1951
2006
|
});
|
|
1952
|
-
|
|
2007
|
+
const stakeRewardFeeDynamicFieldsResponse = await query.suiKit.client().getDynamicFieldObject({
|
|
2008
|
+
parentId: poolId,
|
|
2009
|
+
name: {
|
|
2010
|
+
type: `${spoolPkgId}::rewards_pool::RewardsPoolFeeKey`,
|
|
2011
|
+
value: { dummy_field: false }
|
|
2012
|
+
}
|
|
2013
|
+
});
|
|
2014
|
+
if (stakeRewardPoolObjectResponse.data && stakeRewardFeeDynamicFieldsResponse.data) {
|
|
1953
2015
|
const stakeRewardPoolObject = stakeRewardPoolObjectResponse.data;
|
|
2016
|
+
const stakeRewardFeeDynamicFieldObject = stakeRewardFeeDynamicFieldsResponse.data;
|
|
1954
2017
|
const id = stakeRewardPoolObject.objectId;
|
|
1955
2018
|
const type = stakeRewardPoolObject.type;
|
|
1956
|
-
if (stakeRewardPoolObject.content && "fields" in stakeRewardPoolObject.content) {
|
|
1957
|
-
const
|
|
1958
|
-
const
|
|
1959
|
-
const
|
|
1960
|
-
const
|
|
1961
|
-
const
|
|
1962
|
-
|
|
2019
|
+
if (stakeRewardPoolObject.content && stakeRewardFeeDynamicFieldObject.content && "fields" in stakeRewardPoolObject.content && "fields" in stakeRewardFeeDynamicFieldObject.content) {
|
|
2020
|
+
const rewardPoolFields = stakeRewardPoolObject.content.fields;
|
|
2021
|
+
const rewardFeeFields = stakeRewardFeeDynamicFieldObject.content.fields.value.fields;
|
|
2022
|
+
const stakePoolId = String(rewardPoolFields.spool_id);
|
|
2023
|
+
const ratioNumerator = Number(rewardPoolFields.exchange_rate_numerator);
|
|
2024
|
+
const ratioDenominator = Number(
|
|
2025
|
+
rewardPoolFields.exchange_rate_denominator
|
|
2026
|
+
);
|
|
2027
|
+
const rewards = Number(rewardPoolFields.rewards);
|
|
2028
|
+
const claimedRewards = Number(rewardPoolFields.claimed_rewards);
|
|
2029
|
+
const feeRateNumerator = Number(rewardFeeFields.fee_rate_numerator);
|
|
2030
|
+
const feeRateDenominator = Number(rewardFeeFields.fee_rate_denominator);
|
|
1963
2031
|
stakeRewardPool = {
|
|
1964
2032
|
id,
|
|
1965
2033
|
type: (0, import_utils4.normalizeStructTag)(type),
|
|
1966
2034
|
stakePoolId,
|
|
1967
2035
|
ratioNumerator,
|
|
1968
2036
|
ratioDenominator,
|
|
2037
|
+
feeRateNumerator,
|
|
2038
|
+
feeRateDenominator,
|
|
1969
2039
|
rewards,
|
|
1970
2040
|
claimedRewards
|
|
1971
2041
|
};
|
|
@@ -2303,16 +2373,19 @@ var getObligationAccount = async (query, obligationId, ownerAddress, market, coi
|
|
|
2303
2373
|
let totalBorrowedPools = 0;
|
|
2304
2374
|
let totalBorrowedValue = (0, import_bignumber3.default)(0);
|
|
2305
2375
|
let totalBorrowedValueWithWeight = (0, import_bignumber3.default)(0);
|
|
2306
|
-
for (const
|
|
2307
|
-
const
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
const
|
|
2376
|
+
for (const assetCoinName of assetCoinNames) {
|
|
2377
|
+
const collateral = obligationQuery.collaterals.find((collateral2) => {
|
|
2378
|
+
const collateralCoinName = query.utils.parseCoinNameFromType(
|
|
2379
|
+
collateral2.type.name
|
|
2380
|
+
);
|
|
2381
|
+
return assetCoinName === collateralCoinName;
|
|
2382
|
+
});
|
|
2383
|
+
const coinDecimal = query.utils.getCoinDecimal(assetCoinName);
|
|
2384
|
+
const marketCollateral = market.collaterals[assetCoinName];
|
|
2385
|
+
const coinPrice = coinPrices?.[assetCoinName];
|
|
2386
|
+
const coinAmount = coinAmounts?.[assetCoinName] ?? 0;
|
|
2314
2387
|
if (marketCollateral && coinPrice) {
|
|
2315
|
-
const depositedAmount = (0, import_bignumber3.default)(collateral
|
|
2388
|
+
const depositedAmount = (0, import_bignumber3.default)(collateral?.amount ?? 0);
|
|
2316
2389
|
const depositedCoin = depositedAmount.shiftedBy(-1 * coinDecimal);
|
|
2317
2390
|
const depositedValue = depositedCoin.multipliedBy(coinPrice);
|
|
2318
2391
|
const borrowCapacityValue = depositedValue.multipliedBy(
|
|
@@ -2333,10 +2406,10 @@ var getObligationAccount = async (query, obligationId, ownerAddress, market, coi
|
|
|
2333
2406
|
if (depositedAmount.isGreaterThan(0)) {
|
|
2334
2407
|
totalDepositedPools++;
|
|
2335
2408
|
}
|
|
2336
|
-
collaterals[
|
|
2337
|
-
coinName:
|
|
2338
|
-
coinType:
|
|
2339
|
-
symbol: query.utils.parseSymbol(
|
|
2409
|
+
collaterals[assetCoinName] = {
|
|
2410
|
+
coinName: assetCoinName,
|
|
2411
|
+
coinType: query.utils.parseCoinType(assetCoinName),
|
|
2412
|
+
symbol: query.utils.parseSymbol(assetCoinName),
|
|
2340
2413
|
coinDecimal,
|
|
2341
2414
|
coinPrice,
|
|
2342
2415
|
depositedAmount: depositedAmount.toNumber(),
|
|
@@ -2351,16 +2424,19 @@ var getObligationAccount = async (query, obligationId, ownerAddress, market, coi
|
|
|
2351
2424
|
};
|
|
2352
2425
|
}
|
|
2353
2426
|
}
|
|
2354
|
-
for (const
|
|
2355
|
-
const
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2427
|
+
for (const assetCoinName of assetCoinNames) {
|
|
2428
|
+
const debt = obligationQuery.debts.find((debt2) => {
|
|
2429
|
+
const poolCoinName = query.utils.parseCoinNameFromType(
|
|
2430
|
+
debt2.type.name
|
|
2431
|
+
);
|
|
2432
|
+
return assetCoinName === poolCoinName;
|
|
2433
|
+
});
|
|
2434
|
+
const coinDecimal = query.utils.getCoinDecimal(assetCoinName);
|
|
2435
|
+
const marketPool = market.pools[assetCoinName];
|
|
2436
|
+
const coinPrice = coinPrices?.[assetCoinName];
|
|
2361
2437
|
if (marketPool && coinPrice) {
|
|
2362
|
-
const increasedRate = marketPool.borrowIndex / Number(debt.borrowIndex) - 1;
|
|
2363
|
-
const borrowedAmount = (0, import_bignumber3.default)(debt
|
|
2438
|
+
const increasedRate = debt?.borrowIndex ? marketPool.borrowIndex / Number(debt.borrowIndex) - 1 : 0;
|
|
2439
|
+
const borrowedAmount = (0, import_bignumber3.default)(debt?.amount ?? 0);
|
|
2364
2440
|
const borrowedCoin = borrowedAmount.shiftedBy(-1 * coinDecimal);
|
|
2365
2441
|
const availableRepayAmount = borrowedAmount.multipliedBy(
|
|
2366
2442
|
increasedRate + 1
|
|
@@ -2379,17 +2455,17 @@ var getObligationAccount = async (query, obligationId, ownerAddress, market, coi
|
|
|
2379
2455
|
if (borrowedAmount.isGreaterThan(0)) {
|
|
2380
2456
|
totalBorrowedPools++;
|
|
2381
2457
|
}
|
|
2382
|
-
debts[
|
|
2383
|
-
coinName:
|
|
2384
|
-
coinType:
|
|
2385
|
-
symbol: query.utils.parseSymbol(
|
|
2458
|
+
debts[assetCoinName] = {
|
|
2459
|
+
coinName: assetCoinName,
|
|
2460
|
+
coinType: query.utils.parseCoinType(assetCoinName),
|
|
2461
|
+
symbol: query.utils.parseSymbol(assetCoinName),
|
|
2386
2462
|
coinDecimal,
|
|
2387
2463
|
coinPrice,
|
|
2388
2464
|
borrowedAmount: borrowedAmount.toNumber(),
|
|
2389
2465
|
borrowedCoin: borrowedCoin.toNumber(),
|
|
2390
2466
|
borrowedValue: borrowedValue.toNumber(),
|
|
2391
2467
|
borrowedValueWithWeight: borrowedValueWithWeight.toNumber(),
|
|
2392
|
-
borrowIndex: Number(debt
|
|
2468
|
+
borrowIndex: Number(debt?.borrowIndex ?? 0),
|
|
2393
2469
|
availableBorrowAmount: 0,
|
|
2394
2470
|
availableBorrowCoin: 0,
|
|
2395
2471
|
availableRepayAmount: availableRepayAmount.toNumber(),
|
|
@@ -2840,10 +2916,11 @@ var ScallopQuery = class {
|
|
|
2840
2916
|
* borrowing and obligation information for specific pool.
|
|
2841
2917
|
*
|
|
2842
2918
|
* @param obligationId - The obligation id.
|
|
2919
|
+
* @param ownerAddress - The owner address.
|
|
2843
2920
|
* @return Borrowing and collateral information.
|
|
2844
2921
|
*/
|
|
2845
|
-
async getObligationAccount(obligationId) {
|
|
2846
|
-
return await getObligationAccount(this, obligationId);
|
|
2922
|
+
async getObligationAccount(obligationId, ownerAddress) {
|
|
2923
|
+
return await getObligationAccount(this, obligationId, ownerAddress);
|
|
2847
2924
|
}
|
|
2848
2925
|
/**
|
|
2849
2926
|
* Get total value locked.
|
|
@@ -2963,8 +3040,9 @@ var ScallopUtils = class {
|
|
|
2963
3040
|
* @return Market coin type.
|
|
2964
3041
|
*/
|
|
2965
3042
|
parseMarketCoinType(coinName) {
|
|
3043
|
+
const protocolObjectId = this._address.get("core.object") || PROTOCOL_OBJECT_ID;
|
|
2966
3044
|
const coinType = this.parseCoinType(coinName);
|
|
2967
|
-
return `${
|
|
3045
|
+
return `${protocolObjectId}::reserve::MarketCoin<${coinType}>`;
|
|
2968
3046
|
}
|
|
2969
3047
|
parseCoinNameFromType(coinType) {
|
|
2970
3048
|
coinType = (0, import_utils9.normalizeStructTag)(coinType);
|
|
@@ -4659,6 +4737,7 @@ var Scallop = class {
|
|
|
4659
4737
|
0 && (module.exports = {
|
|
4660
4738
|
ADDRESSES_ID,
|
|
4661
4739
|
API_BASE_URL,
|
|
4740
|
+
BORROW_FEE_PROTOCOL_ID,
|
|
4662
4741
|
PROTOCOL_OBJECT_ID,
|
|
4663
4742
|
SUPPORT_BORROW_INCENTIVE_POOLS,
|
|
4664
4743
|
SUPPORT_BORROW_INCENTIVE_REWARDS,
|