```python
def base_amount(amount: int, unit: str, defs: dict, base: str) -> int:
    if isinstance(amount, bool) or not isinstance(amount, int) or amount < 0:
        raise ValueError("amount must be a non-negative integer")

    if unit == base:
        return amount

    if unit not in defs:
        raise ValueError(f"unknown unit: {unit}")

    current_unit = unit
    while True:
        factor, finer = defs[current_unit]
        if not isinstance(factor, int) or factor <= 0:
            raise ValueError(f"bad factor for unit {current_unit}: {factor}")
        amount *= factor
        current_unit = finer
        if current_unit == base:
            break
        if current_unit not in defs:
            raise ValueError(f"chain loops for unit {unit}")

    return amount
```