import type { Gewest } from "@/lib/context/gewest";

export type Verplichting = "verplicht" | "aanbevolen" | "optioneel";

export interface WetRef {
  wetId: string;
  artikelId: string;
  label: string;
}

export interface Opzoekingsvereiste {
  id: string;
  naam: string;
  beschrijving: string;
  verplichting: Verplichting;
  gewesten?: Gewest[];
  notitie?: string;
  wetRefs?: WetRef[];
}

export interface Rechtshandeling {
  id: string;
  naam: string;
  categorie: string;
  opzoekingen: Opzoekingsvereiste[];
}

export const rechtshandelingen: Rechtshandeling[] = [
  {
    id: "verkoop",
    naam: "Verkoop van onroerend goed",
    categorie: "Overdracht",
    opzoekingen: [
      {
        id: "hyp-attest",
        naam: "Hypotheekattest",
        beschrijving: "Hypothecaire toestand van het goed (lasten, inschrijvingen, mandaten)",
        verplichting: "verplicht",
        wetRefs: [
          { wetId: "hypotheekwet", artikelId: "hw-75", label: "HW art. 75 — Inschrijving" },
          { wetId: "hypotheekwet", artikelId: "hw-125", label: "HW art. 125 — Overschrijving" },
        ],
      },
      {
        id: "kad-uittreksel",
        naam: "Kadastraal uittreksel",
        beschrijving: "Officiële omschrijving van het perceel, oppervlakte en ligging",
        verplichting: "verplicht",
        wetRefs: [
          { wetId: "burgerlijk-wetboek", artikelId: "bw-3-17", label: "BW art. 3.17 — Eigendomsrecht" },
        ],
      },
      {
        id: "stedenbouw",
        naam: "Stedenbouwkundige inlichtingen",
        beschrijving: "Vergunningen, overtredingen, voorkooprechten, rooilijnen",
        verplichting: "verplicht",
        wetRefs: [
          { wetId: "vcro", artikelId: "vcro-5-3-1", label: "VCRO art. 5.3.1 — Stedenbouwkundige inl." },
        ],
      },
      {
        id: "bodem-vl",
        naam: "Bodemattest (OVAM)",
        beschrijving: "Verklaring over gekende bodemverontreiniging van het perceel",
        verplichting: "verplicht",
        gewesten: ["Vlaanderen"],
        wetRefs: [
          { wetId: "bodemdecreet", artikelId: "bodem-101", label: "BodD art. 101 — Verplichting" },
        ],
      },
      {
        id: "bodem-wal",
        naam: "Bodemattest (SPAQuE/BDES)",
        beschrijving: "Verklaring over gekende bodemverontreiniging",
        verplichting: "verplicht",
        gewesten: ["Wallonië"],
        wetRefs: [{ wetId: "decreet-sols-wa", artikelId: "sols-art31", label: "Décret sols art. 31 — BDES uittreksel" }],
      },
      {
        id: "bodem-bxl",
        naam: "Bodemattest (Leefmilieu Brussel)",
        beschrijving: "Verklaring over gekende bodemverontreiniging",
        verplichting: "verplicht",
        gewesten: ["Brussel"],
        wetRefs: [{ wetId: "bodemordonnantie-bxl", artikelId: "bodem-bxl-art12", label: "BodemOrd. BXL art. 12 — Bodemattest" }],
      },
      {
        id: "beslag",
        naam: "Beslag- en uitwinningsregister",
        beschrijving: "Controle op beslagen en procedures op het goed of de eigenaar",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "gerechtelijk-wetboek-beslag", artikelId: "gw-1394", label: "GW art. 1394 — Uitvoerend beslag onroerend goed" }],
      },
      {
        id: "epc",
        naam: "EPC (Energieprestatiecertificaat)",
        beschrijving: "Verplicht bij overdracht van woningen en appartementen",
        verplichting: "verplicht",
        notitie: "Moet niet ouder zijn dan 10 jaar (Vl.), 5 jaar (Wal.) of 10 jaar (Bxl.)",
        wetRefs: [
          { wetId: "energiedecreet-epc", artikelId: "epc-6-1-1", label: "EPC art. 6.1.1 — Verplichting" },
        ],
      },
      {
        id: "overstromings-vl",
        naam: "Overstromingsgevoeligheidsattest",
        beschrijving: "P-score en G-score van het perceel",
        verplichting: "verplicht",
        gewesten: ["Vlaanderen"],
      },
      {
        id: "as-built",
        naam: "As-built attest",
        beschrijving: "Verklaring dat de woning conform de vergunde plannen is gebouwd",
        verplichting: "aanbevolen",
        gewesten: ["Vlaanderen"],
      },
      {
        id: "elektriciteit",
        naam: "Keuring elektrische installatie",
        beschrijving: "Keuringsverslag van de elektrische installatie (vóór 1/10/1981)",
        verplichting: "verplicht",
        notitie: "Verplicht voor woningen waarvan de installatie dateert van vóór 1 oktober 1981",
        wetRefs: [{ wetId: "arei-rgie-elektrisch", artikelId: "arei-8-4-2", label: "AREI/RGIE art. 8.4.2 — Elektrische keuring bij verkoop" }],
      },
      {
        id: "stookolietank",
        naam: "Keuringsattest stookolietank",
        beschrijving: "Controle en conformiteitsattest van de stookolietank indien aanwezig",
        verplichting: "optioneel",
        notitie: "Verplicht indien aanwezig in Vlaanderen en Brussel",
      },
      {
        id: "brandverzekering",
        naam: "Brandverzekeringsattest",
        beschrijving: "Bewijs dat het goed is verzekerd tegen brand",
        verplichting: "aanbevolen",
      },
      {
        id: "preemptie",
        naam: "Voorkooprecht check",
        beschrijving: "Controle of een voorkooprecht van toepassing is (gemeente, Vlaamse Grondenbank, ...)",
        verplichting: "verplicht",
        wetRefs: [
          { wetId: "vcro", artikelId: "vcro-2-4-1", label: "VCRO art. 2.4.1 — Recht van voorkoop" },
          { wetId: "decreet-grond-panden", artikelId: "dgp-2-1", label: "DGP art. 2.1.2 — Vlaamse Grondenbank" },
        ],
      },
    ],
  },
  {
    id: "schenking-onroerend",
    naam: "Schenking van onroerend goed",
    categorie: "Schenking",
    opzoekingen: [
      {
        id: "hyp-attest",
        naam: "Hypotheekattest",
        beschrijving: "Hypothecaire toestand van het goed",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "hypotheekwet", artikelId: "hw-75", label: "HW art. 75 — Inschrijving hypotheek" }, { wetId: "hypotheekwet", artikelId: "hw-125", label: "HW art. 125 — Overschrijving" }],
      },
      {
        id: "kad-uittreksel",
        naam: "Kadastraal uittreksel",
        beschrijving: "Officiële omschrijving van het perceel",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "burgerlijk-wetboek", artikelId: "bw-3-17", label: "BW art. 3.17 — Eigendomsrecht" }],
      },
      {
        id: "stedenbouw",
        naam: "Stedenbouwkundige inlichtingen",
        beschrijving: "Vergunningen, overtredingen, rooilijnen",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "vcro", artikelId: "vcro-5-3-1", label: "VCRO art. 5.3.1 — Stedenbouwkundige inl." }],
      },
      {
        id: "bodem-vl",
        naam: "Bodemattest (OVAM)",
        beschrijving: "Verklaring over gekende bodemverontreiniging",
        verplichting: "verplicht",
        gewesten: ["Vlaanderen"],
        wetRefs: [{ wetId: "bodemdecreet", artikelId: "bodem-101", label: "BodD art. 101 — Bodemattest OVAM" }],
      },
      {
        id: "beslag",
        naam: "Beslag- en uitwinningsregister",
        beschrijving: "Controle op beslagen op de schenker",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "gerechtelijk-wetboek-beslag", artikelId: "gw-1394", label: "GW art. 1394 — Uitvoerend beslag" }],
      },
      {
        id: "epc",
        naam: "EPC (Energieprestatiecertificaat)",
        beschrijving: "Verplicht bij overdracht van woningen",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "energiedecreet-epc", artikelId: "epc-6-1-1", label: "EPC art. 6.1.1 — Verplichting bij overdracht" }],
      },
      {
        id: "preemptie",
        naam: "Voorkooprecht check",
        beschrijving: "Controle op van toepassing zijnde voorkooprechten",
        verplichting: "aanbevolen",
        notitie: "Afhankelijk van het type goed en locatie",
        wetRefs: [{ wetId: "vcro", artikelId: "vcro-2-4-1", label: "VCRO art. 2.4.1 — Recht van voorkoop" }, { wetId: "decreet-grond-panden", artikelId: "dgp-2-1", label: "DGP art. 2.1.2 — Vlaamse Grondenbank" }],
      },
    ],
  },
  {
    id: "hypotheek",
    naam: "Hypotheekvestiging",
    categorie: "Zekerheidsrecht",
    opzoekingen: [
      {
        id: "hyp-attest",
        naam: "Hypotheekattest",
        beschrijving: "Actuele hypothecaire toestand — welke lasten zijn er al?",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "hypotheekwet", artikelId: "hw-1", label: "HW art. 1 — Definitie hypotheek" }, { wetId: "hypotheekwet", artikelId: "hw-75", label: "HW art. 75 — Inschrijving" }, { wetId: "hypotheekwet", artikelId: "hw-94", label: "HW art. 94 — Rangregeling" }],
      },
      {
        id: "kad-uittreksel",
        naam: "Kadastraal uittreksel",
        beschrijving: "Identificatie van het te hypothekeren goed",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "burgerlijk-wetboek", artikelId: "bw-3-17", label: "BW art. 3.17 — Eigendomsrecht" }],
      },
      {
        id: "stedenbouw",
        naam: "Stedenbouwkundige inlichtingen",
        beschrijving: "Eventuele stedenbouwkundige overtredingen die de waarde beïnvloeden",
        verplichting: "aanbevolen",
        wetRefs: [{ wetId: "vcro", artikelId: "vcro-5-3-1", label: "VCRO art. 5.3.1 — Stedenbouwkundige inl." }],
      },
      {
        id: "beslag",
        naam: "Beslag- en uitwinningsregister",
        beschrijving: "Controle op beslagen op de hypotheekgever",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "gerechtelijk-wetboek-beslag", artikelId: "gw-1394", label: "GW art. 1394 — Uitvoerend beslag" }],
      },
      {
        id: "schattingsverslag",
        naam: "Schattingsverslag",
        beschrijving: "Waardebepaling door een beëdigd schatter (vaak door de bank gevraagd)",
        verplichting: "aanbevolen",
        notitie: "Vereist door kredietgever, niet door de notariswet",
      },
    ],
  },
  {
    id: "nalatenschap",
    naam: "Aanvaarding nalatenschap / akte van erfopvolging",
    categorie: "Erfrecht",
    opzoekingen: [
      {
        id: "hyp-attest",
        naam: "Hypotheekattest",
        beschrijving: "Hypothecaire toestand van onroerende goederen in de nalatenschap",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "hypotheekwet", artikelId: "hw-75", label: "HW art. 75 — Inschrijving" }, { wetId: "hypotheekwet", artikelId: "hw-125", label: "HW art. 125 — Overschrijving" }],
      },
      {
        id: "kad-uittreksel",
        naam: "Kadastraal uittreksel",
        beschrijving: "Lijst van alle kadastrale percelen op naam van de overledene",
        verplichting: "verplicht",
      },
      {
        id: "beslag",
        naam: "Beslag- en uitwinningsregister",
        beschrijving: "Controle op beslagen op de overledene of de nalatenschap",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "gerechtelijk-wetboek-beslag", artikelId: "gw-1394", label: "GW art. 1394 — Beslag" }],
      },
      {
        id: "akten-bs",
        naam: "Akten burgerlijke stand",
        beschrijving: "Overlijdensakte, huwelijksakte(n), geboorteakten van erfgenamen",
        verplichting: "verplicht",
      },
      {
        id: "rijksregister",
        naam: "Rijksregisteruittreksel",
        beschrijving: "Actuele gegevens van overledene en erfgenamen",
        verplichting: "verplicht",
      },
      {
        id: "testament",
        naam: "Testamentopzoeking (CRT)",
        beschrijving: "Controle Centraal Register Testamenten op eventuele uiterste wilsbeschikkingen",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "organieke-notariswet", artikelId: "wnot-68", label: "WNot art. 68 — Minuutbewaring" }],
      },
      {
        id: "huwelijkscontract",
        naam: "Huwelijkscontract / echtscheidingsakten",
        beschrijving: "Bepaling van het toepasselijke huwelijksvermogensstelsel",
        verplichting: "verplicht",
        notitie: "Controle via Centraal Register Huwelijksovereenkomsten (CRH)",
        wetRefs: [{ wetId: "wipr", artikelId: "wipr-46", label: "WIPR art. 46 — Huwelijksvermogensstelsel" }],
      },
    ],
  },
  {
    id: "verdeling",
    naam: "Verdeling van onroerend goed",
    categorie: "Verdeling",
    opzoekingen: [
      {
        id: "hyp-attest",
        naam: "Hypotheekattest",
        beschrijving: "Hypothecaire toestand van alle te verdelen goederen",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "hypotheekwet", artikelId: "hw-75", label: "HW art. 75 — Inschrijving" }, { wetId: "hypotheekwet", artikelId: "hw-125", label: "HW art. 125 — Overschrijving" }],
      },
      {
        id: "kad-uittreksel",
        naam: "Kadastraal uittreksel",
        beschrijving: "Officiële omschrijving van alle percelen",
        verplichting: "verplicht",
      },
      {
        id: "stedenbouw",
        naam: "Stedenbouwkundige inlichtingen",
        beschrijving: "Vergunningen en overtredingen op de te verdelen goederen",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "vcro", artikelId: "vcro-5-3-1", label: "VCRO art. 5.3.1 — Stedenbouwkundige inl." }],
      },
      {
        id: "bodem-vl",
        naam: "Bodemattest (OVAM)",
        beschrijving: "Verklaring over gekende bodemverontreiniging",
        verplichting: "verplicht",
        gewesten: ["Vlaanderen"],
      },
      {
        id: "beslag",
        naam: "Beslag- en uitwinningsregister",
        beschrijving: "Controle op alle deelgenoten",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "gerechtelijk-wetboek-beslag", artikelId: "gw-1638", label: "GW art. 1638 — Rangregeling schuldeisers" }],
      },
      {
        id: "schatter",
        naam: "Schattingsverslag",
        beschrijving: "Waardebepaling door een beëdigd schatter",
        verplichting: "aanbevolen",
        notitie: "Aanbevolen bij betwisting of onzekerheid over de waarde",
      },
    ],
  },
  {
    id: "appartement",
    naam: "Verkoop appartement (mede-eigendom)",
    categorie: "Overdracht",
    opzoekingen: [
      {
        id: "hyp-attest",
        naam: "Hypotheekattest",
        beschrijving: "Hypothecaire toestand van het appartement",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "hypotheekwet", artikelId: "hw-75", label: "HW art. 75 — Inschrijving" }, { wetId: "hypotheekwet", artikelId: "hw-125", label: "HW art. 125 — Overschrijving" }],
      },
      {
        id: "kad-uittreksel",
        naam: "Kadastraal uittreksel",
        beschrijving: "Identificatie van het kavel en de gemeenschappelijke delen",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "burgerlijk-wetboek", artikelId: "bw-3-17", label: "BW art. 3.17 — Eigendomsrecht" }],
      },
      {
        id: "stedenbouw",
        naam: "Stedenbouwkundige inlichtingen",
        beschrijving: "Vergunningen op het volledige gebouw",
        verplichting: "verplicht",
      },
      {
        id: "bodem-vl",
        naam: "Bodemattest (OVAM)",
        beschrijving: "Verklaring over gekende bodemverontreiniging van het terrein",
        verplichting: "verplicht",
        gewesten: ["Vlaanderen"],
        wetRefs: [{ wetId: "bodemdecreet", artikelId: "bodem-101", label: "BodD art. 101 — Bodemattest OVAM" }],
      },
      {
        id: "beslag",
        naam: "Beslag- en uitwinningsregister",
        beschrijving: "Controle op de verkoper",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "gerechtelijk-wetboek-beslag", artikelId: "gw-1394", label: "GW art. 1394 — Beslag" }],
      },
      {
        id: "epc",
        naam: "EPC (Energieprestatiecertificaat)",
        beschrijving: "EPC van het appartement",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "energiedecreet-epc", artikelId: "epc-6-1-1", label: "EPC art. 6.1.1 — Verplichting bij overdracht" }],
      },
      {
        id: "vve-documenten",
        naam: "VME-documenten (mede-eigendom)",
        beschrijving: "Notulen laatste 3 AV, staat van de reserves, openstaande schulden, toekomstige kosten",
        verplichting: "verplicht",
        notitie: "Verplicht conform BW art. 3.107: werkkapitaal, reservekapitaal, schulden, notulen 3 jaar",
        wetRefs: [
          { wetId: "bw-mede-eigendom-overdracht", artikelId: "bw-3-107", label: "BW art. 3.107 — VME-informatieplicht" },
          { wetId: "bw-mede-eigendom-overdracht", artikelId: "bw-3-90-5", label: "BW art. 3.90 — Werkkapitaal/reservekapitaal" },
        ],
      },
      {
        id: "conformiteitsattest",
        naam: "Conformiteitsattest",
        beschrijving: "Attest van conformiteit met woningkwaliteitsnormen",
        verplichting: "aanbevolen",
        gewesten: ["Vlaanderen"],
        wetRefs: [{ wetId: "vlaamse-wooncode", artikelId: "vlaamse-wooncode-art-15", label: "VWC art. 15 — Conformiteitsattest" }],
      },
      {
        id: "elektriciteit",
        naam: "Keuring elektrische installatie",
        beschrijving: "Keuringsverslag elektrische installatie van het appartement",
        verplichting: "verplicht",
      },
    ],
  },
  {
    id: "erfpacht-opstal",
    naam: "Vestiging erfpacht of opstalrecht",
    categorie: "Zakelijk recht",
    opzoekingen: [
      {
        id: "hyp-attest",
        naam: "Hypotheekattest",
        beschrijving: "Hypothecaire toestand van het betrokken goed",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "hypotheekwet", artikelId: "hw-75", label: "HW art. 75 — Inschrijving" }],
      },
      {
        id: "kad-uittreksel",
        naam: "Kadastraal uittreksel",
        beschrijving: "Identificatie van het betrokken perceel",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "burgerlijk-wetboek", artikelId: "bw-3-17", label: "BW art. 3.17 — Eigendomsrecht" }],
      },
      {
        id: "stedenbouw",
        naam: "Stedenbouwkundige inlichtingen",
        beschrijving: "Bestemmingsplan en bouwmogelijkheden op het terrein",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "vcro", artikelId: "vcro-5-3-1", label: "VCRO art. 5.3.1 — Stedenbouwkundige inl." }],
      },
      {
        id: "bodem-vl",
        naam: "Bodemattest (OVAM)",
        beschrijving: "Verklaring over gekende bodemverontreiniging",
        verplichting: "verplicht",
        gewesten: ["Vlaanderen"],
        wetRefs: [{ wetId: "bodemdecreet", artikelId: "bodem-101", label: "BodD art. 101 — Bodemattest OVAM" }],
      },
      {
        id: "beslag",
        naam: "Beslag- en uitwinningsregister",
        beschrijving: "Controle op de grondeigenaar",
        verplichting: "verplicht",
        wetRefs: [{ wetId: "gerechtelijk-wetboek-beslag", artikelId: "gw-1394", label: "GW art. 1394 — Beslag" }],
      },
    ],
  },
];

export const categorieen = [...new Set(rechtshandelingen.map((r) => r.categorie))];
