interface IAaveIncentivesController {
  // Differs from Aave's https://github.com/aave/protocol-v2 repo but matches
  // Aave's on-chain incentives controller
  function handleAction(
    address user,
    uint256 totalSupply,
    uint256 userBalance
  ) external;

  function getRewardsBalance(address[] calldata assets, address user)
    external
    view
    returns (uint256);

  function claimRewards(
    address[] calldata assets,
    uint256 amount,
    address to
  ) external returns (uint256);

  function assets(address asset) external view
    returns(
      uint104 emissionPerSecond,
      uint104 index,
      uint40 lastUpdateTimestamp
    );

  function REWARD_TOKEN() external view returns (address);
}
function handleAction(
  address user,
  uint256 totalSupply,
  uint256 userBalance
) external;

// Differs from Aave's https://github.com/aave/protocol-v2 repo but matches
// Aave's on-chain incentives controller