
/* !!! 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.8.0",
  "engineVersion": "3c6e192761c0362d496ed980de936e2f3cebcd3a",
  "activeProvider": "mysql",
  "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   = \"../src/generated/prisma\"\n}\n\ndatasource db {\n  provider = \"mysql\"\n}\n\nmodel AdminUser {\n  id           String   @id @default(cuid())\n  email        String   @unique\n  passwordHash String\n  createdAt    DateTime @default(now())\n}\n\nmodel Settings {\n  id                     String  @id @default(\"singleton\")\n  notificationEmail      String?\n  stripePublishableKey   String?\n  stripeSecretKeyEnc     String? @db.Text\n  stripeWebhookSecretEnc String? @db.Text\n  galleryLayout          String  @default(\"square\")\n\n  businessAddress String? @db.Text\n  businessPhone   String?\n  businessHours   String? @db.Text\n  businessLat     Float?\n  businessLng     Float?\n\n  instagramEnabled Boolean @default(false)\n  instagramUrl     String? @db.Text\n  facebookEnabled  Boolean @default(false)\n  facebookUrl      String? @db.Text\n  tiktokEnabled    Boolean @default(false)\n  tiktokUrl        String? @db.Text\n  youtubeEnabled   Boolean @default(false)\n  youtubeUrl       String? @db.Text\n\n  updatedAt DateTime @updatedAt\n}\n\nmodel GalleryImage {\n  id        String   @id @default(cuid())\n  url       String\n  width     Int\n  height    Int\n  order     Int      @default(0)\n  createdAt DateTime @default(now())\n}\n\nmodel Service {\n  id              String    @id @default(cuid())\n  name            String\n  description     String    @db.Text\n  durationMinutes Int\n  priceCents      Int\n  active          Boolean   @default(true)\n  createdAt       DateTime  @default(now())\n  bookings        Booking[]\n}\n\nenum BookingStatus {\n  pending\n  paid\n  cancelled\n}\n\nmodel Booking {\n  id                    String        @id @default(cuid())\n  serviceId             String\n  service               Service       @relation(fields: [serviceId], references: [id])\n  customerName          String\n  customerEmail         String\n  customerPhone         String\n  date                  String\n  startTime             String\n  status                BookingStatus @default(pending)\n  stripeSessionId       String?       @unique\n  stripePaymentIntentId String?\n  amountPaidCents       Int?\n  notes                 String?       @db.Text\n  createdAt             DateTime      @default(now())\n\n  @@index([date, startTime])\n}\n",
  "runtimeDataModel": {
    "models": {},
    "enums": {},
    "types": {}
  },
  "parameterizationSchema": {
    "strings": [],
    "graph": ""
  }
}

config.runtimeDataModel = JSON.parse("{\"models\":{\"AdminUser\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Settings\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"notificationEmail\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"stripePublishableKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"stripeSecretKeyEnc\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"stripeWebhookSecretEnc\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"galleryLayout\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"businessAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"businessPhone\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"businessHours\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"businessLat\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"businessLng\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"instagramEnabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"instagramUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"facebookEnabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"facebookUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tiktokEnabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"tiktokUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"youtubeEnabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"youtubeUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"GalleryImage\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"width\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"height\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Service\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"durationMinutes\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"priceCents\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"active\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"bookings\",\"kind\":\"object\",\"type\":\"Booking\",\"relationName\":\"BookingToService\"}],\"dbName\":null},\"Booking\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"serviceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"service\",\"kind\":\"object\",\"type\":\"Service\",\"relationName\":\"BookingToService\"},{\"name\":\"customerName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"customerEmail\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"customerPhone\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"date\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"BookingStatus\"},{\"name\":\"stripeSessionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"stripePaymentIntentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"amountPaidCents\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"notes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")
config.parameterizationSchema = {
  strings: JSON.parse("[\"where\",\"AdminUser.findUnique\",\"AdminUser.findUniqueOrThrow\",\"orderBy\",\"cursor\",\"AdminUser.findFirst\",\"AdminUser.findFirstOrThrow\",\"AdminUser.findMany\",\"data\",\"AdminUser.createOne\",\"AdminUser.createMany\",\"AdminUser.updateOne\",\"AdminUser.updateMany\",\"create\",\"update\",\"AdminUser.upsertOne\",\"AdminUser.deleteOne\",\"AdminUser.deleteMany\",\"having\",\"_count\",\"_min\",\"_max\",\"AdminUser.groupBy\",\"AdminUser.aggregate\",\"Settings.findUnique\",\"Settings.findUniqueOrThrow\",\"Settings.findFirst\",\"Settings.findFirstOrThrow\",\"Settings.findMany\",\"Settings.createOne\",\"Settings.createMany\",\"Settings.updateOne\",\"Settings.updateMany\",\"Settings.upsertOne\",\"Settings.deleteOne\",\"Settings.deleteMany\",\"_avg\",\"_sum\",\"Settings.groupBy\",\"Settings.aggregate\",\"GalleryImage.findUnique\",\"GalleryImage.findUniqueOrThrow\",\"GalleryImage.findFirst\",\"GalleryImage.findFirstOrThrow\",\"GalleryImage.findMany\",\"GalleryImage.createOne\",\"GalleryImage.createMany\",\"GalleryImage.updateOne\",\"GalleryImage.updateMany\",\"GalleryImage.upsertOne\",\"GalleryImage.deleteOne\",\"GalleryImage.deleteMany\",\"GalleryImage.groupBy\",\"GalleryImage.aggregate\",\"service\",\"bookings\",\"Service.findUnique\",\"Service.findUniqueOrThrow\",\"Service.findFirst\",\"Service.findFirstOrThrow\",\"Service.findMany\",\"Service.createOne\",\"Service.createMany\",\"Service.updateOne\",\"Service.updateMany\",\"Service.upsertOne\",\"Service.deleteOne\",\"Service.deleteMany\",\"Service.groupBy\",\"Service.aggregate\",\"Booking.findUnique\",\"Booking.findUniqueOrThrow\",\"Booking.findFirst\",\"Booking.findFirstOrThrow\",\"Booking.findMany\",\"Booking.createOne\",\"Booking.createMany\",\"Booking.updateOne\",\"Booking.updateMany\",\"Booking.upsertOne\",\"Booking.deleteOne\",\"Booking.deleteMany\",\"Booking.groupBy\",\"Booking.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"serviceId\",\"customerName\",\"customerEmail\",\"customerPhone\",\"date\",\"startTime\",\"BookingStatus\",\"status\",\"stripeSessionId\",\"stripePaymentIntentId\",\"amountPaidCents\",\"notes\",\"createdAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"search\",\"name\",\"description\",\"durationMinutes\",\"priceCents\",\"active\",\"every\",\"some\",\"none\",\"url\",\"width\",\"height\",\"order\",\"notificationEmail\",\"stripePublishableKey\",\"stripeSecretKeyEnc\",\"stripeWebhookSecretEnc\",\"galleryLayout\",\"businessAddress\",\"businessPhone\",\"businessHours\",\"businessLat\",\"businessLng\",\"instagramEnabled\",\"instagramUrl\",\"facebookEnabled\",\"facebookUrl\",\"tiktokEnabled\",\"tiktokUrl\",\"youtubeEnabled\",\"youtubeUrl\",\"updatedAt\",\"email\",\"passwordHash\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"_relevance\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
  graph: " "
}

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_fast_bg.mysql.mjs"),

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

  importName: "./query_compiler_fast_bg.js"
}



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({
   *   adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL })
   * })
   * // Fetch zero or more AdminUsers
   * const adminUsers = await prisma.adminUser.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({
 *   adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL })
 * })
 * // Fetch zero or more AdminUsers
 * const adminUsers = await prisma.adminUser.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/orm/prisma-client/queries/transactions).
   */
  $transaction<P extends Prisma.PrismaPromise<any>[]>(arg: [...P], options?: { maxWait?: number, timeout?: number, 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.adminUser`: Exposes CRUD operations for the **AdminUser** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more AdminUsers
    * const adminUsers = await prisma.adminUser.findMany()
    * ```
    */
  get adminUser(): Prisma.AdminUserDelegate<ExtArgs, { omit: OmitOpts }>;

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

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

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

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

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