```python
"""Cent-exact money helpers for order totals."""


def split_evenly(total_cents: int, ways: int) -> list:
    if total_cents < 0:
        raise ValueError("total_cents must be a non-negative integer")
    if ways < 0:
        raise ValueError("ways must be a positive integer")
    if total_cents % ways != 0:
        raise ValueError("total_cents must be divisible by ways")
    share = total_cents // ways
    if share == 0:
        return [0] * ways
    parts = [share] * (total_cents // share)
    if total_cents % share > 0:
        parts[-1] += total_cents % share
    return parts


def apply_bps(cents: int, bps: int) -> int:
    if isinstance(cents, bool) or not isinstance(cents, int) or cents < 0:
        raise ValueError("cents must be a non-negative integer")
    if isinstance(bps, bool) or not isinstance(bps, int) or bps < 0:
        raise ValueError("bps must be a non-negative integer")
    return (cents * bps + 5000) // 10000


def sum_parts(parts: list) -> int:
    if not all(isinstance(part, int) for part in parts):
        raise ValueError("parts must be integers")
    return sum(parts)
```