
/* !!! 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.ts"
import { type PrismaClient } from "./class.ts"

export type * from '../models.ts'

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.9.1
 * Query Engine version: e922089b7d7502aff4249d5da3420f6fa55fc6ad
 */
export const prismaVersion: PrismaVersion = {
  client: "7.9.1",
  engine: "e922089b7d7502aff4249d5da3420f6fa55fc6ad"
}

/**
 * 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;
};

/**
 * Resolved type of the argument passed to the `PrismaClient` constructor.
 *
 * When called without a narrower options type (the common case), this resolves
 * to `PrismaClientOptions` directly, which produces a clear TypeScript error
 * message (`not assignable to parameter of type 'PrismaClientOptions'`) when
 * the argument is missing or incomplete. When the user supplies a narrower
 * options type (e.g. via a literal), it falls back to `Subset` to keep
 * filtering out unknown properties.
 */
export type PrismaClientConstructorArgs<Options extends PrismaClientOptions> =
  [PrismaClientOptions] extends [Options] ? PrismaClientOptions : Subset<Options, PrismaClientOptions>;

/**
 * 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)) & object
  : 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',
  CoinTransaction: 'CoinTransaction',
  Notification: 'Notification',
  AppSettings: 'AppSettings',
  Team: 'Team',
  Player: 'Player',
  Match: 'Match',
  MatchPlayer: 'MatchPlayer',
  UserTeam: 'UserTeam',
  UserTeamPlayer: 'UserTeamPlayer',
  Contest: 'Contest',
  ContestEntry: 'ContestEntry',
  PointSystem: 'PointSystem'
} 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" | "coinTransaction" | "notification" | "appSettings" | "team" | "player" | "match" | "matchPlayer" | "userTeam" | "userTeamPlayer" | "contest" | "contestEntry" | "pointSystem"
    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
        }
      }
    }
    CoinTransaction: {
      payload: Prisma.$CoinTransactionPayload<ExtArgs>
      fields: Prisma.CoinTransactionFieldRefs
      operations: {
        findUnique: {
          args: Prisma.CoinTransactionFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CoinTransactionPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.CoinTransactionFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CoinTransactionPayload>
        }
        findFirst: {
          args: Prisma.CoinTransactionFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CoinTransactionPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.CoinTransactionFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CoinTransactionPayload>
        }
        findMany: {
          args: Prisma.CoinTransactionFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CoinTransactionPayload>[]
        }
        create: {
          args: Prisma.CoinTransactionCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CoinTransactionPayload>
        }
        createMany: {
          args: Prisma.CoinTransactionCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.CoinTransactionCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CoinTransactionPayload>[]
        }
        delete: {
          args: Prisma.CoinTransactionDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CoinTransactionPayload>
        }
        update: {
          args: Prisma.CoinTransactionUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CoinTransactionPayload>
        }
        deleteMany: {
          args: Prisma.CoinTransactionDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.CoinTransactionUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.CoinTransactionUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CoinTransactionPayload>[]
        }
        upsert: {
          args: Prisma.CoinTransactionUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CoinTransactionPayload>
        }
        aggregate: {
          args: Prisma.CoinTransactionAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateCoinTransaction>
        }
        groupBy: {
          args: Prisma.CoinTransactionGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CoinTransactionGroupByOutputType>[]
        }
        count: {
          args: Prisma.CoinTransactionCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CoinTransactionCountAggregateOutputType> | number
        }
      }
    }
    Notification: {
      payload: Prisma.$NotificationPayload<ExtArgs>
      fields: Prisma.NotificationFieldRefs
      operations: {
        findUnique: {
          args: Prisma.NotificationFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.NotificationFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>
        }
        findFirst: {
          args: Prisma.NotificationFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.NotificationFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>
        }
        findMany: {
          args: Prisma.NotificationFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>[]
        }
        create: {
          args: Prisma.NotificationCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>
        }
        createMany: {
          args: Prisma.NotificationCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.NotificationCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>[]
        }
        delete: {
          args: Prisma.NotificationDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>
        }
        update: {
          args: Prisma.NotificationUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>
        }
        deleteMany: {
          args: Prisma.NotificationDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.NotificationUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.NotificationUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>[]
        }
        upsert: {
          args: Prisma.NotificationUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>
        }
        aggregate: {
          args: Prisma.NotificationAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateNotification>
        }
        groupBy: {
          args: Prisma.NotificationGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.NotificationGroupByOutputType>[]
        }
        count: {
          args: Prisma.NotificationCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.NotificationCountAggregateOutputType> | number
        }
      }
    }
    AppSettings: {
      payload: Prisma.$AppSettingsPayload<ExtArgs>
      fields: Prisma.AppSettingsFieldRefs
      operations: {
        findUnique: {
          args: Prisma.AppSettingsFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AppSettingsPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.AppSettingsFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AppSettingsPayload>
        }
        findFirst: {
          args: Prisma.AppSettingsFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AppSettingsPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.AppSettingsFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AppSettingsPayload>
        }
        findMany: {
          args: Prisma.AppSettingsFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AppSettingsPayload>[]
        }
        create: {
          args: Prisma.AppSettingsCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AppSettingsPayload>
        }
        createMany: {
          args: Prisma.AppSettingsCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.AppSettingsCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AppSettingsPayload>[]
        }
        delete: {
          args: Prisma.AppSettingsDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AppSettingsPayload>
        }
        update: {
          args: Prisma.AppSettingsUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AppSettingsPayload>
        }
        deleteMany: {
          args: Prisma.AppSettingsDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.AppSettingsUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.AppSettingsUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AppSettingsPayload>[]
        }
        upsert: {
          args: Prisma.AppSettingsUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AppSettingsPayload>
        }
        aggregate: {
          args: Prisma.AppSettingsAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateAppSettings>
        }
        groupBy: {
          args: Prisma.AppSettingsGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AppSettingsGroupByOutputType>[]
        }
        count: {
          args: Prisma.AppSettingsCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AppSettingsCountAggregateOutputType> | number
        }
      }
    }
    Team: {
      payload: Prisma.$TeamPayload<ExtArgs>
      fields: Prisma.TeamFieldRefs
      operations: {
        findUnique: {
          args: Prisma.TeamFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TeamPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.TeamFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TeamPayload>
        }
        findFirst: {
          args: Prisma.TeamFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TeamPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.TeamFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TeamPayload>
        }
        findMany: {
          args: Prisma.TeamFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TeamPayload>[]
        }
        create: {
          args: Prisma.TeamCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TeamPayload>
        }
        createMany: {
          args: Prisma.TeamCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.TeamCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TeamPayload>[]
        }
        delete: {
          args: Prisma.TeamDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TeamPayload>
        }
        update: {
          args: Prisma.TeamUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TeamPayload>
        }
        deleteMany: {
          args: Prisma.TeamDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.TeamUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.TeamUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TeamPayload>[]
        }
        upsert: {
          args: Prisma.TeamUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TeamPayload>
        }
        aggregate: {
          args: Prisma.TeamAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateTeam>
        }
        groupBy: {
          args: Prisma.TeamGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.TeamGroupByOutputType>[]
        }
        count: {
          args: Prisma.TeamCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.TeamCountAggregateOutputType> | number
        }
      }
    }
    Player: {
      payload: Prisma.$PlayerPayload<ExtArgs>
      fields: Prisma.PlayerFieldRefs
      operations: {
        findUnique: {
          args: Prisma.PlayerFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlayerPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.PlayerFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlayerPayload>
        }
        findFirst: {
          args: Prisma.PlayerFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlayerPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.PlayerFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlayerPayload>
        }
        findMany: {
          args: Prisma.PlayerFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlayerPayload>[]
        }
        create: {
          args: Prisma.PlayerCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlayerPayload>
        }
        createMany: {
          args: Prisma.PlayerCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.PlayerCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlayerPayload>[]
        }
        delete: {
          args: Prisma.PlayerDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlayerPayload>
        }
        update: {
          args: Prisma.PlayerUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlayerPayload>
        }
        deleteMany: {
          args: Prisma.PlayerDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.PlayerUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.PlayerUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlayerPayload>[]
        }
        upsert: {
          args: Prisma.PlayerUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PlayerPayload>
        }
        aggregate: {
          args: Prisma.PlayerAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregatePlayer>
        }
        groupBy: {
          args: Prisma.PlayerGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.PlayerGroupByOutputType>[]
        }
        count: {
          args: Prisma.PlayerCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.PlayerCountAggregateOutputType> | number
        }
      }
    }
    Match: {
      payload: Prisma.$MatchPayload<ExtArgs>
      fields: Prisma.MatchFieldRefs
      operations: {
        findUnique: {
          args: Prisma.MatchFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.MatchFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPayload>
        }
        findFirst: {
          args: Prisma.MatchFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.MatchFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPayload>
        }
        findMany: {
          args: Prisma.MatchFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPayload>[]
        }
        create: {
          args: Prisma.MatchCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPayload>
        }
        createMany: {
          args: Prisma.MatchCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.MatchCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPayload>[]
        }
        delete: {
          args: Prisma.MatchDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPayload>
        }
        update: {
          args: Prisma.MatchUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPayload>
        }
        deleteMany: {
          args: Prisma.MatchDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.MatchUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.MatchUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPayload>[]
        }
        upsert: {
          args: Prisma.MatchUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPayload>
        }
        aggregate: {
          args: Prisma.MatchAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateMatch>
        }
        groupBy: {
          args: Prisma.MatchGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MatchGroupByOutputType>[]
        }
        count: {
          args: Prisma.MatchCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MatchCountAggregateOutputType> | number
        }
      }
    }
    MatchPlayer: {
      payload: Prisma.$MatchPlayerPayload<ExtArgs>
      fields: Prisma.MatchPlayerFieldRefs
      operations: {
        findUnique: {
          args: Prisma.MatchPlayerFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPlayerPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.MatchPlayerFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPlayerPayload>
        }
        findFirst: {
          args: Prisma.MatchPlayerFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPlayerPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.MatchPlayerFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPlayerPayload>
        }
        findMany: {
          args: Prisma.MatchPlayerFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPlayerPayload>[]
        }
        create: {
          args: Prisma.MatchPlayerCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPlayerPayload>
        }
        createMany: {
          args: Prisma.MatchPlayerCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.MatchPlayerCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPlayerPayload>[]
        }
        delete: {
          args: Prisma.MatchPlayerDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPlayerPayload>
        }
        update: {
          args: Prisma.MatchPlayerUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPlayerPayload>
        }
        deleteMany: {
          args: Prisma.MatchPlayerDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.MatchPlayerUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.MatchPlayerUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPlayerPayload>[]
        }
        upsert: {
          args: Prisma.MatchPlayerUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MatchPlayerPayload>
        }
        aggregate: {
          args: Prisma.MatchPlayerAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateMatchPlayer>
        }
        groupBy: {
          args: Prisma.MatchPlayerGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MatchPlayerGroupByOutputType>[]
        }
        count: {
          args: Prisma.MatchPlayerCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MatchPlayerCountAggregateOutputType> | number
        }
      }
    }
    UserTeam: {
      payload: Prisma.$UserTeamPayload<ExtArgs>
      fields: Prisma.UserTeamFieldRefs
      operations: {
        findUnique: {
          args: Prisma.UserTeamFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.UserTeamFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPayload>
        }
        findFirst: {
          args: Prisma.UserTeamFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.UserTeamFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPayload>
        }
        findMany: {
          args: Prisma.UserTeamFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPayload>[]
        }
        create: {
          args: Prisma.UserTeamCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPayload>
        }
        createMany: {
          args: Prisma.UserTeamCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.UserTeamCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPayload>[]
        }
        delete: {
          args: Prisma.UserTeamDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPayload>
        }
        update: {
          args: Prisma.UserTeamUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPayload>
        }
        deleteMany: {
          args: Prisma.UserTeamDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.UserTeamUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.UserTeamUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPayload>[]
        }
        upsert: {
          args: Prisma.UserTeamUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPayload>
        }
        aggregate: {
          args: Prisma.UserTeamAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateUserTeam>
        }
        groupBy: {
          args: Prisma.UserTeamGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.UserTeamGroupByOutputType>[]
        }
        count: {
          args: Prisma.UserTeamCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.UserTeamCountAggregateOutputType> | number
        }
      }
    }
    UserTeamPlayer: {
      payload: Prisma.$UserTeamPlayerPayload<ExtArgs>
      fields: Prisma.UserTeamPlayerFieldRefs
      operations: {
        findUnique: {
          args: Prisma.UserTeamPlayerFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPlayerPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.UserTeamPlayerFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPlayerPayload>
        }
        findFirst: {
          args: Prisma.UserTeamPlayerFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPlayerPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.UserTeamPlayerFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPlayerPayload>
        }
        findMany: {
          args: Prisma.UserTeamPlayerFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPlayerPayload>[]
        }
        create: {
          args: Prisma.UserTeamPlayerCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPlayerPayload>
        }
        createMany: {
          args: Prisma.UserTeamPlayerCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.UserTeamPlayerCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPlayerPayload>[]
        }
        delete: {
          args: Prisma.UserTeamPlayerDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPlayerPayload>
        }
        update: {
          args: Prisma.UserTeamPlayerUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPlayerPayload>
        }
        deleteMany: {
          args: Prisma.UserTeamPlayerDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.UserTeamPlayerUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.UserTeamPlayerUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPlayerPayload>[]
        }
        upsert: {
          args: Prisma.UserTeamPlayerUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserTeamPlayerPayload>
        }
        aggregate: {
          args: Prisma.UserTeamPlayerAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateUserTeamPlayer>
        }
        groupBy: {
          args: Prisma.UserTeamPlayerGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.UserTeamPlayerGroupByOutputType>[]
        }
        count: {
          args: Prisma.UserTeamPlayerCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.UserTeamPlayerCountAggregateOutputType> | number
        }
      }
    }
    Contest: {
      payload: Prisma.$ContestPayload<ExtArgs>
      fields: Prisma.ContestFieldRefs
      operations: {
        findUnique: {
          args: Prisma.ContestFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.ContestFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestPayload>
        }
        findFirst: {
          args: Prisma.ContestFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.ContestFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestPayload>
        }
        findMany: {
          args: Prisma.ContestFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestPayload>[]
        }
        create: {
          args: Prisma.ContestCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestPayload>
        }
        createMany: {
          args: Prisma.ContestCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.ContestCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestPayload>[]
        }
        delete: {
          args: Prisma.ContestDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestPayload>
        }
        update: {
          args: Prisma.ContestUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestPayload>
        }
        deleteMany: {
          args: Prisma.ContestDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.ContestUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.ContestUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestPayload>[]
        }
        upsert: {
          args: Prisma.ContestUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestPayload>
        }
        aggregate: {
          args: Prisma.ContestAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateContest>
        }
        groupBy: {
          args: Prisma.ContestGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ContestGroupByOutputType>[]
        }
        count: {
          args: Prisma.ContestCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ContestCountAggregateOutputType> | number
        }
      }
    }
    ContestEntry: {
      payload: Prisma.$ContestEntryPayload<ExtArgs>
      fields: Prisma.ContestEntryFieldRefs
      operations: {
        findUnique: {
          args: Prisma.ContestEntryFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestEntryPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.ContestEntryFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestEntryPayload>
        }
        findFirst: {
          args: Prisma.ContestEntryFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestEntryPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.ContestEntryFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestEntryPayload>
        }
        findMany: {
          args: Prisma.ContestEntryFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestEntryPayload>[]
        }
        create: {
          args: Prisma.ContestEntryCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestEntryPayload>
        }
        createMany: {
          args: Prisma.ContestEntryCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.ContestEntryCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestEntryPayload>[]
        }
        delete: {
          args: Prisma.ContestEntryDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestEntryPayload>
        }
        update: {
          args: Prisma.ContestEntryUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestEntryPayload>
        }
        deleteMany: {
          args: Prisma.ContestEntryDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.ContestEntryUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.ContestEntryUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestEntryPayload>[]
        }
        upsert: {
          args: Prisma.ContestEntryUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ContestEntryPayload>
        }
        aggregate: {
          args: Prisma.ContestEntryAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateContestEntry>
        }
        groupBy: {
          args: Prisma.ContestEntryGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ContestEntryGroupByOutputType>[]
        }
        count: {
          args: Prisma.ContestEntryCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ContestEntryCountAggregateOutputType> | number
        }
      }
    }
    PointSystem: {
      payload: Prisma.$PointSystemPayload<ExtArgs>
      fields: Prisma.PointSystemFieldRefs
      operations: {
        findUnique: {
          args: Prisma.PointSystemFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PointSystemPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.PointSystemFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PointSystemPayload>
        }
        findFirst: {
          args: Prisma.PointSystemFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PointSystemPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.PointSystemFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PointSystemPayload>
        }
        findMany: {
          args: Prisma.PointSystemFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PointSystemPayload>[]
        }
        create: {
          args: Prisma.PointSystemCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PointSystemPayload>
        }
        createMany: {
          args: Prisma.PointSystemCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.PointSystemCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PointSystemPayload>[]
        }
        delete: {
          args: Prisma.PointSystemDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PointSystemPayload>
        }
        update: {
          args: Prisma.PointSystemUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PointSystemPayload>
        }
        deleteMany: {
          args: Prisma.PointSystemDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.PointSystemUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.PointSystemUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PointSystemPayload>[]
        }
        upsert: {
          args: Prisma.PointSystemUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PointSystemPayload>
        }
        aggregate: {
          args: Prisma.PointSystemAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregatePointSystem>
        }
        groupBy: {
          args: Prisma.PointSystemGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.PointSystemGroupByOutputType>[]
        }
        count: {
          args: Prisma.PointSystemCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.PointSystemCountAggregateOutputType> | 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',
  phone: 'phone',
  passwordHash: 'passwordHash',
  avatarUrl: 'avatarUrl',
  totalPoints: 'totalPoints',
  isAdmin: 'isAdmin',
  coins: 'coins',
  lastDailyBonusAt: 'lastDailyBonusAt',
  isBanned: 'isBanned',
  bannedReason: 'bannedReason',
  bannedAt: 'bannedAt',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

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


export const CoinTransactionScalarFieldEnum = {
  id: 'id',
  userId: 'userId',
  type: 'type',
  amount: 'amount',
  balanceAfter: 'balanceAfter',
  contestId: 'contestId',
  reason: 'reason',
  createdAt: 'createdAt'
} as const

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


export const NotificationScalarFieldEnum = {
  id: 'id',
  userId: 'userId',
  type: 'type',
  title: 'title',
  message: 'message',
  coinAmount: 'coinAmount',
  isRead: 'isRead',
  createdAt: 'createdAt'
} as const

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


export const AppSettingsScalarFieldEnum = {
  id: 'id',
  dailyBonusAmount: 'dailyBonusAmount'
} as const

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


export const TeamScalarFieldEnum = {
  id: 'id',
  name: 'name',
  shortName: 'shortName',
  hasLogo: 'hasLogo',
  logoUrl: 'logoUrl',
  sport: 'sport',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

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


export const PlayerScalarFieldEnum = {
  id: 'id',
  name: 'name',
  teamId: 'teamId',
  role: 'role',
  creditValue: 'creditValue',
  hasPhoto: 'hasPhoto',
  imageUrl: 'imageUrl',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

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


export const MatchScalarFieldEnum = {
  id: 'id',
  sport: 'sport',
  teamAId: 'teamAId',
  teamBId: 'teamBId',
  tournamentName: 'tournamentName',
  format: 'format',
  venue: 'venue',
  startTime: 'startTime',
  status: 'status',
  lockTime: 'lockTime',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

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


export const MatchPlayerScalarFieldEnum = {
  id: 'id',
  matchId: 'matchId',
  playerId: 'playerId',
  isPlaying: 'isPlaying',
  points: 'points',
  runs: 'runs',
  ballsFaced: 'ballsFaced',
  fours: 'fours',
  sixes: 'sixes',
  isOut: 'isOut',
  ballsBowled: 'ballsBowled',
  dotBalls: 'dotBalls',
  maidens: 'maidens',
  runsConceded: 'runsConceded',
  wickets: 'wickets',
  wicketsBowledOrLBW: 'wicketsBowledOrLBW',
  catches: 'catches',
  runOutsDirect: 'runOutsDirect',
  runOutsIndirect: 'runOutsIndirect',
  stumpings: 'stumpings',
  minutesPlayed: 'minutesPlayed',
  goals: 'goals',
  assists: 'assists',
  cleanSheet: 'cleanSheet',
  yellowCards: 'yellowCards',
  redCards: 'redCards',
  ownGoals: 'ownGoals',
  penaltiesSaved: 'penaltiesSaved',
  penaltiesMissed: 'penaltiesMissed',
  saves: 'saves',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

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


export const UserTeamScalarFieldEnum = {
  id: 'id',
  userId: 'userId',
  matchId: 'matchId',
  teamName: 'teamName',
  captainId: 'captainId',
  viceCaptainId: 'viceCaptainId',
  totalPoints: 'totalPoints',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

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


export const UserTeamPlayerScalarFieldEnum = {
  id: 'id',
  userTeamId: 'userTeamId',
  matchPlayerId: 'matchPlayerId'
} as const

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


export const ContestScalarFieldEnum = {
  id: 'id',
  matchId: 'matchId',
  name: 'name',
  maxEntries: 'maxEntries',
  entryCost: 'entryCost',
  prizeDistribution: 'prizeDistribution',
  prizesDistributed: 'prizesDistributed',
  createdAt: 'createdAt'
} as const

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


export const ContestEntryScalarFieldEnum = {
  id: 'id',
  contestId: 'contestId',
  userId: 'userId',
  userTeamId: 'userTeamId',
  status: 'status',
  rank: 'rank',
  createdAt: 'createdAt'
} as const

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


export const PointSystemScalarFieldEnum = {
  id: 'id',
  sport: 'sport',
  format: 'format',
  isDefault: 'isDefault',
  rules: 'rules',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

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


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 '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 '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 'CoinTransactionType'
 */
export type EnumCoinTransactionTypeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'CoinTransactionType'>
    


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


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


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


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


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


/**
 * 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 'MatchStatus'
 */
export type EnumMatchStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'MatchStatus'>
    


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


/**
 * 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'>
    


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


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

/**
 * 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'
/**
 * Options common to all variants of `PrismaClientOptions`, regardless of whether you connect to your database through a driver adapter or through Prisma Accelerate.
 */
export interface PrismaClientBaseOptions {
  /**
   * @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[]
  /**
   * Optional maximum size for the query plan cache. If not provided, a default size will be used.
   * A value of `0` can be used to disable the cache entirely. A higher cache size can improve
   * performance for applications that execute a large number of unique queries, while a smaller
   * cache size can reduce memory usage.
   * 
   * @example
   * ```
   * const prisma = new PrismaClient({
   *   adapter,
   *   queryPlanCacheMaxSize: 100,
   * })
   * ```
   */
  queryPlanCacheMaxSize?: number
}

/**
 * `PrismaClient` options for connecting to your database through Prisma Accelerate instead of a driver adapter.
 * 
 * Learn more: https://pris.ly/d/accelerate
 */
export interface PrismaClientOptionsWithAccelerateUrl extends PrismaClientBaseOptions {
  /**
   * The Prisma Accelerate connection URL. Use this option to connect to your database through Prisma Accelerate instead of using a driver adapter to connect directly.
   * 
   * Learn more: https://pris.ly/d/accelerate
   */
  accelerateUrl: string
  adapter?: never
}

/**
 * `PrismaClient` options for connecting to your database through a driver adapter. This is the common case in Prisma 7.
 * 
 * Learn more: https://pris.ly/d/driver-adapters
 */
export interface PrismaClientOptionsWithAdapter extends PrismaClientBaseOptions {
  /**
   * A driver adapter that PrismaClient uses to connect to your database, such as the ones provided by `@prisma/adapter-pg`, `@prisma/adapter-libsql`, `@prisma/adapter-planetscale`, etc.
   * 
   * A driver adapter is **required** unless you connect to your database through Prisma Accelerate (in which case use `accelerateUrl` instead).
   * 
   * Learn more: https://pris.ly/d/driver-adapters
   * 
   * @example
   * ```ts
   * import { PrismaPg } from '@prisma/adapter-pg'
   * import { PrismaClient } from './generated/prisma/client'
   * 
   * const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL })
   * const prisma = new PrismaClient({ adapter })
   * ```
   */
  adapter: runtime.SqlDriverAdapterFactory
  accelerateUrl?: never
}

/**
 * Options passed to the `PrismaClient` constructor.
 * 
 * A driver adapter (or, alternatively, a Prisma Accelerate URL) is **required**. See {@link PrismaClientOptionsWithAdapter} and {@link PrismaClientOptionsWithAccelerateUrl} for the two variants. All other properties live in {@link PrismaClientBaseOptions} and are optional.
 * 
 * Learn more about driver adapters: https://pris.ly/d/driver-adapters
 */
export type PrismaClientOptions = PrismaClientOptionsWithAccelerateUrl | PrismaClientOptionsWithAdapter
export type GlobalOmitConfig = {
  user?: Prisma.UserOmit
  coinTransaction?: Prisma.CoinTransactionOmit
  notification?: Prisma.NotificationOmit
  appSettings?: Prisma.AppSettingsOmit
  team?: Prisma.TeamOmit
  player?: Prisma.PlayerOmit
  match?: Prisma.MatchOmit
  matchPlayer?: Prisma.MatchPlayerOmit
  userTeam?: Prisma.UserTeamOmit
  userTeamPlayer?: Prisma.UserTeamPlayerOmit
  contest?: Prisma.ContestOmit
  contestEntry?: Prisma.ContestEntryOmit
  pointSystem?: Prisma.PointSystemOmit
}

/* 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>

