@suilend/sdk 12.6.0 → 12.7.0-next.g7057287
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/lib/initialize.d.ts +8 -0
- package/lib/initialize.js +17 -5
- package/package.json +1 -1
package/lib/initialize.d.ts
CHANGED
|
@@ -148,6 +148,14 @@ type InitializeSuilendMarket = {
|
|
|
148
148
|
suilendClient: SuilendClient;
|
|
149
149
|
lendingMarketMetadata?: LendingMarketMetadata;
|
|
150
150
|
};
|
|
151
|
+
export type InitializePriceInputs = {
|
|
152
|
+
priceFeedIds: string[];
|
|
153
|
+
temporaryPythFeedCoinTypes: string[];
|
|
154
|
+
rewardCoinTypes: string[];
|
|
155
|
+
};
|
|
156
|
+
export declare const getInitializePriceInputs: (lendingMarkets: {
|
|
157
|
+
reserves: Reserve<string>[];
|
|
158
|
+
}[], nowMs: number) => InitializePriceInputs;
|
|
151
159
|
export declare const initializeSuilendAll: (suiGrpcClient: SuiGrpcClient, markets: InitializeSuilendMarket[], fallbackPythEndpoint?: string, options?: InitializeSuilendOptions) => Promise<{
|
|
152
160
|
lendingMarket: {
|
|
153
161
|
version: bigint;
|
package/lib/initialize.js
CHANGED
|
@@ -219,7 +219,7 @@ export const priceTemporaryPythFeedReserves = async (reserves, fetchPrices = get
|
|
|
219
219
|
const coinTypes = reserves.map((reserve) => normalizeStructTag(reserve.coinType.name));
|
|
220
220
|
let cachedUsdPrices = {};
|
|
221
221
|
try {
|
|
222
|
-
cachedUsdPrices = await fetchPrices(coinTypes);
|
|
222
|
+
cachedUsdPrices = await fetchPrices(Array.from(new Set(coinTypes)));
|
|
223
223
|
}
|
|
224
224
|
catch (err) {
|
|
225
225
|
console.error(err);
|
|
@@ -277,6 +277,20 @@ const isUnpricedRewardCoinType = (coinType) => isSendPoints(coinType) ||
|
|
|
277
277
|
isSteammPoints(coinType) ||
|
|
278
278
|
coinType === NORMALIZED_MAYA_COINTYPE ||
|
|
279
279
|
coinType === NORMALIZED_mPOINTS_COINTYPE;
|
|
280
|
+
const isTemporaryPythFeedReserve = (reserve) => TEMPORARY_PYTH_PRICE_FEED_COINTYPES.includes(normalizeStructTag(reserve.coinType.name));
|
|
281
|
+
const reservelessActiveRewardCoinTypes = ({ uniqueReserveCoinTypes, uniqueActiveRewardsCoinTypes, }) => uniqueActiveRewardsCoinTypes.filter((coinType) => !isUnpricedRewardCoinType(coinType) &&
|
|
282
|
+
coinType !== NORMALIZED_TREATS_COINTYPE &&
|
|
283
|
+
!uniqueReserveCoinTypes.includes(coinType));
|
|
284
|
+
export const getInitializePriceInputs = (lendingMarkets, nowMs) => {
|
|
285
|
+
const reserves = lendingMarkets.flatMap((lendingMarket) => lendingMarket.reserves);
|
|
286
|
+
return {
|
|
287
|
+
priceFeedIds: simulate.reservePriceFeedIds(reserves.filter((reserve) => !isTemporaryPythFeedReserve(reserve))),
|
|
288
|
+
temporaryPythFeedCoinTypes: Array.from(new Set(reserves
|
|
289
|
+
.filter(isTemporaryPythFeedReserve)
|
|
290
|
+
.map((reserve) => normalizeStructTag(reserve.coinType.name)))),
|
|
291
|
+
rewardCoinTypes: Array.from(new Set(lendingMarkets.flatMap((lendingMarket) => reservelessActiveRewardCoinTypes(marketCoinTypes(lendingMarket.reserves, nowMs))))),
|
|
292
|
+
};
|
|
293
|
+
};
|
|
280
294
|
const seedRewardPriceMap = (reserveMap) => {
|
|
281
295
|
const rewardPriceMap = Object.entries(reserveMap).reduce((acc, [coinType, reserve]) => ({ ...acc, [coinType]: reserve.price }), {});
|
|
282
296
|
rewardPriceMap[NORMALIZED_TREATS_COINTYPE] = new BigNumber(0.1);
|
|
@@ -300,7 +314,7 @@ const initializeSuilendMarkets = async (markets, fallbackPythEndpoint, options,
|
|
|
300
314
|
const withTemporaryPythPriceFeeds = [];
|
|
301
315
|
for (const rawReserve of suilendClient.lendingMarket.reserves) {
|
|
302
316
|
const reserve = simulate.compoundReserveInterest(rawReserve, nowS);
|
|
303
|
-
if (
|
|
317
|
+
if (isTemporaryPythFeedReserve(reserve)) {
|
|
304
318
|
withTemporaryPythPriceFeeds.push(reserve);
|
|
305
319
|
}
|
|
306
320
|
else {
|
|
@@ -310,9 +324,7 @@ const initializeSuilendMarkets = async (markets, fallbackPythEndpoint, options,
|
|
|
310
324
|
return { withoutTemporaryPythPriceFeeds, withTemporaryPythPriceFeeds };
|
|
311
325
|
});
|
|
312
326
|
const coinTypesByMarket = reservesByMarket.map(({ withoutTemporaryPythPriceFeeds, withTemporaryPythPriceFeeds }) => marketCoinTypes([...withoutTemporaryPythPriceFeeds, ...withTemporaryPythPriceFeeds], nowMs));
|
|
313
|
-
const reservelessActiveRewardCoinTypesByMarket = coinTypesByMarket.map(
|
|
314
|
-
coinType !== NORMALIZED_TREATS_COINTYPE &&
|
|
315
|
-
!uniqueReserveCoinTypes.includes(coinType)));
|
|
327
|
+
const reservelessActiveRewardCoinTypesByMarket = coinTypesByMarket.map(reservelessActiveRewardCoinTypes);
|
|
316
328
|
const [[refreshedWithoutTemporaryByMarket, fabricatedPriceCoinTypesByMarket], coinMetadataByMarket, rewardUsdPrices,] = await Promise.all([
|
|
317
329
|
Promise.all([
|
|
318
330
|
resolvePythConnection(options?.pythConnection, fallbackPythEndpoint, options?.pythConnectionConfig).then((pythConnection) => refreshReservesForInitializeAll(reservesByMarket.map((r) => r.withoutTemporaryPythPriceFeeds), pythConnection, options?.tolerateMissingPriceFeeds)),
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@suilend/sdk","version":"12.
|
|
1
|
+
{"name":"@suilend/sdk","version":"12.7.0-next.g7057287","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","./mmt":"./mmt.js","./strategies":"./strategies.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/proCompatible":"./lib/proCompatible.js","./lib/pyth":"./lib/pyth.js","./lib/strategyOwnerCap":"./lib/strategyOwnerCap.js","./lib/transactions":"./lib/transactions.js","./lib/types":"./lib/types.js","./margin":"./margin/index.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/quote":"./swap/quote.js","./swap/transaction":"./swap/transaction.js","./utils/events":"./utils/events.js","./utils/feedId":"./utils/feedId.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","./margin/margin/admin_cap":"./margin/margin/admin_cap.js","./margin/margin/market":"./margin/margin/market.js","./margin/margin/permissions":"./margin/margin/permissions.js","./margin/margin/position":"./margin/margin/position.js","./margin/margin/router":"./margin/margin/router.js","./margin/margin/version":"./margin/margin/version.js","./margin/utils":"./margin/utils/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","./margin/margin/deps/std/type_name":"./margin/margin/deps/std/type_name.js","./margin/margin/deps/sui/vec_set":"./margin/margin/deps/sui/vec_set.js","./margin/margin/deps/suilend/lending_market":"./margin/margin/deps/suilend/lending_market.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/price-identifier/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs.js"},"types":"./index.d.ts","scripts":{"build":"rm -rf ./dist && tsc && node ./fix-esm-imports.js","typecheck":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","test":"vitest run","lint:ci":"yarn run typecheck","prettier":"prettier --write src/ tests/","release":"yarn run build && node ./release.js && cd ./dist && npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/fireflyprotocol/lending-mono.git","directory":"ts/sdks/sdk"},"dependencies":{"@bluefin-exchange/bluefin7k-aggregator-sdk":"7.6.3","@cetusprotocol/aggregator-sdk":"1.7.3","@flowx-finance/sdk":"2.1.0","@pythnetwork/hermes-client":"3.1.0","@pythnetwork/pyth-sui-js":"4.0.0","@suilend/springsui-sdk":"4.1.0","bignumber.js":"11.1.5","bn.js":"5.2.5","crypto-js":"4.2.0","lodash":"4.18.1","p-limit":"7.3.3","uuid":"14.0.2"},"devDependencies":{"@mysten/bcs":"2.1.1","@mysten/sui":"2.29.0","@suilend/sui-core":"2.1.0","@tsconfig/recommended":"1.0.13","@types/bn.js":"5.2.0","@types/lodash":"4.17.25","@types/node":"26.5.1","fast-check":"4.10.2","prettier":"3.9.9","ts-node":"10.9.2","typescript":"6.0.3","vite":"8.3.0","vitest":"5.0.1"},"peerDependencies":{"@mysten/bcs":"^2.1.1","@mysten/sui":">=2.22.1 <3","@suilend/sui-core":"^2.0.1"},"type":"module"}
|