@scallop-io/sui-scallop-sdk 0.44.4 → 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.
@@ -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: `${PROTOCOL_OBJECT_ID}::obligation::ObligationKey`
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 fields = spoolObject.content.fields;
1797
+ const spoolFields = spoolObject.content.fields;
1747
1798
  const parsedSpoolData = parseOriginSpoolData({
1748
- stakeType: fields.stake_type,
1749
- maxDistributedPoint: fields.max_distributed_point,
1750
- distributedPoint: fields.distributed_point,
1751
- distributedPointPerPeriod: fields.distributed_point_per_period,
1752
- pointDistributionTime: fields.point_distribution_time,
1753
- maxStake: fields.max_stakes,
1754
- stakes: fields.stakes,
1755
- index: fields.index,
1756
- createdAt: fields.created_at,
1757
- lastUpdate: fields.last_update
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 fields2 = rewardPoolObject.content.fields;
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: fields2.claimed_rewards,
1770
- exchange_rate_numerator: fields2.exchange_rate_numerator,
1771
- exchange_rate_denominator: fields2.exchange_rate_denominator,
1772
- rewards: fields2.rewards,
1773
- spool_id: fields2.spool_id
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 spoolPkgId = query.address.get("spool.id");
1811
- const stakeAccountType = `${spoolPkgId}::spool_account::SpoolAccount`;
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] = `${spoolPkgId}::spool_account::SpoolAccount<${marketCoinType}>`;
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
- if (stakeRewardPoolObjectResponse.data) {
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 fields = stakeRewardPoolObject.content.fields;
1958
- const stakePoolId = String(fields.spool_id);
1959
- const ratioNumerator = Number(fields.exchange_rate_numerator);
1960
- const ratioDenominator = Number(fields.exchange_rate_denominator);
1961
- const rewards = Number(fields.rewards);
1962
- const claimedRewards = Number(fields.claimed_rewards);
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
  };
@@ -2963,8 +3033,9 @@ var ScallopUtils = class {
2963
3033
  * @return Market coin type.
2964
3034
  */
2965
3035
  parseMarketCoinType(coinName) {
3036
+ const protocolObjectId = this._address.get("core.object") || PROTOCOL_OBJECT_ID;
2966
3037
  const coinType = this.parseCoinType(coinName);
2967
- return `${PROTOCOL_OBJECT_ID}::reserve::MarketCoin<${coinType}>`;
3038
+ return `${protocolObjectId}::reserve::MarketCoin<${coinType}>`;
2968
3039
  }
2969
3040
  parseCoinNameFromType(coinType) {
2970
3041
  coinType = (0, import_utils9.normalizeStructTag)(coinType);
@@ -4659,6 +4730,7 @@ var Scallop = class {
4659
4730
  0 && (module.exports = {
4660
4731
  ADDRESSES_ID,
4661
4732
  API_BASE_URL,
4733
+ BORROW_FEE_PROTOCOL_ID,
4662
4734
  PROTOCOL_OBJECT_ID,
4663
4735
  SUPPORT_BORROW_INCENTIVE_POOLS,
4664
4736
  SUPPORT_BORROW_INCENTIVE_REWARDS,