// SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.8.10; import {IERC20} from '@aave/core-v3/contracts/dependencies/openzeppelin/contracts/IERC20.sol'; /** * @title ICollector * @notice Defines the interface of the Collector contract * @author Aave **/ interface ICollector { /** * @dev Emitted during the transfer of ownership of the funds administrator address * @param fundsAdmin The new funds administrator address **/ event NewFundsAdmin(address indexed fundsAdmin); /** * @dev Retrieve the current implementation Revision of the proxy * @return The revision version */ function REVISION() external view returns (uint256); /** * @dev Retrieve the current funds administrator * @return The address of the funds administrator */ function getFundsAdmin() external view returns (address); /** * @dev Approve an amount of tokens to be pulled by the recipient. * @param token The address of the asset * @param recipient The address of the entity allowed to pull tokens * @param amount The amount allowed to be pulled. If zero it will revoke the approval. */ function approve(IERC20 token, address recipient, uint256 amount) external; /** * @dev Transfer an amount of tokens to the recipient. * @param token The address of the asset * @param recipient The address of the entity to transfer the tokens. * @param amount The amount to be transferred. */ function transfer(IERC20 token, address recipient, uint256 amount) external; /** * @dev Transfer the ownership of the funds administrator role. This function should only be callable by the current funds administrator. * @param admin The address of the new funds administrator */ function setFundsAdmin(address admin) external; }