@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.
@@ -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
- "0x74d92cb095b618f344486f77bcce87fbffc0fe0b46584bb1828bb291a222dda8": [
72
+ [EMBER_LENDING_MARKET_ID]: [
60
73
  NORMALIZED_eTHIRD_COINTYPE,
61
74
  NORMALIZED_eEARN_COINTYPE,
62
75
  NORMALIZED_USDC_COINTYPE,
63
76
  ],
64
- "0x8a8d8e138a28de1c637d0b0955e621b017da7010de388db5a18493eca99c5e82": [
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
- "0xd12df5fede59f1ac5e1f8413bc86bd6bc77fff2001366878df58ef6a26d58c67": [
85
+ [BUCKET_LENDING_MARKET_ID]: [
73
86
  NORMALIZED_USDB_COINTYPE,
74
87
  NORMALIZED_USDC_COINTYPE,
75
88
  ],
76
- "0x0d3a7f758d19d11e8526f66cca43403a99da16862c570c43efe0f8c4a500f7f2": [
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
- if (!!RESERVES_CUSTOM_ORDER[lendingMarket.id]) {
262
- lendingMarket.reserves = lendingMarket.reserves.slice().sort((a, b) => {
263
- const aCustomOrderIndex = RESERVES_CUSTOM_ORDER[lendingMarket.id].indexOf(a.coinType);
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
@@ -244,4 +244,5 @@ export type LendingMarketMetadata = {
244
244
  isHidden?: boolean;
245
245
  iconUrl?: string | null;
246
246
  description?: string | null;
247
+ reserveOrder?: string[] | null;
247
248
  };
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@suilend/sdk","version":"11.5.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.1","uuid":"14.0.2"},"devDependencies":{"@mysten/bcs":"2.1.1","@mysten/sui":"2.26.2","@suilend/sui-core":"1.3.0","@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","vitest":"4.1.11"},"peerDependencies":{"@mysten/bcs":"^2.1.1","@mysten/sui":">=2.22.1 <3","@suilend/sui-core":"^1.3.0"},"type":"module"}
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"}