@suilend/sdk 12.1.0 → 12.2.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/lib/initialize.d.ts +9 -0
- package/lib/initialize.js +39 -12
- package/package.json +1 -1
package/lib/initialize.d.ts
CHANGED
|
@@ -15,6 +15,15 @@ export declare const resolveReserveOrder: (lendingMarketId: string, lendingMarke
|
|
|
15
15
|
export declare const sortReservesByOrder: <T extends {
|
|
16
16
|
coinType: string;
|
|
17
17
|
}>(reserves: T[], order: string[]) => T[];
|
|
18
|
+
export declare const resolveCoinMetadataForInitializeAll: (markets: {
|
|
19
|
+
miscCoinTypes: string[];
|
|
20
|
+
reserveCoinTypes: string[];
|
|
21
|
+
rewardCoinTypes: string[];
|
|
22
|
+
}[]) => Promise<{
|
|
23
|
+
coinMetadataMap: Record<string, import("@suilend/sui-core").Token>;
|
|
24
|
+
reserveCoinMetadataMap: Record<string, import("@suilend/sui-core").Token>;
|
|
25
|
+
rewardCoinMetadataMap: Record<string, import("@suilend/sui-core").Token>;
|
|
26
|
+
}[]>;
|
|
18
27
|
export declare const resolveCoinMetadataForInitialize: (miscCoinTypes: string[], reserveCoinTypes: string[], rewardCoinTypes: string[]) => Promise<{
|
|
19
28
|
coinMetadataMap: Record<string, import("@suilend/sui-core").Token>;
|
|
20
29
|
reserveCoinMetadataMap: Record<string, import("@suilend/sui-core").Token>;
|
package/lib/initialize.js
CHANGED
|
@@ -128,23 +128,33 @@ export const sortReservesByOrder = (reserves, order) => {
|
|
|
128
128
|
return aIndex > -1 ? -1 : 1;
|
|
129
129
|
});
|
|
130
130
|
};
|
|
131
|
-
export const
|
|
132
|
-
const { metadata } = await getCoinMetadataMapPartial([
|
|
133
|
-
...miscCoinTypes,
|
|
134
|
-
...reserveCoinTypes,
|
|
135
|
-
...rewardCoinTypes,
|
|
136
|
-
]);
|
|
131
|
+
export const resolveCoinMetadataForInitializeAll = async (markets) => {
|
|
132
|
+
const { metadata } = await getCoinMetadataMapPartial(Array.from(new Set(markets.flatMap((market) => [
|
|
133
|
+
...market.miscCoinTypes,
|
|
134
|
+
...market.reserveCoinTypes,
|
|
135
|
+
...market.rewardCoinTypes,
|
|
136
|
+
]))));
|
|
137
137
|
const pick = (coinTypes) => coinTypes.reduce((acc, coinType) => {
|
|
138
138
|
const coinMetadata = metadata[coinType];
|
|
139
139
|
return coinMetadata === undefined
|
|
140
140
|
? acc
|
|
141
141
|
: { ...acc, [coinType]: coinMetadata };
|
|
142
142
|
}, {});
|
|
143
|
-
return {
|
|
144
|
-
coinMetadataMap:
|
|
143
|
+
return markets.map(({ miscCoinTypes, reserveCoinTypes, rewardCoinTypes }) => ({
|
|
144
|
+
coinMetadataMap: pick([
|
|
145
|
+
...miscCoinTypes,
|
|
146
|
+
...reserveCoinTypes,
|
|
147
|
+
...rewardCoinTypes,
|
|
148
|
+
]),
|
|
145
149
|
reserveCoinMetadataMap: pick(reserveCoinTypes),
|
|
146
150
|
rewardCoinMetadataMap: pick(rewardCoinTypes),
|
|
147
|
-
};
|
|
151
|
+
}));
|
|
152
|
+
};
|
|
153
|
+
export const resolveCoinMetadataForInitialize = async (miscCoinTypes, reserveCoinTypes, rewardCoinTypes) => {
|
|
154
|
+
const [resolved] = await resolveCoinMetadataForInitializeAll([
|
|
155
|
+
{ miscCoinTypes, reserveCoinTypes, rewardCoinTypes },
|
|
156
|
+
]);
|
|
157
|
+
return resolved;
|
|
148
158
|
};
|
|
149
159
|
export const refreshReservesForInitializeAll = async (reservesByMarket, pythConnection, tolerateMissingPriceFeeds) => {
|
|
150
160
|
const allReserves = reservesByMarket.flat();
|
|
@@ -255,7 +265,7 @@ export const initializeSuilendAll = async (suiGrpcClient, markets, fallbackPythE
|
|
|
255
265
|
refreshReservesForInitializeAll(reservesByMarket.map((r) => r.withoutTemporaryPythPriceFeeds), pythConnection, options?.tolerateMissingPriceFeeds),
|
|
256
266
|
priceTemporaryPythFeedReservesAll(reservesByMarket.map((r) => r.withTemporaryPythPriceFeeds)),
|
|
257
267
|
]);
|
|
258
|
-
|
|
268
|
+
const prepared = markets.map(({ suilendClient, lendingMarketMetadata }, index) => {
|
|
259
269
|
const refreshedRawReserves = [
|
|
260
270
|
...refreshedWithoutTemporaryByMarket[index].reserves,
|
|
261
271
|
...reservesByMarket[index].withTemporaryPythPriceFeeds,
|
|
@@ -305,7 +315,24 @@ export const initializeSuilendAll = async (suiGrpcClient, markets, fallbackPythE
|
|
|
305
315
|
const uniqueReserveCoinTypes = Array.from(new Set(reserveCoinTypes));
|
|
306
316
|
const uniqueRewardCoinTypes = Array.from(new Set(rewardCoinTypes));
|
|
307
317
|
const uniqueActiveRewardsCoinTypes = Array.from(new Set(activeRewardCoinTypes));
|
|
308
|
-
|
|
318
|
+
return {
|
|
319
|
+
suilendClient,
|
|
320
|
+
lendingMarketMetadata,
|
|
321
|
+
refreshedRawReserves,
|
|
322
|
+
unpricedCoinTypes,
|
|
323
|
+
uniqueMiscCoinTypes,
|
|
324
|
+
uniqueReserveCoinTypes,
|
|
325
|
+
uniqueRewardCoinTypes,
|
|
326
|
+
uniqueActiveRewardsCoinTypes,
|
|
327
|
+
};
|
|
328
|
+
});
|
|
329
|
+
const coinMetadataByMarket = await resolveCoinMetadataForInitializeAll(prepared.map(({ uniqueMiscCoinTypes, uniqueReserveCoinTypes, uniqueRewardCoinTypes, }) => ({
|
|
330
|
+
miscCoinTypes: uniqueMiscCoinTypes,
|
|
331
|
+
reserveCoinTypes: uniqueReserveCoinTypes,
|
|
332
|
+
rewardCoinTypes: uniqueRewardCoinTypes,
|
|
333
|
+
})));
|
|
334
|
+
return prepared.map(({ suilendClient, lendingMarketMetadata, refreshedRawReserves, unpricedCoinTypes, uniqueReserveCoinTypes, uniqueRewardCoinTypes, uniqueActiveRewardsCoinTypes, }, index) => {
|
|
335
|
+
const { coinMetadataMap, reserveCoinMetadataMap, rewardCoinMetadataMap } = coinMetadataByMarket[index];
|
|
309
336
|
// const walReserve = refreshedRawReserves.find(
|
|
310
337
|
// (r) => normalizeStructTag(r.coinType.name) === NORMALIZED_WAL_COINTYPE,
|
|
311
338
|
// );
|
|
@@ -334,7 +361,7 @@ export const initializeSuilendAll = async (suiGrpcClient, markets, fallbackPythE
|
|
|
334
361
|
activeRewardCoinTypes: uniqueActiveRewardsCoinTypes,
|
|
335
362
|
rewardCoinMetadataMap,
|
|
336
363
|
};
|
|
337
|
-
})
|
|
364
|
+
});
|
|
338
365
|
};
|
|
339
366
|
export const initializeSuilend = async (suiGrpcClient, suilendClient, lendingMarketMetadata, fallbackPythEndpoint, options) => {
|
|
340
367
|
const [initialized] = await initializeSuilendAll(suiGrpcClient, [{ suilendClient, lendingMarketMetadata }], fallbackPythEndpoint, options);
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@suilend/sdk","version":"12.
|
|
1
|
+
{"name":"@suilend/sdk","version":"12.2.0","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.2","@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.2","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.0","prettier":"3.9.6","ts-node":"10.9.2","typescript":"6.0.3","vite":"8.3.0","vitest":"5.0.0"},"peerDependencies":{"@mysten/bcs":"^2.1.1","@mysten/sui":">=2.22.1 <3","@suilend/sui-core":"^2.0.1"},"type":"module"}
|