```ts
/**
 * Seats parties in rows according to the given rules and returns the seating records.
 * @param rows - An array of row lengths.
 * @param parties - An array of party sizes.
 * @returns An array of strings representing the seating or rejection status for each party.
 */
export function seatParties(rows: number[], parties: number[]): string[] {
  if (rows.length === 0) {
    return parties.map(() => "rejected:too_big");
  }

  const rowSeating = rows.map((length) => ({
    length,
    freeSeats: length,
  }));

  return parties.map((partySize) => {
    if (partySize < 1) {
      throw new Error("Party size must be at least 1.");
    }

    for (const row of rowSeating) {
      if (row.freeSeats >= partySize) {
        const seat = row.length - row.freeSeats + 1;
        row.freeSeats -= partySize;
        return `${rows.indexOf(row.length) + 1}-${seat}`;
      }
    }

    const maxRowLength = Math.max(...rows);
    if (partySize > maxRowLength) {
      return "rejected:too_big";
    }

    return "rejected:full";
  });
}
```