Files
smom-dbis-138/script/flash/SweepAaveQuotePushFlashReceiverSurplus.s.sol

48 lines
2.2 KiB
Solidity
Raw Permalink Normal View History

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {Script, console} from "forge-std/Script.sol";
import {AaveQuotePushFlashReceiver} from "../../contracts/flash/AaveQuotePushFlashReceiver.sol";
/**
* @title SweepAaveQuotePushFlashReceiverSurplus
* @notice Owner-operated surplus recovery for a deployed AaveQuotePushFlashReceiver.
*
* Env:
* PRIVATE_KEY required (must be receiver owner)
* AAVE_QUOTE_PUSH_RECEIVER_MAINNET required
* QUOTE_PUSH_SURPLUS_TOKEN_MAINNET optional; defaults to USDC mainnet
* QUOTE_PUSH_SURPLUS_RECIPIENT optional; defaults to deployer derived from PRIVATE_KEY
* QUOTE_PUSH_SURPLUS_RESERVE_RAW optional; keep this much on receiver when sweeping surplus mode
* QUOTE_PUSH_SURPLUS_EXACT_AMOUNT_RAW optional; if > 0, sweep this exact amount via sweepToken()
*/
contract SweepAaveQuotePushFlashReceiverSurplus is Script {
address internal constant DEFAULT_USDC_MAINNET = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
function run() external {
uint256 pk = vm.envUint("PRIVATE_KEY");
address receiver = vm.envAddress("AAVE_QUOTE_PUSH_RECEIVER_MAINNET");
address token = vm.envOr("QUOTE_PUSH_SURPLUS_TOKEN_MAINNET", DEFAULT_USDC_MAINNET);
address deployer = vm.addr(pk);
address recipient = vm.envOr("QUOTE_PUSH_SURPLUS_RECIPIENT", deployer);
uint256 reserveRetained = vm.envOr("QUOTE_PUSH_SURPLUS_RESERVE_RAW", uint256(0));
uint256 exactAmount = vm.envOr("QUOTE_PUSH_SURPLUS_EXACT_AMOUNT_RAW", uint256(0));
console.log("receiver", receiver);
console.log("token", token);
console.log("recipient", recipient);
console.log("reserveRetained", reserveRetained);
console.log("exactAmount", exactAmount);
vm.startBroadcast(pk);
if (exactAmount > 0) {
AaveQuotePushFlashReceiver(receiver).sweepToken(token, recipient, exactAmount);
console.log("sweptExact", exactAmount);
} else {
uint256 swept = AaveQuotePushFlashReceiver(receiver).sweepQuoteSurplus(token, recipient, reserveRetained);
console.log("sweptSurplus", swept);
}
vm.stopBroadcast();
}
}