
/* !!! 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! 🛑
 *
 * All exports from this file are wrapped under a `Prisma` namespace object in the client.ts file.
 * While this enables partial backward compatibility, it is not part of the stable public API.
 *
 * If you are looking for your Models, Enums, and Input Types, please import them from the respective
 * model files in the `model` directory!
 */

import * as runtime from "@prisma/client/runtime/client"
import type * as Prisma from "../models"
import { type PrismaClient } from "./class"

export type * from '../models'

export type DMMF = typeof runtime.DMMF

export type PrismaPromise<T> = runtime.Types.Public.PrismaPromise<T>

/**
 * Prisma Errors
 */

export const PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError
export type PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError

export const PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError
export type PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError

export const PrismaClientRustPanicError = runtime.PrismaClientRustPanicError
export type PrismaClientRustPanicError = runtime.PrismaClientRustPanicError

export const PrismaClientInitializationError = runtime.PrismaClientInitializationError
export type PrismaClientInitializationError = runtime.PrismaClientInitializationError

export const PrismaClientValidationError = runtime.PrismaClientValidationError
export type PrismaClientValidationError = runtime.PrismaClientValidationError

/**
 * Re-export of sql-template-tag
 */
export const sql = runtime.sqltag
export const empty = runtime.empty
export const join = runtime.join
export const raw = runtime.raw
export const Sql = runtime.Sql
export type Sql = runtime.Sql



/**
 * Decimal.js
 */
export const Decimal = runtime.Decimal
export type Decimal = runtime.Decimal

export type DecimalJsLike = runtime.DecimalJsLike

/**
* Extensions
*/
export type Extension = runtime.Types.Extensions.UserArgs
export const getExtensionContext = runtime.Extensions.getExtensionContext
export type Args<T, F extends runtime.Operation> = runtime.Types.Public.Args<T, F>
export type Payload<T, F extends runtime.Operation = never> = runtime.Types.Public.Payload<T, F>
export type Result<T, A, F extends runtime.Operation> = runtime.Types.Public.Result<T, A, F>
export type Exact<A, W> = runtime.Types.Public.Exact<A, W>

export type PrismaVersion = {
  client: string
  engine: string
}

/**
 * Prisma Client JS version: 7.6.0
 * Query Engine version: 75cbdc1eb7150937890ad5465d861175c6624711
 */
export const prismaVersion: PrismaVersion = {
  client: "7.6.0",
  engine: "75cbdc1eb7150937890ad5465d861175c6624711"
}

/**
 * Utility Types
 */

export type Bytes = runtime.Bytes
export type JsonObject = runtime.JsonObject
export type JsonArray = runtime.JsonArray
export type JsonValue = runtime.JsonValue
export type InputJsonObject = runtime.InputJsonObject
export type InputJsonArray = runtime.InputJsonArray
export type InputJsonValue = runtime.InputJsonValue


export const NullTypes = {
  DbNull: runtime.NullTypes.DbNull as (new (secret: never) => typeof runtime.DbNull),
  JsonNull: runtime.NullTypes.JsonNull as (new (secret: never) => typeof runtime.JsonNull),
  AnyNull: runtime.NullTypes.AnyNull as (new (secret: never) => typeof runtime.AnyNull),
}
/**
 * Helper for filtering JSON entries that have `null` on the database (empty on the db)
 *
 * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
 */
export const DbNull = runtime.DbNull

/**
 * Helper for filtering JSON entries that have JSON `null` values (not empty on the db)
 *
 * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
 */
export const JsonNull = runtime.JsonNull

/**
 * Helper for filtering JSON entries that are `Prisma.DbNull` or `Prisma.JsonNull`
 *
 * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
 */
export const AnyNull = runtime.AnyNull


type SelectAndInclude = {
  select: any
  include: any
}

type SelectAndOmit = {
  select: any
  omit: any
}

/**
 * From T, pick a set of properties whose keys are in the union K
 */
type Prisma__Pick<T, K extends keyof T> = {
    [P in K]: T[P];
};

export type Enumerable<T> = T | Array<T>;

/**
 * Subset
 * @desc From `T` pick properties that exist in `U`. Simple version of Intersection
 */
export type Subset<T, U> = {
  [key in keyof T]: key extends keyof U ? T[key] : never;
};

/**
 * SelectSubset
 * @desc From `T` pick properties that exist in `U`. Simple version of Intersection.
 * Additionally, it validates, if both select and include are present. If the case, it errors.
 */
export type SelectSubset<T, U> = {
  [key in keyof T]: key extends keyof U ? T[key] : never
} &
  (T extends SelectAndInclude
    ? 'Please either choose `select` or `include`.'
    : T extends SelectAndOmit
      ? 'Please either choose `select` or `omit`.'
      : {})

/**
 * Subset + Intersection
 * @desc From `T` pick properties that exist in `U` and intersect `K`
 */
export type SubsetIntersection<T, U, K> = {
  [key in keyof T]: key extends keyof U ? T[key] : never
} &
  K

type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never };

/**
 * XOR is needed to have a real mutually exclusive union type
 * https://stackoverflow.com/questions/42123407/does-typescript-support-mutually-exclusive-types
 */
export type XOR<T, U> =
  T extends object ?
  U extends object ?
    (Without<T, U> & U) | (Without<U, T> & T)
  : U : T


/**
 * Is T a Record?
 */
type IsObject<T extends any> = T extends Array<any>
? False
: T extends Date
? False
: T extends Uint8Array
? False
: T extends BigInt
? False
: T extends object
? True
: False


/**
 * If it's T[], return T
 */
export type UnEnumerate<T extends unknown> = T extends Array<infer U> ? U : T

/**
 * From ts-toolbelt
 */

type __Either<O extends object, K extends Key> = Omit<O, K> &
  {
    // Merge all but K
    [P in K]: Prisma__Pick<O, P & keyof O> // With K possibilities
  }[K]

type EitherStrict<O extends object, K extends Key> = Strict<__Either<O, K>>

type EitherLoose<O extends object, K extends Key> = ComputeRaw<__Either<O, K>>

type _Either<
  O extends object,
  K extends Key,
  strict extends Boolean
> = {
  1: EitherStrict<O, K>
  0: EitherLoose<O, K>
}[strict]

export type Either<
  O extends object,
  K extends Key,
  strict extends Boolean = 1
> = O extends unknown ? _Either<O, K, strict> : never

export type Union = any

export type PatchUndefined<O extends object, O1 extends object> = {
  [K in keyof O]: O[K] extends undefined ? At<O1, K> : O[K]
} & {}

/** Helper Types for "Merge" **/
export type IntersectOf<U extends Union> = (
  U extends unknown ? (k: U) => void : never
) extends (k: infer I) => void
  ? I
  : never

export type Overwrite<O extends object, O1 extends object> = {
    [K in keyof O]: K extends keyof O1 ? O1[K] : O[K];
} & {};

type _Merge<U extends object> = IntersectOf<Overwrite<U, {
    [K in keyof U]-?: At<U, K>;
}>>;

type Key = string | number | symbol;
type AtStrict<O extends object, K extends Key> = O[K & keyof O];
type AtLoose<O extends object, K extends Key> = O extends unknown ? AtStrict<O, K> : never;
export type At<O extends object, K extends Key, strict extends Boolean = 1> = {
    1: AtStrict<O, K>;
    0: AtLoose<O, K>;
}[strict];

export type ComputeRaw<A extends any> = A extends Function ? A : {
  [K in keyof A]: A[K];
} & {};

export type OptionalFlat<O> = {
  [K in keyof O]?: O[K];
} & {};

type _Record<K extends keyof any, T> = {
  [P in K]: T;
};

// cause typescript not to expand types and preserve names
type NoExpand<T> = T extends unknown ? T : never;

// this type assumes the passed object is entirely optional
export type AtLeast<O extends object, K extends string> = NoExpand<
  O extends unknown
  ? | (K extends keyof O ? { [P in K]: O[P] } & O : O)
    | {[P in keyof O as P extends K ? P : never]-?: O[P]} & O
  : never>;

type _Strict<U, _U = U> = U extends unknown ? U & OptionalFlat<_Record<Exclude<Keys<_U>, keyof U>, never>> : never;

export type Strict<U extends object> = ComputeRaw<_Strict<U>>;
/** End Helper Types for "Merge" **/

export type Merge<U extends object> = ComputeRaw<_Merge<Strict<U>>>;

export type Boolean = True | False

export type True = 1

export type False = 0

export type Not<B extends Boolean> = {
  0: 1
  1: 0
}[B]

export type Extends<A1 extends any, A2 extends any> = [A1] extends [never]
  ? 0 // anything `never` is false
  : A1 extends A2
  ? 1
  : 0

export type Has<U extends Union, U1 extends Union> = Not<
  Extends<Exclude<U1, U>, U1>
>

export type Or<B1 extends Boolean, B2 extends Boolean> = {
  0: {
    0: 0
    1: 1
  }
  1: {
    0: 1
    1: 1
  }
}[B1][B2]

export type Keys<U extends Union> = U extends unknown ? keyof U : never

export type GetScalarType<T, O> = O extends object ? {
  [P in keyof T]: P extends keyof O
    ? O[P]
    : never
} : never

type FieldPaths<
  T,
  U = Omit<T, '_avg' | '_sum' | '_count' | '_min' | '_max'>
> = IsObject<T> extends True ? U : T

export type GetHavingFields<T> = {
  [K in keyof T]: Or<
    Or<Extends<'OR', K>, Extends<'AND', K>>,
    Extends<'NOT', K>
  > extends True
    ? // infer is only needed to not hit TS limit
      // based on the brilliant idea of Pierre-Antoine Mills
      // https://github.com/microsoft/TypeScript/issues/30188#issuecomment-478938437
      T[K] extends infer TK
      ? GetHavingFields<UnEnumerate<TK> extends object ? Merge<UnEnumerate<TK>> : never>
      : never
    : {} extends FieldPaths<T[K]>
    ? never
    : K
}[keyof T]

/**
 * Convert tuple to union
 */
type _TupleToUnion<T> = T extends (infer E)[] ? E : never
type TupleToUnion<K extends readonly any[]> = _TupleToUnion<K>
export type MaybeTupleToUnion<T> = T extends any[] ? TupleToUnion<T> : T

/**
 * Like `Pick`, but additionally can also accept an array of keys
 */
export type PickEnumerable<T, K extends Enumerable<keyof T> | keyof T> = Prisma__Pick<T, MaybeTupleToUnion<K>>

/**
 * Exclude all keys with underscores
 */
export type ExcludeUnderscoreKeys<T extends string> = T extends `_${string}` ? never : T


export type FieldRef<Model, FieldType> = runtime.FieldRef<Model, FieldType>

type FieldRefInputType<Model, FieldType> = Model extends never ? never : FieldRef<Model, FieldType>


export const ModelName = {
  User: 'User',
  Session: 'Session',
  Account: 'Account',
  Verification: 'Verification',
  Complex: 'Complex',
  ComplexUser: 'ComplexUser',
  ComplexInvitation: 'ComplexInvitation',
  Sport: 'Sport',
  Court: 'Court',
  CourtMaintenance: 'CourtMaintenance',
  CourtAvailability: 'CourtAvailability',
  CourtPriceRule: 'CourtPriceRule',
  CourtBooking: 'CourtBooking',
  CourtBookingLog: 'CourtBookingLog',
  RecurringBookingGroup: 'RecurringBookingGroup',
  PasswordResetRequest: 'PasswordResetRequest',
  Plan: 'Plan'
} as const

export type ModelName = (typeof ModelName)[keyof typeof ModelName]



export interface TypeMapCb<GlobalOmitOptions = {}> extends runtime.Types.Utils.Fn<{extArgs: runtime.Types.Extensions.InternalArgs }, runtime.Types.Utils.Record<string, any>> {
  returns: TypeMap<this['params']['extArgs'], GlobalOmitOptions>
}

export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs, GlobalOmitOptions = {}> = {
  globalOmitOptions: {
    omit: GlobalOmitOptions
  }
  meta: {
    modelProps: "user" | "session" | "account" | "verification" | "complex" | "complexUser" | "complexInvitation" | "sport" | "court" | "courtMaintenance" | "courtAvailability" | "courtPriceRule" | "courtBooking" | "courtBookingLog" | "recurringBookingGroup" | "passwordResetRequest" | "plan"
    txIsolationLevel: TransactionIsolationLevel
  }
  model: {
    User: {
      payload: Prisma.$UserPayload<ExtArgs>
      fields: Prisma.UserFieldRefs
      operations: {
        findUnique: {
          args: Prisma.UserFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.UserFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>
        }
        findFirst: {
          args: Prisma.UserFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.UserFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>
        }
        findMany: {
          args: Prisma.UserFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>[]
        }
        create: {
          args: Prisma.UserCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>
        }
        createMany: {
          args: Prisma.UserCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.UserCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>[]
        }
        delete: {
          args: Prisma.UserDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>
        }
        update: {
          args: Prisma.UserUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>
        }
        deleteMany: {
          args: Prisma.UserDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.UserUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.UserUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>[]
        }
        upsert: {
          args: Prisma.UserUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>
        }
        aggregate: {
          args: Prisma.UserAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateUser>
        }
        groupBy: {
          args: Prisma.UserGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.UserGroupByOutputType>[]
        }
        count: {
          args: Prisma.UserCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.UserCountAggregateOutputType> | number
        }
      }
    }
    Session: {
      payload: Prisma.$SessionPayload<ExtArgs>
      fields: Prisma.SessionFieldRefs
      operations: {
        findUnique: {
          args: Prisma.SessionFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.SessionFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionPayload>
        }
        findFirst: {
          args: Prisma.SessionFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.SessionFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionPayload>
        }
        findMany: {
          args: Prisma.SessionFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionPayload>[]
        }
        create: {
          args: Prisma.SessionCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionPayload>
        }
        createMany: {
          args: Prisma.SessionCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.SessionCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionPayload>[]
        }
        delete: {
          args: Prisma.SessionDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionPayload>
        }
        update: {
          args: Prisma.SessionUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionPayload>
        }
        deleteMany: {
          args: Prisma.SessionDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.SessionUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.SessionUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionPayload>[]
        }
        upsert: {
          args: Prisma.SessionUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionPayload>
        }
        aggregate: {
          args: Prisma.SessionAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateSession>
        }
        groupBy: {
          args: Prisma.SessionGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.SessionGroupByOutputType>[]
        }
        count: {
          args: Prisma.SessionCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.SessionCountAggregateOutputType> | number
        }
      }
    }
    Account: {
      payload: Prisma.$AccountPayload<ExtArgs>
      fields: Prisma.AccountFieldRefs
      operations: {
        findUnique: {
          args: Prisma.AccountFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.AccountFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>
        }
        findFirst: {
          args: Prisma.AccountFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.AccountFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>
        }
        findMany: {
          args: Prisma.AccountFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>[]
        }
        create: {
          args: Prisma.AccountCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>
        }
        createMany: {
          args: Prisma.AccountCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.AccountCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>[]
        }
        delete: {
          args: Prisma.AccountDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>
        }
        update: {
          args: Prisma.AccountUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>
        }
        deleteMany: {
          args: Prisma.AccountDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.AccountUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.AccountUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>[]
        }
        upsert: {
          args: Prisma.AccountUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>
        }
        aggregate: {
          args: Prisma.AccountAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateAccount>
        }
        groupBy: {
          args: Prisma.AccountGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AccountGroupByOutputType>[]
        }
        count: {
          args: Prisma.AccountCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AccountCountAggregateOutputType> | number
        }
      }
    }
    Verification: {
      payload: Prisma.$VerificationPayload<ExtArgs>
      fields: Prisma.VerificationFieldRefs
      operations: {
        findUnique: {
          args: Prisma.VerificationFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$VerificationPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.VerificationFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$VerificationPayload>
        }
        findFirst: {
          args: Prisma.VerificationFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$VerificationPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.VerificationFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$VerificationPayload>
        }
        findMany: {
          args: Prisma.VerificationFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$VerificationPayload>[]
        }
        create: {
          args: Prisma.VerificationCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$VerificationPayload>
        }
        createMany: {
          args: Prisma.VerificationCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.VerificationCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$VerificationPayload>[]
        }
        delete: {
          args: Prisma.VerificationDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$VerificationPayload>
        }
        update: {
          args: Prisma.VerificationUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$VerificationPayload>
        }
        deleteMany: {
          args: Prisma.VerificationDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.VerificationUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.VerificationUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$VerificationPayload>[]
        }
        upsert: {
          args: Prisma.VerificationUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$VerificationPayload>
        }
        aggregate: {
          args: Prisma.VerificationAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateVerification>
        }
        groupBy: {
          args: Prisma.VerificationGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.VerificationGroupByOutputType>[]
        }
        count: {
          args: Prisma.VerificationCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.VerificationCountAggregateOutputType> | number
        }
      }
    }
    Complex: {
      payload: Prisma.$ComplexPayload<ExtArgs>
      fields: Prisma.ComplexFieldRefs
      operations: {
        findUnique: {
          args: Prisma.ComplexFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.ComplexFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexPayload>
        }
        findFirst: {
          args: Prisma.ComplexFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.ComplexFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexPayload>
        }
        findMany: {
          args: Prisma.ComplexFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexPayload>[]
        }
        create: {
          args: Prisma.ComplexCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexPayload>
        }
        createMany: {
          args: Prisma.ComplexCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.ComplexCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexPayload>[]
        }
        delete: {
          args: Prisma.ComplexDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexPayload>
        }
        update: {
          args: Prisma.ComplexUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexPayload>
        }
        deleteMany: {
          args: Prisma.ComplexDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.ComplexUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.ComplexUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexPayload>[]
        }
        upsert: {
          args: Prisma.ComplexUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexPayload>
        }
        aggregate: {
          args: Prisma.ComplexAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateComplex>
        }
        groupBy: {
          args: Prisma.ComplexGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ComplexGroupByOutputType>[]
        }
        count: {
          args: Prisma.ComplexCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ComplexCountAggregateOutputType> | number
        }
      }
    }
    ComplexUser: {
      payload: Prisma.$ComplexUserPayload<ExtArgs>
      fields: Prisma.ComplexUserFieldRefs
      operations: {
        findUnique: {
          args: Prisma.ComplexUserFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexUserPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.ComplexUserFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexUserPayload>
        }
        findFirst: {
          args: Prisma.ComplexUserFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexUserPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.ComplexUserFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexUserPayload>
        }
        findMany: {
          args: Prisma.ComplexUserFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexUserPayload>[]
        }
        create: {
          args: Prisma.ComplexUserCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexUserPayload>
        }
        createMany: {
          args: Prisma.ComplexUserCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.ComplexUserCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexUserPayload>[]
        }
        delete: {
          args: Prisma.ComplexUserDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexUserPayload>
        }
        update: {
          args: Prisma.ComplexUserUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexUserPayload>
        }
        deleteMany: {
          args: Prisma.ComplexUserDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.ComplexUserUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.ComplexUserUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexUserPayload>[]
        }
        upsert: {
          args: Prisma.ComplexUserUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexUserPayload>
        }
        aggregate: {
          args: Prisma.ComplexUserAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateComplexUser>
        }
        groupBy: {
          args: Prisma.ComplexUserGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ComplexUserGroupByOutputType>[]
        }
        count: {
          args: Prisma.ComplexUserCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ComplexUserCountAggregateOutputType> | number
        }
      }
    }
    ComplexInvitation: {
      payload: Prisma.$ComplexInvitationPayload<ExtArgs>
      fields: Prisma.ComplexInvitationFieldRefs
      operations: {
        findUnique: {
          args: Prisma.ComplexInvitationFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexInvitationPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.ComplexInvitationFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexInvitationPayload>
        }
        findFirst: {
          args: Prisma.ComplexInvitationFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexInvitationPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.ComplexInvitationFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexInvitationPayload>
        }
        findMany: {
          args: Prisma.ComplexInvitationFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexInvitationPayload>[]
        }
        create: {
          args: Prisma.ComplexInvitationCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexInvitationPayload>
        }
        createMany: {
          args: Prisma.ComplexInvitationCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.ComplexInvitationCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexInvitationPayload>[]
        }
        delete: {
          args: Prisma.ComplexInvitationDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexInvitationPayload>
        }
        update: {
          args: Prisma.ComplexInvitationUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexInvitationPayload>
        }
        deleteMany: {
          args: Prisma.ComplexInvitationDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.ComplexInvitationUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.ComplexInvitationUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexInvitationPayload>[]
        }
        upsert: {
          args: Prisma.ComplexInvitationUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ComplexInvitationPayload>
        }
        aggregate: {
          args: Prisma.ComplexInvitationAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateComplexInvitation>
        }
        groupBy: {
          args: Prisma.ComplexInvitationGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ComplexInvitationGroupByOutputType>[]
        }
        count: {
          args: Prisma.ComplexInvitationCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ComplexInvitationCountAggregateOutputType> | number
        }
      }
    }
    Sport: {
      payload: Prisma.$SportPayload<ExtArgs>
      fields: Prisma.SportFieldRefs
      operations: {
        findUnique: {
          args: Prisma.SportFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SportPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.SportFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SportPayload>
        }
        findFirst: {
          args: Prisma.SportFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SportPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.SportFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SportPayload>
        }
        findMany: {
          args: Prisma.SportFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SportPayload>[]
        }
        create: {
          args: Prisma.SportCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SportPayload>
        }
        createMany: {
          args: Prisma.SportCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.SportCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SportPayload>[]
        }
        delete: {
          args: Prisma.SportDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SportPayload>
        }
        update: {
          args: Prisma.SportUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SportPayload>
        }
        deleteMany: {
          args: Prisma.SportDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.SportUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.SportUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SportPayload>[]
        }
        upsert: {
          args: Prisma.SportUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SportPayload>
        }
        aggregate: {
          args: Prisma.SportAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateSport>
        }
        groupBy: {
          args: Prisma.SportGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.SportGroupByOutputType>[]
        }
        count: {
          args: Prisma.SportCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.SportCountAggregateOutputType> | number
        }
      }
    }
    Court: {
      payload: Prisma.$CourtPayload<ExtArgs>
      fields: Prisma.CourtFieldRefs
      operations: {
        findUnique: {
          args: Prisma.CourtFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.CourtFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPayload>
        }
        findFirst: {
          args: Prisma.CourtFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.CourtFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPayload>
        }
        findMany: {
          args: Prisma.CourtFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPayload>[]
        }
        create: {
          args: Prisma.CourtCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPayload>
        }
        createMany: {
          args: Prisma.CourtCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.CourtCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPayload>[]
        }
        delete: {
          args: Prisma.CourtDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPayload>
        }
        update: {
          args: Prisma.CourtUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPayload>
        }
        deleteMany: {
          args: Prisma.CourtDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.CourtUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.CourtUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPayload>[]
        }
        upsert: {
          args: Prisma.CourtUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPayload>
        }
        aggregate: {
          args: Prisma.CourtAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateCourt>
        }
        groupBy: {
          args: Prisma.CourtGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CourtGroupByOutputType>[]
        }
        count: {
          args: Prisma.CourtCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CourtCountAggregateOutputType> | number
        }
      }
    }
    CourtMaintenance: {
      payload: Prisma.$CourtMaintenancePayload<ExtArgs>
      fields: Prisma.CourtMaintenanceFieldRefs
      operations: {
        findUnique: {
          args: Prisma.CourtMaintenanceFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtMaintenancePayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.CourtMaintenanceFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtMaintenancePayload>
        }
        findFirst: {
          args: Prisma.CourtMaintenanceFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtMaintenancePayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.CourtMaintenanceFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtMaintenancePayload>
        }
        findMany: {
          args: Prisma.CourtMaintenanceFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtMaintenancePayload>[]
        }
        create: {
          args: Prisma.CourtMaintenanceCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtMaintenancePayload>
        }
        createMany: {
          args: Prisma.CourtMaintenanceCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.CourtMaintenanceCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtMaintenancePayload>[]
        }
        delete: {
          args: Prisma.CourtMaintenanceDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtMaintenancePayload>
        }
        update: {
          args: Prisma.CourtMaintenanceUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtMaintenancePayload>
        }
        deleteMany: {
          args: Prisma.CourtMaintenanceDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.CourtMaintenanceUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.CourtMaintenanceUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtMaintenancePayload>[]
        }
        upsert: {
          args: Prisma.CourtMaintenanceUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtMaintenancePayload>
        }
        aggregate: {
          args: Prisma.CourtMaintenanceAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateCourtMaintenance>
        }
        groupBy: {
          args: Prisma.CourtMaintenanceGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CourtMaintenanceGroupByOutputType>[]
        }
        count: {
          args: Prisma.CourtMaintenanceCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CourtMaintenanceCountAggregateOutputType> | number
        }
      }
    }
    CourtAvailability: {
      payload: Prisma.$CourtAvailabilityPayload<ExtArgs>
      fields: Prisma.CourtAvailabilityFieldRefs
      operations: {
        findUnique: {
          args: Prisma.CourtAvailabilityFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtAvailabilityPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.CourtAvailabilityFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtAvailabilityPayload>
        }
        findFirst: {
          args: Prisma.CourtAvailabilityFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtAvailabilityPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.CourtAvailabilityFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtAvailabilityPayload>
        }
        findMany: {
          args: Prisma.CourtAvailabilityFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtAvailabilityPayload>[]
        }
        create: {
          args: Prisma.CourtAvailabilityCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtAvailabilityPayload>
        }
        createMany: {
          args: Prisma.CourtAvailabilityCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.CourtAvailabilityCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtAvailabilityPayload>[]
        }
        delete: {
          args: Prisma.CourtAvailabilityDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtAvailabilityPayload>
        }
        update: {
          args: Prisma.CourtAvailabilityUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtAvailabilityPayload>
        }
        deleteMany: {
          args: Prisma.CourtAvailabilityDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.CourtAvailabilityUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.CourtAvailabilityUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtAvailabilityPayload>[]
        }
        upsert: {
          args: Prisma.CourtAvailabilityUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtAvailabilityPayload>
        }
        aggregate: {
          args: Prisma.CourtAvailabilityAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateCourtAvailability>
        }
        groupBy: {
          args: Prisma.CourtAvailabilityGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CourtAvailabilityGroupByOutputType>[]
        }
        count: {
          args: Prisma.CourtAvailabilityCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CourtAvailabilityCountAggregateOutputType> | number
        }
      }
    }
    CourtPriceRule: {
      payload: Prisma.$CourtPriceRulePayload<ExtArgs>
      fields: Prisma.CourtPriceRuleFieldRefs
      operations: {
        findUnique: {
          args: Prisma.CourtPriceRuleFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPriceRulePayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.CourtPriceRuleFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPriceRulePayload>
        }
        findFirst: {
          args: Prisma.CourtPriceRuleFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPriceRulePayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.CourtPriceRuleFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPriceRulePayload>
        }
        findMany: {
          args: Prisma.CourtPriceRuleFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPriceRulePayload>[]
        }
        create: {
          args: Prisma.CourtPriceRuleCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPriceRulePayload>
        }
        createMany: {
          args: Prisma.CourtPriceRuleCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.CourtPriceRuleCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPriceRulePayload>[]
        }
        delete: {
          args: Prisma.CourtPriceRuleDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPriceRulePayload>
        }
        update: {
          args: Prisma.CourtPriceRuleUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPriceRulePayload>
        }
        deleteMany: {
          args: Prisma.CourtPriceRuleDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.CourtPriceRuleUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.CourtPriceRuleUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPriceRulePayload>[]
        }
        upsert: {
          args: Prisma.CourtPriceRuleUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtPriceRulePayload>
        }
        aggregate: {
          args: Prisma.CourtPriceRuleAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateCourtPriceRule>
        }
        groupBy: {
          args: Prisma.CourtPriceRuleGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CourtPriceRuleGroupByOutputType>[]
        }
        count: {
          args: Prisma.CourtPriceRuleCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CourtPriceRuleCountAggregateOutputType> | number
        }
      }
    }
    CourtBooking: {
      payload: Prisma.$CourtBookingPayload<ExtArgs>
      fields: Prisma.CourtBookingFieldRefs
      operations: {
        findUnique: {
          args: Prisma.CourtBookingFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.CourtBookingFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingPayload>
        }
        findFirst: {
          args: Prisma.CourtBookingFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.CourtBookingFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingPayload>
        }
        findMany: {
          args: Prisma.CourtBookingFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingPayload>[]
        }
        create: {
          args: Prisma.CourtBookingCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingPayload>
        }
        createMany: {
          args: Prisma.CourtBookingCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.CourtBookingCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingPayload>[]
        }
        delete: {
          args: Prisma.CourtBookingDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingPayload>
        }
        update: {
          args: Prisma.CourtBookingUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingPayload>
        }
        deleteMany: {
          args: Prisma.CourtBookingDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.CourtBookingUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.CourtBookingUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingPayload>[]
        }
        upsert: {
          args: Prisma.CourtBookingUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingPayload>
        }
        aggregate: {
          args: Prisma.CourtBookingAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateCourtBooking>
        }
        groupBy: {
          args: Prisma.CourtBookingGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CourtBookingGroupByOutputType>[]
        }
        count: {
          args: Prisma.CourtBookingCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CourtBookingCountAggregateOutputType> | number
        }
      }
    }
    CourtBookingLog: {
      payload: Prisma.$CourtBookingLogPayload<ExtArgs>
      fields: Prisma.CourtBookingLogFieldRefs
      operations: {
        findUnique: {
          args: Prisma.CourtBookingLogFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingLogPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.CourtBookingLogFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingLogPayload>
        }
        findFirst: {
          args: Prisma.CourtBookingLogFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingLogPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.CourtBookingLogFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingLogPayload>
        }
        findMany: {
          args: Prisma.CourtBookingLogFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingLogPayload>[]
        }
        create: {
          args: Prisma.CourtBookingLogCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingLogPayload>
        }
        createMany: {
          args: Prisma.CourtBookingLogCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.CourtBookingLogCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingLogPayload>[]
        }
        delete: {
          args: Prisma.CourtBookingLogDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingLogPayload>
        }
        update: {
          args: Prisma.CourtBookingLogUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingLogPayload>
        }
        deleteMany: {
          args: Prisma.CourtBookingLogDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.CourtBookingLogUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.CourtBookingLogUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingLogPayload>[]
        }
        upsert: {
          args: Prisma.CourtBookingLogUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CourtBookingLogPayload>
        }
        aggregate: {
          args: Prisma.CourtBookingLogAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateCourtBookingLog>
        }
        groupBy: {
          args: Prisma.CourtBookingLogGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CourtBookingLogGroupByOutputType>[]
        }
        count: {
          args: Prisma.CourtBookingLogCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CourtBookingLogCountAggregateOutputType> | number
        }
      }
    }
    RecurringBookingGroup: {
      payload: Prisma.$RecurringBookingGroupPayload<ExtArgs>
      fields: Prisma.RecurringBookingGroupFieldRefs
      operations: {
        findUnique: {
          args: Prisma.RecurringBookingGroupFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$RecurringBookingGroupPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.RecurringBookingGroupFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$RecurringBookingGroupPayload>
        }
        findFirst: {
          args: Prisma.RecurringBookingGroupFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$RecurringBookingGroupPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.RecurringBookingGroupFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$RecurringBookingGroupPayload>
        }
        findMany: {
          args: Prisma.RecurringBookingGroupFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$RecurringBookingGroupPayload>[]
        }
        create: {
          args: Prisma.RecurringBookingGroupCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$RecurringBookingGroupPayload>
        }
        createMany: {
          args: Prisma.RecurringBookingGroupCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.RecurringBookingGroupCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$RecurringBookingGroupPayload>[]
        }
        delete: {
          args: Prisma.RecurringBookingGroupDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$RecurringBookingGroupPayload>
        }
        update: {
          args: Prisma.RecurringBookingGroupUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$RecurringBookingGroupPayload>
        }
        deleteMany: {
          args: Prisma.RecurringBookingGroupDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.RecurringBookingGroupUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.RecurringBookingGroupUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$RecurringBookingGroupPayload>[]
        }
        upsert: {
          args: Prisma.RecurringBookingGroupUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$RecurringBookingGroupPayload>
        }
        aggregate: {
          args: Prisma.RecurringBookingGroupAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateRecurringBookingGroup>
        }
        groupBy: {
          args: Prisma.RecurringBookingGroupGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.RecurringBookingGroupGroupByOutputType>[]
        }
        count: {
          args: Prisma.RecurringBookingGroupCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.RecurringBookingGroupCountAggregateOutputType> | number
        }
      }
    }
    PasswordResetRequest: {
      payload: Prisma.$PasswordResetRequestPayload<ExtArgs>
      fields: Prisma.PasswordResetRequestFieldRefs
      operations: {
        findUnique: {
          args: Prisma.PasswordResetRequestFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PasswordResetRequestPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.PasswordResetRequestFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PasswordResetRequestPayload>
        }
        findFirst: {
          args: Prisma.PasswordResetRequestFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PasswordResetRequestPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.PasswordResetRequestFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PasswordResetRequestPayload>
        }
        findMany: {
          args: Prisma.PasswordResetRequestFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PasswordResetRequestPayload>[]
        }
        create: {
          args: Prisma.PasswordResetRequestCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PasswordResetRequestPayload>
        }
        createMany: {
          args: Prisma.PasswordResetRequestCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.PasswordResetRequestCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PasswordResetRequestPayload>[]
        }
        delete: {
          args: Prisma.PasswordResetRequestDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PasswordResetRequestPayload>
        }
        update: {
          args: Prisma.PasswordResetRequestUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PasswordResetRequestPayload>
        }
        deleteMany: {
          args: Prisma.PasswordResetRequestDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.PasswordResetRequestUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.PasswordResetRequestUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PasswordResetRequestPayload>[]
        }
        upsert: {
          args: Prisma.PasswordResetRequestUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PasswordResetRequestPayload>
        }
        aggregate: {
          args: Prisma.PasswordResetRequestAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregatePasswordResetRequest>
        }
        groupBy: {
          args: Prisma.PasswordResetRequestGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.PasswordResetRequestGroupByOutputType>[]
        }
        count: {
          args: Prisma.PasswordResetRequestCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.PasswordResetRequestCountAggregateOutputType> | number
        }
      }
    }
    Plan: {
      payload: Prisma.$PlanPayload<ExtArgs>
      fields: Prisma.PlanFieldRefs
      operations: {
        findUnique: {
          args: Prisma.PlanFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlanPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.PlanFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlanPayload>
        }
        findFirst: {
          args: Prisma.PlanFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlanPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.PlanFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlanPayload>
        }
        findMany: {
          args: Prisma.PlanFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlanPayload>[]
        }
        create: {
          args: Prisma.PlanCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlanPayload>
        }
        createMany: {
          args: Prisma.PlanCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.PlanCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlanPayload>[]
        }
        delete: {
          args: Prisma.PlanDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlanPayload>
        }
        update: {
          args: Prisma.PlanUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlanPayload>
        }
        deleteMany: {
          args: Prisma.PlanDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.PlanUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.PlanUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlanPayload>[]
        }
        upsert: {
          args: Prisma.PlanUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlanPayload>
        }
        aggregate: {
          args: Prisma.PlanAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregatePlan>
        }
        groupBy: {
          args: Prisma.PlanGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.PlanGroupByOutputType>[]
        }
        count: {
          args: Prisma.PlanCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.PlanCountAggregateOutputType> | number
        }
      }
    }
  }
} & {
  other: {
    payload: any
    operations: {
      $executeRaw: {
        args: [query: TemplateStringsArray | Sql, ...values: any[]],
        result: any
      }
      $executeRawUnsafe: {
        args: [query: string, ...values: any[]],
        result: any
      }
      $queryRaw: {
        args: [query: TemplateStringsArray | Sql, ...values: any[]],
        result: any
      }
      $queryRawUnsafe: {
        args: [query: string, ...values: any[]],
        result: any
      }
    }
  }
}

/**
 * Enums
 */

export const TransactionIsolationLevel = runtime.makeStrictEnum({
  ReadUncommitted: 'ReadUncommitted',
  ReadCommitted: 'ReadCommitted',
  RepeatableRead: 'RepeatableRead',
  Serializable: 'Serializable'
} as const)

export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel]


export const UserScalarFieldEnum = {
  id: 'id',
  name: 'name',
  email: 'email',
  emailVerified: 'emailVerified',
  image: 'image',
  phone: 'phone',
  banned: 'banned',
  bannedAt: 'bannedAt',
  banReason: 'banReason',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt',
  role: 'role'
} as const

export type UserScalarFieldEnum = (typeof UserScalarFieldEnum)[keyof typeof UserScalarFieldEnum]


export const SessionScalarFieldEnum = {
  id: 'id',
  expiresAt: 'expiresAt',
  token: 'token',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt',
  ipAddress: 'ipAddress',
  userAgent: 'userAgent',
  country: 'country',
  city: 'city',
  countryCode: 'countryCode',
  latitude: 'latitude',
  longitude: 'longitude',
  userId: 'userId'
} as const

export type SessionScalarFieldEnum = (typeof SessionScalarFieldEnum)[keyof typeof SessionScalarFieldEnum]


export const AccountScalarFieldEnum = {
  id: 'id',
  accountId: 'accountId',
  providerId: 'providerId',
  userId: 'userId',
  accessToken: 'accessToken',
  refreshToken: 'refreshToken',
  idToken: 'idToken',
  accessTokenExpiresAt: 'accessTokenExpiresAt',
  refreshTokenExpiresAt: 'refreshTokenExpiresAt',
  scope: 'scope',
  password: 'password',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

export type AccountScalarFieldEnum = (typeof AccountScalarFieldEnum)[keyof typeof AccountScalarFieldEnum]


export const VerificationScalarFieldEnum = {
  id: 'id',
  identifier: 'identifier',
  value: 'value',
  expiresAt: 'expiresAt',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

export type VerificationScalarFieldEnum = (typeof VerificationScalarFieldEnum)[keyof typeof VerificationScalarFieldEnum]


export const ComplexScalarFieldEnum = {
  id: 'id',
  complexName: 'complexName',
  physicalAddress: 'physicalAddress',
  city: 'city',
  state: 'state',
  country: 'country',
  complexSlug: 'complexSlug',
  adminEmail: 'adminEmail',
  planCode: 'planCode',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

export type ComplexScalarFieldEnum = (typeof ComplexScalarFieldEnum)[keyof typeof ComplexScalarFieldEnum]


export const ComplexUserScalarFieldEnum = {
  complexId: 'complexId',
  userId: 'userId',
  role: 'role',
  createdAt: 'createdAt'
} as const

export type ComplexUserScalarFieldEnum = (typeof ComplexUserScalarFieldEnum)[keyof typeof ComplexUserScalarFieldEnum]


export const ComplexInvitationScalarFieldEnum = {
  id: 'id',
  complexId: 'complexId',
  email: 'email',
  tokenHash: 'tokenHash',
  expiresAt: 'expiresAt',
  acceptedAt: 'acceptedAt',
  revokedAt: 'revokedAt',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

export type ComplexInvitationScalarFieldEnum = (typeof ComplexInvitationScalarFieldEnum)[keyof typeof ComplexInvitationScalarFieldEnum]


export const SportScalarFieldEnum = {
  id: 'id',
  name: 'name',
  slug: 'slug',
  isActive: 'isActive',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

export type SportScalarFieldEnum = (typeof SportScalarFieldEnum)[keyof typeof SportScalarFieldEnum]


export const CourtScalarFieldEnum = {
  id: 'id',
  complexId: 'complexId',
  sportId: 'sportId',
  name: 'name',
  slotDurationMinutes: 'slotDurationMinutes',
  basePrice: 'basePrice',
  isUnderMaintenance: 'isUnderMaintenance',
  maintenanceReason: 'maintenanceReason',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

export type CourtScalarFieldEnum = (typeof CourtScalarFieldEnum)[keyof typeof CourtScalarFieldEnum]


export const CourtMaintenanceScalarFieldEnum = {
  id: 'id',
  courtId: 'courtId',
  startDate: 'startDate',
  startTime: 'startTime',
  endTime: 'endTime',
  reason: 'reason',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

export type CourtMaintenanceScalarFieldEnum = (typeof CourtMaintenanceScalarFieldEnum)[keyof typeof CourtMaintenanceScalarFieldEnum]


export const CourtAvailabilityScalarFieldEnum = {
  id: 'id',
  courtId: 'courtId',
  dayOfWeek: 'dayOfWeek',
  startTime: 'startTime',
  endTime: 'endTime',
  createdAt: 'createdAt'
} as const

export type CourtAvailabilityScalarFieldEnum = (typeof CourtAvailabilityScalarFieldEnum)[keyof typeof CourtAvailabilityScalarFieldEnum]


export const CourtPriceRuleScalarFieldEnum = {
  id: 'id',
  courtId: 'courtId',
  dayOfWeek: 'dayOfWeek',
  startTime: 'startTime',
  endTime: 'endTime',
  price: 'price',
  isActive: 'isActive',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

export type CourtPriceRuleScalarFieldEnum = (typeof CourtPriceRuleScalarFieldEnum)[keyof typeof CourtPriceRuleScalarFieldEnum]


export const CourtBookingScalarFieldEnum = {
  id: 'id',
  bookingCode: 'bookingCode',
  courtId: 'courtId',
  bookingDate: 'bookingDate',
  startTime: 'startTime',
  endTime: 'endTime',
  customerName: 'customerName',
  customerPhone: 'customerPhone',
  customerEmail: 'customerEmail',
  status: 'status',
  recurringGroupId: 'recurringGroupId',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

export type CourtBookingScalarFieldEnum = (typeof CourtBookingScalarFieldEnum)[keyof typeof CourtBookingScalarFieldEnum]


export const CourtBookingLogScalarFieldEnum = {
  id: 'id',
  bookingCode: 'bookingCode',
  courtId: 'courtId',
  bookingDate: 'bookingDate',
  startTime: 'startTime',
  endTime: 'endTime',
  previousStatus: 'previousStatus',
  newStatus: 'newStatus',
  customerName: 'customerName',
  customerPhone: 'customerPhone',
  customerEmail: 'customerEmail',
  changedAt: 'changedAt'
} as const

export type CourtBookingLogScalarFieldEnum = (typeof CourtBookingLogScalarFieldEnum)[keyof typeof CourtBookingLogScalarFieldEnum]


export const RecurringBookingGroupScalarFieldEnum = {
  id: 'id',
  complexId: 'complexId',
  courtId: 'courtId',
  startTime: 'startTime',
  endTime: 'endTime',
  dayOfWeek: 'dayOfWeek',
  startDate: 'startDate',
  endDate: 'endDate',
  status: 'status',
  customerName: 'customerName',
  customerPhone: 'customerPhone',
  customerEmail: 'customerEmail',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

export type RecurringBookingGroupScalarFieldEnum = (typeof RecurringBookingGroupScalarFieldEnum)[keyof typeof RecurringBookingGroupScalarFieldEnum]


export const PasswordResetRequestScalarFieldEnum = {
  id: 'id',
  email: 'email',
  otpHash: 'otpHash',
  otpExpiresAt: 'otpExpiresAt',
  otpAttempts: 'otpAttempts',
  otpLastSentAt: 'otpLastSentAt',
  otpResendCount: 'otpResendCount',
  usedAt: 'usedAt',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

export type PasswordResetRequestScalarFieldEnum = (typeof PasswordResetRequestScalarFieldEnum)[keyof typeof PasswordResetRequestScalarFieldEnum]


export const PlanScalarFieldEnum = {
  code: 'code',
  name: 'name',
  price: 'price',
  rules: 'rules',
  lastUpdatedAt: 'lastUpdatedAt'
} as const

export type PlanScalarFieldEnum = (typeof PlanScalarFieldEnum)[keyof typeof PlanScalarFieldEnum]


export const SortOrder = {
  asc: 'asc',
  desc: 'desc'
} as const

export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder]


export const JsonNullValueInput = {
  JsonNull: JsonNull
} as const

export type JsonNullValueInput = (typeof JsonNullValueInput)[keyof typeof JsonNullValueInput]


export const QueryMode = {
  default: 'default',
  insensitive: 'insensitive'
} as const

export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode]


export const NullsOrder = {
  first: 'first',
  last: 'last'
} as const

export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder]


export const JsonNullValueFilter = {
  DbNull: DbNull,
  JsonNull: JsonNull,
  AnyNull: AnyNull
} as const

export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter]



/**
 * Field references
 */


/**
 * Reference to a field of type 'String'
 */
export type StringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String'>
    


/**
 * Reference to a field of type 'String[]'
 */
export type ListStringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String[]'>
    


/**
 * Reference to a field of type 'Boolean'
 */
export type BooleanFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Boolean'>
    


/**
 * Reference to a field of type 'DateTime'
 */
export type DateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime'>
    


/**
 * Reference to a field of type 'DateTime[]'
 */
export type ListDateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime[]'>
    


/**
 * Reference to a field of type 'Float'
 */
export type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float'>
    


/**
 * Reference to a field of type 'Float[]'
 */
export type ListFloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float[]'>
    


/**
 * Reference to a field of type 'ComplexUserRole'
 */
export type EnumComplexUserRoleFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ComplexUserRole'>
    


/**
 * Reference to a field of type 'ComplexUserRole[]'
 */
export type ListEnumComplexUserRoleFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ComplexUserRole[]'>
    


/**
 * Reference to a field of type 'Int'
 */
export type IntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int'>
    


/**
 * Reference to a field of type 'Int[]'
 */
export type ListIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int[]'>
    


/**
 * Reference to a field of type 'Decimal'
 */
export type DecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal'>
    


/**
 * Reference to a field of type 'Decimal[]'
 */
export type ListDecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal[]'>
    


/**
 * Reference to a field of type 'DayOfWeek'
 */
export type EnumDayOfWeekFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DayOfWeek'>
    


/**
 * Reference to a field of type 'DayOfWeek[]'
 */
export type ListEnumDayOfWeekFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DayOfWeek[]'>
    


/**
 * Reference to a field of type 'CourtBookingStatus'
 */
export type EnumCourtBookingStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'CourtBookingStatus'>
    


/**
 * Reference to a field of type 'CourtBookingStatus[]'
 */
export type ListEnumCourtBookingStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'CourtBookingStatus[]'>
    


/**
 * Reference to a field of type 'RecurringBookingGroupStatus'
 */
export type EnumRecurringBookingGroupStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'RecurringBookingGroupStatus'>
    


/**
 * Reference to a field of type 'RecurringBookingGroupStatus[]'
 */
export type ListEnumRecurringBookingGroupStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'RecurringBookingGroupStatus[]'>
    


/**
 * Reference to a field of type 'Json'
 */
export type JsonFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Json'>
    


/**
 * Reference to a field of type 'QueryMode'
 */
export type EnumQueryModeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'QueryMode'>
    

/**
 * Batch Payload for updateMany & deleteMany & createMany
 */
export type BatchPayload = {
  count: number
}

export const defineExtension = runtime.Extensions.defineExtension as unknown as runtime.Types.Extensions.ExtendsHook<"define", TypeMapCb, runtime.Types.Extensions.DefaultArgs>
export type DefaultPrismaClient = PrismaClient
export type ErrorFormat = 'pretty' | 'colorless' | 'minimal'
export type PrismaClientOptions = ({
  /**
   * Instance of a Driver Adapter, e.g., like one provided by `@prisma/adapter-pg`.
   */
  adapter: runtime.SqlDriverAdapterFactory
  accelerateUrl?: never
} | {
  /**
   * Prisma Accelerate URL allowing the client to connect through Accelerate instead of a direct database.
   */
  accelerateUrl: string
  adapter?: never
}) & {
  /**
   * @default "colorless"
   */
  errorFormat?: ErrorFormat
  /**
   * @example
   * ```
   * // Shorthand for `emit: 'stdout'`
   * log: ['query', 'info', 'warn', 'error']
   * 
   * // Emit as events only
   * log: [
   *   { emit: 'event', level: 'query' },
   *   { emit: 'event', level: 'info' },
   *   { emit: 'event', level: 'warn' }
   *   { emit: 'event', level: 'error' }
   * ]
   * 
   * / Emit as events and log to stdout
   * og: [
   *  { emit: 'stdout', level: 'query' },
   *  { emit: 'stdout', level: 'info' },
   *  { emit: 'stdout', level: 'warn' }
   *  { emit: 'stdout', level: 'error' }
   * 
   * ```
   * Read more in our [docs](https://pris.ly/d/logging).
   */
  log?: (LogLevel | LogDefinition)[]
  /**
   * The default values for transactionOptions
   * maxWait ?= 2000
   * timeout ?= 5000
   */
  transactionOptions?: {
    maxWait?: number
    timeout?: number
    isolationLevel?: TransactionIsolationLevel
  }
  /**
   * Global configuration for omitting model fields by default.
   * 
   * @example
   * ```
   * const prisma = new PrismaClient({
   *   omit: {
   *     user: {
   *       password: true
   *     }
   *   }
   * })
   * ```
   */
  omit?: GlobalOmitConfig
  /**
   * SQL commenter plugins that add metadata to SQL queries as comments.
   * Comments follow the sqlcommenter format: https://google.github.io/sqlcommenter/
   * 
   * @example
   * ```
   * const prisma = new PrismaClient({
   *   adapter,
   *   comments: [
   *     traceContext(),
   *     queryInsights(),
   *   ],
   * })
   * ```
   */
  comments?: runtime.SqlCommenterPlugin[]
}
export type GlobalOmitConfig = {
  user?: Prisma.UserOmit
  session?: Prisma.SessionOmit
  account?: Prisma.AccountOmit
  verification?: Prisma.VerificationOmit
  complex?: Prisma.ComplexOmit
  complexUser?: Prisma.ComplexUserOmit
  complexInvitation?: Prisma.ComplexInvitationOmit
  sport?: Prisma.SportOmit
  court?: Prisma.CourtOmit
  courtMaintenance?: Prisma.CourtMaintenanceOmit
  courtAvailability?: Prisma.CourtAvailabilityOmit
  courtPriceRule?: Prisma.CourtPriceRuleOmit
  courtBooking?: Prisma.CourtBookingOmit
  courtBookingLog?: Prisma.CourtBookingLogOmit
  recurringBookingGroup?: Prisma.RecurringBookingGroupOmit
  passwordResetRequest?: Prisma.PasswordResetRequestOmit
  plan?: Prisma.PlanOmit
}

/* Types for Logging */
export type LogLevel = 'info' | 'query' | 'warn' | 'error'
export type LogDefinition = {
  level: LogLevel
  emit: 'stdout' | 'event'
}

export type CheckIsLogLevel<T> = T extends LogLevel ? T : never;

export type GetLogType<T> = CheckIsLogLevel<
  T extends LogDefinition ? T['level'] : T
>;

export type GetEvents<T extends any[]> = T extends Array<LogLevel | LogDefinition>
  ? GetLogType<T[number]>
  : never;

export type QueryEvent = {
  timestamp: Date
  query: string
  params: string
  duration: number
  target: string
}

export type LogEvent = {
  timestamp: Date
  message: string
  target: string
}
/* End Types for Logging */


export type PrismaAction =
  | 'findUnique'
  | 'findUniqueOrThrow'
  | 'findMany'
  | 'findFirst'
  | 'findFirstOrThrow'
  | 'create'
  | 'createMany'
  | 'createManyAndReturn'
  | 'update'
  | 'updateMany'
  | 'updateManyAndReturn'
  | 'upsert'
  | 'delete'
  | 'deleteMany'
  | 'executeRaw'
  | 'queryRaw'
  | 'aggregate'
  | 'count'
  | 'runCommandRaw'
  | 'findRaw'
  | 'groupBy'

/**
 * `PrismaClient` proxy available in interactive transactions.
 */
export type TransactionClient = Omit<DefaultPrismaClient, runtime.ITXClientDenyList>

