import type { ParticipantId } from '../types'; /** * Splits amountCents equally among participantIds. Any remainder cents (from * integer division) go one-each to the first participants in the given * order, so the shares always sum exactly back to amountCents. */ export function computeSplit( amountCents: number, participantIds: ParticipantId[], ): Record { if (participantIds.length === 0) { throw new Error('computeSplit requires at least one participant'); } const base = Math.floor(amountCents / participantIds.length); const remainder = amountCents - base * participantIds.length; const shares: Record = {}; participantIds.forEach((id, index) => { shares[id] = base + (index < remainder ? 1 : 0); }); return shares; }