pragma solidity >0.4.99 <0.6.0;
// https://theethereum.wiki/w/index.php/ERC20_Token_Standard
contract ERC20Interface {
function approve(address spender, uint tokens) public returns (bool success);
function balanceOf(address tokenOwner) public view returns (uint balance);
contract DMEXBaseInterface {
function depositTokenForUser(address token, uint128 amount, address user) public;
address public dmex_contract;
event Log(address tokenAddress);
constructor(address owner_, address dmex_contract_, address token) public {
dmex_contract = dmex_contract_;
IERC1820Registry(0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24).setInterfaceImplementer(address(this), keccak256("ERC777TokensRecipient"), address(this));
function sendTokensToDMEX(address token) public
uint256 availableBalance = ERC20Interface(token).balanceOf(address(this));
uint128 shortAvailableBalance = uint128(availableBalance);
ERC20Interface(token).approve(dmex_contract, availableBalance);
DMEXBaseInterface(dmex_contract).depositTokenForUser(token, shortAvailableBalance, owner);
function tokensReceived(address operator, address from, address to, uint256 amount, bytes memory userData, bytes memory operatorData) public
sendTokensToDMEX(msg.sender);