interface IERC20 {
    function balanceOf(address) external returns (uint256);

    // some tokens (like USDT) are not returning bool as ERC20 standard require
    function transfer(address, uint256) external;

    // we will not check for return value because lots of non-erc20 complaints (like USDT)
    function transferFrom(
        address,
        address,
        uint256
    ) external;

    function allowance(address, address) external returns (uint256);
}
function transferFrom(
    address,
    address,
    uint256
) external;

// we will not check for return value because lots of non-erc20 complaints (like USDT)