```ts
export function hopWindowSums(values: number[], size: number, hop: number): number[] {
    if (!Array.isArray(values) || !values.every(Number.isInteger)) {
        throw new Error("Input must be a list of integers.");
    }
    if (size <= 0 || hop <= 0) {
        throw new Error("Window size and hop step must be positive integers.");
    }

    const result: number[] = [];
    for (let i = 0; i <= values.length - size; i += hop) {
        result.push(values.slice(i, i + size).reduce((acc, val) => acc + val, 0));
    }
    return result;
}
```