@suilend/sdk 11.5.0 → 11.6.0-next.g46d2d22
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 +5 -0
- package/lib/initialize.js +52 -15
- package/lib/types.d.ts +1 -0
- package/package.json +1 -1
package/lib/initialize.d.ts
CHANGED
|
@@ -6,10 +6,15 @@ import { ParsedReserve } from "../parsers";
|
|
|
6
6
|
import * as simulate from "../utils/simulate";
|
|
7
7
|
import { type HermesClientConfig } from "./pyth";
|
|
8
8
|
import { LendingMarketMetadata, StrategyOwnerCap } from "./types";
|
|
9
|
+
export declare const LENDING_MARKETS_CUSTOM_ORDER: string[];
|
|
9
10
|
export declare const RESERVES_CUSTOM_ORDER: Record<string, string[]>;
|
|
10
11
|
export declare const NORMALIZED_MAYA_COINTYPE: string;
|
|
11
12
|
export declare const NORMALIZED_mPOINTS_COINTYPE: string;
|
|
12
13
|
export declare const NORMALIZED_TREATS_COINTYPE: string;
|
|
14
|
+
export declare const resolveReserveOrder: (lendingMarketId: string, lendingMarketMetadata?: LendingMarketMetadata) => string[] | undefined;
|
|
15
|
+
export declare const sortReservesByOrder: <T extends {
|
|
16
|
+
coinType: string;
|
|
17
|
+
}>(reserves: T[], order: string[]) => T[];
|
|
13
18
|
export declare const resolveCoinMetadataForInitialize: (miscCoinTypes: string[], reserveCoinTypes: string[], rewardCoinTypes: string[]) => Promise<{
|
|
14
19
|
coinMetadataMap: Record<string, import("@suilend/sui-core").Token>;
|
|
15
20
|
reserveCoinMetadataMap: Record<string, import("@suilend/sui-core").Token>;
|
package/lib/initialize.js
CHANGED
|
@@ -7,6 +7,19 @@ import * as simulate from "../utils/simulate.js";
|
|
|
7
7
|
import { WAD } from "./constants.js";
|
|
8
8
|
import { resolvePythConnection } from "./pyth.js";
|
|
9
9
|
import { STRATEGY_TYPE_INFO_MAP, STRATEGY_WRAPPER_PACKAGE_ID_V1, } from "./strategyOwnerCap.js";
|
|
10
|
+
const BITWISE_LENDING_MARKET_ID = "0x2d7a85c0ad7c4d3c9c89a3785e32aa8d83ef3034148f49ce2d7c441bbba227be";
|
|
11
|
+
const EMBER_LENDING_MARKET_ID = "0x74d92cb095b618f344486f77bcce87fbffc0fe0b46584bb1828bb291a222dda8";
|
|
12
|
+
const SECURITIZE_LENDING_MARKET_ID = "0x13ec4438ef30dce971edde6e542b82c17a87fc2afeeee4be383b49f66d97a73b";
|
|
13
|
+
const MATRIXDOCK_LENDING_MARKET_ID = "0x8a8d8e138a28de1c637d0b0955e621b017da7010de388db5a18493eca99c5e82";
|
|
14
|
+
const BUCKET_LENDING_MARKET_ID = "0xd12df5fede59f1ac5e1f8413bc86bd6bc77fff2001366878df58ef6a26d58c67";
|
|
15
|
+
const ELIXIR_LENDING_MARKET_ID = "0x0d3a7f758d19d11e8526f66cca43403a99da16862c570c43efe0f8c4a500f7f2";
|
|
16
|
+
export const LENDING_MARKETS_CUSTOM_ORDER = [
|
|
17
|
+
LENDING_MARKET_ID,
|
|
18
|
+
BITWISE_LENDING_MARKET_ID,
|
|
19
|
+
EMBER_LENDING_MARKET_ID,
|
|
20
|
+
SECURITIZE_LENDING_MARKET_ID,
|
|
21
|
+
MATRIXDOCK_LENDING_MARKET_ID,
|
|
22
|
+
];
|
|
10
23
|
export const RESERVES_CUSTOM_ORDER = {
|
|
11
24
|
[LENDING_MARKET_ID]: [
|
|
12
25
|
// MAIN ASSETS
|
|
@@ -56,12 +69,12 @@ export const RESERVES_CUSTOM_ORDER = {
|
|
|
56
69
|
NORMALIZED_HIPPO_COINTYPE,
|
|
57
70
|
NORMALIZED_FUD_COINTYPE,
|
|
58
71
|
],
|
|
59
|
-
|
|
72
|
+
[EMBER_LENDING_MARKET_ID]: [
|
|
60
73
|
NORMALIZED_eTHIRD_COINTYPE,
|
|
61
74
|
NORMALIZED_eEARN_COINTYPE,
|
|
62
75
|
NORMALIZED_USDC_COINTYPE,
|
|
63
76
|
],
|
|
64
|
-
|
|
77
|
+
[MATRIXDOCK_LENDING_MARKET_ID]: [
|
|
65
78
|
NORMALIZED_XAUm_COINTYPE,
|
|
66
79
|
NORMALIZED_USDC_COINTYPE,
|
|
67
80
|
],
|
|
@@ -69,11 +82,11 @@ export const RESERVES_CUSTOM_ORDER = {
|
|
|
69
82
|
// NORMALIZED_SEND_COINTYPE,
|
|
70
83
|
// NORMALIZED_USDC_COINTYPE,
|
|
71
84
|
// ],
|
|
72
|
-
|
|
85
|
+
[BUCKET_LENDING_MARKET_ID]: [
|
|
73
86
|
NORMALIZED_USDB_COINTYPE,
|
|
74
87
|
NORMALIZED_USDC_COINTYPE,
|
|
75
88
|
],
|
|
76
|
-
|
|
89
|
+
[ELIXIR_LENDING_MARKET_ID]: [
|
|
77
90
|
NORMALIZED_sdeUSD_COINTYPE,
|
|
78
91
|
NORMALIZED_USDC_COINTYPE,
|
|
79
92
|
],
|
|
@@ -84,6 +97,38 @@ const TREATS_COINTYPE = "0x0dadb7fa2771c2952f96161fc1f0c105d1f22d53926b9ff2498a8
|
|
|
84
97
|
export const NORMALIZED_MAYA_COINTYPE = normalizeStructTag(MAYA_COINTYPE);
|
|
85
98
|
export const NORMALIZED_mPOINTS_COINTYPE = normalizeStructTag(mPOINTS_COINTYPE);
|
|
86
99
|
export const NORMALIZED_TREATS_COINTYPE = normalizeStructTag(TREATS_COINTYPE);
|
|
100
|
+
export const resolveReserveOrder = (lendingMarketId, lendingMarketMetadata) => lendingMarketMetadata?.reserveOrder ??
|
|
101
|
+
RESERVES_CUSTOM_ORDER[lendingMarketId];
|
|
102
|
+
const reserveRanks = (order) => {
|
|
103
|
+
const ranks = new Map();
|
|
104
|
+
order.forEach((coinType, index) => {
|
|
105
|
+
if (typeof coinType !== "string")
|
|
106
|
+
return;
|
|
107
|
+
let normalized;
|
|
108
|
+
try {
|
|
109
|
+
normalized = normalizeStructTag(coinType);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (!ranks.has(normalized))
|
|
115
|
+
ranks.set(normalized, index);
|
|
116
|
+
});
|
|
117
|
+
return ranks;
|
|
118
|
+
};
|
|
119
|
+
export const sortReservesByOrder = (reserves, order) => {
|
|
120
|
+
const ranks = reserveRanks(order);
|
|
121
|
+
return reserves.slice().sort((a, b) => {
|
|
122
|
+
const aIndex = ranks.get(a.coinType) ?? -1;
|
|
123
|
+
const bIndex = ranks.get(b.coinType) ?? -1;
|
|
124
|
+
if (aIndex > -1 && bIndex > -1)
|
|
125
|
+
return aIndex - bIndex;
|
|
126
|
+
else if (aIndex === -1 && bIndex === -1)
|
|
127
|
+
return 0;
|
|
128
|
+
else
|
|
129
|
+
return aIndex > -1 ? -1 : 1;
|
|
130
|
+
});
|
|
131
|
+
};
|
|
87
132
|
export const resolveCoinMetadataForInitialize = async (miscCoinTypes, reserveCoinTypes, rewardCoinTypes) => {
|
|
88
133
|
const { metadata } = await getCoinMetadataMapPartial([
|
|
89
134
|
...miscCoinTypes,
|
|
@@ -258,17 +303,9 @@ export const initializeSuilend = async (suiGrpcClient, suilendClient, lendingMar
|
|
|
258
303
|
// (walReserve.smoothedPrice.value as bigint) = walPrice;
|
|
259
304
|
// }
|
|
260
305
|
const lendingMarket = parseLendingMarket(suilendClient.lendingMarket, refreshedRawReserves, coinMetadataMap, nowS, lendingMarketMetadata);
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
const bCustomOrderIndex = RESERVES_CUSTOM_ORDER[lendingMarket.id].indexOf(b.coinType);
|
|
265
|
-
if (aCustomOrderIndex > -1 && bCustomOrderIndex > -1)
|
|
266
|
-
return aCustomOrderIndex - bCustomOrderIndex;
|
|
267
|
-
else if (aCustomOrderIndex === -1 && bCustomOrderIndex === -1)
|
|
268
|
-
return 0;
|
|
269
|
-
else
|
|
270
|
-
return aCustomOrderIndex > -1 ? -1 : 1;
|
|
271
|
-
});
|
|
306
|
+
const reserveOrder = resolveReserveOrder(lendingMarket.id, lendingMarketMetadata);
|
|
307
|
+
if (reserveOrder) {
|
|
308
|
+
lendingMarket.reserves = sortReservesByOrder(lendingMarket.reserves, reserveOrder);
|
|
272
309
|
}
|
|
273
310
|
const reserveMap = lendingMarket.reserves.reduce((acc, reserve) => ({ ...acc, [reserve.coinType]: reserve }), {});
|
|
274
311
|
return {
|
package/lib/types.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@suilend/sdk","version":"11.
|
|
1
|
+
{"name":"@suilend/sdk","version":"11.6.0-next.g46d2d22","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.0.1","@tsconfig/recommended":"1.0.13","@types/bn.js":"5.2.0","@types/lodash":"4.17.25","@types/node":"26.4.0","fast-check":"4.9.0","prettier":"3.9.6","ts-node":"10.9.2","typescript":"6.0.3","vite":"8.2.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"}
|