@gearbox-protocol/sdk 14.6.0-next.4 → 14.6.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.
Files changed (82) hide show
  1. package/dist/cjs/abi/compressors/subcompressors/withdrawal/infinifiWithdrawalSubcompressor.js +2 -1
  2. package/dist/cjs/abi/compressors/subcompressors/withdrawal/kelpLRTWithdrawalSubcompressor.js +2 -1
  3. package/dist/cjs/abi/compressors/subcompressors/withdrawal/mellowWithdrawalSubcompressor.js +2 -1
  4. package/dist/cjs/abi/compressors/subcompressors/withdrawal/midasWithdrawalSubcompressor.js +2 -1
  5. package/dist/cjs/abi/compressors/subcompressors/withdrawal/securitizeRedemptionSubcompressor.js +2 -1
  6. package/dist/cjs/abi/compressors/subcompressors/withdrawal/upshiftWithdrawalSubcompressor.js +2 -1
  7. package/dist/cjs/abi/compressors/withdrawalCompressor.js +2 -1
  8. package/dist/cjs/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers-list-core.js +66 -0
  9. package/dist/cjs/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers-list.js +7 -18
  10. package/dist/cjs/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers.js +4 -6
  11. package/dist/cjs/common-utils/utils/strategies/credit-managers/index.js +2 -0
  12. package/dist/cjs/common-utils/utils/strategies/lists/get-released-strategies-list-core.js +61 -0
  13. package/dist/cjs/common-utils/utils/strategies/lists/get-released-strategies-list.js +9 -31
  14. package/dist/cjs/common-utils/utils/strategies/lists/index.js +3 -1
  15. package/dist/cjs/common-utils/utils/strategies/strategy-info/get-strategy-info-core.js +104 -0
  16. package/dist/cjs/common-utils/utils/strategies/strategy-info/get-strategy-info.js +35 -59
  17. package/dist/cjs/common-utils/utils/strategies/strategy-info/index.js +2 -0
  18. package/dist/cjs/common-utils/utils/strategies/strategy-state/is-strategy-disabled.js +3 -1
  19. package/dist/cjs/common-utils/utils/strategies/types/index.js +4 -0
  20. package/dist/cjs/common-utils/utils/strategies/types/legacy-strategy-data-source.js +62 -0
  21. package/dist/cjs/common-utils/utils/strategies/types/strategy-data-source.js +16 -0
  22. package/dist/cjs/plugins/apy/ApyPlugin.js +65 -0
  23. package/dist/cjs/plugins/apy/strategy-data-source.js +176 -0
  24. package/dist/esm/abi/compressors/subcompressors/withdrawal/infinifiWithdrawalSubcompressor.js +2 -1
  25. package/dist/esm/abi/compressors/subcompressors/withdrawal/kelpLRTWithdrawalSubcompressor.js +2 -1
  26. package/dist/esm/abi/compressors/subcompressors/withdrawal/mellowWithdrawalSubcompressor.js +2 -1
  27. package/dist/esm/abi/compressors/subcompressors/withdrawal/midasWithdrawalSubcompressor.js +2 -1
  28. package/dist/esm/abi/compressors/subcompressors/withdrawal/securitizeRedemptionSubcompressor.js +2 -1
  29. package/dist/esm/abi/compressors/subcompressors/withdrawal/upshiftWithdrawalSubcompressor.js +2 -1
  30. package/dist/esm/abi/compressors/withdrawalCompressor.js +2 -1
  31. package/dist/esm/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers-list-core.js +42 -0
  32. package/dist/esm/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers-list.js +7 -18
  33. package/dist/esm/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers.js +4 -6
  34. package/dist/esm/common-utils/utils/strategies/credit-managers/index.js +1 -0
  35. package/dist/esm/common-utils/utils/strategies/lists/get-released-strategies-list-core.js +37 -0
  36. package/dist/esm/common-utils/utils/strategies/lists/get-released-strategies-list.js +9 -31
  37. package/dist/esm/common-utils/utils/strategies/lists/index.js +1 -0
  38. package/dist/esm/common-utils/utils/strategies/strategy-info/get-strategy-info-core.js +80 -0
  39. package/dist/esm/common-utils/utils/strategies/strategy-info/get-strategy-info.js +35 -59
  40. package/dist/esm/common-utils/utils/strategies/strategy-info/index.js +1 -0
  41. package/dist/esm/common-utils/utils/strategies/strategy-state/is-strategy-disabled.js +3 -1
  42. package/dist/esm/common-utils/utils/strategies/types/index.js +2 -0
  43. package/dist/esm/common-utils/utils/strategies/types/legacy-strategy-data-source.js +38 -0
  44. package/dist/esm/common-utils/utils/strategies/types/strategy-data-source.js +0 -0
  45. package/dist/esm/plugins/apy/ApyPlugin.js +70 -0
  46. package/dist/esm/plugins/apy/strategy-data-source.js +159 -0
  47. package/dist/types/abi/compressors/subcompressors/withdrawal/infinifiWithdrawalSubcompressor.d.ts +4 -0
  48. package/dist/types/abi/compressors/subcompressors/withdrawal/kelpLRTWithdrawalSubcompressor.d.ts +4 -0
  49. package/dist/types/abi/compressors/subcompressors/withdrawal/mellowWithdrawalSubcompressor.d.ts +4 -0
  50. package/dist/types/abi/compressors/subcompressors/withdrawal/midasWithdrawalSubcompressor.d.ts +4 -0
  51. package/dist/types/abi/compressors/subcompressors/withdrawal/securitizeRedemptionSubcompressor.d.ts +4 -0
  52. package/dist/types/abi/compressors/subcompressors/withdrawal/upshiftWithdrawalSubcompressor.d.ts +4 -0
  53. package/dist/types/abi/compressors/withdrawalCompressor.d.ts +4 -0
  54. package/dist/types/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers-list-core.d.ts +7 -0
  55. package/dist/types/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers-list.d.ts +2 -2
  56. package/dist/types/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers.d.ts +3 -3
  57. package/dist/types/common-utils/utils/strategies/credit-managers/index.d.ts +1 -0
  58. package/dist/types/common-utils/utils/strategies/credit-managers/is-credit-manager-usable.d.ts +2 -2
  59. package/dist/types/common-utils/utils/strategies/eligibility/is-strategy-eligible.d.ts +2 -2
  60. package/dist/types/common-utils/utils/strategies/lists/get-available-and-disabled-strategies.d.ts +2 -2
  61. package/dist/types/common-utils/utils/strategies/lists/get-available-strategies.d.ts +2 -2
  62. package/dist/types/common-utils/utils/strategies/lists/get-disabled-strategies.d.ts +2 -2
  63. package/dist/types/common-utils/utils/strategies/lists/get-released-strategies-list-core.d.ts +9 -0
  64. package/dist/types/common-utils/utils/strategies/lists/get-released-strategies-list.d.ts +2 -2
  65. package/dist/types/common-utils/utils/strategies/lists/index.d.ts +1 -0
  66. package/dist/types/common-utils/utils/strategies/strategy-info/get-strategy-info-core.d.ts +12 -0
  67. package/dist/types/common-utils/utils/strategies/strategy-info/index.d.ts +1 -0
  68. package/dist/types/common-utils/utils/strategies/strategy-state/is-strategy-disabled.d.ts +2 -2
  69. package/dist/types/common-utils/utils/strategies/tokens/is-activated-token.d.ts +2 -2
  70. package/dist/types/common-utils/utils/strategies/tokens/is-forbidden-token.d.ts +2 -2
  71. package/dist/types/common-utils/utils/strategies/types/credit-manager-data-legacy.d.ts +3 -7
  72. package/dist/types/common-utils/utils/strategies/types/index.d.ts +2 -0
  73. package/dist/types/common-utils/utils/strategies/types/legacy-strategy-data-source.d.ts +4 -0
  74. package/dist/types/common-utils/utils/strategies/types/sdk-state.d.ts +5 -4
  75. package/dist/types/common-utils/utils/strategies/types/strategies-cm-list.d.ts +2 -2
  76. package/dist/types/common-utils/utils/strategies/types/strategy-data-source.d.ts +19 -0
  77. package/dist/types/common-utils/utils/strategies/types/targetable.d.ts +2 -2
  78. package/dist/types/permissionless/bindings/compressors/withdrawal-compressor.d.ts +4 -0
  79. package/dist/types/plugins/apy/ApyPlugin.d.ts +8 -1
  80. package/dist/types/plugins/apy/strategy-data-source.d.ts +16 -0
  81. package/dist/types/plugins/apy/types.d.ts +18 -1
  82. package/package.json +1 -1
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var legacy_strategy_data_source_exports = {};
20
+ __export(legacy_strategy_data_source_exports, {
21
+ createLegacyStrategyDataSource: () => createLegacyStrategyDataSource
22
+ });
23
+ module.exports = __toCommonJS(legacy_strategy_data_source_exports);
24
+ const lc = (address) => address.toLowerCase();
25
+ function getByAddress(record, address) {
26
+ return record?.[address] ?? record?.[lc(address)];
27
+ }
28
+ function createLegacyStrategyDataSource(sdkStateByChain, pricesByChain) {
29
+ return {
30
+ hasToken(chainId, token) {
31
+ return !!getByAddress(
32
+ sdkStateByChain?.[chainId]?.tokens?.tokenDataList,
33
+ token
34
+ );
35
+ },
36
+ getToken(chainId, token) {
37
+ return getByAddress(
38
+ sdkStateByChain?.[chainId]?.tokens?.tokenDataList,
39
+ token
40
+ );
41
+ },
42
+ getPool(chainId, pool) {
43
+ return getByAddress(sdkStateByChain?.[chainId]?.pools, pool);
44
+ },
45
+ getCreditManager(chainId, creditManager) {
46
+ return getByAddress(
47
+ sdkStateByChain?.[chainId]?.creditManagers,
48
+ creditManager
49
+ );
50
+ },
51
+ getMarketPrices(chainId, pool) {
52
+ return getByAddress(pricesByChain?.[chainId]?.prices, pool) ?? {};
53
+ },
54
+ getLastSyncTimestamp(chainId) {
55
+ return sdkStateByChain?.[chainId]?.lastSyncBlock?.blockTimestamp_js;
56
+ }
57
+ };
58
+ }
59
+ // Annotate the CommonJS export names for ESM import in node:
60
+ 0 && (module.exports = {
61
+ createLegacyStrategyDataSource
62
+ });
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var strategy_data_source_exports = {};
16
+ module.exports = __toCommonJS(strategy_data_source_exports);
@@ -22,6 +22,7 @@ __export(ApyPlugin_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(ApyPlugin_exports);
24
24
  var import_marketCompressor = require("../../abi/compressors/marketCompressor.js");
25
+ var import_strategies = require("../../common-utils/utils/strategies/index.js");
25
26
  var import_extra_apy = require("../../rewards/rewards/extra-apy.js");
26
27
  var import_sdk = require("../../sdk/index.js");
27
28
  var import_formatter = require("../../sdk/utils/formatter.js");
@@ -30,6 +31,7 @@ var import_apy_cache = require("./apy-cache.js");
30
31
  var import_apy_parser = require("./apy-parser.js");
31
32
  var import_constants = require("./constants.js");
32
33
  var import_pool_apy_utils = require("./pool-apy-utils.js");
34
+ var import_strategy_data_source = require("./strategy-data-source.js");
33
35
  const MAP_LABEL = "pools7DAgo";
34
36
  class ApyPlugin extends import_sdk.BasePlugin {
35
37
  #apyUrl;
@@ -181,6 +183,69 @@ class ApyPlugin extends import_sdk.BasePlugin {
181
183
  }
182
184
  return { data, data7DAgo, pointsBase: poolPointsBase, points };
183
185
  }
186
+ /**
187
+ * Computes a strategy-info snapshot from the current SDK and APY state.
188
+ *
189
+ * @throws if plugin is not loaded
190
+ */
191
+ getStrategyInfoSnapshot({
192
+ slippage,
193
+ quotaReserve,
194
+ curatorFilter,
195
+ strategyPayloadsList,
196
+ showHiddenStrategies
197
+ }) {
198
+ if (!this.loaded) {
199
+ throw new Error("apy plugin not loaded");
200
+ }
201
+ const chainId = this.sdk.chainId;
202
+ const network = this.sdk.networkType;
203
+ const allowedChains = { [chainId]: network };
204
+ const source = new import_strategy_data_source.OnchainSdkStrategyDataSource(this.sdk);
205
+ const releasedStrategies = (0, import_strategies.getReleasedStrategiesListCore)({
206
+ strategyPayloadsList,
207
+ allowedChains,
208
+ source,
209
+ curatorFilter,
210
+ showHiddenStrategies
211
+ });
212
+ const cmsOfStrategiesByChain = (0, import_strategies.getStrategyCreditManagersListCore)({
213
+ strategies: releasedStrategies,
214
+ source,
215
+ curatorFilter
216
+ });
217
+ const { available, disabled, availableList, disabledList } = (0, import_strategies.getAvailableAndDisabledStrategies)(
218
+ releasedStrategies,
219
+ cmsOfStrategiesByChain,
220
+ curatorFilter
221
+ );
222
+ const apyListByNetwork = {
223
+ [chainId]: this.apySnapshot.apy
224
+ };
225
+ const strategiesInfo = releasedStrategies?.reduce((acc, strategy) => {
226
+ const info = (0, import_strategies.getStrategyInfoCore)({
227
+ strategy,
228
+ creditManagers: cmsOfStrategiesByChain?.[strategy.chainId]?.[strategy.id],
229
+ source,
230
+ apyListByNetwork,
231
+ quotaReserve,
232
+ slippage
233
+ });
234
+ if (info) {
235
+ acc[strategy.chainId] ??= {};
236
+ acc[strategy.chainId][strategy.id] = info;
237
+ }
238
+ return acc;
239
+ }, {}) ?? {};
240
+ return {
241
+ availableStrategies: available,
242
+ disabledStrategies: disabled,
243
+ availableList,
244
+ disabledList,
245
+ cmsOfStrategiesByChain,
246
+ strategiesInfo
247
+ };
248
+ }
184
249
  // ---------------------------------------------------------------------------
185
250
  // Plugin lifecycle
186
251
  // ---------------------------------------------------------------------------
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var strategy_data_source_exports = {};
20
+ __export(strategy_data_source_exports, {
21
+ OnchainSdkStrategyDataSource: () => OnchainSdkStrategyDataSource
22
+ });
23
+ module.exports = __toCommonJS(strategy_data_source_exports);
24
+ var import_sdk = require("../../sdk/index.js");
25
+ const lc = (address) => address.toLowerCase();
26
+ class OnchainSdkStrategyDataSource {
27
+ constructor(sdk) {
28
+ this.sdk = sdk;
29
+ }
30
+ sdk;
31
+ hasToken(chainId, token) {
32
+ return !!this.getToken(chainId, token);
33
+ }
34
+ getToken(chainId, token) {
35
+ if (chainId !== this.sdk.chainId) return void 0;
36
+ const meta = this.sdk.tokensMeta.get(token);
37
+ if (!meta) return void 0;
38
+ const address = lc(token);
39
+ return { address, decimals: meta.decimals };
40
+ }
41
+ getPool(chainId, pool) {
42
+ if (chainId !== this.sdk.chainId) return void 0;
43
+ const market = this.sdk.marketRegister.markets.find(
44
+ (m) => lc(m.pool.pool.address) === lc(pool)
45
+ );
46
+ if (!market) return void 0;
47
+ return {
48
+ address: lc(market.pool.pool.address),
49
+ totalDebtLimit: market.pool.pool.totalDebtLimit,
50
+ totalBorrowed: market.pool.pool.totalBorrowed
51
+ };
52
+ }
53
+ getCreditManager(chainId, creditManager) {
54
+ if (chainId !== this.sdk.chainId) return void 0;
55
+ try {
56
+ const found = this.findCreditManager(creditManager);
57
+ if (!found) return void 0;
58
+ return this.toCreditManagerView(found.creditSuite, found.market.pool);
59
+ } catch {
60
+ return void 0;
61
+ }
62
+ }
63
+ getMarketPrices(chainId, pool) {
64
+ if (chainId !== this.sdk.chainId) return {};
65
+ const market = this.sdk.marketRegister.markets.find(
66
+ (m) => lc(m.pool.pool.address) === lc(pool)
67
+ );
68
+ if (!market) return {};
69
+ const marketPrices = Object.fromEntries(
70
+ market.priceOracle.mainPrices.entries().map(([token, mainPrice]) => {
71
+ const tokenLc = lc(token);
72
+ const reservePrice = market.priceOracle.reservePrices?.get(token);
73
+ return [tokenLc, mainPrice?.price || reservePrice?.price || 0n];
74
+ })
75
+ );
76
+ const wrappedNativeToken = this.getWrappedNativeToken();
77
+ const wrappedNativePrice = marketPrices[wrappedNativeToken || import_sdk.ADDRESS_0X0];
78
+ if (wrappedNativePrice !== void 0) {
79
+ marketPrices[lc(import_sdk.NATIVE_ADDRESS)] = wrappedNativePrice;
80
+ }
81
+ return marketPrices;
82
+ }
83
+ getLastSyncTimestamp(chainId) {
84
+ return chainId === this.sdk.chainId ? Number(this.sdk.timestamp) : void 0;
85
+ }
86
+ toCreditManagerView(cs, pool) {
87
+ const cm = cs.creditManager;
88
+ const facade = cs.creditFacade;
89
+ const debtParams = pool.pool.creditManagerDebtParams.get(cm.address);
90
+ const liquidationThresholds = {};
91
+ const supportedTokens = {};
92
+ const forbiddenTokens = {};
93
+ const quotas = {};
94
+ for (const [token, q] of pool.pqk.quotas.entries()) {
95
+ const tokenLc = lc(token);
96
+ quotas[tokenLc] = {
97
+ token: tokenLc,
98
+ rate: BigInt(q.rate) * import_sdk.PERCENTAGE_DECIMALS,
99
+ quotaIncreaseFee: BigInt(q.quotaIncreaseFee),
100
+ totalQuoted: q.totalQuoted,
101
+ limit: q.limit,
102
+ isActive: q.isActive
103
+ };
104
+ }
105
+ for (const token of cm.collateralTokens) {
106
+ const tokenLc = lc(token);
107
+ const lt = cm.liquidationThresholds.get(token);
108
+ if (lt !== void 0) {
109
+ liquidationThresholds[tokenLc] = BigInt(lt);
110
+ }
111
+ supportedTokens[tokenLc] = true;
112
+ }
113
+ const forbiddenMask = facade.forbiddenTokensMask;
114
+ for (let i = 0; i < cm.collateralTokens.length; i++) {
115
+ const tokenLc = lc(cm.collateralTokens[i]);
116
+ if ((forbiddenMask & 1n << BigInt(i)) !== 0n) {
117
+ forbiddenTokens[tokenLc] = true;
118
+ }
119
+ }
120
+ const baseBorrowRate = debtParams ? Number(
121
+ pool.pool.baseInterestRate * (BigInt(cm.feeInterest) + import_sdk.PERCENTAGE_FACTOR) * import_sdk.PERCENTAGE_DECIMALS / import_sdk.RAY
122
+ ) : 0;
123
+ return {
124
+ address: lc(cm.address),
125
+ underlyingToken: lc(cm.underlying),
126
+ pool: lc(cm.pool),
127
+ chainId: this.sdk.chainId,
128
+ baseBorrowRate,
129
+ feeInterest: cm.feeInterest,
130
+ availableToBorrow: debtParams?.available ?? 0n,
131
+ minDebt: facade.minDebt,
132
+ maxDebt: facade.maxDebt,
133
+ totalDebt: debtParams?.borrowed ?? 0n,
134
+ totalDebtLimit: debtParams?.limit ?? 0n,
135
+ isDegenMode: lc(facade.degenNFT) !== import_sdk.ADDRESS_0X0,
136
+ degenNFT: lc(facade.degenNFT),
137
+ liquidationThresholds,
138
+ quotas,
139
+ collateralTokens: cm.collateralTokens.map(lc),
140
+ version: Number(facade.version),
141
+ isBorrowingForbidden: facade.maxDebtPerBlockMultiplier === 0,
142
+ marketConfigurator: lc(cs.marketConfigurator),
143
+ supportedTokens,
144
+ forbiddenTokens
145
+ };
146
+ }
147
+ findCreditManager(creditManager) {
148
+ const marketRegister = this.sdk.marketRegister;
149
+ if (marketRegister.findCreditManager && marketRegister.findByCreditManager) {
150
+ const creditSuite = marketRegister.findCreditManager(creditManager);
151
+ const market = marketRegister.findByCreditManager(
152
+ creditSuite.creditManager.address
153
+ );
154
+ return { creditSuite, market };
155
+ }
156
+ const cmLc = lc(creditManager);
157
+ for (const market of marketRegister.markets) {
158
+ const creditSuite = market.creditManagers.find(
159
+ (cs) => lc(cs.creditManager.address) === cmLc
160
+ );
161
+ if (creditSuite) return { creditSuite, market };
162
+ }
163
+ return void 0;
164
+ }
165
+ getWrappedNativeToken() {
166
+ try {
167
+ return this.sdk.addressProvider.getAddress(import_sdk.AP_WETH_TOKEN, 0)?.toLowerCase();
168
+ } catch {
169
+ return void 0;
170
+ }
171
+ }
172
+ }
173
+ // Annotate the CommonJS export names for ESM import in node:
174
+ 0 && (module.exports = {
175
+ OnchainSdkStrategyDataSource
176
+ });
@@ -102,7 +102,8 @@ const infinifiWithdrawalSubcompressorAbi = [
102
102
  name: "withdrawalLength",
103
103
  type: "uint256",
104
104
  internalType: "uint256"
105
- }
105
+ },
106
+ { name: "maxWithdrawals", type: "uint256", internalType: "uint256" }
106
107
  ]
107
108
  }
108
109
  ],
@@ -102,7 +102,8 @@ const kelpLRTWithdrawalSubcompressorAbi = [
102
102
  name: "withdrawalLength",
103
103
  type: "uint256",
104
104
  internalType: "uint256"
105
- }
105
+ },
106
+ { name: "maxWithdrawals", type: "uint256", internalType: "uint256" }
106
107
  ]
107
108
  }
108
109
  ],
@@ -102,7 +102,8 @@ const mellowWithdrawalSubcompressorAbi = [
102
102
  name: "withdrawalLength",
103
103
  type: "uint256",
104
104
  internalType: "uint256"
105
- }
105
+ },
106
+ { name: "maxWithdrawals", type: "uint256", internalType: "uint256" }
106
107
  ]
107
108
  }
108
109
  ],
@@ -102,7 +102,8 @@ const midasWithdrawalSubcompressorAbi = [
102
102
  name: "withdrawalLength",
103
103
  type: "uint256",
104
104
  internalType: "uint256"
105
- }
105
+ },
106
+ { name: "maxWithdrawals", type: "uint256", internalType: "uint256" }
106
107
  ]
107
108
  }
108
109
  ],
@@ -102,7 +102,8 @@ const securitizeRedemptionSubcompressorAbi = [
102
102
  name: "withdrawalLength",
103
103
  type: "uint256",
104
104
  internalType: "uint256"
105
- }
105
+ },
106
+ { name: "maxWithdrawals", type: "uint256", internalType: "uint256" }
106
107
  ]
107
108
  }
108
109
  ],
@@ -102,7 +102,8 @@ const upshiftWithdrawalSubcompressorAbi = [
102
102
  name: "withdrawalLength",
103
103
  type: "uint256",
104
104
  internalType: "uint256"
105
- }
105
+ },
106
+ { name: "maxWithdrawals", type: "uint256", internalType: "uint256" }
106
107
  ]
107
108
  }
108
109
  ],
@@ -122,7 +122,8 @@ const withdrawalCompressorAbi = [
122
122
  name: "withdrawalLength",
123
123
  type: "uint256",
124
124
  internalType: "uint256"
125
- }
125
+ },
126
+ { name: "maxWithdrawals", type: "uint256", internalType: "uint256" }
126
127
  ]
127
128
  }
128
129
  ],
@@ -0,0 +1,42 @@
1
+ import { TypedObjectUtils } from "../../../../sdk/utils/mappers.js";
2
+ import { isUsableToken } from "../tokens/index.js";
3
+ import { isCreditManagerUsable } from "./is-credit-manager-usable.js";
4
+ const lc = (address) => address.toLowerCase();
5
+ function getStrategyCreditManagersListCore({
6
+ strategies,
7
+ source,
8
+ curatorFilter
9
+ }) {
10
+ if (!strategies) return strategies;
11
+ return strategies.reduce((acc, strategy) => {
12
+ const targetToken = lc(strategy.tokenOutAddress);
13
+ const cms = (strategy.creditManagers || []).reduce(
14
+ (cmAcc, cmAddress) => {
15
+ const cm = source.getCreditManager(strategy.chainId, cmAddress);
16
+ if (!cm || !isCreditManagerUsable(cm)) return cmAcc;
17
+ const usable = isUsableToken({
18
+ address: targetToken,
19
+ creditManager: cm
20
+ });
21
+ const limit = cm.quotas[targetToken]?.limit || 0n;
22
+ const limitZero = targetToken === cm.underlyingToken ? false : limit === 0n;
23
+ if (usable && !cm.isBorrowingForbidden && !limitZero) {
24
+ cmAcc[cm.address] = cm;
25
+ }
26
+ return cmAcc;
27
+ },
28
+ {}
29
+ );
30
+ const cmsAfterCuratorFilter = curatorFilter ? TypedObjectUtils.entries(cms).filter(
31
+ ([, cm]) => curatorFilter[cm.marketConfigurator]
32
+ ) : TypedObjectUtils.entries(cms);
33
+ if (!acc[strategy.chainId]) acc[strategy.chainId] = {};
34
+ acc[strategy.chainId][strategy.id] = Object.fromEntries(
35
+ cmsAfterCuratorFilter
36
+ );
37
+ return acc;
38
+ }, {});
39
+ }
40
+ export {
41
+ getStrategyCreditManagersListCore
42
+ };
@@ -1,23 +1,12 @@
1
- import { TypedObjectUtils } from "../../../../sdk/utils/mappers.js";
2
- import { getStrategyCreditManagers } from "./get-strategy-credit-managers.js";
1
+ import { createLegacyStrategyDataSource } from "../types.js";
2
+ import { getStrategyCreditManagersListCore } from "./get-strategy-credit-managers-list-core.js";
3
3
  function getStrategyCreditManagersList(strategies, sdkStateByChain, curatorFilter) {
4
4
  if (!sdkStateByChain) return sdkStateByChain;
5
- if (!strategies) return strategies;
6
- const r = strategies.reduce((acc, s) => {
7
- const currentSdkState = sdkStateByChain[s.chainId];
8
- const { creditManagers, tokens } = currentSdkState || {};
9
- const cms = creditManagers && tokens ? getStrategyCreditManagers({
10
- strategy: s,
11
- allCreditManagers: creditManagers
12
- }) : {};
13
- const cmsAfterCuratorFilter = curatorFilter ? TypedObjectUtils.entries(cms).filter(
14
- ([, cm]) => curatorFilter[cm.marketConfigurator]
15
- ) : TypedObjectUtils.entries(cms);
16
- if (!acc[s.chainId]) acc[s.chainId] = {};
17
- acc[s.chainId][s.id] = Object.fromEntries(cmsAfterCuratorFilter);
18
- return acc;
19
- }, {});
20
- return r;
5
+ return getStrategyCreditManagersListCore({
6
+ strategies,
7
+ source: createLegacyStrategyDataSource(sdkStateByChain),
8
+ curatorFilter
9
+ });
21
10
  }
22
11
  export {
23
12
  getStrategyCreditManagersList
@@ -1,13 +1,11 @@
1
1
  import { isUsableToken } from "../tokens/is-usable-token.js";
2
2
  import { isCreditManagerUsable } from "./is-credit-manager-usable.js";
3
- function getStrategyCreditManagers({
4
- strategy,
5
- allCreditManagers
6
- }) {
7
- const lpAddress = strategy.tokenOutAddress;
3
+ const lc = (address) => address.toLowerCase();
4
+ function getStrategyCreditManagers({ strategy, allCreditManagers }) {
5
+ const lpAddress = lc(strategy.tokenOutAddress);
8
6
  const res = (strategy?.creditManagers || []).reduce(
9
7
  (acc, cmAddress) => {
10
- const cm = allCreditManagers[cmAddress];
8
+ const cm = allCreditManagers[cmAddress] ?? allCreditManagers[lc(cmAddress)];
11
9
  if (cm && isCreditManagerUsable(cm)) {
12
10
  const usable = isUsableToken({
13
11
  address: lpAddress,
@@ -1,3 +1,4 @@
1
1
  export * from "./get-strategy-credit-managers.js";
2
2
  export * from "./get-strategy-credit-managers-list.js";
3
+ export * from "./get-strategy-credit-managers-list-core.js";
3
4
  export * from "./is-credit-manager-usable.js";
@@ -0,0 +1,37 @@
1
+ import { isStrategyReleased } from "../eligibility/is-strategy-released.js";
2
+ function getReleasedStrategiesListCore({
3
+ strategyPayloadsList,
4
+ allowedChains,
5
+ source,
6
+ curatorFilter,
7
+ showHiddenStrategies
8
+ }) {
9
+ if (!allowedChains) return void 0;
10
+ if (!strategyPayloadsList) return void 0;
11
+ const eligibleStrategies = strategyPayloadsList.reduce(
12
+ (acc, s) => {
13
+ const network = s.chainId !== void 0 ? allowedChains[s.chainId] : void 0;
14
+ const isNetworkCorrect = !!network && network === s.network;
15
+ const isHidden = !showHiddenStrategies && s.hideInProd;
16
+ const showInMainApp = s.showInMainApp ?? true;
17
+ const showCondition = curatorFilter || showInMainApp;
18
+ if (isNetworkCorrect && !isHidden && source.hasToken(s.chainId, s.tokenOutAddress) && showCondition) {
19
+ acc.push({
20
+ ...s,
21
+ id: s.tokenOutAddress,
22
+ network
23
+ });
24
+ }
25
+ return acc;
26
+ },
27
+ []
28
+ );
29
+ return eligibleStrategies.filter((s) => {
30
+ const lastSyncTimestamp = source.getLastSyncTimestamp(s.chainId);
31
+ if (!lastSyncTimestamp) return true;
32
+ return showHiddenStrategies ? true : isStrategyReleased(s.releaseAt, lastSyncTimestamp);
33
+ });
34
+ }
35
+ export {
36
+ getReleasedStrategiesListCore
37
+ };
@@ -1,35 +1,13 @@
1
- import { isStrategyEligible } from "../eligibility/is-strategy-eligible.js";
2
- import { isStrategyReleased } from "../eligibility/is-strategy-released.js";
1
+ import { createLegacyStrategyDataSource } from "../types.js";
2
+ import { getReleasedStrategiesListCore } from "./get-released-strategies-list-core.js";
3
3
  function getReleasedStrategiesList(strategyPayloadsList, allowedChains, sdkStateByChain, curatorFilter, showHiddenStrategies) {
4
- if (!allowedChains) return void 0;
5
- if (!strategyPayloadsList) return void 0;
6
- const eligibleStrategies = strategyPayloadsList.reduce(
7
- (acc, s) => {
8
- const eligible = isStrategyEligible(
9
- s,
10
- allowedChains,
11
- showHiddenStrategies,
12
- sdkStateByChain,
13
- curatorFilter
14
- );
15
- if (eligible.isEligible) {
16
- acc.push({
17
- ...s,
18
- id: s.tokenOutAddress,
19
- network: eligible.network
20
- });
21
- }
22
- return acc;
23
- },
24
- []
25
- );
26
- if (!sdkStateByChain) return eligibleStrategies;
27
- const releasedStrategies = eligibleStrategies.filter((s) => {
28
- const lastSyncBlock = sdkStateByChain?.[s.chainId]?.lastSyncBlock;
29
- if (!lastSyncBlock) return true;
30
- return showHiddenStrategies ? true : isStrategyReleased(s.releaseAt, lastSyncBlock.blockTimestamp_js);
31
- }, {});
32
- return releasedStrategies;
4
+ return getReleasedStrategiesListCore({
5
+ strategyPayloadsList,
6
+ allowedChains,
7
+ source: createLegacyStrategyDataSource(sdkStateByChain),
8
+ curatorFilter,
9
+ showHiddenStrategies
10
+ });
33
11
  }
34
12
  export {
35
13
  getReleasedStrategiesList
@@ -1,2 +1,3 @@
1
1
  export * from "./get-available-and-disabled-strategies.js";
2
2
  export * from "./get-released-strategies-list.js";
3
+ export * from "./get-released-strategies-list-core.js";