@suilend/sdk 1.1.65 → 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 -12
- package/package.json +1 -1
- package/swap/quote.js +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,17 +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
|
-
for (const reserve of reservesWithTemporaryPythPriceFeeds) {
|
|
140
|
-
let cachedUsdPrice = yield (0, sui_fe_1.getPrice)((0, utils_1.normalizeStructTag)(reserve.coinType.name));
|
|
141
|
-
if (cachedUsdPrice === undefined)
|
|
142
|
-
cachedUsdPrice = 0.0001; // Non-zero price override for coinTypes with price feed overrides
|
|
143
|
-
const parsedCachedUsdPrice = BigInt(+new bignumber_js_1.default(cachedUsdPrice)
|
|
144
|
-
.times(constants_1.WAD)
|
|
145
|
-
.integerValue(bignumber_js_1.default.ROUND_DOWN));
|
|
146
|
-
reserve.price.value = parsedCachedUsdPrice;
|
|
147
|
-
reserve.smoothedPrice.value = parsedCachedUsdPrice;
|
|
148
|
-
}
|
|
149
173
|
// const walReserve = refreshedRawReserves.find(
|
|
150
174
|
// (r) => normalizeStructTag(r.coinType.name) === NORMALIZED_WAL_COINTYPE,
|
|
151
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"}}
|
package/swap/quote.js
CHANGED
|
@@ -354,7 +354,7 @@ const getAggQuotes = (sdkMap, activeProviders, onGetAggQuote, tokenIn, tokenOut,
|
|
|
354
354
|
});
|
|
355
355
|
exports.getAggQuotes = getAggQuotes;
|
|
356
356
|
const getAggSortedQuotesAll = (sdkMap, activeProviders, tokenIn, tokenOut, amountIn) => __awaiter(void 0, void 0, void 0, function* () {
|
|
357
|
-
const timeoutMs =
|
|
357
|
+
const timeoutMs = 1500;
|
|
358
358
|
// Get quotes in parallel
|
|
359
359
|
const quotes = yield Promise.all([
|
|
360
360
|
activeProviders.includes(QuoteProvider.AFTERMATH)
|