import { AppRouter } from "@ibcornelsen/api";
import { Benutzer, GebaeudeBilder } from "@ibcornelsen/database/client";
import { inferProcedureInput, inferProcedureOutput } from "@trpc/server";

export type UploadedGebaeudeBild = Omit<
	GebaeudeBilder,
	"id" | "gebaeude_stammdaten_id" | "uid"
> &
	({ base64: string; uid?: string });


/**
 * Das ist der Typescript Type für den Verbrauchsausweis Wohnen mit allen Feldern die
 * von der API erwartet werden. Das Backend wird dem Client nur diese Daten zur Verfügung stellen.
 * Hiermit kann sichergestellt werden, dass eine Funktion auf dem Client mit den richtigen Daten
 * ausgeführt werden kann.
 * @date 1/14/2024 - 3:33:33 PM
 *
 * @export
 * @typedef {VerbrauchsausweisWohnenClient}
 */
export type VerbrauchsausweisWohnenClient = inferProcedureInput<
	AppRouter["v1"]["verbrauchsausweisWohnen"]["2016"]["speichern"]
>["ausweis"];

/**
 * Das ist der Typescript Type für den Verbrauchsausweis Gewerbe mit allen Feldern die
 * von der API erwartet werden. Das Backend wird dem Client nur diese Daten zur Verfügung stellen.
 * Hiermit kann sichergestellt werden, dass eine Funktion auf dem Client mit den richtigen Daten
 * ausgeführt werden kann.
 * @date 1/14/2024 - 3:33:33 PM
 *
 * @export
 * @typedef {VerbrauchsausweisWohnenClient}
 */
export type VerbrauchsausweisGewerbeClient = inferProcedureInput<
	AppRouter["v1"]["verbrauchsausweisGewerbe"]["2016"]["speichern"]
>["ausweis"];

/**
 * Das ist der Typescript Type für den Verbrauchsausweis Gewerbe mit allen Feldern die
 * von der API erwartet werden. Das Backend wird dem Client nur diese Daten zur Verfügung stellen.
 * Hiermit kann sichergestellt werden, dass eine Funktion auf dem Client mit den richtigen Daten
 * ausgeführt werden kann.
 * @date 1/14/2024 - 3:33:33 PM
 *
 * @export
 * @typedef {VerbrauchsausweisWohnenClient}
 */
export type BedarfsausweisWohnenClient = inferProcedureInput<
	AppRouter["v1"]["bedarfsausweisWohen"]["2016"]["speichern"]
>["ausweis"];



/**
 * Das ist der Typescript Type für die Gebäude Stammdaten mit allen Feldern die
 * von der API erwartet werden. Das Backend wird dem Client nur diese Daten zur Verfügung stellen.
 * Hiermit kann sichergestellt werden, dass eine Funktion auf dem Client mit den richtigen Daten
 * ausgeführt werden kann.
 * @date 1/14/2024 - 3:33:33 PM
 *
 * @export
 * @typedef {GebaeudeClient}
 */
export type GebaeudeClient = inferProcedureInput<
	AppRouter["v1"]["verbrauchsausweisWohnen"]["2016"]["speichern"]
>["gebaeude"];

export type GebaeudeAufnahmeClient = inferProcedureInput<
	AppRouter["v1"]["verbrauchsausweisWohnen"]["2016"]["speichern"]
>["gebaeude_aufnahme_allgemein"];

export type BenutzerClient = inferProcedureOutput<AppRouter["v1"]["benutzer"]["fromPublicId"]>