interface IERC20 {
        //Return total supply
        function totalSupply() external view returns (uint256);

        //Return amount of tokens owned by 'account'
        function balanceOf(address account) external view returns (uint256);

        //Moves 'amount' tokens from the caller's account to 'recipient'
        function transfer(address recipient, uint256 amount) external returns (bool);
        //Returns a boolean value indicating whether the operation succeeded.

        //Returns the remaining number of tokens that 'spender' will be allowed to spend
        function allowance(address owner, address spender) external view returns (uint256);


        //Sets 'amount' as the allowance of 'spender' over the caller's tokens
        function approve(address spender, uint256 amount) external returns (bool);

        //Moves 'ammount' of tokens from 'spender' to 'recipient'. Then deducts from callers allowance.
        function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

        event Transfer(address indexed from, address indexed to, uint256 value);

        event Approval(address indexed owner, address indexed spender, uint256 value);
    }
function approve(address spender, uint256 amount) external returns (bool);
//Sets 'amount' as the allowance of 'spender' over the caller's tokens