```ts
export function pickLane(queues: number[], closed: number[]): number {
  if (!Array.isArray(queues) || queues.length === 0) {
    throw new Error("Invalid input: queues must be a non-empty list");
  }

  if (typeof queues[0] !== "number") {
    throw new Error("Invalid input: queues must contain only numbers");
  }

  if (!Array.isArray(closed) || closed.length === 0) {
    throw new Error("Invalid input: closed must be a non-empty list");
  }

  if (!closed.every(index => typeof index === "number" && index >= 0)) {
    throw new Error("Invalid input: closed must contain only non-negative integers");
  }

  let best = 0;
  for (let lane = 1; lane < queues.length; lane++) {
    if (queues[lane] <= queues[best] && !closed.includes(lane)) {
      best = lane;
    }
  }
  return best;
}
```