@1delta/data-sdk 0.0.41 → 0.0.43
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/README.md +116 -0
- package/dist/index.js +479 -380
- package/dist/index.mjs +475 -383
- package/dist/lending/aave.d.ts +44 -0
- package/dist/lending/aaveV4.d.ts +168 -0
- package/dist/lending/common.d.ts +16 -0
- package/dist/lending/compoundV2.d.ts +38 -0
- package/dist/lending/compoundV3.d.ts +35 -0
- package/dist/lending/curvance.d.ts +112 -0
- package/dist/lending/dolomite.d.ts +54 -0
- package/dist/lending/dss.d.ts +139 -0
- package/dist/lending/euler.d.ts +26 -0
- package/dist/lending/exactly.d.ts +53 -0
- package/dist/lending/fluid.d.ts +53 -0
- package/dist/lending/frankencoin.d.ts +76 -0
- package/dist/lending/fraxlend.d.ts +85 -0
- package/dist/lending/gearbox.d.ts +74 -0
- package/dist/lending/index.d.ts +40 -0
- package/dist/lending/initProtocol.d.ts +11 -0
- package/dist/lending/inverse.d.ts +63 -0
- package/dist/lending/liquity.d.ts +120 -0
- package/dist/lending/lista.d.ts +6 -0
- package/dist/lending/llamalend.d.ts +208 -0
- package/dist/lending/midnight.d.ts +72 -0
- package/dist/lending/morpho.d.ts +72 -0
- package/dist/lending/registry.d.ts +140 -0
- package/dist/lending/resupply.d.ts +77 -0
- package/dist/lending/river.d.ts +61 -0
- package/dist/lending/silo.d.ts +129 -0
- package/dist/lending/teller.d.ts +68 -0
- package/dist/lending/term.d.ts +82 -0
- package/dist/lending/termMax.d.ts +65 -0
- package/package.json +1 -1
- package/dist/lending.d.ts +0 -1978
package/dist/index.js
CHANGED
|
@@ -38,37 +38,42 @@ function getChainEntries(chainIds) {
|
|
|
38
38
|
return entries;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
// src/lending.ts
|
|
41
|
+
// src/lending/registry.ts
|
|
42
42
|
var GLOBAL_LENDER_DATA_KEY = "__1delta_lender_registry__";
|
|
43
|
-
|
|
43
|
+
var LENDER_DATA_DEFAULTS = () => ({
|
|
44
44
|
aaveTokens: {},
|
|
45
45
|
aavePools: {},
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
aaveReserves: {},
|
|
47
|
+
aaveOracles: {},
|
|
48
|
+
aaveOraclesConfig: {},
|
|
49
|
+
aaveWethGateway: {},
|
|
50
|
+
aaveV4Spokes: {},
|
|
51
|
+
aaveV4Oracles: {},
|
|
52
|
+
aaveV4Peripherals: {},
|
|
49
53
|
compoundV2Pools: {},
|
|
50
54
|
compoundV2Tokens: {},
|
|
51
55
|
compoundV2TokenArray: {},
|
|
52
|
-
initConfig: {},
|
|
53
|
-
aaveReserves: {},
|
|
54
56
|
compoundV2Reserves: {},
|
|
55
|
-
compoundV3Reserves: {},
|
|
56
|
-
aaveOracles: {},
|
|
57
57
|
compoundV2Oracles: {},
|
|
58
|
+
compoundV2OraclesConfig: {},
|
|
59
|
+
compoundV3Pools: {},
|
|
60
|
+
compoundV3BaseData: {},
|
|
61
|
+
compoundV3Reserves: {},
|
|
58
62
|
compoundV3OraclesData: {},
|
|
63
|
+
compoundV3Bulker: {},
|
|
64
|
+
morphoPools: {},
|
|
59
65
|
morphoOracles: {},
|
|
60
66
|
morphoTypeOracles: {},
|
|
61
67
|
morphoTypeMarkets: {},
|
|
62
68
|
morphoTypeVaults: {},
|
|
63
|
-
aaveOraclesConfig: {},
|
|
64
|
-
compoundV2OraclesConfig: {},
|
|
65
|
-
aaveWethGateway: {},
|
|
66
69
|
morphoBundler3: {},
|
|
70
|
+
initConfig: {},
|
|
67
71
|
listaNativeProvider: {},
|
|
68
72
|
midnightConfig: {},
|
|
69
73
|
midnightMarkets: {},
|
|
70
74
|
termConfig: {},
|
|
71
75
|
termMarkets: {},
|
|
76
|
+
termMaxConfig: {},
|
|
72
77
|
exactlyConfig: {},
|
|
73
78
|
exactlyMarkets: {},
|
|
74
79
|
tellerConfig: {},
|
|
@@ -78,7 +83,6 @@ globalThis[GLOBAL_LENDER_DATA_KEY] = {
|
|
|
78
83
|
riverConfig: {},
|
|
79
84
|
riverMarkets: {},
|
|
80
85
|
inverseConfig: {},
|
|
81
|
-
termMaxConfig: {},
|
|
82
86
|
inverseMarkets: {},
|
|
83
87
|
usddConfig: {},
|
|
84
88
|
usddMarkets: {},
|
|
@@ -90,14 +94,11 @@ globalThis[GLOBAL_LENDER_DATA_KEY] = {
|
|
|
90
94
|
llamaLendMarkets: {},
|
|
91
95
|
resupplyConfig: {},
|
|
92
96
|
curvanceConfig: {},
|
|
93
|
-
|
|
97
|
+
fraxlendConfig: {},
|
|
94
98
|
eulerConfigs: {},
|
|
95
99
|
eulerVaults: {},
|
|
96
100
|
dolomiteConfigs: {},
|
|
97
101
|
dolomiteEmode: {},
|
|
98
|
-
aaveV4Spokes: {},
|
|
99
|
-
aaveV4Oracles: {},
|
|
100
|
-
aaveV4Peripherals: {},
|
|
101
102
|
siloMarkets: {},
|
|
102
103
|
siloPeripherals: {},
|
|
103
104
|
siloMarketsV3: {},
|
|
@@ -109,166 +110,200 @@ globalThis[GLOBAL_LENDER_DATA_KEY] = {
|
|
|
109
110
|
marketCompressorV310: "",
|
|
110
111
|
chains: {}
|
|
111
112
|
}
|
|
112
|
-
};
|
|
113
|
+
});
|
|
114
|
+
globalThis[GLOBAL_LENDER_DATA_KEY] = LENDER_DATA_DEFAULTS();
|
|
115
|
+
var LENDER_DATA_SLOTS = Object.keys(LENDER_DATA_DEFAULTS());
|
|
113
116
|
function getGlobalData2() {
|
|
114
117
|
return globalThis[GLOBAL_LENDER_DATA_KEY];
|
|
115
118
|
}
|
|
116
|
-
function initializeLenderData({
|
|
117
|
-
aaveTokensOverride,
|
|
118
|
-
aavePoolsOverride,
|
|
119
|
-
aaveOraclesOverride,
|
|
120
|
-
compoundV2OraclesOverride,
|
|
121
|
-
compoundV3OraclesDataOverride,
|
|
122
|
-
compoundV3PoolsOverride,
|
|
123
|
-
compoundV3BaseDataOverride,
|
|
124
|
-
morphoPoolsOverride,
|
|
125
|
-
compoundV2TokensOverride,
|
|
126
|
-
compoundV2TokenArrayOverride,
|
|
127
|
-
compoundV2PoolsOverride,
|
|
128
|
-
initConfigOverride,
|
|
129
|
-
aaveReservesOverride,
|
|
130
|
-
compoundV3ReservesOverride,
|
|
131
|
-
compoundV2ReservesOverride,
|
|
132
|
-
morphoOraclesOverride,
|
|
133
|
-
morphoTypeOraclesOverride,
|
|
134
|
-
morphoTypeMarketsOverride,
|
|
135
|
-
morphoTypeVaultsOverride,
|
|
136
|
-
aaveOraclesConfigOverride,
|
|
137
|
-
compoundV2OraclesConfigOverride,
|
|
138
|
-
aaveWethGatewayOverride,
|
|
139
|
-
morphoBundler3Override,
|
|
140
|
-
listaNativeProviderOverride,
|
|
141
|
-
midnightConfigOverride,
|
|
142
|
-
midnightMarketsOverride,
|
|
143
|
-
termConfigOverride,
|
|
144
|
-
termMarketsOverride,
|
|
145
|
-
exactlyConfigOverride,
|
|
146
|
-
exactlyMarketsOverride,
|
|
147
|
-
tellerConfigOverride,
|
|
148
|
-
tellerPoolsOverride,
|
|
149
|
-
liquityConfigOverride,
|
|
150
|
-
liquityMarketsOverride,
|
|
151
|
-
riverConfigOverride,
|
|
152
|
-
riverMarketsOverride,
|
|
153
|
-
inverseConfigOverride,
|
|
154
|
-
termMaxConfigOverride,
|
|
155
|
-
inverseMarketsOverride,
|
|
156
|
-
usddConfigOverride,
|
|
157
|
-
usddMarketsOverride,
|
|
158
|
-
skyConfigOverride,
|
|
159
|
-
skyMarketsOverride,
|
|
160
|
-
frankencoinConfigOverride,
|
|
161
|
-
frankencoinMarketsOverride,
|
|
162
|
-
llamaLendConfigOverride,
|
|
163
|
-
llamaLendMarketsOverride,
|
|
164
|
-
resupplyConfigOverride,
|
|
165
|
-
curvanceConfigOverride,
|
|
166
|
-
compoundV3BulkerOverride,
|
|
167
|
-
eulerConfigsOverride,
|
|
168
|
-
eulerVaultsOverride,
|
|
169
|
-
dolomiteConfigsOverride,
|
|
170
|
-
dolomiteEmodeOverride,
|
|
171
|
-
aaveV4SpokesOverride,
|
|
172
|
-
aaveV4OraclesOverride,
|
|
173
|
-
aaveV4PeripheralsOverride,
|
|
174
|
-
siloMarketsOverride,
|
|
175
|
-
siloPeripheralsOverride,
|
|
176
|
-
siloMarketsV3Override,
|
|
177
|
-
siloPeripheralsV3Override,
|
|
178
|
-
fluidResolversOverride,
|
|
179
|
-
fluidVaultsOverride,
|
|
180
|
-
gearboxResolversOverride
|
|
181
|
-
}) {
|
|
119
|
+
function initializeLenderData(overrides) {
|
|
182
120
|
const data = getGlobalData2();
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
if (compoundV3PoolsOverride) data.compoundV3Pools = compoundV3PoolsOverride;
|
|
189
|
-
if (morphoPoolsOverride) data.morphoPools = morphoPoolsOverride;
|
|
190
|
-
if (compoundV3BaseDataOverride) data.compoundV3BaseData = compoundV3BaseDataOverride;
|
|
191
|
-
if (compoundV2TokensOverride) data.compoundV2Tokens = compoundV2TokensOverride;
|
|
192
|
-
if (compoundV2TokenArrayOverride) data.compoundV2TokenArray = compoundV2TokenArrayOverride;
|
|
193
|
-
if (compoundV2PoolsOverride) data.compoundV2Pools = compoundV2PoolsOverride;
|
|
194
|
-
if (initConfigOverride) data.initConfig = initConfigOverride;
|
|
195
|
-
if (aaveReservesOverride) data.aaveReserves = aaveReservesOverride;
|
|
196
|
-
if (compoundV3ReservesOverride) data.compoundV3Reserves = compoundV3ReservesOverride;
|
|
197
|
-
if (compoundV2ReservesOverride) data.compoundV2Reserves = compoundV2ReservesOverride;
|
|
198
|
-
if (morphoOraclesOverride) data.morphoOracles = morphoOraclesOverride;
|
|
199
|
-
if (morphoTypeOraclesOverride) data.morphoTypeOracles = morphoTypeOraclesOverride;
|
|
200
|
-
if (morphoTypeMarketsOverride) data.morphoTypeMarkets = morphoTypeMarketsOverride;
|
|
201
|
-
if (morphoTypeVaultsOverride) data.morphoTypeVaults = morphoTypeVaultsOverride;
|
|
202
|
-
if (aaveOraclesConfigOverride) data.aaveOraclesConfig = aaveOraclesConfigOverride;
|
|
203
|
-
if (compoundV2OraclesConfigOverride) data.compoundV2OraclesConfig = compoundV2OraclesConfigOverride;
|
|
204
|
-
if (aaveWethGatewayOverride) data.aaveWethGateway = aaveWethGatewayOverride;
|
|
205
|
-
if (morphoBundler3Override) data.morphoBundler3 = morphoBundler3Override;
|
|
206
|
-
if (listaNativeProviderOverride) data.listaNativeProvider = listaNativeProviderOverride;
|
|
207
|
-
if (midnightConfigOverride) data.midnightConfig = midnightConfigOverride;
|
|
208
|
-
if (midnightMarketsOverride) data.midnightMarkets = midnightMarketsOverride;
|
|
209
|
-
if (termConfigOverride) data.termConfig = termConfigOverride;
|
|
210
|
-
if (termMarketsOverride) data.termMarkets = termMarketsOverride;
|
|
211
|
-
if (exactlyConfigOverride) data.exactlyConfig = exactlyConfigOverride;
|
|
212
|
-
if (exactlyMarketsOverride) data.exactlyMarkets = exactlyMarketsOverride;
|
|
213
|
-
if (tellerConfigOverride) data.tellerConfig = tellerConfigOverride;
|
|
214
|
-
if (tellerPoolsOverride) data.tellerPools = tellerPoolsOverride;
|
|
215
|
-
if (liquityConfigOverride) data.liquityConfig = liquityConfigOverride;
|
|
216
|
-
if (liquityMarketsOverride) data.liquityMarkets = liquityMarketsOverride;
|
|
217
|
-
if (riverConfigOverride) data.riverConfig = riverConfigOverride;
|
|
218
|
-
if (riverMarketsOverride) data.riverMarkets = riverMarketsOverride;
|
|
219
|
-
if (inverseConfigOverride) data.inverseConfig = inverseConfigOverride;
|
|
220
|
-
if (termMaxConfigOverride) data.termMaxConfig = termMaxConfigOverride;
|
|
221
|
-
if (inverseMarketsOverride) data.inverseMarkets = inverseMarketsOverride;
|
|
222
|
-
if (usddConfigOverride) data.usddConfig = usddConfigOverride;
|
|
223
|
-
if (usddMarketsOverride) data.usddMarkets = usddMarketsOverride;
|
|
224
|
-
if (skyConfigOverride) data.skyConfig = skyConfigOverride;
|
|
225
|
-
if (skyMarketsOverride) data.skyMarkets = skyMarketsOverride;
|
|
226
|
-
if (frankencoinConfigOverride) data.frankencoinConfig = frankencoinConfigOverride;
|
|
227
|
-
if (frankencoinMarketsOverride) data.frankencoinMarkets = frankencoinMarketsOverride;
|
|
228
|
-
if (llamaLendConfigOverride) data.llamaLendConfig = llamaLendConfigOverride;
|
|
229
|
-
if (llamaLendMarketsOverride) data.llamaLendMarkets = llamaLendMarketsOverride;
|
|
230
|
-
if (resupplyConfigOverride) data.resupplyConfig = resupplyConfigOverride;
|
|
231
|
-
if (curvanceConfigOverride) data.curvanceConfig = curvanceConfigOverride;
|
|
232
|
-
if (compoundV3BulkerOverride) data.compoundV3Bulker = compoundV3BulkerOverride;
|
|
233
|
-
if (eulerConfigsOverride) data.eulerConfigs = eulerConfigsOverride;
|
|
234
|
-
if (eulerVaultsOverride) data.eulerVaults = eulerVaultsOverride;
|
|
235
|
-
if (dolomiteConfigsOverride) data.dolomiteConfigs = dolomiteConfigsOverride;
|
|
236
|
-
if (dolomiteEmodeOverride) data.dolomiteEmode = dolomiteEmodeOverride;
|
|
237
|
-
if (aaveV4SpokesOverride) data.aaveV4Spokes = aaveV4SpokesOverride;
|
|
238
|
-
if (aaveV4OraclesOverride) data.aaveV4Oracles = aaveV4OraclesOverride;
|
|
239
|
-
if (aaveV4PeripheralsOverride) data.aaveV4Peripherals = aaveV4PeripheralsOverride;
|
|
240
|
-
if (siloMarketsOverride) data.siloMarkets = siloMarketsOverride;
|
|
241
|
-
if (siloPeripheralsOverride) data.siloPeripherals = siloPeripheralsOverride;
|
|
242
|
-
if (siloMarketsV3Override) data.siloMarketsV3 = siloMarketsV3Override;
|
|
243
|
-
if (siloPeripheralsV3Override) data.siloPeripheralsV3 = siloPeripheralsV3Override;
|
|
244
|
-
if (fluidResolversOverride) data.fluidResolvers = fluidResolversOverride;
|
|
245
|
-
if (fluidVaultsOverride) data.fluidVaults = fluidVaultsOverride;
|
|
246
|
-
if (gearboxResolversOverride) data.gearboxResolvers = gearboxResolversOverride;
|
|
121
|
+
const given = overrides;
|
|
122
|
+
for (const slot of LENDER_DATA_SLOTS) {
|
|
123
|
+
const value = given[`${slot}Override`];
|
|
124
|
+
if (value) data[slot] = value;
|
|
125
|
+
}
|
|
247
126
|
}
|
|
127
|
+
|
|
128
|
+
// src/lending/aave.ts
|
|
248
129
|
var aaveTokens = () => getGlobalData2()?.aaveTokens;
|
|
249
130
|
var aavePools = () => getGlobalData2()?.aavePools;
|
|
250
131
|
var aaveOracles = () => getGlobalData2()?.aaveOracles;
|
|
132
|
+
var aaveReserves = () => getGlobalData2()?.aaveReserves;
|
|
133
|
+
var aaveOraclesConfig = () => getGlobalData2()?.aaveOraclesConfig;
|
|
134
|
+
var aaveWethGateway = () => getGlobalData2()?.aaveWethGateway;
|
|
135
|
+
|
|
136
|
+
// src/lending/aaveV4.ts
|
|
137
|
+
var aaveV4Spokes = () => getGlobalData2()?.aaveV4Spokes;
|
|
138
|
+
var aaveV4Oracles = () => getGlobalData2()?.aaveV4Oracles;
|
|
139
|
+
var aaveV4Peripherals = () => getGlobalData2()?.aaveV4Peripherals;
|
|
140
|
+
function getAaveV4SpokeEntry(chainId, lenderKey) {
|
|
141
|
+
const parsed = parseAaveV4SpokeLenderKey(lenderKey);
|
|
142
|
+
if (!parsed) return void 0;
|
|
143
|
+
return getGlobalData2()?.aaveV4Spokes?.[chainId]?.[parsed.spokeAddrLower];
|
|
144
|
+
}
|
|
145
|
+
function getAaveV4GatewayAddresses(chainId, lender, hubOverride) {
|
|
146
|
+
const c = getGlobalData2()?.aaveV4Peripherals?.[chainId];
|
|
147
|
+
if (!c) return {};
|
|
148
|
+
let hubAddr = hubOverride?.toLowerCase();
|
|
149
|
+
if (!hubAddr) {
|
|
150
|
+
const spokeEntry = getAaveV4SpokeEntry(chainId, lender);
|
|
151
|
+
hubAddr = spokeEntry?.reserves?.[0]?.hub?.toLowerCase();
|
|
152
|
+
}
|
|
153
|
+
const perHub = hubAddr && c.perHub?.[hubAddr] || void 0;
|
|
154
|
+
return {
|
|
155
|
+
nativeGateway: perHub?.nativeGateway ?? c.nativeGateway,
|
|
156
|
+
signatureGateway: perHub?.signatureGateway ?? c.signatureGateway
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function getAaveV4SpokePeripherals(chainId, lenderKey) {
|
|
160
|
+
const parsed = parseAaveV4SpokeLenderKey(lenderKey);
|
|
161
|
+
if (!parsed) return void 0;
|
|
162
|
+
return getGlobalData2()?.aaveV4Peripherals?.[chainId]?.perSpoke?.[parsed.spokeAddrLower];
|
|
163
|
+
}
|
|
164
|
+
function getAaveV4PositionManagers(chainId, lenderKey) {
|
|
165
|
+
const meta = getAaveV4SpokePeripherals(chainId, lenderKey);
|
|
166
|
+
if (!meta?.positionManagers) return [];
|
|
167
|
+
return meta.positionManagers.filter((pm) => pm.active !== false && pm.address).map((pm) => pm.address.toLowerCase());
|
|
168
|
+
}
|
|
169
|
+
function findAaveV4PositionManager(chainId, lenderKey, nameQuery) {
|
|
170
|
+
const meta = getAaveV4SpokePeripherals(chainId, lenderKey);
|
|
171
|
+
if (!meta?.positionManagers) return void 0;
|
|
172
|
+
const q = nameQuery.toLowerCase();
|
|
173
|
+
const hit = meta.positionManagers.find(
|
|
174
|
+
(pm) => pm.active !== false && pm.address && (pm.name ?? "").toLowerCase().includes(q)
|
|
175
|
+
);
|
|
176
|
+
return hit?.address?.toLowerCase();
|
|
177
|
+
}
|
|
178
|
+
function aaveV4SpokeLenderKey(spoke) {
|
|
179
|
+
if (!spoke || !spoke.startsWith("0x") || spoke.length !== 42) {
|
|
180
|
+
throw new Error(`aaveV4SpokeLenderKey: invalid spoke address ${spoke}`);
|
|
181
|
+
}
|
|
182
|
+
return `AAVE_V4_${spoke.slice(2).toUpperCase()}`;
|
|
183
|
+
}
|
|
184
|
+
function parseAaveV4SpokeLenderKey(lenderKey) {
|
|
185
|
+
const match = lenderKey.match(/^AAVE_V4_([0-9A-F]{40})$/);
|
|
186
|
+
if (!match) return void 0;
|
|
187
|
+
return { spokeAddrLower: "0x" + match[1].toLowerCase() };
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// src/lending/compoundV2.ts
|
|
191
|
+
var compoundV2Pools = () => getGlobalData2()?.compoundV2Pools;
|
|
192
|
+
var compoundV2Tokens = () => getGlobalData2()?.compoundV2Tokens;
|
|
193
|
+
var compoundV2TokenArray = () => getGlobalData2()?.compoundV2TokenArray;
|
|
194
|
+
var compoundV2Reserves = () => getGlobalData2()?.compoundV2Reserves;
|
|
251
195
|
var compoundV2Oracles = () => getGlobalData2()?.compoundV2Oracles;
|
|
196
|
+
var compoundV2OraclesConfig = () => getGlobalData2()?.compoundV2OraclesConfig;
|
|
197
|
+
|
|
198
|
+
// src/lending/compoundV3.ts
|
|
199
|
+
var compoundV3Pools = () => getGlobalData2()?.compoundV3Pools;
|
|
200
|
+
var compoundV3BaseData = () => getGlobalData2()?.compoundV3BaseData;
|
|
201
|
+
var compoundV3Reserves = () => getGlobalData2()?.compoundV3Reserves;
|
|
252
202
|
var compoundV3OraclesData = () => getGlobalData2()?.compoundV3OraclesData;
|
|
203
|
+
var compoundV3Bulker = () => getGlobalData2()?.compoundV3Bulker;
|
|
204
|
+
|
|
205
|
+
// src/lending/morpho.ts
|
|
206
|
+
var morphoPools = () => getGlobalData2()?.morphoPools;
|
|
253
207
|
var morphoOracles = () => getGlobalData2()?.morphoOracles;
|
|
254
208
|
var morphoTypeOracles = () => getGlobalData2()?.morphoTypeOracles;
|
|
255
209
|
var morphoTypeMarkets = () => getGlobalData2()?.morphoTypeMarkets;
|
|
256
210
|
var morphoTypeVaults = () => getGlobalData2()?.morphoTypeVaults;
|
|
257
|
-
var aaveReserves = () => getGlobalData2()?.aaveReserves;
|
|
258
|
-
var compoundV3Reserves = () => getGlobalData2()?.compoundV3Reserves;
|
|
259
|
-
var compoundV2Reserves = () => getGlobalData2()?.compoundV2Reserves;
|
|
260
|
-
var compoundV3Pools = () => getGlobalData2()?.compoundV3Pools;
|
|
261
|
-
var morphoPools = () => getGlobalData2()?.morphoPools;
|
|
262
|
-
var compoundV3BaseData = () => getGlobalData2()?.compoundV3BaseData;
|
|
263
|
-
var compoundV2Pools = () => getGlobalData2()?.compoundV2Pools;
|
|
264
|
-
var compoundV2Tokens = () => getGlobalData2()?.compoundV2Tokens;
|
|
265
|
-
var compoundV2TokenArray = () => getGlobalData2()?.compoundV2TokenArray;
|
|
266
|
-
var initConfig = () => getGlobalData2()?.initConfig;
|
|
267
|
-
var aaveOraclesConfig = () => getGlobalData2()?.aaveOraclesConfig;
|
|
268
|
-
var compoundV2OraclesConfig = () => getGlobalData2()?.compoundV2OraclesConfig;
|
|
269
|
-
var aaveWethGateway = () => getGlobalData2()?.aaveWethGateway;
|
|
270
211
|
var morphoBundler3 = () => getGlobalData2()?.morphoBundler3;
|
|
212
|
+
|
|
213
|
+
// src/lending/euler.ts
|
|
214
|
+
var eulerConfigs = () => getGlobalData2()?.eulerConfigs;
|
|
215
|
+
var eulerVaults = () => getGlobalData2()?.eulerVaults;
|
|
216
|
+
|
|
217
|
+
// src/lending/silo.ts
|
|
218
|
+
var siloMarkets = () => getGlobalData2()?.siloMarkets;
|
|
219
|
+
var siloPeripherals = () => getGlobalData2()?.siloPeripherals;
|
|
220
|
+
var siloMarketsV3 = () => getGlobalData2()?.siloMarketsV3;
|
|
221
|
+
var siloPeripheralsV3 = () => getGlobalData2()?.siloPeripheralsV3;
|
|
222
|
+
function siloV2LenderKey(siloConfig) {
|
|
223
|
+
if (!siloConfig || !siloConfig.startsWith("0x") || siloConfig.length !== 42) {
|
|
224
|
+
throw new Error(`siloV2LenderKey: invalid siloConfig address ${siloConfig}`);
|
|
225
|
+
}
|
|
226
|
+
return `SILO_V2_${siloConfig.slice(2).toUpperCase()}`;
|
|
227
|
+
}
|
|
228
|
+
function parseSiloV2LenderKey(lenderKey) {
|
|
229
|
+
const match = lenderKey.match(/^SILO_V2_([0-9A-F]{40})$/);
|
|
230
|
+
if (!match) return void 0;
|
|
231
|
+
return { siloConfigAddrLower: "0x" + match[1].toLowerCase() };
|
|
232
|
+
}
|
|
233
|
+
function getSiloV2MarketEntry(chainId, lenderKey) {
|
|
234
|
+
const parsed = parseSiloV2LenderKey(lenderKey);
|
|
235
|
+
if (!parsed) return void 0;
|
|
236
|
+
const list = getGlobalData2()?.siloMarkets?.[chainId];
|
|
237
|
+
if (!list) return void 0;
|
|
238
|
+
return list.find((m) => m.siloConfig.toLowerCase() === parsed.siloConfigAddrLower);
|
|
239
|
+
}
|
|
240
|
+
function siloV3LenderKey(siloConfig) {
|
|
241
|
+
if (!siloConfig || !siloConfig.startsWith("0x") || siloConfig.length !== 42) {
|
|
242
|
+
throw new Error(`siloV3LenderKey: invalid siloConfig address ${siloConfig}`);
|
|
243
|
+
}
|
|
244
|
+
return `SILO_V3_${siloConfig.slice(2).toUpperCase()}`;
|
|
245
|
+
}
|
|
246
|
+
function parseSiloV3LenderKey(lenderKey) {
|
|
247
|
+
const match = lenderKey.match(/^SILO_V3_([0-9A-F]{40})$/);
|
|
248
|
+
if (!match) return void 0;
|
|
249
|
+
return { siloConfigAddrLower: "0x" + match[1].toLowerCase() };
|
|
250
|
+
}
|
|
251
|
+
function getSiloV3MarketEntry(chainId, lenderKey) {
|
|
252
|
+
const parsed = parseSiloV3LenderKey(lenderKey);
|
|
253
|
+
if (!parsed) return void 0;
|
|
254
|
+
const list = getGlobalData2()?.siloMarketsV3?.[chainId];
|
|
255
|
+
if (!list) return void 0;
|
|
256
|
+
return list.find((m) => m.siloConfig.toLowerCase() === parsed.siloConfigAddrLower);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// src/lending/fluid.ts
|
|
260
|
+
var fluidResolvers = () => getGlobalData2()?.fluidResolvers;
|
|
261
|
+
var fluidVaults = () => getGlobalData2()?.fluidVaults;
|
|
262
|
+
var fluidChains = () => Object.keys(getGlobalData2()?.fluidResolvers ?? {});
|
|
263
|
+
var fluidVaultEntries = (chainId) => Object.entries(getGlobalData2()?.fluidVaults?.[chainId] ?? {});
|
|
264
|
+
|
|
265
|
+
// src/lending/gearbox.ts
|
|
266
|
+
var gearboxResolvers = () => getGlobalData2()?.gearboxResolvers;
|
|
267
|
+
var gearboxChains = () => Object.keys(getGlobalData2()?.gearboxResolvers?.chains ?? {});
|
|
268
|
+
var gearboxMarketCompressor = () => getGlobalData2()?.gearboxResolvers?.marketCompressorV310 || void 0;
|
|
269
|
+
var gearboxAddressProviderV310 = () => getGlobalData2()?.gearboxResolvers?.addressProviderV310 || void 0;
|
|
270
|
+
var gearboxBotListV3 = (chainId) => getGlobalData2()?.gearboxResolvers?.chains?.[chainId]?.botList || void 0;
|
|
271
|
+
var GEARBOX_ACCOUNT_COMPRESSOR_V310 = "0x4115708Fc8fe6bB392De2e0C21c2C81dA2222394";
|
|
272
|
+
var gearboxAccountCompressor = () => GEARBOX_ACCOUNT_COMPRESSOR_V310;
|
|
273
|
+
var gearboxMarketConfigurators = (chainId) => getGlobalData2()?.gearboxResolvers?.chains?.[chainId]?.marketConfigurators;
|
|
274
|
+
function gearboxV3LenderKey(creditManager) {
|
|
275
|
+
if (!creditManager || !creditManager.startsWith("0x") || creditManager.length !== 42) {
|
|
276
|
+
throw new Error(`gearboxV3LenderKey: invalid creditManager address ${creditManager}`);
|
|
277
|
+
}
|
|
278
|
+
return `GEARBOX_V3_${creditManager.slice(2).toUpperCase()}`;
|
|
279
|
+
}
|
|
280
|
+
function parseGearboxV3LenderKey(lenderKey) {
|
|
281
|
+
const match = lenderKey.match(/^GEARBOX_V3_([0-9A-F]{40})$/);
|
|
282
|
+
if (!match) return void 0;
|
|
283
|
+
return { creditManagerAddrLower: "0x" + match[1].toLowerCase() };
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
// src/lending/dolomite.ts
|
|
287
|
+
var dolomiteConfigs = () => getGlobalData2()?.dolomiteConfigs;
|
|
288
|
+
var dolomiteChains = () => Object.keys(getGlobalData2()?.dolomiteConfigs ?? {});
|
|
289
|
+
var dolomiteEmode = () => getGlobalData2()?.dolomiteEmode;
|
|
290
|
+
var dolomiteMarketIdByToken = (chainId, token) => {
|
|
291
|
+
const markets = getGlobalData2()?.dolomiteConfigs?.[chainId]?.markets;
|
|
292
|
+
if (!markets) return void 0;
|
|
293
|
+
const lower = token.toLowerCase();
|
|
294
|
+
for (const marketId in markets) {
|
|
295
|
+
if (markets[marketId]?.toLowerCase() === lower) return marketId;
|
|
296
|
+
}
|
|
297
|
+
return void 0;
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
// src/lending/initProtocol.ts
|
|
301
|
+
var initConfig = () => getGlobalData2()?.initConfig;
|
|
302
|
+
|
|
303
|
+
// src/lending/lista.ts
|
|
271
304
|
var listaNativeProvider = () => getGlobalData2()?.listaNativeProvider;
|
|
305
|
+
|
|
306
|
+
// src/lending/midnight.ts
|
|
272
307
|
var midnightConfig = () => getGlobalData2()?.midnightConfig;
|
|
273
308
|
var MIDNIGHT_API_OVERRIDE_KEY = "__1delta_midnight_api_base__";
|
|
274
309
|
var setMidnightApiBase = (url) => {
|
|
@@ -287,6 +322,8 @@ var midnightMarketById = (chainId, marketId) => {
|
|
|
287
322
|
const lower = marketId.toLowerCase();
|
|
288
323
|
return midnightMarketsByChain(chainId).find((m) => m.marketId.toLowerCase() === lower);
|
|
289
324
|
};
|
|
325
|
+
|
|
326
|
+
// src/lending/term.ts
|
|
290
327
|
var termConfig = () => getGlobalData2()?.termConfig;
|
|
291
328
|
var TERM_API_OVERRIDE_KEY = "__1delta_term_api_base__";
|
|
292
329
|
var setTermApiBase = (url) => {
|
|
@@ -305,6 +342,25 @@ var termMarketById = (chainId, termRepoId) => {
|
|
|
305
342
|
const lower = termRepoId.toLowerCase();
|
|
306
343
|
return termMarketsByChain(chainId).find((m) => m.termRepoId.toLowerCase() === lower);
|
|
307
344
|
};
|
|
345
|
+
|
|
346
|
+
// src/lending/termMax.ts
|
|
347
|
+
var termMaxConfig = () => getGlobalData2()?.termMaxConfig;
|
|
348
|
+
var termMaxConfigByChain = (chainId) => getGlobalData2()?.termMaxConfig?.[String(chainId)];
|
|
349
|
+
var termMaxChainIds = () => Object.keys(getGlobalData2()?.termMaxConfig ?? {});
|
|
350
|
+
var termMaxApiBaseUrl = (chainId) => termMaxConfigByChain(chainId)?.apiBaseUrl || "https://api.termmax.ts.finance";
|
|
351
|
+
function termMaxLenderKey(market) {
|
|
352
|
+
if (!market || !market.startsWith("0x") || market.length !== 42) {
|
|
353
|
+
throw new Error(`termMaxLenderKey: invalid market address ${market}`);
|
|
354
|
+
}
|
|
355
|
+
return `TERMMAX_${market.slice(2).toUpperCase()}`;
|
|
356
|
+
}
|
|
357
|
+
function parseTermMaxLenderKey(lenderKey) {
|
|
358
|
+
const match = lenderKey.match(/^TERMMAX_([0-9A-Fa-f]{40})$/);
|
|
359
|
+
if (!match) return void 0;
|
|
360
|
+
return { marketAddrLower: "0x" + match[1].toLowerCase() };
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
// src/lending/exactly.ts
|
|
308
364
|
var exactlyConfig = () => getGlobalData2()?.exactlyConfig;
|
|
309
365
|
var exactlyMarkets = () => getGlobalData2()?.exactlyMarkets;
|
|
310
366
|
var exactlyMarketsByChain = (chainId) => getGlobalData2()?.exactlyMarkets?.[String(chainId)] ?? [];
|
|
@@ -316,6 +372,8 @@ var exactlyMarketByAsset = (chainId, asset) => {
|
|
|
316
372
|
const lower = asset.toLowerCase();
|
|
317
373
|
return exactlyMarketsByChain(chainId).find((m) => m.asset.toLowerCase() === lower);
|
|
318
374
|
};
|
|
375
|
+
|
|
376
|
+
// src/lending/teller.ts
|
|
319
377
|
var tellerConfig = () => getGlobalData2()?.tellerConfig;
|
|
320
378
|
var tellerPools = () => getGlobalData2()?.tellerPools;
|
|
321
379
|
var tellerConfigByChain = (chainId) => getGlobalData2()?.tellerConfig?.[String(chainId)];
|
|
@@ -324,6 +382,8 @@ var tellerPoolByAddress = (chainId, pool) => {
|
|
|
324
382
|
const lower = pool.toLowerCase();
|
|
325
383
|
return tellerPoolsByChain(chainId).find((p) => p.pool.toLowerCase() === lower);
|
|
326
384
|
};
|
|
385
|
+
|
|
386
|
+
// src/lending/liquity.ts
|
|
327
387
|
var liquityConfig = () => getGlobalData2()?.liquityConfig;
|
|
328
388
|
var liquityConfigFor = (lender, chainId) => getGlobalData2()?.liquityConfig?.[lender]?.[String(chainId)];
|
|
329
389
|
var liquityMarkets = () => getGlobalData2()?.liquityMarkets;
|
|
@@ -338,15 +398,21 @@ var liquityLendersByChain = (chainId) => {
|
|
|
338
398
|
const chain = String(chainId);
|
|
339
399
|
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.collateralRegistry);
|
|
340
400
|
};
|
|
401
|
+
|
|
402
|
+
// src/lending/river.ts
|
|
341
403
|
var riverConfig = () => getGlobalData2()?.riverConfig;
|
|
342
404
|
var riverConfigFor = (lender, chainId) => getGlobalData2()?.riverConfig?.[lender]?.[String(chainId)];
|
|
343
405
|
var riverMarkets = () => getGlobalData2()?.riverMarkets;
|
|
344
406
|
var riverChainData = (lender, chainId) => getGlobalData2()?.riverMarkets?.[lender]?.[String(chainId)];
|
|
407
|
+
var riverMarketByIndex = (lender, chainId, index) => riverChainData(lender, chainId)?.markets?.find((m) => m.index === Number(index));
|
|
408
|
+
var riverLendersByChain = (chainId) => {
|
|
409
|
+
const cfg = getGlobalData2()?.riverConfig ?? {};
|
|
410
|
+
const chain = String(chainId);
|
|
411
|
+
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.xapp);
|
|
412
|
+
};
|
|
413
|
+
|
|
414
|
+
// src/lending/inverse.ts
|
|
345
415
|
var inverseConfig = () => getGlobalData2()?.inverseConfig;
|
|
346
|
-
var termMaxConfig = () => getGlobalData2()?.termMaxConfig;
|
|
347
|
-
var termMaxConfigByChain = (chainId) => getGlobalData2()?.termMaxConfig?.[String(chainId)];
|
|
348
|
-
var termMaxChainIds = () => Object.keys(getGlobalData2()?.termMaxConfig ?? {});
|
|
349
|
-
var termMaxApiBaseUrl = (chainId) => termMaxConfigByChain(chainId)?.apiBaseUrl || "https://api.termmax.ts.finance";
|
|
350
416
|
var inverseConfigFor = (lender, chainId) => getGlobalData2()?.inverseConfig?.[lender]?.[String(chainId)];
|
|
351
417
|
var inverseMarkets = () => getGlobalData2()?.inverseMarkets;
|
|
352
418
|
var inverseChainData = (lender, chainId) => getGlobalData2()?.inverseMarkets?.[lender]?.[String(chainId)];
|
|
@@ -354,17 +420,59 @@ var inverseMarketByAddress = (lender, chainId, address) => {
|
|
|
354
420
|
const lower = address.toLowerCase();
|
|
355
421
|
return inverseChainData(lender, chainId)?.markets?.find((m) => m.address.toLowerCase() === lower);
|
|
356
422
|
};
|
|
357
|
-
var riverMarketByIndex = (lender, chainId, index) => riverChainData(lender, chainId)?.markets?.find((m) => m.index === Number(index));
|
|
358
|
-
var riverLendersByChain = (chainId) => {
|
|
359
|
-
const cfg = getGlobalData2()?.riverConfig ?? {};
|
|
360
|
-
const chain = String(chainId);
|
|
361
|
-
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.xapp);
|
|
362
|
-
};
|
|
363
423
|
var inverseLendersByChain = (chainId) => {
|
|
364
424
|
const cfg = getGlobalData2()?.inverseConfig ?? {};
|
|
365
425
|
const chain = String(chainId);
|
|
366
|
-
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.dola);
|
|
426
|
+
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.dola);
|
|
427
|
+
};
|
|
428
|
+
|
|
429
|
+
// src/lending/frankencoin.ts
|
|
430
|
+
var frankencoinConfig = () => getGlobalData2()?.frankencoinConfig;
|
|
431
|
+
var frankencoinConfigFor = (lender, chainId) => getGlobalData2()?.frankencoinConfig?.[lender]?.[String(chainId)];
|
|
432
|
+
var frankencoinMarkets = () => getGlobalData2()?.frankencoinMarkets;
|
|
433
|
+
var frankencoinChainData = (lender, chainId) => getGlobalData2()?.frankencoinMarkets?.[lender]?.[String(chainId)];
|
|
434
|
+
var frankencoinMarketByPosition = (lender, chainId, position) => {
|
|
435
|
+
const lower = position.toLowerCase();
|
|
436
|
+
return frankencoinChainData(lender, chainId)?.markets?.find((m) => m.position.toLowerCase() === lower);
|
|
437
|
+
};
|
|
438
|
+
var frankencoinLendersByChain = (chainId) => {
|
|
439
|
+
const cfg = getGlobalData2()?.frankencoinConfig ?? {};
|
|
440
|
+
const chain = String(chainId);
|
|
441
|
+
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.mintingHub);
|
|
442
|
+
};
|
|
443
|
+
|
|
444
|
+
// src/lending/dss.ts
|
|
445
|
+
var usddConfig = () => getGlobalData2()?.usddConfig;
|
|
446
|
+
var usddConfigFor = (lender, chainId) => getGlobalData2()?.usddConfig?.[lender]?.[String(chainId)];
|
|
447
|
+
var usddMarkets = () => getGlobalData2()?.usddMarkets;
|
|
448
|
+
var usddChainData = (lender, chainId) => getGlobalData2()?.usddMarkets?.[lender]?.[String(chainId)];
|
|
449
|
+
var usddMarketByIlk = (lender, chainId, ilk) => usddChainData(lender, chainId)?.markets?.find((m) => m.ilk === ilk);
|
|
450
|
+
var usddLendersByChain = (chainId) => {
|
|
451
|
+
const cfg = getGlobalData2()?.usddConfig ?? {};
|
|
452
|
+
const chain = String(chainId);
|
|
453
|
+
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.vat);
|
|
454
|
+
};
|
|
455
|
+
var skyConfig = () => getGlobalData2()?.skyConfig;
|
|
456
|
+
var skyConfigFor = (lender, chainId) => getGlobalData2()?.skyConfig?.[lender]?.[String(chainId)];
|
|
457
|
+
var skyMarkets = () => getGlobalData2()?.skyMarkets;
|
|
458
|
+
var skyChainData = (lender, chainId) => getGlobalData2()?.skyMarkets?.[lender]?.[String(chainId)];
|
|
459
|
+
var skyLendersByChain = (chainId) => {
|
|
460
|
+
const cfg = getGlobalData2()?.skyConfig ?? {};
|
|
461
|
+
const chain = String(chainId);
|
|
462
|
+
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.vat);
|
|
463
|
+
};
|
|
464
|
+
var isSkyKey = (lender) => lender === "SKY" || !!lender?.startsWith("SKY_");
|
|
465
|
+
var dssConfigFor = (lender, chainId) => isSkyKey(lender) ? skyConfigFor(lender, chainId) : usddConfigFor(lender, chainId);
|
|
466
|
+
var dssChainData = (lender, chainId) => isSkyKey(lender) ? skyChainData(lender, chainId) : usddChainData(lender, chainId);
|
|
467
|
+
var dssMarketByIlk = (lender, chainId, ilk) => {
|
|
468
|
+
const norm = (s) => s.replace(/-/g, "_");
|
|
469
|
+
const want = norm(ilk);
|
|
470
|
+
return dssChainData(lender, chainId)?.markets?.find((m) => norm(m.ilk) === want);
|
|
367
471
|
};
|
|
472
|
+
var dssDebtToken = (cfg) => cfg?.debtToken ?? cfg?.usdd;
|
|
473
|
+
var dssDebtJoin = (cfg) => cfg?.debtJoin ?? cfg?.usddJoin;
|
|
474
|
+
|
|
475
|
+
// src/lending/llamalend.ts
|
|
368
476
|
var llamaLendConfig = () => getGlobalData2()?.llamaLendConfig;
|
|
369
477
|
var llamaLendConfigFor = (lender, chainId) => getGlobalData2()?.llamaLendConfig?.[lender]?.[String(chainId)];
|
|
370
478
|
var llamaLendMarkets = () => getGlobalData2()?.llamaLendMarkets;
|
|
@@ -400,48 +508,19 @@ var llamaLendSupportsLeverage = (lender, chainId, controller) => {
|
|
|
400
508
|
return Boolean(cfg?.leverageZapOdos || cfg?.leverageZap1inch);
|
|
401
509
|
};
|
|
402
510
|
var llamaLendApiBaseUrl = (lender, chainId) => llamaLendConfigFor(lender, chainId)?.apiBaseUrl || "https://api.curve.finance";
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
const
|
|
411
|
-
|
|
412
|
-
};
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
var skyChainData = (lender, chainId) => getGlobalData2()?.skyMarkets?.[lender]?.[String(chainId)];
|
|
417
|
-
var skyLendersByChain = (chainId) => {
|
|
418
|
-
const cfg = getGlobalData2()?.skyConfig ?? {};
|
|
419
|
-
const chain = String(chainId);
|
|
420
|
-
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.vat);
|
|
421
|
-
};
|
|
422
|
-
var isSkyKey = (lender) => lender === "SKY" || !!lender?.startsWith("SKY_");
|
|
423
|
-
var dssConfigFor = (lender, chainId) => isSkyKey(lender) ? skyConfigFor(lender, chainId) : usddConfigFor(lender, chainId);
|
|
424
|
-
var dssChainData = (lender, chainId) => isSkyKey(lender) ? skyChainData(lender, chainId) : usddChainData(lender, chainId);
|
|
425
|
-
var dssMarketByIlk = (lender, chainId, ilk) => {
|
|
426
|
-
const norm = (s) => s.replace(/-/g, "_");
|
|
427
|
-
const want = norm(ilk);
|
|
428
|
-
return dssChainData(lender, chainId)?.markets?.find((m) => norm(m.ilk) === want);
|
|
429
|
-
};
|
|
430
|
-
var dssDebtToken = (cfg) => cfg?.debtToken ?? cfg?.usdd;
|
|
431
|
-
var dssDebtJoin = (cfg) => cfg?.debtJoin ?? cfg?.usddJoin;
|
|
432
|
-
var frankencoinConfig = () => getGlobalData2()?.frankencoinConfig;
|
|
433
|
-
var frankencoinConfigFor = (lender, chainId) => getGlobalData2()?.frankencoinConfig?.[lender]?.[String(chainId)];
|
|
434
|
-
var frankencoinMarkets = () => getGlobalData2()?.frankencoinMarkets;
|
|
435
|
-
var frankencoinChainData = (lender, chainId) => getGlobalData2()?.frankencoinMarkets?.[lender]?.[String(chainId)];
|
|
436
|
-
var frankencoinMarketByPosition = (lender, chainId, position) => {
|
|
437
|
-
const lower = position.toLowerCase();
|
|
438
|
-
return frankencoinChainData(lender, chainId)?.markets?.find((m) => m.position.toLowerCase() === lower);
|
|
439
|
-
};
|
|
440
|
-
var frankencoinLendersByChain = (chainId) => {
|
|
441
|
-
const cfg = getGlobalData2()?.frankencoinConfig ?? {};
|
|
442
|
-
const chain = String(chainId);
|
|
443
|
-
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.mintingHub);
|
|
444
|
-
};
|
|
511
|
+
function llamaLendLenderKey(controller) {
|
|
512
|
+
if (!controller || !controller.startsWith("0x") || controller.length !== 42) {
|
|
513
|
+
throw new Error(`llamaLendLenderKey: invalid controller address ${controller}`);
|
|
514
|
+
}
|
|
515
|
+
return `LLAMALEND_${controller.slice(2).toUpperCase()}`;
|
|
516
|
+
}
|
|
517
|
+
function parseLlamaLendLenderKey(lenderKey) {
|
|
518
|
+
const match = lenderKey.match(/^LLAMALEND_([0-9A-Fa-f]{40})$/);
|
|
519
|
+
if (!match) return void 0;
|
|
520
|
+
return { controllerAddrLower: "0x" + match[1].toLowerCase() };
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
// src/lending/resupply.ts
|
|
445
524
|
var RESUPPLY_ETHEREUM_CONFIG = {
|
|
446
525
|
registry: "0x10101010E0C3171D894B71B3400668aF311e7D94",
|
|
447
526
|
reusd: "0x57aB1E0003F623289CD798B1824Be09a793e4Bec",
|
|
@@ -454,6 +533,18 @@ var RESUPPLY_ETHEREUM_CONFIG = {
|
|
|
454
533
|
insurancePool: "0x00000000efe883b3304aFf71eaCf72Dbc3e1b577",
|
|
455
534
|
sreusd: "0x557AB1e003951A73c12D16F0fEA8490E39C33C35",
|
|
456
535
|
priceWatcher: "0xAaaa0013e2ec451F76816d1e0a02ABA596dd9251",
|
|
536
|
+
/**
|
|
537
|
+
* reUSD's own USD price feed — `PriceWatcher.oracle()`, read on-chain
|
|
538
|
+
* 2026-08-08. Its `price()` returns an 18-decimal USD price (0.98983 at
|
|
539
|
+
* the read), and it is the number the protocol itself watches to drive the
|
|
540
|
+
* off-peg amplifier in the borrow rate.
|
|
541
|
+
*
|
|
542
|
+
* Held as config rather than hopped through the PriceWatcher on every
|
|
543
|
+
* refresh (the Inverse `oracle` precedent). Governance-mutable in
|
|
544
|
+
* principle, so re-read `PriceWatcher.oracle()` if reUSD prices ever look
|
|
545
|
+
* frozen.
|
|
546
|
+
*/
|
|
547
|
+
reusdOracle: "0x07Ac1E016D4335FB833666ed5C43846162d2B7e8",
|
|
457
548
|
debtDecimals: 18
|
|
458
549
|
};
|
|
459
550
|
var RESUPPLY_BUILTIN = {
|
|
@@ -477,6 +568,8 @@ var resupplyLendersByChain = (chainId) => {
|
|
|
477
568
|
}
|
|
478
569
|
return [...keys];
|
|
479
570
|
};
|
|
571
|
+
|
|
572
|
+
// src/lending/curvance.ts
|
|
480
573
|
var CURVANCE_MONAD_CONFIG = {
|
|
481
574
|
centralRegistry: "0x1310f352f1389969Ece6741671c4B919523912fF",
|
|
482
575
|
oracleManager: "0x65ADF8aE8420A58278De066593E6fF1713A137c5",
|
|
@@ -495,11 +588,17 @@ var CURVANCE_MONAD_CONFIG = {
|
|
|
495
588
|
},
|
|
496
589
|
positionManagers: {
|
|
497
590
|
// muBOND | AUSD
|
|
498
|
-
"0x830D40CDFdc494BC1A2729a7381bfCe44326c944": {
|
|
591
|
+
"0x830D40CDFdc494BC1A2729a7381bfCe44326c944": {
|
|
592
|
+
simplePositionManager: "0xA3d212D4705caf42C35d6EaE0C85E94c4cd329E4"
|
|
593
|
+
},
|
|
499
594
|
// loAZND | AUSD
|
|
500
|
-
"0x7C822B093A116654F824Ec2A35CD23a3749E4f90": {
|
|
595
|
+
"0x7C822B093A116654F824Ec2A35CD23a3749E4f90": {
|
|
596
|
+
simplePositionManager: "0x9e4638fd67bE15360bfebC5e07AECfF33dfda917"
|
|
597
|
+
},
|
|
501
598
|
// ezETH | WETH
|
|
502
|
-
"0x83840d837E7A3E00bBb0B8501E60E989A8987c37": {
|
|
599
|
+
"0x83840d837E7A3E00bBb0B8501E60E989A8987c37": {
|
|
600
|
+
simplePositionManager: "0xd8d3E46E52C3AB8FD98D04143984C763B4Bbc584"
|
|
601
|
+
},
|
|
503
602
|
// shMON | WMON
|
|
504
603
|
"0xE1C24B2E93230FBe33d32Ba38ECA3218284143e2": {
|
|
505
604
|
nativeVaultPositionManager: "0x2fAA792502aC5a329DcCc1580C5308fCc0a772fe",
|
|
@@ -511,38 +610,66 @@ var CURVANCE_MONAD_CONFIG = {
|
|
|
511
610
|
simplePositionManager: "0x669786FF3da7544c98FE74eE1006D787118d1770"
|
|
512
611
|
},
|
|
513
612
|
// sMON | WMON
|
|
514
|
-
"0xe5970cDB1916B2cCF6185C86C174EEE2d330D05B": {
|
|
613
|
+
"0xe5970cDB1916B2cCF6185C86C174EEE2d330D05B": {
|
|
614
|
+
simplePositionManager: "0x3d6ba6C90E1738cb01C46E72F284C7Bd57eB11EC"
|
|
615
|
+
},
|
|
515
616
|
// sAUSD | AUSD
|
|
516
617
|
"0xBBE7A3c45aDBb16F6490767b663428c34aA341Eb": {
|
|
517
618
|
simplePositionManager: "0x491e8712885E4e0b98864F13393ced8c1a61FD57",
|
|
518
619
|
vaultPositionManager: "0xe94AC990873C3B59A417d25C1ec1398807FB41A1"
|
|
519
620
|
},
|
|
520
621
|
// earnAUSD | AUSD
|
|
521
|
-
"0xd6365555f6a697C7C295bA741100AA644cE28545": {
|
|
622
|
+
"0xd6365555f6a697C7C295bA741100AA644cE28545": {
|
|
623
|
+
simplePositionManager: "0xd807efC94376618B4d9CE6eAaf89607006d3B881"
|
|
624
|
+
},
|
|
522
625
|
// WMON | AUSD
|
|
523
|
-
"0x05e70717fA8BD0F21a9F826d093d99f6Da4f1554": {
|
|
626
|
+
"0x05e70717fA8BD0F21a9F826d093d99f6Da4f1554": {
|
|
627
|
+
simplePositionManager: "0x2619BB5Acfe51317c4C36a63578FD56148e68C74"
|
|
628
|
+
},
|
|
524
629
|
// WMON | USDC
|
|
525
|
-
"0xa6A2A92F126b79Ee0804845ee6B52899b4491093": {
|
|
630
|
+
"0xa6A2A92F126b79Ee0804845ee6B52899b4491093": {
|
|
631
|
+
simplePositionManager: "0x960c49E523e6A87282D2bC5032d0AeCb35Dc20ef"
|
|
632
|
+
},
|
|
526
633
|
// WBTC | USDC
|
|
527
|
-
"0x01C4a0d396EFE982B1B103BE9910321d34e1aEA9": {
|
|
634
|
+
"0x01C4a0d396EFE982B1B103BE9910321d34e1aEA9": {
|
|
635
|
+
simplePositionManager: "0x8cA51d155C07e91B206Cf11C8D52d5aB082657F6"
|
|
636
|
+
},
|
|
528
637
|
// WETH | USDC
|
|
529
|
-
"0xb3E9E0134354cc91b7FB9F9d6C3ab0dE7854BB49": {
|
|
638
|
+
"0xb3E9E0134354cc91b7FB9F9d6C3ab0dE7854BB49": {
|
|
639
|
+
simplePositionManager: "0x3A1B2Dc11a81Fe106eC667BaB4056fC72498ff73"
|
|
640
|
+
},
|
|
530
641
|
// gMON | WMON
|
|
531
|
-
"0xb00aFF53a4Df2b4E2f97a3d9ffaDb55564C8E42F": {
|
|
642
|
+
"0xb00aFF53a4Df2b4E2f97a3d9ffaDb55564C8E42F": {
|
|
643
|
+
simplePositionManager: "0x77B90040E6dFE8A62293Cd91CAeE35296EC266Ee"
|
|
644
|
+
},
|
|
532
645
|
// syzUSD | AUSD
|
|
533
|
-
"0x90fc1A4abC4ee5f8a9560dE069067D9606d2909C": {
|
|
646
|
+
"0x90fc1A4abC4ee5f8a9560dE069067D9606d2909C": {
|
|
647
|
+
simplePositionManager: "0x9352318f75e8Cb7C47C5B086D56d3e6D761b7419"
|
|
648
|
+
},
|
|
534
649
|
// wsrUSD | AUSD
|
|
535
|
-
"0x627a15859d09C1550e2934991AA95aFc6896e3Ef": {
|
|
650
|
+
"0x627a15859d09C1550e2934991AA95aFc6896e3Ef": {
|
|
651
|
+
simplePositionManager: "0xF8613b7b4e8bFb5E7155fb4D3bc9f9B93d895C31"
|
|
652
|
+
},
|
|
536
653
|
// YZM | AUSD
|
|
537
|
-
"0x4409e2161B6f9A25ACbC471a37390654Ed272249": {
|
|
654
|
+
"0x4409e2161B6f9A25ACbC471a37390654Ed272249": {
|
|
655
|
+
simplePositionManager: "0xb85dEf309F7eEEb8f581909c7afB623dDf59AdD9"
|
|
656
|
+
},
|
|
538
657
|
// vUSD | AUSD
|
|
539
|
-
"0x2DB9AB1bB00d7000b21A2EbcE7D1a9b91F351E72": {
|
|
658
|
+
"0x2DB9AB1bB00d7000b21A2EbcE7D1a9b91F351E72": {
|
|
659
|
+
simplePositionManager: "0xCb1709fAF66A73b4f6026b531Bef9AF971368f50"
|
|
660
|
+
},
|
|
540
661
|
// eBTC | WBTC
|
|
541
|
-
"0xBc4cd7bbd8d38027A88838B88BA04561FA778C35": {
|
|
662
|
+
"0xBc4cd7bbd8d38027A88838B88BA04561FA778C35": {
|
|
663
|
+
simplePositionManager: "0x5e339724818c4b46E1Bc6966FeB4ea2924Ca17D9"
|
|
664
|
+
},
|
|
542
665
|
// savUSD | USDC
|
|
543
|
-
"0x38104e87Eb96ce5ef1C23a06878dB0D657B4a699": {
|
|
666
|
+
"0x38104e87Eb96ce5ef1C23a06878dB0D657B4a699": {
|
|
667
|
+
simplePositionManager: "0x7B918FF5EDc44B29ced4d3dc52Fb8b859025325c"
|
|
668
|
+
},
|
|
544
669
|
// savUSD | AUSD
|
|
545
|
-
"0x4B0a39eCC3e5A5dA3ce6D492D4D255cD1F0209F7": {
|
|
670
|
+
"0x4B0a39eCC3e5A5dA3ce6D492D4D255cD1F0209F7": {
|
|
671
|
+
simplePositionManager: "0xb8F6f480E645dBa96Df9eD3948D900725bA9e9Ec"
|
|
672
|
+
}
|
|
546
673
|
}
|
|
547
674
|
};
|
|
548
675
|
var CURVANCE_BUILTIN = {
|
|
@@ -583,158 +710,123 @@ var curvancePositionManager = (lender, chainId, marketManager, kind) => {
|
|
|
583
710
|
if (kind) return pms[kind];
|
|
584
711
|
return pms.simplePositionManager ?? pms.vaultPositionManager ?? pms.nativeVaultPositionManager ?? pms.pendlePtPositionManager;
|
|
585
712
|
};
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
var
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
713
|
+
|
|
714
|
+
// src/lending/fraxlend.ts
|
|
715
|
+
var FRAXLEND_ETHEREUM_CONFIG = {
|
|
716
|
+
deployer: "0xD6E9D27C75Afd88ad24Cd5EdccdC76fd2fc3A751",
|
|
717
|
+
/**
|
|
718
|
+
* `0xA49fD918…` — approved on exactly 3 of the 71 pairs (the 95 % LTV
|
|
719
|
+
* yield-bearing-stablecoin carry markets, flagged below). It is NOT an
|
|
720
|
+
* aggregator router: on those pairs the collateral is an ERC-4626 over the
|
|
721
|
+
* pair's own asset, so the "swap" is a vault deposit and `path` is just
|
|
722
|
+
* `[asset, collateral]`.
|
|
723
|
+
*
|
|
724
|
+
* The legacy 2022 grants (`0xc14d5506…` = FraxswapRouterV2, `0x1c6ca5de…`)
|
|
725
|
+
* sit only on dead FraxlendV1 pairs and are deliberately not carried here.
|
|
726
|
+
*/
|
|
727
|
+
leverageSwapper: "0xA49fD918238b1a7003659138Fb91f194306B595b",
|
|
728
|
+
pairs: [
|
|
729
|
+
// --- the book: 62 % of supply, 69 % of borrows, and NO swapper ---
|
|
730
|
+
{
|
|
731
|
+
address: "0xaB3cb84c310186B2Fa4B4503624A5D90b5DcB22D",
|
|
732
|
+
symbol: "ffrxUSD(sfrxETH)-58",
|
|
733
|
+
label: "frxUSD / sfrxETH"
|
|
734
|
+
},
|
|
735
|
+
{
|
|
736
|
+
address: "0x78bB3aEC3d855431bd9289fD98dA13F9ebB7ef15",
|
|
737
|
+
symbol: "fFRAX(sfrxETH)-16",
|
|
738
|
+
label: "FRAX / sfrxETH"
|
|
739
|
+
},
|
|
740
|
+
// --- LEVERAGE-ENABLED (swapper approved at curation; still probe live) ---
|
|
741
|
+
{
|
|
742
|
+
address: "0xC045A53936D793839BFCA146058976ef4285161E",
|
|
743
|
+
symbol: "ffrxUSD(sfrxUSD)-69",
|
|
744
|
+
label: "frxUSD / sfrxUSD"
|
|
745
|
+
},
|
|
746
|
+
{
|
|
747
|
+
address: "0x28Cdf6Ce79702AAeFbF217cF98cbD11f5639B9f1",
|
|
748
|
+
symbol: "ffrxUSD(sUSDe)-59",
|
|
749
|
+
label: "frxUSD / sUSDe"
|
|
750
|
+
},
|
|
751
|
+
{
|
|
752
|
+
address: "0x8087346b8865e5B0bF9F8A49742c2D83f6a50a6c",
|
|
753
|
+
symbol: "ffrxUSD(scrvUSD)-61",
|
|
754
|
+
label: "frxUSD / scrvUSD"
|
|
755
|
+
},
|
|
756
|
+
// --- the rest of the listed set ---
|
|
757
|
+
{
|
|
758
|
+
address: "0x470c677AF6CCE089ac38245332BfA03b22b4caeD",
|
|
759
|
+
symbol: "ffrxUSD(WFRAX)-68",
|
|
760
|
+
label: "frxUSD / WFRAX"
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
// A Frax BOND collateral with a real maturity, and it sits at ~100 %
|
|
764
|
+
// utilization — withdrawals will revert on liquidity, which is a
|
|
765
|
+
// supply-side UX problem, not a config error.
|
|
766
|
+
address: "0x1c0C222989a37247D974937782cebc8bF4f25733",
|
|
767
|
+
symbol: "fFRAX(FXB_20261231)-24",
|
|
768
|
+
label: "FRAX / FXB Dec-2026"
|
|
769
|
+
},
|
|
770
|
+
{
|
|
771
|
+
address: "0x8E5f09de0cD7841239410F929A905E214443d9E0",
|
|
772
|
+
symbol: "ffrxUSD(WBTC)-62",
|
|
773
|
+
label: "frxUSD / WBTC"
|
|
774
|
+
},
|
|
775
|
+
{
|
|
776
|
+
address: "0xb5a46f712F03808aE5c4B885C6F598fA06442684",
|
|
777
|
+
symbol: "fFRAX(wstETH)-28",
|
|
778
|
+
label: "FRAX / wstETH"
|
|
779
|
+
},
|
|
780
|
+
{
|
|
781
|
+
address: "0xc6CadA314389430d396C7b0C70c6281e99ca7fe8",
|
|
782
|
+
symbol: "fFRAX(UNI)-19",
|
|
783
|
+
label: "FRAX / UNI"
|
|
784
|
+
},
|
|
785
|
+
{
|
|
786
|
+
address: "0xb5Ae5b75C0DF5632c572A657109375646Ce66f90",
|
|
787
|
+
symbol: "fFRAX(sUSDe)-31",
|
|
788
|
+
label: "FRAX / sUSDe"
|
|
789
|
+
},
|
|
790
|
+
{
|
|
791
|
+
address: "0xA201E7bBb7Ca60ab88514d12dD91fC6748E6D050",
|
|
792
|
+
symbol: "ffrxUSD(srRoyUSDC)-70",
|
|
793
|
+
label: "frxUSD / srRoyUSDC"
|
|
794
|
+
},
|
|
795
|
+
{
|
|
796
|
+
address: "0x7093F6141293F7C4F67E5efD922aC934402E452d",
|
|
797
|
+
symbol: "fFRAX(LINK)-27",
|
|
798
|
+
label: "FRAX / LINK"
|
|
799
|
+
}
|
|
800
|
+
]
|
|
600
801
|
};
|
|
601
|
-
var
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
var
|
|
605
|
-
var
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
var
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
var GEARBOX_ACCOUNT_COMPRESSOR_V310 = "0x4115708Fc8fe6bB392De2e0C21c2C81dA2222394";
|
|
617
|
-
var gearboxAccountCompressor = () => GEARBOX_ACCOUNT_COMPRESSOR_V310;
|
|
618
|
-
var gearboxMarketConfigurators = (chainId) => getGlobalData2()?.gearboxResolvers?.chains?.[chainId]?.marketConfigurators;
|
|
619
|
-
var fluidVaultEntries = (chainId) => Object.entries(getGlobalData2()?.fluidVaults?.[chainId] ?? {});
|
|
620
|
-
function getAaveV4SpokeEntry(chainId, lenderKey) {
|
|
621
|
-
const parsed = parseAaveV4SpokeLenderKey(lenderKey);
|
|
622
|
-
if (!parsed) return void 0;
|
|
623
|
-
return getGlobalData2()?.aaveV4Spokes?.[chainId]?.[parsed.spokeAddrLower];
|
|
624
|
-
}
|
|
625
|
-
function getAaveV4GatewayAddresses(chainId, lender, hubOverride) {
|
|
626
|
-
const c = getGlobalData2()?.aaveV4Peripherals?.[chainId];
|
|
627
|
-
if (!c) return {};
|
|
628
|
-
let hubAddr = hubOverride?.toLowerCase();
|
|
629
|
-
if (!hubAddr) {
|
|
630
|
-
const spokeEntry = getAaveV4SpokeEntry(chainId, lender);
|
|
631
|
-
hubAddr = spokeEntry?.reserves?.[0]?.hub?.toLowerCase();
|
|
632
|
-
}
|
|
633
|
-
const perHub = hubAddr && c.perHub?.[hubAddr] || void 0;
|
|
634
|
-
return {
|
|
635
|
-
nativeGateway: perHub?.nativeGateway ?? c.nativeGateway,
|
|
636
|
-
signatureGateway: perHub?.signatureGateway ?? c.signatureGateway
|
|
637
|
-
};
|
|
638
|
-
}
|
|
639
|
-
function getAaveV4SpokePeripherals(chainId, lenderKey) {
|
|
640
|
-
const parsed = parseAaveV4SpokeLenderKey(lenderKey);
|
|
641
|
-
if (!parsed) return void 0;
|
|
642
|
-
return getGlobalData2()?.aaveV4Peripherals?.[chainId]?.perSpoke?.[parsed.spokeAddrLower];
|
|
643
|
-
}
|
|
644
|
-
function getAaveV4PositionManagers(chainId, lenderKey) {
|
|
645
|
-
const meta = getAaveV4SpokePeripherals(chainId, lenderKey);
|
|
646
|
-
if (!meta?.positionManagers) return [];
|
|
647
|
-
return meta.positionManagers.filter((pm) => pm.active !== false && pm.address).map((pm) => pm.address.toLowerCase());
|
|
648
|
-
}
|
|
649
|
-
function findAaveV4PositionManager(chainId, lenderKey, nameQuery) {
|
|
650
|
-
const meta = getAaveV4SpokePeripherals(chainId, lenderKey);
|
|
651
|
-
if (!meta?.positionManagers) return void 0;
|
|
652
|
-
const q = nameQuery.toLowerCase();
|
|
653
|
-
const hit = meta.positionManagers.find(
|
|
654
|
-
(pm) => pm.active !== false && pm.address && (pm.name ?? "").toLowerCase().includes(q)
|
|
655
|
-
);
|
|
656
|
-
return hit?.address?.toLowerCase();
|
|
657
|
-
}
|
|
658
|
-
function aaveV4SpokeLenderKey(spoke) {
|
|
659
|
-
if (!spoke || !spoke.startsWith("0x") || spoke.length !== 42) {
|
|
660
|
-
throw new Error(`aaveV4SpokeLenderKey: invalid spoke address ${spoke}`);
|
|
661
|
-
}
|
|
662
|
-
return `AAVE_V4_${spoke.slice(2).toUpperCase()}`;
|
|
663
|
-
}
|
|
664
|
-
function parseAaveV4SpokeLenderKey(lenderKey) {
|
|
665
|
-
const match = lenderKey.match(/^AAVE_V4_([0-9A-F]{40})$/);
|
|
666
|
-
if (!match) return void 0;
|
|
667
|
-
return { spokeAddrLower: "0x" + match[1].toLowerCase() };
|
|
668
|
-
}
|
|
669
|
-
function siloV2LenderKey(siloConfig) {
|
|
670
|
-
if (!siloConfig || !siloConfig.startsWith("0x") || siloConfig.length !== 42) {
|
|
671
|
-
throw new Error(`siloV2LenderKey: invalid siloConfig address ${siloConfig}`);
|
|
672
|
-
}
|
|
673
|
-
return `SILO_V2_${siloConfig.slice(2).toUpperCase()}`;
|
|
674
|
-
}
|
|
675
|
-
function parseSiloV2LenderKey(lenderKey) {
|
|
676
|
-
const match = lenderKey.match(/^SILO_V2_([0-9A-F]{40})$/);
|
|
677
|
-
if (!match) return void 0;
|
|
678
|
-
return { siloConfigAddrLower: "0x" + match[1].toLowerCase() };
|
|
679
|
-
}
|
|
680
|
-
function getSiloV2MarketEntry(chainId, lenderKey) {
|
|
681
|
-
const parsed = parseSiloV2LenderKey(lenderKey);
|
|
682
|
-
if (!parsed) return void 0;
|
|
683
|
-
const list = getGlobalData2()?.siloMarkets?.[chainId];
|
|
684
|
-
if (!list) return void 0;
|
|
685
|
-
return list.find((m) => m.siloConfig.toLowerCase() === parsed.siloConfigAddrLower);
|
|
686
|
-
}
|
|
687
|
-
function siloV3LenderKey(siloConfig) {
|
|
688
|
-
if (!siloConfig || !siloConfig.startsWith("0x") || siloConfig.length !== 42) {
|
|
689
|
-
throw new Error(`siloV3LenderKey: invalid siloConfig address ${siloConfig}`);
|
|
690
|
-
}
|
|
691
|
-
return `SILO_V3_${siloConfig.slice(2).toUpperCase()}`;
|
|
692
|
-
}
|
|
693
|
-
function parseSiloV3LenderKey(lenderKey) {
|
|
694
|
-
const match = lenderKey.match(/^SILO_V3_([0-9A-F]{40})$/);
|
|
695
|
-
if (!match) return void 0;
|
|
696
|
-
return { siloConfigAddrLower: "0x" + match[1].toLowerCase() };
|
|
697
|
-
}
|
|
698
|
-
function getSiloV3MarketEntry(chainId, lenderKey) {
|
|
699
|
-
const parsed = parseSiloV3LenderKey(lenderKey);
|
|
700
|
-
if (!parsed) return void 0;
|
|
701
|
-
const list = getGlobalData2()?.siloMarketsV3?.[chainId];
|
|
702
|
-
if (!list) return void 0;
|
|
703
|
-
return list.find((m) => m.siloConfig.toLowerCase() === parsed.siloConfigAddrLower);
|
|
704
|
-
}
|
|
705
|
-
function gearboxV3LenderKey(creditManager) {
|
|
706
|
-
if (!creditManager || !creditManager.startsWith("0x") || creditManager.length !== 42) {
|
|
707
|
-
throw new Error(`gearboxV3LenderKey: invalid creditManager address ${creditManager}`);
|
|
708
|
-
}
|
|
709
|
-
return `GEARBOX_V3_${creditManager.slice(2).toUpperCase()}`;
|
|
710
|
-
}
|
|
711
|
-
function parseGearboxV3LenderKey(lenderKey) {
|
|
712
|
-
const match = lenderKey.match(/^GEARBOX_V3_([0-9A-F]{40})$/);
|
|
713
|
-
if (!match) return void 0;
|
|
714
|
-
return { creditManagerAddrLower: "0x" + match[1].toLowerCase() };
|
|
715
|
-
}
|
|
716
|
-
function termMaxLenderKey(market) {
|
|
717
|
-
if (!market || !market.startsWith("0x") || market.length !== 42) {
|
|
718
|
-
throw new Error(`termMaxLenderKey: invalid market address ${market}`);
|
|
802
|
+
var FRAXLEND_BUILTIN = {
|
|
803
|
+
FRAXLEND: { "1": FRAXLEND_ETHEREUM_CONFIG }
|
|
804
|
+
};
|
|
805
|
+
var fraxlendConfig = () => getGlobalData2()?.fraxlendConfig;
|
|
806
|
+
var fraxlendConfigFor = (lender, chainId) => {
|
|
807
|
+
const published = getGlobalData2()?.fraxlendConfig?.[lender]?.[String(chainId)];
|
|
808
|
+
if (published?.pairs?.length) return published;
|
|
809
|
+
return FRAXLEND_BUILTIN[lender]?.[String(chainId)];
|
|
810
|
+
};
|
|
811
|
+
var fraxlendLendersByChain = (chainId) => {
|
|
812
|
+
const chain = String(chainId);
|
|
813
|
+
const cfg = getGlobalData2()?.fraxlendConfig ?? {};
|
|
814
|
+
const keys = /* @__PURE__ */ new Set();
|
|
815
|
+
for (const lender of Object.keys(cfg)) {
|
|
816
|
+
if (cfg[lender]?.[chain]?.pairs?.length) keys.add(lender);
|
|
719
817
|
}
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
function parseTermMaxLenderKey(lenderKey) {
|
|
723
|
-
const match = lenderKey.match(/^TERMMAX_([0-9A-Fa-f]{40})$/);
|
|
724
|
-
if (!match) return void 0;
|
|
725
|
-
return { marketAddrLower: "0x" + match[1].toLowerCase() };
|
|
726
|
-
}
|
|
727
|
-
function llamaLendLenderKey(controller) {
|
|
728
|
-
if (!controller || !controller.startsWith("0x") || controller.length !== 42) {
|
|
729
|
-
throw new Error(`llamaLendLenderKey: invalid controller address ${controller}`);
|
|
818
|
+
for (const lender of Object.keys(FRAXLEND_BUILTIN)) {
|
|
819
|
+
if (FRAXLEND_BUILTIN[lender]?.[chain]?.pairs?.length) keys.add(lender);
|
|
730
820
|
}
|
|
731
|
-
return
|
|
732
|
-
}
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
821
|
+
return [...keys];
|
|
822
|
+
};
|
|
823
|
+
var fraxlendPairsFor = (lender, chainId) => fraxlendConfigFor(lender, chainId)?.pairs ?? [];
|
|
824
|
+
var fraxlendPairKey = (chainId, pair) => `FRAXLEND_${String(chainId)}_${pair.toLowerCase()}`;
|
|
825
|
+
var parseFraxlendPairKey = (lender) => {
|
|
826
|
+
const m = /^FRAXLEND_(\d+)_(0x[0-9a-fA-F]{40})$/.exec(lender);
|
|
827
|
+
if (!m) return void 0;
|
|
828
|
+
return { chainId: m[1], pair: m[2].toLowerCase() };
|
|
829
|
+
};
|
|
738
830
|
|
|
739
831
|
// src/tokens.ts
|
|
740
832
|
var getListUrl = (chainId) => `https://raw.githubusercontent.com/1delta-DAO/token-lists/main/${chainId}.json`;
|
|
@@ -768,6 +860,7 @@ async function fetchMainTokensMap() {
|
|
|
768
860
|
}
|
|
769
861
|
|
|
770
862
|
exports.CURVANCE_MONAD_CONFIG = CURVANCE_MONAD_CONFIG;
|
|
863
|
+
exports.FRAXLEND_ETHEREUM_CONFIG = FRAXLEND_ETHEREUM_CONFIG;
|
|
771
864
|
exports.GEARBOX_ACCOUNT_COMPRESSOR_V310 = GEARBOX_ACCOUNT_COMPRESSOR_V310;
|
|
772
865
|
exports.RESUPPLY_ETHEREUM_CONFIG = RESUPPLY_ETHEREUM_CONFIG;
|
|
773
866
|
exports.aaveOracles = aaveOracles;
|
|
@@ -829,6 +922,11 @@ exports.frankencoinConfigFor = frankencoinConfigFor;
|
|
|
829
922
|
exports.frankencoinLendersByChain = frankencoinLendersByChain;
|
|
830
923
|
exports.frankencoinMarketByPosition = frankencoinMarketByPosition;
|
|
831
924
|
exports.frankencoinMarkets = frankencoinMarkets;
|
|
925
|
+
exports.fraxlendConfig = fraxlendConfig;
|
|
926
|
+
exports.fraxlendConfigFor = fraxlendConfigFor;
|
|
927
|
+
exports.fraxlendLendersByChain = fraxlendLendersByChain;
|
|
928
|
+
exports.fraxlendPairKey = fraxlendPairKey;
|
|
929
|
+
exports.fraxlendPairsFor = fraxlendPairsFor;
|
|
832
930
|
exports.gearboxAccountCompressor = gearboxAccountCompressor;
|
|
833
931
|
exports.gearboxAddressProviderV310 = gearboxAddressProviderV310;
|
|
834
932
|
exports.gearboxBotListV3 = gearboxBotListV3;
|
|
@@ -885,6 +983,7 @@ exports.morphoTypeMarkets = morphoTypeMarkets;
|
|
|
885
983
|
exports.morphoTypeOracles = morphoTypeOracles;
|
|
886
984
|
exports.morphoTypeVaults = morphoTypeVaults;
|
|
887
985
|
exports.parseAaveV4SpokeLenderKey = parseAaveV4SpokeLenderKey;
|
|
986
|
+
exports.parseFraxlendPairKey = parseFraxlendPairKey;
|
|
888
987
|
exports.parseGearboxV3LenderKey = parseGearboxV3LenderKey;
|
|
889
988
|
exports.parseLlamaLendLenderKey = parseLlamaLendLenderKey;
|
|
890
989
|
exports.parseSiloV2LenderKey = parseSiloV2LenderKey;
|