```python
def hop_window_sums(values: list[int], size: int, hop: int) -> list[int]:
    if not isinstance(values, list) or not all(isinstance(x, int) for x in values):
        raise ValueError("Input must be a list of integers")
    if not isinstance(size, int) or not isinstance(hop, int) or size <= 0 or hop <= 0:
        raise ValueError("Window size and hop step must be positive integers")

    result = []
    for i in range(0, len(values) - size + 1, hop):
        window_sum = sum(values[i:i + size])
        result.append(window_sum)

    return result
```