```ts
export function explodeKit(catalog: Record<string, { makes: number; parts: [string, number][] }>, kit: string, want: number): Record<string, number> {
  if (!catalog[kit]) throw new Error(`Unknown kit: ${kit}`);

  const basePartsConsumed: Record<string, number> = {};

  function getBasePartCount(kitName: string, wantUnits: number): number {
    const { makes, parts } = catalog[kitName];

    let runs = Math.ceil(wantUnits / makes);
    let totalConsumed = 0;

    for (const [partName, partCount] of parts) {
      if (catalog[partName]) {
        totalConsumed += getBasePartCount(partName, wantUnits * partCount);
      } else {
        basePartsConsumed[partName] = (basePartsConsumed[partName] || 0) + wantUnits * partCount;
      }
    }

    return totalConsumed;
  }

  getBasePartCount(kit, want);

  return basePartsConsumed;
}
```