@suilend/sdk 3.0.7 → 4.0.0
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/_generated/_dependencies/source/0x1/ascii/structs.d.ts +4 -4
- package/_generated/_dependencies/source/0x1/ascii/structs.js +42 -41
- package/_generated/_dependencies/source/0x1/option/structs.js +22 -26
- package/_generated/_dependencies/source/0x1/type-name/structs.d.ts +3 -3
- package/_generated/_dependencies/source/0x1/type-name/structs.js +21 -25
- package/_generated/_dependencies/source/0x2/bag/structs.d.ts +5 -5
- package/_generated/_dependencies/source/0x2/bag/structs.js +22 -25
- package/_generated/_dependencies/source/0x2/balance/structs.d.ts +4 -4
- package/_generated/_dependencies/source/0x2/balance/structs.js +42 -41
- package/_generated/_dependencies/source/0x2/object/structs.d.ts +5 -5
- package/_generated/_dependencies/source/0x2/object/structs.js +42 -41
- package/_generated/_dependencies/source/0x2/object-table/structs.d.ts +5 -5
- package/_generated/_dependencies/source/0x2/object-table/structs.js +22 -25
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs.d.ts +3 -3
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs.js +22 -25
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs.d.ts +9 -9
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs.js +24 -25
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs.d.ts +21 -21
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs.js +23 -25
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs.d.ts +2 -2
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs.js +21 -25
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs.d.ts +52 -52
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs.js +45 -41
- package/_generated/_framework/vector.js +9 -6
- package/_generated/suilend/cell/structs.d.ts +1 -1
- package/_generated/suilend/cell/structs.js +21 -25
- package/_generated/suilend/decimal/structs.d.ts +2 -2
- package/_generated/suilend/decimal/structs.js +21 -25
- package/_generated/suilend/lending-market/structs.d.ts +129 -129
- package/_generated/suilend/lending-market/structs.js +391 -265
- package/_generated/suilend/liquidity-mining/structs.d.ts +44 -44
- package/_generated/suilend/liquidity-mining/structs.js +122 -89
- package/_generated/suilend/obligation/structs.d.ts +98 -98
- package/_generated/suilend/obligation/structs.js +194 -121
- package/_generated/suilend/rate-limiter/structs.d.ts +12 -12
- package/_generated/suilend/rate-limiter/structs.js +46 -41
- package/_generated/suilend/reserve/structs.d.ts +128 -128
- package/_generated/suilend/reserve/structs.js +243 -153
- package/_generated/suilend/reserve-config/structs.d.ts +30 -30
- package/_generated/suilend/reserve-config/structs.js +60 -41
- package/api/events.js +5 -14
- package/client.js +267 -319
- package/lib/initialize.d.ts +2 -2
- package/lib/initialize.js +26 -31
- package/lib/liquidityMining.js +15 -19
- package/lib/pyth.js +6 -15
- package/lib/pythAdapter.js +96 -112
- package/lib/strategyOwnerCap.js +8 -17
- package/margin/margin/admin_cap.d.ts +2 -2
- package/margin/margin/deps/std/type_name.d.ts +1 -1
- package/margin/margin/deps/suilend/lending_market.d.ts +2 -2
- package/margin/margin/market.d.ts +11 -11
- package/margin/margin/market.js +22 -22
- package/margin/margin/permissions.js +14 -14
- package/margin/margin/position.d.ts +47 -47
- package/margin/margin/position.js +10 -10
- package/margin/margin/router.d.ts +5 -5
- package/margin/margin/router.js +16 -16
- package/margin/margin/version.d.ts +1 -1
- package/margin/utils/index.js +22 -36
- package/package.json +1 -1
- package/parsers/apiReserveAssetDataEvent.js +4 -1
- package/parsers/lendingMarket.js +3 -4
- package/parsers/reserve.js +4 -1
- package/strategies.js +188 -204
- package/swap/quote.d.ts +1 -1
- package/swap/quote.js +28 -39
- package/swap/transaction.js +17 -26
- package/utils/events.js +20 -32
- package/utils/obligation.js +111 -135
- package/utils/simulate.js +16 -24
package/utils/simulate.js
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { bcs } from "@mysten/sui/bcs";
|
|
11
2
|
import { toHex } from "@mysten/sui/utils";
|
|
12
3
|
import BigNumber from "bignumber.js";
|
|
@@ -68,7 +59,6 @@ export const calculateDepositAprPercent = (reserve) => {
|
|
|
68
59
|
return calculateSupplyApr(reserve);
|
|
69
60
|
};
|
|
70
61
|
export const compoundReserveInterest = (reserve, nowS) => {
|
|
71
|
-
var _a, _b;
|
|
72
62
|
const timeElapsedSeconds = nowS - Number(reserve.interestLastUpdateTimestampS);
|
|
73
63
|
if (timeElapsedSeconds === 0) {
|
|
74
64
|
return reserve;
|
|
@@ -79,13 +69,13 @@ export const compoundReserveInterest = (reserve, nowS) => {
|
|
|
79
69
|
.div(100)
|
|
80
70
|
.div(365 * 24 * 60 * 60))
|
|
81
71
|
.pow(new BigNumber(timeElapsedSeconds).toNumber());
|
|
82
|
-
const updatedReserve =
|
|
72
|
+
const updatedReserve = { ...reserve };
|
|
83
73
|
const oldBorrowedAmount = decimalToBigNumber(reserve.borrowedAmount);
|
|
84
74
|
const oldCumulativeBorrowRate = decimalToBigNumber(reserve.cumulativeBorrowRate);
|
|
85
75
|
const oldUnclaimedSpreadFees = decimalToBigNumber(reserve.unclaimedSpreadFees);
|
|
86
76
|
updatedReserve.cumulativeBorrowRate = stringToDecimal(compoundedBorrowRate.multipliedBy(oldCumulativeBorrowRate).toString());
|
|
87
77
|
const netNewDebt = oldBorrowedAmount.multipliedBy(compoundedBorrowRate.minus(1));
|
|
88
|
-
const spreadFee = new BigNumber(
|
|
78
|
+
const spreadFee = new BigNumber(reserve.config.element?.spreadFeeBps?.toString() || 0);
|
|
89
79
|
updatedReserve.unclaimedSpreadFees = stringToDecimal(oldUnclaimedSpreadFees
|
|
90
80
|
.plus(netNewDebt.multipliedBy(spreadFee.dividedBy(10000)))
|
|
91
81
|
.toString());
|
|
@@ -96,7 +86,7 @@ export const compoundReserveInterest = (reserve, nowS) => {
|
|
|
96
86
|
return updatedReserve;
|
|
97
87
|
};
|
|
98
88
|
export const updatePoolRewardsManager = (manager, nowMs) => {
|
|
99
|
-
const updatedManager =
|
|
89
|
+
const updatedManager = { ...manager };
|
|
100
90
|
const timeElapsedMs = nowMs - Number(manager.lastUpdateTimeMs);
|
|
101
91
|
if (manager.totalShares === BigInt(0) || timeElapsedMs === 0) {
|
|
102
92
|
return updatedManager;
|
|
@@ -109,7 +99,7 @@ export const updatePoolRewardsManager = (manager, nowMs) => {
|
|
|
109
99
|
manager.lastUpdateTimeMs >= poolReward.endTimeMs) {
|
|
110
100
|
return poolReward;
|
|
111
101
|
}
|
|
112
|
-
const updatedPoolReward =
|
|
102
|
+
const updatedPoolReward = { ...poolReward };
|
|
113
103
|
const endTimeMs = Number(poolReward.endTimeMs);
|
|
114
104
|
const startTimeMs = Number(poolReward.startTimeMs);
|
|
115
105
|
const lastUpdateTimeMs = Number(manager.lastUpdateTimeMs);
|
|
@@ -128,9 +118,9 @@ export const updatePoolRewardsManager = (manager, nowMs) => {
|
|
|
128
118
|
updatedManager.lastUpdateTimeMs = BigInt(nowMs);
|
|
129
119
|
return updatedManager;
|
|
130
120
|
};
|
|
131
|
-
export const refreshReservePrice = (reserves, pythConnection) =>
|
|
121
|
+
export const refreshReservePrice = async (reserves, pythConnection) => {
|
|
132
122
|
const priceIdentifiers = Array.from(new Set(reserves.map((r) => toHex(new Uint8Array(r.priceIdentifier.bytes)))));
|
|
133
|
-
const priceFeeds =
|
|
123
|
+
const priceFeeds = await pythConnection.getLatestPriceFeeds(priceIdentifiers);
|
|
134
124
|
if (!priceFeeds)
|
|
135
125
|
return reserves;
|
|
136
126
|
const updatedReserves = [];
|
|
@@ -139,16 +129,16 @@ export const refreshReservePrice = (reserves, pythConnection) => __awaiter(void
|
|
|
139
129
|
const priceFeed = priceFeeds.find((p) => p.id === toHex(new Uint8Array(reserve.priceIdentifier.bytes)));
|
|
140
130
|
if (!priceFeed)
|
|
141
131
|
throw new Error(`Price feed not found for reserve ${reserve.coinType.name}`);
|
|
142
|
-
const newReserve =
|
|
132
|
+
const newReserve = { ...reserve };
|
|
143
133
|
newReserve.price = stringToDecimal(priceFeed.getPriceUnchecked().getPriceAsNumberUnchecked().toString());
|
|
144
134
|
newReserve.smoothedPrice = stringToDecimal(priceFeed.getEmaPriceUnchecked().getPriceAsNumberUnchecked().toString());
|
|
145
135
|
newReserve.priceLastUpdateTimestampS = BigInt(priceFeed.getPriceUnchecked().publishTime);
|
|
146
136
|
updatedReserves.push(newReserve);
|
|
147
137
|
}
|
|
148
138
|
return updatedReserves;
|
|
149
|
-
}
|
|
139
|
+
};
|
|
150
140
|
export const updateUserRewardManager = (poolManager, userRewardManager, nowMs) => {
|
|
151
|
-
const updatedUserRewardManager =
|
|
141
|
+
const updatedUserRewardManager = { ...userRewardManager };
|
|
152
142
|
for (let i = 0; i < poolManager.poolRewards.length; i++) {
|
|
153
143
|
const poolReward = poolManager.poolRewards[i];
|
|
154
144
|
if (poolReward == null) {
|
|
@@ -158,7 +148,7 @@ export const updateUserRewardManager = (poolManager, userRewardManager, nowMs) =
|
|
|
158
148
|
userRewardManager.rewards.push(null);
|
|
159
149
|
}
|
|
160
150
|
const oldReward = updatedUserRewardManager.rewards[i];
|
|
161
|
-
const reward =
|
|
151
|
+
const reward = { ...oldReward };
|
|
162
152
|
if (oldReward != null) {
|
|
163
153
|
const newRewards = decimalToBigNumber(poolReward.cumulativeRewardsPerShare)
|
|
164
154
|
.minus(decimalToBigNumber(oldReward.cumulativeRewardsPerShare))
|
|
@@ -183,13 +173,13 @@ export const updateUserRewardManager = (poolManager, userRewardManager, nowMs) =
|
|
|
183
173
|
return updatedUserRewardManager;
|
|
184
174
|
};
|
|
185
175
|
export const refreshObligation = (unrefreshedObligation, refreshedReserves) => {
|
|
186
|
-
const obligation =
|
|
176
|
+
const obligation = { ...unrefreshedObligation };
|
|
187
177
|
// Refresh Deposits
|
|
188
178
|
let depositValueUsd = new BigNumber(0);
|
|
189
179
|
let allowedBorrowValueUsd = new BigNumber(0);
|
|
190
180
|
let unhealthyBorrowValueUsd = new BigNumber(0);
|
|
191
181
|
for (let i = 0; i < obligation.deposits.length; i++) {
|
|
192
|
-
const deposit =
|
|
182
|
+
const deposit = { ...obligation.deposits[i] };
|
|
193
183
|
const reserve = refreshedReserves.find((r) => r.coinType.name === deposit.coinType.name);
|
|
194
184
|
if (!reserve) {
|
|
195
185
|
throw new Error(`Unable to find reserve for coin type ${deposit.coinType.name}`);
|
|
@@ -219,7 +209,9 @@ export const refreshObligation = (unrefreshedObligation, refreshedReserves) => {
|
|
|
219
209
|
throw new Error(`Unable to find reserve for coin type ${unrefreshedBorrow.coinType.name}`);
|
|
220
210
|
}
|
|
221
211
|
const config = reserve.config.element;
|
|
222
|
-
const borrow =
|
|
212
|
+
const borrow = {
|
|
213
|
+
...compoundDebt(unrefreshedBorrow, reserve),
|
|
214
|
+
};
|
|
223
215
|
obligation.userRewardManagers[Number(borrow.userRewardManagerIndex)] =
|
|
224
216
|
updateUserRewardManager(reserve.borrowsPoolRewardManager, obligation.userRewardManagers[Number(borrow.userRewardManagerIndex)], Date.now());
|
|
225
217
|
const marketValue = decimalToBigNumber(borrow.borrowedAmount)
|
|
@@ -276,7 +268,7 @@ export const totalSupply = (reserve) => {
|
|
|
276
268
|
.minus(decimalToBigNumber(reserve.unclaimedSpreadFees));
|
|
277
269
|
};
|
|
278
270
|
export const compoundDebt = (borrow, reserve) => {
|
|
279
|
-
const borrowCopy =
|
|
271
|
+
const borrowCopy = { ...borrow };
|
|
280
272
|
const newCumulativeBorrowRate = decimalToBigNumber(reserve.cumulativeBorrowRate);
|
|
281
273
|
const compoundedInterestRate = newCumulativeBorrowRate.dividedBy(decimalToBigNumber(borrow.cumulativeBorrowRate));
|
|
282
274
|
borrowCopy.borrowedAmount = stringToDecimal(decimalToBigNumber(borrow.borrowedAmount)
|