```python
def pick_lane(queues: list, closed: list) -> int:
    if not queues or not all(isinstance(q, int) and q >= 0 for q in queues):
        raise ValueError("Queues must be a non-empty list of non-negative integers.")
    if not all(isinstance(c, int) and 0 <= c < len(queues) for c in closed):
        raise ValueError("Closed lanes must be a list of valid lane indices.")
    if all(lane in closed for lane in range(len(queues))):
        raise ValueError("No open lanes available.")

    best = -1
    for lane in range(len(queues)):
        if lane not in closed and (best == -1 or queues[lane] < queues[best]):
            best = lane
    return best
```