github.com/cwntr/go-defi@v0.0.0-20210629134751-07f9ec2f7e66/contracts/handlers/funds/HFunds.sol (about)

     1  pragma solidity ^0.5.0;
     2  
     3  import "../HandlerBase.sol";
     4  import "@openzeppelin/contracts/utils/Address.sol";
     5  import "@openzeppelin/contracts/math/SafeMath.sol";
     6  import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
     7  import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol";
     8  
     9  
    10  
    11  contract HFunds is HandlerBase {
    12      using SafeERC20 for IERC20;
    13  
    14      function inject(address[] calldata tokens, uint256[] calldata amounts)
    15          external
    16          payable
    17      {
    18          require(
    19              tokens.length == amounts.length,
    20              "token and amount does not match"
    21          );
    22          address sender = cache.getSender();
    23          for (uint256 i = 0; i < tokens.length; i++) {
    24              IERC20(tokens[i]).safeTransferFrom(
    25                  sender,
    26                  address(this),
    27                  amounts[i]
    28              );
    29  
    30              // Update involved token
    31              _updateToken(tokens[i]);
    32          }
    33      }
    34  
    35      function sendToken(
    36          address token,
    37          uint256 amount,
    38          address receiver
    39      ) external payable {
    40          IERC20(token).safeTransfer(receiver, amount);
    41      }
    42  
    43      function send(uint256 amount, address payable receiver) external payable {
    44          receiver.transfer(amount);
    45      }
    46  }