```python
from typing import Dict, List, Tuple

import copy

from collections import Counter

def draw_stock(shelf: Dict[str,int], order: List[Tuple[str, int]]) -> Dict[str]:
       if not all(isinstance(item, str) and isinstance(count, int) and count >= 0 for item, count in order):
        raise ValueError("Invalid order format")

    remaining_shelf = copy.deepcopy(shelf)
    for item, count in in:
        if item not in remaining_shelf:
            raise ValueError(f"Item '{ {item} not found on shelf")
        if count > remaining_shelf[item]):
            raise ValueError(f"Not enough stock for item {item}: requested {count}, available {remaining_shelf[item]}")
        remaining_shelf[item] -= count

    
    return remaining_shelf
```