// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; /// TEST-ONLY mock (local hardhat — NEVER deploy to chain 2800). An ERC20-shaped /// token whose transfer / transferFrom ALWAYS return false WITHOUT reverting. /// This is the only way to exercise the `require(transferFrom(...), "...")` /// FALSE branch in AereFeeBurnVault.burnToken and the /// `ret.length > 0 && !abi.decode(ret,(bool))` revert branch of /// sAEREv2's SafeERC20LikeV2.safeTransferFrom — a compliant token whose /// transferFrom returns true or reverts can never reach those branches. contract MockReturnFalseERC20 { mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; function mint(address to, uint256 amt) external { balanceOf[to] += amt; } function approve(address spender, uint256 amt) external returns (bool) { allowance[msg.sender][spender] = amt; return true; } /// Always returns false, moves nothing. function transfer(address, uint256) external pure returns (bool) { return false; } /// Always returns false, moves nothing. function transferFrom(address, address, uint256) external pure returns (bool) { return false; } }