@1delta/data-sdk 0.0.19 → 0.0.21
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/index.js +74 -2
- package/dist/index.mjs +65 -3
- package/dist/lending.d.ts +172 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -38,7 +38,10 @@ globalThis[GLOBAL_LENDER_DATA_KEY] = {
|
|
|
38
38
|
listaNativeProvider: {},
|
|
39
39
|
compoundV3Bulker: {},
|
|
40
40
|
eulerConfigs: {},
|
|
41
|
-
eulerVaults: {}
|
|
41
|
+
eulerVaults: {},
|
|
42
|
+
aaveV4Spokes: {},
|
|
43
|
+
aaveV4Oracles: {},
|
|
44
|
+
aaveV4Peripherals: {}
|
|
42
45
|
};
|
|
43
46
|
function getGlobalData2() {
|
|
44
47
|
return globalThis[GLOBAL_LENDER_DATA_KEY];
|
|
@@ -68,7 +71,10 @@ function initializeLenderData({
|
|
|
68
71
|
listaNativeProviderOverride,
|
|
69
72
|
compoundV3BulkerOverride,
|
|
70
73
|
eulerConfigsOverride,
|
|
71
|
-
eulerVaultsOverride
|
|
74
|
+
eulerVaultsOverride,
|
|
75
|
+
aaveV4SpokesOverride,
|
|
76
|
+
aaveV4OraclesOverride,
|
|
77
|
+
aaveV4PeripheralsOverride
|
|
72
78
|
}) {
|
|
73
79
|
const data = getGlobalData2();
|
|
74
80
|
if (aaveTokensOverride) data.aaveTokens = aaveTokensOverride;
|
|
@@ -96,6 +102,10 @@ function initializeLenderData({
|
|
|
96
102
|
if (compoundV3BulkerOverride) data.compoundV3Bulker = compoundV3BulkerOverride;
|
|
97
103
|
if (eulerConfigsOverride) data.eulerConfigs = eulerConfigsOverride;
|
|
98
104
|
if (eulerVaultsOverride) data.eulerVaults = eulerVaultsOverride;
|
|
105
|
+
if (aaveV4SpokesOverride) data.aaveV4Spokes = aaveV4SpokesOverride;
|
|
106
|
+
if (aaveV4OraclesOverride) data.aaveV4Oracles = aaveV4OraclesOverride;
|
|
107
|
+
if (aaveV4PeripheralsOverride)
|
|
108
|
+
data.aaveV4Peripherals = aaveV4PeripheralsOverride;
|
|
99
109
|
}
|
|
100
110
|
var aaveTokens = () => getGlobalData2()?.aaveTokens;
|
|
101
111
|
var aavePools = () => getGlobalData2()?.aavePools;
|
|
@@ -122,6 +132,58 @@ var listaNativeProvider = () => getGlobalData2()?.listaNativeProvider;
|
|
|
122
132
|
var compoundV3Bulker = () => getGlobalData2()?.compoundV3Bulker;
|
|
123
133
|
var eulerConfigs = () => getGlobalData2()?.eulerConfigs;
|
|
124
134
|
var eulerVaults = () => getGlobalData2()?.eulerVaults;
|
|
135
|
+
var aaveV4Spokes = () => getGlobalData2()?.aaveV4Spokes;
|
|
136
|
+
var aaveV4Oracles = () => getGlobalData2()?.aaveV4Oracles;
|
|
137
|
+
var aaveV4Peripherals = () => getGlobalData2()?.aaveV4Peripherals;
|
|
138
|
+
function getAaveV4SpokeEntry(chainId, lenderKey) {
|
|
139
|
+
const parsed = parseAaveV4SpokeLenderKey(lenderKey);
|
|
140
|
+
if (!parsed) return void 0;
|
|
141
|
+
return getGlobalData2()?.aaveV4Spokes?.[chainId]?.[parsed.spokeAddrLower];
|
|
142
|
+
}
|
|
143
|
+
function getAaveV4GatewayAddresses(chainId, lender, hubOverride) {
|
|
144
|
+
const c = getGlobalData2()?.aaveV4Peripherals?.[chainId];
|
|
145
|
+
if (!c) return {};
|
|
146
|
+
let hubAddr = hubOverride?.toLowerCase();
|
|
147
|
+
if (!hubAddr) {
|
|
148
|
+
const spokeEntry = getAaveV4SpokeEntry(chainId, lender);
|
|
149
|
+
hubAddr = spokeEntry?.reserves?.[0]?.hub?.toLowerCase();
|
|
150
|
+
}
|
|
151
|
+
const perHub = hubAddr && c.perHub?.[hubAddr] || void 0;
|
|
152
|
+
return {
|
|
153
|
+
nativeGateway: perHub?.nativeGateway ?? c.nativeGateway,
|
|
154
|
+
signatureGateway: perHub?.signatureGateway ?? c.signatureGateway
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
function getAaveV4SpokePeripherals(chainId, lenderKey) {
|
|
158
|
+
const parsed = parseAaveV4SpokeLenderKey(lenderKey);
|
|
159
|
+
if (!parsed) return void 0;
|
|
160
|
+
return getGlobalData2()?.aaveV4Peripherals?.[chainId]?.perSpoke?.[parsed.spokeAddrLower];
|
|
161
|
+
}
|
|
162
|
+
function getAaveV4PositionManagers(chainId, lenderKey) {
|
|
163
|
+
const meta = getAaveV4SpokePeripherals(chainId, lenderKey);
|
|
164
|
+
if (!meta?.positionManagers) return [];
|
|
165
|
+
return meta.positionManagers.filter((pm) => pm.active !== false && pm.address).map((pm) => pm.address.toLowerCase());
|
|
166
|
+
}
|
|
167
|
+
function findAaveV4PositionManager(chainId, lenderKey, nameQuery) {
|
|
168
|
+
const meta = getAaveV4SpokePeripherals(chainId, lenderKey);
|
|
169
|
+
if (!meta?.positionManagers) return void 0;
|
|
170
|
+
const q = nameQuery.toLowerCase();
|
|
171
|
+
const hit = meta.positionManagers.find(
|
|
172
|
+
(pm) => pm.active !== false && pm.address && (pm.name ?? "").toLowerCase().includes(q)
|
|
173
|
+
);
|
|
174
|
+
return hit?.address?.toLowerCase();
|
|
175
|
+
}
|
|
176
|
+
function aaveV4SpokeLenderKey(spoke) {
|
|
177
|
+
if (!spoke || !spoke.startsWith("0x") || spoke.length !== 42) {
|
|
178
|
+
throw new Error(`aaveV4SpokeLenderKey: invalid spoke address ${spoke}`);
|
|
179
|
+
}
|
|
180
|
+
return `AAVE_V4_${spoke.slice(2).toUpperCase()}`;
|
|
181
|
+
}
|
|
182
|
+
function parseAaveV4SpokeLenderKey(lenderKey) {
|
|
183
|
+
const match = lenderKey.match(/^AAVE_V4_([0-9A-F]{40})$/);
|
|
184
|
+
if (!match) return void 0;
|
|
185
|
+
return { spokeAddrLower: "0x" + match[1].toLowerCase() };
|
|
186
|
+
}
|
|
125
187
|
|
|
126
188
|
// src/tokens.ts
|
|
127
189
|
var getListUrl = (chainId) => `https://raw.githubusercontent.com/1delta-DAO/token-lists/main/${chainId}.json`;
|
|
@@ -144,6 +206,10 @@ exports.aaveOraclesConfig = aaveOraclesConfig;
|
|
|
144
206
|
exports.aavePools = aavePools;
|
|
145
207
|
exports.aaveReserves = aaveReserves;
|
|
146
208
|
exports.aaveTokens = aaveTokens;
|
|
209
|
+
exports.aaveV4Oracles = aaveV4Oracles;
|
|
210
|
+
exports.aaveV4Peripherals = aaveV4Peripherals;
|
|
211
|
+
exports.aaveV4SpokeLenderKey = aaveV4SpokeLenderKey;
|
|
212
|
+
exports.aaveV4Spokes = aaveV4Spokes;
|
|
147
213
|
exports.aaveWethGateway = aaveWethGateway;
|
|
148
214
|
exports.chains = chains;
|
|
149
215
|
exports.compoundV2Oracles = compoundV2Oracles;
|
|
@@ -160,6 +226,11 @@ exports.eulerConfigs = eulerConfigs;
|
|
|
160
226
|
exports.eulerVaults = eulerVaults;
|
|
161
227
|
exports.fetchTokenList = fetchTokenList;
|
|
162
228
|
exports.fetchTokenLists = fetchTokenLists;
|
|
229
|
+
exports.findAaveV4PositionManager = findAaveV4PositionManager;
|
|
230
|
+
exports.getAaveV4GatewayAddresses = getAaveV4GatewayAddresses;
|
|
231
|
+
exports.getAaveV4PositionManagers = getAaveV4PositionManagers;
|
|
232
|
+
exports.getAaveV4SpokeEntry = getAaveV4SpokeEntry;
|
|
233
|
+
exports.getAaveV4SpokePeripherals = getAaveV4SpokePeripherals;
|
|
163
234
|
exports.initConfig = initConfig;
|
|
164
235
|
exports.initializeChainData = initializeChainData;
|
|
165
236
|
exports.initializeLenderData = initializeLenderData;
|
|
@@ -169,3 +240,4 @@ exports.morphoOracles = morphoOracles;
|
|
|
169
240
|
exports.morphoPools = morphoPools;
|
|
170
241
|
exports.morphoTypeMarkets = morphoTypeMarkets;
|
|
171
242
|
exports.morphoTypeOracles = morphoTypeOracles;
|
|
243
|
+
exports.parseAaveV4SpokeLenderKey = parseAaveV4SpokeLenderKey;
|
package/dist/index.mjs
CHANGED
|
@@ -36,7 +36,10 @@ globalThis[GLOBAL_LENDER_DATA_KEY] = {
|
|
|
36
36
|
listaNativeProvider: {},
|
|
37
37
|
compoundV3Bulker: {},
|
|
38
38
|
eulerConfigs: {},
|
|
39
|
-
eulerVaults: {}
|
|
39
|
+
eulerVaults: {},
|
|
40
|
+
aaveV4Spokes: {},
|
|
41
|
+
aaveV4Oracles: {},
|
|
42
|
+
aaveV4Peripherals: {}
|
|
40
43
|
};
|
|
41
44
|
function getGlobalData2() {
|
|
42
45
|
return globalThis[GLOBAL_LENDER_DATA_KEY];
|
|
@@ -66,7 +69,10 @@ function initializeLenderData({
|
|
|
66
69
|
listaNativeProviderOverride,
|
|
67
70
|
compoundV3BulkerOverride,
|
|
68
71
|
eulerConfigsOverride,
|
|
69
|
-
eulerVaultsOverride
|
|
72
|
+
eulerVaultsOverride,
|
|
73
|
+
aaveV4SpokesOverride,
|
|
74
|
+
aaveV4OraclesOverride,
|
|
75
|
+
aaveV4PeripheralsOverride
|
|
70
76
|
}) {
|
|
71
77
|
const data = getGlobalData2();
|
|
72
78
|
if (aaveTokensOverride) data.aaveTokens = aaveTokensOverride;
|
|
@@ -94,6 +100,10 @@ function initializeLenderData({
|
|
|
94
100
|
if (compoundV3BulkerOverride) data.compoundV3Bulker = compoundV3BulkerOverride;
|
|
95
101
|
if (eulerConfigsOverride) data.eulerConfigs = eulerConfigsOverride;
|
|
96
102
|
if (eulerVaultsOverride) data.eulerVaults = eulerVaultsOverride;
|
|
103
|
+
if (aaveV4SpokesOverride) data.aaveV4Spokes = aaveV4SpokesOverride;
|
|
104
|
+
if (aaveV4OraclesOverride) data.aaveV4Oracles = aaveV4OraclesOverride;
|
|
105
|
+
if (aaveV4PeripheralsOverride)
|
|
106
|
+
data.aaveV4Peripherals = aaveV4PeripheralsOverride;
|
|
97
107
|
}
|
|
98
108
|
var aaveTokens = () => getGlobalData2()?.aaveTokens;
|
|
99
109
|
var aavePools = () => getGlobalData2()?.aavePools;
|
|
@@ -120,6 +130,58 @@ var listaNativeProvider = () => getGlobalData2()?.listaNativeProvider;
|
|
|
120
130
|
var compoundV3Bulker = () => getGlobalData2()?.compoundV3Bulker;
|
|
121
131
|
var eulerConfigs = () => getGlobalData2()?.eulerConfigs;
|
|
122
132
|
var eulerVaults = () => getGlobalData2()?.eulerVaults;
|
|
133
|
+
var aaveV4Spokes = () => getGlobalData2()?.aaveV4Spokes;
|
|
134
|
+
var aaveV4Oracles = () => getGlobalData2()?.aaveV4Oracles;
|
|
135
|
+
var aaveV4Peripherals = () => getGlobalData2()?.aaveV4Peripherals;
|
|
136
|
+
function getAaveV4SpokeEntry(chainId, lenderKey) {
|
|
137
|
+
const parsed = parseAaveV4SpokeLenderKey(lenderKey);
|
|
138
|
+
if (!parsed) return void 0;
|
|
139
|
+
return getGlobalData2()?.aaveV4Spokes?.[chainId]?.[parsed.spokeAddrLower];
|
|
140
|
+
}
|
|
141
|
+
function getAaveV4GatewayAddresses(chainId, lender, hubOverride) {
|
|
142
|
+
const c = getGlobalData2()?.aaveV4Peripherals?.[chainId];
|
|
143
|
+
if (!c) return {};
|
|
144
|
+
let hubAddr = hubOverride?.toLowerCase();
|
|
145
|
+
if (!hubAddr) {
|
|
146
|
+
const spokeEntry = getAaveV4SpokeEntry(chainId, lender);
|
|
147
|
+
hubAddr = spokeEntry?.reserves?.[0]?.hub?.toLowerCase();
|
|
148
|
+
}
|
|
149
|
+
const perHub = hubAddr && c.perHub?.[hubAddr] || void 0;
|
|
150
|
+
return {
|
|
151
|
+
nativeGateway: perHub?.nativeGateway ?? c.nativeGateway,
|
|
152
|
+
signatureGateway: perHub?.signatureGateway ?? c.signatureGateway
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
function getAaveV4SpokePeripherals(chainId, lenderKey) {
|
|
156
|
+
const parsed = parseAaveV4SpokeLenderKey(lenderKey);
|
|
157
|
+
if (!parsed) return void 0;
|
|
158
|
+
return getGlobalData2()?.aaveV4Peripherals?.[chainId]?.perSpoke?.[parsed.spokeAddrLower];
|
|
159
|
+
}
|
|
160
|
+
function getAaveV4PositionManagers(chainId, lenderKey) {
|
|
161
|
+
const meta = getAaveV4SpokePeripherals(chainId, lenderKey);
|
|
162
|
+
if (!meta?.positionManagers) return [];
|
|
163
|
+
return meta.positionManagers.filter((pm) => pm.active !== false && pm.address).map((pm) => pm.address.toLowerCase());
|
|
164
|
+
}
|
|
165
|
+
function findAaveV4PositionManager(chainId, lenderKey, nameQuery) {
|
|
166
|
+
const meta = getAaveV4SpokePeripherals(chainId, lenderKey);
|
|
167
|
+
if (!meta?.positionManagers) return void 0;
|
|
168
|
+
const q = nameQuery.toLowerCase();
|
|
169
|
+
const hit = meta.positionManagers.find(
|
|
170
|
+
(pm) => pm.active !== false && pm.address && (pm.name ?? "").toLowerCase().includes(q)
|
|
171
|
+
);
|
|
172
|
+
return hit?.address?.toLowerCase();
|
|
173
|
+
}
|
|
174
|
+
function aaveV4SpokeLenderKey(spoke) {
|
|
175
|
+
if (!spoke || !spoke.startsWith("0x") || spoke.length !== 42) {
|
|
176
|
+
throw new Error(`aaveV4SpokeLenderKey: invalid spoke address ${spoke}`);
|
|
177
|
+
}
|
|
178
|
+
return `AAVE_V4_${spoke.slice(2).toUpperCase()}`;
|
|
179
|
+
}
|
|
180
|
+
function parseAaveV4SpokeLenderKey(lenderKey) {
|
|
181
|
+
const match = lenderKey.match(/^AAVE_V4_([0-9A-F]{40})$/);
|
|
182
|
+
if (!match) return void 0;
|
|
183
|
+
return { spokeAddrLower: "0x" + match[1].toLowerCase() };
|
|
184
|
+
}
|
|
123
185
|
|
|
124
186
|
// src/tokens.ts
|
|
125
187
|
var getListUrl = (chainId) => `https://raw.githubusercontent.com/1delta-DAO/token-lists/main/${chainId}.json`;
|
|
@@ -137,4 +199,4 @@ async function fetchTokenLists(chainIds) {
|
|
|
137
199
|
return Object.fromEntries(results);
|
|
138
200
|
}
|
|
139
201
|
|
|
140
|
-
export { aaveOracles, aaveOraclesConfig, aavePools, aaveReserves, aaveTokens, aaveWethGateway, chains, compoundV2Oracles, compoundV2Pools, compoundV2Reserves, compoundV2TokenArray, compoundV2Tokens, compoundV3BaseData, compoundV3Bulker, compoundV3OraclesData, compoundV3Pools, compoundV3Reserves, eulerConfigs, eulerVaults, fetchTokenList, fetchTokenLists, initConfig, initializeChainData, initializeLenderData, listaNativeProvider, morphoBundler3, morphoOracles, morphoPools, morphoTypeMarkets, morphoTypeOracles };
|
|
202
|
+
export { aaveOracles, aaveOraclesConfig, aavePools, aaveReserves, aaveTokens, aaveV4Oracles, aaveV4Peripherals, aaveV4SpokeLenderKey, aaveV4Spokes, aaveWethGateway, chains, compoundV2Oracles, compoundV2Pools, compoundV2Reserves, compoundV2TokenArray, compoundV2Tokens, compoundV3BaseData, compoundV3Bulker, compoundV3OraclesData, compoundV3Pools, compoundV3Reserves, eulerConfigs, eulerVaults, fetchTokenList, fetchTokenLists, findAaveV4PositionManager, getAaveV4GatewayAddresses, getAaveV4PositionManagers, getAaveV4SpokeEntry, getAaveV4SpokePeripherals, initConfig, initializeChainData, initializeLenderData, listaNativeProvider, morphoBundler3, morphoOracles, morphoPools, morphoTypeMarkets, morphoTypeOracles, parseAaveV4SpokeLenderKey };
|
package/dist/lending.d.ts
CHANGED
|
@@ -174,8 +174,88 @@ type EulerVaultsType = {
|
|
|
174
174
|
[chainId: string]: EulerVaultEntry[];
|
|
175
175
|
};
|
|
176
176
|
};
|
|
177
|
+
export type AaveV4ReserveEntry = {
|
|
178
|
+
reserveId: number;
|
|
179
|
+
/** Hub-side asset id (scoped to the entry's `hub`) */
|
|
180
|
+
assetId: number;
|
|
181
|
+
underlying: string;
|
|
182
|
+
/**
|
|
183
|
+
* Per-reserve hub address. Set at reserve init on-chain — different
|
|
184
|
+
* reserves on the same spoke can have different hubs.
|
|
185
|
+
*/
|
|
186
|
+
hub: string;
|
|
187
|
+
/** Optional per-reserve oracle override (defaults to spoke.oracle) */
|
|
188
|
+
oracle?: string;
|
|
189
|
+
oracleDecimals?: number;
|
|
190
|
+
};
|
|
191
|
+
export type AaveV4SpokeEntry = {
|
|
192
|
+
spoke: string;
|
|
193
|
+
oracle: string;
|
|
194
|
+
label: string;
|
|
195
|
+
dynamicConfigKeyMax?: number;
|
|
196
|
+
/**
|
|
197
|
+
* UI/grouping hint only (`AAVE_V4_CORE` / `AAVE_V4_PLUS` / `AAVE_V4_PRIME`).
|
|
198
|
+
* NOT used for routing or lender keying.
|
|
199
|
+
*/
|
|
200
|
+
baseHubAttribution?: string;
|
|
201
|
+
reserves: AaveV4ReserveEntry[];
|
|
202
|
+
};
|
|
203
|
+
/** Top-level: chainId → spokeAddrLower → entry */
|
|
204
|
+
export type AaveV4SpokesType = {
|
|
205
|
+
[chainId: string]: {
|
|
206
|
+
[spokeAddrLower: string]: AaveV4SpokeEntry;
|
|
207
|
+
};
|
|
208
|
+
};
|
|
209
|
+
export type AaveV4OracleEntry = {
|
|
210
|
+
underlying: string;
|
|
211
|
+
spoke: string;
|
|
212
|
+
reserveId: number;
|
|
213
|
+
oracle: string;
|
|
214
|
+
decimals?: number;
|
|
215
|
+
source?: string;
|
|
216
|
+
};
|
|
217
|
+
/** Top-level chainId only — no fork dimension. */
|
|
218
|
+
export type AaveV4OraclesType = {
|
|
219
|
+
[chainId: string]: AaveV4OracleEntry[];
|
|
220
|
+
};
|
|
221
|
+
export type AaveV4PerHubGateways = {
|
|
222
|
+
nativeGateway?: string;
|
|
223
|
+
signatureGateway?: string;
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* Per-spoke peripherals — extra metadata the lender-metadata repo carries
|
|
227
|
+
* for spoke-scoped concerns (curated names, position manager registry, …).
|
|
228
|
+
* Opaque to the data-sdk; surfaced as `any` so consumers (worker-api,
|
|
229
|
+
* frontend) can read it without dragging the schema into this package.
|
|
230
|
+
*/
|
|
231
|
+
export type AaveV4PerSpokeMeta = {
|
|
232
|
+
spokeName?: string;
|
|
233
|
+
spokeId?: string;
|
|
234
|
+
positionManagers?: Array<{
|
|
235
|
+
name?: string;
|
|
236
|
+
address: string;
|
|
237
|
+
active?: boolean;
|
|
238
|
+
}>;
|
|
239
|
+
[k: string]: unknown;
|
|
240
|
+
};
|
|
241
|
+
export type AaveV4ChainPeripherals = {
|
|
242
|
+
/** Chain-wide fallback gateway addresses */
|
|
243
|
+
nativeGateway?: string;
|
|
244
|
+
signatureGateway?: string;
|
|
245
|
+
/** Per-hub gateway overrides (keyed by lowercase hub address) */
|
|
246
|
+
perHub?: {
|
|
247
|
+
[hubAddrLower: string]: AaveV4PerHubGateways;
|
|
248
|
+
};
|
|
249
|
+
/** Per-spoke metadata (curated names, position managers, …) */
|
|
250
|
+
perSpoke?: {
|
|
251
|
+
[spokeAddrLower: string]: AaveV4PerSpokeMeta;
|
|
252
|
+
};
|
|
253
|
+
};
|
|
254
|
+
export type AaveV4PeripheralsType = {
|
|
255
|
+
[chainId: string]: AaveV4ChainPeripherals;
|
|
256
|
+
};
|
|
177
257
|
/** Override datas used in the SDK - works across all module instances */
|
|
178
|
-
export declare function initializeLenderData({ aaveTokensOverride, aavePoolsOverride, aaveOraclesOverride, compoundV2OraclesOverride, compoundV3OraclesDataOverride, compoundV3PoolsOverride, compoundV3BaseDataOverride, morphoPoolsOverride, compoundV2TokensOverride, compoundV2TokenArrayOverride, compoundV2PoolsOverride, initConfigOverride, aaveReservesOverride, compoundV3ReservesOverride, compoundV2ReservesOverride, morphoOraclesOverride, morphoTypeOraclesOverride, morphoTypeMarketsOverride, aaveOraclesConfigOverride, aaveWethGatewayOverride, morphoBundler3Override, listaNativeProviderOverride, compoundV3BulkerOverride, eulerConfigsOverride, eulerVaultsOverride, }: {
|
|
258
|
+
export declare function initializeLenderData({ aaveTokensOverride, aavePoolsOverride, aaveOraclesOverride, compoundV2OraclesOverride, compoundV3OraclesDataOverride, compoundV3PoolsOverride, compoundV3BaseDataOverride, morphoPoolsOverride, compoundV2TokensOverride, compoundV2TokenArrayOverride, compoundV2PoolsOverride, initConfigOverride, aaveReservesOverride, compoundV3ReservesOverride, compoundV2ReservesOverride, morphoOraclesOverride, morphoTypeOraclesOverride, morphoTypeMarketsOverride, aaveOraclesConfigOverride, aaveWethGatewayOverride, morphoBundler3Override, listaNativeProviderOverride, compoundV3BulkerOverride, eulerConfigsOverride, eulerVaultsOverride, aaveV4SpokesOverride, aaveV4OraclesOverride, aaveV4PeripheralsOverride, }: {
|
|
179
259
|
aaveTokensOverride?: AaveTokensType;
|
|
180
260
|
aavePoolsOverride?: AavePoolsType;
|
|
181
261
|
aaveOraclesOverride?: OracleMap;
|
|
@@ -201,6 +281,9 @@ export declare function initializeLenderData({ aaveTokensOverride, aavePoolsOver
|
|
|
201
281
|
compoundV3BulkerOverride?: CompoundV3BulkerType;
|
|
202
282
|
eulerConfigsOverride?: EulerConfigsType;
|
|
203
283
|
eulerVaultsOverride?: EulerVaultsType;
|
|
284
|
+
aaveV4SpokesOverride?: AaveV4SpokesType;
|
|
285
|
+
aaveV4OraclesOverride?: AaveV4OraclesType;
|
|
286
|
+
aaveV4PeripheralsOverride?: AaveV4PeripheralsType;
|
|
204
287
|
}): void;
|
|
205
288
|
export declare const aaveTokens: () => AaveTokensType;
|
|
206
289
|
export declare const aavePools: () => AavePoolsType;
|
|
@@ -227,4 +310,92 @@ export declare const listaNativeProvider: () => ListaNativeProviderType;
|
|
|
227
310
|
export declare const compoundV3Bulker: () => CompoundV3BulkerType;
|
|
228
311
|
export declare const eulerConfigs: () => EulerConfigsType;
|
|
229
312
|
export declare const eulerVaults: () => EulerVaultsType;
|
|
313
|
+
export declare const aaveV4Spokes: () => AaveV4SpokesType;
|
|
314
|
+
export declare const aaveV4Oracles: () => AaveV4OraclesType;
|
|
315
|
+
export declare const aaveV4Peripherals: () => AaveV4PeripheralsType;
|
|
316
|
+
/**
|
|
317
|
+
* Look up the spoke entry for a per-spoke V4 lender key (`AAVE_V4_<HEX>`).
|
|
318
|
+
* Returns `undefined` if no entry exists for that chain/spoke.
|
|
319
|
+
*/
|
|
320
|
+
export declare function getAaveV4SpokeEntry(chainId: string, lenderKey: string): AaveV4SpokeEntry | undefined;
|
|
321
|
+
/**
|
|
322
|
+
* Native / signature gateway addresses for Aave V4.
|
|
323
|
+
*
|
|
324
|
+
* Resolves the spoke from the per-spoke lender key (`AAVE_V4_<HEX>`),
|
|
325
|
+
* picks the spoke's first reserve to learn its hub, and looks up
|
|
326
|
+
* `peripherals[chainId].perHub[hub]`. Falls back to the chain-level
|
|
327
|
+
* default gateways if no per-hub override is set.
|
|
328
|
+
*
|
|
329
|
+
* If the caller passes a hub address directly via `hubOverride`, that
|
|
330
|
+
* takes precedence.
|
|
331
|
+
*/
|
|
332
|
+
export declare function getAaveV4GatewayAddresses(chainId: string, lender: string, hubOverride?: string): {
|
|
333
|
+
nativeGateway?: string;
|
|
334
|
+
signatureGateway?: string;
|
|
335
|
+
};
|
|
336
|
+
/**
|
|
337
|
+
* Look up the per-spoke peripherals metadata for a V4 spoke.
|
|
338
|
+
*
|
|
339
|
+
* Sourced from `aave-v4-peripherals.json` `perSpoke[<spokeAddrLower>]`.
|
|
340
|
+
* Carries curated extras the metadata team maintains alongside the core
|
|
341
|
+
* registry — most usefully the position-manager registry. Returns
|
|
342
|
+
* `undefined` if no entry exists for the spoke or if the lender key is
|
|
343
|
+
* not a per-spoke V4 key.
|
|
344
|
+
*
|
|
345
|
+
* Note: the spoke's `label` (curated UI name) lives directly on the
|
|
346
|
+
* `AaveV4SpokeEntry` from `aaveV4Spokes()` — `perSpoke.spokeName` is a
|
|
347
|
+
* duplicate of that and is intentionally not surfaced through the public-
|
|
348
|
+
* data normalizer. Read it through this helper if a consumer needs the
|
|
349
|
+
* exact value from the peripherals file.
|
|
350
|
+
*/
|
|
351
|
+
export declare function getAaveV4SpokePeripherals(chainId: string, lenderKey: string): AaveV4PerSpokeMeta | undefined;
|
|
352
|
+
/**
|
|
353
|
+
* Active position-manager addresses for an Aave V4 spoke.
|
|
354
|
+
*
|
|
355
|
+
* Returns the lowercase addresses of every entry in
|
|
356
|
+
* `perSpoke[<spoke>].positionManagers` whose `active` flag is truthy.
|
|
357
|
+
* Empty array if the spoke has no peripherals entry or no active PMs.
|
|
358
|
+
*
|
|
359
|
+
* Use the `byName` lookup form when you need a specific PM (e.g. the
|
|
360
|
+
* native gateway). Names are matched case-insensitively against the
|
|
361
|
+
* curated `name` field; partial matches are accepted.
|
|
362
|
+
*/
|
|
363
|
+
export declare function getAaveV4PositionManagers(chainId: string, lenderKey: string): string[];
|
|
364
|
+
/**
|
|
365
|
+
* Look up a single position-manager address by curated name (partial,
|
|
366
|
+
* case-insensitive). Returns `undefined` if no match. Useful for
|
|
367
|
+
* targeting specific PMs like `"native gateway"` or `"signature gateway"`
|
|
368
|
+
* without hardcoding the addresses.
|
|
369
|
+
*/
|
|
370
|
+
export declare function findAaveV4PositionManager(chainId: string, lenderKey: string, nameQuery: string): string | undefined;
|
|
371
|
+
/**
|
|
372
|
+
* Synthesize the per-spoke lender key for an Aave V4 spoke.
|
|
373
|
+
*
|
|
374
|
+
* Mirrors the Morpho `MORPHO_BLUE_<HEX_NO_0X_UPPER>` convention so the rest
|
|
375
|
+
* of the codebase can treat each spoke as an isolated market — exactly like a
|
|
376
|
+
* Morpho Blue market or a Compound V3 Comet — without any V4-specific logic.
|
|
377
|
+
*
|
|
378
|
+
* Format: `AAVE_V4_${spokeAddr.slice(2).toUpperCase()}`
|
|
379
|
+
*
|
|
380
|
+
* Example:
|
|
381
|
+
* spoke = "0x94e7a5dcbe816e498b89ab752661904e2f56c485"
|
|
382
|
+
* → = "AAVE_V4_94E7A5DCBE816E498B89AB752661904E2F56C485"
|
|
383
|
+
*
|
|
384
|
+
* The full spoke address is preserved (no truncation) so the key is globally
|
|
385
|
+
* unique and stable across spoke implementation upgrades (proxy address).
|
|
386
|
+
* Note: chainId is intentionally NOT in the lender token — the same spoke
|
|
387
|
+
* address can in principle exist on multiple chains via deterministic
|
|
388
|
+
* deploys, and chain scoping happens at the marketUid level instead.
|
|
389
|
+
*
|
|
390
|
+
* `isAaveV4Type()` continues to work because it uses `startsWith('AAVE_V4')`.
|
|
391
|
+
*/
|
|
392
|
+
export declare function aaveV4SpokeLenderKey(spoke: string): string;
|
|
393
|
+
/**
|
|
394
|
+
* Inverse of `aaveV4SpokeLenderKey`: given a per-spoke lender key, return
|
|
395
|
+
* `{ spokeAddrLower }`. Returns `undefined` if the key isn't a per-spoke V4
|
|
396
|
+
* key (e.g. someone passed the bare prefix `AAVE_V4`).
|
|
397
|
+
*/
|
|
398
|
+
export declare function parseAaveV4SpokeLenderKey(lenderKey: string): {
|
|
399
|
+
spokeAddrLower: string;
|
|
400
|
+
} | undefined;
|
|
230
401
|
export {};
|