@bgd-labs/aave-address-book 1.1.1

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 (115) hide show
  1. package/.gitmodules +4 -0
  2. package/CHANGELOG.md +56 -0
  3. package/LICENSE +7 -0
  4. package/README.md +94 -0
  5. package/addressbook_logo.png +0 -0
  6. package/dist/AaveAddressBook.d.ts +17 -0
  7. package/dist/AaveAddressBook.js +20 -0
  8. package/dist/AaveV2Avalanche.d.ts +9 -0
  9. package/dist/AaveV2Avalanche.js +12 -0
  10. package/dist/AaveV2Ethereum.d.ts +9 -0
  11. package/dist/AaveV2Ethereum.js +12 -0
  12. package/dist/AaveV2EthereumAMM.d.ts +9 -0
  13. package/dist/AaveV2EthereumAMM.js +12 -0
  14. package/dist/AaveV2EthereumArc.d.ts +9 -0
  15. package/dist/AaveV2EthereumArc.js +12 -0
  16. package/dist/AaveV2Fuji.d.ts +9 -0
  17. package/dist/AaveV2Fuji.js +12 -0
  18. package/dist/AaveV2Mumbai.d.ts +9 -0
  19. package/dist/AaveV2Mumbai.js +12 -0
  20. package/dist/AaveV2Polygon.d.ts +9 -0
  21. package/dist/AaveV2Polygon.js +12 -0
  22. package/dist/AaveV3Arbitrum.d.ts +9 -0
  23. package/dist/AaveV3Arbitrum.js +12 -0
  24. package/dist/AaveV3Avalanche.d.ts +9 -0
  25. package/dist/AaveV3Avalanche.js +12 -0
  26. package/dist/AaveV3Fantom.d.ts +9 -0
  27. package/dist/AaveV3Fantom.js +12 -0
  28. package/dist/AaveV3FantomTestnet.d.ts +9 -0
  29. package/dist/AaveV3FantomTestnet.js +12 -0
  30. package/dist/AaveV3Fuji.d.ts +9 -0
  31. package/dist/AaveV3Fuji.js +12 -0
  32. package/dist/AaveV3Harmony.d.ts +9 -0
  33. package/dist/AaveV3Harmony.js +12 -0
  34. package/dist/AaveV3Mumbai.d.ts +9 -0
  35. package/dist/AaveV3Mumbai.js +12 -0
  36. package/dist/AaveV3Optimism.d.ts +9 -0
  37. package/dist/AaveV3Optimism.js +12 -0
  38. package/dist/AaveV3OptimismKovan.d.ts +9 -0
  39. package/dist/AaveV3OptimismKovan.js +12 -0
  40. package/dist/AaveV3Polygon.d.ts +9 -0
  41. package/dist/AaveV3Polygon.js +12 -0
  42. package/foundry.toml +8 -0
  43. package/lib/forge-std/.github/workflows/tests.yml +27 -0
  44. package/lib/forge-std/.gitmodules +3 -0
  45. package/lib/forge-std/LICENSE-APACHE +203 -0
  46. package/lib/forge-std/LICENSE-MIT +25 -0
  47. package/lib/forge-std/README.md +246 -0
  48. package/lib/forge-std/lib/ds-test/LICENSE +674 -0
  49. package/lib/forge-std/lib/ds-test/Makefile +14 -0
  50. package/lib/forge-std/lib/ds-test/default.nix +4 -0
  51. package/lib/forge-std/lib/ds-test/demo/demo.sol +222 -0
  52. package/lib/forge-std/lib/ds-test/src/test.sol +469 -0
  53. package/lib/forge-std/src/Script.sol +39 -0
  54. package/lib/forge-std/src/StdJson.sol +118 -0
  55. package/lib/forge-std/src/Test.sol +1134 -0
  56. package/lib/forge-std/src/Vm.sol +231 -0
  57. package/lib/forge-std/src/console.sol +1533 -0
  58. package/lib/forge-std/src/console2.sol +1538 -0
  59. package/lib/forge-std/src/test/Script.t.sol +12 -0
  60. package/lib/forge-std/src/test/StdAssertions.t.sol +591 -0
  61. package/lib/forge-std/src/test/StdCheats.t.sol +282 -0
  62. package/lib/forge-std/src/test/StdError.t.sol +124 -0
  63. package/lib/forge-std/src/test/StdMath.t.sol +200 -0
  64. package/lib/forge-std/src/test/StdStorage.t.sol +321 -0
  65. package/lib/forge-std/src/test/fixtures/broadcast.log.json +187 -0
  66. package/package.json +39 -0
  67. package/src/AaveAddressBook.sol +28 -0
  68. package/src/AaveAddressBookV2.sol +143 -0
  69. package/src/AaveAddressBookV2Testnet.sol +74 -0
  70. package/src/AaveAddressBookV3.sol +166 -0
  71. package/src/AaveAddressBookV3Testnet.sol +120 -0
  72. package/src/AaveGovernanceV2.sol +549 -0
  73. package/src/AaveV2.sol +931 -0
  74. package/src/AaveV2Avalanche.sol +35 -0
  75. package/src/AaveV2Ethereum.sol +36 -0
  76. package/src/AaveV2EthereumAMM.sol +36 -0
  77. package/src/AaveV2EthereumArc.sol +36 -0
  78. package/src/AaveV2Fuji.sol +35 -0
  79. package/src/AaveV2Mumbai.sol +35 -0
  80. package/src/AaveV2Polygon.sol +35 -0
  81. package/src/AaveV3.sol +2406 -0
  82. package/src/AaveV3Arbitrum.sol +34 -0
  83. package/src/AaveV3Avalanche.sol +34 -0
  84. package/src/AaveV3Fantom.sol +34 -0
  85. package/src/AaveV3FantomTestnet.sol +34 -0
  86. package/src/AaveV3Fuji.sol +34 -0
  87. package/src/AaveV3Harmony.sol +34 -0
  88. package/src/AaveV3HarmonyTestnet.sol +34 -0
  89. package/src/AaveV3Mumbai.sol +34 -0
  90. package/src/AaveV3Optimism.sol +34 -0
  91. package/src/AaveV3OptimismKovan.sol +34 -0
  92. package/src/AaveV3Polygon.sol +34 -0
  93. package/src/Common.sol +9 -0
  94. package/src/test/AaveV2Ethereum.t.sol +72 -0
  95. package/src/test/AaveV2Misfits.t.sol +33 -0
  96. package/src/test/AaveV3Avalanche.t.sol +65 -0
  97. package/src/ts/AaveAddressBook.ts +17 -0
  98. package/src/ts/AaveV2Avalanche.ts +11 -0
  99. package/src/ts/AaveV2Ethereum.ts +12 -0
  100. package/src/ts/AaveV2EthereumAMM.ts +12 -0
  101. package/src/ts/AaveV2EthereumArc.ts +12 -0
  102. package/src/ts/AaveV2Fuji.ts +11 -0
  103. package/src/ts/AaveV2Mumbai.ts +11 -0
  104. package/src/ts/AaveV2Polygon.ts +11 -0
  105. package/src/ts/AaveV3Arbitrum.ts +12 -0
  106. package/src/ts/AaveV3Avalanche.ts +12 -0
  107. package/src/ts/AaveV3Fantom.ts +12 -0
  108. package/src/ts/AaveV3FantomTestnet.ts +12 -0
  109. package/src/ts/AaveV3Fuji.ts +12 -0
  110. package/src/ts/AaveV3Harmony.ts +12 -0
  111. package/src/ts/AaveV3Mumbai.ts +12 -0
  112. package/src/ts/AaveV3Optimism.ts +12 -0
  113. package/src/ts/AaveV3OptimismKovan.ts +12 -0
  114. package/src/ts/AaveV3Polygon.ts +12 -0
  115. package/tsconfig.json +101 -0
@@ -0,0 +1,143 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.6.0;
3
+
4
+ import {ILendingPoolAddressesProvider, ILendingPool, ILendingPoolConfigurator, IAaveOracle, IAaveProtocolDataProvider} from "./AaveV2.sol";
5
+ import {Token} from "./Common.sol";
6
+
7
+ library AaveAddressBookV2 {
8
+ string public constant AaveV2Ethereum = "AaveV2Ethereum";
9
+ string public constant AaveV2EthereumAMM = "AaveV2EthereumAMM";
10
+ string public constant AaveV2EthereumArc = "AaveV2EthereumArc";
11
+ string public constant AaveV2Polygon = "AaveV2Polygon";
12
+ string public constant AaveV2Avalanche = "AaveV2Avalanche";
13
+
14
+ struct Market {
15
+ ILendingPoolAddressesProvider POOL_ADDRESSES_PROVIDER;
16
+ ILendingPool POOL;
17
+ ILendingPoolConfigurator POOL_CONFIGURATOR;
18
+ IAaveOracle ORACLE;
19
+ IAaveProtocolDataProvider AAVE_PROTOCOL_DATA_PROVIDER;
20
+ address POOL_ADMIN;
21
+ address EMERGENCY_ADMIN;
22
+ address COLLECTOR;
23
+ address COLLECTOR_CONTROLLER;
24
+ }
25
+
26
+ function getMarket(string calldata market)
27
+ public
28
+ pure
29
+ returns (Market memory m)
30
+ {
31
+ if (
32
+ keccak256(abi.encodePacked(market)) ==
33
+ keccak256(abi.encodePacked(AaveV2Ethereum))
34
+ ) {
35
+ return
36
+ Market(
37
+ ILendingPoolAddressesProvider(
38
+ 0xB53C1a33016B2DC2fF3653530bfF1848a515c8c5
39
+ ),
40
+ ILendingPool(0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9),
41
+ ILendingPoolConfigurator(
42
+ 0x311Bb771e4F8952E6Da169b425E7e92d6Ac45756
43
+ ),
44
+ IAaveOracle(0xA50ba011c48153De246E5192C8f9258A2ba79Ca9),
45
+ IAaveProtocolDataProvider(
46
+ 0x057835Ad21a177dbdd3090bB1CAE03EaCF78Fc6d
47
+ ),
48
+ 0xEE56e2B3D491590B5b31738cC34d5232F378a8D5,
49
+ 0xCA76Ebd8617a03126B6FB84F9b1c1A0fB71C2633,
50
+ 0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c,
51
+ 0x3d569673dAa0575c936c7c67c4E6AedA69CC630C
52
+ );
53
+ } else if (
54
+ keccak256(abi.encodePacked(market)) ==
55
+ keccak256(abi.encodePacked(AaveV2EthereumAMM))
56
+ ) {
57
+ return
58
+ Market(
59
+ ILendingPoolAddressesProvider(
60
+ 0xAcc030EF66f9dFEAE9CbB0cd1B25654b82cFA8d5
61
+ ),
62
+ ILendingPool(0x7937D4799803FbBe595ed57278Bc4cA21f3bFfCB),
63
+ ILendingPoolConfigurator(
64
+ 0x23A875eDe3F1030138701683e42E9b16A7F87768
65
+ ),
66
+ IAaveOracle(0xA50ba011c48153De246E5192C8f9258A2ba79Ca9),
67
+ IAaveProtocolDataProvider(
68
+ 0x0000000000000000000000000000000000000000
69
+ ),
70
+ 0xEE56e2B3D491590B5b31738cC34d5232F378a8D5,
71
+ 0xB9062896ec3A615a4e4444DF183F0531a77218AE,
72
+ 0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c,
73
+ 0x3d569673dAa0575c936c7c67c4E6AedA69CC630C
74
+ );
75
+ } else if (
76
+ keccak256(abi.encodePacked(market)) ==
77
+ keccak256(abi.encodePacked(AaveV2EthereumArc))
78
+ ) {
79
+ return
80
+ Market(
81
+ ILendingPoolAddressesProvider(
82
+ 0x6FdfafB66d39cD72CFE7984D3Bbcc76632faAb00
83
+ ),
84
+ ILendingPool(0x37D7306019a38Af123e4b245Eb6C28AF552e0bB0),
85
+ ILendingPoolConfigurator(
86
+ 0x4e1c7865e7BE78A7748724Fa0409e88dc14E67aA
87
+ ),
88
+ IAaveOracle(0xB8a7bc0d13B1f5460513040a97F404b4fea7D2f3),
89
+ IAaveProtocolDataProvider(
90
+ 0x71B53fC437cCD988b1b89B1D4605c3c3d0C810ea
91
+ ),
92
+ 0xAce1d11d836cb3F51Ef658FD4D353fFb3c301218,
93
+ 0x33B09130b035d6D7e57d76fEa0873d9545FA7557,
94
+ 0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c,
95
+ 0x3d569673dAa0575c936c7c67c4E6AedA69CC630C
96
+ );
97
+ } else if (
98
+ keccak256(abi.encodePacked(market)) ==
99
+ keccak256(abi.encodePacked(AaveV2Polygon))
100
+ ) {
101
+ return
102
+ Market(
103
+ ILendingPoolAddressesProvider(
104
+ 0xd05e3E715d945B59290df0ae8eF85c1BdB684744
105
+ ),
106
+ ILendingPool(0x8dFf5E27EA6b7AC08EbFdf9eB090F32ee9a30fcf),
107
+ ILendingPoolConfigurator(
108
+ 0x26db2B833021583566323E3b8985999981b9F1F3
109
+ ),
110
+ IAaveOracle(0x0229F777B0fAb107F9591a41d5F02E4e98dB6f2d),
111
+ IAaveProtocolDataProvider(
112
+ 0x7551b5D2763519d4e37e8B81929D336De671d46d
113
+ ),
114
+ 0xdc9A35B16DB4e126cFeDC41322b3a36454B1F772,
115
+ 0x1450F2898D6bA2710C98BE9CAF3041330eD5ae58,
116
+ 0x7734280A4337F37Fbf4651073Db7c28C80B339e9,
117
+ address(0)
118
+ );
119
+ } else if (
120
+ keccak256(abi.encodePacked(market)) ==
121
+ keccak256(abi.encodePacked(AaveV2Avalanche))
122
+ ) {
123
+ return
124
+ Market(
125
+ ILendingPoolAddressesProvider(
126
+ 0xb6A86025F0FE1862B372cb0ca18CE3EDe02A318f
127
+ ),
128
+ ILendingPool(0x4F01AeD16D97E3aB5ab2B501154DC9bb0F1A5A2C),
129
+ ILendingPoolConfigurator(
130
+ 0x230B618aD4C475393A7239aE03630042281BD86e
131
+ ),
132
+ IAaveOracle(0xdC336Cd4769f4cC7E9d726DA53e6d3fC710cEB89),
133
+ IAaveProtocolDataProvider(
134
+ 0x65285E9dfab318f57051ab2b139ccCf232945451
135
+ ),
136
+ 0x01244E7842254e3FD229CD263472076B1439D1Cd,
137
+ 0x01244E7842254e3FD229CD263472076B1439D1Cd,
138
+ 0x467b92aF281d14cB6809913AD016a607b5ba8A36,
139
+ address(0)
140
+ );
141
+ } else revert("Market does not exist");
142
+ }
143
+ }
@@ -0,0 +1,74 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.6.0;
3
+
4
+ import {ILendingPoolAddressesProvider, ILendingPool, ILendingPoolConfigurator, IAaveOracle, IAaveProtocolDataProvider} from "./AaveV2.sol";
5
+ import {Token} from "./Common.sol";
6
+
7
+ library AaveAddressBookV2Testnet {
8
+ string public constant AaveV2Mumbai = "AaveV2Mumbai";
9
+ string public constant AaveV2Fuji = "AaveV2Fuji";
10
+
11
+ struct Market {
12
+ ILendingPoolAddressesProvider POOL_ADDRESSES_PROVIDER;
13
+ ILendingPool POOL;
14
+ ILendingPoolConfigurator POOL_CONFIGURATOR;
15
+ IAaveOracle ORACLE;
16
+ IAaveProtocolDataProvider AAVE_PROTOCOL_DATA_PROVIDER;
17
+ address POOL_ADMIN;
18
+ address EMERGENCY_ADMIN;
19
+ address COLLECTOR;
20
+ address COLLECTOR_CONTROLLER;
21
+ }
22
+
23
+ function getMarket(string calldata market)
24
+ public
25
+ pure
26
+ returns (Market memory m)
27
+ {
28
+ if (
29
+ keccak256(abi.encodePacked(market)) ==
30
+ keccak256(abi.encodePacked(AaveV2Mumbai))
31
+ ) {
32
+ return
33
+ Market(
34
+ ILendingPoolAddressesProvider(
35
+ 0x178113104fEcbcD7fF8669a0150721e231F0FD4B
36
+ ),
37
+ ILendingPool(0x9198F13B08E299d85E096929fA9781A1E3d5d827),
38
+ ILendingPoolConfigurator(
39
+ 0xc3c37E2aA3dc66464fa3C29ce2a6EC85beFC45e1
40
+ ),
41
+ IAaveOracle(0xC365C653f7229894F93994CD0b30947Ab69Ff1D5),
42
+ IAaveProtocolDataProvider(
43
+ 0xFA3bD19110d986c5e5E9DD5F69362d05035D045B
44
+ ),
45
+ 0x943E44157dC0302a5CEb172374d1749018a00994,
46
+ 0x943E44157dC0302a5CEb172374d1749018a00994,
47
+ 0x943E44157dC0302a5CEb172374d1749018a00994,
48
+ address(0)
49
+ );
50
+ } else if (
51
+ keccak256(abi.encodePacked(market)) ==
52
+ keccak256(abi.encodePacked(AaveV2Fuji))
53
+ ) {
54
+ return
55
+ Market(
56
+ ILendingPoolAddressesProvider(
57
+ 0x7fdC1FdF79BE3309bf82f4abdAD9f111A6590C0f
58
+ ),
59
+ ILendingPool(0x76cc67FF2CC77821A70ED14321111Ce381C2594D),
60
+ ILendingPoolConfigurator(
61
+ 0x4ceBAFAAcc6Cb26FD90E4cDe138Eb812442bb5f3
62
+ ),
63
+ IAaveOracle(0xfa4f5B081632c4709667D467F817C09d9008A46A),
64
+ IAaveProtocolDataProvider(
65
+ 0x0668EDE013c1c475724523409b8B6bE633469585
66
+ ),
67
+ 0x1128d177BdaA74Ae68EB06e693f4CbA6BF427a5e,
68
+ 0x1128d177BdaA74Ae68EB06e693f4CbA6BF427a5e,
69
+ 0xB45F5C501A22288dfdb897e5f73E189597e09288,
70
+ address(0)
71
+ );
72
+ } else revert("Market does not exist");
73
+ }
74
+ }
@@ -0,0 +1,166 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.6.0;
3
+
4
+ import {IPoolAddressesProvider, IPool, IPoolConfigurator, IAaveOracle, IAaveProtocolDataProvider, IACLManager} from "./AaveV3.sol";
5
+ import {Token} from "./Common.sol";
6
+
7
+ library AaveAddressBookV3 {
8
+ string public constant AaveV3Polygon = "AaveV3Polygon";
9
+ string public constant AaveV3Avalanche = "AaveV3Avalanche";
10
+ string public constant AaveV3Arbitrum = "AaveV3Arbitrum";
11
+ string public constant AaveV3Fantom = "AaveV3Fantom";
12
+ string public constant AaveV3Harmony = "AaveV3Harmony";
13
+ string public constant AaveV3Optimism = "AaveV3Optimism";
14
+
15
+ struct Market {
16
+ IPoolAddressesProvider POOL_ADDRESSES_PROVIDER;
17
+ IPool POOL;
18
+ IPoolConfigurator POOL_CONFIGURATOR;
19
+ IAaveOracle ORACLE;
20
+ IAaveProtocolDataProvider POOL_DATA_PROVIDER;
21
+ IACLManager ACL_MANAGER;
22
+ address ACL_ADMIN;
23
+ address COLLECTOR;
24
+ address COLLECTOR_CONTROLLER;
25
+ }
26
+
27
+ function getMarket(string calldata market)
28
+ public
29
+ pure
30
+ returns (Market memory m)
31
+ {
32
+ if (
33
+ keccak256(abi.encodePacked((market))) ==
34
+ keccak256(abi.encodePacked((AaveV3Polygon)))
35
+ ) {
36
+ return
37
+ Market(
38
+ IPoolAddressesProvider(
39
+ 0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb
40
+ ),
41
+ IPool(0x794a61358D6845594F94dc1DB02A252b5b4814aD),
42
+ IPoolConfigurator(
43
+ 0x8145eddDf43f50276641b55bd3AD95944510021E
44
+ ),
45
+ IAaveOracle(0xb023e699F5a33916Ea823A16485e259257cA8Bd1),
46
+ IAaveProtocolDataProvider(
47
+ 0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654
48
+ ),
49
+ IACLManager(0xa72636CbcAa8F5FF95B2cc47F3CDEe83F3294a0B),
50
+ 0xdc9A35B16DB4e126cFeDC41322b3a36454B1F772,
51
+ 0xe8599F3cc5D38a9aD6F3684cd5CEa72f10Dbc383,
52
+ 0x73D435AFc15e35A9aC63B2a81B5AA54f974eadFe
53
+ );
54
+ } else if (
55
+ keccak256(abi.encodePacked((market))) ==
56
+ keccak256(abi.encodePacked((AaveV3Avalanche)))
57
+ ) {
58
+ return
59
+ Market(
60
+ IPoolAddressesProvider(
61
+ 0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb
62
+ ),
63
+ IPool(0x794a61358D6845594F94dc1DB02A252b5b4814aD),
64
+ IPoolConfigurator(
65
+ 0x8145eddDf43f50276641b55bd3AD95944510021E
66
+ ),
67
+ IAaveOracle(0xEBd36016B3eD09D4693Ed4251c67Bd858c3c7C9C),
68
+ IAaveProtocolDataProvider(
69
+ 0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654
70
+ ),
71
+ IACLManager(0xa72636CbcAa8F5FF95B2cc47F3CDEe83F3294a0B),
72
+ 0xa35b76E4935449E33C56aB24b23fcd3246f13470,
73
+ 0x5ba7fd868c40c16f7aDfAe6CF87121E13FC2F7a0,
74
+ 0xaCbE7d574EF8dC39435577eb638167Aca74F79f0
75
+ );
76
+ } else if (
77
+ keccak256(abi.encodePacked((market))) ==
78
+ keccak256(abi.encodePacked((AaveV3Arbitrum)))
79
+ ) {
80
+ return
81
+ Market(
82
+ IPoolAddressesProvider(
83
+ 0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb
84
+ ),
85
+ IPool(0x794a61358D6845594F94dc1DB02A252b5b4814aD),
86
+ IPoolConfigurator(
87
+ 0x8145eddDf43f50276641b55bd3AD95944510021E
88
+ ),
89
+ IAaveOracle(0xb56c2F0B653B2e0b10C9b928C8580Ac5Df02C7C7),
90
+ IAaveProtocolDataProvider(
91
+ 0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654
92
+ ),
93
+ IACLManager(0xa72636CbcAa8F5FF95B2cc47F3CDEe83F3294a0B),
94
+ 0xbbd9f90699c1FA0D7A65870D241DD1f1217c96Eb,
95
+ 0x053D55f9B5AF8694c503EB288a1B7E552f590710,
96
+ 0xC3301b30f4EcBfd59dE0d74e89690C1a70C6f21B
97
+ );
98
+ } else if (
99
+ keccak256(abi.encodePacked((market))) ==
100
+ keccak256(abi.encodePacked((AaveV3Fantom)))
101
+ ) {
102
+ return
103
+ Market(
104
+ IPoolAddressesProvider(
105
+ 0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb
106
+ ),
107
+ IPool(0x794a61358D6845594F94dc1DB02A252b5b4814aD),
108
+ IPoolConfigurator(
109
+ 0x8145eddDf43f50276641b55bd3AD95944510021E
110
+ ),
111
+ IAaveOracle(0xfd6f3c1845604C8AE6c6E402ad17fb9885160754),
112
+ IAaveProtocolDataProvider(
113
+ 0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654
114
+ ),
115
+ IACLManager(0xa72636CbcAa8F5FF95B2cc47F3CDEe83F3294a0B),
116
+ 0x39CB97b105173b56b5a2b4b33AD25d6a50E6c949,
117
+ 0xBe85413851D195fC6341619cD68BfDc26a25b928,
118
+ 0xc0F0cFBbd0382BcE3B93234E4BFb31b2aaBE36aD
119
+ );
120
+ } else if (
121
+ keccak256(abi.encodePacked((market))) ==
122
+ keccak256(abi.encodePacked((AaveV3Harmony)))
123
+ ) {
124
+ return
125
+ Market(
126
+ IPoolAddressesProvider(
127
+ 0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb
128
+ ),
129
+ IPool(0x794a61358D6845594F94dc1DB02A252b5b4814aD),
130
+ IPoolConfigurator(
131
+ 0x8145eddDf43f50276641b55bd3AD95944510021E
132
+ ),
133
+ IAaveOracle(0x3C90887Ede8D65ccb2777A5d577beAb2548280AD),
134
+ IAaveProtocolDataProvider(
135
+ 0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654
136
+ ),
137
+ IACLManager(0xa72636CbcAa8F5FF95B2cc47F3CDEe83F3294a0B),
138
+ 0xb2f0C5f37f4beD2cB51C44653cD5D84866BDcd2D,
139
+ 0x8A020d92D6B119978582BE4d3EdFdC9F7b28BF31,
140
+ 0xeaC16519923774Fd7723d3D5E442a1e2E46BA962
141
+ );
142
+ } else if (
143
+ keccak256(abi.encodePacked((market))) ==
144
+ keccak256(abi.encodePacked((AaveV3Optimism)))
145
+ ) {
146
+ return
147
+ Market(
148
+ IPoolAddressesProvider(
149
+ 0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb
150
+ ),
151
+ IPool(0x794a61358D6845594F94dc1DB02A252b5b4814aD),
152
+ IPoolConfigurator(
153
+ 0x8145eddDf43f50276641b55bd3AD95944510021E
154
+ ),
155
+ IAaveOracle(0xD81eb3728a631871a7eBBaD631b5f424909f0c77),
156
+ IAaveProtocolDataProvider(
157
+ 0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654
158
+ ),
159
+ IACLManager(0xa72636CbcAa8F5FF95B2cc47F3CDEe83F3294a0B),
160
+ 0xE50c8C619d05ff98b22Adf991F17602C774F785c,
161
+ 0xB2289E329D2F85F1eD31Adbb30eA345278F21bcf,
162
+ 0xA77E4A084d7d4f064E326C0F6c0aCefd47A5Cb21
163
+ );
164
+ } else revert("Market does not exist");
165
+ }
166
+ }
@@ -0,0 +1,120 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.6.0;
3
+
4
+ import {IPoolAddressesProvider, IPool, IPoolConfigurator, IAaveOracle, IAaveProtocolDataProvider, IACLManager} from "./AaveV3.sol";
5
+ import {Token} from "./Common.sol";
6
+
7
+ library AaveAddressBookV3Testnet {
8
+ string public constant AaveV3Mumbai = "AaveV3Mumbai";
9
+ string public constant AaveV3Fuji = "AaveV3Fuji";
10
+ string public constant AaveV3FantomTestnet = "AaveV3FantomTestnet";
11
+ string public constant AaveV3OptimismKovan = "AaveV3OptimismKovan";
12
+
13
+ struct Market {
14
+ IPoolAddressesProvider POOL_ADDRESSES_PROVIDER;
15
+ IPool POOL;
16
+ IPoolConfigurator POOL_CONFIGURATOR;
17
+ IAaveOracle ORACLE;
18
+ IAaveProtocolDataProvider POOL_DATA_PROVIDER;
19
+ IACLManager ACL_MANAGER;
20
+ address ACL_ADMIN;
21
+ address COLLECTOR;
22
+ address COLLECTOR_CONTROLLER;
23
+ }
24
+
25
+ function getMarket(string calldata market)
26
+ public
27
+ pure
28
+ returns (Market memory m)
29
+ {
30
+ if (
31
+ keccak256(abi.encodePacked((market))) ==
32
+ keccak256(abi.encodePacked((AaveV3Mumbai)))
33
+ ) {
34
+ return
35
+ Market(
36
+ IPoolAddressesProvider(
37
+ 0x5343b5bA672Ae99d627A1C87866b8E53F47Db2E6
38
+ ),
39
+ IPool(0x6C9fB0D5bD9429eb9Cd96B85B81d872281771E6B),
40
+ IPoolConfigurator(
41
+ 0x7b47e727eC539CB74A744ae5259ef26743294fca
42
+ ),
43
+ IAaveOracle(0x520D14AE678b41067f029Ad770E2870F85E76588),
44
+ IAaveProtocolDataProvider(
45
+ 0x8f57153F18b7273f9A814b93b31Cb3f9b035e7C2
46
+ ),
47
+ IACLManager(0x6437b6E14D7ECa1Fa9854df92eB067253D5f683A),
48
+ 0x77c45699A715A64A7a7796d5CEe884cf617D5254,
49
+ 0x3B6E7a4750e478D7f7d6A5d464099A02ef164bCC,
50
+ 0x810d913542D399F3680F0E806DEDf6EACf0e3383
51
+ );
52
+ } else if (
53
+ keccak256(abi.encodePacked((market))) ==
54
+ keccak256(abi.encodePacked((AaveV3Fuji)))
55
+ ) {
56
+ return
57
+ Market(
58
+ IPoolAddressesProvider(
59
+ 0x1775ECC8362dB6CaB0c7A9C0957cF656A5276c29
60
+ ),
61
+ IPool(0xb47673b7a73D78743AFF1487AF69dBB5763F00cA),
62
+ IPoolConfigurator(
63
+ 0x01743372F0F0318AaDF690f960A4c6c4eab58782
64
+ ),
65
+ IAaveOracle(0xAc6D153BF94aFBdC296e72163735B0f94581F736),
66
+ IAaveProtocolDataProvider(
67
+ 0x8e0988b28f9CdDe0134A206dfF94111578498C63
68
+ ),
69
+ IACLManager(0xAa6Fd640173bcA58e5a5CC373531F9038eF3F9e1),
70
+ 0x77c45699A715A64A7a7796d5CEe884cf617D5254,
71
+ 0xBaaCc99123133851Ba2D6d34952aa08CBDf5A4E4,
72
+ 0xFCadBDefd30E11258559Ba239C8a5A8A8D28CB00
73
+ );
74
+ } else if (
75
+ keccak256(abi.encodePacked((market))) ==
76
+ keccak256(abi.encodePacked((AaveV3FantomTestnet)))
77
+ ) {
78
+ return
79
+ Market(
80
+ IPoolAddressesProvider(
81
+ 0xE339D30cBa24C70dCCb82B234589E3C83249e658
82
+ ),
83
+ IPool(0x771A45a19cE333a19356694C5fc80c76fe9bc741),
84
+ IPoolConfigurator(
85
+ 0x59B84a6C943dD655D9E3B4024fC6AdC0E3f4Ff60
86
+ ),
87
+ IAaveOracle(0xA840C768f7143495790eC8dc2D5f32B71B6Dc113),
88
+ IAaveProtocolDataProvider(
89
+ 0xCbAcff915f2d10727844ab0f2A4D9768954981e4
90
+ ),
91
+ IACLManager(0x94f154aba287b3024fb32386463FC52d488bb09B),
92
+ 0x77c45699A715A64A7a7796d5CEe884cf617D5254,
93
+ 0xF49dA7a22463D140f9f8dc7C91468C8721215496,
94
+ 0x7aaB2c2CC186131851d6B1876D16eDc849846042
95
+ );
96
+ } else if (
97
+ keccak256(abi.encodePacked((market))) ==
98
+ keccak256(abi.encodePacked((AaveV3OptimismKovan)))
99
+ ) {
100
+ return
101
+ Market(
102
+ IPoolAddressesProvider(
103
+ 0xD15d36975A0200D11B8a8964F4F267982D2a1cFe
104
+ ),
105
+ IPool(0x139d8F557f70D1903787e929D7C42165c4667229),
106
+ IPoolConfigurator(
107
+ 0x12F6E19b968e34fEE34763469c7EAf902Af6914B
108
+ ),
109
+ IAaveOracle(0xce87225e5A0ABFe6241C6A60158840d509a84B47),
110
+ IAaveProtocolDataProvider(
111
+ 0x2f733c0389bfF96a3f930Deb2f6DB1d767Cd3215
112
+ ),
113
+ IACLManager(0x552626e2E6e35566d53CE0C5Ad97d72E95bC3fc3),
114
+ 0x77c45699A715A64A7a7796d5CEe884cf617D5254,
115
+ 0x733DC8C72B189791B28Dc8c6Fb09D9201b01eF2f,
116
+ 0x9b791f6A34B2C87c360902F050dA5e0075b7A567
117
+ );
118
+ } else revert("Market does not exist");
119
+ }
120
+ }