
/* !!! 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.10.0",
  "engineVersion": "0edf323efd1d98336f3f0a68684b56f689b900d3",
  "activeProvider": "postgresql",
  "inlineSchema": "generator client {\n  provider = \"prisma-client\"\n  output   = \"../src/generated/prisma\"\n}\n\ndatasource db {\n  provider = \"postgresql\"\n}\n\n// ---------------------------------------------------------------------------\n// Authentication\n// ---------------------------------------------------------------------------\n\n// ADMIN can do everything; VIEWER can only look (no add / edit / delete, no\n// checks started by hand, no Monitoring Settings). Checked in src/server/auth/session.ts.\nenum UserRole {\n  ADMIN\n  VIEWER\n}\n\nmodel User {\n  id           String   @id @default(cuid())\n  username     String   @unique\n  passwordHash String   @map(\"password_hash\")\n  role         UserRole @default(ADMIN)\n  createdAt    DateTime @default(now()) @map(\"created_at\") @db.Timestamptz(3)\n  updatedAt    DateTime @updatedAt @map(\"updated_at\") @db.Timestamptz(3)\n\n  sessions Session[]\n\n  @@map(\"users\")\n}\n\nmodel Session {\n  id        String   @id @default(cuid())\n  // SHA-256 of the cookie token; the raw token never touches the database.\n  tokenHash String   @unique @map(\"token_hash\")\n  userId    String   @map(\"user_id\")\n  expiresAt DateTime @map(\"expires_at\") @db.Timestamptz(3)\n  createdAt DateTime @default(now()) @map(\"created_at\") @db.Timestamptz(3)\n\n  user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n  @@index([userId])\n  @@index([expiresAt])\n  @@map(\"sessions\")\n}\n\n// Backs login rate limiting; works across restarts and multiple instances.\nmodel LoginAttempt {\n  id        String   @id @default(cuid())\n  username  String\n  ip        String\n  success   Boolean\n  createdAt DateTime @default(now()) @map(\"created_at\") @db.Timestamptz(3)\n\n  @@index([username, createdAt])\n  @@index([ip, createdAt])\n  @@map(\"login_attempts\")\n}\n\n// ---------------------------------------------------------------------------\n// Applications\n// ---------------------------------------------------------------------------\n\nmodel Project {\n  id                 String    @id @default(cuid())\n  // Unique among non-deleted projects, case-insensitively. Enforced by the\n  // partial index \"projects_project_code_active_key\" (raw SQL in the\n  // add_projects migration) because Prisma can't express partial indexes.\n  projectCode        String    @map(\"project_code\")\n  projectName        String    @map(\"project_name\")\n  productionUrl      String    @map(\"production_url\")\n  monitoringEnabled  Boolean   @default(true) @map(\"monitoring_enabled\")\n  expectedHttpStatus Int       @default(200) @map(\"expected_http_status\")\n  // Must stay above the slow-response threshold, otherwise a slow API is cut\n  // off (Not Working) before it can be observed as Slow.\n  timeoutSeconds     Int       @default(60) @map(\"timeout_seconds\")\n  description        String?\n  createdAt          DateTime  @default(now()) @map(\"created_at\") @db.Timestamptz(3)\n  updatedAt          DateTime  @updatedAt @map(\"updated_at\") @db.Timestamptz(3)\n  deletedAt          DateTime? @map(\"deleted_at\") @db.Timestamptz(3)\n\n  // Current health, denormalised from the latest HealthCheck so the dashboard\n  // never has to scan history. Written only by src/server/health/recorder.ts,\n  // in the same transaction that inserts the HealthCheck row, using raw SQL so\n  // that updated_at keeps meaning \"configuration last edited\".\n  currentStatus         HealthStatus? @map(\"current_status\") // null = never checked\n  lastCheckedAt         DateTime?     @map(\"last_checked_at\") @db.Timestamptz(3)\n  lastSuccessfulCheckAt DateTime?     @map(\"last_successful_check_at\") @db.Timestamptz(3)\n  lastFailedCheckAt     DateTime?     @map(\"last_failed_check_at\") @db.Timestamptz(3)\n  failureStartedAt      DateTime?     @map(\"failure_started_at\") @db.Timestamptz(3) // \"Not Working Since\"\n  lastRecoveredAt       DateTime?     @map(\"last_recovered_at\") @db.Timestamptz(3)\n  currentHttpStatus     Int?          @map(\"current_http_status\")\n  currentResponseTimeMs Int?          @map(\"current_response_time_ms\")\n  currentErrorMessage   String?       @map(\"current_error_message\")\n\n  healthChecks HealthCheck[]\n\n  @@index([deletedAt])\n  @@map(\"projects\")\n}\n\n// ---------------------------------------------------------------------------\n// Health monitoring\n// ---------------------------------------------------------------------------\n\n// SLOW = the API answered with the expected status, but slower than the\n// slow-response threshold in MonitoringSettings. It counts as \"up\" for\n// outage tracking (Not Working Since) but is surfaced separately everywhere.\nenum HealthStatus {\n  WORKING\n  NOT_WORKING\n  SLOW\n}\n\nenum CheckTrigger {\n  SCHEDULED\n  MANUAL\n}\n\nenum HealthErrorType {\n  TIMEOUT\n  DNS\n  CONNECTION\n  TLS\n  HTTP_STATUS\n  SLOW_RESPONSE\n  UNKNOWN\n}\n\n// One row per health-check execution. Append-only.\nmodel HealthCheck {\n  id             String           @id @default(cuid())\n  projectId      String           @map(\"project_id\")\n  checkedAt      DateTime         @map(\"checked_at\") @db.Timestamptz(3)\n  status         HealthStatus\n  httpStatusCode Int?             @map(\"http_status_code\")\n  responseTimeMs Int?             @map(\"response_time_ms\")\n  errorType      HealthErrorType? @map(\"error_type\")\n  errorMessage   String?          @map(\"error_message\")\n  trigger        CheckTrigger\n  // 2 when the first attempt failed and the single retry decided the result.\n  attempts       Int              @default(1)\n  // The bulk run (scheduled or \"Check All\") this check belonged to; null for\n  // single-app checks (Check Now, after create / enable / import).\n  runId          String?          @map(\"run_id\")\n\n  // Projects are only ever soft-deleted, so history can never be orphaned.\n  project Project       @relation(fields: [projectId], references: [id], onDelete: Restrict)\n  run     SchedulerRun? @relation(fields: [runId], references: [id], onDelete: SetNull)\n\n  @@index([projectId, checkedAt(sort: Desc)])\n  @@index([runId])\n  @@map(\"health_checks\")\n}\n\n// ---------------------------------------------------------------------------\n// Scheduling\n// ---------------------------------------------------------------------------\n\n// All values are understood by the slot calculator (src/lib/schedule.ts);\n// which ones the settings page offers is decided in src/lib/validation/settings.ts.\nenum CheckFrequency {\n  HOURLY\n  EVERY_6_HOURS\n  EVERY_12_HOURS\n  DAILY\n}\n\n// Singleton (id is always 1; enforced by a CHECK constraint in the migration).\nmodel MonitoringSettings {\n  id                   Int            @id @default(1)\n  frequency            CheckFrequency @default(EVERY_12_HOURS)\n  checkTime            String         @default(\"09:00\") @map(\"check_time\") // HH:mm in `timezone`\n  timezone             String         @default(\"Asia/Kolkata\") // IANA name; also the display timezone\n  // A response slower than this is recorded as SLOW instead of WORKING.\n  slowThresholdSeconds Int            @default(30) @map(\"slow_threshold_seconds\")\n  // Only slots after this instant are run, so saving a new schedule never\n  // triggers an immediate catch-up run.\n  updatedAt            DateTime       @updatedAt @map(\"updated_at\") @db.Timestamptz(3)\n\n  @@map(\"monitoring_settings\")\n}\n\nenum RunStatus {\n  RUNNING\n  COMPLETED\n  FAILED\n}\n\n// One row per bulk run (scheduled or \"Check All\"): both the execution log and\n// the lock. Two indexes do the locking:\n//   - slot_key UNIQUE         → a scheduled slot can be claimed only once\n//   - partial unique index on status = 'RUNNING' (raw SQL in the migration)\n//                             → at most one bulk run at a time, system-wide\nmodel SchedulerRun {\n  id           String       @id @default(cuid())\n  trigger      CheckTrigger\n  slotKey      String?      @unique @map(\"slot_key\") // ISO instant of the slot; null for manual runs\n  status       RunStatus    @default(RUNNING)\n  startedBy    String?      @map(\"started_by\") // username, manual runs only\n  startedAt    DateTime     @default(now()) @map(\"started_at\") @db.Timestamptz(3)\n  heartbeatAt  DateTime     @default(now()) @map(\"heartbeat_at\") @db.Timestamptz(3)\n  finishedAt   DateTime?    @map(\"finished_at\") @db.Timestamptz(3)\n  appsFound    Int?         @map(\"apps_found\")\n  appsChecked  Int?         @map(\"apps_checked\")\n  working      Int?\n  slow         Int?\n  notWorking   Int?         @map(\"not_working\")\n  disabled     Int?\n  errored      Int?\n  errorMessage String?      @map(\"error_message\")\n\n  healthChecks HealthCheck[]\n\n  @@index([startedAt(sort: Desc)])\n  @@map(\"scheduler_runs\")\n}\n\n// ---------------------------------------------------------------------------\n// Domain expiry\n// ---------------------------------------------------------------------------\n\nenum DomainLookupResult {\n  FOUND // the registry returned the domain's record\n  NOT_FOUND // the registry says the domain is not registered (RDAP 404)\n  UNSUPPORTED // no RDAP server is known for the domain's ending\n  FAILED // timeout, network error or an unreadable answer\n}\n\n// One row per registered domain (e.g. \"twilbp.com\"), shared by every app whose\n// health API URL is on it. Which apps use a domain is derived from their URLs at\n// read time (src/lib/domains/name.ts), so app edits never have to update this table.\n// Watched = (used by a monitored app OR added_manually) AND hidden_at IS NULL.\nmodel Domain {\n  id   String @id @default(cuid())\n  name String @unique // lower-case ASCII (punycode for IDNs)\n\n  // Added on the Domains page, so it is watched even when no app uses it.\n  addedManually Boolean   @default(false) @map(\"added_manually\")\n  // \"Deleted\" while an app still uses it: not checked or listed until restored.\n  hiddenAt      DateTime? @map(\"hidden_at\") @db.Timestamptz(3)\n  // Where the domain is registered / which account renews it (free text).\n  registrar     String?\n\n  // Dates as published by the registry. A failed lookup keeps the last good values.\n  registeredAt      DateTime? @map(\"registered_at\") @db.Timestamptz(3)\n  expiresAt         DateTime? @map(\"expires_at\") @db.Timestamptz(3)\n  lastChangedAt     DateTime? @map(\"last_changed_at\") @db.Timestamptz(3)\n  registryUpdatedAt DateTime? @map(\"registry_updated_at\") @db.Timestamptz(3)\n  registryStatuses  String[]  @default([]) @map(\"registry_statuses\")\n  // Entered by hand for registries that don't publish an expiry date (e.g. .ch).\n  // A date from the registry always wins over it.\n  manualExpiresAt   DateTime? @map(\"manual_expires_at\") @db.Timestamptz(3)\n\n  rdapServer       String?             @map(\"rdap_server\")\n  lastLookupResult DomainLookupResult? @map(\"last_lookup_result\") // null = never looked up\n  lastLookupError  String?             @map(\"last_lookup_error\")\n  lastCheckedAt    DateTime?           @map(\"last_checked_at\") @db.Timestamptz(3)\n\n  createdAt DateTime @default(now()) @map(\"created_at\") @db.Timestamptz(3)\n  updatedAt DateTime @updatedAt @map(\"updated_at\") @db.Timestamptz(3)\n\n  @@map(\"domains\")\n}\n\n// One row per domain-expiry run (daily or \"Check Domains Now\"). Same locking as\n// scheduler_runs, but separate, so domain lookups never hold up health checks:\n//   - slot_key UNIQUE         → a daily slot can be claimed only once\n//   - partial unique index on status = 'RUNNING' (raw SQL in the migration)\nmodel DomainRun {\n  id             String       @id @default(cuid())\n  trigger        CheckTrigger\n  slotKey        String?      @unique @map(\"slot_key\")\n  status         RunStatus    @default(RUNNING)\n  startedBy      String?      @map(\"started_by\")\n  startedAt      DateTime     @default(now()) @map(\"started_at\") @db.Timestamptz(3)\n  heartbeatAt    DateTime     @default(now()) @map(\"heartbeat_at\") @db.Timestamptz(3)\n  finishedAt     DateTime?    @map(\"finished_at\") @db.Timestamptz(3)\n  domainsFound   Int?         @map(\"domains_found\")\n  domainsChecked Int?         @map(\"domains_checked\") // the registry answered (found or not registered)\n  failed         Int?\n  errorMessage   String?      @map(\"error_message\")\n\n  @@index([startedAt(sort: Desc)])\n  @@map(\"domain_runs\")\n}\n",
  "runtimeDataModel": {
    "models": {},
    "enums": {},
    "types": {}
  },
  "parameterizationSchema": {
    "strings": [],
    "graph": ""
  }
}

config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"password_hash\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"UserRole\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"}],\"dbName\":\"users\",\"schema\":null},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"token_hash\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"}],\"dbName\":\"sessions\",\"schema\":null},\"LoginAttempt\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ip\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"success\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"}],\"dbName\":\"login_attempts\",\"schema\":null},\"Project\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"projectCode\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"project_code\"},{\"name\":\"projectName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"project_name\"},{\"name\":\"productionUrl\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"production_url\"},{\"name\":\"monitoringEnabled\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"monitoring_enabled\"},{\"name\":\"expectedHttpStatus\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"expected_http_status\"},{\"name\":\"timeoutSeconds\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"timeout_seconds\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"deleted_at\"},{\"name\":\"currentStatus\",\"kind\":\"enum\",\"type\":\"HealthStatus\",\"dbName\":\"current_status\"},{\"name\":\"lastCheckedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"last_checked_at\"},{\"name\":\"lastSuccessfulCheckAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"last_successful_check_at\"},{\"name\":\"lastFailedCheckAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"last_failed_check_at\"},{\"name\":\"failureStartedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"failure_started_at\"},{\"name\":\"lastRecoveredAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"last_recovered_at\"},{\"name\":\"currentHttpStatus\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"current_http_status\"},{\"name\":\"currentResponseTimeMs\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"current_response_time_ms\"},{\"name\":\"currentErrorMessage\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"current_error_message\"},{\"name\":\"healthChecks\",\"kind\":\"object\",\"type\":\"HealthCheck\",\"relationName\":\"HealthCheckToProject\"}],\"dbName\":\"projects\",\"schema\":null},\"HealthCheck\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"projectId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"project_id\"},{\"name\":\"checkedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"checked_at\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"HealthStatus\"},{\"name\":\"httpStatusCode\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"http_status_code\"},{\"name\":\"responseTimeMs\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"response_time_ms\"},{\"name\":\"errorType\",\"kind\":\"enum\",\"type\":\"HealthErrorType\",\"dbName\":\"error_type\"},{\"name\":\"errorMessage\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"error_message\"},{\"name\":\"trigger\",\"kind\":\"enum\",\"type\":\"CheckTrigger\"},{\"name\":\"attempts\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"project\",\"kind\":\"object\",\"type\":\"Project\",\"relationName\":\"HealthCheckToProject\"},{\"name\":\"run\",\"kind\":\"object\",\"type\":\"SchedulerRun\",\"relationName\":\"HealthCheckToSchedulerRun\"}],\"dbName\":\"health_checks\",\"schema\":null},\"MonitoringSettings\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"frequency\",\"kind\":\"enum\",\"type\":\"CheckFrequency\"},{\"name\":\"checkTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"check_time\"},{\"name\":\"timezone\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slowThresholdSeconds\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"slow_threshold_seconds\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"monitoring_settings\",\"schema\":null},\"SchedulerRun\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trigger\",\"kind\":\"enum\",\"type\":\"CheckTrigger\"},{\"name\":\"slotKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"slot_key\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"RunStatus\"},{\"name\":\"startedBy\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"started_by\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"started_at\"},{\"name\":\"heartbeatAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"heartbeat_at\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"finished_at\"},{\"name\":\"appsFound\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"apps_found\"},{\"name\":\"appsChecked\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"apps_checked\"},{\"name\":\"working\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"slow\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"notWorking\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"not_working\"},{\"name\":\"disabled\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"errored\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"errorMessage\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"error_message\"},{\"name\":\"healthChecks\",\"kind\":\"object\",\"type\":\"HealthCheck\",\"relationName\":\"HealthCheckToSchedulerRun\"}],\"dbName\":\"scheduler_runs\",\"schema\":null},\"Domain\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"addedManually\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"added_manually\"},{\"name\":\"hiddenAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"hidden_at\"},{\"name\":\"registrar\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"registeredAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"registered_at\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"lastChangedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"last_changed_at\"},{\"name\":\"registryUpdatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"registry_updated_at\"},{\"name\":\"registryStatuses\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"registry_statuses\"},{\"name\":\"manualExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"manual_expires_at\"},{\"name\":\"rdapServer\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"rdap_server\"},{\"name\":\"lastLookupResult\",\"kind\":\"enum\",\"type\":\"DomainLookupResult\",\"dbName\":\"last_lookup_result\"},{\"name\":\"lastLookupError\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"last_lookup_error\"},{\"name\":\"lastCheckedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"last_checked_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"domains\",\"schema\":null},\"DomainRun\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trigger\",\"kind\":\"enum\",\"type\":\"CheckTrigger\"},{\"name\":\"slotKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"slot_key\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"RunStatus\"},{\"name\":\"startedBy\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"started_by\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"started_at\"},{\"name\":\"heartbeatAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"heartbeat_at\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"finished_at\"},{\"name\":\"domainsFound\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"domains_found\"},{\"name\":\"domainsChecked\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"domains_checked\"},{\"name\":\"failed\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"errorMessage\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"error_message\"}],\"dbName\":\"domain_runs\",\"schema\":null}},\"enums\":{},\"types\":{}}")
config.parameterizationSchema = {
  strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"sessions\",\"_count\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"LoginAttempt.findUnique\",\"LoginAttempt.findUniqueOrThrow\",\"LoginAttempt.findFirst\",\"LoginAttempt.findFirstOrThrow\",\"LoginAttempt.findMany\",\"LoginAttempt.createOne\",\"LoginAttempt.createMany\",\"LoginAttempt.createManyAndReturn\",\"LoginAttempt.updateOne\",\"LoginAttempt.updateMany\",\"LoginAttempt.updateManyAndReturn\",\"LoginAttempt.upsertOne\",\"LoginAttempt.deleteOne\",\"LoginAttempt.deleteMany\",\"LoginAttempt.groupBy\",\"LoginAttempt.aggregate\",\"project\",\"healthChecks\",\"run\",\"Project.findUnique\",\"Project.findUniqueOrThrow\",\"Project.findFirst\",\"Project.findFirstOrThrow\",\"Project.findMany\",\"Project.createOne\",\"Project.createMany\",\"Project.createManyAndReturn\",\"Project.updateOne\",\"Project.updateMany\",\"Project.updateManyAndReturn\",\"Project.upsertOne\",\"Project.deleteOne\",\"Project.deleteMany\",\"_avg\",\"_sum\",\"Project.groupBy\",\"Project.aggregate\",\"HealthCheck.findUnique\",\"HealthCheck.findUniqueOrThrow\",\"HealthCheck.findFirst\",\"HealthCheck.findFirstOrThrow\",\"HealthCheck.findMany\",\"HealthCheck.createOne\",\"HealthCheck.createMany\",\"HealthCheck.createManyAndReturn\",\"HealthCheck.updateOne\",\"HealthCheck.updateMany\",\"HealthCheck.updateManyAndReturn\",\"HealthCheck.upsertOne\",\"HealthCheck.deleteOne\",\"HealthCheck.deleteMany\",\"HealthCheck.groupBy\",\"HealthCheck.aggregate\",\"MonitoringSettings.findUnique\",\"MonitoringSettings.findUniqueOrThrow\",\"MonitoringSettings.findFirst\",\"MonitoringSettings.findFirstOrThrow\",\"MonitoringSettings.findMany\",\"MonitoringSettings.createOne\",\"MonitoringSettings.createMany\",\"MonitoringSettings.createManyAndReturn\",\"MonitoringSettings.updateOne\",\"MonitoringSettings.updateMany\",\"MonitoringSettings.updateManyAndReturn\",\"MonitoringSettings.upsertOne\",\"MonitoringSettings.deleteOne\",\"MonitoringSettings.deleteMany\",\"MonitoringSettings.groupBy\",\"MonitoringSettings.aggregate\",\"SchedulerRun.findUnique\",\"SchedulerRun.findUniqueOrThrow\",\"SchedulerRun.findFirst\",\"SchedulerRun.findFirstOrThrow\",\"SchedulerRun.findMany\",\"SchedulerRun.createOne\",\"SchedulerRun.createMany\",\"SchedulerRun.createManyAndReturn\",\"SchedulerRun.updateOne\",\"SchedulerRun.updateMany\",\"SchedulerRun.updateManyAndReturn\",\"SchedulerRun.upsertOne\",\"SchedulerRun.deleteOne\",\"SchedulerRun.deleteMany\",\"SchedulerRun.groupBy\",\"SchedulerRun.aggregate\",\"Domain.findUnique\",\"Domain.findUniqueOrThrow\",\"Domain.findFirst\",\"Domain.findFirstOrThrow\",\"Domain.findMany\",\"Domain.createOne\",\"Domain.createMany\",\"Domain.createManyAndReturn\",\"Domain.updateOne\",\"Domain.updateMany\",\"Domain.updateManyAndReturn\",\"Domain.upsertOne\",\"Domain.deleteOne\",\"Domain.deleteMany\",\"Domain.groupBy\",\"Domain.aggregate\",\"DomainRun.findUnique\",\"DomainRun.findUniqueOrThrow\",\"DomainRun.findFirst\",\"DomainRun.findFirstOrThrow\",\"DomainRun.findMany\",\"DomainRun.createOne\",\"DomainRun.createMany\",\"DomainRun.createManyAndReturn\",\"DomainRun.updateOne\",\"DomainRun.updateMany\",\"DomainRun.updateManyAndReturn\",\"DomainRun.upsertOne\",\"DomainRun.deleteOne\",\"DomainRun.deleteMany\",\"DomainRun.groupBy\",\"DomainRun.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"CheckTrigger\",\"trigger\",\"slotKey\",\"RunStatus\",\"status\",\"startedBy\",\"startedAt\",\"heartbeatAt\",\"finishedAt\",\"domainsFound\",\"domainsChecked\",\"failed\",\"errorMessage\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"name\",\"addedManually\",\"hiddenAt\",\"registrar\",\"registeredAt\",\"expiresAt\",\"lastChangedAt\",\"registryUpdatedAt\",\"registryStatuses\",\"manualExpiresAt\",\"rdapServer\",\"DomainLookupResult\",\"lastLookupResult\",\"lastLookupError\",\"lastCheckedAt\",\"createdAt\",\"updatedAt\",\"has\",\"hasEvery\",\"hasSome\",\"appsFound\",\"appsChecked\",\"working\",\"slow\",\"notWorking\",\"disabled\",\"errored\",\"every\",\"some\",\"none\",\"CheckFrequency\",\"frequency\",\"checkTime\",\"timezone\",\"slowThresholdSeconds\",\"projectId\",\"checkedAt\",\"HealthStatus\",\"httpStatusCode\",\"responseTimeMs\",\"HealthErrorType\",\"errorType\",\"attempts\",\"runId\",\"projectCode\",\"projectName\",\"productionUrl\",\"monitoringEnabled\",\"expectedHttpStatus\",\"timeoutSeconds\",\"description\",\"deletedAt\",\"currentStatus\",\"lastSuccessfulCheckAt\",\"lastFailedCheckAt\",\"failureStartedAt\",\"lastRecoveredAt\",\"currentHttpStatus\",\"currentResponseTimeMs\",\"currentErrorMessage\",\"username\",\"ip\",\"success\",\"tokenHash\",\"userId\",\"passwordHash\",\"UserRole\",\"role\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\",\"push\"]"),
  graph: "uwNWkAEKBAAAvgIAIKEBAAC8AgAwogEAAAkAEKMBAAC8AgAwpAEBAAAAAcwBQACIAgAhzQFAAIgCACH5AQEAAAAB_gEBAIQCACGAAgAAvQKAAiIBAAAAAQAgCQMAAMACACChAQAAvwIAMKIBAAADABCjAQAAvwIAMKQBAQCEAgAhwgFAAIgCACHMAUAAiAIAIfwBAQCEAgAh_QEBAIQCACEBAwAAqQMAIAkDAADAAgAgoQEAAL8CADCiAQAAAwAQowEAAL8CADCkAQEAAAABwgFAAIgCACHMAUAAiAIAIfwBAQAAAAH9AQEAhAIAIQMAAAADACABAAAEADACAAAFACABAAAAAwAgAQAAAAEAIAoEAAC-AgAgoQEAALwCADCiAQAACQAQowEAALwCADCkAQEAhAIAIcwBQACIAgAhzQFAAIgCACH5AQEAhAIAIf4BAQCEAgAhgAIAAL0CgAIiAQQAAKgDACADAAAACQAgAQAACgAwAgAAAQAgAwAAAAkAIAEAAAoAMAIAAAEAIAMAAAAJACABAAAKADACAAABACAHBAAApwMAIKQBAQAAAAHMAUAAAAABzQFAAAAAAfkBAQAAAAH-AQEAAAABgAIAAACAAgIBCwAADgAgBqQBAQAAAAHMAUAAAAABzQFAAAAAAfkBAQAAAAH-AQEAAAABgAIAAACAAgIBCwAAEAAwAQsAABAAMAcEAACaAwAgpAEBAMcCACHMAUAAywIAIc0BQADLAgAh-QEBAMcCACH-AQEAxwIAIYACAACZA4ACIgIAAAABACALAAATACAGpAEBAMcCACHMAUAAywIAIc0BQADLAgAh-QEBAMcCACH-AQEAxwIAIYACAACZA4ACIgIAAAAJACALAAAVACACAAAACQAgCwAAFQAgAwAAAAEAIBIAAA4AIBMAABMAIAEAAAABACABAAAACQAgAwUAAJYDACAYAACYAwAgGQAAlwMAIAmhAQAAuAIAMKIBAAAcABCjAQAAuAIAMKQBAQDsAQAhzAFAAPABACHNAUAA8AEAIfkBAQDsAQAh_gEBAOwBACGAAgAAuQKAAiIDAAAACQAgAQAAGwAwFwAAHAAgAwAAAAkAIAEAAAoAMAIAAAEAIAEAAAAFACABAAAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgBgMAAJUDACCkAQEAAAABwgFAAAAAAcwBQAAAAAH8AQEAAAAB_QEBAAAAAQELAAAkACAFpAEBAAAAAcIBQAAAAAHMAUAAAAAB_AEBAAAAAf0BAQAAAAEBCwAAJgAwAQsAACYAMAYDAACUAwAgpAEBAMcCACHCAUAAywIAIcwBQADLAgAh_AEBAMcCACH9AQEAxwIAIQIAAAAFACALAAApACAFpAEBAMcCACHCAUAAywIAIcwBQADLAgAh_AEBAMcCACH9AQEAxwIAIQIAAAADACALAAArACACAAAAAwAgCwAAKwAgAwAAAAUAIBIAACQAIBMAACkAIAEAAAAFACABAAAAAwAgAwUAAJEDACAYAACTAwAgGQAAkgMAIAihAQAAtwIAMKIBAAAyABCjAQAAtwIAMKQBAQDsAQAhwgFAAPABACHMAUAA8AEAIfwBAQDsAQAh_QEBAOwBACEDAAAAAwAgAQAAMQAwFwAAMgAgAwAAAAMAIAEAAAQAMAIAAAUAIAihAQAAtgIAMKIBAAA4ABCjAQAAtgIAMKQBAQAAAAHMAUAAiAIAIfkBAQCEAgAh-gEBAIQCACH7ASAAlAIAIQEAAAA1ACABAAAANQAgCKEBAAC2AgAwogEAADgAEKMBAAC2AgAwpAEBAIQCACHMAUAAiAIAIfkBAQCEAgAh-gEBAIQCACH7ASAAlAIAIQADAAAAOAAgAQAAOQAwAgAANQAgAwAAADgAIAEAADkAMAIAADUAIAMAAAA4ACABAAA5ADACAAA1ACAFpAEBAAAAAcwBQAAAAAH5AQEAAAAB-gEBAAAAAfsBIAAAAAEBCwAAPQAgBaQBAQAAAAHMAUAAAAAB-QEBAAAAAfoBAQAAAAH7ASAAAAABAQsAAD8AMAELAAA_ADAFpAEBAMcCACHMAUAAywIAIfkBAQDHAgAh-gEBAMcCACH7ASAA0QIAIQIAAAA1ACALAABCACAFpAEBAMcCACHMAUAAywIAIfkBAQDHAgAh-gEBAMcCACH7ASAA0QIAIQIAAAA4ACALAABEACACAAAAOAAgCwAARAAgAwAAADUAIBIAAD0AIBMAAEIAIAEAAAA1ACABAAAAOAAgAwUAAI4DACAYAACQAwAgGQAAjwMAIAihAQAAtQIAMKIBAABLABCjAQAAtQIAMKQBAQDsAQAhzAFAAPABACH5AQEA7AEAIfoBAQDsAQAh-wEgAIwCACEDAAAAOAAgAQAASgAwFwAASwAgAwAAADgAIAEAADkAMAIAADUAIBg9AACYAgAgoQEAAK4CADCiAQAAWgAQowEAAK4CADCkAQEAAAABywFAAIkCACHMAUAAiAIAIc0BQACIAgAh6QEBAIQCACHqAQEAhAIAIesBAQCEAgAh7AEgAJQCACHtAQIAoQIAIe4BAgChAgAh7wEBAIYCACHwAUAAiQIAIfEBAACvAuMBI_IBQACJAgAh8wFAAIkCACH0AUAAiQIAIfUBQACJAgAh9gECAIoCACH3AQIAigIAIfgBAQCGAgAhAQAAAE4AIBA8AACzAgAgPgAAtAIAIKEBAACwAgAwogEAAFAAEKMBAACwAgAwpAEBAIQCACGmAQAAhQKmASKpAQAAsQLjASKxAQEAhgIAIeABAQCEAgAh4QFAAIgCACHjAQIAigIAIeQBAgCKAgAh5gEAALIC5gEj5wECAKECACHoAQEAhgIAIQc8AACMAwAgPgAAjQMAILEBAADBAgAg4wEAAMECACDkAQAAwQIAIOYBAADBAgAg6AEAAMECACAQPAAAswIAID4AALQCACChAQAAsAIAMKIBAABQABCjAQAAsAIAMKQBAQAAAAGmAQAAhQKmASKpAQAAsQLjASKxAQEAhgIAIeABAQCEAgAh4QFAAIgCACHjAQIAigIAIeQBAgCKAgAh5gEAALIC5gEj5wECAKECACHoAQEAhgIAIQMAAABQACABAABRADACAABSACAUPQAAmAIAIKEBAACXAgAwogEAAFQAEKMBAACXAgAwpAEBAIQCACGmAQAAhQKmASKnAQEAhgIAIakBAACHAqkBIqoBAQCGAgAhqwFAAIgCACGsAUAAiAIAIa0BQACJAgAhsQEBAIYCACHRAQIAigIAIdIBAgCKAgAh0wECAIoCACHUAQIAigIAIdUBAgCKAgAh1gECAIoCACHXAQIAigIAIQEAAABUACADAAAAUAAgAQAAUQAwAgAAUgAgAQAAAFAAIAEAAABQACABAAAATgAgGD0AAJgCACChAQAArgIAMKIBAABaABCjAQAArgIAMKQBAQCEAgAhywFAAIkCACHMAUAAiAIAIc0BQACIAgAh6QEBAIQCACHqAQEAhAIAIesBAQCEAgAh7AEgAJQCACHtAQIAoQIAIe4BAgChAgAh7wEBAIYCACHwAUAAiQIAIfEBAACvAuMBI_IBQACJAgAh8wFAAIkCACH0AUAAiQIAIfUBQACJAgAh9gECAIoCACH3AQIAigIAIfgBAQCGAgAhDD0AAO0CACDLAQAAwQIAIO8BAADBAgAg8AEAAMECACDxAQAAwQIAIPIBAADBAgAg8wEAAMECACD0AQAAwQIAIPUBAADBAgAg9gEAAMECACD3AQAAwQIAIPgBAADBAgAgAwAAAFoAIAEAAFsAMAIAAE4AIAMAAABaACABAABbADACAABOACADAAAAWgAgAQAAWwAwAgAATgAgFT0AAIsDACCkAQEAAAABywFAAAAAAcwBQAAAAAHNAUAAAAAB6QEBAAAAAeoBAQAAAAHrAQEAAAAB7AEgAAAAAe0BAgAAAAHuAQIAAAAB7wEBAAAAAfABQAAAAAHxAQAAAOMBA_IBQAAAAAHzAUAAAAAB9AFAAAAAAfUBQAAAAAH2AQIAAAAB9wECAAAAAfgBAQAAAAEBCwAAXwAgFKQBAQAAAAHLAUAAAAABzAFAAAAAAc0BQAAAAAHpAQEAAAAB6gEBAAAAAesBAQAAAAHsASAAAAAB7QECAAAAAe4BAgAAAAHvAQEAAAAB8AFAAAAAAfEBAAAA4wED8gFAAAAAAfMBQAAAAAH0AUAAAAAB9QFAAAAAAfYBAgAAAAH3AQIAAAAB-AEBAAAAAQELAABhADABCwAAYQAwFT0AAIEDACCkAQEAxwIAIcsBQADMAgAhzAFAAMsCACHNAUAAywIAIekBAQDHAgAh6gEBAMcCACHrAQEAxwIAIewBIADRAgAh7QECAOcCACHuAQIA5wIAIe8BAQDJAgAh8AFAAMwCACHxAQAAgAPjASPyAUAAzAIAIfMBQADMAgAh9AFAAMwCACH1AUAAzAIAIfYBAgDNAgAh9wECAM0CACH4AQEAyQIAIQIAAABOACALAABkACAUpAEBAMcCACHLAUAAzAIAIcwBQADLAgAhzQFAAMsCACHpAQEAxwIAIeoBAQDHAgAh6wEBAMcCACHsASAA0QIAIe0BAgDnAgAh7gECAOcCACHvAQEAyQIAIfABQADMAgAh8QEAAIAD4wEj8gFAAMwCACHzAUAAzAIAIfQBQADMAgAh9QFAAMwCACH2AQIAzQIAIfcBAgDNAgAh-AEBAMkCACECAAAAWgAgCwAAZgAgAgAAAFoAIAsAAGYAIAMAAABOACASAABfACATAABkACABAAAATgAgAQAAAFoAIBAFAAD7AgAgGAAA_gIAIBkAAP0CACBNAAD8AgAgTgAA_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-ASAA0QIAIb8BQADMAgAhwAEBAMkCACHBAUAAzAIAIcIBQADMAgAhwwFAAMwCACHEAUAAzAIAIcUBAADSAgAgxgFAAMwCACHHAQEAyQIAIckBAADTAskBI8oBAQDJAgAhywFAAMwCACHMAUAAywIAIc0BQADLAgAhAgAAALkBACALAADGAQAgEaQBAQDHAgAhvQEBAMcCACG-ASAA0QIAIb8BQADMAgAhwAEBAMkCACHBAUAAzAIAIcIBQADMAgAhwwFAAMwCACHEAUAAzAIAIcUBAADSAgAgxgFAAMwCACHHAQEAyQIAIckBAADTAskBI8oBAQDJAgAhywFAAMwCACHMAUAAywIAIc0BQADLAgAhAgAAALwBACALAADIAQAgAgAAALwBACALAADIAQAgAwAAALkBACASAADBAQAgEwAAxgEAIAEAAAC5AQAgAQAAALwBACAOBQAAzgIAIBgAANACACAZAADPAgAgvwEAAMECACDAAQAAwQIAIMEBAADBAgAgwgEAAMECACDDAQAAwQIAIMQBAADBAgAgxgEAAMECACDHAQAAwQIAIMkBAADBAgAgygEAAMECACDLAQAAwQIAIBShAQAAiwIAMKIBAADPAQAQowEAAIsCADCkAQEA7AEAIb0BAQDsAQAhvgEgAIwCACG_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_AaYBIg4FAAD0AQAgGAAA_gEAIBkAAP4BACCyAQEAAAABswEBAAAABbQBAQAAAAW1AQEAAAABtgEBAAAAAbcBAQAAAAG4AQEAAAABuQEBAP0BACG6AQEAAAABuwEBAAAAAbwBAQAAAAEHBQAA-QEAIBgAAPwBACAZAAD8AQAgsgEAAACpAQKzAQAAAKkBCLQBAAAAqQEIuQEAAPsBqQEiCwUAAPkBACAYAAD6AQAgGQAA-gEAILIBQAAAAAGzAUAAAAAEtAFAAAAABLUBQAAAAAG2AUAAAAABtwFAAAAAAbgBQAAAAAG5AUAA-AEAIQsFAAD0AQAgGAAA9wEAIBkAAPcBACCyAUAAAAABswFAAAAABbQBQAAAAAW1AUAAAAABtgFAAAAAAbcBQAAAAAG4AUAAAAABuQFAAPYBACENBQAA9AEAIBgAAPQBACAZAAD0AQAgTQAA9QEAIE4AAPQBACCyAQIAAAABswECAAAABbQBAgAAAAW1AQIAAAABtgECAAAAAbcBAgAAAAG4AQIAAAABuQECAPMBACENBQAA9AEAIBgAAPQBACAZAAD0AQAgTQAA9QEAIE4AAPQBACCyAQIAAAABswECAAAABbQBAgAAAAW1AQIAAAABtgECAAAAAbcBAgAAAAG4AQIAAAABuQECAPMBACEIsgECAAAAAbMBAgAAAAW0AQIAAAAFtQECAAAAAbYBAgAAAAG3AQIAAAABuAECAAAAAbkBAgD0AQAhCLIBCAAAAAGzAQgAAAAFtAEIAAAABbUBCAAAAAG2AQgAAAABtwEIAAAAAbgBCAAAAAG5AQgA9QEAIQsFAAD0AQAgGAAA9wEAIBkAAPcBACCyAUAAAAABswFAAAAABbQBQAAAAAW1AUAAAAABtgFAAAAAAbcBQAAAAAG4AUAAAAABuQFAAPYBACEIsgFAAAAAAbMBQAAAAAW0AUAAAAAFtQFAAAAAAbYBQAAAAAG3AUAAAAABuAFAAAAAAbkBQAD3AQAhCwUAAPkBACAYAAD6AQAgGQAA-gEAILIBQAAAAAGzAUAAAAAEtAFAAAAABLUBQAAAAAG2AUAAAAABtwFAAAAAAbgBQAAAAAG5AUAA-AEAIQiyAQIAAAABswECAAAABLQBAgAAAAS1AQIAAAABtgECAAAAAbcBAgAAAAG4AQIAAAABuQECAPkBACEIsgFAAAAAAbMBQAAAAAS0AUAAAAAEtQFAAAAAAbYBQAAAAAG3AUAAAAABuAFAAAAAAbkBQAD6AQAhBwUAAPkBACAYAAD8AQAgGQAA_AEAILIBAAAAqQECswEAAACpAQi0AQAAAKkBCLkBAAD7AakBIgSyAQAAAKkBArMBAAAAqQEItAEAAACpAQi5AQAA_AGpASIOBQAA9AEAIBgAAP4BACAZAAD-AQAgsgEBAAAAAbMBAQAAAAW0AQEAAAAFtQEBAAAAAbYBAQAAAAG3AQEAAAABuAEBAAAAAbkBAQD9AQAhugEBAAAAAbsBAQAAAAG8AQEAAAABC7IBAQAAAAGzAQEAAAAFtAEBAAAABbUBAQAAAAG2AQEAAAABtwEBAAAAAbgBAQAAAAG5AQEA_gEAIboBAQAAAAG7AQEAAAABvAEBAAAAAQcFAAD5AQAgGAAAgAIAIBkAAIACACCyAQAAAKYBArMBAAAApgEItAEAAACmAQi5AQAA_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_QEBAOwBACEJoQEAALgCADCiAQAAHAAQowEAALgCADCkAQEA7AEAIcwBQADwAQAhzQFAAPABACH5AQEA7AEAIf4BAQDsAQAhgAIAALkCgAIiBwUAAPkBACAYAAC7AgAgGQAAuwIAILIBAAAAgAICswEAAACAAgi0AQAAAIACCLkBAAC6AoACIgcFAAD5AQAgGAAAuwIAIBkAALsCACCyAQAAAIACArMBAAAAgAIItAEAAACAAgi5AQAAugKAAiIEsgEAAACAAgKzAQAAAIACCLQBAAAAgAIIuQEAALsCgAIiCgQAAL4CACChAQAAvAIAMKIBAAAJABCjAQAAvAIAMKQBAQCEAgAhzAFAAIgCACHNAUAAiAIAIfkBAQCEAgAh_gEBAIQCACGAAgAAvQKAAiIEsgEAAACAAgKzAQAAAIACCLQBAAAAgAIIuQEAALsCgAIiA9gBAAADACDZAQAAAwAg2gEAAAMAIAkDAADAAgAgoQEAAL8CADCiAQAAAwAQowEAAL8CADCkAQEAhAIAIcIBQACIAgAhzAFAAIgCACH8AQEAhAIAIf0BAQCEAgAhDAQAAL4CACChAQAAvAIAMKIBAAAJABCjAQAAvAIAMKQBAQCEAgAhzAFAAIgCACHNAUAAiAIAIfkBAQCEAgAh_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-cBAgDnAgAh6AEBAMkCACELPgAA-gIAIKQBAQAAAAGmAQAAAKYBAqkBAAAA4wECsQEBAAAAAeEBQAAAAAHjAQIAAAAB5AECAAAAAeYBAAAA5gED5wECAAAAAegBAQAAAAEEEgAAggMAMIMCAACDAwAwhQIAAIUDACCJAgAA3wIAMAw9AADtAgAgywEAAMECACDvAQAAwQIAIPABAADBAgAg8QEAAMECACDyAQAAwQIAIPMBAADBAgAg9AEAAMECACD1AQAAwQIAIPYBAADBAgAg9wEAAMECACD4AQAAwQIAIAw9AADtAgAgpwEAAMECACCqAQAAwQIAIK0BAADBAgAgsQEAAMECACDRAQAAwQIAINIBAADBAgAg0wEAAMECACDUAQAAwQIAINUBAADBAgAg1gEAAMECACDXAQAAwQIAIAAAAAAAAAUSAACrAwAgEwAArgMAIIMCAACsAwAghAIAAK0DACCJAgAAAQAgAxIAAKsDACCDAgAArAMAIIkCAAABACAAAAABhgIAAACAAgILEgAAmwMAMBMAAKADADCDAgAAnAMAMIQCAACdAwAwhQIAAJ4DACCGAgAAnwMAMIcCAACfAwAwiAIAAJ8DADCJAgAAnwMAMIoCAAChAwAwiwIAAKIDADAEpAEBAAAAAcIBQAAAAAHMAUAAAAAB_AEBAAAAAQIAAAAFACASAACmAwAgAwAAAAUAIBIAAKYDACATAAClAwAgAQsAAKoDADAJAwAAwAIAIKEBAAC_AgAwogEAAAMAEKMBAAC_AgAwpAEBAAAAAcIBQACIAgAhzAFAAIgCACH8AQEAAAAB_QEBAIQCACECAAAABQAgCwAApQMAIAIAAACjAwAgCwAApAMAIAihAQAAogMAMKIBAACjAwAQowEAAKIDADCkAQEAhAIAIcIBQACIAgAhzAFAAIgCACH8AQEAhAIAIf0BAQCEAgAhCKEBAACiAwAwogEAAKMDABCjAQAAogMAMKQBAQCEAgAhwgFAAIgCACHMAUAAiAIAIfwBAQCEAgAh_QEBAIQCACEEpAEBAMcCACHCAUAAywIAIcwBQADLAgAh_AEBAMcCACEEpAEBAMcCACHCAUAAywIAIcwBQADLAgAh_AEBAMcCACEEpAEBAAAAAcIBQAAAAAHMAUAAAAAB_AEBAAAAAQQSAACbAwAwgwIAAJwDADCFAgAAngMAIIkCAACfAwAwAAEEAACoAwAgBKQBAQAAAAHCAUAAAAABzAFAAAAAAfwBAQAAAAEGpAEBAAAAAcwBQAAAAAHNAUAAAAAB-QEBAAAAAf4BAQAAAAGAAgAAAIACAgIAAAABACASAACrAwAgAwAAAAkAIBIAAKsDACATAACvAwAgCAAAAAkAIAsAAK8DACCkAQEAxwIAIcwBQADLAgAhzQFAAMsCACH5AQEAxwIAIf4BAQDHAgAhgAIAAJkDgAIiBqQBAQDHAgAhzAFAAMsCACHNAUAAywIAIfkBAQDHAgAh_gEBAMcCACGAAgAAmQOAAiIKpAEBAAAAAaYBAAAApgECqQEAAADjAQKxAQEAAAAB4QFAAAAAAeMBAgAAAAHkAQIAAAAB5gEAAADmAQPnAQIAAAAB6AEBAAAAARCkAQEAAAABpgEAAACmAQKnAQEAAAABqQEAAACpAQKqAQEAAAABqwFAAAAAAawBQAAAAAGtAUAAAAABsQEBAAAAAdEBAgAAAAHSAQIAAAAB0wECAAAAAdQBAgAAAAHVAQIAAAAB1gECAAAAAdcBAgAAAAECAAAAoQEAIBIAALEDACADAAAAVAAgEgAAsQMAIBMAALUDACASAAAAVAAgCwAAtQMAIKQBAQDHAgAhpgEAAMgCpgEipwEBAMkCACGpAQAAygKpASKqAQEAyQIAIasBQADLAgAhrAFAAMsCACGtAUAAzAIAIbEBAQDJAgAh0QECAM0CACHSAQIAzQIAIdMBAgDNAgAh1AECAM0CACHVAQIAzQIAIdYBAgDNAgAh1wECAM0CACEQpAEBAMcCACGmAQAAyAKmASKnAQEAyQIAIakBAADKAqkBIqoBAQDJAgAhqwFAAMsCACGsAUAAywIAIa0BQADMAgAhsQEBAMkCACHRAQIAzQIAIdIBAgDNAgAh0wECAM0CACHUAQIAzQIAIdUBAgDNAgAh1gECAM0CACHXAQIAzQIAIRSkAQEAAAABywFAAAAAAcwBQAAAAAHNAUAAAAAB6QEBAAAAAeoBAQAAAAHrAQEAAAAB7AEgAAAAAe0BAgAAAAHuAQIAAAAB7wEBAAAAAfABQAAAAAHxAQAAAOMBA_IBQAAAAAHzAUAAAAAB9AFAAAAAAfUBQAAAAAH2AQIAAAAB9wECAAAAAfgBAQAAAAECAAAATgAgEgAAtgMAIAMAAABaACASAAC2AwAgEwAAugMAIBYAAABaACALAAC6AwAgpAEBAMcCACHLAUAAzAIAIcwBQADLAgAhzQFAAMsCACHpAQEAxwIAIeoBAQDHAgAh6wEBAMcCACHsASAA0QIAIe0BAgDnAgAh7gECAOcCACHvAQEAyQIAIfABQADMAgAh8QEAAIAD4wEj8gFAAMwCACHzAUAAzAIAIfQBQADMAgAh9QFAAMwCACH2AQIAzQIAIfcBAgDNAgAh-AEBAMkCACEUpAEBAMcCACHLAUAAzAIAIcwBQADLAgAhzQFAAMsCACHpAQEAxwIAIeoBAQDHAgAh6wEBAMcCACHsASAA0QIAIe0BAgDnAgAh7gECAOcCACHvAQEAyQIAIfABQADMAgAh8QEAAIAD4wEj8gFAAMwCACHzAUAAzAIAIfQBQADMAgAh9QFAAMwCACH2AQIAzQIAIfcBAgDNAgAh-AEBAMkCACEKpAEBAAAAAaYBAAAApgECqQEAAADjAQKxAQEAAAAB4AEBAAAAAeEBQAAAAAHjAQIAAAAB5AECAAAAAeYBAAAA5gED5wECAAAAAQIEBgIFAAMBAwABAQQHAAAAAAMFAAgYAAkZAAoAAAADBQAIGAAJGQAKAQMAAQEDAAEDBQAPGAAQGQARAAAAAwUADxgAEBkAEQAAAAMFABcYABgZABkAAAADBQAXGAAYGQAZAgUAHz1THAI8ABs-VR0CBQAePVYcAT1XAAE9WAAAAAUFACMYACYZACdNACROACUAAAAAAAUFACMYACYZACdNACROACUCPAAbPnodAjwAGz6AAR0FBQAsGAAvGQAwTQAtTgAuAAAAAAAFBQAsGAAvGQAwTQAtTgAuAAAABQUANhgAORkAOk0AN04AOAAAAAAABQUANhgAORkAOk0AN04AOAAABQUAPxgAQhkAQ00AQE4AQQAAAAAABQUAPxgAQhkAQ00AQE4AQQAAAAMFAEkYAEoZAEsAAAADBQBJGABKGQBLAAAABQUAURgAVBkAVU0AUk4AUwAAAAAABQUAURgAVBkAVU0AUk4AUwYCAQcIAQgLAQkMAQoNAQwPAQ0RBA4SBQ8UARAWBBEXBhQYARUZARYaBBodBxseCxwfAh0gAh4hAh8iAiAjAiElAiInBCMoDCQqAiUsBCYtDScuAigvAikwBCozDis0Eiw2Ey03Ey46Ey87EzA8EzE-EzJABDNBFDRDEzVFBDZGFTdHEzhIEzlJBDpMFjtNGj9PG0BZG0FcG0JdG0NeG0RgG0ViBEZjIEdlG0hnBEloIUppG0tqG0xrBE9uIlBvKFFwHFJxHFNyHFRzHFV0HFZ2HFd4BFh5KVl8HFp-BFt_KlyBARxdggEcXoMBBF-GAStghwExYYkBMmKKATJjjQEyZI4BMmWPATJmkQEyZ5MBBGiUATNplgEyapgBBGuZATRsmgEybZsBMm6cAQRvnwE1cKABO3GiAR1yowEdc6UBHXSmAR11pwEddqkBHXerAQR4rAE8ea4BHXqwAQR7sQE9fLIBHX2zAR1-tAEEf7cBPoABuAFEgQG6AUWCAbsBRYMBvgFFhAG_AUWFAcABRYYBwgFFhwHEAQSIAcUBRokBxwFFigHJAQSLAcoBR4wBywFFjQHMAUWOAc0BBI8B0AFIkAHRAUyRAdMBTZIB1AFNkwHXAU2UAdgBTZUB2QFNlgHbAU2XAd0BBJgB3gFOmQHgAU2aAeIBBJsB4wFPnAHkAU2dAeUBTZ4B5gEEnwHpAVCgAeoBVg"
}

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

  getQueryCompilerWasmModule: async () => {
    const { wasm } = await import("@prisma/client/runtime/query_compiler_fast_bg.postgresql.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 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.PrismaClientConstructorArgs<Options>): 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 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'] = Prisma.PrismaClientOptions['omit'],
  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.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.session`: Exposes CRUD operations for the **Session** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Sessions
    * const sessions = await prisma.session.findMany()
    * ```
    */
  get session(): Prisma.SessionDelegate<ExtArgs, { omit: OmitOpts }>;

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

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

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

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

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

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

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

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