```ts
export function formatBits(value: number, width: number): string {
    if (!Number.isInteger(value) || value < 0) {
        throw new Error("Value must be a non-negative integer.");
    }
    
    if (width % 4 !== 0 || width <= 0 || width > 32) {
        throw new Error("Width must be a positive multiple of four and less than or equal to 32.");
    }

    const binaryString = value.toString(2);
    const paddedBinary = binaryString.padStart(width, '0');

    let formattedBits = '';
    for (let i = 0; i < width; i += 4) {
        formattedBits += paddedBinary.substring(i, i + 4) + ' ';
    }

    return formattedBits.trim();
}
```