```python
"""Cent-exact money helpers for order totals."""
from typing import List

def split_evenly(total_cents: int, ways: int) -> List[int]:
    if not isinstance(total_cents, int) or total_cents < 0:
        raise ValueError("total_cents must be a non-negative integer")
    if not isinstance(ways, int) or ways <= 0:
        raise ValueError("ways must be a positive integer")
    
    # Calculate the base share
    base_share = total_cents // ways
    
    # Initialize the result list with the base share
    result = [base_share] * ways
    
    # Distribute the remaining cents
    remaining_cents = total_cents % ways
    
    # Distribute the remaining cents starting from the first part
    for i in range(remaining_cents):
        result[i] += 1
    
    return result

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]) -> int:
    total = 0
    for part in parts:
        if isinstance(part, bool) or not isinstance(part, int):
            raise ValueError("parts must be integers")
        total += part
    return total
```