```ts
export function groupTotals(
  rows: Array<Record<string, unknown>>,
  key: string,
  field: string,
): Array<[string, number]> {
  if (!Array.isArray(rows)) {
    throw new Error("Invalid input: 'rows' must be an array");
  }

  const totals: Record<string, number> = {};

  for (const row of rows) {
    if (typeof row[key] !== 'string') {
      throw new Error(`Invalid row: label must be a string`);
    }
    if (!Number.isInteger(row[field])) {
      throw new Error(`Invalid row: amount must be an integer`);
    }

    const label = String(row[key]);
    const amount = Number(row[field]);

    if (totals[label] !== undefined) {
      totals[label] += amount;
    } else {
      totals[label] = amount;
    }
  }

  return Object.entries(totals)
    .sort((a, b) => {
      if (b[1] === a[1]) {
        return a[0].localeCompare(b[0]);
      }
      return b[1] - a[1];
    });
}
```