def parse_currency(string: str) -> str:
    """
    Parse currency string.

    :param string: Currency string
    :return: Normalised currency string
    :raises ValueError: on invalid string
    """
    lookup = {'$': 'USD',
              '£': 'GBP',
              '€': 'EUR'}
    if string in lookup:
        return lookup[string]
    if not len(string) == 3:
        raise ValueError(f'Invalid string: {string!r}')
    return string