@suilend/sdk 1.1.99 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/_generated/_dependencies/source/0x1/ascii/structs.d.ts +7 -7
  2. package/_generated/_dependencies/source/0x1/ascii/structs.js +35 -75
  3. package/_generated/_dependencies/source/0x1/index.js +3 -6
  4. package/_generated/_dependencies/source/0x1/option/structs.d.ts +3 -3
  5. package/_generated/_dependencies/source/0x1/option/structs.js +31 -69
  6. package/_generated/_dependencies/source/0x1/type-name/structs.d.ts +5 -5
  7. package/_generated/_dependencies/source/0x1/type-name/structs.js +20 -25
  8. package/_generated/_dependencies/source/0x2/bag/structs.d.ts +7 -7
  9. package/_generated/_dependencies/source/0x2/bag/structs.js +24 -29
  10. package/_generated/_dependencies/source/0x2/balance/structs.d.ts +7 -7
  11. package/_generated/_dependencies/source/0x2/balance/structs.js +49 -56
  12. package/_generated/_dependencies/source/0x2/index.js +3 -6
  13. package/_generated/_dependencies/source/0x2/object/structs.d.ts +8 -8
  14. package/_generated/_dependencies/source/0x2/object/structs.js +34 -41
  15. package/_generated/_dependencies/source/0x2/object-table/structs.d.ts +7 -7
  16. package/_generated/_dependencies/source/0x2/object-table/structs.js +31 -36
  17. package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs.d.ts +5 -5
  18. package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs.js +23 -28
  19. package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/index.js +4 -7
  20. package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs.d.ts +11 -11
  21. package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs.js +32 -37
  22. package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs.d.ts +23 -23
  23. package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs.js +29 -34
  24. package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs.d.ts +4 -4
  25. package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs.js +21 -59
  26. package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs.d.ts +55 -55
  27. package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs.js +46 -53
  28. package/_generated/_framework/reified.d.ts +2 -2
  29. package/_generated/_framework/reified.js +27 -40
  30. package/_generated/_framework/util.js +26 -40
  31. package/_generated/_framework/vector.d.ts +4 -4
  32. package/_generated/_framework/vector.js +16 -21
  33. package/_generated/suilend/cell/structs.d.ts +4 -4
  34. package/_generated/suilend/cell/structs.js +31 -36
  35. package/_generated/suilend/decimal/structs.d.ts +4 -4
  36. package/_generated/suilend/decimal/structs.js +19 -24
  37. package/_generated/suilend/index.js +8 -12
  38. package/_generated/suilend/lending-market/functions.d.ts +1 -0
  39. package/_generated/suilend/lending-market/functions.js +271 -302
  40. package/_generated/suilend/lending-market/structs.d.ts +146 -146
  41. package/_generated/suilend/lending-market/structs.js +549 -617
  42. package/_generated/suilend/lending-market-registry/functions.js +7 -11
  43. package/_generated/suilend/liquidity-mining/structs.d.ts +50 -50
  44. package/_generated/suilend/liquidity-mining/structs.js +159 -205
  45. package/_generated/suilend/obligation/structs.d.ts +106 -106
  46. package/_generated/suilend/obligation/structs.js +313 -363
  47. package/_generated/suilend/rate-limiter/functions.js +23 -31
  48. package/_generated/suilend/rate-limiter/structs.d.ts +15 -15
  49. package/_generated/suilend/rate-limiter/structs.js +49 -56
  50. package/_generated/suilend/reserve/structs.d.ts +139 -139
  51. package/_generated/suilend/reserve/structs.js +397 -451
  52. package/_generated/suilend/reserve-config/functions.js +149 -190
  53. package/_generated/suilend/reserve-config/structs.d.ts +33 -33
  54. package/_generated/suilend/reserve-config/structs.js +109 -149
  55. package/api/events.js +1 -5
  56. package/api/index.js +1 -17
  57. package/client.d.ts +10 -10
  58. package/client.js +118 -128
  59. package/index.js +7 -23
  60. package/lib/constants.js +3 -9
  61. package/lib/index.js +5 -21
  62. package/lib/initialize.d.ts +3 -3
  63. package/lib/initialize.js +103 -140
  64. package/lib/liquidityMining.d.ts +3 -3
  65. package/lib/liquidityMining.js +57 -72
  66. package/lib/pyth.js +9 -14
  67. package/lib/strategyOwnerCap.js +106 -119
  68. package/lib/transactions.js +2 -7
  69. package/lib/types.js +4 -7
  70. package/mmt.js +2 -5
  71. package/package.json +1 -1
  72. package/parsers/apiReserveAssetDataEvent.js +25 -33
  73. package/parsers/index.js +5 -21
  74. package/parsers/lendingMarket.d.ts +1 -1
  75. package/parsers/lendingMarket.js +12 -19
  76. package/parsers/obligation.js +19 -26
  77. package/parsers/rateLimiter.js +11 -19
  78. package/parsers/reserve.d.ts +1 -1
  79. package/parsers/reserve.js +42 -85
  80. package/strategies.d.ts +11 -11
  81. package/strategies.js +547 -586
  82. package/swap/index.js +2 -18
  83. package/swap/quote.js +57 -65
  84. package/swap/transaction.d.ts +2 -2
  85. package/swap/transaction.js +40 -35
  86. package/utils/events.d.ts +3 -3
  87. package/utils/events.js +18 -35
  88. package/utils/index.js +16 -40
  89. package/utils/obligation.d.ts +4 -4
  90. package/utils/obligation.js +17 -60
  91. package/utils/simulate.js +118 -143
package/utils/simulate.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
2
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
3
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,107 +7,95 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
8
  });
10
9
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.compoundDebt = exports.totalSupply = exports.cTokenRatio = exports.getCTokenMarketValueLowerBound = exports.getCTokenMarketValue = exports.decimalToBigNumber = exports.stringToDecimal = exports.numberToDecimal = exports.refreshObligation = exports.updateUserRewardManager = exports.refreshReservePrice = exports.updatePoolRewardsManager = exports.compoundReserveInterest = exports.calculateDepositAprPercent = exports.calculateSupplyApr = exports.calculateBorrowAprPercent = exports.calculateBorrowApr = exports.calculateUtilizationPercent = exports.calculateUtilizationRate = void 0;
16
- const bcs_1 = require("@mysten/sui/bcs");
17
- const utils_1 = require("@mysten/sui/utils");
18
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
19
- const uuid_1 = require("uuid");
20
- const structs_1 = require("../_generated/suilend/decimal/structs");
21
- const structs_2 = require("../_generated/suilend/liquidity-mining/structs");
22
- const constants_1 = require("../lib/constants");
23
- const utils_2 = require("../utils");
10
+ import { bcs } from "@mysten/sui/bcs";
11
+ import { toHex } from "@mysten/sui/utils";
12
+ import BigNumber from "bignumber.js";
13
+ import { v4 as uuidv4 } from "uuid";
14
+ import { Decimal } from "../_generated/suilend/decimal/structs";
15
+ import { UserReward, } from "../_generated/suilend/liquidity-mining/structs";
16
+ import { WAD } from "../lib/constants";
17
+ import { linearlyInterpolate } from "../utils";
24
18
  /**
25
19
  * @deprecated since version 1.0.8. Use `calculateUtilizationPercent` instead.
26
20
  */
27
- const calculateUtilizationRate = (reserve) => {
21
+ export const calculateUtilizationRate = (reserve) => {
28
22
  const { mintDecimals } = reserve;
29
23
  // From parsers/reserve.ts > parseReserve
30
- const availableAmount = new bignumber_js_1.default(reserve.availableAmount.toString()).div(10 ** mintDecimals);
31
- const borrowedAmount = new bignumber_js_1.default(reserve.borrowedAmount.value.toString())
32
- .div(constants_1.WAD)
24
+ const availableAmount = new BigNumber(reserve.availableAmount.toString()).div(10 ** mintDecimals);
25
+ const borrowedAmount = new BigNumber(reserve.borrowedAmount.value.toString())
26
+ .div(WAD)
33
27
  .div(10 ** mintDecimals);
34
28
  const depositedAmount = borrowedAmount.plus(availableAmount);
35
29
  return depositedAmount.eq(0)
36
- ? new bignumber_js_1.default(0)
30
+ ? new BigNumber(0)
37
31
  : borrowedAmount.div(depositedAmount);
38
32
  };
39
- exports.calculateUtilizationRate = calculateUtilizationRate;
40
- const calculateUtilizationPercent = (reserve) => {
41
- return (0, exports.calculateUtilizationRate)(reserve).times(100);
33
+ export const calculateUtilizationPercent = (reserve) => {
34
+ return calculateUtilizationRate(reserve).times(100);
42
35
  };
43
- exports.calculateUtilizationPercent = calculateUtilizationPercent;
44
36
  /**
45
37
  * @deprecated since version 1.0.8. Use `calculateBorrowAprPercent` instead.
46
38
  */
47
- const calculateBorrowApr = (reserve) => {
39
+ export const calculateBorrowApr = (reserve) => {
48
40
  const config = reserve.config.element;
49
- const utilizationPercent = (0, exports.calculateUtilizationPercent)(reserve);
41
+ const utilizationPercent = calculateUtilizationPercent(reserve);
50
42
  // From parsers/reserve.ts > parseReserveConfig
51
43
  const interestRate = config.interestRateUtils.map((util, index) => ({
52
- id: (0, uuid_1.v4)(),
53
- utilPercent: new bignumber_js_1.default(util.toString()),
54
- aprPercent: new bignumber_js_1.default(config.interestRateAprs[index].toString()).div(100),
44
+ id: uuidv4(),
45
+ utilPercent: new BigNumber(util.toString()),
46
+ aprPercent: new BigNumber(config.interestRateAprs[index].toString()).div(100),
55
47
  }));
56
- return (0, utils_2.linearlyInterpolate)(interestRate, "utilPercent", "aprPercent", utilizationPercent);
48
+ return linearlyInterpolate(interestRate, "utilPercent", "aprPercent", utilizationPercent);
57
49
  };
58
- exports.calculateBorrowApr = calculateBorrowApr;
59
- const calculateBorrowAprPercent = (reserve) => {
60
- return (0, exports.calculateBorrowApr)(reserve);
50
+ export const calculateBorrowAprPercent = (reserve) => {
51
+ return calculateBorrowApr(reserve);
61
52
  };
62
- exports.calculateBorrowAprPercent = calculateBorrowAprPercent;
63
53
  /**
64
54
  * @deprecated since version 1.0.8. Use `calculateDepositAprPercent` instead.
65
55
  */
66
- const calculateSupplyApr = (reserve) => {
56
+ export const calculateSupplyApr = (reserve) => {
67
57
  const config = reserve.config.element;
68
- const utilizationPercent = (0, exports.calculateUtilizationPercent)(reserve);
69
- const borrowAprPercent = (0, exports.calculateBorrowAprPercent)(reserve);
58
+ const utilizationPercent = calculateUtilizationPercent(reserve);
59
+ const borrowAprPercent = calculateBorrowAprPercent(reserve);
70
60
  // From parsers/reserve.ts > parseReserveConfig
71
61
  const spreadFeeBps = Number(config.spreadFeeBps.toString());
72
- return new bignumber_js_1.default(utilizationPercent.div(100))
62
+ return new BigNumber(utilizationPercent.div(100))
73
63
  .times(borrowAprPercent.div(100))
74
64
  .times(1 - spreadFeeBps / 10000)
75
65
  .times(100);
76
66
  };
77
- exports.calculateSupplyApr = calculateSupplyApr;
78
- const calculateDepositAprPercent = (reserve) => {
79
- return (0, exports.calculateSupplyApr)(reserve);
67
+ export const calculateDepositAprPercent = (reserve) => {
68
+ return calculateSupplyApr(reserve);
80
69
  };
81
- exports.calculateDepositAprPercent = calculateDepositAprPercent;
82
- const compoundReserveInterest = (reserve, nowS) => {
70
+ export const compoundReserveInterest = (reserve, nowS) => {
83
71
  var _a, _b;
84
72
  const timeElapsedSeconds = nowS - Number(reserve.interestLastUpdateTimestampS);
85
73
  if (timeElapsedSeconds === 0) {
86
74
  return reserve;
87
75
  }
88
- bignumber_js_1.default.config({ POW_PRECISION: 100 });
89
- const compoundedBorrowRate = new bignumber_js_1.default(1)
90
- .plus((0, exports.calculateBorrowAprPercent)(reserve)
76
+ BigNumber.config({ POW_PRECISION: 100 });
77
+ const compoundedBorrowRate = new BigNumber(1)
78
+ .plus(calculateBorrowAprPercent(reserve)
91
79
  .div(100)
92
80
  .div(365 * 24 * 60 * 60))
93
- .pow(new bignumber_js_1.default(timeElapsedSeconds).toNumber());
81
+ .pow(new BigNumber(timeElapsedSeconds).toNumber());
94
82
  const updatedReserve = Object.assign({}, reserve);
95
- const oldBorrowedAmount = (0, exports.decimalToBigNumber)(reserve.borrowedAmount);
96
- const oldCumulativeBorrowRate = (0, exports.decimalToBigNumber)(reserve.cumulativeBorrowRate);
97
- const oldUnclaimedSpreadFees = (0, exports.decimalToBigNumber)(reserve.unclaimedSpreadFees);
98
- updatedReserve.cumulativeBorrowRate = (0, exports.stringToDecimal)(compoundedBorrowRate.multipliedBy(oldCumulativeBorrowRate).toString());
83
+ const oldBorrowedAmount = decimalToBigNumber(reserve.borrowedAmount);
84
+ const oldCumulativeBorrowRate = decimalToBigNumber(reserve.cumulativeBorrowRate);
85
+ const oldUnclaimedSpreadFees = decimalToBigNumber(reserve.unclaimedSpreadFees);
86
+ updatedReserve.cumulativeBorrowRate = stringToDecimal(compoundedBorrowRate.multipliedBy(oldCumulativeBorrowRate).toString());
99
87
  const netNewDebt = oldBorrowedAmount.multipliedBy(compoundedBorrowRate.minus(1));
100
- const spreadFee = new bignumber_js_1.default(((_b = (_a = reserve.config.element) === null || _a === void 0 ? void 0 : _a.spreadFeeBps) === null || _b === void 0 ? void 0 : _b.toString()) || 0);
101
- updatedReserve.unclaimedSpreadFees = (0, exports.stringToDecimal)(oldUnclaimedSpreadFees
88
+ const spreadFee = new BigNumber(((_b = (_a = reserve.config.element) === null || _a === void 0 ? void 0 : _a.spreadFeeBps) === null || _b === void 0 ? void 0 : _b.toString()) || 0);
89
+ updatedReserve.unclaimedSpreadFees = stringToDecimal(oldUnclaimedSpreadFees
102
90
  .plus(netNewDebt.multipliedBy(spreadFee.dividedBy(10000)))
103
91
  .toString());
104
- updatedReserve.borrowedAmount = (0, exports.stringToDecimal)(oldBorrowedAmount.plus(netNewDebt).toString());
92
+ updatedReserve.borrowedAmount = stringToDecimal(oldBorrowedAmount.plus(netNewDebt).toString());
105
93
  updatedReserve.interestLastUpdateTimestampS = BigInt(nowS);
106
- updatedReserve.depositsPoolRewardManager = (0, exports.updatePoolRewardsManager)(updatedReserve.depositsPoolRewardManager, nowS * 1000);
107
- updatedReserve.borrowsPoolRewardManager = (0, exports.updatePoolRewardsManager)(updatedReserve.borrowsPoolRewardManager, nowS * 1000);
94
+ updatedReserve.depositsPoolRewardManager = updatePoolRewardsManager(updatedReserve.depositsPoolRewardManager, nowS * 1000);
95
+ updatedReserve.borrowsPoolRewardManager = updatePoolRewardsManager(updatedReserve.borrowsPoolRewardManager, nowS * 1000);
108
96
  return updatedReserve;
109
97
  };
110
- exports.compoundReserveInterest = compoundReserveInterest;
111
- const updatePoolRewardsManager = (manager, nowMs) => {
98
+ export const updatePoolRewardsManager = (manager, nowMs) => {
112
99
  const updatedManager = Object.assign({}, manager);
113
100
  const timeElapsedMs = nowMs - Number(manager.lastUpdateTimeMs);
114
101
  if (manager.totalShares === BigInt(0) || timeElapsedMs === 0) {
@@ -127,13 +114,13 @@ const updatePoolRewardsManager = (manager, nowMs) => {
127
114
  const startTimeMs = Number(poolReward.startTimeMs);
128
115
  const lastUpdateTimeMs = Number(manager.lastUpdateTimeMs);
129
116
  const timePassedMs = Math.min(nowMs, endTimeMs) - Math.max(startTimeMs, lastUpdateTimeMs);
130
- const unlockedRewards = new bignumber_js_1.default(poolReward.totalRewards.toString())
117
+ const unlockedRewards = new BigNumber(poolReward.totalRewards.toString())
131
118
  .multipliedBy(timePassedMs)
132
119
  .dividedBy(Number(poolReward.endTimeMs - poolReward.startTimeMs));
133
- updatedPoolReward.allocatedRewards = (0, exports.stringToDecimal)((0, exports.decimalToBigNumber)(poolReward.allocatedRewards)
120
+ updatedPoolReward.allocatedRewards = stringToDecimal(decimalToBigNumber(poolReward.allocatedRewards)
134
121
  .plus(unlockedRewards)
135
122
  .toString());
136
- updatedPoolReward.cumulativeRewardsPerShare = (0, exports.stringToDecimal)((0, exports.decimalToBigNumber)(poolReward.cumulativeRewardsPerShare)
123
+ updatedPoolReward.cumulativeRewardsPerShare = stringToDecimal(decimalToBigNumber(poolReward.cumulativeRewardsPerShare)
137
124
  .plus(unlockedRewards.dividedBy(Number(manager.totalShares)))
138
125
  .toString());
139
126
  return updatedPoolReward;
@@ -141,28 +128,26 @@ const updatePoolRewardsManager = (manager, nowMs) => {
141
128
  updatedManager.lastUpdateTimeMs = BigInt(nowMs);
142
129
  return updatedManager;
143
130
  };
144
- exports.updatePoolRewardsManager = updatePoolRewardsManager;
145
- const refreshReservePrice = (reserves, pythConnection) => __awaiter(void 0, void 0, void 0, function* () {
146
- const priceIdentifiers = Array.from(new Set(reserves.map((r) => (0, utils_1.toHEX)(new Uint8Array(r.priceIdentifier.bytes)))));
131
+ export const refreshReservePrice = (reserves, pythConnection) => __awaiter(void 0, void 0, void 0, function* () {
132
+ const priceIdentifiers = Array.from(new Set(reserves.map((r) => toHex(new Uint8Array(r.priceIdentifier.bytes)))));
147
133
  const priceFeeds = yield pythConnection.getLatestPriceFeeds(priceIdentifiers);
148
134
  if (!priceFeeds)
149
135
  return reserves;
150
136
  const updatedReserves = [];
151
137
  for (let i = 0; i < reserves.length; i++) {
152
138
  const reserve = reserves[i];
153
- const priceFeed = priceFeeds.find((p) => p.id === (0, utils_1.toHEX)(new Uint8Array(reserve.priceIdentifier.bytes)));
139
+ const priceFeed = priceFeeds.find((p) => p.id === toHex(new Uint8Array(reserve.priceIdentifier.bytes)));
154
140
  if (!priceFeed)
155
141
  throw new Error(`Price feed not found for reserve ${reserve.coinType.name}`);
156
142
  const newReserve = Object.assign({}, reserve);
157
- newReserve.price = (0, exports.stringToDecimal)(priceFeed.getPriceUnchecked().getPriceAsNumberUnchecked().toString());
158
- newReserve.smoothedPrice = (0, exports.stringToDecimal)(priceFeed.getEmaPriceUnchecked().getPriceAsNumberUnchecked().toString());
143
+ newReserve.price = stringToDecimal(priceFeed.getPriceUnchecked().getPriceAsNumberUnchecked().toString());
144
+ newReserve.smoothedPrice = stringToDecimal(priceFeed.getEmaPriceUnchecked().getPriceAsNumberUnchecked().toString());
159
145
  newReserve.priceLastUpdateTimestampS = BigInt(priceFeed.getPriceUnchecked().publishTime);
160
146
  updatedReserves.push(newReserve);
161
147
  }
162
148
  return updatedReserves;
163
149
  });
164
- exports.refreshReservePrice = refreshReservePrice;
165
- const updateUserRewardManager = (poolManager, userRewardManager, nowMs) => {
150
+ export const updateUserRewardManager = (poolManager, userRewardManager, nowMs) => {
166
151
  const updatedUserRewardManager = Object.assign({}, userRewardManager);
167
152
  for (let i = 0; i < poolManager.poolRewards.length; i++) {
168
153
  const poolReward = poolManager.poolRewards[i];
@@ -175,20 +160,20 @@ const updateUserRewardManager = (poolManager, userRewardManager, nowMs) => {
175
160
  const oldReward = updatedUserRewardManager.rewards[i];
176
161
  const reward = Object.assign({}, oldReward);
177
162
  if (oldReward != null) {
178
- const newRewards = (0, exports.decimalToBigNumber)(poolReward.cumulativeRewardsPerShare)
179
- .minus((0, exports.decimalToBigNumber)(oldReward.cumulativeRewardsPerShare))
180
- .multipliedBy(new bignumber_js_1.default(Number(userRewardManager.share)));
181
- reward.earnedRewards = (0, exports.stringToDecimal)((0, exports.decimalToBigNumber)(oldReward.earnedRewards).plus(newRewards).toString());
163
+ const newRewards = decimalToBigNumber(poolReward.cumulativeRewardsPerShare)
164
+ .minus(decimalToBigNumber(oldReward.cumulativeRewardsPerShare))
165
+ .multipliedBy(new BigNumber(Number(userRewardManager.share)));
166
+ reward.earnedRewards = stringToDecimal(decimalToBigNumber(oldReward.earnedRewards).plus(newRewards).toString());
182
167
  reward.cumulativeRewardsPerShare = poolReward.cumulativeRewardsPerShare;
183
168
  updatedUserRewardManager.rewards[i] = reward;
184
169
  }
185
170
  else {
186
171
  if (userRewardManager.lastUpdateTimeMs <= poolReward.endTimeMs) {
187
- updatedUserRewardManager.rewards[i] = structs_2.UserReward.fromFields({
172
+ updatedUserRewardManager.rewards[i] = UserReward.fromFields({
188
173
  pool_reward_id: { bytes: poolReward.id.slice(2) },
189
- earned_rewards: (0, exports.stringToDecimal)((userRewardManager.lastUpdateTimeMs <= poolReward.startTimeMs
190
- ? (0, exports.decimalToBigNumber)(poolReward.cumulativeRewardsPerShare).multipliedBy(new bignumber_js_1.default(Number(userRewardManager.share)))
191
- : new bignumber_js_1.default(0)).toString()),
174
+ earned_rewards: stringToDecimal((userRewardManager.lastUpdateTimeMs <= poolReward.startTimeMs
175
+ ? decimalToBigNumber(poolReward.cumulativeRewardsPerShare).multipliedBy(new BigNumber(Number(userRewardManager.share)))
176
+ : new BigNumber(0)).toString()),
192
177
  cumulative_rewards_per_share: poolReward.cumulativeRewardsPerShare,
193
178
  });
194
179
  }
@@ -197,13 +182,12 @@ const updateUserRewardManager = (poolManager, userRewardManager, nowMs) => {
197
182
  updatedUserRewardManager.lastUpdateTimeMs = BigInt(nowMs);
198
183
  return updatedUserRewardManager;
199
184
  };
200
- exports.updateUserRewardManager = updateUserRewardManager;
201
- const refreshObligation = (unrefreshedObligation, refreshedReserves) => {
185
+ export const refreshObligation = (unrefreshedObligation, refreshedReserves) => {
202
186
  const obligation = Object.assign({}, unrefreshedObligation);
203
187
  // Refresh Deposits
204
- let depositValueUsd = new bignumber_js_1.default(0);
205
- let allowedBorrowValueUsd = new bignumber_js_1.default(0);
206
- let unhealthyBorrowValueUsd = new bignumber_js_1.default(0);
188
+ let depositValueUsd = new BigNumber(0);
189
+ let allowedBorrowValueUsd = new BigNumber(0);
190
+ let unhealthyBorrowValueUsd = new BigNumber(0);
207
191
  for (let i = 0; i < obligation.deposits.length; i++) {
208
192
  const deposit = Object.assign({}, obligation.deposits[i]);
209
193
  const reserve = refreshedReserves.find((r) => r.coinType.name === deposit.coinType.name);
@@ -212,22 +196,22 @@ const refreshObligation = (unrefreshedObligation, refreshedReserves) => {
212
196
  }
213
197
  const config = reserve.config.element;
214
198
  obligation.userRewardManagers[Number(deposit.userRewardManagerIndex)] =
215
- (0, exports.updateUserRewardManager)(reserve.depositsPoolRewardManager, obligation.userRewardManagers[Number(deposit.userRewardManagerIndex)], Date.now());
216
- const marketValue = (0, exports.getCTokenMarketValue)(reserve, new bignumber_js_1.default(deposit.depositedCtokenAmount.toString()));
217
- const marketValueLowerBound = (0, exports.getCTokenMarketValueLowerBound)(reserve, new bignumber_js_1.default(deposit.depositedCtokenAmount.toString()));
218
- deposit.marketValue = (0, exports.stringToDecimal)(marketValue.toString());
219
- depositValueUsd = depositValueUsd.plus(new bignumber_js_1.default(marketValue.toString()));
220
- allowedBorrowValueUsd = allowedBorrowValueUsd.plus(marketValueLowerBound.multipliedBy(new bignumber_js_1.default(config.openLtvPct / 100)));
221
- unhealthyBorrowValueUsd = unhealthyBorrowValueUsd.plus(marketValue.multipliedBy(new bignumber_js_1.default(config.closeLtvPct / 100)));
199
+ updateUserRewardManager(reserve.depositsPoolRewardManager, obligation.userRewardManagers[Number(deposit.userRewardManagerIndex)], Date.now());
200
+ const marketValue = getCTokenMarketValue(reserve, new BigNumber(deposit.depositedCtokenAmount.toString()));
201
+ const marketValueLowerBound = getCTokenMarketValueLowerBound(reserve, new BigNumber(deposit.depositedCtokenAmount.toString()));
202
+ deposit.marketValue = stringToDecimal(marketValue.toString());
203
+ depositValueUsd = depositValueUsd.plus(new BigNumber(marketValue.toString()));
204
+ allowedBorrowValueUsd = allowedBorrowValueUsd.plus(marketValueLowerBound.multipliedBy(new BigNumber(config.openLtvPct / 100)));
205
+ unhealthyBorrowValueUsd = unhealthyBorrowValueUsd.plus(marketValue.multipliedBy(new BigNumber(config.closeLtvPct / 100)));
222
206
  obligation.deposits[i] = deposit;
223
207
  }
224
- obligation.unhealthyBorrowValueUsd = (0, exports.stringToDecimal)(unhealthyBorrowValueUsd.toString());
225
- obligation.allowedBorrowValueUsd = (0, exports.stringToDecimal)(allowedBorrowValueUsd.toString());
226
- obligation.depositedValueUsd = (0, exports.stringToDecimal)(depositValueUsd.toString());
208
+ obligation.unhealthyBorrowValueUsd = stringToDecimal(unhealthyBorrowValueUsd.toString());
209
+ obligation.allowedBorrowValueUsd = stringToDecimal(allowedBorrowValueUsd.toString());
210
+ obligation.depositedValueUsd = stringToDecimal(depositValueUsd.toString());
227
211
  // Refresh borrows
228
- let unweightedBorrowedValueUsd = new bignumber_js_1.default(0);
229
- let weightedBorrowedValueUsd = new bignumber_js_1.default(0);
230
- let weightedBorrowedValueUpperBoundUsd = new bignumber_js_1.default(0);
212
+ let unweightedBorrowedValueUsd = new BigNumber(0);
213
+ let weightedBorrowedValueUsd = new BigNumber(0);
214
+ let weightedBorrowedValueUpperBoundUsd = new BigNumber(0);
231
215
  for (let i = 0; i < obligation.borrows.length; i++) {
232
216
  const unrefreshedBorrow = obligation.borrows[i];
233
217
  const reserve = refreshedReserves.find((r) => r.coinType.name == unrefreshedBorrow.coinType.name);
@@ -235,78 +219,69 @@ const refreshObligation = (unrefreshedObligation, refreshedReserves) => {
235
219
  throw new Error(`Unable to find reserve for coin type ${unrefreshedBorrow.coinType.name}`);
236
220
  }
237
221
  const config = reserve.config.element;
238
- const borrow = Object.assign({}, (0, exports.compoundDebt)(unrefreshedBorrow, reserve));
222
+ const borrow = Object.assign({}, compoundDebt(unrefreshedBorrow, reserve));
239
223
  obligation.userRewardManagers[Number(borrow.userRewardManagerIndex)] =
240
- (0, exports.updateUserRewardManager)(reserve.borrowsPoolRewardManager, obligation.userRewardManagers[Number(borrow.userRewardManagerIndex)], Date.now());
241
- const marketValue = (0, exports.decimalToBigNumber)(borrow.borrowedAmount)
242
- .multipliedBy((0, exports.decimalToBigNumber)(reserve.price))
243
- .dividedBy(new bignumber_js_1.default(10 ** reserve.mintDecimals));
244
- const upperBoundPrice = bignumber_js_1.default.max((0, exports.decimalToBigNumber)(reserve.price), (0, exports.decimalToBigNumber)(reserve.smoothedPrice));
245
- const marketValueUpperBound = (0, exports.decimalToBigNumber)(reserve.borrowedAmount)
224
+ updateUserRewardManager(reserve.borrowsPoolRewardManager, obligation.userRewardManagers[Number(borrow.userRewardManagerIndex)], Date.now());
225
+ const marketValue = decimalToBigNumber(borrow.borrowedAmount)
226
+ .multipliedBy(decimalToBigNumber(reserve.price))
227
+ .dividedBy(new BigNumber(10 ** reserve.mintDecimals));
228
+ const upperBoundPrice = BigNumber.max(decimalToBigNumber(reserve.price), decimalToBigNumber(reserve.smoothedPrice));
229
+ const marketValueUpperBound = decimalToBigNumber(reserve.borrowedAmount)
246
230
  .multipliedBy(upperBoundPrice)
247
- .dividedBy(new bignumber_js_1.default(10 ** reserve.mintDecimals));
248
- borrow.marketValue = (0, exports.stringToDecimal)(marketValue.toString());
231
+ .dividedBy(new BigNumber(10 ** reserve.mintDecimals));
232
+ borrow.marketValue = stringToDecimal(marketValue.toString());
249
233
  unweightedBorrowedValueUsd = unweightedBorrowedValueUsd.plus(marketValue);
250
- const borrowWeight = new bignumber_js_1.default((config.borrowWeightBps / BigInt(10000)).toString());
234
+ const borrowWeight = new BigNumber((config.borrowWeightBps / BigInt(10000)).toString());
251
235
  weightedBorrowedValueUsd = weightedBorrowedValueUsd.plus(marketValue.multipliedBy(borrowWeight));
252
236
  weightedBorrowedValueUpperBoundUsd =
253
237
  weightedBorrowedValueUpperBoundUsd.plus(marketValueUpperBound.multipliedBy(borrowWeight));
254
238
  }
255
- obligation.unweightedBorrowedValueUsd = (0, exports.stringToDecimal)(unweightedBorrowedValueUsd.toString());
256
- obligation.weightedBorrowedValueUpperBoundUsd = (0, exports.stringToDecimal)(weightedBorrowedValueUpperBoundUsd.toString());
257
- obligation.weightedBorrowedValueUsd = (0, exports.stringToDecimal)(weightedBorrowedValueUsd.toString());
239
+ obligation.unweightedBorrowedValueUsd = stringToDecimal(unweightedBorrowedValueUsd.toString());
240
+ obligation.weightedBorrowedValueUpperBoundUsd = stringToDecimal(weightedBorrowedValueUpperBoundUsd.toString());
241
+ obligation.weightedBorrowedValueUsd = stringToDecimal(weightedBorrowedValueUsd.toString());
258
242
  return obligation;
259
243
  };
260
- exports.refreshObligation = refreshObligation;
261
- const numberToDecimal = (value) => {
262
- const adjustedValue = Math.round(value * +constants_1.WAD);
263
- return structs_1.Decimal.fromBcs(bcs_1.bcs.u256().serialize(adjustedValue).toBytes());
244
+ export const numberToDecimal = (value) => {
245
+ const adjustedValue = Math.round(value * +WAD);
246
+ return Decimal.fromBcs(bcs.u256().serialize(adjustedValue).toBytes());
264
247
  };
265
- exports.numberToDecimal = numberToDecimal;
266
- const stringToDecimal = (value) => {
267
- return (0, exports.numberToDecimal)(new bignumber_js_1.default(value).toNumber());
248
+ export const stringToDecimal = (value) => {
249
+ return numberToDecimal(new BigNumber(value).toNumber());
268
250
  };
269
- exports.stringToDecimal = stringToDecimal;
270
- const decimalToBigNumber = (value) => {
271
- return new bignumber_js_1.default(value.value.toString()).div(constants_1.WAD);
251
+ export const decimalToBigNumber = (value) => {
252
+ return new BigNumber(value.value.toString()).div(WAD);
272
253
  };
273
- exports.decimalToBigNumber = decimalToBigNumber;
274
- const getCTokenMarketValue = (reserve, depositedCTokenAmount) => {
275
- const liquidityAmount = depositedCTokenAmount.multipliedBy((0, exports.cTokenRatio)(reserve));
276
- return (0, exports.decimalToBigNumber)(reserve.price)
254
+ export const getCTokenMarketValue = (reserve, depositedCTokenAmount) => {
255
+ const liquidityAmount = depositedCTokenAmount.multipliedBy(cTokenRatio(reserve));
256
+ return decimalToBigNumber(reserve.price)
277
257
  .multipliedBy(liquidityAmount)
278
- .dividedBy(new bignumber_js_1.default(10 ** reserve.mintDecimals));
258
+ .dividedBy(new BigNumber(10 ** reserve.mintDecimals));
279
259
  };
280
- exports.getCTokenMarketValue = getCTokenMarketValue;
281
- const getCTokenMarketValueLowerBound = (reserve, depositedCTokenAmount) => {
282
- const liquidityAmount = depositedCTokenAmount.multipliedBy((0, exports.cTokenRatio)(reserve));
283
- const price = bignumber_js_1.default.min((0, exports.decimalToBigNumber)(reserve.price), (0, exports.decimalToBigNumber)(reserve.smoothedPrice));
260
+ export const getCTokenMarketValueLowerBound = (reserve, depositedCTokenAmount) => {
261
+ const liquidityAmount = depositedCTokenAmount.multipliedBy(cTokenRatio(reserve));
262
+ const price = BigNumber.min(decimalToBigNumber(reserve.price), decimalToBigNumber(reserve.smoothedPrice));
284
263
  return price
285
264
  .multipliedBy(liquidityAmount)
286
- .dividedBy(new bignumber_js_1.default(10 ** reserve.mintDecimals));
265
+ .dividedBy(new BigNumber(10 ** reserve.mintDecimals));
287
266
  };
288
- exports.getCTokenMarketValueLowerBound = getCTokenMarketValueLowerBound;
289
- const cTokenRatio = (reserve) => {
267
+ export const cTokenRatio = (reserve) => {
290
268
  if (reserve.ctokenSupply === BigInt(0)) {
291
- return new bignumber_js_1.default(1);
269
+ return new BigNumber(1);
292
270
  }
293
- return (0, exports.totalSupply)(reserve).dividedBy(new bignumber_js_1.default(reserve.ctokenSupply.toString()));
271
+ return totalSupply(reserve).dividedBy(new BigNumber(reserve.ctokenSupply.toString()));
294
272
  };
295
- exports.cTokenRatio = cTokenRatio;
296
- const totalSupply = (reserve) => {
297
- return new bignumber_js_1.default(reserve.availableAmount.toString())
298
- .plus((0, exports.decimalToBigNumber)(reserve.borrowedAmount))
299
- .minus((0, exports.decimalToBigNumber)(reserve.unclaimedSpreadFees));
273
+ export const totalSupply = (reserve) => {
274
+ return new BigNumber(reserve.availableAmount.toString())
275
+ .plus(decimalToBigNumber(reserve.borrowedAmount))
276
+ .minus(decimalToBigNumber(reserve.unclaimedSpreadFees));
300
277
  };
301
- exports.totalSupply = totalSupply;
302
- const compoundDebt = (borrow, reserve) => {
278
+ export const compoundDebt = (borrow, reserve) => {
303
279
  const borrowCopy = Object.assign({}, borrow);
304
- const newCumulativeBorrowRate = (0, exports.decimalToBigNumber)(reserve.cumulativeBorrowRate);
305
- const compoundedInterestRate = newCumulativeBorrowRate.dividedBy((0, exports.decimalToBigNumber)(borrow.cumulativeBorrowRate));
306
- borrowCopy.borrowedAmount = (0, exports.stringToDecimal)((0, exports.decimalToBigNumber)(borrow.borrowedAmount)
280
+ const newCumulativeBorrowRate = decimalToBigNumber(reserve.cumulativeBorrowRate);
281
+ const compoundedInterestRate = newCumulativeBorrowRate.dividedBy(decimalToBigNumber(borrow.cumulativeBorrowRate));
282
+ borrowCopy.borrowedAmount = stringToDecimal(decimalToBigNumber(borrow.borrowedAmount)
307
283
  .multipliedBy(compoundedInterestRate)
308
284
  .toString());
309
- borrowCopy.cumulativeBorrowRate = (0, exports.stringToDecimal)(newCumulativeBorrowRate.toString());
285
+ borrowCopy.cumulativeBorrowRate = stringToDecimal(newCumulativeBorrowRate.toString());
310
286
  return borrowCopy;
311
287
  };
312
- exports.compoundDebt = compoundDebt;