// Gedeelde bron voor de uitbouwdekking in de UI: combineert de seed-modellen
// met de gebruikersmodellen uit de opslag en berekent daaruit de dekking en de
// samenvatting. Gebruikt door /gouden-paden en /voortgang, zodat beide pagina's
// gegarandeerd naar dezelfde live stand kijken.

import { useMemo } from "react";
import { combineerMetSeed, seedModellen, type Modeldocument } from "@/data/modeldocumenten";
import { seedBrieven } from "@/data/modelbrieven";
import {
  bepaalUitbouwDekking,
  samenvattingUitbouwDekking,
  type UitbouwDekking,
  type UitbouwSamenvatting,
} from "@/lib/dossier/uitbouw";
import { useModeldocumentenStorage } from "@/lib/hooks/useModeldocumentenStorage";

export function useUitbouwDekking(): {
  dekking: UitbouwDekking;
  samenvatting: UitbouwSamenvatting;
  /** Seed- én gebruikersmodellen samen — dezelfde verzameling waarop de dekking is berekend. */
  modellen: Modeldocument[];
} {
  const opslag = useModeldocumentenStorage();
  const alleModellen = useMemo(
    () => combineerMetSeed(seedModellen, opslag.gebruikersModellen),
    [opslag.gebruikersModellen]
  );
  const dekking = useMemo(
    () => bepaalUitbouwDekking({ modellen: alleModellen, brieven: seedBrieven }),
    [alleModellen]
  );
  const samenvatting = useMemo(() => samenvattingUitbouwDekking(dekking), [dekking]);
  return { dekking, samenvatting, modellen: alleModellen };
}
