Files
smom-dbis-138/script/flash/SweepAaveQuotePushFlashReceiverSurplus.s.sol
defiQUG 2b52cc6e32 refactor(archive): move historical contracts and adapters to archive directory
- Archived multiple non-EVM adapters (Algorand, Hedera, Tron, TON, Cosmos, Solana) and compliance contracts (IndyVerifier) to `archive/solidity/contracts/`.
- Updated documentation to reflect the historical status of archived components.
- Adjusted `foundry.toml` and `README.md` for clarity on historical dependencies and configurations.
- Enhanced Makefile and package.json scripts for improved contract testing and building processes.
- Removed obsolete contracts (AlltraCustomBridge, CommodityCCIPBridge, ISO4217WCCIPBridge, VaultBridgeAdapter) from the main directory.
- Updated implementation reports to indicate archived status for various components.
2026-04-12 18:21:05 -07:00

48 lines
2.2 KiB
Solidity

// 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();
}
}