```ts
export function cutRoll(length: number, board: [number, number][]): Cut {
  if (typeof length !== 'number' || !Number.isInteger(length) || length < 0) {
    throw new Error('Length must be a non-negative integer');
  }

  const pieces = board.sort((a, b) => a[0] - b[0]);
  let takings = 0;
  let bestPieces: [number, number][] = [];

  function canFit(piece: [number, number]): boolean {
    return piece[0] <= length;
  }

  for (let i = pieces.length - 1; i >= 0; i--) {
    const piece = pieces[i];
    if (canFit(piece)) {
      takings += piece[1];
      bestPieces.push(piece);
      length -= piece[0];
    }
  }

  return { takings, pieces: bestPieces };
}
```