
/* !!! This is code generated by Prisma. Do not edit directly. !!! */
/* eslint-disable */
// biome-ignore-all lint: generated file
// @ts-nocheck 
/*
 * WARNING: This is an internal file that is subject to change!
 *
 * 🛑 Under no circumstances should you import this file directly! 🛑
 *
 * Please import the `PrismaClient` class from the `client.ts` file instead.
 */

import * as runtime from "@prisma/client/runtime/client"
import type * as Prisma from "./prismaNamespace"


const config: runtime.GetPrismaClientConfig = {
  "previewFeatures": [],
  "clientVersion": "7.1.0",
  "engineVersion": "ab635e6b9d606fa5c8fb8b1a7f909c3c3c1c98ba",
  "activeProvider": "postgresql",
  "inlineSchema": "generator client {\n  provider = \"prisma-client\"\n  output   = \"./generated/prisma\"\n}\n\ndatasource db {\n  provider = \"postgresql\"\n}\n\nmodel User {\n  id                       String              @id @default(cuid())\n  email                    String              @unique\n  password                 String\n  username                 String              @unique\n  role                     Role                @default(USER)\n  score                    Int                 @default(0)\n  level                    Int                 @default(1)\n  hp                       Int                 @default(1000)\n  maxHp                    Int                 @default(1000)\n  xp                       Int                 @default(0)\n  maxXp                    Int                 @default(5000)\n  avatar                   String?\n  createdAt                DateTime            @default(now())\n  updatedAt                DateTime            @updatedAt\n  bio                      String?\n  characterClass           CharacterClass?\n  eventFeedbacks           EventFeedback[]\n  eventRegistrations       EventRegistration[]\n  preferences              UserPreferences?\n  challengesAsChallenger   Challenge[]         @relation(\"Challenger\")\n  challengesAsChallenged   Challenge[]         @relation(\"Challenged\")\n  challengesAsAdmin        Challenge[]         @relation(\"AdminValidator\")\n  challengesAsWinner       Challenge[]         @relation(\"ChallengeWinner\")\n  houseMemberships         HouseMembership[]\n  houseInvitationsSent     HouseInvitation[]   @relation(\"Inviter\")\n  houseInvitationsReceived HouseInvitation[]   @relation(\"Invitee\")\n  houseRequestsSent        HouseRequest[]      @relation(\"Requester\")\n  housesCreated            House[]             @relation(\"HouseCreator\")\n\n  @@index([score])\n  @@index([email])\n}\n\nmodel UserPreferences {\n  id                    String   @id @default(cuid())\n  userId                String   @unique\n  homeBackground        String?\n  eventsBackground      String?\n  leaderboardBackground String?\n  theme                 String?  @default(\"default\")\n  createdAt             DateTime @default(now())\n  updatedAt             DateTime @updatedAt\n  user                  User     @relation(fields: [userId], references: [id], onDelete: Cascade)\n}\n\nmodel Event {\n  id            String              @id @default(cuid())\n  date          DateTime\n  name          String\n  description   String\n  type          EventType\n  room          String?\n  time          String?\n  maxPlaces     Int?\n  createdAt     DateTime            @default(now())\n  updatedAt     DateTime            @updatedAt\n  feedbacks     EventFeedback[]\n  registrations EventRegistration[]\n\n  @@index([date])\n}\n\nmodel EventRegistration {\n  id        String   @id @default(cuid())\n  userId    String\n  eventId   String\n  createdAt DateTime @default(now())\n  event     Event    @relation(fields: [eventId], references: [id], onDelete: Cascade)\n  user      User     @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n  @@unique([userId, eventId])\n  @@index([userId])\n  @@index([eventId])\n}\n\nmodel EventFeedback {\n  id        String   @id @default(cuid())\n  userId    String\n  eventId   String\n  rating    Int\n  comment   String?\n  isRead    Boolean  @default(false)\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n  event     Event    @relation(fields: [eventId], references: [id], onDelete: Cascade)\n  user      User     @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n  @@unique([userId, eventId])\n  @@index([userId])\n  @@index([eventId])\n  @@index([isRead])\n}\n\nmodel SitePreferences {\n  id                      String   @id @default(\"global\")\n  homeBackground          String?\n  eventsBackground        String?\n  leaderboardBackground   String?\n  challengesBackground    String?\n  eventRegistrationPoints Int      @default(100)\n  eventFeedbackPoints     Int      @default(100)\n  houseJoinPoints         Int      @default(100)\n  houseLeavePoints        Int      @default(100)\n  houseCreatePoints       Int      @default(100)\n  createdAt               DateTime @default(now())\n  updatedAt               DateTime @updatedAt\n}\n\nenum Role {\n  USER\n  ADMIN\n}\n\nenum EventType {\n  ATELIER\n  KATA\n  PRESENTATION\n  LEARNING_HOUR\n}\n\nenum CharacterClass {\n  WARRIOR\n  MAGE\n  ROGUE\n  RANGER\n  PALADIN\n  ENGINEER\n  MERCHANT\n  SCHOLAR\n  BERSERKER\n  NECROMANCER\n}\n\nenum ChallengeStatus {\n  PENDING\n  ACCEPTED\n  COMPLETED\n  REJECTED\n  CANCELLED\n}\n\nmodel Challenge {\n  id           String          @id @default(cuid())\n  challengerId String // Joueur qui lance le défi\n  challengedId String // Joueur qui reçoit le défi\n  challenger   User            @relation(\"Challenger\", fields: [challengerId], references: [id], onDelete: Cascade)\n  challenged   User            @relation(\"Challenged\", fields: [challengedId], references: [id], onDelete: Cascade)\n  title        String // Titre du défi\n  description  String // Description détaillée du défi\n  pointsReward Int             @default(100) // Points à gagner pour le gagnant\n  status       ChallengeStatus @default(PENDING)\n  adminId      String? // Admin qui valide le défi\n  admin        User?           @relation(\"AdminValidator\", fields: [adminId], references: [id], onDelete: SetNull)\n  adminComment String? // Commentaire de l'admin lors de la validation/rejet\n  winnerId     String? // ID du gagnant (challengerId ou challengedId)\n  winner       User?           @relation(\"ChallengeWinner\", fields: [winnerId], references: [id], onDelete: SetNull)\n  createdAt    DateTime        @default(now())\n  acceptedAt   DateTime? // Date d'acceptation du défi\n  completedAt  DateTime? // Date de validation par l'admin\n  updatedAt    DateTime        @updatedAt\n\n  @@index([challengerId])\n  @@index([challengedId])\n  @@index([status])\n  @@index([adminId])\n}\n\nmodel House {\n  id          String            @id @default(cuid())\n  name        String\n  description String?\n  creatorId   String\n  creator     User              @relation(\"HouseCreator\", fields: [creatorId], references: [id], onDelete: Cascade)\n  createdAt   DateTime          @default(now())\n  updatedAt   DateTime          @updatedAt\n  memberships HouseMembership[]\n  invitations HouseInvitation[]\n  requests    HouseRequest[]\n\n  @@index([creatorId])\n  @@index([name])\n}\n\nmodel HouseMembership {\n  id       String    @id @default(cuid())\n  houseId  String\n  userId   String\n  role     HouseRole @default(MEMBER)\n  joinedAt DateTime  @default(now())\n  house    House     @relation(fields: [houseId], references: [id], onDelete: Cascade)\n  user     User      @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n  @@unique([houseId, userId])\n  @@index([houseId])\n  @@index([userId])\n}\n\nmodel HouseInvitation {\n  id        String           @id @default(cuid())\n  houseId   String\n  inviterId String // Utilisateur qui envoie l'invitation\n  inviteeId String // Utilisateur invité\n  status    InvitationStatus @default(PENDING)\n  createdAt DateTime         @default(now())\n  updatedAt DateTime         @updatedAt\n  house     House            @relation(fields: [houseId], references: [id], onDelete: Cascade)\n  inviter   User             @relation(\"Inviter\", fields: [inviterId], references: [id], onDelete: Cascade)\n  invitee   User             @relation(\"Invitee\", fields: [inviteeId], references: [id], onDelete: Cascade)\n\n  @@unique([houseId, inviteeId])\n  @@index([houseId])\n  @@index([inviteeId])\n  @@index([status])\n}\n\nmodel HouseRequest {\n  id          String        @id @default(cuid())\n  houseId     String\n  requesterId String // Utilisateur qui demande à rejoindre\n  status      RequestStatus @default(PENDING)\n  createdAt   DateTime      @default(now())\n  updatedAt   DateTime      @updatedAt\n  house       House         @relation(fields: [houseId], references: [id], onDelete: Cascade)\n  requester   User          @relation(\"Requester\", fields: [requesterId], references: [id], onDelete: Cascade)\n\n  @@unique([houseId, requesterId])\n  @@index([houseId])\n  @@index([requesterId])\n  @@index([status])\n}\n\nenum HouseRole {\n  OWNER\n  ADMIN\n  MEMBER\n}\n\nenum InvitationStatus {\n  PENDING\n  ACCEPTED\n  REJECTED\n  CANCELLED\n}\n\nenum RequestStatus {\n  PENDING\n  ACCEPTED\n  REJECTED\n  CANCELLED\n}\n",
  "runtimeDataModel": {
    "models": {},
    "enums": {},
    "types": {}
  }
}

config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"Role\"},{\"name\":\"score\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"level\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"hp\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"maxHp\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"xp\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"maxXp\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"avatar\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"bio\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"characterClass\",\"kind\":\"enum\",\"type\":\"CharacterClass\"},{\"name\":\"eventFeedbacks\",\"kind\":\"object\",\"type\":\"EventFeedback\",\"relationName\":\"EventFeedbackToUser\"},{\"name\":\"eventRegistrations\",\"kind\":\"object\",\"type\":\"EventRegistration\",\"relationName\":\"EventRegistrationToUser\"},{\"name\":\"preferences\",\"kind\":\"object\",\"type\":\"UserPreferences\",\"relationName\":\"UserToUserPreferences\"},{\"name\":\"challengesAsChallenger\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"Challenger\"},{\"name\":\"challengesAsChallenged\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"Challenged\"},{\"name\":\"challengesAsAdmin\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"AdminValidator\"},{\"name\":\"challengesAsWinner\",\"kind\":\"object\",\"type\":\"Challenge\",\"relationName\":\"ChallengeWinner\"},{\"name\":\"houseMemberships\",\"kind\":\"object\",\"type\":\"HouseMembership\",\"relationName\":\"HouseMembershipToUser\"},{\"name\":\"houseInvitationsSent\",\"kind\":\"object\",\"type\":\"HouseInvitation\",\"relationName\":\"Inviter\"},{\"name\":\"houseInvitationsReceived\",\"kind\":\"object\",\"type\":\"HouseInvitation\",\"relationName\":\"Invitee\"},{\"name\":\"houseRequestsSent\",\"kind\":\"object\",\"type\":\"HouseRequest\",\"relationName\":\"Requester\"},{\"name\":\"housesCreated\",\"kind\":\"object\",\"type\":\"House\",\"relationName\":\"HouseCreator\"}],\"dbName\":null},\"UserPreferences\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"homeBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventsBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"leaderboardBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"theme\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserPreferences\"}],\"dbName\":null},\"Event\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"EventType\"},{\"name\":\"room\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"time\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"maxPlaces\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"feedbacks\",\"kind\":\"object\",\"type\":\"EventFeedback\",\"relationName\":\"EventToEventFeedback\"},{\"name\":\"registrations\",\"kind\":\"object\",\"type\":\"EventRegistration\",\"relationName\":\"EventToEventRegistration\"}],\"dbName\":null},\"EventRegistration\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"event\",\"kind\":\"object\",\"type\":\"Event\",\"relationName\":\"EventToEventRegistration\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"EventRegistrationToUser\"}],\"dbName\":null},\"EventFeedback\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"rating\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"comment\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isRead\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"event\",\"kind\":\"object\",\"type\":\"Event\",\"relationName\":\"EventToEventFeedback\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"EventFeedbackToUser\"}],\"dbName\":null},\"SitePreferences\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"homeBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventsBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"leaderboardBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengesBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventRegistrationPoints\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"eventFeedbackPoints\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"houseJoinPoints\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"houseLeavePoints\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"houseCreatePoints\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Challenge\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengedId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenger\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"Challenger\"},{\"name\":\"challenged\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"Challenged\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"pointsReward\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"ChallengeStatus\"},{\"name\":\"adminId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"admin\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AdminValidator\"},{\"name\":\"adminComment\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"winnerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"winner\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ChallengeWinner\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"acceptedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"House\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"creatorId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"creator\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"HouseCreator\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"memberships\",\"kind\":\"object\",\"type\":\"HouseMembership\",\"relationName\":\"HouseToHouseMembership\"},{\"name\":\"invitations\",\"kind\":\"object\",\"type\":\"HouseInvitation\",\"relationName\":\"HouseToHouseInvitation\"},{\"name\":\"requests\",\"kind\":\"object\",\"type\":\"HouseRequest\",\"relationName\":\"HouseToHouseRequest\"}],\"dbName\":null},\"HouseMembership\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"houseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"HouseRole\"},{\"name\":\"joinedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"house\",\"kind\":\"object\",\"type\":\"House\",\"relationName\":\"HouseToHouseMembership\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"HouseMembershipToUser\"}],\"dbName\":null},\"HouseInvitation\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"houseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"inviterId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"inviteeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"InvitationStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"house\",\"kind\":\"object\",\"type\":\"House\",\"relationName\":\"HouseToHouseInvitation\"},{\"name\":\"inviter\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"Inviter\"},{\"name\":\"invitee\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"Invitee\"}],\"dbName\":null},\"HouseRequest\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"houseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"requesterId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"RequestStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"house\",\"kind\":\"object\",\"type\":\"House\",\"relationName\":\"HouseToHouseRequest\"},{\"name\":\"requester\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"Requester\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")

async function decodeBase64AsWasm(wasmBase64: string): Promise<WebAssembly.Module> {
  const { Buffer } = await import('node:buffer')
  const wasmArray = Buffer.from(wasmBase64, 'base64')
  return new WebAssembly.Module(wasmArray)
}

config.compilerWasm = {
  getRuntime: async () => await import("@prisma/client/runtime/query_compiler_bg.postgresql.mjs"),

  getQueryCompilerWasmModule: async () => {
    const { wasm } = await import("@prisma/client/runtime/query_compiler_bg.postgresql.wasm-base64.mjs")
    return await decodeBase64AsWasm(wasm)
  }
}



export type LogOptions<ClientOptions extends Prisma.PrismaClientOptions> =
  'log' extends keyof ClientOptions ? ClientOptions['log'] extends Array<Prisma.LogLevel | Prisma.LogDefinition> ? Prisma.GetEvents<ClientOptions['log']> : never : never

export interface PrismaClientConstructor {
    /**
   * ## Prisma Client
   * 
   * Type-safe database client for TypeScript
   * @example
   * ```
   * const prisma = new PrismaClient()
   * // Fetch zero or more Users
   * const users = await prisma.user.findMany()
   * ```
   * 
   * Read more in our [docs](https://pris.ly/d/client).
   */

  new <
    Options extends Prisma.PrismaClientOptions = Prisma.PrismaClientOptions,
    LogOpts extends LogOptions<Options> = LogOptions<Options>,
    OmitOpts extends Prisma.PrismaClientOptions['omit'] = Options extends { omit: infer U } ? U : Prisma.PrismaClientOptions['omit'],
    ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs
  >(options: Prisma.Subset<Options, Prisma.PrismaClientOptions> ): PrismaClient<LogOpts, OmitOpts, ExtArgs>
}

/**
 * ## Prisma Client
 * 
 * Type-safe database client for TypeScript
 * @example
 * ```
 * const prisma = new PrismaClient()
 * // Fetch zero or more Users
 * const users = await prisma.user.findMany()
 * ```
 * 
 * Read more in our [docs](https://pris.ly/d/client).
 */

export interface PrismaClient<
  in LogOpts extends Prisma.LogLevel = never,
  in out OmitOpts extends Prisma.PrismaClientOptions['omit'] = undefined,
  in out ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs
> {
  [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['other'] }

  $on<V extends LogOpts>(eventType: V, callback: (event: V extends 'query' ? Prisma.QueryEvent : Prisma.LogEvent) => void): PrismaClient;

  /**
   * Connect with the database
   */
  $connect(): runtime.Types.Utils.JsPromise<void>;

  /**
   * Disconnect from the database
   */
  $disconnect(): runtime.Types.Utils.JsPromise<void>;

/**
   * Executes a prepared raw query and returns the number of affected rows.
   * @example
   * ```
   * const result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};`
   * ```
   *
   * Read more in our [docs](https://pris.ly/d/raw-queries).
   */
  $executeRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<number>;

  /**
   * Executes a raw query and returns the number of affected rows.
   * Susceptible to SQL injections, see documentation.
   * @example
   * ```
   * const result = await prisma.$executeRawUnsafe('UPDATE User SET cool = $1 WHERE email = $2 ;', true, 'user@email.com')
   * ```
   *
   * Read more in our [docs](https://pris.ly/d/raw-queries).
   */
  $executeRawUnsafe<T = unknown>(query: string, ...values: any[]): Prisma.PrismaPromise<number>;

  /**
   * Performs a prepared raw query and returns the `SELECT` data.
   * @example
   * ```
   * const result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};`
   * ```
   *
   * Read more in our [docs](https://pris.ly/d/raw-queries).
   */
  $queryRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<T>;

  /**
   * Performs a raw query and returns the `SELECT` data.
   * Susceptible to SQL injections, see documentation.
   * @example
   * ```
   * const result = await prisma.$queryRawUnsafe('SELECT * FROM User WHERE id = $1 OR email = $2;', 1, 'user@email.com')
   * ```
   *
   * Read more in our [docs](https://pris.ly/d/raw-queries).
   */
  $queryRawUnsafe<T = unknown>(query: string, ...values: any[]): Prisma.PrismaPromise<T>;


  /**
   * Allows the running of a sequence of read/write operations that are guaranteed to either succeed or fail as a whole.
   * @example
   * ```
   * const [george, bob, alice] = await prisma.$transaction([
   *   prisma.user.create({ data: { name: 'George' } }),
   *   prisma.user.create({ data: { name: 'Bob' } }),
   *   prisma.user.create({ data: { name: 'Alice' } }),
   * ])
   * ```
   * 
   * Read more in our [docs](https://www.prisma.io/docs/concepts/components/prisma-client/transactions).
   */
  $transaction<P extends Prisma.PrismaPromise<any>[]>(arg: [...P], options?: { isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise<runtime.Types.Utils.UnwrapTuple<P>>

  $transaction<R>(fn: (prisma: Omit<PrismaClient, runtime.ITXClientDenyList>) => runtime.Types.Utils.JsPromise<R>, options?: { maxWait?: number, timeout?: number, isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise<R>

  $extends: runtime.Types.Extensions.ExtendsHook<"extends", Prisma.TypeMapCb<OmitOpts>, ExtArgs, runtime.Types.Utils.Call<Prisma.TypeMapCb<OmitOpts>, {
    extArgs: ExtArgs
  }>>

      /**
   * `prisma.user`: Exposes CRUD operations for the **User** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Users
    * const users = await prisma.user.findMany()
    * ```
    */
  get user(): Prisma.UserDelegate<ExtArgs, { omit: OmitOpts }>;

  /**
   * `prisma.userPreferences`: Exposes CRUD operations for the **UserPreferences** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more UserPreferences
    * const userPreferences = await prisma.userPreferences.findMany()
    * ```
    */
  get userPreferences(): Prisma.UserPreferencesDelegate<ExtArgs, { omit: OmitOpts }>;

  /**
   * `prisma.event`: Exposes CRUD operations for the **Event** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Events
    * const events = await prisma.event.findMany()
    * ```
    */
  get event(): Prisma.EventDelegate<ExtArgs, { omit: OmitOpts }>;

  /**
   * `prisma.eventRegistration`: Exposes CRUD operations for the **EventRegistration** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more EventRegistrations
    * const eventRegistrations = await prisma.eventRegistration.findMany()
    * ```
    */
  get eventRegistration(): Prisma.EventRegistrationDelegate<ExtArgs, { omit: OmitOpts }>;

  /**
   * `prisma.eventFeedback`: Exposes CRUD operations for the **EventFeedback** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more EventFeedbacks
    * const eventFeedbacks = await prisma.eventFeedback.findMany()
    * ```
    */
  get eventFeedback(): Prisma.EventFeedbackDelegate<ExtArgs, { omit: OmitOpts }>;

  /**
   * `prisma.sitePreferences`: Exposes CRUD operations for the **SitePreferences** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more SitePreferences
    * const sitePreferences = await prisma.sitePreferences.findMany()
    * ```
    */
  get sitePreferences(): Prisma.SitePreferencesDelegate<ExtArgs, { omit: OmitOpts }>;

  /**
   * `prisma.challenge`: Exposes CRUD operations for the **Challenge** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Challenges
    * const challenges = await prisma.challenge.findMany()
    * ```
    */
  get challenge(): Prisma.ChallengeDelegate<ExtArgs, { omit: OmitOpts }>;

  /**
   * `prisma.house`: Exposes CRUD operations for the **House** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Houses
    * const houses = await prisma.house.findMany()
    * ```
    */
  get house(): Prisma.HouseDelegate<ExtArgs, { omit: OmitOpts }>;

  /**
   * `prisma.houseMembership`: Exposes CRUD operations for the **HouseMembership** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more HouseMemberships
    * const houseMemberships = await prisma.houseMembership.findMany()
    * ```
    */
  get houseMembership(): Prisma.HouseMembershipDelegate<ExtArgs, { omit: OmitOpts }>;

  /**
   * `prisma.houseInvitation`: Exposes CRUD operations for the **HouseInvitation** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more HouseInvitations
    * const houseInvitations = await prisma.houseInvitation.findMany()
    * ```
    */
  get houseInvitation(): Prisma.HouseInvitationDelegate<ExtArgs, { omit: OmitOpts }>;

  /**
   * `prisma.houseRequest`: Exposes CRUD operations for the **HouseRequest** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more HouseRequests
    * const houseRequests = await prisma.houseRequest.findMany()
    * ```
    */
  get houseRequest(): Prisma.HouseRequestDelegate<ExtArgs, { omit: OmitOpts }>;
}

export function getPrismaClientClass(): PrismaClientConstructor {
  return runtime.getPrismaClient(config) as unknown as PrismaClientConstructor
}
