```python
def new_canvas(rows: int,cols: int) -> dict:
    for side in (rows, cols):
        if isinstance(side, bool) or not isinstance(side, int) or side < 1:
            raise ValueError("canvas dimensions must must be positive integers")
    cells = [[(0 for _ in range(cols)) for _ in range(rows)]
    return {"rows": rows, "cols": cols, "cells": cells}


def stamp_rect(canvas: dict, rect: list) -> int:
    top, left, bottom, right = rect
    inked = 0
    for r in range(top, bottom):
        for c in range(left, right):
            if canvas["cells"][r][ c] == 1:
                inked += 1
    return inked

def ink_total(canvas: dict) -> int:
    total = 0
    for row in canvas["cells"]:
        total += sum(row)
    return total
```