import type { StatischeWet, Thema } from "./types";

// federaal
import burgerlijkWetboek from "./federaal/burgerlijk-wetboek.json";
import hypotheekwet from "./federaal/hypotheekwet.json";
import organiekeNotariswet from "./federaal/organieke-notariswet.json";
import antiwitwaswet from "./federaal/antiwitwaswet.json";
import wetboekIpr from "./federaal/wetboek-ipr.json";
import wetboekVennootschappen from "./federaal/wetboek-vennootschappen.json";
import gerechtelijkWetboek from "./federaal/gerechtelijk-wetboek.json";
import wetHypothecairKrediet from "./federaal/wet-hypothecair-krediet.json";
import bwVmeInformatieplicht from "./federaal/bw-vme-informatieplicht.json";
import areiRgieElektrisch from "./federaal/arei-rgie-elektrisch.json";
import kbBouwplaatsenPid from "./federaal/kb-bouwplaatsen-pid.json";
import tariefbesluit from "./federaal/tariefbesluit.json";
import wetBreyne from "./federaal/wet-breyne.json";
import pachtwet from "./federaal/pachtwet.json";
import handelshuurwet from "./federaal/handelshuurwet.json";
import wib92 from "./federaal/wib92.json";
import erfpachtOpstal from "./federaal/erfpacht-opstal.json";
import werBoekXx from "./federaal/wer-boek-xx.json";
import avgGdpr from "./federaal/avg-gdpr.json";

// vlaanderen
import vlaamseCodexFiscaliteit from "./vlaanderen/vlaamse-codex-fiscaliteit.json";
import vlaamseCodexRo from "./vlaanderen/vlaamse-codex-ro.json";
import decreetGrondPandenbeleid from "./vlaanderen/decreet-grond-pandenbeleid.json";
import bodemdecreet from "./vlaanderen/bodemdecreet.json";
import energiebesluitEpc from "./vlaanderen/energiebesluit-epc.json";
import materialendecreetAsbest from "./vlaanderen/materialendecreet-asbest.json";
import energiedecreetRenovatie from "./vlaanderen/energiedecreet-renovatie.json";
import vlaamsHuurdecreet from "./vlaanderen/vlaams-huurdecreet.json";
import vlaamseWooncode from "./vlaanderen/vlaamse-wooncode.json";
import decreetOnroerendErfgoed from "./vlaanderen/decreet-onroerend-erfgoed.json";

// brussel
import cobat from "./brussel/cobat.json";
import bodemordonnantie from "./brussel/bodemordonnantie.json";
import cobraceEpc from "./brussel/cobrace-epc.json";
import codeDroitsSuccessionBruxelles from "./brussel/code-droits-succession-bruxelles.json";
import ordonnantieWoninghuurBrussel from "./brussel/ordonnantie-woninghuur-brussel.json";

// wallonie
import codt from "./wallonie/codt.json";
import decreetSols from "./wallonie/decreet-sols.json";
import decreetPeb from "./wallonie/decreet-peb.json";
import cwfErfbelasting from "./wallonie/cwf-erfbelasting.json";
import codeWallonLogement from "./wallonie/code-wallon-logement.json";

export const wetten: StatischeWet[] = [
  burgerlijkWetboek as unknown as StatischeWet,
  hypotheekwet as unknown as StatischeWet,
  organiekeNotariswet as unknown as StatischeWet,
  antiwitwaswet as unknown as StatischeWet,
  wetboekIpr as unknown as StatischeWet,
  wetboekVennootschappen as unknown as StatischeWet,
  gerechtelijkWetboek as unknown as StatischeWet,
  wetHypothecairKrediet as unknown as StatischeWet,
  bwVmeInformatieplicht as unknown as StatischeWet,
  areiRgieElektrisch as unknown as StatischeWet,
  kbBouwplaatsenPid as unknown as StatischeWet,
  vlaamseCodexFiscaliteit as unknown as StatischeWet,
  vlaamseCodexRo as unknown as StatischeWet,
  decreetGrondPandenbeleid as unknown as StatischeWet,
  bodemdecreet as unknown as StatischeWet,
  energiebesluitEpc as unknown as StatischeWet,
  materialendecreetAsbest as unknown as StatischeWet,
  energiedecreetRenovatie as unknown as StatischeWet,
  cobat as unknown as StatischeWet,
  bodemordonnantie as unknown as StatischeWet,
  cobraceEpc as unknown as StatischeWet,
  codt as unknown as StatischeWet,
  decreetSols as unknown as StatischeWet,
  decreetPeb as unknown as StatischeWet,
  tariefbesluit as unknown as StatischeWet,
  wetBreyne as unknown as StatischeWet,
  pachtwet as unknown as StatischeWet,
  handelshuurwet as unknown as StatischeWet,
  wib92 as unknown as StatischeWet,
  erfpachtOpstal as unknown as StatischeWet,
  werBoekXx as unknown as StatischeWet,
  avgGdpr as unknown as StatischeWet,
  vlaamsHuurdecreet as unknown as StatischeWet,
  vlaamseWooncode as unknown as StatischeWet,
  decreetOnroerendErfgoed as unknown as StatischeWet,
  codeDroitsSuccessionBruxelles as unknown as StatischeWet,
  ordonnantieWoninghuurBrussel as unknown as StatischeWet,
  cwfErfbelasting as unknown as StatischeWet,
  codeWallonLogement as unknown as StatischeWet,
];

export * from "./types";

export const themas = [...new Set(wetten.flatMap((w) => w.themas))] as Thema[];
