@suilend/sdk 1.1.66 → 1.1.67
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/client.d.ts +11 -1
- package/client.js +2 -2
- package/lib/initialize.js +36 -18
- package/package.json +1 -1
package/client.d.ts
CHANGED
|
@@ -19,6 +19,16 @@ type UiLendingMarket = {
|
|
|
19
19
|
export declare const LENDING_MARKETS: UiLendingMarket[];
|
|
20
20
|
export declare const LENDING_MARKET_ID: string;
|
|
21
21
|
export declare const LENDING_MARKET_TYPE: string;
|
|
22
|
+
export type ObligationWithUnclaimedRewards = {
|
|
23
|
+
id: string;
|
|
24
|
+
unclaimedRewards: {
|
|
25
|
+
rewardReserveArrayIndex: bigint;
|
|
26
|
+
rewardIndex: bigint;
|
|
27
|
+
rewardCoinType: string;
|
|
28
|
+
side: Side;
|
|
29
|
+
depositReserveArrayIndex: bigint;
|
|
30
|
+
}[];
|
|
31
|
+
};
|
|
22
32
|
export type ClaimRewardsReward = {
|
|
23
33
|
reserveArrayIndex: bigint;
|
|
24
34
|
rewardIndex: bigint;
|
|
@@ -47,7 +57,7 @@ export declare class SuilendClient {
|
|
|
47
57
|
cancelReward(lendingMarketOwnerCapId: string, reserveArrayIndex: bigint, isDepositReward: boolean, rewardIndex: bigint, rewardCoinType: string, transaction: Transaction): TransactionResult;
|
|
48
58
|
closeReward(lendingMarketOwnerCapId: string, reserveArrayIndex: bigint, isDepositReward: boolean, rewardIndex: bigint, rewardCoinType: string, transaction: Transaction): TransactionResult;
|
|
49
59
|
claimReward(obligationOwnerCapId: string, reserveArrayIndex: bigint, rewardIndex: bigint, rewardType: string, side: Side, transaction: Transaction): TransactionResult;
|
|
50
|
-
claimRewardAndDeposit(obligationId: string, rewardReserveArrayIndex: bigint, rewardIndex: bigint,
|
|
60
|
+
claimRewardAndDeposit(obligationId: string, rewardReserveArrayIndex: bigint, rewardIndex: bigint, rewardCoinType: string, side: Side, depositReserveArrayIndex: bigint, transaction: Transaction): TransactionResult;
|
|
51
61
|
claimRewards(ownerId: string, obligationOwnerCapId: string, rewards: ClaimRewardsReward[], transaction: Transaction): {
|
|
52
62
|
transaction: Transaction;
|
|
53
63
|
mergedCoinsMap: Record<string, TransactionObjectArgument>;
|
package/client.js
CHANGED
|
@@ -292,8 +292,8 @@ class SuilendClient {
|
|
|
292
292
|
isDepositReward: transaction.pure.bool(side === types_1.Side.DEPOSIT),
|
|
293
293
|
});
|
|
294
294
|
}
|
|
295
|
-
claimRewardAndDeposit(obligationId, rewardReserveArrayIndex, rewardIndex,
|
|
296
|
-
return (0, functions_1.claimRewardsAndDeposit)(transaction, [this.lendingMarket.$typeArgs[0],
|
|
295
|
+
claimRewardAndDeposit(obligationId, rewardReserveArrayIndex, rewardIndex, rewardCoinType, side, depositReserveArrayIndex, transaction) {
|
|
296
|
+
return (0, functions_1.claimRewardsAndDeposit)(transaction, [this.lendingMarket.$typeArgs[0], rewardCoinType], {
|
|
297
297
|
lendingMarket: transaction.object(this.lendingMarket.id),
|
|
298
298
|
obligationId: transaction.pure.id(obligationId),
|
|
299
299
|
clock: transaction.object(utils_1.SUI_CLOCK_OBJECT_ID),
|
package/lib/initialize.js
CHANGED
|
@@ -102,7 +102,42 @@ exports.NORMALIZED_TREATS_COINTYPE = (0, utils_1.normalizeStructTag)(TREATS_COIN
|
|
|
102
102
|
const initializeSuilend = (suiClient, suilendClient) => __awaiter(void 0, void 0, void 0, function* () {
|
|
103
103
|
const nowMs = Date.now();
|
|
104
104
|
const nowS = Math.floor(nowMs / 1000);
|
|
105
|
-
const
|
|
105
|
+
const interestCompoundedRawReserves = suilendClient.lendingMarket.reserves.map((r) => simulate.compoundReserveInterest(r, nowS));
|
|
106
|
+
// Split the reserves into two arrays
|
|
107
|
+
const reservesWithoutTemporaryPythPriceFeeds = [];
|
|
108
|
+
const reservesWithTemporaryPythPriceFeeds = [];
|
|
109
|
+
for (const reserve of interestCompoundedRawReserves) {
|
|
110
|
+
if (sui_fe_1.TEMPORARY_PYTH_PRICE_FEED_COINTYPES.includes((0, utils_1.normalizeStructTag)(reserve.coinType.name))) {
|
|
111
|
+
reservesWithTemporaryPythPriceFeeds.push(reserve);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
reservesWithoutTemporaryPythPriceFeeds.push(reserve);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const [refreshedReservesWithoutTemporaryPythPriceFeeds] = yield Promise.all([
|
|
118
|
+
simulate.refreshReservePrice(reservesWithoutTemporaryPythPriceFeeds, new pyth_sui_js_1.SuiPriceServiceConnection("https://hermes.pyth.network")),
|
|
119
|
+
Promise.all(reservesWithTemporaryPythPriceFeeds.map((reserve) => (() => __awaiter(void 0, void 0, void 0, function* () {
|
|
120
|
+
let cachedUsdPrice;
|
|
121
|
+
try {
|
|
122
|
+
cachedUsdPrice = yield (0, sui_fe_1.getPrice)((0, utils_1.normalizeStructTag)(reserve.coinType.name));
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
console.error(err);
|
|
126
|
+
}
|
|
127
|
+
if (cachedUsdPrice === undefined)
|
|
128
|
+
cachedUsdPrice = 0.0001; // Non-zero price override if no price
|
|
129
|
+
const parsedCachedUsdPrice = BigInt(+new bignumber_js_1.default(cachedUsdPrice)
|
|
130
|
+
.times(constants_1.WAD)
|
|
131
|
+
.integerValue(bignumber_js_1.default.ROUND_DOWN));
|
|
132
|
+
reserve.price.value = parsedCachedUsdPrice;
|
|
133
|
+
reserve.smoothedPrice.value = parsedCachedUsdPrice;
|
|
134
|
+
}))())),
|
|
135
|
+
]);
|
|
136
|
+
// Recombine reserves back into a single array
|
|
137
|
+
const refreshedRawReserves = [
|
|
138
|
+
...refreshedReservesWithoutTemporaryPythPriceFeeds,
|
|
139
|
+
...reservesWithTemporaryPythPriceFeeds,
|
|
140
|
+
];
|
|
106
141
|
const miscCoinTypes = [
|
|
107
142
|
sui_fe_1.NORMALIZED_SEND_POINTS_S1_COINTYPE,
|
|
108
143
|
sui_fe_1.NORMALIZED_SEND_POINTS_S2_COINTYPE,
|
|
@@ -135,23 +170,6 @@ const initializeSuilend = (suiClient, suilendClient) => __awaiter(void 0, void 0
|
|
|
135
170
|
(0, sui_fe_1.getCoinMetadataMap)(uniqueRewardCoinTypes),
|
|
136
171
|
]);
|
|
137
172
|
const coinMetadataMap = Object.assign(Object.assign(Object.assign({}, miscCoinMetadataMap), reserveCoinMetadataMap), rewardCoinMetadataMap);
|
|
138
|
-
const reservesWithTemporaryPythPriceFeeds = refreshedRawReserves.filter((r) => sui_fe_1.TEMPORARY_PYTH_PRICE_FEED_COINTYPES.includes((0, utils_1.normalizeStructTag)(r.coinType.name)));
|
|
139
|
-
yield Promise.all(reservesWithTemporaryPythPriceFeeds.map((reserve) => (() => __awaiter(void 0, void 0, void 0, function* () {
|
|
140
|
-
let cachedUsdPrice;
|
|
141
|
-
try {
|
|
142
|
-
cachedUsdPrice = yield (0, sui_fe_1.getPrice)((0, utils_1.normalizeStructTag)(reserve.coinType.name));
|
|
143
|
-
}
|
|
144
|
-
catch (err) {
|
|
145
|
-
console.error(err);
|
|
146
|
-
}
|
|
147
|
-
if (cachedUsdPrice === undefined)
|
|
148
|
-
cachedUsdPrice = 0.0001; // Non-zero price override for coinTypes with price feed overrides
|
|
149
|
-
const parsedCachedUsdPrice = BigInt(+new bignumber_js_1.default(cachedUsdPrice)
|
|
150
|
-
.times(constants_1.WAD)
|
|
151
|
-
.integerValue(bignumber_js_1.default.ROUND_DOWN));
|
|
152
|
-
reserve.price.value = parsedCachedUsdPrice;
|
|
153
|
-
reserve.smoothedPrice.value = parsedCachedUsdPrice;
|
|
154
|
-
}))()));
|
|
155
173
|
// const walReserve = refreshedRawReserves.find(
|
|
156
174
|
// (r) => normalizeStructTag(r.coinType.name) === NORMALIZED_WAL_COINTYPE,
|
|
157
175
|
// );
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@suilend/sdk","version":"1.1.
|
|
1
|
+
{"name":"@suilend/sdk","version":"1.1.67","private":false,"description":"A TypeScript SDK for interacting with the Suilend program","author":"Suilend","license":"MIT","main":"./index.js","exports":{".":"./index.js","./client":"./client.js","./api/events":"./api/events.js","./api":"./api/index.js","./lib/constants":"./lib/constants.js","./lib":"./lib/index.js","./lib/initialize":"./lib/initialize.js","./lib/liquidityMining":"./lib/liquidityMining.js","./lib/transactions":"./lib/transactions.js","./lib/types":"./lib/types.js","./parsers/apiReserveAssetDataEvent":"./parsers/apiReserveAssetDataEvent.js","./parsers":"./parsers/index.js","./parsers/lendingMarket":"./parsers/lendingMarket.js","./parsers/obligation":"./parsers/obligation.js","./parsers/rateLimiter":"./parsers/rateLimiter.js","./parsers/reserve":"./parsers/reserve.js","./swap":"./swap/index.js","./swap/okxDex":"./swap/okxDex.js","./swap/quote":"./swap/quote.js","./swap/transaction":"./swap/transaction.js","./utils/events":"./utils/events.js","./utils":"./utils/index.js","./utils/obligation":"./utils/obligation.js","./utils/simulate":"./utils/simulate.js","./_generated/_framework/reified":"./_generated/_framework/reified.js","./_generated/_framework/util":"./_generated/_framework/util.js","./_generated/_framework/vector":"./_generated/_framework/vector.js","./_generated/suilend":"./_generated/suilend/index.js","./_generated/suilend/cell/structs":"./_generated/suilend/cell/structs.js","./_generated/suilend/decimal/structs":"./_generated/suilend/decimal/structs.js","./_generated/suilend/lending-market/functions":"./_generated/suilend/lending-market/functions.js","./_generated/suilend/lending-market/structs":"./_generated/suilend/lending-market/structs.js","./_generated/suilend/lending-market-registry/functions":"./_generated/suilend/lending-market-registry/functions.js","./_generated/suilend/liquidity-mining/structs":"./_generated/suilend/liquidity-mining/structs.js","./_generated/suilend/obligation/structs":"./_generated/suilend/obligation/structs.js","./_generated/suilend/rate-limiter/functions":"./_generated/suilend/rate-limiter/functions.js","./_generated/suilend/rate-limiter/structs":"./_generated/suilend/rate-limiter/structs.js","./_generated/suilend/reserve/structs":"./_generated/suilend/reserve/structs.js","./_generated/suilend/reserve-config/functions":"./_generated/suilend/reserve-config/functions.js","./_generated/suilend/reserve-config/structs":"./_generated/suilend/reserve-config/structs.js","./_generated/_dependencies/source/0x1":"./_generated/_dependencies/source/0x1/index.js","./_generated/_dependencies/source/0x2":"./_generated/_dependencies/source/0x2/index.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/index.js","./_generated/_dependencies/source/0x1/ascii/structs":"./_generated/_dependencies/source/0x1/ascii/structs.js","./_generated/_dependencies/source/0x1/option/structs":"./_generated/_dependencies/source/0x1/option/structs.js","./_generated/_dependencies/source/0x1/type-name/structs":"./_generated/_dependencies/source/0x1/type-name/structs.js","./_generated/_dependencies/source/0x2/bag/structs":"./_generated/_dependencies/source/0x2/bag/structs.js","./_generated/_dependencies/source/0x2/balance/structs":"./_generated/_dependencies/source/0x2/balance/structs.js","./_generated/_dependencies/source/0x2/object/structs":"./_generated/_dependencies/source/0x2/object/structs.js","./_generated/_dependencies/source/0x2/object-table/structs":"./_generated/_dependencies/source/0x2/object-table/structs.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs.js"},"types":"./index.js","scripts":{"build":"rm -rf ./dist && bun tsc","eslint":"eslint --fix \"./src/**/*.ts\"","prettier":"prettier --write \"./src/**/*\"","lint":"bun eslint && bun prettier && bun tsc --noEmit","release":"bun run build && bun ts-node ./release.ts && cd ./dist && npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/suilend/suilend-fe-public.git"},"bugs":{"url":"https://github.com/suilend/suilend-fe-public/issues"},"dependencies":{"@7kprotocol/sdk-ts":"^3.0.2","@cetusprotocol/aggregator-sdk":"^0.12.1","@flowx-finance/sdk":"^1.11.0","@pythnetwork/pyth-sui-js":"^2.1.0","aftermath-ts-sdk":"^1.3.11","bignumber.js":"^9.1.2","bn.js":"^5.2.2","crypto-js":"^4.2.0","p-limit":"3.1.0","uuid":"^11.0.3"},"devDependencies":{"ts-node":"^10.9.2"},"peerDependencies":{"@mysten/bcs":"1.6.0","@mysten/sui":"1.28.2","@suilend/sui-fe":"^0.2.82"}}
|