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 }