Skip to content

Commit

Permalink
feat: emode category for v3 config engine (#97)
Browse files Browse the repository at this point in the history
* cherry pick commit from gauntlet

* fix: keep current address

* fix: keep current string

* fix: use safecast

* fix: execute emode update first

* fix: liqBonus

* test: _validateEmodeCategory

* test: eModeCategoryUpdate

* docs: fix

* fix: reserveFlashLoaning and RF on engine

* test: config engine fixes and refactor

* chore: update diffs reports and ir

* docs: update ReadMe

* docs: fix some comments

* fix: compiler warning

* fix: require message

* fix: codesize by making variables internal

* feat: split the engine into libraries

* fix: make variables public again and fix interface

* fix: use engine libs as immutables

* docs: some comments

* fix: use calldata

* fix: interface

* fix: listAssets using libs

* fix: change function visibility to external

* fix: revert listAssets from libs

* fix: lint and some refactoring

* feat: seperate e-mode asset update from collateral update

* docs: update Readme

* test: emode category update of an asset

* refactor: get engine constants in struct

* fix: script

* fix: single entry point for engine libs

* refactor: some cleanup

* refactor: cleanup

* chore: via-ir config for build

* chore: update libs

* docs: some comments

* fix: remove tokenImpls from engine constants

* fix: require on borrow engine

* refactor: rateEngine EModeEngine

* fix: pragma version

* fix: require on rate engine

* test: engine e-mode category no change

* fix: repack struct (#111)

* fix: repack struct

* fix: add prefix

* fix: typo

* run tests after merge

* chore: soften solidity version on swapper and bridge

---------

Co-authored-by: Jonathan Reem <[email protected]>
Co-authored-by: Lukas <[email protected]>
Co-authored-by: Rustem Kurmaev <[email protected]>
  • Loading branch information
4 people authored Sep 14, 2023
1 parent 8460740 commit 88ccbc4
Show file tree
Hide file tree
Showing 94 changed files with 11,281 additions and 3,181 deletions.
1 change: 1 addition & 0 deletions .assets/0372907d0b2f3da48f7adcaed3b1452230cd5c2b.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions .assets/398a9e53757e01d6b0e762e21b88bb93cf4aa95e.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions .assets/d863762e7fefb79a105c6a1e9b93f4f7f2671ac4.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions .assets/eda3aded0333ece535adb2c0df7f1b16add284a2.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions .assets/ff9e4fbc62a514b26930a610b56fc551c9a85e5d.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
86 changes: 1 addition & 85 deletions diffs/preTestEngineArbV3_postTestEngineArbV3.md
Original file line number Diff line number Diff line change
@@ -1,89 +1,5 @@
## Reserve changes

### Reserve altered

#### WETH ([0x82aF49447D8a07e3bd95BD0d56f35241523fBab1](https://arbiscan.io/address/0x82aF49447D8a07e3bd95BD0d56f35241523fBab1))

| description | value before | value after |
| --- | --- | --- |
| reserveFactor | 10 % | 15 % |
| interestRateStrategy | [0x9b34E3e183c9b0d1a08fF57a8fb59c821616295f](https://arbiscan.io/address/0x9b34E3e183c9b0d1a08fF57a8fb59c821616295f) | [0x27eFE5db315b71753b2a38ED3d5dd7E9362ba93F](https://arbiscan.io/address/0x27eFE5db315b71753b2a38ED3d5dd7E9362ba93F) |
| optimalUsageRatio | 45 % | 80 % |
| maxExcessUsageRatio | 55 % | 20 % |
| baseVariableBorrowRate | 0 % | 1 % |
| variableRateSlope1 | 7 % | 3.8 % |
| variableRateSlope2 | 300 % | 80 % |
| baseStableBorrowRate | 9 % | 6.8 % |
| stableRateSlope1 | 0 % | 4 % |
| stableRateSlope2 | 0 % | 80 % |
| interestRate | ![before](/.assets/19b2f23d55d76d891e7d30c29aa97741efed9d17.svg) | ![after](/.assets/25b7cbb97d2012b141455f46ee9b3f7e0e40a4b0.svg) |

#### EURS ([0xD22a58f79e9481D1a88e00c343885A588b34b68B](https://arbiscan.io/address/0xD22a58f79e9481D1a88e00c343885A588b34b68B))

| description | value before | value after |
| --- | --- | --- |
| interestRateStrategy | [0x41B66b4b6b4c9dab039d96528D1b88f7BAF8C5A4](https://arbiscan.io/address/0x41B66b4b6b4c9dab039d96528D1b88f7BAF8C5A4) | [0xA9F3C3caE095527061e6d270DBE163693e6fda9D](https://arbiscan.io/address/0xA9F3C3caE095527061e6d270DBE163693e6fda9D) |
| optimalUsageRatio | 90 % | 80 % |
| maxExcessUsageRatio | 10 % | 20 % |
| variableRateSlope2 | 60 % | 75 % |
| stableRateSlope2 | 60 % | 75 % |
| interestRate | ![before](/.assets/ea60696e57315a00b0941d7fe1bd186df779165e.svg) | ![after](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) |

#### USDT ([0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9](https://arbiscan.io/address/0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9))

| description | value before | value after |
| --- | --- | --- |
| interestRateStrategy | [0x41B66b4b6b4c9dab039d96528D1b88f7BAF8C5A4](https://arbiscan.io/address/0x41B66b4b6b4c9dab039d96528D1b88f7BAF8C5A4) | [0xA9F3C3caE095527061e6d270DBE163693e6fda9D](https://arbiscan.io/address/0xA9F3C3caE095527061e6d270DBE163693e6fda9D) |
| optimalUsageRatio | 90 % | 80 % |
| maxExcessUsageRatio | 10 % | 20 % |
| variableRateSlope2 | 60 % | 75 % |
| stableRateSlope2 | 60 % | 75 % |
| interestRate | ![before](/.assets/ea60696e57315a00b0941d7fe1bd186df779165e.svg) | ![after](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) |

## Raw diff

```json
{
"reserves": {
"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1": {
"interestRateStrategy": {
"from": "0x9b34E3e183c9b0d1a08fF57a8fb59c821616295f",
"to": "0x27eFE5db315b71753b2a38ED3d5dd7E9362ba93F"
},
"reserveFactor": {
"from": 1000,
"to": 1500
}
},
"0xD22a58f79e9481D1a88e00c343885A588b34b68B": {
"interestRateStrategy": {
"from": "0x41B66b4b6b4c9dab039d96528D1b88f7BAF8C5A4",
"to": "0xA9F3C3caE095527061e6d270DBE163693e6fda9D"
}
},
"0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9": {
"interestRateStrategy": {
"from": "0x41B66b4b6b4c9dab039d96528D1b88f7BAF8C5A4",
"to": "0xA9F3C3caE095527061e6d270DBE163693e6fda9D"
}
}
},
"strategies": {
"0x27eFE5db315b71753b2a38ED3d5dd7E9362ba93F": {
"from": null,
"to": {
"baseStableBorrowRate": "68000000000000000000000000",
"baseVariableBorrowRate": "10000000000000000000000000",
"maxExcessStableToTotalDebtRatio": "800000000000000000000000000",
"maxExcessUsageRatio": "200000000000000000000000000",
"optimalStableToTotalDebtRatio": "200000000000000000000000000",
"optimalUsageRatio": "800000000000000000000000000",
"stableRateSlope1": "40000000000000000000000000",
"stableRateSlope2": "800000000000000000000000000",
"variableRateSlope1": "38000000000000000000000000",
"variableRateSlope2": "800000000000000000000000000"
}
}
}
}
{}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
## Reserve changes

### Reserves altered

#### rETH ([0xae78736Cd615f374D3085123A210448E74Fc6393](https://etherscan.io/address/0xae78736Cd615f374D3085123A210448E74Fc6393))

| description | value before | value after |
| --- | --- | --- |
| eModeCategory | 0 | 1 |


## Raw diff

```json
{
"reserves": {
"0xae78736Cd615f374D3085123A210448E74Fc6393": {
"eModeCategory": {
"from": 0,
"to": 1
}
}
}
}
```
108 changes: 1 addition & 107 deletions diffs/preTestEngineAvaV3_postTestEngineAvaV3.md
Original file line number Diff line number Diff line change
@@ -1,111 +1,5 @@
## Reserve changes

### Reserve altered

#### WETH.e ([0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB](https://snowtrace.io/address/0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB))

| description | value before | value after |
| --- | --- | --- |
| reserveFactor | 10 % | 15 % |
| interestRateStrategy | [0x79a906e8c998d2fb5C5D66d23c4c5416Fe0168D6](https://snowtrace.io/address/0x79a906e8c998d2fb5C5D66d23c4c5416Fe0168D6) | [0xc76EF342898f1AE7E6C4632627Df683FAD8563DD](https://snowtrace.io/address/0xc76EF342898f1AE7E6C4632627Df683FAD8563DD) |
| optimalUsageRatio | 45 % | 80 % |
| maxExcessUsageRatio | 55 % | 20 % |
| baseVariableBorrowRate | 0 % | 1 % |
| variableRateSlope1 | 7 % | 3.8 % |
| variableRateSlope2 | 300 % | 80 % |
| baseStableBorrowRate | 9 % | 6.8 % |
| stableRateSlope1 | 0 % | 4 % |
| stableRateSlope2 | 0 % | 80 % |
| interestRate | ![before](/.assets/19b2f23d55d76d891e7d30c29aa97741efed9d17.svg) | ![after](/.assets/25b7cbb97d2012b141455f46ee9b3f7e0e40a4b0.svg) |

#### MAI ([0x5c49b268c9841AFF1Cc3B0a418ff5c3442eE3F3b](https://snowtrace.io/address/0x5c49b268c9841AFF1Cc3B0a418ff5c3442eE3F3b))

| description | value before | value after |
| --- | --- | --- |
| reserveFactor | 10 % | 20 % |
| interestRateStrategy | [0xf4a0039F2d4a2EaD5216AbB6Ae4C4C3AA2dB9b82](https://snowtrace.io/address/0xf4a0039F2d4a2EaD5216AbB6Ae4C4C3AA2dB9b82) | [0xfab05a6aF585da2F96e21452F91E812452996BD3](https://snowtrace.io/address/0xfab05a6aF585da2F96e21452F91E812452996BD3) |
| optimalUsageRatio | 90 % | 80 % |
| maxExcessUsageRatio | 10 % | 20 % |
| variableRateSlope2 | 60 % | 75 % |
| stableRateSlope2 | 60 % | 75 % |
| interestRate | ![before](/.assets/ea60696e57315a00b0941d7fe1bd186df779165e.svg) | ![after](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) |

#### USDt ([0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7](https://snowtrace.io/address/0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7))

| description | value before | value after |
| --- | --- | --- |
| interestRateStrategy | [0xf4a0039F2d4a2EaD5216AbB6Ae4C4C3AA2dB9b82](https://snowtrace.io/address/0xf4a0039F2d4a2EaD5216AbB6Ae4C4C3AA2dB9b82) | [0xfab05a6aF585da2F96e21452F91E812452996BD3](https://snowtrace.io/address/0xfab05a6aF585da2F96e21452F91E812452996BD3) |
| optimalUsageRatio | 90 % | 80 % |
| maxExcessUsageRatio | 10 % | 20 % |
| variableRateSlope2 | 60 % | 75 % |
| stableRateSlope2 | 60 % | 75 % |
| interestRate | ![before](/.assets/ea60696e57315a00b0941d7fe1bd186df779165e.svg) | ![after](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) |

#### FRAX ([0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64](https://snowtrace.io/address/0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64))

| description | value before | value after |
| --- | --- | --- |
| interestRateStrategy | [0xf4a0039F2d4a2EaD5216AbB6Ae4C4C3AA2dB9b82](https://snowtrace.io/address/0xf4a0039F2d4a2EaD5216AbB6Ae4C4C3AA2dB9b82) | [0xfab05a6aF585da2F96e21452F91E812452996BD3](https://snowtrace.io/address/0xfab05a6aF585da2F96e21452F91E812452996BD3) |
| optimalUsageRatio | 90 % | 80 % |
| maxExcessUsageRatio | 10 % | 20 % |
| variableRateSlope2 | 60 % | 75 % |
| stableRateSlope2 | 60 % | 75 % |
| interestRate | ![before](/.assets/ea60696e57315a00b0941d7fe1bd186df779165e.svg) | ![after](/.assets/8d9de32bf30b1c9dcf71f07a13b228c69a71a4ce.svg) |

## Raw diff

```json
{
"reserves": {
"0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB": {
"interestRateStrategy": {
"from": "0x79a906e8c998d2fb5C5D66d23c4c5416Fe0168D6",
"to": "0xc76EF342898f1AE7E6C4632627Df683FAD8563DD"
},
"reserveFactor": {
"from": 1000,
"to": 1500
}
},
"0x5c49b268c9841AFF1Cc3B0a418ff5c3442eE3F3b": {
"interestRateStrategy": {
"from": "0xf4a0039F2d4a2EaD5216AbB6Ae4C4C3AA2dB9b82",
"to": "0xfab05a6aF585da2F96e21452F91E812452996BD3"
},
"reserveFactor": {
"from": 1000,
"to": 2000
}
},
"0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7": {
"interestRateStrategy": {
"from": "0xf4a0039F2d4a2EaD5216AbB6Ae4C4C3AA2dB9b82",
"to": "0xfab05a6aF585da2F96e21452F91E812452996BD3"
}
},
"0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64": {
"interestRateStrategy": {
"from": "0xf4a0039F2d4a2EaD5216AbB6Ae4C4C3AA2dB9b82",
"to": "0xfab05a6aF585da2F96e21452F91E812452996BD3"
}
}
},
"strategies": {
"0xc76EF342898f1AE7E6C4632627Df683FAD8563DD": {
"from": null,
"to": {
"baseStableBorrowRate": "68000000000000000000000000",
"baseVariableBorrowRate": "10000000000000000000000000",
"maxExcessStableToTotalDebtRatio": "800000000000000000000000000",
"maxExcessUsageRatio": "200000000000000000000000000",
"optimalStableToTotalDebtRatio": "200000000000000000000000000",
"optimalUsageRatio": "800000000000000000000000000",
"stableRateSlope1": "40000000000000000000000000",
"stableRateSlope2": "800000000000000000000000000",
"variableRateSlope1": "38000000000000000000000000",
"variableRateSlope2": "800000000000000000000000000"
}
}
}
}
{}
```
5 changes: 5 additions & 0 deletions diffs/preTestEngineBorrow_postTestEngineBorrow.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

| description | value before | value after |
| --- | --- | --- |
| isFlashloanable | true | false |
| reserveFactor | 0 % | 15 % |
| borrowingEnabled | false | true |

Expand All @@ -20,6 +21,10 @@
"from": false,
"to": true
},
"isFlashloanable": {
"from": true,
"to": false
},
"reserveFactor": {
"from": 0,
"to": 1500
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
## Raw diff

```json
{}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
## Raw diff

```json
{
"eModes": {
"1": {
"liquidationBonus": {
"from": 10100,
"to": 10150
},
"liquidationThreshold": {
"from": 9750,
"to": 9760
},
"ltv": {
"from": 9700,
"to": 9740
}
}
}
}
```
16 changes: 8 additions & 8 deletions diffs/preTestEngineListingCustom_postTestEngineListingCustom.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@
| oracle | [0x72AFAECF99C9d9C8215fF44C77B94B99C28741e8](https://etherscan.io/address/0x72AFAECF99C9d9C8215fF44C77B94B99C28741e8) |
| oracleDecimals | 18 |
| oracleDescription | 1INCH / ETH |
| oracleLatestAnswer | 0.000328918384865774 |
| oracleLatestAnswer | 0.000216287562682828 |
| usageAsCollateralEnabled | true |
| ltv | 82.5 % |
| liquidationThreshold | 86 % |
| liquidationBonus | 5 % |
| liquidationProtocolFee | 10 % |
| reserveFactor | 10 % |
| aToken | [0x7B95Ec873268a6BFC6427e7a28e396Db9D0ebc65](https://etherscan.io/address/0x7B95Ec873268a6BFC6427e7a28e396Db9D0ebc65) |
| aToken | [0x545bD6c032eFdde65A377A6719DEF2796C8E0f2e](https://etherscan.io/address/0x545bD6c032eFdde65A377A6719DEF2796C8E0f2e) |
| aTokenImpl | [0x7EfFD7b47Bfd17e52fB7559d3f924201b9DbfF3d](https://etherscan.io/address/0x7EfFD7b47Bfd17e52fB7559d3f924201b9DbfF3d) |
| variableDebtToken | [0x1b7D3F4b3c032a5AE656e30eeA4e8E1Ba376068F](https://etherscan.io/address/0x1b7D3F4b3c032a5AE656e30eeA4e8E1Ba376068F) |
| variableDebtToken | [0xd180D7fdD4092f07428eFE801E17BC03576b3192](https://etherscan.io/address/0xd180D7fdD4092f07428eFE801E17BC03576b3192) |
| variableDebtTokenImpl | [0xaC725CB59D16C81061BDeA61041a8A5e73DA9EC6](https://etherscan.io/address/0xaC725CB59D16C81061BDeA61041a8A5e73DA9EC6) |
| stableDebtToken | [0x90D9CD005E553111EB8C9c31Abe9706a186b6048](https://etherscan.io/address/0x90D9CD005E553111EB8C9c31Abe9706a186b6048) |
| stableDebtToken | [0x7617d02E311CdE347A0cb45BB7DF2926BBaf5347](https://etherscan.io/address/0x7617d02E311CdE347A0cb45BB7DF2926BBaf5347) |
| stableDebtTokenImpl | [0x15C5620dfFaC7c7366EED66C20Ad222DDbB1eD57](https://etherscan.io/address/0x15C5620dfFaC7c7366EED66C20Ad222DDbB1eD57) |
| borrowingEnabled | true |
| stableBorrowRateEnabled | true |
Expand Down Expand Up @@ -63,7 +63,7 @@
"0x111111111117dC0aa78b770fA6A738034120C302": {
"from": null,
"to": {
"aToken": "0x7B95Ec873268a6BFC6427e7a28e396Db9D0ebc65",
"aToken": "0x545bD6c032eFdde65A377A6719DEF2796C8E0f2e",
"aTokenImpl": "0x7EfFD7b47Bfd17e52fB7559d3f924201b9DbfF3d",
"aTokenName": "Aave Ethereum 1INCH",
"aTokenSymbol": "aEth1INCH",
Expand All @@ -86,18 +86,18 @@
"oracle": "0x72AFAECF99C9d9C8215fF44C77B94B99C28741e8",
"oracleDecimals": 18,
"oracleDescription": "1INCH / ETH",
"oracleLatestAnswer": 328918384865774,
"oracleLatestAnswer": 216287562682828,
"reserveFactor": 1000,
"stableBorrowRateEnabled": true,
"stableDebtToken": "0x90D9CD005E553111EB8C9c31Abe9706a186b6048",
"stableDebtToken": "0x7617d02E311CdE347A0cb45BB7DF2926BBaf5347",
"stableDebtTokenImpl": "0x15C5620dfFaC7c7366EED66C20Ad222DDbB1eD57",
"stableDebtTokenName": "Aave Ethereum Stable Debt 1INCH",
"stableDebtTokenSymbol": "stableDebtEth1INCH",
"supplyCap": 85000,
"symbol": "1INCH",
"underlying": "0x111111111117dC0aa78b770fA6A738034120C302",
"usageAsCollateralEnabled": true,
"variableDebtToken": "0x1b7D3F4b3c032a5AE656e30eeA4e8E1Ba376068F",
"variableDebtToken": "0xd180D7fdD4092f07428eFE801E17BC03576b3192",
"variableDebtTokenImpl": "0xaC725CB59D16C81061BDeA61041a8A5e73DA9EC6",
"variableDebtTokenName": "Aave Ethereum Variable Debt 1INCH",
"variableDebtTokenSymbol": "variableDebtEth1INCH"
Expand Down
4 changes: 2 additions & 2 deletions diffs/preTestEngineListing_postTestEngineListing.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
| debtCeiling | 0 $ |
| isSiloed | false |
| isFlashloanable | false |
| eModeCategory | 0 |
| eModeCategory | 1 |
| oracle | [0x443C5116CdF663Eb387e72C688D276e702135C87](https://polygonscan.com/address/0x443C5116CdF663Eb387e72C688D276e702135C87) |
| oracleDecimals | 8 |
| oracleDescription | 1INCH / USD |
Expand Down Expand Up @@ -71,7 +71,7 @@
"borrowingEnabled": true,
"debtCeiling": 0,
"decimals": 18,
"eModeCategory": 0,
"eModeCategory": 1,
"interestRateStrategy": "0x03733F4E008d36f2e37F0080fF1c8DF756622E6F",
"isActive": true,
"isBorrowableInIsolation": false,
Expand Down
Loading

1 comment on commit 88ccbc4

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Foundry report

forge 0.2.0 (74c0318 2023-09-14T00:16:32.962998641Z)
Build log
Compiling 236 files with 0.8.18
Solc 0.8.18 finished in 97.91s
Compiler run successful with warnings:
Warning (8760): This declaration has the same name as another declaration.
  --> src/dependencies/DefaultReserveInterestRateStrategy.sol:60:5:
   |
60 |     uint256 baseVariableBorrowRate,
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Note: The other declaration is here:
  --> src/dependencies/DefaultReserveInterestRateStrategy.sol:92:3:
   |
92 |   function baseVariableBorrowRate() external view override returns (uint256) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (8760): This declaration has the same name as another declaration.
  --> src/dependencies/DefaultReserveInterestRateStrategy.sol:61:5:
   |
61 |     uint256 variableRateSlope1,
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
Note: The other declaration is here:
  --> src/dependencies/DefaultReserveInterestRateStrategy.sol:76:3:
   |
76 |   function variableRateSlope1() external view returns (uint256) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (8760): This declaration has the same name as another declaration.
  --> src/dependencies/DefaultReserveInterestRateStrategy.sol:62:5:
   |
62 |     uint256 variableRateSlope2,
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
Note: The other declaration is here:
  --> src/dependencies/DefaultReserveInterestRateStrategy.sol:80:3:
   |
80 |   function variableRateSlope2() external view returns (uint256) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (8760): This declaration has the same name as another declaration.
  --> src/dependencies/DefaultReserveInterestRateStrategy.sol:63:5:
   |
63 |     uint256 stableRateSlope1,
   |     ^^^^^^^^^^^^^^^^^^^^^^^^
Note: The other declaration is here:
  --> src/dependencies/DefaultReserveInterestRateStrategy.sol:84:3:
   |
84 |   function stableRateSlope1() external view returns (uint256) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (8760): This declaration has the same name as another declaration.
  --> src/dependencies/DefaultReserveInterestRateStrategy.sol:64:5:
   |
64 |     uint256 stableRateSlope2
   |     ^^^^^^^^^^^^^^^^^^^^^^^^
Note: The other declaration is here:
  --> src/dependencies/DefaultReserveInterestRateStrategy.sol:88:3:
   |
88 |   function stableRateSlope2() external view returns (uint256) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2462): Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient.
  --> src/dependencies/DefaultReserveInterestRateStrategy.sol:57:3:
   |
57 |   constructor(
   |   ^ (Relevant source part starts here and spans across multiple lines).

| Contract                                    | Size (kB) | Margin (kB) |
|---------------------------------------------|-----------|-------------|
| AaveGovernanceV2                            | 0.086     | 24.49       |
| AaveMisc                                    | 0.086     | 24.49       |
| AavePolEthERC20Bridge                       | 3.027     | 21.549      |
| AaveSafetyModule                            | 0.086     | 24.49       |
| AaveSwapper                                 | 5.613     | 18.963      |
| AaveV2Avalanche                             | 0.086     | 24.49       |
| AaveV2AvalancheAssets                       | 0.086     | 24.49       |
| AaveV2ConfigEngine                          | 3.18      | 21.396      |
| AaveV2Ethereum                              | 0.086     | 24.49       |
| AaveV2EthereumAMM                           | 0.086     | 24.49       |
| AaveV2EthereumAMMAssets                     | 0.086     | 24.49       |
| AaveV2EthereumArc                           | 0.086     | 24.49       |
| AaveV2EthereumArcAssets                     | 0.086     | 24.49       |
| AaveV2EthereumAssets                        | 0.086     | 24.49       |
| AaveV2EthereumRatesUpdate                   | 1.512     | 23.064      |
| AaveV2Fuji                                  | 0.086     | 24.49       |
| AaveV2FujiAssets                            | 0.086     | 24.49       |
| AaveV2Goerli                                | 0.086     | 24.49       |
| AaveV2GoerliAssets                          | 0.086     | 24.49       |
| AaveV2Mumbai                                | 0.086     | 24.49       |
| AaveV2MumbaiAssets                          | 0.086     | 24.49       |
| AaveV2Polygon                               | 0.086     | 24.49       |
| AaveV2PolygonAssets                         | 0.086     | 24.49       |
| AaveV3Arbitrum                              | 0.086     | 24.49       |
| AaveV3ArbitrumAssets                        | 0.086     | 24.49       |
| AaveV3ArbitrumEModes                        | 0.086     | 24.49       |
| AaveV3ArbitrumGoerli                        | 0.086     | 24.49       |
| AaveV3ArbitrumGoerliAssets                  | 0.086     | 24.49       |
| AaveV3ArbitrumGoerliEModes                  | 0.086     | 24.49       |
| AaveV3ArbitrumRatesUpdates070322            | 4.674     | 19.902      |
| AaveV3Avalanche                             | 0.086     | 24.49       |
| AaveV3AvalancheAssets                       | 0.086     | 24.49       |
| AaveV3AvalancheCollateralUpdate             | 3.408     | 21.168      |
| AaveV3AvalancheCollateralUpdateCorrectBonus | 3.408     | 21.168      |
| AaveV3AvalancheCollateralUpdateNoChange     | 3.428     | 21.148      |
| AaveV3AvalancheCollateralUpdateWrongBonus   | 3.408     | 21.168      |
| AaveV3AvalancheEModeCategoryUpdateEdgeBonus | 3.379     | 21.197      |
| AaveV3AvalancheEModeCategoryUpdateNoChange  | 3.443     | 21.133      |
| AaveV3AvalancheEModes                       | 0.086     | 24.49       |
| AaveV3AvalancheRatesUpdates070322           | 5.115     | 19.461      |
| AaveV3Base                                  | 0.086     | 24.49       |
| AaveV3BaseAssets                            | 0.086     | 24.49       |
| AaveV3BaseEModes                            | 0.086     | 24.49       |
| AaveV3ConfigEngine                          | 8.273     | 16.303      |
| AaveV3Ethereum                              | 0.086     | 24.49       |
| AaveV3EthereumAssetEModeUpdate              | 3.257     | 21.319      |
| AaveV3EthereumAssets                        | 0.086     | 24.49       |
| AaveV3EthereumEModes                        | 0.086     | 24.49       |
| AaveV3EthereumMockCapUpdate                 | 3.335     | 21.241      |
| AaveV3EthereumMockCustomListing             | 4.168     | 20.408      |
| AaveV3Fantom                                | 0.086     | 24.49       |
| AaveV3FantomAssets                          | 0.086     | 24.49       |
| AaveV3FantomEModes                          | 0.086     | 24.49       |
| AaveV3FantomTestnet                         | 0.086     | 24.49       |
| AaveV3FantomTestnetAssets                   | 0.086     | 24.49       |
| AaveV3FantomTestnetEModes                   | 0.086     | 24.49       |
| AaveV3Fuji                                  | 0.086     | 24.49       |
| AaveV3FujiAssets                            | 0.086     | 24.49       |
| AaveV3FujiEModes                            | 0.086     | 24.49       |
| AaveV3GoerliGho                             | 0.086     | 24.49       |
| AaveV3GoerliGhoAssets                       | 0.086     | 24.49       |
| AaveV3GoerliGhoEModes                       | 0.086     | 24.49       |
| AaveV3Harmony                               | 0.086     | 24.49       |
| AaveV3HarmonyAssets                         | 0.086     | 24.49       |
| AaveV3HarmonyEModes                         | 0.086     | 24.49       |
| AaveV3Metis                                 | 0.086     | 24.49       |
| AaveV3MetisAssets                           | 0.086     | 24.49       |
| AaveV3MetisEModes                           | 0.086     | 24.49       |
| AaveV3Mumbai                                | 0.086     | 24.49       |
| AaveV3MumbaiAssets                          | 0.086     | 24.49       |
| AaveV3MumbaiEModes                          | 0.086     | 24.49       |
| AaveV3Optimism                              | 0.086     | 24.49       |
| AaveV3OptimismAssets                        | 0.086     | 24.49       |
| AaveV3OptimismEModes                        | 0.086     | 24.49       |
| AaveV3OptimismGoerli                        | 0.086     | 24.49       |
| AaveV3OptimismGoerliAssets                  | 0.086     | 24.49       |
| AaveV3OptimismGoerliEModes                  | 0.086     | 24.49       |
| AaveV3OptimismMockRatesUpdate               | 3.669     | 20.907      |
| AaveV3OptimismRatesUpdates070322            | 4.377     | 20.199      |
| AaveV3Polygon                               | 0.086     | 24.49       |
| AaveV3PolygonAssets                         | 0.086     | 24.49       |
| AaveV3PolygonBorrowUpdate                   | 3.428     | 21.148      |
| AaveV3PolygonEModeCategoryUpdate            | 3.377     | 21.199      |
| AaveV3PolygonEModes                         | 0.086     | 24.49       |
| AaveV3PolygonMockListing                    | 3.986     | 20.59       |
| AaveV3PolygonPriceFeedUpdate                | 3.276     | 21.3        |
| AaveV3PolygonRatesUpdates070322             | 5.73      | 18.846      |
| AaveV3ScrollAlpha                           | 0.086     | 24.49       |
| AaveV3ScrollAlphaAssets                     | 0.086     | 24.49       |
| AaveV3ScrollAlphaEModes                     | 0.086     | 24.49       |
| AaveV3ScrollSepolia                         | 0.086     | 24.49       |
| AaveV3ScrollSepoliaAssets                   | 0.086     | 24.49       |
| AaveV3ScrollSepoliaEModes                   | 0.086     | 24.49       |
| AaveV3Sepolia                               | 0.086     | 24.49       |
| AaveV3SepoliaAssets                         | 0.086     | 24.49       |
| AaveV3SepoliaEModes                         | 0.086     | 24.49       |
| Address                                     | 0.086     | 24.49       |
| AddressAliasHelper                          | 0.086     | 24.49       |
| BorrowEngine                                | 2.923     | 21.653      |
| CapsEngine                                  | 1.256     | 23.32       |
| CapsPlusRiskSteward                         | 2.607     | 21.969      |
| CapsPlusRiskStewardErrors                   | 0.556     | 24.02       |
| ChainIds                                    | 0.086     | 24.49       |
| CollateralEngine                            | 2.836     | 21.74       |
| ConfiguratorInputTypes                      | 0.086     | 24.49       |
| Create2Utils                                | 0.164     | 24.412      |
| CrosschainForwarderArbitrum                 | 2.246     | 22.33       |
| CrosschainForwarderMetis                    | 1.561     | 23.015      |
| CrosschainForwarderOptimism                 | 1.689     | 22.887      |
| CrosschainForwarderPolygon                  | 1.435     | 23.141      |
| DataTypes                                   | 0.086     | 24.49       |
| DefaultReserveInterestRateStrategy          | 3.485     | 21.091      |
| DeployEngineArbLib                          | 0.086     | 24.49       |
| DeployEngineAvaLib                          | 0.086     | 24.49       |
| DeployEngineEthLib                          | 0.086     | 24.49       |
| DeployEngineMetLib                          | 0.086     | 24.49       |
| DeployEngineOptLib                          | 0.086     | 24.49       |
| DeployEnginePolLib                          | 0.086     | 24.49       |
| DeployRatesFactoryArbLib                    | 0.086     | 24.49       |
| DeployRatesFactoryAvaLib                    | 0.086     | 24.49       |
| DeployRatesFactoryEthLib                    | 0.086     | 24.49       |
| DeployRatesFactoryLib                       | 0.086     | 24.49       |
| DeployRatesFactoryMetLib                    | 0.086     | 24.49       |
| DeployRatesFactoryOptLib                    | 0.086     | 24.49       |
| DeployRatesFactoryPolLib                    | 0.086     | 24.49       |
| DeployV2EngineAvaLib                        | 0.086     | 24.49       |
| DeployV2EngineEthAMMLib                     | 0.086     | 24.49       |
| DeployV2EngineEthLib                        | 0.086     | 24.49       |
| DeployV2EnginePolLib                        | 0.086     | 24.49       |
| DeployV2RatesFactoryAvaLib                  | 0.086     | 24.49       |
| DeployV2RatesFactoryEthAMMLib               | 0.086     | 24.49       |
| DeployV2RatesFactoryEthLib                  | 0.086     | 24.49       |
| DeployV2RatesFactoryLib                     | 0.086     | 24.49       |
| DeployV2RatesFactoryPolLib                  | 0.086     | 24.49       |
| EModeEngine                                 | 4.404     | 20.172      |
| ERC1967Proxy                                | 0.699     | 23.877      |
| EngineFlags                                 | 0.086     | 24.49       |
| Errors                                      | 3.952     | 20.624      |
| FxChild                                     | 1.039     | 23.537      |
| FxRoot                                      | 0.811     | 23.765      |
| GovHelpers                                  | 0.086     | 24.49       |
| GovernanceV3Arbitrum                        | 0.086     | 24.49       |
| GovernanceV3Avalanche                       | 0.086     | 24.49       |
| GovernanceV3Base                            | 0.086     | 24.49       |
| GovernanceV3Binance                         | 0.086     | 24.49       |
| GovernanceV3Ethereum                        | 0.086     | 24.49       |
| GovernanceV3Fuji                            | 0.086     | 24.49       |
| GovernanceV3Goerli                          | 0.086     | 24.49       |
| GovernanceV3Metis                           | 0.086     | 24.49       |
| GovernanceV3Mumbai                          | 0.086     | 24.49       |
| GovernanceV3Optimism                        | 0.086     | 24.49       |
| GovernanceV3Polygon                         | 0.086     | 24.49       |
| ListingEngine                               | 8.792     | 15.784      |
| MockExecutor                                | 0.437     | 24.139      |
| MyPayload                                   | 1.53      | 23.046      |
| PayloadWithEmit                             | 0.15      | 24.426      |
| PayloadsControllerUtils                     | 0.086     | 24.49       |
| PercentageMath                              | 0.086     | 24.49       |
| PriceFeedEngine                             | 1.657     | 22.919      |
| ProxyAdmin                                  | 1.683     | 22.893      |
| ProxyHelpers                                | 0.086     | 24.49       |
| RateEngine                                  | 3.596     | 20.98       |
| ReserveConfiguration                        | 0.171     | 24.405      |
| SafeCast                                    | 0.086     | 24.49       |
| SafeERC20                                   | 0.086     | 24.49       |
| SafeMath                                    | 0.086     | 24.49       |
| StdStyle                                    | 0.086     | 24.49       |
| StorageHelpers                              | 0.086     | 24.49       |
| StorageSlot                                 | 0.086     | 24.49       |
| TransparentProxyFactory                     | 7.505     | 17.071      |
| TransparentUpgradeableProxy                 | 2.096     | 22.48       |
| V2RateStrategyFactory                       | 8.842     | 15.734      |
| V3RateStrategyFactory                       | 9.279     | 15.297      |
| WadRayMath                                  | 0.086     | 24.49       |
| console                                     | 0.086     | 24.49       |
| console2                                    | 0.086     | 24.49       |
| safeconsole                                 | 0.086     | 24.49       |
| stdError                                    | 0.591     | 23.985      |
| stdJson                                     | 0.086     | 24.49       |
| stdMath                                     | 0.086     | 24.49       |
| stdStorage                                  | 0.086     | 24.49       |
| stdStorageSafe                              | 0.086     | 24.49       |
Test success 🌈
No files changed, compilation skipped

Running 3 tests for src/bridges/AavePolEthERC20BridgeTest.t.sol:BridgeTest
[PASS] test_revertsIf_invalidChain() (gas: 8575)
[PASS] test_revertsIf_notOwner() (gas: 66660)
[PASS] test_successful() (gas: 59470)
Test result: ok. 3 passed; 0 failed; 0 skipped; finished in 3.01s

Running 9 tests for tests/riskstewards/CapsPlusRiskSteward.t.sol:CapsPlusRiskSteward_Test
[PASS] test_debounce() (gas: 129140)
[PASS] test_increaseCapsMax() (gas: 114995)
[PASS] test_invalidCaller() (gas: 7547)
[PASS] test_keepCurrent() (gas: 48188)
[PASS] test_unlisted() (gas: 32844)
[PASS] test_updateBorrowCapBiggerMax() (gas: 37190)
[PASS] test_updateBorrowCapNotStrictlyHigher() (gas: 45961)
[PASS] test_updateSupplyCapBiggerMax() (gas: 36946)
[PASS] test_updateSupplyCapNotStrictlyHigher() (gas: 45514)
Test result: ok. 9 passed; 0 failed; 0 skipped; finished in 3.51s

Running 2 tests for src/bridges/AavePolEthERC20BridgeTest.t.sol:EmergencyTokenTransfer
[PASS] test_revertsIf_invalidCaller() (gas: 13104)
[PASS] test_successful_governanceCaller() (gas: 69603)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.21s

Running 2 tests for src/bridges/AavePolEthERC20BridgeTest.t.sol:ExitTest
[PASS] test_revertsIf_invalidChain() (gas: 11198)
[PASS] test_revertsIf_proofAlreadyProcessed() (gas: 39281)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 486.65ms

Running 2 tests for src/bridges/AavePolEthERC20BridgeTest.t.sol:TransferOwnership
[PASS] test_revertsIf_invalidCaller() (gas: 14615)
[PASS] test_successful() (gas: 13392)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.78ms

Running 2 tests for src/bridges/AavePolEthERC20BridgeTest.t.sol:WithdrawToCollectorTest
[PASS] test_revertsIf_invalidChain() (gas: 10872)
[PASS] test_successful() (gas: 76344)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.32s

Running 6 tests for src/swaps/AaveSwapperTest.t.sol:AaveSwapperSwap
[PASS] test_revertsIf_amountIsZero() (gas: 12452)
[PASS] test_revertsIf_fromTokenIsZeroAddress() (gas: 12435)
[PASS] test_revertsIf_invalidCaller() (gas: 11669)
[PASS] test_revertsIf_invalidRecipient() (gas: 12496)
[PASS] test_revertsIf_toTokenIsZeroAddress() (gas: 12373)
[PASS] test_successful() (gas: 476571)
Test result: ok. 6 passed; 0 failed; 0 skipped; finished in 2.02s

Running 3 tests for src/swaps/AaveSwapperTest.t.sol:CancelSwap
[PASS] test_revertsIf_invalidCaller() (gas: 15418)
[PASS] test_revertsIf_noMatchingTrade() (gas: 482928)
[PASS] test_successful() (gas: 588040)
Test result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.10s

Running 1 test for src/swaps/DepositV2SwapPayloadTest.t.sol:DepositV2SwapPayloadTest
[PASS] test_successful() (gas: 476089)
Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 6.45s

Running 2 tests for src/swaps/AaveSwapperTest.t.sol:EmergencyTokenTransfer
[PASS] test_revertsIf_invalidCaller() (gas: 10861)
[PASS] test_successful_governanceCaller() (gas: 304551)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.09s

Running 1 test for src/swaps/DepositV3SwapPayloadTest.t.sol:DepositV3SwapPayloadTest
[PASS] test_successful() (gas: 442317)
Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.91s

Running 7 tests for src/swaps/AaveSwapperTest.t.sol:GetExpectedOut
[PASS] test_aaveToUsdc() (gas: 84122)
[PASS] test_aaveToUsdc_withEthBasedOracles() (gas: 84115)
[PASS] test_balTo80BAL20WETH() (gas: 83868)
[PASS] test_ethToBal() (gas: 69531)
[PASS] test_ethToDai() (gas: 67281)
[PASS] test_revertsIf_fromOracleIsAddressZero() (gas: 9238)
[PASS] test_revertsIf_toOracleIsAddressZero() (gas: 9242)
Test result: ok. 7 passed; 0 failed; 0 skipped; finished in 8.49s

Running 1 test for src/swaps/AaveSwapperTest.t.sol:Initialize
[PASS] test_revertsIf_alreadyInitialized() (gas: 10894)
Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 746.20µs

Running 2 tests for src/swaps/AaveSwapperTest.t.sol:RemoveGuardian
[PASS] test_revertsIf_invalidCaller() (gas: 12924)
[PASS] test_successful() (gas: 16184)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 13.49ms

Running 2 tests for src/swaps/AaveSwapperTest.t.sol:TransferOwnership
[PASS] test_revertsIf_invalidCaller() (gas: 12352)
[PASS] test_successful() (gas: 18297)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.30ms

Running 2 tests for src/swaps/AaveSwapperTest.t.sol:UpdateGuardian
[PASS] test_revertsIf_invalidCaller() (gas: 14546)
[PASS] test_successful() (gas: 22582)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.25ms

Running 1 test for tests/GovTest.t.sol:GovernanceIpfsTest
[PASS] testIpfsHashCreation() (gas: 15084)
Logs:
  Info: This preview will only work when the file has been uploaded to ipfs
  Preview: https://app.aave.com/governance/ipfs-preview/?ipfsHash=0x12f2d9c91e4e23ae4009ab9ef5862ee0ae79498937b66252213221f04a5d5b32

Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 10.40s

Running 1 test for tests/GovTest.t.sol:GovernanceL2ExecutorTest
[PASS] testCreateProposal() (gas: 116279)
Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.30s

Running 2 tests for tests/GovTest.t.sol:GovernanceMainnetExecutorTest
[PASS] testCreateProposalLong() (gas: 165827)
[PASS] testCreateProposalShort() (gas: 161431)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 4.63s

Running 2 tests for tests/GovTest.t.sol:GovernanceTest
[PASS] testCreateProposal() (gas: 533152)
[PASS] testCreateProposalDynamicIpfsHash() (gas: 545420)
Logs:
  Info: This preview will only work when the file has been uploaded to ipfs
  Preview: https://app.aave.com/governance/ipfs-preview/?ipfsHash=0x12f2d9c91e4e23ae4009ab9ef5862ee0ae79498937b66252213221f04a5d5b32

Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 6.85s

Running 1 test for tests/crosschainforwarders/MetisCrossChainForwarderTest.t.sol:MetisCrossChainForwarderTest
[PASS] testProposalE2E() (gas: 1213114)
Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 10.70s

Running 1 test for tests/crosschainforwarders/OptimismCrossChainForwarderTest.t.sol:OptimismCrossChainForwarderTest
[PASS] testProposalE2E() (gas: 1196700)
Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 10.66s

Running 1 test for tests/crosschainforwarders/PolygonCrossChainForwarderTest.t.sol:PolygonCrossChainForwarderTest
[PASS] testProposalE2E() (gas: 1049401)
Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 9.23s

Running 1 test for tests/AaveV2ConfigEngineTest.t.sol:AaveV2ConfigEngineTest
[PASS] testV2RateStrategiesUpdates() (gas: 189313016)
Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 122.59s

Running 1 test for tests/ProtocolV2TestBase.t.sol:ProtocolV2TestBaseTest
[PASS] testE2E() (gas: 18720918)
Logs:
  E2E: Collateral AAVE, TestAsset USDT
  SUPPLY: AAVE, Amount: 2553597251196022693793
  SUPPLY: USDT, Amount: 1922278804
  WITHDRAW: USDT, Amount: 961139402
  WITHDRAW: USDT, Amount: 961139403
  BORROW: USDT, Amount 1922278804, Stable: false
  REPAY: USDT, Amount: 1922278804
  BORROW: USDT, Amount 1922278804, Stable: true
  REPAY: USDT, Amount: 1922278804
  E2E: Collateral AAVE, TestAsset WBTC
  SUPPLY: AAVE, Amount: 2553597251196022693793
  SUPPLY: WBTC, Amount: 6293388
  WITHDRAW: WBTC, Amount: 3146694
  WITHDRAW: WBTC, Amount: 3146693
  BORROW: WBTC, Amount 6293388, Stable: false
  REPAY: WBTC, Amount: 6293388
  BORROW: WBTC, Amount 6293388, Stable: true
  REPAY: WBTC, Amount: 6293388
  E2E: Collateral AAVE, TestAsset WETH
  SUPPLY: AAVE, Amount: 2553597251196022693793
  SUPPLY: WETH, Amount: 1000000000000000000
  WITHDRAW: WETH, Amount: 500000000000000000
  WITHDRAW: WETH, Amount: 500000000000000001
  BORROW: WETH, Amount 1000000000000000000, Stable: false
  REPAY: WETH, Amount: 1000000000000000000
  BORROW: WETH, Amount 1000000000000000000, Stable: true
  REPAY: WETH, Amount: 1000000000000000000
  E2E: Collateral AAVE, TestAsset AAVE
  SUPPLY: AAVE, Amount: 2553597251196022693793
  SUPPLY: AAVE, Amount: 25535972511960226937
  WITHDRAW: AAVE, Amount: 12767986255980113468
  WITHDRAW: AAVE, Amount: 12767986255980113469
  E2E: Collateral AAVE, TestAsset DAI
  SUPPLY: AAVE, Amount: 2553597251196022693793
  SUPPLY: DAI, Amount: 1914944850736299739803
  WITHDRAW: DAI, Amount: 957472425368149869901
  WITHDRAW: DAI, Amount: 957472425368149869902
  BORROW: DAI, Amount 1914944850736299739803, Stable: false
  REPAY: DAI, Amount: 1914944850736299739803
  BORROW: DAI, Amount 1914944850736299739803, Stable: true
  REPAY: DAI, Amount: 1914944850736299739803
  E2E: Collateral AAVE, TestAsset sUSD
  SUPPLY: AAVE, Amount: 2553597251196022693793
  SUPPLY: sUSD, Amount: 1919434649608077907661
  WITHDRAW: sUSD, Amount: 959717324804038953830
  WITHDRAW: sUSD, Amount: 959717324804038953830
  BORROW: sUSD, Amount 1919434649608077907661, Stable: false
  REPAY: sUSD, Amount: 1919434649608077907661
  E2E: Collateral AAVE, TestAsset USDC
  SUPPLY: AAVE, Amount: 2553597251196022693793
  SUPPLY: USDC, Amount: 1912585127
  WITHDRAW: USDC, Amount: 956292563
  WITHDRAW: USDC, Amount: 956292564
  BORROW: USDC, Amount 1912585127, Stable: false
  REPAY: USDC, Amount: 1912585127
  BORROW: USDC, Amount 1912585127, Stable: true
  REPAY: USDC, Amount: 1912585127
  E2E: Collateral AAVE, TestAsset CRV
  SUPPLY: AAVE, Amount: 2553597251196022693793
  SUPPLY: CRV, Amount: 2447532600357965341777
  WITHDRAW: CRV, Amount: 1223766300178982670888
  WITHDRAW: CRV, Amount: 1223766300178982670889
  E2E: Collateral AAVE, TestAsset GUSD
  SUPPLY: AAVE, Amount: 2553597251196022693793
  SUPPLY: GUSD, Amount: 191331
  WITHDRAW: GUSD, Amount: 95665
  WITHDRAW: GUSD, Amount: 95665
  BORROW: GUSD, Amount 191331, Stable: false
  REPAY: GUSD, Amount: 191331
  E2E: Collateral AAVE, TestAsset USDP
  SUPPLY: AAVE, Amount: 2553597251196022693793
  SUPPLY: USDP, Amount: 1939299150785117381031
  WITHDRAW: USDP, Amount: 969649575392558690515
  WITHDRAW: USDP, Amount: 969649575392558690516
  BORROW: USDP, Amount 1939299150785117381031, Stable: false
  REPAY: USDP, Amount: 1939299150785117381031
  E2E: Collateral AAVE, TestAsset FRAX
  SUPPLY: AAVE, Amount: 2553597251196022693793
  SUPPLY: FRAX, Amount: 1937630504372688546970
  WITHDRAW: FRAX, Amount: 968815252186344273485
  WITHDRAW: FRAX, Amount: 968815252186344273486
  BORROW: FRAX, Amount 1937630504372688546970, Stable: false
  REPAY: FRAX, Amount: 1937630504372688546970
  E2E: Collateral AAVE, TestAsset stETH
  SUPPLY: AAVE, Amount: 2553597251196022693793
  SUPPLY: stETH, Amount: 1000000000000000000
  WITHDRAW: stETH, Amount: 500000000000000000
  WITHDRAW: stETH, Amount: 499999999999999999
  E2E: Collateral AAVE, TestAsset LUSD
  SUPPLY: AAVE, Amount: 2553597251196022693793
  SUPPLY: LUSD, Amount: 1910246445122217347247
  WITHDRAW: LUSD, Amount: 955123222561108673623
  WITHDRAW: LUSD, Amount: 955123222561108673623
  BORROW: LUSD, Amount 1910246445122217347247, Stable: false
  REPAY: LUSD, Amount: 1910246445122217347247
  BORROW: LUSD, Amount 1910246445122217347247, Stable: true
  REPAY: LUSD, Amount: 1910246445122217347247

Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 108.94s

Running 1 test for tests/ProtocolV2TestBase.t.sol:ProtocolV2TestE2ETestAsset
[PASS] test_e2eTestAssetUSDT() (gas: 3467234)
Logs:
  E2E: Collateral DAI, TestAsset USDT
  SUPPLY: DAI, Amount: 191494485073629973980349
  SUPPLY: USDT, Amount: 1922278804
  WITHDRAW: USDT, Amount: 961139402
  WITHDRAW: USDT, Amount: 961139403
  BORROW: USDT, Amount 1922278804, Stable: false
  REPAY: USDT, Amount: 1922278804
  BORROW: USDT, Amount 1922278804, Stable: true
  REPAY: USDT, Amount: 1922278804

Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 272.80ms

Running 1 test for tests/AaveV3ConfigEngineGauntletProposal.t.sol:AaveV3ArbitrumConfigEngineRatesTest
[PASS] testEngine() (gas: 17825711)
Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 47.04s

Running 1 test for tests/ProtocolV3TestBase.t.sol:ProtocolV3TestBaseTest
[PASS] test_e2eTestDPI() (gas: 2127203)
Logs:
  E2E: Collateral WMATIC, TestAsset DPI
  SUPPLY: WMATIC, Amount: 18494019080464425505952
  SUPPLY: DPI, Amount: 1618633986381736259
  WITHDRAW: DPI, Amount: 809316993190868129
  WITHDRAW: DPI, Amount: 809316993190868130
  BORROW: DPI, Amount 1618633986381736259, Stable: false
  REPAY: DPI, Amount: 1618633986381736259

Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 41.65s

Running 1 test for tests/AaveV3ConfigEngineGauntletProposal.t.sol:AaveV3AvalancheConfigEngineRatesTest
[PASS] testEngine() (gas: 27764412)
Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 41.32s

Running 1 test for tests/AaveV3ConfigEngineGauntletProposal.t.sol:AaveV3OptimismConfigEngineRatesTest
[PASS] testEngine() (gas: 20657298)
Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 45.79s

Running 1 test for tests/ProtocolV3TestBase.t.sol:ProtocolV3TestE2ETestAll
[PASS] test_e2e() (gas: 12051172)
Logs:
  E2E: Collateral LINK, TestAsset DAI
  SUPPLY: LINK, Amount: 1616553507921112188813
  SUPPLY: DAI, Amount: 100002834080317836207
  WITHDRAW: DAI, Amount: 50001417040158918103
  WITHDRAW: DAI, Amount: 50001417040158918104
  BORROW: DAI, Amount 100002834080317836207, Stable: false
  REPAY: DAI, Amount: 100002834080317836207
  BORROW: DAI, Amount 100002834080317836207, Stable: true
  REPAY: DAI, Amount: 100002834080317836207
  E2E: Collateral LINK, TestAsset LINK
  SUPPLY: LINK, Amount: 1616553507921112188813
  SUPPLY: LINK, Amount: 16165535079211121888
  WITHDRAW: LINK, Amount: 8082767539605560944
  WITHDRAW: LINK, Amount: 8082767539605560944
  BORROW: LINK, Amount 16165535079211121888, Stable: false
  REPAY: LINK, Amount: 16165535079211121888
  E2E: Collateral LINK, TestAsset USDC
  SUPPLY: LINK, Amount: 1616553507921112188813
  SUPPLY: USDC, Amount: 100000000
  WITHDRAW: USDC, Amount: 50000000
  WITHDRAW: USDC, Amount: 50000000
  BORROW: USDC, Amount 100000000, Stable: false
  REPAY: USDC, Amount: 100000000
  BORROW: USDC, Amount 100000000, Stable: true
  REPAY: USDC, Amount: 100000000
  E2E: Collateral LINK, TestAsset WBTC
  SUPPLY: LINK, Amount: 1616553507921112188813
  SUPPLY: WBTC, Amount: 385965
  WITHDRAW: WBTC, Amount: 192982
  WITHDRAW: WBTC, Amount: 192983
  BORROW: WBTC, Amount 385965, Stable: false
  REPAY: WBTC, Amount: 385965
  E2E: Collateral LINK, TestAsset WETH
  SUPPLY: LINK, Amount: 1616553507921112188813
  SUPPLY: WETH, Amount: 54558945484701671
  WITHDRAW: WETH, Amount: 27279472742350835
  WITHDRAW: WETH, Amount: 27279472742350836
  BORROW: WETH, Amount 54558945484701671, Stable: false
  REPAY: WETH, Amount: 54558945484701671
  E2E: Collateral LINK, TestAsset USDT
  SUPPLY: LINK, Amount: 1616553507921112188813
  SUPPLY: USDT, Amount: 99994515
  WITHDRAW: USDT, Amount: 49997257
  WITHDRAW: USDT, Amount: 49997258
  BORROW: USDT, Amount 99994515, Stable: false
  REPAY: USDT, Amount: 99994515
  BORROW: USDT, Amount 99994515, Stable: true
  REPAY: USDT, Amount: 99994515
  E2E: Collateral LINK, TestAsset AAVE
  Skip: AAVE, supply cap fully utilized
  E2E: Collateral LINK, TestAsset sUSD
  SUPPLY: LINK, Amount: 1616553507921112188813
  SUPPLY: sUSD, Amount: 100213932694959892580
  WITHDRAW: sUSD, Amount: 50106966347479946290
  WITHDRAW: sUSD, Amount: 50106966347479946291
  BORROW: sUSD, Amount 100213932694959892580, Stable: false
  REPAY: sUSD, Amount: 100213932694959892580
  E2E: Collateral LINK, TestAsset OP
  SUPPLY: LINK, Amount: 1616553507921112188813
  SUPPLY: OP, Amount: 65659881812212738017
  WITHDRAW: OP, Amount: 32829940906106369008
  WITHDRAW: OP, Amount: 32829940906106369009
  E2E: Collateral LINK, TestAsset wstETH
  SUPPLY: LINK, Amount: 1616553507921112188813
  SUPPLY: wstETH, Amount: 48438229171421992
  WITHDRAW: wstETH, Amount: 24219114585710996
  WITHDRAW: wstETH, Amount: 24219114585710996
  BORROW: wstETH, Amount 48438229171421992, Stable: false
  REPAY: wstETH, Amount: 48438229171421992
  E2E: Collateral LINK, TestAsset LUSD
  SUPPLY: LINK, Amount: 1616553507921112188813
  SUPPLY: LUSD, Amount: 99436925482654158084
  WITHDRAW: LUSD, Amount: 49718462741327079042
  WITHDRAW: LUSD, Amount: 49718462741327079042
  BORROW: LUSD, Amount 99436925482654158084, Stable: false
  REPAY: LUSD, Amount: 99436925482654158084
  E2E: TestAsset MAI SKIPPED

Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 64.36s

Running 1 test for tests/AaveV3ConfigEngineGauntletProposal.t.sol:AaveV3PolygonConfigEngineRatesTest
[PASS] testEngine() (gas: 71025392)
Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 82.40s

Running 1 test for tests/ProtocolV3TestBase.t.sol:ProtocolV3TestE2ETestAllMainnet
[PASS] test_e2e() (gas: 21835677)
Logs:
  E2E: Collateral WETH, TestAsset WETH
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: WETH, Amount: 60586390958843131
  WITHDRAW: WETH, Amount: 30293195479421565
  WITHDRAW: WETH, Amount: 30293195479421566
  BORROW: WETH, Amount 60586390958843131, Stable: false
  REPAY: WETH, Amount: 60586390958843131
  E2E: Collateral WETH, TestAsset wstETH
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: wstETH, Amount: 53280673161492371
  WITHDRAW: wstETH, Amount: 26640336580746185
  WITHDRAW: wstETH, Amount: 26640336580746186
  BORROW: wstETH, Amount 53280673161492371, Stable: false
  REPAY: wstETH, Amount: 53280673161492371
  E2E: Collateral WETH, TestAsset WBTC
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: WBTC, Amount: 383041
  WITHDRAW: WBTC, Amount: 191520
  WITHDRAW: WBTC, Amount: 191521
  BORROW: WBTC, Amount 383041, Stable: false
  REPAY: WBTC, Amount: 383041
  E2E: Collateral WETH, TestAsset USDC
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: USDC, Amount: 99997805
  WITHDRAW: USDC, Amount: 49998902
  WITHDRAW: USDC, Amount: 49998903
  BORROW: USDC, Amount 99997805, Stable: false
  REPAY: USDC, Amount: 99997805
  E2E: Collateral WETH, TestAsset DAI
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: DAI, Amount: 100010001000100010001
  WITHDRAW: DAI, Amount: 50005000500050005000
  WITHDRAW: DAI, Amount: 50005000500050005000
  BORROW: DAI, Amount 100010001000100010001, Stable: false
  REPAY: DAI, Amount: 100010001000100010001
  E2E: Collateral WETH, TestAsset LINK
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: LINK, Amount: 16762478423086336626
  WITHDRAW: LINK, Amount: 8381239211543168313
  WITHDRAW: LINK, Amount: 8381239211543168314
  BORROW: LINK, Amount 16762478423086336626, Stable: false
  REPAY: LINK, Amount: 16762478423086336626
  E2E: Collateral WETH, TestAsset AAVE
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: AAVE, Amount: 1779312582127864301
  WITHDRAW: AAVE, Amount: 889656291063932150
  WITHDRAW: AAVE, Amount: 889656291063932151
  E2E: Collateral WETH, TestAsset cbETH
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: cbETH, Amount: 57866658031368797
  WITHDRAW: cbETH, Amount: 28933329015684398
  WITHDRAW: cbETH, Amount: 28933329015684400
  BORROW: cbETH, Amount 57866658031368797, Stable: false
  REPAY: cbETH, Amount: 57866658031368797
  E2E: Collateral WETH, TestAsset USDT
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: USDT, Amount: 100057032
  WITHDRAW: USDT, Amount: 50028516
  WITHDRAW: USDT, Amount: 50028516
  BORROW: USDT, Amount 100057032, Stable: false
  REPAY: USDT, Amount: 100057032
  E2E: Collateral WETH, TestAsset rETH
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: rETH, Amount: 56019957636630099
  WITHDRAW: rETH, Amount: 28009978818315049
  WITHDRAW: rETH, Amount: 28009978818315049
  BORROW: rETH, Amount 56019957636630099, Stable: false
  REPAY: rETH, Amount: 56019957636630099
  E2E: Collateral WETH, TestAsset LUSD
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: LUSD, Amount: 100115968330756248192
  WITHDRAW: LUSD, Amount: 50057984165378124096
  WITHDRAW: LUSD, Amount: 50057984165378124096
  BORROW: LUSD, Amount 100115968330756248192, Stable: false
  REPAY: LUSD, Amount: 100115968330756248192
  E2E: Collateral WETH, TestAsset CRV
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: CRV, Amount: 223005138752013290392
  WITHDRAW: CRV, Amount: 111502569376006645196
  WITHDRAW: CRV, Amount: 111502569376006645196
  E2E: Collateral WETH, TestAsset MKR
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: MKR, Amount: 98727441294737554
  WITHDRAW: MKR, Amount: 49363720647368777
  WITHDRAW: MKR, Amount: 49363720647368777
  BORROW: MKR, Amount 98727441294737554, Stable: false
  REPAY: MKR, Amount: 98727441294737554
  E2E: Collateral WETH, TestAsset SNX
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: SNX, Amount: 48449612403100775193
  WITHDRAW: SNX, Amount: 24224806201550387596
  WITHDRAW: SNX, Amount: 24224806201550387597
  BORROW: SNX, Amount 48449612403100775193, Stable: false
  REPAY: SNX, Amount: 48449612403100775193
  E2E: Collateral WETH, TestAsset BAL
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: BAL, Amount: 29102153909197170579
  WITHDRAW: BAL, Amount: 14551076954598585289
  WITHDRAW: BAL, Amount: 14551076954598585290
  BORROW: BAL, Amount 29102153909197170579, Stable: false
  REPAY: BAL, Amount: 29102153909197170579
  E2E: Collateral WETH, TestAsset UNI
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: UNI, Amount: 21784934158663696976
  WITHDRAW: UNI, Amount: 10892467079331848488
  WITHDRAW: UNI, Amount: 10892467079331848487
  BORROW: UNI, Amount 21784934158663696976, Stable: false
  REPAY: UNI, Amount: 21784934158663696976
  E2E: Collateral WETH, TestAsset LDO
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: LDO, Amount: 63030843796742294959
  WITHDRAW: LDO, Amount: 31515421898371147479
  WITHDRAW: LDO, Amount: 31515421898371147480
  BORROW: LDO, Amount 63030843796742294959, Stable: false
  REPAY: LDO, Amount: 63030843796742294959
  E2E: Collateral WETH, TestAsset ENS
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: ENS, Amount: 12437764195368907456
  WITHDRAW: ENS, Amount: 6218882097684453728
  WITHDRAW: ENS, Amount: 6218882097684453729
  BORROW: ENS, Amount 12437764195368907456, Stable: false
  REPAY: ENS, Amount: 12437764195368907456
  E2E: Collateral WETH, TestAsset 1INCH
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: 1INCH, Amount: 410278510592180821883
  WITHDRAW: 1INCH, Amount: 205139255296090410941
  WITHDRAW: 1INCH, Amount: 205139255296090410942
  BORROW: 1INCH, Amount 410278510592180821883, Stable: false
  REPAY: 1INCH, Amount: 410278510592180821883
  E2E: Collateral WETH, TestAsset FRAX
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: FRAX, Amount: 100168997118418426095
  WITHDRAW: FRAX, Amount: 50084498559209213047
  WITHDRAW: FRAX, Amount: 50084498559209213049
  BORROW: FRAX, Amount 100168997118418426095, Stable: false
  REPAY: FRAX, Amount: 100168997118418426095
  E2E: TestAsset GHO SKIPPED
  E2E: Collateral WETH, TestAsset RPL
  SUPPLY: WETH, Amount: 6058639095884313146
  SUPPLY: RPL, Amount: 4169283941609818799
  WITHDRAW: RPL, Amount: 2084641970804909399
  WITHDRAW: RPL, Amount: 2084641970804909401
  BORROW: RPL, Amount 4169283941609818799, Stable: false
  REPAY: RPL, Amount: 4169283941609818799

Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 117.38s

Running 2 tests for tests/ProtocolV3TestBase.t.sol:ProtocolV3TestE2ETestAsset
[PASS] test_e2eTestAssetMAI() (gas: 1668142)
Logs:
  E2E: Collateral DAI, TestAsset MAI
  SUPPLY: DAI, Amount: 10000000000000000000000
  SUPPLY: MAI, Amount: 100855007402202840780
  WITHDRAW: MAI, Amount: 50427503701101420390
  WITHDRAW: MAI, Amount: 50427503701101420389
  BORROW: MAI, Amount 100855007402202840780, Stable: false
  REPAY: MAI, Amount: 100855007402202840780

[PASS] test_e2eTestAssetUSDC() (gas: 2061202)
Logs:
  E2E: Collateral DAI, TestAsset USDC
  SUPPLY: DAI, Amount: 10000000000000000000000
  SUPPLY: USDC, Amount: 100000866
  WITHDRAW: USDC, Amount: 50000433
  WITHDRAW: USDC, Amount: 50000433
  BORROW: USDC, Amount 100000866, Stable: false
  REPAY: USDC, Amount: 100000866
  BORROW: USDC, Amount 100000866, Stable: true
  REPAY: USDC, Amount: 100000866

Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 33.56s

Running 1 test for tests/ProtocolV3TestBase.t.sol:ProtocolV3TestE2ETestSnapshot
[PASS] test_snapshot() (gas: 4686931)
Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 12.35s

Running 2 tests for tests/ProxyHelpersTest.t.sol:ProxyHelpersTest
[PASS] testAdmin() (gas: 3274)
[PASS] testImplementation() (gas: 3219)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 774.81ms

Running 2 tests for tests/V2RateStrategyFactory.t.sol:V2RateStrategyFactoryTest
[PASS] testCreateStrategies() (gas: 850671)
[PASS] testMultipleCreateStrategies() (gas: 850436)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 2.71s

Running 2 tests for tests/V3RateStrategyFactory.t.sol:V3RateStrategyFactoryTest
[PASS] testCreateStrategies() (gas: 714518)
[PASS] testMultipleCreateStrategies() (gas: 714609)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 867.30ms

Running 20 tests for tests/AaveV3ConfigEngineTest.t.sol:AaveV3ConfigEngineTest
[PASS] testArbitrumRateStrategiesUpdates() (gas: 29317051)
[PASS] testAssetEModeUpdates() (gas: 71654361)
[PASS] testAvaxRateStrategiesUpdates() (gas: 36419466)
[PASS] testBorrowsUpdates() (gas: 92464426)
[PASS] testCapsUpdates() (gas: 71668784)
[PASS] testCollateralUpdateCorrectBonus() (gas: 35881028)
[PASS] testCollateralUpdateWrongBonus() (gas: 8018847)
[PASS] testCollateralsUpdates() (gas: 35882489)
[PASS] testCollateralsUpdatesNoChange() (gas: 35858161)
[PASS] testEModeCategoryUpdates() (gas: 92525993)
[PASS] testEModeCategoryUpdatesNoChange() (gas: 35872970)
[PASS] testEModeCategoryUpdatesWrongBonus() (gas: 8032134)
[PASS] testFailCollateralsUpdatesNoChange() (gas: 8700101)
[PASS] testFailEModeCategoryUpdatesNoChange() (gas: 8047669)
[PASS] testListings() (gas: 98237552)
[PASS] testListingsCustom() (gas: 77162324)
[PASS] testOptimismRateStrategiesUpdates() (gas: 37590692)
[PASS] testPolygonRateStrategiesUpdates() (gas: 93178301)
[PASS] testPriceFeedsUpdates() (gas: 92387180)
[PASS] testRateStrategiesUpdates() (gas: 37398420)
Test result: ok. 20 passed; 0 failed; 0 skipped; finished in 287.37s

Running 3 tests for tests/crosschainforwarders/ArbitrumCrossChainForwarderTest.t.sol:ArbitrumCrossChainForwarderTest
[PASS] testHasSufficientGas() (gas: 24011)
[PASS] testProposalE2E() (gas: 1120295)
[PASS] testgetGetMaxSubmissionCost() (gas: 17182)
Test result: ok. 3 passed; 0 failed; 0 skipped; finished in 10.51s
 
Ran 40 test suites: 98 tests passed, 0 failed, 0 skipped (98 total tests)

Please sign in to comment.