@avaprotocol/protocols 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/index.cjs +270 -36
  3. package/dist/index.js +270 -36
  4. package/dist/protocols/aave-v3-reserves.d.ts +3 -0
  5. package/dist/protocols/aave-v3-reserves.d.ts.map +1 -0
  6. package/dist/protocols/aave-v3.d.ts +1 -0
  7. package/dist/protocols/aave-v3.d.ts.map +1 -1
  8. package/dist/protocols/chainlink.d.ts +6 -1
  9. package/dist/protocols/chainlink.d.ts.map +1 -1
  10. package/dist/protocols/erc20.d.ts +7 -0
  11. package/dist/protocols/erc20.d.ts.map +1 -1
  12. package/dist/protocols/index.d.ts +13 -1
  13. package/dist/protocols/index.d.ts.map +1 -1
  14. package/dist/protocols/types.d.ts +25 -0
  15. package/dist/protocols/types.d.ts.map +1 -1
  16. package/dist/tokens/base-sepolia.cjs +93 -0
  17. package/dist/tokens/base-sepolia.d.ts +5 -0
  18. package/dist/tokens/base-sepolia.d.ts.map +1 -0
  19. package/dist/tokens/base-sepolia.js +65 -0
  20. package/dist/tokens/base.cjs +358 -0
  21. package/dist/tokens/base.d.ts +5 -0
  22. package/dist/tokens/base.d.ts.map +1 -0
  23. package/dist/tokens/base.js +330 -0
  24. package/dist/tokens/bnb-mainnet.cjs +83 -0
  25. package/dist/tokens/bnb-mainnet.d.ts +5 -0
  26. package/dist/tokens/bnb-mainnet.d.ts.map +1 -0
  27. package/dist/tokens/bnb-mainnet.js +55 -0
  28. package/dist/tokens/ethereum.cjs +894 -0
  29. package/dist/tokens/ethereum.d.ts +5 -0
  30. package/dist/tokens/ethereum.d.ts.map +1 -0
  31. package/dist/tokens/ethereum.js +866 -0
  32. package/dist/tokens/index.d.ts.map +1 -1
  33. package/dist/tokens/per-chain.d.ts +30 -0
  34. package/dist/tokens/per-chain.d.ts.map +1 -0
  35. package/dist/tokens/sepolia.cjs +105 -0
  36. package/dist/tokens/sepolia.d.ts +5 -0
  37. package/dist/tokens/sepolia.d.ts.map +1 -0
  38. package/dist/tokens/sepolia.js +77 -0
  39. package/package.json +29 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,47 @@
1
1
  # @avaprotocol/protocols
2
2
 
3
+ ## 0.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 88236bb: Add AAVE V3 reserve catalog (`aaveV3.reserves`).
8
+
9
+ Per-chain list of every AAVE V3 reserve as `{ symbol, underlying, aToken, variableDebtToken, decimals }`, generated from chain via `Pool.getReservesList` + `Pool.getReserveData` (`yarn generate:aave-reserves`). Covers Ethereum, Base, BNB, Sepolia, and Base Sepolia. Lets consumers build AAVE supply-token pickers (underlying → aToken receipt) without an on-chain round-trip. Adds the `AaveV3Reserve` / `AaveV3ReservesByChain` types.
10
+
11
+ ## 0.6.0
12
+
13
+ ### Minor Changes
14
+
15
+ - f81f84b: Per-chain token subpath exports + new ERC-20 / Chainlink ABI fragments and event topics.
16
+
17
+ **Subpath exports.** Each chain's token catalog is now importable on its own — consumers that only need one chain's tokens get just that file in their bundle instead of all five chains' worth via the root `Tokens` namespace:
18
+
19
+ ```ts
20
+ import { tokens, chainId } from "@avaprotocol/protocols/tokens/sepolia";
21
+ const usdc = tokens.USDC?.address;
22
+ ```
23
+
24
+ Available subpaths: `./tokens/ethereum`, `./tokens/sepolia`, `./tokens/base`, `./tokens/base-sepolia`, `./tokens/bnb-mainnet`. Each module exports `chainId` and a frozen, symbol-keyed `tokens` map of the existing `TokenChainEntry` shape.
25
+
26
+ The root `import { Tokens } from "@avaprotocol/protocols"` keeps working unchanged — the per-chain modules are additive.
27
+
28
+ **`sideEffects: false`** declared in `package.json` so bundlers can tree-shake unused protocol modules.
29
+
30
+ **ERC-20 additions** (`Protocols.erc20`):
31
+
32
+ - `transferAbi` — single-fragment ABI for `transfer(address,uint256)`
33
+ - `symbolAbi` — single-fragment ABI for `symbol()`
34
+ - `decimalsAbi` — single-fragment ABI for `decimals()`
35
+ - `transferEventAbi` — single-fragment event ABI for `Transfer(address indexed, address indexed, uint256)`
36
+ - `eventTopics.Transfer` — pre-computed keccak256 of the canonical Transfer event signature
37
+
38
+ **Chainlink additions** (`Protocols.chainlink`):
39
+
40
+ - `answerUpdatedEventAbi` — single-fragment event ABI for `AnswerUpdated(int256 indexed, uint256 indexed, uint256)`
41
+ - `eventTopics.AnswerUpdated` — pre-computed keccak256 of the canonical AnswerUpdated event signature
42
+
43
+ These let downstream consumers (templates, SDK tests, summarizers) drop hand-rolled ABI fragments and topic hashes that were re-derived across repos.
44
+
3
45
  ## 0.5.0
4
46
 
5
47
  ### Minor Changes
package/dist/index.cjs CHANGED
@@ -54,6 +54,124 @@ var Chains = Object.freeze({
54
54
  BnbMainnet: 56
55
55
  });
56
56
 
57
+ // src/protocols/aave-v3-reserves.ts
58
+ var aaveV3Reserves = {
59
+ [Chains.EthereumMainnet]: [
60
+ { symbol: "1INCH", underlying: "0x111111111117dC0aa78b770fA6A738034120C302", aToken: "0x71Aef7b30728b9BB371578f36c5A1f1502a5723e", variableDebtToken: "0xA38fCa8c6Bf9BdA52E76EB78f08CaA3BE7c5A970", decimals: 18 },
61
+ { symbol: "AAVE", underlying: "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", aToken: "0xA700b4eB416Be35b2911fd5Dee80678ff64fF6C9", variableDebtToken: "0xBae535520Abd9f8C85E58929e0006A2c8B372F74", decimals: 18 },
62
+ { symbol: "BAL", underlying: "0xba100000625a3754423978a60c9317c58a424e3D", aToken: "0x2516E7B3F76294e03C42AA4c5b5b4DCE9C436fB8", variableDebtToken: "0x3D3efceb4Ff0966D34d9545D3A2fa2dcdBf451f2", decimals: 18 },
63
+ { symbol: "BTC.b", underlying: "0xB0F70C0bD6FD87dbEb7C10dC692a2a6106817072", aToken: "0x12b70410D60f926558245f769059eA3Fc7A7353E", variableDebtToken: "0x6C67e666BB954d4bE23e9F1cE20e7E8699d29339", decimals: 8 },
64
+ { symbol: "cbBTC", underlying: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", aToken: "0x5c647cE0Ae10658ec44FA4E11A51c96e94efd1Dd", variableDebtToken: "0xeB284A70557EFe3591b9e6D9D720040E02c54a4d", decimals: 8 },
65
+ { symbol: "cbETH", underlying: "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", aToken: "0x977b6fc5dE62598B08C85AC8Cf2b745874E8b78c", variableDebtToken: "0x0c91bcA95b5FE69164cE583A2ec9429A569798Ed", decimals: 18 },
66
+ { symbol: "CRV", underlying: "0xD533a949740bb3306d119CC777fa900bA034cd52", aToken: "0x7B95Ec873268a6BFC6427e7a28e396Db9D0ebc65", variableDebtToken: "0x1b7D3F4b3c032a5AE656e30eeA4e8E1Ba376068F", decimals: 18 },
67
+ { symbol: "crvUSD", underlying: "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E", aToken: "0xb82fa9f31612989525992FCfBB09AB22Eff5c85A", variableDebtToken: "0x028f7886F3e937f8479efaD64f31B3fE1119857a", decimals: 18 },
68
+ { symbol: "DAI", underlying: "0x6B175474E89094C44Da98b954EedeAC495271d0F", aToken: "0x018008bfb33d285247A21d44E50697654f754e63", variableDebtToken: "0xcF8d0c70c850859266f5C338b38F9D663181C314", decimals: 18 },
69
+ { symbol: "eBTC", underlying: "0x657e8C867D8B37dCC18fA4Caead9C45EB088C642", aToken: "0x5fefd7069a7D91d01f269DADE14526CCF3487810", variableDebtToken: "0x47eD0509e64615c0d5C6d39AF1B38D02Bc9fE58f", decimals: 8 },
70
+ { symbol: "ENS", underlying: "0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72", aToken: "0x545bD6c032eFdde65A377A6719DEF2796C8E0f2e", variableDebtToken: "0xd180D7fdD4092f07428eFE801E17BC03576b3192", decimals: 18 },
71
+ { symbol: "ETHx", underlying: "0xA35b1B31Ce002FBF2058D22F30f95D405200A15b", aToken: "0x1c0E06a0b1A4c160c17545FF2A951bfcA57C0002", variableDebtToken: "0x08a8Dc81AeA67F84745623aC6c72CDA3967aab8b", decimals: 18 },
72
+ { symbol: "EURC", underlying: "0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c", aToken: "0xAA6e91C82942aeAE040303Bf96c15a6dBcB82CA0", variableDebtToken: "0x6c82c66622Eb360FC973D3F492f9D8E9eA538b08", decimals: 6 },
73
+ { symbol: "eUSDe", underlying: "0x90D2af7d622ca3141efA4d8f1F24d86E5974Cc8F", aToken: "0x5F9190496e0DFC831C3bd307978de4a245E2F5cD", variableDebtToken: "0x48351fCc9536dA440AE9471220F6dC921b0eB703", decimals: 18 },
74
+ { symbol: "ezETH", underlying: "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", aToken: "0x4E2a4d9B3DF7Aae73b418Bd39F3af9e148E3F479", variableDebtToken: "0x730318dB7b830d324fC3fEDDB1d212Ec64bD3141", decimals: 18 },
75
+ { symbol: "FBTC", underlying: "0xC96dE26018A54D51c097160568752c4E3BD6C364", aToken: "0xcCA43ceF272c30415866914351fdfc3E881bb7c2", variableDebtToken: "0x4A35FD7F93324Cc48bc12190D3F37493437b1Eff", decimals: 8 },
76
+ { symbol: "FRAX", underlying: "0x853d955aCEf822Db058eb8505911ED77F175b99e", aToken: "0xd4e245848d6E1220DBE62e155d89fa327E43CB06", variableDebtToken: "0x88B8358F5BC87c2D7E116cCA5b65A9eEb2c5EA3F", decimals: 18 },
77
+ { symbol: "FXS", underlying: "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0", aToken: "0x82F9c5ad306BBa1AD0De49bB5FA6F01bf61085ef", variableDebtToken: "0x68e9f0aD4e6f8F5DB70F6923d4d6d5b225B83b16", decimals: 18 },
78
+ { symbol: "GHO", underlying: "0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f", aToken: "0x00907f9921424583e7ffBfEdf84F92B7B2Be4977", variableDebtToken: "0x786dBff3f1292ae8F92ea68Cf93c30b34B1ed04B", decimals: 18 },
79
+ { symbol: "KNC", underlying: "0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202", aToken: "0x5b502e3796385E1e9755d7043B9C945C3aCCeC9C", variableDebtToken: "0x253127Ffc04981cEA8932F406710661c2f2c3fD2", decimals: 18 },
80
+ { symbol: "LBTC", underlying: "0x8236a87084f8B84306f72007F36F2618A5634494", aToken: "0x65906988ADEe75306021C417a1A3458040239602", variableDebtToken: "0x68aeB290C7727D899B47c56d1c96AEAC475cD0dD", decimals: 8 },
81
+ { symbol: "LDO", underlying: "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32", aToken: "0x9A44fd41566876A39655f74971a3A6eA0a17a454", variableDebtToken: "0xc30808705C01289A3D306ca9CAB081Ba9114eC82", decimals: 18 },
82
+ { symbol: "LINK", underlying: "0x514910771AF9Ca656af840dff83E8264EcF986CA", aToken: "0x5E8C8A7243651DB1384C0dDfDbE39761E8e7E51a", variableDebtToken: "0x4228F8895C7dDA20227F6a5c6751b8Ebf19a6ba8", decimals: 18 },
83
+ { symbol: "LUSD", underlying: "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", aToken: "0x3Fe6a295459FAe07DF8A0ceCC36F37160FE86AA9", variableDebtToken: "0x33652e48e4B74D18520f11BfE58Edd2ED2cEc5A2", decimals: 18 },
84
+ { symbol: "MKR", underlying: "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2", aToken: "0x8A458A9dc9048e005d22849F470891b840296619", variableDebtToken: "0x6Efc73E54E41b27d2134fF9f98F15550f30DF9B1", decimals: 18 },
85
+ { symbol: "mUSD", underlying: "0xacA92E438df0B2401fF60dA7E4337B687a2435DA", aToken: "0xAa0200d169fF3ba9385c12E073c5d1d30434AE7b", variableDebtToken: "0xE35e6A0D3AbC28289f5d4C2d262a133Df936b98D", decimals: 6 },
86
+ { symbol: "osETH", underlying: "0xf1C9acDc66974dFB6dEcB12aA385b9cD01190E38", aToken: "0x927709711794F3De5DdBF1D176bEE2D55Ba13c21", variableDebtToken: "0x8838eefF2af391863E1Bb8b1dF563F86743a8470", decimals: 18 },
87
+ { symbol: "PT-eUSDE-14AUG2025", underlying: "0x14Bdc3A3AE09f5518b923b69489CBcAfB238e617", aToken: "0x2eDff5AF94334fBd7C38ae318edf1c40e072b73B", variableDebtToken: "0x22517fE16DEd08e52E7EA3423A2EA4995b1f1731", decimals: 18 },
88
+ { symbol: "PT-eUSDE-29MAY2025", underlying: "0x50D2C7992b802Eef16c04FeADAB310f31866a545", aToken: "0x4B0821e768Ed9039a70eD1E80E15E76a5bE5Df5F", variableDebtToken: "0x3c20fbFD32243Dd9899301C84bCe17413EeE0A0C", decimals: 18 },
89
+ { symbol: "PT-srUSDe-25JUN2026", underlying: "0x619D75E3b790eBC21c289f2805Bb7177A7D732E2", aToken: "0xA78Eba24D89e70A03ddB7AC195A15E53315aA5b4", variableDebtToken: "0x9Ba896531F878Ed5f0A4F73E82d63bA7b424F910", decimals: 18 },
90
+ { symbol: "PT-srUSDe-2APR2026", underlying: "0x9Bf45ab47747F4B4dD09B3C2c73953484b4eB375", aToken: "0x1241ec22C9BdF16BA1Eb636F2a8de7e28A4343Cf", variableDebtToken: "0xacD3d3FaCeA0424984F662827B988f4581a3cE31", decimals: 18 },
91
+ { symbol: "PT-sUSDE-25SEP2025", underlying: "0x9F56094C450763769BA0EA9Fe2876070c0fD5F77", aToken: "0x5f4a0873a3A02f7C0CB0e13a1d4362a1AD90e751", variableDebtToken: "0xc9AD8Dd111e6384128146467aAf92B81EC422848", decimals: 18 },
92
+ { symbol: "PT-sUSDE-27NOV2025", underlying: "0xe6A934089BBEe34F832060CE98848359883749B3", aToken: "0x285866acB0d60105B4Ed350a463361c2d9afA0E2", variableDebtToken: "0x690Df181701C11C53EA33bBF303C25834b66bD14", decimals: 18 },
93
+ { symbol: "PT-sUSDE-31JUL2025", underlying: "0x3b3fB9C57858EF816833dC91565EFcd85D96f634", aToken: "0xDE6eF6CB4aBd3A473ffC2942eEf5D84536F8E864", variableDebtToken: "0x8C6FeaF5d58BA1A6541F9c4aF685f62bFCBaC3b1", decimals: 18 },
94
+ { symbol: "PT-sUSDE-5FEB2026", underlying: "0xE8483517077afa11A9B07f849cee2552f040d7b2", aToken: "0xbe54767735fB7Acca2aa7E2d209a6f705073536D", variableDebtToken: "0xA803414f84fCEF00e745bE7CC2A315908927f15D", decimals: 18 },
95
+ { symbol: "PT-sUSDE-7MAY2026", underlying: "0x3de0ff76E8b528C092d47b9DaC775931cef80F49", aToken: "0x81b76ff3FeD28BA0B4a5D4c76Bd5C13Bd0641d86", variableDebtToken: "0x762Edb8D79b97487F82093f85059e42EeEf61E9e", decimals: 18 },
96
+ { symbol: "PT-USDe-25SEP2025", underlying: "0xBC6736d346a5eBC0dEbc997397912CD9b8FAe10a", aToken: "0x38A5357Ce55c81add62aBc84Fb32981e2626ADEf", variableDebtToken: "0x0D8486E1CAbf3C9407B3DdA0cfc4d9C3101fB683", decimals: 18 },
97
+ { symbol: "PT-USDe-27NOV2025", underlying: "0x62C6E813b9589C3631Ba0Cdb013acdB8544038B7", aToken: "0x38C503a438185cDE29b5cF4dC1442FD6F074F1cc", variableDebtToken: "0x2CE7e7b238985A8aD3863De03F200B245B0c1216", decimals: 18 },
98
+ { symbol: "PT-USDe-31JUL2025", underlying: "0x917459337CaAC939D41d7493B3999f571D20D667", aToken: "0x312ffC57778CEfa11989733e6E08143E7E229c1c", variableDebtToken: "0xd90DA2Df915B87fE1621A7F2201FbF4ff2cCA031", decimals: 18 },
99
+ { symbol: "PT-USDe-5FEB2026", underlying: "0x1F84a51296691320478c98b8d77f2Bbd17D34350", aToken: "0xE728577e9a1Fe7032bc309B4541F58f45443866e", variableDebtToken: "0x9D244A99801dc05cbC04183769c17056B8A1Ad53", decimals: 18 },
100
+ { symbol: "PT-USDe-7MAY2026", underlying: "0xAeBf0Bb9f57E89260d57f31AF34eB58657d96Ce0", aToken: "0xE036478Da9A7ed89b56FE39A06e1FC1a4b38D4Ea", variableDebtToken: "0x04142fc546D59838852873bba5C8827601A13FC8", decimals: 18 },
101
+ { symbol: "PT-USDG-28MAY2026", underlying: "0x9db38D74a0D29380899aD354121DfB521aDb0548", aToken: "0xA9ecb0503075124cc0B786096849A331FBe9EE6D", variableDebtToken: "0x1a83eCA2d3b0cea2595Fb11Ec60cb2D428217C2e", decimals: 6 },
102
+ { symbol: "PYUSD", underlying: "0x6c3ea9036406852006290770BEdFcAbA0e23A0e8", aToken: "0x0C0d01AbF3e6aDfcA0989eBbA9d6e85dD58EaB1E", variableDebtToken: "0x57B67e4DE077085Fd0AF2174e9c14871BE664546", decimals: 6 },
103
+ { symbol: "rETH", underlying: "0xae78736Cd615f374D3085123A210448E74Fc6393", aToken: "0xCc9EE9483f662091a1de4795249E24aC0aC2630f", variableDebtToken: "0xae8593DD575FE29A9745056aA91C4b746eee62C8", decimals: 18 },
104
+ { symbol: "RLUSD", underlying: "0x8292Bb45bf1Ee4d140127049757C2E0fF06317eD", aToken: "0xFa82580c16A31D0c1bC632A36F82e83EfEF3Eec0", variableDebtToken: "0xBdFe7aD7976d5d7E0965ea83a81Ca1bCfF7e84a9", decimals: 18 },
105
+ { symbol: "RPL", underlying: "0xD33526068D116cE69F19A9ee46F0bd304F21A51f", aToken: "0xB76CF92076adBF1D9C39294FA8e7A67579FDe357", variableDebtToken: "0x8988ECA19D502fd8b9CCd03fA3bD20a6f599bc2A", decimals: 18 },
106
+ { symbol: "rsETH", underlying: "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", aToken: "0x2D62109243b87C4bA3EE7bA1D91B0dD0A074d7b1", variableDebtToken: "0x6De3E52A1B7294A34e271a508082b1Ff4a37E30e", decimals: 18 },
107
+ { symbol: "sDAI", underlying: "0x83F20F44975D03b1b09e64809B757c47f942BEeA", aToken: "0x4C612E3B15b96Ff9A6faED838F8d07d479a8dD4c", variableDebtToken: "0x8Db9D35e117d8b93C6Ca9b644b25BaD5d9908141", decimals: 18 },
108
+ { symbol: "SNX", underlying: "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F", aToken: "0xC7B4c17861357B8ABB91F25581E7263E08DCB59c", variableDebtToken: "0x8d0de040e8aAd872eC3c33A3776dE9152D3c34ca", decimals: 18 },
109
+ { symbol: "STG", underlying: "0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6", aToken: "0x1bA9843bD4327c6c77011406dE5fA8749F7E3479", variableDebtToken: "0x655568bDd6168325EC7e58Bf39b21A856F906Dc2", decimals: 18 },
110
+ { symbol: "sUSDe", underlying: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", aToken: "0x4579a27aF00A62C0EB156349f31B345c08386419", variableDebtToken: "0xeFFDE9BFA8EC77c14C364055a200746d6e12BeD6", decimals: 18 },
111
+ { symbol: "syrupUSDT", underlying: "0x356B8d89c1e1239Cbbb9dE4815c39A1474d5BA7D", aToken: "0x24Ab03a9a5Bc2C49E5523e8d915A3536ac38B91D", variableDebtToken: "0xAEf73b04654931B94920a3D7AE62032b79fB6d0c", decimals: 6 },
112
+ { symbol: "tBTC", underlying: "0x18084fbA666a33d37592fA2633fD49a74DD93a88", aToken: "0x10Ac93971cdb1F5c778144084242374473c350Da", variableDebtToken: "0xAC50890a80A2731eb1eA2e9B4F29569CeB06D960", decimals: 18 },
113
+ { symbol: "tETH", underlying: "0xD11c452fc99cF405034ee446803b6F6c1F6d5ED8", aToken: "0x481a2acf3A72ffDc602A9541896Ca1DB87f86cf7", variableDebtToken: "0x7EC9Afe70f8FD603282eBAcbc9058A83623E2899", decimals: 18 },
114
+ { symbol: "UNI", underlying: "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984", aToken: "0xF6D2224916DDFbbab6e6bd0D1B7034f4Ae0CaB18", variableDebtToken: "0xF64178Ebd2E2719F2B1233bCb5Ef6DB4bCc4d09a", decimals: 18 },
115
+ { symbol: "USDC", underlying: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", aToken: "0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c", variableDebtToken: "0x72E95b8931767C79bA4EeE721354d6E99a61D004", decimals: 6 },
116
+ { symbol: "USDe", underlying: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", aToken: "0x4F5923Fc5FD4a93352581b38B7cD26943012DECF", variableDebtToken: "0x015396E1F286289aE23a762088E863b3ec465145", decimals: 18 },
117
+ { symbol: "USDG", underlying: "0xe343167631d89B6Ffc58B88d6b7fB0228795491D", aToken: "0x7c0477d085ECb607CF8429f3eC91Ae5E1e460F4F", variableDebtToken: "0x4f97B950a30321c181E974971E156E19fAD184A3", decimals: 6 },
118
+ { symbol: "USDS", underlying: "0xdC035D45d973E3EC169d2276DDab16f1e407384F", aToken: "0x32a6268f9Ba3642Dda7892aDd74f1D34469A4259", variableDebtToken: "0x490E0E6255bF65b43E2e02F7acB783c5e04572Ff", decimals: 18 },
119
+ { symbol: "USDT", underlying: "0xdAC17F958D2ee523a2206206994597C13D831ec7", aToken: "0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a", variableDebtToken: "0x6df1C1E379bC5a00a7b4C6e67A203333772f45A8", decimals: 6 },
120
+ { symbol: "USDtb", underlying: "0xC139190F447e929f090Edeb554D95AbB8b18aC1C", aToken: "0xEc4ef66D4fCeEba34aBB4dE69dB391Bc5476ccc8", variableDebtToken: "0xeA85a065F87FE28Aa8Fbf0D6C7deC472b106252C", decimals: 18 },
121
+ { symbol: "WBTC", underlying: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", aToken: "0x5Ee5bf7ae06D1Be5997A1A72006FE6C607eC6DE8", variableDebtToken: "0x40aAbEf1aa8f0eEc637E0E7d92fbfFB2F26A8b7B", decimals: 8 },
122
+ { symbol: "weETH", underlying: "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee", aToken: "0xBdfa7b7893081B35Fb54027489e2Bc7A38275129", variableDebtToken: "0x77ad9BF13a52517AD698D65913e8D381300c8Bf3", decimals: 18 },
123
+ { symbol: "WETH", underlying: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", aToken: "0x4d5F47FA6A74757f35C14fD3a6Ef8E3C9BC514E8", variableDebtToken: "0xeA51d7853EEFb32b6ee06b1C12E6dcCA88Be0fFE", decimals: 18 },
124
+ { symbol: "wstETH", underlying: "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", aToken: "0x0B925eD163218f6662a35e0f0371Ac234f9E9371", variableDebtToken: "0xC96113eED8cAB59cD8A66813bCB0cEb29F06D2e4", decimals: 18 },
125
+ { symbol: "XAUt", underlying: "0x68749665FF8D2d112Fa859AA293F07A622782F38", aToken: "0x8A2b6f94Ff3A89a03E8c02Ee92b55aF90c9454A2", variableDebtToken: "0xa665bB258D2a732C170dFD505924214c0b1AC74F", decimals: 6 }
126
+ ],
127
+ [Chains.BnbMainnet]: [
128
+ { symbol: "BTCB", underlying: "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", aToken: "0x56a7ddc4e848EbF43845854205ad71D5D5F72d3D", variableDebtToken: "0x7b1E82F4f542fbB25D64c5523Fe3e44aBe4F2702", decimals: 18 },
129
+ { symbol: "Cake", underlying: "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82", aToken: "0x4199CC1F5ed0d796563d7CcB2e036253E2C18281", variableDebtToken: "0xE20dBC7119c635B1B51462f844861258770e0699", decimals: 18 },
130
+ { symbol: "ETH", underlying: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", aToken: "0x2E94171493fAbE316b6205f1585779C887771E2F", variableDebtToken: "0x8FDea7891b4D6dbdc746309245B316aF691A636C", decimals: 18 },
131
+ { symbol: "FDUSD", underlying: "0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409", aToken: "0x75bd1A659bdC62e4C313950d44A2416faB43E785", variableDebtToken: "0xE628B8a123e6037f1542e662B9F55141a16945C8", decimals: 18 },
132
+ { symbol: "USDC", underlying: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", aToken: "0x00901a076785e0906d1028c7d6372d247bec7d61", variableDebtToken: "0xcDBBEd5606d9c5C98eEedd67933991dC17F0c68d", decimals: 18 },
133
+ { symbol: "USDT", underlying: "0x55d398326f99059fF775485246999027B3197955", aToken: "0xa9251ca9DE909CB71783723713B21E4233fbf1B1", variableDebtToken: "0xF8bb2Be50647447Fb355e3a77b81be4db64107cd", decimals: 18 },
134
+ { symbol: "WBNB", underlying: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", aToken: "0x9B00a09492a626678E5A3009982191586C444Df9", variableDebtToken: "0x0E76414d433ddfe8004d2A7505d218874875a996", decimals: 18 },
135
+ { symbol: "wstETH", underlying: "0x26c5e01524d2E6280A48F2c50fF6De7e52E9611C", aToken: "0xBDFd4E51D3c14a232135f04988a42576eFb31519", variableDebtToken: "0x2c391998308c56D7572A8F501D58CB56fB9Fe1C5", decimals: 18 }
136
+ ],
137
+ [Chains.BaseMainnet]: [
138
+ { symbol: "AAVE", underlying: "0x63706e401c06ac8513145b7687A14804d17f814b", aToken: "0x67EAF2BeE4384a2f84Da9Eb8105C661C123736BA", variableDebtToken: "0xcEC1Ea95dDEF7CFC27D3D9615E05b035af460978", decimals: 18 },
139
+ { symbol: "cbBTC", underlying: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", aToken: "0xBdb9300b7CDE636d9cD4AFF00f6F009fFBBc8EE6", variableDebtToken: "0x05e08702028de6AaD395DC6478b554a56920b9AD", decimals: 8 },
140
+ { symbol: "cbETH", underlying: "0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22", aToken: "0xcf3D55c10DB69f28fD1A75Bd73f3D8A2d9c595ad", variableDebtToken: "0x1DabC36f19909425f654777249815c073E8Fd79F", decimals: 18 },
141
+ { symbol: "EURC", underlying: "0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42", aToken: "0x90DA57E0A6C0d166Bf15764E03b83745Dc90025B", variableDebtToken: "0x03D01595769333174036832e18fA2f17C74f8161", decimals: 6 },
142
+ { symbol: "ezETH", underlying: "0x2416092f143378750bb29b79eD961ab195CcEea5", aToken: "0xDD5745756C2de109183c6B5bB886F9207bEF114D", variableDebtToken: "0xbc4f5631f2843488792e4F1660d0A51Ba489bdBd", decimals: 18 },
143
+ { symbol: "GHO", underlying: "0x6Bb7a212910682DCFdbd5BCBb3e28FB4E8da10Ee", aToken: "0x067ae75628177FD257c2B1e500993e1a0baBcBd1", variableDebtToken: "0x38e59ADE183BbEb94583d44213c8f3297e9933e9", decimals: 18 },
144
+ { symbol: "LBTC", underlying: "0xecAc9C5F704e954931349Da37F60E39f515c11c1", aToken: "0x90072A4aA69B5Eb74984Ab823EFC5f91e90b3a72", variableDebtToken: "0xa2525b3f058846075506903d792d58C5a0D834c9", decimals: 8 },
145
+ { symbol: "syrupUSDC", underlying: "0x660975730059246A68521a3e2FBD4740173100f5", aToken: "0xD7424238CcbE7b7198Ab3cFE232e0271E22da7bd", variableDebtToken: "0x57B8C05ee2cD9d0143eBC21FBD9288C39B9F716c", decimals: 6 },
146
+ { symbol: "tBTC", underlying: "0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b", aToken: "0xbcFFB4B3beADc989Bd1458740952aF6EC8fBE431", variableDebtToken: "0x182cDEEC1D52ccad869d621bA422F449FA5809f5", decimals: 18 },
147
+ { symbol: "USDbC", underlying: "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA", aToken: "0x0a1d576f3eFeF75b330424287a95A366e8281D54", variableDebtToken: "0x7376b2F323dC56fCd4C191B34163ac8a84702DAB", decimals: 6 },
148
+ { symbol: "USDC", underlying: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", aToken: "0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB", variableDebtToken: "0x59dca05b6c26dbd64b5381374aAaC5CD05644C28", decimals: 6 },
149
+ { symbol: "weETH", underlying: "0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A", aToken: "0x7C307e128efA31F540F2E2d976C995E0B65F51F6", variableDebtToken: "0x8D2e3F1f4b38AA9f1ceD22ac06019c7561B03901", decimals: 18 },
150
+ { symbol: "WETH", underlying: "0x4200000000000000000000000000000000000006", aToken: "0xD4a0e0b9149BCee3C920d2E00b5dE09138fd8bb7", variableDebtToken: "0x24e6e0795b3c7c71D965fCc4f371803d1c1DcA1E", decimals: 18 },
151
+ { symbol: "wrsETH", underlying: "0xEDfa23602D0EC14714057867A78d01e94176BEA0", aToken: "0x80a94C36747CF51b2FbabDfF045f6D22c1930eD1", variableDebtToken: "0xe9541C77a111bCAa5dF56839bbC50894eba7aFcb", decimals: 18 },
152
+ { symbol: "wstETH", underlying: "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452", aToken: "0x99CBC45ea5bb7eF3a5BC08FB1B7E56bB2442Ef0D", variableDebtToken: "0x41A7C3f5904ad176dACbb1D99101F59ef0811DC1", decimals: 18 }
153
+ ],
154
+ [Chains.BaseSepolia]: [
155
+ { symbol: "cbETH", underlying: "0xD171b9694f7A2597Ed006D41f7509aaD4B485c4B", aToken: "0x9Fd6d1DBAd7c052e0c43f46df36eEc6a68814B63", variableDebtToken: "0xa1a483652b157FF006292CDb0e9EB7FFad2a5142", decimals: 18 },
156
+ { symbol: "LINK", underlying: "0x810D46F9a9027E28F9B01F75E2bdde839dA61115", aToken: "0x0aD46dE765522399d7b25B438b230A894d72272B", variableDebtToken: "0xBA42C6752F347e3c22DD0A4e5578dCB0137C1325", decimals: 18 },
157
+ { symbol: "USDC", underlying: "0xba50Cd2A20f6DA35D788639E581bca8d0B5d4D5f", aToken: "0x10F1A9D11CDf50041f3f8cB7191CBE2f31750ACC", variableDebtToken: "0xFB3e85601b7fEb3691bbb8779Ef0E1069E347204", decimals: 6 },
158
+ { symbol: "USDT", underlying: "0x0a215D8ba66387DCA84B284D18c3B4ec3de6E54a", aToken: "0xcE3CAae5Ed17A7AafCEEbc897DE843fA6CC0c018", variableDebtToken: "0xE3C742c88EE6A610157C16b60bBDD62351daeE39", decimals: 6 },
159
+ { symbol: "WBTC", underlying: "0x54114591963CF60EF3aA63bEfD6eC263D98145a4", aToken: "0x47Db195BAf46898302C06c31bCF46c01C64ACcF9", variableDebtToken: "0x638291B5Ccb9fEd339FdD351Eb086e607fCA9561", decimals: 8 },
160
+ { symbol: "WETH", underlying: "0x4200000000000000000000000000000000000006", aToken: "0x73a5bB60b0B0fc35710DDc0ea9c407031E31Bdbb", variableDebtToken: "0x562abf6562d6A2b165aDa02b5946bc3E7b4dD653", decimals: 18 }
161
+ ],
162
+ [Chains.Sepolia]: [
163
+ { symbol: "AAVE", underlying: "0x88541670E55cC00bEEFD87eB59EDd1b7C511AC9a", aToken: "0x6b8558764d3b7572136F17174Cb9aB1DDc7E1259", variableDebtToken: "0xf12fdFc4c631F6D361b48723c2F2800b84B519e6", decimals: 18 },
164
+ { symbol: "DAI", underlying: "0xFF34B3d4Aee8ddCd6F9AFFFB6Fe49bD371b8a357", aToken: "0x29598b72eb5CeBd806C5dCD549490FdA35B13cD8", variableDebtToken: "0x22675C506A8FC26447aFFfa33640f6af5d4D4cF0", decimals: 18 },
165
+ { symbol: "EURS", underlying: "0x6d906e526a4e2Ca02097BA9d0caA3c382F52278E", aToken: "0xB20691021F9AcED8631eDaa3c0Cd2949EB45662D", variableDebtToken: "0x94482C7A7477196259D8a0f74fB853277Fa5a75b", decimals: 2 },
166
+ { symbol: "GHO", underlying: "0xc4bF5CbDaBE595361438F8c6a187bDc330539c60", aToken: "0xd190eF37dB51Bb955A680fF1A85763CC72d083D4", variableDebtToken: "0x67ae46EF043F7A4508BD1d6B94DB6c33F0915844", decimals: 18 },
167
+ { symbol: "LINK", underlying: "0xf8Fb3713D459D7C1018BD0A49D19b4C44290EBE5", aToken: "0x3FfAf50D4F4E96eB78f2407c090b72e86eCaed24", variableDebtToken: "0x34a4d932E722b9dFb492B9D8131127690CE2430B", decimals: 18 },
168
+ { symbol: "USDC", underlying: "0x94a9D9AC8a22534E3FaCa9F4e7F2E2cf85d5E4C8", aToken: "0x16dA4541aD1807f4443d92D26044C1147406EB80", variableDebtToken: "0x36B5dE936eF1710E1d22EabE5231b28581a92ECc", decimals: 6 },
169
+ { symbol: "USDT", underlying: "0xaA8E23Fb1079EA71e0a56F48a2aA51851D8433D0", aToken: "0xAF0F6e8b0Dc5c913bbF4d14c22B4E78Dd14310B6", variableDebtToken: "0x9844386d29EEd970B9F6a2B9a676083b0478210e", decimals: 6 },
170
+ { symbol: "WBTC", underlying: "0x29f2D40B0605204364af54EC677bD022dA425d03", aToken: "0x1804Bf30507dc2EB3bDEbbbdd859991EAeF6EefF", variableDebtToken: "0xEB016dFd303F19fbDdFb6300eB4AeB2DA7Ceac37", decimals: 8 },
171
+ { symbol: "WETH", underlying: "0xC558DBdd856501FCd9aaF1E62eae57A9F0629a3c", aToken: "0x5b071b590a59395fE4025A0Ccc1FcC931AAc1830", variableDebtToken: "0x22a35DB253f4F6D0029025D6312A3BdAb20C2c6A", decimals: 18 }
172
+ ]
173
+ };
174
+
57
175
  // src/protocols/aave-v3.ts
58
176
  var pool = {
59
177
  [Chains.EthereumMainnet]: "0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2",
@@ -226,6 +344,7 @@ var tokens = Object.freeze({
226
344
  [Chains.Sepolia]: "0xf8Fb3713D459D7C1018BD0A49D19b4C44290EBE5"
227
345
  }
228
346
  });
347
+ var reserves = aaveV3Reserves;
229
348
  var aaveV3 = Object.freeze({
230
349
  pool,
231
350
  oracle,
@@ -233,7 +352,8 @@ var aaveV3 = Object.freeze({
233
352
  eventTopics,
234
353
  poolEventsAbi,
235
354
  poolMethodsAbi,
236
- tokens
355
+ tokens,
356
+ reserves
237
357
  });
238
358
 
239
359
  // src/protocols/aerodrome.ts
@@ -318,12 +438,29 @@ var btcUsdFeed = {
318
438
  var bnbUsdFeed = {
319
439
  [Chains.BnbMainnet]: "0x0567F2323251f0Aab15c8dFb1967E4e8A7D42aeE"
320
440
  };
441
+ var answerUpdatedEventAbi = Object.freeze([
442
+ {
443
+ anonymous: false,
444
+ inputs: [
445
+ { indexed: true, internalType: "int256", name: "current", type: "int256" },
446
+ { indexed: true, internalType: "uint256", name: "roundId", type: "uint256" },
447
+ { indexed: false, internalType: "uint256", name: "updatedAt", type: "uint256" }
448
+ ],
449
+ name: "AnswerUpdated",
450
+ type: "event"
451
+ }
452
+ ]);
453
+ var eventTopics2 = Object.freeze({
454
+ AnswerUpdated: "0x0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f"
455
+ });
321
456
  var chainlink = Object.freeze({
322
457
  ethUsdFeed,
323
458
  btcUsdFeed,
324
459
  bnbUsdFeed,
325
460
  /** Shared AggregatorV3 ABI — works for any Chainlink feed. */
326
- aggregatorV3Abi
461
+ aggregatorV3Abi,
462
+ answerUpdatedEventAbi,
463
+ eventTopics: eventTopics2
327
464
  });
328
465
 
329
466
  // src/protocols/compound-v3.ts
@@ -336,19 +473,70 @@ var compoundV3 = Object.freeze({
336
473
  });
337
474
 
338
475
  // src/protocols/erc20.ts
476
+ var approveAbi = Object.freeze([
477
+ {
478
+ inputs: [
479
+ { internalType: "address", name: "spender", type: "address" },
480
+ { internalType: "uint256", name: "amount", type: "uint256" }
481
+ ],
482
+ name: "approve",
483
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
484
+ stateMutability: "nonpayable",
485
+ type: "function"
486
+ }
487
+ ]);
488
+ var transferAbi = Object.freeze([
489
+ {
490
+ inputs: [
491
+ { internalType: "address", name: "to", type: "address" },
492
+ { internalType: "uint256", name: "amount", type: "uint256" }
493
+ ],
494
+ name: "transfer",
495
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
496
+ stateMutability: "nonpayable",
497
+ type: "function"
498
+ }
499
+ ]);
500
+ var symbolAbi = Object.freeze([
501
+ {
502
+ inputs: [],
503
+ name: "symbol",
504
+ outputs: [{ internalType: "string", name: "", type: "string" }],
505
+ stateMutability: "view",
506
+ type: "function"
507
+ }
508
+ ]);
509
+ var decimalsAbi = Object.freeze([
510
+ {
511
+ inputs: [],
512
+ name: "decimals",
513
+ outputs: [{ internalType: "uint8", name: "", type: "uint8" }],
514
+ stateMutability: "view",
515
+ type: "function"
516
+ }
517
+ ]);
518
+ var transferEventAbi = Object.freeze([
519
+ {
520
+ anonymous: false,
521
+ inputs: [
522
+ { indexed: true, internalType: "address", name: "from", type: "address" },
523
+ { indexed: true, internalType: "address", name: "to", type: "address" },
524
+ { indexed: false, internalType: "uint256", name: "value", type: "uint256" }
525
+ ],
526
+ name: "Transfer",
527
+ type: "event"
528
+ }
529
+ ]);
530
+ var eventTopics3 = Object.freeze({
531
+ Transfer: "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
532
+ });
339
533
  var erc20 = Object.freeze({
340
- approveAbi: Object.freeze([
341
- {
342
- inputs: [
343
- { internalType: "address", name: "spender", type: "address" },
344
- { internalType: "uint256", name: "amount", type: "uint256" }
345
- ],
346
- name: "approve",
347
- outputs: [{ internalType: "bool", name: "", type: "bool" }],
348
- stateMutability: "nonpayable",
349
- type: "function"
350
- }
351
- ])
534
+ approveAbi,
535
+ transferAbi,
536
+ symbolAbi,
537
+ decimalsAbi,
538
+ transferEventAbi,
539
+ eventTopics: eventTopics3
352
540
  });
353
541
 
354
542
  // src/protocols/ethena.ts
@@ -1676,6 +1864,28 @@ var ethereum_default = [
1676
1864
  }
1677
1865
  ];
1678
1866
 
1867
+ // src/tokens/per-chain.ts
1868
+ function buildChainTokenMap(rows, sourceLabel) {
1869
+ const out = /* @__PURE__ */ Object.create(null);
1870
+ for (const row of rows) {
1871
+ const { symbol, ...entry } = row;
1872
+ if (Object.prototype.hasOwnProperty.call(out, symbol)) {
1873
+ throw new Error(
1874
+ `[@avaprotocol/protocols] duplicate symbol "${symbol}" in ${sourceLabel} \u2014 each symbol must appear once per chain file.`
1875
+ );
1876
+ }
1877
+ out[symbol] = Object.freeze(entry);
1878
+ }
1879
+ return Object.freeze(out);
1880
+ }
1881
+
1882
+ // src/tokens/ethereum.ts
1883
+ var chainId = Chains.EthereumMainnet;
1884
+ var tokens3 = buildChainTokenMap(
1885
+ ethereum_default,
1886
+ "src/tokens/data/ethereum.json"
1887
+ );
1888
+
1679
1889
  // src/tokens/data/sepolia.json
1680
1890
  var sepolia_default = [
1681
1891
  {
@@ -1716,6 +1926,13 @@ var sepolia_default = [
1716
1926
  }
1717
1927
  ];
1718
1928
 
1929
+ // src/tokens/sepolia.ts
1930
+ var chainId2 = Chains.Sepolia;
1931
+ var tokens4 = buildChainTokenMap(
1932
+ sepolia_default,
1933
+ "src/tokens/data/sepolia.json"
1934
+ );
1935
+
1719
1936
  // src/tokens/data/base.json
1720
1937
  var base_default = [
1721
1938
  {
@@ -2009,6 +2226,13 @@ var base_default = [
2009
2226
  }
2010
2227
  ];
2011
2228
 
2229
+ // src/tokens/base.ts
2230
+ var chainId3 = Chains.BaseMainnet;
2231
+ var tokens5 = buildChainTokenMap(
2232
+ base_default,
2233
+ "src/tokens/data/base.json"
2234
+ );
2235
+
2012
2236
  // src/tokens/data/base-sepolia.json
2013
2237
  var base_sepolia_default = [
2014
2238
  {
@@ -2037,6 +2261,13 @@ var base_sepolia_default = [
2037
2261
  }
2038
2262
  ];
2039
2263
 
2264
+ // src/tokens/base-sepolia.ts
2265
+ var chainId4 = Chains.BaseSepolia;
2266
+ var tokens6 = buildChainTokenMap(
2267
+ base_sepolia_default,
2268
+ "src/tokens/data/base-sepolia.json"
2269
+ );
2270
+
2040
2271
  // src/tokens/data/bnb-mainnet.json
2041
2272
  var bnb_mainnet_default = [
2042
2273
  {
@@ -2055,38 +2286,41 @@ var bnb_mainnet_default = [
2055
2286
  }
2056
2287
  ];
2057
2288
 
2289
+ // src/tokens/bnb-mainnet.ts
2290
+ var chainId5 = Chains.BnbMainnet;
2291
+ var tokens7 = buildChainTokenMap(
2292
+ bnb_mainnet_default,
2293
+ "src/tokens/data/bnb-mainnet.json"
2294
+ );
2295
+
2058
2296
  // src/tokens/index.ts
2059
- var CHAIN_DATA = Object.freeze([
2060
- [Chains.EthereumMainnet, ethereum_default],
2061
- [Chains.Sepolia, sepolia_default],
2062
- [Chains.BaseMainnet, base_default],
2063
- [Chains.BaseSepolia, base_sepolia_default],
2064
- [Chains.BnbMainnet, bnb_mainnet_default]
2297
+ var PER_CHAIN = Object.freeze([
2298
+ [chainId, tokens3],
2299
+ [chainId2, tokens4],
2300
+ [chainId3, tokens5],
2301
+ [chainId4, tokens6],
2302
+ [chainId5, tokens7]
2065
2303
  ]);
2066
2304
  function buildTokensFromData() {
2067
- const merged = {};
2068
- for (const [chainId, rows] of CHAIN_DATA) {
2069
- for (const row of rows) {
2070
- const { symbol, ...entry } = row;
2071
- if (!merged[symbol]) merged[symbol] = {};
2072
- if (merged[symbol][chainId] !== void 0) {
2073
- throw new Error(
2074
- `[@avaprotocol/protocols] duplicate token entry for symbol="${symbol}" on chainId=${chainId}. Each (symbol, chainId) pair must be unique across src/tokens/data/*.json \u2014 remove the duplicate row.`
2075
- );
2305
+ const merged = /* @__PURE__ */ Object.create(null);
2306
+ for (const [chainId6, chainTokens] of PER_CHAIN) {
2307
+ for (const [symbol, entry] of Object.entries(chainTokens)) {
2308
+ if (!Object.prototype.hasOwnProperty.call(merged, symbol)) {
2309
+ merged[symbol] = /* @__PURE__ */ Object.create(null);
2076
2310
  }
2077
- merged[symbol][chainId] = entry;
2311
+ merged[symbol][chainId6] = entry;
2078
2312
  }
2079
2313
  }
2080
2314
  return merged;
2081
2315
  }
2082
2316
  var Tokens = Object.freeze(buildTokensFromData());
2083
2317
  var PROTOCOL_TOKEN_DEFAULT_DECIMALS = 18;
2084
- function lookupToken(chainId, address) {
2318
+ function lookupToken(chainId6, address) {
2085
2319
  if (!address) return void 0;
2086
2320
  const target = address.toLowerCase();
2087
- if (chainId) {
2321
+ if (chainId6) {
2088
2322
  for (const [symbol, byChain] of Object.entries(Tokens)) {
2089
- const entry = byChain[chainId];
2323
+ const entry = byChain[chainId6];
2090
2324
  if (entry && entry.address.toLowerCase() === target) {
2091
2325
  return { symbol, ...entry };
2092
2326
  }
@@ -2100,9 +2334,9 @@ function lookupToken(chainId, address) {
2100
2334
  }
2101
2335
  }
2102
2336
  for (const protocolModule of Object.values(Protocols)) {
2103
- const tokens3 = protocolModule.tokens;
2104
- if (!tokens3 || typeof tokens3 !== "object") continue;
2105
- for (const [symbol, addressMap] of Object.entries(tokens3)) {
2337
+ const tokens8 = protocolModule.tokens;
2338
+ if (!tokens8 || typeof tokens8 !== "object") continue;
2339
+ for (const [symbol, addressMap] of Object.entries(tokens8)) {
2106
2340
  if (!addressMap || typeof addressMap !== "object") continue;
2107
2341
  for (const [rawChainId, addr] of Object.entries(addressMap)) {
2108
2342
  if (typeof addr !== "string") continue;