// ── Mock-fixtures voor de externe connectoren (AUT-F3) ───────────────────────
// Realistische maar VOLLEDIG FICTIEVE antwoorden per externe dienst, zodat de
// connector-adapters (AUT-S4 opzoekingen, AUT-S7 formaliteiten) en hun tests
// tegen geloofwaardige data gebouwd kunnen worden vóór de echte API's
// aangesloten zijn (mock-eerst-strategie, AUT-O5).
//
// Ontwerpgrens (bewust): dit zijn INHOUDS-fixtures, geen adapter-contract. De
// envelop (transport, foutmodel, idempotentie, tier-3-poorten) wordt pas in
// AUT-O5 ontworpen; deze payloads verhuizen dan ongewijzigd achter dat
// contract. Houd de vormen daarom vlak en beschrijvend.
//
// GDPR-invariant (bewaakt in fixtures.test.ts): élke fixture draagt
// `fictief: true` en bevat uitsluitend verzonnen personen/nummers. Gebruik
// voor natuurlijke personen enkel de namen "PROEFPERSOON"/"SPECIMEN" en voor
// rijksregisternummers uitsluitend het herkenbaar ongeldige patroon
// "00.00.00-000.xx" — nooit een echt of echt-lijkend nummer.

/** De externe diensten waarvoor de adapters (AUT-S4/S7) gebouwd worden. */
export type ConnectorDienst =
  // Opzoekingen (AUT-S4)
  | "hypothecaire-staat"
  | "kadastraal-uittreksel"
  | "stedenbouwkundige-inlichtingen"
  | "bodemattest"
  | "fiscale-sociale-notificaties"
  | "voorkooprechten"
  // Formaliteiten (AUT-S7)
  | "registratie"
  | "hypothecaire-overschrijving";

/** Eén mock-scenario: een fictieve aanvraag met het bijbehorende antwoord. */
export interface ConnectorFixture<TAanvraag = Record<string, unknown>, TResultaat = Record<string, unknown>> {
  /** Uniek binnen het register: `<dienst>/<scenario>`. */
  id: string;
  dienst: ConnectorDienst;
  /** Kort scenario-label, bv. "blanco", "risicogrond", "met-inschrijving". */
  scenario: string;
  omschrijving: string;
  /** Altijd true — GDPR-invariant, bewaakt door de test. */
  fictief: true;
  aanvraag: TAanvraag;
  resultaat: TResultaat;
}

/** Fictief goed dat alle fixtures delen (consistent over de diensten heen). */
export const FICTIEF_GOED = {
  adres: "Proefstraat 1, 3080 Tervuren",
  gemeente: "Tervuren",
  afdeling: "2e afdeling Tervuren",
  sectie: "C",
  perceelnummer: "0088/00B000",
} as const;

/** Fictieve partijen die alle fixtures delen. */
export const FICTIEVE_PARTIJEN = {
  verkoper: { naam: "PROEFPERSOON", voornaam: "Jan", rijksregisternummer: "00.00.00-000.01" },
  koper: { naam: "SPECIMEN", voornaam: "Sofie", rijksregisternummer: "00.00.00-000.02" },
} as const;
