@scallop-io/sui-scallop-sdk 0.44.3 → 0.44.5
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 +210 -93
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +181 -65
- package/dist/index.mjs.map +1 -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/portfolio.d.ts +13 -0
- 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/scallopUtils.ts +3 -1
- package/src/queries/borrowIncentiveQuery.ts +2 -1
- package/src/queries/coreQuery.ts +39 -4
- package/src/queries/portfolioQuery.ts +59 -5
- package/src/queries/spoolQuery.ts +85 -38
- 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/portfolio.ts +16 -0
- package/src/types/query/spool.ts +9 -2
- package/src/utils/query.ts +25 -6
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: ""
|
|
@@ -705,11 +710,11 @@ var ScallopAddress = class {
|
|
|
705
710
|
};
|
|
706
711
|
|
|
707
712
|
// src/models/scallopClient.ts
|
|
708
|
-
var
|
|
713
|
+
var import_utils19 = require("@mysten/sui.js/utils");
|
|
709
714
|
var import_sui_kit9 = require("@scallop-io/sui-kit");
|
|
710
715
|
|
|
711
716
|
// src/models/scallopUtils.ts
|
|
712
|
-
var
|
|
717
|
+
var import_utils9 = require("@mysten/sui.js/utils");
|
|
713
718
|
var import_sui_kit4 = require("@scallop-io/sui-kit");
|
|
714
719
|
var import_pyth_sui_js = require("@pythnetwork/pyth-sui-js");
|
|
715
720
|
|
|
@@ -717,6 +722,7 @@ var import_pyth_sui_js = require("@pythnetwork/pyth-sui-js");
|
|
|
717
722
|
var import_sui_kit3 = require("@scallop-io/sui-kit");
|
|
718
723
|
|
|
719
724
|
// src/queries/coreQuery.ts
|
|
725
|
+
var import_utils2 = require("@mysten/sui.js/utils");
|
|
720
726
|
var import_sui_kit = require("@scallop-io/sui-kit");
|
|
721
727
|
var import_bignumber2 = __toESM(require("bignumber.js"));
|
|
722
728
|
|
|
@@ -734,7 +740,7 @@ var import_bignumber = __toESM(require("bignumber.js"));
|
|
|
734
740
|
var import_utils = require("@mysten/sui.js/utils");
|
|
735
741
|
var parseOriginMarketPoolData = (originMarketPoolData) => {
|
|
736
742
|
return {
|
|
737
|
-
coinType:
|
|
743
|
+
coinType: (0, import_utils.normalizeStructTag)(originMarketPoolData.type.name),
|
|
738
744
|
// Parse origin data required for basic calculations.
|
|
739
745
|
maxBorrowRate: Number(originMarketPoolData.maxBorrowRate.value) / 2 ** 32,
|
|
740
746
|
borrowRate: Number(originMarketPoolData.interestRate.value) / 2 ** 32,
|
|
@@ -747,6 +753,7 @@ var parseOriginMarketPoolData = (originMarketPoolData) => {
|
|
|
747
753
|
reserveAmount: Number(originMarketPoolData.reserve),
|
|
748
754
|
reserveFactor: Number(originMarketPoolData.reserveFactor.value) / 2 ** 32,
|
|
749
755
|
borrowWeight: Number(originMarketPoolData.borrowWeight.value) / 2 ** 32,
|
|
756
|
+
borrowFee: Number(originMarketPoolData.borrowFeeRate.value) / 2 ** 32,
|
|
750
757
|
// Parse origin data required for additional display.
|
|
751
758
|
baseBorrowRate: Number(originMarketPoolData.baseBorrowRatePerSec.value) / 2 ** 32,
|
|
752
759
|
borrowRateOnHighKink: Number(originMarketPoolData.borrowRateOnHighKink.value) / 2 ** 32,
|
|
@@ -828,7 +835,7 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
|
828
835
|
};
|
|
829
836
|
var parseOriginMarketCollateralData = (originMarketCollateralData) => {
|
|
830
837
|
return {
|
|
831
|
-
coinType:
|
|
838
|
+
coinType: (0, import_utils.normalizeStructTag)(originMarketCollateralData.type.name),
|
|
832
839
|
collateralFactor: Number(originMarketCollateralData.collateralFactor.value) / 2 ** 32,
|
|
833
840
|
liquidationFactor: Number(originMarketCollateralData.liquidationFactor.value) / 2 ** 32,
|
|
834
841
|
liquidationDiscount: Number(originMarketCollateralData.liquidationDiscount.value) / 2 ** 32,
|
|
@@ -860,7 +867,7 @@ var calculateMarketCollateralData = (utils, parsedMarketCollateralData) => {
|
|
|
860
867
|
};
|
|
861
868
|
var parseOriginSpoolData = (originSpoolData) => {
|
|
862
869
|
return {
|
|
863
|
-
stakeType:
|
|
870
|
+
stakeType: (0, import_utils.normalizeStructTag)(originSpoolData.stakeType.fields.name),
|
|
864
871
|
maxPoint: Number(originSpoolData.maxDistributedPoint),
|
|
865
872
|
distributedPoint: Number(originSpoolData.distributedPoint),
|
|
866
873
|
pointPerPeriod: Number(originSpoolData.distributedPointPerPeriod),
|
|
@@ -917,12 +924,14 @@ var calculateSpoolData = (parsedSpoolData, stakeMarketCoinPrice, stakeMarketCoin
|
|
|
917
924
|
var parseOriginSpoolRewardPoolData = (originSpoolRewardPoolData) => {
|
|
918
925
|
return {
|
|
919
926
|
claimedRewards: Number(originSpoolRewardPoolData.claimed_rewards),
|
|
920
|
-
exchangeRateNumerator: Number(
|
|
921
|
-
originSpoolRewardPoolData.exchange_rate_numerator
|
|
922
|
-
),
|
|
923
927
|
exchangeRateDenominator: Number(
|
|
924
928
|
originSpoolRewardPoolData.exchange_rate_denominator
|
|
925
929
|
),
|
|
930
|
+
exchangeRateNumerator: Number(
|
|
931
|
+
originSpoolRewardPoolData.exchange_rate_numerator
|
|
932
|
+
),
|
|
933
|
+
feeRateDenominator: Number(originSpoolRewardPoolData.fee_rate_denominator),
|
|
934
|
+
feeRateNumerator: Number(originSpoolRewardPoolData.fee_rate_numerator),
|
|
926
935
|
rewards: Number(originSpoolRewardPoolData.rewards),
|
|
927
936
|
spoolId: String(originSpoolRewardPoolData.spool_id)
|
|
928
937
|
};
|
|
@@ -947,6 +956,7 @@ var calculateSpoolRewardPoolData = (parsedSpoolData, parsedSpoolRewardPoolData,
|
|
|
947
956
|
const claimedRewardValue = claimedRewardCoin.multipliedBy(rewardCoinPrice);
|
|
948
957
|
const rewardValueForYear = (0, import_bignumber.default)(rewardPerSec).shiftedBy(-1 * rewardCoinDecimal).multipliedBy(rateYearFactor).multipliedBy(rewardCoinPrice);
|
|
949
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();
|
|
950
960
|
return {
|
|
951
961
|
rewardApr: rewardRate,
|
|
952
962
|
totalRewardAmount: totalRewardAmount.toNumber(),
|
|
@@ -958,7 +968,8 @@ var calculateSpoolRewardPoolData = (parsedSpoolData, parsedSpoolRewardPoolData,
|
|
|
958
968
|
claimedRewardAmount: claimedRewardAmount.toNumber(),
|
|
959
969
|
claimedRewardCoin: claimedRewardCoin.toNumber(),
|
|
960
970
|
claimedRewardValue: claimedRewardValue.toNumber(),
|
|
961
|
-
rewardPerSec: rewardPerSec.toNumber()
|
|
971
|
+
rewardPerSec: rewardPerSec.toNumber(),
|
|
972
|
+
rewardFee: rewardFeeRate
|
|
962
973
|
};
|
|
963
974
|
};
|
|
964
975
|
var parseOriginBorrowIncentivePoolData = (originBorrowIncentivePoolData) => {
|
|
@@ -1033,6 +1044,12 @@ var parseOriginBorrowIncentiveRewardPoolData = (originBorrowIncentiveRewardPoolD
|
|
|
1033
1044
|
exchangeRateDenominator: Number(
|
|
1034
1045
|
originBorrowIncentiveRewardPoolData.exchange_rate_denominator
|
|
1035
1046
|
),
|
|
1047
|
+
rewardsFeeRateNumerator: Number(
|
|
1048
|
+
originBorrowIncentiveRewardPoolData.rewards_fee_rate_numerator
|
|
1049
|
+
),
|
|
1050
|
+
rewardsFeeRateDenominator: Number(
|
|
1051
|
+
originBorrowIncentiveRewardPoolData.rewards_fee_rate_denominator
|
|
1052
|
+
),
|
|
1036
1053
|
remainingRewards: Number(
|
|
1037
1054
|
originBorrowIncentiveRewardPoolData.remaining_reward
|
|
1038
1055
|
)
|
|
@@ -1062,6 +1079,9 @@ var calculateBorrowIncentiveRewardPoolData = (parsedBorrowIncentivePoolData, par
|
|
|
1062
1079
|
const claimedRewardValue = claimedRewardCoin.multipliedBy(rewardCoinPrice);
|
|
1063
1080
|
const rewardValueForYear = (0, import_bignumber.default)(rewardPerSec).shiftedBy(-1 * rewardCoinDecimal).multipliedBy(rateYearFactor).multipliedBy(rewardCoinPrice);
|
|
1064
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();
|
|
1065
1085
|
return {
|
|
1066
1086
|
rewardApr: rewardRate,
|
|
1067
1087
|
totalRewardAmount: totalRewardAmount.toNumber(),
|
|
@@ -1073,7 +1093,8 @@ var calculateBorrowIncentiveRewardPoolData = (parsedBorrowIncentivePoolData, par
|
|
|
1073
1093
|
claimedRewardAmount: claimedRewardAmount.toNumber(),
|
|
1074
1094
|
claimedRewardCoin: claimedRewardCoin.toNumber(),
|
|
1075
1095
|
claimedRewardValue: claimedRewardValue.toNumber(),
|
|
1076
|
-
rewardPerSec: rewardPerSec.toNumber()
|
|
1096
|
+
rewardPerSec: rewardPerSec.toNumber(),
|
|
1097
|
+
rewardFee: rewardFeeRate
|
|
1077
1098
|
};
|
|
1078
1099
|
};
|
|
1079
1100
|
var parseOriginBorrowIncentiveAccountData = (originBorrowIncentiveAccountData) => {
|
|
@@ -1149,7 +1170,7 @@ var queryMarket = async (query) => {
|
|
|
1149
1170
|
const pools = {};
|
|
1150
1171
|
const collaterals = {};
|
|
1151
1172
|
for (const pool of marketData.pools) {
|
|
1152
|
-
const coinType =
|
|
1173
|
+
const coinType = (0, import_utils2.normalizeStructTag)(pool.type.name);
|
|
1153
1174
|
const poolCoinName = query.utils.parseCoinNameFromType(coinType);
|
|
1154
1175
|
const coinPrice = (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName] ?? 0;
|
|
1155
1176
|
if (!SUPPORT_POOLS.includes(poolCoinName)) {
|
|
@@ -1168,6 +1189,7 @@ var queryMarket = async (query) => {
|
|
|
1168
1189
|
reserve: pool.reserve,
|
|
1169
1190
|
reserveFactor: pool.reserveFactor,
|
|
1170
1191
|
borrowWeight: pool.borrowWeight,
|
|
1192
|
+
borrowFeeRate: pool.borrowFeeRate,
|
|
1171
1193
|
baseBorrowRatePerSec: pool.baseBorrowRatePerSec,
|
|
1172
1194
|
borrowRateOnHighKink: pool.borrowRateOnHighKink,
|
|
1173
1195
|
borrowRateOnMidKink: pool.borrowRateOnMidKink,
|
|
@@ -1191,13 +1213,14 @@ var queryMarket = async (query) => {
|
|
|
1191
1213
|
midKink: parsedMarketPoolData.midKink,
|
|
1192
1214
|
reserveFactor: parsedMarketPoolData.reserveFactor,
|
|
1193
1215
|
borrowWeight: parsedMarketPoolData.borrowWeight,
|
|
1216
|
+
borrowFee: parsedMarketPoolData.borrowFee,
|
|
1194
1217
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
1195
1218
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
1196
1219
|
...calculatedMarketPoolData
|
|
1197
1220
|
};
|
|
1198
1221
|
}
|
|
1199
1222
|
for (const collateral of marketData.collaterals) {
|
|
1200
|
-
const coinType =
|
|
1223
|
+
const coinType = (0, import_utils2.normalizeStructTag)(collateral.type.name);
|
|
1201
1224
|
const collateralCoinName = query.utils.parseCoinNameFromType(coinType);
|
|
1202
1225
|
const coinPrice = (await query.utils.getCoinPrices([collateralCoinName]))?.[collateralCoinName] ?? 0;
|
|
1203
1226
|
if (!SUPPORT_COLLATERALS.includes(collateralCoinName)) {
|
|
@@ -1275,6 +1298,7 @@ var getMarketPool = async (query, poolCoinName, marketObject, coinPrice) => {
|
|
|
1275
1298
|
let balanceSheet;
|
|
1276
1299
|
let borrowIndex;
|
|
1277
1300
|
let interestModel;
|
|
1301
|
+
let borrowFeeRate;
|
|
1278
1302
|
if (marketObject) {
|
|
1279
1303
|
if (marketObject.content && "fields" in marketObject.content) {
|
|
1280
1304
|
const fields = marketObject.content.fields;
|
|
@@ -1324,9 +1348,25 @@ var getMarketPool = async (query, poolCoinName, marketObject, coinPrice) => {
|
|
|
1324
1348
|
const dynamicFields = interestModelDynamicFieldObject.content.fields;
|
|
1325
1349
|
interestModel = dynamicFields.value.fields;
|
|
1326
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
|
+
}
|
|
1327
1367
|
}
|
|
1328
1368
|
}
|
|
1329
|
-
if (balanceSheet && borrowIndex && interestModel) {
|
|
1369
|
+
if (balanceSheet && borrowIndex && interestModel && borrowFeeRate) {
|
|
1330
1370
|
const parsedMarketPoolData = parseOriginMarketPoolData({
|
|
1331
1371
|
type: interestModel.type.fields,
|
|
1332
1372
|
maxBorrowRate: interestModel.max_borrow_rate.fields,
|
|
@@ -1340,6 +1380,7 @@ var getMarketPool = async (query, poolCoinName, marketObject, coinPrice) => {
|
|
|
1340
1380
|
reserve: balanceSheet.revenue,
|
|
1341
1381
|
reserveFactor: interestModel.revenue_factor.fields,
|
|
1342
1382
|
borrowWeight: interestModel.borrow_weight.fields,
|
|
1383
|
+
borrowFeeRate,
|
|
1343
1384
|
baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
|
|
1344
1385
|
borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
|
|
1345
1386
|
borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
|
|
@@ -1364,6 +1405,7 @@ var getMarketPool = async (query, poolCoinName, marketObject, coinPrice) => {
|
|
|
1364
1405
|
midKink: parsedMarketPoolData.midKink,
|
|
1365
1406
|
reserveFactor: parsedMarketPoolData.reserveFactor,
|
|
1366
1407
|
borrowWeight: parsedMarketPoolData.borrowWeight,
|
|
1408
|
+
borrowFee: parsedMarketPoolData.borrowFee,
|
|
1367
1409
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
1368
1410
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
1369
1411
|
...calculatedMarketPoolData
|
|
@@ -1478,6 +1520,7 @@ var getMarketCollateral = async (query, collateralCoinName, marketObject, coinPr
|
|
|
1478
1520
|
};
|
|
1479
1521
|
var getObligations = async (query, ownerAddress) => {
|
|
1480
1522
|
const owner = ownerAddress || query.suiKit.currentAddress();
|
|
1523
|
+
const protocolObjectId = query.address.get("core.object") || PROTOCOL_OBJECT_ID;
|
|
1481
1524
|
const keyObjectsResponse = [];
|
|
1482
1525
|
let hasNextPage = false;
|
|
1483
1526
|
let nextCursor = null;
|
|
@@ -1485,7 +1528,7 @@ var getObligations = async (query, ownerAddress) => {
|
|
|
1485
1528
|
const paginatedKeyObjectsResponse = await query.suiKit.client().getOwnedObjects({
|
|
1486
1529
|
owner,
|
|
1487
1530
|
filter: {
|
|
1488
|
-
StructType: `${
|
|
1531
|
+
StructType: `${protocolObjectId}::obligation::ObligationKey`
|
|
1489
1532
|
},
|
|
1490
1533
|
cursor: nextCursor
|
|
1491
1534
|
});
|
|
@@ -1698,7 +1741,7 @@ var getMarketCoinAmount = async (query, marketCoinName, ownerAddress) => {
|
|
|
1698
1741
|
};
|
|
1699
1742
|
|
|
1700
1743
|
// src/queries/spoolQuery.ts
|
|
1701
|
-
var
|
|
1744
|
+
var import_utils4 = require("@mysten/sui.js/utils");
|
|
1702
1745
|
var getSpools = async (query, stakeMarketCoinNames) => {
|
|
1703
1746
|
stakeMarketCoinNames = stakeMarketCoinNames || [...SUPPORT_SPOOLS];
|
|
1704
1747
|
const stakeCoinNames = stakeMarketCoinNames.map(
|
|
@@ -1722,6 +1765,7 @@ var getSpools = async (query, stakeMarketCoinNames) => {
|
|
|
1722
1765
|
var getSpool = async (query, marketCoinName, marketPool) => {
|
|
1723
1766
|
const coinName = query.utils.parseCoinName(marketCoinName);
|
|
1724
1767
|
marketPool = marketPool || await query.getMarketPool(coinName);
|
|
1768
|
+
const spoolPkgId = query.address.get(`spool.id`);
|
|
1725
1769
|
const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
|
|
1726
1770
|
const rewardPoolId = query.address.get(
|
|
1727
1771
|
`spool.pools.${marketCoinName}.rewardPoolId`
|
|
@@ -1733,6 +1777,13 @@ var getSpool = async (query, marketCoinName, marketPool) => {
|
|
|
1733
1777
|
showContent: true
|
|
1734
1778
|
}
|
|
1735
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
|
+
});
|
|
1736
1787
|
if (marketPool && spoolObjectResponse[0].data && spoolObjectResponse[1].data) {
|
|
1737
1788
|
const rewardCoinName = query.utils.getSpoolRewardCoinName(marketCoinName);
|
|
1738
1789
|
const coinPrices = await query.utils.getCoinPrices([
|
|
@@ -1741,19 +1792,20 @@ var getSpool = async (query, marketCoinName, marketPool) => {
|
|
|
1741
1792
|
]);
|
|
1742
1793
|
const spoolObject = spoolObjectResponse[0].data;
|
|
1743
1794
|
const rewardPoolObject = spoolObjectResponse[1].data;
|
|
1795
|
+
const rewardFeeObject = spoolRewardFeeDynamicFieldsResponse.data;
|
|
1744
1796
|
if (spoolObject.content && "fields" in spoolObject.content) {
|
|
1745
|
-
const
|
|
1797
|
+
const spoolFields = spoolObject.content.fields;
|
|
1746
1798
|
const parsedSpoolData = parseOriginSpoolData({
|
|
1747
|
-
stakeType:
|
|
1748
|
-
maxDistributedPoint:
|
|
1749
|
-
distributedPoint:
|
|
1750
|
-
distributedPointPerPeriod:
|
|
1751
|
-
pointDistributionTime:
|
|
1752
|
-
maxStake:
|
|
1753
|
-
stakes:
|
|
1754
|
-
index:
|
|
1755
|
-
createdAt:
|
|
1756
|
-
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
|
|
1757
1809
|
});
|
|
1758
1810
|
const marketCoinPrice = (coinPrices?.[coinName] ?? 0) * marketPool.conversionRate;
|
|
1759
1811
|
const marketCoinDecimal = query.utils.getCoinDecimal(marketCoinName);
|
|
@@ -1762,14 +1814,17 @@ var getSpool = async (query, marketCoinName, marketPool) => {
|
|
|
1762
1814
|
marketCoinPrice,
|
|
1763
1815
|
marketCoinDecimal
|
|
1764
1816
|
);
|
|
1765
|
-
if (rewardPoolObject.content && "fields" in rewardPoolObject.content) {
|
|
1766
|
-
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;
|
|
1767
1820
|
const parsedSpoolRewardPoolData = parseOriginSpoolRewardPoolData({
|
|
1768
|
-
claimed_rewards:
|
|
1769
|
-
exchange_rate_numerator:
|
|
1770
|
-
exchange_rate_denominator:
|
|
1771
|
-
|
|
1772
|
-
|
|
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
|
|
1773
1828
|
});
|
|
1774
1829
|
const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
|
|
1775
1830
|
const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
|
|
@@ -1806,8 +1861,8 @@ var getSpool = async (query, marketCoinName, marketPool) => {
|
|
|
1806
1861
|
};
|
|
1807
1862
|
var getStakeAccounts = async (query, ownerAddress) => {
|
|
1808
1863
|
const owner = ownerAddress || query.suiKit.currentAddress();
|
|
1809
|
-
const
|
|
1810
|
-
const stakeAccountType = `${
|
|
1864
|
+
const spoolObjectId = query.address.get("spool.object");
|
|
1865
|
+
const stakeAccountType = `${spoolObjectId}::spool_account::SpoolAccount`;
|
|
1811
1866
|
const stakeObjectsResponse = [];
|
|
1812
1867
|
let hasNextPage = false;
|
|
1813
1868
|
let nextCursor = null;
|
|
@@ -1836,7 +1891,7 @@ var getStakeAccounts = async (query, ownerAddress) => {
|
|
|
1836
1891
|
(types, stakeMarketCoinName) => {
|
|
1837
1892
|
const stakeCoinName = query.utils.parseCoinName(stakeMarketCoinName);
|
|
1838
1893
|
const marketCoinType = query.utils.parseMarketCoinType(stakeCoinName);
|
|
1839
|
-
types[stakeMarketCoinName] = `${
|
|
1894
|
+
types[stakeMarketCoinName] = `${spoolObjectId}::spool_account::SpoolAccount<${marketCoinType}>`;
|
|
1840
1895
|
return types;
|
|
1841
1896
|
},
|
|
1842
1897
|
{}
|
|
@@ -1854,34 +1909,34 @@ var getStakeAccounts = async (query, ownerAddress) => {
|
|
|
1854
1909
|
const index = Number(fields.index);
|
|
1855
1910
|
const points = Number(fields.points);
|
|
1856
1911
|
const totalPoints = Number(fields.total_points);
|
|
1857
|
-
if ((0,
|
|
1912
|
+
if ((0, import_utils4.normalizeStructTag)(type) === stakeMarketCoinTypes.ssui) {
|
|
1858
1913
|
stakeAccounts.ssui.push({
|
|
1859
1914
|
id,
|
|
1860
|
-
type,
|
|
1915
|
+
type: (0, import_utils4.normalizeStructTag)(type),
|
|
1861
1916
|
stakePoolId,
|
|
1862
|
-
stakeType,
|
|
1917
|
+
stakeType: (0, import_utils4.normalizeStructTag)(stakeType),
|
|
1863
1918
|
staked,
|
|
1864
1919
|
index,
|
|
1865
1920
|
points,
|
|
1866
1921
|
totalPoints
|
|
1867
1922
|
});
|
|
1868
|
-
} else if ((0,
|
|
1923
|
+
} else if ((0, import_utils4.normalizeStructTag)(type) === stakeMarketCoinTypes.susdc) {
|
|
1869
1924
|
stakeAccounts.susdc.push({
|
|
1870
1925
|
id,
|
|
1871
|
-
type,
|
|
1926
|
+
type: (0, import_utils4.normalizeStructTag)(type),
|
|
1872
1927
|
stakePoolId,
|
|
1873
|
-
stakeType,
|
|
1928
|
+
stakeType: (0, import_utils4.normalizeStructTag)(stakeType),
|
|
1874
1929
|
staked,
|
|
1875
1930
|
index,
|
|
1876
1931
|
points,
|
|
1877
1932
|
totalPoints
|
|
1878
1933
|
});
|
|
1879
|
-
} else if ((0,
|
|
1934
|
+
} else if ((0, import_utils4.normalizeStructTag)(type) === stakeMarketCoinTypes.susdt) {
|
|
1880
1935
|
stakeAccounts.susdt.push({
|
|
1881
1936
|
id,
|
|
1882
|
-
type,
|
|
1937
|
+
type: (0, import_utils4.normalizeStructTag)(type),
|
|
1883
1938
|
stakePoolId,
|
|
1884
|
-
stakeType,
|
|
1939
|
+
stakeType: (0, import_utils4.normalizeStructTag)(stakeType),
|
|
1885
1940
|
staked,
|
|
1886
1941
|
index,
|
|
1887
1942
|
points,
|
|
@@ -1920,13 +1975,13 @@ var getStakePool = async (query, marketCoinName) => {
|
|
|
1920
1975
|
const lastUpdate = Number(fields.last_update);
|
|
1921
1976
|
stakePool = {
|
|
1922
1977
|
id,
|
|
1923
|
-
type,
|
|
1978
|
+
type: (0, import_utils4.normalizeStructTag)(type),
|
|
1924
1979
|
maxPoint,
|
|
1925
1980
|
distributedPoint,
|
|
1926
1981
|
pointPerPeriod,
|
|
1927
1982
|
period,
|
|
1928
1983
|
maxStake,
|
|
1929
|
-
stakeType,
|
|
1984
|
+
stakeType: (0, import_utils4.normalizeStructTag)(stakeType),
|
|
1930
1985
|
totalStaked,
|
|
1931
1986
|
index,
|
|
1932
1987
|
createdAt,
|
|
@@ -1937,6 +1992,7 @@ var getStakePool = async (query, marketCoinName) => {
|
|
|
1937
1992
|
return stakePool;
|
|
1938
1993
|
};
|
|
1939
1994
|
var getStakeRewardPool = async (query, marketCoinName) => {
|
|
1995
|
+
const spoolPkgId = query.address.get("spool.id");
|
|
1940
1996
|
const poolId = query.address.get(
|
|
1941
1997
|
`spool.pools.${marketCoinName}.rewardPoolId`
|
|
1942
1998
|
);
|
|
@@ -1948,23 +2004,38 @@ var getStakeRewardPool = async (query, marketCoinName) => {
|
|
|
1948
2004
|
showType: true
|
|
1949
2005
|
}
|
|
1950
2006
|
});
|
|
1951
|
-
|
|
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) {
|
|
1952
2015
|
const stakeRewardPoolObject = stakeRewardPoolObjectResponse.data;
|
|
2016
|
+
const stakeRewardFeeDynamicFieldObject = stakeRewardFeeDynamicFieldsResponse.data;
|
|
1953
2017
|
const id = stakeRewardPoolObject.objectId;
|
|
1954
2018
|
const type = stakeRewardPoolObject.type;
|
|
1955
|
-
if (stakeRewardPoolObject.content && "fields" in stakeRewardPoolObject.content) {
|
|
1956
|
-
const
|
|
1957
|
-
const
|
|
1958
|
-
const
|
|
1959
|
-
const
|
|
1960
|
-
const
|
|
1961
|
-
|
|
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);
|
|
1962
2031
|
stakeRewardPool = {
|
|
1963
2032
|
id,
|
|
1964
|
-
type,
|
|
2033
|
+
type: (0, import_utils4.normalizeStructTag)(type),
|
|
1965
2034
|
stakePoolId,
|
|
1966
2035
|
ratioNumerator,
|
|
1967
2036
|
ratioDenominator,
|
|
2037
|
+
feeRateNumerator,
|
|
2038
|
+
feeRateDenominator,
|
|
1968
2039
|
rewards,
|
|
1969
2040
|
claimedRewards
|
|
1970
2041
|
};
|
|
@@ -1974,6 +2045,7 @@ var getStakeRewardPool = async (query, marketCoinName) => {
|
|
|
1974
2045
|
};
|
|
1975
2046
|
|
|
1976
2047
|
// src/queries/borrowIncentiveQuery.ts
|
|
2048
|
+
var import_utils6 = require("@mysten/sui.js/utils");
|
|
1977
2049
|
var import_sui_kit2 = require("@scallop-io/sui-kit");
|
|
1978
2050
|
var queryBorrowIncentivePools = async (query, borrowIncentiveCoinNames) => {
|
|
1979
2051
|
borrowIncentiveCoinNames = borrowIncentiveCoinNames || [
|
|
@@ -1992,7 +2064,7 @@ var queryBorrowIncentivePools = async (query, borrowIncentiveCoinNames) => {
|
|
|
1992
2064
|
const rewardCoinType = parsedBorrowIncentiveRewardPoolData.rewardType;
|
|
1993
2065
|
const borrowIncentivePools = {};
|
|
1994
2066
|
for (const pool of borrowIncentivePoolsQueryData.incentive_pools) {
|
|
1995
|
-
const coinType =
|
|
2067
|
+
const coinType = (0, import_utils6.normalizeStructTag)(pool.pool_type.name);
|
|
1996
2068
|
const coinName = query.utils.parseCoinNameFromType(coinType);
|
|
1997
2069
|
const rewardCoinName = query.utils.parseCoinNameFromType(rewardCoinType);
|
|
1998
2070
|
if (!borrowIncentiveCoinNames.includes(coinName)) {
|
|
@@ -2190,15 +2262,19 @@ var getLending = async (query, poolCoinName, ownerAddress, marketPool, spool, st
|
|
|
2190
2262
|
availableUnstakeAmount = availableUnstakeAmount.plus(
|
|
2191
2263
|
accountStakedMarketCoinAmount
|
|
2192
2264
|
);
|
|
2193
|
-
availableUnstakeCoin = availableUnstakeAmount.shiftedBy(
|
|
2265
|
+
availableUnstakeCoin = availableUnstakeAmount.shiftedBy(
|
|
2266
|
+
-1 * spool.coinDecimal
|
|
2267
|
+
);
|
|
2194
2268
|
const baseIndexRate = 1e9;
|
|
2195
2269
|
const increasedPointRate = spool?.currentPointIndex ? (0, import_bignumber3.default)(spool.currentPointIndex - stakeAccount.index).dividedBy(
|
|
2196
2270
|
baseIndexRate
|
|
2197
2271
|
) : 1;
|
|
2198
2272
|
availableClaimAmount = availableClaimAmount.plus(
|
|
2199
|
-
|
|
2273
|
+
accountStakedMarketCoinAmount.multipliedBy(increasedPointRate).plus(stakeAccount.points).multipliedBy(spool.exchangeRateNumerator).dividedBy(spool.exchangeRateDenominator)
|
|
2274
|
+
);
|
|
2275
|
+
availableClaimCoin = availableClaimAmount.shiftedBy(
|
|
2276
|
+
-1 * spool.rewardCoinDecimal
|
|
2200
2277
|
);
|
|
2201
|
-
availableClaimCoin = availableClaimAmount.shiftedBy(-1 * coinDecimal);
|
|
2202
2278
|
}
|
|
2203
2279
|
}
|
|
2204
2280
|
const suppliedAmount = (0, import_bignumber3.default)(marketCoinAmount).multipliedBy(
|
|
@@ -2283,10 +2359,13 @@ var getObligationAccount = async (query, obligationId, ownerAddress, market, coi
|
|
|
2283
2359
|
])
|
|
2284
2360
|
];
|
|
2285
2361
|
const obligationQuery = await query.queryObligation(obligationId);
|
|
2362
|
+
const borrowIncentivePools = await query.getBorrowIncentivePools();
|
|
2363
|
+
const borrowIncentiveAccounts = await query.getBorrowIncentiveAccounts(obligationId);
|
|
2286
2364
|
coinPrices = coinPrices || await query.utils.getCoinPrices(assetCoinNames);
|
|
2287
2365
|
coinAmounts = coinAmounts || await query.getCoinAmounts(assetCoinNames, ownerAddress);
|
|
2288
2366
|
const collaterals = {};
|
|
2289
2367
|
const debts = {};
|
|
2368
|
+
const borrowIncentives = {};
|
|
2290
2369
|
let totalDepositedPools = 0;
|
|
2291
2370
|
let totalDepositedValue = (0, import_bignumber3.default)(0);
|
|
2292
2371
|
let totalBorrowCapacityValue = (0, import_bignumber3.default)(0);
|
|
@@ -2388,6 +2467,41 @@ var getObligationAccount = async (query, obligationId, ownerAddress, market, coi
|
|
|
2388
2467
|
};
|
|
2389
2468
|
}
|
|
2390
2469
|
}
|
|
2470
|
+
for (const [poolCoinName, borrowIncentiveAccount] of Object.entries(
|
|
2471
|
+
borrowIncentiveAccounts
|
|
2472
|
+
)) {
|
|
2473
|
+
const coinName = poolCoinName;
|
|
2474
|
+
const borrowIncentivePool = borrowIncentivePools[coinName];
|
|
2475
|
+
let availableClaimAmount = (0, import_bignumber3.default)(0);
|
|
2476
|
+
let availableClaimCoin = (0, import_bignumber3.default)(0);
|
|
2477
|
+
if (borrowIncentivePool) {
|
|
2478
|
+
const accountBorrowedAmount = (0, import_bignumber3.default)(borrowIncentiveAccount.amount);
|
|
2479
|
+
const baseIndexRate = 1e9;
|
|
2480
|
+
const increasedPointRate = borrowIncentivePool.currentPointIndex ? (0, import_bignumber3.default)(
|
|
2481
|
+
borrowIncentivePool.currentPointIndex - borrowIncentiveAccount.index
|
|
2482
|
+
).dividedBy(baseIndexRate) : 1;
|
|
2483
|
+
availableClaimAmount = availableClaimAmount.plus(
|
|
2484
|
+
accountBorrowedAmount.multipliedBy(increasedPointRate).plus(borrowIncentiveAccount.points).multipliedBy(borrowIncentivePool.exchangeRateNumerator).dividedBy(borrowIncentivePool.exchangeRateDenominator)
|
|
2485
|
+
);
|
|
2486
|
+
availableClaimCoin = availableClaimAmount.shiftedBy(
|
|
2487
|
+
-1 * borrowIncentivePool.rewardCoinDecimal
|
|
2488
|
+
);
|
|
2489
|
+
if (availableClaimAmount.isGreaterThan(0)) {
|
|
2490
|
+
borrowIncentives[coinName] = {
|
|
2491
|
+
coinName: borrowIncentivePool.coinName,
|
|
2492
|
+
coinType: borrowIncentivePool.coinType,
|
|
2493
|
+
rewardCoinType: borrowIncentivePool.rewardCoinType,
|
|
2494
|
+
symbol: borrowIncentivePool.symbol,
|
|
2495
|
+
coinDecimal: borrowIncentivePool.coinDecimal,
|
|
2496
|
+
rewardCoinDecimal: borrowIncentivePool.rewardCoinDecimal,
|
|
2497
|
+
coinPrice: borrowIncentivePool.coinPrice,
|
|
2498
|
+
rewardCoinPrice: borrowIncentivePool.rewardCoinPrice,
|
|
2499
|
+
availableClaimAmount: availableClaimAmount.toNumber(),
|
|
2500
|
+
availableClaimCoin: availableClaimCoin.toNumber()
|
|
2501
|
+
};
|
|
2502
|
+
}
|
|
2503
|
+
}
|
|
2504
|
+
}
|
|
2391
2505
|
let riskLevel = totalRequiredCollateralValue.isZero() && totalBorrowedValueWithWeight.isZero() ? (0, import_bignumber3.default)(0) : totalBorrowedValueWithWeight.dividedBy(totalRequiredCollateralValue);
|
|
2392
2506
|
riskLevel = riskLevel.isFinite() ? riskLevel.isLessThan(1) ? riskLevel : (0, import_bignumber3.default)(1) : (0, import_bignumber3.default)(1);
|
|
2393
2507
|
const accountBalanceValue = totalDepositedValue.minus(totalBorrowedValue).isGreaterThan(0) ? totalDepositedValue.minus(totalBorrowedValue) : (0, import_bignumber3.default)(0);
|
|
@@ -2416,7 +2530,8 @@ var getObligationAccount = async (query, obligationId, ownerAddress, market, coi
|
|
|
2416
2530
|
totalDepositedPools,
|
|
2417
2531
|
totalBorrowedPools,
|
|
2418
2532
|
collaterals,
|
|
2419
|
-
debts
|
|
2533
|
+
debts,
|
|
2534
|
+
borrowIncentives
|
|
2420
2535
|
};
|
|
2421
2536
|
for (const [collateralCoinName, obligationCollateral] of Object.entries(
|
|
2422
2537
|
obligationAccount.collaterals
|
|
@@ -2432,10 +2547,10 @@ var getObligationAccount = async (query, obligationId, ownerAddress, market, coi
|
|
|
2432
2547
|
obligationCollateral.availableWithdrawCoin = availableWithdrawAmount.shiftedBy(-1 * obligationCollateral.coinDecimal).toNumber();
|
|
2433
2548
|
}
|
|
2434
2549
|
}
|
|
2435
|
-
for (const [
|
|
2550
|
+
for (const [poolCoinName, obligationDebt] of Object.entries(
|
|
2436
2551
|
obligationAccount.debts
|
|
2437
2552
|
)) {
|
|
2438
|
-
const marketPool = market.pools[
|
|
2553
|
+
const marketPool = market.pools[poolCoinName];
|
|
2439
2554
|
if (marketPool) {
|
|
2440
2555
|
const availableRepayAmount = (0, import_bignumber3.default)(
|
|
2441
2556
|
obligationDebt.availableRepayAmount
|
|
@@ -2890,7 +3005,7 @@ var ScallopUtils = class {
|
|
|
2890
3005
|
throw Error(`Coin ${coinName} is not supported`);
|
|
2891
3006
|
}
|
|
2892
3007
|
if (coinName === "sui")
|
|
2893
|
-
return (0,
|
|
3008
|
+
return (0, import_utils9.normalizeStructTag)(`${coinPackageId}::sui::SUI`);
|
|
2894
3009
|
const wormHolePckageIds = [
|
|
2895
3010
|
this._address.get("core.coins.usdc.id") ?? wormholeCoinIds.usdc,
|
|
2896
3011
|
this._address.get("core.coins.usdt.id") ?? wormholeCoinIds.usdt,
|
|
@@ -2918,11 +3033,12 @@ var ScallopUtils = class {
|
|
|
2918
3033
|
* @return Market coin type.
|
|
2919
3034
|
*/
|
|
2920
3035
|
parseMarketCoinType(coinName) {
|
|
3036
|
+
const protocolObjectId = this._address.get("core.object") || PROTOCOL_OBJECT_ID;
|
|
2921
3037
|
const coinType = this.parseCoinType(coinName);
|
|
2922
|
-
return `${
|
|
3038
|
+
return `${protocolObjectId}::reserve::MarketCoin<${coinType}>`;
|
|
2923
3039
|
}
|
|
2924
3040
|
parseCoinNameFromType(coinType) {
|
|
2925
|
-
coinType = (0,
|
|
3041
|
+
coinType = (0, import_utils9.normalizeStructTag)(coinType);
|
|
2926
3042
|
const coinTypeRegex = new RegExp(`((0x[^:]+::[^:]+::[^<>]+))(?![^<>]*<)`);
|
|
2927
3043
|
const coinTypeMatch = coinType.match(coinTypeRegex);
|
|
2928
3044
|
const isMarketCoinType = coinType.includes("reserve::MarketCoin");
|
|
@@ -2986,7 +3102,7 @@ var ScallopUtils = class {
|
|
|
2986
3102
|
* @param coinType - The coin type, default is 0x2::SUI::SUI.
|
|
2987
3103
|
* @return The selected transaction coin arguments.
|
|
2988
3104
|
*/
|
|
2989
|
-
async selectCoinIds(amount, coinType =
|
|
3105
|
+
async selectCoinIds(amount, coinType = import_utils9.SUI_TYPE_ARG, ownerAddress) {
|
|
2990
3106
|
ownerAddress = ownerAddress || this._suiKit.currentAddress();
|
|
2991
3107
|
const coins = await this._suiKit.suiInteractor.selectCoins(
|
|
2992
3108
|
ownerAddress,
|
|
@@ -3106,16 +3222,16 @@ var ScallopUtils = class {
|
|
|
3106
3222
|
};
|
|
3107
3223
|
|
|
3108
3224
|
// src/models/scallopBuilder.ts
|
|
3109
|
-
var
|
|
3225
|
+
var import_utils18 = require("@mysten/sui.js/utils");
|
|
3110
3226
|
var import_sui_kit8 = require("@scallop-io/sui-kit");
|
|
3111
3227
|
|
|
3112
3228
|
// src/builders/coreBuilder.ts
|
|
3113
3229
|
var import_transactions = require("@mysten/sui.js/transactions");
|
|
3114
|
-
var
|
|
3230
|
+
var import_utils12 = require("@mysten/sui.js/utils");
|
|
3115
3231
|
var import_sui_kit5 = require("@scallop-io/sui-kit");
|
|
3116
3232
|
|
|
3117
3233
|
// src/builders/oracle.ts
|
|
3118
|
-
var
|
|
3234
|
+
var import_utils11 = require("@mysten/sui.js/utils");
|
|
3119
3235
|
var import_pyth_sui_js2 = require("@pythnetwork/pyth-sui-js");
|
|
3120
3236
|
var updateOracles = async (builder, txBlock, assetCoinNames) => {
|
|
3121
3237
|
assetCoinNames = assetCoinNames ?? [
|
|
@@ -3221,27 +3337,27 @@ var priceUpdateRequest = (txBlock, packageId, xOracleId, coinType) => {
|
|
|
3221
3337
|
var confirmPriceUpdateRequest = (txBlock, packageId, xOracleId, request, coinType) => {
|
|
3222
3338
|
const target = `${packageId}::x_oracle::confirm_price_update_request`;
|
|
3223
3339
|
const typeArgs = [coinType];
|
|
3224
|
-
txBlock.moveCall(target, [xOracleId, request,
|
|
3340
|
+
txBlock.moveCall(target, [xOracleId, request, import_utils11.SUI_CLOCK_OBJECT_ID], typeArgs);
|
|
3225
3341
|
return txBlock;
|
|
3226
3342
|
};
|
|
3227
3343
|
var updateSupraPrice = (txBlock, packageId, request, holderId, registryId, coinType) => {
|
|
3228
3344
|
txBlock.moveCall(
|
|
3229
3345
|
`${packageId}::rule::set_price`,
|
|
3230
|
-
[request, holderId, registryId,
|
|
3346
|
+
[request, holderId, registryId, import_utils11.SUI_CLOCK_OBJECT_ID],
|
|
3231
3347
|
[coinType]
|
|
3232
3348
|
);
|
|
3233
3349
|
};
|
|
3234
3350
|
var updateSwitchboardPrice = (txBlock, packageId, request, aggregatorId, registryId, coinType) => {
|
|
3235
3351
|
txBlock.moveCall(
|
|
3236
3352
|
`${packageId}::rule::set_price`,
|
|
3237
|
-
[request, aggregatorId, registryId,
|
|
3353
|
+
[request, aggregatorId, registryId, import_utils11.SUI_CLOCK_OBJECT_ID],
|
|
3238
3354
|
[coinType]
|
|
3239
3355
|
);
|
|
3240
3356
|
};
|
|
3241
3357
|
var updatePythPrice = (txBlock, packageId, request, stateId, feedObjectId, registryId, coinType) => {
|
|
3242
3358
|
txBlock.moveCall(
|
|
3243
3359
|
`${packageId}::rule::set_price`,
|
|
3244
|
-
[request, stateId, feedObjectId, registryId,
|
|
3360
|
+
[request, stateId, feedObjectId, registryId, import_utils11.SUI_CLOCK_OBJECT_ID],
|
|
3245
3361
|
[coinType]
|
|
3246
3362
|
);
|
|
3247
3363
|
};
|
|
@@ -3307,7 +3423,7 @@ var generateCoreNormalMethod = ({
|
|
|
3307
3423
|
coreIds.coinDecimalsRegistry,
|
|
3308
3424
|
amount,
|
|
3309
3425
|
coreIds.xOracle,
|
|
3310
|
-
|
|
3426
|
+
import_utils12.SUI_CLOCK_OBJECT_ID
|
|
3311
3427
|
],
|
|
3312
3428
|
[coinType]
|
|
3313
3429
|
);
|
|
@@ -3316,7 +3432,7 @@ var generateCoreNormalMethod = ({
|
|
|
3316
3432
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
3317
3433
|
return txBlock.moveCall(
|
|
3318
3434
|
`${coreIds.protocolPkg}::mint::mint`,
|
|
3319
|
-
[coreIds.version, coreIds.market, coin,
|
|
3435
|
+
[coreIds.version, coreIds.market, coin, import_utils12.SUI_CLOCK_OBJECT_ID],
|
|
3320
3436
|
[coinType]
|
|
3321
3437
|
);
|
|
3322
3438
|
},
|
|
@@ -3324,7 +3440,7 @@ var generateCoreNormalMethod = ({
|
|
|
3324
3440
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
3325
3441
|
return txBlock.moveCall(
|
|
3326
3442
|
`${coreIds.protocolPkg}::mint::mint_entry`,
|
|
3327
|
-
[coreIds.version, coreIds.market, coin,
|
|
3443
|
+
[coreIds.version, coreIds.market, coin, import_utils12.SUI_CLOCK_OBJECT_ID],
|
|
3328
3444
|
[coinType]
|
|
3329
3445
|
);
|
|
3330
3446
|
},
|
|
@@ -3332,7 +3448,7 @@ var generateCoreNormalMethod = ({
|
|
|
3332
3448
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
3333
3449
|
return txBlock.moveCall(
|
|
3334
3450
|
`${coreIds.protocolPkg}::redeem::redeem`,
|
|
3335
|
-
[coreIds.version, coreIds.market, marketCoin,
|
|
3451
|
+
[coreIds.version, coreIds.market, marketCoin, import_utils12.SUI_CLOCK_OBJECT_ID],
|
|
3336
3452
|
[coinType]
|
|
3337
3453
|
);
|
|
3338
3454
|
},
|
|
@@ -3340,7 +3456,7 @@ var generateCoreNormalMethod = ({
|
|
|
3340
3456
|
const coinType = builder.utils.parseCoinType(poolCoinName);
|
|
3341
3457
|
return txBlock.moveCall(
|
|
3342
3458
|
`${coreIds.protocolPkg}::redeem::redeem_entry`,
|
|
3343
|
-
[coreIds.version, coreIds.market, marketCoin,
|
|
3459
|
+
[coreIds.version, coreIds.market, marketCoin, import_utils12.SUI_CLOCK_OBJECT_ID],
|
|
3344
3460
|
[coinType]
|
|
3345
3461
|
);
|
|
3346
3462
|
},
|
|
@@ -3356,7 +3472,7 @@ var generateCoreNormalMethod = ({
|
|
|
3356
3472
|
coreIds.coinDecimalsRegistry,
|
|
3357
3473
|
amount,
|
|
3358
3474
|
coreIds.xOracle,
|
|
3359
|
-
|
|
3475
|
+
import_utils12.SUI_CLOCK_OBJECT_ID
|
|
3360
3476
|
],
|
|
3361
3477
|
[coinType]
|
|
3362
3478
|
);
|
|
@@ -3373,7 +3489,7 @@ var generateCoreNormalMethod = ({
|
|
|
3373
3489
|
coreIds.coinDecimalsRegistry,
|
|
3374
3490
|
amount,
|
|
3375
3491
|
coreIds.xOracle,
|
|
3376
|
-
|
|
3492
|
+
import_utils12.SUI_CLOCK_OBJECT_ID
|
|
3377
3493
|
],
|
|
3378
3494
|
[coinType]
|
|
3379
3495
|
);
|
|
@@ -3387,7 +3503,7 @@ var generateCoreNormalMethod = ({
|
|
|
3387
3503
|
obligation,
|
|
3388
3504
|
coreIds.market,
|
|
3389
3505
|
coin,
|
|
3390
|
-
|
|
3506
|
+
import_utils12.SUI_CLOCK_OBJECT_ID
|
|
3391
3507
|
],
|
|
3392
3508
|
[coinType]
|
|
3393
3509
|
);
|
|
@@ -3565,7 +3681,7 @@ var newCoreTxBlock = (builder, initTxBlock) => {
|
|
|
3565
3681
|
|
|
3566
3682
|
// src/builders/spoolBuilder.ts
|
|
3567
3683
|
var import_transactions2 = require("@mysten/sui.js/transactions");
|
|
3568
|
-
var
|
|
3684
|
+
var import_utils14 = require("@mysten/sui.js/utils");
|
|
3569
3685
|
var import_sui_kit6 = require("@scallop-io/sui-kit");
|
|
3570
3686
|
var requireStakeAccountIds = async (...params) => {
|
|
3571
3687
|
const [builder, txBlock, stakeMarketCoinName, stakeAccountId] = params;
|
|
@@ -3605,7 +3721,7 @@ var generateSpoolNormalMethod = ({
|
|
|
3605
3721
|
);
|
|
3606
3722
|
return txBlock.moveCall(
|
|
3607
3723
|
`${spoolIds.spoolPkg}::user::new_spool_account`,
|
|
3608
|
-
[stakePoolId,
|
|
3724
|
+
[stakePoolId, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
3609
3725
|
[marketCoinType]
|
|
3610
3726
|
);
|
|
3611
3727
|
},
|
|
@@ -3616,7 +3732,7 @@ var generateSpoolNormalMethod = ({
|
|
|
3616
3732
|
);
|
|
3617
3733
|
txBlock.moveCall(
|
|
3618
3734
|
`${spoolIds.spoolPkg}::user::stake`,
|
|
3619
|
-
[stakePoolId, stakeAccount, coin,
|
|
3735
|
+
[stakePoolId, stakeAccount, coin, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
3620
3736
|
[marketCoinType]
|
|
3621
3737
|
);
|
|
3622
3738
|
},
|
|
@@ -3627,7 +3743,7 @@ var generateSpoolNormalMethod = ({
|
|
|
3627
3743
|
);
|
|
3628
3744
|
return txBlock.moveCall(
|
|
3629
3745
|
`${spoolIds.spoolPkg}::user::unstake`,
|
|
3630
|
-
[stakePoolId, stakeAccount, amount,
|
|
3746
|
+
[stakePoolId, stakeAccount, amount, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
3631
3747
|
[marketCoinType]
|
|
3632
3748
|
);
|
|
3633
3749
|
},
|
|
@@ -3643,7 +3759,7 @@ var generateSpoolNormalMethod = ({
|
|
|
3643
3759
|
const rewardCoinType = builder.utils.parseCoinType(rewardCoinName);
|
|
3644
3760
|
return txBlock.moveCall(
|
|
3645
3761
|
`${spoolIds.spoolPkg}::user::redeem_rewards`,
|
|
3646
|
-
[stakePoolId, rewardPoolId, stakeAccount,
|
|
3762
|
+
[stakePoolId, rewardPoolId, stakeAccount, import_utils14.SUI_CLOCK_OBJECT_ID],
|
|
3647
3763
|
[marketCoinType, rewardCoinType]
|
|
3648
3764
|
);
|
|
3649
3765
|
}
|
|
@@ -3753,7 +3869,7 @@ var newSpoolTxBlock = (builder, initTxBlock) => {
|
|
|
3753
3869
|
|
|
3754
3870
|
// src/builders/borrowIncentiveBuilder.ts
|
|
3755
3871
|
var import_transactions3 = require("@mysten/sui.js/transactions");
|
|
3756
|
-
var
|
|
3872
|
+
var import_utils16 = require("@mysten/sui.js/utils");
|
|
3757
3873
|
var import_sui_kit7 = require("@scallop-io/sui-kit");
|
|
3758
3874
|
var requireObligationInfo2 = async (...params) => {
|
|
3759
3875
|
const [builder, txBlock, obligationId, obligationKey] = params;
|
|
@@ -3797,7 +3913,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
3797
3913
|
obligaionKey,
|
|
3798
3914
|
obligationId,
|
|
3799
3915
|
borrowIncentiveIds.obligationAccessStore,
|
|
3800
|
-
|
|
3916
|
+
import_utils16.SUI_CLOCK_OBJECT_ID
|
|
3801
3917
|
],
|
|
3802
3918
|
[rewardType]
|
|
3803
3919
|
);
|
|
@@ -3812,7 +3928,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
3812
3928
|
borrowIncentiveIds.incentiveAccounts,
|
|
3813
3929
|
obligaionKey,
|
|
3814
3930
|
obligationId,
|
|
3815
|
-
|
|
3931
|
+
import_utils16.SUI_CLOCK_OBJECT_ID
|
|
3816
3932
|
],
|
|
3817
3933
|
[rewardType]
|
|
3818
3934
|
);
|
|
@@ -3827,7 +3943,7 @@ var generateBorrowIncentiveNormalMethod = ({ builder, txBlock }) => {
|
|
|
3827
3943
|
borrowIncentiveIds.incentiveAccounts,
|
|
3828
3944
|
obligaionKey,
|
|
3829
3945
|
obligationId,
|
|
3830
|
-
|
|
3946
|
+
import_utils16.SUI_CLOCK_OBJECT_ID
|
|
3831
3947
|
],
|
|
3832
3948
|
[rewardType]
|
|
3833
3949
|
);
|
|
@@ -3953,7 +4069,7 @@ var ScallopBuilder = class {
|
|
|
3953
4069
|
address: this.address,
|
|
3954
4070
|
query: this.query
|
|
3955
4071
|
});
|
|
3956
|
-
this.walletAddress = (0,
|
|
4072
|
+
this.walletAddress = (0, import_utils18.normalizeSuiAddress)(
|
|
3957
4073
|
params?.walletAddress || this.suiKit.currentAddress()
|
|
3958
4074
|
);
|
|
3959
4075
|
this.isTestnet = params.networkType ? params.networkType === "testnet" : false;
|
|
@@ -4049,7 +4165,7 @@ var ScallopClient = class {
|
|
|
4049
4165
|
query: this.query,
|
|
4050
4166
|
utils: this.utils
|
|
4051
4167
|
});
|
|
4052
|
-
this.walletAddress = (0,
|
|
4168
|
+
this.walletAddress = (0, import_utils19.normalizeSuiAddress)(
|
|
4053
4169
|
params?.walletAddress || this.suiKit.currentAddress()
|
|
4054
4170
|
);
|
|
4055
4171
|
}
|
|
@@ -4614,6 +4730,7 @@ var Scallop = class {
|
|
|
4614
4730
|
0 && (module.exports = {
|
|
4615
4731
|
ADDRESSES_ID,
|
|
4616
4732
|
API_BASE_URL,
|
|
4733
|
+
BORROW_FEE_PROTOCOL_ID,
|
|
4617
4734
|
PROTOCOL_OBJECT_ID,
|
|
4618
4735
|
SUPPORT_BORROW_INCENTIVE_POOLS,
|
|
4619
4736
|
SUPPORT_BORROW_INCENTIVE_REWARDS,
|