@suilend/sdk 1.1.4 → 1.1.7

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