contract ERC677Receiver {
    /**
    * The function is added to contracts enabling them to react to receiving tokens within a single transaction.
    * The from parameter is the account which just transferred amount from the token contract. data is available to pass
    * additional parameters, i.e. to indicate what the intention of the transfer is if a contract allows transfers for multiple reasons.
    * @param from address sending tokens
    * @param amount of tokens
    * @param data to send to another contract
    */
    function onTokenTransfer(address from, uint256 amount, bytes calldata data) external returns (bool success);
}
/**
 * @title Contract that will work with ERC-677 tokens
 * see:
 * https://github.com/ethereum/EIPs/issues/677
 * https://github.com/smartcontractkit/LinkToken/blob/master/contracts/ERC677Token.sol
 */
function onTokenTransfer(address from, uint256 amount, bytes calldata data) external returns (bool success);

/**
 * The function is added to contracts enabling them to react to receiving tokens within a single transaction.
 * The from parameter is the account which just transferred amount from the token contract. data is available to pass
 * additional parameters, i.e. to indicate what the intention of the transfer is if a contract allows transfers for multiple reasons.
 * @param from address sending tokens
 * @param amount of tokens
 * @param data to send to another contract
 */