```python
def jar_balances(topup: int, lid: int, outflows: list) -> list:
    if not isinstance(outflows, list):
        raise ValueError("outflows must be a list")
    for value in [topup, lid] + outflows:
        if not isinstance(value, int) or value < 0:
            raise ValueError("all inputs must be non-negative integers")

    balances = []
    current_balance = topup

    for outflow in outflows:
        current_balance -= outflow
        balances.append(min(current_balance, lid))

    return balances
```