Branch data Line data Source code
1 : : // SPDX-License-Identifier: MIT
2 : :
3 : : pragma solidity ^0.8.0;
4 : :
5 : : import {IFeeClaimer} from './interfaces/IFeeClaimer.sol';
6 : : import {IERC20} from '../../dependencies/openzeppelin/contracts/IERC20.sol';
7 : :
8 : : /**
9 : : * @title AaveParaSwapFeeClaimer
10 : : * @author BGD Labs
11 : : * @dev Helper contract that allows claiming paraswap partner fee to the collector on the respective network.
12 : : */
13 : : contract AaveParaSwapFeeClaimer {
14 : : // lowercase for backwards compatibility as originally this was in storage
15 : : address public immutable aaveCollector;
16 : : IFeeClaimer public immutable paraswapFeeClaimer;
17 : :
18 : : constructor(address _aaveCollector, IFeeClaimer _paraswapFeeClaimer) {
19 : 0 : require(address(_paraswapFeeClaimer) != address(0), 'PARASWAP_FEE_CLAIMER_REQUIRED');
20 : 0 : require(_aaveCollector != address(0), 'COLLECTOR_REQUIRED');
21 : 0 : aaveCollector = _aaveCollector;
22 : 0 : paraswapFeeClaimer = _paraswapFeeClaimer;
23 : : }
24 : :
25 : : /**
26 : : * @dev returns claimable balance for a specified asset
27 : : * @param asset The asset to fetch claimable balance of
28 : : */
29 : : function getClaimable(address asset) external view returns (uint256) {
30 : 5 : return paraswapFeeClaimer.getBalance(IERC20(asset), address(this));
31 : : }
32 : :
33 : : /**
34 : : * @dev returns claimable balances for specified assets
35 : : * @param assets The assets to fetch claimable balances of
36 : : */
37 : : function batchGetClaimable(address[] memory assets) external view returns (uint256[] memory) {
38 : 1 : return paraswapFeeClaimer.batchGetBalance(assets, address(this));
39 : : }
40 : :
41 : : /**
42 : : * @dev withdraws a single asset to the collector
43 : : * @notice will revert when there's nothing to claim
44 : : * @param asset The asset to claim rewards of
45 : : */
46 : : function claimToCollector(IERC20 asset) external {
47 : 1 : paraswapFeeClaimer.withdrawAllERC20(asset, aaveCollector);
48 : : }
49 : :
50 : : /**
51 : : * @dev withdraws all asset to the collector
52 : : * @notice will revert when there's nothing to claim on a single supplied asset
53 : : * @param assets The assets to claim rewards of
54 : : */
55 : : function batchClaimToCollector(address[] memory assets) external {
56 : 1 : paraswapFeeClaimer.batchWithdrawAllERC20(assets, aaveCollector);
57 : : }
58 : : }
|