```python
def stamp_build(major: int, minor: int, patch: int) -> int:
    if not isinstance(major, int) or major < 0:
        raise ValueError("Major component must be a non-negative integer")
    if not isinstance(minor, int) or minor < 0:
        raise ValueError("Minor component must be a non-negative integer")
    if not isinstance(patch, int) or patch < 0:
        raise ValueError("Patch component must be a non-negative integer")

    if major == 0 and minor == 0 and patch == 0:
        return 0

    stamp = patch
    stamp += 1000 * minor
    stamp += 1000000 * major

    return stamp
```