@gearbox-protocol/sdk 14.6.0-next.4 → 14.6.0-next.5
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/dist/cjs/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers-list-core.js +66 -0
- package/dist/cjs/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers-list.js +7 -18
- package/dist/cjs/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers.js +4 -6
- package/dist/cjs/common-utils/utils/strategies/credit-managers/index.js +2 -0
- package/dist/cjs/common-utils/utils/strategies/lists/get-released-strategies-list-core.js +61 -0
- package/dist/cjs/common-utils/utils/strategies/lists/get-released-strategies-list.js +9 -31
- package/dist/cjs/common-utils/utils/strategies/lists/index.js +3 -1
- package/dist/cjs/common-utils/utils/strategies/strategy-info/get-strategy-info-core.js +104 -0
- package/dist/cjs/common-utils/utils/strategies/strategy-info/get-strategy-info.js +35 -59
- package/dist/cjs/common-utils/utils/strategies/strategy-info/index.js +2 -0
- package/dist/cjs/common-utils/utils/strategies/strategy-state/is-strategy-disabled.js +3 -1
- package/dist/cjs/common-utils/utils/strategies/types/index.js +4 -0
- package/dist/cjs/common-utils/utils/strategies/types/legacy-strategy-data-source.js +62 -0
- package/dist/cjs/common-utils/utils/strategies/types/strategy-data-source.js +16 -0
- package/dist/cjs/plugins/apy/ApyPlugin.js +65 -0
- package/dist/cjs/plugins/apy/strategy-data-source.js +176 -0
- package/dist/esm/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers-list-core.js +42 -0
- package/dist/esm/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers-list.js +7 -18
- package/dist/esm/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers.js +4 -6
- package/dist/esm/common-utils/utils/strategies/credit-managers/index.js +1 -0
- package/dist/esm/common-utils/utils/strategies/lists/get-released-strategies-list-core.js +37 -0
- package/dist/esm/common-utils/utils/strategies/lists/get-released-strategies-list.js +9 -31
- package/dist/esm/common-utils/utils/strategies/lists/index.js +1 -0
- package/dist/esm/common-utils/utils/strategies/strategy-info/get-strategy-info-core.js +80 -0
- package/dist/esm/common-utils/utils/strategies/strategy-info/get-strategy-info.js +35 -59
- package/dist/esm/common-utils/utils/strategies/strategy-info/index.js +1 -0
- package/dist/esm/common-utils/utils/strategies/strategy-state/is-strategy-disabled.js +3 -1
- package/dist/esm/common-utils/utils/strategies/types/index.js +2 -0
- package/dist/esm/common-utils/utils/strategies/types/legacy-strategy-data-source.js +38 -0
- package/dist/esm/common-utils/utils/strategies/types/strategy-data-source.js +0 -0
- package/dist/esm/plugins/apy/ApyPlugin.js +70 -0
- package/dist/esm/plugins/apy/strategy-data-source.js +159 -0
- package/dist/types/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers-list-core.d.ts +7 -0
- package/dist/types/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers-list.d.ts +2 -2
- package/dist/types/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers.d.ts +3 -3
- package/dist/types/common-utils/utils/strategies/credit-managers/index.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/credit-managers/is-credit-manager-usable.d.ts +2 -2
- package/dist/types/common-utils/utils/strategies/eligibility/is-strategy-eligible.d.ts +2 -2
- package/dist/types/common-utils/utils/strategies/lists/get-available-and-disabled-strategies.d.ts +2 -2
- package/dist/types/common-utils/utils/strategies/lists/get-available-strategies.d.ts +2 -2
- package/dist/types/common-utils/utils/strategies/lists/get-disabled-strategies.d.ts +2 -2
- package/dist/types/common-utils/utils/strategies/lists/get-released-strategies-list-core.d.ts +9 -0
- package/dist/types/common-utils/utils/strategies/lists/get-released-strategies-list.d.ts +2 -2
- package/dist/types/common-utils/utils/strategies/lists/index.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/strategy-info/get-strategy-info-core.d.ts +12 -0
- package/dist/types/common-utils/utils/strategies/strategy-info/index.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/strategy-state/is-strategy-disabled.d.ts +2 -2
- package/dist/types/common-utils/utils/strategies/tokens/is-activated-token.d.ts +2 -2
- package/dist/types/common-utils/utils/strategies/tokens/is-forbidden-token.d.ts +2 -2
- package/dist/types/common-utils/utils/strategies/types/credit-manager-data-legacy.d.ts +3 -7
- package/dist/types/common-utils/utils/strategies/types/index.d.ts +2 -0
- package/dist/types/common-utils/utils/strategies/types/legacy-strategy-data-source.d.ts +4 -0
- package/dist/types/common-utils/utils/strategies/types/sdk-state.d.ts +5 -4
- package/dist/types/common-utils/utils/strategies/types/strategies-cm-list.d.ts +2 -2
- package/dist/types/common-utils/utils/strategies/types/strategy-data-source.d.ts +19 -0
- package/dist/types/common-utils/utils/strategies/types/targetable.d.ts +2 -2
- package/dist/types/plugins/apy/ApyPlugin.d.ts +8 -1
- package/dist/types/plugins/apy/strategy-data-source.d.ts +16 -0
- package/dist/types/plugins/apy/types.d.ts +18 -1
- package/package.json +1 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const lc = (address) => address.toLowerCase();
|
|
2
|
+
function getByAddress(record, address) {
|
|
3
|
+
return record?.[address] ?? record?.[lc(address)];
|
|
4
|
+
}
|
|
5
|
+
function createLegacyStrategyDataSource(sdkStateByChain, pricesByChain) {
|
|
6
|
+
return {
|
|
7
|
+
hasToken(chainId, token) {
|
|
8
|
+
return !!getByAddress(
|
|
9
|
+
sdkStateByChain?.[chainId]?.tokens?.tokenDataList,
|
|
10
|
+
token
|
|
11
|
+
);
|
|
12
|
+
},
|
|
13
|
+
getToken(chainId, token) {
|
|
14
|
+
return getByAddress(
|
|
15
|
+
sdkStateByChain?.[chainId]?.tokens?.tokenDataList,
|
|
16
|
+
token
|
|
17
|
+
);
|
|
18
|
+
},
|
|
19
|
+
getPool(chainId, pool) {
|
|
20
|
+
return getByAddress(sdkStateByChain?.[chainId]?.pools, pool);
|
|
21
|
+
},
|
|
22
|
+
getCreditManager(chainId, creditManager) {
|
|
23
|
+
return getByAddress(
|
|
24
|
+
sdkStateByChain?.[chainId]?.creditManagers,
|
|
25
|
+
creditManager
|
|
26
|
+
);
|
|
27
|
+
},
|
|
28
|
+
getMarketPrices(chainId, pool) {
|
|
29
|
+
return getByAddress(pricesByChain?.[chainId]?.prices, pool) ?? {};
|
|
30
|
+
},
|
|
31
|
+
getLastSyncTimestamp(chainId) {
|
|
32
|
+
return sdkStateByChain?.[chainId]?.lastSyncBlock?.blockTimestamp_js;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
createLegacyStrategyDataSource
|
|
38
|
+
};
|
|
File without changes
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { marketCompressorAbi } from "../../abi/compressors/marketCompressor.js";
|
|
2
|
+
import {
|
|
3
|
+
getAvailableAndDisabledStrategies,
|
|
4
|
+
getReleasedStrategiesListCore,
|
|
5
|
+
getStrategyCreditManagersListCore,
|
|
6
|
+
getStrategyInfoCore
|
|
7
|
+
} from "../../common-utils/utils/strategies/index.js";
|
|
2
8
|
import { PoolPointsAPI } from "../../rewards/rewards/extra-apy.js";
|
|
3
9
|
import {
|
|
4
10
|
AddressMap,
|
|
@@ -20,6 +26,7 @@ import {
|
|
|
20
26
|
calculateSupplyApy7d,
|
|
21
27
|
getPoolExtraAPY
|
|
22
28
|
} from "./pool-apy-utils.js";
|
|
29
|
+
import { OnchainSdkStrategyDataSource } from "./strategy-data-source.js";
|
|
23
30
|
const MAP_LABEL = "pools7DAgo";
|
|
24
31
|
class ApyPlugin extends BasePlugin {
|
|
25
32
|
#apyUrl;
|
|
@@ -171,6 +178,69 @@ class ApyPlugin extends BasePlugin {
|
|
|
171
178
|
}
|
|
172
179
|
return { data, data7DAgo, pointsBase: poolPointsBase, points };
|
|
173
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Computes a strategy-info snapshot from the current SDK and APY state.
|
|
183
|
+
*
|
|
184
|
+
* @throws if plugin is not loaded
|
|
185
|
+
*/
|
|
186
|
+
getStrategyInfoSnapshot({
|
|
187
|
+
slippage,
|
|
188
|
+
quotaReserve,
|
|
189
|
+
curatorFilter,
|
|
190
|
+
strategyPayloadsList,
|
|
191
|
+
showHiddenStrategies
|
|
192
|
+
}) {
|
|
193
|
+
if (!this.loaded) {
|
|
194
|
+
throw new Error("apy plugin not loaded");
|
|
195
|
+
}
|
|
196
|
+
const chainId = this.sdk.chainId;
|
|
197
|
+
const network = this.sdk.networkType;
|
|
198
|
+
const allowedChains = { [chainId]: network };
|
|
199
|
+
const source = new OnchainSdkStrategyDataSource(this.sdk);
|
|
200
|
+
const releasedStrategies = getReleasedStrategiesListCore({
|
|
201
|
+
strategyPayloadsList,
|
|
202
|
+
allowedChains,
|
|
203
|
+
source,
|
|
204
|
+
curatorFilter,
|
|
205
|
+
showHiddenStrategies
|
|
206
|
+
});
|
|
207
|
+
const cmsOfStrategiesByChain = getStrategyCreditManagersListCore({
|
|
208
|
+
strategies: releasedStrategies,
|
|
209
|
+
source,
|
|
210
|
+
curatorFilter
|
|
211
|
+
});
|
|
212
|
+
const { available, disabled, availableList, disabledList } = getAvailableAndDisabledStrategies(
|
|
213
|
+
releasedStrategies,
|
|
214
|
+
cmsOfStrategiesByChain,
|
|
215
|
+
curatorFilter
|
|
216
|
+
);
|
|
217
|
+
const apyListByNetwork = {
|
|
218
|
+
[chainId]: this.apySnapshot.apy
|
|
219
|
+
};
|
|
220
|
+
const strategiesInfo = releasedStrategies?.reduce((acc, strategy) => {
|
|
221
|
+
const info = getStrategyInfoCore({
|
|
222
|
+
strategy,
|
|
223
|
+
creditManagers: cmsOfStrategiesByChain?.[strategy.chainId]?.[strategy.id],
|
|
224
|
+
source,
|
|
225
|
+
apyListByNetwork,
|
|
226
|
+
quotaReserve,
|
|
227
|
+
slippage
|
|
228
|
+
});
|
|
229
|
+
if (info) {
|
|
230
|
+
acc[strategy.chainId] ??= {};
|
|
231
|
+
acc[strategy.chainId][strategy.id] = info;
|
|
232
|
+
}
|
|
233
|
+
return acc;
|
|
234
|
+
}, {}) ?? {};
|
|
235
|
+
return {
|
|
236
|
+
availableStrategies: available,
|
|
237
|
+
disabledStrategies: disabled,
|
|
238
|
+
availableList,
|
|
239
|
+
disabledList,
|
|
240
|
+
cmsOfStrategiesByChain,
|
|
241
|
+
strategiesInfo
|
|
242
|
+
};
|
|
243
|
+
}
|
|
174
244
|
// ---------------------------------------------------------------------------
|
|
175
245
|
// Plugin lifecycle
|
|
176
246
|
// ---------------------------------------------------------------------------
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ADDRESS_0X0,
|
|
3
|
+
AP_WETH_TOKEN,
|
|
4
|
+
NATIVE_ADDRESS,
|
|
5
|
+
PERCENTAGE_DECIMALS,
|
|
6
|
+
PERCENTAGE_FACTOR,
|
|
7
|
+
RAY
|
|
8
|
+
} from "../../sdk/index.js";
|
|
9
|
+
const lc = (address) => address.toLowerCase();
|
|
10
|
+
class OnchainSdkStrategyDataSource {
|
|
11
|
+
constructor(sdk) {
|
|
12
|
+
this.sdk = sdk;
|
|
13
|
+
}
|
|
14
|
+
sdk;
|
|
15
|
+
hasToken(chainId, token) {
|
|
16
|
+
return !!this.getToken(chainId, token);
|
|
17
|
+
}
|
|
18
|
+
getToken(chainId, token) {
|
|
19
|
+
if (chainId !== this.sdk.chainId) return void 0;
|
|
20
|
+
const meta = this.sdk.tokensMeta.get(token);
|
|
21
|
+
if (!meta) return void 0;
|
|
22
|
+
const address = lc(token);
|
|
23
|
+
return { address, decimals: meta.decimals };
|
|
24
|
+
}
|
|
25
|
+
getPool(chainId, pool) {
|
|
26
|
+
if (chainId !== this.sdk.chainId) return void 0;
|
|
27
|
+
const market = this.sdk.marketRegister.markets.find(
|
|
28
|
+
(m) => lc(m.pool.pool.address) === lc(pool)
|
|
29
|
+
);
|
|
30
|
+
if (!market) return void 0;
|
|
31
|
+
return {
|
|
32
|
+
address: lc(market.pool.pool.address),
|
|
33
|
+
totalDebtLimit: market.pool.pool.totalDebtLimit,
|
|
34
|
+
totalBorrowed: market.pool.pool.totalBorrowed
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
getCreditManager(chainId, creditManager) {
|
|
38
|
+
if (chainId !== this.sdk.chainId) return void 0;
|
|
39
|
+
try {
|
|
40
|
+
const found = this.findCreditManager(creditManager);
|
|
41
|
+
if (!found) return void 0;
|
|
42
|
+
return this.toCreditManagerView(found.creditSuite, found.market.pool);
|
|
43
|
+
} catch {
|
|
44
|
+
return void 0;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
getMarketPrices(chainId, pool) {
|
|
48
|
+
if (chainId !== this.sdk.chainId) return {};
|
|
49
|
+
const market = this.sdk.marketRegister.markets.find(
|
|
50
|
+
(m) => lc(m.pool.pool.address) === lc(pool)
|
|
51
|
+
);
|
|
52
|
+
if (!market) return {};
|
|
53
|
+
const marketPrices = Object.fromEntries(
|
|
54
|
+
market.priceOracle.mainPrices.entries().map(([token, mainPrice]) => {
|
|
55
|
+
const tokenLc = lc(token);
|
|
56
|
+
const reservePrice = market.priceOracle.reservePrices?.get(token);
|
|
57
|
+
return [tokenLc, mainPrice?.price || reservePrice?.price || 0n];
|
|
58
|
+
})
|
|
59
|
+
);
|
|
60
|
+
const wrappedNativeToken = this.getWrappedNativeToken();
|
|
61
|
+
const wrappedNativePrice = marketPrices[wrappedNativeToken || ADDRESS_0X0];
|
|
62
|
+
if (wrappedNativePrice !== void 0) {
|
|
63
|
+
marketPrices[lc(NATIVE_ADDRESS)] = wrappedNativePrice;
|
|
64
|
+
}
|
|
65
|
+
return marketPrices;
|
|
66
|
+
}
|
|
67
|
+
getLastSyncTimestamp(chainId) {
|
|
68
|
+
return chainId === this.sdk.chainId ? Number(this.sdk.timestamp) : void 0;
|
|
69
|
+
}
|
|
70
|
+
toCreditManagerView(cs, pool) {
|
|
71
|
+
const cm = cs.creditManager;
|
|
72
|
+
const facade = cs.creditFacade;
|
|
73
|
+
const debtParams = pool.pool.creditManagerDebtParams.get(cm.address);
|
|
74
|
+
const liquidationThresholds = {};
|
|
75
|
+
const supportedTokens = {};
|
|
76
|
+
const forbiddenTokens = {};
|
|
77
|
+
const quotas = {};
|
|
78
|
+
for (const [token, q] of pool.pqk.quotas.entries()) {
|
|
79
|
+
const tokenLc = lc(token);
|
|
80
|
+
quotas[tokenLc] = {
|
|
81
|
+
token: tokenLc,
|
|
82
|
+
rate: BigInt(q.rate) * PERCENTAGE_DECIMALS,
|
|
83
|
+
quotaIncreaseFee: BigInt(q.quotaIncreaseFee),
|
|
84
|
+
totalQuoted: q.totalQuoted,
|
|
85
|
+
limit: q.limit,
|
|
86
|
+
isActive: q.isActive
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
for (const token of cm.collateralTokens) {
|
|
90
|
+
const tokenLc = lc(token);
|
|
91
|
+
const lt = cm.liquidationThresholds.get(token);
|
|
92
|
+
if (lt !== void 0) {
|
|
93
|
+
liquidationThresholds[tokenLc] = BigInt(lt);
|
|
94
|
+
}
|
|
95
|
+
supportedTokens[tokenLc] = true;
|
|
96
|
+
}
|
|
97
|
+
const forbiddenMask = facade.forbiddenTokensMask;
|
|
98
|
+
for (let i = 0; i < cm.collateralTokens.length; i++) {
|
|
99
|
+
const tokenLc = lc(cm.collateralTokens[i]);
|
|
100
|
+
if ((forbiddenMask & 1n << BigInt(i)) !== 0n) {
|
|
101
|
+
forbiddenTokens[tokenLc] = true;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const baseBorrowRate = debtParams ? Number(
|
|
105
|
+
pool.pool.baseInterestRate * (BigInt(cm.feeInterest) + PERCENTAGE_FACTOR) * PERCENTAGE_DECIMALS / RAY
|
|
106
|
+
) : 0;
|
|
107
|
+
return {
|
|
108
|
+
address: lc(cm.address),
|
|
109
|
+
underlyingToken: lc(cm.underlying),
|
|
110
|
+
pool: lc(cm.pool),
|
|
111
|
+
chainId: this.sdk.chainId,
|
|
112
|
+
baseBorrowRate,
|
|
113
|
+
feeInterest: cm.feeInterest,
|
|
114
|
+
availableToBorrow: debtParams?.available ?? 0n,
|
|
115
|
+
minDebt: facade.minDebt,
|
|
116
|
+
maxDebt: facade.maxDebt,
|
|
117
|
+
totalDebt: debtParams?.borrowed ?? 0n,
|
|
118
|
+
totalDebtLimit: debtParams?.limit ?? 0n,
|
|
119
|
+
isDegenMode: lc(facade.degenNFT) !== ADDRESS_0X0,
|
|
120
|
+
degenNFT: lc(facade.degenNFT),
|
|
121
|
+
liquidationThresholds,
|
|
122
|
+
quotas,
|
|
123
|
+
collateralTokens: cm.collateralTokens.map(lc),
|
|
124
|
+
version: Number(facade.version),
|
|
125
|
+
isBorrowingForbidden: facade.maxDebtPerBlockMultiplier === 0,
|
|
126
|
+
marketConfigurator: lc(cs.marketConfigurator),
|
|
127
|
+
supportedTokens,
|
|
128
|
+
forbiddenTokens
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
findCreditManager(creditManager) {
|
|
132
|
+
const marketRegister = this.sdk.marketRegister;
|
|
133
|
+
if (marketRegister.findCreditManager && marketRegister.findByCreditManager) {
|
|
134
|
+
const creditSuite = marketRegister.findCreditManager(creditManager);
|
|
135
|
+
const market = marketRegister.findByCreditManager(
|
|
136
|
+
creditSuite.creditManager.address
|
|
137
|
+
);
|
|
138
|
+
return { creditSuite, market };
|
|
139
|
+
}
|
|
140
|
+
const cmLc = lc(creditManager);
|
|
141
|
+
for (const market of marketRegister.markets) {
|
|
142
|
+
const creditSuite = market.creditManagers.find(
|
|
143
|
+
(cs) => lc(cs.creditManager.address) === cmLc
|
|
144
|
+
);
|
|
145
|
+
if (creditSuite) return { creditSuite, market };
|
|
146
|
+
}
|
|
147
|
+
return void 0;
|
|
148
|
+
}
|
|
149
|
+
getWrappedNativeToken() {
|
|
150
|
+
try {
|
|
151
|
+
return this.sdk.addressProvider.getAddress(AP_WETH_TOKEN, 0)?.toLowerCase();
|
|
152
|
+
} catch {
|
|
153
|
+
return void 0;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
export {
|
|
158
|
+
OnchainSdkStrategyDataSource
|
|
159
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CuratorFilter, StrategiesCMListByChain, Strategy, StrategyCreditManagerView, StrategyDataSource } from "../types.js";
|
|
2
|
+
export interface GetStrategyCreditManagersListCoreArgs<CM extends StrategyCreditManagerView> {
|
|
3
|
+
strategies: Array<Strategy> | undefined;
|
|
4
|
+
source: StrategyDataSource<CM>;
|
|
5
|
+
curatorFilter: CuratorFilter;
|
|
6
|
+
}
|
|
7
|
+
export declare function getStrategyCreditManagersListCore<CM extends StrategyCreditManagerView>({ strategies, source, curatorFilter, }: GetStrategyCreditManagersListCoreArgs<CM>): StrategiesCMListByChain<CM> | undefined;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function getStrategyCreditManagersList<CM extends
|
|
1
|
+
import type { CuratorFilter, GearboxSDKFullStateByChain, Strategy, StrategyCreditManagerView } from "../types.js";
|
|
2
|
+
export declare function getStrategyCreditManagersList<CM extends StrategyCreditManagerView>(strategies: Array<Strategy> | undefined, sdkStateByChain: GearboxSDKFullStateByChain<CM> | undefined, curatorFilter: CuratorFilter): import("../types.js").StrategiesCMListByChain<CM> | undefined;
|
package/dist/types/common-utils/utils/strategies/credit-managers/get-strategy-credit-managers.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
|
-
import type {
|
|
3
|
-
interface GetStrategyCreditManagersProps<CM extends
|
|
2
|
+
import type { Strategy, StrategyCreditManagerView } from "../types.js";
|
|
3
|
+
interface GetStrategyCreditManagersProps<CM extends StrategyCreditManagerView> {
|
|
4
4
|
strategy: Pick<Strategy, "tokenOutAddress" | "creditManagers">;
|
|
5
5
|
allCreditManagers: Record<Address, CM>;
|
|
6
6
|
}
|
|
7
|
-
export declare function getStrategyCreditManagers<CM extends
|
|
7
|
+
export declare function getStrategyCreditManagers<CM extends StrategyCreditManagerView>({ strategy, allCreditManagers }: GetStrategyCreditManagersProps<CM>): Record<`0x${string}`, CM>;
|
|
8
8
|
export {};
|
package/dist/types/common-utils/utils/strategies/credit-managers/is-credit-manager-usable.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function isCreditManagerUsable(cm: Pick<
|
|
1
|
+
import type { StrategyCreditManagerView } from "../types.js";
|
|
2
|
+
export declare function isCreditManagerUsable(cm: Pick<StrategyCreditManagerView, "isBorrowingForbidden" | "version">): boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AppChains,
|
|
2
|
-
export declare function isStrategyEligible<CM extends
|
|
1
|
+
import type { AppChains, CuratorFilter, GearboxSDKFullState, NotValidatedStrategy, StrategyCreditManagerView } from "../types.js";
|
|
2
|
+
export declare function isStrategyEligible<CM extends StrategyCreditManagerView>(s: Pick<NotValidatedStrategy, "chainId" | "network" | "hideInProd" | "tokenOutAddress" | "showInMainApp">, allowedChains: AppChains, showHiddenStrategies: boolean, sdkStateByChain: Record<number, Pick<GearboxSDKFullState<CM>, "tokens"> | undefined> | undefined, curatorFilter: CuratorFilter): {
|
|
3
3
|
readonly isEligible: true;
|
|
4
4
|
readonly network: "Mainnet" | "Arbitrum" | "Optimism" | "Base" | "Sonic" | "MegaETH" | "Monad" | "Berachain" | "Avalanche" | "BNB" | "WorldChain" | "Etherlink" | "Hemi" | "Lisk" | "Plasma" | "Somnia";
|
|
5
5
|
} | {
|
package/dist/types/common-utils/utils/strategies/lists/get-available-and-disabled-strategies.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function getAvailableAndDisabledStrategies<CM extends
|
|
1
|
+
import type { CuratorFilter, StrategiesCMListByChain, Strategy, StrategyCreditManagerView } from "../types.js";
|
|
2
|
+
export declare function getAvailableAndDisabledStrategies<CM extends StrategyCreditManagerView>(list: Strategy[] | undefined | undefined, listCMs: StrategiesCMListByChain<CM> | undefined, curatorFilter: CuratorFilter | undefined): {
|
|
3
3
|
available: Error | import("../types.js").StrategyRecord | null;
|
|
4
4
|
disabled: import("../types.js").StrategyRecord;
|
|
5
5
|
availableList: Error | Strategy[] | null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function getAvailableStrategies<CM extends
|
|
1
|
+
import type { StrategiesCMListByChain, Strategy, StrategyCreditManagerView, StrategyRecord } from "../types.js";
|
|
2
|
+
export declare function getAvailableStrategies<CM extends StrategyCreditManagerView>(list: Strategy[] | undefined | undefined, listCMs: StrategiesCMListByChain<CM> | undefined): {
|
|
3
3
|
record: StrategyRecord | null | Error;
|
|
4
4
|
list: Array<Strategy> | null | Error;
|
|
5
5
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function getDisabledStrategies<CM extends
|
|
1
|
+
import type { CuratorFilter, StrategiesCMListByChain, Strategy, StrategyCreditManagerView, StrategyRecord } from "../types.js";
|
|
2
|
+
export declare function getDisabledStrategies<CM extends StrategyCreditManagerView>(list: Strategy[] | undefined | undefined, listCMs: StrategiesCMListByChain<CM> | undefined, curatorFilter: CuratorFilter | undefined): {
|
|
3
3
|
record: StrategyRecord;
|
|
4
4
|
list: Array<Strategy>;
|
|
5
5
|
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AppChains, CuratorFilter, NotValidatedStrategy, Strategy, StrategyDataSource } from "../types.js";
|
|
2
|
+
export interface GetReleasedStrategiesListCoreArgs {
|
|
3
|
+
strategyPayloadsList: NotValidatedStrategy[] | undefined;
|
|
4
|
+
allowedChains: AppChains | undefined;
|
|
5
|
+
source: StrategyDataSource;
|
|
6
|
+
curatorFilter: CuratorFilter;
|
|
7
|
+
showHiddenStrategies: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function getReleasedStrategiesListCore({ strategyPayloadsList, allowedChains, source, curatorFilter, showHiddenStrategies, }: GetReleasedStrategiesListCoreArgs): Strategy[] | undefined;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { AppChains,
|
|
2
|
-
export declare function getReleasedStrategiesList<CM extends
|
|
1
|
+
import type { AppChains, CuratorFilter, GearboxSDKFullStateByChain, NotValidatedStrategy, StrategyCreditManagerView } from "../types.js";
|
|
2
|
+
export declare function getReleasedStrategiesList<CM extends StrategyCreditManagerView>(strategyPayloadsList: NotValidatedStrategy[] | undefined, allowedChains: AppChains | undefined, sdkStateByChain: GearboxSDKFullStateByChain<CM> | undefined, curatorFilter: CuratorFilter, showHiddenStrategies: boolean): import("../types.js").Strategy[] | undefined;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Address } from "viem";
|
|
2
|
+
import type { StrategyDataSource } from "../types/index.js";
|
|
3
|
+
import type { APYListSlice, CreditManagerSlice, StrategyInfoResult, StrategySlice } from "./types.js";
|
|
4
|
+
export interface GetStrategyInfoCoreArgs<ID extends string | number, CM extends CreditManagerSlice> {
|
|
5
|
+
strategy: StrategySlice<ID>;
|
|
6
|
+
creditManagers: Record<Address, CM> | undefined;
|
|
7
|
+
source: StrategyDataSource;
|
|
8
|
+
apyListByNetwork: Record<number, APYListSlice | undefined> | undefined;
|
|
9
|
+
quotaReserve: number;
|
|
10
|
+
slippage: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function getStrategyInfoCore<ID extends string | number, CM extends CreditManagerSlice>({ strategy, creditManagers, source, apyListByNetwork, quotaReserve, slippage, }: GetStrategyInfoCoreArgs<ID, CM>): StrategyInfoResult<CM> | undefined;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
|
-
import type {
|
|
3
|
-
export declare function isStrategyDisabled(tokenOutAddress: Address, cms: Array<Pick<
|
|
2
|
+
import type { StrategyCreditManagerView } from "../types.js";
|
|
3
|
+
export declare function isStrategyDisabled(tokenOutAddress: Address, cms: Array<Pick<StrategyCreditManagerView, "quotas" | "availableToBorrow" | "minDebt">>): boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
|
-
import type {
|
|
2
|
+
import type { StrategyCreditManagerView } from "../types.js";
|
|
3
3
|
export declare function isActivatedToken({ address, creditManager, }: {
|
|
4
4
|
address: Address;
|
|
5
|
-
creditManager: Pick<
|
|
5
|
+
creditManager: Pick<StrategyCreditManagerView, "liquidationThresholds" | "quotas" | "supportedTokens">;
|
|
6
6
|
}): boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
|
-
import type {
|
|
2
|
+
import type { StrategyCreditManagerView } from "../types.js";
|
|
3
3
|
export declare function isForbiddenToken({ address, creditManager, }: {
|
|
4
4
|
address: Address;
|
|
5
|
-
creditManager: Pick<
|
|
5
|
+
creditManager: Pick<StrategyCreditManagerView, "forbiddenTokens">;
|
|
6
6
|
}): boolean;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
2
|
import type { NetworkType } from "../../../../sdk/index.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { QuotaSlice } from "../strategy-info/types.js";
|
|
4
|
+
import type { StrategyCreditManagerView } from "./strategy-data-source.js";
|
|
4
5
|
interface AdapterContract {
|
|
5
6
|
address: Address;
|
|
6
7
|
contractType: string;
|
|
@@ -8,24 +9,19 @@ interface AdapterContract {
|
|
|
8
9
|
name: string;
|
|
9
10
|
targetContract: Address;
|
|
10
11
|
}
|
|
11
|
-
export type CreditManagerDataSlice =
|
|
12
|
+
export type CreditManagerDataSlice = StrategyCreditManagerView & {
|
|
12
13
|
readonly network: NetworkType;
|
|
13
14
|
readonly creditFacade: Address;
|
|
14
15
|
readonly creditConfigurator: Address;
|
|
15
|
-
readonly version: number;
|
|
16
16
|
readonly isPaused: boolean;
|
|
17
17
|
readonly forbiddenTokenMask: bigint;
|
|
18
|
-
readonly isBorrowingForbidden: boolean;
|
|
19
18
|
readonly maxEnabledTokensLength: number;
|
|
20
19
|
readonly name: string;
|
|
21
|
-
readonly marketConfigurator: Address;
|
|
22
20
|
readonly feeLiquidation: number;
|
|
23
21
|
readonly liquidationDiscount: number;
|
|
24
22
|
readonly feeLiquidationExpired: number;
|
|
25
23
|
readonly liquidationDiscountExpired: number;
|
|
26
|
-
readonly supportedTokens: Record<Address, true>;
|
|
27
24
|
readonly usableTokens: Record<Address, true>;
|
|
28
|
-
readonly forbiddenTokens: Record<Address, true>;
|
|
29
25
|
readonly adapters: Record<Address, AdapterContract>;
|
|
30
26
|
readonly contractsByAdapter: Record<Address, Address>;
|
|
31
27
|
readonly quotas: Record<Address, QuotaSlice>;
|
|
@@ -3,7 +3,9 @@ export * from "./chains.js";
|
|
|
3
3
|
export * from "./constants.js";
|
|
4
4
|
export * from "./credit-manager-data-legacy.js";
|
|
5
5
|
export * from "./curator-filter.js";
|
|
6
|
+
export * from "./legacy-strategy-data-source.js";
|
|
6
7
|
export * from "./sdk-state.js";
|
|
7
8
|
export * from "./strategies-cm-list.js";
|
|
8
9
|
export * from "./strategy.js";
|
|
10
|
+
export * from "./strategy-data-source.js";
|
|
9
11
|
export * from "./targetable.js";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { PricesByChainSlice } from "../strategy-info/types.js";
|
|
2
|
+
import type { GearboxSDKFullStateByChain } from "./sdk-state.js";
|
|
3
|
+
import type { StrategyCreditManagerView, StrategyDataSource } from "./strategy-data-source.js";
|
|
4
|
+
export declare function createLegacyStrategyDataSource<CM extends StrategyCreditManagerView>(sdkStateByChain: GearboxSDKFullStateByChain<CM> | undefined, pricesByChain?: PricesByChainSlice): StrategyDataSource<CM>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
|
-
import type { TokenSlice } from "../strategy-info/types.js";
|
|
3
|
-
import type {
|
|
4
|
-
export interface GearboxSDKFullState<CM extends
|
|
2
|
+
import type { PoolSlice, TokenSlice } from "../strategy-info/types.js";
|
|
3
|
+
import type { StrategyCreditManagerView } from "./strategy-data-source.js";
|
|
4
|
+
export interface GearboxSDKFullState<CM extends StrategyCreditManagerView> {
|
|
5
5
|
lastSyncBlock?: {
|
|
6
6
|
blockTimestamp_js: number;
|
|
7
7
|
};
|
|
@@ -9,5 +9,6 @@ export interface GearboxSDKFullState<CM extends CreditManagerDataSlice> {
|
|
|
9
9
|
tokenDataList?: Record<Address, TokenSlice>;
|
|
10
10
|
};
|
|
11
11
|
creditManagers?: Record<Address, CM>;
|
|
12
|
+
pools?: Record<Address, PoolSlice>;
|
|
12
13
|
}
|
|
13
|
-
export type GearboxSDKFullStateByChain<CM extends
|
|
14
|
+
export type GearboxSDKFullStateByChain<CM extends StrategyCreditManagerView> = Record<number, GearboxSDKFullState<CM> | undefined>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
2
|
import type { PartialRecord } from "../../../../sdk/index.js";
|
|
3
|
-
import type { CreditManagerDataSlice } from "./credit-manager-data-legacy.js";
|
|
4
3
|
import type { Strategy } from "./strategy.js";
|
|
5
|
-
|
|
4
|
+
import type { StrategyCreditManagerView } from "./strategy-data-source.js";
|
|
5
|
+
export type StrategiesCMListByChain<CM extends StrategyCreditManagerView> = Record<number, PartialRecord<Strategy["id"], Record<Address, CM>>>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Address } from "viem";
|
|
2
|
+
import type { CreditManagerSlice, PoolSlice, TokenSlice } from "../strategy-info/types.js";
|
|
3
|
+
export interface StrategyCreditManagerView extends CreditManagerSlice {
|
|
4
|
+
readonly version: number;
|
|
5
|
+
readonly isBorrowingForbidden: boolean;
|
|
6
|
+
readonly marketConfigurator: Address;
|
|
7
|
+
readonly supportedTokens: Record<Address, true>;
|
|
8
|
+
readonly forbiddenTokens: Record<Address, true>;
|
|
9
|
+
}
|
|
10
|
+
export type StrategyPoolView = PoolSlice;
|
|
11
|
+
export type StrategyTokenView = TokenSlice;
|
|
12
|
+
export interface StrategyDataSource<CM extends StrategyCreditManagerView = StrategyCreditManagerView> {
|
|
13
|
+
hasToken(chainId: number, token: Address): boolean;
|
|
14
|
+
getToken(chainId: number, token: Address): StrategyTokenView | undefined;
|
|
15
|
+
getPool(chainId: number, pool: Address): StrategyPoolView | undefined;
|
|
16
|
+
getCreditManager(chainId: number, creditManager: Address): CM | undefined;
|
|
17
|
+
getMarketPrices(chainId: number, pool: Address): Record<Address, bigint>;
|
|
18
|
+
getLastSyncTimestamp(chainId: number): number | undefined;
|
|
19
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
|
-
import type {
|
|
2
|
+
import type { StrategyCreditManagerView } from "./strategy-data-source.js";
|
|
3
3
|
export type IsTargetableProps = {
|
|
4
4
|
address: Address;
|
|
5
|
-
creditManager: Pick<
|
|
5
|
+
creditManager: Pick<StrategyCreditManagerView, "forbiddenTokens" | "liquidationThresholds" | "quotas" | "supportedTokens">;
|
|
6
6
|
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
|
+
import type { StrategyCreditManagerView } from "../../common-utils/utils/strategies/types.js";
|
|
2
3
|
import type { IOnchainSDKPlugin } from "../../sdk/index.js";
|
|
3
4
|
import { AddressMap, BasePlugin } from "../../sdk/index.js";
|
|
4
5
|
import type { GetPoolsAPYResult } from "./pool-apy-types.js";
|
|
5
|
-
import type { ApySnapshotState, Pool7DAgoState, Pools7DAgoStateHuman } from "./types.js";
|
|
6
|
+
import type { ApySnapshotState, GetStrategyInfoSnapshotArgs, Pool7DAgoState, Pools7DAgoStateHuman, StrategyInfoSnapshot } from "./types.js";
|
|
6
7
|
export interface ApyPluginState {
|
|
7
8
|
pools7DAgo: Record<Address, Pool7DAgoState>;
|
|
8
9
|
apySnapshot: ApySnapshotState;
|
|
@@ -39,6 +40,12 @@ export declare class ApyPlugin extends BasePlugin<ApyPluginState> implements IOn
|
|
|
39
40
|
* @throws if plugin is not loaded
|
|
40
41
|
*/
|
|
41
42
|
getPoolsAPY(): GetPoolsAPYResult;
|
|
43
|
+
/**
|
|
44
|
+
* Computes a strategy-info snapshot from the current SDK and APY state.
|
|
45
|
+
*
|
|
46
|
+
* @throws if plugin is not loaded
|
|
47
|
+
*/
|
|
48
|
+
getStrategyInfoSnapshot({ slippage, quotaReserve, curatorFilter, strategyPayloadsList, showHiddenStrategies, }: GetStrategyInfoSnapshotArgs): StrategyInfoSnapshot<StrategyCreditManagerView>;
|
|
42
49
|
syncState(): Promise<void>;
|
|
43
50
|
stateHuman(_?: boolean): Pools7DAgoStateHuman[];
|
|
44
51
|
get state(): ApyPluginState;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Address } from "viem";
|
|
2
|
+
import type { StrategyCreditManagerView, StrategyDataSource, StrategyPoolView, StrategyTokenView } from "../../common-utils/utils/strategies/types.js";
|
|
3
|
+
import { type OnchainSDK } from "../../sdk/index.js";
|
|
4
|
+
export declare class OnchainSdkStrategyDataSource implements StrategyDataSource<StrategyCreditManagerView> {
|
|
5
|
+
private readonly sdk;
|
|
6
|
+
constructor(sdk: OnchainSDK);
|
|
7
|
+
hasToken(chainId: number, token: Address): boolean;
|
|
8
|
+
getToken(chainId: number, token: Address): StrategyTokenView | undefined;
|
|
9
|
+
getPool(chainId: number, pool: Address): StrategyPoolView | undefined;
|
|
10
|
+
getCreditManager(chainId: number, creditManager: Address): StrategyCreditManagerView | undefined;
|
|
11
|
+
getMarketPrices(chainId: number, pool: Address): Record<Address, bigint>;
|
|
12
|
+
getLastSyncTimestamp(chainId: number): number | undefined;
|
|
13
|
+
private toCreditManagerView;
|
|
14
|
+
private findCreditManager;
|
|
15
|
+
private getWrappedNativeToken;
|
|
16
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
|
+
import type { StrategyInfoResult } from "../../common-utils/utils/strategies/strategy-info/types.js";
|
|
3
|
+
import type { CuratorFilter, NotValidatedStrategy, StrategiesCMListByChain, Strategy, StrategyCreditManagerView, StrategyRecord } from "../../common-utils/utils/strategies/types.js";
|
|
2
4
|
import type { ExternalApy, ExtraCollateralAPY, GearAPYDetails, PointsInfo, PoolExtraApy, PoolPointsInfo } from "../../rewards/apy/index.js";
|
|
3
|
-
import type { BaseContractStateHuman } from "../../sdk/index.js";
|
|
5
|
+
import type { BaseContractStateHuman, PartialRecord } from "../../sdk/index.js";
|
|
4
6
|
export interface Pool7DAgoState {
|
|
5
7
|
pool: Address;
|
|
6
8
|
dieselRate: bigint;
|
|
@@ -35,3 +37,18 @@ export interface ApySnapshotState {
|
|
|
35
37
|
gearStats: GearStats | null;
|
|
36
38
|
timestamp: string;
|
|
37
39
|
}
|
|
40
|
+
export interface GetStrategyInfoSnapshotArgs {
|
|
41
|
+
slippage: number;
|
|
42
|
+
quotaReserve: number;
|
|
43
|
+
curatorFilter: CuratorFilter;
|
|
44
|
+
strategyPayloadsList: NotValidatedStrategy[] | undefined;
|
|
45
|
+
showHiddenStrategies: boolean;
|
|
46
|
+
}
|
|
47
|
+
export interface StrategyInfoSnapshot<CM extends StrategyCreditManagerView = StrategyCreditManagerView> {
|
|
48
|
+
availableStrategies: StrategyRecord | null | Error;
|
|
49
|
+
disabledStrategies: StrategyRecord;
|
|
50
|
+
availableList: Strategy[] | null | Error;
|
|
51
|
+
disabledList: Strategy[] | null | Error;
|
|
52
|
+
cmsOfStrategiesByChain: StrategiesCMListByChain<CM> | undefined;
|
|
53
|
+
strategiesInfo: Record<number, PartialRecord<Strategy["id"], StrategyInfoResult<CM>>>;
|
|
54
|
+
}
|