```ts
// solution.ts

export function cellName(row: number, column: number): string {
  if (row < 0 || column < 0) {
    throw new Error('Row and column indices must be non-negative');
  }

  let result = '';
  for (let c = column; c >= 0; --c) {
    const digit = c % 26;
    const letter = String.fromCharCode(digit + 'A'.charCodeAt(0));
    result = letter + result;
  }

  return result + String(row + 1);
}

export function gridCells(rows: number, columns: number): string[] {
  if (rows < 0 || columns < 0) {
    throw new Error('Rows and columns must be non-negative');
  }

  const cells = [];
  for (let r = 0; r < rows; ++r) {
    for (let c = 0; c < columns; ++c) {
      cells.push(cellName(r, c));
    }
  }

  return cells;
}
```