```python
def check_manifest(line: dict) -> dict:
    if not all(k in line for k in ('sku', 'count', 'note')):
        raise ValueError("Manifest must contain 'sku', 'count', and 'note'")
    
    sku = line.get('sku', '').strip()
    if not sku:
        raise ValueError("SKU cannot be empty")
    
    try:
        count = int(line['count'])
        if count <= 0:
            raise ValueError("Count must be a positive whole number")
    except ValueError:
        raise ValueError("Count must be a positive whole number")
    
    note = line.get('note', '')
    if not isinstance(note, str):
        raise ValueError("Note must be a string")
    
    return {'sku': sku, 'count': count, 'note': note}
```