```python
def draw_stock(shelf: dict, order: list) -> dict:
    if not isinstance(shelf, dict) or not isinstance(order, list):
        raise ValueError("Invalid input: shelf must be a dictionary and order must be a list.")

    for item, count in order:
        if not isinstance(item, str) or not isinstance(count, int):
            raise ValueError("Invalid order item or count: item must be a string and count must be an integer.")
        if count <= 0:
            raise ValueError("Invalid order item count: count must be a positive whole number.")

        if item not in shelf:
            raise ValueError(f"Invalid order item: {item} not in the shelf.")

        if shelf[item] < count:
            raise ValueError(f"Invalid order item pull: cannot pull more than {shelf[item]} of {item}.")

        shelf[item] -= count

    return shelf
```