@1delta/data-sdk 0.0.17 → 0.0.19

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 ADDED
@@ -0,0 +1,658 @@
1
+ # @1delta/data-sdk
2
+
3
+ Global registry for lending protocol deployments, chain metadata, and token lists. Provides getters to access pool configurations, reserve lists, oracle addresses, and protocol-specific contract addresses across all supported chains and lending protocol forks.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pnpm add @1delta/data-sdk
9
+ ```
10
+
11
+ ## Overview
12
+
13
+ The SDK is a **read-only data layer** organized into three modules:
14
+
15
+ | Module | Description |
16
+ |--------|-------------|
17
+ | **Lending** | Pool configs, reserves, tokens, oracles for all lending protocols |
18
+ | **Chains** | Chain metadata (RPC endpoints, explorers, native currency) |
19
+ | **Tokens** | Token lists per chain (fetched from remote) |
20
+
21
+ All data is stored in a global registry (`globalThis`) so it's shared across module instances. Data is populated once via `initializeLenderData()` / `initializeChainData()` (typically called by `@1delta/initializer-sdk`) and then accessed through getter functions.
22
+
23
+ ---
24
+
25
+ ## Initialization
26
+
27
+ Data must be initialized before use. This is typically handled by `@1delta/initializer-sdk`:
28
+
29
+ ```ts
30
+ import { fetchLenderMetaFromDirAndInitializeAll } from '@1delta/initializer-sdk'
31
+
32
+ // Loads all deployment data from the lender-metadata repo
33
+ await fetchLenderMetaFromDirAndInitializeAll()
34
+ ```
35
+
36
+ Or initialize directly with custom data:
37
+
38
+ ```ts
39
+ import { initializeLenderData, initializeChainData } from '@1delta/data-sdk'
40
+
41
+ initializeLenderData({
42
+ aavePoolsOverride: myAavePools,
43
+ compoundV2PoolsOverride: myCompoundPools,
44
+ // ... other overrides
45
+ })
46
+
47
+ initializeChainData({
48
+ chainsOverride: myChainInfo,
49
+ })
50
+ ```
51
+
52
+ ---
53
+
54
+ ## Lending Data
55
+
56
+ All lending getters are synchronous and return data from the global registry.
57
+
58
+ ### Aave (V2 / V3 / all forks)
59
+
60
+ Covers: AAVE_V3, SPARK, LENDLE, ZEROLEND, AVALON, RADIANT_V2, KINZA, YLDR, and 70+ other forks.
61
+
62
+ #### `aavePools()`
63
+
64
+ Pool and data provider addresses per fork per chain.
65
+
66
+ ```ts
67
+ import { aavePools } from '@1delta/data-sdk'
68
+
69
+ const pools = aavePools()
70
+ // {
71
+ // AAVE_V3: {
72
+ // '1': { pool: '0x87870...', protocolDataProvider: '0x7B4E...' },
73
+ // '56': { pool: '0x6807...', protocolDataProvider: '0x23dF...' },
74
+ // },
75
+ // SPARK: {
76
+ // '1': { pool: '0xC13e...', protocolDataProvider: '0xFc21...' },
77
+ // },
78
+ // ZEROLEND: { ... },
79
+ // ...
80
+ // }
81
+
82
+ // Type: { [fork: string]: { [chainId: string]: { pool: string; protocolDataProvider: string } } }
83
+ ```
84
+
85
+ #### `aaveReserves()`
86
+
87
+ List of underlying asset addresses per fork per chain.
88
+
89
+ ```ts
90
+ import { aaveReserves } from '@1delta/data-sdk'
91
+
92
+ const reserves = aaveReserves()
93
+ // {
94
+ // AAVE_V3: {
95
+ // '1': ['0xC02a...', '0x6B17...', '0xdAC1...'], // WETH, DAI, USDT, ...
96
+ // '56': ['0xbb4C...', '0x55d3...'],
97
+ // },
98
+ // ...
99
+ // }
100
+
101
+ // Type: { [fork: string]: { [chainId: string]: string[] } }
102
+ ```
103
+
104
+ #### `aaveTokens()`
105
+
106
+ Mapping of underlying assets to their aToken, sToken, and vToken addresses.
107
+
108
+ ```ts
109
+ import { aaveTokens } from '@1delta/data-sdk'
110
+
111
+ const tokens = aaveTokens()
112
+ // {
113
+ // AAVE_V3: {
114
+ // '1': {
115
+ // '0xC02a...': { // WETH underlying
116
+ // aToken: '0x4d5F...',
117
+ // sToken: '0x102e...',
118
+ // vToken: '0xeA51...',
119
+ // },
120
+ // ...
121
+ // },
122
+ // },
123
+ // }
124
+
125
+ // Type: { [fork: string]: { [chainId: string]: { [underlying: string]: { aToken: string; sToken: string; vToken: string } } } }
126
+ ```
127
+
128
+ #### `aaveOracles()`
129
+
130
+ Price oracle addresses per fork per chain.
131
+
132
+ ```ts
133
+ import { aaveOracles } from '@1delta/data-sdk'
134
+
135
+ const oracles = aaveOracles()
136
+ // { AAVE_V3: { '1': '0x54586...', '56': '0x6970...' }, ... }
137
+
138
+ // Type: { [lender: string]: { [chainId: string]: string } }
139
+ ```
140
+
141
+ #### `aaveWethGateway()`
142
+
143
+ WETH gateway contract addresses for native asset wrapping.
144
+
145
+ ```ts
146
+ import { aaveWethGateway } from '@1delta/data-sdk'
147
+
148
+ const gateways = aaveWethGateway()
149
+ // { AAVE_V3: { '1': '0xD322...' }, SPARK: { '1': '0x...' }, ... }
150
+
151
+ // Type: { [fork: string]: { [chainId: string]: string } }
152
+ ```
153
+
154
+ ---
155
+
156
+ ### Compound V2 (all forks)
157
+
158
+ Covers: COMPOUND_V2, VENUS (+ pool variants), BENQI, MENDI, MOONWELL, TECTONIC, ENCLABS, and 30+ other forks.
159
+
160
+ #### `compoundV2Pools()`
161
+
162
+ Comptroller addresses per fork per chain.
163
+
164
+ ```ts
165
+ import { compoundV2Pools } from '@1delta/data-sdk'
166
+
167
+ const pools = compoundV2Pools()
168
+ // {
169
+ // COMPOUND_V2: { '1': '0x3d9819...' },
170
+ // VENUS: { '56': '0xfD36E2...' },
171
+ // VENUS_ETH: { '56': '0x...' },
172
+ // BENQI: { '43114': '0x486Af...' },
173
+ // ...
174
+ // }
175
+
176
+ // Type: { [fork: string]: { [chainId: string]: string } }
177
+ ```
178
+
179
+ #### `compoundV2Reserves()`
180
+
181
+ Reserve asset addresses per fork per chain.
182
+
183
+ ```ts
184
+ import { compoundV2Reserves } from '@1delta/data-sdk'
185
+
186
+ const reserves = compoundV2Reserves()
187
+ // { VENUS: { '56': ['0xbb4C...', '0x55d3...'] }, ... }
188
+
189
+ // Type: { [fork: string]: { [chainId: string]: string[] } }
190
+ ```
191
+
192
+ #### `compoundV2TokenArray()`
193
+
194
+ cToken to underlying mapping as an array (preferred for iteration).
195
+
196
+ ```ts
197
+ import { compoundV2TokenArray } from '@1delta/data-sdk'
198
+
199
+ const tokenArray = compoundV2TokenArray()
200
+ // {
201
+ // VENUS: {
202
+ // '56': [
203
+ // { cToken: '0xA07c5b74...', underlying: '0xbb4CdB9C...' },
204
+ // { cToken: '0xecA88125...', underlying: '0x55d398326...' },
205
+ // ],
206
+ // },
207
+ // }
208
+
209
+ // Type: { [lender: string]: { [chainId: string]: Array<{ cToken: string; underlying: string }> } }
210
+ ```
211
+
212
+ #### `compoundV2Tokens()`
213
+
214
+ cToken address mapping (keyed by address).
215
+
216
+ ```ts
217
+ import { compoundV2Tokens } from '@1delta/data-sdk'
218
+
219
+ const tokens = compoundV2Tokens()
220
+ // { VENUS: { '56': { '0xA07c5b74...': '0xbb4CdB9C...' } } }
221
+
222
+ // Type: { [lender: string]: { [chainId: string]: { [cTokenAddress: string]: string } } }
223
+ ```
224
+
225
+ #### `compoundV2Oracles()`
226
+
227
+ Oracle addresses per fork per chain.
228
+
229
+ ```ts
230
+ import { compoundV2Oracles } from '@1delta/data-sdk'
231
+
232
+ const oracles = compoundV2Oracles()
233
+ // { VENUS: { '56': '0xd8B6dA...' }, ... }
234
+
235
+ // Type: { [lender: string]: { [chainId: string]: string } }
236
+ ```
237
+
238
+ ---
239
+
240
+ ### Compound V3 (Comet)
241
+
242
+ Covers: COMPOUND_V3_USDC, COMPOUND_V3_USDT, COMPOUND_V3_WETH, COMPOUND_V3_WSTETH, and other Comet markets.
243
+
244
+ #### `compoundV3Pools()`
245
+
246
+ Comet proxy addresses. Note: keyed by `chainId` first, then by comet/lender name.
247
+
248
+ ```ts
249
+ import { compoundV3Pools } from '@1delta/data-sdk'
250
+
251
+ const pools = compoundV3Pools()
252
+ // {
253
+ // '1': {
254
+ // 'COMPOUND_V3_USDC': '0xc3d688...',
255
+ // 'COMPOUND_V3_WETH': '0xA17581...',
256
+ // },
257
+ // '42161': {
258
+ // 'COMPOUND_V3_USDC': '0xA5EDBDD...',
259
+ // },
260
+ // }
261
+
262
+ // Type: { [chainId: string]: { [comet: string]: string } }
263
+ ```
264
+
265
+ #### `compoundV3BaseData()`
266
+
267
+ Base asset and minimum borrow amount per Comet market.
268
+
269
+ ```ts
270
+ import { compoundV3BaseData } from '@1delta/data-sdk'
271
+
272
+ const baseData = compoundV3BaseData()
273
+ // {
274
+ // COMPOUND_V3_USDC: {
275
+ // '1': { baseAsset: '0xA0b86991...', baseBorrowMin: 100000000n },
276
+ // },
277
+ // }
278
+
279
+ // Type: { [lender: string]: { [chainId: string]: { baseAsset: string; baseBorrowMin: bigint } } }
280
+ ```
281
+
282
+ #### `compoundV3Reserves()`
283
+
284
+ Collateral asset addresses per Comet market.
285
+
286
+ ```ts
287
+ import { compoundV3Reserves } from '@1delta/data-sdk'
288
+
289
+ const reserves = compoundV3Reserves()
290
+ // { COMPOUND_V3_USDC: { '1': ['0xC02a...', '0x2260...'] }, ... }
291
+
292
+ // Type: { [fork: string]: { [chainId: string]: string[] } }
293
+ ```
294
+
295
+ #### `compoundV3OraclesData()`
296
+
297
+ Per-asset oracle addresses and descriptions for Comet markets.
298
+
299
+ ```ts
300
+ import { compoundV3OraclesData } from '@1delta/data-sdk'
301
+
302
+ const oracles = compoundV3OraclesData()
303
+ // {
304
+ // COMPOUND_V3_USDC: {
305
+ // '1': {
306
+ // '0xC02a...': { oracle: '0x5f4eC3...', description: 'ETH / USD' },
307
+ // '0x2260...': { oracle: '0xF4030...', description: 'BTC / USD' },
308
+ // },
309
+ // },
310
+ // }
311
+
312
+ // Type: { [lender: string]: { [chainId: string]: { [assetAddress: string]: { oracle: string; description: string } } } }
313
+ ```
314
+
315
+ #### `compoundV3Bulker()`
316
+
317
+ Bulker contract addresses for batched Comet operations.
318
+
319
+ ```ts
320
+ import { compoundV3Bulker } from '@1delta/data-sdk'
321
+
322
+ const bulkers = compoundV3Bulker()
323
+ // { COMPOUND_V3_USDC: { '1': '0xa397...' }, ... }
324
+
325
+ // Type: { [lender: string]: { [chainId: string]: string } }
326
+ ```
327
+
328
+ ---
329
+
330
+ ### Morpho Blue
331
+
332
+ Covers: MORPHO_BLUE, LISTA_DAO.
333
+
334
+ #### `morphoPools()`
335
+
336
+ Morpho Blue singleton contract addresses.
337
+
338
+ ```ts
339
+ import { morphoPools } from '@1delta/data-sdk'
340
+
341
+ const pools = morphoPools()
342
+ // {
343
+ // MORPHO_BLUE: { '1': '0xBBBBBbb...', '8453': '0xBBBBBbb...' },
344
+ // LISTA_DAO: { '56': '0x...' },
345
+ // }
346
+
347
+ // Type: { [fork: string]: { [chainId: string]: string } }
348
+ ```
349
+
350
+ #### `morphoTypeMarkets()`
351
+
352
+ Market IDs (hashes) per protocol per chain.
353
+
354
+ ```ts
355
+ import { morphoTypeMarkets } from '@1delta/data-sdk'
356
+
357
+ const markets = morphoTypeMarkets()
358
+ // {
359
+ // MORPHO_BLUE: {
360
+ // '1': ['0xb323495f...', '0xc54d7ac...', ...],
361
+ // '8453': ['0x1234...', ...],
362
+ // },
363
+ // LISTA_DAO: {
364
+ // '56': ['0xabcd...', ...],
365
+ // },
366
+ // }
367
+
368
+ // Type: { [protocol: string]: { [chainId: string]: string[] } }
369
+ ```
370
+
371
+ #### `morphoOracles()`
372
+
373
+ Oracle info per market (keyed by market hash or chain).
374
+
375
+ ```ts
376
+ import { morphoOracles } from '@1delta/data-sdk'
377
+
378
+ const oracles = morphoOracles()
379
+ // {
380
+ // '0xb323495f...': [{
381
+ // oracle: '0x...',
382
+ // loanAsset: '0xA0b8...',
383
+ // collateralAsset: '0xC02a...',
384
+ // loanAssetDecimals: 6,
385
+ // collateralAssetDecimals: 18,
386
+ // }],
387
+ // }
388
+
389
+ // Type: { [key: string]: MrophoOracleInfo[] }
390
+ ```
391
+
392
+ #### `morphoTypeOracles()`
393
+
394
+ Oracle info grouped by chain then protocol.
395
+
396
+ ```ts
397
+ import { morphoTypeOracles } from '@1delta/data-sdk'
398
+
399
+ const oracles = morphoTypeOracles()
400
+ // {
401
+ // '1': {
402
+ // 'MORPHO_BLUE': [{ oracle, loanAsset, collateralAsset, ... }],
403
+ // },
404
+ // }
405
+
406
+ // Type: { [chainId: string]: { [protocol: string]: MrophoOracleInfo[] } }
407
+ ```
408
+
409
+ #### `morphoBundler3()`
410
+
411
+ Morpho Bundler3 and adapter contract addresses.
412
+
413
+ ```ts
414
+ import { morphoBundler3 } from '@1delta/data-sdk'
415
+
416
+ const bundlers = morphoBundler3()
417
+ // {
418
+ // '1': {
419
+ // bundler3: '0x...',
420
+ // generalAdapter1: '0x...',
421
+ // paraswapAdapter: '0x...',
422
+ // aaveV3CoreMigrationAdapter: '0x...',
423
+ // // ... other optional adapters
424
+ // },
425
+ // }
426
+
427
+ // Type: { [chainId: string]: MorphoBundler3ChainConfig }
428
+ ```
429
+
430
+ ---
431
+
432
+ ### Euler V2
433
+
434
+ #### `eulerConfigs()`
435
+
436
+ Core Euler V2 infrastructure addresses.
437
+
438
+ ```ts
439
+ import { eulerConfigs } from '@1delta/data-sdk'
440
+
441
+ const configs = eulerConfigs()
442
+ // {
443
+ // EULER_V2: {
444
+ // '1': {
445
+ // evc: '0x...',
446
+ // eVaultFactory: '0x...',
447
+ // protocolConfig: '0x...',
448
+ // vaultLens: '0x...',
449
+ // accountLens: '0x...',
450
+ // oracleLens: '0x...',
451
+ // irmLens: '0x...',
452
+ // utilsLens: '0x...',
453
+ // },
454
+ // },
455
+ // }
456
+
457
+ // Type: { [fork: string]: { [chainId: string]: EulerConfigEntry } }
458
+ ```
459
+
460
+ #### `eulerVaults()`
461
+
462
+ Vault addresses and their underlying assets.
463
+
464
+ ```ts
465
+ import { eulerVaults } from '@1delta/data-sdk'
466
+
467
+ const vaults = eulerVaults()
468
+ // {
469
+ // EULER_V2: {
470
+ // '1': [
471
+ // { underlying: '0xC02a...', vault: '0x...' },
472
+ // { underlying: '0xA0b8...', vault: '0x...' },
473
+ // ],
474
+ // },
475
+ // }
476
+
477
+ // Type: { [fork: string]: { [chainId: string]: Array<{ underlying: string; vault: string }> } }
478
+ ```
479
+
480
+ ---
481
+
482
+ ### Init Protocol
483
+
484
+ #### `initConfig()`
485
+
486
+ Init protocol pool configurations.
487
+
488
+ ```ts
489
+ import { initConfig } from '@1delta/data-sdk'
490
+
491
+ const config = initConfig()
492
+ // {
493
+ // INIT: {
494
+ // '5000': [
495
+ // { pool: '0x...', underlying: '0x...', modes: [1, 2] },
496
+ // ],
497
+ // },
498
+ // }
499
+
500
+ // Type: { [lender: string]: { [chainId: string]: Array<{ pool: string; underlying: string; modes: number[] }> } }
501
+ ```
502
+
503
+ ---
504
+
505
+ ### Lista DAO
506
+
507
+ #### `listaNativeProvider()`
508
+
509
+ Lista DAO native asset provider addresses.
510
+
511
+ ```ts
512
+ import { listaNativeProvider } from '@1delta/data-sdk'
513
+
514
+ const providers = listaNativeProvider()
515
+ // { '56': { nativeProvider: '0x...' } }
516
+
517
+ // Type: { [chainId: string]: { nativeProvider: string } }
518
+ ```
519
+
520
+ ---
521
+
522
+ ## Chain Data
523
+
524
+ #### `chains()`
525
+
526
+ Chain metadata for all supported networks.
527
+
528
+ ```ts
529
+ import { chains } from '@1delta/data-sdk'
530
+
531
+ const allChains = chains()
532
+ // {
533
+ // '1': {
534
+ // name: 'Ethereum Mainnet',
535
+ // chain: 'ETH',
536
+ // chainId: '1',
537
+ // rpc: ['https://...'],
538
+ // nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
539
+ // explorers: [{ name: 'Etherscan', url: 'https://etherscan.io', standard: 'EIP3091' }],
540
+ // enum: 'ETHEREUM',
541
+ // ...
542
+ // },
543
+ // '56': { name: 'BNB Smart Chain', ... },
544
+ // }
545
+
546
+ // Type: { [chainId: string]: ChainInfo }
547
+ ```
548
+
549
+ ---
550
+
551
+ ## Token Lists
552
+
553
+ Token data is fetched remotely from `github.com/1delta-DAO/token-lists`.
554
+
555
+ #### `fetchTokenList(chainId)`
556
+
557
+ ```ts
558
+ import { fetchTokenList } from '@1delta/data-sdk'
559
+
560
+ const tokens = await fetchTokenList('1')
561
+ // {
562
+ // '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2': {
563
+ // chainId: '1',
564
+ // name: 'Wrapped Ether',
565
+ // address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
566
+ // symbol: 'WETH',
567
+ // decimals: 18,
568
+ // logoURI: 'https://...',
569
+ // assetGroup: 'ETH',
570
+ // },
571
+ // ...
572
+ // }
573
+
574
+ // Type: { [address: string]: TokenListEntry }
575
+ ```
576
+
577
+ #### `fetchTokenLists(chainIds)`
578
+
579
+ Batch fetch token lists for multiple chains in parallel.
580
+
581
+ ```ts
582
+ import { fetchTokenLists } from '@1delta/data-sdk'
583
+
584
+ const lists = await fetchTokenLists(['1', '56', '42161'])
585
+ // { '1': { ... }, '56': { ... }, '42161': { ... } }
586
+
587
+ // Type: { [chainId: string]: TokenList }
588
+ ```
589
+
590
+ ---
591
+
592
+ ## Enumerating All Deployments
593
+
594
+ A common pattern for iterating over all lender+chain pairs:
595
+
596
+ ```ts
597
+ import { aavePools, compoundV2Pools, compoundV3Pools, morphoPools, eulerConfigs } from '@1delta/data-sdk'
598
+
599
+ const deployments: { lender: string; chainId: string }[] = []
600
+
601
+ // Aave forks: [fork] -> [chainId] -> pool config
602
+ for (const [lender, chains] of Object.entries(aavePools() ?? {})) {
603
+ for (const chainId of Object.keys(chains)) {
604
+ deployments.push({ lender, chainId })
605
+ }
606
+ }
607
+
608
+ // Compound V2 forks: [fork] -> [chainId] -> comptroller
609
+ for (const [lender, chains] of Object.entries(compoundV2Pools() ?? {})) {
610
+ for (const chainId of Object.keys(chains)) {
611
+ deployments.push({ lender, chainId })
612
+ }
613
+ }
614
+
615
+ // Compound V3: [chainId] -> [comet] -> address (note: different nesting)
616
+ for (const [chainId, comets] of Object.entries(compoundV3Pools() ?? {})) {
617
+ for (const lender of Object.keys(comets)) {
618
+ deployments.push({ lender, chainId })
619
+ }
620
+ }
621
+
622
+ // Morpho: [fork] -> [chainId] -> singleton address
623
+ for (const [lender, chains] of Object.entries(morphoPools() ?? {})) {
624
+ for (const chainId of Object.keys(chains)) {
625
+ deployments.push({ lender, chainId })
626
+ }
627
+ }
628
+
629
+ // Euler: [fork] -> [chainId] -> config
630
+ for (const [lender, chains] of Object.entries(eulerConfigs() ?? {})) {
631
+ for (const chainId of Object.keys(chains)) {
632
+ deployments.push({ lender, chainId })
633
+ }
634
+ }
635
+ ```
636
+
637
+ ---
638
+
639
+ ## Data Source
640
+
641
+ All deployment data originates from the `1delta-DAO/lender-metadata` GitHub repository and is loaded at runtime by `@1delta/initializer-sdk`. The data-sdk itself contains no hardcoded deployment data — it only provides the typed getter/setter interface to the global registry.
642
+
643
+ | Source file | Getter |
644
+ |-------------|--------|
645
+ | `config/aave-pools.json` | `aavePools()` |
646
+ | `config/compound-v2-pools.json` | `compoundV2Pools()` |
647
+ | `config/compound-v3-pools.json` | `compoundV3Pools()` |
648
+ | `config/morpho-pools.json` | `morphoPools()` |
649
+ | `config/euler-configs.json` | `eulerConfigs()` |
650
+ | `config/init-pools.json` | `initConfig()` |
651
+ | `data/aave-reserves.json` | `aaveReserves()` |
652
+ | `data/aave-tokens.json` | `aaveTokens()` |
653
+ | `data/compound-v2-reserves.json` | `compoundV2Reserves()` |
654
+ | `data/compound-v2-c-tokens.json` | `compoundV2Tokens()` |
655
+ | `data/compound-v2-tokens.json` | `compoundV2TokenArray()` |
656
+ | `data/compound-v3-base-data.json` | `compoundV3BaseData()` |
657
+ | `data/compound-v3-reserves.json` | `compoundV3Reserves()` |
658
+ | `data/euler-vaults.json` | `eulerVaults()` |
package/dist/index.js CHANGED
@@ -28,10 +28,11 @@ globalThis[GLOBAL_LENDER_DATA_KEY] = {
28
28
  compoundV3Reserves: {},
29
29
  aaveOracles: {},
30
30
  compoundV2Oracles: {},
31
- compoundV3Oracles: {},
31
+ compoundV3OraclesData: {},
32
32
  morphoOracles: {},
33
33
  morphoTypeOracles: {},
34
34
  morphoTypeMarkets: {},
35
+ aaveOraclesConfig: {},
35
36
  aaveWethGateway: {},
36
37
  morphoBundler3: {},
37
38
  listaNativeProvider: {},
@@ -47,7 +48,7 @@ function initializeLenderData({
47
48
  aavePoolsOverride,
48
49
  aaveOraclesOverride,
49
50
  compoundV2OraclesOverride,
50
- compoundV3OraclesOverride,
51
+ compoundV3OraclesDataOverride,
51
52
  compoundV3PoolsOverride,
52
53
  compoundV3BaseDataOverride,
53
54
  morphoPoolsOverride,
@@ -61,6 +62,7 @@ function initializeLenderData({
61
62
  morphoOraclesOverride,
62
63
  morphoTypeOraclesOverride,
63
64
  morphoTypeMarketsOverride,
65
+ aaveOraclesConfigOverride,
64
66
  aaveWethGatewayOverride,
65
67
  morphoBundler3Override,
66
68
  listaNativeProviderOverride,
@@ -72,7 +74,7 @@ function initializeLenderData({
72
74
  if (aaveTokensOverride) data.aaveTokens = aaveTokensOverride;
73
75
  if (aaveOraclesOverride) data.aaveOracles = aaveOraclesOverride;
74
76
  if (compoundV2OraclesOverride) data.compoundV2Oracles = compoundV2OraclesOverride;
75
- if (compoundV3OraclesOverride) data.compoundV3Oracles = compoundV3OraclesOverride;
77
+ if (compoundV3OraclesDataOverride) data.compoundV3OraclesData = compoundV3OraclesDataOverride;
76
78
  if (aavePoolsOverride) data.aavePools = aavePoolsOverride;
77
79
  if (compoundV3PoolsOverride) data.compoundV3Pools = compoundV3PoolsOverride;
78
80
  if (morphoPoolsOverride) data.morphoPools = morphoPoolsOverride;
@@ -87,6 +89,7 @@ function initializeLenderData({
87
89
  if (morphoOraclesOverride) data.morphoOracles = morphoOraclesOverride;
88
90
  if (morphoTypeOraclesOverride) data.morphoTypeOracles = morphoTypeOraclesOverride;
89
91
  if (morphoTypeMarketsOverride) data.morphoTypeMarkets = morphoTypeMarketsOverride;
92
+ if (aaveOraclesConfigOverride) data.aaveOraclesConfig = aaveOraclesConfigOverride;
90
93
  if (aaveWethGatewayOverride) data.aaveWethGateway = aaveWethGatewayOverride;
91
94
  if (morphoBundler3Override) data.morphoBundler3 = morphoBundler3Override;
92
95
  if (listaNativeProviderOverride) data.listaNativeProvider = listaNativeProviderOverride;
@@ -98,7 +101,7 @@ var aaveTokens = () => getGlobalData2()?.aaveTokens;
98
101
  var aavePools = () => getGlobalData2()?.aavePools;
99
102
  var aaveOracles = () => getGlobalData2()?.aaveOracles;
100
103
  var compoundV2Oracles = () => getGlobalData2()?.compoundV2Oracles;
101
- var compoundV3Oracles = () => getGlobalData2()?.compoundV3Oracles;
104
+ var compoundV3OraclesData = () => getGlobalData2()?.compoundV3OraclesData;
102
105
  var morphoOracles = () => getGlobalData2()?.morphoOracles;
103
106
  var morphoTypeOracles = () => getGlobalData2()?.morphoTypeOracles;
104
107
  var morphoTypeMarkets = () => getGlobalData2()?.morphoTypeMarkets;
@@ -112,6 +115,7 @@ var compoundV2Pools = () => getGlobalData2()?.compoundV2Pools;
112
115
  var compoundV2Tokens = () => getGlobalData2()?.compoundV2Tokens;
113
116
  var compoundV2TokenArray = () => getGlobalData2()?.compoundV2TokenArray;
114
117
  var initConfig = () => getGlobalData2()?.initConfig;
118
+ var aaveOraclesConfig = () => getGlobalData2()?.aaveOraclesConfig;
115
119
  var aaveWethGateway = () => getGlobalData2()?.aaveWethGateway;
116
120
  var morphoBundler3 = () => getGlobalData2()?.morphoBundler3;
117
121
  var listaNativeProvider = () => getGlobalData2()?.listaNativeProvider;
@@ -136,6 +140,7 @@ async function fetchTokenLists(chainIds) {
136
140
  }
137
141
 
138
142
  exports.aaveOracles = aaveOracles;
143
+ exports.aaveOraclesConfig = aaveOraclesConfig;
139
144
  exports.aavePools = aavePools;
140
145
  exports.aaveReserves = aaveReserves;
141
146
  exports.aaveTokens = aaveTokens;
@@ -148,7 +153,7 @@ exports.compoundV2TokenArray = compoundV2TokenArray;
148
153
  exports.compoundV2Tokens = compoundV2Tokens;
149
154
  exports.compoundV3BaseData = compoundV3BaseData;
150
155
  exports.compoundV3Bulker = compoundV3Bulker;
151
- exports.compoundV3Oracles = compoundV3Oracles;
156
+ exports.compoundV3OraclesData = compoundV3OraclesData;
152
157
  exports.compoundV3Pools = compoundV3Pools;
153
158
  exports.compoundV3Reserves = compoundV3Reserves;
154
159
  exports.eulerConfigs = eulerConfigs;
package/dist/index.mjs CHANGED
@@ -26,10 +26,11 @@ globalThis[GLOBAL_LENDER_DATA_KEY] = {
26
26
  compoundV3Reserves: {},
27
27
  aaveOracles: {},
28
28
  compoundV2Oracles: {},
29
- compoundV3Oracles: {},
29
+ compoundV3OraclesData: {},
30
30
  morphoOracles: {},
31
31
  morphoTypeOracles: {},
32
32
  morphoTypeMarkets: {},
33
+ aaveOraclesConfig: {},
33
34
  aaveWethGateway: {},
34
35
  morphoBundler3: {},
35
36
  listaNativeProvider: {},
@@ -45,7 +46,7 @@ function initializeLenderData({
45
46
  aavePoolsOverride,
46
47
  aaveOraclesOverride,
47
48
  compoundV2OraclesOverride,
48
- compoundV3OraclesOverride,
49
+ compoundV3OraclesDataOverride,
49
50
  compoundV3PoolsOverride,
50
51
  compoundV3BaseDataOverride,
51
52
  morphoPoolsOverride,
@@ -59,6 +60,7 @@ function initializeLenderData({
59
60
  morphoOraclesOverride,
60
61
  morphoTypeOraclesOverride,
61
62
  morphoTypeMarketsOverride,
63
+ aaveOraclesConfigOverride,
62
64
  aaveWethGatewayOverride,
63
65
  morphoBundler3Override,
64
66
  listaNativeProviderOverride,
@@ -70,7 +72,7 @@ function initializeLenderData({
70
72
  if (aaveTokensOverride) data.aaveTokens = aaveTokensOverride;
71
73
  if (aaveOraclesOverride) data.aaveOracles = aaveOraclesOverride;
72
74
  if (compoundV2OraclesOverride) data.compoundV2Oracles = compoundV2OraclesOverride;
73
- if (compoundV3OraclesOverride) data.compoundV3Oracles = compoundV3OraclesOverride;
75
+ if (compoundV3OraclesDataOverride) data.compoundV3OraclesData = compoundV3OraclesDataOverride;
74
76
  if (aavePoolsOverride) data.aavePools = aavePoolsOverride;
75
77
  if (compoundV3PoolsOverride) data.compoundV3Pools = compoundV3PoolsOverride;
76
78
  if (morphoPoolsOverride) data.morphoPools = morphoPoolsOverride;
@@ -85,6 +87,7 @@ function initializeLenderData({
85
87
  if (morphoOraclesOverride) data.morphoOracles = morphoOraclesOverride;
86
88
  if (morphoTypeOraclesOverride) data.morphoTypeOracles = morphoTypeOraclesOverride;
87
89
  if (morphoTypeMarketsOverride) data.morphoTypeMarkets = morphoTypeMarketsOverride;
90
+ if (aaveOraclesConfigOverride) data.aaveOraclesConfig = aaveOraclesConfigOverride;
88
91
  if (aaveWethGatewayOverride) data.aaveWethGateway = aaveWethGatewayOverride;
89
92
  if (morphoBundler3Override) data.morphoBundler3 = morphoBundler3Override;
90
93
  if (listaNativeProviderOverride) data.listaNativeProvider = listaNativeProviderOverride;
@@ -96,7 +99,7 @@ var aaveTokens = () => getGlobalData2()?.aaveTokens;
96
99
  var aavePools = () => getGlobalData2()?.aavePools;
97
100
  var aaveOracles = () => getGlobalData2()?.aaveOracles;
98
101
  var compoundV2Oracles = () => getGlobalData2()?.compoundV2Oracles;
99
- var compoundV3Oracles = () => getGlobalData2()?.compoundV3Oracles;
102
+ var compoundV3OraclesData = () => getGlobalData2()?.compoundV3OraclesData;
100
103
  var morphoOracles = () => getGlobalData2()?.morphoOracles;
101
104
  var morphoTypeOracles = () => getGlobalData2()?.morphoTypeOracles;
102
105
  var morphoTypeMarkets = () => getGlobalData2()?.morphoTypeMarkets;
@@ -110,6 +113,7 @@ var compoundV2Pools = () => getGlobalData2()?.compoundV2Pools;
110
113
  var compoundV2Tokens = () => getGlobalData2()?.compoundV2Tokens;
111
114
  var compoundV2TokenArray = () => getGlobalData2()?.compoundV2TokenArray;
112
115
  var initConfig = () => getGlobalData2()?.initConfig;
116
+ var aaveOraclesConfig = () => getGlobalData2()?.aaveOraclesConfig;
113
117
  var aaveWethGateway = () => getGlobalData2()?.aaveWethGateway;
114
118
  var morphoBundler3 = () => getGlobalData2()?.morphoBundler3;
115
119
  var listaNativeProvider = () => getGlobalData2()?.listaNativeProvider;
@@ -133,4 +137,4 @@ async function fetchTokenLists(chainIds) {
133
137
  return Object.fromEntries(results);
134
138
  }
135
139
 
136
- export { aaveOracles, aavePools, aaveReserves, aaveTokens, aaveWethGateway, chains, compoundV2Oracles, compoundV2Pools, compoundV2Reserves, compoundV2TokenArray, compoundV2Tokens, compoundV3BaseData, compoundV3Bulker, compoundV3Oracles, compoundV3Pools, compoundV3Reserves, eulerConfigs, eulerVaults, fetchTokenList, fetchTokenLists, initConfig, initializeChainData, initializeLenderData, listaNativeProvider, morphoBundler3, morphoOracles, morphoPools, morphoTypeMarkets, morphoTypeOracles };
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 };
package/dist/lending.d.ts CHANGED
@@ -71,10 +71,14 @@ type OracleMap = {
71
71
  [chainId: string]: string;
72
72
  };
73
73
  };
74
- type OraclePerAssetMap = {
74
+ type CompoundV3OracleEntry = {
75
+ oracle: string;
76
+ description: string;
77
+ };
78
+ type CompoundV3OracleDataMap = {
75
79
  [lender: string]: {
76
80
  [chainId: string]: {
77
- [assetAddress: string]: string;
81
+ [assetAddress: string]: CompoundV3OracleEntry;
78
82
  };
79
83
  };
80
84
  };
@@ -128,6 +132,19 @@ type MorphoTypeMarkets = {
128
132
  [chainId: string]: string[];
129
133
  };
130
134
  };
135
+ type AaveOraclesConfigEntry = {
136
+ /** Base asset address (if lender uses non-USD base) */
137
+ baseAsset?: string;
138
+ /** Fallback BASE_CURRENCY_UNIT as string (converted to bigint at usage) */
139
+ baseCurrencyUnit?: string;
140
+ /** Another AAVE fork on the same chain to use as source for base asset USD price */
141
+ baseAssetSource?: string;
142
+ };
143
+ type AaveOraclesConfigType = {
144
+ [lender: string]: {
145
+ [chainId: string]: AaveOraclesConfigEntry;
146
+ };
147
+ };
131
148
  type AaveWethGatewayType = {
132
149
  [fork: string]: {
133
150
  [chainId: string]: string;
@@ -158,12 +175,12 @@ type EulerVaultsType = {
158
175
  };
159
176
  };
160
177
  /** Override datas used in the SDK - works across all module instances */
161
- export declare function initializeLenderData({ aaveTokensOverride, aavePoolsOverride, aaveOraclesOverride, compoundV2OraclesOverride, compoundV3OraclesOverride, compoundV3PoolsOverride, compoundV3BaseDataOverride, morphoPoolsOverride, compoundV2TokensOverride, compoundV2TokenArrayOverride, compoundV2PoolsOverride, initConfigOverride, aaveReservesOverride, compoundV3ReservesOverride, compoundV2ReservesOverride, morphoOraclesOverride, morphoTypeOraclesOverride, morphoTypeMarketsOverride, aaveWethGatewayOverride, morphoBundler3Override, listaNativeProviderOverride, compoundV3BulkerOverride, eulerConfigsOverride, eulerVaultsOverride, }: {
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, }: {
162
179
  aaveTokensOverride?: AaveTokensType;
163
180
  aavePoolsOverride?: AavePoolsType;
164
181
  aaveOraclesOverride?: OracleMap;
165
182
  compoundV2OraclesOverride?: OracleMap;
166
- compoundV3OraclesOverride?: OraclePerAssetMap;
183
+ compoundV3OraclesDataOverride?: CompoundV3OracleDataMap;
167
184
  compoundV3PoolsOverride?: CompoundV3PoolsType;
168
185
  compoundV3BaseDataOverride?: CompoundV3BaseDataType;
169
186
  morphoPoolsOverride?: MorphoPoolsType;
@@ -177,6 +194,7 @@ export declare function initializeLenderData({ aaveTokensOverride, aavePoolsOver
177
194
  morphoOraclesOverride?: MorphoOracles;
178
195
  morphoTypeOraclesOverride?: MorphoTypeOracles;
179
196
  morphoTypeMarketsOverride?: MorphoTypeMarkets;
197
+ aaveOraclesConfigOverride?: AaveOraclesConfigType;
180
198
  aaveWethGatewayOverride?: AaveWethGatewayType;
181
199
  morphoBundler3Override?: MorphoBundler3Type;
182
200
  listaNativeProviderOverride?: ListaNativeProviderType;
@@ -188,7 +206,7 @@ export declare const aaveTokens: () => AaveTokensType;
188
206
  export declare const aavePools: () => AavePoolsType;
189
207
  export declare const aaveOracles: () => OracleMap;
190
208
  export declare const compoundV2Oracles: () => OracleMap;
191
- export declare const compoundV3Oracles: () => OraclePerAssetMap;
209
+ export declare const compoundV3OraclesData: () => CompoundV3OracleDataMap;
192
210
  export declare const morphoOracles: () => MorphoOracles;
193
211
  export declare const morphoTypeOracles: () => MorphoTypeOracles;
194
212
  export declare const morphoTypeMarkets: () => MorphoTypeMarkets;
@@ -202,6 +220,7 @@ export declare const compoundV2Pools: () => CompoundV2PoolsType;
202
220
  export declare const compoundV2Tokens: () => CompoundV2TokensType;
203
221
  export declare const compoundV2TokenArray: () => CompoundV2TokenArrayType;
204
222
  export declare const initConfig: () => InitConfigType;
223
+ export declare const aaveOraclesConfig: () => AaveOraclesConfigType;
205
224
  export declare const aaveWethGateway: () => AaveWethGatewayType;
206
225
  export declare const morphoBundler3: () => MorphoBundler3Type;
207
226
  export declare const listaNativeProvider: () => ListaNativeProviderType;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "0.0.17",
7
+ "version": "0.0.19",
8
8
  "description": "Hold and initialize lending protocol data across a stack",
9
9
  "files": [
10
10
  "dist"