```python
from typing import List

def region_totals(grid: List[List[int]], queries: List[List[int]]) -> List[int]:
    if not isinstance(grid, list) or not grid:
        raise ValueError("grid must be a non-empty list of rows")
    width = len(grid[0]) if isinstance(grid[0], list) else 0
    if width == 0:
        raise ValueError("rows must be non-empty lists")
    for row in grid:
        if not isinstance(row, list) or len(row) != width:
            raise ValueError("rows must all share one length")
        for cell in row:
            if isinstance(cell, bool) or not isinstance(cell, int):
                raise ValueError("cells must be integers")
    # Build a prefix-sum table over the grid
    prefix_sum = [[0 for _ in range(width)] for _ in range(len(grid))]
    for i in range(len(grid)):
        for j in range(width):
            prefix_sum[i][j] = grid[i][j]
            if i > 0:
                prefix_sum[i][j] += prefix_sum[i - 1][j]
            if j > 0:
                prefix_sum[i][j] += prefix_sum[i][j - 1]
            if i > 0 and j > 0:
                prefix_sum[i][j] -= prefix_sum[i - 1][j - 1]

    # Validate each query and answer it from the table
    def validate_query(top, left, bottom, right):
        if top >= bottom or left >= right:
            raise ValueError("query must be strictly within the grid")
        return True

    def answer_query(top, left, bottom, right):
        total = 0
        for i in range(top, bottom):
            for j in range(left, right):
                total += prefix_sum[i][j]
        return total

    return [answer_query(top, left, bottom, right) for top, left, bottom, right in queries if validate_query(top, left, bottom, right)]
```