function flashLoan( IERC3156FlashBorrower receiver, address token, uint256 amount, bytes calldata data ) external returns(bool) { if (token != ETH) revert UnsupportedCurrency(); uint256 balanceBefore = address(this).balance;
// Transfer ETH and handle control to receiver SafeTransferLib.safeTransferETH(address(receiver), amount); if(receiver.onFlashLoan( msg.sender, ETH, amount, FIXED_FEE, data ) != CALLBACK_SUCCESS) { revert CallbackFailed(); }
if (address(this).balance < balanceBefore + FIXED_FEE) revert RepayFailed();