def number(number: str, fsep: str, tsep: str) -> str:
    """
    Format a number using the provided float and thousands separators.

        >>> number("1 000 000 000 000", ",", " ")
        '1 000 000 000 000'
        >>> number("1000000", ",", " ")
        '1 000 000'
        >>> number("1000000", ".", "")
        '1000000'
        >>> number("1000000", ".", ",")
        '1,000,000'
        >>> number("-1000000", ",", " ")
        '−1 000 000'
        >>> number("-1000000", "", "")
        '−1000000'
        >>> number("−1000000", ".", ",")
        '−1,000,000'
        >>> number("4.54609", "," , " ")
        '4,54609'
        >>> number("4.54609", "." , ",")
        '4.54609'
        >>> number("22905", "," , ".")
        '22.905'
    """
    # Remove superfluous spaces
    number = number.replace(" ", "")

    # Handle unicode minus U+2212 character before doing the conversion
    number = number.replace("−", "-")

    # Convert
    try:
        # Integer
        res = f"{int(number):,}"
    except ValueError:
        # Float
        res = f"{float(number):,}"

    # Replace the current thousands separator with "|";
    # then replace the dot with the float separator;
    # and lastly replace the "|" with the deisred thousands separator.
    # This 3-steps-replacement is needed for when separators are replacing each other.
    res = res.replace(",", "|").replace(".", fsep).replace("|", tsep)

    # Always return unicode minus U+2212 character for negative numbers
    return res.replace("-", "−")