/* !!! 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: "sqlite",
  inlineSchema:
    '// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n  provider = "prisma-client"\n  output   = "./generated/prisma"\n}\n\ndatasource db {\n  provider = "sqlite"\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\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  bio                String?\n  characterClass     CharacterClass?\n  createdAt          DateTime            @default(now())\n  updatedAt          DateTime            @updatedAt\n  preferences        UserPreferences?\n  eventRegistrations EventRegistration[]\n  eventFeedbacks     EventFeedback[]\n\n  @@index([score])\n  @@index([email])\n}\n\nmodel UserPreferences {\n  id     String @id @default(cuid())\n  userId String @unique\n  user   User   @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n  // Background images for each page\n  homeBackground        String?\n  eventsBackground      String?\n  leaderboardBackground String?\n\n  // Other UI preferences can be added here\n  theme String? @default("default")\n\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\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  registrations EventRegistration[]\n  feedbacks     EventFeedback[]\n\n  @@index([date])\n}\n\nmodel EventRegistration {\n  id        String   @id @default(cuid())\n  userId    String\n  eventId   String\n  user      User     @relation(fields: [userId], references: [id], onDelete: Cascade)\n  event     Event    @relation(fields: [eventId], references: [id], onDelete: Cascade)\n  createdAt DateTime @default(now())\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  user      User     @relation(fields: [userId], references: [id], onDelete: Cascade)\n  event     Event    @relation(fields: [eventId], references: [id], onDelete: Cascade)\n  rating    Int // Note de 1 à 5\n  comment   String? // Commentaire optionnel\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n\n  @@unique([userId, eventId])\n  @@index([userId])\n  @@index([eventId])\n}\n\nmodel SitePreferences {\n  id                    String   @id @default("global")\n  homeBackground        String?\n  eventsBackground      String?\n  leaderboardBackground String?\n  createdAt             DateTime @default(now())\n  updatedAt             DateTime @updatedAt\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":"bio","kind":"scalar","type":"String"},{"name":"characterClass","kind":"enum","type":"CharacterClass"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"preferences","kind":"object","type":"UserPreferences","relationName":"UserToUserPreferences"},{"name":"eventRegistrations","kind":"object","type":"EventRegistration","relationName":"EventRegistrationToUser"},{"name":"eventFeedbacks","kind":"object","type":"EventFeedback","relationName":"EventFeedbackToUser"}],"dbName":null},"UserPreferences":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"userId","kind":"scalar","type":"String"},{"name":"user","kind":"object","type":"User","relationName":"UserToUserPreferences"},{"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"}],"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":"registrations","kind":"object","type":"EventRegistration","relationName":"EventToEventRegistration"},{"name":"feedbacks","kind":"object","type":"EventFeedback","relationName":"EventToEventFeedback"}],"dbName":null},"EventRegistration":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"userId","kind":"scalar","type":"String"},{"name":"eventId","kind":"scalar","type":"String"},{"name":"user","kind":"object","type":"User","relationName":"EventRegistrationToUser"},{"name":"event","kind":"object","type":"Event","relationName":"EventToEventRegistration"},{"name":"createdAt","kind":"scalar","type":"DateTime"}],"dbName":null},"EventFeedback":{"fields":[{"name":"id","kind":"scalar","type":"String"},{"name":"userId","kind":"scalar","type":"String"},{"name":"eventId","kind":"scalar","type":"String"},{"name":"user","kind":"object","type":"User","relationName":"EventFeedbackToUser"},{"name":"event","kind":"object","type":"Event","relationName":"EventToEventFeedback"},{"name":"rating","kind":"scalar","type":"Int"},{"name":"comment","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"}],"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":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"}],"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.sqlite.mjs"),

  getQueryCompilerWasmModule: async () => {
    const { wasm } =
      await import("@prisma/client/runtime/query_compiler_bg.sqlite.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 }
  >;
}

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