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 }