
/**
 * Client
**/

import * as runtime from '@prisma/client/runtime/library.js';
import $Types = runtime.Types // general types
import $Public = runtime.Types.Public
import $Utils = runtime.Types.Utils
import $Extensions = runtime.Types.Extensions
import $Result = runtime.Types.Result

export type PrismaPromise<T> = $Public.PrismaPromise<T>


/**
 * Model GuildSettings
 * 
 */
export type GuildSettings = $Result.DefaultSelection<Prisma.$GuildSettingsPayload>
/**
 * Model Ticket
 * 
 */
export type Ticket = $Result.DefaultSelection<Prisma.$TicketPayload>
/**
 * Model TicketAutomationRule
 * 
 */
export type TicketAutomationRule = $Result.DefaultSelection<Prisma.$TicketAutomationRulePayload>
/**
 * Model KnowledgeBaseArticle
 * 
 */
export type KnowledgeBaseArticle = $Result.DefaultSelection<Prisma.$KnowledgeBaseArticlePayload>
/**
 * Model Level
 * 
 */
export type Level = $Result.DefaultSelection<Prisma.$LevelPayload>
/**
 * Model TicketSupportSession
 * 
 */
export type TicketSupportSession = $Result.DefaultSelection<Prisma.$TicketSupportSessionPayload>
/**
 * Model Birthday
 * 
 */
export type Birthday = $Result.DefaultSelection<Prisma.$BirthdayPayload>
/**
 * Model ReactionRoleSet
 * 
 */
export type ReactionRoleSet = $Result.DefaultSelection<Prisma.$ReactionRoleSetPayload>
/**
 * Model Event
 * 
 */
export type Event = $Result.DefaultSelection<Prisma.$EventPayload>
/**
 * Model EventSignup
 * 
 */
export type EventSignup = $Result.DefaultSelection<Prisma.$EventSignupPayload>
/**
 * Model RegisterForm
 * 
 */
export type RegisterForm = $Result.DefaultSelection<Prisma.$RegisterFormPayload>
/**
 * Model RegisterFormField
 * 
 */
export type RegisterFormField = $Result.DefaultSelection<Prisma.$RegisterFormFieldPayload>
/**
 * Model RegisterApplication
 * 
 */
export type RegisterApplication = $Result.DefaultSelection<Prisma.$RegisterApplicationPayload>
/**
 * Model RegisterApplicationAnswer
 * 
 */
export type RegisterApplicationAnswer = $Result.DefaultSelection<Prisma.$RegisterApplicationAnswerPayload>

/**
 * ##  Prisma Client ʲˢ
 * 
 * Type-safe database client for TypeScript & Node.js
 * @example
 * ```
 * const prisma = new PrismaClient()
 * // Fetch zero or more GuildSettings
 * const guildSettings = await prisma.guildSettings.findMany()
 * ```
 *
 * 
 * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client).
 */
export class PrismaClient<
  ClientOptions extends Prisma.PrismaClientOptions = Prisma.PrismaClientOptions,
  U = 'log' extends keyof ClientOptions ? ClientOptions['log'] extends Array<Prisma.LogLevel | Prisma.LogDefinition> ? Prisma.GetEvents<ClientOptions['log']> : never : never,
  ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs
> {
  [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['other'] }

    /**
   * ##  Prisma Client ʲˢ
   * 
   * Type-safe database client for TypeScript & Node.js
   * @example
   * ```
   * const prisma = new PrismaClient()
   * // Fetch zero or more GuildSettings
   * const guildSettings = await prisma.guildSettings.findMany()
   * ```
   *
   * 
   * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client).
   */

  constructor(optionsArg ?: Prisma.Subset<ClientOptions, Prisma.PrismaClientOptions>);
  $on<V extends U>(eventType: V, callback: (event: V extends 'query' ? Prisma.QueryEvent : Prisma.LogEvent) => void): void;

  /**
   * Connect with the database
   */
  $connect(): $Utils.JsPromise<void>;

  /**
   * Disconnect from the database
   */
  $disconnect(): $Utils.JsPromise<void>;

  /**
   * Add a middleware
   * @deprecated since 4.16.0. For new code, prefer client extensions instead.
   * @see https://pris.ly/d/extensions
   */
  $use(cb: Prisma.Middleware): void

/**
   * Executes a prepared raw query and returns the number of affected rows.
   * @example
   * ```
   * const result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};`
   * ```
   * 
   * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/raw-database-access).
   */
  $executeRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<number>;

  /**
   * Executes a raw query and returns the number of affected rows.
   * Susceptible to SQL injections, see documentation.
   * @example
   * ```
   * const result = await prisma.$executeRawUnsafe('UPDATE User SET cool = $1 WHERE email = $2 ;', true, 'user@email.com')
   * ```
   * 
   * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/raw-database-access).
   */
  $executeRawUnsafe<T = unknown>(query: string, ...values: any[]): Prisma.PrismaPromise<number>;

  /**
   * Performs a prepared raw query and returns the `SELECT` data.
   * @example
   * ```
   * const result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};`
   * ```
   * 
   * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/raw-database-access).
   */
  $queryRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<T>;

  /**
   * Performs a raw query and returns the `SELECT` data.
   * Susceptible to SQL injections, see documentation.
   * @example
   * ```
   * const result = await prisma.$queryRawUnsafe('SELECT * FROM User WHERE id = $1 OR email = $2;', 1, 'user@email.com')
   * ```
   * 
   * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/raw-database-access).
   */
  $queryRawUnsafe<T = unknown>(query: string, ...values: any[]): Prisma.PrismaPromise<T>;


  /**
   * Allows the running of a sequence of read/write operations that are guaranteed to either succeed or fail as a whole.
   * @example
   * ```
   * const [george, bob, alice] = await prisma.$transaction([
   *   prisma.user.create({ data: { name: 'George' } }),
   *   prisma.user.create({ data: { name: 'Bob' } }),
   *   prisma.user.create({ data: { name: 'Alice' } }),
   * ])
   * ```
   * 
   * Read more in our [docs](https://www.prisma.io/docs/concepts/components/prisma-client/transactions).
   */
  $transaction<P extends Prisma.PrismaPromise<any>[]>(arg: [...P], options?: { isolationLevel?: Prisma.TransactionIsolationLevel }): $Utils.JsPromise<runtime.Types.Utils.UnwrapTuple<P>>

  $transaction<R>(fn: (prisma: Omit<PrismaClient, runtime.ITXClientDenyList>) => $Utils.JsPromise<R>, options?: { maxWait?: number, timeout?: number, isolationLevel?: Prisma.TransactionIsolationLevel }): $Utils.JsPromise<R>


  $extends: $Extensions.ExtendsHook<"extends", Prisma.TypeMapCb, ExtArgs>

      /**
   * `prisma.guildSettings`: Exposes CRUD operations for the **GuildSettings** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more GuildSettings
    * const guildSettings = await prisma.guildSettings.findMany()
    * ```
    */
  get guildSettings(): Prisma.GuildSettingsDelegate<ExtArgs>;

  /**
   * `prisma.ticket`: Exposes CRUD operations for the **Ticket** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Tickets
    * const tickets = await prisma.ticket.findMany()
    * ```
    */
  get ticket(): Prisma.TicketDelegate<ExtArgs>;

  /**
   * `prisma.ticketAutomationRule`: Exposes CRUD operations for the **TicketAutomationRule** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more TicketAutomationRules
    * const ticketAutomationRules = await prisma.ticketAutomationRule.findMany()
    * ```
    */
  get ticketAutomationRule(): Prisma.TicketAutomationRuleDelegate<ExtArgs>;

  /**
   * `prisma.knowledgeBaseArticle`: Exposes CRUD operations for the **KnowledgeBaseArticle** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more KnowledgeBaseArticles
    * const knowledgeBaseArticles = await prisma.knowledgeBaseArticle.findMany()
    * ```
    */
  get knowledgeBaseArticle(): Prisma.KnowledgeBaseArticleDelegate<ExtArgs>;

  /**
   * `prisma.level`: Exposes CRUD operations for the **Level** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Levels
    * const levels = await prisma.level.findMany()
    * ```
    */
  get level(): Prisma.LevelDelegate<ExtArgs>;

  /**
   * `prisma.ticketSupportSession`: Exposes CRUD operations for the **TicketSupportSession** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more TicketSupportSessions
    * const ticketSupportSessions = await prisma.ticketSupportSession.findMany()
    * ```
    */
  get ticketSupportSession(): Prisma.TicketSupportSessionDelegate<ExtArgs>;

  /**
   * `prisma.birthday`: Exposes CRUD operations for the **Birthday** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Birthdays
    * const birthdays = await prisma.birthday.findMany()
    * ```
    */
  get birthday(): Prisma.BirthdayDelegate<ExtArgs>;

  /**
   * `prisma.reactionRoleSet`: Exposes CRUD operations for the **ReactionRoleSet** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more ReactionRoleSets
    * const reactionRoleSets = await prisma.reactionRoleSet.findMany()
    * ```
    */
  get reactionRoleSet(): Prisma.ReactionRoleSetDelegate<ExtArgs>;

  /**
   * `prisma.event`: Exposes CRUD operations for the **Event** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Events
    * const events = await prisma.event.findMany()
    * ```
    */
  get event(): Prisma.EventDelegate<ExtArgs>;

  /**
   * `prisma.eventSignup`: Exposes CRUD operations for the **EventSignup** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more EventSignups
    * const eventSignups = await prisma.eventSignup.findMany()
    * ```
    */
  get eventSignup(): Prisma.EventSignupDelegate<ExtArgs>;

  /**
   * `prisma.registerForm`: Exposes CRUD operations for the **RegisterForm** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more RegisterForms
    * const registerForms = await prisma.registerForm.findMany()
    * ```
    */
  get registerForm(): Prisma.RegisterFormDelegate<ExtArgs>;

  /**
   * `prisma.registerFormField`: Exposes CRUD operations for the **RegisterFormField** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more RegisterFormFields
    * const registerFormFields = await prisma.registerFormField.findMany()
    * ```
    */
  get registerFormField(): Prisma.RegisterFormFieldDelegate<ExtArgs>;

  /**
   * `prisma.registerApplication`: Exposes CRUD operations for the **RegisterApplication** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more RegisterApplications
    * const registerApplications = await prisma.registerApplication.findMany()
    * ```
    */
  get registerApplication(): Prisma.RegisterApplicationDelegate<ExtArgs>;

  /**
   * `prisma.registerApplicationAnswer`: Exposes CRUD operations for the **RegisterApplicationAnswer** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more RegisterApplicationAnswers
    * const registerApplicationAnswers = await prisma.registerApplicationAnswer.findMany()
    * ```
    */
  get registerApplicationAnswer(): Prisma.RegisterApplicationAnswerDelegate<ExtArgs>;
}

export namespace Prisma {
  export import DMMF = runtime.DMMF

  export type PrismaPromise<T> = $Public.PrismaPromise<T>

  /**
   * Validator
   */
  export import validator = runtime.Public.validator

  /**
   * Prisma Errors
   */
  export import PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError
  export import PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError
  export import PrismaClientRustPanicError = runtime.PrismaClientRustPanicError
  export import PrismaClientInitializationError = runtime.PrismaClientInitializationError
  export import PrismaClientValidationError = runtime.PrismaClientValidationError
  export import NotFoundError = runtime.NotFoundError

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



  /**
   * Decimal.js
   */
  export import Decimal = runtime.Decimal

  export type DecimalJsLike = runtime.DecimalJsLike

  /**
   * Metrics 
   */
  export type Metrics = runtime.Metrics
  export type Metric<T> = runtime.Metric<T>
  export type MetricHistogram = runtime.MetricHistogram
  export type MetricHistogramBucket = runtime.MetricHistogramBucket

  /**
  * Extensions
  */
  export import Extension = $Extensions.UserArgs
  export import getExtensionContext = runtime.Extensions.getExtensionContext
  export import Args = $Public.Args
  export import Payload = $Public.Payload
  export import Result = $Public.Result
  export import Exact = $Public.Exact

  /**
   * Prisma Client JS version: 5.22.0
   * Query Engine version: 605197351a3c8bdd595af2d2a9bc3025bca48ea2
   */
  export type PrismaVersion = {
    client: string
  }

  export const prismaVersion: PrismaVersion 

  /**
   * Utility Types
   */


  export import JsonObject = runtime.JsonObject
  export import JsonArray = runtime.JsonArray
  export import JsonValue = runtime.JsonValue
  export import InputJsonObject = runtime.InputJsonObject
  export import InputJsonArray = runtime.InputJsonArray
  export import InputJsonValue = runtime.InputJsonValue

  /**
   * Types of the values used to represent different kinds of `null` values when working with JSON fields.
   * 
   * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
   */
  namespace NullTypes {
    /**
    * Type of `Prisma.DbNull`.
    * 
    * You cannot use other instances of this class. Please use the `Prisma.DbNull` value.
    * 
    * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
    */
    class DbNull {
      private DbNull: never
      private constructor()
    }

    /**
    * Type of `Prisma.JsonNull`.
    * 
    * You cannot use other instances of this class. Please use the `Prisma.JsonNull` value.
    * 
    * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
    */
    class JsonNull {
      private JsonNull: never
      private constructor()
    }

    /**
    * Type of `Prisma.AnyNull`.
    * 
    * You cannot use other instances of this class. Please use the `Prisma.AnyNull` value.
    * 
    * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
    */
    class AnyNull {
      private AnyNull: never
      private constructor()
    }
  }

  /**
   * 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: NullTypes.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: NullTypes.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: NullTypes.AnyNull

  type SelectAndInclude = {
    select: any
    include: any
  }

  type SelectAndOmit = {
    select: any
    omit: any
  }

  /**
   * Get the type of the value, that the Promise holds.
   */
  export type PromiseType<T extends PromiseLike<any>> = T extends PromiseLike<infer U> ? U : T;

  /**
   * Get the return type of a function which returns a Promise.
   */
  export type PromiseReturnType<T extends (...args: any) => $Utils.JsPromise<any>> = PromiseType<ReturnType<T>>

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

  export type RequiredKeys<T> = {
    [K in keyof T]-?: {} extends Prisma__Pick<T, K> ? never : K
  }[keyof T]

  export type TruthyKeys<T> = keyof {
    [K in keyof T as T[K] extends false | undefined | null ? never : K]: K
  }

  export type TrueKeys<T> = TruthyKeys<Prisma__Pick<T, RequiredKeys<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
   */
  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]

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

  export type Union = any

  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 AtBasic<O extends object, K extends Key> = K extends keyof O ? O[K] : never;
  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
  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 ? K : 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>>>;

  /**
  A [[Boolean]]
  */
  export type Boolean = True | False

  // /**
  // 1
  // */
  export type True = 1

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

  type Cast<A, B> = A extends B ? A : B;

  export const type: unique symbol;



  /**
   * Used by group by
   */

  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

  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>
  type MaybeTupleToUnion<T> = T extends any[] ? TupleToUnion<T> : T

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

  /**
   * Exclude all keys with underscores
   */
  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: {
    GuildSettings: 'GuildSettings',
    Ticket: 'Ticket',
    TicketAutomationRule: 'TicketAutomationRule',
    KnowledgeBaseArticle: 'KnowledgeBaseArticle',
    Level: 'Level',
    TicketSupportSession: 'TicketSupportSession',
    Birthday: 'Birthday',
    ReactionRoleSet: 'ReactionRoleSet',
    Event: 'Event',
    EventSignup: 'EventSignup',
    RegisterForm: 'RegisterForm',
    RegisterFormField: 'RegisterFormField',
    RegisterApplication: 'RegisterApplication',
    RegisterApplicationAnswer: 'RegisterApplicationAnswer'
  };

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


  export type Datasources = {
    db?: Datasource
  }

  interface TypeMapCb extends $Utils.Fn<{extArgs: $Extensions.InternalArgs, clientOptions: PrismaClientOptions }, $Utils.Record<string, any>> {
    returns: Prisma.TypeMap<this['params']['extArgs'], this['params']['clientOptions']>
  }

  export type TypeMap<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, ClientOptions = {}> = {
    meta: {
      modelProps: "guildSettings" | "ticket" | "ticketAutomationRule" | "knowledgeBaseArticle" | "level" | "ticketSupportSession" | "birthday" | "reactionRoleSet" | "event" | "eventSignup" | "registerForm" | "registerFormField" | "registerApplication" | "registerApplicationAnswer"
      txIsolationLevel: Prisma.TransactionIsolationLevel
    }
    model: {
      GuildSettings: {
        payload: Prisma.$GuildSettingsPayload<ExtArgs>
        fields: Prisma.GuildSettingsFieldRefs
        operations: {
          findUnique: {
            args: Prisma.GuildSettingsFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$GuildSettingsPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.GuildSettingsFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$GuildSettingsPayload>
          }
          findFirst: {
            args: Prisma.GuildSettingsFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$GuildSettingsPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.GuildSettingsFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$GuildSettingsPayload>
          }
          findMany: {
            args: Prisma.GuildSettingsFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$GuildSettingsPayload>[]
          }
          create: {
            args: Prisma.GuildSettingsCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$GuildSettingsPayload>
          }
          createMany: {
            args: Prisma.GuildSettingsCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.GuildSettingsCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$GuildSettingsPayload>[]
          }
          delete: {
            args: Prisma.GuildSettingsDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$GuildSettingsPayload>
          }
          update: {
            args: Prisma.GuildSettingsUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$GuildSettingsPayload>
          }
          deleteMany: {
            args: Prisma.GuildSettingsDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.GuildSettingsUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.GuildSettingsUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$GuildSettingsPayload>
          }
          aggregate: {
            args: Prisma.GuildSettingsAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateGuildSettings>
          }
          groupBy: {
            args: Prisma.GuildSettingsGroupByArgs<ExtArgs>
            result: $Utils.Optional<GuildSettingsGroupByOutputType>[]
          }
          count: {
            args: Prisma.GuildSettingsCountArgs<ExtArgs>
            result: $Utils.Optional<GuildSettingsCountAggregateOutputType> | number
          }
        }
      }
      Ticket: {
        payload: Prisma.$TicketPayload<ExtArgs>
        fields: Prisma.TicketFieldRefs
        operations: {
          findUnique: {
            args: Prisma.TicketFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.TicketFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketPayload>
          }
          findFirst: {
            args: Prisma.TicketFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.TicketFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketPayload>
          }
          findMany: {
            args: Prisma.TicketFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketPayload>[]
          }
          create: {
            args: Prisma.TicketCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketPayload>
          }
          createMany: {
            args: Prisma.TicketCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.TicketCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketPayload>[]
          }
          delete: {
            args: Prisma.TicketDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketPayload>
          }
          update: {
            args: Prisma.TicketUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketPayload>
          }
          deleteMany: {
            args: Prisma.TicketDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.TicketUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.TicketUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketPayload>
          }
          aggregate: {
            args: Prisma.TicketAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateTicket>
          }
          groupBy: {
            args: Prisma.TicketGroupByArgs<ExtArgs>
            result: $Utils.Optional<TicketGroupByOutputType>[]
          }
          count: {
            args: Prisma.TicketCountArgs<ExtArgs>
            result: $Utils.Optional<TicketCountAggregateOutputType> | number
          }
        }
      }
      TicketAutomationRule: {
        payload: Prisma.$TicketAutomationRulePayload<ExtArgs>
        fields: Prisma.TicketAutomationRuleFieldRefs
        operations: {
          findUnique: {
            args: Prisma.TicketAutomationRuleFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketAutomationRulePayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.TicketAutomationRuleFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketAutomationRulePayload>
          }
          findFirst: {
            args: Prisma.TicketAutomationRuleFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketAutomationRulePayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.TicketAutomationRuleFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketAutomationRulePayload>
          }
          findMany: {
            args: Prisma.TicketAutomationRuleFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketAutomationRulePayload>[]
          }
          create: {
            args: Prisma.TicketAutomationRuleCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketAutomationRulePayload>
          }
          createMany: {
            args: Prisma.TicketAutomationRuleCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.TicketAutomationRuleCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketAutomationRulePayload>[]
          }
          delete: {
            args: Prisma.TicketAutomationRuleDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketAutomationRulePayload>
          }
          update: {
            args: Prisma.TicketAutomationRuleUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketAutomationRulePayload>
          }
          deleteMany: {
            args: Prisma.TicketAutomationRuleDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.TicketAutomationRuleUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.TicketAutomationRuleUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketAutomationRulePayload>
          }
          aggregate: {
            args: Prisma.TicketAutomationRuleAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateTicketAutomationRule>
          }
          groupBy: {
            args: Prisma.TicketAutomationRuleGroupByArgs<ExtArgs>
            result: $Utils.Optional<TicketAutomationRuleGroupByOutputType>[]
          }
          count: {
            args: Prisma.TicketAutomationRuleCountArgs<ExtArgs>
            result: $Utils.Optional<TicketAutomationRuleCountAggregateOutputType> | number
          }
        }
      }
      KnowledgeBaseArticle: {
        payload: Prisma.$KnowledgeBaseArticlePayload<ExtArgs>
        fields: Prisma.KnowledgeBaseArticleFieldRefs
        operations: {
          findUnique: {
            args: Prisma.KnowledgeBaseArticleFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$KnowledgeBaseArticlePayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.KnowledgeBaseArticleFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$KnowledgeBaseArticlePayload>
          }
          findFirst: {
            args: Prisma.KnowledgeBaseArticleFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$KnowledgeBaseArticlePayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.KnowledgeBaseArticleFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$KnowledgeBaseArticlePayload>
          }
          findMany: {
            args: Prisma.KnowledgeBaseArticleFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$KnowledgeBaseArticlePayload>[]
          }
          create: {
            args: Prisma.KnowledgeBaseArticleCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$KnowledgeBaseArticlePayload>
          }
          createMany: {
            args: Prisma.KnowledgeBaseArticleCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.KnowledgeBaseArticleCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$KnowledgeBaseArticlePayload>[]
          }
          delete: {
            args: Prisma.KnowledgeBaseArticleDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$KnowledgeBaseArticlePayload>
          }
          update: {
            args: Prisma.KnowledgeBaseArticleUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$KnowledgeBaseArticlePayload>
          }
          deleteMany: {
            args: Prisma.KnowledgeBaseArticleDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.KnowledgeBaseArticleUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.KnowledgeBaseArticleUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$KnowledgeBaseArticlePayload>
          }
          aggregate: {
            args: Prisma.KnowledgeBaseArticleAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateKnowledgeBaseArticle>
          }
          groupBy: {
            args: Prisma.KnowledgeBaseArticleGroupByArgs<ExtArgs>
            result: $Utils.Optional<KnowledgeBaseArticleGroupByOutputType>[]
          }
          count: {
            args: Prisma.KnowledgeBaseArticleCountArgs<ExtArgs>
            result: $Utils.Optional<KnowledgeBaseArticleCountAggregateOutputType> | number
          }
        }
      }
      Level: {
        payload: Prisma.$LevelPayload<ExtArgs>
        fields: Prisma.LevelFieldRefs
        operations: {
          findUnique: {
            args: Prisma.LevelFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LevelPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.LevelFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LevelPayload>
          }
          findFirst: {
            args: Prisma.LevelFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LevelPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.LevelFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LevelPayload>
          }
          findMany: {
            args: Prisma.LevelFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LevelPayload>[]
          }
          create: {
            args: Prisma.LevelCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LevelPayload>
          }
          createMany: {
            args: Prisma.LevelCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.LevelCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LevelPayload>[]
          }
          delete: {
            args: Prisma.LevelDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LevelPayload>
          }
          update: {
            args: Prisma.LevelUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LevelPayload>
          }
          deleteMany: {
            args: Prisma.LevelDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.LevelUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.LevelUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$LevelPayload>
          }
          aggregate: {
            args: Prisma.LevelAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateLevel>
          }
          groupBy: {
            args: Prisma.LevelGroupByArgs<ExtArgs>
            result: $Utils.Optional<LevelGroupByOutputType>[]
          }
          count: {
            args: Prisma.LevelCountArgs<ExtArgs>
            result: $Utils.Optional<LevelCountAggregateOutputType> | number
          }
        }
      }
      TicketSupportSession: {
        payload: Prisma.$TicketSupportSessionPayload<ExtArgs>
        fields: Prisma.TicketSupportSessionFieldRefs
        operations: {
          findUnique: {
            args: Prisma.TicketSupportSessionFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketSupportSessionPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.TicketSupportSessionFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketSupportSessionPayload>
          }
          findFirst: {
            args: Prisma.TicketSupportSessionFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketSupportSessionPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.TicketSupportSessionFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketSupportSessionPayload>
          }
          findMany: {
            args: Prisma.TicketSupportSessionFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketSupportSessionPayload>[]
          }
          create: {
            args: Prisma.TicketSupportSessionCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketSupportSessionPayload>
          }
          createMany: {
            args: Prisma.TicketSupportSessionCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.TicketSupportSessionCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketSupportSessionPayload>[]
          }
          delete: {
            args: Prisma.TicketSupportSessionDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketSupportSessionPayload>
          }
          update: {
            args: Prisma.TicketSupportSessionUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketSupportSessionPayload>
          }
          deleteMany: {
            args: Prisma.TicketSupportSessionDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.TicketSupportSessionUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.TicketSupportSessionUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$TicketSupportSessionPayload>
          }
          aggregate: {
            args: Prisma.TicketSupportSessionAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateTicketSupportSession>
          }
          groupBy: {
            args: Prisma.TicketSupportSessionGroupByArgs<ExtArgs>
            result: $Utils.Optional<TicketSupportSessionGroupByOutputType>[]
          }
          count: {
            args: Prisma.TicketSupportSessionCountArgs<ExtArgs>
            result: $Utils.Optional<TicketSupportSessionCountAggregateOutputType> | number
          }
        }
      }
      Birthday: {
        payload: Prisma.$BirthdayPayload<ExtArgs>
        fields: Prisma.BirthdayFieldRefs
        operations: {
          findUnique: {
            args: Prisma.BirthdayFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BirthdayPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.BirthdayFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BirthdayPayload>
          }
          findFirst: {
            args: Prisma.BirthdayFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BirthdayPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.BirthdayFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BirthdayPayload>
          }
          findMany: {
            args: Prisma.BirthdayFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BirthdayPayload>[]
          }
          create: {
            args: Prisma.BirthdayCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BirthdayPayload>
          }
          createMany: {
            args: Prisma.BirthdayCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.BirthdayCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BirthdayPayload>[]
          }
          delete: {
            args: Prisma.BirthdayDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BirthdayPayload>
          }
          update: {
            args: Prisma.BirthdayUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BirthdayPayload>
          }
          deleteMany: {
            args: Prisma.BirthdayDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.BirthdayUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.BirthdayUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$BirthdayPayload>
          }
          aggregate: {
            args: Prisma.BirthdayAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateBirthday>
          }
          groupBy: {
            args: Prisma.BirthdayGroupByArgs<ExtArgs>
            result: $Utils.Optional<BirthdayGroupByOutputType>[]
          }
          count: {
            args: Prisma.BirthdayCountArgs<ExtArgs>
            result: $Utils.Optional<BirthdayCountAggregateOutputType> | number
          }
        }
      }
      ReactionRoleSet: {
        payload: Prisma.$ReactionRoleSetPayload<ExtArgs>
        fields: Prisma.ReactionRoleSetFieldRefs
        operations: {
          findUnique: {
            args: Prisma.ReactionRoleSetFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ReactionRoleSetPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.ReactionRoleSetFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ReactionRoleSetPayload>
          }
          findFirst: {
            args: Prisma.ReactionRoleSetFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ReactionRoleSetPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.ReactionRoleSetFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ReactionRoleSetPayload>
          }
          findMany: {
            args: Prisma.ReactionRoleSetFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ReactionRoleSetPayload>[]
          }
          create: {
            args: Prisma.ReactionRoleSetCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ReactionRoleSetPayload>
          }
          createMany: {
            args: Prisma.ReactionRoleSetCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.ReactionRoleSetCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ReactionRoleSetPayload>[]
          }
          delete: {
            args: Prisma.ReactionRoleSetDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ReactionRoleSetPayload>
          }
          update: {
            args: Prisma.ReactionRoleSetUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ReactionRoleSetPayload>
          }
          deleteMany: {
            args: Prisma.ReactionRoleSetDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.ReactionRoleSetUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.ReactionRoleSetUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ReactionRoleSetPayload>
          }
          aggregate: {
            args: Prisma.ReactionRoleSetAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateReactionRoleSet>
          }
          groupBy: {
            args: Prisma.ReactionRoleSetGroupByArgs<ExtArgs>
            result: $Utils.Optional<ReactionRoleSetGroupByOutputType>[]
          }
          count: {
            args: Prisma.ReactionRoleSetCountArgs<ExtArgs>
            result: $Utils.Optional<ReactionRoleSetCountAggregateOutputType> | number
          }
        }
      }
      Event: {
        payload: Prisma.$EventPayload<ExtArgs>
        fields: Prisma.EventFieldRefs
        operations: {
          findUnique: {
            args: Prisma.EventFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.EventFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventPayload>
          }
          findFirst: {
            args: Prisma.EventFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.EventFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventPayload>
          }
          findMany: {
            args: Prisma.EventFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventPayload>[]
          }
          create: {
            args: Prisma.EventCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventPayload>
          }
          createMany: {
            args: Prisma.EventCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.EventCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventPayload>[]
          }
          delete: {
            args: Prisma.EventDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventPayload>
          }
          update: {
            args: Prisma.EventUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventPayload>
          }
          deleteMany: {
            args: Prisma.EventDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.EventUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.EventUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventPayload>
          }
          aggregate: {
            args: Prisma.EventAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateEvent>
          }
          groupBy: {
            args: Prisma.EventGroupByArgs<ExtArgs>
            result: $Utils.Optional<EventGroupByOutputType>[]
          }
          count: {
            args: Prisma.EventCountArgs<ExtArgs>
            result: $Utils.Optional<EventCountAggregateOutputType> | number
          }
        }
      }
      EventSignup: {
        payload: Prisma.$EventSignupPayload<ExtArgs>
        fields: Prisma.EventSignupFieldRefs
        operations: {
          findUnique: {
            args: Prisma.EventSignupFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventSignupPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.EventSignupFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventSignupPayload>
          }
          findFirst: {
            args: Prisma.EventSignupFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventSignupPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.EventSignupFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventSignupPayload>
          }
          findMany: {
            args: Prisma.EventSignupFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventSignupPayload>[]
          }
          create: {
            args: Prisma.EventSignupCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventSignupPayload>
          }
          createMany: {
            args: Prisma.EventSignupCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.EventSignupCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventSignupPayload>[]
          }
          delete: {
            args: Prisma.EventSignupDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventSignupPayload>
          }
          update: {
            args: Prisma.EventSignupUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventSignupPayload>
          }
          deleteMany: {
            args: Prisma.EventSignupDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.EventSignupUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.EventSignupUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$EventSignupPayload>
          }
          aggregate: {
            args: Prisma.EventSignupAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateEventSignup>
          }
          groupBy: {
            args: Prisma.EventSignupGroupByArgs<ExtArgs>
            result: $Utils.Optional<EventSignupGroupByOutputType>[]
          }
          count: {
            args: Prisma.EventSignupCountArgs<ExtArgs>
            result: $Utils.Optional<EventSignupCountAggregateOutputType> | number
          }
        }
      }
      RegisterForm: {
        payload: Prisma.$RegisterFormPayload<ExtArgs>
        fields: Prisma.RegisterFormFieldRefs
        operations: {
          findUnique: {
            args: Prisma.RegisterFormFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.RegisterFormFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormPayload>
          }
          findFirst: {
            args: Prisma.RegisterFormFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.RegisterFormFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormPayload>
          }
          findMany: {
            args: Prisma.RegisterFormFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormPayload>[]
          }
          create: {
            args: Prisma.RegisterFormCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormPayload>
          }
          createMany: {
            args: Prisma.RegisterFormCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.RegisterFormCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormPayload>[]
          }
          delete: {
            args: Prisma.RegisterFormDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormPayload>
          }
          update: {
            args: Prisma.RegisterFormUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormPayload>
          }
          deleteMany: {
            args: Prisma.RegisterFormDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.RegisterFormUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.RegisterFormUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormPayload>
          }
          aggregate: {
            args: Prisma.RegisterFormAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateRegisterForm>
          }
          groupBy: {
            args: Prisma.RegisterFormGroupByArgs<ExtArgs>
            result: $Utils.Optional<RegisterFormGroupByOutputType>[]
          }
          count: {
            args: Prisma.RegisterFormCountArgs<ExtArgs>
            result: $Utils.Optional<RegisterFormCountAggregateOutputType> | number
          }
        }
      }
      RegisterFormField: {
        payload: Prisma.$RegisterFormFieldPayload<ExtArgs>
        fields: Prisma.RegisterFormFieldFieldRefs
        operations: {
          findUnique: {
            args: Prisma.RegisterFormFieldFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormFieldPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.RegisterFormFieldFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormFieldPayload>
          }
          findFirst: {
            args: Prisma.RegisterFormFieldFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormFieldPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.RegisterFormFieldFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormFieldPayload>
          }
          findMany: {
            args: Prisma.RegisterFormFieldFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormFieldPayload>[]
          }
          create: {
            args: Prisma.RegisterFormFieldCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormFieldPayload>
          }
          createMany: {
            args: Prisma.RegisterFormFieldCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.RegisterFormFieldCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormFieldPayload>[]
          }
          delete: {
            args: Prisma.RegisterFormFieldDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormFieldPayload>
          }
          update: {
            args: Prisma.RegisterFormFieldUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormFieldPayload>
          }
          deleteMany: {
            args: Prisma.RegisterFormFieldDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.RegisterFormFieldUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.RegisterFormFieldUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterFormFieldPayload>
          }
          aggregate: {
            args: Prisma.RegisterFormFieldAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateRegisterFormField>
          }
          groupBy: {
            args: Prisma.RegisterFormFieldGroupByArgs<ExtArgs>
            result: $Utils.Optional<RegisterFormFieldGroupByOutputType>[]
          }
          count: {
            args: Prisma.RegisterFormFieldCountArgs<ExtArgs>
            result: $Utils.Optional<RegisterFormFieldCountAggregateOutputType> | number
          }
        }
      }
      RegisterApplication: {
        payload: Prisma.$RegisterApplicationPayload<ExtArgs>
        fields: Prisma.RegisterApplicationFieldRefs
        operations: {
          findUnique: {
            args: Prisma.RegisterApplicationFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.RegisterApplicationFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationPayload>
          }
          findFirst: {
            args: Prisma.RegisterApplicationFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.RegisterApplicationFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationPayload>
          }
          findMany: {
            args: Prisma.RegisterApplicationFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationPayload>[]
          }
          create: {
            args: Prisma.RegisterApplicationCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationPayload>
          }
          createMany: {
            args: Prisma.RegisterApplicationCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.RegisterApplicationCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationPayload>[]
          }
          delete: {
            args: Prisma.RegisterApplicationDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationPayload>
          }
          update: {
            args: Prisma.RegisterApplicationUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationPayload>
          }
          deleteMany: {
            args: Prisma.RegisterApplicationDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.RegisterApplicationUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.RegisterApplicationUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationPayload>
          }
          aggregate: {
            args: Prisma.RegisterApplicationAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateRegisterApplication>
          }
          groupBy: {
            args: Prisma.RegisterApplicationGroupByArgs<ExtArgs>
            result: $Utils.Optional<RegisterApplicationGroupByOutputType>[]
          }
          count: {
            args: Prisma.RegisterApplicationCountArgs<ExtArgs>
            result: $Utils.Optional<RegisterApplicationCountAggregateOutputType> | number
          }
        }
      }
      RegisterApplicationAnswer: {
        payload: Prisma.$RegisterApplicationAnswerPayload<ExtArgs>
        fields: Prisma.RegisterApplicationAnswerFieldRefs
        operations: {
          findUnique: {
            args: Prisma.RegisterApplicationAnswerFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationAnswerPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.RegisterApplicationAnswerFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationAnswerPayload>
          }
          findFirst: {
            args: Prisma.RegisterApplicationAnswerFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationAnswerPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.RegisterApplicationAnswerFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationAnswerPayload>
          }
          findMany: {
            args: Prisma.RegisterApplicationAnswerFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationAnswerPayload>[]
          }
          create: {
            args: Prisma.RegisterApplicationAnswerCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationAnswerPayload>
          }
          createMany: {
            args: Prisma.RegisterApplicationAnswerCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.RegisterApplicationAnswerCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationAnswerPayload>[]
          }
          delete: {
            args: Prisma.RegisterApplicationAnswerDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationAnswerPayload>
          }
          update: {
            args: Prisma.RegisterApplicationAnswerUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationAnswerPayload>
          }
          deleteMany: {
            args: Prisma.RegisterApplicationAnswerDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.RegisterApplicationAnswerUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.RegisterApplicationAnswerUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$RegisterApplicationAnswerPayload>
          }
          aggregate: {
            args: Prisma.RegisterApplicationAnswerAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateRegisterApplicationAnswer>
          }
          groupBy: {
            args: Prisma.RegisterApplicationAnswerGroupByArgs<ExtArgs>
            result: $Utils.Optional<RegisterApplicationAnswerGroupByOutputType>[]
          }
          count: {
            args: Prisma.RegisterApplicationAnswerCountArgs<ExtArgs>
            result: $Utils.Optional<RegisterApplicationAnswerCountAggregateOutputType> | number
          }
        }
      }
    }
  } & {
    other: {
      payload: any
      operations: {
        $executeRaw: {
          args: [query: TemplateStringsArray | Prisma.Sql, ...values: any[]],
          result: any
        }
        $executeRawUnsafe: {
          args: [query: string, ...values: any[]],
          result: any
        }
        $queryRaw: {
          args: [query: TemplateStringsArray | Prisma.Sql, ...values: any[]],
          result: any
        }
        $queryRawUnsafe: {
          args: [query: string, ...values: any[]],
          result: any
        }
      }
    }
  }
  export const defineExtension: $Extensions.ExtendsHook<"define", Prisma.TypeMapCb, $Extensions.DefaultArgs>
  export type DefaultPrismaClient = PrismaClient
  export type ErrorFormat = 'pretty' | 'colorless' | 'minimal'
  export interface PrismaClientOptions {
    /**
     * Overwrites the datasource url from your schema.prisma file
     */
    datasources?: Datasources
    /**
     * Overwrites the datasource url from your schema.prisma file
     */
    datasourceUrl?: string
    /**
     * @default "colorless"
     */
    errorFormat?: ErrorFormat
    /**
     * @example
     * ```
     * // Defaults to stdout
     * log: ['query', 'info', 'warn', 'error']
     * 
     * // Emit as events
     * log: [
     *   { emit: 'stdout', level: 'query' },
     *   { emit: 'stdout', level: 'info' },
     *   { emit: 'stdout', level: 'warn' }
     *   { emit: 'stdout', level: 'error' }
     * ]
     * ```
     * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/logging#the-log-option).
     */
    log?: (LogLevel | LogDefinition)[]
    /**
     * The default values for transactionOptions
     * maxWait ?= 2000
     * timeout ?= 5000
     */
    transactionOptions?: {
      maxWait?: number
      timeout?: number
      isolationLevel?: Prisma.TransactionIsolationLevel
    }
  }


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

  export type GetLogType<T extends LogLevel | LogDefinition> = T extends LogDefinition ? T['emit'] extends 'event' ? T['level'] : never : never
  export type GetEvents<T extends any> = T extends Array<LogLevel | LogDefinition> ?
    GetLogType<T[0]> | GetLogType<T[1]> | GetLogType<T[2]> | GetLogType<T[3]>
    : 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'
    | 'upsert'
    | 'delete'
    | 'deleteMany'
    | 'executeRaw'
    | 'queryRaw'
    | 'aggregate'
    | 'count'
    | 'runCommandRaw'
    | 'findRaw'
    | 'groupBy'

  /**
   * These options are being passed into the middleware as "params"
   */
  export type MiddlewareParams = {
    model?: ModelName
    action: PrismaAction
    args: any
    dataPath: string[]
    runInTransaction: boolean
  }

  /**
   * The `T` type makes sure, that the `return proceed` is not forgotten in the middleware implementation
   */
  export type Middleware<T = any> = (
    params: MiddlewareParams,
    next: (params: MiddlewareParams) => $Utils.JsPromise<T>,
  ) => $Utils.JsPromise<T>

  // tested in getLogLevel.test.ts
  export function getLogLevel(log: Array<LogLevel | LogDefinition>): LogLevel | undefined;

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

  export type Datasource = {
    url?: string
  }

  /**
   * Count Types
   */


  /**
   * Count Type EventCountOutputType
   */

  export type EventCountOutputType = {
    signups: number
  }

  export type EventCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    signups?: boolean | EventCountOutputTypeCountSignupsArgs
  }

  // Custom InputTypes
  /**
   * EventCountOutputType without action
   */
  export type EventCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EventCountOutputType
     */
    select?: EventCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * EventCountOutputType without action
   */
  export type EventCountOutputTypeCountSignupsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: EventSignupWhereInput
  }


  /**
   * Count Type RegisterFormCountOutputType
   */

  export type RegisterFormCountOutputType = {
    fields: number
    applications: number
  }

  export type RegisterFormCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    fields?: boolean | RegisterFormCountOutputTypeCountFieldsArgs
    applications?: boolean | RegisterFormCountOutputTypeCountApplicationsArgs
  }

  // Custom InputTypes
  /**
   * RegisterFormCountOutputType without action
   */
  export type RegisterFormCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterFormCountOutputType
     */
    select?: RegisterFormCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * RegisterFormCountOutputType without action
   */
  export type RegisterFormCountOutputTypeCountFieldsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: RegisterFormFieldWhereInput
  }

  /**
   * RegisterFormCountOutputType without action
   */
  export type RegisterFormCountOutputTypeCountApplicationsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: RegisterApplicationWhereInput
  }


  /**
   * Count Type RegisterApplicationCountOutputType
   */

  export type RegisterApplicationCountOutputType = {
    answers: number
  }

  export type RegisterApplicationCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    answers?: boolean | RegisterApplicationCountOutputTypeCountAnswersArgs
  }

  // Custom InputTypes
  /**
   * RegisterApplicationCountOutputType without action
   */
  export type RegisterApplicationCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplicationCountOutputType
     */
    select?: RegisterApplicationCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * RegisterApplicationCountOutputType without action
   */
  export type RegisterApplicationCountOutputTypeCountAnswersArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: RegisterApplicationAnswerWhereInput
  }


  /**
   * Models
   */

  /**
   * Model GuildSettings
   */

  export type AggregateGuildSettings = {
    _count: GuildSettingsCountAggregateOutputType | null
    _min: GuildSettingsMinAggregateOutputType | null
    _max: GuildSettingsMaxAggregateOutputType | null
  }

  export type GuildSettingsMinAggregateOutputType = {
    guildId: string | null
    welcomeChannelId: string | null
    logChannelId: string | null
    automodEnabled: boolean | null
    levelingEnabled: boolean | null
    ticketsEnabled: boolean | null
    musicEnabled: boolean | null
    statuspageEnabled: boolean | null
    dynamicVoiceEnabled: boolean | null
    birthdayEnabled: boolean | null
    reactionRolesEnabled: boolean | null
    eventsEnabled: boolean | null
    registerEnabled: boolean | null
    serverStatsEnabled: boolean | null
    supportRoleId: string | null
    updatedAt: Date | null
    createdAt: Date | null
  }

  export type GuildSettingsMaxAggregateOutputType = {
    guildId: string | null
    welcomeChannelId: string | null
    logChannelId: string | null
    automodEnabled: boolean | null
    levelingEnabled: boolean | null
    ticketsEnabled: boolean | null
    musicEnabled: boolean | null
    statuspageEnabled: boolean | null
    dynamicVoiceEnabled: boolean | null
    birthdayEnabled: boolean | null
    reactionRolesEnabled: boolean | null
    eventsEnabled: boolean | null
    registerEnabled: boolean | null
    serverStatsEnabled: boolean | null
    supportRoleId: string | null
    updatedAt: Date | null
    createdAt: Date | null
  }

  export type GuildSettingsCountAggregateOutputType = {
    guildId: number
    welcomeChannelId: number
    logChannelId: number
    automodEnabled: number
    automodConfig: number
    levelingEnabled: number
    ticketsEnabled: number
    musicEnabled: number
    statuspageEnabled: number
    statuspageConfig: number
    dynamicVoiceEnabled: number
    dynamicVoiceConfig: number
    supportLoginConfig: number
    birthdayEnabled: number
    birthdayConfig: number
    reactionRolesEnabled: number
    reactionRolesConfig: number
    eventsEnabled: number
    registerEnabled: number
    registerConfig: number
    serverStatsEnabled: number
    serverStatsConfig: number
    supportRoleId: number
    updatedAt: number
    createdAt: number
    _all: number
  }


  export type GuildSettingsMinAggregateInputType = {
    guildId?: true
    welcomeChannelId?: true
    logChannelId?: true
    automodEnabled?: true
    levelingEnabled?: true
    ticketsEnabled?: true
    musicEnabled?: true
    statuspageEnabled?: true
    dynamicVoiceEnabled?: true
    birthdayEnabled?: true
    reactionRolesEnabled?: true
    eventsEnabled?: true
    registerEnabled?: true
    serverStatsEnabled?: true
    supportRoleId?: true
    updatedAt?: true
    createdAt?: true
  }

  export type GuildSettingsMaxAggregateInputType = {
    guildId?: true
    welcomeChannelId?: true
    logChannelId?: true
    automodEnabled?: true
    levelingEnabled?: true
    ticketsEnabled?: true
    musicEnabled?: true
    statuspageEnabled?: true
    dynamicVoiceEnabled?: true
    birthdayEnabled?: true
    reactionRolesEnabled?: true
    eventsEnabled?: true
    registerEnabled?: true
    serverStatsEnabled?: true
    supportRoleId?: true
    updatedAt?: true
    createdAt?: true
  }

  export type GuildSettingsCountAggregateInputType = {
    guildId?: true
    welcomeChannelId?: true
    logChannelId?: true
    automodEnabled?: true
    automodConfig?: true
    levelingEnabled?: true
    ticketsEnabled?: true
    musicEnabled?: true
    statuspageEnabled?: true
    statuspageConfig?: true
    dynamicVoiceEnabled?: true
    dynamicVoiceConfig?: true
    supportLoginConfig?: true
    birthdayEnabled?: true
    birthdayConfig?: true
    reactionRolesEnabled?: true
    reactionRolesConfig?: true
    eventsEnabled?: true
    registerEnabled?: true
    registerConfig?: true
    serverStatsEnabled?: true
    serverStatsConfig?: true
    supportRoleId?: true
    updatedAt?: true
    createdAt?: true
    _all?: true
  }

  export type GuildSettingsAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which GuildSettings to aggregate.
     */
    where?: GuildSettingsWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of GuildSettings to fetch.
     */
    orderBy?: GuildSettingsOrderByWithRelationInput | GuildSettingsOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: GuildSettingsWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` GuildSettings from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` GuildSettings.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned GuildSettings
    **/
    _count?: true | GuildSettingsCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: GuildSettingsMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: GuildSettingsMaxAggregateInputType
  }

  export type GetGuildSettingsAggregateType<T extends GuildSettingsAggregateArgs> = {
        [P in keyof T & keyof AggregateGuildSettings]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateGuildSettings[P]>
      : GetScalarType<T[P], AggregateGuildSettings[P]>
  }




  export type GuildSettingsGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: GuildSettingsWhereInput
    orderBy?: GuildSettingsOrderByWithAggregationInput | GuildSettingsOrderByWithAggregationInput[]
    by: GuildSettingsScalarFieldEnum[] | GuildSettingsScalarFieldEnum
    having?: GuildSettingsScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: GuildSettingsCountAggregateInputType | true
    _min?: GuildSettingsMinAggregateInputType
    _max?: GuildSettingsMaxAggregateInputType
  }

  export type GuildSettingsGroupByOutputType = {
    guildId: string
    welcomeChannelId: string | null
    logChannelId: string | null
    automodEnabled: boolean | null
    automodConfig: JsonValue | null
    levelingEnabled: boolean | null
    ticketsEnabled: boolean | null
    musicEnabled: boolean | null
    statuspageEnabled: boolean | null
    statuspageConfig: JsonValue | null
    dynamicVoiceEnabled: boolean | null
    dynamicVoiceConfig: JsonValue | null
    supportLoginConfig: JsonValue | null
    birthdayEnabled: boolean | null
    birthdayConfig: JsonValue | null
    reactionRolesEnabled: boolean | null
    reactionRolesConfig: JsonValue | null
    eventsEnabled: boolean | null
    registerEnabled: boolean | null
    registerConfig: JsonValue | null
    serverStatsEnabled: boolean | null
    serverStatsConfig: JsonValue | null
    supportRoleId: string | null
    updatedAt: Date
    createdAt: Date
    _count: GuildSettingsCountAggregateOutputType | null
    _min: GuildSettingsMinAggregateOutputType | null
    _max: GuildSettingsMaxAggregateOutputType | null
  }

  type GetGuildSettingsGroupByPayload<T extends GuildSettingsGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<GuildSettingsGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof GuildSettingsGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], GuildSettingsGroupByOutputType[P]>
            : GetScalarType<T[P], GuildSettingsGroupByOutputType[P]>
        }
      >
    >


  export type GuildSettingsSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    guildId?: boolean
    welcomeChannelId?: boolean
    logChannelId?: boolean
    automodEnabled?: boolean
    automodConfig?: boolean
    levelingEnabled?: boolean
    ticketsEnabled?: boolean
    musicEnabled?: boolean
    statuspageEnabled?: boolean
    statuspageConfig?: boolean
    dynamicVoiceEnabled?: boolean
    dynamicVoiceConfig?: boolean
    supportLoginConfig?: boolean
    birthdayEnabled?: boolean
    birthdayConfig?: boolean
    reactionRolesEnabled?: boolean
    reactionRolesConfig?: boolean
    eventsEnabled?: boolean
    registerEnabled?: boolean
    registerConfig?: boolean
    serverStatsEnabled?: boolean
    serverStatsConfig?: boolean
    supportRoleId?: boolean
    updatedAt?: boolean
    createdAt?: boolean
  }, ExtArgs["result"]["guildSettings"]>

  export type GuildSettingsSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    guildId?: boolean
    welcomeChannelId?: boolean
    logChannelId?: boolean
    automodEnabled?: boolean
    automodConfig?: boolean
    levelingEnabled?: boolean
    ticketsEnabled?: boolean
    musicEnabled?: boolean
    statuspageEnabled?: boolean
    statuspageConfig?: boolean
    dynamicVoiceEnabled?: boolean
    dynamicVoiceConfig?: boolean
    supportLoginConfig?: boolean
    birthdayEnabled?: boolean
    birthdayConfig?: boolean
    reactionRolesEnabled?: boolean
    reactionRolesConfig?: boolean
    eventsEnabled?: boolean
    registerEnabled?: boolean
    registerConfig?: boolean
    serverStatsEnabled?: boolean
    serverStatsConfig?: boolean
    supportRoleId?: boolean
    updatedAt?: boolean
    createdAt?: boolean
  }, ExtArgs["result"]["guildSettings"]>

  export type GuildSettingsSelectScalar = {
    guildId?: boolean
    welcomeChannelId?: boolean
    logChannelId?: boolean
    automodEnabled?: boolean
    automodConfig?: boolean
    levelingEnabled?: boolean
    ticketsEnabled?: boolean
    musicEnabled?: boolean
    statuspageEnabled?: boolean
    statuspageConfig?: boolean
    dynamicVoiceEnabled?: boolean
    dynamicVoiceConfig?: boolean
    supportLoginConfig?: boolean
    birthdayEnabled?: boolean
    birthdayConfig?: boolean
    reactionRolesEnabled?: boolean
    reactionRolesConfig?: boolean
    eventsEnabled?: boolean
    registerEnabled?: boolean
    registerConfig?: boolean
    serverStatsEnabled?: boolean
    serverStatsConfig?: boolean
    supportRoleId?: boolean
    updatedAt?: boolean
    createdAt?: boolean
  }


  export type $GuildSettingsPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "GuildSettings"
    objects: {}
    scalars: $Extensions.GetPayloadResult<{
      guildId: string
      welcomeChannelId: string | null
      logChannelId: string | null
      automodEnabled: boolean | null
      automodConfig: Prisma.JsonValue | null
      levelingEnabled: boolean | null
      ticketsEnabled: boolean | null
      musicEnabled: boolean | null
      statuspageEnabled: boolean | null
      statuspageConfig: Prisma.JsonValue | null
      dynamicVoiceEnabled: boolean | null
      dynamicVoiceConfig: Prisma.JsonValue | null
      supportLoginConfig: Prisma.JsonValue | null
      birthdayEnabled: boolean | null
      birthdayConfig: Prisma.JsonValue | null
      reactionRolesEnabled: boolean | null
      reactionRolesConfig: Prisma.JsonValue | null
      eventsEnabled: boolean | null
      registerEnabled: boolean | null
      registerConfig: Prisma.JsonValue | null
      serverStatsEnabled: boolean | null
      serverStatsConfig: Prisma.JsonValue | null
      supportRoleId: string | null
      updatedAt: Date
      createdAt: Date
    }, ExtArgs["result"]["guildSettings"]>
    composites: {}
  }

  type GuildSettingsGetPayload<S extends boolean | null | undefined | GuildSettingsDefaultArgs> = $Result.GetResult<Prisma.$GuildSettingsPayload, S>

  type GuildSettingsCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = 
    Omit<GuildSettingsFindManyArgs, 'select' | 'include' | 'distinct'> & {
      select?: GuildSettingsCountAggregateInputType | true
    }

  export interface GuildSettingsDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['GuildSettings'], meta: { name: 'GuildSettings' } }
    /**
     * Find zero or one GuildSettings that matches the filter.
     * @param {GuildSettingsFindUniqueArgs} args - Arguments to find a GuildSettings
     * @example
     * // Get one GuildSettings
     * const guildSettings = await prisma.guildSettings.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends GuildSettingsFindUniqueArgs>(args: SelectSubset<T, GuildSettingsFindUniqueArgs<ExtArgs>>): Prisma__GuildSettingsClient<$Result.GetResult<Prisma.$GuildSettingsPayload<ExtArgs>, T, "findUnique"> | null, null, ExtArgs>

    /**
     * Find one GuildSettings that matches the filter or throw an error with `error.code='P2025'` 
     * if no matches were found.
     * @param {GuildSettingsFindUniqueOrThrowArgs} args - Arguments to find a GuildSettings
     * @example
     * // Get one GuildSettings
     * const guildSettings = await prisma.guildSettings.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends GuildSettingsFindUniqueOrThrowArgs>(args: SelectSubset<T, GuildSettingsFindUniqueOrThrowArgs<ExtArgs>>): Prisma__GuildSettingsClient<$Result.GetResult<Prisma.$GuildSettingsPayload<ExtArgs>, T, "findUniqueOrThrow">, never, ExtArgs>

    /**
     * Find the first GuildSettings that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {GuildSettingsFindFirstArgs} args - Arguments to find a GuildSettings
     * @example
     * // Get one GuildSettings
     * const guildSettings = await prisma.guildSettings.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends GuildSettingsFindFirstArgs>(args?: SelectSubset<T, GuildSettingsFindFirstArgs<ExtArgs>>): Prisma__GuildSettingsClient<$Result.GetResult<Prisma.$GuildSettingsPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first GuildSettings that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {GuildSettingsFindFirstOrThrowArgs} args - Arguments to find a GuildSettings
     * @example
     * // Get one GuildSettings
     * const guildSettings = await prisma.guildSettings.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends GuildSettingsFindFirstOrThrowArgs>(args?: SelectSubset<T, GuildSettingsFindFirstOrThrowArgs<ExtArgs>>): Prisma__GuildSettingsClient<$Result.GetResult<Prisma.$GuildSettingsPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more GuildSettings that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {GuildSettingsFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all GuildSettings
     * const guildSettings = await prisma.guildSettings.findMany()
     * 
     * // Get first 10 GuildSettings
     * const guildSettings = await prisma.guildSettings.findMany({ take: 10 })
     * 
     * // Only select the `guildId`
     * const guildSettingsWithGuildIdOnly = await prisma.guildSettings.findMany({ select: { guildId: true } })
     * 
     */
    findMany<T extends GuildSettingsFindManyArgs>(args?: SelectSubset<T, GuildSettingsFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$GuildSettingsPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a GuildSettings.
     * @param {GuildSettingsCreateArgs} args - Arguments to create a GuildSettings.
     * @example
     * // Create one GuildSettings
     * const GuildSettings = await prisma.guildSettings.create({
     *   data: {
     *     // ... data to create a GuildSettings
     *   }
     * })
     * 
     */
    create<T extends GuildSettingsCreateArgs>(args: SelectSubset<T, GuildSettingsCreateArgs<ExtArgs>>): Prisma__GuildSettingsClient<$Result.GetResult<Prisma.$GuildSettingsPayload<ExtArgs>, T, "create">, never, ExtArgs>

    /**
     * Create many GuildSettings.
     * @param {GuildSettingsCreateManyArgs} args - Arguments to create many GuildSettings.
     * @example
     * // Create many GuildSettings
     * const guildSettings = await prisma.guildSettings.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends GuildSettingsCreateManyArgs>(args?: SelectSubset<T, GuildSettingsCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many GuildSettings and returns the data saved in the database.
     * @param {GuildSettingsCreateManyAndReturnArgs} args - Arguments to create many GuildSettings.
     * @example
     * // Create many GuildSettings
     * const guildSettings = await prisma.guildSettings.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many GuildSettings and only return the `guildId`
     * const guildSettingsWithGuildIdOnly = await prisma.guildSettings.createManyAndReturn({ 
     *   select: { guildId: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends GuildSettingsCreateManyAndReturnArgs>(args?: SelectSubset<T, GuildSettingsCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$GuildSettingsPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a GuildSettings.
     * @param {GuildSettingsDeleteArgs} args - Arguments to delete one GuildSettings.
     * @example
     * // Delete one GuildSettings
     * const GuildSettings = await prisma.guildSettings.delete({
     *   where: {
     *     // ... filter to delete one GuildSettings
     *   }
     * })
     * 
     */
    delete<T extends GuildSettingsDeleteArgs>(args: SelectSubset<T, GuildSettingsDeleteArgs<ExtArgs>>): Prisma__GuildSettingsClient<$Result.GetResult<Prisma.$GuildSettingsPayload<ExtArgs>, T, "delete">, never, ExtArgs>

    /**
     * Update one GuildSettings.
     * @param {GuildSettingsUpdateArgs} args - Arguments to update one GuildSettings.
     * @example
     * // Update one GuildSettings
     * const guildSettings = await prisma.guildSettings.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends GuildSettingsUpdateArgs>(args: SelectSubset<T, GuildSettingsUpdateArgs<ExtArgs>>): Prisma__GuildSettingsClient<$Result.GetResult<Prisma.$GuildSettingsPayload<ExtArgs>, T, "update">, never, ExtArgs>

    /**
     * Delete zero or more GuildSettings.
     * @param {GuildSettingsDeleteManyArgs} args - Arguments to filter GuildSettings to delete.
     * @example
     * // Delete a few GuildSettings
     * const { count } = await prisma.guildSettings.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends GuildSettingsDeleteManyArgs>(args?: SelectSubset<T, GuildSettingsDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more GuildSettings.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {GuildSettingsUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many GuildSettings
     * const guildSettings = await prisma.guildSettings.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends GuildSettingsUpdateManyArgs>(args: SelectSubset<T, GuildSettingsUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one GuildSettings.
     * @param {GuildSettingsUpsertArgs} args - Arguments to update or create a GuildSettings.
     * @example
     * // Update or create a GuildSettings
     * const guildSettings = await prisma.guildSettings.upsert({
     *   create: {
     *     // ... data to create a GuildSettings
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the GuildSettings we want to update
     *   }
     * })
     */
    upsert<T extends GuildSettingsUpsertArgs>(args: SelectSubset<T, GuildSettingsUpsertArgs<ExtArgs>>): Prisma__GuildSettingsClient<$Result.GetResult<Prisma.$GuildSettingsPayload<ExtArgs>, T, "upsert">, never, ExtArgs>


    /**
     * Count the number of GuildSettings.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {GuildSettingsCountArgs} args - Arguments to filter GuildSettings to count.
     * @example
     * // Count the number of GuildSettings
     * const count = await prisma.guildSettings.count({
     *   where: {
     *     // ... the filter for the GuildSettings we want to count
     *   }
     * })
    **/
    count<T extends GuildSettingsCountArgs>(
      args?: Subset<T, GuildSettingsCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], GuildSettingsCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a GuildSettings.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {GuildSettingsAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends GuildSettingsAggregateArgs>(args: Subset<T, GuildSettingsAggregateArgs>): Prisma.PrismaPromise<GetGuildSettingsAggregateType<T>>

    /**
     * Group by GuildSettings.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {GuildSettingsGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends GuildSettingsGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: GuildSettingsGroupByArgs['orderBy'] }
        : { orderBy?: GuildSettingsGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, GuildSettingsGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetGuildSettingsGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the GuildSettings model
   */
  readonly fields: GuildSettingsFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for GuildSettings.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__GuildSettingsClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the GuildSettings model
   */ 
  interface GuildSettingsFieldRefs {
    readonly guildId: FieldRef<"GuildSettings", 'String'>
    readonly welcomeChannelId: FieldRef<"GuildSettings", 'String'>
    readonly logChannelId: FieldRef<"GuildSettings", 'String'>
    readonly automodEnabled: FieldRef<"GuildSettings", 'Boolean'>
    readonly automodConfig: FieldRef<"GuildSettings", 'Json'>
    readonly levelingEnabled: FieldRef<"GuildSettings", 'Boolean'>
    readonly ticketsEnabled: FieldRef<"GuildSettings", 'Boolean'>
    readonly musicEnabled: FieldRef<"GuildSettings", 'Boolean'>
    readonly statuspageEnabled: FieldRef<"GuildSettings", 'Boolean'>
    readonly statuspageConfig: FieldRef<"GuildSettings", 'Json'>
    readonly dynamicVoiceEnabled: FieldRef<"GuildSettings", 'Boolean'>
    readonly dynamicVoiceConfig: FieldRef<"GuildSettings", 'Json'>
    readonly supportLoginConfig: FieldRef<"GuildSettings", 'Json'>
    readonly birthdayEnabled: FieldRef<"GuildSettings", 'Boolean'>
    readonly birthdayConfig: FieldRef<"GuildSettings", 'Json'>
    readonly reactionRolesEnabled: FieldRef<"GuildSettings", 'Boolean'>
    readonly reactionRolesConfig: FieldRef<"GuildSettings", 'Json'>
    readonly eventsEnabled: FieldRef<"GuildSettings", 'Boolean'>
    readonly registerEnabled: FieldRef<"GuildSettings", 'Boolean'>
    readonly registerConfig: FieldRef<"GuildSettings", 'Json'>
    readonly serverStatsEnabled: FieldRef<"GuildSettings", 'Boolean'>
    readonly serverStatsConfig: FieldRef<"GuildSettings", 'Json'>
    readonly supportRoleId: FieldRef<"GuildSettings", 'String'>
    readonly updatedAt: FieldRef<"GuildSettings", 'DateTime'>
    readonly createdAt: FieldRef<"GuildSettings", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * GuildSettings findUnique
   */
  export type GuildSettingsFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the GuildSettings
     */
    select?: GuildSettingsSelect<ExtArgs> | null
    /**
     * Filter, which GuildSettings to fetch.
     */
    where: GuildSettingsWhereUniqueInput
  }

  /**
   * GuildSettings findUniqueOrThrow
   */
  export type GuildSettingsFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the GuildSettings
     */
    select?: GuildSettingsSelect<ExtArgs> | null
    /**
     * Filter, which GuildSettings to fetch.
     */
    where: GuildSettingsWhereUniqueInput
  }

  /**
   * GuildSettings findFirst
   */
  export type GuildSettingsFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the GuildSettings
     */
    select?: GuildSettingsSelect<ExtArgs> | null
    /**
     * Filter, which GuildSettings to fetch.
     */
    where?: GuildSettingsWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of GuildSettings to fetch.
     */
    orderBy?: GuildSettingsOrderByWithRelationInput | GuildSettingsOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for GuildSettings.
     */
    cursor?: GuildSettingsWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` GuildSettings from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` GuildSettings.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of GuildSettings.
     */
    distinct?: GuildSettingsScalarFieldEnum | GuildSettingsScalarFieldEnum[]
  }

  /**
   * GuildSettings findFirstOrThrow
   */
  export type GuildSettingsFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the GuildSettings
     */
    select?: GuildSettingsSelect<ExtArgs> | null
    /**
     * Filter, which GuildSettings to fetch.
     */
    where?: GuildSettingsWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of GuildSettings to fetch.
     */
    orderBy?: GuildSettingsOrderByWithRelationInput | GuildSettingsOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for GuildSettings.
     */
    cursor?: GuildSettingsWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` GuildSettings from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` GuildSettings.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of GuildSettings.
     */
    distinct?: GuildSettingsScalarFieldEnum | GuildSettingsScalarFieldEnum[]
  }

  /**
   * GuildSettings findMany
   */
  export type GuildSettingsFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the GuildSettings
     */
    select?: GuildSettingsSelect<ExtArgs> | null
    /**
     * Filter, which GuildSettings to fetch.
     */
    where?: GuildSettingsWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of GuildSettings to fetch.
     */
    orderBy?: GuildSettingsOrderByWithRelationInput | GuildSettingsOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing GuildSettings.
     */
    cursor?: GuildSettingsWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` GuildSettings from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` GuildSettings.
     */
    skip?: number
    distinct?: GuildSettingsScalarFieldEnum | GuildSettingsScalarFieldEnum[]
  }

  /**
   * GuildSettings create
   */
  export type GuildSettingsCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the GuildSettings
     */
    select?: GuildSettingsSelect<ExtArgs> | null
    /**
     * The data needed to create a GuildSettings.
     */
    data: XOR<GuildSettingsCreateInput, GuildSettingsUncheckedCreateInput>
  }

  /**
   * GuildSettings createMany
   */
  export type GuildSettingsCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many GuildSettings.
     */
    data: GuildSettingsCreateManyInput | GuildSettingsCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * GuildSettings createManyAndReturn
   */
  export type GuildSettingsCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the GuildSettings
     */
    select?: GuildSettingsSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many GuildSettings.
     */
    data: GuildSettingsCreateManyInput | GuildSettingsCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * GuildSettings update
   */
  export type GuildSettingsUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the GuildSettings
     */
    select?: GuildSettingsSelect<ExtArgs> | null
    /**
     * The data needed to update a GuildSettings.
     */
    data: XOR<GuildSettingsUpdateInput, GuildSettingsUncheckedUpdateInput>
    /**
     * Choose, which GuildSettings to update.
     */
    where: GuildSettingsWhereUniqueInput
  }

  /**
   * GuildSettings updateMany
   */
  export type GuildSettingsUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update GuildSettings.
     */
    data: XOR<GuildSettingsUpdateManyMutationInput, GuildSettingsUncheckedUpdateManyInput>
    /**
     * Filter which GuildSettings to update
     */
    where?: GuildSettingsWhereInput
  }

  /**
   * GuildSettings upsert
   */
  export type GuildSettingsUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the GuildSettings
     */
    select?: GuildSettingsSelect<ExtArgs> | null
    /**
     * The filter to search for the GuildSettings to update in case it exists.
     */
    where: GuildSettingsWhereUniqueInput
    /**
     * In case the GuildSettings found by the `where` argument doesn't exist, create a new GuildSettings with this data.
     */
    create: XOR<GuildSettingsCreateInput, GuildSettingsUncheckedCreateInput>
    /**
     * In case the GuildSettings was found with the provided `where` argument, update it with this data.
     */
    update: XOR<GuildSettingsUpdateInput, GuildSettingsUncheckedUpdateInput>
  }

  /**
   * GuildSettings delete
   */
  export type GuildSettingsDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the GuildSettings
     */
    select?: GuildSettingsSelect<ExtArgs> | null
    /**
     * Filter which GuildSettings to delete.
     */
    where: GuildSettingsWhereUniqueInput
  }

  /**
   * GuildSettings deleteMany
   */
  export type GuildSettingsDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which GuildSettings to delete
     */
    where?: GuildSettingsWhereInput
  }

  /**
   * GuildSettings without action
   */
  export type GuildSettingsDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the GuildSettings
     */
    select?: GuildSettingsSelect<ExtArgs> | null
  }


  /**
   * Model Ticket
   */

  export type AggregateTicket = {
    _count: TicketCountAggregateOutputType | null
    _avg: TicketAvgAggregateOutputType | null
    _sum: TicketSumAggregateOutputType | null
    _min: TicketMinAggregateOutputType | null
    _max: TicketMaxAggregateOutputType | null
  }

  export type TicketAvgAggregateOutputType = {
    ticketNumber: number | null
  }

  export type TicketSumAggregateOutputType = {
    ticketNumber: number | null
  }

  export type TicketMinAggregateOutputType = {
    id: string | null
    ticketNumber: number | null
    userId: string | null
    channelId: string | null
    guildId: string | null
    topic: string | null
    priority: string | null
    status: string | null
    claimedBy: string | null
    transcript: string | null
    firstClaimAt: Date | null
    firstResponseAt: Date | null
    kbSuggestionSentAt: Date | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type TicketMaxAggregateOutputType = {
    id: string | null
    ticketNumber: number | null
    userId: string | null
    channelId: string | null
    guildId: string | null
    topic: string | null
    priority: string | null
    status: string | null
    claimedBy: string | null
    transcript: string | null
    firstClaimAt: Date | null
    firstResponseAt: Date | null
    kbSuggestionSentAt: Date | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type TicketCountAggregateOutputType = {
    id: number
    ticketNumber: number
    userId: number
    channelId: number
    guildId: number
    topic: number
    priority: number
    status: number
    claimedBy: number
    transcript: number
    firstClaimAt: number
    firstResponseAt: number
    kbSuggestionSentAt: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type TicketAvgAggregateInputType = {
    ticketNumber?: true
  }

  export type TicketSumAggregateInputType = {
    ticketNumber?: true
  }

  export type TicketMinAggregateInputType = {
    id?: true
    ticketNumber?: true
    userId?: true
    channelId?: true
    guildId?: true
    topic?: true
    priority?: true
    status?: true
    claimedBy?: true
    transcript?: true
    firstClaimAt?: true
    firstResponseAt?: true
    kbSuggestionSentAt?: true
    createdAt?: true
    updatedAt?: true
  }

  export type TicketMaxAggregateInputType = {
    id?: true
    ticketNumber?: true
    userId?: true
    channelId?: true
    guildId?: true
    topic?: true
    priority?: true
    status?: true
    claimedBy?: true
    transcript?: true
    firstClaimAt?: true
    firstResponseAt?: true
    kbSuggestionSentAt?: true
    createdAt?: true
    updatedAt?: true
  }

  export type TicketCountAggregateInputType = {
    id?: true
    ticketNumber?: true
    userId?: true
    channelId?: true
    guildId?: true
    topic?: true
    priority?: true
    status?: true
    claimedBy?: true
    transcript?: true
    firstClaimAt?: true
    firstResponseAt?: true
    kbSuggestionSentAt?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type TicketAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Ticket to aggregate.
     */
    where?: TicketWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Tickets to fetch.
     */
    orderBy?: TicketOrderByWithRelationInput | TicketOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: TicketWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Tickets from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Tickets.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned Tickets
    **/
    _count?: true | TicketCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: TicketAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: TicketSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: TicketMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: TicketMaxAggregateInputType
  }

  export type GetTicketAggregateType<T extends TicketAggregateArgs> = {
        [P in keyof T & keyof AggregateTicket]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateTicket[P]>
      : GetScalarType<T[P], AggregateTicket[P]>
  }




  export type TicketGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: TicketWhereInput
    orderBy?: TicketOrderByWithAggregationInput | TicketOrderByWithAggregationInput[]
    by: TicketScalarFieldEnum[] | TicketScalarFieldEnum
    having?: TicketScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: TicketCountAggregateInputType | true
    _avg?: TicketAvgAggregateInputType
    _sum?: TicketSumAggregateInputType
    _min?: TicketMinAggregateInputType
    _max?: TicketMaxAggregateInputType
  }

  export type TicketGroupByOutputType = {
    id: string
    ticketNumber: number
    userId: string
    channelId: string
    guildId: string
    topic: string | null
    priority: string
    status: string
    claimedBy: string | null
    transcript: string | null
    firstClaimAt: Date | null
    firstResponseAt: Date | null
    kbSuggestionSentAt: Date | null
    createdAt: Date
    updatedAt: Date
    _count: TicketCountAggregateOutputType | null
    _avg: TicketAvgAggregateOutputType | null
    _sum: TicketSumAggregateOutputType | null
    _min: TicketMinAggregateOutputType | null
    _max: TicketMaxAggregateOutputType | null
  }

  type GetTicketGroupByPayload<T extends TicketGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<TicketGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof TicketGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], TicketGroupByOutputType[P]>
            : GetScalarType<T[P], TicketGroupByOutputType[P]>
        }
      >
    >


  export type TicketSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    ticketNumber?: boolean
    userId?: boolean
    channelId?: boolean
    guildId?: boolean
    topic?: boolean
    priority?: boolean
    status?: boolean
    claimedBy?: boolean
    transcript?: boolean
    firstClaimAt?: boolean
    firstResponseAt?: boolean
    kbSuggestionSentAt?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["ticket"]>

  export type TicketSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    ticketNumber?: boolean
    userId?: boolean
    channelId?: boolean
    guildId?: boolean
    topic?: boolean
    priority?: boolean
    status?: boolean
    claimedBy?: boolean
    transcript?: boolean
    firstClaimAt?: boolean
    firstResponseAt?: boolean
    kbSuggestionSentAt?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["ticket"]>

  export type TicketSelectScalar = {
    id?: boolean
    ticketNumber?: boolean
    userId?: boolean
    channelId?: boolean
    guildId?: boolean
    topic?: boolean
    priority?: boolean
    status?: boolean
    claimedBy?: boolean
    transcript?: boolean
    firstClaimAt?: boolean
    firstResponseAt?: boolean
    kbSuggestionSentAt?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }


  export type $TicketPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "Ticket"
    objects: {}
    scalars: $Extensions.GetPayloadResult<{
      id: string
      ticketNumber: number
      userId: string
      channelId: string
      guildId: string
      topic: string | null
      priority: string
      status: string
      claimedBy: string | null
      transcript: string | null
      firstClaimAt: Date | null
      firstResponseAt: Date | null
      kbSuggestionSentAt: Date | null
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["ticket"]>
    composites: {}
  }

  type TicketGetPayload<S extends boolean | null | undefined | TicketDefaultArgs> = $Result.GetResult<Prisma.$TicketPayload, S>

  type TicketCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = 
    Omit<TicketFindManyArgs, 'select' | 'include' | 'distinct'> & {
      select?: TicketCountAggregateInputType | true
    }

  export interface TicketDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['Ticket'], meta: { name: 'Ticket' } }
    /**
     * Find zero or one Ticket that matches the filter.
     * @param {TicketFindUniqueArgs} args - Arguments to find a Ticket
     * @example
     * // Get one Ticket
     * const ticket = await prisma.ticket.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends TicketFindUniqueArgs>(args: SelectSubset<T, TicketFindUniqueArgs<ExtArgs>>): Prisma__TicketClient<$Result.GetResult<Prisma.$TicketPayload<ExtArgs>, T, "findUnique"> | null, null, ExtArgs>

    /**
     * Find one Ticket that matches the filter or throw an error with `error.code='P2025'` 
     * if no matches were found.
     * @param {TicketFindUniqueOrThrowArgs} args - Arguments to find a Ticket
     * @example
     * // Get one Ticket
     * const ticket = await prisma.ticket.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends TicketFindUniqueOrThrowArgs>(args: SelectSubset<T, TicketFindUniqueOrThrowArgs<ExtArgs>>): Prisma__TicketClient<$Result.GetResult<Prisma.$TicketPayload<ExtArgs>, T, "findUniqueOrThrow">, never, ExtArgs>

    /**
     * Find the first Ticket that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketFindFirstArgs} args - Arguments to find a Ticket
     * @example
     * // Get one Ticket
     * const ticket = await prisma.ticket.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends TicketFindFirstArgs>(args?: SelectSubset<T, TicketFindFirstArgs<ExtArgs>>): Prisma__TicketClient<$Result.GetResult<Prisma.$TicketPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first Ticket that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketFindFirstOrThrowArgs} args - Arguments to find a Ticket
     * @example
     * // Get one Ticket
     * const ticket = await prisma.ticket.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends TicketFindFirstOrThrowArgs>(args?: SelectSubset<T, TicketFindFirstOrThrowArgs<ExtArgs>>): Prisma__TicketClient<$Result.GetResult<Prisma.$TicketPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more Tickets that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Tickets
     * const tickets = await prisma.ticket.findMany()
     * 
     * // Get first 10 Tickets
     * const tickets = await prisma.ticket.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const ticketWithIdOnly = await prisma.ticket.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends TicketFindManyArgs>(args?: SelectSubset<T, TicketFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$TicketPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a Ticket.
     * @param {TicketCreateArgs} args - Arguments to create a Ticket.
     * @example
     * // Create one Ticket
     * const Ticket = await prisma.ticket.create({
     *   data: {
     *     // ... data to create a Ticket
     *   }
     * })
     * 
     */
    create<T extends TicketCreateArgs>(args: SelectSubset<T, TicketCreateArgs<ExtArgs>>): Prisma__TicketClient<$Result.GetResult<Prisma.$TicketPayload<ExtArgs>, T, "create">, never, ExtArgs>

    /**
     * Create many Tickets.
     * @param {TicketCreateManyArgs} args - Arguments to create many Tickets.
     * @example
     * // Create many Tickets
     * const ticket = await prisma.ticket.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends TicketCreateManyArgs>(args?: SelectSubset<T, TicketCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many Tickets and returns the data saved in the database.
     * @param {TicketCreateManyAndReturnArgs} args - Arguments to create many Tickets.
     * @example
     * // Create many Tickets
     * const ticket = await prisma.ticket.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many Tickets and only return the `id`
     * const ticketWithIdOnly = await prisma.ticket.createManyAndReturn({ 
     *   select: { id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends TicketCreateManyAndReturnArgs>(args?: SelectSubset<T, TicketCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$TicketPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a Ticket.
     * @param {TicketDeleteArgs} args - Arguments to delete one Ticket.
     * @example
     * // Delete one Ticket
     * const Ticket = await prisma.ticket.delete({
     *   where: {
     *     // ... filter to delete one Ticket
     *   }
     * })
     * 
     */
    delete<T extends TicketDeleteArgs>(args: SelectSubset<T, TicketDeleteArgs<ExtArgs>>): Prisma__TicketClient<$Result.GetResult<Prisma.$TicketPayload<ExtArgs>, T, "delete">, never, ExtArgs>

    /**
     * Update one Ticket.
     * @param {TicketUpdateArgs} args - Arguments to update one Ticket.
     * @example
     * // Update one Ticket
     * const ticket = await prisma.ticket.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends TicketUpdateArgs>(args: SelectSubset<T, TicketUpdateArgs<ExtArgs>>): Prisma__TicketClient<$Result.GetResult<Prisma.$TicketPayload<ExtArgs>, T, "update">, never, ExtArgs>

    /**
     * Delete zero or more Tickets.
     * @param {TicketDeleteManyArgs} args - Arguments to filter Tickets to delete.
     * @example
     * // Delete a few Tickets
     * const { count } = await prisma.ticket.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends TicketDeleteManyArgs>(args?: SelectSubset<T, TicketDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Tickets.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Tickets
     * const ticket = await prisma.ticket.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends TicketUpdateManyArgs>(args: SelectSubset<T, TicketUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one Ticket.
     * @param {TicketUpsertArgs} args - Arguments to update or create a Ticket.
     * @example
     * // Update or create a Ticket
     * const ticket = await prisma.ticket.upsert({
     *   create: {
     *     // ... data to create a Ticket
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the Ticket we want to update
     *   }
     * })
     */
    upsert<T extends TicketUpsertArgs>(args: SelectSubset<T, TicketUpsertArgs<ExtArgs>>): Prisma__TicketClient<$Result.GetResult<Prisma.$TicketPayload<ExtArgs>, T, "upsert">, never, ExtArgs>


    /**
     * Count the number of Tickets.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketCountArgs} args - Arguments to filter Tickets to count.
     * @example
     * // Count the number of Tickets
     * const count = await prisma.ticket.count({
     *   where: {
     *     // ... the filter for the Tickets we want to count
     *   }
     * })
    **/
    count<T extends TicketCountArgs>(
      args?: Subset<T, TicketCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], TicketCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a Ticket.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends TicketAggregateArgs>(args: Subset<T, TicketAggregateArgs>): Prisma.PrismaPromise<GetTicketAggregateType<T>>

    /**
     * Group by Ticket.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends TicketGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: TicketGroupByArgs['orderBy'] }
        : { orderBy?: TicketGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, TicketGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetTicketGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the Ticket model
   */
  readonly fields: TicketFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for Ticket.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__TicketClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the Ticket model
   */ 
  interface TicketFieldRefs {
    readonly id: FieldRef<"Ticket", 'String'>
    readonly ticketNumber: FieldRef<"Ticket", 'Int'>
    readonly userId: FieldRef<"Ticket", 'String'>
    readonly channelId: FieldRef<"Ticket", 'String'>
    readonly guildId: FieldRef<"Ticket", 'String'>
    readonly topic: FieldRef<"Ticket", 'String'>
    readonly priority: FieldRef<"Ticket", 'String'>
    readonly status: FieldRef<"Ticket", 'String'>
    readonly claimedBy: FieldRef<"Ticket", 'String'>
    readonly transcript: FieldRef<"Ticket", 'String'>
    readonly firstClaimAt: FieldRef<"Ticket", 'DateTime'>
    readonly firstResponseAt: FieldRef<"Ticket", 'DateTime'>
    readonly kbSuggestionSentAt: FieldRef<"Ticket", 'DateTime'>
    readonly createdAt: FieldRef<"Ticket", 'DateTime'>
    readonly updatedAt: FieldRef<"Ticket", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * Ticket findUnique
   */
  export type TicketFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Ticket
     */
    select?: TicketSelect<ExtArgs> | null
    /**
     * Filter, which Ticket to fetch.
     */
    where: TicketWhereUniqueInput
  }

  /**
   * Ticket findUniqueOrThrow
   */
  export type TicketFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Ticket
     */
    select?: TicketSelect<ExtArgs> | null
    /**
     * Filter, which Ticket to fetch.
     */
    where: TicketWhereUniqueInput
  }

  /**
   * Ticket findFirst
   */
  export type TicketFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Ticket
     */
    select?: TicketSelect<ExtArgs> | null
    /**
     * Filter, which Ticket to fetch.
     */
    where?: TicketWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Tickets to fetch.
     */
    orderBy?: TicketOrderByWithRelationInput | TicketOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Tickets.
     */
    cursor?: TicketWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Tickets from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Tickets.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Tickets.
     */
    distinct?: TicketScalarFieldEnum | TicketScalarFieldEnum[]
  }

  /**
   * Ticket findFirstOrThrow
   */
  export type TicketFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Ticket
     */
    select?: TicketSelect<ExtArgs> | null
    /**
     * Filter, which Ticket to fetch.
     */
    where?: TicketWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Tickets to fetch.
     */
    orderBy?: TicketOrderByWithRelationInput | TicketOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Tickets.
     */
    cursor?: TicketWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Tickets from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Tickets.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Tickets.
     */
    distinct?: TicketScalarFieldEnum | TicketScalarFieldEnum[]
  }

  /**
   * Ticket findMany
   */
  export type TicketFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Ticket
     */
    select?: TicketSelect<ExtArgs> | null
    /**
     * Filter, which Tickets to fetch.
     */
    where?: TicketWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Tickets to fetch.
     */
    orderBy?: TicketOrderByWithRelationInput | TicketOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing Tickets.
     */
    cursor?: TicketWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Tickets from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Tickets.
     */
    skip?: number
    distinct?: TicketScalarFieldEnum | TicketScalarFieldEnum[]
  }

  /**
   * Ticket create
   */
  export type TicketCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Ticket
     */
    select?: TicketSelect<ExtArgs> | null
    /**
     * The data needed to create a Ticket.
     */
    data: XOR<TicketCreateInput, TicketUncheckedCreateInput>
  }

  /**
   * Ticket createMany
   */
  export type TicketCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many Tickets.
     */
    data: TicketCreateManyInput | TicketCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * Ticket createManyAndReturn
   */
  export type TicketCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Ticket
     */
    select?: TicketSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many Tickets.
     */
    data: TicketCreateManyInput | TicketCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * Ticket update
   */
  export type TicketUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Ticket
     */
    select?: TicketSelect<ExtArgs> | null
    /**
     * The data needed to update a Ticket.
     */
    data: XOR<TicketUpdateInput, TicketUncheckedUpdateInput>
    /**
     * Choose, which Ticket to update.
     */
    where: TicketWhereUniqueInput
  }

  /**
   * Ticket updateMany
   */
  export type TicketUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update Tickets.
     */
    data: XOR<TicketUpdateManyMutationInput, TicketUncheckedUpdateManyInput>
    /**
     * Filter which Tickets to update
     */
    where?: TicketWhereInput
  }

  /**
   * Ticket upsert
   */
  export type TicketUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Ticket
     */
    select?: TicketSelect<ExtArgs> | null
    /**
     * The filter to search for the Ticket to update in case it exists.
     */
    where: TicketWhereUniqueInput
    /**
     * In case the Ticket found by the `where` argument doesn't exist, create a new Ticket with this data.
     */
    create: XOR<TicketCreateInput, TicketUncheckedCreateInput>
    /**
     * In case the Ticket was found with the provided `where` argument, update it with this data.
     */
    update: XOR<TicketUpdateInput, TicketUncheckedUpdateInput>
  }

  /**
   * Ticket delete
   */
  export type TicketDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Ticket
     */
    select?: TicketSelect<ExtArgs> | null
    /**
     * Filter which Ticket to delete.
     */
    where: TicketWhereUniqueInput
  }

  /**
   * Ticket deleteMany
   */
  export type TicketDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Tickets to delete
     */
    where?: TicketWhereInput
  }

  /**
   * Ticket without action
   */
  export type TicketDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Ticket
     */
    select?: TicketSelect<ExtArgs> | null
  }


  /**
   * Model TicketAutomationRule
   */

  export type AggregateTicketAutomationRule = {
    _count: TicketAutomationRuleCountAggregateOutputType | null
    _min: TicketAutomationRuleMinAggregateOutputType | null
    _max: TicketAutomationRuleMaxAggregateOutputType | null
  }

  export type TicketAutomationRuleMinAggregateOutputType = {
    id: string | null
    guildId: string | null
    name: string | null
    active: boolean | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type TicketAutomationRuleMaxAggregateOutputType = {
    id: string | null
    guildId: string | null
    name: string | null
    active: boolean | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type TicketAutomationRuleCountAggregateOutputType = {
    id: number
    guildId: number
    name: number
    condition: number
    action: number
    active: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type TicketAutomationRuleMinAggregateInputType = {
    id?: true
    guildId?: true
    name?: true
    active?: true
    createdAt?: true
    updatedAt?: true
  }

  export type TicketAutomationRuleMaxAggregateInputType = {
    id?: true
    guildId?: true
    name?: true
    active?: true
    createdAt?: true
    updatedAt?: true
  }

  export type TicketAutomationRuleCountAggregateInputType = {
    id?: true
    guildId?: true
    name?: true
    condition?: true
    action?: true
    active?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type TicketAutomationRuleAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which TicketAutomationRule to aggregate.
     */
    where?: TicketAutomationRuleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of TicketAutomationRules to fetch.
     */
    orderBy?: TicketAutomationRuleOrderByWithRelationInput | TicketAutomationRuleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: TicketAutomationRuleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` TicketAutomationRules from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` TicketAutomationRules.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned TicketAutomationRules
    **/
    _count?: true | TicketAutomationRuleCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: TicketAutomationRuleMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: TicketAutomationRuleMaxAggregateInputType
  }

  export type GetTicketAutomationRuleAggregateType<T extends TicketAutomationRuleAggregateArgs> = {
        [P in keyof T & keyof AggregateTicketAutomationRule]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateTicketAutomationRule[P]>
      : GetScalarType<T[P], AggregateTicketAutomationRule[P]>
  }




  export type TicketAutomationRuleGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: TicketAutomationRuleWhereInput
    orderBy?: TicketAutomationRuleOrderByWithAggregationInput | TicketAutomationRuleOrderByWithAggregationInput[]
    by: TicketAutomationRuleScalarFieldEnum[] | TicketAutomationRuleScalarFieldEnum
    having?: TicketAutomationRuleScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: TicketAutomationRuleCountAggregateInputType | true
    _min?: TicketAutomationRuleMinAggregateInputType
    _max?: TicketAutomationRuleMaxAggregateInputType
  }

  export type TicketAutomationRuleGroupByOutputType = {
    id: string
    guildId: string
    name: string
    condition: JsonValue
    action: JsonValue
    active: boolean
    createdAt: Date
    updatedAt: Date
    _count: TicketAutomationRuleCountAggregateOutputType | null
    _min: TicketAutomationRuleMinAggregateOutputType | null
    _max: TicketAutomationRuleMaxAggregateOutputType | null
  }

  type GetTicketAutomationRuleGroupByPayload<T extends TicketAutomationRuleGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<TicketAutomationRuleGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof TicketAutomationRuleGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], TicketAutomationRuleGroupByOutputType[P]>
            : GetScalarType<T[P], TicketAutomationRuleGroupByOutputType[P]>
        }
      >
    >


  export type TicketAutomationRuleSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    guildId?: boolean
    name?: boolean
    condition?: boolean
    action?: boolean
    active?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["ticketAutomationRule"]>

  export type TicketAutomationRuleSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    guildId?: boolean
    name?: boolean
    condition?: boolean
    action?: boolean
    active?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["ticketAutomationRule"]>

  export type TicketAutomationRuleSelectScalar = {
    id?: boolean
    guildId?: boolean
    name?: boolean
    condition?: boolean
    action?: boolean
    active?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }


  export type $TicketAutomationRulePayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "TicketAutomationRule"
    objects: {}
    scalars: $Extensions.GetPayloadResult<{
      id: string
      guildId: string
      name: string
      condition: Prisma.JsonValue
      action: Prisma.JsonValue
      active: boolean
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["ticketAutomationRule"]>
    composites: {}
  }

  type TicketAutomationRuleGetPayload<S extends boolean | null | undefined | TicketAutomationRuleDefaultArgs> = $Result.GetResult<Prisma.$TicketAutomationRulePayload, S>

  type TicketAutomationRuleCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = 
    Omit<TicketAutomationRuleFindManyArgs, 'select' | 'include' | 'distinct'> & {
      select?: TicketAutomationRuleCountAggregateInputType | true
    }

  export interface TicketAutomationRuleDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['TicketAutomationRule'], meta: { name: 'TicketAutomationRule' } }
    /**
     * Find zero or one TicketAutomationRule that matches the filter.
     * @param {TicketAutomationRuleFindUniqueArgs} args - Arguments to find a TicketAutomationRule
     * @example
     * // Get one TicketAutomationRule
     * const ticketAutomationRule = await prisma.ticketAutomationRule.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends TicketAutomationRuleFindUniqueArgs>(args: SelectSubset<T, TicketAutomationRuleFindUniqueArgs<ExtArgs>>): Prisma__TicketAutomationRuleClient<$Result.GetResult<Prisma.$TicketAutomationRulePayload<ExtArgs>, T, "findUnique"> | null, null, ExtArgs>

    /**
     * Find one TicketAutomationRule that matches the filter or throw an error with `error.code='P2025'` 
     * if no matches were found.
     * @param {TicketAutomationRuleFindUniqueOrThrowArgs} args - Arguments to find a TicketAutomationRule
     * @example
     * // Get one TicketAutomationRule
     * const ticketAutomationRule = await prisma.ticketAutomationRule.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends TicketAutomationRuleFindUniqueOrThrowArgs>(args: SelectSubset<T, TicketAutomationRuleFindUniqueOrThrowArgs<ExtArgs>>): Prisma__TicketAutomationRuleClient<$Result.GetResult<Prisma.$TicketAutomationRulePayload<ExtArgs>, T, "findUniqueOrThrow">, never, ExtArgs>

    /**
     * Find the first TicketAutomationRule that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketAutomationRuleFindFirstArgs} args - Arguments to find a TicketAutomationRule
     * @example
     * // Get one TicketAutomationRule
     * const ticketAutomationRule = await prisma.ticketAutomationRule.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends TicketAutomationRuleFindFirstArgs>(args?: SelectSubset<T, TicketAutomationRuleFindFirstArgs<ExtArgs>>): Prisma__TicketAutomationRuleClient<$Result.GetResult<Prisma.$TicketAutomationRulePayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first TicketAutomationRule that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketAutomationRuleFindFirstOrThrowArgs} args - Arguments to find a TicketAutomationRule
     * @example
     * // Get one TicketAutomationRule
     * const ticketAutomationRule = await prisma.ticketAutomationRule.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends TicketAutomationRuleFindFirstOrThrowArgs>(args?: SelectSubset<T, TicketAutomationRuleFindFirstOrThrowArgs<ExtArgs>>): Prisma__TicketAutomationRuleClient<$Result.GetResult<Prisma.$TicketAutomationRulePayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more TicketAutomationRules that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketAutomationRuleFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all TicketAutomationRules
     * const ticketAutomationRules = await prisma.ticketAutomationRule.findMany()
     * 
     * // Get first 10 TicketAutomationRules
     * const ticketAutomationRules = await prisma.ticketAutomationRule.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const ticketAutomationRuleWithIdOnly = await prisma.ticketAutomationRule.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends TicketAutomationRuleFindManyArgs>(args?: SelectSubset<T, TicketAutomationRuleFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$TicketAutomationRulePayload<ExtArgs>, T, "findMany">>

    /**
     * Create a TicketAutomationRule.
     * @param {TicketAutomationRuleCreateArgs} args - Arguments to create a TicketAutomationRule.
     * @example
     * // Create one TicketAutomationRule
     * const TicketAutomationRule = await prisma.ticketAutomationRule.create({
     *   data: {
     *     // ... data to create a TicketAutomationRule
     *   }
     * })
     * 
     */
    create<T extends TicketAutomationRuleCreateArgs>(args: SelectSubset<T, TicketAutomationRuleCreateArgs<ExtArgs>>): Prisma__TicketAutomationRuleClient<$Result.GetResult<Prisma.$TicketAutomationRulePayload<ExtArgs>, T, "create">, never, ExtArgs>

    /**
     * Create many TicketAutomationRules.
     * @param {TicketAutomationRuleCreateManyArgs} args - Arguments to create many TicketAutomationRules.
     * @example
     * // Create many TicketAutomationRules
     * const ticketAutomationRule = await prisma.ticketAutomationRule.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends TicketAutomationRuleCreateManyArgs>(args?: SelectSubset<T, TicketAutomationRuleCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many TicketAutomationRules and returns the data saved in the database.
     * @param {TicketAutomationRuleCreateManyAndReturnArgs} args - Arguments to create many TicketAutomationRules.
     * @example
     * // Create many TicketAutomationRules
     * const ticketAutomationRule = await prisma.ticketAutomationRule.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many TicketAutomationRules and only return the `id`
     * const ticketAutomationRuleWithIdOnly = await prisma.ticketAutomationRule.createManyAndReturn({ 
     *   select: { id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends TicketAutomationRuleCreateManyAndReturnArgs>(args?: SelectSubset<T, TicketAutomationRuleCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$TicketAutomationRulePayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a TicketAutomationRule.
     * @param {TicketAutomationRuleDeleteArgs} args - Arguments to delete one TicketAutomationRule.
     * @example
     * // Delete one TicketAutomationRule
     * const TicketAutomationRule = await prisma.ticketAutomationRule.delete({
     *   where: {
     *     // ... filter to delete one TicketAutomationRule
     *   }
     * })
     * 
     */
    delete<T extends TicketAutomationRuleDeleteArgs>(args: SelectSubset<T, TicketAutomationRuleDeleteArgs<ExtArgs>>): Prisma__TicketAutomationRuleClient<$Result.GetResult<Prisma.$TicketAutomationRulePayload<ExtArgs>, T, "delete">, never, ExtArgs>

    /**
     * Update one TicketAutomationRule.
     * @param {TicketAutomationRuleUpdateArgs} args - Arguments to update one TicketAutomationRule.
     * @example
     * // Update one TicketAutomationRule
     * const ticketAutomationRule = await prisma.ticketAutomationRule.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends TicketAutomationRuleUpdateArgs>(args: SelectSubset<T, TicketAutomationRuleUpdateArgs<ExtArgs>>): Prisma__TicketAutomationRuleClient<$Result.GetResult<Prisma.$TicketAutomationRulePayload<ExtArgs>, T, "update">, never, ExtArgs>

    /**
     * Delete zero or more TicketAutomationRules.
     * @param {TicketAutomationRuleDeleteManyArgs} args - Arguments to filter TicketAutomationRules to delete.
     * @example
     * // Delete a few TicketAutomationRules
     * const { count } = await prisma.ticketAutomationRule.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends TicketAutomationRuleDeleteManyArgs>(args?: SelectSubset<T, TicketAutomationRuleDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more TicketAutomationRules.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketAutomationRuleUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many TicketAutomationRules
     * const ticketAutomationRule = await prisma.ticketAutomationRule.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends TicketAutomationRuleUpdateManyArgs>(args: SelectSubset<T, TicketAutomationRuleUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one TicketAutomationRule.
     * @param {TicketAutomationRuleUpsertArgs} args - Arguments to update or create a TicketAutomationRule.
     * @example
     * // Update or create a TicketAutomationRule
     * const ticketAutomationRule = await prisma.ticketAutomationRule.upsert({
     *   create: {
     *     // ... data to create a TicketAutomationRule
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the TicketAutomationRule we want to update
     *   }
     * })
     */
    upsert<T extends TicketAutomationRuleUpsertArgs>(args: SelectSubset<T, TicketAutomationRuleUpsertArgs<ExtArgs>>): Prisma__TicketAutomationRuleClient<$Result.GetResult<Prisma.$TicketAutomationRulePayload<ExtArgs>, T, "upsert">, never, ExtArgs>


    /**
     * Count the number of TicketAutomationRules.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketAutomationRuleCountArgs} args - Arguments to filter TicketAutomationRules to count.
     * @example
     * // Count the number of TicketAutomationRules
     * const count = await prisma.ticketAutomationRule.count({
     *   where: {
     *     // ... the filter for the TicketAutomationRules we want to count
     *   }
     * })
    **/
    count<T extends TicketAutomationRuleCountArgs>(
      args?: Subset<T, TicketAutomationRuleCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], TicketAutomationRuleCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a TicketAutomationRule.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketAutomationRuleAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends TicketAutomationRuleAggregateArgs>(args: Subset<T, TicketAutomationRuleAggregateArgs>): Prisma.PrismaPromise<GetTicketAutomationRuleAggregateType<T>>

    /**
     * Group by TicketAutomationRule.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketAutomationRuleGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends TicketAutomationRuleGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: TicketAutomationRuleGroupByArgs['orderBy'] }
        : { orderBy?: TicketAutomationRuleGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, TicketAutomationRuleGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetTicketAutomationRuleGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the TicketAutomationRule model
   */
  readonly fields: TicketAutomationRuleFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for TicketAutomationRule.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__TicketAutomationRuleClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the TicketAutomationRule model
   */ 
  interface TicketAutomationRuleFieldRefs {
    readonly id: FieldRef<"TicketAutomationRule", 'String'>
    readonly guildId: FieldRef<"TicketAutomationRule", 'String'>
    readonly name: FieldRef<"TicketAutomationRule", 'String'>
    readonly condition: FieldRef<"TicketAutomationRule", 'Json'>
    readonly action: FieldRef<"TicketAutomationRule", 'Json'>
    readonly active: FieldRef<"TicketAutomationRule", 'Boolean'>
    readonly createdAt: FieldRef<"TicketAutomationRule", 'DateTime'>
    readonly updatedAt: FieldRef<"TicketAutomationRule", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * TicketAutomationRule findUnique
   */
  export type TicketAutomationRuleFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketAutomationRule
     */
    select?: TicketAutomationRuleSelect<ExtArgs> | null
    /**
     * Filter, which TicketAutomationRule to fetch.
     */
    where: TicketAutomationRuleWhereUniqueInput
  }

  /**
   * TicketAutomationRule findUniqueOrThrow
   */
  export type TicketAutomationRuleFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketAutomationRule
     */
    select?: TicketAutomationRuleSelect<ExtArgs> | null
    /**
     * Filter, which TicketAutomationRule to fetch.
     */
    where: TicketAutomationRuleWhereUniqueInput
  }

  /**
   * TicketAutomationRule findFirst
   */
  export type TicketAutomationRuleFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketAutomationRule
     */
    select?: TicketAutomationRuleSelect<ExtArgs> | null
    /**
     * Filter, which TicketAutomationRule to fetch.
     */
    where?: TicketAutomationRuleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of TicketAutomationRules to fetch.
     */
    orderBy?: TicketAutomationRuleOrderByWithRelationInput | TicketAutomationRuleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for TicketAutomationRules.
     */
    cursor?: TicketAutomationRuleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` TicketAutomationRules from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` TicketAutomationRules.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of TicketAutomationRules.
     */
    distinct?: TicketAutomationRuleScalarFieldEnum | TicketAutomationRuleScalarFieldEnum[]
  }

  /**
   * TicketAutomationRule findFirstOrThrow
   */
  export type TicketAutomationRuleFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketAutomationRule
     */
    select?: TicketAutomationRuleSelect<ExtArgs> | null
    /**
     * Filter, which TicketAutomationRule to fetch.
     */
    where?: TicketAutomationRuleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of TicketAutomationRules to fetch.
     */
    orderBy?: TicketAutomationRuleOrderByWithRelationInput | TicketAutomationRuleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for TicketAutomationRules.
     */
    cursor?: TicketAutomationRuleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` TicketAutomationRules from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` TicketAutomationRules.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of TicketAutomationRules.
     */
    distinct?: TicketAutomationRuleScalarFieldEnum | TicketAutomationRuleScalarFieldEnum[]
  }

  /**
   * TicketAutomationRule findMany
   */
  export type TicketAutomationRuleFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketAutomationRule
     */
    select?: TicketAutomationRuleSelect<ExtArgs> | null
    /**
     * Filter, which TicketAutomationRules to fetch.
     */
    where?: TicketAutomationRuleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of TicketAutomationRules to fetch.
     */
    orderBy?: TicketAutomationRuleOrderByWithRelationInput | TicketAutomationRuleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing TicketAutomationRules.
     */
    cursor?: TicketAutomationRuleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` TicketAutomationRules from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` TicketAutomationRules.
     */
    skip?: number
    distinct?: TicketAutomationRuleScalarFieldEnum | TicketAutomationRuleScalarFieldEnum[]
  }

  /**
   * TicketAutomationRule create
   */
  export type TicketAutomationRuleCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketAutomationRule
     */
    select?: TicketAutomationRuleSelect<ExtArgs> | null
    /**
     * The data needed to create a TicketAutomationRule.
     */
    data: XOR<TicketAutomationRuleCreateInput, TicketAutomationRuleUncheckedCreateInput>
  }

  /**
   * TicketAutomationRule createMany
   */
  export type TicketAutomationRuleCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many TicketAutomationRules.
     */
    data: TicketAutomationRuleCreateManyInput | TicketAutomationRuleCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * TicketAutomationRule createManyAndReturn
   */
  export type TicketAutomationRuleCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketAutomationRule
     */
    select?: TicketAutomationRuleSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many TicketAutomationRules.
     */
    data: TicketAutomationRuleCreateManyInput | TicketAutomationRuleCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * TicketAutomationRule update
   */
  export type TicketAutomationRuleUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketAutomationRule
     */
    select?: TicketAutomationRuleSelect<ExtArgs> | null
    /**
     * The data needed to update a TicketAutomationRule.
     */
    data: XOR<TicketAutomationRuleUpdateInput, TicketAutomationRuleUncheckedUpdateInput>
    /**
     * Choose, which TicketAutomationRule to update.
     */
    where: TicketAutomationRuleWhereUniqueInput
  }

  /**
   * TicketAutomationRule updateMany
   */
  export type TicketAutomationRuleUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update TicketAutomationRules.
     */
    data: XOR<TicketAutomationRuleUpdateManyMutationInput, TicketAutomationRuleUncheckedUpdateManyInput>
    /**
     * Filter which TicketAutomationRules to update
     */
    where?: TicketAutomationRuleWhereInput
  }

  /**
   * TicketAutomationRule upsert
   */
  export type TicketAutomationRuleUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketAutomationRule
     */
    select?: TicketAutomationRuleSelect<ExtArgs> | null
    /**
     * The filter to search for the TicketAutomationRule to update in case it exists.
     */
    where: TicketAutomationRuleWhereUniqueInput
    /**
     * In case the TicketAutomationRule found by the `where` argument doesn't exist, create a new TicketAutomationRule with this data.
     */
    create: XOR<TicketAutomationRuleCreateInput, TicketAutomationRuleUncheckedCreateInput>
    /**
     * In case the TicketAutomationRule was found with the provided `where` argument, update it with this data.
     */
    update: XOR<TicketAutomationRuleUpdateInput, TicketAutomationRuleUncheckedUpdateInput>
  }

  /**
   * TicketAutomationRule delete
   */
  export type TicketAutomationRuleDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketAutomationRule
     */
    select?: TicketAutomationRuleSelect<ExtArgs> | null
    /**
     * Filter which TicketAutomationRule to delete.
     */
    where: TicketAutomationRuleWhereUniqueInput
  }

  /**
   * TicketAutomationRule deleteMany
   */
  export type TicketAutomationRuleDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which TicketAutomationRules to delete
     */
    where?: TicketAutomationRuleWhereInput
  }

  /**
   * TicketAutomationRule without action
   */
  export type TicketAutomationRuleDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketAutomationRule
     */
    select?: TicketAutomationRuleSelect<ExtArgs> | null
  }


  /**
   * Model KnowledgeBaseArticle
   */

  export type AggregateKnowledgeBaseArticle = {
    _count: KnowledgeBaseArticleCountAggregateOutputType | null
    _min: KnowledgeBaseArticleMinAggregateOutputType | null
    _max: KnowledgeBaseArticleMaxAggregateOutputType | null
  }

  export type KnowledgeBaseArticleMinAggregateOutputType = {
    id: string | null
    guildId: string | null
    title: string | null
    content: string | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type KnowledgeBaseArticleMaxAggregateOutputType = {
    id: string | null
    guildId: string | null
    title: string | null
    content: string | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type KnowledgeBaseArticleCountAggregateOutputType = {
    id: number
    guildId: number
    title: number
    keywords: number
    content: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type KnowledgeBaseArticleMinAggregateInputType = {
    id?: true
    guildId?: true
    title?: true
    content?: true
    createdAt?: true
    updatedAt?: true
  }

  export type KnowledgeBaseArticleMaxAggregateInputType = {
    id?: true
    guildId?: true
    title?: true
    content?: true
    createdAt?: true
    updatedAt?: true
  }

  export type KnowledgeBaseArticleCountAggregateInputType = {
    id?: true
    guildId?: true
    title?: true
    keywords?: true
    content?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type KnowledgeBaseArticleAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which KnowledgeBaseArticle to aggregate.
     */
    where?: KnowledgeBaseArticleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of KnowledgeBaseArticles to fetch.
     */
    orderBy?: KnowledgeBaseArticleOrderByWithRelationInput | KnowledgeBaseArticleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: KnowledgeBaseArticleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` KnowledgeBaseArticles from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` KnowledgeBaseArticles.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned KnowledgeBaseArticles
    **/
    _count?: true | KnowledgeBaseArticleCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: KnowledgeBaseArticleMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: KnowledgeBaseArticleMaxAggregateInputType
  }

  export type GetKnowledgeBaseArticleAggregateType<T extends KnowledgeBaseArticleAggregateArgs> = {
        [P in keyof T & keyof AggregateKnowledgeBaseArticle]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateKnowledgeBaseArticle[P]>
      : GetScalarType<T[P], AggregateKnowledgeBaseArticle[P]>
  }




  export type KnowledgeBaseArticleGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: KnowledgeBaseArticleWhereInput
    orderBy?: KnowledgeBaseArticleOrderByWithAggregationInput | KnowledgeBaseArticleOrderByWithAggregationInput[]
    by: KnowledgeBaseArticleScalarFieldEnum[] | KnowledgeBaseArticleScalarFieldEnum
    having?: KnowledgeBaseArticleScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: KnowledgeBaseArticleCountAggregateInputType | true
    _min?: KnowledgeBaseArticleMinAggregateInputType
    _max?: KnowledgeBaseArticleMaxAggregateInputType
  }

  export type KnowledgeBaseArticleGroupByOutputType = {
    id: string
    guildId: string
    title: string
    keywords: string[]
    content: string
    createdAt: Date
    updatedAt: Date
    _count: KnowledgeBaseArticleCountAggregateOutputType | null
    _min: KnowledgeBaseArticleMinAggregateOutputType | null
    _max: KnowledgeBaseArticleMaxAggregateOutputType | null
  }

  type GetKnowledgeBaseArticleGroupByPayload<T extends KnowledgeBaseArticleGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<KnowledgeBaseArticleGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof KnowledgeBaseArticleGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], KnowledgeBaseArticleGroupByOutputType[P]>
            : GetScalarType<T[P], KnowledgeBaseArticleGroupByOutputType[P]>
        }
      >
    >


  export type KnowledgeBaseArticleSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    guildId?: boolean
    title?: boolean
    keywords?: boolean
    content?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["knowledgeBaseArticle"]>

  export type KnowledgeBaseArticleSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    guildId?: boolean
    title?: boolean
    keywords?: boolean
    content?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["knowledgeBaseArticle"]>

  export type KnowledgeBaseArticleSelectScalar = {
    id?: boolean
    guildId?: boolean
    title?: boolean
    keywords?: boolean
    content?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }


  export type $KnowledgeBaseArticlePayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "KnowledgeBaseArticle"
    objects: {}
    scalars: $Extensions.GetPayloadResult<{
      id: string
      guildId: string
      title: string
      keywords: string[]
      content: string
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["knowledgeBaseArticle"]>
    composites: {}
  }

  type KnowledgeBaseArticleGetPayload<S extends boolean | null | undefined | KnowledgeBaseArticleDefaultArgs> = $Result.GetResult<Prisma.$KnowledgeBaseArticlePayload, S>

  type KnowledgeBaseArticleCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = 
    Omit<KnowledgeBaseArticleFindManyArgs, 'select' | 'include' | 'distinct'> & {
      select?: KnowledgeBaseArticleCountAggregateInputType | true
    }

  export interface KnowledgeBaseArticleDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['KnowledgeBaseArticle'], meta: { name: 'KnowledgeBaseArticle' } }
    /**
     * Find zero or one KnowledgeBaseArticle that matches the filter.
     * @param {KnowledgeBaseArticleFindUniqueArgs} args - Arguments to find a KnowledgeBaseArticle
     * @example
     * // Get one KnowledgeBaseArticle
     * const knowledgeBaseArticle = await prisma.knowledgeBaseArticle.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends KnowledgeBaseArticleFindUniqueArgs>(args: SelectSubset<T, KnowledgeBaseArticleFindUniqueArgs<ExtArgs>>): Prisma__KnowledgeBaseArticleClient<$Result.GetResult<Prisma.$KnowledgeBaseArticlePayload<ExtArgs>, T, "findUnique"> | null, null, ExtArgs>

    /**
     * Find one KnowledgeBaseArticle that matches the filter or throw an error with `error.code='P2025'` 
     * if no matches were found.
     * @param {KnowledgeBaseArticleFindUniqueOrThrowArgs} args - Arguments to find a KnowledgeBaseArticle
     * @example
     * // Get one KnowledgeBaseArticle
     * const knowledgeBaseArticle = await prisma.knowledgeBaseArticle.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends KnowledgeBaseArticleFindUniqueOrThrowArgs>(args: SelectSubset<T, KnowledgeBaseArticleFindUniqueOrThrowArgs<ExtArgs>>): Prisma__KnowledgeBaseArticleClient<$Result.GetResult<Prisma.$KnowledgeBaseArticlePayload<ExtArgs>, T, "findUniqueOrThrow">, never, ExtArgs>

    /**
     * Find the first KnowledgeBaseArticle that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {KnowledgeBaseArticleFindFirstArgs} args - Arguments to find a KnowledgeBaseArticle
     * @example
     * // Get one KnowledgeBaseArticle
     * const knowledgeBaseArticle = await prisma.knowledgeBaseArticle.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends KnowledgeBaseArticleFindFirstArgs>(args?: SelectSubset<T, KnowledgeBaseArticleFindFirstArgs<ExtArgs>>): Prisma__KnowledgeBaseArticleClient<$Result.GetResult<Prisma.$KnowledgeBaseArticlePayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first KnowledgeBaseArticle that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {KnowledgeBaseArticleFindFirstOrThrowArgs} args - Arguments to find a KnowledgeBaseArticle
     * @example
     * // Get one KnowledgeBaseArticle
     * const knowledgeBaseArticle = await prisma.knowledgeBaseArticle.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends KnowledgeBaseArticleFindFirstOrThrowArgs>(args?: SelectSubset<T, KnowledgeBaseArticleFindFirstOrThrowArgs<ExtArgs>>): Prisma__KnowledgeBaseArticleClient<$Result.GetResult<Prisma.$KnowledgeBaseArticlePayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more KnowledgeBaseArticles that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {KnowledgeBaseArticleFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all KnowledgeBaseArticles
     * const knowledgeBaseArticles = await prisma.knowledgeBaseArticle.findMany()
     * 
     * // Get first 10 KnowledgeBaseArticles
     * const knowledgeBaseArticles = await prisma.knowledgeBaseArticle.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const knowledgeBaseArticleWithIdOnly = await prisma.knowledgeBaseArticle.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends KnowledgeBaseArticleFindManyArgs>(args?: SelectSubset<T, KnowledgeBaseArticleFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$KnowledgeBaseArticlePayload<ExtArgs>, T, "findMany">>

    /**
     * Create a KnowledgeBaseArticle.
     * @param {KnowledgeBaseArticleCreateArgs} args - Arguments to create a KnowledgeBaseArticle.
     * @example
     * // Create one KnowledgeBaseArticle
     * const KnowledgeBaseArticle = await prisma.knowledgeBaseArticle.create({
     *   data: {
     *     // ... data to create a KnowledgeBaseArticle
     *   }
     * })
     * 
     */
    create<T extends KnowledgeBaseArticleCreateArgs>(args: SelectSubset<T, KnowledgeBaseArticleCreateArgs<ExtArgs>>): Prisma__KnowledgeBaseArticleClient<$Result.GetResult<Prisma.$KnowledgeBaseArticlePayload<ExtArgs>, T, "create">, never, ExtArgs>

    /**
     * Create many KnowledgeBaseArticles.
     * @param {KnowledgeBaseArticleCreateManyArgs} args - Arguments to create many KnowledgeBaseArticles.
     * @example
     * // Create many KnowledgeBaseArticles
     * const knowledgeBaseArticle = await prisma.knowledgeBaseArticle.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends KnowledgeBaseArticleCreateManyArgs>(args?: SelectSubset<T, KnowledgeBaseArticleCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many KnowledgeBaseArticles and returns the data saved in the database.
     * @param {KnowledgeBaseArticleCreateManyAndReturnArgs} args - Arguments to create many KnowledgeBaseArticles.
     * @example
     * // Create many KnowledgeBaseArticles
     * const knowledgeBaseArticle = await prisma.knowledgeBaseArticle.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many KnowledgeBaseArticles and only return the `id`
     * const knowledgeBaseArticleWithIdOnly = await prisma.knowledgeBaseArticle.createManyAndReturn({ 
     *   select: { id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends KnowledgeBaseArticleCreateManyAndReturnArgs>(args?: SelectSubset<T, KnowledgeBaseArticleCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$KnowledgeBaseArticlePayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a KnowledgeBaseArticle.
     * @param {KnowledgeBaseArticleDeleteArgs} args - Arguments to delete one KnowledgeBaseArticle.
     * @example
     * // Delete one KnowledgeBaseArticle
     * const KnowledgeBaseArticle = await prisma.knowledgeBaseArticle.delete({
     *   where: {
     *     // ... filter to delete one KnowledgeBaseArticle
     *   }
     * })
     * 
     */
    delete<T extends KnowledgeBaseArticleDeleteArgs>(args: SelectSubset<T, KnowledgeBaseArticleDeleteArgs<ExtArgs>>): Prisma__KnowledgeBaseArticleClient<$Result.GetResult<Prisma.$KnowledgeBaseArticlePayload<ExtArgs>, T, "delete">, never, ExtArgs>

    /**
     * Update one KnowledgeBaseArticle.
     * @param {KnowledgeBaseArticleUpdateArgs} args - Arguments to update one KnowledgeBaseArticle.
     * @example
     * // Update one KnowledgeBaseArticle
     * const knowledgeBaseArticle = await prisma.knowledgeBaseArticle.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends KnowledgeBaseArticleUpdateArgs>(args: SelectSubset<T, KnowledgeBaseArticleUpdateArgs<ExtArgs>>): Prisma__KnowledgeBaseArticleClient<$Result.GetResult<Prisma.$KnowledgeBaseArticlePayload<ExtArgs>, T, "update">, never, ExtArgs>

    /**
     * Delete zero or more KnowledgeBaseArticles.
     * @param {KnowledgeBaseArticleDeleteManyArgs} args - Arguments to filter KnowledgeBaseArticles to delete.
     * @example
     * // Delete a few KnowledgeBaseArticles
     * const { count } = await prisma.knowledgeBaseArticle.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends KnowledgeBaseArticleDeleteManyArgs>(args?: SelectSubset<T, KnowledgeBaseArticleDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more KnowledgeBaseArticles.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {KnowledgeBaseArticleUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many KnowledgeBaseArticles
     * const knowledgeBaseArticle = await prisma.knowledgeBaseArticle.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends KnowledgeBaseArticleUpdateManyArgs>(args: SelectSubset<T, KnowledgeBaseArticleUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one KnowledgeBaseArticle.
     * @param {KnowledgeBaseArticleUpsertArgs} args - Arguments to update or create a KnowledgeBaseArticle.
     * @example
     * // Update or create a KnowledgeBaseArticle
     * const knowledgeBaseArticle = await prisma.knowledgeBaseArticle.upsert({
     *   create: {
     *     // ... data to create a KnowledgeBaseArticle
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the KnowledgeBaseArticle we want to update
     *   }
     * })
     */
    upsert<T extends KnowledgeBaseArticleUpsertArgs>(args: SelectSubset<T, KnowledgeBaseArticleUpsertArgs<ExtArgs>>): Prisma__KnowledgeBaseArticleClient<$Result.GetResult<Prisma.$KnowledgeBaseArticlePayload<ExtArgs>, T, "upsert">, never, ExtArgs>


    /**
     * Count the number of KnowledgeBaseArticles.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {KnowledgeBaseArticleCountArgs} args - Arguments to filter KnowledgeBaseArticles to count.
     * @example
     * // Count the number of KnowledgeBaseArticles
     * const count = await prisma.knowledgeBaseArticle.count({
     *   where: {
     *     // ... the filter for the KnowledgeBaseArticles we want to count
     *   }
     * })
    **/
    count<T extends KnowledgeBaseArticleCountArgs>(
      args?: Subset<T, KnowledgeBaseArticleCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], KnowledgeBaseArticleCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a KnowledgeBaseArticle.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {KnowledgeBaseArticleAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends KnowledgeBaseArticleAggregateArgs>(args: Subset<T, KnowledgeBaseArticleAggregateArgs>): Prisma.PrismaPromise<GetKnowledgeBaseArticleAggregateType<T>>

    /**
     * Group by KnowledgeBaseArticle.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {KnowledgeBaseArticleGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends KnowledgeBaseArticleGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: KnowledgeBaseArticleGroupByArgs['orderBy'] }
        : { orderBy?: KnowledgeBaseArticleGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, KnowledgeBaseArticleGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetKnowledgeBaseArticleGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the KnowledgeBaseArticle model
   */
  readonly fields: KnowledgeBaseArticleFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for KnowledgeBaseArticle.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__KnowledgeBaseArticleClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the KnowledgeBaseArticle model
   */ 
  interface KnowledgeBaseArticleFieldRefs {
    readonly id: FieldRef<"KnowledgeBaseArticle", 'String'>
    readonly guildId: FieldRef<"KnowledgeBaseArticle", 'String'>
    readonly title: FieldRef<"KnowledgeBaseArticle", 'String'>
    readonly keywords: FieldRef<"KnowledgeBaseArticle", 'String[]'>
    readonly content: FieldRef<"KnowledgeBaseArticle", 'String'>
    readonly createdAt: FieldRef<"KnowledgeBaseArticle", 'DateTime'>
    readonly updatedAt: FieldRef<"KnowledgeBaseArticle", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * KnowledgeBaseArticle findUnique
   */
  export type KnowledgeBaseArticleFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the KnowledgeBaseArticle
     */
    select?: KnowledgeBaseArticleSelect<ExtArgs> | null
    /**
     * Filter, which KnowledgeBaseArticle to fetch.
     */
    where: KnowledgeBaseArticleWhereUniqueInput
  }

  /**
   * KnowledgeBaseArticle findUniqueOrThrow
   */
  export type KnowledgeBaseArticleFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the KnowledgeBaseArticle
     */
    select?: KnowledgeBaseArticleSelect<ExtArgs> | null
    /**
     * Filter, which KnowledgeBaseArticle to fetch.
     */
    where: KnowledgeBaseArticleWhereUniqueInput
  }

  /**
   * KnowledgeBaseArticle findFirst
   */
  export type KnowledgeBaseArticleFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the KnowledgeBaseArticle
     */
    select?: KnowledgeBaseArticleSelect<ExtArgs> | null
    /**
     * Filter, which KnowledgeBaseArticle to fetch.
     */
    where?: KnowledgeBaseArticleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of KnowledgeBaseArticles to fetch.
     */
    orderBy?: KnowledgeBaseArticleOrderByWithRelationInput | KnowledgeBaseArticleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for KnowledgeBaseArticles.
     */
    cursor?: KnowledgeBaseArticleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` KnowledgeBaseArticles from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` KnowledgeBaseArticles.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of KnowledgeBaseArticles.
     */
    distinct?: KnowledgeBaseArticleScalarFieldEnum | KnowledgeBaseArticleScalarFieldEnum[]
  }

  /**
   * KnowledgeBaseArticle findFirstOrThrow
   */
  export type KnowledgeBaseArticleFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the KnowledgeBaseArticle
     */
    select?: KnowledgeBaseArticleSelect<ExtArgs> | null
    /**
     * Filter, which KnowledgeBaseArticle to fetch.
     */
    where?: KnowledgeBaseArticleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of KnowledgeBaseArticles to fetch.
     */
    orderBy?: KnowledgeBaseArticleOrderByWithRelationInput | KnowledgeBaseArticleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for KnowledgeBaseArticles.
     */
    cursor?: KnowledgeBaseArticleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` KnowledgeBaseArticles from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` KnowledgeBaseArticles.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of KnowledgeBaseArticles.
     */
    distinct?: KnowledgeBaseArticleScalarFieldEnum | KnowledgeBaseArticleScalarFieldEnum[]
  }

  /**
   * KnowledgeBaseArticle findMany
   */
  export type KnowledgeBaseArticleFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the KnowledgeBaseArticle
     */
    select?: KnowledgeBaseArticleSelect<ExtArgs> | null
    /**
     * Filter, which KnowledgeBaseArticles to fetch.
     */
    where?: KnowledgeBaseArticleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of KnowledgeBaseArticles to fetch.
     */
    orderBy?: KnowledgeBaseArticleOrderByWithRelationInput | KnowledgeBaseArticleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing KnowledgeBaseArticles.
     */
    cursor?: KnowledgeBaseArticleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` KnowledgeBaseArticles from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` KnowledgeBaseArticles.
     */
    skip?: number
    distinct?: KnowledgeBaseArticleScalarFieldEnum | KnowledgeBaseArticleScalarFieldEnum[]
  }

  /**
   * KnowledgeBaseArticle create
   */
  export type KnowledgeBaseArticleCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the KnowledgeBaseArticle
     */
    select?: KnowledgeBaseArticleSelect<ExtArgs> | null
    /**
     * The data needed to create a KnowledgeBaseArticle.
     */
    data: XOR<KnowledgeBaseArticleCreateInput, KnowledgeBaseArticleUncheckedCreateInput>
  }

  /**
   * KnowledgeBaseArticle createMany
   */
  export type KnowledgeBaseArticleCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many KnowledgeBaseArticles.
     */
    data: KnowledgeBaseArticleCreateManyInput | KnowledgeBaseArticleCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * KnowledgeBaseArticle createManyAndReturn
   */
  export type KnowledgeBaseArticleCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the KnowledgeBaseArticle
     */
    select?: KnowledgeBaseArticleSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many KnowledgeBaseArticles.
     */
    data: KnowledgeBaseArticleCreateManyInput | KnowledgeBaseArticleCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * KnowledgeBaseArticle update
   */
  export type KnowledgeBaseArticleUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the KnowledgeBaseArticle
     */
    select?: KnowledgeBaseArticleSelect<ExtArgs> | null
    /**
     * The data needed to update a KnowledgeBaseArticle.
     */
    data: XOR<KnowledgeBaseArticleUpdateInput, KnowledgeBaseArticleUncheckedUpdateInput>
    /**
     * Choose, which KnowledgeBaseArticle to update.
     */
    where: KnowledgeBaseArticleWhereUniqueInput
  }

  /**
   * KnowledgeBaseArticle updateMany
   */
  export type KnowledgeBaseArticleUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update KnowledgeBaseArticles.
     */
    data: XOR<KnowledgeBaseArticleUpdateManyMutationInput, KnowledgeBaseArticleUncheckedUpdateManyInput>
    /**
     * Filter which KnowledgeBaseArticles to update
     */
    where?: KnowledgeBaseArticleWhereInput
  }

  /**
   * KnowledgeBaseArticle upsert
   */
  export type KnowledgeBaseArticleUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the KnowledgeBaseArticle
     */
    select?: KnowledgeBaseArticleSelect<ExtArgs> | null
    /**
     * The filter to search for the KnowledgeBaseArticle to update in case it exists.
     */
    where: KnowledgeBaseArticleWhereUniqueInput
    /**
     * In case the KnowledgeBaseArticle found by the `where` argument doesn't exist, create a new KnowledgeBaseArticle with this data.
     */
    create: XOR<KnowledgeBaseArticleCreateInput, KnowledgeBaseArticleUncheckedCreateInput>
    /**
     * In case the KnowledgeBaseArticle was found with the provided `where` argument, update it with this data.
     */
    update: XOR<KnowledgeBaseArticleUpdateInput, KnowledgeBaseArticleUncheckedUpdateInput>
  }

  /**
   * KnowledgeBaseArticle delete
   */
  export type KnowledgeBaseArticleDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the KnowledgeBaseArticle
     */
    select?: KnowledgeBaseArticleSelect<ExtArgs> | null
    /**
     * Filter which KnowledgeBaseArticle to delete.
     */
    where: KnowledgeBaseArticleWhereUniqueInput
  }

  /**
   * KnowledgeBaseArticle deleteMany
   */
  export type KnowledgeBaseArticleDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which KnowledgeBaseArticles to delete
     */
    where?: KnowledgeBaseArticleWhereInput
  }

  /**
   * KnowledgeBaseArticle without action
   */
  export type KnowledgeBaseArticleDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the KnowledgeBaseArticle
     */
    select?: KnowledgeBaseArticleSelect<ExtArgs> | null
  }


  /**
   * Model Level
   */

  export type AggregateLevel = {
    _count: LevelCountAggregateOutputType | null
    _avg: LevelAvgAggregateOutputType | null
    _sum: LevelSumAggregateOutputType | null
    _min: LevelMinAggregateOutputType | null
    _max: LevelMaxAggregateOutputType | null
  }

  export type LevelAvgAggregateOutputType = {
    xp: number | null
    level: number | null
  }

  export type LevelSumAggregateOutputType = {
    xp: number | null
    level: number | null
  }

  export type LevelMinAggregateOutputType = {
    id: string | null
    userId: string | null
    guildId: string | null
    xp: number | null
    level: number | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type LevelMaxAggregateOutputType = {
    id: string | null
    userId: string | null
    guildId: string | null
    xp: number | null
    level: number | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type LevelCountAggregateOutputType = {
    id: number
    userId: number
    guildId: number
    xp: number
    level: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type LevelAvgAggregateInputType = {
    xp?: true
    level?: true
  }

  export type LevelSumAggregateInputType = {
    xp?: true
    level?: true
  }

  export type LevelMinAggregateInputType = {
    id?: true
    userId?: true
    guildId?: true
    xp?: true
    level?: true
    createdAt?: true
    updatedAt?: true
  }

  export type LevelMaxAggregateInputType = {
    id?: true
    userId?: true
    guildId?: true
    xp?: true
    level?: true
    createdAt?: true
    updatedAt?: true
  }

  export type LevelCountAggregateInputType = {
    id?: true
    userId?: true
    guildId?: true
    xp?: true
    level?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type LevelAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Level to aggregate.
     */
    where?: LevelWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Levels to fetch.
     */
    orderBy?: LevelOrderByWithRelationInput | LevelOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: LevelWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Levels from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Levels.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned Levels
    **/
    _count?: true | LevelCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: LevelAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: LevelSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: LevelMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: LevelMaxAggregateInputType
  }

  export type GetLevelAggregateType<T extends LevelAggregateArgs> = {
        [P in keyof T & keyof AggregateLevel]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateLevel[P]>
      : GetScalarType<T[P], AggregateLevel[P]>
  }




  export type LevelGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: LevelWhereInput
    orderBy?: LevelOrderByWithAggregationInput | LevelOrderByWithAggregationInput[]
    by: LevelScalarFieldEnum[] | LevelScalarFieldEnum
    having?: LevelScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: LevelCountAggregateInputType | true
    _avg?: LevelAvgAggregateInputType
    _sum?: LevelSumAggregateInputType
    _min?: LevelMinAggregateInputType
    _max?: LevelMaxAggregateInputType
  }

  export type LevelGroupByOutputType = {
    id: string
    userId: string
    guildId: string
    xp: number
    level: number
    createdAt: Date
    updatedAt: Date
    _count: LevelCountAggregateOutputType | null
    _avg: LevelAvgAggregateOutputType | null
    _sum: LevelSumAggregateOutputType | null
    _min: LevelMinAggregateOutputType | null
    _max: LevelMaxAggregateOutputType | null
  }

  type GetLevelGroupByPayload<T extends LevelGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<LevelGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof LevelGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], LevelGroupByOutputType[P]>
            : GetScalarType<T[P], LevelGroupByOutputType[P]>
        }
      >
    >


  export type LevelSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    userId?: boolean
    guildId?: boolean
    xp?: boolean
    level?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["level"]>

  export type LevelSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    userId?: boolean
    guildId?: boolean
    xp?: boolean
    level?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["level"]>

  export type LevelSelectScalar = {
    id?: boolean
    userId?: boolean
    guildId?: boolean
    xp?: boolean
    level?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }


  export type $LevelPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "Level"
    objects: {}
    scalars: $Extensions.GetPayloadResult<{
      id: string
      userId: string
      guildId: string
      xp: number
      level: number
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["level"]>
    composites: {}
  }

  type LevelGetPayload<S extends boolean | null | undefined | LevelDefaultArgs> = $Result.GetResult<Prisma.$LevelPayload, S>

  type LevelCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = 
    Omit<LevelFindManyArgs, 'select' | 'include' | 'distinct'> & {
      select?: LevelCountAggregateInputType | true
    }

  export interface LevelDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['Level'], meta: { name: 'Level' } }
    /**
     * Find zero or one Level that matches the filter.
     * @param {LevelFindUniqueArgs} args - Arguments to find a Level
     * @example
     * // Get one Level
     * const level = await prisma.level.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends LevelFindUniqueArgs>(args: SelectSubset<T, LevelFindUniqueArgs<ExtArgs>>): Prisma__LevelClient<$Result.GetResult<Prisma.$LevelPayload<ExtArgs>, T, "findUnique"> | null, null, ExtArgs>

    /**
     * Find one Level that matches the filter or throw an error with `error.code='P2025'` 
     * if no matches were found.
     * @param {LevelFindUniqueOrThrowArgs} args - Arguments to find a Level
     * @example
     * // Get one Level
     * const level = await prisma.level.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends LevelFindUniqueOrThrowArgs>(args: SelectSubset<T, LevelFindUniqueOrThrowArgs<ExtArgs>>): Prisma__LevelClient<$Result.GetResult<Prisma.$LevelPayload<ExtArgs>, T, "findUniqueOrThrow">, never, ExtArgs>

    /**
     * Find the first Level that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {LevelFindFirstArgs} args - Arguments to find a Level
     * @example
     * // Get one Level
     * const level = await prisma.level.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends LevelFindFirstArgs>(args?: SelectSubset<T, LevelFindFirstArgs<ExtArgs>>): Prisma__LevelClient<$Result.GetResult<Prisma.$LevelPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first Level that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {LevelFindFirstOrThrowArgs} args - Arguments to find a Level
     * @example
     * // Get one Level
     * const level = await prisma.level.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends LevelFindFirstOrThrowArgs>(args?: SelectSubset<T, LevelFindFirstOrThrowArgs<ExtArgs>>): Prisma__LevelClient<$Result.GetResult<Prisma.$LevelPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more Levels that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {LevelFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Levels
     * const levels = await prisma.level.findMany()
     * 
     * // Get first 10 Levels
     * const levels = await prisma.level.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const levelWithIdOnly = await prisma.level.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends LevelFindManyArgs>(args?: SelectSubset<T, LevelFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$LevelPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a Level.
     * @param {LevelCreateArgs} args - Arguments to create a Level.
     * @example
     * // Create one Level
     * const Level = await prisma.level.create({
     *   data: {
     *     // ... data to create a Level
     *   }
     * })
     * 
     */
    create<T extends LevelCreateArgs>(args: SelectSubset<T, LevelCreateArgs<ExtArgs>>): Prisma__LevelClient<$Result.GetResult<Prisma.$LevelPayload<ExtArgs>, T, "create">, never, ExtArgs>

    /**
     * Create many Levels.
     * @param {LevelCreateManyArgs} args - Arguments to create many Levels.
     * @example
     * // Create many Levels
     * const level = await prisma.level.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends LevelCreateManyArgs>(args?: SelectSubset<T, LevelCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many Levels and returns the data saved in the database.
     * @param {LevelCreateManyAndReturnArgs} args - Arguments to create many Levels.
     * @example
     * // Create many Levels
     * const level = await prisma.level.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many Levels and only return the `id`
     * const levelWithIdOnly = await prisma.level.createManyAndReturn({ 
     *   select: { id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends LevelCreateManyAndReturnArgs>(args?: SelectSubset<T, LevelCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$LevelPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a Level.
     * @param {LevelDeleteArgs} args - Arguments to delete one Level.
     * @example
     * // Delete one Level
     * const Level = await prisma.level.delete({
     *   where: {
     *     // ... filter to delete one Level
     *   }
     * })
     * 
     */
    delete<T extends LevelDeleteArgs>(args: SelectSubset<T, LevelDeleteArgs<ExtArgs>>): Prisma__LevelClient<$Result.GetResult<Prisma.$LevelPayload<ExtArgs>, T, "delete">, never, ExtArgs>

    /**
     * Update one Level.
     * @param {LevelUpdateArgs} args - Arguments to update one Level.
     * @example
     * // Update one Level
     * const level = await prisma.level.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends LevelUpdateArgs>(args: SelectSubset<T, LevelUpdateArgs<ExtArgs>>): Prisma__LevelClient<$Result.GetResult<Prisma.$LevelPayload<ExtArgs>, T, "update">, never, ExtArgs>

    /**
     * Delete zero or more Levels.
     * @param {LevelDeleteManyArgs} args - Arguments to filter Levels to delete.
     * @example
     * // Delete a few Levels
     * const { count } = await prisma.level.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends LevelDeleteManyArgs>(args?: SelectSubset<T, LevelDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Levels.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {LevelUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Levels
     * const level = await prisma.level.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends LevelUpdateManyArgs>(args: SelectSubset<T, LevelUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one Level.
     * @param {LevelUpsertArgs} args - Arguments to update or create a Level.
     * @example
     * // Update or create a Level
     * const level = await prisma.level.upsert({
     *   create: {
     *     // ... data to create a Level
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the Level we want to update
     *   }
     * })
     */
    upsert<T extends LevelUpsertArgs>(args: SelectSubset<T, LevelUpsertArgs<ExtArgs>>): Prisma__LevelClient<$Result.GetResult<Prisma.$LevelPayload<ExtArgs>, T, "upsert">, never, ExtArgs>


    /**
     * Count the number of Levels.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {LevelCountArgs} args - Arguments to filter Levels to count.
     * @example
     * // Count the number of Levels
     * const count = await prisma.level.count({
     *   where: {
     *     // ... the filter for the Levels we want to count
     *   }
     * })
    **/
    count<T extends LevelCountArgs>(
      args?: Subset<T, LevelCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], LevelCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a Level.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {LevelAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends LevelAggregateArgs>(args: Subset<T, LevelAggregateArgs>): Prisma.PrismaPromise<GetLevelAggregateType<T>>

    /**
     * Group by Level.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {LevelGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends LevelGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: LevelGroupByArgs['orderBy'] }
        : { orderBy?: LevelGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, LevelGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetLevelGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the Level model
   */
  readonly fields: LevelFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for Level.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__LevelClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the Level model
   */ 
  interface LevelFieldRefs {
    readonly id: FieldRef<"Level", 'String'>
    readonly userId: FieldRef<"Level", 'String'>
    readonly guildId: FieldRef<"Level", 'String'>
    readonly xp: FieldRef<"Level", 'Int'>
    readonly level: FieldRef<"Level", 'Int'>
    readonly createdAt: FieldRef<"Level", 'DateTime'>
    readonly updatedAt: FieldRef<"Level", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * Level findUnique
   */
  export type LevelFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Level
     */
    select?: LevelSelect<ExtArgs> | null
    /**
     * Filter, which Level to fetch.
     */
    where: LevelWhereUniqueInput
  }

  /**
   * Level findUniqueOrThrow
   */
  export type LevelFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Level
     */
    select?: LevelSelect<ExtArgs> | null
    /**
     * Filter, which Level to fetch.
     */
    where: LevelWhereUniqueInput
  }

  /**
   * Level findFirst
   */
  export type LevelFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Level
     */
    select?: LevelSelect<ExtArgs> | null
    /**
     * Filter, which Level to fetch.
     */
    where?: LevelWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Levels to fetch.
     */
    orderBy?: LevelOrderByWithRelationInput | LevelOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Levels.
     */
    cursor?: LevelWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Levels from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Levels.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Levels.
     */
    distinct?: LevelScalarFieldEnum | LevelScalarFieldEnum[]
  }

  /**
   * Level findFirstOrThrow
   */
  export type LevelFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Level
     */
    select?: LevelSelect<ExtArgs> | null
    /**
     * Filter, which Level to fetch.
     */
    where?: LevelWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Levels to fetch.
     */
    orderBy?: LevelOrderByWithRelationInput | LevelOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Levels.
     */
    cursor?: LevelWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Levels from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Levels.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Levels.
     */
    distinct?: LevelScalarFieldEnum | LevelScalarFieldEnum[]
  }

  /**
   * Level findMany
   */
  export type LevelFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Level
     */
    select?: LevelSelect<ExtArgs> | null
    /**
     * Filter, which Levels to fetch.
     */
    where?: LevelWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Levels to fetch.
     */
    orderBy?: LevelOrderByWithRelationInput | LevelOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing Levels.
     */
    cursor?: LevelWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Levels from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Levels.
     */
    skip?: number
    distinct?: LevelScalarFieldEnum | LevelScalarFieldEnum[]
  }

  /**
   * Level create
   */
  export type LevelCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Level
     */
    select?: LevelSelect<ExtArgs> | null
    /**
     * The data needed to create a Level.
     */
    data: XOR<LevelCreateInput, LevelUncheckedCreateInput>
  }

  /**
   * Level createMany
   */
  export type LevelCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many Levels.
     */
    data: LevelCreateManyInput | LevelCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * Level createManyAndReturn
   */
  export type LevelCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Level
     */
    select?: LevelSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many Levels.
     */
    data: LevelCreateManyInput | LevelCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * Level update
   */
  export type LevelUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Level
     */
    select?: LevelSelect<ExtArgs> | null
    /**
     * The data needed to update a Level.
     */
    data: XOR<LevelUpdateInput, LevelUncheckedUpdateInput>
    /**
     * Choose, which Level to update.
     */
    where: LevelWhereUniqueInput
  }

  /**
   * Level updateMany
   */
  export type LevelUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update Levels.
     */
    data: XOR<LevelUpdateManyMutationInput, LevelUncheckedUpdateManyInput>
    /**
     * Filter which Levels to update
     */
    where?: LevelWhereInput
  }

  /**
   * Level upsert
   */
  export type LevelUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Level
     */
    select?: LevelSelect<ExtArgs> | null
    /**
     * The filter to search for the Level to update in case it exists.
     */
    where: LevelWhereUniqueInput
    /**
     * In case the Level found by the `where` argument doesn't exist, create a new Level with this data.
     */
    create: XOR<LevelCreateInput, LevelUncheckedCreateInput>
    /**
     * In case the Level was found with the provided `where` argument, update it with this data.
     */
    update: XOR<LevelUpdateInput, LevelUncheckedUpdateInput>
  }

  /**
   * Level delete
   */
  export type LevelDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Level
     */
    select?: LevelSelect<ExtArgs> | null
    /**
     * Filter which Level to delete.
     */
    where: LevelWhereUniqueInput
  }

  /**
   * Level deleteMany
   */
  export type LevelDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Levels to delete
     */
    where?: LevelWhereInput
  }

  /**
   * Level without action
   */
  export type LevelDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Level
     */
    select?: LevelSelect<ExtArgs> | null
  }


  /**
   * Model TicketSupportSession
   */

  export type AggregateTicketSupportSession = {
    _count: TicketSupportSessionCountAggregateOutputType | null
    _avg: TicketSupportSessionAvgAggregateOutputType | null
    _sum: TicketSupportSessionSumAggregateOutputType | null
    _min: TicketSupportSessionMinAggregateOutputType | null
    _max: TicketSupportSessionMaxAggregateOutputType | null
  }

  export type TicketSupportSessionAvgAggregateOutputType = {
    durationSeconds: number | null
  }

  export type TicketSupportSessionSumAggregateOutputType = {
    durationSeconds: number | null
  }

  export type TicketSupportSessionMinAggregateOutputType = {
    id: string | null
    guildId: string | null
    userId: string | null
    roleId: string | null
    startedAt: Date | null
    endedAt: Date | null
    durationSeconds: number | null
  }

  export type TicketSupportSessionMaxAggregateOutputType = {
    id: string | null
    guildId: string | null
    userId: string | null
    roleId: string | null
    startedAt: Date | null
    endedAt: Date | null
    durationSeconds: number | null
  }

  export type TicketSupportSessionCountAggregateOutputType = {
    id: number
    guildId: number
    userId: number
    roleId: number
    startedAt: number
    endedAt: number
    durationSeconds: number
    _all: number
  }


  export type TicketSupportSessionAvgAggregateInputType = {
    durationSeconds?: true
  }

  export type TicketSupportSessionSumAggregateInputType = {
    durationSeconds?: true
  }

  export type TicketSupportSessionMinAggregateInputType = {
    id?: true
    guildId?: true
    userId?: true
    roleId?: true
    startedAt?: true
    endedAt?: true
    durationSeconds?: true
  }

  export type TicketSupportSessionMaxAggregateInputType = {
    id?: true
    guildId?: true
    userId?: true
    roleId?: true
    startedAt?: true
    endedAt?: true
    durationSeconds?: true
  }

  export type TicketSupportSessionCountAggregateInputType = {
    id?: true
    guildId?: true
    userId?: true
    roleId?: true
    startedAt?: true
    endedAt?: true
    durationSeconds?: true
    _all?: true
  }

  export type TicketSupportSessionAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which TicketSupportSession to aggregate.
     */
    where?: TicketSupportSessionWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of TicketSupportSessions to fetch.
     */
    orderBy?: TicketSupportSessionOrderByWithRelationInput | TicketSupportSessionOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: TicketSupportSessionWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` TicketSupportSessions from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` TicketSupportSessions.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned TicketSupportSessions
    **/
    _count?: true | TicketSupportSessionCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: TicketSupportSessionAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: TicketSupportSessionSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: TicketSupportSessionMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: TicketSupportSessionMaxAggregateInputType
  }

  export type GetTicketSupportSessionAggregateType<T extends TicketSupportSessionAggregateArgs> = {
        [P in keyof T & keyof AggregateTicketSupportSession]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateTicketSupportSession[P]>
      : GetScalarType<T[P], AggregateTicketSupportSession[P]>
  }




  export type TicketSupportSessionGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: TicketSupportSessionWhereInput
    orderBy?: TicketSupportSessionOrderByWithAggregationInput | TicketSupportSessionOrderByWithAggregationInput[]
    by: TicketSupportSessionScalarFieldEnum[] | TicketSupportSessionScalarFieldEnum
    having?: TicketSupportSessionScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: TicketSupportSessionCountAggregateInputType | true
    _avg?: TicketSupportSessionAvgAggregateInputType
    _sum?: TicketSupportSessionSumAggregateInputType
    _min?: TicketSupportSessionMinAggregateInputType
    _max?: TicketSupportSessionMaxAggregateInputType
  }

  export type TicketSupportSessionGroupByOutputType = {
    id: string
    guildId: string
    userId: string
    roleId: string
    startedAt: Date
    endedAt: Date | null
    durationSeconds: number | null
    _count: TicketSupportSessionCountAggregateOutputType | null
    _avg: TicketSupportSessionAvgAggregateOutputType | null
    _sum: TicketSupportSessionSumAggregateOutputType | null
    _min: TicketSupportSessionMinAggregateOutputType | null
    _max: TicketSupportSessionMaxAggregateOutputType | null
  }

  type GetTicketSupportSessionGroupByPayload<T extends TicketSupportSessionGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<TicketSupportSessionGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof TicketSupportSessionGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], TicketSupportSessionGroupByOutputType[P]>
            : GetScalarType<T[P], TicketSupportSessionGroupByOutputType[P]>
        }
      >
    >


  export type TicketSupportSessionSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    guildId?: boolean
    userId?: boolean
    roleId?: boolean
    startedAt?: boolean
    endedAt?: boolean
    durationSeconds?: boolean
  }, ExtArgs["result"]["ticketSupportSession"]>

  export type TicketSupportSessionSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    guildId?: boolean
    userId?: boolean
    roleId?: boolean
    startedAt?: boolean
    endedAt?: boolean
    durationSeconds?: boolean
  }, ExtArgs["result"]["ticketSupportSession"]>

  export type TicketSupportSessionSelectScalar = {
    id?: boolean
    guildId?: boolean
    userId?: boolean
    roleId?: boolean
    startedAt?: boolean
    endedAt?: boolean
    durationSeconds?: boolean
  }


  export type $TicketSupportSessionPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "TicketSupportSession"
    objects: {}
    scalars: $Extensions.GetPayloadResult<{
      id: string
      guildId: string
      userId: string
      roleId: string
      startedAt: Date
      endedAt: Date | null
      durationSeconds: number | null
    }, ExtArgs["result"]["ticketSupportSession"]>
    composites: {}
  }

  type TicketSupportSessionGetPayload<S extends boolean | null | undefined | TicketSupportSessionDefaultArgs> = $Result.GetResult<Prisma.$TicketSupportSessionPayload, S>

  type TicketSupportSessionCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = 
    Omit<TicketSupportSessionFindManyArgs, 'select' | 'include' | 'distinct'> & {
      select?: TicketSupportSessionCountAggregateInputType | true
    }

  export interface TicketSupportSessionDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['TicketSupportSession'], meta: { name: 'TicketSupportSession' } }
    /**
     * Find zero or one TicketSupportSession that matches the filter.
     * @param {TicketSupportSessionFindUniqueArgs} args - Arguments to find a TicketSupportSession
     * @example
     * // Get one TicketSupportSession
     * const ticketSupportSession = await prisma.ticketSupportSession.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends TicketSupportSessionFindUniqueArgs>(args: SelectSubset<T, TicketSupportSessionFindUniqueArgs<ExtArgs>>): Prisma__TicketSupportSessionClient<$Result.GetResult<Prisma.$TicketSupportSessionPayload<ExtArgs>, T, "findUnique"> | null, null, ExtArgs>

    /**
     * Find one TicketSupportSession that matches the filter or throw an error with `error.code='P2025'` 
     * if no matches were found.
     * @param {TicketSupportSessionFindUniqueOrThrowArgs} args - Arguments to find a TicketSupportSession
     * @example
     * // Get one TicketSupportSession
     * const ticketSupportSession = await prisma.ticketSupportSession.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends TicketSupportSessionFindUniqueOrThrowArgs>(args: SelectSubset<T, TicketSupportSessionFindUniqueOrThrowArgs<ExtArgs>>): Prisma__TicketSupportSessionClient<$Result.GetResult<Prisma.$TicketSupportSessionPayload<ExtArgs>, T, "findUniqueOrThrow">, never, ExtArgs>

    /**
     * Find the first TicketSupportSession that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketSupportSessionFindFirstArgs} args - Arguments to find a TicketSupportSession
     * @example
     * // Get one TicketSupportSession
     * const ticketSupportSession = await prisma.ticketSupportSession.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends TicketSupportSessionFindFirstArgs>(args?: SelectSubset<T, TicketSupportSessionFindFirstArgs<ExtArgs>>): Prisma__TicketSupportSessionClient<$Result.GetResult<Prisma.$TicketSupportSessionPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first TicketSupportSession that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketSupportSessionFindFirstOrThrowArgs} args - Arguments to find a TicketSupportSession
     * @example
     * // Get one TicketSupportSession
     * const ticketSupportSession = await prisma.ticketSupportSession.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends TicketSupportSessionFindFirstOrThrowArgs>(args?: SelectSubset<T, TicketSupportSessionFindFirstOrThrowArgs<ExtArgs>>): Prisma__TicketSupportSessionClient<$Result.GetResult<Prisma.$TicketSupportSessionPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more TicketSupportSessions that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketSupportSessionFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all TicketSupportSessions
     * const ticketSupportSessions = await prisma.ticketSupportSession.findMany()
     * 
     * // Get first 10 TicketSupportSessions
     * const ticketSupportSessions = await prisma.ticketSupportSession.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const ticketSupportSessionWithIdOnly = await prisma.ticketSupportSession.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends TicketSupportSessionFindManyArgs>(args?: SelectSubset<T, TicketSupportSessionFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$TicketSupportSessionPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a TicketSupportSession.
     * @param {TicketSupportSessionCreateArgs} args - Arguments to create a TicketSupportSession.
     * @example
     * // Create one TicketSupportSession
     * const TicketSupportSession = await prisma.ticketSupportSession.create({
     *   data: {
     *     // ... data to create a TicketSupportSession
     *   }
     * })
     * 
     */
    create<T extends TicketSupportSessionCreateArgs>(args: SelectSubset<T, TicketSupportSessionCreateArgs<ExtArgs>>): Prisma__TicketSupportSessionClient<$Result.GetResult<Prisma.$TicketSupportSessionPayload<ExtArgs>, T, "create">, never, ExtArgs>

    /**
     * Create many TicketSupportSessions.
     * @param {TicketSupportSessionCreateManyArgs} args - Arguments to create many TicketSupportSessions.
     * @example
     * // Create many TicketSupportSessions
     * const ticketSupportSession = await prisma.ticketSupportSession.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends TicketSupportSessionCreateManyArgs>(args?: SelectSubset<T, TicketSupportSessionCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many TicketSupportSessions and returns the data saved in the database.
     * @param {TicketSupportSessionCreateManyAndReturnArgs} args - Arguments to create many TicketSupportSessions.
     * @example
     * // Create many TicketSupportSessions
     * const ticketSupportSession = await prisma.ticketSupportSession.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many TicketSupportSessions and only return the `id`
     * const ticketSupportSessionWithIdOnly = await prisma.ticketSupportSession.createManyAndReturn({ 
     *   select: { id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends TicketSupportSessionCreateManyAndReturnArgs>(args?: SelectSubset<T, TicketSupportSessionCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$TicketSupportSessionPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a TicketSupportSession.
     * @param {TicketSupportSessionDeleteArgs} args - Arguments to delete one TicketSupportSession.
     * @example
     * // Delete one TicketSupportSession
     * const TicketSupportSession = await prisma.ticketSupportSession.delete({
     *   where: {
     *     // ... filter to delete one TicketSupportSession
     *   }
     * })
     * 
     */
    delete<T extends TicketSupportSessionDeleteArgs>(args: SelectSubset<T, TicketSupportSessionDeleteArgs<ExtArgs>>): Prisma__TicketSupportSessionClient<$Result.GetResult<Prisma.$TicketSupportSessionPayload<ExtArgs>, T, "delete">, never, ExtArgs>

    /**
     * Update one TicketSupportSession.
     * @param {TicketSupportSessionUpdateArgs} args - Arguments to update one TicketSupportSession.
     * @example
     * // Update one TicketSupportSession
     * const ticketSupportSession = await prisma.ticketSupportSession.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends TicketSupportSessionUpdateArgs>(args: SelectSubset<T, TicketSupportSessionUpdateArgs<ExtArgs>>): Prisma__TicketSupportSessionClient<$Result.GetResult<Prisma.$TicketSupportSessionPayload<ExtArgs>, T, "update">, never, ExtArgs>

    /**
     * Delete zero or more TicketSupportSessions.
     * @param {TicketSupportSessionDeleteManyArgs} args - Arguments to filter TicketSupportSessions to delete.
     * @example
     * // Delete a few TicketSupportSessions
     * const { count } = await prisma.ticketSupportSession.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends TicketSupportSessionDeleteManyArgs>(args?: SelectSubset<T, TicketSupportSessionDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more TicketSupportSessions.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketSupportSessionUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many TicketSupportSessions
     * const ticketSupportSession = await prisma.ticketSupportSession.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends TicketSupportSessionUpdateManyArgs>(args: SelectSubset<T, TicketSupportSessionUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one TicketSupportSession.
     * @param {TicketSupportSessionUpsertArgs} args - Arguments to update or create a TicketSupportSession.
     * @example
     * // Update or create a TicketSupportSession
     * const ticketSupportSession = await prisma.ticketSupportSession.upsert({
     *   create: {
     *     // ... data to create a TicketSupportSession
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the TicketSupportSession we want to update
     *   }
     * })
     */
    upsert<T extends TicketSupportSessionUpsertArgs>(args: SelectSubset<T, TicketSupportSessionUpsertArgs<ExtArgs>>): Prisma__TicketSupportSessionClient<$Result.GetResult<Prisma.$TicketSupportSessionPayload<ExtArgs>, T, "upsert">, never, ExtArgs>


    /**
     * Count the number of TicketSupportSessions.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketSupportSessionCountArgs} args - Arguments to filter TicketSupportSessions to count.
     * @example
     * // Count the number of TicketSupportSessions
     * const count = await prisma.ticketSupportSession.count({
     *   where: {
     *     // ... the filter for the TicketSupportSessions we want to count
     *   }
     * })
    **/
    count<T extends TicketSupportSessionCountArgs>(
      args?: Subset<T, TicketSupportSessionCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], TicketSupportSessionCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a TicketSupportSession.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketSupportSessionAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends TicketSupportSessionAggregateArgs>(args: Subset<T, TicketSupportSessionAggregateArgs>): Prisma.PrismaPromise<GetTicketSupportSessionAggregateType<T>>

    /**
     * Group by TicketSupportSession.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {TicketSupportSessionGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends TicketSupportSessionGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: TicketSupportSessionGroupByArgs['orderBy'] }
        : { orderBy?: TicketSupportSessionGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, TicketSupportSessionGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetTicketSupportSessionGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the TicketSupportSession model
   */
  readonly fields: TicketSupportSessionFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for TicketSupportSession.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__TicketSupportSessionClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the TicketSupportSession model
   */ 
  interface TicketSupportSessionFieldRefs {
    readonly id: FieldRef<"TicketSupportSession", 'String'>
    readonly guildId: FieldRef<"TicketSupportSession", 'String'>
    readonly userId: FieldRef<"TicketSupportSession", 'String'>
    readonly roleId: FieldRef<"TicketSupportSession", 'String'>
    readonly startedAt: FieldRef<"TicketSupportSession", 'DateTime'>
    readonly endedAt: FieldRef<"TicketSupportSession", 'DateTime'>
    readonly durationSeconds: FieldRef<"TicketSupportSession", 'Int'>
  }
    

  // Custom InputTypes
  /**
   * TicketSupportSession findUnique
   */
  export type TicketSupportSessionFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketSupportSession
     */
    select?: TicketSupportSessionSelect<ExtArgs> | null
    /**
     * Filter, which TicketSupportSession to fetch.
     */
    where: TicketSupportSessionWhereUniqueInput
  }

  /**
   * TicketSupportSession findUniqueOrThrow
   */
  export type TicketSupportSessionFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketSupportSession
     */
    select?: TicketSupportSessionSelect<ExtArgs> | null
    /**
     * Filter, which TicketSupportSession to fetch.
     */
    where: TicketSupportSessionWhereUniqueInput
  }

  /**
   * TicketSupportSession findFirst
   */
  export type TicketSupportSessionFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketSupportSession
     */
    select?: TicketSupportSessionSelect<ExtArgs> | null
    /**
     * Filter, which TicketSupportSession to fetch.
     */
    where?: TicketSupportSessionWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of TicketSupportSessions to fetch.
     */
    orderBy?: TicketSupportSessionOrderByWithRelationInput | TicketSupportSessionOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for TicketSupportSessions.
     */
    cursor?: TicketSupportSessionWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` TicketSupportSessions from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` TicketSupportSessions.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of TicketSupportSessions.
     */
    distinct?: TicketSupportSessionScalarFieldEnum | TicketSupportSessionScalarFieldEnum[]
  }

  /**
   * TicketSupportSession findFirstOrThrow
   */
  export type TicketSupportSessionFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketSupportSession
     */
    select?: TicketSupportSessionSelect<ExtArgs> | null
    /**
     * Filter, which TicketSupportSession to fetch.
     */
    where?: TicketSupportSessionWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of TicketSupportSessions to fetch.
     */
    orderBy?: TicketSupportSessionOrderByWithRelationInput | TicketSupportSessionOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for TicketSupportSessions.
     */
    cursor?: TicketSupportSessionWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` TicketSupportSessions from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` TicketSupportSessions.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of TicketSupportSessions.
     */
    distinct?: TicketSupportSessionScalarFieldEnum | TicketSupportSessionScalarFieldEnum[]
  }

  /**
   * TicketSupportSession findMany
   */
  export type TicketSupportSessionFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketSupportSession
     */
    select?: TicketSupportSessionSelect<ExtArgs> | null
    /**
     * Filter, which TicketSupportSessions to fetch.
     */
    where?: TicketSupportSessionWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of TicketSupportSessions to fetch.
     */
    orderBy?: TicketSupportSessionOrderByWithRelationInput | TicketSupportSessionOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing TicketSupportSessions.
     */
    cursor?: TicketSupportSessionWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` TicketSupportSessions from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` TicketSupportSessions.
     */
    skip?: number
    distinct?: TicketSupportSessionScalarFieldEnum | TicketSupportSessionScalarFieldEnum[]
  }

  /**
   * TicketSupportSession create
   */
  export type TicketSupportSessionCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketSupportSession
     */
    select?: TicketSupportSessionSelect<ExtArgs> | null
    /**
     * The data needed to create a TicketSupportSession.
     */
    data: XOR<TicketSupportSessionCreateInput, TicketSupportSessionUncheckedCreateInput>
  }

  /**
   * TicketSupportSession createMany
   */
  export type TicketSupportSessionCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many TicketSupportSessions.
     */
    data: TicketSupportSessionCreateManyInput | TicketSupportSessionCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * TicketSupportSession createManyAndReturn
   */
  export type TicketSupportSessionCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketSupportSession
     */
    select?: TicketSupportSessionSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many TicketSupportSessions.
     */
    data: TicketSupportSessionCreateManyInput | TicketSupportSessionCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * TicketSupportSession update
   */
  export type TicketSupportSessionUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketSupportSession
     */
    select?: TicketSupportSessionSelect<ExtArgs> | null
    /**
     * The data needed to update a TicketSupportSession.
     */
    data: XOR<TicketSupportSessionUpdateInput, TicketSupportSessionUncheckedUpdateInput>
    /**
     * Choose, which TicketSupportSession to update.
     */
    where: TicketSupportSessionWhereUniqueInput
  }

  /**
   * TicketSupportSession updateMany
   */
  export type TicketSupportSessionUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update TicketSupportSessions.
     */
    data: XOR<TicketSupportSessionUpdateManyMutationInput, TicketSupportSessionUncheckedUpdateManyInput>
    /**
     * Filter which TicketSupportSessions to update
     */
    where?: TicketSupportSessionWhereInput
  }

  /**
   * TicketSupportSession upsert
   */
  export type TicketSupportSessionUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketSupportSession
     */
    select?: TicketSupportSessionSelect<ExtArgs> | null
    /**
     * The filter to search for the TicketSupportSession to update in case it exists.
     */
    where: TicketSupportSessionWhereUniqueInput
    /**
     * In case the TicketSupportSession found by the `where` argument doesn't exist, create a new TicketSupportSession with this data.
     */
    create: XOR<TicketSupportSessionCreateInput, TicketSupportSessionUncheckedCreateInput>
    /**
     * In case the TicketSupportSession was found with the provided `where` argument, update it with this data.
     */
    update: XOR<TicketSupportSessionUpdateInput, TicketSupportSessionUncheckedUpdateInput>
  }

  /**
   * TicketSupportSession delete
   */
  export type TicketSupportSessionDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketSupportSession
     */
    select?: TicketSupportSessionSelect<ExtArgs> | null
    /**
     * Filter which TicketSupportSession to delete.
     */
    where: TicketSupportSessionWhereUniqueInput
  }

  /**
   * TicketSupportSession deleteMany
   */
  export type TicketSupportSessionDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which TicketSupportSessions to delete
     */
    where?: TicketSupportSessionWhereInput
  }

  /**
   * TicketSupportSession without action
   */
  export type TicketSupportSessionDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the TicketSupportSession
     */
    select?: TicketSupportSessionSelect<ExtArgs> | null
  }


  /**
   * Model Birthday
   */

  export type AggregateBirthday = {
    _count: BirthdayCountAggregateOutputType | null
    _min: BirthdayMinAggregateOutputType | null
    _max: BirthdayMaxAggregateOutputType | null
  }

  export type BirthdayMinAggregateOutputType = {
    id: string | null
    userId: string | null
    guildId: string | null
    birthDate: string | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type BirthdayMaxAggregateOutputType = {
    id: string | null
    userId: string | null
    guildId: string | null
    birthDate: string | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type BirthdayCountAggregateOutputType = {
    id: number
    userId: number
    guildId: number
    birthDate: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type BirthdayMinAggregateInputType = {
    id?: true
    userId?: true
    guildId?: true
    birthDate?: true
    createdAt?: true
    updatedAt?: true
  }

  export type BirthdayMaxAggregateInputType = {
    id?: true
    userId?: true
    guildId?: true
    birthDate?: true
    createdAt?: true
    updatedAt?: true
  }

  export type BirthdayCountAggregateInputType = {
    id?: true
    userId?: true
    guildId?: true
    birthDate?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type BirthdayAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Birthday to aggregate.
     */
    where?: BirthdayWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Birthdays to fetch.
     */
    orderBy?: BirthdayOrderByWithRelationInput | BirthdayOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: BirthdayWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Birthdays from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Birthdays.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned Birthdays
    **/
    _count?: true | BirthdayCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: BirthdayMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: BirthdayMaxAggregateInputType
  }

  export type GetBirthdayAggregateType<T extends BirthdayAggregateArgs> = {
        [P in keyof T & keyof AggregateBirthday]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateBirthday[P]>
      : GetScalarType<T[P], AggregateBirthday[P]>
  }




  export type BirthdayGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: BirthdayWhereInput
    orderBy?: BirthdayOrderByWithAggregationInput | BirthdayOrderByWithAggregationInput[]
    by: BirthdayScalarFieldEnum[] | BirthdayScalarFieldEnum
    having?: BirthdayScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: BirthdayCountAggregateInputType | true
    _min?: BirthdayMinAggregateInputType
    _max?: BirthdayMaxAggregateInputType
  }

  export type BirthdayGroupByOutputType = {
    id: string
    userId: string
    guildId: string
    birthDate: string
    createdAt: Date
    updatedAt: Date
    _count: BirthdayCountAggregateOutputType | null
    _min: BirthdayMinAggregateOutputType | null
    _max: BirthdayMaxAggregateOutputType | null
  }

  type GetBirthdayGroupByPayload<T extends BirthdayGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<BirthdayGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof BirthdayGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], BirthdayGroupByOutputType[P]>
            : GetScalarType<T[P], BirthdayGroupByOutputType[P]>
        }
      >
    >


  export type BirthdaySelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    userId?: boolean
    guildId?: boolean
    birthDate?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["birthday"]>

  export type BirthdaySelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    userId?: boolean
    guildId?: boolean
    birthDate?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["birthday"]>

  export type BirthdaySelectScalar = {
    id?: boolean
    userId?: boolean
    guildId?: boolean
    birthDate?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }


  export type $BirthdayPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "Birthday"
    objects: {}
    scalars: $Extensions.GetPayloadResult<{
      id: string
      userId: string
      guildId: string
      birthDate: string
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["birthday"]>
    composites: {}
  }

  type BirthdayGetPayload<S extends boolean | null | undefined | BirthdayDefaultArgs> = $Result.GetResult<Prisma.$BirthdayPayload, S>

  type BirthdayCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = 
    Omit<BirthdayFindManyArgs, 'select' | 'include' | 'distinct'> & {
      select?: BirthdayCountAggregateInputType | true
    }

  export interface BirthdayDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['Birthday'], meta: { name: 'Birthday' } }
    /**
     * Find zero or one Birthday that matches the filter.
     * @param {BirthdayFindUniqueArgs} args - Arguments to find a Birthday
     * @example
     * // Get one Birthday
     * const birthday = await prisma.birthday.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends BirthdayFindUniqueArgs>(args: SelectSubset<T, BirthdayFindUniqueArgs<ExtArgs>>): Prisma__BirthdayClient<$Result.GetResult<Prisma.$BirthdayPayload<ExtArgs>, T, "findUnique"> | null, null, ExtArgs>

    /**
     * Find one Birthday that matches the filter or throw an error with `error.code='P2025'` 
     * if no matches were found.
     * @param {BirthdayFindUniqueOrThrowArgs} args - Arguments to find a Birthday
     * @example
     * // Get one Birthday
     * const birthday = await prisma.birthday.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends BirthdayFindUniqueOrThrowArgs>(args: SelectSubset<T, BirthdayFindUniqueOrThrowArgs<ExtArgs>>): Prisma__BirthdayClient<$Result.GetResult<Prisma.$BirthdayPayload<ExtArgs>, T, "findUniqueOrThrow">, never, ExtArgs>

    /**
     * Find the first Birthday that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BirthdayFindFirstArgs} args - Arguments to find a Birthday
     * @example
     * // Get one Birthday
     * const birthday = await prisma.birthday.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends BirthdayFindFirstArgs>(args?: SelectSubset<T, BirthdayFindFirstArgs<ExtArgs>>): Prisma__BirthdayClient<$Result.GetResult<Prisma.$BirthdayPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first Birthday that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BirthdayFindFirstOrThrowArgs} args - Arguments to find a Birthday
     * @example
     * // Get one Birthday
     * const birthday = await prisma.birthday.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends BirthdayFindFirstOrThrowArgs>(args?: SelectSubset<T, BirthdayFindFirstOrThrowArgs<ExtArgs>>): Prisma__BirthdayClient<$Result.GetResult<Prisma.$BirthdayPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more Birthdays that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BirthdayFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Birthdays
     * const birthdays = await prisma.birthday.findMany()
     * 
     * // Get first 10 Birthdays
     * const birthdays = await prisma.birthday.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const birthdayWithIdOnly = await prisma.birthday.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends BirthdayFindManyArgs>(args?: SelectSubset<T, BirthdayFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$BirthdayPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a Birthday.
     * @param {BirthdayCreateArgs} args - Arguments to create a Birthday.
     * @example
     * // Create one Birthday
     * const Birthday = await prisma.birthday.create({
     *   data: {
     *     // ... data to create a Birthday
     *   }
     * })
     * 
     */
    create<T extends BirthdayCreateArgs>(args: SelectSubset<T, BirthdayCreateArgs<ExtArgs>>): Prisma__BirthdayClient<$Result.GetResult<Prisma.$BirthdayPayload<ExtArgs>, T, "create">, never, ExtArgs>

    /**
     * Create many Birthdays.
     * @param {BirthdayCreateManyArgs} args - Arguments to create many Birthdays.
     * @example
     * // Create many Birthdays
     * const birthday = await prisma.birthday.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends BirthdayCreateManyArgs>(args?: SelectSubset<T, BirthdayCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many Birthdays and returns the data saved in the database.
     * @param {BirthdayCreateManyAndReturnArgs} args - Arguments to create many Birthdays.
     * @example
     * // Create many Birthdays
     * const birthday = await prisma.birthday.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many Birthdays and only return the `id`
     * const birthdayWithIdOnly = await prisma.birthday.createManyAndReturn({ 
     *   select: { id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends BirthdayCreateManyAndReturnArgs>(args?: SelectSubset<T, BirthdayCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$BirthdayPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a Birthday.
     * @param {BirthdayDeleteArgs} args - Arguments to delete one Birthday.
     * @example
     * // Delete one Birthday
     * const Birthday = await prisma.birthday.delete({
     *   where: {
     *     // ... filter to delete one Birthday
     *   }
     * })
     * 
     */
    delete<T extends BirthdayDeleteArgs>(args: SelectSubset<T, BirthdayDeleteArgs<ExtArgs>>): Prisma__BirthdayClient<$Result.GetResult<Prisma.$BirthdayPayload<ExtArgs>, T, "delete">, never, ExtArgs>

    /**
     * Update one Birthday.
     * @param {BirthdayUpdateArgs} args - Arguments to update one Birthday.
     * @example
     * // Update one Birthday
     * const birthday = await prisma.birthday.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends BirthdayUpdateArgs>(args: SelectSubset<T, BirthdayUpdateArgs<ExtArgs>>): Prisma__BirthdayClient<$Result.GetResult<Prisma.$BirthdayPayload<ExtArgs>, T, "update">, never, ExtArgs>

    /**
     * Delete zero or more Birthdays.
     * @param {BirthdayDeleteManyArgs} args - Arguments to filter Birthdays to delete.
     * @example
     * // Delete a few Birthdays
     * const { count } = await prisma.birthday.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends BirthdayDeleteManyArgs>(args?: SelectSubset<T, BirthdayDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Birthdays.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BirthdayUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Birthdays
     * const birthday = await prisma.birthday.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends BirthdayUpdateManyArgs>(args: SelectSubset<T, BirthdayUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one Birthday.
     * @param {BirthdayUpsertArgs} args - Arguments to update or create a Birthday.
     * @example
     * // Update or create a Birthday
     * const birthday = await prisma.birthday.upsert({
     *   create: {
     *     // ... data to create a Birthday
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the Birthday we want to update
     *   }
     * })
     */
    upsert<T extends BirthdayUpsertArgs>(args: SelectSubset<T, BirthdayUpsertArgs<ExtArgs>>): Prisma__BirthdayClient<$Result.GetResult<Prisma.$BirthdayPayload<ExtArgs>, T, "upsert">, never, ExtArgs>


    /**
     * Count the number of Birthdays.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BirthdayCountArgs} args - Arguments to filter Birthdays to count.
     * @example
     * // Count the number of Birthdays
     * const count = await prisma.birthday.count({
     *   where: {
     *     // ... the filter for the Birthdays we want to count
     *   }
     * })
    **/
    count<T extends BirthdayCountArgs>(
      args?: Subset<T, BirthdayCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], BirthdayCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a Birthday.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BirthdayAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends BirthdayAggregateArgs>(args: Subset<T, BirthdayAggregateArgs>): Prisma.PrismaPromise<GetBirthdayAggregateType<T>>

    /**
     * Group by Birthday.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {BirthdayGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends BirthdayGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: BirthdayGroupByArgs['orderBy'] }
        : { orderBy?: BirthdayGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, BirthdayGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetBirthdayGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the Birthday model
   */
  readonly fields: BirthdayFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for Birthday.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__BirthdayClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the Birthday model
   */ 
  interface BirthdayFieldRefs {
    readonly id: FieldRef<"Birthday", 'String'>
    readonly userId: FieldRef<"Birthday", 'String'>
    readonly guildId: FieldRef<"Birthday", 'String'>
    readonly birthDate: FieldRef<"Birthday", 'String'>
    readonly createdAt: FieldRef<"Birthday", 'DateTime'>
    readonly updatedAt: FieldRef<"Birthday", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * Birthday findUnique
   */
  export type BirthdayFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Birthday
     */
    select?: BirthdaySelect<ExtArgs> | null
    /**
     * Filter, which Birthday to fetch.
     */
    where: BirthdayWhereUniqueInput
  }

  /**
   * Birthday findUniqueOrThrow
   */
  export type BirthdayFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Birthday
     */
    select?: BirthdaySelect<ExtArgs> | null
    /**
     * Filter, which Birthday to fetch.
     */
    where: BirthdayWhereUniqueInput
  }

  /**
   * Birthday findFirst
   */
  export type BirthdayFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Birthday
     */
    select?: BirthdaySelect<ExtArgs> | null
    /**
     * Filter, which Birthday to fetch.
     */
    where?: BirthdayWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Birthdays to fetch.
     */
    orderBy?: BirthdayOrderByWithRelationInput | BirthdayOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Birthdays.
     */
    cursor?: BirthdayWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Birthdays from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Birthdays.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Birthdays.
     */
    distinct?: BirthdayScalarFieldEnum | BirthdayScalarFieldEnum[]
  }

  /**
   * Birthday findFirstOrThrow
   */
  export type BirthdayFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Birthday
     */
    select?: BirthdaySelect<ExtArgs> | null
    /**
     * Filter, which Birthday to fetch.
     */
    where?: BirthdayWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Birthdays to fetch.
     */
    orderBy?: BirthdayOrderByWithRelationInput | BirthdayOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Birthdays.
     */
    cursor?: BirthdayWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Birthdays from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Birthdays.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Birthdays.
     */
    distinct?: BirthdayScalarFieldEnum | BirthdayScalarFieldEnum[]
  }

  /**
   * Birthday findMany
   */
  export type BirthdayFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Birthday
     */
    select?: BirthdaySelect<ExtArgs> | null
    /**
     * Filter, which Birthdays to fetch.
     */
    where?: BirthdayWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Birthdays to fetch.
     */
    orderBy?: BirthdayOrderByWithRelationInput | BirthdayOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing Birthdays.
     */
    cursor?: BirthdayWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Birthdays from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Birthdays.
     */
    skip?: number
    distinct?: BirthdayScalarFieldEnum | BirthdayScalarFieldEnum[]
  }

  /**
   * Birthday create
   */
  export type BirthdayCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Birthday
     */
    select?: BirthdaySelect<ExtArgs> | null
    /**
     * The data needed to create a Birthday.
     */
    data: XOR<BirthdayCreateInput, BirthdayUncheckedCreateInput>
  }

  /**
   * Birthday createMany
   */
  export type BirthdayCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many Birthdays.
     */
    data: BirthdayCreateManyInput | BirthdayCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * Birthday createManyAndReturn
   */
  export type BirthdayCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Birthday
     */
    select?: BirthdaySelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many Birthdays.
     */
    data: BirthdayCreateManyInput | BirthdayCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * Birthday update
   */
  export type BirthdayUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Birthday
     */
    select?: BirthdaySelect<ExtArgs> | null
    /**
     * The data needed to update a Birthday.
     */
    data: XOR<BirthdayUpdateInput, BirthdayUncheckedUpdateInput>
    /**
     * Choose, which Birthday to update.
     */
    where: BirthdayWhereUniqueInput
  }

  /**
   * Birthday updateMany
   */
  export type BirthdayUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update Birthdays.
     */
    data: XOR<BirthdayUpdateManyMutationInput, BirthdayUncheckedUpdateManyInput>
    /**
     * Filter which Birthdays to update
     */
    where?: BirthdayWhereInput
  }

  /**
   * Birthday upsert
   */
  export type BirthdayUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Birthday
     */
    select?: BirthdaySelect<ExtArgs> | null
    /**
     * The filter to search for the Birthday to update in case it exists.
     */
    where: BirthdayWhereUniqueInput
    /**
     * In case the Birthday found by the `where` argument doesn't exist, create a new Birthday with this data.
     */
    create: XOR<BirthdayCreateInput, BirthdayUncheckedCreateInput>
    /**
     * In case the Birthday was found with the provided `where` argument, update it with this data.
     */
    update: XOR<BirthdayUpdateInput, BirthdayUncheckedUpdateInput>
  }

  /**
   * Birthday delete
   */
  export type BirthdayDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Birthday
     */
    select?: BirthdaySelect<ExtArgs> | null
    /**
     * Filter which Birthday to delete.
     */
    where: BirthdayWhereUniqueInput
  }

  /**
   * Birthday deleteMany
   */
  export type BirthdayDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Birthdays to delete
     */
    where?: BirthdayWhereInput
  }

  /**
   * Birthday without action
   */
  export type BirthdayDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Birthday
     */
    select?: BirthdaySelect<ExtArgs> | null
  }


  /**
   * Model ReactionRoleSet
   */

  export type AggregateReactionRoleSet = {
    _count: ReactionRoleSetCountAggregateOutputType | null
    _min: ReactionRoleSetMinAggregateOutputType | null
    _max: ReactionRoleSetMaxAggregateOutputType | null
  }

  export type ReactionRoleSetMinAggregateOutputType = {
    id: string | null
    guildId: string | null
    channelId: string | null
    messageId: string | null
    title: string | null
    description: string | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type ReactionRoleSetMaxAggregateOutputType = {
    id: string | null
    guildId: string | null
    channelId: string | null
    messageId: string | null
    title: string | null
    description: string | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type ReactionRoleSetCountAggregateOutputType = {
    id: number
    guildId: number
    channelId: number
    messageId: number
    title: number
    description: number
    entries: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type ReactionRoleSetMinAggregateInputType = {
    id?: true
    guildId?: true
    channelId?: true
    messageId?: true
    title?: true
    description?: true
    createdAt?: true
    updatedAt?: true
  }

  export type ReactionRoleSetMaxAggregateInputType = {
    id?: true
    guildId?: true
    channelId?: true
    messageId?: true
    title?: true
    description?: true
    createdAt?: true
    updatedAt?: true
  }

  export type ReactionRoleSetCountAggregateInputType = {
    id?: true
    guildId?: true
    channelId?: true
    messageId?: true
    title?: true
    description?: true
    entries?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type ReactionRoleSetAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which ReactionRoleSet to aggregate.
     */
    where?: ReactionRoleSetWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of ReactionRoleSets to fetch.
     */
    orderBy?: ReactionRoleSetOrderByWithRelationInput | ReactionRoleSetOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: ReactionRoleSetWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` ReactionRoleSets from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` ReactionRoleSets.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned ReactionRoleSets
    **/
    _count?: true | ReactionRoleSetCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: ReactionRoleSetMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: ReactionRoleSetMaxAggregateInputType
  }

  export type GetReactionRoleSetAggregateType<T extends ReactionRoleSetAggregateArgs> = {
        [P in keyof T & keyof AggregateReactionRoleSet]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateReactionRoleSet[P]>
      : GetScalarType<T[P], AggregateReactionRoleSet[P]>
  }




  export type ReactionRoleSetGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: ReactionRoleSetWhereInput
    orderBy?: ReactionRoleSetOrderByWithAggregationInput | ReactionRoleSetOrderByWithAggregationInput[]
    by: ReactionRoleSetScalarFieldEnum[] | ReactionRoleSetScalarFieldEnum
    having?: ReactionRoleSetScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: ReactionRoleSetCountAggregateInputType | true
    _min?: ReactionRoleSetMinAggregateInputType
    _max?: ReactionRoleSetMaxAggregateInputType
  }

  export type ReactionRoleSetGroupByOutputType = {
    id: string
    guildId: string
    channelId: string
    messageId: string | null
    title: string | null
    description: string | null
    entries: JsonValue
    createdAt: Date
    updatedAt: Date
    _count: ReactionRoleSetCountAggregateOutputType | null
    _min: ReactionRoleSetMinAggregateOutputType | null
    _max: ReactionRoleSetMaxAggregateOutputType | null
  }

  type GetReactionRoleSetGroupByPayload<T extends ReactionRoleSetGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<ReactionRoleSetGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof ReactionRoleSetGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], ReactionRoleSetGroupByOutputType[P]>
            : GetScalarType<T[P], ReactionRoleSetGroupByOutputType[P]>
        }
      >
    >


  export type ReactionRoleSetSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    guildId?: boolean
    channelId?: boolean
    messageId?: boolean
    title?: boolean
    description?: boolean
    entries?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["reactionRoleSet"]>

  export type ReactionRoleSetSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    guildId?: boolean
    channelId?: boolean
    messageId?: boolean
    title?: boolean
    description?: boolean
    entries?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["reactionRoleSet"]>

  export type ReactionRoleSetSelectScalar = {
    id?: boolean
    guildId?: boolean
    channelId?: boolean
    messageId?: boolean
    title?: boolean
    description?: boolean
    entries?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }


  export type $ReactionRoleSetPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "ReactionRoleSet"
    objects: {}
    scalars: $Extensions.GetPayloadResult<{
      id: string
      guildId: string
      channelId: string
      messageId: string | null
      title: string | null
      description: string | null
      entries: Prisma.JsonValue
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["reactionRoleSet"]>
    composites: {}
  }

  type ReactionRoleSetGetPayload<S extends boolean | null | undefined | ReactionRoleSetDefaultArgs> = $Result.GetResult<Prisma.$ReactionRoleSetPayload, S>

  type ReactionRoleSetCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = 
    Omit<ReactionRoleSetFindManyArgs, 'select' | 'include' | 'distinct'> & {
      select?: ReactionRoleSetCountAggregateInputType | true
    }

  export interface ReactionRoleSetDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['ReactionRoleSet'], meta: { name: 'ReactionRoleSet' } }
    /**
     * Find zero or one ReactionRoleSet that matches the filter.
     * @param {ReactionRoleSetFindUniqueArgs} args - Arguments to find a ReactionRoleSet
     * @example
     * // Get one ReactionRoleSet
     * const reactionRoleSet = await prisma.reactionRoleSet.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends ReactionRoleSetFindUniqueArgs>(args: SelectSubset<T, ReactionRoleSetFindUniqueArgs<ExtArgs>>): Prisma__ReactionRoleSetClient<$Result.GetResult<Prisma.$ReactionRoleSetPayload<ExtArgs>, T, "findUnique"> | null, null, ExtArgs>

    /**
     * Find one ReactionRoleSet that matches the filter or throw an error with `error.code='P2025'` 
     * if no matches were found.
     * @param {ReactionRoleSetFindUniqueOrThrowArgs} args - Arguments to find a ReactionRoleSet
     * @example
     * // Get one ReactionRoleSet
     * const reactionRoleSet = await prisma.reactionRoleSet.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends ReactionRoleSetFindUniqueOrThrowArgs>(args: SelectSubset<T, ReactionRoleSetFindUniqueOrThrowArgs<ExtArgs>>): Prisma__ReactionRoleSetClient<$Result.GetResult<Prisma.$ReactionRoleSetPayload<ExtArgs>, T, "findUniqueOrThrow">, never, ExtArgs>

    /**
     * Find the first ReactionRoleSet that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ReactionRoleSetFindFirstArgs} args - Arguments to find a ReactionRoleSet
     * @example
     * // Get one ReactionRoleSet
     * const reactionRoleSet = await prisma.reactionRoleSet.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends ReactionRoleSetFindFirstArgs>(args?: SelectSubset<T, ReactionRoleSetFindFirstArgs<ExtArgs>>): Prisma__ReactionRoleSetClient<$Result.GetResult<Prisma.$ReactionRoleSetPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first ReactionRoleSet that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ReactionRoleSetFindFirstOrThrowArgs} args - Arguments to find a ReactionRoleSet
     * @example
     * // Get one ReactionRoleSet
     * const reactionRoleSet = await prisma.reactionRoleSet.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends ReactionRoleSetFindFirstOrThrowArgs>(args?: SelectSubset<T, ReactionRoleSetFindFirstOrThrowArgs<ExtArgs>>): Prisma__ReactionRoleSetClient<$Result.GetResult<Prisma.$ReactionRoleSetPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more ReactionRoleSets that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ReactionRoleSetFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all ReactionRoleSets
     * const reactionRoleSets = await prisma.reactionRoleSet.findMany()
     * 
     * // Get first 10 ReactionRoleSets
     * const reactionRoleSets = await prisma.reactionRoleSet.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const reactionRoleSetWithIdOnly = await prisma.reactionRoleSet.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends ReactionRoleSetFindManyArgs>(args?: SelectSubset<T, ReactionRoleSetFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$ReactionRoleSetPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a ReactionRoleSet.
     * @param {ReactionRoleSetCreateArgs} args - Arguments to create a ReactionRoleSet.
     * @example
     * // Create one ReactionRoleSet
     * const ReactionRoleSet = await prisma.reactionRoleSet.create({
     *   data: {
     *     // ... data to create a ReactionRoleSet
     *   }
     * })
     * 
     */
    create<T extends ReactionRoleSetCreateArgs>(args: SelectSubset<T, ReactionRoleSetCreateArgs<ExtArgs>>): Prisma__ReactionRoleSetClient<$Result.GetResult<Prisma.$ReactionRoleSetPayload<ExtArgs>, T, "create">, never, ExtArgs>

    /**
     * Create many ReactionRoleSets.
     * @param {ReactionRoleSetCreateManyArgs} args - Arguments to create many ReactionRoleSets.
     * @example
     * // Create many ReactionRoleSets
     * const reactionRoleSet = await prisma.reactionRoleSet.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends ReactionRoleSetCreateManyArgs>(args?: SelectSubset<T, ReactionRoleSetCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many ReactionRoleSets and returns the data saved in the database.
     * @param {ReactionRoleSetCreateManyAndReturnArgs} args - Arguments to create many ReactionRoleSets.
     * @example
     * // Create many ReactionRoleSets
     * const reactionRoleSet = await prisma.reactionRoleSet.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many ReactionRoleSets and only return the `id`
     * const reactionRoleSetWithIdOnly = await prisma.reactionRoleSet.createManyAndReturn({ 
     *   select: { id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends ReactionRoleSetCreateManyAndReturnArgs>(args?: SelectSubset<T, ReactionRoleSetCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$ReactionRoleSetPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a ReactionRoleSet.
     * @param {ReactionRoleSetDeleteArgs} args - Arguments to delete one ReactionRoleSet.
     * @example
     * // Delete one ReactionRoleSet
     * const ReactionRoleSet = await prisma.reactionRoleSet.delete({
     *   where: {
     *     // ... filter to delete one ReactionRoleSet
     *   }
     * })
     * 
     */
    delete<T extends ReactionRoleSetDeleteArgs>(args: SelectSubset<T, ReactionRoleSetDeleteArgs<ExtArgs>>): Prisma__ReactionRoleSetClient<$Result.GetResult<Prisma.$ReactionRoleSetPayload<ExtArgs>, T, "delete">, never, ExtArgs>

    /**
     * Update one ReactionRoleSet.
     * @param {ReactionRoleSetUpdateArgs} args - Arguments to update one ReactionRoleSet.
     * @example
     * // Update one ReactionRoleSet
     * const reactionRoleSet = await prisma.reactionRoleSet.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends ReactionRoleSetUpdateArgs>(args: SelectSubset<T, ReactionRoleSetUpdateArgs<ExtArgs>>): Prisma__ReactionRoleSetClient<$Result.GetResult<Prisma.$ReactionRoleSetPayload<ExtArgs>, T, "update">, never, ExtArgs>

    /**
     * Delete zero or more ReactionRoleSets.
     * @param {ReactionRoleSetDeleteManyArgs} args - Arguments to filter ReactionRoleSets to delete.
     * @example
     * // Delete a few ReactionRoleSets
     * const { count } = await prisma.reactionRoleSet.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends ReactionRoleSetDeleteManyArgs>(args?: SelectSubset<T, ReactionRoleSetDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more ReactionRoleSets.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ReactionRoleSetUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many ReactionRoleSets
     * const reactionRoleSet = await prisma.reactionRoleSet.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends ReactionRoleSetUpdateManyArgs>(args: SelectSubset<T, ReactionRoleSetUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one ReactionRoleSet.
     * @param {ReactionRoleSetUpsertArgs} args - Arguments to update or create a ReactionRoleSet.
     * @example
     * // Update or create a ReactionRoleSet
     * const reactionRoleSet = await prisma.reactionRoleSet.upsert({
     *   create: {
     *     // ... data to create a ReactionRoleSet
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the ReactionRoleSet we want to update
     *   }
     * })
     */
    upsert<T extends ReactionRoleSetUpsertArgs>(args: SelectSubset<T, ReactionRoleSetUpsertArgs<ExtArgs>>): Prisma__ReactionRoleSetClient<$Result.GetResult<Prisma.$ReactionRoleSetPayload<ExtArgs>, T, "upsert">, never, ExtArgs>


    /**
     * Count the number of ReactionRoleSets.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ReactionRoleSetCountArgs} args - Arguments to filter ReactionRoleSets to count.
     * @example
     * // Count the number of ReactionRoleSets
     * const count = await prisma.reactionRoleSet.count({
     *   where: {
     *     // ... the filter for the ReactionRoleSets we want to count
     *   }
     * })
    **/
    count<T extends ReactionRoleSetCountArgs>(
      args?: Subset<T, ReactionRoleSetCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], ReactionRoleSetCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a ReactionRoleSet.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ReactionRoleSetAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends ReactionRoleSetAggregateArgs>(args: Subset<T, ReactionRoleSetAggregateArgs>): Prisma.PrismaPromise<GetReactionRoleSetAggregateType<T>>

    /**
     * Group by ReactionRoleSet.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ReactionRoleSetGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends ReactionRoleSetGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: ReactionRoleSetGroupByArgs['orderBy'] }
        : { orderBy?: ReactionRoleSetGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, ReactionRoleSetGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetReactionRoleSetGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the ReactionRoleSet model
   */
  readonly fields: ReactionRoleSetFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for ReactionRoleSet.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__ReactionRoleSetClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the ReactionRoleSet model
   */ 
  interface ReactionRoleSetFieldRefs {
    readonly id: FieldRef<"ReactionRoleSet", 'String'>
    readonly guildId: FieldRef<"ReactionRoleSet", 'String'>
    readonly channelId: FieldRef<"ReactionRoleSet", 'String'>
    readonly messageId: FieldRef<"ReactionRoleSet", 'String'>
    readonly title: FieldRef<"ReactionRoleSet", 'String'>
    readonly description: FieldRef<"ReactionRoleSet", 'String'>
    readonly entries: FieldRef<"ReactionRoleSet", 'Json'>
    readonly createdAt: FieldRef<"ReactionRoleSet", 'DateTime'>
    readonly updatedAt: FieldRef<"ReactionRoleSet", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * ReactionRoleSet findUnique
   */
  export type ReactionRoleSetFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ReactionRoleSet
     */
    select?: ReactionRoleSetSelect<ExtArgs> | null
    /**
     * Filter, which ReactionRoleSet to fetch.
     */
    where: ReactionRoleSetWhereUniqueInput
  }

  /**
   * ReactionRoleSet findUniqueOrThrow
   */
  export type ReactionRoleSetFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ReactionRoleSet
     */
    select?: ReactionRoleSetSelect<ExtArgs> | null
    /**
     * Filter, which ReactionRoleSet to fetch.
     */
    where: ReactionRoleSetWhereUniqueInput
  }

  /**
   * ReactionRoleSet findFirst
   */
  export type ReactionRoleSetFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ReactionRoleSet
     */
    select?: ReactionRoleSetSelect<ExtArgs> | null
    /**
     * Filter, which ReactionRoleSet to fetch.
     */
    where?: ReactionRoleSetWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of ReactionRoleSets to fetch.
     */
    orderBy?: ReactionRoleSetOrderByWithRelationInput | ReactionRoleSetOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for ReactionRoleSets.
     */
    cursor?: ReactionRoleSetWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` ReactionRoleSets from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` ReactionRoleSets.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of ReactionRoleSets.
     */
    distinct?: ReactionRoleSetScalarFieldEnum | ReactionRoleSetScalarFieldEnum[]
  }

  /**
   * ReactionRoleSet findFirstOrThrow
   */
  export type ReactionRoleSetFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ReactionRoleSet
     */
    select?: ReactionRoleSetSelect<ExtArgs> | null
    /**
     * Filter, which ReactionRoleSet to fetch.
     */
    where?: ReactionRoleSetWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of ReactionRoleSets to fetch.
     */
    orderBy?: ReactionRoleSetOrderByWithRelationInput | ReactionRoleSetOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for ReactionRoleSets.
     */
    cursor?: ReactionRoleSetWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` ReactionRoleSets from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` ReactionRoleSets.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of ReactionRoleSets.
     */
    distinct?: ReactionRoleSetScalarFieldEnum | ReactionRoleSetScalarFieldEnum[]
  }

  /**
   * ReactionRoleSet findMany
   */
  export type ReactionRoleSetFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ReactionRoleSet
     */
    select?: ReactionRoleSetSelect<ExtArgs> | null
    /**
     * Filter, which ReactionRoleSets to fetch.
     */
    where?: ReactionRoleSetWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of ReactionRoleSets to fetch.
     */
    orderBy?: ReactionRoleSetOrderByWithRelationInput | ReactionRoleSetOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing ReactionRoleSets.
     */
    cursor?: ReactionRoleSetWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` ReactionRoleSets from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` ReactionRoleSets.
     */
    skip?: number
    distinct?: ReactionRoleSetScalarFieldEnum | ReactionRoleSetScalarFieldEnum[]
  }

  /**
   * ReactionRoleSet create
   */
  export type ReactionRoleSetCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ReactionRoleSet
     */
    select?: ReactionRoleSetSelect<ExtArgs> | null
    /**
     * The data needed to create a ReactionRoleSet.
     */
    data: XOR<ReactionRoleSetCreateInput, ReactionRoleSetUncheckedCreateInput>
  }

  /**
   * ReactionRoleSet createMany
   */
  export type ReactionRoleSetCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many ReactionRoleSets.
     */
    data: ReactionRoleSetCreateManyInput | ReactionRoleSetCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * ReactionRoleSet createManyAndReturn
   */
  export type ReactionRoleSetCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ReactionRoleSet
     */
    select?: ReactionRoleSetSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many ReactionRoleSets.
     */
    data: ReactionRoleSetCreateManyInput | ReactionRoleSetCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * ReactionRoleSet update
   */
  export type ReactionRoleSetUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ReactionRoleSet
     */
    select?: ReactionRoleSetSelect<ExtArgs> | null
    /**
     * The data needed to update a ReactionRoleSet.
     */
    data: XOR<ReactionRoleSetUpdateInput, ReactionRoleSetUncheckedUpdateInput>
    /**
     * Choose, which ReactionRoleSet to update.
     */
    where: ReactionRoleSetWhereUniqueInput
  }

  /**
   * ReactionRoleSet updateMany
   */
  export type ReactionRoleSetUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update ReactionRoleSets.
     */
    data: XOR<ReactionRoleSetUpdateManyMutationInput, ReactionRoleSetUncheckedUpdateManyInput>
    /**
     * Filter which ReactionRoleSets to update
     */
    where?: ReactionRoleSetWhereInput
  }

  /**
   * ReactionRoleSet upsert
   */
  export type ReactionRoleSetUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ReactionRoleSet
     */
    select?: ReactionRoleSetSelect<ExtArgs> | null
    /**
     * The filter to search for the ReactionRoleSet to update in case it exists.
     */
    where: ReactionRoleSetWhereUniqueInput
    /**
     * In case the ReactionRoleSet found by the `where` argument doesn't exist, create a new ReactionRoleSet with this data.
     */
    create: XOR<ReactionRoleSetCreateInput, ReactionRoleSetUncheckedCreateInput>
    /**
     * In case the ReactionRoleSet was found with the provided `where` argument, update it with this data.
     */
    update: XOR<ReactionRoleSetUpdateInput, ReactionRoleSetUncheckedUpdateInput>
  }

  /**
   * ReactionRoleSet delete
   */
  export type ReactionRoleSetDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ReactionRoleSet
     */
    select?: ReactionRoleSetSelect<ExtArgs> | null
    /**
     * Filter which ReactionRoleSet to delete.
     */
    where: ReactionRoleSetWhereUniqueInput
  }

  /**
   * ReactionRoleSet deleteMany
   */
  export type ReactionRoleSetDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which ReactionRoleSets to delete
     */
    where?: ReactionRoleSetWhereInput
  }

  /**
   * ReactionRoleSet without action
   */
  export type ReactionRoleSetDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the ReactionRoleSet
     */
    select?: ReactionRoleSetSelect<ExtArgs> | null
  }


  /**
   * Model Event
   */

  export type AggregateEvent = {
    _count: EventCountAggregateOutputType | null
    _avg: EventAvgAggregateOutputType | null
    _sum: EventSumAggregateOutputType | null
    _min: EventMinAggregateOutputType | null
    _max: EventMaxAggregateOutputType | null
  }

  export type EventAvgAggregateOutputType = {
    reminderOffsetMinutes: number | null
  }

  export type EventSumAggregateOutputType = {
    reminderOffsetMinutes: number | null
  }

  export type EventMinAggregateOutputType = {
    id: string | null
    guildId: string | null
    title: string | null
    description: string | null
    channelId: string | null
    startTime: Date | null
    repeatType: string | null
    reminderOffsetMinutes: number | null
    roleId: string | null
    isActive: boolean | null
    lastReminderAt: Date | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type EventMaxAggregateOutputType = {
    id: string | null
    guildId: string | null
    title: string | null
    description: string | null
    channelId: string | null
    startTime: Date | null
    repeatType: string | null
    reminderOffsetMinutes: number | null
    roleId: string | null
    isActive: boolean | null
    lastReminderAt: Date | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type EventCountAggregateOutputType = {
    id: number
    guildId: number
    title: number
    description: number
    channelId: number
    startTime: number
    repeatType: number
    repeatConfig: number
    reminderOffsetMinutes: number
    roleId: number
    isActive: number
    lastReminderAt: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type EventAvgAggregateInputType = {
    reminderOffsetMinutes?: true
  }

  export type EventSumAggregateInputType = {
    reminderOffsetMinutes?: true
  }

  export type EventMinAggregateInputType = {
    id?: true
    guildId?: true
    title?: true
    description?: true
    channelId?: true
    startTime?: true
    repeatType?: true
    reminderOffsetMinutes?: true
    roleId?: true
    isActive?: true
    lastReminderAt?: true
    createdAt?: true
    updatedAt?: true
  }

  export type EventMaxAggregateInputType = {
    id?: true
    guildId?: true
    title?: true
    description?: true
    channelId?: true
    startTime?: true
    repeatType?: true
    reminderOffsetMinutes?: true
    roleId?: true
    isActive?: true
    lastReminderAt?: true
    createdAt?: true
    updatedAt?: true
  }

  export type EventCountAggregateInputType = {
    id?: true
    guildId?: true
    title?: true
    description?: true
    channelId?: true
    startTime?: true
    repeatType?: true
    repeatConfig?: true
    reminderOffsetMinutes?: true
    roleId?: true
    isActive?: true
    lastReminderAt?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type EventAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Event to aggregate.
     */
    where?: EventWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Events to fetch.
     */
    orderBy?: EventOrderByWithRelationInput | EventOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: EventWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Events from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Events.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned Events
    **/
    _count?: true | EventCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: EventAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: EventSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: EventMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: EventMaxAggregateInputType
  }

  export type GetEventAggregateType<T extends EventAggregateArgs> = {
        [P in keyof T & keyof AggregateEvent]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateEvent[P]>
      : GetScalarType<T[P], AggregateEvent[P]>
  }




  export type EventGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: EventWhereInput
    orderBy?: EventOrderByWithAggregationInput | EventOrderByWithAggregationInput[]
    by: EventScalarFieldEnum[] | EventScalarFieldEnum
    having?: EventScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: EventCountAggregateInputType | true
    _avg?: EventAvgAggregateInputType
    _sum?: EventSumAggregateInputType
    _min?: EventMinAggregateInputType
    _max?: EventMaxAggregateInputType
  }

  export type EventGroupByOutputType = {
    id: string
    guildId: string
    title: string
    description: string | null
    channelId: string
    startTime: Date
    repeatType: string
    repeatConfig: JsonValue | null
    reminderOffsetMinutes: number
    roleId: string | null
    isActive: boolean
    lastReminderAt: Date | null
    createdAt: Date
    updatedAt: Date
    _count: EventCountAggregateOutputType | null
    _avg: EventAvgAggregateOutputType | null
    _sum: EventSumAggregateOutputType | null
    _min: EventMinAggregateOutputType | null
    _max: EventMaxAggregateOutputType | null
  }

  type GetEventGroupByPayload<T extends EventGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<EventGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof EventGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], EventGroupByOutputType[P]>
            : GetScalarType<T[P], EventGroupByOutputType[P]>
        }
      >
    >


  export type EventSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    guildId?: boolean
    title?: boolean
    description?: boolean
    channelId?: boolean
    startTime?: boolean
    repeatType?: boolean
    repeatConfig?: boolean
    reminderOffsetMinutes?: boolean
    roleId?: boolean
    isActive?: boolean
    lastReminderAt?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    signups?: boolean | Event$signupsArgs<ExtArgs>
    _count?: boolean | EventCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["event"]>

  export type EventSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    guildId?: boolean
    title?: boolean
    description?: boolean
    channelId?: boolean
    startTime?: boolean
    repeatType?: boolean
    repeatConfig?: boolean
    reminderOffsetMinutes?: boolean
    roleId?: boolean
    isActive?: boolean
    lastReminderAt?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["event"]>

  export type EventSelectScalar = {
    id?: boolean
    guildId?: boolean
    title?: boolean
    description?: boolean
    channelId?: boolean
    startTime?: boolean
    repeatType?: boolean
    repeatConfig?: boolean
    reminderOffsetMinutes?: boolean
    roleId?: boolean
    isActive?: boolean
    lastReminderAt?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }

  export type EventInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    signups?: boolean | Event$signupsArgs<ExtArgs>
    _count?: boolean | EventCountOutputTypeDefaultArgs<ExtArgs>
  }
  export type EventIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {}

  export type $EventPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "Event"
    objects: {
      signups: Prisma.$EventSignupPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      id: string
      guildId: string
      title: string
      description: string | null
      channelId: string
      startTime: Date
      repeatType: string
      repeatConfig: Prisma.JsonValue | null
      reminderOffsetMinutes: number
      roleId: string | null
      isActive: boolean
      lastReminderAt: Date | null
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["event"]>
    composites: {}
  }

  type EventGetPayload<S extends boolean | null | undefined | EventDefaultArgs> = $Result.GetResult<Prisma.$EventPayload, S>

  type EventCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = 
    Omit<EventFindManyArgs, 'select' | 'include' | 'distinct'> & {
      select?: EventCountAggregateInputType | true
    }

  export interface EventDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['Event'], meta: { name: 'Event' } }
    /**
     * Find zero or one Event that matches the filter.
     * @param {EventFindUniqueArgs} args - Arguments to find a Event
     * @example
     * // Get one Event
     * const event = await prisma.event.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends EventFindUniqueArgs>(args: SelectSubset<T, EventFindUniqueArgs<ExtArgs>>): Prisma__EventClient<$Result.GetResult<Prisma.$EventPayload<ExtArgs>, T, "findUnique"> | null, null, ExtArgs>

    /**
     * Find one Event that matches the filter or throw an error with `error.code='P2025'` 
     * if no matches were found.
     * @param {EventFindUniqueOrThrowArgs} args - Arguments to find a Event
     * @example
     * // Get one Event
     * const event = await prisma.event.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends EventFindUniqueOrThrowArgs>(args: SelectSubset<T, EventFindUniqueOrThrowArgs<ExtArgs>>): Prisma__EventClient<$Result.GetResult<Prisma.$EventPayload<ExtArgs>, T, "findUniqueOrThrow">, never, ExtArgs>

    /**
     * Find the first Event that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EventFindFirstArgs} args - Arguments to find a Event
     * @example
     * // Get one Event
     * const event = await prisma.event.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends EventFindFirstArgs>(args?: SelectSubset<T, EventFindFirstArgs<ExtArgs>>): Prisma__EventClient<$Result.GetResult<Prisma.$EventPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first Event that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EventFindFirstOrThrowArgs} args - Arguments to find a Event
     * @example
     * // Get one Event
     * const event = await prisma.event.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends EventFindFirstOrThrowArgs>(args?: SelectSubset<T, EventFindFirstOrThrowArgs<ExtArgs>>): Prisma__EventClient<$Result.GetResult<Prisma.$EventPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more Events that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EventFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Events
     * const events = await prisma.event.findMany()
     * 
     * // Get first 10 Events
     * const events = await prisma.event.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const eventWithIdOnly = await prisma.event.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends EventFindManyArgs>(args?: SelectSubset<T, EventFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$EventPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a Event.
     * @param {EventCreateArgs} args - Arguments to create a Event.
     * @example
     * // Create one Event
     * const Event = await prisma.event.create({
     *   data: {
     *     // ... data to create a Event
     *   }
     * })
     * 
     */
    create<T extends EventCreateArgs>(args: SelectSubset<T, EventCreateArgs<ExtArgs>>): Prisma__EventClient<$Result.GetResult<Prisma.$EventPayload<ExtArgs>, T, "create">, never, ExtArgs>

    /**
     * Create many Events.
     * @param {EventCreateManyArgs} args - Arguments to create many Events.
     * @example
     * // Create many Events
     * const event = await prisma.event.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends EventCreateManyArgs>(args?: SelectSubset<T, EventCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many Events and returns the data saved in the database.
     * @param {EventCreateManyAndReturnArgs} args - Arguments to create many Events.
     * @example
     * // Create many Events
     * const event = await prisma.event.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many Events and only return the `id`
     * const eventWithIdOnly = await prisma.event.createManyAndReturn({ 
     *   select: { id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends EventCreateManyAndReturnArgs>(args?: SelectSubset<T, EventCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$EventPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a Event.
     * @param {EventDeleteArgs} args - Arguments to delete one Event.
     * @example
     * // Delete one Event
     * const Event = await prisma.event.delete({
     *   where: {
     *     // ... filter to delete one Event
     *   }
     * })
     * 
     */
    delete<T extends EventDeleteArgs>(args: SelectSubset<T, EventDeleteArgs<ExtArgs>>): Prisma__EventClient<$Result.GetResult<Prisma.$EventPayload<ExtArgs>, T, "delete">, never, ExtArgs>

    /**
     * Update one Event.
     * @param {EventUpdateArgs} args - Arguments to update one Event.
     * @example
     * // Update one Event
     * const event = await prisma.event.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends EventUpdateArgs>(args: SelectSubset<T, EventUpdateArgs<ExtArgs>>): Prisma__EventClient<$Result.GetResult<Prisma.$EventPayload<ExtArgs>, T, "update">, never, ExtArgs>

    /**
     * Delete zero or more Events.
     * @param {EventDeleteManyArgs} args - Arguments to filter Events to delete.
     * @example
     * // Delete a few Events
     * const { count } = await prisma.event.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends EventDeleteManyArgs>(args?: SelectSubset<T, EventDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Events.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EventUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Events
     * const event = await prisma.event.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends EventUpdateManyArgs>(args: SelectSubset<T, EventUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one Event.
     * @param {EventUpsertArgs} args - Arguments to update or create a Event.
     * @example
     * // Update or create a Event
     * const event = await prisma.event.upsert({
     *   create: {
     *     // ... data to create a Event
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the Event we want to update
     *   }
     * })
     */
    upsert<T extends EventUpsertArgs>(args: SelectSubset<T, EventUpsertArgs<ExtArgs>>): Prisma__EventClient<$Result.GetResult<Prisma.$EventPayload<ExtArgs>, T, "upsert">, never, ExtArgs>


    /**
     * Count the number of Events.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EventCountArgs} args - Arguments to filter Events to count.
     * @example
     * // Count the number of Events
     * const count = await prisma.event.count({
     *   where: {
     *     // ... the filter for the Events we want to count
     *   }
     * })
    **/
    count<T extends EventCountArgs>(
      args?: Subset<T, EventCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], EventCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a Event.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EventAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends EventAggregateArgs>(args: Subset<T, EventAggregateArgs>): Prisma.PrismaPromise<GetEventAggregateType<T>>

    /**
     * Group by Event.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EventGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends EventGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: EventGroupByArgs['orderBy'] }
        : { orderBy?: EventGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, EventGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetEventGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the Event model
   */
  readonly fields: EventFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for Event.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__EventClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    signups<T extends Event$signupsArgs<ExtArgs> = {}>(args?: Subset<T, Event$signupsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$EventSignupPayload<ExtArgs>, T, "findMany"> | Null>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the Event model
   */ 
  interface EventFieldRefs {
    readonly id: FieldRef<"Event", 'String'>
    readonly guildId: FieldRef<"Event", 'String'>
    readonly title: FieldRef<"Event", 'String'>
    readonly description: FieldRef<"Event", 'String'>
    readonly channelId: FieldRef<"Event", 'String'>
    readonly startTime: FieldRef<"Event", 'DateTime'>
    readonly repeatType: FieldRef<"Event", 'String'>
    readonly repeatConfig: FieldRef<"Event", 'Json'>
    readonly reminderOffsetMinutes: FieldRef<"Event", 'Int'>
    readonly roleId: FieldRef<"Event", 'String'>
    readonly isActive: FieldRef<"Event", 'Boolean'>
    readonly lastReminderAt: FieldRef<"Event", 'DateTime'>
    readonly createdAt: FieldRef<"Event", 'DateTime'>
    readonly updatedAt: FieldRef<"Event", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * Event findUnique
   */
  export type EventFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Event
     */
    select?: EventSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventInclude<ExtArgs> | null
    /**
     * Filter, which Event to fetch.
     */
    where: EventWhereUniqueInput
  }

  /**
   * Event findUniqueOrThrow
   */
  export type EventFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Event
     */
    select?: EventSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventInclude<ExtArgs> | null
    /**
     * Filter, which Event to fetch.
     */
    where: EventWhereUniqueInput
  }

  /**
   * Event findFirst
   */
  export type EventFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Event
     */
    select?: EventSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventInclude<ExtArgs> | null
    /**
     * Filter, which Event to fetch.
     */
    where?: EventWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Events to fetch.
     */
    orderBy?: EventOrderByWithRelationInput | EventOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Events.
     */
    cursor?: EventWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Events from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Events.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Events.
     */
    distinct?: EventScalarFieldEnum | EventScalarFieldEnum[]
  }

  /**
   * Event findFirstOrThrow
   */
  export type EventFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Event
     */
    select?: EventSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventInclude<ExtArgs> | null
    /**
     * Filter, which Event to fetch.
     */
    where?: EventWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Events to fetch.
     */
    orderBy?: EventOrderByWithRelationInput | EventOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Events.
     */
    cursor?: EventWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Events from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Events.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Events.
     */
    distinct?: EventScalarFieldEnum | EventScalarFieldEnum[]
  }

  /**
   * Event findMany
   */
  export type EventFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Event
     */
    select?: EventSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventInclude<ExtArgs> | null
    /**
     * Filter, which Events to fetch.
     */
    where?: EventWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Events to fetch.
     */
    orderBy?: EventOrderByWithRelationInput | EventOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing Events.
     */
    cursor?: EventWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Events from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` Events.
     */
    skip?: number
    distinct?: EventScalarFieldEnum | EventScalarFieldEnum[]
  }

  /**
   * Event create
   */
  export type EventCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Event
     */
    select?: EventSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventInclude<ExtArgs> | null
    /**
     * The data needed to create a Event.
     */
    data: XOR<EventCreateInput, EventUncheckedCreateInput>
  }

  /**
   * Event createMany
   */
  export type EventCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many Events.
     */
    data: EventCreateManyInput | EventCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * Event createManyAndReturn
   */
  export type EventCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Event
     */
    select?: EventSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many Events.
     */
    data: EventCreateManyInput | EventCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * Event update
   */
  export type EventUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Event
     */
    select?: EventSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventInclude<ExtArgs> | null
    /**
     * The data needed to update a Event.
     */
    data: XOR<EventUpdateInput, EventUncheckedUpdateInput>
    /**
     * Choose, which Event to update.
     */
    where: EventWhereUniqueInput
  }

  /**
   * Event updateMany
   */
  export type EventUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update Events.
     */
    data: XOR<EventUpdateManyMutationInput, EventUncheckedUpdateManyInput>
    /**
     * Filter which Events to update
     */
    where?: EventWhereInput
  }

  /**
   * Event upsert
   */
  export type EventUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Event
     */
    select?: EventSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventInclude<ExtArgs> | null
    /**
     * The filter to search for the Event to update in case it exists.
     */
    where: EventWhereUniqueInput
    /**
     * In case the Event found by the `where` argument doesn't exist, create a new Event with this data.
     */
    create: XOR<EventCreateInput, EventUncheckedCreateInput>
    /**
     * In case the Event was found with the provided `where` argument, update it with this data.
     */
    update: XOR<EventUpdateInput, EventUncheckedUpdateInput>
  }

  /**
   * Event delete
   */
  export type EventDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Event
     */
    select?: EventSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventInclude<ExtArgs> | null
    /**
     * Filter which Event to delete.
     */
    where: EventWhereUniqueInput
  }

  /**
   * Event deleteMany
   */
  export type EventDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Events to delete
     */
    where?: EventWhereInput
  }

  /**
   * Event.signups
   */
  export type Event$signupsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EventSignup
     */
    select?: EventSignupSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventSignupInclude<ExtArgs> | null
    where?: EventSignupWhereInput
    orderBy?: EventSignupOrderByWithRelationInput | EventSignupOrderByWithRelationInput[]
    cursor?: EventSignupWhereUniqueInput
    take?: number
    skip?: number
    distinct?: EventSignupScalarFieldEnum | EventSignupScalarFieldEnum[]
  }

  /**
   * Event without action
   */
  export type EventDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Event
     */
    select?: EventSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventInclude<ExtArgs> | null
  }


  /**
   * Model EventSignup
   */

  export type AggregateEventSignup = {
    _count: EventSignupCountAggregateOutputType | null
    _min: EventSignupMinAggregateOutputType | null
    _max: EventSignupMaxAggregateOutputType | null
  }

  export type EventSignupMinAggregateOutputType = {
    id: string | null
    eventId: string | null
    guildId: string | null
    userId: string | null
    createdAt: Date | null
    canceledAt: Date | null
  }

  export type EventSignupMaxAggregateOutputType = {
    id: string | null
    eventId: string | null
    guildId: string | null
    userId: string | null
    createdAt: Date | null
    canceledAt: Date | null
  }

  export type EventSignupCountAggregateOutputType = {
    id: number
    eventId: number
    guildId: number
    userId: number
    createdAt: number
    canceledAt: number
    _all: number
  }


  export type EventSignupMinAggregateInputType = {
    id?: true
    eventId?: true
    guildId?: true
    userId?: true
    createdAt?: true
    canceledAt?: true
  }

  export type EventSignupMaxAggregateInputType = {
    id?: true
    eventId?: true
    guildId?: true
    userId?: true
    createdAt?: true
    canceledAt?: true
  }

  export type EventSignupCountAggregateInputType = {
    id?: true
    eventId?: true
    guildId?: true
    userId?: true
    createdAt?: true
    canceledAt?: true
    _all?: true
  }

  export type EventSignupAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which EventSignup to aggregate.
     */
    where?: EventSignupWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of EventSignups to fetch.
     */
    orderBy?: EventSignupOrderByWithRelationInput | EventSignupOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: EventSignupWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` EventSignups from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` EventSignups.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned EventSignups
    **/
    _count?: true | EventSignupCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: EventSignupMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: EventSignupMaxAggregateInputType
  }

  export type GetEventSignupAggregateType<T extends EventSignupAggregateArgs> = {
        [P in keyof T & keyof AggregateEventSignup]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateEventSignup[P]>
      : GetScalarType<T[P], AggregateEventSignup[P]>
  }




  export type EventSignupGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: EventSignupWhereInput
    orderBy?: EventSignupOrderByWithAggregationInput | EventSignupOrderByWithAggregationInput[]
    by: EventSignupScalarFieldEnum[] | EventSignupScalarFieldEnum
    having?: EventSignupScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: EventSignupCountAggregateInputType | true
    _min?: EventSignupMinAggregateInputType
    _max?: EventSignupMaxAggregateInputType
  }

  export type EventSignupGroupByOutputType = {
    id: string
    eventId: string
    guildId: string
    userId: string
    createdAt: Date
    canceledAt: Date | null
    _count: EventSignupCountAggregateOutputType | null
    _min: EventSignupMinAggregateOutputType | null
    _max: EventSignupMaxAggregateOutputType | null
  }

  type GetEventSignupGroupByPayload<T extends EventSignupGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<EventSignupGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof EventSignupGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], EventSignupGroupByOutputType[P]>
            : GetScalarType<T[P], EventSignupGroupByOutputType[P]>
        }
      >
    >


  export type EventSignupSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    eventId?: boolean
    guildId?: boolean
    userId?: boolean
    createdAt?: boolean
    canceledAt?: boolean
    event?: boolean | EventDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["eventSignup"]>

  export type EventSignupSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    eventId?: boolean
    guildId?: boolean
    userId?: boolean
    createdAt?: boolean
    canceledAt?: boolean
    event?: boolean | EventDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["eventSignup"]>

  export type EventSignupSelectScalar = {
    id?: boolean
    eventId?: boolean
    guildId?: boolean
    userId?: boolean
    createdAt?: boolean
    canceledAt?: boolean
  }

  export type EventSignupInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    event?: boolean | EventDefaultArgs<ExtArgs>
  }
  export type EventSignupIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    event?: boolean | EventDefaultArgs<ExtArgs>
  }

  export type $EventSignupPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "EventSignup"
    objects: {
      event: Prisma.$EventPayload<ExtArgs>
    }
    scalars: $Extensions.GetPayloadResult<{
      id: string
      eventId: string
      guildId: string
      userId: string
      createdAt: Date
      canceledAt: Date | null
    }, ExtArgs["result"]["eventSignup"]>
    composites: {}
  }

  type EventSignupGetPayload<S extends boolean | null | undefined | EventSignupDefaultArgs> = $Result.GetResult<Prisma.$EventSignupPayload, S>

  type EventSignupCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = 
    Omit<EventSignupFindManyArgs, 'select' | 'include' | 'distinct'> & {
      select?: EventSignupCountAggregateInputType | true
    }

  export interface EventSignupDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['EventSignup'], meta: { name: 'EventSignup' } }
    /**
     * Find zero or one EventSignup that matches the filter.
     * @param {EventSignupFindUniqueArgs} args - Arguments to find a EventSignup
     * @example
     * // Get one EventSignup
     * const eventSignup = await prisma.eventSignup.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends EventSignupFindUniqueArgs>(args: SelectSubset<T, EventSignupFindUniqueArgs<ExtArgs>>): Prisma__EventSignupClient<$Result.GetResult<Prisma.$EventSignupPayload<ExtArgs>, T, "findUnique"> | null, null, ExtArgs>

    /**
     * Find one EventSignup that matches the filter or throw an error with `error.code='P2025'` 
     * if no matches were found.
     * @param {EventSignupFindUniqueOrThrowArgs} args - Arguments to find a EventSignup
     * @example
     * // Get one EventSignup
     * const eventSignup = await prisma.eventSignup.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends EventSignupFindUniqueOrThrowArgs>(args: SelectSubset<T, EventSignupFindUniqueOrThrowArgs<ExtArgs>>): Prisma__EventSignupClient<$Result.GetResult<Prisma.$EventSignupPayload<ExtArgs>, T, "findUniqueOrThrow">, never, ExtArgs>

    /**
     * Find the first EventSignup that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EventSignupFindFirstArgs} args - Arguments to find a EventSignup
     * @example
     * // Get one EventSignup
     * const eventSignup = await prisma.eventSignup.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends EventSignupFindFirstArgs>(args?: SelectSubset<T, EventSignupFindFirstArgs<ExtArgs>>): Prisma__EventSignupClient<$Result.GetResult<Prisma.$EventSignupPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first EventSignup that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EventSignupFindFirstOrThrowArgs} args - Arguments to find a EventSignup
     * @example
     * // Get one EventSignup
     * const eventSignup = await prisma.eventSignup.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends EventSignupFindFirstOrThrowArgs>(args?: SelectSubset<T, EventSignupFindFirstOrThrowArgs<ExtArgs>>): Prisma__EventSignupClient<$Result.GetResult<Prisma.$EventSignupPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more EventSignups that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EventSignupFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all EventSignups
     * const eventSignups = await prisma.eventSignup.findMany()
     * 
     * // Get first 10 EventSignups
     * const eventSignups = await prisma.eventSignup.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const eventSignupWithIdOnly = await prisma.eventSignup.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends EventSignupFindManyArgs>(args?: SelectSubset<T, EventSignupFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$EventSignupPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a EventSignup.
     * @param {EventSignupCreateArgs} args - Arguments to create a EventSignup.
     * @example
     * // Create one EventSignup
     * const EventSignup = await prisma.eventSignup.create({
     *   data: {
     *     // ... data to create a EventSignup
     *   }
     * })
     * 
     */
    create<T extends EventSignupCreateArgs>(args: SelectSubset<T, EventSignupCreateArgs<ExtArgs>>): Prisma__EventSignupClient<$Result.GetResult<Prisma.$EventSignupPayload<ExtArgs>, T, "create">, never, ExtArgs>

    /**
     * Create many EventSignups.
     * @param {EventSignupCreateManyArgs} args - Arguments to create many EventSignups.
     * @example
     * // Create many EventSignups
     * const eventSignup = await prisma.eventSignup.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends EventSignupCreateManyArgs>(args?: SelectSubset<T, EventSignupCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many EventSignups and returns the data saved in the database.
     * @param {EventSignupCreateManyAndReturnArgs} args - Arguments to create many EventSignups.
     * @example
     * // Create many EventSignups
     * const eventSignup = await prisma.eventSignup.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many EventSignups and only return the `id`
     * const eventSignupWithIdOnly = await prisma.eventSignup.createManyAndReturn({ 
     *   select: { id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends EventSignupCreateManyAndReturnArgs>(args?: SelectSubset<T, EventSignupCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$EventSignupPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a EventSignup.
     * @param {EventSignupDeleteArgs} args - Arguments to delete one EventSignup.
     * @example
     * // Delete one EventSignup
     * const EventSignup = await prisma.eventSignup.delete({
     *   where: {
     *     // ... filter to delete one EventSignup
     *   }
     * })
     * 
     */
    delete<T extends EventSignupDeleteArgs>(args: SelectSubset<T, EventSignupDeleteArgs<ExtArgs>>): Prisma__EventSignupClient<$Result.GetResult<Prisma.$EventSignupPayload<ExtArgs>, T, "delete">, never, ExtArgs>

    /**
     * Update one EventSignup.
     * @param {EventSignupUpdateArgs} args - Arguments to update one EventSignup.
     * @example
     * // Update one EventSignup
     * const eventSignup = await prisma.eventSignup.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends EventSignupUpdateArgs>(args: SelectSubset<T, EventSignupUpdateArgs<ExtArgs>>): Prisma__EventSignupClient<$Result.GetResult<Prisma.$EventSignupPayload<ExtArgs>, T, "update">, never, ExtArgs>

    /**
     * Delete zero or more EventSignups.
     * @param {EventSignupDeleteManyArgs} args - Arguments to filter EventSignups to delete.
     * @example
     * // Delete a few EventSignups
     * const { count } = await prisma.eventSignup.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends EventSignupDeleteManyArgs>(args?: SelectSubset<T, EventSignupDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more EventSignups.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EventSignupUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many EventSignups
     * const eventSignup = await prisma.eventSignup.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends EventSignupUpdateManyArgs>(args: SelectSubset<T, EventSignupUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one EventSignup.
     * @param {EventSignupUpsertArgs} args - Arguments to update or create a EventSignup.
     * @example
     * // Update or create a EventSignup
     * const eventSignup = await prisma.eventSignup.upsert({
     *   create: {
     *     // ... data to create a EventSignup
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the EventSignup we want to update
     *   }
     * })
     */
    upsert<T extends EventSignupUpsertArgs>(args: SelectSubset<T, EventSignupUpsertArgs<ExtArgs>>): Prisma__EventSignupClient<$Result.GetResult<Prisma.$EventSignupPayload<ExtArgs>, T, "upsert">, never, ExtArgs>


    /**
     * Count the number of EventSignups.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EventSignupCountArgs} args - Arguments to filter EventSignups to count.
     * @example
     * // Count the number of EventSignups
     * const count = await prisma.eventSignup.count({
     *   where: {
     *     // ... the filter for the EventSignups we want to count
     *   }
     * })
    **/
    count<T extends EventSignupCountArgs>(
      args?: Subset<T, EventSignupCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], EventSignupCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a EventSignup.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EventSignupAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends EventSignupAggregateArgs>(args: Subset<T, EventSignupAggregateArgs>): Prisma.PrismaPromise<GetEventSignupAggregateType<T>>

    /**
     * Group by EventSignup.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {EventSignupGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends EventSignupGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: EventSignupGroupByArgs['orderBy'] }
        : { orderBy?: EventSignupGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, EventSignupGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetEventSignupGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the EventSignup model
   */
  readonly fields: EventSignupFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for EventSignup.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__EventSignupClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    event<T extends EventDefaultArgs<ExtArgs> = {}>(args?: Subset<T, EventDefaultArgs<ExtArgs>>): Prisma__EventClient<$Result.GetResult<Prisma.$EventPayload<ExtArgs>, T, "findUniqueOrThrow"> | Null, Null, ExtArgs>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the EventSignup model
   */ 
  interface EventSignupFieldRefs {
    readonly id: FieldRef<"EventSignup", 'String'>
    readonly eventId: FieldRef<"EventSignup", 'String'>
    readonly guildId: FieldRef<"EventSignup", 'String'>
    readonly userId: FieldRef<"EventSignup", 'String'>
    readonly createdAt: FieldRef<"EventSignup", 'DateTime'>
    readonly canceledAt: FieldRef<"EventSignup", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * EventSignup findUnique
   */
  export type EventSignupFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EventSignup
     */
    select?: EventSignupSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventSignupInclude<ExtArgs> | null
    /**
     * Filter, which EventSignup to fetch.
     */
    where: EventSignupWhereUniqueInput
  }

  /**
   * EventSignup findUniqueOrThrow
   */
  export type EventSignupFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EventSignup
     */
    select?: EventSignupSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventSignupInclude<ExtArgs> | null
    /**
     * Filter, which EventSignup to fetch.
     */
    where: EventSignupWhereUniqueInput
  }

  /**
   * EventSignup findFirst
   */
  export type EventSignupFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EventSignup
     */
    select?: EventSignupSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventSignupInclude<ExtArgs> | null
    /**
     * Filter, which EventSignup to fetch.
     */
    where?: EventSignupWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of EventSignups to fetch.
     */
    orderBy?: EventSignupOrderByWithRelationInput | EventSignupOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for EventSignups.
     */
    cursor?: EventSignupWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` EventSignups from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` EventSignups.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of EventSignups.
     */
    distinct?: EventSignupScalarFieldEnum | EventSignupScalarFieldEnum[]
  }

  /**
   * EventSignup findFirstOrThrow
   */
  export type EventSignupFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EventSignup
     */
    select?: EventSignupSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventSignupInclude<ExtArgs> | null
    /**
     * Filter, which EventSignup to fetch.
     */
    where?: EventSignupWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of EventSignups to fetch.
     */
    orderBy?: EventSignupOrderByWithRelationInput | EventSignupOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for EventSignups.
     */
    cursor?: EventSignupWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` EventSignups from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` EventSignups.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of EventSignups.
     */
    distinct?: EventSignupScalarFieldEnum | EventSignupScalarFieldEnum[]
  }

  /**
   * EventSignup findMany
   */
  export type EventSignupFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EventSignup
     */
    select?: EventSignupSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventSignupInclude<ExtArgs> | null
    /**
     * Filter, which EventSignups to fetch.
     */
    where?: EventSignupWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of EventSignups to fetch.
     */
    orderBy?: EventSignupOrderByWithRelationInput | EventSignupOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing EventSignups.
     */
    cursor?: EventSignupWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` EventSignups from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` EventSignups.
     */
    skip?: number
    distinct?: EventSignupScalarFieldEnum | EventSignupScalarFieldEnum[]
  }

  /**
   * EventSignup create
   */
  export type EventSignupCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EventSignup
     */
    select?: EventSignupSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventSignupInclude<ExtArgs> | null
    /**
     * The data needed to create a EventSignup.
     */
    data: XOR<EventSignupCreateInput, EventSignupUncheckedCreateInput>
  }

  /**
   * EventSignup createMany
   */
  export type EventSignupCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many EventSignups.
     */
    data: EventSignupCreateManyInput | EventSignupCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * EventSignup createManyAndReturn
   */
  export type EventSignupCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EventSignup
     */
    select?: EventSignupSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many EventSignups.
     */
    data: EventSignupCreateManyInput | EventSignupCreateManyInput[]
    skipDuplicates?: boolean
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventSignupIncludeCreateManyAndReturn<ExtArgs> | null
  }

  /**
   * EventSignup update
   */
  export type EventSignupUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EventSignup
     */
    select?: EventSignupSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventSignupInclude<ExtArgs> | null
    /**
     * The data needed to update a EventSignup.
     */
    data: XOR<EventSignupUpdateInput, EventSignupUncheckedUpdateInput>
    /**
     * Choose, which EventSignup to update.
     */
    where: EventSignupWhereUniqueInput
  }

  /**
   * EventSignup updateMany
   */
  export type EventSignupUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update EventSignups.
     */
    data: XOR<EventSignupUpdateManyMutationInput, EventSignupUncheckedUpdateManyInput>
    /**
     * Filter which EventSignups to update
     */
    where?: EventSignupWhereInput
  }

  /**
   * EventSignup upsert
   */
  export type EventSignupUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EventSignup
     */
    select?: EventSignupSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventSignupInclude<ExtArgs> | null
    /**
     * The filter to search for the EventSignup to update in case it exists.
     */
    where: EventSignupWhereUniqueInput
    /**
     * In case the EventSignup found by the `where` argument doesn't exist, create a new EventSignup with this data.
     */
    create: XOR<EventSignupCreateInput, EventSignupUncheckedCreateInput>
    /**
     * In case the EventSignup was found with the provided `where` argument, update it with this data.
     */
    update: XOR<EventSignupUpdateInput, EventSignupUncheckedUpdateInput>
  }

  /**
   * EventSignup delete
   */
  export type EventSignupDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EventSignup
     */
    select?: EventSignupSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventSignupInclude<ExtArgs> | null
    /**
     * Filter which EventSignup to delete.
     */
    where: EventSignupWhereUniqueInput
  }

  /**
   * EventSignup deleteMany
   */
  export type EventSignupDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which EventSignups to delete
     */
    where?: EventSignupWhereInput
  }

  /**
   * EventSignup without action
   */
  export type EventSignupDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the EventSignup
     */
    select?: EventSignupSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: EventSignupInclude<ExtArgs> | null
  }


  /**
   * Model RegisterForm
   */

  export type AggregateRegisterForm = {
    _count: RegisterFormCountAggregateOutputType | null
    _min: RegisterFormMinAggregateOutputType | null
    _max: RegisterFormMaxAggregateOutputType | null
  }

  export type RegisterFormMinAggregateOutputType = {
    id: string | null
    guildId: string | null
    name: string | null
    description: string | null
    reviewChannelId: string | null
    isActive: boolean | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type RegisterFormMaxAggregateOutputType = {
    id: string | null
    guildId: string | null
    name: string | null
    description: string | null
    reviewChannelId: string | null
    isActive: boolean | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type RegisterFormCountAggregateOutputType = {
    id: number
    guildId: number
    name: number
    description: number
    reviewChannelId: number
    notifyRoleIds: number
    isActive: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type RegisterFormMinAggregateInputType = {
    id?: true
    guildId?: true
    name?: true
    description?: true
    reviewChannelId?: true
    isActive?: true
    createdAt?: true
    updatedAt?: true
  }

  export type RegisterFormMaxAggregateInputType = {
    id?: true
    guildId?: true
    name?: true
    description?: true
    reviewChannelId?: true
    isActive?: true
    createdAt?: true
    updatedAt?: true
  }

  export type RegisterFormCountAggregateInputType = {
    id?: true
    guildId?: true
    name?: true
    description?: true
    reviewChannelId?: true
    notifyRoleIds?: true
    isActive?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type RegisterFormAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which RegisterForm to aggregate.
     */
    where?: RegisterFormWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterForms to fetch.
     */
    orderBy?: RegisterFormOrderByWithRelationInput | RegisterFormOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: RegisterFormWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterForms from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterForms.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned RegisterForms
    **/
    _count?: true | RegisterFormCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: RegisterFormMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: RegisterFormMaxAggregateInputType
  }

  export type GetRegisterFormAggregateType<T extends RegisterFormAggregateArgs> = {
        [P in keyof T & keyof AggregateRegisterForm]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateRegisterForm[P]>
      : GetScalarType<T[P], AggregateRegisterForm[P]>
  }




  export type RegisterFormGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: RegisterFormWhereInput
    orderBy?: RegisterFormOrderByWithAggregationInput | RegisterFormOrderByWithAggregationInput[]
    by: RegisterFormScalarFieldEnum[] | RegisterFormScalarFieldEnum
    having?: RegisterFormScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: RegisterFormCountAggregateInputType | true
    _min?: RegisterFormMinAggregateInputType
    _max?: RegisterFormMaxAggregateInputType
  }

  export type RegisterFormGroupByOutputType = {
    id: string
    guildId: string
    name: string
    description: string | null
    reviewChannelId: string | null
    notifyRoleIds: string[]
    isActive: boolean
    createdAt: Date
    updatedAt: Date
    _count: RegisterFormCountAggregateOutputType | null
    _min: RegisterFormMinAggregateOutputType | null
    _max: RegisterFormMaxAggregateOutputType | null
  }

  type GetRegisterFormGroupByPayload<T extends RegisterFormGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<RegisterFormGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof RegisterFormGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], RegisterFormGroupByOutputType[P]>
            : GetScalarType<T[P], RegisterFormGroupByOutputType[P]>
        }
      >
    >


  export type RegisterFormSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    guildId?: boolean
    name?: boolean
    description?: boolean
    reviewChannelId?: boolean
    notifyRoleIds?: boolean
    isActive?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    fields?: boolean | RegisterForm$fieldsArgs<ExtArgs>
    applications?: boolean | RegisterForm$applicationsArgs<ExtArgs>
    _count?: boolean | RegisterFormCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["registerForm"]>

  export type RegisterFormSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    guildId?: boolean
    name?: boolean
    description?: boolean
    reviewChannelId?: boolean
    notifyRoleIds?: boolean
    isActive?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }, ExtArgs["result"]["registerForm"]>

  export type RegisterFormSelectScalar = {
    id?: boolean
    guildId?: boolean
    name?: boolean
    description?: boolean
    reviewChannelId?: boolean
    notifyRoleIds?: boolean
    isActive?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }

  export type RegisterFormInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    fields?: boolean | RegisterForm$fieldsArgs<ExtArgs>
    applications?: boolean | RegisterForm$applicationsArgs<ExtArgs>
    _count?: boolean | RegisterFormCountOutputTypeDefaultArgs<ExtArgs>
  }
  export type RegisterFormIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {}

  export type $RegisterFormPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "RegisterForm"
    objects: {
      fields: Prisma.$RegisterFormFieldPayload<ExtArgs>[]
      applications: Prisma.$RegisterApplicationPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      id: string
      guildId: string
      name: string
      description: string | null
      reviewChannelId: string | null
      notifyRoleIds: string[]
      isActive: boolean
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["registerForm"]>
    composites: {}
  }

  type RegisterFormGetPayload<S extends boolean | null | undefined | RegisterFormDefaultArgs> = $Result.GetResult<Prisma.$RegisterFormPayload, S>

  type RegisterFormCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = 
    Omit<RegisterFormFindManyArgs, 'select' | 'include' | 'distinct'> & {
      select?: RegisterFormCountAggregateInputType | true
    }

  export interface RegisterFormDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['RegisterForm'], meta: { name: 'RegisterForm' } }
    /**
     * Find zero or one RegisterForm that matches the filter.
     * @param {RegisterFormFindUniqueArgs} args - Arguments to find a RegisterForm
     * @example
     * // Get one RegisterForm
     * const registerForm = await prisma.registerForm.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends RegisterFormFindUniqueArgs>(args: SelectSubset<T, RegisterFormFindUniqueArgs<ExtArgs>>): Prisma__RegisterFormClient<$Result.GetResult<Prisma.$RegisterFormPayload<ExtArgs>, T, "findUnique"> | null, null, ExtArgs>

    /**
     * Find one RegisterForm that matches the filter or throw an error with `error.code='P2025'` 
     * if no matches were found.
     * @param {RegisterFormFindUniqueOrThrowArgs} args - Arguments to find a RegisterForm
     * @example
     * // Get one RegisterForm
     * const registerForm = await prisma.registerForm.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends RegisterFormFindUniqueOrThrowArgs>(args: SelectSubset<T, RegisterFormFindUniqueOrThrowArgs<ExtArgs>>): Prisma__RegisterFormClient<$Result.GetResult<Prisma.$RegisterFormPayload<ExtArgs>, T, "findUniqueOrThrow">, never, ExtArgs>

    /**
     * Find the first RegisterForm that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterFormFindFirstArgs} args - Arguments to find a RegisterForm
     * @example
     * // Get one RegisterForm
     * const registerForm = await prisma.registerForm.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends RegisterFormFindFirstArgs>(args?: SelectSubset<T, RegisterFormFindFirstArgs<ExtArgs>>): Prisma__RegisterFormClient<$Result.GetResult<Prisma.$RegisterFormPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first RegisterForm that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterFormFindFirstOrThrowArgs} args - Arguments to find a RegisterForm
     * @example
     * // Get one RegisterForm
     * const registerForm = await prisma.registerForm.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends RegisterFormFindFirstOrThrowArgs>(args?: SelectSubset<T, RegisterFormFindFirstOrThrowArgs<ExtArgs>>): Prisma__RegisterFormClient<$Result.GetResult<Prisma.$RegisterFormPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more RegisterForms that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterFormFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all RegisterForms
     * const registerForms = await prisma.registerForm.findMany()
     * 
     * // Get first 10 RegisterForms
     * const registerForms = await prisma.registerForm.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const registerFormWithIdOnly = await prisma.registerForm.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends RegisterFormFindManyArgs>(args?: SelectSubset<T, RegisterFormFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$RegisterFormPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a RegisterForm.
     * @param {RegisterFormCreateArgs} args - Arguments to create a RegisterForm.
     * @example
     * // Create one RegisterForm
     * const RegisterForm = await prisma.registerForm.create({
     *   data: {
     *     // ... data to create a RegisterForm
     *   }
     * })
     * 
     */
    create<T extends RegisterFormCreateArgs>(args: SelectSubset<T, RegisterFormCreateArgs<ExtArgs>>): Prisma__RegisterFormClient<$Result.GetResult<Prisma.$RegisterFormPayload<ExtArgs>, T, "create">, never, ExtArgs>

    /**
     * Create many RegisterForms.
     * @param {RegisterFormCreateManyArgs} args - Arguments to create many RegisterForms.
     * @example
     * // Create many RegisterForms
     * const registerForm = await prisma.registerForm.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends RegisterFormCreateManyArgs>(args?: SelectSubset<T, RegisterFormCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many RegisterForms and returns the data saved in the database.
     * @param {RegisterFormCreateManyAndReturnArgs} args - Arguments to create many RegisterForms.
     * @example
     * // Create many RegisterForms
     * const registerForm = await prisma.registerForm.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many RegisterForms and only return the `id`
     * const registerFormWithIdOnly = await prisma.registerForm.createManyAndReturn({ 
     *   select: { id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends RegisterFormCreateManyAndReturnArgs>(args?: SelectSubset<T, RegisterFormCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$RegisterFormPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a RegisterForm.
     * @param {RegisterFormDeleteArgs} args - Arguments to delete one RegisterForm.
     * @example
     * // Delete one RegisterForm
     * const RegisterForm = await prisma.registerForm.delete({
     *   where: {
     *     // ... filter to delete one RegisterForm
     *   }
     * })
     * 
     */
    delete<T extends RegisterFormDeleteArgs>(args: SelectSubset<T, RegisterFormDeleteArgs<ExtArgs>>): Prisma__RegisterFormClient<$Result.GetResult<Prisma.$RegisterFormPayload<ExtArgs>, T, "delete">, never, ExtArgs>

    /**
     * Update one RegisterForm.
     * @param {RegisterFormUpdateArgs} args - Arguments to update one RegisterForm.
     * @example
     * // Update one RegisterForm
     * const registerForm = await prisma.registerForm.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends RegisterFormUpdateArgs>(args: SelectSubset<T, RegisterFormUpdateArgs<ExtArgs>>): Prisma__RegisterFormClient<$Result.GetResult<Prisma.$RegisterFormPayload<ExtArgs>, T, "update">, never, ExtArgs>

    /**
     * Delete zero or more RegisterForms.
     * @param {RegisterFormDeleteManyArgs} args - Arguments to filter RegisterForms to delete.
     * @example
     * // Delete a few RegisterForms
     * const { count } = await prisma.registerForm.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends RegisterFormDeleteManyArgs>(args?: SelectSubset<T, RegisterFormDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more RegisterForms.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterFormUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many RegisterForms
     * const registerForm = await prisma.registerForm.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends RegisterFormUpdateManyArgs>(args: SelectSubset<T, RegisterFormUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one RegisterForm.
     * @param {RegisterFormUpsertArgs} args - Arguments to update or create a RegisterForm.
     * @example
     * // Update or create a RegisterForm
     * const registerForm = await prisma.registerForm.upsert({
     *   create: {
     *     // ... data to create a RegisterForm
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the RegisterForm we want to update
     *   }
     * })
     */
    upsert<T extends RegisterFormUpsertArgs>(args: SelectSubset<T, RegisterFormUpsertArgs<ExtArgs>>): Prisma__RegisterFormClient<$Result.GetResult<Prisma.$RegisterFormPayload<ExtArgs>, T, "upsert">, never, ExtArgs>


    /**
     * Count the number of RegisterForms.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterFormCountArgs} args - Arguments to filter RegisterForms to count.
     * @example
     * // Count the number of RegisterForms
     * const count = await prisma.registerForm.count({
     *   where: {
     *     // ... the filter for the RegisterForms we want to count
     *   }
     * })
    **/
    count<T extends RegisterFormCountArgs>(
      args?: Subset<T, RegisterFormCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], RegisterFormCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a RegisterForm.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterFormAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends RegisterFormAggregateArgs>(args: Subset<T, RegisterFormAggregateArgs>): Prisma.PrismaPromise<GetRegisterFormAggregateType<T>>

    /**
     * Group by RegisterForm.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterFormGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends RegisterFormGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: RegisterFormGroupByArgs['orderBy'] }
        : { orderBy?: RegisterFormGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, RegisterFormGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetRegisterFormGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the RegisterForm model
   */
  readonly fields: RegisterFormFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for RegisterForm.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__RegisterFormClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    fields<T extends RegisterForm$fieldsArgs<ExtArgs> = {}>(args?: Subset<T, RegisterForm$fieldsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$RegisterFormFieldPayload<ExtArgs>, T, "findMany"> | Null>
    applications<T extends RegisterForm$applicationsArgs<ExtArgs> = {}>(args?: Subset<T, RegisterForm$applicationsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$RegisterApplicationPayload<ExtArgs>, T, "findMany"> | Null>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the RegisterForm model
   */ 
  interface RegisterFormFieldRefs {
    readonly id: FieldRef<"RegisterForm", 'String'>
    readonly guildId: FieldRef<"RegisterForm", 'String'>
    readonly name: FieldRef<"RegisterForm", 'String'>
    readonly description: FieldRef<"RegisterForm", 'String'>
    readonly reviewChannelId: FieldRef<"RegisterForm", 'String'>
    readonly notifyRoleIds: FieldRef<"RegisterForm", 'String[]'>
    readonly isActive: FieldRef<"RegisterForm", 'Boolean'>
    readonly createdAt: FieldRef<"RegisterForm", 'DateTime'>
    readonly updatedAt: FieldRef<"RegisterForm", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * RegisterForm findUnique
   */
  export type RegisterFormFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterForm
     */
    select?: RegisterFormSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormInclude<ExtArgs> | null
    /**
     * Filter, which RegisterForm to fetch.
     */
    where: RegisterFormWhereUniqueInput
  }

  /**
   * RegisterForm findUniqueOrThrow
   */
  export type RegisterFormFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterForm
     */
    select?: RegisterFormSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormInclude<ExtArgs> | null
    /**
     * Filter, which RegisterForm to fetch.
     */
    where: RegisterFormWhereUniqueInput
  }

  /**
   * RegisterForm findFirst
   */
  export type RegisterFormFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterForm
     */
    select?: RegisterFormSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormInclude<ExtArgs> | null
    /**
     * Filter, which RegisterForm to fetch.
     */
    where?: RegisterFormWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterForms to fetch.
     */
    orderBy?: RegisterFormOrderByWithRelationInput | RegisterFormOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for RegisterForms.
     */
    cursor?: RegisterFormWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterForms from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterForms.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of RegisterForms.
     */
    distinct?: RegisterFormScalarFieldEnum | RegisterFormScalarFieldEnum[]
  }

  /**
   * RegisterForm findFirstOrThrow
   */
  export type RegisterFormFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterForm
     */
    select?: RegisterFormSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormInclude<ExtArgs> | null
    /**
     * Filter, which RegisterForm to fetch.
     */
    where?: RegisterFormWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterForms to fetch.
     */
    orderBy?: RegisterFormOrderByWithRelationInput | RegisterFormOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for RegisterForms.
     */
    cursor?: RegisterFormWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterForms from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterForms.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of RegisterForms.
     */
    distinct?: RegisterFormScalarFieldEnum | RegisterFormScalarFieldEnum[]
  }

  /**
   * RegisterForm findMany
   */
  export type RegisterFormFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterForm
     */
    select?: RegisterFormSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormInclude<ExtArgs> | null
    /**
     * Filter, which RegisterForms to fetch.
     */
    where?: RegisterFormWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterForms to fetch.
     */
    orderBy?: RegisterFormOrderByWithRelationInput | RegisterFormOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing RegisterForms.
     */
    cursor?: RegisterFormWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterForms from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterForms.
     */
    skip?: number
    distinct?: RegisterFormScalarFieldEnum | RegisterFormScalarFieldEnum[]
  }

  /**
   * RegisterForm create
   */
  export type RegisterFormCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterForm
     */
    select?: RegisterFormSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormInclude<ExtArgs> | null
    /**
     * The data needed to create a RegisterForm.
     */
    data: XOR<RegisterFormCreateInput, RegisterFormUncheckedCreateInput>
  }

  /**
   * RegisterForm createMany
   */
  export type RegisterFormCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many RegisterForms.
     */
    data: RegisterFormCreateManyInput | RegisterFormCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * RegisterForm createManyAndReturn
   */
  export type RegisterFormCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterForm
     */
    select?: RegisterFormSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many RegisterForms.
     */
    data: RegisterFormCreateManyInput | RegisterFormCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * RegisterForm update
   */
  export type RegisterFormUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterForm
     */
    select?: RegisterFormSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormInclude<ExtArgs> | null
    /**
     * The data needed to update a RegisterForm.
     */
    data: XOR<RegisterFormUpdateInput, RegisterFormUncheckedUpdateInput>
    /**
     * Choose, which RegisterForm to update.
     */
    where: RegisterFormWhereUniqueInput
  }

  /**
   * RegisterForm updateMany
   */
  export type RegisterFormUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update RegisterForms.
     */
    data: XOR<RegisterFormUpdateManyMutationInput, RegisterFormUncheckedUpdateManyInput>
    /**
     * Filter which RegisterForms to update
     */
    where?: RegisterFormWhereInput
  }

  /**
   * RegisterForm upsert
   */
  export type RegisterFormUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterForm
     */
    select?: RegisterFormSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormInclude<ExtArgs> | null
    /**
     * The filter to search for the RegisterForm to update in case it exists.
     */
    where: RegisterFormWhereUniqueInput
    /**
     * In case the RegisterForm found by the `where` argument doesn't exist, create a new RegisterForm with this data.
     */
    create: XOR<RegisterFormCreateInput, RegisterFormUncheckedCreateInput>
    /**
     * In case the RegisterForm was found with the provided `where` argument, update it with this data.
     */
    update: XOR<RegisterFormUpdateInput, RegisterFormUncheckedUpdateInput>
  }

  /**
   * RegisterForm delete
   */
  export type RegisterFormDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterForm
     */
    select?: RegisterFormSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormInclude<ExtArgs> | null
    /**
     * Filter which RegisterForm to delete.
     */
    where: RegisterFormWhereUniqueInput
  }

  /**
   * RegisterForm deleteMany
   */
  export type RegisterFormDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which RegisterForms to delete
     */
    where?: RegisterFormWhereInput
  }

  /**
   * RegisterForm.fields
   */
  export type RegisterForm$fieldsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterFormField
     */
    select?: RegisterFormFieldSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormFieldInclude<ExtArgs> | null
    where?: RegisterFormFieldWhereInput
    orderBy?: RegisterFormFieldOrderByWithRelationInput | RegisterFormFieldOrderByWithRelationInput[]
    cursor?: RegisterFormFieldWhereUniqueInput
    take?: number
    skip?: number
    distinct?: RegisterFormFieldScalarFieldEnum | RegisterFormFieldScalarFieldEnum[]
  }

  /**
   * RegisterForm.applications
   */
  export type RegisterForm$applicationsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplication
     */
    select?: RegisterApplicationSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationInclude<ExtArgs> | null
    where?: RegisterApplicationWhereInput
    orderBy?: RegisterApplicationOrderByWithRelationInput | RegisterApplicationOrderByWithRelationInput[]
    cursor?: RegisterApplicationWhereUniqueInput
    take?: number
    skip?: number
    distinct?: RegisterApplicationScalarFieldEnum | RegisterApplicationScalarFieldEnum[]
  }

  /**
   * RegisterForm without action
   */
  export type RegisterFormDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterForm
     */
    select?: RegisterFormSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormInclude<ExtArgs> | null
  }


  /**
   * Model RegisterFormField
   */

  export type AggregateRegisterFormField = {
    _count: RegisterFormFieldCountAggregateOutputType | null
    _avg: RegisterFormFieldAvgAggregateOutputType | null
    _sum: RegisterFormFieldSumAggregateOutputType | null
    _min: RegisterFormFieldMinAggregateOutputType | null
    _max: RegisterFormFieldMaxAggregateOutputType | null
  }

  export type RegisterFormFieldAvgAggregateOutputType = {
    order: number | null
  }

  export type RegisterFormFieldSumAggregateOutputType = {
    order: number | null
  }

  export type RegisterFormFieldMinAggregateOutputType = {
    id: string | null
    formId: string | null
    label: string | null
    type: string | null
    required: boolean | null
    order: number | null
  }

  export type RegisterFormFieldMaxAggregateOutputType = {
    id: string | null
    formId: string | null
    label: string | null
    type: string | null
    required: boolean | null
    order: number | null
  }

  export type RegisterFormFieldCountAggregateOutputType = {
    id: number
    formId: number
    label: number
    type: number
    required: number
    order: number
    _all: number
  }


  export type RegisterFormFieldAvgAggregateInputType = {
    order?: true
  }

  export type RegisterFormFieldSumAggregateInputType = {
    order?: true
  }

  export type RegisterFormFieldMinAggregateInputType = {
    id?: true
    formId?: true
    label?: true
    type?: true
    required?: true
    order?: true
  }

  export type RegisterFormFieldMaxAggregateInputType = {
    id?: true
    formId?: true
    label?: true
    type?: true
    required?: true
    order?: true
  }

  export type RegisterFormFieldCountAggregateInputType = {
    id?: true
    formId?: true
    label?: true
    type?: true
    required?: true
    order?: true
    _all?: true
  }

  export type RegisterFormFieldAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which RegisterFormField to aggregate.
     */
    where?: RegisterFormFieldWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterFormFields to fetch.
     */
    orderBy?: RegisterFormFieldOrderByWithRelationInput | RegisterFormFieldOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: RegisterFormFieldWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterFormFields from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterFormFields.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned RegisterFormFields
    **/
    _count?: true | RegisterFormFieldCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: RegisterFormFieldAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: RegisterFormFieldSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: RegisterFormFieldMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: RegisterFormFieldMaxAggregateInputType
  }

  export type GetRegisterFormFieldAggregateType<T extends RegisterFormFieldAggregateArgs> = {
        [P in keyof T & keyof AggregateRegisterFormField]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateRegisterFormField[P]>
      : GetScalarType<T[P], AggregateRegisterFormField[P]>
  }




  export type RegisterFormFieldGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: RegisterFormFieldWhereInput
    orderBy?: RegisterFormFieldOrderByWithAggregationInput | RegisterFormFieldOrderByWithAggregationInput[]
    by: RegisterFormFieldScalarFieldEnum[] | RegisterFormFieldScalarFieldEnum
    having?: RegisterFormFieldScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: RegisterFormFieldCountAggregateInputType | true
    _avg?: RegisterFormFieldAvgAggregateInputType
    _sum?: RegisterFormFieldSumAggregateInputType
    _min?: RegisterFormFieldMinAggregateInputType
    _max?: RegisterFormFieldMaxAggregateInputType
  }

  export type RegisterFormFieldGroupByOutputType = {
    id: string
    formId: string
    label: string
    type: string
    required: boolean
    order: number
    _count: RegisterFormFieldCountAggregateOutputType | null
    _avg: RegisterFormFieldAvgAggregateOutputType | null
    _sum: RegisterFormFieldSumAggregateOutputType | null
    _min: RegisterFormFieldMinAggregateOutputType | null
    _max: RegisterFormFieldMaxAggregateOutputType | null
  }

  type GetRegisterFormFieldGroupByPayload<T extends RegisterFormFieldGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<RegisterFormFieldGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof RegisterFormFieldGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], RegisterFormFieldGroupByOutputType[P]>
            : GetScalarType<T[P], RegisterFormFieldGroupByOutputType[P]>
        }
      >
    >


  export type RegisterFormFieldSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    formId?: boolean
    label?: boolean
    type?: boolean
    required?: boolean
    order?: boolean
    form?: boolean | RegisterFormDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["registerFormField"]>

  export type RegisterFormFieldSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    formId?: boolean
    label?: boolean
    type?: boolean
    required?: boolean
    order?: boolean
    form?: boolean | RegisterFormDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["registerFormField"]>

  export type RegisterFormFieldSelectScalar = {
    id?: boolean
    formId?: boolean
    label?: boolean
    type?: boolean
    required?: boolean
    order?: boolean
  }

  export type RegisterFormFieldInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    form?: boolean | RegisterFormDefaultArgs<ExtArgs>
  }
  export type RegisterFormFieldIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    form?: boolean | RegisterFormDefaultArgs<ExtArgs>
  }

  export type $RegisterFormFieldPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "RegisterFormField"
    objects: {
      form: Prisma.$RegisterFormPayload<ExtArgs>
    }
    scalars: $Extensions.GetPayloadResult<{
      id: string
      formId: string
      label: string
      type: string
      required: boolean
      order: number
    }, ExtArgs["result"]["registerFormField"]>
    composites: {}
  }

  type RegisterFormFieldGetPayload<S extends boolean | null | undefined | RegisterFormFieldDefaultArgs> = $Result.GetResult<Prisma.$RegisterFormFieldPayload, S>

  type RegisterFormFieldCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = 
    Omit<RegisterFormFieldFindManyArgs, 'select' | 'include' | 'distinct'> & {
      select?: RegisterFormFieldCountAggregateInputType | true
    }

  export interface RegisterFormFieldDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['RegisterFormField'], meta: { name: 'RegisterFormField' } }
    /**
     * Find zero or one RegisterFormField that matches the filter.
     * @param {RegisterFormFieldFindUniqueArgs} args - Arguments to find a RegisterFormField
     * @example
     * // Get one RegisterFormField
     * const registerFormField = await prisma.registerFormField.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends RegisterFormFieldFindUniqueArgs>(args: SelectSubset<T, RegisterFormFieldFindUniqueArgs<ExtArgs>>): Prisma__RegisterFormFieldClient<$Result.GetResult<Prisma.$RegisterFormFieldPayload<ExtArgs>, T, "findUnique"> | null, null, ExtArgs>

    /**
     * Find one RegisterFormField that matches the filter or throw an error with `error.code='P2025'` 
     * if no matches were found.
     * @param {RegisterFormFieldFindUniqueOrThrowArgs} args - Arguments to find a RegisterFormField
     * @example
     * // Get one RegisterFormField
     * const registerFormField = await prisma.registerFormField.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends RegisterFormFieldFindUniqueOrThrowArgs>(args: SelectSubset<T, RegisterFormFieldFindUniqueOrThrowArgs<ExtArgs>>): Prisma__RegisterFormFieldClient<$Result.GetResult<Prisma.$RegisterFormFieldPayload<ExtArgs>, T, "findUniqueOrThrow">, never, ExtArgs>

    /**
     * Find the first RegisterFormField that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterFormFieldFindFirstArgs} args - Arguments to find a RegisterFormField
     * @example
     * // Get one RegisterFormField
     * const registerFormField = await prisma.registerFormField.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends RegisterFormFieldFindFirstArgs>(args?: SelectSubset<T, RegisterFormFieldFindFirstArgs<ExtArgs>>): Prisma__RegisterFormFieldClient<$Result.GetResult<Prisma.$RegisterFormFieldPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first RegisterFormField that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterFormFieldFindFirstOrThrowArgs} args - Arguments to find a RegisterFormField
     * @example
     * // Get one RegisterFormField
     * const registerFormField = await prisma.registerFormField.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends RegisterFormFieldFindFirstOrThrowArgs>(args?: SelectSubset<T, RegisterFormFieldFindFirstOrThrowArgs<ExtArgs>>): Prisma__RegisterFormFieldClient<$Result.GetResult<Prisma.$RegisterFormFieldPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more RegisterFormFields that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterFormFieldFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all RegisterFormFields
     * const registerFormFields = await prisma.registerFormField.findMany()
     * 
     * // Get first 10 RegisterFormFields
     * const registerFormFields = await prisma.registerFormField.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const registerFormFieldWithIdOnly = await prisma.registerFormField.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends RegisterFormFieldFindManyArgs>(args?: SelectSubset<T, RegisterFormFieldFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$RegisterFormFieldPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a RegisterFormField.
     * @param {RegisterFormFieldCreateArgs} args - Arguments to create a RegisterFormField.
     * @example
     * // Create one RegisterFormField
     * const RegisterFormField = await prisma.registerFormField.create({
     *   data: {
     *     // ... data to create a RegisterFormField
     *   }
     * })
     * 
     */
    create<T extends RegisterFormFieldCreateArgs>(args: SelectSubset<T, RegisterFormFieldCreateArgs<ExtArgs>>): Prisma__RegisterFormFieldClient<$Result.GetResult<Prisma.$RegisterFormFieldPayload<ExtArgs>, T, "create">, never, ExtArgs>

    /**
     * Create many RegisterFormFields.
     * @param {RegisterFormFieldCreateManyArgs} args - Arguments to create many RegisterFormFields.
     * @example
     * // Create many RegisterFormFields
     * const registerFormField = await prisma.registerFormField.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends RegisterFormFieldCreateManyArgs>(args?: SelectSubset<T, RegisterFormFieldCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many RegisterFormFields and returns the data saved in the database.
     * @param {RegisterFormFieldCreateManyAndReturnArgs} args - Arguments to create many RegisterFormFields.
     * @example
     * // Create many RegisterFormFields
     * const registerFormField = await prisma.registerFormField.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many RegisterFormFields and only return the `id`
     * const registerFormFieldWithIdOnly = await prisma.registerFormField.createManyAndReturn({ 
     *   select: { id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends RegisterFormFieldCreateManyAndReturnArgs>(args?: SelectSubset<T, RegisterFormFieldCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$RegisterFormFieldPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a RegisterFormField.
     * @param {RegisterFormFieldDeleteArgs} args - Arguments to delete one RegisterFormField.
     * @example
     * // Delete one RegisterFormField
     * const RegisterFormField = await prisma.registerFormField.delete({
     *   where: {
     *     // ... filter to delete one RegisterFormField
     *   }
     * })
     * 
     */
    delete<T extends RegisterFormFieldDeleteArgs>(args: SelectSubset<T, RegisterFormFieldDeleteArgs<ExtArgs>>): Prisma__RegisterFormFieldClient<$Result.GetResult<Prisma.$RegisterFormFieldPayload<ExtArgs>, T, "delete">, never, ExtArgs>

    /**
     * Update one RegisterFormField.
     * @param {RegisterFormFieldUpdateArgs} args - Arguments to update one RegisterFormField.
     * @example
     * // Update one RegisterFormField
     * const registerFormField = await prisma.registerFormField.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends RegisterFormFieldUpdateArgs>(args: SelectSubset<T, RegisterFormFieldUpdateArgs<ExtArgs>>): Prisma__RegisterFormFieldClient<$Result.GetResult<Prisma.$RegisterFormFieldPayload<ExtArgs>, T, "update">, never, ExtArgs>

    /**
     * Delete zero or more RegisterFormFields.
     * @param {RegisterFormFieldDeleteManyArgs} args - Arguments to filter RegisterFormFields to delete.
     * @example
     * // Delete a few RegisterFormFields
     * const { count } = await prisma.registerFormField.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends RegisterFormFieldDeleteManyArgs>(args?: SelectSubset<T, RegisterFormFieldDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more RegisterFormFields.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterFormFieldUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many RegisterFormFields
     * const registerFormField = await prisma.registerFormField.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends RegisterFormFieldUpdateManyArgs>(args: SelectSubset<T, RegisterFormFieldUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one RegisterFormField.
     * @param {RegisterFormFieldUpsertArgs} args - Arguments to update or create a RegisterFormField.
     * @example
     * // Update or create a RegisterFormField
     * const registerFormField = await prisma.registerFormField.upsert({
     *   create: {
     *     // ... data to create a RegisterFormField
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the RegisterFormField we want to update
     *   }
     * })
     */
    upsert<T extends RegisterFormFieldUpsertArgs>(args: SelectSubset<T, RegisterFormFieldUpsertArgs<ExtArgs>>): Prisma__RegisterFormFieldClient<$Result.GetResult<Prisma.$RegisterFormFieldPayload<ExtArgs>, T, "upsert">, never, ExtArgs>


    /**
     * Count the number of RegisterFormFields.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterFormFieldCountArgs} args - Arguments to filter RegisterFormFields to count.
     * @example
     * // Count the number of RegisterFormFields
     * const count = await prisma.registerFormField.count({
     *   where: {
     *     // ... the filter for the RegisterFormFields we want to count
     *   }
     * })
    **/
    count<T extends RegisterFormFieldCountArgs>(
      args?: Subset<T, RegisterFormFieldCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], RegisterFormFieldCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a RegisterFormField.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterFormFieldAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends RegisterFormFieldAggregateArgs>(args: Subset<T, RegisterFormFieldAggregateArgs>): Prisma.PrismaPromise<GetRegisterFormFieldAggregateType<T>>

    /**
     * Group by RegisterFormField.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterFormFieldGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends RegisterFormFieldGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: RegisterFormFieldGroupByArgs['orderBy'] }
        : { orderBy?: RegisterFormFieldGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, RegisterFormFieldGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetRegisterFormFieldGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the RegisterFormField model
   */
  readonly fields: RegisterFormFieldFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for RegisterFormField.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__RegisterFormFieldClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    form<T extends RegisterFormDefaultArgs<ExtArgs> = {}>(args?: Subset<T, RegisterFormDefaultArgs<ExtArgs>>): Prisma__RegisterFormClient<$Result.GetResult<Prisma.$RegisterFormPayload<ExtArgs>, T, "findUniqueOrThrow"> | Null, Null, ExtArgs>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the RegisterFormField model
   */ 
  interface RegisterFormFieldFieldRefs {
    readonly id: FieldRef<"RegisterFormField", 'String'>
    readonly formId: FieldRef<"RegisterFormField", 'String'>
    readonly label: FieldRef<"RegisterFormField", 'String'>
    readonly type: FieldRef<"RegisterFormField", 'String'>
    readonly required: FieldRef<"RegisterFormField", 'Boolean'>
    readonly order: FieldRef<"RegisterFormField", 'Int'>
  }
    

  // Custom InputTypes
  /**
   * RegisterFormField findUnique
   */
  export type RegisterFormFieldFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterFormField
     */
    select?: RegisterFormFieldSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormFieldInclude<ExtArgs> | null
    /**
     * Filter, which RegisterFormField to fetch.
     */
    where: RegisterFormFieldWhereUniqueInput
  }

  /**
   * RegisterFormField findUniqueOrThrow
   */
  export type RegisterFormFieldFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterFormField
     */
    select?: RegisterFormFieldSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormFieldInclude<ExtArgs> | null
    /**
     * Filter, which RegisterFormField to fetch.
     */
    where: RegisterFormFieldWhereUniqueInput
  }

  /**
   * RegisterFormField findFirst
   */
  export type RegisterFormFieldFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterFormField
     */
    select?: RegisterFormFieldSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormFieldInclude<ExtArgs> | null
    /**
     * Filter, which RegisterFormField to fetch.
     */
    where?: RegisterFormFieldWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterFormFields to fetch.
     */
    orderBy?: RegisterFormFieldOrderByWithRelationInput | RegisterFormFieldOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for RegisterFormFields.
     */
    cursor?: RegisterFormFieldWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterFormFields from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterFormFields.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of RegisterFormFields.
     */
    distinct?: RegisterFormFieldScalarFieldEnum | RegisterFormFieldScalarFieldEnum[]
  }

  /**
   * RegisterFormField findFirstOrThrow
   */
  export type RegisterFormFieldFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterFormField
     */
    select?: RegisterFormFieldSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormFieldInclude<ExtArgs> | null
    /**
     * Filter, which RegisterFormField to fetch.
     */
    where?: RegisterFormFieldWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterFormFields to fetch.
     */
    orderBy?: RegisterFormFieldOrderByWithRelationInput | RegisterFormFieldOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for RegisterFormFields.
     */
    cursor?: RegisterFormFieldWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterFormFields from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterFormFields.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of RegisterFormFields.
     */
    distinct?: RegisterFormFieldScalarFieldEnum | RegisterFormFieldScalarFieldEnum[]
  }

  /**
   * RegisterFormField findMany
   */
  export type RegisterFormFieldFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterFormField
     */
    select?: RegisterFormFieldSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormFieldInclude<ExtArgs> | null
    /**
     * Filter, which RegisterFormFields to fetch.
     */
    where?: RegisterFormFieldWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterFormFields to fetch.
     */
    orderBy?: RegisterFormFieldOrderByWithRelationInput | RegisterFormFieldOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing RegisterFormFields.
     */
    cursor?: RegisterFormFieldWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterFormFields from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterFormFields.
     */
    skip?: number
    distinct?: RegisterFormFieldScalarFieldEnum | RegisterFormFieldScalarFieldEnum[]
  }

  /**
   * RegisterFormField create
   */
  export type RegisterFormFieldCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterFormField
     */
    select?: RegisterFormFieldSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormFieldInclude<ExtArgs> | null
    /**
     * The data needed to create a RegisterFormField.
     */
    data: XOR<RegisterFormFieldCreateInput, RegisterFormFieldUncheckedCreateInput>
  }

  /**
   * RegisterFormField createMany
   */
  export type RegisterFormFieldCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many RegisterFormFields.
     */
    data: RegisterFormFieldCreateManyInput | RegisterFormFieldCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * RegisterFormField createManyAndReturn
   */
  export type RegisterFormFieldCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterFormField
     */
    select?: RegisterFormFieldSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many RegisterFormFields.
     */
    data: RegisterFormFieldCreateManyInput | RegisterFormFieldCreateManyInput[]
    skipDuplicates?: boolean
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormFieldIncludeCreateManyAndReturn<ExtArgs> | null
  }

  /**
   * RegisterFormField update
   */
  export type RegisterFormFieldUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterFormField
     */
    select?: RegisterFormFieldSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormFieldInclude<ExtArgs> | null
    /**
     * The data needed to update a RegisterFormField.
     */
    data: XOR<RegisterFormFieldUpdateInput, RegisterFormFieldUncheckedUpdateInput>
    /**
     * Choose, which RegisterFormField to update.
     */
    where: RegisterFormFieldWhereUniqueInput
  }

  /**
   * RegisterFormField updateMany
   */
  export type RegisterFormFieldUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update RegisterFormFields.
     */
    data: XOR<RegisterFormFieldUpdateManyMutationInput, RegisterFormFieldUncheckedUpdateManyInput>
    /**
     * Filter which RegisterFormFields to update
     */
    where?: RegisterFormFieldWhereInput
  }

  /**
   * RegisterFormField upsert
   */
  export type RegisterFormFieldUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterFormField
     */
    select?: RegisterFormFieldSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormFieldInclude<ExtArgs> | null
    /**
     * The filter to search for the RegisterFormField to update in case it exists.
     */
    where: RegisterFormFieldWhereUniqueInput
    /**
     * In case the RegisterFormField found by the `where` argument doesn't exist, create a new RegisterFormField with this data.
     */
    create: XOR<RegisterFormFieldCreateInput, RegisterFormFieldUncheckedCreateInput>
    /**
     * In case the RegisterFormField was found with the provided `where` argument, update it with this data.
     */
    update: XOR<RegisterFormFieldUpdateInput, RegisterFormFieldUncheckedUpdateInput>
  }

  /**
   * RegisterFormField delete
   */
  export type RegisterFormFieldDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterFormField
     */
    select?: RegisterFormFieldSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormFieldInclude<ExtArgs> | null
    /**
     * Filter which RegisterFormField to delete.
     */
    where: RegisterFormFieldWhereUniqueInput
  }

  /**
   * RegisterFormField deleteMany
   */
  export type RegisterFormFieldDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which RegisterFormFields to delete
     */
    where?: RegisterFormFieldWhereInput
  }

  /**
   * RegisterFormField without action
   */
  export type RegisterFormFieldDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterFormField
     */
    select?: RegisterFormFieldSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterFormFieldInclude<ExtArgs> | null
  }


  /**
   * Model RegisterApplication
   */

  export type AggregateRegisterApplication = {
    _count: RegisterApplicationCountAggregateOutputType | null
    _min: RegisterApplicationMinAggregateOutputType | null
    _max: RegisterApplicationMaxAggregateOutputType | null
  }

  export type RegisterApplicationMinAggregateOutputType = {
    id: string | null
    guildId: string | null
    userId: string | null
    formId: string | null
    status: string | null
    reviewedBy: string | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type RegisterApplicationMaxAggregateOutputType = {
    id: string | null
    guildId: string | null
    userId: string | null
    formId: string | null
    status: string | null
    reviewedBy: string | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type RegisterApplicationCountAggregateOutputType = {
    id: number
    guildId: number
    userId: number
    formId: number
    status: number
    reviewedBy: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type RegisterApplicationMinAggregateInputType = {
    id?: true
    guildId?: true
    userId?: true
    formId?: true
    status?: true
    reviewedBy?: true
    createdAt?: true
    updatedAt?: true
  }

  export type RegisterApplicationMaxAggregateInputType = {
    id?: true
    guildId?: true
    userId?: true
    formId?: true
    status?: true
    reviewedBy?: true
    createdAt?: true
    updatedAt?: true
  }

  export type RegisterApplicationCountAggregateInputType = {
    id?: true
    guildId?: true
    userId?: true
    formId?: true
    status?: true
    reviewedBy?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type RegisterApplicationAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which RegisterApplication to aggregate.
     */
    where?: RegisterApplicationWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterApplications to fetch.
     */
    orderBy?: RegisterApplicationOrderByWithRelationInput | RegisterApplicationOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: RegisterApplicationWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterApplications from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterApplications.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned RegisterApplications
    **/
    _count?: true | RegisterApplicationCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: RegisterApplicationMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: RegisterApplicationMaxAggregateInputType
  }

  export type GetRegisterApplicationAggregateType<T extends RegisterApplicationAggregateArgs> = {
        [P in keyof T & keyof AggregateRegisterApplication]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateRegisterApplication[P]>
      : GetScalarType<T[P], AggregateRegisterApplication[P]>
  }




  export type RegisterApplicationGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: RegisterApplicationWhereInput
    orderBy?: RegisterApplicationOrderByWithAggregationInput | RegisterApplicationOrderByWithAggregationInput[]
    by: RegisterApplicationScalarFieldEnum[] | RegisterApplicationScalarFieldEnum
    having?: RegisterApplicationScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: RegisterApplicationCountAggregateInputType | true
    _min?: RegisterApplicationMinAggregateInputType
    _max?: RegisterApplicationMaxAggregateInputType
  }

  export type RegisterApplicationGroupByOutputType = {
    id: string
    guildId: string
    userId: string
    formId: string
    status: string
    reviewedBy: string | null
    createdAt: Date
    updatedAt: Date
    _count: RegisterApplicationCountAggregateOutputType | null
    _min: RegisterApplicationMinAggregateOutputType | null
    _max: RegisterApplicationMaxAggregateOutputType | null
  }

  type GetRegisterApplicationGroupByPayload<T extends RegisterApplicationGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<RegisterApplicationGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof RegisterApplicationGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], RegisterApplicationGroupByOutputType[P]>
            : GetScalarType<T[P], RegisterApplicationGroupByOutputType[P]>
        }
      >
    >


  export type RegisterApplicationSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    guildId?: boolean
    userId?: boolean
    formId?: boolean
    status?: boolean
    reviewedBy?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    answers?: boolean | RegisterApplication$answersArgs<ExtArgs>
    form?: boolean | RegisterFormDefaultArgs<ExtArgs>
    _count?: boolean | RegisterApplicationCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["registerApplication"]>

  export type RegisterApplicationSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    guildId?: boolean
    userId?: boolean
    formId?: boolean
    status?: boolean
    reviewedBy?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    form?: boolean | RegisterFormDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["registerApplication"]>

  export type RegisterApplicationSelectScalar = {
    id?: boolean
    guildId?: boolean
    userId?: boolean
    formId?: boolean
    status?: boolean
    reviewedBy?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }

  export type RegisterApplicationInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    answers?: boolean | RegisterApplication$answersArgs<ExtArgs>
    form?: boolean | RegisterFormDefaultArgs<ExtArgs>
    _count?: boolean | RegisterApplicationCountOutputTypeDefaultArgs<ExtArgs>
  }
  export type RegisterApplicationIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    form?: boolean | RegisterFormDefaultArgs<ExtArgs>
  }

  export type $RegisterApplicationPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "RegisterApplication"
    objects: {
      answers: Prisma.$RegisterApplicationAnswerPayload<ExtArgs>[]
      form: Prisma.$RegisterFormPayload<ExtArgs>
    }
    scalars: $Extensions.GetPayloadResult<{
      id: string
      guildId: string
      userId: string
      formId: string
      status: string
      reviewedBy: string | null
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["registerApplication"]>
    composites: {}
  }

  type RegisterApplicationGetPayload<S extends boolean | null | undefined | RegisterApplicationDefaultArgs> = $Result.GetResult<Prisma.$RegisterApplicationPayload, S>

  type RegisterApplicationCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = 
    Omit<RegisterApplicationFindManyArgs, 'select' | 'include' | 'distinct'> & {
      select?: RegisterApplicationCountAggregateInputType | true
    }

  export interface RegisterApplicationDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['RegisterApplication'], meta: { name: 'RegisterApplication' } }
    /**
     * Find zero or one RegisterApplication that matches the filter.
     * @param {RegisterApplicationFindUniqueArgs} args - Arguments to find a RegisterApplication
     * @example
     * // Get one RegisterApplication
     * const registerApplication = await prisma.registerApplication.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends RegisterApplicationFindUniqueArgs>(args: SelectSubset<T, RegisterApplicationFindUniqueArgs<ExtArgs>>): Prisma__RegisterApplicationClient<$Result.GetResult<Prisma.$RegisterApplicationPayload<ExtArgs>, T, "findUnique"> | null, null, ExtArgs>

    /**
     * Find one RegisterApplication that matches the filter or throw an error with `error.code='P2025'` 
     * if no matches were found.
     * @param {RegisterApplicationFindUniqueOrThrowArgs} args - Arguments to find a RegisterApplication
     * @example
     * // Get one RegisterApplication
     * const registerApplication = await prisma.registerApplication.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends RegisterApplicationFindUniqueOrThrowArgs>(args: SelectSubset<T, RegisterApplicationFindUniqueOrThrowArgs<ExtArgs>>): Prisma__RegisterApplicationClient<$Result.GetResult<Prisma.$RegisterApplicationPayload<ExtArgs>, T, "findUniqueOrThrow">, never, ExtArgs>

    /**
     * Find the first RegisterApplication that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterApplicationFindFirstArgs} args - Arguments to find a RegisterApplication
     * @example
     * // Get one RegisterApplication
     * const registerApplication = await prisma.registerApplication.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends RegisterApplicationFindFirstArgs>(args?: SelectSubset<T, RegisterApplicationFindFirstArgs<ExtArgs>>): Prisma__RegisterApplicationClient<$Result.GetResult<Prisma.$RegisterApplicationPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first RegisterApplication that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterApplicationFindFirstOrThrowArgs} args - Arguments to find a RegisterApplication
     * @example
     * // Get one RegisterApplication
     * const registerApplication = await prisma.registerApplication.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends RegisterApplicationFindFirstOrThrowArgs>(args?: SelectSubset<T, RegisterApplicationFindFirstOrThrowArgs<ExtArgs>>): Prisma__RegisterApplicationClient<$Result.GetResult<Prisma.$RegisterApplicationPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more RegisterApplications that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterApplicationFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all RegisterApplications
     * const registerApplications = await prisma.registerApplication.findMany()
     * 
     * // Get first 10 RegisterApplications
     * const registerApplications = await prisma.registerApplication.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const registerApplicationWithIdOnly = await prisma.registerApplication.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends RegisterApplicationFindManyArgs>(args?: SelectSubset<T, RegisterApplicationFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$RegisterApplicationPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a RegisterApplication.
     * @param {RegisterApplicationCreateArgs} args - Arguments to create a RegisterApplication.
     * @example
     * // Create one RegisterApplication
     * const RegisterApplication = await prisma.registerApplication.create({
     *   data: {
     *     // ... data to create a RegisterApplication
     *   }
     * })
     * 
     */
    create<T extends RegisterApplicationCreateArgs>(args: SelectSubset<T, RegisterApplicationCreateArgs<ExtArgs>>): Prisma__RegisterApplicationClient<$Result.GetResult<Prisma.$RegisterApplicationPayload<ExtArgs>, T, "create">, never, ExtArgs>

    /**
     * Create many RegisterApplications.
     * @param {RegisterApplicationCreateManyArgs} args - Arguments to create many RegisterApplications.
     * @example
     * // Create many RegisterApplications
     * const registerApplication = await prisma.registerApplication.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends RegisterApplicationCreateManyArgs>(args?: SelectSubset<T, RegisterApplicationCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many RegisterApplications and returns the data saved in the database.
     * @param {RegisterApplicationCreateManyAndReturnArgs} args - Arguments to create many RegisterApplications.
     * @example
     * // Create many RegisterApplications
     * const registerApplication = await prisma.registerApplication.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many RegisterApplications and only return the `id`
     * const registerApplicationWithIdOnly = await prisma.registerApplication.createManyAndReturn({ 
     *   select: { id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends RegisterApplicationCreateManyAndReturnArgs>(args?: SelectSubset<T, RegisterApplicationCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$RegisterApplicationPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a RegisterApplication.
     * @param {RegisterApplicationDeleteArgs} args - Arguments to delete one RegisterApplication.
     * @example
     * // Delete one RegisterApplication
     * const RegisterApplication = await prisma.registerApplication.delete({
     *   where: {
     *     // ... filter to delete one RegisterApplication
     *   }
     * })
     * 
     */
    delete<T extends RegisterApplicationDeleteArgs>(args: SelectSubset<T, RegisterApplicationDeleteArgs<ExtArgs>>): Prisma__RegisterApplicationClient<$Result.GetResult<Prisma.$RegisterApplicationPayload<ExtArgs>, T, "delete">, never, ExtArgs>

    /**
     * Update one RegisterApplication.
     * @param {RegisterApplicationUpdateArgs} args - Arguments to update one RegisterApplication.
     * @example
     * // Update one RegisterApplication
     * const registerApplication = await prisma.registerApplication.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends RegisterApplicationUpdateArgs>(args: SelectSubset<T, RegisterApplicationUpdateArgs<ExtArgs>>): Prisma__RegisterApplicationClient<$Result.GetResult<Prisma.$RegisterApplicationPayload<ExtArgs>, T, "update">, never, ExtArgs>

    /**
     * Delete zero or more RegisterApplications.
     * @param {RegisterApplicationDeleteManyArgs} args - Arguments to filter RegisterApplications to delete.
     * @example
     * // Delete a few RegisterApplications
     * const { count } = await prisma.registerApplication.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends RegisterApplicationDeleteManyArgs>(args?: SelectSubset<T, RegisterApplicationDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more RegisterApplications.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterApplicationUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many RegisterApplications
     * const registerApplication = await prisma.registerApplication.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends RegisterApplicationUpdateManyArgs>(args: SelectSubset<T, RegisterApplicationUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one RegisterApplication.
     * @param {RegisterApplicationUpsertArgs} args - Arguments to update or create a RegisterApplication.
     * @example
     * // Update or create a RegisterApplication
     * const registerApplication = await prisma.registerApplication.upsert({
     *   create: {
     *     // ... data to create a RegisterApplication
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the RegisterApplication we want to update
     *   }
     * })
     */
    upsert<T extends RegisterApplicationUpsertArgs>(args: SelectSubset<T, RegisterApplicationUpsertArgs<ExtArgs>>): Prisma__RegisterApplicationClient<$Result.GetResult<Prisma.$RegisterApplicationPayload<ExtArgs>, T, "upsert">, never, ExtArgs>


    /**
     * Count the number of RegisterApplications.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterApplicationCountArgs} args - Arguments to filter RegisterApplications to count.
     * @example
     * // Count the number of RegisterApplications
     * const count = await prisma.registerApplication.count({
     *   where: {
     *     // ... the filter for the RegisterApplications we want to count
     *   }
     * })
    **/
    count<T extends RegisterApplicationCountArgs>(
      args?: Subset<T, RegisterApplicationCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], RegisterApplicationCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a RegisterApplication.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterApplicationAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends RegisterApplicationAggregateArgs>(args: Subset<T, RegisterApplicationAggregateArgs>): Prisma.PrismaPromise<GetRegisterApplicationAggregateType<T>>

    /**
     * Group by RegisterApplication.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterApplicationGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends RegisterApplicationGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: RegisterApplicationGroupByArgs['orderBy'] }
        : { orderBy?: RegisterApplicationGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, RegisterApplicationGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetRegisterApplicationGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the RegisterApplication model
   */
  readonly fields: RegisterApplicationFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for RegisterApplication.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__RegisterApplicationClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    answers<T extends RegisterApplication$answersArgs<ExtArgs> = {}>(args?: Subset<T, RegisterApplication$answersArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$RegisterApplicationAnswerPayload<ExtArgs>, T, "findMany"> | Null>
    form<T extends RegisterFormDefaultArgs<ExtArgs> = {}>(args?: Subset<T, RegisterFormDefaultArgs<ExtArgs>>): Prisma__RegisterFormClient<$Result.GetResult<Prisma.$RegisterFormPayload<ExtArgs>, T, "findUniqueOrThrow"> | Null, Null, ExtArgs>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the RegisterApplication model
   */ 
  interface RegisterApplicationFieldRefs {
    readonly id: FieldRef<"RegisterApplication", 'String'>
    readonly guildId: FieldRef<"RegisterApplication", 'String'>
    readonly userId: FieldRef<"RegisterApplication", 'String'>
    readonly formId: FieldRef<"RegisterApplication", 'String'>
    readonly status: FieldRef<"RegisterApplication", 'String'>
    readonly reviewedBy: FieldRef<"RegisterApplication", 'String'>
    readonly createdAt: FieldRef<"RegisterApplication", 'DateTime'>
    readonly updatedAt: FieldRef<"RegisterApplication", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * RegisterApplication findUnique
   */
  export type RegisterApplicationFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplication
     */
    select?: RegisterApplicationSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationInclude<ExtArgs> | null
    /**
     * Filter, which RegisterApplication to fetch.
     */
    where: RegisterApplicationWhereUniqueInput
  }

  /**
   * RegisterApplication findUniqueOrThrow
   */
  export type RegisterApplicationFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplication
     */
    select?: RegisterApplicationSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationInclude<ExtArgs> | null
    /**
     * Filter, which RegisterApplication to fetch.
     */
    where: RegisterApplicationWhereUniqueInput
  }

  /**
   * RegisterApplication findFirst
   */
  export type RegisterApplicationFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplication
     */
    select?: RegisterApplicationSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationInclude<ExtArgs> | null
    /**
     * Filter, which RegisterApplication to fetch.
     */
    where?: RegisterApplicationWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterApplications to fetch.
     */
    orderBy?: RegisterApplicationOrderByWithRelationInput | RegisterApplicationOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for RegisterApplications.
     */
    cursor?: RegisterApplicationWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterApplications from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterApplications.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of RegisterApplications.
     */
    distinct?: RegisterApplicationScalarFieldEnum | RegisterApplicationScalarFieldEnum[]
  }

  /**
   * RegisterApplication findFirstOrThrow
   */
  export type RegisterApplicationFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplication
     */
    select?: RegisterApplicationSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationInclude<ExtArgs> | null
    /**
     * Filter, which RegisterApplication to fetch.
     */
    where?: RegisterApplicationWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterApplications to fetch.
     */
    orderBy?: RegisterApplicationOrderByWithRelationInput | RegisterApplicationOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for RegisterApplications.
     */
    cursor?: RegisterApplicationWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterApplications from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterApplications.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of RegisterApplications.
     */
    distinct?: RegisterApplicationScalarFieldEnum | RegisterApplicationScalarFieldEnum[]
  }

  /**
   * RegisterApplication findMany
   */
  export type RegisterApplicationFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplication
     */
    select?: RegisterApplicationSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationInclude<ExtArgs> | null
    /**
     * Filter, which RegisterApplications to fetch.
     */
    where?: RegisterApplicationWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterApplications to fetch.
     */
    orderBy?: RegisterApplicationOrderByWithRelationInput | RegisterApplicationOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing RegisterApplications.
     */
    cursor?: RegisterApplicationWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterApplications from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterApplications.
     */
    skip?: number
    distinct?: RegisterApplicationScalarFieldEnum | RegisterApplicationScalarFieldEnum[]
  }

  /**
   * RegisterApplication create
   */
  export type RegisterApplicationCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplication
     */
    select?: RegisterApplicationSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationInclude<ExtArgs> | null
    /**
     * The data needed to create a RegisterApplication.
     */
    data: XOR<RegisterApplicationCreateInput, RegisterApplicationUncheckedCreateInput>
  }

  /**
   * RegisterApplication createMany
   */
  export type RegisterApplicationCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many RegisterApplications.
     */
    data: RegisterApplicationCreateManyInput | RegisterApplicationCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * RegisterApplication createManyAndReturn
   */
  export type RegisterApplicationCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplication
     */
    select?: RegisterApplicationSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many RegisterApplications.
     */
    data: RegisterApplicationCreateManyInput | RegisterApplicationCreateManyInput[]
    skipDuplicates?: boolean
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationIncludeCreateManyAndReturn<ExtArgs> | null
  }

  /**
   * RegisterApplication update
   */
  export type RegisterApplicationUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplication
     */
    select?: RegisterApplicationSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationInclude<ExtArgs> | null
    /**
     * The data needed to update a RegisterApplication.
     */
    data: XOR<RegisterApplicationUpdateInput, RegisterApplicationUncheckedUpdateInput>
    /**
     * Choose, which RegisterApplication to update.
     */
    where: RegisterApplicationWhereUniqueInput
  }

  /**
   * RegisterApplication updateMany
   */
  export type RegisterApplicationUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update RegisterApplications.
     */
    data: XOR<RegisterApplicationUpdateManyMutationInput, RegisterApplicationUncheckedUpdateManyInput>
    /**
     * Filter which RegisterApplications to update
     */
    where?: RegisterApplicationWhereInput
  }

  /**
   * RegisterApplication upsert
   */
  export type RegisterApplicationUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplication
     */
    select?: RegisterApplicationSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationInclude<ExtArgs> | null
    /**
     * The filter to search for the RegisterApplication to update in case it exists.
     */
    where: RegisterApplicationWhereUniqueInput
    /**
     * In case the RegisterApplication found by the `where` argument doesn't exist, create a new RegisterApplication with this data.
     */
    create: XOR<RegisterApplicationCreateInput, RegisterApplicationUncheckedCreateInput>
    /**
     * In case the RegisterApplication was found with the provided `where` argument, update it with this data.
     */
    update: XOR<RegisterApplicationUpdateInput, RegisterApplicationUncheckedUpdateInput>
  }

  /**
   * RegisterApplication delete
   */
  export type RegisterApplicationDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplication
     */
    select?: RegisterApplicationSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationInclude<ExtArgs> | null
    /**
     * Filter which RegisterApplication to delete.
     */
    where: RegisterApplicationWhereUniqueInput
  }

  /**
   * RegisterApplication deleteMany
   */
  export type RegisterApplicationDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which RegisterApplications to delete
     */
    where?: RegisterApplicationWhereInput
  }

  /**
   * RegisterApplication.answers
   */
  export type RegisterApplication$answersArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplicationAnswer
     */
    select?: RegisterApplicationAnswerSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationAnswerInclude<ExtArgs> | null
    where?: RegisterApplicationAnswerWhereInput
    orderBy?: RegisterApplicationAnswerOrderByWithRelationInput | RegisterApplicationAnswerOrderByWithRelationInput[]
    cursor?: RegisterApplicationAnswerWhereUniqueInput
    take?: number
    skip?: number
    distinct?: RegisterApplicationAnswerScalarFieldEnum | RegisterApplicationAnswerScalarFieldEnum[]
  }

  /**
   * RegisterApplication without action
   */
  export type RegisterApplicationDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplication
     */
    select?: RegisterApplicationSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationInclude<ExtArgs> | null
  }


  /**
   * Model RegisterApplicationAnswer
   */

  export type AggregateRegisterApplicationAnswer = {
    _count: RegisterApplicationAnswerCountAggregateOutputType | null
    _min: RegisterApplicationAnswerMinAggregateOutputType | null
    _max: RegisterApplicationAnswerMaxAggregateOutputType | null
  }

  export type RegisterApplicationAnswerMinAggregateOutputType = {
    id: string | null
    applicationId: string | null
    fieldId: string | null
    value: string | null
  }

  export type RegisterApplicationAnswerMaxAggregateOutputType = {
    id: string | null
    applicationId: string | null
    fieldId: string | null
    value: string | null
  }

  export type RegisterApplicationAnswerCountAggregateOutputType = {
    id: number
    applicationId: number
    fieldId: number
    value: number
    _all: number
  }


  export type RegisterApplicationAnswerMinAggregateInputType = {
    id?: true
    applicationId?: true
    fieldId?: true
    value?: true
  }

  export type RegisterApplicationAnswerMaxAggregateInputType = {
    id?: true
    applicationId?: true
    fieldId?: true
    value?: true
  }

  export type RegisterApplicationAnswerCountAggregateInputType = {
    id?: true
    applicationId?: true
    fieldId?: true
    value?: true
    _all?: true
  }

  export type RegisterApplicationAnswerAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which RegisterApplicationAnswer to aggregate.
     */
    where?: RegisterApplicationAnswerWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterApplicationAnswers to fetch.
     */
    orderBy?: RegisterApplicationAnswerOrderByWithRelationInput | RegisterApplicationAnswerOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: RegisterApplicationAnswerWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterApplicationAnswers from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterApplicationAnswers.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned RegisterApplicationAnswers
    **/
    _count?: true | RegisterApplicationAnswerCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: RegisterApplicationAnswerMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: RegisterApplicationAnswerMaxAggregateInputType
  }

  export type GetRegisterApplicationAnswerAggregateType<T extends RegisterApplicationAnswerAggregateArgs> = {
        [P in keyof T & keyof AggregateRegisterApplicationAnswer]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateRegisterApplicationAnswer[P]>
      : GetScalarType<T[P], AggregateRegisterApplicationAnswer[P]>
  }




  export type RegisterApplicationAnswerGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: RegisterApplicationAnswerWhereInput
    orderBy?: RegisterApplicationAnswerOrderByWithAggregationInput | RegisterApplicationAnswerOrderByWithAggregationInput[]
    by: RegisterApplicationAnswerScalarFieldEnum[] | RegisterApplicationAnswerScalarFieldEnum
    having?: RegisterApplicationAnswerScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: RegisterApplicationAnswerCountAggregateInputType | true
    _min?: RegisterApplicationAnswerMinAggregateInputType
    _max?: RegisterApplicationAnswerMaxAggregateInputType
  }

  export type RegisterApplicationAnswerGroupByOutputType = {
    id: string
    applicationId: string
    fieldId: string
    value: string
    _count: RegisterApplicationAnswerCountAggregateOutputType | null
    _min: RegisterApplicationAnswerMinAggregateOutputType | null
    _max: RegisterApplicationAnswerMaxAggregateOutputType | null
  }

  type GetRegisterApplicationAnswerGroupByPayload<T extends RegisterApplicationAnswerGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<RegisterApplicationAnswerGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof RegisterApplicationAnswerGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], RegisterApplicationAnswerGroupByOutputType[P]>
            : GetScalarType<T[P], RegisterApplicationAnswerGroupByOutputType[P]>
        }
      >
    >


  export type RegisterApplicationAnswerSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    applicationId?: boolean
    fieldId?: boolean
    value?: boolean
    application?: boolean | RegisterApplicationDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["registerApplicationAnswer"]>

  export type RegisterApplicationAnswerSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    applicationId?: boolean
    fieldId?: boolean
    value?: boolean
    application?: boolean | RegisterApplicationDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["registerApplicationAnswer"]>

  export type RegisterApplicationAnswerSelectScalar = {
    id?: boolean
    applicationId?: boolean
    fieldId?: boolean
    value?: boolean
  }

  export type RegisterApplicationAnswerInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    application?: boolean | RegisterApplicationDefaultArgs<ExtArgs>
  }
  export type RegisterApplicationAnswerIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    application?: boolean | RegisterApplicationDefaultArgs<ExtArgs>
  }

  export type $RegisterApplicationAnswerPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "RegisterApplicationAnswer"
    objects: {
      application: Prisma.$RegisterApplicationPayload<ExtArgs>
    }
    scalars: $Extensions.GetPayloadResult<{
      id: string
      applicationId: string
      fieldId: string
      value: string
    }, ExtArgs["result"]["registerApplicationAnswer"]>
    composites: {}
  }

  type RegisterApplicationAnswerGetPayload<S extends boolean | null | undefined | RegisterApplicationAnswerDefaultArgs> = $Result.GetResult<Prisma.$RegisterApplicationAnswerPayload, S>

  type RegisterApplicationAnswerCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = 
    Omit<RegisterApplicationAnswerFindManyArgs, 'select' | 'include' | 'distinct'> & {
      select?: RegisterApplicationAnswerCountAggregateInputType | true
    }

  export interface RegisterApplicationAnswerDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['RegisterApplicationAnswer'], meta: { name: 'RegisterApplicationAnswer' } }
    /**
     * Find zero or one RegisterApplicationAnswer that matches the filter.
     * @param {RegisterApplicationAnswerFindUniqueArgs} args - Arguments to find a RegisterApplicationAnswer
     * @example
     * // Get one RegisterApplicationAnswer
     * const registerApplicationAnswer = await prisma.registerApplicationAnswer.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends RegisterApplicationAnswerFindUniqueArgs>(args: SelectSubset<T, RegisterApplicationAnswerFindUniqueArgs<ExtArgs>>): Prisma__RegisterApplicationAnswerClient<$Result.GetResult<Prisma.$RegisterApplicationAnswerPayload<ExtArgs>, T, "findUnique"> | null, null, ExtArgs>

    /**
     * Find one RegisterApplicationAnswer that matches the filter or throw an error with `error.code='P2025'` 
     * if no matches were found.
     * @param {RegisterApplicationAnswerFindUniqueOrThrowArgs} args - Arguments to find a RegisterApplicationAnswer
     * @example
     * // Get one RegisterApplicationAnswer
     * const registerApplicationAnswer = await prisma.registerApplicationAnswer.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends RegisterApplicationAnswerFindUniqueOrThrowArgs>(args: SelectSubset<T, RegisterApplicationAnswerFindUniqueOrThrowArgs<ExtArgs>>): Prisma__RegisterApplicationAnswerClient<$Result.GetResult<Prisma.$RegisterApplicationAnswerPayload<ExtArgs>, T, "findUniqueOrThrow">, never, ExtArgs>

    /**
     * Find the first RegisterApplicationAnswer that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterApplicationAnswerFindFirstArgs} args - Arguments to find a RegisterApplicationAnswer
     * @example
     * // Get one RegisterApplicationAnswer
     * const registerApplicationAnswer = await prisma.registerApplicationAnswer.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends RegisterApplicationAnswerFindFirstArgs>(args?: SelectSubset<T, RegisterApplicationAnswerFindFirstArgs<ExtArgs>>): Prisma__RegisterApplicationAnswerClient<$Result.GetResult<Prisma.$RegisterApplicationAnswerPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first RegisterApplicationAnswer that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterApplicationAnswerFindFirstOrThrowArgs} args - Arguments to find a RegisterApplicationAnswer
     * @example
     * // Get one RegisterApplicationAnswer
     * const registerApplicationAnswer = await prisma.registerApplicationAnswer.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends RegisterApplicationAnswerFindFirstOrThrowArgs>(args?: SelectSubset<T, RegisterApplicationAnswerFindFirstOrThrowArgs<ExtArgs>>): Prisma__RegisterApplicationAnswerClient<$Result.GetResult<Prisma.$RegisterApplicationAnswerPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more RegisterApplicationAnswers that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterApplicationAnswerFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all RegisterApplicationAnswers
     * const registerApplicationAnswers = await prisma.registerApplicationAnswer.findMany()
     * 
     * // Get first 10 RegisterApplicationAnswers
     * const registerApplicationAnswers = await prisma.registerApplicationAnswer.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const registerApplicationAnswerWithIdOnly = await prisma.registerApplicationAnswer.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends RegisterApplicationAnswerFindManyArgs>(args?: SelectSubset<T, RegisterApplicationAnswerFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$RegisterApplicationAnswerPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a RegisterApplicationAnswer.
     * @param {RegisterApplicationAnswerCreateArgs} args - Arguments to create a RegisterApplicationAnswer.
     * @example
     * // Create one RegisterApplicationAnswer
     * const RegisterApplicationAnswer = await prisma.registerApplicationAnswer.create({
     *   data: {
     *     // ... data to create a RegisterApplicationAnswer
     *   }
     * })
     * 
     */
    create<T extends RegisterApplicationAnswerCreateArgs>(args: SelectSubset<T, RegisterApplicationAnswerCreateArgs<ExtArgs>>): Prisma__RegisterApplicationAnswerClient<$Result.GetResult<Prisma.$RegisterApplicationAnswerPayload<ExtArgs>, T, "create">, never, ExtArgs>

    /**
     * Create many RegisterApplicationAnswers.
     * @param {RegisterApplicationAnswerCreateManyArgs} args - Arguments to create many RegisterApplicationAnswers.
     * @example
     * // Create many RegisterApplicationAnswers
     * const registerApplicationAnswer = await prisma.registerApplicationAnswer.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends RegisterApplicationAnswerCreateManyArgs>(args?: SelectSubset<T, RegisterApplicationAnswerCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many RegisterApplicationAnswers and returns the data saved in the database.
     * @param {RegisterApplicationAnswerCreateManyAndReturnArgs} args - Arguments to create many RegisterApplicationAnswers.
     * @example
     * // Create many RegisterApplicationAnswers
     * const registerApplicationAnswer = await prisma.registerApplicationAnswer.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many RegisterApplicationAnswers and only return the `id`
     * const registerApplicationAnswerWithIdOnly = await prisma.registerApplicationAnswer.createManyAndReturn({ 
     *   select: { id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends RegisterApplicationAnswerCreateManyAndReturnArgs>(args?: SelectSubset<T, RegisterApplicationAnswerCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$RegisterApplicationAnswerPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a RegisterApplicationAnswer.
     * @param {RegisterApplicationAnswerDeleteArgs} args - Arguments to delete one RegisterApplicationAnswer.
     * @example
     * // Delete one RegisterApplicationAnswer
     * const RegisterApplicationAnswer = await prisma.registerApplicationAnswer.delete({
     *   where: {
     *     // ... filter to delete one RegisterApplicationAnswer
     *   }
     * })
     * 
     */
    delete<T extends RegisterApplicationAnswerDeleteArgs>(args: SelectSubset<T, RegisterApplicationAnswerDeleteArgs<ExtArgs>>): Prisma__RegisterApplicationAnswerClient<$Result.GetResult<Prisma.$RegisterApplicationAnswerPayload<ExtArgs>, T, "delete">, never, ExtArgs>

    /**
     * Update one RegisterApplicationAnswer.
     * @param {RegisterApplicationAnswerUpdateArgs} args - Arguments to update one RegisterApplicationAnswer.
     * @example
     * // Update one RegisterApplicationAnswer
     * const registerApplicationAnswer = await prisma.registerApplicationAnswer.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends RegisterApplicationAnswerUpdateArgs>(args: SelectSubset<T, RegisterApplicationAnswerUpdateArgs<ExtArgs>>): Prisma__RegisterApplicationAnswerClient<$Result.GetResult<Prisma.$RegisterApplicationAnswerPayload<ExtArgs>, T, "update">, never, ExtArgs>

    /**
     * Delete zero or more RegisterApplicationAnswers.
     * @param {RegisterApplicationAnswerDeleteManyArgs} args - Arguments to filter RegisterApplicationAnswers to delete.
     * @example
     * // Delete a few RegisterApplicationAnswers
     * const { count } = await prisma.registerApplicationAnswer.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends RegisterApplicationAnswerDeleteManyArgs>(args?: SelectSubset<T, RegisterApplicationAnswerDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more RegisterApplicationAnswers.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterApplicationAnswerUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many RegisterApplicationAnswers
     * const registerApplicationAnswer = await prisma.registerApplicationAnswer.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends RegisterApplicationAnswerUpdateManyArgs>(args: SelectSubset<T, RegisterApplicationAnswerUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create or update one RegisterApplicationAnswer.
     * @param {RegisterApplicationAnswerUpsertArgs} args - Arguments to update or create a RegisterApplicationAnswer.
     * @example
     * // Update or create a RegisterApplicationAnswer
     * const registerApplicationAnswer = await prisma.registerApplicationAnswer.upsert({
     *   create: {
     *     // ... data to create a RegisterApplicationAnswer
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the RegisterApplicationAnswer we want to update
     *   }
     * })
     */
    upsert<T extends RegisterApplicationAnswerUpsertArgs>(args: SelectSubset<T, RegisterApplicationAnswerUpsertArgs<ExtArgs>>): Prisma__RegisterApplicationAnswerClient<$Result.GetResult<Prisma.$RegisterApplicationAnswerPayload<ExtArgs>, T, "upsert">, never, ExtArgs>


    /**
     * Count the number of RegisterApplicationAnswers.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterApplicationAnswerCountArgs} args - Arguments to filter RegisterApplicationAnswers to count.
     * @example
     * // Count the number of RegisterApplicationAnswers
     * const count = await prisma.registerApplicationAnswer.count({
     *   where: {
     *     // ... the filter for the RegisterApplicationAnswers we want to count
     *   }
     * })
    **/
    count<T extends RegisterApplicationAnswerCountArgs>(
      args?: Subset<T, RegisterApplicationAnswerCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], RegisterApplicationAnswerCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a RegisterApplicationAnswer.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterApplicationAnswerAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends RegisterApplicationAnswerAggregateArgs>(args: Subset<T, RegisterApplicationAnswerAggregateArgs>): Prisma.PrismaPromise<GetRegisterApplicationAnswerAggregateType<T>>

    /**
     * Group by RegisterApplicationAnswer.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RegisterApplicationAnswerGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends RegisterApplicationAnswerGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: RegisterApplicationAnswerGroupByArgs['orderBy'] }
        : { orderBy?: RegisterApplicationAnswerGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, RegisterApplicationAnswerGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetRegisterApplicationAnswerGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the RegisterApplicationAnswer model
   */
  readonly fields: RegisterApplicationAnswerFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for RegisterApplicationAnswer.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__RegisterApplicationAnswerClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    application<T extends RegisterApplicationDefaultArgs<ExtArgs> = {}>(args?: Subset<T, RegisterApplicationDefaultArgs<ExtArgs>>): Prisma__RegisterApplicationClient<$Result.GetResult<Prisma.$RegisterApplicationPayload<ExtArgs>, T, "findUniqueOrThrow"> | Null, Null, ExtArgs>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the RegisterApplicationAnswer model
   */ 
  interface RegisterApplicationAnswerFieldRefs {
    readonly id: FieldRef<"RegisterApplicationAnswer", 'String'>
    readonly applicationId: FieldRef<"RegisterApplicationAnswer", 'String'>
    readonly fieldId: FieldRef<"RegisterApplicationAnswer", 'String'>
    readonly value: FieldRef<"RegisterApplicationAnswer", 'String'>
  }
    

  // Custom InputTypes
  /**
   * RegisterApplicationAnswer findUnique
   */
  export type RegisterApplicationAnswerFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplicationAnswer
     */
    select?: RegisterApplicationAnswerSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationAnswerInclude<ExtArgs> | null
    /**
     * Filter, which RegisterApplicationAnswer to fetch.
     */
    where: RegisterApplicationAnswerWhereUniqueInput
  }

  /**
   * RegisterApplicationAnswer findUniqueOrThrow
   */
  export type RegisterApplicationAnswerFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplicationAnswer
     */
    select?: RegisterApplicationAnswerSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationAnswerInclude<ExtArgs> | null
    /**
     * Filter, which RegisterApplicationAnswer to fetch.
     */
    where: RegisterApplicationAnswerWhereUniqueInput
  }

  /**
   * RegisterApplicationAnswer findFirst
   */
  export type RegisterApplicationAnswerFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplicationAnswer
     */
    select?: RegisterApplicationAnswerSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationAnswerInclude<ExtArgs> | null
    /**
     * Filter, which RegisterApplicationAnswer to fetch.
     */
    where?: RegisterApplicationAnswerWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterApplicationAnswers to fetch.
     */
    orderBy?: RegisterApplicationAnswerOrderByWithRelationInput | RegisterApplicationAnswerOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for RegisterApplicationAnswers.
     */
    cursor?: RegisterApplicationAnswerWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterApplicationAnswers from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterApplicationAnswers.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of RegisterApplicationAnswers.
     */
    distinct?: RegisterApplicationAnswerScalarFieldEnum | RegisterApplicationAnswerScalarFieldEnum[]
  }

  /**
   * RegisterApplicationAnswer findFirstOrThrow
   */
  export type RegisterApplicationAnswerFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplicationAnswer
     */
    select?: RegisterApplicationAnswerSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationAnswerInclude<ExtArgs> | null
    /**
     * Filter, which RegisterApplicationAnswer to fetch.
     */
    where?: RegisterApplicationAnswerWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterApplicationAnswers to fetch.
     */
    orderBy?: RegisterApplicationAnswerOrderByWithRelationInput | RegisterApplicationAnswerOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for RegisterApplicationAnswers.
     */
    cursor?: RegisterApplicationAnswerWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterApplicationAnswers from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterApplicationAnswers.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of RegisterApplicationAnswers.
     */
    distinct?: RegisterApplicationAnswerScalarFieldEnum | RegisterApplicationAnswerScalarFieldEnum[]
  }

  /**
   * RegisterApplicationAnswer findMany
   */
  export type RegisterApplicationAnswerFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplicationAnswer
     */
    select?: RegisterApplicationAnswerSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationAnswerInclude<ExtArgs> | null
    /**
     * Filter, which RegisterApplicationAnswers to fetch.
     */
    where?: RegisterApplicationAnswerWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of RegisterApplicationAnswers to fetch.
     */
    orderBy?: RegisterApplicationAnswerOrderByWithRelationInput | RegisterApplicationAnswerOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing RegisterApplicationAnswers.
     */
    cursor?: RegisterApplicationAnswerWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` RegisterApplicationAnswers from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` RegisterApplicationAnswers.
     */
    skip?: number
    distinct?: RegisterApplicationAnswerScalarFieldEnum | RegisterApplicationAnswerScalarFieldEnum[]
  }

  /**
   * RegisterApplicationAnswer create
   */
  export type RegisterApplicationAnswerCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplicationAnswer
     */
    select?: RegisterApplicationAnswerSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationAnswerInclude<ExtArgs> | null
    /**
     * The data needed to create a RegisterApplicationAnswer.
     */
    data: XOR<RegisterApplicationAnswerCreateInput, RegisterApplicationAnswerUncheckedCreateInput>
  }

  /**
   * RegisterApplicationAnswer createMany
   */
  export type RegisterApplicationAnswerCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many RegisterApplicationAnswers.
     */
    data: RegisterApplicationAnswerCreateManyInput | RegisterApplicationAnswerCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * RegisterApplicationAnswer createManyAndReturn
   */
  export type RegisterApplicationAnswerCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplicationAnswer
     */
    select?: RegisterApplicationAnswerSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many RegisterApplicationAnswers.
     */
    data: RegisterApplicationAnswerCreateManyInput | RegisterApplicationAnswerCreateManyInput[]
    skipDuplicates?: boolean
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationAnswerIncludeCreateManyAndReturn<ExtArgs> | null
  }

  /**
   * RegisterApplicationAnswer update
   */
  export type RegisterApplicationAnswerUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplicationAnswer
     */
    select?: RegisterApplicationAnswerSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationAnswerInclude<ExtArgs> | null
    /**
     * The data needed to update a RegisterApplicationAnswer.
     */
    data: XOR<RegisterApplicationAnswerUpdateInput, RegisterApplicationAnswerUncheckedUpdateInput>
    /**
     * Choose, which RegisterApplicationAnswer to update.
     */
    where: RegisterApplicationAnswerWhereUniqueInput
  }

  /**
   * RegisterApplicationAnswer updateMany
   */
  export type RegisterApplicationAnswerUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update RegisterApplicationAnswers.
     */
    data: XOR<RegisterApplicationAnswerUpdateManyMutationInput, RegisterApplicationAnswerUncheckedUpdateManyInput>
    /**
     * Filter which RegisterApplicationAnswers to update
     */
    where?: RegisterApplicationAnswerWhereInput
  }

  /**
   * RegisterApplicationAnswer upsert
   */
  export type RegisterApplicationAnswerUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplicationAnswer
     */
    select?: RegisterApplicationAnswerSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationAnswerInclude<ExtArgs> | null
    /**
     * The filter to search for the RegisterApplicationAnswer to update in case it exists.
     */
    where: RegisterApplicationAnswerWhereUniqueInput
    /**
     * In case the RegisterApplicationAnswer found by the `where` argument doesn't exist, create a new RegisterApplicationAnswer with this data.
     */
    create: XOR<RegisterApplicationAnswerCreateInput, RegisterApplicationAnswerUncheckedCreateInput>
    /**
     * In case the RegisterApplicationAnswer was found with the provided `where` argument, update it with this data.
     */
    update: XOR<RegisterApplicationAnswerUpdateInput, RegisterApplicationAnswerUncheckedUpdateInput>
  }

  /**
   * RegisterApplicationAnswer delete
   */
  export type RegisterApplicationAnswerDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplicationAnswer
     */
    select?: RegisterApplicationAnswerSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationAnswerInclude<ExtArgs> | null
    /**
     * Filter which RegisterApplicationAnswer to delete.
     */
    where: RegisterApplicationAnswerWhereUniqueInput
  }

  /**
   * RegisterApplicationAnswer deleteMany
   */
  export type RegisterApplicationAnswerDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which RegisterApplicationAnswers to delete
     */
    where?: RegisterApplicationAnswerWhereInput
  }

  /**
   * RegisterApplicationAnswer without action
   */
  export type RegisterApplicationAnswerDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RegisterApplicationAnswer
     */
    select?: RegisterApplicationAnswerSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: RegisterApplicationAnswerInclude<ExtArgs> | null
  }


  /**
   * Enums
   */

  export const TransactionIsolationLevel: {
    ReadUncommitted: 'ReadUncommitted',
    ReadCommitted: 'ReadCommitted',
    RepeatableRead: 'RepeatableRead',
    Serializable: 'Serializable'
  };

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


  export const GuildSettingsScalarFieldEnum: {
    guildId: 'guildId',
    welcomeChannelId: 'welcomeChannelId',
    logChannelId: 'logChannelId',
    automodEnabled: 'automodEnabled',
    automodConfig: 'automodConfig',
    levelingEnabled: 'levelingEnabled',
    ticketsEnabled: 'ticketsEnabled',
    musicEnabled: 'musicEnabled',
    statuspageEnabled: 'statuspageEnabled',
    statuspageConfig: 'statuspageConfig',
    dynamicVoiceEnabled: 'dynamicVoiceEnabled',
    dynamicVoiceConfig: 'dynamicVoiceConfig',
    supportLoginConfig: 'supportLoginConfig',
    birthdayEnabled: 'birthdayEnabled',
    birthdayConfig: 'birthdayConfig',
    reactionRolesEnabled: 'reactionRolesEnabled',
    reactionRolesConfig: 'reactionRolesConfig',
    eventsEnabled: 'eventsEnabled',
    registerEnabled: 'registerEnabled',
    registerConfig: 'registerConfig',
    serverStatsEnabled: 'serverStatsEnabled',
    serverStatsConfig: 'serverStatsConfig',
    supportRoleId: 'supportRoleId',
    updatedAt: 'updatedAt',
    createdAt: 'createdAt'
  };

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


  export const TicketScalarFieldEnum: {
    id: 'id',
    ticketNumber: 'ticketNumber',
    userId: 'userId',
    channelId: 'channelId',
    guildId: 'guildId',
    topic: 'topic',
    priority: 'priority',
    status: 'status',
    claimedBy: 'claimedBy',
    transcript: 'transcript',
    firstClaimAt: 'firstClaimAt',
    firstResponseAt: 'firstResponseAt',
    kbSuggestionSentAt: 'kbSuggestionSentAt',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

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


  export const TicketAutomationRuleScalarFieldEnum: {
    id: 'id',
    guildId: 'guildId',
    name: 'name',
    condition: 'condition',
    action: 'action',
    active: 'active',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

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


  export const KnowledgeBaseArticleScalarFieldEnum: {
    id: 'id',
    guildId: 'guildId',
    title: 'title',
    keywords: 'keywords',
    content: 'content',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

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


  export const LevelScalarFieldEnum: {
    id: 'id',
    userId: 'userId',
    guildId: 'guildId',
    xp: 'xp',
    level: 'level',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

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


  export const TicketSupportSessionScalarFieldEnum: {
    id: 'id',
    guildId: 'guildId',
    userId: 'userId',
    roleId: 'roleId',
    startedAt: 'startedAt',
    endedAt: 'endedAt',
    durationSeconds: 'durationSeconds'
  };

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


  export const BirthdayScalarFieldEnum: {
    id: 'id',
    userId: 'userId',
    guildId: 'guildId',
    birthDate: 'birthDate',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

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


  export const ReactionRoleSetScalarFieldEnum: {
    id: 'id',
    guildId: 'guildId',
    channelId: 'channelId',
    messageId: 'messageId',
    title: 'title',
    description: 'description',
    entries: 'entries',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

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


  export const EventScalarFieldEnum: {
    id: 'id',
    guildId: 'guildId',
    title: 'title',
    description: 'description',
    channelId: 'channelId',
    startTime: 'startTime',
    repeatType: 'repeatType',
    repeatConfig: 'repeatConfig',
    reminderOffsetMinutes: 'reminderOffsetMinutes',
    roleId: 'roleId',
    isActive: 'isActive',
    lastReminderAt: 'lastReminderAt',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

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


  export const EventSignupScalarFieldEnum: {
    id: 'id',
    eventId: 'eventId',
    guildId: 'guildId',
    userId: 'userId',
    createdAt: 'createdAt',
    canceledAt: 'canceledAt'
  };

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


  export const RegisterFormScalarFieldEnum: {
    id: 'id',
    guildId: 'guildId',
    name: 'name',
    description: 'description',
    reviewChannelId: 'reviewChannelId',
    notifyRoleIds: 'notifyRoleIds',
    isActive: 'isActive',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

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


  export const RegisterFormFieldScalarFieldEnum: {
    id: 'id',
    formId: 'formId',
    label: 'label',
    type: 'type',
    required: 'required',
    order: 'order'
  };

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


  export const RegisterApplicationScalarFieldEnum: {
    id: 'id',
    guildId: 'guildId',
    userId: 'userId',
    formId: 'formId',
    status: 'status',
    reviewedBy: 'reviewedBy',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

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


  export const RegisterApplicationAnswerScalarFieldEnum: {
    id: 'id',
    applicationId: 'applicationId',
    fieldId: 'fieldId',
    value: 'value'
  };

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


  export const SortOrder: {
    asc: 'asc',
    desc: 'desc'
  };

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


  export const NullableJsonNullValueInput: {
    DbNull: typeof DbNull,
    JsonNull: typeof JsonNull
  };

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


  export const JsonNullValueInput: {
    JsonNull: typeof JsonNull
  };

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


  export const QueryMode: {
    default: 'default',
    insensitive: 'insensitive'
  };

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


  export const JsonNullValueFilter: {
    DbNull: typeof DbNull,
    JsonNull: typeof JsonNull,
    AnyNull: typeof AnyNull
  };

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


  export const NullsOrder: {
    first: 'first',
    last: 'last'
  };

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


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


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


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


  export type GuildSettingsWhereInput = {
    AND?: GuildSettingsWhereInput | GuildSettingsWhereInput[]
    OR?: GuildSettingsWhereInput[]
    NOT?: GuildSettingsWhereInput | GuildSettingsWhereInput[]
    guildId?: StringFilter<"GuildSettings"> | string
    welcomeChannelId?: StringNullableFilter<"GuildSettings"> | string | null
    logChannelId?: StringNullableFilter<"GuildSettings"> | string | null
    automodEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    automodConfig?: JsonNullableFilter<"GuildSettings">
    levelingEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    ticketsEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    musicEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    statuspageEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    statuspageConfig?: JsonNullableFilter<"GuildSettings">
    dynamicVoiceEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    dynamicVoiceConfig?: JsonNullableFilter<"GuildSettings">
    supportLoginConfig?: JsonNullableFilter<"GuildSettings">
    birthdayEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    birthdayConfig?: JsonNullableFilter<"GuildSettings">
    reactionRolesEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    reactionRolesConfig?: JsonNullableFilter<"GuildSettings">
    eventsEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    registerEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    registerConfig?: JsonNullableFilter<"GuildSettings">
    serverStatsEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    serverStatsConfig?: JsonNullableFilter<"GuildSettings">
    supportRoleId?: StringNullableFilter<"GuildSettings"> | string | null
    updatedAt?: DateTimeFilter<"GuildSettings"> | Date | string
    createdAt?: DateTimeFilter<"GuildSettings"> | Date | string
  }

  export type GuildSettingsOrderByWithRelationInput = {
    guildId?: SortOrder
    welcomeChannelId?: SortOrderInput | SortOrder
    logChannelId?: SortOrderInput | SortOrder
    automodEnabled?: SortOrderInput | SortOrder
    automodConfig?: SortOrderInput | SortOrder
    levelingEnabled?: SortOrderInput | SortOrder
    ticketsEnabled?: SortOrderInput | SortOrder
    musicEnabled?: SortOrderInput | SortOrder
    statuspageEnabled?: SortOrderInput | SortOrder
    statuspageConfig?: SortOrderInput | SortOrder
    dynamicVoiceEnabled?: SortOrderInput | SortOrder
    dynamicVoiceConfig?: SortOrderInput | SortOrder
    supportLoginConfig?: SortOrderInput | SortOrder
    birthdayEnabled?: SortOrderInput | SortOrder
    birthdayConfig?: SortOrderInput | SortOrder
    reactionRolesEnabled?: SortOrderInput | SortOrder
    reactionRolesConfig?: SortOrderInput | SortOrder
    eventsEnabled?: SortOrderInput | SortOrder
    registerEnabled?: SortOrderInput | SortOrder
    registerConfig?: SortOrderInput | SortOrder
    serverStatsEnabled?: SortOrderInput | SortOrder
    serverStatsConfig?: SortOrderInput | SortOrder
    supportRoleId?: SortOrderInput | SortOrder
    updatedAt?: SortOrder
    createdAt?: SortOrder
  }

  export type GuildSettingsWhereUniqueInput = Prisma.AtLeast<{
    guildId?: string
    AND?: GuildSettingsWhereInput | GuildSettingsWhereInput[]
    OR?: GuildSettingsWhereInput[]
    NOT?: GuildSettingsWhereInput | GuildSettingsWhereInput[]
    welcomeChannelId?: StringNullableFilter<"GuildSettings"> | string | null
    logChannelId?: StringNullableFilter<"GuildSettings"> | string | null
    automodEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    automodConfig?: JsonNullableFilter<"GuildSettings">
    levelingEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    ticketsEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    musicEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    statuspageEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    statuspageConfig?: JsonNullableFilter<"GuildSettings">
    dynamicVoiceEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    dynamicVoiceConfig?: JsonNullableFilter<"GuildSettings">
    supportLoginConfig?: JsonNullableFilter<"GuildSettings">
    birthdayEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    birthdayConfig?: JsonNullableFilter<"GuildSettings">
    reactionRolesEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    reactionRolesConfig?: JsonNullableFilter<"GuildSettings">
    eventsEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    registerEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    registerConfig?: JsonNullableFilter<"GuildSettings">
    serverStatsEnabled?: BoolNullableFilter<"GuildSettings"> | boolean | null
    serverStatsConfig?: JsonNullableFilter<"GuildSettings">
    supportRoleId?: StringNullableFilter<"GuildSettings"> | string | null
    updatedAt?: DateTimeFilter<"GuildSettings"> | Date | string
    createdAt?: DateTimeFilter<"GuildSettings"> | Date | string
  }, "guildId">

  export type GuildSettingsOrderByWithAggregationInput = {
    guildId?: SortOrder
    welcomeChannelId?: SortOrderInput | SortOrder
    logChannelId?: SortOrderInput | SortOrder
    automodEnabled?: SortOrderInput | SortOrder
    automodConfig?: SortOrderInput | SortOrder
    levelingEnabled?: SortOrderInput | SortOrder
    ticketsEnabled?: SortOrderInput | SortOrder
    musicEnabled?: SortOrderInput | SortOrder
    statuspageEnabled?: SortOrderInput | SortOrder
    statuspageConfig?: SortOrderInput | SortOrder
    dynamicVoiceEnabled?: SortOrderInput | SortOrder
    dynamicVoiceConfig?: SortOrderInput | SortOrder
    supportLoginConfig?: SortOrderInput | SortOrder
    birthdayEnabled?: SortOrderInput | SortOrder
    birthdayConfig?: SortOrderInput | SortOrder
    reactionRolesEnabled?: SortOrderInput | SortOrder
    reactionRolesConfig?: SortOrderInput | SortOrder
    eventsEnabled?: SortOrderInput | SortOrder
    registerEnabled?: SortOrderInput | SortOrder
    registerConfig?: SortOrderInput | SortOrder
    serverStatsEnabled?: SortOrderInput | SortOrder
    serverStatsConfig?: SortOrderInput | SortOrder
    supportRoleId?: SortOrderInput | SortOrder
    updatedAt?: SortOrder
    createdAt?: SortOrder
    _count?: GuildSettingsCountOrderByAggregateInput
    _max?: GuildSettingsMaxOrderByAggregateInput
    _min?: GuildSettingsMinOrderByAggregateInput
  }

  export type GuildSettingsScalarWhereWithAggregatesInput = {
    AND?: GuildSettingsScalarWhereWithAggregatesInput | GuildSettingsScalarWhereWithAggregatesInput[]
    OR?: GuildSettingsScalarWhereWithAggregatesInput[]
    NOT?: GuildSettingsScalarWhereWithAggregatesInput | GuildSettingsScalarWhereWithAggregatesInput[]
    guildId?: StringWithAggregatesFilter<"GuildSettings"> | string
    welcomeChannelId?: StringNullableWithAggregatesFilter<"GuildSettings"> | string | null
    logChannelId?: StringNullableWithAggregatesFilter<"GuildSettings"> | string | null
    automodEnabled?: BoolNullableWithAggregatesFilter<"GuildSettings"> | boolean | null
    automodConfig?: JsonNullableWithAggregatesFilter<"GuildSettings">
    levelingEnabled?: BoolNullableWithAggregatesFilter<"GuildSettings"> | boolean | null
    ticketsEnabled?: BoolNullableWithAggregatesFilter<"GuildSettings"> | boolean | null
    musicEnabled?: BoolNullableWithAggregatesFilter<"GuildSettings"> | boolean | null
    statuspageEnabled?: BoolNullableWithAggregatesFilter<"GuildSettings"> | boolean | null
    statuspageConfig?: JsonNullableWithAggregatesFilter<"GuildSettings">
    dynamicVoiceEnabled?: BoolNullableWithAggregatesFilter<"GuildSettings"> | boolean | null
    dynamicVoiceConfig?: JsonNullableWithAggregatesFilter<"GuildSettings">
    supportLoginConfig?: JsonNullableWithAggregatesFilter<"GuildSettings">
    birthdayEnabled?: BoolNullableWithAggregatesFilter<"GuildSettings"> | boolean | null
    birthdayConfig?: JsonNullableWithAggregatesFilter<"GuildSettings">
    reactionRolesEnabled?: BoolNullableWithAggregatesFilter<"GuildSettings"> | boolean | null
    reactionRolesConfig?: JsonNullableWithAggregatesFilter<"GuildSettings">
    eventsEnabled?: BoolNullableWithAggregatesFilter<"GuildSettings"> | boolean | null
    registerEnabled?: BoolNullableWithAggregatesFilter<"GuildSettings"> | boolean | null
    registerConfig?: JsonNullableWithAggregatesFilter<"GuildSettings">
    serverStatsEnabled?: BoolNullableWithAggregatesFilter<"GuildSettings"> | boolean | null
    serverStatsConfig?: JsonNullableWithAggregatesFilter<"GuildSettings">
    supportRoleId?: StringNullableWithAggregatesFilter<"GuildSettings"> | string | null
    updatedAt?: DateTimeWithAggregatesFilter<"GuildSettings"> | Date | string
    createdAt?: DateTimeWithAggregatesFilter<"GuildSettings"> | Date | string
  }

  export type TicketWhereInput = {
    AND?: TicketWhereInput | TicketWhereInput[]
    OR?: TicketWhereInput[]
    NOT?: TicketWhereInput | TicketWhereInput[]
    id?: StringFilter<"Ticket"> | string
    ticketNumber?: IntFilter<"Ticket"> | number
    userId?: StringFilter<"Ticket"> | string
    channelId?: StringFilter<"Ticket"> | string
    guildId?: StringFilter<"Ticket"> | string
    topic?: StringNullableFilter<"Ticket"> | string | null
    priority?: StringFilter<"Ticket"> | string
    status?: StringFilter<"Ticket"> | string
    claimedBy?: StringNullableFilter<"Ticket"> | string | null
    transcript?: StringNullableFilter<"Ticket"> | string | null
    firstClaimAt?: DateTimeNullableFilter<"Ticket"> | Date | string | null
    firstResponseAt?: DateTimeNullableFilter<"Ticket"> | Date | string | null
    kbSuggestionSentAt?: DateTimeNullableFilter<"Ticket"> | Date | string | null
    createdAt?: DateTimeFilter<"Ticket"> | Date | string
    updatedAt?: DateTimeFilter<"Ticket"> | Date | string
  }

  export type TicketOrderByWithRelationInput = {
    id?: SortOrder
    ticketNumber?: SortOrder
    userId?: SortOrder
    channelId?: SortOrder
    guildId?: SortOrder
    topic?: SortOrderInput | SortOrder
    priority?: SortOrder
    status?: SortOrder
    claimedBy?: SortOrderInput | SortOrder
    transcript?: SortOrderInput | SortOrder
    firstClaimAt?: SortOrderInput | SortOrder
    firstResponseAt?: SortOrderInput | SortOrder
    kbSuggestionSentAt?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type TicketWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    AND?: TicketWhereInput | TicketWhereInput[]
    OR?: TicketWhereInput[]
    NOT?: TicketWhereInput | TicketWhereInput[]
    ticketNumber?: IntFilter<"Ticket"> | number
    userId?: StringFilter<"Ticket"> | string
    channelId?: StringFilter<"Ticket"> | string
    guildId?: StringFilter<"Ticket"> | string
    topic?: StringNullableFilter<"Ticket"> | string | null
    priority?: StringFilter<"Ticket"> | string
    status?: StringFilter<"Ticket"> | string
    claimedBy?: StringNullableFilter<"Ticket"> | string | null
    transcript?: StringNullableFilter<"Ticket"> | string | null
    firstClaimAt?: DateTimeNullableFilter<"Ticket"> | Date | string | null
    firstResponseAt?: DateTimeNullableFilter<"Ticket"> | Date | string | null
    kbSuggestionSentAt?: DateTimeNullableFilter<"Ticket"> | Date | string | null
    createdAt?: DateTimeFilter<"Ticket"> | Date | string
    updatedAt?: DateTimeFilter<"Ticket"> | Date | string
  }, "id">

  export type TicketOrderByWithAggregationInput = {
    id?: SortOrder
    ticketNumber?: SortOrder
    userId?: SortOrder
    channelId?: SortOrder
    guildId?: SortOrder
    topic?: SortOrderInput | SortOrder
    priority?: SortOrder
    status?: SortOrder
    claimedBy?: SortOrderInput | SortOrder
    transcript?: SortOrderInput | SortOrder
    firstClaimAt?: SortOrderInput | SortOrder
    firstResponseAt?: SortOrderInput | SortOrder
    kbSuggestionSentAt?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: TicketCountOrderByAggregateInput
    _avg?: TicketAvgOrderByAggregateInput
    _max?: TicketMaxOrderByAggregateInput
    _min?: TicketMinOrderByAggregateInput
    _sum?: TicketSumOrderByAggregateInput
  }

  export type TicketScalarWhereWithAggregatesInput = {
    AND?: TicketScalarWhereWithAggregatesInput | TicketScalarWhereWithAggregatesInput[]
    OR?: TicketScalarWhereWithAggregatesInput[]
    NOT?: TicketScalarWhereWithAggregatesInput | TicketScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"Ticket"> | string
    ticketNumber?: IntWithAggregatesFilter<"Ticket"> | number
    userId?: StringWithAggregatesFilter<"Ticket"> | string
    channelId?: StringWithAggregatesFilter<"Ticket"> | string
    guildId?: StringWithAggregatesFilter<"Ticket"> | string
    topic?: StringNullableWithAggregatesFilter<"Ticket"> | string | null
    priority?: StringWithAggregatesFilter<"Ticket"> | string
    status?: StringWithAggregatesFilter<"Ticket"> | string
    claimedBy?: StringNullableWithAggregatesFilter<"Ticket"> | string | null
    transcript?: StringNullableWithAggregatesFilter<"Ticket"> | string | null
    firstClaimAt?: DateTimeNullableWithAggregatesFilter<"Ticket"> | Date | string | null
    firstResponseAt?: DateTimeNullableWithAggregatesFilter<"Ticket"> | Date | string | null
    kbSuggestionSentAt?: DateTimeNullableWithAggregatesFilter<"Ticket"> | Date | string | null
    createdAt?: DateTimeWithAggregatesFilter<"Ticket"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"Ticket"> | Date | string
  }

  export type TicketAutomationRuleWhereInput = {
    AND?: TicketAutomationRuleWhereInput | TicketAutomationRuleWhereInput[]
    OR?: TicketAutomationRuleWhereInput[]
    NOT?: TicketAutomationRuleWhereInput | TicketAutomationRuleWhereInput[]
    id?: StringFilter<"TicketAutomationRule"> | string
    guildId?: StringFilter<"TicketAutomationRule"> | string
    name?: StringFilter<"TicketAutomationRule"> | string
    condition?: JsonFilter<"TicketAutomationRule">
    action?: JsonFilter<"TicketAutomationRule">
    active?: BoolFilter<"TicketAutomationRule"> | boolean
    createdAt?: DateTimeFilter<"TicketAutomationRule"> | Date | string
    updatedAt?: DateTimeFilter<"TicketAutomationRule"> | Date | string
  }

  export type TicketAutomationRuleOrderByWithRelationInput = {
    id?: SortOrder
    guildId?: SortOrder
    name?: SortOrder
    condition?: SortOrder
    action?: SortOrder
    active?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type TicketAutomationRuleWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    AND?: TicketAutomationRuleWhereInput | TicketAutomationRuleWhereInput[]
    OR?: TicketAutomationRuleWhereInput[]
    NOT?: TicketAutomationRuleWhereInput | TicketAutomationRuleWhereInput[]
    guildId?: StringFilter<"TicketAutomationRule"> | string
    name?: StringFilter<"TicketAutomationRule"> | string
    condition?: JsonFilter<"TicketAutomationRule">
    action?: JsonFilter<"TicketAutomationRule">
    active?: BoolFilter<"TicketAutomationRule"> | boolean
    createdAt?: DateTimeFilter<"TicketAutomationRule"> | Date | string
    updatedAt?: DateTimeFilter<"TicketAutomationRule"> | Date | string
  }, "id">

  export type TicketAutomationRuleOrderByWithAggregationInput = {
    id?: SortOrder
    guildId?: SortOrder
    name?: SortOrder
    condition?: SortOrder
    action?: SortOrder
    active?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: TicketAutomationRuleCountOrderByAggregateInput
    _max?: TicketAutomationRuleMaxOrderByAggregateInput
    _min?: TicketAutomationRuleMinOrderByAggregateInput
  }

  export type TicketAutomationRuleScalarWhereWithAggregatesInput = {
    AND?: TicketAutomationRuleScalarWhereWithAggregatesInput | TicketAutomationRuleScalarWhereWithAggregatesInput[]
    OR?: TicketAutomationRuleScalarWhereWithAggregatesInput[]
    NOT?: TicketAutomationRuleScalarWhereWithAggregatesInput | TicketAutomationRuleScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"TicketAutomationRule"> | string
    guildId?: StringWithAggregatesFilter<"TicketAutomationRule"> | string
    name?: StringWithAggregatesFilter<"TicketAutomationRule"> | string
    condition?: JsonWithAggregatesFilter<"TicketAutomationRule">
    action?: JsonWithAggregatesFilter<"TicketAutomationRule">
    active?: BoolWithAggregatesFilter<"TicketAutomationRule"> | boolean
    createdAt?: DateTimeWithAggregatesFilter<"TicketAutomationRule"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"TicketAutomationRule"> | Date | string
  }

  export type KnowledgeBaseArticleWhereInput = {
    AND?: KnowledgeBaseArticleWhereInput | KnowledgeBaseArticleWhereInput[]
    OR?: KnowledgeBaseArticleWhereInput[]
    NOT?: KnowledgeBaseArticleWhereInput | KnowledgeBaseArticleWhereInput[]
    id?: StringFilter<"KnowledgeBaseArticle"> | string
    guildId?: StringFilter<"KnowledgeBaseArticle"> | string
    title?: StringFilter<"KnowledgeBaseArticle"> | string
    keywords?: StringNullableListFilter<"KnowledgeBaseArticle">
    content?: StringFilter<"KnowledgeBaseArticle"> | string
    createdAt?: DateTimeFilter<"KnowledgeBaseArticle"> | Date | string
    updatedAt?: DateTimeFilter<"KnowledgeBaseArticle"> | Date | string
  }

  export type KnowledgeBaseArticleOrderByWithRelationInput = {
    id?: SortOrder
    guildId?: SortOrder
    title?: SortOrder
    keywords?: SortOrder
    content?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type KnowledgeBaseArticleWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    AND?: KnowledgeBaseArticleWhereInput | KnowledgeBaseArticleWhereInput[]
    OR?: KnowledgeBaseArticleWhereInput[]
    NOT?: KnowledgeBaseArticleWhereInput | KnowledgeBaseArticleWhereInput[]
    guildId?: StringFilter<"KnowledgeBaseArticle"> | string
    title?: StringFilter<"KnowledgeBaseArticle"> | string
    keywords?: StringNullableListFilter<"KnowledgeBaseArticle">
    content?: StringFilter<"KnowledgeBaseArticle"> | string
    createdAt?: DateTimeFilter<"KnowledgeBaseArticle"> | Date | string
    updatedAt?: DateTimeFilter<"KnowledgeBaseArticle"> | Date | string
  }, "id">

  export type KnowledgeBaseArticleOrderByWithAggregationInput = {
    id?: SortOrder
    guildId?: SortOrder
    title?: SortOrder
    keywords?: SortOrder
    content?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: KnowledgeBaseArticleCountOrderByAggregateInput
    _max?: KnowledgeBaseArticleMaxOrderByAggregateInput
    _min?: KnowledgeBaseArticleMinOrderByAggregateInput
  }

  export type KnowledgeBaseArticleScalarWhereWithAggregatesInput = {
    AND?: KnowledgeBaseArticleScalarWhereWithAggregatesInput | KnowledgeBaseArticleScalarWhereWithAggregatesInput[]
    OR?: KnowledgeBaseArticleScalarWhereWithAggregatesInput[]
    NOT?: KnowledgeBaseArticleScalarWhereWithAggregatesInput | KnowledgeBaseArticleScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"KnowledgeBaseArticle"> | string
    guildId?: StringWithAggregatesFilter<"KnowledgeBaseArticle"> | string
    title?: StringWithAggregatesFilter<"KnowledgeBaseArticle"> | string
    keywords?: StringNullableListFilter<"KnowledgeBaseArticle">
    content?: StringWithAggregatesFilter<"KnowledgeBaseArticle"> | string
    createdAt?: DateTimeWithAggregatesFilter<"KnowledgeBaseArticle"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"KnowledgeBaseArticle"> | Date | string
  }

  export type LevelWhereInput = {
    AND?: LevelWhereInput | LevelWhereInput[]
    OR?: LevelWhereInput[]
    NOT?: LevelWhereInput | LevelWhereInput[]
    id?: StringFilter<"Level"> | string
    userId?: StringFilter<"Level"> | string
    guildId?: StringFilter<"Level"> | string
    xp?: IntFilter<"Level"> | number
    level?: IntFilter<"Level"> | number
    createdAt?: DateTimeFilter<"Level"> | Date | string
    updatedAt?: DateTimeFilter<"Level"> | Date | string
  }

  export type LevelOrderByWithRelationInput = {
    id?: SortOrder
    userId?: SortOrder
    guildId?: SortOrder
    xp?: SortOrder
    level?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type LevelWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    userId_guildId?: LevelUserId_guildIdCompoundUniqueInput
    AND?: LevelWhereInput | LevelWhereInput[]
    OR?: LevelWhereInput[]
    NOT?: LevelWhereInput | LevelWhereInput[]
    userId?: StringFilter<"Level"> | string
    guildId?: StringFilter<"Level"> | string
    xp?: IntFilter<"Level"> | number
    level?: IntFilter<"Level"> | number
    createdAt?: DateTimeFilter<"Level"> | Date | string
    updatedAt?: DateTimeFilter<"Level"> | Date | string
  }, "id" | "userId_guildId">

  export type LevelOrderByWithAggregationInput = {
    id?: SortOrder
    userId?: SortOrder
    guildId?: SortOrder
    xp?: SortOrder
    level?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: LevelCountOrderByAggregateInput
    _avg?: LevelAvgOrderByAggregateInput
    _max?: LevelMaxOrderByAggregateInput
    _min?: LevelMinOrderByAggregateInput
    _sum?: LevelSumOrderByAggregateInput
  }

  export type LevelScalarWhereWithAggregatesInput = {
    AND?: LevelScalarWhereWithAggregatesInput | LevelScalarWhereWithAggregatesInput[]
    OR?: LevelScalarWhereWithAggregatesInput[]
    NOT?: LevelScalarWhereWithAggregatesInput | LevelScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"Level"> | string
    userId?: StringWithAggregatesFilter<"Level"> | string
    guildId?: StringWithAggregatesFilter<"Level"> | string
    xp?: IntWithAggregatesFilter<"Level"> | number
    level?: IntWithAggregatesFilter<"Level"> | number
    createdAt?: DateTimeWithAggregatesFilter<"Level"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"Level"> | Date | string
  }

  export type TicketSupportSessionWhereInput = {
    AND?: TicketSupportSessionWhereInput | TicketSupportSessionWhereInput[]
    OR?: TicketSupportSessionWhereInput[]
    NOT?: TicketSupportSessionWhereInput | TicketSupportSessionWhereInput[]
    id?: StringFilter<"TicketSupportSession"> | string
    guildId?: StringFilter<"TicketSupportSession"> | string
    userId?: StringFilter<"TicketSupportSession"> | string
    roleId?: StringFilter<"TicketSupportSession"> | string
    startedAt?: DateTimeFilter<"TicketSupportSession"> | Date | string
    endedAt?: DateTimeNullableFilter<"TicketSupportSession"> | Date | string | null
    durationSeconds?: IntNullableFilter<"TicketSupportSession"> | number | null
  }

  export type TicketSupportSessionOrderByWithRelationInput = {
    id?: SortOrder
    guildId?: SortOrder
    userId?: SortOrder
    roleId?: SortOrder
    startedAt?: SortOrder
    endedAt?: SortOrderInput | SortOrder
    durationSeconds?: SortOrderInput | SortOrder
  }

  export type TicketSupportSessionWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    AND?: TicketSupportSessionWhereInput | TicketSupportSessionWhereInput[]
    OR?: TicketSupportSessionWhereInput[]
    NOT?: TicketSupportSessionWhereInput | TicketSupportSessionWhereInput[]
    guildId?: StringFilter<"TicketSupportSession"> | string
    userId?: StringFilter<"TicketSupportSession"> | string
    roleId?: StringFilter<"TicketSupportSession"> | string
    startedAt?: DateTimeFilter<"TicketSupportSession"> | Date | string
    endedAt?: DateTimeNullableFilter<"TicketSupportSession"> | Date | string | null
    durationSeconds?: IntNullableFilter<"TicketSupportSession"> | number | null
  }, "id">

  export type TicketSupportSessionOrderByWithAggregationInput = {
    id?: SortOrder
    guildId?: SortOrder
    userId?: SortOrder
    roleId?: SortOrder
    startedAt?: SortOrder
    endedAt?: SortOrderInput | SortOrder
    durationSeconds?: SortOrderInput | SortOrder
    _count?: TicketSupportSessionCountOrderByAggregateInput
    _avg?: TicketSupportSessionAvgOrderByAggregateInput
    _max?: TicketSupportSessionMaxOrderByAggregateInput
    _min?: TicketSupportSessionMinOrderByAggregateInput
    _sum?: TicketSupportSessionSumOrderByAggregateInput
  }

  export type TicketSupportSessionScalarWhereWithAggregatesInput = {
    AND?: TicketSupportSessionScalarWhereWithAggregatesInput | TicketSupportSessionScalarWhereWithAggregatesInput[]
    OR?: TicketSupportSessionScalarWhereWithAggregatesInput[]
    NOT?: TicketSupportSessionScalarWhereWithAggregatesInput | TicketSupportSessionScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"TicketSupportSession"> | string
    guildId?: StringWithAggregatesFilter<"TicketSupportSession"> | string
    userId?: StringWithAggregatesFilter<"TicketSupportSession"> | string
    roleId?: StringWithAggregatesFilter<"TicketSupportSession"> | string
    startedAt?: DateTimeWithAggregatesFilter<"TicketSupportSession"> | Date | string
    endedAt?: DateTimeNullableWithAggregatesFilter<"TicketSupportSession"> | Date | string | null
    durationSeconds?: IntNullableWithAggregatesFilter<"TicketSupportSession"> | number | null
  }

  export type BirthdayWhereInput = {
    AND?: BirthdayWhereInput | BirthdayWhereInput[]
    OR?: BirthdayWhereInput[]
    NOT?: BirthdayWhereInput | BirthdayWhereInput[]
    id?: StringFilter<"Birthday"> | string
    userId?: StringFilter<"Birthday"> | string
    guildId?: StringFilter<"Birthday"> | string
    birthDate?: StringFilter<"Birthday"> | string
    createdAt?: DateTimeFilter<"Birthday"> | Date | string
    updatedAt?: DateTimeFilter<"Birthday"> | Date | string
  }

  export type BirthdayOrderByWithRelationInput = {
    id?: SortOrder
    userId?: SortOrder
    guildId?: SortOrder
    birthDate?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type BirthdayWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    birthday_user_guild?: BirthdayBirthday_user_guildCompoundUniqueInput
    AND?: BirthdayWhereInput | BirthdayWhereInput[]
    OR?: BirthdayWhereInput[]
    NOT?: BirthdayWhereInput | BirthdayWhereInput[]
    userId?: StringFilter<"Birthday"> | string
    guildId?: StringFilter<"Birthday"> | string
    birthDate?: StringFilter<"Birthday"> | string
    createdAt?: DateTimeFilter<"Birthday"> | Date | string
    updatedAt?: DateTimeFilter<"Birthday"> | Date | string
  }, "id" | "birthday_user_guild">

  export type BirthdayOrderByWithAggregationInput = {
    id?: SortOrder
    userId?: SortOrder
    guildId?: SortOrder
    birthDate?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: BirthdayCountOrderByAggregateInput
    _max?: BirthdayMaxOrderByAggregateInput
    _min?: BirthdayMinOrderByAggregateInput
  }

  export type BirthdayScalarWhereWithAggregatesInput = {
    AND?: BirthdayScalarWhereWithAggregatesInput | BirthdayScalarWhereWithAggregatesInput[]
    OR?: BirthdayScalarWhereWithAggregatesInput[]
    NOT?: BirthdayScalarWhereWithAggregatesInput | BirthdayScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"Birthday"> | string
    userId?: StringWithAggregatesFilter<"Birthday"> | string
    guildId?: StringWithAggregatesFilter<"Birthday"> | string
    birthDate?: StringWithAggregatesFilter<"Birthday"> | string
    createdAt?: DateTimeWithAggregatesFilter<"Birthday"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"Birthday"> | Date | string
  }

  export type ReactionRoleSetWhereInput = {
    AND?: ReactionRoleSetWhereInput | ReactionRoleSetWhereInput[]
    OR?: ReactionRoleSetWhereInput[]
    NOT?: ReactionRoleSetWhereInput | ReactionRoleSetWhereInput[]
    id?: StringFilter<"ReactionRoleSet"> | string
    guildId?: StringFilter<"ReactionRoleSet"> | string
    channelId?: StringFilter<"ReactionRoleSet"> | string
    messageId?: StringNullableFilter<"ReactionRoleSet"> | string | null
    title?: StringNullableFilter<"ReactionRoleSet"> | string | null
    description?: StringNullableFilter<"ReactionRoleSet"> | string | null
    entries?: JsonFilter<"ReactionRoleSet">
    createdAt?: DateTimeFilter<"ReactionRoleSet"> | Date | string
    updatedAt?: DateTimeFilter<"ReactionRoleSet"> | Date | string
  }

  export type ReactionRoleSetOrderByWithRelationInput = {
    id?: SortOrder
    guildId?: SortOrder
    channelId?: SortOrder
    messageId?: SortOrderInput | SortOrder
    title?: SortOrderInput | SortOrder
    description?: SortOrderInput | SortOrder
    entries?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type ReactionRoleSetWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    AND?: ReactionRoleSetWhereInput | ReactionRoleSetWhereInput[]
    OR?: ReactionRoleSetWhereInput[]
    NOT?: ReactionRoleSetWhereInput | ReactionRoleSetWhereInput[]
    guildId?: StringFilter<"ReactionRoleSet"> | string
    channelId?: StringFilter<"ReactionRoleSet"> | string
    messageId?: StringNullableFilter<"ReactionRoleSet"> | string | null
    title?: StringNullableFilter<"ReactionRoleSet"> | string | null
    description?: StringNullableFilter<"ReactionRoleSet"> | string | null
    entries?: JsonFilter<"ReactionRoleSet">
    createdAt?: DateTimeFilter<"ReactionRoleSet"> | Date | string
    updatedAt?: DateTimeFilter<"ReactionRoleSet"> | Date | string
  }, "id">

  export type ReactionRoleSetOrderByWithAggregationInput = {
    id?: SortOrder
    guildId?: SortOrder
    channelId?: SortOrder
    messageId?: SortOrderInput | SortOrder
    title?: SortOrderInput | SortOrder
    description?: SortOrderInput | SortOrder
    entries?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: ReactionRoleSetCountOrderByAggregateInput
    _max?: ReactionRoleSetMaxOrderByAggregateInput
    _min?: ReactionRoleSetMinOrderByAggregateInput
  }

  export type ReactionRoleSetScalarWhereWithAggregatesInput = {
    AND?: ReactionRoleSetScalarWhereWithAggregatesInput | ReactionRoleSetScalarWhereWithAggregatesInput[]
    OR?: ReactionRoleSetScalarWhereWithAggregatesInput[]
    NOT?: ReactionRoleSetScalarWhereWithAggregatesInput | ReactionRoleSetScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"ReactionRoleSet"> | string
    guildId?: StringWithAggregatesFilter<"ReactionRoleSet"> | string
    channelId?: StringWithAggregatesFilter<"ReactionRoleSet"> | string
    messageId?: StringNullableWithAggregatesFilter<"ReactionRoleSet"> | string | null
    title?: StringNullableWithAggregatesFilter<"ReactionRoleSet"> | string | null
    description?: StringNullableWithAggregatesFilter<"ReactionRoleSet"> | string | null
    entries?: JsonWithAggregatesFilter<"ReactionRoleSet">
    createdAt?: DateTimeWithAggregatesFilter<"ReactionRoleSet"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"ReactionRoleSet"> | Date | string
  }

  export type EventWhereInput = {
    AND?: EventWhereInput | EventWhereInput[]
    OR?: EventWhereInput[]
    NOT?: EventWhereInput | EventWhereInput[]
    id?: StringFilter<"Event"> | string
    guildId?: StringFilter<"Event"> | string
    title?: StringFilter<"Event"> | string
    description?: StringNullableFilter<"Event"> | string | null
    channelId?: StringFilter<"Event"> | string
    startTime?: DateTimeFilter<"Event"> | Date | string
    repeatType?: StringFilter<"Event"> | string
    repeatConfig?: JsonNullableFilter<"Event">
    reminderOffsetMinutes?: IntFilter<"Event"> | number
    roleId?: StringNullableFilter<"Event"> | string | null
    isActive?: BoolFilter<"Event"> | boolean
    lastReminderAt?: DateTimeNullableFilter<"Event"> | Date | string | null
    createdAt?: DateTimeFilter<"Event"> | Date | string
    updatedAt?: DateTimeFilter<"Event"> | Date | string
    signups?: EventSignupListRelationFilter
  }

  export type EventOrderByWithRelationInput = {
    id?: SortOrder
    guildId?: SortOrder
    title?: SortOrder
    description?: SortOrderInput | SortOrder
    channelId?: SortOrder
    startTime?: SortOrder
    repeatType?: SortOrder
    repeatConfig?: SortOrderInput | SortOrder
    reminderOffsetMinutes?: SortOrder
    roleId?: SortOrderInput | SortOrder
    isActive?: SortOrder
    lastReminderAt?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    signups?: EventSignupOrderByRelationAggregateInput
  }

  export type EventWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    AND?: EventWhereInput | EventWhereInput[]
    OR?: EventWhereInput[]
    NOT?: EventWhereInput | EventWhereInput[]
    guildId?: StringFilter<"Event"> | string
    title?: StringFilter<"Event"> | string
    description?: StringNullableFilter<"Event"> | string | null
    channelId?: StringFilter<"Event"> | string
    startTime?: DateTimeFilter<"Event"> | Date | string
    repeatType?: StringFilter<"Event"> | string
    repeatConfig?: JsonNullableFilter<"Event">
    reminderOffsetMinutes?: IntFilter<"Event"> | number
    roleId?: StringNullableFilter<"Event"> | string | null
    isActive?: BoolFilter<"Event"> | boolean
    lastReminderAt?: DateTimeNullableFilter<"Event"> | Date | string | null
    createdAt?: DateTimeFilter<"Event"> | Date | string
    updatedAt?: DateTimeFilter<"Event"> | Date | string
    signups?: EventSignupListRelationFilter
  }, "id">

  export type EventOrderByWithAggregationInput = {
    id?: SortOrder
    guildId?: SortOrder
    title?: SortOrder
    description?: SortOrderInput | SortOrder
    channelId?: SortOrder
    startTime?: SortOrder
    repeatType?: SortOrder
    repeatConfig?: SortOrderInput | SortOrder
    reminderOffsetMinutes?: SortOrder
    roleId?: SortOrderInput | SortOrder
    isActive?: SortOrder
    lastReminderAt?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: EventCountOrderByAggregateInput
    _avg?: EventAvgOrderByAggregateInput
    _max?: EventMaxOrderByAggregateInput
    _min?: EventMinOrderByAggregateInput
    _sum?: EventSumOrderByAggregateInput
  }

  export type EventScalarWhereWithAggregatesInput = {
    AND?: EventScalarWhereWithAggregatesInput | EventScalarWhereWithAggregatesInput[]
    OR?: EventScalarWhereWithAggregatesInput[]
    NOT?: EventScalarWhereWithAggregatesInput | EventScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"Event"> | string
    guildId?: StringWithAggregatesFilter<"Event"> | string
    title?: StringWithAggregatesFilter<"Event"> | string
    description?: StringNullableWithAggregatesFilter<"Event"> | string | null
    channelId?: StringWithAggregatesFilter<"Event"> | string
    startTime?: DateTimeWithAggregatesFilter<"Event"> | Date | string
    repeatType?: StringWithAggregatesFilter<"Event"> | string
    repeatConfig?: JsonNullableWithAggregatesFilter<"Event">
    reminderOffsetMinutes?: IntWithAggregatesFilter<"Event"> | number
    roleId?: StringNullableWithAggregatesFilter<"Event"> | string | null
    isActive?: BoolWithAggregatesFilter<"Event"> | boolean
    lastReminderAt?: DateTimeNullableWithAggregatesFilter<"Event"> | Date | string | null
    createdAt?: DateTimeWithAggregatesFilter<"Event"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"Event"> | Date | string
  }

  export type EventSignupWhereInput = {
    AND?: EventSignupWhereInput | EventSignupWhereInput[]
    OR?: EventSignupWhereInput[]
    NOT?: EventSignupWhereInput | EventSignupWhereInput[]
    id?: StringFilter<"EventSignup"> | string
    eventId?: StringFilter<"EventSignup"> | string
    guildId?: StringFilter<"EventSignup"> | string
    userId?: StringFilter<"EventSignup"> | string
    createdAt?: DateTimeFilter<"EventSignup"> | Date | string
    canceledAt?: DateTimeNullableFilter<"EventSignup"> | Date | string | null
    event?: XOR<EventRelationFilter, EventWhereInput>
  }

  export type EventSignupOrderByWithRelationInput = {
    id?: SortOrder
    eventId?: SortOrder
    guildId?: SortOrder
    userId?: SortOrder
    createdAt?: SortOrder
    canceledAt?: SortOrderInput | SortOrder
    event?: EventOrderByWithRelationInput
  }

  export type EventSignupWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    eventId_userId?: EventSignupEventIdUserIdCompoundUniqueInput
    AND?: EventSignupWhereInput | EventSignupWhereInput[]
    OR?: EventSignupWhereInput[]
    NOT?: EventSignupWhereInput | EventSignupWhereInput[]
    eventId?: StringFilter<"EventSignup"> | string
    guildId?: StringFilter<"EventSignup"> | string
    userId?: StringFilter<"EventSignup"> | string
    createdAt?: DateTimeFilter<"EventSignup"> | Date | string
    canceledAt?: DateTimeNullableFilter<"EventSignup"> | Date | string | null
    event?: XOR<EventRelationFilter, EventWhereInput>
  }, "id" | "eventId_userId">

  export type EventSignupOrderByWithAggregationInput = {
    id?: SortOrder
    eventId?: SortOrder
    guildId?: SortOrder
    userId?: SortOrder
    createdAt?: SortOrder
    canceledAt?: SortOrderInput | SortOrder
    _count?: EventSignupCountOrderByAggregateInput
    _max?: EventSignupMaxOrderByAggregateInput
    _min?: EventSignupMinOrderByAggregateInput
  }

  export type EventSignupScalarWhereWithAggregatesInput = {
    AND?: EventSignupScalarWhereWithAggregatesInput | EventSignupScalarWhereWithAggregatesInput[]
    OR?: EventSignupScalarWhereWithAggregatesInput[]
    NOT?: EventSignupScalarWhereWithAggregatesInput | EventSignupScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"EventSignup"> | string
    eventId?: StringWithAggregatesFilter<"EventSignup"> | string
    guildId?: StringWithAggregatesFilter<"EventSignup"> | string
    userId?: StringWithAggregatesFilter<"EventSignup"> | string
    createdAt?: DateTimeWithAggregatesFilter<"EventSignup"> | Date | string
    canceledAt?: DateTimeNullableWithAggregatesFilter<"EventSignup"> | Date | string | null
  }

  export type RegisterFormWhereInput = {
    AND?: RegisterFormWhereInput | RegisterFormWhereInput[]
    OR?: RegisterFormWhereInput[]
    NOT?: RegisterFormWhereInput | RegisterFormWhereInput[]
    id?: StringFilter<"RegisterForm"> | string
    guildId?: StringFilter<"RegisterForm"> | string
    name?: StringFilter<"RegisterForm"> | string
    description?: StringNullableFilter<"RegisterForm"> | string | null
    reviewChannelId?: StringNullableFilter<"RegisterForm"> | string | null
    notifyRoleIds?: StringNullableListFilter<"RegisterForm">
    isActive?: BoolFilter<"RegisterForm"> | boolean
    createdAt?: DateTimeFilter<"RegisterForm"> | Date | string
    updatedAt?: DateTimeFilter<"RegisterForm"> | Date | string
    fields?: RegisterFormFieldListRelationFilter
    applications?: RegisterApplicationListRelationFilter
  }

  export type RegisterFormOrderByWithRelationInput = {
    id?: SortOrder
    guildId?: SortOrder
    name?: SortOrder
    description?: SortOrderInput | SortOrder
    reviewChannelId?: SortOrderInput | SortOrder
    notifyRoleIds?: SortOrder
    isActive?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    fields?: RegisterFormFieldOrderByRelationAggregateInput
    applications?: RegisterApplicationOrderByRelationAggregateInput
  }

  export type RegisterFormWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    AND?: RegisterFormWhereInput | RegisterFormWhereInput[]
    OR?: RegisterFormWhereInput[]
    NOT?: RegisterFormWhereInput | RegisterFormWhereInput[]
    guildId?: StringFilter<"RegisterForm"> | string
    name?: StringFilter<"RegisterForm"> | string
    description?: StringNullableFilter<"RegisterForm"> | string | null
    reviewChannelId?: StringNullableFilter<"RegisterForm"> | string | null
    notifyRoleIds?: StringNullableListFilter<"RegisterForm">
    isActive?: BoolFilter<"RegisterForm"> | boolean
    createdAt?: DateTimeFilter<"RegisterForm"> | Date | string
    updatedAt?: DateTimeFilter<"RegisterForm"> | Date | string
    fields?: RegisterFormFieldListRelationFilter
    applications?: RegisterApplicationListRelationFilter
  }, "id">

  export type RegisterFormOrderByWithAggregationInput = {
    id?: SortOrder
    guildId?: SortOrder
    name?: SortOrder
    description?: SortOrderInput | SortOrder
    reviewChannelId?: SortOrderInput | SortOrder
    notifyRoleIds?: SortOrder
    isActive?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: RegisterFormCountOrderByAggregateInput
    _max?: RegisterFormMaxOrderByAggregateInput
    _min?: RegisterFormMinOrderByAggregateInput
  }

  export type RegisterFormScalarWhereWithAggregatesInput = {
    AND?: RegisterFormScalarWhereWithAggregatesInput | RegisterFormScalarWhereWithAggregatesInput[]
    OR?: RegisterFormScalarWhereWithAggregatesInput[]
    NOT?: RegisterFormScalarWhereWithAggregatesInput | RegisterFormScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"RegisterForm"> | string
    guildId?: StringWithAggregatesFilter<"RegisterForm"> | string
    name?: StringWithAggregatesFilter<"RegisterForm"> | string
    description?: StringNullableWithAggregatesFilter<"RegisterForm"> | string | null
    reviewChannelId?: StringNullableWithAggregatesFilter<"RegisterForm"> | string | null
    notifyRoleIds?: StringNullableListFilter<"RegisterForm">
    isActive?: BoolWithAggregatesFilter<"RegisterForm"> | boolean
    createdAt?: DateTimeWithAggregatesFilter<"RegisterForm"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"RegisterForm"> | Date | string
  }

  export type RegisterFormFieldWhereInput = {
    AND?: RegisterFormFieldWhereInput | RegisterFormFieldWhereInput[]
    OR?: RegisterFormFieldWhereInput[]
    NOT?: RegisterFormFieldWhereInput | RegisterFormFieldWhereInput[]
    id?: StringFilter<"RegisterFormField"> | string
    formId?: StringFilter<"RegisterFormField"> | string
    label?: StringFilter<"RegisterFormField"> | string
    type?: StringFilter<"RegisterFormField"> | string
    required?: BoolFilter<"RegisterFormField"> | boolean
    order?: IntFilter<"RegisterFormField"> | number
    form?: XOR<RegisterFormRelationFilter, RegisterFormWhereInput>
  }

  export type RegisterFormFieldOrderByWithRelationInput = {
    id?: SortOrder
    formId?: SortOrder
    label?: SortOrder
    type?: SortOrder
    required?: SortOrder
    order?: SortOrder
    form?: RegisterFormOrderByWithRelationInput
  }

  export type RegisterFormFieldWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    AND?: RegisterFormFieldWhereInput | RegisterFormFieldWhereInput[]
    OR?: RegisterFormFieldWhereInput[]
    NOT?: RegisterFormFieldWhereInput | RegisterFormFieldWhereInput[]
    formId?: StringFilter<"RegisterFormField"> | string
    label?: StringFilter<"RegisterFormField"> | string
    type?: StringFilter<"RegisterFormField"> | string
    required?: BoolFilter<"RegisterFormField"> | boolean
    order?: IntFilter<"RegisterFormField"> | number
    form?: XOR<RegisterFormRelationFilter, RegisterFormWhereInput>
  }, "id">

  export type RegisterFormFieldOrderByWithAggregationInput = {
    id?: SortOrder
    formId?: SortOrder
    label?: SortOrder
    type?: SortOrder
    required?: SortOrder
    order?: SortOrder
    _count?: RegisterFormFieldCountOrderByAggregateInput
    _avg?: RegisterFormFieldAvgOrderByAggregateInput
    _max?: RegisterFormFieldMaxOrderByAggregateInput
    _min?: RegisterFormFieldMinOrderByAggregateInput
    _sum?: RegisterFormFieldSumOrderByAggregateInput
  }

  export type RegisterFormFieldScalarWhereWithAggregatesInput = {
    AND?: RegisterFormFieldScalarWhereWithAggregatesInput | RegisterFormFieldScalarWhereWithAggregatesInput[]
    OR?: RegisterFormFieldScalarWhereWithAggregatesInput[]
    NOT?: RegisterFormFieldScalarWhereWithAggregatesInput | RegisterFormFieldScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"RegisterFormField"> | string
    formId?: StringWithAggregatesFilter<"RegisterFormField"> | string
    label?: StringWithAggregatesFilter<"RegisterFormField"> | string
    type?: StringWithAggregatesFilter<"RegisterFormField"> | string
    required?: BoolWithAggregatesFilter<"RegisterFormField"> | boolean
    order?: IntWithAggregatesFilter<"RegisterFormField"> | number
  }

  export type RegisterApplicationWhereInput = {
    AND?: RegisterApplicationWhereInput | RegisterApplicationWhereInput[]
    OR?: RegisterApplicationWhereInput[]
    NOT?: RegisterApplicationWhereInput | RegisterApplicationWhereInput[]
    id?: StringFilter<"RegisterApplication"> | string
    guildId?: StringFilter<"RegisterApplication"> | string
    userId?: StringFilter<"RegisterApplication"> | string
    formId?: StringFilter<"RegisterApplication"> | string
    status?: StringFilter<"RegisterApplication"> | string
    reviewedBy?: StringNullableFilter<"RegisterApplication"> | string | null
    createdAt?: DateTimeFilter<"RegisterApplication"> | Date | string
    updatedAt?: DateTimeFilter<"RegisterApplication"> | Date | string
    answers?: RegisterApplicationAnswerListRelationFilter
    form?: XOR<RegisterFormRelationFilter, RegisterFormWhereInput>
  }

  export type RegisterApplicationOrderByWithRelationInput = {
    id?: SortOrder
    guildId?: SortOrder
    userId?: SortOrder
    formId?: SortOrder
    status?: SortOrder
    reviewedBy?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    answers?: RegisterApplicationAnswerOrderByRelationAggregateInput
    form?: RegisterFormOrderByWithRelationInput
  }

  export type RegisterApplicationWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    AND?: RegisterApplicationWhereInput | RegisterApplicationWhereInput[]
    OR?: RegisterApplicationWhereInput[]
    NOT?: RegisterApplicationWhereInput | RegisterApplicationWhereInput[]
    guildId?: StringFilter<"RegisterApplication"> | string
    userId?: StringFilter<"RegisterApplication"> | string
    formId?: StringFilter<"RegisterApplication"> | string
    status?: StringFilter<"RegisterApplication"> | string
    reviewedBy?: StringNullableFilter<"RegisterApplication"> | string | null
    createdAt?: DateTimeFilter<"RegisterApplication"> | Date | string
    updatedAt?: DateTimeFilter<"RegisterApplication"> | Date | string
    answers?: RegisterApplicationAnswerListRelationFilter
    form?: XOR<RegisterFormRelationFilter, RegisterFormWhereInput>
  }, "id">

  export type RegisterApplicationOrderByWithAggregationInput = {
    id?: SortOrder
    guildId?: SortOrder
    userId?: SortOrder
    formId?: SortOrder
    status?: SortOrder
    reviewedBy?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: RegisterApplicationCountOrderByAggregateInput
    _max?: RegisterApplicationMaxOrderByAggregateInput
    _min?: RegisterApplicationMinOrderByAggregateInput
  }

  export type RegisterApplicationScalarWhereWithAggregatesInput = {
    AND?: RegisterApplicationScalarWhereWithAggregatesInput | RegisterApplicationScalarWhereWithAggregatesInput[]
    OR?: RegisterApplicationScalarWhereWithAggregatesInput[]
    NOT?: RegisterApplicationScalarWhereWithAggregatesInput | RegisterApplicationScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"RegisterApplication"> | string
    guildId?: StringWithAggregatesFilter<"RegisterApplication"> | string
    userId?: StringWithAggregatesFilter<"RegisterApplication"> | string
    formId?: StringWithAggregatesFilter<"RegisterApplication"> | string
    status?: StringWithAggregatesFilter<"RegisterApplication"> | string
    reviewedBy?: StringNullableWithAggregatesFilter<"RegisterApplication"> | string | null
    createdAt?: DateTimeWithAggregatesFilter<"RegisterApplication"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"RegisterApplication"> | Date | string
  }

  export type RegisterApplicationAnswerWhereInput = {
    AND?: RegisterApplicationAnswerWhereInput | RegisterApplicationAnswerWhereInput[]
    OR?: RegisterApplicationAnswerWhereInput[]
    NOT?: RegisterApplicationAnswerWhereInput | RegisterApplicationAnswerWhereInput[]
    id?: StringFilter<"RegisterApplicationAnswer"> | string
    applicationId?: StringFilter<"RegisterApplicationAnswer"> | string
    fieldId?: StringFilter<"RegisterApplicationAnswer"> | string
    value?: StringFilter<"RegisterApplicationAnswer"> | string
    application?: XOR<RegisterApplicationRelationFilter, RegisterApplicationWhereInput>
  }

  export type RegisterApplicationAnswerOrderByWithRelationInput = {
    id?: SortOrder
    applicationId?: SortOrder
    fieldId?: SortOrder
    value?: SortOrder
    application?: RegisterApplicationOrderByWithRelationInput
  }

  export type RegisterApplicationAnswerWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    AND?: RegisterApplicationAnswerWhereInput | RegisterApplicationAnswerWhereInput[]
    OR?: RegisterApplicationAnswerWhereInput[]
    NOT?: RegisterApplicationAnswerWhereInput | RegisterApplicationAnswerWhereInput[]
    applicationId?: StringFilter<"RegisterApplicationAnswer"> | string
    fieldId?: StringFilter<"RegisterApplicationAnswer"> | string
    value?: StringFilter<"RegisterApplicationAnswer"> | string
    application?: XOR<RegisterApplicationRelationFilter, RegisterApplicationWhereInput>
  }, "id">

  export type RegisterApplicationAnswerOrderByWithAggregationInput = {
    id?: SortOrder
    applicationId?: SortOrder
    fieldId?: SortOrder
    value?: SortOrder
    _count?: RegisterApplicationAnswerCountOrderByAggregateInput
    _max?: RegisterApplicationAnswerMaxOrderByAggregateInput
    _min?: RegisterApplicationAnswerMinOrderByAggregateInput
  }

  export type RegisterApplicationAnswerScalarWhereWithAggregatesInput = {
    AND?: RegisterApplicationAnswerScalarWhereWithAggregatesInput | RegisterApplicationAnswerScalarWhereWithAggregatesInput[]
    OR?: RegisterApplicationAnswerScalarWhereWithAggregatesInput[]
    NOT?: RegisterApplicationAnswerScalarWhereWithAggregatesInput | RegisterApplicationAnswerScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"RegisterApplicationAnswer"> | string
    applicationId?: StringWithAggregatesFilter<"RegisterApplicationAnswer"> | string
    fieldId?: StringWithAggregatesFilter<"RegisterApplicationAnswer"> | string
    value?: StringWithAggregatesFilter<"RegisterApplicationAnswer"> | string
  }

  export type GuildSettingsCreateInput = {
    guildId: string
    welcomeChannelId?: string | null
    logChannelId?: string | null
    automodEnabled?: boolean | null
    automodConfig?: NullableJsonNullValueInput | InputJsonValue
    levelingEnabled?: boolean | null
    ticketsEnabled?: boolean | null
    musicEnabled?: boolean | null
    statuspageEnabled?: boolean | null
    statuspageConfig?: NullableJsonNullValueInput | InputJsonValue
    dynamicVoiceEnabled?: boolean | null
    dynamicVoiceConfig?: NullableJsonNullValueInput | InputJsonValue
    supportLoginConfig?: NullableJsonNullValueInput | InputJsonValue
    birthdayEnabled?: boolean | null
    birthdayConfig?: NullableJsonNullValueInput | InputJsonValue
    reactionRolesEnabled?: boolean | null
    reactionRolesConfig?: NullableJsonNullValueInput | InputJsonValue
    eventsEnabled?: boolean | null
    registerEnabled?: boolean | null
    registerConfig?: NullableJsonNullValueInput | InputJsonValue
    serverStatsEnabled?: boolean | null
    serverStatsConfig?: NullableJsonNullValueInput | InputJsonValue
    supportRoleId?: string | null
    updatedAt?: Date | string
    createdAt?: Date | string
  }

  export type GuildSettingsUncheckedCreateInput = {
    guildId: string
    welcomeChannelId?: string | null
    logChannelId?: string | null
    automodEnabled?: boolean | null
    automodConfig?: NullableJsonNullValueInput | InputJsonValue
    levelingEnabled?: boolean | null
    ticketsEnabled?: boolean | null
    musicEnabled?: boolean | null
    statuspageEnabled?: boolean | null
    statuspageConfig?: NullableJsonNullValueInput | InputJsonValue
    dynamicVoiceEnabled?: boolean | null
    dynamicVoiceConfig?: NullableJsonNullValueInput | InputJsonValue
    supportLoginConfig?: NullableJsonNullValueInput | InputJsonValue
    birthdayEnabled?: boolean | null
    birthdayConfig?: NullableJsonNullValueInput | InputJsonValue
    reactionRolesEnabled?: boolean | null
    reactionRolesConfig?: NullableJsonNullValueInput | InputJsonValue
    eventsEnabled?: boolean | null
    registerEnabled?: boolean | null
    registerConfig?: NullableJsonNullValueInput | InputJsonValue
    serverStatsEnabled?: boolean | null
    serverStatsConfig?: NullableJsonNullValueInput | InputJsonValue
    supportRoleId?: string | null
    updatedAt?: Date | string
    createdAt?: Date | string
  }

  export type GuildSettingsUpdateInput = {
    guildId?: StringFieldUpdateOperationsInput | string
    welcomeChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    logChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    automodEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    automodConfig?: NullableJsonNullValueInput | InputJsonValue
    levelingEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    ticketsEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    musicEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    statuspageEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    statuspageConfig?: NullableJsonNullValueInput | InputJsonValue
    dynamicVoiceEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    dynamicVoiceConfig?: NullableJsonNullValueInput | InputJsonValue
    supportLoginConfig?: NullableJsonNullValueInput | InputJsonValue
    birthdayEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    birthdayConfig?: NullableJsonNullValueInput | InputJsonValue
    reactionRolesEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    reactionRolesConfig?: NullableJsonNullValueInput | InputJsonValue
    eventsEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    registerEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    registerConfig?: NullableJsonNullValueInput | InputJsonValue
    serverStatsEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    serverStatsConfig?: NullableJsonNullValueInput | InputJsonValue
    supportRoleId?: NullableStringFieldUpdateOperationsInput | string | null
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type GuildSettingsUncheckedUpdateInput = {
    guildId?: StringFieldUpdateOperationsInput | string
    welcomeChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    logChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    automodEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    automodConfig?: NullableJsonNullValueInput | InputJsonValue
    levelingEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    ticketsEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    musicEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    statuspageEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    statuspageConfig?: NullableJsonNullValueInput | InputJsonValue
    dynamicVoiceEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    dynamicVoiceConfig?: NullableJsonNullValueInput | InputJsonValue
    supportLoginConfig?: NullableJsonNullValueInput | InputJsonValue
    birthdayEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    birthdayConfig?: NullableJsonNullValueInput | InputJsonValue
    reactionRolesEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    reactionRolesConfig?: NullableJsonNullValueInput | InputJsonValue
    eventsEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    registerEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    registerConfig?: NullableJsonNullValueInput | InputJsonValue
    serverStatsEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    serverStatsConfig?: NullableJsonNullValueInput | InputJsonValue
    supportRoleId?: NullableStringFieldUpdateOperationsInput | string | null
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type GuildSettingsCreateManyInput = {
    guildId: string
    welcomeChannelId?: string | null
    logChannelId?: string | null
    automodEnabled?: boolean | null
    automodConfig?: NullableJsonNullValueInput | InputJsonValue
    levelingEnabled?: boolean | null
    ticketsEnabled?: boolean | null
    musicEnabled?: boolean | null
    statuspageEnabled?: boolean | null
    statuspageConfig?: NullableJsonNullValueInput | InputJsonValue
    dynamicVoiceEnabled?: boolean | null
    dynamicVoiceConfig?: NullableJsonNullValueInput | InputJsonValue
    supportLoginConfig?: NullableJsonNullValueInput | InputJsonValue
    birthdayEnabled?: boolean | null
    birthdayConfig?: NullableJsonNullValueInput | InputJsonValue
    reactionRolesEnabled?: boolean | null
    reactionRolesConfig?: NullableJsonNullValueInput | InputJsonValue
    eventsEnabled?: boolean | null
    registerEnabled?: boolean | null
    registerConfig?: NullableJsonNullValueInput | InputJsonValue
    serverStatsEnabled?: boolean | null
    serverStatsConfig?: NullableJsonNullValueInput | InputJsonValue
    supportRoleId?: string | null
    updatedAt?: Date | string
    createdAt?: Date | string
  }

  export type GuildSettingsUpdateManyMutationInput = {
    guildId?: StringFieldUpdateOperationsInput | string
    welcomeChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    logChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    automodEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    automodConfig?: NullableJsonNullValueInput | InputJsonValue
    levelingEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    ticketsEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    musicEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    statuspageEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    statuspageConfig?: NullableJsonNullValueInput | InputJsonValue
    dynamicVoiceEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    dynamicVoiceConfig?: NullableJsonNullValueInput | InputJsonValue
    supportLoginConfig?: NullableJsonNullValueInput | InputJsonValue
    birthdayEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    birthdayConfig?: NullableJsonNullValueInput | InputJsonValue
    reactionRolesEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    reactionRolesConfig?: NullableJsonNullValueInput | InputJsonValue
    eventsEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    registerEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    registerConfig?: NullableJsonNullValueInput | InputJsonValue
    serverStatsEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    serverStatsConfig?: NullableJsonNullValueInput | InputJsonValue
    supportRoleId?: NullableStringFieldUpdateOperationsInput | string | null
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type GuildSettingsUncheckedUpdateManyInput = {
    guildId?: StringFieldUpdateOperationsInput | string
    welcomeChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    logChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    automodEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    automodConfig?: NullableJsonNullValueInput | InputJsonValue
    levelingEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    ticketsEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    musicEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    statuspageEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    statuspageConfig?: NullableJsonNullValueInput | InputJsonValue
    dynamicVoiceEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    dynamicVoiceConfig?: NullableJsonNullValueInput | InputJsonValue
    supportLoginConfig?: NullableJsonNullValueInput | InputJsonValue
    birthdayEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    birthdayConfig?: NullableJsonNullValueInput | InputJsonValue
    reactionRolesEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    reactionRolesConfig?: NullableJsonNullValueInput | InputJsonValue
    eventsEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    registerEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    registerConfig?: NullableJsonNullValueInput | InputJsonValue
    serverStatsEnabled?: NullableBoolFieldUpdateOperationsInput | boolean | null
    serverStatsConfig?: NullableJsonNullValueInput | InputJsonValue
    supportRoleId?: NullableStringFieldUpdateOperationsInput | string | null
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type TicketCreateInput = {
    id?: string
    ticketNumber?: number
    userId: string
    channelId: string
    guildId: string
    topic?: string | null
    priority?: string
    status?: string
    claimedBy?: string | null
    transcript?: string | null
    firstClaimAt?: Date | string | null
    firstResponseAt?: Date | string | null
    kbSuggestionSentAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type TicketUncheckedCreateInput = {
    id?: string
    ticketNumber?: number
    userId: string
    channelId: string
    guildId: string
    topic?: string | null
    priority?: string
    status?: string
    claimedBy?: string | null
    transcript?: string | null
    firstClaimAt?: Date | string | null
    firstResponseAt?: Date | string | null
    kbSuggestionSentAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type TicketUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    ticketNumber?: IntFieldUpdateOperationsInput | number
    userId?: StringFieldUpdateOperationsInput | string
    channelId?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    topic?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    claimedBy?: NullableStringFieldUpdateOperationsInput | string | null
    transcript?: NullableStringFieldUpdateOperationsInput | string | null
    firstClaimAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    firstResponseAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    kbSuggestionSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type TicketUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    ticketNumber?: IntFieldUpdateOperationsInput | number
    userId?: StringFieldUpdateOperationsInput | string
    channelId?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    topic?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    claimedBy?: NullableStringFieldUpdateOperationsInput | string | null
    transcript?: NullableStringFieldUpdateOperationsInput | string | null
    firstClaimAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    firstResponseAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    kbSuggestionSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type TicketCreateManyInput = {
    id?: string
    ticketNumber?: number
    userId: string
    channelId: string
    guildId: string
    topic?: string | null
    priority?: string
    status?: string
    claimedBy?: string | null
    transcript?: string | null
    firstClaimAt?: Date | string | null
    firstResponseAt?: Date | string | null
    kbSuggestionSentAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type TicketUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    ticketNumber?: IntFieldUpdateOperationsInput | number
    userId?: StringFieldUpdateOperationsInput | string
    channelId?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    topic?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    claimedBy?: NullableStringFieldUpdateOperationsInput | string | null
    transcript?: NullableStringFieldUpdateOperationsInput | string | null
    firstClaimAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    firstResponseAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    kbSuggestionSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type TicketUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    ticketNumber?: IntFieldUpdateOperationsInput | number
    userId?: StringFieldUpdateOperationsInput | string
    channelId?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    topic?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    claimedBy?: NullableStringFieldUpdateOperationsInput | string | null
    transcript?: NullableStringFieldUpdateOperationsInput | string | null
    firstClaimAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    firstResponseAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    kbSuggestionSentAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type TicketAutomationRuleCreateInput = {
    id?: string
    guildId: string
    name: string
    condition: JsonNullValueInput | InputJsonValue
    action: JsonNullValueInput | InputJsonValue
    active?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type TicketAutomationRuleUncheckedCreateInput = {
    id?: string
    guildId: string
    name: string
    condition: JsonNullValueInput | InputJsonValue
    action: JsonNullValueInput | InputJsonValue
    active?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type TicketAutomationRuleUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    condition?: JsonNullValueInput | InputJsonValue
    action?: JsonNullValueInput | InputJsonValue
    active?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type TicketAutomationRuleUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    condition?: JsonNullValueInput | InputJsonValue
    action?: JsonNullValueInput | InputJsonValue
    active?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type TicketAutomationRuleCreateManyInput = {
    id?: string
    guildId: string
    name: string
    condition: JsonNullValueInput | InputJsonValue
    action: JsonNullValueInput | InputJsonValue
    active?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type TicketAutomationRuleUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    condition?: JsonNullValueInput | InputJsonValue
    action?: JsonNullValueInput | InputJsonValue
    active?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type TicketAutomationRuleUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    condition?: JsonNullValueInput | InputJsonValue
    action?: JsonNullValueInput | InputJsonValue
    active?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type KnowledgeBaseArticleCreateInput = {
    id?: string
    guildId: string
    title: string
    keywords?: KnowledgeBaseArticleCreatekeywordsInput | string[]
    content: string
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type KnowledgeBaseArticleUncheckedCreateInput = {
    id?: string
    guildId: string
    title: string
    keywords?: KnowledgeBaseArticleCreatekeywordsInput | string[]
    content: string
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type KnowledgeBaseArticleUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    title?: StringFieldUpdateOperationsInput | string
    keywords?: KnowledgeBaseArticleUpdatekeywordsInput | string[]
    content?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type KnowledgeBaseArticleUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    title?: StringFieldUpdateOperationsInput | string
    keywords?: KnowledgeBaseArticleUpdatekeywordsInput | string[]
    content?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type KnowledgeBaseArticleCreateManyInput = {
    id?: string
    guildId: string
    title: string
    keywords?: KnowledgeBaseArticleCreatekeywordsInput | string[]
    content: string
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type KnowledgeBaseArticleUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    title?: StringFieldUpdateOperationsInput | string
    keywords?: KnowledgeBaseArticleUpdatekeywordsInput | string[]
    content?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type KnowledgeBaseArticleUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    title?: StringFieldUpdateOperationsInput | string
    keywords?: KnowledgeBaseArticleUpdatekeywordsInput | string[]
    content?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type LevelCreateInput = {
    id?: string
    userId: string
    guildId: string
    xp?: number
    level?: number
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type LevelUncheckedCreateInput = {
    id?: string
    userId: string
    guildId: string
    xp?: number
    level?: number
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type LevelUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    xp?: IntFieldUpdateOperationsInput | number
    level?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type LevelUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    xp?: IntFieldUpdateOperationsInput | number
    level?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type LevelCreateManyInput = {
    id?: string
    userId: string
    guildId: string
    xp?: number
    level?: number
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type LevelUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    xp?: IntFieldUpdateOperationsInput | number
    level?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type LevelUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    xp?: IntFieldUpdateOperationsInput | number
    level?: IntFieldUpdateOperationsInput | number
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type TicketSupportSessionCreateInput = {
    id?: string
    guildId: string
    userId: string
    roleId: string
    startedAt?: Date | string
    endedAt?: Date | string | null
    durationSeconds?: number | null
  }

  export type TicketSupportSessionUncheckedCreateInput = {
    id?: string
    guildId: string
    userId: string
    roleId: string
    startedAt?: Date | string
    endedAt?: Date | string | null
    durationSeconds?: number | null
  }

  export type TicketSupportSessionUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    roleId?: StringFieldUpdateOperationsInput | string
    startedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    endedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    durationSeconds?: NullableIntFieldUpdateOperationsInput | number | null
  }

  export type TicketSupportSessionUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    roleId?: StringFieldUpdateOperationsInput | string
    startedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    endedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    durationSeconds?: NullableIntFieldUpdateOperationsInput | number | null
  }

  export type TicketSupportSessionCreateManyInput = {
    id?: string
    guildId: string
    userId: string
    roleId: string
    startedAt?: Date | string
    endedAt?: Date | string | null
    durationSeconds?: number | null
  }

  export type TicketSupportSessionUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    roleId?: StringFieldUpdateOperationsInput | string
    startedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    endedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    durationSeconds?: NullableIntFieldUpdateOperationsInput | number | null
  }

  export type TicketSupportSessionUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    roleId?: StringFieldUpdateOperationsInput | string
    startedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    endedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    durationSeconds?: NullableIntFieldUpdateOperationsInput | number | null
  }

  export type BirthdayCreateInput = {
    id?: string
    userId: string
    guildId: string
    birthDate: string
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type BirthdayUncheckedCreateInput = {
    id?: string
    userId: string
    guildId: string
    birthDate: string
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type BirthdayUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    birthDate?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type BirthdayUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    birthDate?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type BirthdayCreateManyInput = {
    id?: string
    userId: string
    guildId: string
    birthDate: string
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type BirthdayUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    birthDate?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type BirthdayUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    birthDate?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type ReactionRoleSetCreateInput = {
    id?: string
    guildId: string
    channelId: string
    messageId?: string | null
    title?: string | null
    description?: string | null
    entries: JsonNullValueInput | InputJsonValue
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type ReactionRoleSetUncheckedCreateInput = {
    id?: string
    guildId: string
    channelId: string
    messageId?: string | null
    title?: string | null
    description?: string | null
    entries: JsonNullValueInput | InputJsonValue
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type ReactionRoleSetUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    channelId?: StringFieldUpdateOperationsInput | string
    messageId?: NullableStringFieldUpdateOperationsInput | string | null
    title?: NullableStringFieldUpdateOperationsInput | string | null
    description?: NullableStringFieldUpdateOperationsInput | string | null
    entries?: JsonNullValueInput | InputJsonValue
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type ReactionRoleSetUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    channelId?: StringFieldUpdateOperationsInput | string
    messageId?: NullableStringFieldUpdateOperationsInput | string | null
    title?: NullableStringFieldUpdateOperationsInput | string | null
    description?: NullableStringFieldUpdateOperationsInput | string | null
    entries?: JsonNullValueInput | InputJsonValue
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type ReactionRoleSetCreateManyInput = {
    id?: string
    guildId: string
    channelId: string
    messageId?: string | null
    title?: string | null
    description?: string | null
    entries: JsonNullValueInput | InputJsonValue
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type ReactionRoleSetUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    channelId?: StringFieldUpdateOperationsInput | string
    messageId?: NullableStringFieldUpdateOperationsInput | string | null
    title?: NullableStringFieldUpdateOperationsInput | string | null
    description?: NullableStringFieldUpdateOperationsInput | string | null
    entries?: JsonNullValueInput | InputJsonValue
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type ReactionRoleSetUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    channelId?: StringFieldUpdateOperationsInput | string
    messageId?: NullableStringFieldUpdateOperationsInput | string | null
    title?: NullableStringFieldUpdateOperationsInput | string | null
    description?: NullableStringFieldUpdateOperationsInput | string | null
    entries?: JsonNullValueInput | InputJsonValue
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type EventCreateInput = {
    id?: string
    guildId: string
    title: string
    description?: string | null
    channelId: string
    startTime: Date | string
    repeatType?: string
    repeatConfig?: NullableJsonNullValueInput | InputJsonValue
    reminderOffsetMinutes?: number
    roleId?: string | null
    isActive?: boolean
    lastReminderAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    signups?: EventSignupCreateNestedManyWithoutEventInput
  }

  export type EventUncheckedCreateInput = {
    id?: string
    guildId: string
    title: string
    description?: string | null
    channelId: string
    startTime: Date | string
    repeatType?: string
    repeatConfig?: NullableJsonNullValueInput | InputJsonValue
    reminderOffsetMinutes?: number
    roleId?: string | null
    isActive?: boolean
    lastReminderAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    signups?: EventSignupUncheckedCreateNestedManyWithoutEventInput
  }

  export type EventUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    title?: StringFieldUpdateOperationsInput | string
    description?: NullableStringFieldUpdateOperationsInput | string | null
    channelId?: StringFieldUpdateOperationsInput | string
    startTime?: DateTimeFieldUpdateOperationsInput | Date | string
    repeatType?: StringFieldUpdateOperationsInput | string
    repeatConfig?: NullableJsonNullValueInput | InputJsonValue
    reminderOffsetMinutes?: IntFieldUpdateOperationsInput | number
    roleId?: NullableStringFieldUpdateOperationsInput | string | null
    isActive?: BoolFieldUpdateOperationsInput | boolean
    lastReminderAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    signups?: EventSignupUpdateManyWithoutEventNestedInput
  }

  export type EventUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    title?: StringFieldUpdateOperationsInput | string
    description?: NullableStringFieldUpdateOperationsInput | string | null
    channelId?: StringFieldUpdateOperationsInput | string
    startTime?: DateTimeFieldUpdateOperationsInput | Date | string
    repeatType?: StringFieldUpdateOperationsInput | string
    repeatConfig?: NullableJsonNullValueInput | InputJsonValue
    reminderOffsetMinutes?: IntFieldUpdateOperationsInput | number
    roleId?: NullableStringFieldUpdateOperationsInput | string | null
    isActive?: BoolFieldUpdateOperationsInput | boolean
    lastReminderAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    signups?: EventSignupUncheckedUpdateManyWithoutEventNestedInput
  }

  export type EventCreateManyInput = {
    id?: string
    guildId: string
    title: string
    description?: string | null
    channelId: string
    startTime: Date | string
    repeatType?: string
    repeatConfig?: NullableJsonNullValueInput | InputJsonValue
    reminderOffsetMinutes?: number
    roleId?: string | null
    isActive?: boolean
    lastReminderAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type EventUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    title?: StringFieldUpdateOperationsInput | string
    description?: NullableStringFieldUpdateOperationsInput | string | null
    channelId?: StringFieldUpdateOperationsInput | string
    startTime?: DateTimeFieldUpdateOperationsInput | Date | string
    repeatType?: StringFieldUpdateOperationsInput | string
    repeatConfig?: NullableJsonNullValueInput | InputJsonValue
    reminderOffsetMinutes?: IntFieldUpdateOperationsInput | number
    roleId?: NullableStringFieldUpdateOperationsInput | string | null
    isActive?: BoolFieldUpdateOperationsInput | boolean
    lastReminderAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type EventUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    title?: StringFieldUpdateOperationsInput | string
    description?: NullableStringFieldUpdateOperationsInput | string | null
    channelId?: StringFieldUpdateOperationsInput | string
    startTime?: DateTimeFieldUpdateOperationsInput | Date | string
    repeatType?: StringFieldUpdateOperationsInput | string
    repeatConfig?: NullableJsonNullValueInput | InputJsonValue
    reminderOffsetMinutes?: IntFieldUpdateOperationsInput | number
    roleId?: NullableStringFieldUpdateOperationsInput | string | null
    isActive?: BoolFieldUpdateOperationsInput | boolean
    lastReminderAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type EventSignupCreateInput = {
    id?: string
    guildId: string
    userId: string
    createdAt?: Date | string
    canceledAt?: Date | string | null
    event: EventCreateNestedOneWithoutSignupsInput
  }

  export type EventSignupUncheckedCreateInput = {
    id?: string
    eventId: string
    guildId: string
    userId: string
    createdAt?: Date | string
    canceledAt?: Date | string | null
  }

  export type EventSignupUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    canceledAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    event?: EventUpdateOneRequiredWithoutSignupsNestedInput
  }

  export type EventSignupUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    eventId?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    canceledAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type EventSignupCreateManyInput = {
    id?: string
    eventId: string
    guildId: string
    userId: string
    createdAt?: Date | string
    canceledAt?: Date | string | null
  }

  export type EventSignupUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    canceledAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type EventSignupUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    eventId?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    canceledAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type RegisterFormCreateInput = {
    id?: string
    guildId: string
    name: string
    description?: string | null
    reviewChannelId?: string | null
    notifyRoleIds?: RegisterFormCreatenotifyRoleIdsInput | string[]
    isActive?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
    fields?: RegisterFormFieldCreateNestedManyWithoutFormInput
    applications?: RegisterApplicationCreateNestedManyWithoutFormInput
  }

  export type RegisterFormUncheckedCreateInput = {
    id?: string
    guildId: string
    name: string
    description?: string | null
    reviewChannelId?: string | null
    notifyRoleIds?: RegisterFormCreatenotifyRoleIdsInput | string[]
    isActive?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
    fields?: RegisterFormFieldUncheckedCreateNestedManyWithoutFormInput
    applications?: RegisterApplicationUncheckedCreateNestedManyWithoutFormInput
  }

  export type RegisterFormUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    description?: NullableStringFieldUpdateOperationsInput | string | null
    reviewChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    notifyRoleIds?: RegisterFormUpdatenotifyRoleIdsInput | string[]
    isActive?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    fields?: RegisterFormFieldUpdateManyWithoutFormNestedInput
    applications?: RegisterApplicationUpdateManyWithoutFormNestedInput
  }

  export type RegisterFormUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    description?: NullableStringFieldUpdateOperationsInput | string | null
    reviewChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    notifyRoleIds?: RegisterFormUpdatenotifyRoleIdsInput | string[]
    isActive?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    fields?: RegisterFormFieldUncheckedUpdateManyWithoutFormNestedInput
    applications?: RegisterApplicationUncheckedUpdateManyWithoutFormNestedInput
  }

  export type RegisterFormCreateManyInput = {
    id?: string
    guildId: string
    name: string
    description?: string | null
    reviewChannelId?: string | null
    notifyRoleIds?: RegisterFormCreatenotifyRoleIdsInput | string[]
    isActive?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type RegisterFormUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    description?: NullableStringFieldUpdateOperationsInput | string | null
    reviewChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    notifyRoleIds?: RegisterFormUpdatenotifyRoleIdsInput | string[]
    isActive?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type RegisterFormUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    description?: NullableStringFieldUpdateOperationsInput | string | null
    reviewChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    notifyRoleIds?: RegisterFormUpdatenotifyRoleIdsInput | string[]
    isActive?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type RegisterFormFieldCreateInput = {
    id?: string
    label: string
    type: string
    required?: boolean
    order?: number
    form: RegisterFormCreateNestedOneWithoutFieldsInput
  }

  export type RegisterFormFieldUncheckedCreateInput = {
    id?: string
    formId: string
    label: string
    type: string
    required?: boolean
    order?: number
  }

  export type RegisterFormFieldUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    label?: StringFieldUpdateOperationsInput | string
    type?: StringFieldUpdateOperationsInput | string
    required?: BoolFieldUpdateOperationsInput | boolean
    order?: IntFieldUpdateOperationsInput | number
    form?: RegisterFormUpdateOneRequiredWithoutFieldsNestedInput
  }

  export type RegisterFormFieldUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    formId?: StringFieldUpdateOperationsInput | string
    label?: StringFieldUpdateOperationsInput | string
    type?: StringFieldUpdateOperationsInput | string
    required?: BoolFieldUpdateOperationsInput | boolean
    order?: IntFieldUpdateOperationsInput | number
  }

  export type RegisterFormFieldCreateManyInput = {
    id?: string
    formId: string
    label: string
    type: string
    required?: boolean
    order?: number
  }

  export type RegisterFormFieldUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    label?: StringFieldUpdateOperationsInput | string
    type?: StringFieldUpdateOperationsInput | string
    required?: BoolFieldUpdateOperationsInput | boolean
    order?: IntFieldUpdateOperationsInput | number
  }

  export type RegisterFormFieldUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    formId?: StringFieldUpdateOperationsInput | string
    label?: StringFieldUpdateOperationsInput | string
    type?: StringFieldUpdateOperationsInput | string
    required?: BoolFieldUpdateOperationsInput | boolean
    order?: IntFieldUpdateOperationsInput | number
  }

  export type RegisterApplicationCreateInput = {
    id?: string
    guildId: string
    userId: string
    status?: string
    reviewedBy?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    answers?: RegisterApplicationAnswerCreateNestedManyWithoutApplicationInput
    form: RegisterFormCreateNestedOneWithoutApplicationsInput
  }

  export type RegisterApplicationUncheckedCreateInput = {
    id?: string
    guildId: string
    userId: string
    formId: string
    status?: string
    reviewedBy?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    answers?: RegisterApplicationAnswerUncheckedCreateNestedManyWithoutApplicationInput
  }

  export type RegisterApplicationUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    reviewedBy?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    answers?: RegisterApplicationAnswerUpdateManyWithoutApplicationNestedInput
    form?: RegisterFormUpdateOneRequiredWithoutApplicationsNestedInput
  }

  export type RegisterApplicationUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    formId?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    reviewedBy?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    answers?: RegisterApplicationAnswerUncheckedUpdateManyWithoutApplicationNestedInput
  }

  export type RegisterApplicationCreateManyInput = {
    id?: string
    guildId: string
    userId: string
    formId: string
    status?: string
    reviewedBy?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type RegisterApplicationUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    reviewedBy?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type RegisterApplicationUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    formId?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    reviewedBy?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type RegisterApplicationAnswerCreateInput = {
    id?: string
    fieldId: string
    value: string
    application: RegisterApplicationCreateNestedOneWithoutAnswersInput
  }

  export type RegisterApplicationAnswerUncheckedCreateInput = {
    id?: string
    applicationId: string
    fieldId: string
    value: string
  }

  export type RegisterApplicationAnswerUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    fieldId?: StringFieldUpdateOperationsInput | string
    value?: StringFieldUpdateOperationsInput | string
    application?: RegisterApplicationUpdateOneRequiredWithoutAnswersNestedInput
  }

  export type RegisterApplicationAnswerUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    applicationId?: StringFieldUpdateOperationsInput | string
    fieldId?: StringFieldUpdateOperationsInput | string
    value?: StringFieldUpdateOperationsInput | string
  }

  export type RegisterApplicationAnswerCreateManyInput = {
    id?: string
    applicationId: string
    fieldId: string
    value: string
  }

  export type RegisterApplicationAnswerUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    fieldId?: StringFieldUpdateOperationsInput | string
    value?: StringFieldUpdateOperationsInput | string
  }

  export type RegisterApplicationAnswerUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    applicationId?: StringFieldUpdateOperationsInput | string
    fieldId?: StringFieldUpdateOperationsInput | string
    value?: StringFieldUpdateOperationsInput | string
  }

  export type StringFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[] | ListStringFieldRefInput<$PrismaModel>
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel>
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    mode?: QueryMode
    not?: NestedStringFilter<$PrismaModel> | string
  }

  export type StringNullableFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    mode?: QueryMode
    not?: NestedStringNullableFilter<$PrismaModel> | string | null
  }

  export type BoolNullableFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null
    not?: NestedBoolNullableFilter<$PrismaModel> | boolean | null
  }
  export type JsonNullableFilter<$PrismaModel = never> = 
    | PatchUndefined<
        Either<Required<JsonNullableFilterBase<$PrismaModel>>, Exclude<keyof Required<JsonNullableFilterBase<$PrismaModel>>, 'path'>>,
        Required<JsonNullableFilterBase<$PrismaModel>>
      >
    | OptionalFlat<Omit<Required<JsonNullableFilterBase<$PrismaModel>>, 'path'>>

  export type JsonNullableFilterBase<$PrismaModel = never> = {
    equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
    path?: string[]
    string_contains?: string | StringFieldRefInput<$PrismaModel>
    string_starts_with?: string | StringFieldRefInput<$PrismaModel>
    string_ends_with?: string | StringFieldRefInput<$PrismaModel>
    array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
  }

  export type DateTimeFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel>
    notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel>
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeFilter<$PrismaModel> | Date | string
  }

  export type SortOrderInput = {
    sort: SortOrder
    nulls?: NullsOrder
  }

  export type GuildSettingsCountOrderByAggregateInput = {
    guildId?: SortOrder
    welcomeChannelId?: SortOrder
    logChannelId?: SortOrder
    automodEnabled?: SortOrder
    automodConfig?: SortOrder
    levelingEnabled?: SortOrder
    ticketsEnabled?: SortOrder
    musicEnabled?: SortOrder
    statuspageEnabled?: SortOrder
    statuspageConfig?: SortOrder
    dynamicVoiceEnabled?: SortOrder
    dynamicVoiceConfig?: SortOrder
    supportLoginConfig?: SortOrder
    birthdayEnabled?: SortOrder
    birthdayConfig?: SortOrder
    reactionRolesEnabled?: SortOrder
    reactionRolesConfig?: SortOrder
    eventsEnabled?: SortOrder
    registerEnabled?: SortOrder
    registerConfig?: SortOrder
    serverStatsEnabled?: SortOrder
    serverStatsConfig?: SortOrder
    supportRoleId?: SortOrder
    updatedAt?: SortOrder
    createdAt?: SortOrder
  }

  export type GuildSettingsMaxOrderByAggregateInput = {
    guildId?: SortOrder
    welcomeChannelId?: SortOrder
    logChannelId?: SortOrder
    automodEnabled?: SortOrder
    levelingEnabled?: SortOrder
    ticketsEnabled?: SortOrder
    musicEnabled?: SortOrder
    statuspageEnabled?: SortOrder
    dynamicVoiceEnabled?: SortOrder
    birthdayEnabled?: SortOrder
    reactionRolesEnabled?: SortOrder
    eventsEnabled?: SortOrder
    registerEnabled?: SortOrder
    serverStatsEnabled?: SortOrder
    supportRoleId?: SortOrder
    updatedAt?: SortOrder
    createdAt?: SortOrder
  }

  export type GuildSettingsMinOrderByAggregateInput = {
    guildId?: SortOrder
    welcomeChannelId?: SortOrder
    logChannelId?: SortOrder
    automodEnabled?: SortOrder
    levelingEnabled?: SortOrder
    ticketsEnabled?: SortOrder
    musicEnabled?: SortOrder
    statuspageEnabled?: SortOrder
    dynamicVoiceEnabled?: SortOrder
    birthdayEnabled?: SortOrder
    reactionRolesEnabled?: SortOrder
    eventsEnabled?: SortOrder
    registerEnabled?: SortOrder
    serverStatsEnabled?: SortOrder
    supportRoleId?: SortOrder
    updatedAt?: SortOrder
    createdAt?: SortOrder
  }

  export type StringWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[] | ListStringFieldRefInput<$PrismaModel>
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel>
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    mode?: QueryMode
    not?: NestedStringWithAggregatesFilter<$PrismaModel> | string
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedStringFilter<$PrismaModel>
    _max?: NestedStringFilter<$PrismaModel>
  }

  export type StringNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    mode?: QueryMode
    not?: NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedStringNullableFilter<$PrismaModel>
    _max?: NestedStringNullableFilter<$PrismaModel>
  }

  export type BoolNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null
    not?: NestedBoolNullableWithAggregatesFilter<$PrismaModel> | boolean | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedBoolNullableFilter<$PrismaModel>
    _max?: NestedBoolNullableFilter<$PrismaModel>
  }
  export type JsonNullableWithAggregatesFilter<$PrismaModel = never> = 
    | PatchUndefined<
        Either<Required<JsonNullableWithAggregatesFilterBase<$PrismaModel>>, Exclude<keyof Required<JsonNullableWithAggregatesFilterBase<$PrismaModel>>, 'path'>>,
        Required<JsonNullableWithAggregatesFilterBase<$PrismaModel>>
      >
    | OptionalFlat<Omit<Required<JsonNullableWithAggregatesFilterBase<$PrismaModel>>, 'path'>>

  export type JsonNullableWithAggregatesFilterBase<$PrismaModel = never> = {
    equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
    path?: string[]
    string_contains?: string | StringFieldRefInput<$PrismaModel>
    string_starts_with?: string | StringFieldRefInput<$PrismaModel>
    string_ends_with?: string | StringFieldRefInput<$PrismaModel>
    array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedJsonNullableFilter<$PrismaModel>
    _max?: NestedJsonNullableFilter<$PrismaModel>
  }

  export type DateTimeWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel>
    notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel>
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedDateTimeFilter<$PrismaModel>
    _max?: NestedDateTimeFilter<$PrismaModel>
  }

  export type IntFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel>
    in?: number[] | ListIntFieldRefInput<$PrismaModel>
    notIn?: number[] | ListIntFieldRefInput<$PrismaModel>
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntFilter<$PrismaModel> | number
  }

  export type DateTimeNullableFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null
  }

  export type TicketCountOrderByAggregateInput = {
    id?: SortOrder
    ticketNumber?: SortOrder
    userId?: SortOrder
    channelId?: SortOrder
    guildId?: SortOrder
    topic?: SortOrder
    priority?: SortOrder
    status?: SortOrder
    claimedBy?: SortOrder
    transcript?: SortOrder
    firstClaimAt?: SortOrder
    firstResponseAt?: SortOrder
    kbSuggestionSentAt?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type TicketAvgOrderByAggregateInput = {
    ticketNumber?: SortOrder
  }

  export type TicketMaxOrderByAggregateInput = {
    id?: SortOrder
    ticketNumber?: SortOrder
    userId?: SortOrder
    channelId?: SortOrder
    guildId?: SortOrder
    topic?: SortOrder
    priority?: SortOrder
    status?: SortOrder
    claimedBy?: SortOrder
    transcript?: SortOrder
    firstClaimAt?: SortOrder
    firstResponseAt?: SortOrder
    kbSuggestionSentAt?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type TicketMinOrderByAggregateInput = {
    id?: SortOrder
    ticketNumber?: SortOrder
    userId?: SortOrder
    channelId?: SortOrder
    guildId?: SortOrder
    topic?: SortOrder
    priority?: SortOrder
    status?: SortOrder
    claimedBy?: SortOrder
    transcript?: SortOrder
    firstClaimAt?: SortOrder
    firstResponseAt?: SortOrder
    kbSuggestionSentAt?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type TicketSumOrderByAggregateInput = {
    ticketNumber?: SortOrder
  }

  export type IntWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel>
    in?: number[] | ListIntFieldRefInput<$PrismaModel>
    notIn?: number[] | ListIntFieldRefInput<$PrismaModel>
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntWithAggregatesFilter<$PrismaModel> | number
    _count?: NestedIntFilter<$PrismaModel>
    _avg?: NestedFloatFilter<$PrismaModel>
    _sum?: NestedIntFilter<$PrismaModel>
    _min?: NestedIntFilter<$PrismaModel>
    _max?: NestedIntFilter<$PrismaModel>
  }

  export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedDateTimeNullableFilter<$PrismaModel>
    _max?: NestedDateTimeNullableFilter<$PrismaModel>
  }
  export type JsonFilter<$PrismaModel = never> = 
    | PatchUndefined<
        Either<Required<JsonFilterBase<$PrismaModel>>, Exclude<keyof Required<JsonFilterBase<$PrismaModel>>, 'path'>>,
        Required<JsonFilterBase<$PrismaModel>>
      >
    | OptionalFlat<Omit<Required<JsonFilterBase<$PrismaModel>>, 'path'>>

  export type JsonFilterBase<$PrismaModel = never> = {
    equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
    path?: string[]
    string_contains?: string | StringFieldRefInput<$PrismaModel>
    string_starts_with?: string | StringFieldRefInput<$PrismaModel>
    string_ends_with?: string | StringFieldRefInput<$PrismaModel>
    array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
  }

  export type BoolFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel>
    not?: NestedBoolFilter<$PrismaModel> | boolean
  }

  export type TicketAutomationRuleCountOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    name?: SortOrder
    condition?: SortOrder
    action?: SortOrder
    active?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type TicketAutomationRuleMaxOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    name?: SortOrder
    active?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type TicketAutomationRuleMinOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    name?: SortOrder
    active?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }
  export type JsonWithAggregatesFilter<$PrismaModel = never> = 
    | PatchUndefined<
        Either<Required<JsonWithAggregatesFilterBase<$PrismaModel>>, Exclude<keyof Required<JsonWithAggregatesFilterBase<$PrismaModel>>, 'path'>>,
        Required<JsonWithAggregatesFilterBase<$PrismaModel>>
      >
    | OptionalFlat<Omit<Required<JsonWithAggregatesFilterBase<$PrismaModel>>, 'path'>>

  export type JsonWithAggregatesFilterBase<$PrismaModel = never> = {
    equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
    path?: string[]
    string_contains?: string | StringFieldRefInput<$PrismaModel>
    string_starts_with?: string | StringFieldRefInput<$PrismaModel>
    string_ends_with?: string | StringFieldRefInput<$PrismaModel>
    array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedJsonFilter<$PrismaModel>
    _max?: NestedJsonFilter<$PrismaModel>
  }

  export type BoolWithAggregatesFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel>
    not?: NestedBoolWithAggregatesFilter<$PrismaModel> | boolean
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedBoolFilter<$PrismaModel>
    _max?: NestedBoolFilter<$PrismaModel>
  }

  export type StringNullableListFilter<$PrismaModel = never> = {
    equals?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    has?: string | StringFieldRefInput<$PrismaModel> | null
    hasEvery?: string[] | ListStringFieldRefInput<$PrismaModel>
    hasSome?: string[] | ListStringFieldRefInput<$PrismaModel>
    isEmpty?: boolean
  }

  export type KnowledgeBaseArticleCountOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    title?: SortOrder
    keywords?: SortOrder
    content?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type KnowledgeBaseArticleMaxOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    title?: SortOrder
    content?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type KnowledgeBaseArticleMinOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    title?: SortOrder
    content?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type LevelUserId_guildIdCompoundUniqueInput = {
    userId: string
    guildId: string
  }

  export type LevelCountOrderByAggregateInput = {
    id?: SortOrder
    userId?: SortOrder
    guildId?: SortOrder
    xp?: SortOrder
    level?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type LevelAvgOrderByAggregateInput = {
    xp?: SortOrder
    level?: SortOrder
  }

  export type LevelMaxOrderByAggregateInput = {
    id?: SortOrder
    userId?: SortOrder
    guildId?: SortOrder
    xp?: SortOrder
    level?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type LevelMinOrderByAggregateInput = {
    id?: SortOrder
    userId?: SortOrder
    guildId?: SortOrder
    xp?: SortOrder
    level?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type LevelSumOrderByAggregateInput = {
    xp?: SortOrder
    level?: SortOrder
  }

  export type IntNullableFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel> | null
    in?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntNullableFilter<$PrismaModel> | number | null
  }

  export type TicketSupportSessionCountOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    userId?: SortOrder
    roleId?: SortOrder
    startedAt?: SortOrder
    endedAt?: SortOrder
    durationSeconds?: SortOrder
  }

  export type TicketSupportSessionAvgOrderByAggregateInput = {
    durationSeconds?: SortOrder
  }

  export type TicketSupportSessionMaxOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    userId?: SortOrder
    roleId?: SortOrder
    startedAt?: SortOrder
    endedAt?: SortOrder
    durationSeconds?: SortOrder
  }

  export type TicketSupportSessionMinOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    userId?: SortOrder
    roleId?: SortOrder
    startedAt?: SortOrder
    endedAt?: SortOrder
    durationSeconds?: SortOrder
  }

  export type TicketSupportSessionSumOrderByAggregateInput = {
    durationSeconds?: SortOrder
  }

  export type IntNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel> | null
    in?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _avg?: NestedFloatNullableFilter<$PrismaModel>
    _sum?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedIntNullableFilter<$PrismaModel>
    _max?: NestedIntNullableFilter<$PrismaModel>
  }

  export type BirthdayBirthday_user_guildCompoundUniqueInput = {
    userId: string
    guildId: string
  }

  export type BirthdayCountOrderByAggregateInput = {
    id?: SortOrder
    userId?: SortOrder
    guildId?: SortOrder
    birthDate?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type BirthdayMaxOrderByAggregateInput = {
    id?: SortOrder
    userId?: SortOrder
    guildId?: SortOrder
    birthDate?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type BirthdayMinOrderByAggregateInput = {
    id?: SortOrder
    userId?: SortOrder
    guildId?: SortOrder
    birthDate?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type ReactionRoleSetCountOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    channelId?: SortOrder
    messageId?: SortOrder
    title?: SortOrder
    description?: SortOrder
    entries?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type ReactionRoleSetMaxOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    channelId?: SortOrder
    messageId?: SortOrder
    title?: SortOrder
    description?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type ReactionRoleSetMinOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    channelId?: SortOrder
    messageId?: SortOrder
    title?: SortOrder
    description?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type EventSignupListRelationFilter = {
    every?: EventSignupWhereInput
    some?: EventSignupWhereInput
    none?: EventSignupWhereInput
  }

  export type EventSignupOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type EventCountOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    title?: SortOrder
    description?: SortOrder
    channelId?: SortOrder
    startTime?: SortOrder
    repeatType?: SortOrder
    repeatConfig?: SortOrder
    reminderOffsetMinutes?: SortOrder
    roleId?: SortOrder
    isActive?: SortOrder
    lastReminderAt?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type EventAvgOrderByAggregateInput = {
    reminderOffsetMinutes?: SortOrder
  }

  export type EventMaxOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    title?: SortOrder
    description?: SortOrder
    channelId?: SortOrder
    startTime?: SortOrder
    repeatType?: SortOrder
    reminderOffsetMinutes?: SortOrder
    roleId?: SortOrder
    isActive?: SortOrder
    lastReminderAt?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type EventMinOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    title?: SortOrder
    description?: SortOrder
    channelId?: SortOrder
    startTime?: SortOrder
    repeatType?: SortOrder
    reminderOffsetMinutes?: SortOrder
    roleId?: SortOrder
    isActive?: SortOrder
    lastReminderAt?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type EventSumOrderByAggregateInput = {
    reminderOffsetMinutes?: SortOrder
  }

  export type EventRelationFilter = {
    is?: EventWhereInput
    isNot?: EventWhereInput
  }

  export type EventSignupEventIdUserIdCompoundUniqueInput = {
    eventId: string
    userId: string
  }

  export type EventSignupCountOrderByAggregateInput = {
    id?: SortOrder
    eventId?: SortOrder
    guildId?: SortOrder
    userId?: SortOrder
    createdAt?: SortOrder
    canceledAt?: SortOrder
  }

  export type EventSignupMaxOrderByAggregateInput = {
    id?: SortOrder
    eventId?: SortOrder
    guildId?: SortOrder
    userId?: SortOrder
    createdAt?: SortOrder
    canceledAt?: SortOrder
  }

  export type EventSignupMinOrderByAggregateInput = {
    id?: SortOrder
    eventId?: SortOrder
    guildId?: SortOrder
    userId?: SortOrder
    createdAt?: SortOrder
    canceledAt?: SortOrder
  }

  export type RegisterFormFieldListRelationFilter = {
    every?: RegisterFormFieldWhereInput
    some?: RegisterFormFieldWhereInput
    none?: RegisterFormFieldWhereInput
  }

  export type RegisterApplicationListRelationFilter = {
    every?: RegisterApplicationWhereInput
    some?: RegisterApplicationWhereInput
    none?: RegisterApplicationWhereInput
  }

  export type RegisterFormFieldOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type RegisterApplicationOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type RegisterFormCountOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    name?: SortOrder
    description?: SortOrder
    reviewChannelId?: SortOrder
    notifyRoleIds?: SortOrder
    isActive?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type RegisterFormMaxOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    name?: SortOrder
    description?: SortOrder
    reviewChannelId?: SortOrder
    isActive?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type RegisterFormMinOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    name?: SortOrder
    description?: SortOrder
    reviewChannelId?: SortOrder
    isActive?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type RegisterFormRelationFilter = {
    is?: RegisterFormWhereInput
    isNot?: RegisterFormWhereInput
  }

  export type RegisterFormFieldCountOrderByAggregateInput = {
    id?: SortOrder
    formId?: SortOrder
    label?: SortOrder
    type?: SortOrder
    required?: SortOrder
    order?: SortOrder
  }

  export type RegisterFormFieldAvgOrderByAggregateInput = {
    order?: SortOrder
  }

  export type RegisterFormFieldMaxOrderByAggregateInput = {
    id?: SortOrder
    formId?: SortOrder
    label?: SortOrder
    type?: SortOrder
    required?: SortOrder
    order?: SortOrder
  }

  export type RegisterFormFieldMinOrderByAggregateInput = {
    id?: SortOrder
    formId?: SortOrder
    label?: SortOrder
    type?: SortOrder
    required?: SortOrder
    order?: SortOrder
  }

  export type RegisterFormFieldSumOrderByAggregateInput = {
    order?: SortOrder
  }

  export type RegisterApplicationAnswerListRelationFilter = {
    every?: RegisterApplicationAnswerWhereInput
    some?: RegisterApplicationAnswerWhereInput
    none?: RegisterApplicationAnswerWhereInput
  }

  export type RegisterApplicationAnswerOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type RegisterApplicationCountOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    userId?: SortOrder
    formId?: SortOrder
    status?: SortOrder
    reviewedBy?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type RegisterApplicationMaxOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    userId?: SortOrder
    formId?: SortOrder
    status?: SortOrder
    reviewedBy?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type RegisterApplicationMinOrderByAggregateInput = {
    id?: SortOrder
    guildId?: SortOrder
    userId?: SortOrder
    formId?: SortOrder
    status?: SortOrder
    reviewedBy?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type RegisterApplicationRelationFilter = {
    is?: RegisterApplicationWhereInput
    isNot?: RegisterApplicationWhereInput
  }

  export type RegisterApplicationAnswerCountOrderByAggregateInput = {
    id?: SortOrder
    applicationId?: SortOrder
    fieldId?: SortOrder
    value?: SortOrder
  }

  export type RegisterApplicationAnswerMaxOrderByAggregateInput = {
    id?: SortOrder
    applicationId?: SortOrder
    fieldId?: SortOrder
    value?: SortOrder
  }

  export type RegisterApplicationAnswerMinOrderByAggregateInput = {
    id?: SortOrder
    applicationId?: SortOrder
    fieldId?: SortOrder
    value?: SortOrder
  }

  export type StringFieldUpdateOperationsInput = {
    set?: string
  }

  export type NullableStringFieldUpdateOperationsInput = {
    set?: string | null
  }

  export type NullableBoolFieldUpdateOperationsInput = {
    set?: boolean | null
  }

  export type DateTimeFieldUpdateOperationsInput = {
    set?: Date | string
  }

  export type IntFieldUpdateOperationsInput = {
    set?: number
    increment?: number
    decrement?: number
    multiply?: number
    divide?: number
  }

  export type NullableDateTimeFieldUpdateOperationsInput = {
    set?: Date | string | null
  }

  export type BoolFieldUpdateOperationsInput = {
    set?: boolean
  }

  export type KnowledgeBaseArticleCreatekeywordsInput = {
    set: string[]
  }

  export type KnowledgeBaseArticleUpdatekeywordsInput = {
    set?: string[]
    push?: string | string[]
  }

  export type NullableIntFieldUpdateOperationsInput = {
    set?: number | null
    increment?: number
    decrement?: number
    multiply?: number
    divide?: number
  }

  export type EventSignupCreateNestedManyWithoutEventInput = {
    create?: XOR<EventSignupCreateWithoutEventInput, EventSignupUncheckedCreateWithoutEventInput> | EventSignupCreateWithoutEventInput[] | EventSignupUncheckedCreateWithoutEventInput[]
    connectOrCreate?: EventSignupCreateOrConnectWithoutEventInput | EventSignupCreateOrConnectWithoutEventInput[]
    createMany?: EventSignupCreateManyEventInputEnvelope
    connect?: EventSignupWhereUniqueInput | EventSignupWhereUniqueInput[]
  }

  export type EventSignupUncheckedCreateNestedManyWithoutEventInput = {
    create?: XOR<EventSignupCreateWithoutEventInput, EventSignupUncheckedCreateWithoutEventInput> | EventSignupCreateWithoutEventInput[] | EventSignupUncheckedCreateWithoutEventInput[]
    connectOrCreate?: EventSignupCreateOrConnectWithoutEventInput | EventSignupCreateOrConnectWithoutEventInput[]
    createMany?: EventSignupCreateManyEventInputEnvelope
    connect?: EventSignupWhereUniqueInput | EventSignupWhereUniqueInput[]
  }

  export type EventSignupUpdateManyWithoutEventNestedInput = {
    create?: XOR<EventSignupCreateWithoutEventInput, EventSignupUncheckedCreateWithoutEventInput> | EventSignupCreateWithoutEventInput[] | EventSignupUncheckedCreateWithoutEventInput[]
    connectOrCreate?: EventSignupCreateOrConnectWithoutEventInput | EventSignupCreateOrConnectWithoutEventInput[]
    upsert?: EventSignupUpsertWithWhereUniqueWithoutEventInput | EventSignupUpsertWithWhereUniqueWithoutEventInput[]
    createMany?: EventSignupCreateManyEventInputEnvelope
    set?: EventSignupWhereUniqueInput | EventSignupWhereUniqueInput[]
    disconnect?: EventSignupWhereUniqueInput | EventSignupWhereUniqueInput[]
    delete?: EventSignupWhereUniqueInput | EventSignupWhereUniqueInput[]
    connect?: EventSignupWhereUniqueInput | EventSignupWhereUniqueInput[]
    update?: EventSignupUpdateWithWhereUniqueWithoutEventInput | EventSignupUpdateWithWhereUniqueWithoutEventInput[]
    updateMany?: EventSignupUpdateManyWithWhereWithoutEventInput | EventSignupUpdateManyWithWhereWithoutEventInput[]
    deleteMany?: EventSignupScalarWhereInput | EventSignupScalarWhereInput[]
  }

  export type EventSignupUncheckedUpdateManyWithoutEventNestedInput = {
    create?: XOR<EventSignupCreateWithoutEventInput, EventSignupUncheckedCreateWithoutEventInput> | EventSignupCreateWithoutEventInput[] | EventSignupUncheckedCreateWithoutEventInput[]
    connectOrCreate?: EventSignupCreateOrConnectWithoutEventInput | EventSignupCreateOrConnectWithoutEventInput[]
    upsert?: EventSignupUpsertWithWhereUniqueWithoutEventInput | EventSignupUpsertWithWhereUniqueWithoutEventInput[]
    createMany?: EventSignupCreateManyEventInputEnvelope
    set?: EventSignupWhereUniqueInput | EventSignupWhereUniqueInput[]
    disconnect?: EventSignupWhereUniqueInput | EventSignupWhereUniqueInput[]
    delete?: EventSignupWhereUniqueInput | EventSignupWhereUniqueInput[]
    connect?: EventSignupWhereUniqueInput | EventSignupWhereUniqueInput[]
    update?: EventSignupUpdateWithWhereUniqueWithoutEventInput | EventSignupUpdateWithWhereUniqueWithoutEventInput[]
    updateMany?: EventSignupUpdateManyWithWhereWithoutEventInput | EventSignupUpdateManyWithWhereWithoutEventInput[]
    deleteMany?: EventSignupScalarWhereInput | EventSignupScalarWhereInput[]
  }

  export type EventCreateNestedOneWithoutSignupsInput = {
    create?: XOR<EventCreateWithoutSignupsInput, EventUncheckedCreateWithoutSignupsInput>
    connectOrCreate?: EventCreateOrConnectWithoutSignupsInput
    connect?: EventWhereUniqueInput
  }

  export type EventUpdateOneRequiredWithoutSignupsNestedInput = {
    create?: XOR<EventCreateWithoutSignupsInput, EventUncheckedCreateWithoutSignupsInput>
    connectOrCreate?: EventCreateOrConnectWithoutSignupsInput
    upsert?: EventUpsertWithoutSignupsInput
    connect?: EventWhereUniqueInput
    update?: XOR<XOR<EventUpdateToOneWithWhereWithoutSignupsInput, EventUpdateWithoutSignupsInput>, EventUncheckedUpdateWithoutSignupsInput>
  }

  export type RegisterFormCreatenotifyRoleIdsInput = {
    set: string[]
  }

  export type RegisterFormFieldCreateNestedManyWithoutFormInput = {
    create?: XOR<RegisterFormFieldCreateWithoutFormInput, RegisterFormFieldUncheckedCreateWithoutFormInput> | RegisterFormFieldCreateWithoutFormInput[] | RegisterFormFieldUncheckedCreateWithoutFormInput[]
    connectOrCreate?: RegisterFormFieldCreateOrConnectWithoutFormInput | RegisterFormFieldCreateOrConnectWithoutFormInput[]
    createMany?: RegisterFormFieldCreateManyFormInputEnvelope
    connect?: RegisterFormFieldWhereUniqueInput | RegisterFormFieldWhereUniqueInput[]
  }

  export type RegisterApplicationCreateNestedManyWithoutFormInput = {
    create?: XOR<RegisterApplicationCreateWithoutFormInput, RegisterApplicationUncheckedCreateWithoutFormInput> | RegisterApplicationCreateWithoutFormInput[] | RegisterApplicationUncheckedCreateWithoutFormInput[]
    connectOrCreate?: RegisterApplicationCreateOrConnectWithoutFormInput | RegisterApplicationCreateOrConnectWithoutFormInput[]
    createMany?: RegisterApplicationCreateManyFormInputEnvelope
    connect?: RegisterApplicationWhereUniqueInput | RegisterApplicationWhereUniqueInput[]
  }

  export type RegisterFormFieldUncheckedCreateNestedManyWithoutFormInput = {
    create?: XOR<RegisterFormFieldCreateWithoutFormInput, RegisterFormFieldUncheckedCreateWithoutFormInput> | RegisterFormFieldCreateWithoutFormInput[] | RegisterFormFieldUncheckedCreateWithoutFormInput[]
    connectOrCreate?: RegisterFormFieldCreateOrConnectWithoutFormInput | RegisterFormFieldCreateOrConnectWithoutFormInput[]
    createMany?: RegisterFormFieldCreateManyFormInputEnvelope
    connect?: RegisterFormFieldWhereUniqueInput | RegisterFormFieldWhereUniqueInput[]
  }

  export type RegisterApplicationUncheckedCreateNestedManyWithoutFormInput = {
    create?: XOR<RegisterApplicationCreateWithoutFormInput, RegisterApplicationUncheckedCreateWithoutFormInput> | RegisterApplicationCreateWithoutFormInput[] | RegisterApplicationUncheckedCreateWithoutFormInput[]
    connectOrCreate?: RegisterApplicationCreateOrConnectWithoutFormInput | RegisterApplicationCreateOrConnectWithoutFormInput[]
    createMany?: RegisterApplicationCreateManyFormInputEnvelope
    connect?: RegisterApplicationWhereUniqueInput | RegisterApplicationWhereUniqueInput[]
  }

  export type RegisterFormUpdatenotifyRoleIdsInput = {
    set?: string[]
    push?: string | string[]
  }

  export type RegisterFormFieldUpdateManyWithoutFormNestedInput = {
    create?: XOR<RegisterFormFieldCreateWithoutFormInput, RegisterFormFieldUncheckedCreateWithoutFormInput> | RegisterFormFieldCreateWithoutFormInput[] | RegisterFormFieldUncheckedCreateWithoutFormInput[]
    connectOrCreate?: RegisterFormFieldCreateOrConnectWithoutFormInput | RegisterFormFieldCreateOrConnectWithoutFormInput[]
    upsert?: RegisterFormFieldUpsertWithWhereUniqueWithoutFormInput | RegisterFormFieldUpsertWithWhereUniqueWithoutFormInput[]
    createMany?: RegisterFormFieldCreateManyFormInputEnvelope
    set?: RegisterFormFieldWhereUniqueInput | RegisterFormFieldWhereUniqueInput[]
    disconnect?: RegisterFormFieldWhereUniqueInput | RegisterFormFieldWhereUniqueInput[]
    delete?: RegisterFormFieldWhereUniqueInput | RegisterFormFieldWhereUniqueInput[]
    connect?: RegisterFormFieldWhereUniqueInput | RegisterFormFieldWhereUniqueInput[]
    update?: RegisterFormFieldUpdateWithWhereUniqueWithoutFormInput | RegisterFormFieldUpdateWithWhereUniqueWithoutFormInput[]
    updateMany?: RegisterFormFieldUpdateManyWithWhereWithoutFormInput | RegisterFormFieldUpdateManyWithWhereWithoutFormInput[]
    deleteMany?: RegisterFormFieldScalarWhereInput | RegisterFormFieldScalarWhereInput[]
  }

  export type RegisterApplicationUpdateManyWithoutFormNestedInput = {
    create?: XOR<RegisterApplicationCreateWithoutFormInput, RegisterApplicationUncheckedCreateWithoutFormInput> | RegisterApplicationCreateWithoutFormInput[] | RegisterApplicationUncheckedCreateWithoutFormInput[]
    connectOrCreate?: RegisterApplicationCreateOrConnectWithoutFormInput | RegisterApplicationCreateOrConnectWithoutFormInput[]
    upsert?: RegisterApplicationUpsertWithWhereUniqueWithoutFormInput | RegisterApplicationUpsertWithWhereUniqueWithoutFormInput[]
    createMany?: RegisterApplicationCreateManyFormInputEnvelope
    set?: RegisterApplicationWhereUniqueInput | RegisterApplicationWhereUniqueInput[]
    disconnect?: RegisterApplicationWhereUniqueInput | RegisterApplicationWhereUniqueInput[]
    delete?: RegisterApplicationWhereUniqueInput | RegisterApplicationWhereUniqueInput[]
    connect?: RegisterApplicationWhereUniqueInput | RegisterApplicationWhereUniqueInput[]
    update?: RegisterApplicationUpdateWithWhereUniqueWithoutFormInput | RegisterApplicationUpdateWithWhereUniqueWithoutFormInput[]
    updateMany?: RegisterApplicationUpdateManyWithWhereWithoutFormInput | RegisterApplicationUpdateManyWithWhereWithoutFormInput[]
    deleteMany?: RegisterApplicationScalarWhereInput | RegisterApplicationScalarWhereInput[]
  }

  export type RegisterFormFieldUncheckedUpdateManyWithoutFormNestedInput = {
    create?: XOR<RegisterFormFieldCreateWithoutFormInput, RegisterFormFieldUncheckedCreateWithoutFormInput> | RegisterFormFieldCreateWithoutFormInput[] | RegisterFormFieldUncheckedCreateWithoutFormInput[]
    connectOrCreate?: RegisterFormFieldCreateOrConnectWithoutFormInput | RegisterFormFieldCreateOrConnectWithoutFormInput[]
    upsert?: RegisterFormFieldUpsertWithWhereUniqueWithoutFormInput | RegisterFormFieldUpsertWithWhereUniqueWithoutFormInput[]
    createMany?: RegisterFormFieldCreateManyFormInputEnvelope
    set?: RegisterFormFieldWhereUniqueInput | RegisterFormFieldWhereUniqueInput[]
    disconnect?: RegisterFormFieldWhereUniqueInput | RegisterFormFieldWhereUniqueInput[]
    delete?: RegisterFormFieldWhereUniqueInput | RegisterFormFieldWhereUniqueInput[]
    connect?: RegisterFormFieldWhereUniqueInput | RegisterFormFieldWhereUniqueInput[]
    update?: RegisterFormFieldUpdateWithWhereUniqueWithoutFormInput | RegisterFormFieldUpdateWithWhereUniqueWithoutFormInput[]
    updateMany?: RegisterFormFieldUpdateManyWithWhereWithoutFormInput | RegisterFormFieldUpdateManyWithWhereWithoutFormInput[]
    deleteMany?: RegisterFormFieldScalarWhereInput | RegisterFormFieldScalarWhereInput[]
  }

  export type RegisterApplicationUncheckedUpdateManyWithoutFormNestedInput = {
    create?: XOR<RegisterApplicationCreateWithoutFormInput, RegisterApplicationUncheckedCreateWithoutFormInput> | RegisterApplicationCreateWithoutFormInput[] | RegisterApplicationUncheckedCreateWithoutFormInput[]
    connectOrCreate?: RegisterApplicationCreateOrConnectWithoutFormInput | RegisterApplicationCreateOrConnectWithoutFormInput[]
    upsert?: RegisterApplicationUpsertWithWhereUniqueWithoutFormInput | RegisterApplicationUpsertWithWhereUniqueWithoutFormInput[]
    createMany?: RegisterApplicationCreateManyFormInputEnvelope
    set?: RegisterApplicationWhereUniqueInput | RegisterApplicationWhereUniqueInput[]
    disconnect?: RegisterApplicationWhereUniqueInput | RegisterApplicationWhereUniqueInput[]
    delete?: RegisterApplicationWhereUniqueInput | RegisterApplicationWhereUniqueInput[]
    connect?: RegisterApplicationWhereUniqueInput | RegisterApplicationWhereUniqueInput[]
    update?: RegisterApplicationUpdateWithWhereUniqueWithoutFormInput | RegisterApplicationUpdateWithWhereUniqueWithoutFormInput[]
    updateMany?: RegisterApplicationUpdateManyWithWhereWithoutFormInput | RegisterApplicationUpdateManyWithWhereWithoutFormInput[]
    deleteMany?: RegisterApplicationScalarWhereInput | RegisterApplicationScalarWhereInput[]
  }

  export type RegisterFormCreateNestedOneWithoutFieldsInput = {
    create?: XOR<RegisterFormCreateWithoutFieldsInput, RegisterFormUncheckedCreateWithoutFieldsInput>
    connectOrCreate?: RegisterFormCreateOrConnectWithoutFieldsInput
    connect?: RegisterFormWhereUniqueInput
  }

  export type RegisterFormUpdateOneRequiredWithoutFieldsNestedInput = {
    create?: XOR<RegisterFormCreateWithoutFieldsInput, RegisterFormUncheckedCreateWithoutFieldsInput>
    connectOrCreate?: RegisterFormCreateOrConnectWithoutFieldsInput
    upsert?: RegisterFormUpsertWithoutFieldsInput
    connect?: RegisterFormWhereUniqueInput
    update?: XOR<XOR<RegisterFormUpdateToOneWithWhereWithoutFieldsInput, RegisterFormUpdateWithoutFieldsInput>, RegisterFormUncheckedUpdateWithoutFieldsInput>
  }

  export type RegisterApplicationAnswerCreateNestedManyWithoutApplicationInput = {
    create?: XOR<RegisterApplicationAnswerCreateWithoutApplicationInput, RegisterApplicationAnswerUncheckedCreateWithoutApplicationInput> | RegisterApplicationAnswerCreateWithoutApplicationInput[] | RegisterApplicationAnswerUncheckedCreateWithoutApplicationInput[]
    connectOrCreate?: RegisterApplicationAnswerCreateOrConnectWithoutApplicationInput | RegisterApplicationAnswerCreateOrConnectWithoutApplicationInput[]
    createMany?: RegisterApplicationAnswerCreateManyApplicationInputEnvelope
    connect?: RegisterApplicationAnswerWhereUniqueInput | RegisterApplicationAnswerWhereUniqueInput[]
  }

  export type RegisterFormCreateNestedOneWithoutApplicationsInput = {
    create?: XOR<RegisterFormCreateWithoutApplicationsInput, RegisterFormUncheckedCreateWithoutApplicationsInput>
    connectOrCreate?: RegisterFormCreateOrConnectWithoutApplicationsInput
    connect?: RegisterFormWhereUniqueInput
  }

  export type RegisterApplicationAnswerUncheckedCreateNestedManyWithoutApplicationInput = {
    create?: XOR<RegisterApplicationAnswerCreateWithoutApplicationInput, RegisterApplicationAnswerUncheckedCreateWithoutApplicationInput> | RegisterApplicationAnswerCreateWithoutApplicationInput[] | RegisterApplicationAnswerUncheckedCreateWithoutApplicationInput[]
    connectOrCreate?: RegisterApplicationAnswerCreateOrConnectWithoutApplicationInput | RegisterApplicationAnswerCreateOrConnectWithoutApplicationInput[]
    createMany?: RegisterApplicationAnswerCreateManyApplicationInputEnvelope
    connect?: RegisterApplicationAnswerWhereUniqueInput | RegisterApplicationAnswerWhereUniqueInput[]
  }

  export type RegisterApplicationAnswerUpdateManyWithoutApplicationNestedInput = {
    create?: XOR<RegisterApplicationAnswerCreateWithoutApplicationInput, RegisterApplicationAnswerUncheckedCreateWithoutApplicationInput> | RegisterApplicationAnswerCreateWithoutApplicationInput[] | RegisterApplicationAnswerUncheckedCreateWithoutApplicationInput[]
    connectOrCreate?: RegisterApplicationAnswerCreateOrConnectWithoutApplicationInput | RegisterApplicationAnswerCreateOrConnectWithoutApplicationInput[]
    upsert?: RegisterApplicationAnswerUpsertWithWhereUniqueWithoutApplicationInput | RegisterApplicationAnswerUpsertWithWhereUniqueWithoutApplicationInput[]
    createMany?: RegisterApplicationAnswerCreateManyApplicationInputEnvelope
    set?: RegisterApplicationAnswerWhereUniqueInput | RegisterApplicationAnswerWhereUniqueInput[]
    disconnect?: RegisterApplicationAnswerWhereUniqueInput | RegisterApplicationAnswerWhereUniqueInput[]
    delete?: RegisterApplicationAnswerWhereUniqueInput | RegisterApplicationAnswerWhereUniqueInput[]
    connect?: RegisterApplicationAnswerWhereUniqueInput | RegisterApplicationAnswerWhereUniqueInput[]
    update?: RegisterApplicationAnswerUpdateWithWhereUniqueWithoutApplicationInput | RegisterApplicationAnswerUpdateWithWhereUniqueWithoutApplicationInput[]
    updateMany?: RegisterApplicationAnswerUpdateManyWithWhereWithoutApplicationInput | RegisterApplicationAnswerUpdateManyWithWhereWithoutApplicationInput[]
    deleteMany?: RegisterApplicationAnswerScalarWhereInput | RegisterApplicationAnswerScalarWhereInput[]
  }

  export type RegisterFormUpdateOneRequiredWithoutApplicationsNestedInput = {
    create?: XOR<RegisterFormCreateWithoutApplicationsInput, RegisterFormUncheckedCreateWithoutApplicationsInput>
    connectOrCreate?: RegisterFormCreateOrConnectWithoutApplicationsInput
    upsert?: RegisterFormUpsertWithoutApplicationsInput
    connect?: RegisterFormWhereUniqueInput
    update?: XOR<XOR<RegisterFormUpdateToOneWithWhereWithoutApplicationsInput, RegisterFormUpdateWithoutApplicationsInput>, RegisterFormUncheckedUpdateWithoutApplicationsInput>
  }

  export type RegisterApplicationAnswerUncheckedUpdateManyWithoutApplicationNestedInput = {
    create?: XOR<RegisterApplicationAnswerCreateWithoutApplicationInput, RegisterApplicationAnswerUncheckedCreateWithoutApplicationInput> | RegisterApplicationAnswerCreateWithoutApplicationInput[] | RegisterApplicationAnswerUncheckedCreateWithoutApplicationInput[]
    connectOrCreate?: RegisterApplicationAnswerCreateOrConnectWithoutApplicationInput | RegisterApplicationAnswerCreateOrConnectWithoutApplicationInput[]
    upsert?: RegisterApplicationAnswerUpsertWithWhereUniqueWithoutApplicationInput | RegisterApplicationAnswerUpsertWithWhereUniqueWithoutApplicationInput[]
    createMany?: RegisterApplicationAnswerCreateManyApplicationInputEnvelope
    set?: RegisterApplicationAnswerWhereUniqueInput | RegisterApplicationAnswerWhereUniqueInput[]
    disconnect?: RegisterApplicationAnswerWhereUniqueInput | RegisterApplicationAnswerWhereUniqueInput[]
    delete?: RegisterApplicationAnswerWhereUniqueInput | RegisterApplicationAnswerWhereUniqueInput[]
    connect?: RegisterApplicationAnswerWhereUniqueInput | RegisterApplicationAnswerWhereUniqueInput[]
    update?: RegisterApplicationAnswerUpdateWithWhereUniqueWithoutApplicationInput | RegisterApplicationAnswerUpdateWithWhereUniqueWithoutApplicationInput[]
    updateMany?: RegisterApplicationAnswerUpdateManyWithWhereWithoutApplicationInput | RegisterApplicationAnswerUpdateManyWithWhereWithoutApplicationInput[]
    deleteMany?: RegisterApplicationAnswerScalarWhereInput | RegisterApplicationAnswerScalarWhereInput[]
  }

  export type RegisterApplicationCreateNestedOneWithoutAnswersInput = {
    create?: XOR<RegisterApplicationCreateWithoutAnswersInput, RegisterApplicationUncheckedCreateWithoutAnswersInput>
    connectOrCreate?: RegisterApplicationCreateOrConnectWithoutAnswersInput
    connect?: RegisterApplicationWhereUniqueInput
  }

  export type RegisterApplicationUpdateOneRequiredWithoutAnswersNestedInput = {
    create?: XOR<RegisterApplicationCreateWithoutAnswersInput, RegisterApplicationUncheckedCreateWithoutAnswersInput>
    connectOrCreate?: RegisterApplicationCreateOrConnectWithoutAnswersInput
    upsert?: RegisterApplicationUpsertWithoutAnswersInput
    connect?: RegisterApplicationWhereUniqueInput
    update?: XOR<XOR<RegisterApplicationUpdateToOneWithWhereWithoutAnswersInput, RegisterApplicationUpdateWithoutAnswersInput>, RegisterApplicationUncheckedUpdateWithoutAnswersInput>
  }

  export type NestedStringFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[] | ListStringFieldRefInput<$PrismaModel>
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel>
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    not?: NestedStringFilter<$PrismaModel> | string
  }

  export type NestedStringNullableFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    not?: NestedStringNullableFilter<$PrismaModel> | string | null
  }

  export type NestedBoolNullableFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null
    not?: NestedBoolNullableFilter<$PrismaModel> | boolean | null
  }

  export type NestedDateTimeFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel>
    notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel>
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeFilter<$PrismaModel> | Date | string
  }

  export type NestedStringWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[] | ListStringFieldRefInput<$PrismaModel>
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel>
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    not?: NestedStringWithAggregatesFilter<$PrismaModel> | string
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedStringFilter<$PrismaModel>
    _max?: NestedStringFilter<$PrismaModel>
  }

  export type NestedIntFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel>
    in?: number[] | ListIntFieldRefInput<$PrismaModel>
    notIn?: number[] | ListIntFieldRefInput<$PrismaModel>
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntFilter<$PrismaModel> | number
  }

  export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    not?: NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedStringNullableFilter<$PrismaModel>
    _max?: NestedStringNullableFilter<$PrismaModel>
  }

  export type NestedIntNullableFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel> | null
    in?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntNullableFilter<$PrismaModel> | number | null
  }

  export type NestedBoolNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null
    not?: NestedBoolNullableWithAggregatesFilter<$PrismaModel> | boolean | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedBoolNullableFilter<$PrismaModel>
    _max?: NestedBoolNullableFilter<$PrismaModel>
  }
  export type NestedJsonNullableFilter<$PrismaModel = never> = 
    | PatchUndefined<
        Either<Required<NestedJsonNullableFilterBase<$PrismaModel>>, Exclude<keyof Required<NestedJsonNullableFilterBase<$PrismaModel>>, 'path'>>,
        Required<NestedJsonNullableFilterBase<$PrismaModel>>
      >
    | OptionalFlat<Omit<Required<NestedJsonNullableFilterBase<$PrismaModel>>, 'path'>>

  export type NestedJsonNullableFilterBase<$PrismaModel = never> = {
    equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
    path?: string[]
    string_contains?: string | StringFieldRefInput<$PrismaModel>
    string_starts_with?: string | StringFieldRefInput<$PrismaModel>
    string_ends_with?: string | StringFieldRefInput<$PrismaModel>
    array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
  }

  export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel>
    notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel>
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedDateTimeFilter<$PrismaModel>
    _max?: NestedDateTimeFilter<$PrismaModel>
  }

  export type NestedDateTimeNullableFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null
  }

  export type NestedIntWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel>
    in?: number[] | ListIntFieldRefInput<$PrismaModel>
    notIn?: number[] | ListIntFieldRefInput<$PrismaModel>
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntWithAggregatesFilter<$PrismaModel> | number
    _count?: NestedIntFilter<$PrismaModel>
    _avg?: NestedFloatFilter<$PrismaModel>
    _sum?: NestedIntFilter<$PrismaModel>
    _min?: NestedIntFilter<$PrismaModel>
    _max?: NestedIntFilter<$PrismaModel>
  }

  export type NestedFloatFilter<$PrismaModel = never> = {
    equals?: number | FloatFieldRefInput<$PrismaModel>
    in?: number[] | ListFloatFieldRefInput<$PrismaModel>
    notIn?: number[] | ListFloatFieldRefInput<$PrismaModel>
    lt?: number | FloatFieldRefInput<$PrismaModel>
    lte?: number | FloatFieldRefInput<$PrismaModel>
    gt?: number | FloatFieldRefInput<$PrismaModel>
    gte?: number | FloatFieldRefInput<$PrismaModel>
    not?: NestedFloatFilter<$PrismaModel> | number
  }

  export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedDateTimeNullableFilter<$PrismaModel>
    _max?: NestedDateTimeNullableFilter<$PrismaModel>
  }

  export type NestedBoolFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel>
    not?: NestedBoolFilter<$PrismaModel> | boolean
  }
  export type NestedJsonFilter<$PrismaModel = never> = 
    | PatchUndefined<
        Either<Required<NestedJsonFilterBase<$PrismaModel>>, Exclude<keyof Required<NestedJsonFilterBase<$PrismaModel>>, 'path'>>,
        Required<NestedJsonFilterBase<$PrismaModel>>
      >
    | OptionalFlat<Omit<Required<NestedJsonFilterBase<$PrismaModel>>, 'path'>>

  export type NestedJsonFilterBase<$PrismaModel = never> = {
    equals?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
    path?: string[]
    string_contains?: string | StringFieldRefInput<$PrismaModel>
    string_starts_with?: string | StringFieldRefInput<$PrismaModel>
    string_ends_with?: string | StringFieldRefInput<$PrismaModel>
    array_contains?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_starts_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    array_ends_with?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | null
    lt?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    lte?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    gt?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    gte?: InputJsonValue | JsonFieldRefInput<$PrismaModel>
    not?: InputJsonValue | JsonFieldRefInput<$PrismaModel> | JsonNullValueFilter
  }

  export type NestedBoolWithAggregatesFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel>
    not?: NestedBoolWithAggregatesFilter<$PrismaModel> | boolean
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedBoolFilter<$PrismaModel>
    _max?: NestedBoolFilter<$PrismaModel>
  }

  export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel> | null
    in?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _avg?: NestedFloatNullableFilter<$PrismaModel>
    _sum?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedIntNullableFilter<$PrismaModel>
    _max?: NestedIntNullableFilter<$PrismaModel>
  }

  export type NestedFloatNullableFilter<$PrismaModel = never> = {
    equals?: number | FloatFieldRefInput<$PrismaModel> | null
    in?: number[] | ListFloatFieldRefInput<$PrismaModel> | null
    notIn?: number[] | ListFloatFieldRefInput<$PrismaModel> | null
    lt?: number | FloatFieldRefInput<$PrismaModel>
    lte?: number | FloatFieldRefInput<$PrismaModel>
    gt?: number | FloatFieldRefInput<$PrismaModel>
    gte?: number | FloatFieldRefInput<$PrismaModel>
    not?: NestedFloatNullableFilter<$PrismaModel> | number | null
  }

  export type EventSignupCreateWithoutEventInput = {
    id?: string
    guildId: string
    userId: string
    createdAt?: Date | string
    canceledAt?: Date | string | null
  }

  export type EventSignupUncheckedCreateWithoutEventInput = {
    id?: string
    guildId: string
    userId: string
    createdAt?: Date | string
    canceledAt?: Date | string | null
  }

  export type EventSignupCreateOrConnectWithoutEventInput = {
    where: EventSignupWhereUniqueInput
    create: XOR<EventSignupCreateWithoutEventInput, EventSignupUncheckedCreateWithoutEventInput>
  }

  export type EventSignupCreateManyEventInputEnvelope = {
    data: EventSignupCreateManyEventInput | EventSignupCreateManyEventInput[]
    skipDuplicates?: boolean
  }

  export type EventSignupUpsertWithWhereUniqueWithoutEventInput = {
    where: EventSignupWhereUniqueInput
    update: XOR<EventSignupUpdateWithoutEventInput, EventSignupUncheckedUpdateWithoutEventInput>
    create: XOR<EventSignupCreateWithoutEventInput, EventSignupUncheckedCreateWithoutEventInput>
  }

  export type EventSignupUpdateWithWhereUniqueWithoutEventInput = {
    where: EventSignupWhereUniqueInput
    data: XOR<EventSignupUpdateWithoutEventInput, EventSignupUncheckedUpdateWithoutEventInput>
  }

  export type EventSignupUpdateManyWithWhereWithoutEventInput = {
    where: EventSignupScalarWhereInput
    data: XOR<EventSignupUpdateManyMutationInput, EventSignupUncheckedUpdateManyWithoutEventInput>
  }

  export type EventSignupScalarWhereInput = {
    AND?: EventSignupScalarWhereInput | EventSignupScalarWhereInput[]
    OR?: EventSignupScalarWhereInput[]
    NOT?: EventSignupScalarWhereInput | EventSignupScalarWhereInput[]
    id?: StringFilter<"EventSignup"> | string
    eventId?: StringFilter<"EventSignup"> | string
    guildId?: StringFilter<"EventSignup"> | string
    userId?: StringFilter<"EventSignup"> | string
    createdAt?: DateTimeFilter<"EventSignup"> | Date | string
    canceledAt?: DateTimeNullableFilter<"EventSignup"> | Date | string | null
  }

  export type EventCreateWithoutSignupsInput = {
    id?: string
    guildId: string
    title: string
    description?: string | null
    channelId: string
    startTime: Date | string
    repeatType?: string
    repeatConfig?: NullableJsonNullValueInput | InputJsonValue
    reminderOffsetMinutes?: number
    roleId?: string | null
    isActive?: boolean
    lastReminderAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type EventUncheckedCreateWithoutSignupsInput = {
    id?: string
    guildId: string
    title: string
    description?: string | null
    channelId: string
    startTime: Date | string
    repeatType?: string
    repeatConfig?: NullableJsonNullValueInput | InputJsonValue
    reminderOffsetMinutes?: number
    roleId?: string | null
    isActive?: boolean
    lastReminderAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type EventCreateOrConnectWithoutSignupsInput = {
    where: EventWhereUniqueInput
    create: XOR<EventCreateWithoutSignupsInput, EventUncheckedCreateWithoutSignupsInput>
  }

  export type EventUpsertWithoutSignupsInput = {
    update: XOR<EventUpdateWithoutSignupsInput, EventUncheckedUpdateWithoutSignupsInput>
    create: XOR<EventCreateWithoutSignupsInput, EventUncheckedCreateWithoutSignupsInput>
    where?: EventWhereInput
  }

  export type EventUpdateToOneWithWhereWithoutSignupsInput = {
    where?: EventWhereInput
    data: XOR<EventUpdateWithoutSignupsInput, EventUncheckedUpdateWithoutSignupsInput>
  }

  export type EventUpdateWithoutSignupsInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    title?: StringFieldUpdateOperationsInput | string
    description?: NullableStringFieldUpdateOperationsInput | string | null
    channelId?: StringFieldUpdateOperationsInput | string
    startTime?: DateTimeFieldUpdateOperationsInput | Date | string
    repeatType?: StringFieldUpdateOperationsInput | string
    repeatConfig?: NullableJsonNullValueInput | InputJsonValue
    reminderOffsetMinutes?: IntFieldUpdateOperationsInput | number
    roleId?: NullableStringFieldUpdateOperationsInput | string | null
    isActive?: BoolFieldUpdateOperationsInput | boolean
    lastReminderAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type EventUncheckedUpdateWithoutSignupsInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    title?: StringFieldUpdateOperationsInput | string
    description?: NullableStringFieldUpdateOperationsInput | string | null
    channelId?: StringFieldUpdateOperationsInput | string
    startTime?: DateTimeFieldUpdateOperationsInput | Date | string
    repeatType?: StringFieldUpdateOperationsInput | string
    repeatConfig?: NullableJsonNullValueInput | InputJsonValue
    reminderOffsetMinutes?: IntFieldUpdateOperationsInput | number
    roleId?: NullableStringFieldUpdateOperationsInput | string | null
    isActive?: BoolFieldUpdateOperationsInput | boolean
    lastReminderAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type RegisterFormFieldCreateWithoutFormInput = {
    id?: string
    label: string
    type: string
    required?: boolean
    order?: number
  }

  export type RegisterFormFieldUncheckedCreateWithoutFormInput = {
    id?: string
    label: string
    type: string
    required?: boolean
    order?: number
  }

  export type RegisterFormFieldCreateOrConnectWithoutFormInput = {
    where: RegisterFormFieldWhereUniqueInput
    create: XOR<RegisterFormFieldCreateWithoutFormInput, RegisterFormFieldUncheckedCreateWithoutFormInput>
  }

  export type RegisterFormFieldCreateManyFormInputEnvelope = {
    data: RegisterFormFieldCreateManyFormInput | RegisterFormFieldCreateManyFormInput[]
    skipDuplicates?: boolean
  }

  export type RegisterApplicationCreateWithoutFormInput = {
    id?: string
    guildId: string
    userId: string
    status?: string
    reviewedBy?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    answers?: RegisterApplicationAnswerCreateNestedManyWithoutApplicationInput
  }

  export type RegisterApplicationUncheckedCreateWithoutFormInput = {
    id?: string
    guildId: string
    userId: string
    status?: string
    reviewedBy?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    answers?: RegisterApplicationAnswerUncheckedCreateNestedManyWithoutApplicationInput
  }

  export type RegisterApplicationCreateOrConnectWithoutFormInput = {
    where: RegisterApplicationWhereUniqueInput
    create: XOR<RegisterApplicationCreateWithoutFormInput, RegisterApplicationUncheckedCreateWithoutFormInput>
  }

  export type RegisterApplicationCreateManyFormInputEnvelope = {
    data: RegisterApplicationCreateManyFormInput | RegisterApplicationCreateManyFormInput[]
    skipDuplicates?: boolean
  }

  export type RegisterFormFieldUpsertWithWhereUniqueWithoutFormInput = {
    where: RegisterFormFieldWhereUniqueInput
    update: XOR<RegisterFormFieldUpdateWithoutFormInput, RegisterFormFieldUncheckedUpdateWithoutFormInput>
    create: XOR<RegisterFormFieldCreateWithoutFormInput, RegisterFormFieldUncheckedCreateWithoutFormInput>
  }

  export type RegisterFormFieldUpdateWithWhereUniqueWithoutFormInput = {
    where: RegisterFormFieldWhereUniqueInput
    data: XOR<RegisterFormFieldUpdateWithoutFormInput, RegisterFormFieldUncheckedUpdateWithoutFormInput>
  }

  export type RegisterFormFieldUpdateManyWithWhereWithoutFormInput = {
    where: RegisterFormFieldScalarWhereInput
    data: XOR<RegisterFormFieldUpdateManyMutationInput, RegisterFormFieldUncheckedUpdateManyWithoutFormInput>
  }

  export type RegisterFormFieldScalarWhereInput = {
    AND?: RegisterFormFieldScalarWhereInput | RegisterFormFieldScalarWhereInput[]
    OR?: RegisterFormFieldScalarWhereInput[]
    NOT?: RegisterFormFieldScalarWhereInput | RegisterFormFieldScalarWhereInput[]
    id?: StringFilter<"RegisterFormField"> | string
    formId?: StringFilter<"RegisterFormField"> | string
    label?: StringFilter<"RegisterFormField"> | string
    type?: StringFilter<"RegisterFormField"> | string
    required?: BoolFilter<"RegisterFormField"> | boolean
    order?: IntFilter<"RegisterFormField"> | number
  }

  export type RegisterApplicationUpsertWithWhereUniqueWithoutFormInput = {
    where: RegisterApplicationWhereUniqueInput
    update: XOR<RegisterApplicationUpdateWithoutFormInput, RegisterApplicationUncheckedUpdateWithoutFormInput>
    create: XOR<RegisterApplicationCreateWithoutFormInput, RegisterApplicationUncheckedCreateWithoutFormInput>
  }

  export type RegisterApplicationUpdateWithWhereUniqueWithoutFormInput = {
    where: RegisterApplicationWhereUniqueInput
    data: XOR<RegisterApplicationUpdateWithoutFormInput, RegisterApplicationUncheckedUpdateWithoutFormInput>
  }

  export type RegisterApplicationUpdateManyWithWhereWithoutFormInput = {
    where: RegisterApplicationScalarWhereInput
    data: XOR<RegisterApplicationUpdateManyMutationInput, RegisterApplicationUncheckedUpdateManyWithoutFormInput>
  }

  export type RegisterApplicationScalarWhereInput = {
    AND?: RegisterApplicationScalarWhereInput | RegisterApplicationScalarWhereInput[]
    OR?: RegisterApplicationScalarWhereInput[]
    NOT?: RegisterApplicationScalarWhereInput | RegisterApplicationScalarWhereInput[]
    id?: StringFilter<"RegisterApplication"> | string
    guildId?: StringFilter<"RegisterApplication"> | string
    userId?: StringFilter<"RegisterApplication"> | string
    formId?: StringFilter<"RegisterApplication"> | string
    status?: StringFilter<"RegisterApplication"> | string
    reviewedBy?: StringNullableFilter<"RegisterApplication"> | string | null
    createdAt?: DateTimeFilter<"RegisterApplication"> | Date | string
    updatedAt?: DateTimeFilter<"RegisterApplication"> | Date | string
  }

  export type RegisterFormCreateWithoutFieldsInput = {
    id?: string
    guildId: string
    name: string
    description?: string | null
    reviewChannelId?: string | null
    notifyRoleIds?: RegisterFormCreatenotifyRoleIdsInput | string[]
    isActive?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
    applications?: RegisterApplicationCreateNestedManyWithoutFormInput
  }

  export type RegisterFormUncheckedCreateWithoutFieldsInput = {
    id?: string
    guildId: string
    name: string
    description?: string | null
    reviewChannelId?: string | null
    notifyRoleIds?: RegisterFormCreatenotifyRoleIdsInput | string[]
    isActive?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
    applications?: RegisterApplicationUncheckedCreateNestedManyWithoutFormInput
  }

  export type RegisterFormCreateOrConnectWithoutFieldsInput = {
    where: RegisterFormWhereUniqueInput
    create: XOR<RegisterFormCreateWithoutFieldsInput, RegisterFormUncheckedCreateWithoutFieldsInput>
  }

  export type RegisterFormUpsertWithoutFieldsInput = {
    update: XOR<RegisterFormUpdateWithoutFieldsInput, RegisterFormUncheckedUpdateWithoutFieldsInput>
    create: XOR<RegisterFormCreateWithoutFieldsInput, RegisterFormUncheckedCreateWithoutFieldsInput>
    where?: RegisterFormWhereInput
  }

  export type RegisterFormUpdateToOneWithWhereWithoutFieldsInput = {
    where?: RegisterFormWhereInput
    data: XOR<RegisterFormUpdateWithoutFieldsInput, RegisterFormUncheckedUpdateWithoutFieldsInput>
  }

  export type RegisterFormUpdateWithoutFieldsInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    description?: NullableStringFieldUpdateOperationsInput | string | null
    reviewChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    notifyRoleIds?: RegisterFormUpdatenotifyRoleIdsInput | string[]
    isActive?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    applications?: RegisterApplicationUpdateManyWithoutFormNestedInput
  }

  export type RegisterFormUncheckedUpdateWithoutFieldsInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    description?: NullableStringFieldUpdateOperationsInput | string | null
    reviewChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    notifyRoleIds?: RegisterFormUpdatenotifyRoleIdsInput | string[]
    isActive?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    applications?: RegisterApplicationUncheckedUpdateManyWithoutFormNestedInput
  }

  export type RegisterApplicationAnswerCreateWithoutApplicationInput = {
    id?: string
    fieldId: string
    value: string
  }

  export type RegisterApplicationAnswerUncheckedCreateWithoutApplicationInput = {
    id?: string
    fieldId: string
    value: string
  }

  export type RegisterApplicationAnswerCreateOrConnectWithoutApplicationInput = {
    where: RegisterApplicationAnswerWhereUniqueInput
    create: XOR<RegisterApplicationAnswerCreateWithoutApplicationInput, RegisterApplicationAnswerUncheckedCreateWithoutApplicationInput>
  }

  export type RegisterApplicationAnswerCreateManyApplicationInputEnvelope = {
    data: RegisterApplicationAnswerCreateManyApplicationInput | RegisterApplicationAnswerCreateManyApplicationInput[]
    skipDuplicates?: boolean
  }

  export type RegisterFormCreateWithoutApplicationsInput = {
    id?: string
    guildId: string
    name: string
    description?: string | null
    reviewChannelId?: string | null
    notifyRoleIds?: RegisterFormCreatenotifyRoleIdsInput | string[]
    isActive?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
    fields?: RegisterFormFieldCreateNestedManyWithoutFormInput
  }

  export type RegisterFormUncheckedCreateWithoutApplicationsInput = {
    id?: string
    guildId: string
    name: string
    description?: string | null
    reviewChannelId?: string | null
    notifyRoleIds?: RegisterFormCreatenotifyRoleIdsInput | string[]
    isActive?: boolean
    createdAt?: Date | string
    updatedAt?: Date | string
    fields?: RegisterFormFieldUncheckedCreateNestedManyWithoutFormInput
  }

  export type RegisterFormCreateOrConnectWithoutApplicationsInput = {
    where: RegisterFormWhereUniqueInput
    create: XOR<RegisterFormCreateWithoutApplicationsInput, RegisterFormUncheckedCreateWithoutApplicationsInput>
  }

  export type RegisterApplicationAnswerUpsertWithWhereUniqueWithoutApplicationInput = {
    where: RegisterApplicationAnswerWhereUniqueInput
    update: XOR<RegisterApplicationAnswerUpdateWithoutApplicationInput, RegisterApplicationAnswerUncheckedUpdateWithoutApplicationInput>
    create: XOR<RegisterApplicationAnswerCreateWithoutApplicationInput, RegisterApplicationAnswerUncheckedCreateWithoutApplicationInput>
  }

  export type RegisterApplicationAnswerUpdateWithWhereUniqueWithoutApplicationInput = {
    where: RegisterApplicationAnswerWhereUniqueInput
    data: XOR<RegisterApplicationAnswerUpdateWithoutApplicationInput, RegisterApplicationAnswerUncheckedUpdateWithoutApplicationInput>
  }

  export type RegisterApplicationAnswerUpdateManyWithWhereWithoutApplicationInput = {
    where: RegisterApplicationAnswerScalarWhereInput
    data: XOR<RegisterApplicationAnswerUpdateManyMutationInput, RegisterApplicationAnswerUncheckedUpdateManyWithoutApplicationInput>
  }

  export type RegisterApplicationAnswerScalarWhereInput = {
    AND?: RegisterApplicationAnswerScalarWhereInput | RegisterApplicationAnswerScalarWhereInput[]
    OR?: RegisterApplicationAnswerScalarWhereInput[]
    NOT?: RegisterApplicationAnswerScalarWhereInput | RegisterApplicationAnswerScalarWhereInput[]
    id?: StringFilter<"RegisterApplicationAnswer"> | string
    applicationId?: StringFilter<"RegisterApplicationAnswer"> | string
    fieldId?: StringFilter<"RegisterApplicationAnswer"> | string
    value?: StringFilter<"RegisterApplicationAnswer"> | string
  }

  export type RegisterFormUpsertWithoutApplicationsInput = {
    update: XOR<RegisterFormUpdateWithoutApplicationsInput, RegisterFormUncheckedUpdateWithoutApplicationsInput>
    create: XOR<RegisterFormCreateWithoutApplicationsInput, RegisterFormUncheckedCreateWithoutApplicationsInput>
    where?: RegisterFormWhereInput
  }

  export type RegisterFormUpdateToOneWithWhereWithoutApplicationsInput = {
    where?: RegisterFormWhereInput
    data: XOR<RegisterFormUpdateWithoutApplicationsInput, RegisterFormUncheckedUpdateWithoutApplicationsInput>
  }

  export type RegisterFormUpdateWithoutApplicationsInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    description?: NullableStringFieldUpdateOperationsInput | string | null
    reviewChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    notifyRoleIds?: RegisterFormUpdatenotifyRoleIdsInput | string[]
    isActive?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    fields?: RegisterFormFieldUpdateManyWithoutFormNestedInput
  }

  export type RegisterFormUncheckedUpdateWithoutApplicationsInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    description?: NullableStringFieldUpdateOperationsInput | string | null
    reviewChannelId?: NullableStringFieldUpdateOperationsInput | string | null
    notifyRoleIds?: RegisterFormUpdatenotifyRoleIdsInput | string[]
    isActive?: BoolFieldUpdateOperationsInput | boolean
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    fields?: RegisterFormFieldUncheckedUpdateManyWithoutFormNestedInput
  }

  export type RegisterApplicationCreateWithoutAnswersInput = {
    id?: string
    guildId: string
    userId: string
    status?: string
    reviewedBy?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    form: RegisterFormCreateNestedOneWithoutApplicationsInput
  }

  export type RegisterApplicationUncheckedCreateWithoutAnswersInput = {
    id?: string
    guildId: string
    userId: string
    formId: string
    status?: string
    reviewedBy?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type RegisterApplicationCreateOrConnectWithoutAnswersInput = {
    where: RegisterApplicationWhereUniqueInput
    create: XOR<RegisterApplicationCreateWithoutAnswersInput, RegisterApplicationUncheckedCreateWithoutAnswersInput>
  }

  export type RegisterApplicationUpsertWithoutAnswersInput = {
    update: XOR<RegisterApplicationUpdateWithoutAnswersInput, RegisterApplicationUncheckedUpdateWithoutAnswersInput>
    create: XOR<RegisterApplicationCreateWithoutAnswersInput, RegisterApplicationUncheckedCreateWithoutAnswersInput>
    where?: RegisterApplicationWhereInput
  }

  export type RegisterApplicationUpdateToOneWithWhereWithoutAnswersInput = {
    where?: RegisterApplicationWhereInput
    data: XOR<RegisterApplicationUpdateWithoutAnswersInput, RegisterApplicationUncheckedUpdateWithoutAnswersInput>
  }

  export type RegisterApplicationUpdateWithoutAnswersInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    reviewedBy?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    form?: RegisterFormUpdateOneRequiredWithoutApplicationsNestedInput
  }

  export type RegisterApplicationUncheckedUpdateWithoutAnswersInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    formId?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    reviewedBy?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type EventSignupCreateManyEventInput = {
    id?: string
    guildId: string
    userId: string
    createdAt?: Date | string
    canceledAt?: Date | string | null
  }

  export type EventSignupUpdateWithoutEventInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    canceledAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type EventSignupUncheckedUpdateWithoutEventInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    canceledAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type EventSignupUncheckedUpdateManyWithoutEventInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    canceledAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type RegisterFormFieldCreateManyFormInput = {
    id?: string
    label: string
    type: string
    required?: boolean
    order?: number
  }

  export type RegisterApplicationCreateManyFormInput = {
    id?: string
    guildId: string
    userId: string
    status?: string
    reviewedBy?: string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type RegisterFormFieldUpdateWithoutFormInput = {
    id?: StringFieldUpdateOperationsInput | string
    label?: StringFieldUpdateOperationsInput | string
    type?: StringFieldUpdateOperationsInput | string
    required?: BoolFieldUpdateOperationsInput | boolean
    order?: IntFieldUpdateOperationsInput | number
  }

  export type RegisterFormFieldUncheckedUpdateWithoutFormInput = {
    id?: StringFieldUpdateOperationsInput | string
    label?: StringFieldUpdateOperationsInput | string
    type?: StringFieldUpdateOperationsInput | string
    required?: BoolFieldUpdateOperationsInput | boolean
    order?: IntFieldUpdateOperationsInput | number
  }

  export type RegisterFormFieldUncheckedUpdateManyWithoutFormInput = {
    id?: StringFieldUpdateOperationsInput | string
    label?: StringFieldUpdateOperationsInput | string
    type?: StringFieldUpdateOperationsInput | string
    required?: BoolFieldUpdateOperationsInput | boolean
    order?: IntFieldUpdateOperationsInput | number
  }

  export type RegisterApplicationUpdateWithoutFormInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    reviewedBy?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    answers?: RegisterApplicationAnswerUpdateManyWithoutApplicationNestedInput
  }

  export type RegisterApplicationUncheckedUpdateWithoutFormInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    reviewedBy?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    answers?: RegisterApplicationAnswerUncheckedUpdateManyWithoutApplicationNestedInput
  }

  export type RegisterApplicationUncheckedUpdateManyWithoutFormInput = {
    id?: StringFieldUpdateOperationsInput | string
    guildId?: StringFieldUpdateOperationsInput | string
    userId?: StringFieldUpdateOperationsInput | string
    status?: StringFieldUpdateOperationsInput | string
    reviewedBy?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type RegisterApplicationAnswerCreateManyApplicationInput = {
    id?: string
    fieldId: string
    value: string
  }

  export type RegisterApplicationAnswerUpdateWithoutApplicationInput = {
    id?: StringFieldUpdateOperationsInput | string
    fieldId?: StringFieldUpdateOperationsInput | string
    value?: StringFieldUpdateOperationsInput | string
  }

  export type RegisterApplicationAnswerUncheckedUpdateWithoutApplicationInput = {
    id?: StringFieldUpdateOperationsInput | string
    fieldId?: StringFieldUpdateOperationsInput | string
    value?: StringFieldUpdateOperationsInput | string
  }

  export type RegisterApplicationAnswerUncheckedUpdateManyWithoutApplicationInput = {
    id?: StringFieldUpdateOperationsInput | string
    fieldId?: StringFieldUpdateOperationsInput | string
    value?: StringFieldUpdateOperationsInput | string
  }



  /**
   * Aliases for legacy arg types
   */
    /**
     * @deprecated Use EventCountOutputTypeDefaultArgs instead
     */
    export type EventCountOutputTypeArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = EventCountOutputTypeDefaultArgs<ExtArgs>
    /**
     * @deprecated Use RegisterFormCountOutputTypeDefaultArgs instead
     */
    export type RegisterFormCountOutputTypeArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = RegisterFormCountOutputTypeDefaultArgs<ExtArgs>
    /**
     * @deprecated Use RegisterApplicationCountOutputTypeDefaultArgs instead
     */
    export type RegisterApplicationCountOutputTypeArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = RegisterApplicationCountOutputTypeDefaultArgs<ExtArgs>
    /**
     * @deprecated Use GuildSettingsDefaultArgs instead
     */
    export type GuildSettingsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = GuildSettingsDefaultArgs<ExtArgs>
    /**
     * @deprecated Use TicketDefaultArgs instead
     */
    export type TicketArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = TicketDefaultArgs<ExtArgs>
    /**
     * @deprecated Use TicketAutomationRuleDefaultArgs instead
     */
    export type TicketAutomationRuleArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = TicketAutomationRuleDefaultArgs<ExtArgs>
    /**
     * @deprecated Use KnowledgeBaseArticleDefaultArgs instead
     */
    export type KnowledgeBaseArticleArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = KnowledgeBaseArticleDefaultArgs<ExtArgs>
    /**
     * @deprecated Use LevelDefaultArgs instead
     */
    export type LevelArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = LevelDefaultArgs<ExtArgs>
    /**
     * @deprecated Use TicketSupportSessionDefaultArgs instead
     */
    export type TicketSupportSessionArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = TicketSupportSessionDefaultArgs<ExtArgs>
    /**
     * @deprecated Use BirthdayDefaultArgs instead
     */
    export type BirthdayArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = BirthdayDefaultArgs<ExtArgs>
    /**
     * @deprecated Use ReactionRoleSetDefaultArgs instead
     */
    export type ReactionRoleSetArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = ReactionRoleSetDefaultArgs<ExtArgs>
    /**
     * @deprecated Use EventDefaultArgs instead
     */
    export type EventArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = EventDefaultArgs<ExtArgs>
    /**
     * @deprecated Use EventSignupDefaultArgs instead
     */
    export type EventSignupArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = EventSignupDefaultArgs<ExtArgs>
    /**
     * @deprecated Use RegisterFormDefaultArgs instead
     */
    export type RegisterFormArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = RegisterFormDefaultArgs<ExtArgs>
    /**
     * @deprecated Use RegisterFormFieldDefaultArgs instead
     */
    export type RegisterFormFieldArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = RegisterFormFieldDefaultArgs<ExtArgs>
    /**
     * @deprecated Use RegisterApplicationDefaultArgs instead
     */
    export type RegisterApplicationArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = RegisterApplicationDefaultArgs<ExtArgs>
    /**
     * @deprecated Use RegisterApplicationAnswerDefaultArgs instead
     */
    export type RegisterApplicationAnswerArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = RegisterApplicationAnswerDefaultArgs<ExtArgs>

  /**
   * Batch Payload for updateMany & deleteMany & createMany
   */

  export type BatchPayload = {
    count: number
  }

  /**
   * DMMF
   */
  export const dmmf: runtime.BaseDMMF
}