import { threadId } from 'node:worker_threads';
import { performance } from 'node:perf_hooks';
export function compute({ rounds = 10_000_000, seed = 7 } = {}) {
 if (!Number.isSafeInteger(rounds) || rounds < 1 || rounds > 200_000_000) throw new RangeError('rounds: 1..200000000');
 const start=performance.now(); let checksum=seed|0;
 for(let i=0;i<rounds;i++) checksum=Math.imul(checksum ^ i,1664525)+1013904223|0;
 return {checksum,rounds,threadId,computeMs:performance.now()-start};
}
export function sumBuffer({buffer}) {
 if(!(buffer instanceof ArrayBuffer)||buffer.byteLength>16*1024*1024) throw new TypeError('ArrayBuffer <=16MiB required');
 const a=new Uint8Array(buffer);let sum=0;for(const n of a)sum+=n;return {sum,bytes:a.length,threadId};
}
export function summarize({values}) {
 if(!Array.isArray(values)||values.length>10000||values.some(n=>!Number.isFinite(n)))throw new TypeError('Finite values required');
 return {count:values.length,sum:values.reduce((a,b)=>a+b,0),threadId};
}
export function fail() { throw new Error('DEMO_TASK_ERROR'); }
export default compute;
