```ts
export function dealPacket(items: string[], seats: number[], order: string): Record<string, unknown> {
  if (!Array.isArray(items)) throw new Error("Packet must be a list.");
  if (items.some(item => typeof item !== 'string' || item === '')) {
    throw new Error("Each packet item must be a non-empty string.");
  }
  if (new Set(items).size !== items.length) throw new Error("Packet contains duplicate entries.");

  if (!Array.isArray(seats) || seats.length === 0) {
    throw new Error("Limits must be a non-empty list.");
  }
  if (seats.some(limit => typeof limit !== 'number' || limit <= 0)) {
    throw new Error("Each limit must be a whole number above zero.");
  }

  if (!["round", "reverse", "snake"].includes(order)) {
    throw new Error("Turn sequence must be one of 'round', 'reverse', or 'snake'.");
  }

  const hands: string[][] = Array(seats.length).fill(null).map(() => []);
  let handIndex = 0;
  let direction = 1;

  for (const item of items) {
    while (seats[handIndex] === 0) {
      handIndex = (handIndex + direction) % seats.length;
    }
    hands[handIndex].push(item);
    seats[handIndex]--;
    if (order === "round") {
      handIndex = (handIndex + 1) % seats.length;
    } else if (order === "reverse") {
      handIndex = (handIndex - 1 + seats.length) % seats.length;
    } else if (order === "snake") {
      if (handIndex === 0 || handIndex === seats.length - 1) {
        direction *= -1;
      }
      handIndex += direction;
    }
  }

  const left = items.filter(item => !hands.flat().includes(item));
  return { hands, left };
}
```