Skip to content

Commit

Permalink
feat: Aave steth withdrawer (#315)
Browse files Browse the repository at this point in the history
* fix: small typo in AaveSwapper Deployment script

* wip: AaveStethWithdrawer

* smol improvements

* wip: almost ready

* fix some issues raised in review

* fix: some TODOs & some issues raised in review

* fix some issues raised in review

* ready for review

* add deployed address

* fix typo

* rename contracts to Wsteth vs Steth
added access controls to startWithdraw and finalizeWithdraw
redeploy

* add guardian permission to startWithdraw
redeploy

* fix typo & redeploy

* fix: small typo in AaveSwapper Deployment script

* wip: AaveStethWithdrawer

* smol improvements

* wip: almost ready

* fix some issues raised in review

* fix: some TODOs & some issues raised in review

* fix some issues raised in review

* ready for review

* add deployed address

* fix typo

* rename contracts to Wsteth vs Steth
added access controls to startWithdraw and finalizeWithdraw
redeploy

* add guardian permission to startWithdraw
redeploy

* fix typo & redeploy

---------

Co-authored-by: defijesus.eth <defijesus@duck.com>
  • Loading branch information
sakulstra and defijesus.eth authored Jul 23, 2024
1 parent 0dabcd4 commit 8f99938
Show file tree
Hide file tree
Showing 7 changed files with 503 additions and 1 deletion.
2 changes: 1 addition & 1 deletion scripts/AaveSwapperDeployment.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {TransparentProxyFactory} from 'solidity-utils/contracts/transparent-prox

import {AaveSwapper} from 'src/swaps/AaveSwapper.sol';

contract DeplyAaveSwapper is Script {
contract DeployAaveSwapper is Script {
function run() external {
vm.startBroadcast();

Expand Down
22 changes: 22 additions & 0 deletions scripts/AaveWstethWithdrawerDeployment.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {Script} from 'forge-std/Script.sol';
import {MiscEthereum} from 'aave-address-book/MiscEthereum.sol';
import {TransparentProxyFactory} from 'solidity-utils/contracts/transparent-proxy/TransparentProxyFactory.sol';
import {AaveWstethWithdrawer} from 'src/asset-manager/AaveWstethWithdrawer.sol';

contract DeployAaveWithdrawer is Script {
function run() external {
vm.startBroadcast();

address aaveWithdrawer = address(new AaveWstethWithdrawer());
TransparentProxyFactory(MiscEthereum.TRANSPARENT_PROXY_FACTORY).create(
aaveWithdrawer,
MiscEthereum.PROXY_ADMIN,
abi.encodeWithSelector(AaveWstethWithdrawer.initialize.selector)
);

vm.stopBroadcast();
}
}
97 changes: 97 additions & 0 deletions src/asset-manager/AaveWstethWithdrawer.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
// SPDX-License-Identifier: MIT
/*
_ ΞΞΞΞ _
/_;-.__ / _\ _.-;_\
`-._`'`_/'`.-'
`\ /`
| /
/-.(
\_._\
\ \`;
> |/
/ //
|//
\(\
``
defijesus.eth
*/
pragma solidity ^0.8.0;

import {IERC20} from 'solidity-utils/contracts/oz-common/interfaces/IERC20.sol';
import {SafeERC20} from 'solidity-utils/contracts/oz-common/SafeERC20.sol';
import {OwnableWithGuardian} from 'solidity-utils/contracts/access-control/OwnableWithGuardian.sol';
import {Initializable} from 'solidity-utils/contracts/transparent-proxy/Initializable.sol';
import {Rescuable721, Rescuable} from 'solidity-utils/contracts/utils/Rescuable721.sol';
import {AaveV3Ethereum, AaveV3EthereumAssets} from 'aave-address-book/AaveV3Ethereum.sol';
import {GovernanceV3Ethereum} from 'aave-address-book/GovernanceV3Ethereum.sol';
import {IAaveWstethWithdrawer, IWithdrawalQueueERC721, IWETH} from './interfaces/IAaveWstethWithdrawer.sol';

/**
* @title AaveWstethWithdrawer
* @author defijesus.eth
* @notice Helper contract to natively withdraw wstETH to the collector
*/
contract AaveWstethWithdrawer is Initializable, OwnableWithGuardian, Rescuable721, IAaveWstethWithdrawer {
using SafeERC20 for IERC20;

/// auto incrementing index to store requestIds of withdrawals
uint256 public nextIndex;
uint256 public minCheckpointIndex;

/// stores a mapping of index to arrays of requestIds
mapping(uint256 => uint256[]) public requestIds;

/// https://etherscan.io/address/0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1
IWithdrawalQueueERC721 public constant WSTETH_WITHDRAWAL_QUEUE =
IWithdrawalQueueERC721(0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1);

function initialize() external initializer {
_transferOwnership(GovernanceV3Ethereum.EXECUTOR_LVL_1);
_updateGuardian(0x2cc1ADE245020FC5AAE66Ad443e1F66e01c54Df1);
IERC20(AaveV3EthereumAssets.wstETH_UNDERLYING).approve(
address(WSTETH_WITHDRAWAL_QUEUE),
type(uint256).max
);
minCheckpointIndex = WSTETH_WITHDRAWAL_QUEUE.getLastCheckpointIndex();
}

/// @inheritdoc IAaveWstethWithdrawer
function startWithdraw(uint256[] calldata amounts) external onlyOwnerOrGuardian {
uint256 index = nextIndex++;
uint256[] memory rIds = WSTETH_WITHDRAWAL_QUEUE.requestWithdrawalsWstETH(amounts, address(this));

requestIds[index] = rIds;
emit StartedWithdrawal(amounts, index);
}

/// @inheritdoc IAaveWstethWithdrawer
function finalizeWithdraw(uint256 index) external onlyOwnerOrGuardian {
uint256[] memory reqIds = requestIds[index];
uint256[] memory hintIds = WSTETH_WITHDRAWAL_QUEUE.findCheckpointHints(
reqIds,
minCheckpointIndex,
WSTETH_WITHDRAWAL_QUEUE.getLastCheckpointIndex()
);

WSTETH_WITHDRAWAL_QUEUE.claimWithdrawalsTo(reqIds, hintIds, address(this));

uint256 ethBalance = address(this).balance;

IWETH(AaveV3EthereumAssets.WETH_UNDERLYING).deposit{value: ethBalance}();

IERC20(AaveV3EthereumAssets.WETH_UNDERLYING).transfer(
address(AaveV3Ethereum.COLLECTOR),
ethBalance
);

emit FinalizedWithdrawal(ethBalance, index);
}

/// @inheritdoc Rescuable
function whoCanRescue() public view override returns (address) {
return owner();
}

fallback() external payable {}
receive() external payable {}
}
21 changes: 21 additions & 0 deletions src/asset-manager/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,3 +169,24 @@ function voteForGaugeWeight(

Utilizing the veToken holdings, the DAO can vote to redirect emissions to the DAO's own gauge.
Here, by voting for the DAO's gauge, and also purchasing boost, the DAO can expect to earn a lot more BAL rewards over time than just by holding a veToken for example.

# Aave wstETH Withdrawer Information

This contract allows the Aave DAO to easily withdraw wstETH back to ETH natively.

![Aave Wsteth Withdrawer diagram](./images/AaveWstethWithdrawer.png)

## Usage

To use it, you need to (1) transfer an `amount` of `wstETH` to the `Withdrawer`, (2) note the `index` returned by `nextIndex()`, (3) call `startWithdraw([amount])`, and after waiting <24h, (4) call `finalizeWithdraw(index)` to collect the ETH, deposit it into WETH, and send it to the Aave DAO Collector.

### AaveWstethWithdrawer is deployed at eth:[0x2C4d3C146b002079949d7EecD07f261A39c98c4d](https://etherscan.io/address/0x2C4d3C146b002079949d7EecD07f261A39c98c4d)

### Notes

The function `startWithdraw(uint256[] amounts)` takes in an array of `amounts` due to Lido limitations. Each `amount` in the array must be at least 100 wei and at most 1000 stETH. For withdrawals larger than 1000 stETH, they need to be split into multiple withdrawal requests.

For example, if we're trying to withdraw 1500 stETH, we would execute the following call: `startWithdraw([750e18, 750e18])`.

The function `startWithdraw(uint256[] amounts)` can only be called by the owner.
The function `finalizeWithdraw(index)` can only be called by the owner or the guardian.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
75 changes: 75 additions & 0 deletions src/asset-manager/interfaces/IAaveWstethWithdrawer.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IAaveWstethWithdrawer {
/// @notice emitted when a new Withdrawal is requested
/// @param amounts the amounts requested to be withdrawn
/// @param index the storage index of the respective requestIds used to finalize the withdrawal
event StartedWithdrawal(uint256[] amounts, uint256 indexed index);

/// @notice emitted when a new Withdrawal is requested
/// @param amount the amount of WETH withdrawn to collector
/// @param index the storage index of the respective requestIds used to finalize the withdrawal
event FinalizedWithdrawal(uint256 amount, uint256 indexed index);

/// @notice Starts a new withdrawal
/// @param amounts a list of amounts to be withdrawn. each amount must be > 100 wei and < 1000 ETH
function startWithdraw(uint256[] calldata amounts) external;

/// @notice Finalizes a withdrawal
/// @param index the index of the withdrawal request data of the withdrawal to be finalized
function finalizeWithdraw(uint256 index) external;
}

interface IWithdrawalQueueERC721 {

/// @notice Request the batch of wstETH for withdrawal. Approvals for the passed amounts should be done before.
/// @param _amounts an array of wstETH amount values.
/// The standalone withdrawal request will be created for each item in the passed list.
/// @param _owner address that will be able to manage the created requests.
/// If `address(0)` is passed, `msg.sender` will be used as an owner.
/// @return requestIds an array of the created withdrawal request ids
function requestWithdrawalsWstETH(
uint256[] calldata _amounts,
address _owner
) external returns (uint256[] memory requestIds);

/// @notice Claim a batch of withdrawal requests if they are finalized sending ether to `_recipient`
/// @param _requestIds array of request ids to claim
/// @param _hints checkpoint hint for each id. Can be obtained with `findCheckpointHints()`
/// @param _recipient address where claimed ether will be sent to
/// @dev
/// Reverts if recipient is equal to zero
/// Reverts if requestIds and hints arrays length differs
/// Reverts if any requestId or hint in arguments are not valid
/// Reverts if any request is not finalized or already claimed
/// Reverts if msg sender is not an owner of the requests
function claimWithdrawalsTo(
uint256[] calldata _requestIds,
uint256[] calldata _hints,
address _recipient
) external;

/// @notice Finds the list of hints for the given `_requestIds` searching among the checkpoints with indices
/// in the range `[_firstIndex, _lastIndex]`.
/// NB! Array of request ids should be sorted
/// NB! `_firstIndex` should be greater than 0, because checkpoint list is 1-based array
/// Usage: findCheckpointHints(_requestIds, 1, getLastCheckpointIndex())
/// @param _requestIds ids of the requests sorted in the ascending order to get hints for
/// @param _firstIndex left boundary of the search range. Should be greater than 0
/// @param _lastIndex right boundary of the search range. Should be less than or equal to getLastCheckpointIndex()
/// @return hintIds array of hints used to find required checkpoint for the request
function findCheckpointHints(
uint256[] calldata _requestIds,
uint256 _firstIndex,
uint256 _lastIndex
) external view returns (uint256[] memory hintIds);

/// @notice length of the checkpoint array. Last possible value for the hint.
/// NB! checkpoints are indexed from 1, so it returns 0 if there is no checkpoints
function getLastCheckpointIndex() external view returns (uint256);
}

interface IWETH {
function deposit() external payable;
}
Loading

1 comment on commit 8f99938

@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 (62cdea8 2024-07-23T00:19:34.618350138Z)
Build log
Compiling 283 files with Solc 0.8.18
Solc 0.8.18 finished in 64.78s
Compiler run successful with warnings:
Warning (2018): Function state mutability can be restricted to pure
   --> src/ProtocolV3TestBase.sol:860:3:
    |
860 |   function _logReserveConfig(ReserveConfig memory config) internal view {
    |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> src/ProtocolV2TestBase.sol:662:3:
    |
662 |   function _logReserveConfig(ReserveConfig memory config) internal view {
    |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to view
   --> src/adi/test/ADITestBase.sol:301:3:
    |
301 |   function _testCorrectTrustedRemotes(
    |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to view
  --> tests/ProxyHelpersTest.t.sol:13:3:
   |
13 |   function testAdmin() public {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to view
  --> tests/ProxyHelpersTest.t.sol:21:3:
   |
21 |   function testImplementation() public {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to view
   --> tests/swaps/AaveSwapperTest.t.sol:384:3:
    |
384 |   function test_aaveToUsdc_withEthBasedOracles() public {
    |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to view
   --> tests/swaps/AaveSwapperTest.t.sol:406:3:
    |
406 |   function test_aaveToUsdc() public {
    |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to view
   --> tests/swaps/AaveSwapperTest.t.sol:421:3:
    |
421 |   function test_ethToDai() public {
    |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to view
   --> tests/swaps/AaveSwapperTest.t.sol:436:3:
    |
436 |   function test_ethToBal() public {
    |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to view
   --> tests/swaps/AaveSwapperTest.t.sol:451:3:
    |
451 |   function test_balTo80BAL20WETH() public {
    |   ^ (Relevant source part starts here and spans across multiple lines).

| Contract                                    | Size (B) | Margin (B) |
|---------------------------------------------|----------|------------|
| AaveArbEthERC20Bridge                       |    3,678 |     20,898 |
| AaveGovernanceV2                            |       86 |     24,490 |
| AaveOpEthERC20Bridge                        |    2,962 |     21,614 |
| AavePolEthERC20Bridge                       |    4,186 |     20,390 |
| AavePolEthPlasmaBridge                      |    3,632 |     20,944 |
| AaveSafetyModule                            |       86 |     24,490 |
| AaveSwapper                                 |    5,613 |     18,963 |
| AaveV1                                      |       86 |     24,490 |
| AaveV2Avalanche                             |       86 |     24,490 |
| AaveV2AvalancheAssets                       |       86 |     24,490 |
| AaveV2ConfigEngine                          |    3,180 |     21,396 |
| AaveV2Ethereum                              |       86 |     24,490 |
| AaveV2EthereumAMM                           |       86 |     24,490 |
| AaveV2EthereumAMMAssets                     |       86 |     24,490 |
| AaveV2EthereumArc                           |       86 |     24,490 |
| AaveV2EthereumArcAssets                     |       86 |     24,490 |
| AaveV2EthereumAssets                        |       86 |     24,490 |
| AaveV2EthereumRatesUpdate                   |    1,512 |     23,064 |
| AaveV2Fuji                                  |       86 |     24,490 |
| AaveV2FujiAssets                            |       86 |     24,490 |
| AaveV2Polygon                               |       86 |     24,490 |
| AaveV2PolygonAssets                         |       86 |     24,490 |
| AaveV3Arbitrum                              |       86 |     24,490 |
| AaveV3ArbitrumAssets                        |       86 |     24,490 |
| AaveV3ArbitrumEModes                        |       86 |     24,490 |
| AaveV3ArbitrumSepolia                       |       86 |     24,490 |
| AaveV3ArbitrumSepoliaAssets                 |       86 |     24,490 |
| AaveV3ArbitrumSepoliaEModes                 |       86 |     24,490 |
| AaveV3Avalanche                             |       86 |     24,490 |
| AaveV3AvalancheAssets                       |       86 |     24,490 |
| AaveV3AvalancheCollateralUpdate             |    3,384 |     21,192 |
| AaveV3AvalancheCollateralUpdateCorrectBonus |    3,384 |     21,192 |
| AaveV3AvalancheCollateralUpdateNoChange     |    3,404 |     21,172 |
| AaveV3AvalancheCollateralUpdateWrongBonus   |    3,384 |     21,192 |
| AaveV3AvalancheEModeCategoryUpdateEdgeBonus |    3,355 |     21,221 |
| AaveV3AvalancheEModeCategoryUpdateNoChange  |    3,419 |     21,157 |
| AaveV3AvalancheEModes                       |       86 |     24,490 |
| AaveV3BNB                                   |       86 |     24,490 |
| AaveV3BNBAssets                             |       86 |     24,490 |
| AaveV3BNBEModes                             |       86 |     24,490 |
| AaveV3Base                                  |       86 |     24,490 |
| AaveV3BaseAssets                            |       86 |     24,490 |
| AaveV3BaseEModes                            |       86 |     24,490 |
| AaveV3BaseSepolia                           |       86 |     24,490 |
| AaveV3BaseSepoliaAssets                     |       86 |     24,490 |
| AaveV3BaseSepoliaEModes                     |       86 |     24,490 |
| AaveV3Ethereum                              |       86 |     24,490 |
| AaveV3EthereumAssetEModeUpdate              |    3,233 |     21,343 |
| AaveV3EthereumAssets                        |       86 |     24,490 |
| AaveV3EthereumEModes                        |       86 |     24,490 |
| AaveV3EthereumLido                          |       86 |     24,490 |
| AaveV3EthereumLidoAssets                    |       86 |     24,490 |
| AaveV3EthereumLidoEModes                    |       86 |     24,490 |
| AaveV3EthereumMockCapUpdate                 |    3,311 |     21,265 |
| AaveV3Fantom                                |       86 |     24,490 |
| AaveV3FantomAssets                          |       86 |     24,490 |
| AaveV3FantomEModes                          |       86 |     24,490 |
| AaveV3FantomTestnet                         |       86 |     24,490 |
| AaveV3FantomTestnetAssets                   |       86 |     24,490 |
| AaveV3FantomTestnetEModes                   |       86 |     24,490 |
| AaveV3Fuji                                  |       86 |     24,490 |
| AaveV3FujiAssets                            |       86 |     24,490 |
| AaveV3FujiEModes                            |       86 |     24,490 |
| AaveV3Gnosis                                |       86 |     24,490 |
| AaveV3GnosisAssets                          |       86 |     24,490 |
| AaveV3GnosisEModes                          |       86 |     24,490 |
| AaveV3Harmony                               |       86 |     24,490 |
| AaveV3HarmonyAssets                         |       86 |     24,490 |
| AaveV3HarmonyEModes                         |       86 |     24,490 |
| AaveV3Metis                                 |       86 |     24,490 |
| AaveV3MetisAssets                           |       86 |     24,490 |
| AaveV3MetisEModes                           |       86 |     24,490 |
| AaveV3Optimism                              |       86 |     24,490 |
| AaveV3OptimismAssets                        |       86 |     24,490 |
| AaveV3OptimismEModes                        |       86 |     24,490 |
| AaveV3OptimismMockRatesUpdate               |    3,527 |     21,049 |
| AaveV3OptimismSepolia                       |       86 |     24,490 |
| AaveV3OptimismSepoliaAssets                 |       86 |     24,490 |
| AaveV3OptimismSepoliaEModes                 |       86 |     24,490 |
| AaveV3Polygon                               |       86 |     24,490 |
| AaveV3PolygonAssets                         |       86 |     24,490 |
| AaveV3PolygonBorrowUpdate                   |    3,404 |     21,172 |
| AaveV3PolygonBorrowUpdateNoChange           |    3,426 |     21,150 |
| AaveV3PolygonEModeCategoryUpdate            |    3,353 |     21,223 |
| AaveV3PolygonEModes                         |       86 |     24,490 |
| AaveV3PolygonPriceFeedUpdate                |    3,252 |     21,324 |
| AaveV3PolygonZkEvm                          |       86 |     24,490 |
| AaveV3PolygonZkEvmAssets                    |       86 |     24,490 |
| AaveV3PolygonZkEvmEModes                    |       86 |     24,490 |
| AaveV3Scroll                                |       86 |     24,490 |
| AaveV3ScrollAssets                          |       86 |     24,490 |
| AaveV3ScrollEModes                          |       86 |     24,490 |
| AaveV3ScrollSepolia                         |       86 |     24,490 |
| AaveV3ScrollSepoliaAssets                   |       86 |     24,490 |
| AaveV3ScrollSepoliaEModes                   |       86 |     24,490 |
| AaveV3Sepolia                               |       86 |     24,490 |
| AaveV3SepoliaAssets                         |       86 |     24,490 |
| AaveV3SepoliaEModes                         |       86 |     24,490 |
| AaveWstethWithdrawer                        |    5,605 |     18,971 |
| Address                                     |       86 |     24,490 |
| ArbSysMock                                  |      647 |     23,929 |
| CapsPlusRiskSteward                         |    2,665 |     21,911 |
| CapsPlusRiskStewardErrors                   |      556 |     24,020 |
| ChainHelpers                                |       86 |     24,490 |
| ChainIds                                    |       86 |     24,490 |
| ConfiguratorInputTypes                      |       86 |     24,490 |
| Create2Utils                                |      164 |     24,412 |
| DataTypes                                   |       86 |     24,490 |
| DefaultReserveInterestRateStrategy          |    3,485 |     21,091 |
| DeployV2EngineAvaLib                        |       86 |     24,490 |
| DeployV2EngineEthAMMLib                     |       86 |     24,490 |
| DeployV2EngineEthLib                        |       86 |     24,490 |
| DeployV2EnginePolLib                        |       86 |     24,490 |
| DeployV2RatesFactoryAvaLib                  |       86 |     24,490 |
| DeployV2RatesFactoryEthAMMLib               |       86 |     24,490 |
| DeployV2RatesFactoryEthLib                  |       86 |     24,490 |
| DeployV2RatesFactoryLib                     |       86 |     24,490 |
| DeployV2RatesFactoryPolLib                  |       86 |     24,490 |
| ERC1967Proxy                                |      699 |     23,877 |
| EngineFlags                                 |       86 |     24,490 |
| EnumerableSet                               |       86 |     24,490 |
| EnvelopeUtils                               |       86 |     24,490 |
| Errors                                      |    4,714 |     19,862 |
| FreezingSteward                             |      715 |     23,861 |
| GovHelpers                                  |       86 |     24,490 |
| GovV3Helpers                                |    2,622 |     21,954 |
| GovV3StorageHelpers                         |       86 |     24,490 |
| GovernanceV3Arbitrum                        |       86 |     24,490 |
| GovernanceV3Avalanche                       |       86 |     24,490 |
| GovernanceV3BNB                             |       86 |     24,490 |
| GovernanceV3Base                            |       86 |     24,490 |
| GovernanceV3Ethereum                        |       86 |     24,490 |
| GovernanceV3Fuji                            |       86 |     24,490 |
| GovernanceV3Gnosis                          |       86 |     24,490 |
| GovernanceV3Metis                           |       86 |     24,490 |
| GovernanceV3Optimism                        |       86 |     24,490 |
| GovernanceV3Polygon                         |       86 |     24,490 |
| GovernanceV3PolygonZkEvm                    |       86 |     24,490 |
| GovernanceV3Scroll                          |       86 |     24,490 |
| IpfsUtils                                   |       86 |     24,490 |
| MiscArbitrum                                |       86 |     24,490 |
| MiscArbitrumSepolia                         |       86 |     24,490 |
| MiscAvalanche                               |       86 |     24,490 |
| MiscBNB                                     |       86 |     24,490 |
| MiscBase                                    |       86 |     24,490 |
| MiscBaseSepolia                             |       86 |     24,490 |
| MiscEthereum                                |       86 |     24,490 |
| MiscFantom                                  |       86 |     24,490 |
| MiscFuji                                    |       86 |     24,490 |
| MiscGnosis                                  |       86 |     24,490 |
| MiscMetis                                   |       86 |     24,490 |
| MiscOptimism                                |       86 |     24,490 |
| MiscOptimismSepolia                         |       86 |     24,490 |
| MiscPolygon                                 |       86 |     24,490 |
| MiscPolygonZkEvm                            |       86 |     24,490 |
| MiscScroll                                  |       86 |     24,490 |
| MiscSepolia                                 |       86 |     24,490 |
| MockAdapter                                 |      970 |     23,606 |
| MockAdapterDeploymentHelper                 |       86 |     24,490 |
| MockExecutor                                |      437 |     24,139 |
| MyPayload                                   |    1,530 |     23,046 |
| PayloadWithEmit                             |      150 |     24,426 |
| PayloadsControllerUtils                     |       86 |     24,490 |
| PercentageMath                              |       86 |     24,490 |
| ProxyAdmin                                  |    1,683 |     22,893 |
| ProxyHelpers                                |       86 |     24,490 |
| ReserveConfiguration                        |      171 |     24,405 |
| SafeERC20                                   |       86 |     24,490 |
| SafeMath                                    |       86 |     24,490 |
| SimpleOneToManyAdapterUpdateEthereumPayload |    3,042 |     21,534 |
| SimpleOneToManyAdapterUpdatePayload         |    3,125 |     21,451 |
| StorageHelpers                              |       86 |     24,490 |
| StorageSlot                                 |       86 |     24,490 |
| StrategicAssetsManager                      |    9,691 |     14,885 |
| StringUtils                                 |       86 |     24,490 |
| TestNetChainIds                             |       86 |     24,490 |
| TransactionUtils                            |       86 |     24,490 |
| TransparentProxyFactory                     |    7,505 |     17,071 |
| TransparentUpgradeableProxy                 |    2,096 |     22,480 |
| V2RateStrategyFactory                       |    8,842 |     15,734 |
| WadRayMath                                  |       86 |     24,490 |
| WeiConverter                                |       86 |     24,490 |
Test success 🌈
No files changed, compilation skipped

Ran 2 tests for tests/asset-manager/TestStrategicAssetsManager.t.sol:TransferOwnership
[PASS] test_revertsIf_invalidCaller() (gas: 12390)
[PASS] test_successful() (gas: 18637)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 117.97ms (363.85µs CPU time)

Ran 1 test for tests/swaps/DepositV3SwapPayloadTest.t.sol:DepositV3SwapPayloadTest
[PASS] test_successful() (gas: 188852)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 133.95ms (1.86ms CPU time)

Ran 3 tests for tests/asset-manager/TestStrategicAssetsManager.t.sol:WithdrawERC20
[PASS] test_revertsIf_insufficientBalance() (gas: 18094)
[PASS] test_revertsIf_invalidCaller() (gas: 10787)
[PASS] test_successful() (gas: 217537)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 107.37ms (1.34ms CPU time)

Ran 3 tests for tests/bridges/arbitrum/AaveArbEthERC20BridgeTest.t.sol:BridgeTest
[PASS] test_revertsIf_invalidChain() (gas: 8856)
[PASS] test_revertsIf_notOwner() (gas: 68888)
[PASS] test_successful_arbitrumBridge() (gas: 305542)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 289.47ms (1.57ms CPU time)

Ran 2 tests for tests/bridges/polygon/AavePolEthPlasmaBridge.t.sol:TransferOwnership
[PASS] test_revertsIf_invalidCaller() (gas: 14763)
[PASS] test_successful() (gas: 16311)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 299.71ms (413.45µs CPU time)

Ran 3 tests for tests/asset-manager/TestVeTokenManager.t.sol:BuyBoostTest
[PASS] test_revertsIf_estimatedFeeExceedsMaxFee() (gas: 51687)
[PASS] test_revertsIf_invalidCaller() (gas: 16598)
[PASS] test_successful() (gas: 544258)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 169.27ms (3.21ms CPU time)

Ran 3 tests for tests/asset-manager/TestVeTokenManager.t.sol:Claim
[PASS] test_revertsIf_invalidCaller() (gas: 12883)
[PASS] test_revertsIf_noRewardsWereEarned() (gas: 164078)
[PASS] test_successful() (gas: 1209455)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 126.03ms (5.72ms CPU time)

Ran 2 tests for tests/bridges/arbitrum/AaveArbEthERC20BridgeTest.t.sol:EmergencyTokenTransfer
[PASS] test_revertsIf_invalidCaller() (gas: 13037)
[PASS] test_successful_governanceCaller() (gas: 59233)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 246.78ms (691.71µs CPU time)

Ran 2 tests for tests/bridges/polygon/AavePolEthPlasmaBridge.t.sol:WithdrawToCollectorTest
[PASS] test_revertsIf_invalidChain() (gas: 10835)
[PASS] test_successful() (gas: 43612)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 277.65ms (503.32µs CPU time)

Ran 2 tests for tests/asset-manager/TestVeTokenManager.t.sol:ClearDelegationSnapshot
[PASS] test_revertsIf_invalidCaller() (gas: 12829)
[PASS] test_successful() (gas: 100843)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 113.56ms (539.86µs CPU time)

Ran 6 tests for tests/swaps/AaveSwapperTest.t.sol:AaveSwapperSwap
[PASS] test_revertsIf_amountIsZero() (gas: 12460)
[PASS] test_revertsIf_fromTokenIsZeroAddress() (gas: 12421)
[PASS] test_revertsIf_invalidCaller() (gas: 11655)
[PASS] test_revertsIf_invalidRecipient() (gas: 12482)
[PASS] test_revertsIf_toTokenIsZeroAddress() (gas: 12359)
[PASS] test_successful() (gas: 337505)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 107.06ms (2.03ms CPU time)

Ran 5 tests for tests/asset-manager/TestVeTokenManager.t.sol:LockTest
[PASS] test_revertsIf_invalidCaller() (gas: 12884)
[PASS] test_revertsIf_nothingToLockOrRelock() (gas: 119337)
[PASS] test_successful_increaseBalance() (gas: 836612)
[PASS] test_successful_increaseUnlockTime() (gas: 868271)
[PASS] test_successful_locksFirstTime() (gas: 553416)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 110.41ms (7.22ms CPU time)

Ran 3 tests for tests/swaps/AaveSwapperTest.t.sol:CancelSwap
[PASS] test_revertsIf_invalidCaller() (gas: 15500)
[PASS] test_revertsIf_noMatchingTrade() (gas: 342657)
[PASS] test_successful() (gas: 381125)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 132.61ms (3.94ms CPU time)

Ran 2 tests for tests/asset-manager/TestVeTokenManager.t.sol:RemoveBoostOfferTest
[PASS] test_revertsIf_invalidCaller() (gas: 12808)
[PASS] test_successful() (gas: 151277)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 98.52ms (892.38µs CPU time)

Ran 2 tests for tests/swaps/AaveSwapperTest.t.sol:EmergencyTokenTransfer
[PASS] test_revertsIf_invalidCaller() (gas: 10847)
[PASS] test_successful_governanceCaller() (gas: 60446)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 125.25ms (560.20µs CPU time)

Ran 2 tests for tests/asset-manager/TestVeTokenManager.t.sol:SellBoostTest
[PASS] test_revertsIf_invalidCaller() (gas: 13527)
[PASS] test_successful() (gas: 166643)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 116.92ms (674.64µs CPU time)

Ran 2 tests for tests/bridges/arbitrum/AaveArbEthERC20BridgeTest.t.sol:ExitTest
[PASS] test_revertsIf_invalidChain() (gas: 15075)
[PASS] test_successful_exitsLink() (gas: 943444)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 440.09ms (184.53ms CPU time)

Ran 7 tests for tests/swaps/AaveSwapperTest.t.sol:GetExpectedOut
[PASS] test_aaveToUsdc() (gas: 91140)
[PASS] test_aaveToUsdc_withEthBasedOracles() (gas: 110247)
[PASS] test_balTo80BAL20WETH() (gas: 86553)
[PASS] test_ethToBal() (gas: 72354)
[PASS] test_ethToDai() (gas: 76557)
[PASS] test_revertsIf_fromOracleIsAddressZero() (gas: 9246)
[PASS] test_revertsIf_toOracleIsAddressZero() (gas: 9250)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 116.16ms (5.83ms CPU time)

Ran 2 tests for tests/asset-manager/TestVeTokenManager.t.sol:SetDelegationSnapshot
[PASS] test_revertsIf_invalidCaller() (gas: 14597)
[PASS] test_successful() (gas: 102065)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 114.39ms (411.78µs CPU time)

Ran 2 tests for tests/asset-manager/TestVeTokenManager.t.sol:SetLockDurationTest
[PASS] test_revertsIf_invalidCaller() (gas: 12814)
[PASS] test_successful() (gas: 35693)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 111.71ms (204.45µs CPU time)

Ran 1 test for tests/swaps/AaveSwapperTest.t.sol:Initialize
[PASS] test_revertsIf_alreadyInitialized() (gas: 10944)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 149.23ms (75.75µs CPU time)

Ran 2 tests for tests/bridges/arbitrum/AaveArbEthERC20BridgeTest.t.sol:TransferOwnership
[PASS] test_revertsIf_invalidCaller() (gas: 14697)
[PASS] test_successful() (gas: 16300)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 256.09ms (298.05µs CPU time)

Ran 2 tests for tests/swaps/AaveSwapperTest.t.sol:RemoveGuardian
[PASS] test_revertsIf_invalidCaller() (gas: 12910)
[PASS] test_successful() (gas: 16617)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 95.78ms (175.84µs CPU time)

Ran 2 tests for tests/asset-manager/TestVeTokenManager.t.sol:SetSpaceIdTest
[PASS] test_revertsIf_invalidCaller() (gas: 12755)
[PASS] test_successful() (gas: 101873)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 165.87ms (332.02µs CPU time)

Ran 2 tests for tests/swaps/AaveSwapperTest.t.sol:TransferOwnership
[PASS] test_revertsIf_invalidCaller() (gas: 12412)
[PASS] test_successful() (gas: 18680)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 131.91ms (383.46µs CPU time)

Ran 3 tests for tests/bridges/optimism/AaveOpEthERC20BridgeTest.t.sol:BridgeTest
[PASS] test_revertsIf_invalidChain() (gas: 658367)
[PASS] test_revertsIf_notOwner() (gas: 192840)
[PASS] test_successful() (gas: 329764)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 242.17ms (115.96ms CPU time)

Ran 3 tests for tests/asset-manager/TestVeTokenManager.t.sol:UnlockTest
[PASS] test_revertsIf_invalidCaller() (gas: 12863)
[PASS] test_revertsIf_unlockTimeHasNotPassed() (gas: 564799)
[PASS] test_successful_unlock() (gas: 5347766)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 144.04ms (15.92ms CPU time)

Ran 2 tests for tests/swaps/AaveSwapperTest.t.sol:UpdateGuardian
[PASS] test_revertsIf_invalidCaller() (gas: 14606)
[PASS] test_successful() (gas: 23015)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 128.22ms (317.22µs CPU time)

Ran 2 tests for tests/bridges/optimism/AaveOpEthERC20BridgeTest.t.sol:EmergencyTokenTransfer
[PASS] test_revertsIf_invalidCaller() (gas: 13243)
[PASS] test_successful_governanceCaller() (gas: 208344)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 131.81ms (1.52ms CPU time)

Ran 3 tests for tests/asset-manager/TestVeTokenManager.t.sol:UpdateBoostOfferTest
[PASS] test_revertsIf_invalidCaller() (gas: 13605)
[PASS] test_revertsIf_noOfferExists() (gas: 22578)
[PASS] test_successful() (gas: 183877)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 161.98ms (1.05ms CPU time)

Ran 2 tests for tests/bridges/optimism/AaveOpEthERC20BridgeTest.t.sol:TransferOwnership
[PASS] test_revertsIf_invalidCaller() (gas: 14763)
[PASS] test_successful() (gas: 16312)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 194.92ms (445.65µs CPU time)

Ran 2 tests for tests/asset-manager/TestVlTokenManager.t.sol:ClaimVLAURARewardsTest
[PASS] test_revertsIf_invalidCaller() (gas: 12862)
[PASS] test_successful() (gas: 372524)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 149.34ms (8.59ms CPU time)

Ran 3 tests for tests/asset-manager/TestVlTokenManager.t.sol:DelegateVLAURATest
[PASS] test_revertsIf_invalidCaller() (gas: 14565)
[PASS] test_revertsIf_nothingToDelegate() (gas: 23773)
[PASS] test_revertsIf_successful() (gas: 411676)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 131.86ms (1.90ms CPU time)

Ran 3 tests for tests/bridges/polygon/AavePolEthERC20BridgeTest.t.sol:BridgeTest
[PASS] test_revertsIf_invalidChain() (gas: 8591)
[PASS] test_revertsIf_notOwner() (gas: 66670)
[PASS] test_successful() (gas: 59513)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 216.28ms (874.87µs CPU time)

Ran 2 tests for tests/asset-manager/TestVlTokenManager.t.sol:EmergencyWithdrawVLAURA
[PASS] test_revertsIf_invalidCaller() (gas: 12839)
[PASS] test_successful() (gas: 409557)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 152.06ms (1.90ms CPU time)

Ran 3 tests for tests/asset-manager/TestVlTokenManager.t.sol:LockVLAURATest
[PASS] test_revertsIf_insufficientBalance() (gas: 93456)
[PASS] test_revertsIf_invalidCaller() (gas: 12913)
[PASS] test_successful() (gas: 334440)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 104.10ms (1.73ms CPU time)

Ran 2 tests for tests/bridges/polygon/AavePolEthERC20BridgeTest.t.sol:EmergencyTokenTransfer
[PASS] test_revertsIf_invalidCaller() (gas: 13140)
[PASS] test_successful_governanceCaller() (gas: 60654)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 256.95ms (694.94µs CPU time)

Ran 4 tests for tests/asset-manager/TestVlTokenManager.t.sol:RelockVLAURATest
[PASS] test_revertsIf_invalidCaller() (gas: 12838)
[PASS] test_revertsIf_noExpiredLocks() (gas: 344591)
[PASS] test_revertsIf_noLocks() (gas: 65225)
[PASS] test_successful() (gas: 733710)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 132.14ms (3.57ms CPU time)

Ran 4 tests for tests/asset-manager/TestVlTokenManager.t.sol:UnlockVLAURATest
[PASS] test_revertsIf_invalidCaller() (gas: 12863)
[PASS] test_revertsIf_noExpiredLocks() (gas: 344617)
[PASS] test_revertsIf_noLocks() (gas: 65258)
[PASS] test_successful() (gas: 370561)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 157.92ms (3.32ms CPU time)

Ran 2 tests for tests/bridges/polygon/AavePolEthERC20BridgeTest.t.sol:ExitMultipleTest
[PASS] test_revertsIf_invalidChain() (gas: 11722)
[PASS] test_revertsIf_proofAlreadyProcessed() (gas: 40013)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 247.38ms (573.36µs CPU time)

Ran 2 tests for tests/v2-config-engine/V2RateStrategyFactory.t.sol:V2RateStrategyFactoryTest
[PASS] testCreateStrategies() (gas: 850771)
[PASS] testMultipleCreateStrategies() (gas: 853149)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 104.25ms (1.31ms CPU time)

Ran 2 tests for tests/bridges/polygon/AavePolEthERC20BridgeTest.t.sol:ExitTest
[PASS] test_revertsIf_invalidChain() (gas: 11228)
[PASS] test_revertsIf_proofAlreadyProcessed() (gas: 39289)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 227.10ms (667.60µs CPU time)

Ran 1 test for tests/bridges/polygon/AavePolEthERC20BridgeTest.t.sol:ForkedBridgeTests
[PASS] test_successful() (gas: 402667)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 100.68ms (100.37ms CPU time)

Ran 1 test for tests/ProtocolV3TestBase.t.sol:ProtocolV3TestE2ETestMetisAll
[PASS] test_e2e() (gas: 5587584)
Logs:
  E2E: Collateral m.DAI, TestAsset m.DAI
  SUPPLY: m.DAI, Amount: 99997001089937312779989
  SUPPLY: m.DAI, Amount: 999970010899373127799
  WITHDRAW: m.DAI, Amount: 499985005449686563899
  WITHDRAW: m.DAI, Amount: 499985005449686563901
  BORROW: m.DAI, Amount 999970010899373127799, Stable: false
  REPAY: m.DAI, Amount: 999970010899373127799
  E2E: Collateral m.DAI, TestAsset Metis
  SUPPLY: m.DAI, Amount: 99997001089937312779989
  SUPPLY: Metis, Amount: 11636857213789306770
  WITHDRAW: Metis, Amount: 5818428606894653385
  WITHDRAW: Metis, Amount: 5818428606894653385
  BORROW: Metis, Amount 11636857213789306770, Stable: false
  REPAY: Metis, Amount: 11636857213789306770
  E2E: Collateral m.DAI, TestAsset m.USDC
  SUPPLY: m.DAI, Amount: 99997001089937312779989
  SUPPLY: m.USDC, Amount: 1000018220
  WITHDRAW: m.USDC, Amount: 500009110
  WITHDRAW: m.USDC, Amount: 500009109
  Skip Borrowing: m.USDC, borrow cap fully utilized
  E2E: Collateral m.DAI, TestAsset m.USDT
  SUPPLY: m.DAI, Amount: 99997001089937312779989
  SUPPLY: m.USDT, Amount: 1000340115
  WITHDRAW: m.USDT, Amount: 500170057
  WITHDRAW: m.USDT, Amount: 500170059
  Skip Borrowing: m.USDT, borrow cap fully utilized
  E2E: Collateral m.DAI, TestAsset WETH
  SUPPLY: m.DAI, Amount: 99997001089937312779989
  SUPPLY: WETH, Amount: 435637728812215165
  WITHDRAW: WETH, Amount: 217818864406107582
  WITHDRAW: WETH, Amount: 217818864406107582
  BORROW: WETH, Amount 435637728812215165, Stable: false
  REPAY: WETH, Amount: 435637728812215165

Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 352.29ms (37.56ms CPU time)

Ran 3 tests for tests/bridges/polygon/AavePolEthERC20BridgeTest.t.sol:IsTokenMapped
[PASS] test_revertsIf_invalidChain() (gas: 10957)
[PASS] test_successful_returnsFalse() (gas: 19111)
[PASS] test_successful_returnsTrue() (gas: 17358)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 225.51ms (765.26µs CPU time)

Ran 1 test for tests/ProtocolV3TestBase.t.sol:ProtocolV3TestE2ETestOptimismAll
[PASS] test_e2e() (gas: 15604785)
Logs:
  E2E: Collateral LINK, TestAsset DAI
  SUPPLY: LINK, Amount: 16165535079211121888134
  SUPPLY: DAI, Amount: 1000028340803178362074
  WITHDRAW: DAI, Amount: 500014170401589181037
  WITHDRAW: DAI, Amount: 500014170401589181037
  BORROW: DAI, Amount 1000028340803178362074, Stable: false
  REPAY: DAI, Amount: 1000028340803178362074
  BORROW: DAI, Amount 1000028340803178362074, Stable: true
  REPAY: DAI, Amount: 1000028340803178362074
  E2E: Collateral LINK, TestAsset LINK
  SUPPLY: LINK, Amount: 16165535079211121888134
  SUPPLY: LINK, Amount: 161655350792111218881
  WITHDRAW: LINK, Amount: 80827675396055609440
  WITHDRAW: LINK, Amount: 80827675396055609441
  BORROW: LINK, Amount 161655350792111218881, Stable: false
  REPAY: LINK, Amount: 161655350792111218881
  E2E: Collateral LINK, TestAsset USDC
  SUPPLY: LINK, Amount: 16165535079211121888134
  SUPPLY: USDC, Amount: 1000000000
  WITHDRAW: USDC, Amount: 500000000
  WITHDRAW: USDC, Amount: 500000000
  BORROW: USDC, Amount 1000000000, Stable: false
  REPAY: USDC, Amount: 1000000000
  BORROW: USDC, Amount 1000000000, Stable: true
  REPAY: USDC, Amount: 1000000000
  E2E: Collateral LINK, TestAsset WBTC
  SUPPLY: LINK, Amount: 16165535079211121888134
  SUPPLY: WBTC, Amount: 3859651
  WITHDRAW: WBTC, Amount: 1929825
  WITHDRAW: WBTC, Amount: 1929826
  BORROW: WBTC, Amount 3859651, Stable: false
  REPAY: WBTC, Amount: 3859651
  E2E: Collateral LINK, TestAsset WETH
  SUPPLY: LINK, Amount: 16165535079211121888134
  SUPPLY: WETH, Amount: 545589454847016716
  WITHDRAW: WETH, Amount: 272794727423508358
  WITHDRAW: WETH, Amount: 272794727423508359
  BORROW: WETH, Amount 545589454847016716, Stable: false
  REPAY: WETH, Amount: 545589454847016716
  E2E: Collateral LINK, TestAsset USDT
  SUPPLY: LINK, Amount: 16165535079211121888134
  SUPPLY: USDT, Amount: 999945153
  WITHDRAW: USDT, Amount: 499972576
  WITHDRAW: USDT, Amount: 499972576
  BORROW: USDT, Amount 999945153, Stable: false
  REPAY: USDT, Amount: 999945153
  BORROW: USDT, Amount 999945153, Stable: true
  REPAY: USDT, Amount: 999945153
  E2E: Collateral LINK, TestAsset AAVE
  SUPPLY: LINK, Amount: 16165535079211121888134
  SUPPLY: AAVE, Amount: 16473146728162900180
  WITHDRAW: AAVE, Amount: 8236573364081450090
  WITHDRAW: AAVE, Amount: 8236573364081450090
  E2E: Collateral LINK, TestAsset sUSD
  SUPPLY: LINK, Amount: 16165535079211121888134
  SUPPLY: sUSD, Amount: 1002139326949598925802
  WITHDRAW: sUSD, Amount: 501069663474799462901
  WITHDRAW: sUSD, Amount: 501069663474799462900
  BORROW: sUSD, Amount 1002139326949598925802, Stable: false
  REPAY: sUSD, Amount: 1002139326949598925802
  E2E: Collateral LINK, TestAsset OP
  SUPPLY: LINK, Amount: 16165535079211121888134
  SUPPLY: OP, Amount: 656598818122127380170
  WITHDRAW: OP, Amount: 328299409061063690085
  WITHDRAW: OP, Amount: 328299409061063690085
  E2E: Collateral LINK, TestAsset wstETH
  SUPPLY: LINK, Amount: 16165535079211121888134
  SUPPLY: wstETH, Amount: 484382291714219929
  WITHDRAW: wstETH, Amount: 242191145857109964
  WITHDRAW: wstETH, Amount: 242191145857109965
  BORROW: wstETH, Amount 484382291714219929, Stable: false
  REPAY: wstETH, Amount: 484382291714219929
  E2E: Collateral LINK, TestAsset LUSD
  SUPPLY: LINK, Amount: 16165535079211121888134
  SUPPLY: LUSD, Amount: 994369254826541580848
  WITHDRAW: LUSD, Amount: 497184627413270790424
  WITHDRAW: LUSD, Amount: 497184627413270790424
  BORROW: LUSD, Amount 994369254826541580848, Stable: false
  REPAY: LUSD, Amount: 994369254826541580848
  E2E: TestAsset MAI SKIPPED

Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 293.67ms (116.16ms CPU time)

Ran 2 tests for tests/bridges/polygon/AavePolEthERC20BridgeTest.t.sol:ReceiveEther
[PASS] test_revertsIf_invalidChain() (gas: 19308)
[PASS] test_successful_forwardsETH() (gas: 31201)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 245.42ms (341.19µs CPU time)

Ran 1 test for tests/ProtocolV3TestBase.t.sol:ProtocolV3TestOptimismSnapshot
[PASS] test_snapshot() (gas: 8845066)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 148.83ms (36.58ms CPU time)

Ran 2 tests for tests/ProxyHelpersTest.t.sol:ProxyHelpersTest
[PASS] testAdmin() (gas: 3596)
[PASS] testImplementation() (gas: 3541)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 125.24ms (309.01µs CPU time)

Ran 2 tests for tests/bridges/polygon/AavePolEthERC20BridgeTest.t.sol:TransferOwnership
[PASS] test_revertsIf_invalidCaller() (gas: 14713)
[PASS] test_successful() (gas: 16350)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 252.38ms (289.17µs CPU time)

Ran 2 tests for tests/bridges/polygon/AavePolEthERC20BridgeTest.t.sol:WithdrawToCollectorTest
[PASS] test_revertsIf_invalidChain() (gas: 10918)
[PASS] test_successful() (gas: 60309)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 236.27ms (917.02µs CPU time)

Ran 3 tests for tests/bridges/polygon/AavePolEthPlasmaBridge.t.sol:BridgeTest
[PASS] test_revertsIf_invalidChain() (gas: 8500)
[PASS] test_revertsIf_notOwner() (gas: 22888)
[PASS] test_successful() (gas: 39988)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 380.35ms (535.44µs CPU time)

Ran 9 tests for tests/GovV3Test.t.sol:GovernanceV3Test
[PASS] testFail_findPayload() (gas: 18178)
[PASS] test_executePayloadViaAddress() (gas: 76702)
[PASS] test_executePayloadViaId() (gas: 1499029)
[PASS] test_expectRevertOnNonExistingPayload() (gas: 3516)
[PASS] test_helpers() (gas: 231939343)
Logs:
  0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
  0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0
  0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599
  0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
  0x6B175474E89094C44Da98b954EedeAC495271d0F
  0x514910771AF9Ca656af840dff83E8264EcF986CA
  0xBe9895146f7AF43049ca1c1AE358B0541Ea49704
  0xdAC17F958D2ee523a2206206994597C13D831ec7
  0xae78736Cd615f374D3085123A210448E74Fc6393
  0x5f98805A4E8be255a32880FDeC7F6728C6568bA0
  0xD533a949740bb3306d119CC777fa900bA034cd52
  0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2
  0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F
  0xba100000625a3754423978a60c9317c58a424e3D
  0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984
  0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32
  0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72
  0x111111111117dC0aa78b770fA6A738034120C302
  0x853d955aCEf822Db058eb8505911ED77F175b99e
  0xD33526068D116cE69F19A9ee46F0bd304F21A51f
  0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6
  0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202
  0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0
  0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E
  E2E: Collateral WETH, TestAsset WETH
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: WETH, Amount: 387152512099111656
  WITHDRAW: WETH, Amount: 193576256049555828
  WITHDRAW: WETH, Amount: 193576256049555829
  BORROW: WETH, Amount 387152512099111656, Stable: false
  REPAY: WETH, Amount: 387152512099111656
  E2E: Collateral WETH, TestAsset wstETH
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: wstETH, Amount: 335646642971739590
  WITHDRAW: wstETH, Amount: 167823321485869795
  WITHDRAW: wstETH, Amount: 167823321485869796
  BORROW: wstETH, Amount 335646642971739590, Stable: false
  REPAY: wstETH, Amount: 335646642971739590
  E2E: Collateral WETH, TestAsset WBTC
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: WBTC, Amount: 2287699
  WITHDRAW: WBTC, Amount: 1143849
  WITHDRAW: WBTC, Amount: 1143850
  BORROW: WBTC, Amount 2287699, Stable: false
  REPAY: WBTC, Amount: 2287699
  E2E: Collateral WETH, TestAsset USDC
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: USDC, Amount: 999957431
  WITHDRAW: USDC, Amount: 499978715
  WITHDRAW: USDC, Amount: 499978717
  BORROW: USDC, Amount 999957431, Stable: false
  REPAY: USDC, Amount: 999957431
  E2E: Collateral WETH, TestAsset DAI
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: DAI, Amount: 1000373749636601730772
  WITHDRAW: DAI, Amount: 500186874818300865386
  WITHDRAW: DAI, Amount: 500186874818300865386
  BORROW: DAI, Amount 1000373749636601730772, Stable: false
  REPAY: DAI, Amount: 1000373749636601730772
  E2E: Collateral WETH, TestAsset LINK
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: LINK, Amount: 69903880612291948977
  WITHDRAW: LINK, Amount: 34951940306145974488
  WITHDRAW: LINK, Amount: 34951940306145974489
  BORROW: LINK, Amount 69903880612291948977, Stable: false
  REPAY: LINK, Amount: 69903880612291948977
  E2E: Collateral WETH, TestAsset AAVE
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: AAVE, Amount: 9480842960220067589
  WITHDRAW: AAVE, Amount: 4740421480110033794
  WITHDRAW: AAVE, Amount: 4740421480110033795
  E2E: Collateral WETH, TestAsset cbETH
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: cbETH, Amount: 366101666287891006
  WITHDRAW: cbETH, Amount: 183050833143945503
  WITHDRAW: cbETH, Amount: 183050833143945502
  BORROW: cbETH, Amount 366101666287891006, Stable: false
  REPAY: cbETH, Amount: 366101666287891006
  E2E: Collateral WETH, TestAsset USDT
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: USDT, Amount: 999961761
  WITHDRAW: USDT, Amount: 499980880
  WITHDRAW: USDT, Amount: 499980882
  BORROW: USDT, Amount 999961761, Stable: false
  REPAY: USDT, Amount: 999961761
  E2E: Collateral WETH, TestAsset rETH
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: rETH, Amount: 353501562217827242
  WITHDRAW: rETH, Amount: 176750781108913621
  WITHDRAW: rETH, Amount: 176750781108913622
  BORROW: rETH, Amount 353501562217827242, Stable: false
  REPAY: rETH, Amount: 353501562217827242
  E2E: Collateral WETH, TestAsset LUSD
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: LUSD, Amount: 991284291472712808267
  WITHDRAW: LUSD, Amount: 495642145736356404133
  WITHDRAW: LUSD, Amount: 495642145736356404134
  BORROW: LUSD, Amount 991284291472712808267, Stable: false
  REPAY: LUSD, Amount: 991284291472712808267
  E2E: Collateral WETH, TestAsset CRV
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: CRV, Amount: 1762425096933380331335
  WITHDRAW: CRV, Amount: 881212548466690165667
  WITHDRAW: CRV, Amount: 881212548466690165669
  BORROW: CRV, Amount 1762425096933380331335, Stable: false
  REPAY: CRV, Amount: 1762425096933380331335
  E2E: Collateral WETH, TestAsset MKR
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: MKR, Amount: 489494757217453346
  WITHDRAW: MKR, Amount: 244747378608726673
  WITHDRAW: MKR, Amount: 244747378608726672
  BORROW: MKR, Amount 489494757217453346, Stable: false
  REPAY: MKR, Amount: 489494757217453346
  E2E: Collateral WETH, TestAsset SNX
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: SNX, Amount: 258591040854798544649
  WITHDRAW: SNX, Amount: 129295520427399272324
  WITHDRAW: SNX, Amount: 129295520427399272325
  BORROW: SNX, Amount 258591040854798544649, Stable: false
  REPAY: SNX, Amount: 258591040854798544649
  E2E: Collateral WETH, TestAsset BAL
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: BAL, Amount: 230914051358559383391
  WITHDRAW: BAL, Amount: 115457025679279691695
  WITHDRAW: BAL, Amount: 115457025679279691695
  BORROW: BAL, Amount 230914051358559383391, Stable: false
  REPAY: BAL, Amount: 230914051358559383391
  E2E: Collateral WETH, TestAsset UNI
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: UNI, Amount: 149316137911693820856
  WITHDRAW: UNI, Amount: 74658068955846910428
  WITHDRAW: UNI, Amount: 74658068955846910428
  BORROW: UNI, Amount 149316137911693820856, Stable: false
  REPAY: UNI, Amount: 149316137911693820856
  E2E: Collateral WETH, TestAsset LDO
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: LDO, Amount: 275384694725064278711
  WITHDRAW: LDO, Amount: 137692347362532139355
  WITHDRAW: LDO, Amount: 137692347362532139356
  BORROW: LDO, Amount 275384694725064278711, Stable: false
  REPAY: LDO, Amount: 275384694725064278711
  E2E: Collateral WETH, TestAsset ENS
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: ENS, Amount: 41260909104308758690
  WITHDRAW: ENS, Amount: 20630454552154379345
  WITHDRAW: ENS, Amount: 20630454552154379344
  BORROW: ENS, Amount 41260909104308758690, Stable: false
  REPAY: ENS, Amount: 41260909104308758690
  E2E: Collateral WETH, TestAsset 1INCH
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: 1INCH, Amount: 2083605243817651536858
  WITHDRAW: 1INCH, Amount: 1041802621908825768429
  WITHDRAW: 1INCH, Amount: 1041802621908825768430
  BORROW: 1INCH, Amount 2083605243817651536858, Stable: false
  REPAY: 1INCH, Amount: 2083605243817651536858
  E2E: Collateral WETH, TestAsset FRAX
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: FRAX, Amount: 1002074815947916480030
  WITHDRAW: FRAX, Amount: 501037407973958240015
  WITHDRAW: FRAX, Amount: 501037407973958240016
  BORROW: FRAX, Amount 1002074815947916480030, Stable: false
  REPAY: FRAX, Amount: 1002074815947916480030
  E2E: Collateral WETH, TestAsset GHO
  SUPPLY: WETH, Amount: 38715251209911165659
  BORROW: GHO, Amount 1000000000000000000000, Stable: false
  REPAY: GHO, Amount: 1000000000000000000000
  E2E: Collateral WETH, TestAsset RPL
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: RPL, Amount: 28861389285133957390
  WITHDRAW: RPL, Amount: 14430694642566978695
  WITHDRAW: RPL, Amount: 14430694642566978695
  BORROW: RPL, Amount 28861389285133957390, Stable: false
  REPAY: RPL, Amount: 28861389285133957390
  E2E: Collateral WETH, TestAsset sDAI
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: sDAI, Amount: 951708828414645146702
  WITHDRAW: sDAI, Amount: 475854414207322573351
  WITHDRAW: sDAI, Amount: 475854414207322573351
  E2E: Collateral WETH, TestAsset STG
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: STG, Amount: 1758103830166326116094
  WITHDRAW: STG, Amount: 879051915083163058047
  WITHDRAW: STG, Amount: 879051915083163058047
  BORROW: STG, Amount 1758103830166326116094, Stable: false
  REPAY: STG, Amount: 1758103830166326116094
  E2E: Collateral WETH, TestAsset KNC
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: KNC, Amount: 1495089274621257257051
  WITHDRAW: KNC, Amount: 747544637310628628525
  WITHDRAW: KNC, Amount: 747544637310628628526
  BORROW: KNC, Amount 1495089274621257257051, Stable: false
  REPAY: KNC, Amount: 1495089274621257257051
  E2E: Collateral WETH, TestAsset FXS
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: FXS, Amount: 110165362284908051526
  WITHDRAW: FXS, Amount: 55082681142454025763
  WITHDRAW: FXS, Amount: 55082681142454025762
  BORROW: FXS, Amount 110165362284908051526, Stable: false
  REPAY: FXS, Amount: 110165362284908051526
  E2E: Collateral WETH, TestAsset crvUSD
  SUPPLY: WETH, Amount: 38715251209911165659
  SUPPLY: crvUSD, Amount: 1000920626774094276433
  WITHDRAW: crvUSD, Amount: 500460313387047138216
  WITHDRAW: crvUSD, Amount: 500460313387047138217
  BORROW: crvUSD, Amount 1000920626774094276433, Stable: false
  REPAY: crvUSD, Amount: 1000920626774094276433

[PASS] test_injectPayloadIntoPayloadsController() (gas: 67285)
[PASS] test_injectProposalIntoGovernance() (gas: 107298)
[PASS] test_payloadCreation() (gas: 1855251)
Logs:
  https://vote.onaave.com/proposal-create-overview?ipfsHash=0x6861736800000000000000000000000000000000000000000000000000000000&votingPortal=0x9b24C168d6A76b5459B1d47071a54962a4df36c3&payload[0].chainId=1&payload[0].accessLevel=1&payload[0].payloadsController=0xdAbad81aF85554E9ae636395611C58F7eC1aAEc5&payload[0].payloadId=47
  0x3bec1bfc00000000000000000000000000000000000000000000000000000000000000600000000000000000000000009b24c168d6a76b5459b1d47071a54962a4df36c36861736800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000dabad81af85554e9ae636395611c58f7ec1aaec5000000000000000000000000000000000000000000000000000000000000002f

[PASS] test_readyPayloadId() (gas: 1402065)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 4.27s (4.17s CPU time)

Ran 1 test for tests/PreviewLink.t.sol:PreviewLink
[PASS] testPreviewLink() (gas: 30383)
Logs:
  https://vote.onaave.com/proposal-create-overview?ipfsHash=0x12f2d9c91e4e23ae4009ab9ef5862ee0ae79498937b66252213221f04a5d5b32&votingPortal=0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496&payload[0].chainId=12&payload[0].accessLevel=1&payload[0].payloadsController=0x00000000000000000000000002f52a6ee8f5428d&payload[0].payloadId=1&payload[1].chainId=32&payload[1].accessLevel=1&payload[1].payloadsController=0x00000000000000000000000000018b08761d540a&payload[1].payloadId=2

Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 350.76µs (215.68µs CPU time)

Ran 2 tests for tests/bridges/polygon/AavePolEthPlasmaBridge.t.sol:EmergencyTokenTransfer
[PASS] test_revertsIf_invalidCaller() (gas: 13148)
[PASS] test_successful_governanceCaller() (gas: 46504)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 257.67ms (432.17µs CPU time)

Ran 1 test for tests/ProtocolV2TestBase.t.sol:ProtocolV2TestBaseTest
[PASS] testE2E() (gas: 21178068)
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

Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 254.46ms (140.75ms CPU time)

Ran 2 tests for tests/bridges/polygon/AavePolEthPlasmaBridge.t.sol:ExitTest
[PASS] test_revertsIf_invalidChain() (gas: 11250)
[PASS] test_revertsIf_proofAlreadyProcessed() (gas: 169821)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 271.99ms (1.28ms CPU time)

Ran 1 test for tests/bridges/polygon/AavePolEthPlasmaBridge.t.sol:ForkedBridgeTests
[PASS] test_successful() (gas: 511980)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 110.68ms (110.55ms CPU time)

Ran 2 tests for tests/asset-manager/AaveWstethWithdrawerTest.t.sol:TransferOwnership
[PASS] test_revertsIf_invalidCaller() (gas: 19703)
[PASS] test_successful() (gas: 26659)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 809.26ms (91.05ms CPU time)

Ran 2 tests for tests/asset-manager/AaveWstethWithdrawerTest.t.sol:UpdateGuardian
[PASS] test_revertsIf_invalidCaller() (gas: 21897)
[PASS] test_successful() (gas: 28479)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 236.71ms (100.18ms CPU time)

Ran 9 tests for tests/riskstewards/CapsPlusRiskSteward.t.sol:CapsPlusRiskSteward_Test
[PASS] test_debounce() (gas: 135784)
[PASS] test_increaseCapsMax() (gas: 121013)
[PASS] test_invalidCaller() (gas: 7533)
[PASS] test_keepCurrent() (gas: 53827)
[PASS] test_unlisted() (gas: 32820)
[PASS] test_updateBorrowCapBiggerMax() (gas: 37145)
[PASS] test_updateBorrowCapNotStrictlyHigher() (gas: 45925)
[PASS] test_updateSupplyCapBiggerMax() (gas: 36923)
[PASS] test_updateSupplyCapNotStrictlyHigher() (gas: 45500)
Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 120.56ms (5.11ms CPU time)

Ran 1 test for tests/CommonTestBase.t.sol:CommonTestBaseTest
[PASS] test_deal2_shouldMaintainCurrentCaller() (gas: 53536)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 123.04ms (415.36µs CPU time)

Ran 1 test for tests/swaps/DepositV2SwapPayloadTest.t.sol:DepositV2SwapPayloadTest
[PASS] test_successful() (gas: 507902)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 107.30ms (2.58ms CPU time)

Ran 4 tests for tests/asset-manager/TestLSDLiquidityGaugeManager.t.sol:SetGaugeController
[PASS] test_revertsIf_invalidCaller() (gas: 12825)
[PASS] test_revertsIf_invalidZeroAddress() (gas: 11405)
[PASS] test_revertsIf_settingToSameController() (gas: 36577)
[PASS] test_successful() (gas: 39851)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 114.09ms (400.96µs CPU time)

Ran 3 tests for tests/asset-manager/TestLSDLiquidityGaugeManager.t.sol:VoteForGaugeWeight
[PASS] test_revertsIf_gaugeIsZeroAddress() (gas: 11605)
[PASS] test_revertsIf_invalidCaller() (gas: 12980)
[PASS] test_successful() (gas: 830468)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 128.62ms (3.76ms CPU time)

Ran 2 tests for tests/ProtocolV2TestBase.t.sol:ProtocolV2TestE2ETestAsset
[PASS] test_defaultTest() (gas: 52297814)
[PASS] test_e2eTestAssetUSDT() (gas: 3271320)
Logs:
  E2E: Collateral DAI, TestAsset USDT
  SUPPLY: DAI, Amount: 198482420985917995751553
  SUPPLY: USDT, Amount: 1988551823
  WITHDRAW: USDT, Amount: 994275911
  WITHDRAW: USDT, Amount: 994275912
  BORROW: USDT, Amount 1988551823, Stable: false
  REPAY: USDT, Amount: 1988551823

Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.84s (1.67s CPU time)

Ran 1 test for tests/asset-manager/TestStrategicAssetsManager.t.sol:Initialize
[PASS] test_revertsIf_alreadyInitialized() (gas: 10944)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 91.80ms (66.82µs CPU time)

Ran 2 tests for tests/asset-manager/TestStrategicAssetsManager.t.sol:RemoveStrategicAssetManager
[PASS] test_revertsIf_invalidCaller() (gas: 12910)
[PASS] test_successful() (gas: 16817)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 96.71ms (160.99µs CPU time)

Ran 1 test for tests/ProtocolV3TestBase.t.sol:ProtocolV3TestBaseTest
[PASS] test_e2eTestDPI() (gas: 2390533)
Logs:
  E2E: Collateral WMATIC, TestAsset DPI
  SUPPLY: WMATIC, Amount: 184940190804644255059524
  SUPPLY: DPI, Amount: 16186339863817362599
  WITHDRAW: DPI, Amount: 8093169931908681299
  WITHDRAW: DPI, Amount: 8093169931908681300
  BORROW: DPI, Amount 16186339863817362599, Stable: false
  REPAY: DPI, Amount: 16186339863817362599

Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 168.20ms (23.60ms CPU time)

Ran 2 tests for tests/asset-manager/TestStrategicAssetsManager.t.sol:SetStrategicAssetManager
[PASS] test_revertsIf_invalidCaller() (gas: 14606)
[PASS] test_successful() (gas: 23215)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 127.19ms (331.24µs CPU time)

Ran 2 tests for tests/ProtocolV3TestBase.t.sol:ProtocolV3TestE2ETestArbitrumAll
[PASS] test_deal() (gas: 47727)
[PASS] test_e2e() (gas: 17486889)
Logs:
  E2E: Collateral DAI, TestAsset DAI
  SUPPLY: DAI, Amount: 99999086008353883645503
  SUPPLY: DAI, Amount: 999990860083538836455
  WITHDRAW: DAI, Amount: 499995430041769418227
  WITHDRAW: DAI, Amount: 499995430041769418228
  BORROW: DAI, Amount 999990860083538836455, Stable: false
  REPAY: DAI, Amount: 999990860083538836455
  E2E: Collateral DAI, TestAsset LINK
  SUPPLY: DAI, Amount: 99999086008353883645503
  SUPPLY: LINK, Amount: 63975364796438638841
  WITHDRAW: LINK, Amount: 31987682398219319420
  WITHDRAW: LINK, Amount: 31987682398219319421
  BORROW: LINK, Amount 63975364796438638841, Stable: false
  REPAY: LINK, Amount: 63975364796438638841
  E2E: Collateral DAI, TestAsset USDC
  SUPPLY: DAI, Amount: 99999086008353883645503
  SUPPLY: USDC, Amount: 999865867
  WITHDRAW: USDC, Amount: 499932933
  WITHDRAW: USDC, Amount: 499932933
  BORROW: USDC, Amount 999865867, Stable: false
  REPAY: USDC, Amount: 999865867
  E2E: Collateral DAI, TestAsset WBTC
  SUPPLY: DAI, Amount: 99999086008353883645503
  SUPPLY: WBTC, Amount: 2331545
  WITHDRAW: WBTC, Amount: 1165772
  WITHDRAW: WBTC, Amount: 1165773
  BORROW: WBTC, Amount 2331545, Stable: false
  REPAY: WBTC, Amount: 2331545
  E2E: Collateral DAI, TestAsset WETH
  SUPPLY: DAI, Amount: 99999086008353883645503
  SUPPLY: WETH, Amount: 435612114541922911
  WITHDRAW: WETH, Amount: 217806057270961455
  WITHDRAW: WETH, Amount: 217806057270961455
  BORROW: WETH, Amount 435612114541922911, Stable: false
  REPAY: WETH, Amount: 435612114541922911
  E2E: Collateral DAI, TestAsset USDT
  SUPPLY: DAI, Amount: 99999086008353883645503
  SUPPLY: USDT, Amount: 1000010000
  WITHDRAW: USDT, Amount: 500005000
  WITHDRAW: USDT, Amount: 500005000
  BORROW: USDT, Amount 1000010000, Stable: false
  REPAY: USDT, Amount: 1000010000
  E2E: Collateral DAI, TestAsset AAVE
  SUPPLY: DAI, Amount: 99999086008353883645503
  SUPPLY: AAVE, Amount: 9211500189526616399
  WITHDRAW: AAVE, Amount: 4605750094763308199
  WITHDRAW: AAVE, Amount: 4605750094763308200
  E2E: Collateral DAI, TestAsset EURS
  SUPPLY: DAI, Amount: 99999086008353883645503
  SUPPLY: EURS, Amount: 90365
  WITHDRAW: EURS, Amount: 45182
  WITHDRAW: EURS, Amount: 45183
  BORROW: EURS, Amount 90365, Stable: false
  REPAY: EURS, Amount: 90365
  E2E: Collateral DAI, TestAsset wstETH
  SUPPLY: DAI, Amount: 99999086008353883645503
  SUPPLY: wstETH, Amount: 378288935072691655
  WITHDRAW: wstETH, Amount: 189144467536345827
  WITHDRAW: wstETH, Amount: 189144467536345828
  BORROW: wstETH, Amount 378288935072691655, Stable: false
  REPAY: wstETH, Amount: 378288935072691655
  E2E: TestAsset MAI SKIPPED
  E2E: Collateral DAI, TestAsset rETH
  SUPPLY: DAI, Amount: 99999086008353883645503
  SUPPLY: rETH, Amount: 398306593701601373
  WITHDRAW: rETH, Amount: 199153296850800686
  WITHDRAW: rETH, Amount: 199153296850800687
  BORROW: rETH, Amount 398306593701601373, Stable: false
  REPAY: rETH, Amount: 398306593701601373
  E2E: Collateral DAI, TestAsset LUSD
  SUPPLY: DAI, Amount: 99999086008353883645503
  SUPPLY: LUSD, Amount: 1002232362341555958326
  WITHDRAW: LUSD, Amount: 501116181170777979163
  WITHDRAW: LUSD, Amount: 501116181170777979163
  BORROW: LUSD, Amount 1002232362341555958326, Stable: false
  REPAY: LUSD, Amount: 1002232362341555958326
  E2E: Collateral DAI, TestAsset USDC
  SUPPLY: DAI, Amount: 99999086008353883645503
  SUPPLY: USDC, Amount: 999865867
  WITHDRAW: USDC, Amount: 499932933
  WITHDRAW: USDC, Amount: 499932935
  BORROW: USDC, Amount 999865867, Stable: false
  REPAY: USDC, Amount: 999865867
  E2E: Collateral DAI, TestAsset FRAX
  SUPPLY: DAI, Amount: 99999086008353883645503
  SUPPLY: FRAX, Amount: 1000766747451227232256
  WITHDRAW: FRAX, Amount: 500383373725613616128
  WITHDRAW: FRAX, Amount: 500383373725613616129
  BORROW: FRAX, Amount 1000766747451227232256, Stable: false
  REPAY: FRAX, Amount: 1000766747451227232256
  E2E: Collateral DAI, TestAsset ARB
  SUPPLY: DAI, Amount: 99999086008353883645503
  SUPPLY: ARB, Amount: 676722766984049644382
  WITHDRAW: ARB, Amount: 338361383492024822191
  WITHDRAW: ARB, Amount: 338361383492024822192
  BORROW: ARB, Amount 676722766984049644382, Stable: false
  REPAY: ARB, Amount: 676722766984049644382

Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 317.51ms (184.53ms CPU time)

Ran 1 test for tests/ProtocolV3TestBase.t.sol:ProtocolV3TestE2ETestAllMainnet
[PASS] test_e2e() (gas: 33387290)
Logs:
  E2E: Collateral WETH, TestAsset WETH
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: WETH, Amount: 301641836516157444
  WITHDRAW: WETH, Amount: 150820918258078722
  WITHDRAW: WETH, Amount: 150820918258078722
  BORROW: WETH, Amount 301641836516157444, Stable: false
  REPAY: WETH, Amount: 301641836516157444
  E2E: Collateral WETH, TestAsset wstETH
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: wstETH, Amount: 259819096458389056
  WITHDRAW: wstETH, Amount: 129909548229194528
  WITHDRAW: wstETH, Amount: 129909548229194528
  BORROW: wstETH, Amount 259819096458389056, Stable: false
  REPAY: wstETH, Amount: 259819096458389056
  E2E: Collateral WETH, TestAsset WBTC
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: WBTC, Amount: 1554641
  WITHDRAW: WBTC, Amount: 777320
  WITHDRAW: WBTC, Amount: 777321
  BORROW: WBTC, Amount 1554641, Stable: false
  REPAY: WBTC, Amount: 1554641
  E2E: Collateral WETH, TestAsset USDC
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: USDC, Amount: 999904829
  WITHDRAW: USDC, Amount: 499952414
  WITHDRAW: USDC, Amount: 499952415
  BORROW: USDC, Amount 999904829, Stable: false
  REPAY: USDC, Amount: 999904829
  E2E: Collateral WETH, TestAsset DAI
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: DAI, Amount: 1000142610334807640221
  WITHDRAW: DAI, Amount: 500071305167403820110
  WITHDRAW: DAI, Amount: 500071305167403820110
  BORROW: DAI, Amount 1000142610334807640221, Stable: false
  REPAY: DAI, Amount: 1000142610334807640221
  E2E: Collateral WETH, TestAsset LINK
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: LINK, Amount: 57835386822600971454
  WITHDRAW: LINK, Amount: 28917693411300485727
  WITHDRAW: LINK, Amount: 28917693411300485726
  BORROW: LINK, Amount 57835386822600971454, Stable: false
  REPAY: LINK, Amount: 57835386822600971454
  E2E: Collateral WETH, TestAsset AAVE
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: AAVE, Amount: 8869941953320547114
  WITHDRAW: AAVE, Amount: 4434970976660273557
  WITHDRAW: AAVE, Amount: 4434970976660273557
  E2E: Collateral WETH, TestAsset cbETH
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: cbETH, Amount: 282731472876824898
  WITHDRAW: cbETH, Amount: 141365736438412449
  WITHDRAW: cbETH, Amount: 141365736438412450
  BORROW: cbETH, Amount 282731472876824898, Stable: false
  REPAY: cbETH, Amount: 282731472876824898
  E2E: Collateral WETH, TestAsset USDT
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: USDT, Amount: 1000361030
  WITHDRAW: USDT, Amount: 500180515
  WITHDRAW: USDT, Amount: 500180514
  BORROW: USDT, Amount 1000361030, Stable: false
  REPAY: USDT, Amount: 1000361030
  E2E: Collateral WETH, TestAsset rETH
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: rETH, Amount: 273875273174750208
  WITHDRAW: rETH, Amount: 136937636587375104
  WITHDRAW: rETH, Amount: 136937636587375104
  BORROW: rETH, Amount 273875273174750208, Stable: false
  REPAY: rETH, Amount: 273875273174750208
  E2E: Collateral WETH, TestAsset LUSD
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: LUSD, Amount: 1002673709660707048200
  WITHDRAW: LUSD, Amount: 501336854830353524100
  WITHDRAW: LUSD, Amount: 501336854830353524100
  BORROW: LUSD, Amount 1002673709660707048200, Stable: false
  REPAY: LUSD, Amount: 1002673709660707048200
  E2E: Collateral WETH, TestAsset CRV
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: CRV, Amount: 1580278128950695322376
  WITHDRAW: CRV, Amount: 790139064475347661188
  WITHDRAW: CRV, Amount: 790139064475347661189
  BORROW: CRV, Amount 1580278128950695322376, Stable: false
  REPAY: CRV, Amount: 1580278128950695322376
  E2E: Collateral WETH, TestAsset MKR
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: MKR, Amount: 350020948893799673
  WITHDRAW: MKR, Amount: 175010474446899836
  WITHDRAW: MKR, Amount: 175010474446899837
  BORROW: MKR, Amount 350020948893799673, Stable: false
  REPAY: MKR, Amount: 350020948893799673
  E2E: Collateral WETH, TestAsset SNX
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: SNX, Amount: 268792049122585608345
  WITHDRAW: SNX, Amount: 134396024561292804172
  WITHDRAW: SNX, Amount: 134396024561292804174
  BORROW: SNX, Amount 268792049122585608345, Stable: false
  REPAY: SNX, Amount: 268792049122585608345
  E2E: Collateral WETH, TestAsset BAL
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: BAL, Amount: 215726458850177974328
  WITHDRAW: BAL, Amount: 107863229425088987164
  WITHDRAW: BAL, Amount: 107863229425088987163
  BORROW: BAL, Amount 215726458850177974328, Stable: false
  REPAY: BAL, Amount: 215726458850177974328
  E2E: Collateral WETH, TestAsset UNI
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: UNI, Amount: 89806390892195061277
  WITHDRAW: UNI, Amount: 44903195446097530638
  WITHDRAW: UNI, Amount: 44903195446097530639
  BORROW: UNI, Amount 89806390892195061277, Stable: false
  REPAY: UNI, Amount: 89806390892195061277
  E2E: Collateral WETH, TestAsset LDO
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: LDO, Amount: 419720178181456810376
  WITHDRAW: LDO, Amount: 209860089090728405188
  WITHDRAW: LDO, Amount: 209860089090728405188
  BORROW: LDO, Amount 419720178181456810376, Stable: false
  REPAY: LDO, Amount: 419720178181456810376
  E2E: Collateral WETH, TestAsset ENS
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: ENS, Amount: 50400685449322110780
  WITHDRAW: ENS, Amount: 25200342724661055390
  WITHDRAW: ENS, Amount: 25200342724661055390
  BORROW: ENS, Amount 50400685449322110780, Stable: false
  REPAY: ENS, Amount: 50400685449322110780
  E2E: Collateral WETH, TestAsset 1INCH
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: 1INCH, Amount: 1937346223143537981672
  WITHDRAW: 1INCH, Amount: 968673111571768990836
  WITHDRAW: 1INCH, Amount: 968673111571768990836
  BORROW: 1INCH, Amount 1937346223143537981672, Stable: false
  REPAY: 1INCH, Amount: 1937346223143537981672
  E2E: Collateral WETH, TestAsset FRAX
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: FRAX, Amount: 1002424162351815395170
  WITHDRAW: FRAX, Amount: 501212081175907697585
  WITHDRAW: FRAX, Amount: 501212081175907697586
  BORROW: FRAX, Amount 1002424162351815395170, Stable: false
  REPAY: FRAX, Amount: 1002424162351815395170
  E2E: Collateral WETH, TestAsset GHO
  SUPPLY: WETH, Amount: 30164183651615744497
  BORROW: GHO, Amount 1000000000000000000000, Stable: false
  REPAY: GHO, Amount: 1000000000000000000000
  E2E: Collateral WETH, TestAsset RPL
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: RPL, Amount: 36913990402362495385
  WITHDRAW: RPL, Amount: 18456995201181247692
  WITHDRAW: RPL, Amount: 18456995201181247694
  BORROW: RPL, Amount 36913990402362495385, Stable: false
  REPAY: RPL, Amount: 36913990402362495385
  E2E: Collateral WETH, TestAsset sDAI
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: sDAI, Amount: 940574131340755880361
  WITHDRAW: sDAI, Amount: 470287065670377940180
  WITHDRAW: sDAI, Amount: 470287065670377940182
  E2E: Collateral WETH, TestAsset STG
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: STG, Amount: 1484440928892473912694
  WITHDRAW: STG, Amount: 742220464446236956347
  WITHDRAW: STG, Amount: 742220464446236956347
  BORROW: STG, Amount 1484440928892473912694, Stable: false
  REPAY: STG, Amount: 1484440928892473912694
  E2E: Collateral WETH, TestAsset KNC
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: KNC, Amount: 1319621933594512906430
  WITHDRAW: KNC, Amount: 659810966797256453215
  WITHDRAW: KNC, Amount: 659810966797256453215
  BORROW: KNC, Amount 1319621933594512906430, Stable: false
  REPAY: KNC, Amount: 1319621933594512906430
  E2E: Collateral WETH, TestAsset FXS
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: FXS, Amount: 141508498537689383406
  WITHDRAW: FXS, Amount: 70754249268844691703
  WITHDRAW: FXS, Amount: 70754249268844691702
  BORROW: FXS, Amount 141508498537689383406, Stable: false
  REPAY: FXS, Amount: 141508498537689383406
  E2E: Collateral WETH, TestAsset crvUSD
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: crvUSD, Amount: 1001433201125791176041
  WITHDRAW: crvUSD, Amount: 500716600562895588020
  WITHDRAW: crvUSD, Amount: 500716600562895588021
  BORROW: crvUSD, Amount 1001433201125791176041, Stable: false
  REPAY: crvUSD, Amount: 1001433201125791176041
  E2E: Collateral WETH, TestAsset PYUSD
  SUPPLY: WETH, Amount: 30164183651615744497
  SUPPLY: PYUSD, Amount: 1000500250
  WITHDRAW: PYUSD, Amount: 500250125
  WITHDRAW: PYUSD, Amount: 500250126
  BORROW: PYUSD, Amount 1000500250, Stable: false
  REPAY: PYUSD, Amount: 1000500250

Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 481.71ms (315.61ms CPU time)

Ran 2 tests for tests/ProtocolV3TestBase.t.sol:ProtocolV3TestE2ETestAsset
[PASS] test_e2eTestAssetMAI() (gas: 1900679)
Logs:
  E2E: Collateral DAI, TestAsset MAI
  SUPPLY: DAI, Amount: 100000000000000000000000
  SUPPLY: MAI, Amount: 1008550074022028407809
  WITHDRAW: MAI, Amount: 504275037011014203904
  WITHDRAW: MAI, Amount: 504275037011014203906
  BORROW: MAI, Amount 1008550074022028407809, Stable: false
  REPAY: MAI, Amount: 1008550074022028407809

[PASS] test_e2eTestAssetUSDC() (gas: 2582815)
Logs:
  E2E: Collateral DAI, TestAsset USDC
  SUPPLY: DAI, Amount: 100000000000000000000000
  SUPPLY: USDC, Amount: 1000008660
  WITHDRAW: USDC, Amount: 500004330
  WITHDRAW: USDC, Amount: 500004330
  BORROW: USDC, Amount 1000008660, Stable: false
  REPAY: USDC, Amount: 1000008660
  BORROW: USDC, Amount 1000008660, Stable: true
  REPAY: USDC, Amount: 1000008660

Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 148.75ms (33.80ms CPU time)

Ran 2 tests for tests/ProtocolV3TestBase.t.sol:ProtocolV3TestE2ETestAvalancheAll
[PASS] test_deal() (gas: 47749)
[PASS] test_e2e() (gas: 13725640)
Logs:
  E2E: Collateral DAI.e, TestAsset DAI.e
  SUPPLY: DAI.e, Amount: 99906474551977657155806
  SUPPLY: DAI.e, Amount: 999064745519776571558
  WITHDRAW: DAI.e, Amount: 499532372759888285779
  WITHDRAW: DAI.e, Amount: 499532372759888285778
  BORROW: DAI.e, Amount 999064745519776571558, Stable: false
  REPAY: DAI.e, Amount: 999064745519776571558
  E2E: Collateral DAI.e, TestAsset LINK.e
  SUPPLY: DAI.e, Amount: 99906474551977657155806
  SUPPLY: LINK.e, Amount: 63877681904474759372
  WITHDRAW: LINK.e, Amount: 31938840952237379686
  WITHDRAW: LINK.e, Amount: 31938840952237379687
  BORROW: LINK.e, Amount 63877681904474759372, Stable: false
  REPAY: LINK.e, Amount: 63877681904474759372
  E2E: Collateral DAI.e, TestAsset USDC
  SUPPLY: DAI.e, Amount: 99906474551977657155806
  SUPPLY: USDC, Amount: 1000048142
  WITHDRAW: USDC, Amount: 500024071
  WITHDRAW: USDC, Amount: 500024070
  BORROW: USDC, Amount 1000048142, Stable: false
  REPAY: USDC, Amount: 1000048142
  E2E: Collateral DAI.e, TestAsset WBTC.e
  SUPPLY: DAI.e, Amount: 99906474551977657155806
  SUPPLY: WBTC.e, Amount: 2279072
  WITHDRAW: WBTC.e, Amount: 1139536
  WITHDRAW: WBTC.e, Amount: 1139535
  BORROW: WBTC.e, Amount 2279072, Stable: false
  REPAY: WBTC.e, Amount: 2279072
  E2E: Collateral DAI.e, TestAsset WETH.e
  SUPPLY: DAI.e, Amount: 99906474551977657155806
  SUPPLY: WETH.e, Amount: 439512995726389232
  WITHDRAW: WETH.e, Amount: 219756497863194616
  WITHDRAW: WETH.e, Amount: 219756497863194616
  BORROW: WETH.e, Amount 439512995726389232, Stable: false
  REPAY: WETH.e, Amount: 439512995726389232
  E2E: Collateral DAI.e, TestAsset USDt
  SUPPLY: DAI.e, Amount: 99906474551977657155806
  SUPPLY: USDt, Amount: 999760057
  WITHDRAW: USDt, Amount: 499880028
  WITHDRAW: USDt, Amount: 499880029
  BORROW: USDt, Amount 999760057, Stable: false
  REPAY: USDt, Amount: 999760057
  E2E: Collateral DAI.e, TestAsset AAVE.e
  SUPPLY: DAI.e, Amount: 99906474551977657155806
  SUPPLY: AAVE.e, Amount: 10221219906684350739
  WITHDRAW: AAVE.e, Amount: 5110609953342175369
  WITHDRAW: AAVE.e, Amount: 5110609953342175370
  E2E: Collateral DAI.e, TestAsset WAVAX
  SUPPLY: DAI.e, Amount: 99906474551977657155806
  SUPPLY: WAVAX, Amount: 37735849070843716630
  WITHDRAW: WAVAX, Amount: 18867924535421858315
  WITHDRAW: WAVAX, Amount: 18867924535421858315
  BORROW: WAVAX, Amount 37735849070843716630, Stable: false
  REPAY: WAVAX, Amount: 37735849070843716630
  E2E: Collateral DAI.e, TestAsset sAVAX
  SUPPLY: DAI.e, Amount: 99906474551977657155806
  SUPPLY: sAVAX, Amount: 33715148546009590037
  WITHDRAW: sAVAX, Amount: 16857574273004795018
  WITHDRAW: sAVAX, Amount: 16857574273004795019
  E2E: Collateral DAI.e, TestAsset FRAX
  SUPPLY: DAI.e, Amount: 99906474551977657155806
  SUPPLY: FRAX, Amount: 1000000000000000000000
  WITHDRAW: FRAX, Amount: 500000000000000000000
  WITHDRAW: FRAX, Amount: 500000000000000000000
  BORROW: FRAX, Amount 1000000000000000000000, Stable: false
  REPAY: FRAX, Amount: 1000000000000000000000
  E2E: TestAsset MAI SKIPPED
  E2E: Collateral DAI.e, TestAsset BTC.b
  SUPPLY: DAI.e, Amount: 99906474551977657155806
  SUPPLY: BTC.b, Amount: 2279072
  WITHDRAW: BTC.b, Amount: 1139536
  WITHDRAW: BTC.b, Amount: 1139537
  BORROW: BTC.b, Amount 2279072, Stable: false
  REPAY: BTC.b, Amount: 2279072

Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 393.76ms (96.86ms CPU time)

Ran 2 tests for tests/asset-manager/AaveWstethWithdrawerTest.t.sol:EmergencyTokenTransfer
[PASS] test_revertsIf_invalidCaller() (gas: 193958)
[PASS] test_successful_governanceCaller() (gas: 206572)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 374.83ms (277.94ms CPU time)

Ran 1 test for tests/v2-config-engine/AaveV2ConfigEngineTest.t.sol:AaveV2ConfigEngineTest
[PASS] testV2RateStrategiesUpdates() (gas: 183119482)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 6.63s (6.63s CPU time)

Ran 3 tests for tests/asset-manager/AaveWstethWithdrawerTest.t.sol:StartWithdrawal
[PASS] test_revertsIf_invalidCaller() (gas: 68140)
[PASS] test_startWithdrawalGuardian() (gas: 360436)
[PASS] test_startWithdrawalOwner() (gas: 358253)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 3.31s (3.20s CPU time)

Ran 2 tests for tests/asset-manager/AaveWstethWithdrawerTest.t.sol:Emergency721TokenTransfer
[PASS] test_revertsIf_invalidCaller() (gas: 705644)
[PASS] test_successful_governanceCaller() (gas: 749795)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 4.29s (4.20s CPU time)

Ran 3 tests for tests/asset-manager/AaveWstethWithdrawerTest.t.sol:FinalizeWithdrawal
[PASS] test_finalizeWithdrawalGuardian() (gas: 770545)
[PASS] test_finalizeWithdrawalOwner() (gas: 768852)
[PASS] test_finalizeWithdrawalWithExtraFunds() (gas: 769391)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 5.32s (7.89s CPU time)
2024-07-23T16:11:50.149462Z ERROR cheatcodes: non-empty stderr input=["npx", "@bgd-labs/aave-cli@^0.12.0", "adi-diff-snapshots", "./reports/adi_test_adi_diffs_before.json", "./reports/adi_test_adi_diffs_after.json", "-o", "./diffs/adi_test_adi_diffs_before_adi_test_adi_diffs_after.md"] stderr="npm warn exec The following package was not found and will be installed: @bgd-labs/aave-cli@0.12.0
npm warn deprecated stable@0.1.8: Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility
npm warn deprecated interface-ipld-format@1.0.1: This module has been superseded by the multiformats module
npm warn deprecated cids@1.1.9: This module has been superseded by the multiformats module
npm warn deprecated multibase@4.0.6: This module has been superseded by the multiformats module
npm warn deprecated multicodec@3.2.1: This module has been superseded by the multiformats module
npm warn deprecated ipld-dag-pb@0.22.3: This module has been superseded by @ipld/dag-pb and multiformats
"

Ran 1 test for tests/adi/SimpleOneToManyAdapterUpdatePayloadTest.t.sol:SimpleOneToManyAdapterUpdatePayloadTest
[PASS] test_defaultTest() (gas: 1668456)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 16.18s (16.08s CPU time)

Ran 80 test suites in 19.76s (55.97s CPU time): 192 tests passed, 0 failed, 0 skipped (192 total tests)

Please sign in to comment.