
/**
 * 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 Project
 * 
 */
export type Project = $Result.DefaultSelection<Prisma.$ProjectPayload>
/**
 * Model Setting
 * 
 */
export type Setting = $Result.DefaultSelection<Prisma.$SettingPayload>
/**
 * Model CommitLog
 * 
 */
export type CommitLog = $Result.DefaultSelection<Prisma.$CommitLogPayload>
/**
 * Model DeployTarget
 * 
 */
export type DeployTarget = $Result.DefaultSelection<Prisma.$DeployTargetPayload>
/**
 * Model DeployHistory
 * 
 */
export type DeployHistory = $Result.DefaultSelection<Prisma.$DeployHistoryPayload>

/**
 * ##  Prisma Client ʲˢ
 * 
 * Type-safe database client for TypeScript & Node.js
 * @example
 * ```
 * const prisma = new PrismaClient()
 * // Fetch zero or more Projects
 * const projects = await prisma.project.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 Projects
   * const projects = await prisma.project.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.project`: Exposes CRUD operations for the **Project** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Projects
    * const projects = await prisma.project.findMany()
    * ```
    */
  get project(): Prisma.ProjectDelegate<ExtArgs>;

  /**
   * `prisma.setting`: Exposes CRUD operations for the **Setting** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Settings
    * const settings = await prisma.setting.findMany()
    * ```
    */
  get setting(): Prisma.SettingDelegate<ExtArgs>;

  /**
   * `prisma.commitLog`: Exposes CRUD operations for the **CommitLog** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more CommitLogs
    * const commitLogs = await prisma.commitLog.findMany()
    * ```
    */
  get commitLog(): Prisma.CommitLogDelegate<ExtArgs>;

  /**
   * `prisma.deployTarget`: Exposes CRUD operations for the **DeployTarget** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more DeployTargets
    * const deployTargets = await prisma.deployTarget.findMany()
    * ```
    */
  get deployTarget(): Prisma.DeployTargetDelegate<ExtArgs>;

  /**
   * `prisma.deployHistory`: Exposes CRUD operations for the **DeployHistory** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more DeployHistories
    * const deployHistories = await prisma.deployHistory.findMany()
    * ```
    */
  get deployHistory(): Prisma.DeployHistoryDelegate<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: {
    Project: 'Project',
    Setting: 'Setting',
    CommitLog: 'CommitLog',
    DeployTarget: 'DeployTarget',
    DeployHistory: 'DeployHistory'
  };

  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: "project" | "setting" | "commitLog" | "deployTarget" | "deployHistory"
      txIsolationLevel: Prisma.TransactionIsolationLevel
    }
    model: {
      Project: {
        payload: Prisma.$ProjectPayload<ExtArgs>
        fields: Prisma.ProjectFieldRefs
        operations: {
          findUnique: {
            args: Prisma.ProjectFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ProjectPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.ProjectFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ProjectPayload>
          }
          findFirst: {
            args: Prisma.ProjectFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ProjectPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.ProjectFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ProjectPayload>
          }
          findMany: {
            args: Prisma.ProjectFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ProjectPayload>[]
          }
          create: {
            args: Prisma.ProjectCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ProjectPayload>
          }
          createMany: {
            args: Prisma.ProjectCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.ProjectCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ProjectPayload>[]
          }
          delete: {
            args: Prisma.ProjectDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ProjectPayload>
          }
          update: {
            args: Prisma.ProjectUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ProjectPayload>
          }
          deleteMany: {
            args: Prisma.ProjectDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.ProjectUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.ProjectUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$ProjectPayload>
          }
          aggregate: {
            args: Prisma.ProjectAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateProject>
          }
          groupBy: {
            args: Prisma.ProjectGroupByArgs<ExtArgs>
            result: $Utils.Optional<ProjectGroupByOutputType>[]
          }
          count: {
            args: Prisma.ProjectCountArgs<ExtArgs>
            result: $Utils.Optional<ProjectCountAggregateOutputType> | number
          }
        }
      }
      Setting: {
        payload: Prisma.$SettingPayload<ExtArgs>
        fields: Prisma.SettingFieldRefs
        operations: {
          findUnique: {
            args: Prisma.SettingFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SettingPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.SettingFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SettingPayload>
          }
          findFirst: {
            args: Prisma.SettingFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SettingPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.SettingFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SettingPayload>
          }
          findMany: {
            args: Prisma.SettingFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SettingPayload>[]
          }
          create: {
            args: Prisma.SettingCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SettingPayload>
          }
          createMany: {
            args: Prisma.SettingCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.SettingCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SettingPayload>[]
          }
          delete: {
            args: Prisma.SettingDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SettingPayload>
          }
          update: {
            args: Prisma.SettingUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SettingPayload>
          }
          deleteMany: {
            args: Prisma.SettingDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.SettingUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.SettingUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$SettingPayload>
          }
          aggregate: {
            args: Prisma.SettingAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateSetting>
          }
          groupBy: {
            args: Prisma.SettingGroupByArgs<ExtArgs>
            result: $Utils.Optional<SettingGroupByOutputType>[]
          }
          count: {
            args: Prisma.SettingCountArgs<ExtArgs>
            result: $Utils.Optional<SettingCountAggregateOutputType> | number
          }
        }
      }
      CommitLog: {
        payload: Prisma.$CommitLogPayload<ExtArgs>
        fields: Prisma.CommitLogFieldRefs
        operations: {
          findUnique: {
            args: Prisma.CommitLogFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CommitLogPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.CommitLogFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CommitLogPayload>
          }
          findFirst: {
            args: Prisma.CommitLogFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CommitLogPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.CommitLogFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CommitLogPayload>
          }
          findMany: {
            args: Prisma.CommitLogFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CommitLogPayload>[]
          }
          create: {
            args: Prisma.CommitLogCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CommitLogPayload>
          }
          createMany: {
            args: Prisma.CommitLogCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.CommitLogCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CommitLogPayload>[]
          }
          delete: {
            args: Prisma.CommitLogDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CommitLogPayload>
          }
          update: {
            args: Prisma.CommitLogUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CommitLogPayload>
          }
          deleteMany: {
            args: Prisma.CommitLogDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.CommitLogUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.CommitLogUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$CommitLogPayload>
          }
          aggregate: {
            args: Prisma.CommitLogAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateCommitLog>
          }
          groupBy: {
            args: Prisma.CommitLogGroupByArgs<ExtArgs>
            result: $Utils.Optional<CommitLogGroupByOutputType>[]
          }
          count: {
            args: Prisma.CommitLogCountArgs<ExtArgs>
            result: $Utils.Optional<CommitLogCountAggregateOutputType> | number
          }
        }
      }
      DeployTarget: {
        payload: Prisma.$DeployTargetPayload<ExtArgs>
        fields: Prisma.DeployTargetFieldRefs
        operations: {
          findUnique: {
            args: Prisma.DeployTargetFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployTargetPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.DeployTargetFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployTargetPayload>
          }
          findFirst: {
            args: Prisma.DeployTargetFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployTargetPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.DeployTargetFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployTargetPayload>
          }
          findMany: {
            args: Prisma.DeployTargetFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployTargetPayload>[]
          }
          create: {
            args: Prisma.DeployTargetCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployTargetPayload>
          }
          createMany: {
            args: Prisma.DeployTargetCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.DeployTargetCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployTargetPayload>[]
          }
          delete: {
            args: Prisma.DeployTargetDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployTargetPayload>
          }
          update: {
            args: Prisma.DeployTargetUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployTargetPayload>
          }
          deleteMany: {
            args: Prisma.DeployTargetDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.DeployTargetUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.DeployTargetUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployTargetPayload>
          }
          aggregate: {
            args: Prisma.DeployTargetAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateDeployTarget>
          }
          groupBy: {
            args: Prisma.DeployTargetGroupByArgs<ExtArgs>
            result: $Utils.Optional<DeployTargetGroupByOutputType>[]
          }
          count: {
            args: Prisma.DeployTargetCountArgs<ExtArgs>
            result: $Utils.Optional<DeployTargetCountAggregateOutputType> | number
          }
        }
      }
      DeployHistory: {
        payload: Prisma.$DeployHistoryPayload<ExtArgs>
        fields: Prisma.DeployHistoryFieldRefs
        operations: {
          findUnique: {
            args: Prisma.DeployHistoryFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployHistoryPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.DeployHistoryFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployHistoryPayload>
          }
          findFirst: {
            args: Prisma.DeployHistoryFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployHistoryPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.DeployHistoryFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployHistoryPayload>
          }
          findMany: {
            args: Prisma.DeployHistoryFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployHistoryPayload>[]
          }
          create: {
            args: Prisma.DeployHistoryCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployHistoryPayload>
          }
          createMany: {
            args: Prisma.DeployHistoryCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.DeployHistoryCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployHistoryPayload>[]
          }
          delete: {
            args: Prisma.DeployHistoryDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployHistoryPayload>
          }
          update: {
            args: Prisma.DeployHistoryUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployHistoryPayload>
          }
          deleteMany: {
            args: Prisma.DeployHistoryDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.DeployHistoryUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          upsert: {
            args: Prisma.DeployHistoryUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$DeployHistoryPayload>
          }
          aggregate: {
            args: Prisma.DeployHistoryAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateDeployHistory>
          }
          groupBy: {
            args: Prisma.DeployHistoryGroupByArgs<ExtArgs>
            result: $Utils.Optional<DeployHistoryGroupByOutputType>[]
          }
          count: {
            args: Prisma.DeployHistoryCountArgs<ExtArgs>
            result: $Utils.Optional<DeployHistoryCountAggregateOutputType> | 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 ProjectCountOutputType
   */

  export type ProjectCountOutputType = {
    deploys: number
    commits: number
  }

  export type ProjectCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    deploys?: boolean | ProjectCountOutputTypeCountDeploysArgs
    commits?: boolean | ProjectCountOutputTypeCountCommitsArgs
  }

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

  /**
   * ProjectCountOutputType without action
   */
  export type ProjectCountOutputTypeCountDeploysArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: DeployHistoryWhereInput
  }

  /**
   * ProjectCountOutputType without action
   */
  export type ProjectCountOutputTypeCountCommitsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: CommitLogWhereInput
  }


  /**
   * Count Type DeployTargetCountOutputType
   */

  export type DeployTargetCountOutputType = {
    projects: number
  }

  export type DeployTargetCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    projects?: boolean | DeployTargetCountOutputTypeCountProjectsArgs
  }

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

  /**
   * DeployTargetCountOutputType without action
   */
  export type DeployTargetCountOutputTypeCountProjectsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: ProjectWhereInput
  }


  /**
   * Models
   */

  /**
   * Model Project
   */

  export type AggregateProject = {
    _count: ProjectCountAggregateOutputType | null
    _avg: ProjectAvgAggregateOutputType | null
    _sum: ProjectSumAggregateOutputType | null
    _min: ProjectMinAggregateOutputType | null
    _max: ProjectMaxAggregateOutputType | null
  }

  export type ProjectAvgAggregateOutputType = {
    priority: number | null
  }

  export type ProjectSumAggregateOutputType = {
    priority: number | null
  }

  export type ProjectMinAggregateOutputType = {
    id: string | null
    name: string | null
    path: string | null
    source: string | null
    gitRemote: string | null
    branch: string | null
    version: string | null
    lastCommitHash: string | null
    lastCommitMessage: string | null
    lastCommitTime: Date | null
    notes: string | null
    tags: string | null
    priority: number | null
    deployTargetId: string | null
    envVarsEncrypted: string | null
    composeSource: string | null
    composeInline: string | null
    deployedVersion: string | null
    deployedAt: Date | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type ProjectMaxAggregateOutputType = {
    id: string | null
    name: string | null
    path: string | null
    source: string | null
    gitRemote: string | null
    branch: string | null
    version: string | null
    lastCommitHash: string | null
    lastCommitMessage: string | null
    lastCommitTime: Date | null
    notes: string | null
    tags: string | null
    priority: number | null
    deployTargetId: string | null
    envVarsEncrypted: string | null
    composeSource: string | null
    composeInline: string | null
    deployedVersion: string | null
    deployedAt: Date | null
    createdAt: Date | null
    updatedAt: Date | null
  }

  export type ProjectCountAggregateOutputType = {
    id: number
    name: number
    path: number
    source: number
    gitRemote: number
    branch: number
    version: number
    lastCommitHash: number
    lastCommitMessage: number
    lastCommitTime: number
    notes: number
    tags: number
    priority: number
    deployTargetId: number
    envVarsEncrypted: number
    composeSource: number
    composeInline: number
    deployedVersion: number
    deployedAt: number
    createdAt: number
    updatedAt: number
    _all: number
  }


  export type ProjectAvgAggregateInputType = {
    priority?: true
  }

  export type ProjectSumAggregateInputType = {
    priority?: true
  }

  export type ProjectMinAggregateInputType = {
    id?: true
    name?: true
    path?: true
    source?: true
    gitRemote?: true
    branch?: true
    version?: true
    lastCommitHash?: true
    lastCommitMessage?: true
    lastCommitTime?: true
    notes?: true
    tags?: true
    priority?: true
    deployTargetId?: true
    envVarsEncrypted?: true
    composeSource?: true
    composeInline?: true
    deployedVersion?: true
    deployedAt?: true
    createdAt?: true
    updatedAt?: true
  }

  export type ProjectMaxAggregateInputType = {
    id?: true
    name?: true
    path?: true
    source?: true
    gitRemote?: true
    branch?: true
    version?: true
    lastCommitHash?: true
    lastCommitMessage?: true
    lastCommitTime?: true
    notes?: true
    tags?: true
    priority?: true
    deployTargetId?: true
    envVarsEncrypted?: true
    composeSource?: true
    composeInline?: true
    deployedVersion?: true
    deployedAt?: true
    createdAt?: true
    updatedAt?: true
  }

  export type ProjectCountAggregateInputType = {
    id?: true
    name?: true
    path?: true
    source?: true
    gitRemote?: true
    branch?: true
    version?: true
    lastCommitHash?: true
    lastCommitMessage?: true
    lastCommitTime?: true
    notes?: true
    tags?: true
    priority?: true
    deployTargetId?: true
    envVarsEncrypted?: true
    composeSource?: true
    composeInline?: true
    deployedVersion?: true
    deployedAt?: true
    createdAt?: true
    updatedAt?: true
    _all?: true
  }

  export type ProjectAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Project to aggregate.
     */
    where?: ProjectWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Projects to fetch.
     */
    orderBy?: ProjectOrderByWithRelationInput | ProjectOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: ProjectWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Projects 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` Projects.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned Projects
    **/
    _count?: true | ProjectCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: ProjectAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: ProjectSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: ProjectMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: ProjectMaxAggregateInputType
  }

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




  export type ProjectGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: ProjectWhereInput
    orderBy?: ProjectOrderByWithAggregationInput | ProjectOrderByWithAggregationInput[]
    by: ProjectScalarFieldEnum[] | ProjectScalarFieldEnum
    having?: ProjectScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: ProjectCountAggregateInputType | true
    _avg?: ProjectAvgAggregateInputType
    _sum?: ProjectSumAggregateInputType
    _min?: ProjectMinAggregateInputType
    _max?: ProjectMaxAggregateInputType
  }

  export type ProjectGroupByOutputType = {
    id: string
    name: string
    path: string
    source: string
    gitRemote: string | null
    branch: string | null
    version: string | null
    lastCommitHash: string | null
    lastCommitMessage: string | null
    lastCommitTime: Date | null
    notes: string | null
    tags: string | null
    priority: number
    deployTargetId: string | null
    envVarsEncrypted: string | null
    composeSource: string
    composeInline: string | null
    deployedVersion: string | null
    deployedAt: Date | null
    createdAt: Date
    updatedAt: Date
    _count: ProjectCountAggregateOutputType | null
    _avg: ProjectAvgAggregateOutputType | null
    _sum: ProjectSumAggregateOutputType | null
    _min: ProjectMinAggregateOutputType | null
    _max: ProjectMaxAggregateOutputType | null
  }

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


  export type ProjectSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    name?: boolean
    path?: boolean
    source?: boolean
    gitRemote?: boolean
    branch?: boolean
    version?: boolean
    lastCommitHash?: boolean
    lastCommitMessage?: boolean
    lastCommitTime?: boolean
    notes?: boolean
    tags?: boolean
    priority?: boolean
    deployTargetId?: boolean
    envVarsEncrypted?: boolean
    composeSource?: boolean
    composeInline?: boolean
    deployedVersion?: boolean
    deployedAt?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    deployTarget?: boolean | Project$deployTargetArgs<ExtArgs>
    deploys?: boolean | Project$deploysArgs<ExtArgs>
    commits?: boolean | Project$commitsArgs<ExtArgs>
    _count?: boolean | ProjectCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["project"]>

  export type ProjectSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    name?: boolean
    path?: boolean
    source?: boolean
    gitRemote?: boolean
    branch?: boolean
    version?: boolean
    lastCommitHash?: boolean
    lastCommitMessage?: boolean
    lastCommitTime?: boolean
    notes?: boolean
    tags?: boolean
    priority?: boolean
    deployTargetId?: boolean
    envVarsEncrypted?: boolean
    composeSource?: boolean
    composeInline?: boolean
    deployedVersion?: boolean
    deployedAt?: boolean
    createdAt?: boolean
    updatedAt?: boolean
    deployTarget?: boolean | Project$deployTargetArgs<ExtArgs>
  }, ExtArgs["result"]["project"]>

  export type ProjectSelectScalar = {
    id?: boolean
    name?: boolean
    path?: boolean
    source?: boolean
    gitRemote?: boolean
    branch?: boolean
    version?: boolean
    lastCommitHash?: boolean
    lastCommitMessage?: boolean
    lastCommitTime?: boolean
    notes?: boolean
    tags?: boolean
    priority?: boolean
    deployTargetId?: boolean
    envVarsEncrypted?: boolean
    composeSource?: boolean
    composeInline?: boolean
    deployedVersion?: boolean
    deployedAt?: boolean
    createdAt?: boolean
    updatedAt?: boolean
  }

  export type ProjectInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    deployTarget?: boolean | Project$deployTargetArgs<ExtArgs>
    deploys?: boolean | Project$deploysArgs<ExtArgs>
    commits?: boolean | Project$commitsArgs<ExtArgs>
    _count?: boolean | ProjectCountOutputTypeDefaultArgs<ExtArgs>
  }
  export type ProjectIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    deployTarget?: boolean | Project$deployTargetArgs<ExtArgs>
  }

  export type $ProjectPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "Project"
    objects: {
      deployTarget: Prisma.$DeployTargetPayload<ExtArgs> | null
      deploys: Prisma.$DeployHistoryPayload<ExtArgs>[]
      commits: Prisma.$CommitLogPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      id: string
      name: string
      path: string
      source: string
      gitRemote: string | null
      branch: string | null
      version: string | null
      lastCommitHash: string | null
      lastCommitMessage: string | null
      lastCommitTime: Date | null
      notes: string | null
      tags: string | null
      priority: number
      deployTargetId: string | null
      envVarsEncrypted: string | null
      composeSource: string
      composeInline: string | null
      deployedVersion: string | null
      deployedAt: Date | null
      createdAt: Date
      updatedAt: Date
    }, ExtArgs["result"]["project"]>
    composites: {}
  }

  type ProjectGetPayload<S extends boolean | null | undefined | ProjectDefaultArgs> = $Result.GetResult<Prisma.$ProjectPayload, S>

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

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

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

    /**
     * Find the first Project 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 {ProjectFindFirstArgs} args - Arguments to find a Project
     * @example
     * // Get one Project
     * const project = await prisma.project.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends ProjectFindFirstArgs>(args?: SelectSubset<T, ProjectFindFirstArgs<ExtArgs>>): Prisma__ProjectClient<$Result.GetResult<Prisma.$ProjectPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first Project 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 {ProjectFindFirstOrThrowArgs} args - Arguments to find a Project
     * @example
     * // Get one Project
     * const project = await prisma.project.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends ProjectFindFirstOrThrowArgs>(args?: SelectSubset<T, ProjectFindFirstOrThrowArgs<ExtArgs>>): Prisma__ProjectClient<$Result.GetResult<Prisma.$ProjectPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more Projects 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 {ProjectFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Projects
     * const projects = await prisma.project.findMany()
     * 
     * // Get first 10 Projects
     * const projects = await prisma.project.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const projectWithIdOnly = await prisma.project.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends ProjectFindManyArgs>(args?: SelectSubset<T, ProjectFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$ProjectPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a Project.
     * @param {ProjectCreateArgs} args - Arguments to create a Project.
     * @example
     * // Create one Project
     * const Project = await prisma.project.create({
     *   data: {
     *     // ... data to create a Project
     *   }
     * })
     * 
     */
    create<T extends ProjectCreateArgs>(args: SelectSubset<T, ProjectCreateArgs<ExtArgs>>): Prisma__ProjectClient<$Result.GetResult<Prisma.$ProjectPayload<ExtArgs>, T, "create">, never, ExtArgs>

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

    /**
     * Create many Projects and returns the data saved in the database.
     * @param {ProjectCreateManyAndReturnArgs} args - Arguments to create many Projects.
     * @example
     * // Create many Projects
     * const project = await prisma.project.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many Projects and only return the `id`
     * const projectWithIdOnly = await prisma.project.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 ProjectCreateManyAndReturnArgs>(args?: SelectSubset<T, ProjectCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$ProjectPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a Project.
     * @param {ProjectDeleteArgs} args - Arguments to delete one Project.
     * @example
     * // Delete one Project
     * const Project = await prisma.project.delete({
     *   where: {
     *     // ... filter to delete one Project
     *   }
     * })
     * 
     */
    delete<T extends ProjectDeleteArgs>(args: SelectSubset<T, ProjectDeleteArgs<ExtArgs>>): Prisma__ProjectClient<$Result.GetResult<Prisma.$ProjectPayload<ExtArgs>, T, "delete">, never, ExtArgs>

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

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

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

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


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

    /**
     * Allows you to perform aggregations operations on a Project.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ProjectAggregateArgs} 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 ProjectAggregateArgs>(args: Subset<T, ProjectAggregateArgs>): Prisma.PrismaPromise<GetProjectAggregateType<T>>

    /**
     * Group by Project.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {ProjectGroupByArgs} 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 ProjectGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: ProjectGroupByArgs['orderBy'] }
        : { orderBy?: ProjectGroupByArgs['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, ProjectGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetProjectGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the Project model
   */
  readonly fields: ProjectFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for Project.
   * 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__ProjectClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    deployTarget<T extends Project$deployTargetArgs<ExtArgs> = {}>(args?: Subset<T, Project$deployTargetArgs<ExtArgs>>): Prisma__DeployTargetClient<$Result.GetResult<Prisma.$DeployTargetPayload<ExtArgs>, T, "findUniqueOrThrow"> | null, null, ExtArgs>
    deploys<T extends Project$deploysArgs<ExtArgs> = {}>(args?: Subset<T, Project$deploysArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$DeployHistoryPayload<ExtArgs>, T, "findMany"> | Null>
    commits<T extends Project$commitsArgs<ExtArgs> = {}>(args?: Subset<T, Project$commitsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$CommitLogPayload<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 Project model
   */ 
  interface ProjectFieldRefs {
    readonly id: FieldRef<"Project", 'String'>
    readonly name: FieldRef<"Project", 'String'>
    readonly path: FieldRef<"Project", 'String'>
    readonly source: FieldRef<"Project", 'String'>
    readonly gitRemote: FieldRef<"Project", 'String'>
    readonly branch: FieldRef<"Project", 'String'>
    readonly version: FieldRef<"Project", 'String'>
    readonly lastCommitHash: FieldRef<"Project", 'String'>
    readonly lastCommitMessage: FieldRef<"Project", 'String'>
    readonly lastCommitTime: FieldRef<"Project", 'DateTime'>
    readonly notes: FieldRef<"Project", 'String'>
    readonly tags: FieldRef<"Project", 'String'>
    readonly priority: FieldRef<"Project", 'Int'>
    readonly deployTargetId: FieldRef<"Project", 'String'>
    readonly envVarsEncrypted: FieldRef<"Project", 'String'>
    readonly composeSource: FieldRef<"Project", 'String'>
    readonly composeInline: FieldRef<"Project", 'String'>
    readonly deployedVersion: FieldRef<"Project", 'String'>
    readonly deployedAt: FieldRef<"Project", 'DateTime'>
    readonly createdAt: FieldRef<"Project", 'DateTime'>
    readonly updatedAt: FieldRef<"Project", 'DateTime'>
  }
    

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

  /**
   * Project findUniqueOrThrow
   */
  export type ProjectFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Project
     */
    select?: ProjectSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ProjectInclude<ExtArgs> | null
    /**
     * Filter, which Project to fetch.
     */
    where: ProjectWhereUniqueInput
  }

  /**
   * Project findFirst
   */
  export type ProjectFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Project
     */
    select?: ProjectSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ProjectInclude<ExtArgs> | null
    /**
     * Filter, which Project to fetch.
     */
    where?: ProjectWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Projects to fetch.
     */
    orderBy?: ProjectOrderByWithRelationInput | ProjectOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Projects.
     */
    cursor?: ProjectWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Projects 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` Projects.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Projects.
     */
    distinct?: ProjectScalarFieldEnum | ProjectScalarFieldEnum[]
  }

  /**
   * Project findFirstOrThrow
   */
  export type ProjectFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Project
     */
    select?: ProjectSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ProjectInclude<ExtArgs> | null
    /**
     * Filter, which Project to fetch.
     */
    where?: ProjectWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Projects to fetch.
     */
    orderBy?: ProjectOrderByWithRelationInput | ProjectOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Projects.
     */
    cursor?: ProjectWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Projects 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` Projects.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Projects.
     */
    distinct?: ProjectScalarFieldEnum | ProjectScalarFieldEnum[]
  }

  /**
   * Project findMany
   */
  export type ProjectFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Project
     */
    select?: ProjectSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ProjectInclude<ExtArgs> | null
    /**
     * Filter, which Projects to fetch.
     */
    where?: ProjectWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Projects to fetch.
     */
    orderBy?: ProjectOrderByWithRelationInput | ProjectOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing Projects.
     */
    cursor?: ProjectWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Projects 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` Projects.
     */
    skip?: number
    distinct?: ProjectScalarFieldEnum | ProjectScalarFieldEnum[]
  }

  /**
   * Project create
   */
  export type ProjectCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Project
     */
    select?: ProjectSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ProjectInclude<ExtArgs> | null
    /**
     * The data needed to create a Project.
     */
    data: XOR<ProjectCreateInput, ProjectUncheckedCreateInput>
  }

  /**
   * Project createMany
   */
  export type ProjectCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many Projects.
     */
    data: ProjectCreateManyInput | ProjectCreateManyInput[]
  }

  /**
   * Project createManyAndReturn
   */
  export type ProjectCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Project
     */
    select?: ProjectSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many Projects.
     */
    data: ProjectCreateManyInput | ProjectCreateManyInput[]
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ProjectIncludeCreateManyAndReturn<ExtArgs> | null
  }

  /**
   * Project update
   */
  export type ProjectUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Project
     */
    select?: ProjectSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ProjectInclude<ExtArgs> | null
    /**
     * The data needed to update a Project.
     */
    data: XOR<ProjectUpdateInput, ProjectUncheckedUpdateInput>
    /**
     * Choose, which Project to update.
     */
    where: ProjectWhereUniqueInput
  }

  /**
   * Project updateMany
   */
  export type ProjectUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update Projects.
     */
    data: XOR<ProjectUpdateManyMutationInput, ProjectUncheckedUpdateManyInput>
    /**
     * Filter which Projects to update
     */
    where?: ProjectWhereInput
  }

  /**
   * Project upsert
   */
  export type ProjectUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Project
     */
    select?: ProjectSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ProjectInclude<ExtArgs> | null
    /**
     * The filter to search for the Project to update in case it exists.
     */
    where: ProjectWhereUniqueInput
    /**
     * In case the Project found by the `where` argument doesn't exist, create a new Project with this data.
     */
    create: XOR<ProjectCreateInput, ProjectUncheckedCreateInput>
    /**
     * In case the Project was found with the provided `where` argument, update it with this data.
     */
    update: XOR<ProjectUpdateInput, ProjectUncheckedUpdateInput>
  }

  /**
   * Project delete
   */
  export type ProjectDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Project
     */
    select?: ProjectSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ProjectInclude<ExtArgs> | null
    /**
     * Filter which Project to delete.
     */
    where: ProjectWhereUniqueInput
  }

  /**
   * Project deleteMany
   */
  export type ProjectDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Projects to delete
     */
    where?: ProjectWhereInput
  }

  /**
   * Project.deployTarget
   */
  export type Project$deployTargetArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployTarget
     */
    select?: DeployTargetSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployTargetInclude<ExtArgs> | null
    where?: DeployTargetWhereInput
  }

  /**
   * Project.deploys
   */
  export type Project$deploysArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployHistory
     */
    select?: DeployHistorySelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployHistoryInclude<ExtArgs> | null
    where?: DeployHistoryWhereInput
    orderBy?: DeployHistoryOrderByWithRelationInput | DeployHistoryOrderByWithRelationInput[]
    cursor?: DeployHistoryWhereUniqueInput
    take?: number
    skip?: number
    distinct?: DeployHistoryScalarFieldEnum | DeployHistoryScalarFieldEnum[]
  }

  /**
   * Project.commits
   */
  export type Project$commitsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CommitLog
     */
    select?: CommitLogSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CommitLogInclude<ExtArgs> | null
    where?: CommitLogWhereInput
    orderBy?: CommitLogOrderByWithRelationInput | CommitLogOrderByWithRelationInput[]
    cursor?: CommitLogWhereUniqueInput
    take?: number
    skip?: number
    distinct?: CommitLogScalarFieldEnum | CommitLogScalarFieldEnum[]
  }

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


  /**
   * Model Setting
   */

  export type AggregateSetting = {
    _count: SettingCountAggregateOutputType | null
    _min: SettingMinAggregateOutputType | null
    _max: SettingMaxAggregateOutputType | null
  }

  export type SettingMinAggregateOutputType = {
    key: string | null
    value: string | null
  }

  export type SettingMaxAggregateOutputType = {
    key: string | null
    value: string | null
  }

  export type SettingCountAggregateOutputType = {
    key: number
    value: number
    _all: number
  }


  export type SettingMinAggregateInputType = {
    key?: true
    value?: true
  }

  export type SettingMaxAggregateInputType = {
    key?: true
    value?: true
  }

  export type SettingCountAggregateInputType = {
    key?: true
    value?: true
    _all?: true
  }

  export type SettingAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Setting to aggregate.
     */
    where?: SettingWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Settings to fetch.
     */
    orderBy?: SettingOrderByWithRelationInput | SettingOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: SettingWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Settings 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` Settings.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned Settings
    **/
    _count?: true | SettingCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: SettingMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: SettingMaxAggregateInputType
  }

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




  export type SettingGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: SettingWhereInput
    orderBy?: SettingOrderByWithAggregationInput | SettingOrderByWithAggregationInput[]
    by: SettingScalarFieldEnum[] | SettingScalarFieldEnum
    having?: SettingScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: SettingCountAggregateInputType | true
    _min?: SettingMinAggregateInputType
    _max?: SettingMaxAggregateInputType
  }

  export type SettingGroupByOutputType = {
    key: string
    value: string
    _count: SettingCountAggregateOutputType | null
    _min: SettingMinAggregateOutputType | null
    _max: SettingMaxAggregateOutputType | null
  }

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


  export type SettingSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    key?: boolean
    value?: boolean
  }, ExtArgs["result"]["setting"]>

  export type SettingSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    key?: boolean
    value?: boolean
  }, ExtArgs["result"]["setting"]>

  export type SettingSelectScalar = {
    key?: boolean
    value?: boolean
  }


  export type $SettingPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "Setting"
    objects: {}
    scalars: $Extensions.GetPayloadResult<{
      key: string
      value: string
    }, ExtArgs["result"]["setting"]>
    composites: {}
  }

  type SettingGetPayload<S extends boolean | null | undefined | SettingDefaultArgs> = $Result.GetResult<Prisma.$SettingPayload, S>

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

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

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

    /**
     * Find the first Setting 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 {SettingFindFirstArgs} args - Arguments to find a Setting
     * @example
     * // Get one Setting
     * const setting = await prisma.setting.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends SettingFindFirstArgs>(args?: SelectSubset<T, SettingFindFirstArgs<ExtArgs>>): Prisma__SettingClient<$Result.GetResult<Prisma.$SettingPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first Setting 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 {SettingFindFirstOrThrowArgs} args - Arguments to find a Setting
     * @example
     * // Get one Setting
     * const setting = await prisma.setting.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends SettingFindFirstOrThrowArgs>(args?: SelectSubset<T, SettingFindFirstOrThrowArgs<ExtArgs>>): Prisma__SettingClient<$Result.GetResult<Prisma.$SettingPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more Settings 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 {SettingFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Settings
     * const settings = await prisma.setting.findMany()
     * 
     * // Get first 10 Settings
     * const settings = await prisma.setting.findMany({ take: 10 })
     * 
     * // Only select the `key`
     * const settingWithKeyOnly = await prisma.setting.findMany({ select: { key: true } })
     * 
     */
    findMany<T extends SettingFindManyArgs>(args?: SelectSubset<T, SettingFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$SettingPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a Setting.
     * @param {SettingCreateArgs} args - Arguments to create a Setting.
     * @example
     * // Create one Setting
     * const Setting = await prisma.setting.create({
     *   data: {
     *     // ... data to create a Setting
     *   }
     * })
     * 
     */
    create<T extends SettingCreateArgs>(args: SelectSubset<T, SettingCreateArgs<ExtArgs>>): Prisma__SettingClient<$Result.GetResult<Prisma.$SettingPayload<ExtArgs>, T, "create">, never, ExtArgs>

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

    /**
     * Create many Settings and returns the data saved in the database.
     * @param {SettingCreateManyAndReturnArgs} args - Arguments to create many Settings.
     * @example
     * // Create many Settings
     * const setting = await prisma.setting.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many Settings and only return the `key`
     * const settingWithKeyOnly = await prisma.setting.createManyAndReturn({ 
     *   select: { key: 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 SettingCreateManyAndReturnArgs>(args?: SelectSubset<T, SettingCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$SettingPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a Setting.
     * @param {SettingDeleteArgs} args - Arguments to delete one Setting.
     * @example
     * // Delete one Setting
     * const Setting = await prisma.setting.delete({
     *   where: {
     *     // ... filter to delete one Setting
     *   }
     * })
     * 
     */
    delete<T extends SettingDeleteArgs>(args: SelectSubset<T, SettingDeleteArgs<ExtArgs>>): Prisma__SettingClient<$Result.GetResult<Prisma.$SettingPayload<ExtArgs>, T, "delete">, never, ExtArgs>

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

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

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

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


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

    /**
     * Allows you to perform aggregations operations on a Setting.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SettingAggregateArgs} 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 SettingAggregateArgs>(args: Subset<T, SettingAggregateArgs>): Prisma.PrismaPromise<GetSettingAggregateType<T>>

    /**
     * Group by Setting.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {SettingGroupByArgs} 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 SettingGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: SettingGroupByArgs['orderBy'] }
        : { orderBy?: SettingGroupByArgs['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, SettingGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetSettingGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the Setting model
   */
  readonly fields: SettingFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for Setting.
   * 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__SettingClient<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 Setting model
   */ 
  interface SettingFieldRefs {
    readonly key: FieldRef<"Setting", 'String'>
    readonly value: FieldRef<"Setting", 'String'>
  }
    

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

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

  /**
   * Setting findFirst
   */
  export type SettingFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Setting
     */
    select?: SettingSelect<ExtArgs> | null
    /**
     * Filter, which Setting to fetch.
     */
    where?: SettingWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Settings to fetch.
     */
    orderBy?: SettingOrderByWithRelationInput | SettingOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Settings.
     */
    cursor?: SettingWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Settings 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` Settings.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Settings.
     */
    distinct?: SettingScalarFieldEnum | SettingScalarFieldEnum[]
  }

  /**
   * Setting findFirstOrThrow
   */
  export type SettingFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Setting
     */
    select?: SettingSelect<ExtArgs> | null
    /**
     * Filter, which Setting to fetch.
     */
    where?: SettingWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Settings to fetch.
     */
    orderBy?: SettingOrderByWithRelationInput | SettingOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for Settings.
     */
    cursor?: SettingWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Settings 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` Settings.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of Settings.
     */
    distinct?: SettingScalarFieldEnum | SettingScalarFieldEnum[]
  }

  /**
   * Setting findMany
   */
  export type SettingFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Setting
     */
    select?: SettingSelect<ExtArgs> | null
    /**
     * Filter, which Settings to fetch.
     */
    where?: SettingWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of Settings to fetch.
     */
    orderBy?: SettingOrderByWithRelationInput | SettingOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing Settings.
     */
    cursor?: SettingWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` Settings 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` Settings.
     */
    skip?: number
    distinct?: SettingScalarFieldEnum | SettingScalarFieldEnum[]
  }

  /**
   * Setting create
   */
  export type SettingCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Setting
     */
    select?: SettingSelect<ExtArgs> | null
    /**
     * The data needed to create a Setting.
     */
    data: XOR<SettingCreateInput, SettingUncheckedCreateInput>
  }

  /**
   * Setting createMany
   */
  export type SettingCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many Settings.
     */
    data: SettingCreateManyInput | SettingCreateManyInput[]
  }

  /**
   * Setting createManyAndReturn
   */
  export type SettingCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Setting
     */
    select?: SettingSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many Settings.
     */
    data: SettingCreateManyInput | SettingCreateManyInput[]
  }

  /**
   * Setting update
   */
  export type SettingUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Setting
     */
    select?: SettingSelect<ExtArgs> | null
    /**
     * The data needed to update a Setting.
     */
    data: XOR<SettingUpdateInput, SettingUncheckedUpdateInput>
    /**
     * Choose, which Setting to update.
     */
    where: SettingWhereUniqueInput
  }

  /**
   * Setting updateMany
   */
  export type SettingUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update Settings.
     */
    data: XOR<SettingUpdateManyMutationInput, SettingUncheckedUpdateManyInput>
    /**
     * Filter which Settings to update
     */
    where?: SettingWhereInput
  }

  /**
   * Setting upsert
   */
  export type SettingUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Setting
     */
    select?: SettingSelect<ExtArgs> | null
    /**
     * The filter to search for the Setting to update in case it exists.
     */
    where: SettingWhereUniqueInput
    /**
     * In case the Setting found by the `where` argument doesn't exist, create a new Setting with this data.
     */
    create: XOR<SettingCreateInput, SettingUncheckedCreateInput>
    /**
     * In case the Setting was found with the provided `where` argument, update it with this data.
     */
    update: XOR<SettingUpdateInput, SettingUncheckedUpdateInput>
  }

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

  /**
   * Setting deleteMany
   */
  export type SettingDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which Settings to delete
     */
    where?: SettingWhereInput
  }

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


  /**
   * Model CommitLog
   */

  export type AggregateCommitLog = {
    _count: CommitLogCountAggregateOutputType | null
    _min: CommitLogMinAggregateOutputType | null
    _max: CommitLogMaxAggregateOutputType | null
  }

  export type CommitLogMinAggregateOutputType = {
    id: string | null
    projectId: string | null
    hash: string | null
    message: string | null
    author: string | null
    branch: string | null
    timestamp: Date | null
  }

  export type CommitLogMaxAggregateOutputType = {
    id: string | null
    projectId: string | null
    hash: string | null
    message: string | null
    author: string | null
    branch: string | null
    timestamp: Date | null
  }

  export type CommitLogCountAggregateOutputType = {
    id: number
    projectId: number
    hash: number
    message: number
    author: number
    branch: number
    timestamp: number
    _all: number
  }


  export type CommitLogMinAggregateInputType = {
    id?: true
    projectId?: true
    hash?: true
    message?: true
    author?: true
    branch?: true
    timestamp?: true
  }

  export type CommitLogMaxAggregateInputType = {
    id?: true
    projectId?: true
    hash?: true
    message?: true
    author?: true
    branch?: true
    timestamp?: true
  }

  export type CommitLogCountAggregateInputType = {
    id?: true
    projectId?: true
    hash?: true
    message?: true
    author?: true
    branch?: true
    timestamp?: true
    _all?: true
  }

  export type CommitLogAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which CommitLog to aggregate.
     */
    where?: CommitLogWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of CommitLogs to fetch.
     */
    orderBy?: CommitLogOrderByWithRelationInput | CommitLogOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: CommitLogWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` CommitLogs 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` CommitLogs.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned CommitLogs
    **/
    _count?: true | CommitLogCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: CommitLogMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: CommitLogMaxAggregateInputType
  }

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




  export type CommitLogGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: CommitLogWhereInput
    orderBy?: CommitLogOrderByWithAggregationInput | CommitLogOrderByWithAggregationInput[]
    by: CommitLogScalarFieldEnum[] | CommitLogScalarFieldEnum
    having?: CommitLogScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: CommitLogCountAggregateInputType | true
    _min?: CommitLogMinAggregateInputType
    _max?: CommitLogMaxAggregateInputType
  }

  export type CommitLogGroupByOutputType = {
    id: string
    projectId: string
    hash: string
    message: string
    author: string | null
    branch: string | null
    timestamp: Date
    _count: CommitLogCountAggregateOutputType | null
    _min: CommitLogMinAggregateOutputType | null
    _max: CommitLogMaxAggregateOutputType | null
  }

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


  export type CommitLogSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    projectId?: boolean
    hash?: boolean
    message?: boolean
    author?: boolean
    branch?: boolean
    timestamp?: boolean
    project?: boolean | ProjectDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["commitLog"]>

  export type CommitLogSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    projectId?: boolean
    hash?: boolean
    message?: boolean
    author?: boolean
    branch?: boolean
    timestamp?: boolean
    project?: boolean | ProjectDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["commitLog"]>

  export type CommitLogSelectScalar = {
    id?: boolean
    projectId?: boolean
    hash?: boolean
    message?: boolean
    author?: boolean
    branch?: boolean
    timestamp?: boolean
  }

  export type CommitLogInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    project?: boolean | ProjectDefaultArgs<ExtArgs>
  }
  export type CommitLogIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    project?: boolean | ProjectDefaultArgs<ExtArgs>
  }

  export type $CommitLogPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "CommitLog"
    objects: {
      project: Prisma.$ProjectPayload<ExtArgs>
    }
    scalars: $Extensions.GetPayloadResult<{
      id: string
      projectId: string
      hash: string
      message: string
      author: string | null
      branch: string | null
      timestamp: Date
    }, ExtArgs["result"]["commitLog"]>
    composites: {}
  }

  type CommitLogGetPayload<S extends boolean | null | undefined | CommitLogDefaultArgs> = $Result.GetResult<Prisma.$CommitLogPayload, S>

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

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

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

    /**
     * Find the first CommitLog 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 {CommitLogFindFirstArgs} args - Arguments to find a CommitLog
     * @example
     * // Get one CommitLog
     * const commitLog = await prisma.commitLog.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends CommitLogFindFirstArgs>(args?: SelectSubset<T, CommitLogFindFirstArgs<ExtArgs>>): Prisma__CommitLogClient<$Result.GetResult<Prisma.$CommitLogPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first CommitLog 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 {CommitLogFindFirstOrThrowArgs} args - Arguments to find a CommitLog
     * @example
     * // Get one CommitLog
     * const commitLog = await prisma.commitLog.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends CommitLogFindFirstOrThrowArgs>(args?: SelectSubset<T, CommitLogFindFirstOrThrowArgs<ExtArgs>>): Prisma__CommitLogClient<$Result.GetResult<Prisma.$CommitLogPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more CommitLogs 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 {CommitLogFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all CommitLogs
     * const commitLogs = await prisma.commitLog.findMany()
     * 
     * // Get first 10 CommitLogs
     * const commitLogs = await prisma.commitLog.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const commitLogWithIdOnly = await prisma.commitLog.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends CommitLogFindManyArgs>(args?: SelectSubset<T, CommitLogFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$CommitLogPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a CommitLog.
     * @param {CommitLogCreateArgs} args - Arguments to create a CommitLog.
     * @example
     * // Create one CommitLog
     * const CommitLog = await prisma.commitLog.create({
     *   data: {
     *     // ... data to create a CommitLog
     *   }
     * })
     * 
     */
    create<T extends CommitLogCreateArgs>(args: SelectSubset<T, CommitLogCreateArgs<ExtArgs>>): Prisma__CommitLogClient<$Result.GetResult<Prisma.$CommitLogPayload<ExtArgs>, T, "create">, never, ExtArgs>

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

    /**
     * Create many CommitLogs and returns the data saved in the database.
     * @param {CommitLogCreateManyAndReturnArgs} args - Arguments to create many CommitLogs.
     * @example
     * // Create many CommitLogs
     * const commitLog = await prisma.commitLog.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many CommitLogs and only return the `id`
     * const commitLogWithIdOnly = await prisma.commitLog.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 CommitLogCreateManyAndReturnArgs>(args?: SelectSubset<T, CommitLogCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$CommitLogPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a CommitLog.
     * @param {CommitLogDeleteArgs} args - Arguments to delete one CommitLog.
     * @example
     * // Delete one CommitLog
     * const CommitLog = await prisma.commitLog.delete({
     *   where: {
     *     // ... filter to delete one CommitLog
     *   }
     * })
     * 
     */
    delete<T extends CommitLogDeleteArgs>(args: SelectSubset<T, CommitLogDeleteArgs<ExtArgs>>): Prisma__CommitLogClient<$Result.GetResult<Prisma.$CommitLogPayload<ExtArgs>, T, "delete">, never, ExtArgs>

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

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

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

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


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

    /**
     * Allows you to perform aggregations operations on a CommitLog.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CommitLogAggregateArgs} 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 CommitLogAggregateArgs>(args: Subset<T, CommitLogAggregateArgs>): Prisma.PrismaPromise<GetCommitLogAggregateType<T>>

    /**
     * Group by CommitLog.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {CommitLogGroupByArgs} 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 CommitLogGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: CommitLogGroupByArgs['orderBy'] }
        : { orderBy?: CommitLogGroupByArgs['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, CommitLogGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetCommitLogGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the CommitLog model
   */
  readonly fields: CommitLogFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for CommitLog.
   * 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__CommitLogClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    project<T extends ProjectDefaultArgs<ExtArgs> = {}>(args?: Subset<T, ProjectDefaultArgs<ExtArgs>>): Prisma__ProjectClient<$Result.GetResult<Prisma.$ProjectPayload<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 CommitLog model
   */ 
  interface CommitLogFieldRefs {
    readonly id: FieldRef<"CommitLog", 'String'>
    readonly projectId: FieldRef<"CommitLog", 'String'>
    readonly hash: FieldRef<"CommitLog", 'String'>
    readonly message: FieldRef<"CommitLog", 'String'>
    readonly author: FieldRef<"CommitLog", 'String'>
    readonly branch: FieldRef<"CommitLog", 'String'>
    readonly timestamp: FieldRef<"CommitLog", 'DateTime'>
  }
    

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

  /**
   * CommitLog findUniqueOrThrow
   */
  export type CommitLogFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CommitLog
     */
    select?: CommitLogSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CommitLogInclude<ExtArgs> | null
    /**
     * Filter, which CommitLog to fetch.
     */
    where: CommitLogWhereUniqueInput
  }

  /**
   * CommitLog findFirst
   */
  export type CommitLogFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CommitLog
     */
    select?: CommitLogSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CommitLogInclude<ExtArgs> | null
    /**
     * Filter, which CommitLog to fetch.
     */
    where?: CommitLogWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of CommitLogs to fetch.
     */
    orderBy?: CommitLogOrderByWithRelationInput | CommitLogOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for CommitLogs.
     */
    cursor?: CommitLogWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` CommitLogs 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` CommitLogs.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of CommitLogs.
     */
    distinct?: CommitLogScalarFieldEnum | CommitLogScalarFieldEnum[]
  }

  /**
   * CommitLog findFirstOrThrow
   */
  export type CommitLogFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CommitLog
     */
    select?: CommitLogSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CommitLogInclude<ExtArgs> | null
    /**
     * Filter, which CommitLog to fetch.
     */
    where?: CommitLogWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of CommitLogs to fetch.
     */
    orderBy?: CommitLogOrderByWithRelationInput | CommitLogOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for CommitLogs.
     */
    cursor?: CommitLogWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` CommitLogs 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` CommitLogs.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of CommitLogs.
     */
    distinct?: CommitLogScalarFieldEnum | CommitLogScalarFieldEnum[]
  }

  /**
   * CommitLog findMany
   */
  export type CommitLogFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CommitLog
     */
    select?: CommitLogSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CommitLogInclude<ExtArgs> | null
    /**
     * Filter, which CommitLogs to fetch.
     */
    where?: CommitLogWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of CommitLogs to fetch.
     */
    orderBy?: CommitLogOrderByWithRelationInput | CommitLogOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing CommitLogs.
     */
    cursor?: CommitLogWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` CommitLogs 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` CommitLogs.
     */
    skip?: number
    distinct?: CommitLogScalarFieldEnum | CommitLogScalarFieldEnum[]
  }

  /**
   * CommitLog create
   */
  export type CommitLogCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CommitLog
     */
    select?: CommitLogSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CommitLogInclude<ExtArgs> | null
    /**
     * The data needed to create a CommitLog.
     */
    data: XOR<CommitLogCreateInput, CommitLogUncheckedCreateInput>
  }

  /**
   * CommitLog createMany
   */
  export type CommitLogCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many CommitLogs.
     */
    data: CommitLogCreateManyInput | CommitLogCreateManyInput[]
  }

  /**
   * CommitLog createManyAndReturn
   */
  export type CommitLogCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CommitLog
     */
    select?: CommitLogSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many CommitLogs.
     */
    data: CommitLogCreateManyInput | CommitLogCreateManyInput[]
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CommitLogIncludeCreateManyAndReturn<ExtArgs> | null
  }

  /**
   * CommitLog update
   */
  export type CommitLogUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CommitLog
     */
    select?: CommitLogSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CommitLogInclude<ExtArgs> | null
    /**
     * The data needed to update a CommitLog.
     */
    data: XOR<CommitLogUpdateInput, CommitLogUncheckedUpdateInput>
    /**
     * Choose, which CommitLog to update.
     */
    where: CommitLogWhereUniqueInput
  }

  /**
   * CommitLog updateMany
   */
  export type CommitLogUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update CommitLogs.
     */
    data: XOR<CommitLogUpdateManyMutationInput, CommitLogUncheckedUpdateManyInput>
    /**
     * Filter which CommitLogs to update
     */
    where?: CommitLogWhereInput
  }

  /**
   * CommitLog upsert
   */
  export type CommitLogUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CommitLog
     */
    select?: CommitLogSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CommitLogInclude<ExtArgs> | null
    /**
     * The filter to search for the CommitLog to update in case it exists.
     */
    where: CommitLogWhereUniqueInput
    /**
     * In case the CommitLog found by the `where` argument doesn't exist, create a new CommitLog with this data.
     */
    create: XOR<CommitLogCreateInput, CommitLogUncheckedCreateInput>
    /**
     * In case the CommitLog was found with the provided `where` argument, update it with this data.
     */
    update: XOR<CommitLogUpdateInput, CommitLogUncheckedUpdateInput>
  }

  /**
   * CommitLog delete
   */
  export type CommitLogDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the CommitLog
     */
    select?: CommitLogSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: CommitLogInclude<ExtArgs> | null
    /**
     * Filter which CommitLog to delete.
     */
    where: CommitLogWhereUniqueInput
  }

  /**
   * CommitLog deleteMany
   */
  export type CommitLogDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which CommitLogs to delete
     */
    where?: CommitLogWhereInput
  }

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


  /**
   * Model DeployTarget
   */

  export type AggregateDeployTarget = {
    _count: DeployTargetCountAggregateOutputType | null
    _avg: DeployTargetAvgAggregateOutputType | null
    _sum: DeployTargetSumAggregateOutputType | null
    _min: DeployTargetMinAggregateOutputType | null
    _max: DeployTargetMaxAggregateOutputType | null
  }

  export type DeployTargetAvgAggregateOutputType = {
    sshPort: number | null
  }

  export type DeployTargetSumAggregateOutputType = {
    sshPort: number | null
  }

  export type DeployTargetMinAggregateOutputType = {
    id: string | null
    name: string | null
    host: string | null
    sshPort: number | null
    sshUser: string | null
    authMode: string | null
    authBlob: string | null
    composePath: string | null
    notes: string | null
    createdAt: Date | null
  }

  export type DeployTargetMaxAggregateOutputType = {
    id: string | null
    name: string | null
    host: string | null
    sshPort: number | null
    sshUser: string | null
    authMode: string | null
    authBlob: string | null
    composePath: string | null
    notes: string | null
    createdAt: Date | null
  }

  export type DeployTargetCountAggregateOutputType = {
    id: number
    name: number
    host: number
    sshPort: number
    sshUser: number
    authMode: number
    authBlob: number
    composePath: number
    notes: number
    createdAt: number
    _all: number
  }


  export type DeployTargetAvgAggregateInputType = {
    sshPort?: true
  }

  export type DeployTargetSumAggregateInputType = {
    sshPort?: true
  }

  export type DeployTargetMinAggregateInputType = {
    id?: true
    name?: true
    host?: true
    sshPort?: true
    sshUser?: true
    authMode?: true
    authBlob?: true
    composePath?: true
    notes?: true
    createdAt?: true
  }

  export type DeployTargetMaxAggregateInputType = {
    id?: true
    name?: true
    host?: true
    sshPort?: true
    sshUser?: true
    authMode?: true
    authBlob?: true
    composePath?: true
    notes?: true
    createdAt?: true
  }

  export type DeployTargetCountAggregateInputType = {
    id?: true
    name?: true
    host?: true
    sshPort?: true
    sshUser?: true
    authMode?: true
    authBlob?: true
    composePath?: true
    notes?: true
    createdAt?: true
    _all?: true
  }

  export type DeployTargetAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which DeployTarget to aggregate.
     */
    where?: DeployTargetWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of DeployTargets to fetch.
     */
    orderBy?: DeployTargetOrderByWithRelationInput | DeployTargetOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: DeployTargetWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` DeployTargets 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` DeployTargets.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned DeployTargets
    **/
    _count?: true | DeployTargetCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: DeployTargetAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: DeployTargetSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: DeployTargetMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: DeployTargetMaxAggregateInputType
  }

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




  export type DeployTargetGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: DeployTargetWhereInput
    orderBy?: DeployTargetOrderByWithAggregationInput | DeployTargetOrderByWithAggregationInput[]
    by: DeployTargetScalarFieldEnum[] | DeployTargetScalarFieldEnum
    having?: DeployTargetScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: DeployTargetCountAggregateInputType | true
    _avg?: DeployTargetAvgAggregateInputType
    _sum?: DeployTargetSumAggregateInputType
    _min?: DeployTargetMinAggregateInputType
    _max?: DeployTargetMaxAggregateInputType
  }

  export type DeployTargetGroupByOutputType = {
    id: string
    name: string
    host: string
    sshPort: number
    sshUser: string
    authMode: string
    authBlob: string
    composePath: string
    notes: string | null
    createdAt: Date
    _count: DeployTargetCountAggregateOutputType | null
    _avg: DeployTargetAvgAggregateOutputType | null
    _sum: DeployTargetSumAggregateOutputType | null
    _min: DeployTargetMinAggregateOutputType | null
    _max: DeployTargetMaxAggregateOutputType | null
  }

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


  export type DeployTargetSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    name?: boolean
    host?: boolean
    sshPort?: boolean
    sshUser?: boolean
    authMode?: boolean
    authBlob?: boolean
    composePath?: boolean
    notes?: boolean
    createdAt?: boolean
    projects?: boolean | DeployTarget$projectsArgs<ExtArgs>
    _count?: boolean | DeployTargetCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["deployTarget"]>

  export type DeployTargetSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    name?: boolean
    host?: boolean
    sshPort?: boolean
    sshUser?: boolean
    authMode?: boolean
    authBlob?: boolean
    composePath?: boolean
    notes?: boolean
    createdAt?: boolean
  }, ExtArgs["result"]["deployTarget"]>

  export type DeployTargetSelectScalar = {
    id?: boolean
    name?: boolean
    host?: boolean
    sshPort?: boolean
    sshUser?: boolean
    authMode?: boolean
    authBlob?: boolean
    composePath?: boolean
    notes?: boolean
    createdAt?: boolean
  }

  export type DeployTargetInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    projects?: boolean | DeployTarget$projectsArgs<ExtArgs>
    _count?: boolean | DeployTargetCountOutputTypeDefaultArgs<ExtArgs>
  }
  export type DeployTargetIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {}

  export type $DeployTargetPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "DeployTarget"
    objects: {
      projects: Prisma.$ProjectPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      id: string
      name: string
      host: string
      sshPort: number
      sshUser: string
      authMode: string
      authBlob: string
      composePath: string
      notes: string | null
      createdAt: Date
    }, ExtArgs["result"]["deployTarget"]>
    composites: {}
  }

  type DeployTargetGetPayload<S extends boolean | null | undefined | DeployTargetDefaultArgs> = $Result.GetResult<Prisma.$DeployTargetPayload, S>

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

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

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

    /**
     * Find the first DeployTarget 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 {DeployTargetFindFirstArgs} args - Arguments to find a DeployTarget
     * @example
     * // Get one DeployTarget
     * const deployTarget = await prisma.deployTarget.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends DeployTargetFindFirstArgs>(args?: SelectSubset<T, DeployTargetFindFirstArgs<ExtArgs>>): Prisma__DeployTargetClient<$Result.GetResult<Prisma.$DeployTargetPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first DeployTarget 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 {DeployTargetFindFirstOrThrowArgs} args - Arguments to find a DeployTarget
     * @example
     * // Get one DeployTarget
     * const deployTarget = await prisma.deployTarget.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends DeployTargetFindFirstOrThrowArgs>(args?: SelectSubset<T, DeployTargetFindFirstOrThrowArgs<ExtArgs>>): Prisma__DeployTargetClient<$Result.GetResult<Prisma.$DeployTargetPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more DeployTargets 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 {DeployTargetFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all DeployTargets
     * const deployTargets = await prisma.deployTarget.findMany()
     * 
     * // Get first 10 DeployTargets
     * const deployTargets = await prisma.deployTarget.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const deployTargetWithIdOnly = await prisma.deployTarget.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends DeployTargetFindManyArgs>(args?: SelectSubset<T, DeployTargetFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$DeployTargetPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a DeployTarget.
     * @param {DeployTargetCreateArgs} args - Arguments to create a DeployTarget.
     * @example
     * // Create one DeployTarget
     * const DeployTarget = await prisma.deployTarget.create({
     *   data: {
     *     // ... data to create a DeployTarget
     *   }
     * })
     * 
     */
    create<T extends DeployTargetCreateArgs>(args: SelectSubset<T, DeployTargetCreateArgs<ExtArgs>>): Prisma__DeployTargetClient<$Result.GetResult<Prisma.$DeployTargetPayload<ExtArgs>, T, "create">, never, ExtArgs>

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

    /**
     * Create many DeployTargets and returns the data saved in the database.
     * @param {DeployTargetCreateManyAndReturnArgs} args - Arguments to create many DeployTargets.
     * @example
     * // Create many DeployTargets
     * const deployTarget = await prisma.deployTarget.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many DeployTargets and only return the `id`
     * const deployTargetWithIdOnly = await prisma.deployTarget.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 DeployTargetCreateManyAndReturnArgs>(args?: SelectSubset<T, DeployTargetCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$DeployTargetPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a DeployTarget.
     * @param {DeployTargetDeleteArgs} args - Arguments to delete one DeployTarget.
     * @example
     * // Delete one DeployTarget
     * const DeployTarget = await prisma.deployTarget.delete({
     *   where: {
     *     // ... filter to delete one DeployTarget
     *   }
     * })
     * 
     */
    delete<T extends DeployTargetDeleteArgs>(args: SelectSubset<T, DeployTargetDeleteArgs<ExtArgs>>): Prisma__DeployTargetClient<$Result.GetResult<Prisma.$DeployTargetPayload<ExtArgs>, T, "delete">, never, ExtArgs>

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

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

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

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


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

    /**
     * Allows you to perform aggregations operations on a DeployTarget.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DeployTargetAggregateArgs} 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 DeployTargetAggregateArgs>(args: Subset<T, DeployTargetAggregateArgs>): Prisma.PrismaPromise<GetDeployTargetAggregateType<T>>

    /**
     * Group by DeployTarget.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DeployTargetGroupByArgs} 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 DeployTargetGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: DeployTargetGroupByArgs['orderBy'] }
        : { orderBy?: DeployTargetGroupByArgs['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, DeployTargetGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetDeployTargetGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the DeployTarget model
   */
  readonly fields: DeployTargetFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for DeployTarget.
   * 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__DeployTargetClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    projects<T extends DeployTarget$projectsArgs<ExtArgs> = {}>(args?: Subset<T, DeployTarget$projectsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$ProjectPayload<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 DeployTarget model
   */ 
  interface DeployTargetFieldRefs {
    readonly id: FieldRef<"DeployTarget", 'String'>
    readonly name: FieldRef<"DeployTarget", 'String'>
    readonly host: FieldRef<"DeployTarget", 'String'>
    readonly sshPort: FieldRef<"DeployTarget", 'Int'>
    readonly sshUser: FieldRef<"DeployTarget", 'String'>
    readonly authMode: FieldRef<"DeployTarget", 'String'>
    readonly authBlob: FieldRef<"DeployTarget", 'String'>
    readonly composePath: FieldRef<"DeployTarget", 'String'>
    readonly notes: FieldRef<"DeployTarget", 'String'>
    readonly createdAt: FieldRef<"DeployTarget", 'DateTime'>
  }
    

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

  /**
   * DeployTarget findUniqueOrThrow
   */
  export type DeployTargetFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployTarget
     */
    select?: DeployTargetSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployTargetInclude<ExtArgs> | null
    /**
     * Filter, which DeployTarget to fetch.
     */
    where: DeployTargetWhereUniqueInput
  }

  /**
   * DeployTarget findFirst
   */
  export type DeployTargetFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployTarget
     */
    select?: DeployTargetSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployTargetInclude<ExtArgs> | null
    /**
     * Filter, which DeployTarget to fetch.
     */
    where?: DeployTargetWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of DeployTargets to fetch.
     */
    orderBy?: DeployTargetOrderByWithRelationInput | DeployTargetOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for DeployTargets.
     */
    cursor?: DeployTargetWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` DeployTargets 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` DeployTargets.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of DeployTargets.
     */
    distinct?: DeployTargetScalarFieldEnum | DeployTargetScalarFieldEnum[]
  }

  /**
   * DeployTarget findFirstOrThrow
   */
  export type DeployTargetFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployTarget
     */
    select?: DeployTargetSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployTargetInclude<ExtArgs> | null
    /**
     * Filter, which DeployTarget to fetch.
     */
    where?: DeployTargetWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of DeployTargets to fetch.
     */
    orderBy?: DeployTargetOrderByWithRelationInput | DeployTargetOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for DeployTargets.
     */
    cursor?: DeployTargetWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` DeployTargets 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` DeployTargets.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of DeployTargets.
     */
    distinct?: DeployTargetScalarFieldEnum | DeployTargetScalarFieldEnum[]
  }

  /**
   * DeployTarget findMany
   */
  export type DeployTargetFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployTarget
     */
    select?: DeployTargetSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployTargetInclude<ExtArgs> | null
    /**
     * Filter, which DeployTargets to fetch.
     */
    where?: DeployTargetWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of DeployTargets to fetch.
     */
    orderBy?: DeployTargetOrderByWithRelationInput | DeployTargetOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing DeployTargets.
     */
    cursor?: DeployTargetWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` DeployTargets 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` DeployTargets.
     */
    skip?: number
    distinct?: DeployTargetScalarFieldEnum | DeployTargetScalarFieldEnum[]
  }

  /**
   * DeployTarget create
   */
  export type DeployTargetCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployTarget
     */
    select?: DeployTargetSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployTargetInclude<ExtArgs> | null
    /**
     * The data needed to create a DeployTarget.
     */
    data: XOR<DeployTargetCreateInput, DeployTargetUncheckedCreateInput>
  }

  /**
   * DeployTarget createMany
   */
  export type DeployTargetCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many DeployTargets.
     */
    data: DeployTargetCreateManyInput | DeployTargetCreateManyInput[]
  }

  /**
   * DeployTarget createManyAndReturn
   */
  export type DeployTargetCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployTarget
     */
    select?: DeployTargetSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many DeployTargets.
     */
    data: DeployTargetCreateManyInput | DeployTargetCreateManyInput[]
  }

  /**
   * DeployTarget update
   */
  export type DeployTargetUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployTarget
     */
    select?: DeployTargetSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployTargetInclude<ExtArgs> | null
    /**
     * The data needed to update a DeployTarget.
     */
    data: XOR<DeployTargetUpdateInput, DeployTargetUncheckedUpdateInput>
    /**
     * Choose, which DeployTarget to update.
     */
    where: DeployTargetWhereUniqueInput
  }

  /**
   * DeployTarget updateMany
   */
  export type DeployTargetUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update DeployTargets.
     */
    data: XOR<DeployTargetUpdateManyMutationInput, DeployTargetUncheckedUpdateManyInput>
    /**
     * Filter which DeployTargets to update
     */
    where?: DeployTargetWhereInput
  }

  /**
   * DeployTarget upsert
   */
  export type DeployTargetUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployTarget
     */
    select?: DeployTargetSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployTargetInclude<ExtArgs> | null
    /**
     * The filter to search for the DeployTarget to update in case it exists.
     */
    where: DeployTargetWhereUniqueInput
    /**
     * In case the DeployTarget found by the `where` argument doesn't exist, create a new DeployTarget with this data.
     */
    create: XOR<DeployTargetCreateInput, DeployTargetUncheckedCreateInput>
    /**
     * In case the DeployTarget was found with the provided `where` argument, update it with this data.
     */
    update: XOR<DeployTargetUpdateInput, DeployTargetUncheckedUpdateInput>
  }

  /**
   * DeployTarget delete
   */
  export type DeployTargetDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployTarget
     */
    select?: DeployTargetSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployTargetInclude<ExtArgs> | null
    /**
     * Filter which DeployTarget to delete.
     */
    where: DeployTargetWhereUniqueInput
  }

  /**
   * DeployTarget deleteMany
   */
  export type DeployTargetDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which DeployTargets to delete
     */
    where?: DeployTargetWhereInput
  }

  /**
   * DeployTarget.projects
   */
  export type DeployTarget$projectsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Project
     */
    select?: ProjectSelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: ProjectInclude<ExtArgs> | null
    where?: ProjectWhereInput
    orderBy?: ProjectOrderByWithRelationInput | ProjectOrderByWithRelationInput[]
    cursor?: ProjectWhereUniqueInput
    take?: number
    skip?: number
    distinct?: ProjectScalarFieldEnum | ProjectScalarFieldEnum[]
  }

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


  /**
   * Model DeployHistory
   */

  export type AggregateDeployHistory = {
    _count: DeployHistoryCountAggregateOutputType | null
    _min: DeployHistoryMinAggregateOutputType | null
    _max: DeployHistoryMaxAggregateOutputType | null
  }

  export type DeployHistoryMinAggregateOutputType = {
    id: string | null
    projectId: string | null
    targetId: string | null
    imageTag: string | null
    commitHash: string | null
    status: string | null
    startedAt: Date | null
    finishedAt: Date | null
    errorMsg: string | null
    logBlob: string | null
  }

  export type DeployHistoryMaxAggregateOutputType = {
    id: string | null
    projectId: string | null
    targetId: string | null
    imageTag: string | null
    commitHash: string | null
    status: string | null
    startedAt: Date | null
    finishedAt: Date | null
    errorMsg: string | null
    logBlob: string | null
  }

  export type DeployHistoryCountAggregateOutputType = {
    id: number
    projectId: number
    targetId: number
    imageTag: number
    commitHash: number
    status: number
    startedAt: number
    finishedAt: number
    errorMsg: number
    logBlob: number
    _all: number
  }


  export type DeployHistoryMinAggregateInputType = {
    id?: true
    projectId?: true
    targetId?: true
    imageTag?: true
    commitHash?: true
    status?: true
    startedAt?: true
    finishedAt?: true
    errorMsg?: true
    logBlob?: true
  }

  export type DeployHistoryMaxAggregateInputType = {
    id?: true
    projectId?: true
    targetId?: true
    imageTag?: true
    commitHash?: true
    status?: true
    startedAt?: true
    finishedAt?: true
    errorMsg?: true
    logBlob?: true
  }

  export type DeployHistoryCountAggregateInputType = {
    id?: true
    projectId?: true
    targetId?: true
    imageTag?: true
    commitHash?: true
    status?: true
    startedAt?: true
    finishedAt?: true
    errorMsg?: true
    logBlob?: true
    _all?: true
  }

  export type DeployHistoryAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which DeployHistory to aggregate.
     */
    where?: DeployHistoryWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of DeployHistories to fetch.
     */
    orderBy?: DeployHistoryOrderByWithRelationInput | DeployHistoryOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: DeployHistoryWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` DeployHistories 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` DeployHistories.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned DeployHistories
    **/
    _count?: true | DeployHistoryCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: DeployHistoryMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: DeployHistoryMaxAggregateInputType
  }

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




  export type DeployHistoryGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: DeployHistoryWhereInput
    orderBy?: DeployHistoryOrderByWithAggregationInput | DeployHistoryOrderByWithAggregationInput[]
    by: DeployHistoryScalarFieldEnum[] | DeployHistoryScalarFieldEnum
    having?: DeployHistoryScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: DeployHistoryCountAggregateInputType | true
    _min?: DeployHistoryMinAggregateInputType
    _max?: DeployHistoryMaxAggregateInputType
  }

  export type DeployHistoryGroupByOutputType = {
    id: string
    projectId: string
    targetId: string | null
    imageTag: string
    commitHash: string | null
    status: string
    startedAt: Date
    finishedAt: Date | null
    errorMsg: string | null
    logBlob: string | null
    _count: DeployHistoryCountAggregateOutputType | null
    _min: DeployHistoryMinAggregateOutputType | null
    _max: DeployHistoryMaxAggregateOutputType | null
  }

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


  export type DeployHistorySelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    projectId?: boolean
    targetId?: boolean
    imageTag?: boolean
    commitHash?: boolean
    status?: boolean
    startedAt?: boolean
    finishedAt?: boolean
    errorMsg?: boolean
    logBlob?: boolean
    project?: boolean | ProjectDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["deployHistory"]>

  export type DeployHistorySelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    id?: boolean
    projectId?: boolean
    targetId?: boolean
    imageTag?: boolean
    commitHash?: boolean
    status?: boolean
    startedAt?: boolean
    finishedAt?: boolean
    errorMsg?: boolean
    logBlob?: boolean
    project?: boolean | ProjectDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["deployHistory"]>

  export type DeployHistorySelectScalar = {
    id?: boolean
    projectId?: boolean
    targetId?: boolean
    imageTag?: boolean
    commitHash?: boolean
    status?: boolean
    startedAt?: boolean
    finishedAt?: boolean
    errorMsg?: boolean
    logBlob?: boolean
  }

  export type DeployHistoryInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    project?: boolean | ProjectDefaultArgs<ExtArgs>
  }
  export type DeployHistoryIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    project?: boolean | ProjectDefaultArgs<ExtArgs>
  }

  export type $DeployHistoryPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "DeployHistory"
    objects: {
      project: Prisma.$ProjectPayload<ExtArgs>
    }
    scalars: $Extensions.GetPayloadResult<{
      id: string
      projectId: string
      targetId: string | null
      imageTag: string
      commitHash: string | null
      status: string
      startedAt: Date
      finishedAt: Date | null
      errorMsg: string | null
      logBlob: string | null
    }, ExtArgs["result"]["deployHistory"]>
    composites: {}
  }

  type DeployHistoryGetPayload<S extends boolean | null | undefined | DeployHistoryDefaultArgs> = $Result.GetResult<Prisma.$DeployHistoryPayload, S>

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

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

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

    /**
     * Find the first DeployHistory 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 {DeployHistoryFindFirstArgs} args - Arguments to find a DeployHistory
     * @example
     * // Get one DeployHistory
     * const deployHistory = await prisma.deployHistory.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends DeployHistoryFindFirstArgs>(args?: SelectSubset<T, DeployHistoryFindFirstArgs<ExtArgs>>): Prisma__DeployHistoryClient<$Result.GetResult<Prisma.$DeployHistoryPayload<ExtArgs>, T, "findFirst"> | null, null, ExtArgs>

    /**
     * Find the first DeployHistory 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 {DeployHistoryFindFirstOrThrowArgs} args - Arguments to find a DeployHistory
     * @example
     * // Get one DeployHistory
     * const deployHistory = await prisma.deployHistory.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends DeployHistoryFindFirstOrThrowArgs>(args?: SelectSubset<T, DeployHistoryFindFirstOrThrowArgs<ExtArgs>>): Prisma__DeployHistoryClient<$Result.GetResult<Prisma.$DeployHistoryPayload<ExtArgs>, T, "findFirstOrThrow">, never, ExtArgs>

    /**
     * Find zero or more DeployHistories 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 {DeployHistoryFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all DeployHistories
     * const deployHistories = await prisma.deployHistory.findMany()
     * 
     * // Get first 10 DeployHistories
     * const deployHistories = await prisma.deployHistory.findMany({ take: 10 })
     * 
     * // Only select the `id`
     * const deployHistoryWithIdOnly = await prisma.deployHistory.findMany({ select: { id: true } })
     * 
     */
    findMany<T extends DeployHistoryFindManyArgs>(args?: SelectSubset<T, DeployHistoryFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$DeployHistoryPayload<ExtArgs>, T, "findMany">>

    /**
     * Create a DeployHistory.
     * @param {DeployHistoryCreateArgs} args - Arguments to create a DeployHistory.
     * @example
     * // Create one DeployHistory
     * const DeployHistory = await prisma.deployHistory.create({
     *   data: {
     *     // ... data to create a DeployHistory
     *   }
     * })
     * 
     */
    create<T extends DeployHistoryCreateArgs>(args: SelectSubset<T, DeployHistoryCreateArgs<ExtArgs>>): Prisma__DeployHistoryClient<$Result.GetResult<Prisma.$DeployHistoryPayload<ExtArgs>, T, "create">, never, ExtArgs>

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

    /**
     * Create many DeployHistories and returns the data saved in the database.
     * @param {DeployHistoryCreateManyAndReturnArgs} args - Arguments to create many DeployHistories.
     * @example
     * // Create many DeployHistories
     * const deployHistory = await prisma.deployHistory.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many DeployHistories and only return the `id`
     * const deployHistoryWithIdOnly = await prisma.deployHistory.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 DeployHistoryCreateManyAndReturnArgs>(args?: SelectSubset<T, DeployHistoryCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$DeployHistoryPayload<ExtArgs>, T, "createManyAndReturn">>

    /**
     * Delete a DeployHistory.
     * @param {DeployHistoryDeleteArgs} args - Arguments to delete one DeployHistory.
     * @example
     * // Delete one DeployHistory
     * const DeployHistory = await prisma.deployHistory.delete({
     *   where: {
     *     // ... filter to delete one DeployHistory
     *   }
     * })
     * 
     */
    delete<T extends DeployHistoryDeleteArgs>(args: SelectSubset<T, DeployHistoryDeleteArgs<ExtArgs>>): Prisma__DeployHistoryClient<$Result.GetResult<Prisma.$DeployHistoryPayload<ExtArgs>, T, "delete">, never, ExtArgs>

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

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

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

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


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

    /**
     * Allows you to perform aggregations operations on a DeployHistory.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DeployHistoryAggregateArgs} 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 DeployHistoryAggregateArgs>(args: Subset<T, DeployHistoryAggregateArgs>): Prisma.PrismaPromise<GetDeployHistoryAggregateType<T>>

    /**
     * Group by DeployHistory.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {DeployHistoryGroupByArgs} 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 DeployHistoryGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: DeployHistoryGroupByArgs['orderBy'] }
        : { orderBy?: DeployHistoryGroupByArgs['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, DeployHistoryGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetDeployHistoryGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the DeployHistory model
   */
  readonly fields: DeployHistoryFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for DeployHistory.
   * 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__DeployHistoryClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    project<T extends ProjectDefaultArgs<ExtArgs> = {}>(args?: Subset<T, ProjectDefaultArgs<ExtArgs>>): Prisma__ProjectClient<$Result.GetResult<Prisma.$ProjectPayload<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 DeployHistory model
   */ 
  interface DeployHistoryFieldRefs {
    readonly id: FieldRef<"DeployHistory", 'String'>
    readonly projectId: FieldRef<"DeployHistory", 'String'>
    readonly targetId: FieldRef<"DeployHistory", 'String'>
    readonly imageTag: FieldRef<"DeployHistory", 'String'>
    readonly commitHash: FieldRef<"DeployHistory", 'String'>
    readonly status: FieldRef<"DeployHistory", 'String'>
    readonly startedAt: FieldRef<"DeployHistory", 'DateTime'>
    readonly finishedAt: FieldRef<"DeployHistory", 'DateTime'>
    readonly errorMsg: FieldRef<"DeployHistory", 'String'>
    readonly logBlob: FieldRef<"DeployHistory", 'String'>
  }
    

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

  /**
   * DeployHistory findUniqueOrThrow
   */
  export type DeployHistoryFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployHistory
     */
    select?: DeployHistorySelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployHistoryInclude<ExtArgs> | null
    /**
     * Filter, which DeployHistory to fetch.
     */
    where: DeployHistoryWhereUniqueInput
  }

  /**
   * DeployHistory findFirst
   */
  export type DeployHistoryFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployHistory
     */
    select?: DeployHistorySelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployHistoryInclude<ExtArgs> | null
    /**
     * Filter, which DeployHistory to fetch.
     */
    where?: DeployHistoryWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of DeployHistories to fetch.
     */
    orderBy?: DeployHistoryOrderByWithRelationInput | DeployHistoryOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for DeployHistories.
     */
    cursor?: DeployHistoryWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` DeployHistories 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` DeployHistories.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of DeployHistories.
     */
    distinct?: DeployHistoryScalarFieldEnum | DeployHistoryScalarFieldEnum[]
  }

  /**
   * DeployHistory findFirstOrThrow
   */
  export type DeployHistoryFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployHistory
     */
    select?: DeployHistorySelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployHistoryInclude<ExtArgs> | null
    /**
     * Filter, which DeployHistory to fetch.
     */
    where?: DeployHistoryWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of DeployHistories to fetch.
     */
    orderBy?: DeployHistoryOrderByWithRelationInput | DeployHistoryOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for DeployHistories.
     */
    cursor?: DeployHistoryWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` DeployHistories 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` DeployHistories.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of DeployHistories.
     */
    distinct?: DeployHistoryScalarFieldEnum | DeployHistoryScalarFieldEnum[]
  }

  /**
   * DeployHistory findMany
   */
  export type DeployHistoryFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployHistory
     */
    select?: DeployHistorySelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployHistoryInclude<ExtArgs> | null
    /**
     * Filter, which DeployHistories to fetch.
     */
    where?: DeployHistoryWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of DeployHistories to fetch.
     */
    orderBy?: DeployHistoryOrderByWithRelationInput | DeployHistoryOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing DeployHistories.
     */
    cursor?: DeployHistoryWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` DeployHistories 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` DeployHistories.
     */
    skip?: number
    distinct?: DeployHistoryScalarFieldEnum | DeployHistoryScalarFieldEnum[]
  }

  /**
   * DeployHistory create
   */
  export type DeployHistoryCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployHistory
     */
    select?: DeployHistorySelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployHistoryInclude<ExtArgs> | null
    /**
     * The data needed to create a DeployHistory.
     */
    data: XOR<DeployHistoryCreateInput, DeployHistoryUncheckedCreateInput>
  }

  /**
   * DeployHistory createMany
   */
  export type DeployHistoryCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many DeployHistories.
     */
    data: DeployHistoryCreateManyInput | DeployHistoryCreateManyInput[]
  }

  /**
   * DeployHistory createManyAndReturn
   */
  export type DeployHistoryCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployHistory
     */
    select?: DeployHistorySelectCreateManyAndReturn<ExtArgs> | null
    /**
     * The data used to create many DeployHistories.
     */
    data: DeployHistoryCreateManyInput | DeployHistoryCreateManyInput[]
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployHistoryIncludeCreateManyAndReturn<ExtArgs> | null
  }

  /**
   * DeployHistory update
   */
  export type DeployHistoryUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployHistory
     */
    select?: DeployHistorySelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployHistoryInclude<ExtArgs> | null
    /**
     * The data needed to update a DeployHistory.
     */
    data: XOR<DeployHistoryUpdateInput, DeployHistoryUncheckedUpdateInput>
    /**
     * Choose, which DeployHistory to update.
     */
    where: DeployHistoryWhereUniqueInput
  }

  /**
   * DeployHistory updateMany
   */
  export type DeployHistoryUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update DeployHistories.
     */
    data: XOR<DeployHistoryUpdateManyMutationInput, DeployHistoryUncheckedUpdateManyInput>
    /**
     * Filter which DeployHistories to update
     */
    where?: DeployHistoryWhereInput
  }

  /**
   * DeployHistory upsert
   */
  export type DeployHistoryUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployHistory
     */
    select?: DeployHistorySelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployHistoryInclude<ExtArgs> | null
    /**
     * The filter to search for the DeployHistory to update in case it exists.
     */
    where: DeployHistoryWhereUniqueInput
    /**
     * In case the DeployHistory found by the `where` argument doesn't exist, create a new DeployHistory with this data.
     */
    create: XOR<DeployHistoryCreateInput, DeployHistoryUncheckedCreateInput>
    /**
     * In case the DeployHistory was found with the provided `where` argument, update it with this data.
     */
    update: XOR<DeployHistoryUpdateInput, DeployHistoryUncheckedUpdateInput>
  }

  /**
   * DeployHistory delete
   */
  export type DeployHistoryDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the DeployHistory
     */
    select?: DeployHistorySelect<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: DeployHistoryInclude<ExtArgs> | null
    /**
     * Filter which DeployHistory to delete.
     */
    where: DeployHistoryWhereUniqueInput
  }

  /**
   * DeployHistory deleteMany
   */
  export type DeployHistoryDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which DeployHistories to delete
     */
    where?: DeployHistoryWhereInput
  }

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


  /**
   * Enums
   */

  export const TransactionIsolationLevel: {
    Serializable: 'Serializable'
  };

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


  export const ProjectScalarFieldEnum: {
    id: 'id',
    name: 'name',
    path: 'path',
    source: 'source',
    gitRemote: 'gitRemote',
    branch: 'branch',
    version: 'version',
    lastCommitHash: 'lastCommitHash',
    lastCommitMessage: 'lastCommitMessage',
    lastCommitTime: 'lastCommitTime',
    notes: 'notes',
    tags: 'tags',
    priority: 'priority',
    deployTargetId: 'deployTargetId',
    envVarsEncrypted: 'envVarsEncrypted',
    composeSource: 'composeSource',
    composeInline: 'composeInline',
    deployedVersion: 'deployedVersion',
    deployedAt: 'deployedAt',
    createdAt: 'createdAt',
    updatedAt: 'updatedAt'
  };

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


  export const SettingScalarFieldEnum: {
    key: 'key',
    value: 'value'
  };

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


  export const CommitLogScalarFieldEnum: {
    id: 'id',
    projectId: 'projectId',
    hash: 'hash',
    message: 'message',
    author: 'author',
    branch: 'branch',
    timestamp: 'timestamp'
  };

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


  export const DeployTargetScalarFieldEnum: {
    id: 'id',
    name: 'name',
    host: 'host',
    sshPort: 'sshPort',
    sshUser: 'sshUser',
    authMode: 'authMode',
    authBlob: 'authBlob',
    composePath: 'composePath',
    notes: 'notes',
    createdAt: 'createdAt'
  };

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


  export const DeployHistoryScalarFieldEnum: {
    id: 'id',
    projectId: 'projectId',
    targetId: 'targetId',
    imageTag: 'imageTag',
    commitHash: 'commitHash',
    status: 'status',
    startedAt: 'startedAt',
    finishedAt: 'finishedAt',
    errorMsg: 'errorMsg',
    logBlob: 'logBlob'
  };

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


  export const SortOrder: {
    asc: 'asc',
    desc: 'desc'
  };

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


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


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


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


  export type ProjectWhereInput = {
    AND?: ProjectWhereInput | ProjectWhereInput[]
    OR?: ProjectWhereInput[]
    NOT?: ProjectWhereInput | ProjectWhereInput[]
    id?: StringFilter<"Project"> | string
    name?: StringFilter<"Project"> | string
    path?: StringFilter<"Project"> | string
    source?: StringFilter<"Project"> | string
    gitRemote?: StringNullableFilter<"Project"> | string | null
    branch?: StringNullableFilter<"Project"> | string | null
    version?: StringNullableFilter<"Project"> | string | null
    lastCommitHash?: StringNullableFilter<"Project"> | string | null
    lastCommitMessage?: StringNullableFilter<"Project"> | string | null
    lastCommitTime?: DateTimeNullableFilter<"Project"> | Date | string | null
    notes?: StringNullableFilter<"Project"> | string | null
    tags?: StringNullableFilter<"Project"> | string | null
    priority?: IntFilter<"Project"> | number
    deployTargetId?: StringNullableFilter<"Project"> | string | null
    envVarsEncrypted?: StringNullableFilter<"Project"> | string | null
    composeSource?: StringFilter<"Project"> | string
    composeInline?: StringNullableFilter<"Project"> | string | null
    deployedVersion?: StringNullableFilter<"Project"> | string | null
    deployedAt?: DateTimeNullableFilter<"Project"> | Date | string | null
    createdAt?: DateTimeFilter<"Project"> | Date | string
    updatedAt?: DateTimeFilter<"Project"> | Date | string
    deployTarget?: XOR<DeployTargetNullableRelationFilter, DeployTargetWhereInput> | null
    deploys?: DeployHistoryListRelationFilter
    commits?: CommitLogListRelationFilter
  }

  export type ProjectOrderByWithRelationInput = {
    id?: SortOrder
    name?: SortOrder
    path?: SortOrder
    source?: SortOrder
    gitRemote?: SortOrderInput | SortOrder
    branch?: SortOrderInput | SortOrder
    version?: SortOrderInput | SortOrder
    lastCommitHash?: SortOrderInput | SortOrder
    lastCommitMessage?: SortOrderInput | SortOrder
    lastCommitTime?: SortOrderInput | SortOrder
    notes?: SortOrderInput | SortOrder
    tags?: SortOrderInput | SortOrder
    priority?: SortOrder
    deployTargetId?: SortOrderInput | SortOrder
    envVarsEncrypted?: SortOrderInput | SortOrder
    composeSource?: SortOrder
    composeInline?: SortOrderInput | SortOrder
    deployedVersion?: SortOrderInput | SortOrder
    deployedAt?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    deployTarget?: DeployTargetOrderByWithRelationInput
    deploys?: DeployHistoryOrderByRelationAggregateInput
    commits?: CommitLogOrderByRelationAggregateInput
  }

  export type ProjectWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    name?: string
    AND?: ProjectWhereInput | ProjectWhereInput[]
    OR?: ProjectWhereInput[]
    NOT?: ProjectWhereInput | ProjectWhereInput[]
    path?: StringFilter<"Project"> | string
    source?: StringFilter<"Project"> | string
    gitRemote?: StringNullableFilter<"Project"> | string | null
    branch?: StringNullableFilter<"Project"> | string | null
    version?: StringNullableFilter<"Project"> | string | null
    lastCommitHash?: StringNullableFilter<"Project"> | string | null
    lastCommitMessage?: StringNullableFilter<"Project"> | string | null
    lastCommitTime?: DateTimeNullableFilter<"Project"> | Date | string | null
    notes?: StringNullableFilter<"Project"> | string | null
    tags?: StringNullableFilter<"Project"> | string | null
    priority?: IntFilter<"Project"> | number
    deployTargetId?: StringNullableFilter<"Project"> | string | null
    envVarsEncrypted?: StringNullableFilter<"Project"> | string | null
    composeSource?: StringFilter<"Project"> | string
    composeInline?: StringNullableFilter<"Project"> | string | null
    deployedVersion?: StringNullableFilter<"Project"> | string | null
    deployedAt?: DateTimeNullableFilter<"Project"> | Date | string | null
    createdAt?: DateTimeFilter<"Project"> | Date | string
    updatedAt?: DateTimeFilter<"Project"> | Date | string
    deployTarget?: XOR<DeployTargetNullableRelationFilter, DeployTargetWhereInput> | null
    deploys?: DeployHistoryListRelationFilter
    commits?: CommitLogListRelationFilter
  }, "id" | "name">

  export type ProjectOrderByWithAggregationInput = {
    id?: SortOrder
    name?: SortOrder
    path?: SortOrder
    source?: SortOrder
    gitRemote?: SortOrderInput | SortOrder
    branch?: SortOrderInput | SortOrder
    version?: SortOrderInput | SortOrder
    lastCommitHash?: SortOrderInput | SortOrder
    lastCommitMessage?: SortOrderInput | SortOrder
    lastCommitTime?: SortOrderInput | SortOrder
    notes?: SortOrderInput | SortOrder
    tags?: SortOrderInput | SortOrder
    priority?: SortOrder
    deployTargetId?: SortOrderInput | SortOrder
    envVarsEncrypted?: SortOrderInput | SortOrder
    composeSource?: SortOrder
    composeInline?: SortOrderInput | SortOrder
    deployedVersion?: SortOrderInput | SortOrder
    deployedAt?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
    _count?: ProjectCountOrderByAggregateInput
    _avg?: ProjectAvgOrderByAggregateInput
    _max?: ProjectMaxOrderByAggregateInput
    _min?: ProjectMinOrderByAggregateInput
    _sum?: ProjectSumOrderByAggregateInput
  }

  export type ProjectScalarWhereWithAggregatesInput = {
    AND?: ProjectScalarWhereWithAggregatesInput | ProjectScalarWhereWithAggregatesInput[]
    OR?: ProjectScalarWhereWithAggregatesInput[]
    NOT?: ProjectScalarWhereWithAggregatesInput | ProjectScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"Project"> | string
    name?: StringWithAggregatesFilter<"Project"> | string
    path?: StringWithAggregatesFilter<"Project"> | string
    source?: StringWithAggregatesFilter<"Project"> | string
    gitRemote?: StringNullableWithAggregatesFilter<"Project"> | string | null
    branch?: StringNullableWithAggregatesFilter<"Project"> | string | null
    version?: StringNullableWithAggregatesFilter<"Project"> | string | null
    lastCommitHash?: StringNullableWithAggregatesFilter<"Project"> | string | null
    lastCommitMessage?: StringNullableWithAggregatesFilter<"Project"> | string | null
    lastCommitTime?: DateTimeNullableWithAggregatesFilter<"Project"> | Date | string | null
    notes?: StringNullableWithAggregatesFilter<"Project"> | string | null
    tags?: StringNullableWithAggregatesFilter<"Project"> | string | null
    priority?: IntWithAggregatesFilter<"Project"> | number
    deployTargetId?: StringNullableWithAggregatesFilter<"Project"> | string | null
    envVarsEncrypted?: StringNullableWithAggregatesFilter<"Project"> | string | null
    composeSource?: StringWithAggregatesFilter<"Project"> | string
    composeInline?: StringNullableWithAggregatesFilter<"Project"> | string | null
    deployedVersion?: StringNullableWithAggregatesFilter<"Project"> | string | null
    deployedAt?: DateTimeNullableWithAggregatesFilter<"Project"> | Date | string | null
    createdAt?: DateTimeWithAggregatesFilter<"Project"> | Date | string
    updatedAt?: DateTimeWithAggregatesFilter<"Project"> | Date | string
  }

  export type SettingWhereInput = {
    AND?: SettingWhereInput | SettingWhereInput[]
    OR?: SettingWhereInput[]
    NOT?: SettingWhereInput | SettingWhereInput[]
    key?: StringFilter<"Setting"> | string
    value?: StringFilter<"Setting"> | string
  }

  export type SettingOrderByWithRelationInput = {
    key?: SortOrder
    value?: SortOrder
  }

  export type SettingWhereUniqueInput = Prisma.AtLeast<{
    key?: string
    AND?: SettingWhereInput | SettingWhereInput[]
    OR?: SettingWhereInput[]
    NOT?: SettingWhereInput | SettingWhereInput[]
    value?: StringFilter<"Setting"> | string
  }, "key">

  export type SettingOrderByWithAggregationInput = {
    key?: SortOrder
    value?: SortOrder
    _count?: SettingCountOrderByAggregateInput
    _max?: SettingMaxOrderByAggregateInput
    _min?: SettingMinOrderByAggregateInput
  }

  export type SettingScalarWhereWithAggregatesInput = {
    AND?: SettingScalarWhereWithAggregatesInput | SettingScalarWhereWithAggregatesInput[]
    OR?: SettingScalarWhereWithAggregatesInput[]
    NOT?: SettingScalarWhereWithAggregatesInput | SettingScalarWhereWithAggregatesInput[]
    key?: StringWithAggregatesFilter<"Setting"> | string
    value?: StringWithAggregatesFilter<"Setting"> | string
  }

  export type CommitLogWhereInput = {
    AND?: CommitLogWhereInput | CommitLogWhereInput[]
    OR?: CommitLogWhereInput[]
    NOT?: CommitLogWhereInput | CommitLogWhereInput[]
    id?: StringFilter<"CommitLog"> | string
    projectId?: StringFilter<"CommitLog"> | string
    hash?: StringFilter<"CommitLog"> | string
    message?: StringFilter<"CommitLog"> | string
    author?: StringNullableFilter<"CommitLog"> | string | null
    branch?: StringNullableFilter<"CommitLog"> | string | null
    timestamp?: DateTimeFilter<"CommitLog"> | Date | string
    project?: XOR<ProjectRelationFilter, ProjectWhereInput>
  }

  export type CommitLogOrderByWithRelationInput = {
    id?: SortOrder
    projectId?: SortOrder
    hash?: SortOrder
    message?: SortOrder
    author?: SortOrderInput | SortOrder
    branch?: SortOrderInput | SortOrder
    timestamp?: SortOrder
    project?: ProjectOrderByWithRelationInput
  }

  export type CommitLogWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    AND?: CommitLogWhereInput | CommitLogWhereInput[]
    OR?: CommitLogWhereInput[]
    NOT?: CommitLogWhereInput | CommitLogWhereInput[]
    projectId?: StringFilter<"CommitLog"> | string
    hash?: StringFilter<"CommitLog"> | string
    message?: StringFilter<"CommitLog"> | string
    author?: StringNullableFilter<"CommitLog"> | string | null
    branch?: StringNullableFilter<"CommitLog"> | string | null
    timestamp?: DateTimeFilter<"CommitLog"> | Date | string
    project?: XOR<ProjectRelationFilter, ProjectWhereInput>
  }, "id">

  export type CommitLogOrderByWithAggregationInput = {
    id?: SortOrder
    projectId?: SortOrder
    hash?: SortOrder
    message?: SortOrder
    author?: SortOrderInput | SortOrder
    branch?: SortOrderInput | SortOrder
    timestamp?: SortOrder
    _count?: CommitLogCountOrderByAggregateInput
    _max?: CommitLogMaxOrderByAggregateInput
    _min?: CommitLogMinOrderByAggregateInput
  }

  export type CommitLogScalarWhereWithAggregatesInput = {
    AND?: CommitLogScalarWhereWithAggregatesInput | CommitLogScalarWhereWithAggregatesInput[]
    OR?: CommitLogScalarWhereWithAggregatesInput[]
    NOT?: CommitLogScalarWhereWithAggregatesInput | CommitLogScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"CommitLog"> | string
    projectId?: StringWithAggregatesFilter<"CommitLog"> | string
    hash?: StringWithAggregatesFilter<"CommitLog"> | string
    message?: StringWithAggregatesFilter<"CommitLog"> | string
    author?: StringNullableWithAggregatesFilter<"CommitLog"> | string | null
    branch?: StringNullableWithAggregatesFilter<"CommitLog"> | string | null
    timestamp?: DateTimeWithAggregatesFilter<"CommitLog"> | Date | string
  }

  export type DeployTargetWhereInput = {
    AND?: DeployTargetWhereInput | DeployTargetWhereInput[]
    OR?: DeployTargetWhereInput[]
    NOT?: DeployTargetWhereInput | DeployTargetWhereInput[]
    id?: StringFilter<"DeployTarget"> | string
    name?: StringFilter<"DeployTarget"> | string
    host?: StringFilter<"DeployTarget"> | string
    sshPort?: IntFilter<"DeployTarget"> | number
    sshUser?: StringFilter<"DeployTarget"> | string
    authMode?: StringFilter<"DeployTarget"> | string
    authBlob?: StringFilter<"DeployTarget"> | string
    composePath?: StringFilter<"DeployTarget"> | string
    notes?: StringNullableFilter<"DeployTarget"> | string | null
    createdAt?: DateTimeFilter<"DeployTarget"> | Date | string
    projects?: ProjectListRelationFilter
  }

  export type DeployTargetOrderByWithRelationInput = {
    id?: SortOrder
    name?: SortOrder
    host?: SortOrder
    sshPort?: SortOrder
    sshUser?: SortOrder
    authMode?: SortOrder
    authBlob?: SortOrder
    composePath?: SortOrder
    notes?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    projects?: ProjectOrderByRelationAggregateInput
  }

  export type DeployTargetWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    name?: string
    AND?: DeployTargetWhereInput | DeployTargetWhereInput[]
    OR?: DeployTargetWhereInput[]
    NOT?: DeployTargetWhereInput | DeployTargetWhereInput[]
    host?: StringFilter<"DeployTarget"> | string
    sshPort?: IntFilter<"DeployTarget"> | number
    sshUser?: StringFilter<"DeployTarget"> | string
    authMode?: StringFilter<"DeployTarget"> | string
    authBlob?: StringFilter<"DeployTarget"> | string
    composePath?: StringFilter<"DeployTarget"> | string
    notes?: StringNullableFilter<"DeployTarget"> | string | null
    createdAt?: DateTimeFilter<"DeployTarget"> | Date | string
    projects?: ProjectListRelationFilter
  }, "id" | "name">

  export type DeployTargetOrderByWithAggregationInput = {
    id?: SortOrder
    name?: SortOrder
    host?: SortOrder
    sshPort?: SortOrder
    sshUser?: SortOrder
    authMode?: SortOrder
    authBlob?: SortOrder
    composePath?: SortOrder
    notes?: SortOrderInput | SortOrder
    createdAt?: SortOrder
    _count?: DeployTargetCountOrderByAggregateInput
    _avg?: DeployTargetAvgOrderByAggregateInput
    _max?: DeployTargetMaxOrderByAggregateInput
    _min?: DeployTargetMinOrderByAggregateInput
    _sum?: DeployTargetSumOrderByAggregateInput
  }

  export type DeployTargetScalarWhereWithAggregatesInput = {
    AND?: DeployTargetScalarWhereWithAggregatesInput | DeployTargetScalarWhereWithAggregatesInput[]
    OR?: DeployTargetScalarWhereWithAggregatesInput[]
    NOT?: DeployTargetScalarWhereWithAggregatesInput | DeployTargetScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"DeployTarget"> | string
    name?: StringWithAggregatesFilter<"DeployTarget"> | string
    host?: StringWithAggregatesFilter<"DeployTarget"> | string
    sshPort?: IntWithAggregatesFilter<"DeployTarget"> | number
    sshUser?: StringWithAggregatesFilter<"DeployTarget"> | string
    authMode?: StringWithAggregatesFilter<"DeployTarget"> | string
    authBlob?: StringWithAggregatesFilter<"DeployTarget"> | string
    composePath?: StringWithAggregatesFilter<"DeployTarget"> | string
    notes?: StringNullableWithAggregatesFilter<"DeployTarget"> | string | null
    createdAt?: DateTimeWithAggregatesFilter<"DeployTarget"> | Date | string
  }

  export type DeployHistoryWhereInput = {
    AND?: DeployHistoryWhereInput | DeployHistoryWhereInput[]
    OR?: DeployHistoryWhereInput[]
    NOT?: DeployHistoryWhereInput | DeployHistoryWhereInput[]
    id?: StringFilter<"DeployHistory"> | string
    projectId?: StringFilter<"DeployHistory"> | string
    targetId?: StringNullableFilter<"DeployHistory"> | string | null
    imageTag?: StringFilter<"DeployHistory"> | string
    commitHash?: StringNullableFilter<"DeployHistory"> | string | null
    status?: StringFilter<"DeployHistory"> | string
    startedAt?: DateTimeFilter<"DeployHistory"> | Date | string
    finishedAt?: DateTimeNullableFilter<"DeployHistory"> | Date | string | null
    errorMsg?: StringNullableFilter<"DeployHistory"> | string | null
    logBlob?: StringNullableFilter<"DeployHistory"> | string | null
    project?: XOR<ProjectRelationFilter, ProjectWhereInput>
  }

  export type DeployHistoryOrderByWithRelationInput = {
    id?: SortOrder
    projectId?: SortOrder
    targetId?: SortOrderInput | SortOrder
    imageTag?: SortOrder
    commitHash?: SortOrderInput | SortOrder
    status?: SortOrder
    startedAt?: SortOrder
    finishedAt?: SortOrderInput | SortOrder
    errorMsg?: SortOrderInput | SortOrder
    logBlob?: SortOrderInput | SortOrder
    project?: ProjectOrderByWithRelationInput
  }

  export type DeployHistoryWhereUniqueInput = Prisma.AtLeast<{
    id?: string
    AND?: DeployHistoryWhereInput | DeployHistoryWhereInput[]
    OR?: DeployHistoryWhereInput[]
    NOT?: DeployHistoryWhereInput | DeployHistoryWhereInput[]
    projectId?: StringFilter<"DeployHistory"> | string
    targetId?: StringNullableFilter<"DeployHistory"> | string | null
    imageTag?: StringFilter<"DeployHistory"> | string
    commitHash?: StringNullableFilter<"DeployHistory"> | string | null
    status?: StringFilter<"DeployHistory"> | string
    startedAt?: DateTimeFilter<"DeployHistory"> | Date | string
    finishedAt?: DateTimeNullableFilter<"DeployHistory"> | Date | string | null
    errorMsg?: StringNullableFilter<"DeployHistory"> | string | null
    logBlob?: StringNullableFilter<"DeployHistory"> | string | null
    project?: XOR<ProjectRelationFilter, ProjectWhereInput>
  }, "id">

  export type DeployHistoryOrderByWithAggregationInput = {
    id?: SortOrder
    projectId?: SortOrder
    targetId?: SortOrderInput | SortOrder
    imageTag?: SortOrder
    commitHash?: SortOrderInput | SortOrder
    status?: SortOrder
    startedAt?: SortOrder
    finishedAt?: SortOrderInput | SortOrder
    errorMsg?: SortOrderInput | SortOrder
    logBlob?: SortOrderInput | SortOrder
    _count?: DeployHistoryCountOrderByAggregateInput
    _max?: DeployHistoryMaxOrderByAggregateInput
    _min?: DeployHistoryMinOrderByAggregateInput
  }

  export type DeployHistoryScalarWhereWithAggregatesInput = {
    AND?: DeployHistoryScalarWhereWithAggregatesInput | DeployHistoryScalarWhereWithAggregatesInput[]
    OR?: DeployHistoryScalarWhereWithAggregatesInput[]
    NOT?: DeployHistoryScalarWhereWithAggregatesInput | DeployHistoryScalarWhereWithAggregatesInput[]
    id?: StringWithAggregatesFilter<"DeployHistory"> | string
    projectId?: StringWithAggregatesFilter<"DeployHistory"> | string
    targetId?: StringNullableWithAggregatesFilter<"DeployHistory"> | string | null
    imageTag?: StringWithAggregatesFilter<"DeployHistory"> | string
    commitHash?: StringNullableWithAggregatesFilter<"DeployHistory"> | string | null
    status?: StringWithAggregatesFilter<"DeployHistory"> | string
    startedAt?: DateTimeWithAggregatesFilter<"DeployHistory"> | Date | string
    finishedAt?: DateTimeNullableWithAggregatesFilter<"DeployHistory"> | Date | string | null
    errorMsg?: StringNullableWithAggregatesFilter<"DeployHistory"> | string | null
    logBlob?: StringNullableWithAggregatesFilter<"DeployHistory"> | string | null
  }

  export type ProjectCreateInput = {
    id?: string
    name: string
    path: string
    source: string
    gitRemote?: string | null
    branch?: string | null
    version?: string | null
    lastCommitHash?: string | null
    lastCommitMessage?: string | null
    lastCommitTime?: Date | string | null
    notes?: string | null
    tags?: string | null
    priority?: number
    envVarsEncrypted?: string | null
    composeSource?: string
    composeInline?: string | null
    deployedVersion?: string | null
    deployedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deployTarget?: DeployTargetCreateNestedOneWithoutProjectsInput
    deploys?: DeployHistoryCreateNestedManyWithoutProjectInput
    commits?: CommitLogCreateNestedManyWithoutProjectInput
  }

  export type ProjectUncheckedCreateInput = {
    id?: string
    name: string
    path: string
    source: string
    gitRemote?: string | null
    branch?: string | null
    version?: string | null
    lastCommitHash?: string | null
    lastCommitMessage?: string | null
    lastCommitTime?: Date | string | null
    notes?: string | null
    tags?: string | null
    priority?: number
    deployTargetId?: string | null
    envVarsEncrypted?: string | null
    composeSource?: string
    composeInline?: string | null
    deployedVersion?: string | null
    deployedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deploys?: DeployHistoryUncheckedCreateNestedManyWithoutProjectInput
    commits?: CommitLogUncheckedCreateNestedManyWithoutProjectInput
  }

  export type ProjectUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    path?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    gitRemote?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    version?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitHash?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitMessage?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitTime?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    tags?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: IntFieldUpdateOperationsInput | number
    envVarsEncrypted?: NullableStringFieldUpdateOperationsInput | string | null
    composeSource?: StringFieldUpdateOperationsInput | string
    composeInline?: NullableStringFieldUpdateOperationsInput | string | null
    deployedVersion?: NullableStringFieldUpdateOperationsInput | string | null
    deployedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deployTarget?: DeployTargetUpdateOneWithoutProjectsNestedInput
    deploys?: DeployHistoryUpdateManyWithoutProjectNestedInput
    commits?: CommitLogUpdateManyWithoutProjectNestedInput
  }

  export type ProjectUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    path?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    gitRemote?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    version?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitHash?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitMessage?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitTime?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    tags?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: IntFieldUpdateOperationsInput | number
    deployTargetId?: NullableStringFieldUpdateOperationsInput | string | null
    envVarsEncrypted?: NullableStringFieldUpdateOperationsInput | string | null
    composeSource?: StringFieldUpdateOperationsInput | string
    composeInline?: NullableStringFieldUpdateOperationsInput | string | null
    deployedVersion?: NullableStringFieldUpdateOperationsInput | string | null
    deployedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deploys?: DeployHistoryUncheckedUpdateManyWithoutProjectNestedInput
    commits?: CommitLogUncheckedUpdateManyWithoutProjectNestedInput
  }

  export type ProjectCreateManyInput = {
    id?: string
    name: string
    path: string
    source: string
    gitRemote?: string | null
    branch?: string | null
    version?: string | null
    lastCommitHash?: string | null
    lastCommitMessage?: string | null
    lastCommitTime?: Date | string | null
    notes?: string | null
    tags?: string | null
    priority?: number
    deployTargetId?: string | null
    envVarsEncrypted?: string | null
    composeSource?: string
    composeInline?: string | null
    deployedVersion?: string | null
    deployedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type ProjectUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    path?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    gitRemote?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    version?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitHash?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitMessage?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitTime?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    tags?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: IntFieldUpdateOperationsInput | number
    envVarsEncrypted?: NullableStringFieldUpdateOperationsInput | string | null
    composeSource?: StringFieldUpdateOperationsInput | string
    composeInline?: NullableStringFieldUpdateOperationsInput | string | null
    deployedVersion?: NullableStringFieldUpdateOperationsInput | string | null
    deployedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type ProjectUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    path?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    gitRemote?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    version?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitHash?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitMessage?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitTime?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    tags?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: IntFieldUpdateOperationsInput | number
    deployTargetId?: NullableStringFieldUpdateOperationsInput | string | null
    envVarsEncrypted?: NullableStringFieldUpdateOperationsInput | string | null
    composeSource?: StringFieldUpdateOperationsInput | string
    composeInline?: NullableStringFieldUpdateOperationsInput | string | null
    deployedVersion?: NullableStringFieldUpdateOperationsInput | string | null
    deployedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type SettingCreateInput = {
    key: string
    value: string
  }

  export type SettingUncheckedCreateInput = {
    key: string
    value: string
  }

  export type SettingUpdateInput = {
    key?: StringFieldUpdateOperationsInput | string
    value?: StringFieldUpdateOperationsInput | string
  }

  export type SettingUncheckedUpdateInput = {
    key?: StringFieldUpdateOperationsInput | string
    value?: StringFieldUpdateOperationsInput | string
  }

  export type SettingCreateManyInput = {
    key: string
    value: string
  }

  export type SettingUpdateManyMutationInput = {
    key?: StringFieldUpdateOperationsInput | string
    value?: StringFieldUpdateOperationsInput | string
  }

  export type SettingUncheckedUpdateManyInput = {
    key?: StringFieldUpdateOperationsInput | string
    value?: StringFieldUpdateOperationsInput | string
  }

  export type CommitLogCreateInput = {
    id?: string
    hash: string
    message: string
    author?: string | null
    branch?: string | null
    timestamp?: Date | string
    project: ProjectCreateNestedOneWithoutCommitsInput
  }

  export type CommitLogUncheckedCreateInput = {
    id?: string
    projectId: string
    hash: string
    message: string
    author?: string | null
    branch?: string | null
    timestamp?: Date | string
  }

  export type CommitLogUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    hash?: StringFieldUpdateOperationsInput | string
    message?: StringFieldUpdateOperationsInput | string
    author?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    timestamp?: DateTimeFieldUpdateOperationsInput | Date | string
    project?: ProjectUpdateOneRequiredWithoutCommitsNestedInput
  }

  export type CommitLogUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    projectId?: StringFieldUpdateOperationsInput | string
    hash?: StringFieldUpdateOperationsInput | string
    message?: StringFieldUpdateOperationsInput | string
    author?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    timestamp?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type CommitLogCreateManyInput = {
    id?: string
    projectId: string
    hash: string
    message: string
    author?: string | null
    branch?: string | null
    timestamp?: Date | string
  }

  export type CommitLogUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    hash?: StringFieldUpdateOperationsInput | string
    message?: StringFieldUpdateOperationsInput | string
    author?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    timestamp?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type CommitLogUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    projectId?: StringFieldUpdateOperationsInput | string
    hash?: StringFieldUpdateOperationsInput | string
    message?: StringFieldUpdateOperationsInput | string
    author?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    timestamp?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type DeployTargetCreateInput = {
    id?: string
    name: string
    host: string
    sshPort?: number
    sshUser?: string
    authMode: string
    authBlob: string
    composePath?: string
    notes?: string | null
    createdAt?: Date | string
    projects?: ProjectCreateNestedManyWithoutDeployTargetInput
  }

  export type DeployTargetUncheckedCreateInput = {
    id?: string
    name: string
    host: string
    sshPort?: number
    sshUser?: string
    authMode: string
    authBlob: string
    composePath?: string
    notes?: string | null
    createdAt?: Date | string
    projects?: ProjectUncheckedCreateNestedManyWithoutDeployTargetInput
  }

  export type DeployTargetUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    host?: StringFieldUpdateOperationsInput | string
    sshPort?: IntFieldUpdateOperationsInput | number
    sshUser?: StringFieldUpdateOperationsInput | string
    authMode?: StringFieldUpdateOperationsInput | string
    authBlob?: StringFieldUpdateOperationsInput | string
    composePath?: StringFieldUpdateOperationsInput | string
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    projects?: ProjectUpdateManyWithoutDeployTargetNestedInput
  }

  export type DeployTargetUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    host?: StringFieldUpdateOperationsInput | string
    sshPort?: IntFieldUpdateOperationsInput | number
    sshUser?: StringFieldUpdateOperationsInput | string
    authMode?: StringFieldUpdateOperationsInput | string
    authBlob?: StringFieldUpdateOperationsInput | string
    composePath?: StringFieldUpdateOperationsInput | string
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    projects?: ProjectUncheckedUpdateManyWithoutDeployTargetNestedInput
  }

  export type DeployTargetCreateManyInput = {
    id?: string
    name: string
    host: string
    sshPort?: number
    sshUser?: string
    authMode: string
    authBlob: string
    composePath?: string
    notes?: string | null
    createdAt?: Date | string
  }

  export type DeployTargetUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    host?: StringFieldUpdateOperationsInput | string
    sshPort?: IntFieldUpdateOperationsInput | number
    sshUser?: StringFieldUpdateOperationsInput | string
    authMode?: StringFieldUpdateOperationsInput | string
    authBlob?: StringFieldUpdateOperationsInput | string
    composePath?: StringFieldUpdateOperationsInput | string
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type DeployTargetUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    host?: StringFieldUpdateOperationsInput | string
    sshPort?: IntFieldUpdateOperationsInput | number
    sshUser?: StringFieldUpdateOperationsInput | string
    authMode?: StringFieldUpdateOperationsInput | string
    authBlob?: StringFieldUpdateOperationsInput | string
    composePath?: StringFieldUpdateOperationsInput | string
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type DeployHistoryCreateInput = {
    id?: string
    targetId?: string | null
    imageTag: string
    commitHash?: string | null
    status: string
    startedAt?: Date | string
    finishedAt?: Date | string | null
    errorMsg?: string | null
    logBlob?: string | null
    project: ProjectCreateNestedOneWithoutDeploysInput
  }

  export type DeployHistoryUncheckedCreateInput = {
    id?: string
    projectId: string
    targetId?: string | null
    imageTag: string
    commitHash?: string | null
    status: string
    startedAt?: Date | string
    finishedAt?: Date | string | null
    errorMsg?: string | null
    logBlob?: string | null
  }

  export type DeployHistoryUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    targetId?: NullableStringFieldUpdateOperationsInput | string | null
    imageTag?: StringFieldUpdateOperationsInput | string
    commitHash?: NullableStringFieldUpdateOperationsInput | string | null
    status?: StringFieldUpdateOperationsInput | string
    startedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    finishedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    errorMsg?: NullableStringFieldUpdateOperationsInput | string | null
    logBlob?: NullableStringFieldUpdateOperationsInput | string | null
    project?: ProjectUpdateOneRequiredWithoutDeploysNestedInput
  }

  export type DeployHistoryUncheckedUpdateInput = {
    id?: StringFieldUpdateOperationsInput | string
    projectId?: StringFieldUpdateOperationsInput | string
    targetId?: NullableStringFieldUpdateOperationsInput | string | null
    imageTag?: StringFieldUpdateOperationsInput | string
    commitHash?: NullableStringFieldUpdateOperationsInput | string | null
    status?: StringFieldUpdateOperationsInput | string
    startedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    finishedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    errorMsg?: NullableStringFieldUpdateOperationsInput | string | null
    logBlob?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type DeployHistoryCreateManyInput = {
    id?: string
    projectId: string
    targetId?: string | null
    imageTag: string
    commitHash?: string | null
    status: string
    startedAt?: Date | string
    finishedAt?: Date | string | null
    errorMsg?: string | null
    logBlob?: string | null
  }

  export type DeployHistoryUpdateManyMutationInput = {
    id?: StringFieldUpdateOperationsInput | string
    targetId?: NullableStringFieldUpdateOperationsInput | string | null
    imageTag?: StringFieldUpdateOperationsInput | string
    commitHash?: NullableStringFieldUpdateOperationsInput | string | null
    status?: StringFieldUpdateOperationsInput | string
    startedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    finishedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    errorMsg?: NullableStringFieldUpdateOperationsInput | string | null
    logBlob?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type DeployHistoryUncheckedUpdateManyInput = {
    id?: StringFieldUpdateOperationsInput | string
    projectId?: StringFieldUpdateOperationsInput | string
    targetId?: NullableStringFieldUpdateOperationsInput | string | null
    imageTag?: StringFieldUpdateOperationsInput | string
    commitHash?: NullableStringFieldUpdateOperationsInput | string | null
    status?: StringFieldUpdateOperationsInput | string
    startedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    finishedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    errorMsg?: NullableStringFieldUpdateOperationsInput | string | null
    logBlob?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type StringFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[]
    notIn?: string[]
    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 StringNullableFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | null
    notIn?: string[] | 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 DateTimeNullableFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | null
    notIn?: Date[] | string[] | 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 IntFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel>
    in?: number[]
    notIn?: number[]
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntFilter<$PrismaModel> | number
  }

  export type DateTimeFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    in?: Date[] | string[]
    notIn?: Date[] | string[]
    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 DeployTargetNullableRelationFilter = {
    is?: DeployTargetWhereInput | null
    isNot?: DeployTargetWhereInput | null
  }

  export type DeployHistoryListRelationFilter = {
    every?: DeployHistoryWhereInput
    some?: DeployHistoryWhereInput
    none?: DeployHistoryWhereInput
  }

  export type CommitLogListRelationFilter = {
    every?: CommitLogWhereInput
    some?: CommitLogWhereInput
    none?: CommitLogWhereInput
  }

  export type SortOrderInput = {
    sort: SortOrder
    nulls?: NullsOrder
  }

  export type DeployHistoryOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type CommitLogOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type ProjectCountOrderByAggregateInput = {
    id?: SortOrder
    name?: SortOrder
    path?: SortOrder
    source?: SortOrder
    gitRemote?: SortOrder
    branch?: SortOrder
    version?: SortOrder
    lastCommitHash?: SortOrder
    lastCommitMessage?: SortOrder
    lastCommitTime?: SortOrder
    notes?: SortOrder
    tags?: SortOrder
    priority?: SortOrder
    deployTargetId?: SortOrder
    envVarsEncrypted?: SortOrder
    composeSource?: SortOrder
    composeInline?: SortOrder
    deployedVersion?: SortOrder
    deployedAt?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type ProjectAvgOrderByAggregateInput = {
    priority?: SortOrder
  }

  export type ProjectMaxOrderByAggregateInput = {
    id?: SortOrder
    name?: SortOrder
    path?: SortOrder
    source?: SortOrder
    gitRemote?: SortOrder
    branch?: SortOrder
    version?: SortOrder
    lastCommitHash?: SortOrder
    lastCommitMessage?: SortOrder
    lastCommitTime?: SortOrder
    notes?: SortOrder
    tags?: SortOrder
    priority?: SortOrder
    deployTargetId?: SortOrder
    envVarsEncrypted?: SortOrder
    composeSource?: SortOrder
    composeInline?: SortOrder
    deployedVersion?: SortOrder
    deployedAt?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type ProjectMinOrderByAggregateInput = {
    id?: SortOrder
    name?: SortOrder
    path?: SortOrder
    source?: SortOrder
    gitRemote?: SortOrder
    branch?: SortOrder
    version?: SortOrder
    lastCommitHash?: SortOrder
    lastCommitMessage?: SortOrder
    lastCommitTime?: SortOrder
    notes?: SortOrder
    tags?: SortOrder
    priority?: SortOrder
    deployTargetId?: SortOrder
    envVarsEncrypted?: SortOrder
    composeSource?: SortOrder
    composeInline?: SortOrder
    deployedVersion?: SortOrder
    deployedAt?: SortOrder
    createdAt?: SortOrder
    updatedAt?: SortOrder
  }

  export type ProjectSumOrderByAggregateInput = {
    priority?: SortOrder
  }

  export type StringWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[]
    notIn?: string[]
    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 StringNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | null
    notIn?: string[] | 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 DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | null
    notIn?: Date[] | string[] | 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 IntWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel>
    in?: number[]
    notIn?: number[]
    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 DateTimeWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    in?: Date[] | string[]
    notIn?: Date[] | string[]
    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 SettingCountOrderByAggregateInput = {
    key?: SortOrder
    value?: SortOrder
  }

  export type SettingMaxOrderByAggregateInput = {
    key?: SortOrder
    value?: SortOrder
  }

  export type SettingMinOrderByAggregateInput = {
    key?: SortOrder
    value?: SortOrder
  }

  export type ProjectRelationFilter = {
    is?: ProjectWhereInput
    isNot?: ProjectWhereInput
  }

  export type CommitLogCountOrderByAggregateInput = {
    id?: SortOrder
    projectId?: SortOrder
    hash?: SortOrder
    message?: SortOrder
    author?: SortOrder
    branch?: SortOrder
    timestamp?: SortOrder
  }

  export type CommitLogMaxOrderByAggregateInput = {
    id?: SortOrder
    projectId?: SortOrder
    hash?: SortOrder
    message?: SortOrder
    author?: SortOrder
    branch?: SortOrder
    timestamp?: SortOrder
  }

  export type CommitLogMinOrderByAggregateInput = {
    id?: SortOrder
    projectId?: SortOrder
    hash?: SortOrder
    message?: SortOrder
    author?: SortOrder
    branch?: SortOrder
    timestamp?: SortOrder
  }

  export type ProjectListRelationFilter = {
    every?: ProjectWhereInput
    some?: ProjectWhereInput
    none?: ProjectWhereInput
  }

  export type ProjectOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type DeployTargetCountOrderByAggregateInput = {
    id?: SortOrder
    name?: SortOrder
    host?: SortOrder
    sshPort?: SortOrder
    sshUser?: SortOrder
    authMode?: SortOrder
    authBlob?: SortOrder
    composePath?: SortOrder
    notes?: SortOrder
    createdAt?: SortOrder
  }

  export type DeployTargetAvgOrderByAggregateInput = {
    sshPort?: SortOrder
  }

  export type DeployTargetMaxOrderByAggregateInput = {
    id?: SortOrder
    name?: SortOrder
    host?: SortOrder
    sshPort?: SortOrder
    sshUser?: SortOrder
    authMode?: SortOrder
    authBlob?: SortOrder
    composePath?: SortOrder
    notes?: SortOrder
    createdAt?: SortOrder
  }

  export type DeployTargetMinOrderByAggregateInput = {
    id?: SortOrder
    name?: SortOrder
    host?: SortOrder
    sshPort?: SortOrder
    sshUser?: SortOrder
    authMode?: SortOrder
    authBlob?: SortOrder
    composePath?: SortOrder
    notes?: SortOrder
    createdAt?: SortOrder
  }

  export type DeployTargetSumOrderByAggregateInput = {
    sshPort?: SortOrder
  }

  export type DeployHistoryCountOrderByAggregateInput = {
    id?: SortOrder
    projectId?: SortOrder
    targetId?: SortOrder
    imageTag?: SortOrder
    commitHash?: SortOrder
    status?: SortOrder
    startedAt?: SortOrder
    finishedAt?: SortOrder
    errorMsg?: SortOrder
    logBlob?: SortOrder
  }

  export type DeployHistoryMaxOrderByAggregateInput = {
    id?: SortOrder
    projectId?: SortOrder
    targetId?: SortOrder
    imageTag?: SortOrder
    commitHash?: SortOrder
    status?: SortOrder
    startedAt?: SortOrder
    finishedAt?: SortOrder
    errorMsg?: SortOrder
    logBlob?: SortOrder
  }

  export type DeployHistoryMinOrderByAggregateInput = {
    id?: SortOrder
    projectId?: SortOrder
    targetId?: SortOrder
    imageTag?: SortOrder
    commitHash?: SortOrder
    status?: SortOrder
    startedAt?: SortOrder
    finishedAt?: SortOrder
    errorMsg?: SortOrder
    logBlob?: SortOrder
  }

  export type DeployTargetCreateNestedOneWithoutProjectsInput = {
    create?: XOR<DeployTargetCreateWithoutProjectsInput, DeployTargetUncheckedCreateWithoutProjectsInput>
    connectOrCreate?: DeployTargetCreateOrConnectWithoutProjectsInput
    connect?: DeployTargetWhereUniqueInput
  }

  export type DeployHistoryCreateNestedManyWithoutProjectInput = {
    create?: XOR<DeployHistoryCreateWithoutProjectInput, DeployHistoryUncheckedCreateWithoutProjectInput> | DeployHistoryCreateWithoutProjectInput[] | DeployHistoryUncheckedCreateWithoutProjectInput[]
    connectOrCreate?: DeployHistoryCreateOrConnectWithoutProjectInput | DeployHistoryCreateOrConnectWithoutProjectInput[]
    createMany?: DeployHistoryCreateManyProjectInputEnvelope
    connect?: DeployHistoryWhereUniqueInput | DeployHistoryWhereUniqueInput[]
  }

  export type CommitLogCreateNestedManyWithoutProjectInput = {
    create?: XOR<CommitLogCreateWithoutProjectInput, CommitLogUncheckedCreateWithoutProjectInput> | CommitLogCreateWithoutProjectInput[] | CommitLogUncheckedCreateWithoutProjectInput[]
    connectOrCreate?: CommitLogCreateOrConnectWithoutProjectInput | CommitLogCreateOrConnectWithoutProjectInput[]
    createMany?: CommitLogCreateManyProjectInputEnvelope
    connect?: CommitLogWhereUniqueInput | CommitLogWhereUniqueInput[]
  }

  export type DeployHistoryUncheckedCreateNestedManyWithoutProjectInput = {
    create?: XOR<DeployHistoryCreateWithoutProjectInput, DeployHistoryUncheckedCreateWithoutProjectInput> | DeployHistoryCreateWithoutProjectInput[] | DeployHistoryUncheckedCreateWithoutProjectInput[]
    connectOrCreate?: DeployHistoryCreateOrConnectWithoutProjectInput | DeployHistoryCreateOrConnectWithoutProjectInput[]
    createMany?: DeployHistoryCreateManyProjectInputEnvelope
    connect?: DeployHistoryWhereUniqueInput | DeployHistoryWhereUniqueInput[]
  }

  export type CommitLogUncheckedCreateNestedManyWithoutProjectInput = {
    create?: XOR<CommitLogCreateWithoutProjectInput, CommitLogUncheckedCreateWithoutProjectInput> | CommitLogCreateWithoutProjectInput[] | CommitLogUncheckedCreateWithoutProjectInput[]
    connectOrCreate?: CommitLogCreateOrConnectWithoutProjectInput | CommitLogCreateOrConnectWithoutProjectInput[]
    createMany?: CommitLogCreateManyProjectInputEnvelope
    connect?: CommitLogWhereUniqueInput | CommitLogWhereUniqueInput[]
  }

  export type StringFieldUpdateOperationsInput = {
    set?: string
  }

  export type NullableStringFieldUpdateOperationsInput = {
    set?: string | null
  }

  export type NullableDateTimeFieldUpdateOperationsInput = {
    set?: Date | string | null
  }

  export type IntFieldUpdateOperationsInput = {
    set?: number
    increment?: number
    decrement?: number
    multiply?: number
    divide?: number
  }

  export type DateTimeFieldUpdateOperationsInput = {
    set?: Date | string
  }

  export type DeployTargetUpdateOneWithoutProjectsNestedInput = {
    create?: XOR<DeployTargetCreateWithoutProjectsInput, DeployTargetUncheckedCreateWithoutProjectsInput>
    connectOrCreate?: DeployTargetCreateOrConnectWithoutProjectsInput
    upsert?: DeployTargetUpsertWithoutProjectsInput
    disconnect?: DeployTargetWhereInput | boolean
    delete?: DeployTargetWhereInput | boolean
    connect?: DeployTargetWhereUniqueInput
    update?: XOR<XOR<DeployTargetUpdateToOneWithWhereWithoutProjectsInput, DeployTargetUpdateWithoutProjectsInput>, DeployTargetUncheckedUpdateWithoutProjectsInput>
  }

  export type DeployHistoryUpdateManyWithoutProjectNestedInput = {
    create?: XOR<DeployHistoryCreateWithoutProjectInput, DeployHistoryUncheckedCreateWithoutProjectInput> | DeployHistoryCreateWithoutProjectInput[] | DeployHistoryUncheckedCreateWithoutProjectInput[]
    connectOrCreate?: DeployHistoryCreateOrConnectWithoutProjectInput | DeployHistoryCreateOrConnectWithoutProjectInput[]
    upsert?: DeployHistoryUpsertWithWhereUniqueWithoutProjectInput | DeployHistoryUpsertWithWhereUniqueWithoutProjectInput[]
    createMany?: DeployHistoryCreateManyProjectInputEnvelope
    set?: DeployHistoryWhereUniqueInput | DeployHistoryWhereUniqueInput[]
    disconnect?: DeployHistoryWhereUniqueInput | DeployHistoryWhereUniqueInput[]
    delete?: DeployHistoryWhereUniqueInput | DeployHistoryWhereUniqueInput[]
    connect?: DeployHistoryWhereUniqueInput | DeployHistoryWhereUniqueInput[]
    update?: DeployHistoryUpdateWithWhereUniqueWithoutProjectInput | DeployHistoryUpdateWithWhereUniqueWithoutProjectInput[]
    updateMany?: DeployHistoryUpdateManyWithWhereWithoutProjectInput | DeployHistoryUpdateManyWithWhereWithoutProjectInput[]
    deleteMany?: DeployHistoryScalarWhereInput | DeployHistoryScalarWhereInput[]
  }

  export type CommitLogUpdateManyWithoutProjectNestedInput = {
    create?: XOR<CommitLogCreateWithoutProjectInput, CommitLogUncheckedCreateWithoutProjectInput> | CommitLogCreateWithoutProjectInput[] | CommitLogUncheckedCreateWithoutProjectInput[]
    connectOrCreate?: CommitLogCreateOrConnectWithoutProjectInput | CommitLogCreateOrConnectWithoutProjectInput[]
    upsert?: CommitLogUpsertWithWhereUniqueWithoutProjectInput | CommitLogUpsertWithWhereUniqueWithoutProjectInput[]
    createMany?: CommitLogCreateManyProjectInputEnvelope
    set?: CommitLogWhereUniqueInput | CommitLogWhereUniqueInput[]
    disconnect?: CommitLogWhereUniqueInput | CommitLogWhereUniqueInput[]
    delete?: CommitLogWhereUniqueInput | CommitLogWhereUniqueInput[]
    connect?: CommitLogWhereUniqueInput | CommitLogWhereUniqueInput[]
    update?: CommitLogUpdateWithWhereUniqueWithoutProjectInput | CommitLogUpdateWithWhereUniqueWithoutProjectInput[]
    updateMany?: CommitLogUpdateManyWithWhereWithoutProjectInput | CommitLogUpdateManyWithWhereWithoutProjectInput[]
    deleteMany?: CommitLogScalarWhereInput | CommitLogScalarWhereInput[]
  }

  export type DeployHistoryUncheckedUpdateManyWithoutProjectNestedInput = {
    create?: XOR<DeployHistoryCreateWithoutProjectInput, DeployHistoryUncheckedCreateWithoutProjectInput> | DeployHistoryCreateWithoutProjectInput[] | DeployHistoryUncheckedCreateWithoutProjectInput[]
    connectOrCreate?: DeployHistoryCreateOrConnectWithoutProjectInput | DeployHistoryCreateOrConnectWithoutProjectInput[]
    upsert?: DeployHistoryUpsertWithWhereUniqueWithoutProjectInput | DeployHistoryUpsertWithWhereUniqueWithoutProjectInput[]
    createMany?: DeployHistoryCreateManyProjectInputEnvelope
    set?: DeployHistoryWhereUniqueInput | DeployHistoryWhereUniqueInput[]
    disconnect?: DeployHistoryWhereUniqueInput | DeployHistoryWhereUniqueInput[]
    delete?: DeployHistoryWhereUniqueInput | DeployHistoryWhereUniqueInput[]
    connect?: DeployHistoryWhereUniqueInput | DeployHistoryWhereUniqueInput[]
    update?: DeployHistoryUpdateWithWhereUniqueWithoutProjectInput | DeployHistoryUpdateWithWhereUniqueWithoutProjectInput[]
    updateMany?: DeployHistoryUpdateManyWithWhereWithoutProjectInput | DeployHistoryUpdateManyWithWhereWithoutProjectInput[]
    deleteMany?: DeployHistoryScalarWhereInput | DeployHistoryScalarWhereInput[]
  }

  export type CommitLogUncheckedUpdateManyWithoutProjectNestedInput = {
    create?: XOR<CommitLogCreateWithoutProjectInput, CommitLogUncheckedCreateWithoutProjectInput> | CommitLogCreateWithoutProjectInput[] | CommitLogUncheckedCreateWithoutProjectInput[]
    connectOrCreate?: CommitLogCreateOrConnectWithoutProjectInput | CommitLogCreateOrConnectWithoutProjectInput[]
    upsert?: CommitLogUpsertWithWhereUniqueWithoutProjectInput | CommitLogUpsertWithWhereUniqueWithoutProjectInput[]
    createMany?: CommitLogCreateManyProjectInputEnvelope
    set?: CommitLogWhereUniqueInput | CommitLogWhereUniqueInput[]
    disconnect?: CommitLogWhereUniqueInput | CommitLogWhereUniqueInput[]
    delete?: CommitLogWhereUniqueInput | CommitLogWhereUniqueInput[]
    connect?: CommitLogWhereUniqueInput | CommitLogWhereUniqueInput[]
    update?: CommitLogUpdateWithWhereUniqueWithoutProjectInput | CommitLogUpdateWithWhereUniqueWithoutProjectInput[]
    updateMany?: CommitLogUpdateManyWithWhereWithoutProjectInput | CommitLogUpdateManyWithWhereWithoutProjectInput[]
    deleteMany?: CommitLogScalarWhereInput | CommitLogScalarWhereInput[]
  }

  export type ProjectCreateNestedOneWithoutCommitsInput = {
    create?: XOR<ProjectCreateWithoutCommitsInput, ProjectUncheckedCreateWithoutCommitsInput>
    connectOrCreate?: ProjectCreateOrConnectWithoutCommitsInput
    connect?: ProjectWhereUniqueInput
  }

  export type ProjectUpdateOneRequiredWithoutCommitsNestedInput = {
    create?: XOR<ProjectCreateWithoutCommitsInput, ProjectUncheckedCreateWithoutCommitsInput>
    connectOrCreate?: ProjectCreateOrConnectWithoutCommitsInput
    upsert?: ProjectUpsertWithoutCommitsInput
    connect?: ProjectWhereUniqueInput
    update?: XOR<XOR<ProjectUpdateToOneWithWhereWithoutCommitsInput, ProjectUpdateWithoutCommitsInput>, ProjectUncheckedUpdateWithoutCommitsInput>
  }

  export type ProjectCreateNestedManyWithoutDeployTargetInput = {
    create?: XOR<ProjectCreateWithoutDeployTargetInput, ProjectUncheckedCreateWithoutDeployTargetInput> | ProjectCreateWithoutDeployTargetInput[] | ProjectUncheckedCreateWithoutDeployTargetInput[]
    connectOrCreate?: ProjectCreateOrConnectWithoutDeployTargetInput | ProjectCreateOrConnectWithoutDeployTargetInput[]
    createMany?: ProjectCreateManyDeployTargetInputEnvelope
    connect?: ProjectWhereUniqueInput | ProjectWhereUniqueInput[]
  }

  export type ProjectUncheckedCreateNestedManyWithoutDeployTargetInput = {
    create?: XOR<ProjectCreateWithoutDeployTargetInput, ProjectUncheckedCreateWithoutDeployTargetInput> | ProjectCreateWithoutDeployTargetInput[] | ProjectUncheckedCreateWithoutDeployTargetInput[]
    connectOrCreate?: ProjectCreateOrConnectWithoutDeployTargetInput | ProjectCreateOrConnectWithoutDeployTargetInput[]
    createMany?: ProjectCreateManyDeployTargetInputEnvelope
    connect?: ProjectWhereUniqueInput | ProjectWhereUniqueInput[]
  }

  export type ProjectUpdateManyWithoutDeployTargetNestedInput = {
    create?: XOR<ProjectCreateWithoutDeployTargetInput, ProjectUncheckedCreateWithoutDeployTargetInput> | ProjectCreateWithoutDeployTargetInput[] | ProjectUncheckedCreateWithoutDeployTargetInput[]
    connectOrCreate?: ProjectCreateOrConnectWithoutDeployTargetInput | ProjectCreateOrConnectWithoutDeployTargetInput[]
    upsert?: ProjectUpsertWithWhereUniqueWithoutDeployTargetInput | ProjectUpsertWithWhereUniqueWithoutDeployTargetInput[]
    createMany?: ProjectCreateManyDeployTargetInputEnvelope
    set?: ProjectWhereUniqueInput | ProjectWhereUniqueInput[]
    disconnect?: ProjectWhereUniqueInput | ProjectWhereUniqueInput[]
    delete?: ProjectWhereUniqueInput | ProjectWhereUniqueInput[]
    connect?: ProjectWhereUniqueInput | ProjectWhereUniqueInput[]
    update?: ProjectUpdateWithWhereUniqueWithoutDeployTargetInput | ProjectUpdateWithWhereUniqueWithoutDeployTargetInput[]
    updateMany?: ProjectUpdateManyWithWhereWithoutDeployTargetInput | ProjectUpdateManyWithWhereWithoutDeployTargetInput[]
    deleteMany?: ProjectScalarWhereInput | ProjectScalarWhereInput[]
  }

  export type ProjectUncheckedUpdateManyWithoutDeployTargetNestedInput = {
    create?: XOR<ProjectCreateWithoutDeployTargetInput, ProjectUncheckedCreateWithoutDeployTargetInput> | ProjectCreateWithoutDeployTargetInput[] | ProjectUncheckedCreateWithoutDeployTargetInput[]
    connectOrCreate?: ProjectCreateOrConnectWithoutDeployTargetInput | ProjectCreateOrConnectWithoutDeployTargetInput[]
    upsert?: ProjectUpsertWithWhereUniqueWithoutDeployTargetInput | ProjectUpsertWithWhereUniqueWithoutDeployTargetInput[]
    createMany?: ProjectCreateManyDeployTargetInputEnvelope
    set?: ProjectWhereUniqueInput | ProjectWhereUniqueInput[]
    disconnect?: ProjectWhereUniqueInput | ProjectWhereUniqueInput[]
    delete?: ProjectWhereUniqueInput | ProjectWhereUniqueInput[]
    connect?: ProjectWhereUniqueInput | ProjectWhereUniqueInput[]
    update?: ProjectUpdateWithWhereUniqueWithoutDeployTargetInput | ProjectUpdateWithWhereUniqueWithoutDeployTargetInput[]
    updateMany?: ProjectUpdateManyWithWhereWithoutDeployTargetInput | ProjectUpdateManyWithWhereWithoutDeployTargetInput[]
    deleteMany?: ProjectScalarWhereInput | ProjectScalarWhereInput[]
  }

  export type ProjectCreateNestedOneWithoutDeploysInput = {
    create?: XOR<ProjectCreateWithoutDeploysInput, ProjectUncheckedCreateWithoutDeploysInput>
    connectOrCreate?: ProjectCreateOrConnectWithoutDeploysInput
    connect?: ProjectWhereUniqueInput
  }

  export type ProjectUpdateOneRequiredWithoutDeploysNestedInput = {
    create?: XOR<ProjectCreateWithoutDeploysInput, ProjectUncheckedCreateWithoutDeploysInput>
    connectOrCreate?: ProjectCreateOrConnectWithoutDeploysInput
    upsert?: ProjectUpsertWithoutDeploysInput
    connect?: ProjectWhereUniqueInput
    update?: XOR<XOR<ProjectUpdateToOneWithWhereWithoutDeploysInput, ProjectUpdateWithoutDeploysInput>, ProjectUncheckedUpdateWithoutDeploysInput>
  }

  export type NestedStringFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[]
    notIn?: string[]
    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[] | null
    notIn?: string[] | 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 NestedDateTimeNullableFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | null
    notIn?: Date[] | string[] | 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 NestedIntFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel>
    in?: number[]
    notIn?: number[]
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntFilter<$PrismaModel> | number
  }

  export type NestedDateTimeFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    in?: Date[] | string[]
    notIn?: Date[] | string[]
    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[]
    notIn?: string[]
    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 NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | null
    notIn?: string[] | 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[] | null
    notIn?: number[] | null
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntNullableFilter<$PrismaModel> | number | null
  }

  export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | null
    notIn?: Date[] | string[] | 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 NestedIntWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel>
    in?: number[]
    notIn?: number[]
    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[]
    notIn?: number[]
    lt?: number | FloatFieldRefInput<$PrismaModel>
    lte?: number | FloatFieldRefInput<$PrismaModel>
    gt?: number | FloatFieldRefInput<$PrismaModel>
    gte?: number | FloatFieldRefInput<$PrismaModel>
    not?: NestedFloatFilter<$PrismaModel> | number
  }

  export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    in?: Date[] | string[]
    notIn?: Date[] | string[]
    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 DeployTargetCreateWithoutProjectsInput = {
    id?: string
    name: string
    host: string
    sshPort?: number
    sshUser?: string
    authMode: string
    authBlob: string
    composePath?: string
    notes?: string | null
    createdAt?: Date | string
  }

  export type DeployTargetUncheckedCreateWithoutProjectsInput = {
    id?: string
    name: string
    host: string
    sshPort?: number
    sshUser?: string
    authMode: string
    authBlob: string
    composePath?: string
    notes?: string | null
    createdAt?: Date | string
  }

  export type DeployTargetCreateOrConnectWithoutProjectsInput = {
    where: DeployTargetWhereUniqueInput
    create: XOR<DeployTargetCreateWithoutProjectsInput, DeployTargetUncheckedCreateWithoutProjectsInput>
  }

  export type DeployHistoryCreateWithoutProjectInput = {
    id?: string
    targetId?: string | null
    imageTag: string
    commitHash?: string | null
    status: string
    startedAt?: Date | string
    finishedAt?: Date | string | null
    errorMsg?: string | null
    logBlob?: string | null
  }

  export type DeployHistoryUncheckedCreateWithoutProjectInput = {
    id?: string
    targetId?: string | null
    imageTag: string
    commitHash?: string | null
    status: string
    startedAt?: Date | string
    finishedAt?: Date | string | null
    errorMsg?: string | null
    logBlob?: string | null
  }

  export type DeployHistoryCreateOrConnectWithoutProjectInput = {
    where: DeployHistoryWhereUniqueInput
    create: XOR<DeployHistoryCreateWithoutProjectInput, DeployHistoryUncheckedCreateWithoutProjectInput>
  }

  export type DeployHistoryCreateManyProjectInputEnvelope = {
    data: DeployHistoryCreateManyProjectInput | DeployHistoryCreateManyProjectInput[]
  }

  export type CommitLogCreateWithoutProjectInput = {
    id?: string
    hash: string
    message: string
    author?: string | null
    branch?: string | null
    timestamp?: Date | string
  }

  export type CommitLogUncheckedCreateWithoutProjectInput = {
    id?: string
    hash: string
    message: string
    author?: string | null
    branch?: string | null
    timestamp?: Date | string
  }

  export type CommitLogCreateOrConnectWithoutProjectInput = {
    where: CommitLogWhereUniqueInput
    create: XOR<CommitLogCreateWithoutProjectInput, CommitLogUncheckedCreateWithoutProjectInput>
  }

  export type CommitLogCreateManyProjectInputEnvelope = {
    data: CommitLogCreateManyProjectInput | CommitLogCreateManyProjectInput[]
  }

  export type DeployTargetUpsertWithoutProjectsInput = {
    update: XOR<DeployTargetUpdateWithoutProjectsInput, DeployTargetUncheckedUpdateWithoutProjectsInput>
    create: XOR<DeployTargetCreateWithoutProjectsInput, DeployTargetUncheckedCreateWithoutProjectsInput>
    where?: DeployTargetWhereInput
  }

  export type DeployTargetUpdateToOneWithWhereWithoutProjectsInput = {
    where?: DeployTargetWhereInput
    data: XOR<DeployTargetUpdateWithoutProjectsInput, DeployTargetUncheckedUpdateWithoutProjectsInput>
  }

  export type DeployTargetUpdateWithoutProjectsInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    host?: StringFieldUpdateOperationsInput | string
    sshPort?: IntFieldUpdateOperationsInput | number
    sshUser?: StringFieldUpdateOperationsInput | string
    authMode?: StringFieldUpdateOperationsInput | string
    authBlob?: StringFieldUpdateOperationsInput | string
    composePath?: StringFieldUpdateOperationsInput | string
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type DeployTargetUncheckedUpdateWithoutProjectsInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    host?: StringFieldUpdateOperationsInput | string
    sshPort?: IntFieldUpdateOperationsInput | number
    sshUser?: StringFieldUpdateOperationsInput | string
    authMode?: StringFieldUpdateOperationsInput | string
    authBlob?: StringFieldUpdateOperationsInput | string
    composePath?: StringFieldUpdateOperationsInput | string
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type DeployHistoryUpsertWithWhereUniqueWithoutProjectInput = {
    where: DeployHistoryWhereUniqueInput
    update: XOR<DeployHistoryUpdateWithoutProjectInput, DeployHistoryUncheckedUpdateWithoutProjectInput>
    create: XOR<DeployHistoryCreateWithoutProjectInput, DeployHistoryUncheckedCreateWithoutProjectInput>
  }

  export type DeployHistoryUpdateWithWhereUniqueWithoutProjectInput = {
    where: DeployHistoryWhereUniqueInput
    data: XOR<DeployHistoryUpdateWithoutProjectInput, DeployHistoryUncheckedUpdateWithoutProjectInput>
  }

  export type DeployHistoryUpdateManyWithWhereWithoutProjectInput = {
    where: DeployHistoryScalarWhereInput
    data: XOR<DeployHistoryUpdateManyMutationInput, DeployHistoryUncheckedUpdateManyWithoutProjectInput>
  }

  export type DeployHistoryScalarWhereInput = {
    AND?: DeployHistoryScalarWhereInput | DeployHistoryScalarWhereInput[]
    OR?: DeployHistoryScalarWhereInput[]
    NOT?: DeployHistoryScalarWhereInput | DeployHistoryScalarWhereInput[]
    id?: StringFilter<"DeployHistory"> | string
    projectId?: StringFilter<"DeployHistory"> | string
    targetId?: StringNullableFilter<"DeployHistory"> | string | null
    imageTag?: StringFilter<"DeployHistory"> | string
    commitHash?: StringNullableFilter<"DeployHistory"> | string | null
    status?: StringFilter<"DeployHistory"> | string
    startedAt?: DateTimeFilter<"DeployHistory"> | Date | string
    finishedAt?: DateTimeNullableFilter<"DeployHistory"> | Date | string | null
    errorMsg?: StringNullableFilter<"DeployHistory"> | string | null
    logBlob?: StringNullableFilter<"DeployHistory"> | string | null
  }

  export type CommitLogUpsertWithWhereUniqueWithoutProjectInput = {
    where: CommitLogWhereUniqueInput
    update: XOR<CommitLogUpdateWithoutProjectInput, CommitLogUncheckedUpdateWithoutProjectInput>
    create: XOR<CommitLogCreateWithoutProjectInput, CommitLogUncheckedCreateWithoutProjectInput>
  }

  export type CommitLogUpdateWithWhereUniqueWithoutProjectInput = {
    where: CommitLogWhereUniqueInput
    data: XOR<CommitLogUpdateWithoutProjectInput, CommitLogUncheckedUpdateWithoutProjectInput>
  }

  export type CommitLogUpdateManyWithWhereWithoutProjectInput = {
    where: CommitLogScalarWhereInput
    data: XOR<CommitLogUpdateManyMutationInput, CommitLogUncheckedUpdateManyWithoutProjectInput>
  }

  export type CommitLogScalarWhereInput = {
    AND?: CommitLogScalarWhereInput | CommitLogScalarWhereInput[]
    OR?: CommitLogScalarWhereInput[]
    NOT?: CommitLogScalarWhereInput | CommitLogScalarWhereInput[]
    id?: StringFilter<"CommitLog"> | string
    projectId?: StringFilter<"CommitLog"> | string
    hash?: StringFilter<"CommitLog"> | string
    message?: StringFilter<"CommitLog"> | string
    author?: StringNullableFilter<"CommitLog"> | string | null
    branch?: StringNullableFilter<"CommitLog"> | string | null
    timestamp?: DateTimeFilter<"CommitLog"> | Date | string
  }

  export type ProjectCreateWithoutCommitsInput = {
    id?: string
    name: string
    path: string
    source: string
    gitRemote?: string | null
    branch?: string | null
    version?: string | null
    lastCommitHash?: string | null
    lastCommitMessage?: string | null
    lastCommitTime?: Date | string | null
    notes?: string | null
    tags?: string | null
    priority?: number
    envVarsEncrypted?: string | null
    composeSource?: string
    composeInline?: string | null
    deployedVersion?: string | null
    deployedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deployTarget?: DeployTargetCreateNestedOneWithoutProjectsInput
    deploys?: DeployHistoryCreateNestedManyWithoutProjectInput
  }

  export type ProjectUncheckedCreateWithoutCommitsInput = {
    id?: string
    name: string
    path: string
    source: string
    gitRemote?: string | null
    branch?: string | null
    version?: string | null
    lastCommitHash?: string | null
    lastCommitMessage?: string | null
    lastCommitTime?: Date | string | null
    notes?: string | null
    tags?: string | null
    priority?: number
    deployTargetId?: string | null
    envVarsEncrypted?: string | null
    composeSource?: string
    composeInline?: string | null
    deployedVersion?: string | null
    deployedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deploys?: DeployHistoryUncheckedCreateNestedManyWithoutProjectInput
  }

  export type ProjectCreateOrConnectWithoutCommitsInput = {
    where: ProjectWhereUniqueInput
    create: XOR<ProjectCreateWithoutCommitsInput, ProjectUncheckedCreateWithoutCommitsInput>
  }

  export type ProjectUpsertWithoutCommitsInput = {
    update: XOR<ProjectUpdateWithoutCommitsInput, ProjectUncheckedUpdateWithoutCommitsInput>
    create: XOR<ProjectCreateWithoutCommitsInput, ProjectUncheckedCreateWithoutCommitsInput>
    where?: ProjectWhereInput
  }

  export type ProjectUpdateToOneWithWhereWithoutCommitsInput = {
    where?: ProjectWhereInput
    data: XOR<ProjectUpdateWithoutCommitsInput, ProjectUncheckedUpdateWithoutCommitsInput>
  }

  export type ProjectUpdateWithoutCommitsInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    path?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    gitRemote?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    version?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitHash?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitMessage?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitTime?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    tags?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: IntFieldUpdateOperationsInput | number
    envVarsEncrypted?: NullableStringFieldUpdateOperationsInput | string | null
    composeSource?: StringFieldUpdateOperationsInput | string
    composeInline?: NullableStringFieldUpdateOperationsInput | string | null
    deployedVersion?: NullableStringFieldUpdateOperationsInput | string | null
    deployedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deployTarget?: DeployTargetUpdateOneWithoutProjectsNestedInput
    deploys?: DeployHistoryUpdateManyWithoutProjectNestedInput
  }

  export type ProjectUncheckedUpdateWithoutCommitsInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    path?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    gitRemote?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    version?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitHash?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitMessage?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitTime?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    tags?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: IntFieldUpdateOperationsInput | number
    deployTargetId?: NullableStringFieldUpdateOperationsInput | string | null
    envVarsEncrypted?: NullableStringFieldUpdateOperationsInput | string | null
    composeSource?: StringFieldUpdateOperationsInput | string
    composeInline?: NullableStringFieldUpdateOperationsInput | string | null
    deployedVersion?: NullableStringFieldUpdateOperationsInput | string | null
    deployedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deploys?: DeployHistoryUncheckedUpdateManyWithoutProjectNestedInput
  }

  export type ProjectCreateWithoutDeployTargetInput = {
    id?: string
    name: string
    path: string
    source: string
    gitRemote?: string | null
    branch?: string | null
    version?: string | null
    lastCommitHash?: string | null
    lastCommitMessage?: string | null
    lastCommitTime?: Date | string | null
    notes?: string | null
    tags?: string | null
    priority?: number
    envVarsEncrypted?: string | null
    composeSource?: string
    composeInline?: string | null
    deployedVersion?: string | null
    deployedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deploys?: DeployHistoryCreateNestedManyWithoutProjectInput
    commits?: CommitLogCreateNestedManyWithoutProjectInput
  }

  export type ProjectUncheckedCreateWithoutDeployTargetInput = {
    id?: string
    name: string
    path: string
    source: string
    gitRemote?: string | null
    branch?: string | null
    version?: string | null
    lastCommitHash?: string | null
    lastCommitMessage?: string | null
    lastCommitTime?: Date | string | null
    notes?: string | null
    tags?: string | null
    priority?: number
    envVarsEncrypted?: string | null
    composeSource?: string
    composeInline?: string | null
    deployedVersion?: string | null
    deployedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deploys?: DeployHistoryUncheckedCreateNestedManyWithoutProjectInput
    commits?: CommitLogUncheckedCreateNestedManyWithoutProjectInput
  }

  export type ProjectCreateOrConnectWithoutDeployTargetInput = {
    where: ProjectWhereUniqueInput
    create: XOR<ProjectCreateWithoutDeployTargetInput, ProjectUncheckedCreateWithoutDeployTargetInput>
  }

  export type ProjectCreateManyDeployTargetInputEnvelope = {
    data: ProjectCreateManyDeployTargetInput | ProjectCreateManyDeployTargetInput[]
  }

  export type ProjectUpsertWithWhereUniqueWithoutDeployTargetInput = {
    where: ProjectWhereUniqueInput
    update: XOR<ProjectUpdateWithoutDeployTargetInput, ProjectUncheckedUpdateWithoutDeployTargetInput>
    create: XOR<ProjectCreateWithoutDeployTargetInput, ProjectUncheckedCreateWithoutDeployTargetInput>
  }

  export type ProjectUpdateWithWhereUniqueWithoutDeployTargetInput = {
    where: ProjectWhereUniqueInput
    data: XOR<ProjectUpdateWithoutDeployTargetInput, ProjectUncheckedUpdateWithoutDeployTargetInput>
  }

  export type ProjectUpdateManyWithWhereWithoutDeployTargetInput = {
    where: ProjectScalarWhereInput
    data: XOR<ProjectUpdateManyMutationInput, ProjectUncheckedUpdateManyWithoutDeployTargetInput>
  }

  export type ProjectScalarWhereInput = {
    AND?: ProjectScalarWhereInput | ProjectScalarWhereInput[]
    OR?: ProjectScalarWhereInput[]
    NOT?: ProjectScalarWhereInput | ProjectScalarWhereInput[]
    id?: StringFilter<"Project"> | string
    name?: StringFilter<"Project"> | string
    path?: StringFilter<"Project"> | string
    source?: StringFilter<"Project"> | string
    gitRemote?: StringNullableFilter<"Project"> | string | null
    branch?: StringNullableFilter<"Project"> | string | null
    version?: StringNullableFilter<"Project"> | string | null
    lastCommitHash?: StringNullableFilter<"Project"> | string | null
    lastCommitMessage?: StringNullableFilter<"Project"> | string | null
    lastCommitTime?: DateTimeNullableFilter<"Project"> | Date | string | null
    notes?: StringNullableFilter<"Project"> | string | null
    tags?: StringNullableFilter<"Project"> | string | null
    priority?: IntFilter<"Project"> | number
    deployTargetId?: StringNullableFilter<"Project"> | string | null
    envVarsEncrypted?: StringNullableFilter<"Project"> | string | null
    composeSource?: StringFilter<"Project"> | string
    composeInline?: StringNullableFilter<"Project"> | string | null
    deployedVersion?: StringNullableFilter<"Project"> | string | null
    deployedAt?: DateTimeNullableFilter<"Project"> | Date | string | null
    createdAt?: DateTimeFilter<"Project"> | Date | string
    updatedAt?: DateTimeFilter<"Project"> | Date | string
  }

  export type ProjectCreateWithoutDeploysInput = {
    id?: string
    name: string
    path: string
    source: string
    gitRemote?: string | null
    branch?: string | null
    version?: string | null
    lastCommitHash?: string | null
    lastCommitMessage?: string | null
    lastCommitTime?: Date | string | null
    notes?: string | null
    tags?: string | null
    priority?: number
    envVarsEncrypted?: string | null
    composeSource?: string
    composeInline?: string | null
    deployedVersion?: string | null
    deployedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    deployTarget?: DeployTargetCreateNestedOneWithoutProjectsInput
    commits?: CommitLogCreateNestedManyWithoutProjectInput
  }

  export type ProjectUncheckedCreateWithoutDeploysInput = {
    id?: string
    name: string
    path: string
    source: string
    gitRemote?: string | null
    branch?: string | null
    version?: string | null
    lastCommitHash?: string | null
    lastCommitMessage?: string | null
    lastCommitTime?: Date | string | null
    notes?: string | null
    tags?: string | null
    priority?: number
    deployTargetId?: string | null
    envVarsEncrypted?: string | null
    composeSource?: string
    composeInline?: string | null
    deployedVersion?: string | null
    deployedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
    commits?: CommitLogUncheckedCreateNestedManyWithoutProjectInput
  }

  export type ProjectCreateOrConnectWithoutDeploysInput = {
    where: ProjectWhereUniqueInput
    create: XOR<ProjectCreateWithoutDeploysInput, ProjectUncheckedCreateWithoutDeploysInput>
  }

  export type ProjectUpsertWithoutDeploysInput = {
    update: XOR<ProjectUpdateWithoutDeploysInput, ProjectUncheckedUpdateWithoutDeploysInput>
    create: XOR<ProjectCreateWithoutDeploysInput, ProjectUncheckedCreateWithoutDeploysInput>
    where?: ProjectWhereInput
  }

  export type ProjectUpdateToOneWithWhereWithoutDeploysInput = {
    where?: ProjectWhereInput
    data: XOR<ProjectUpdateWithoutDeploysInput, ProjectUncheckedUpdateWithoutDeploysInput>
  }

  export type ProjectUpdateWithoutDeploysInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    path?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    gitRemote?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    version?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitHash?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitMessage?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitTime?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    tags?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: IntFieldUpdateOperationsInput | number
    envVarsEncrypted?: NullableStringFieldUpdateOperationsInput | string | null
    composeSource?: StringFieldUpdateOperationsInput | string
    composeInline?: NullableStringFieldUpdateOperationsInput | string | null
    deployedVersion?: NullableStringFieldUpdateOperationsInput | string | null
    deployedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deployTarget?: DeployTargetUpdateOneWithoutProjectsNestedInput
    commits?: CommitLogUpdateManyWithoutProjectNestedInput
  }

  export type ProjectUncheckedUpdateWithoutDeploysInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    path?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    gitRemote?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    version?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitHash?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitMessage?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitTime?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    tags?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: IntFieldUpdateOperationsInput | number
    deployTargetId?: NullableStringFieldUpdateOperationsInput | string | null
    envVarsEncrypted?: NullableStringFieldUpdateOperationsInput | string | null
    composeSource?: StringFieldUpdateOperationsInput | string
    composeInline?: NullableStringFieldUpdateOperationsInput | string | null
    deployedVersion?: NullableStringFieldUpdateOperationsInput | string | null
    deployedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    commits?: CommitLogUncheckedUpdateManyWithoutProjectNestedInput
  }

  export type DeployHistoryCreateManyProjectInput = {
    id?: string
    targetId?: string | null
    imageTag: string
    commitHash?: string | null
    status: string
    startedAt?: Date | string
    finishedAt?: Date | string | null
    errorMsg?: string | null
    logBlob?: string | null
  }

  export type CommitLogCreateManyProjectInput = {
    id?: string
    hash: string
    message: string
    author?: string | null
    branch?: string | null
    timestamp?: Date | string
  }

  export type DeployHistoryUpdateWithoutProjectInput = {
    id?: StringFieldUpdateOperationsInput | string
    targetId?: NullableStringFieldUpdateOperationsInput | string | null
    imageTag?: StringFieldUpdateOperationsInput | string
    commitHash?: NullableStringFieldUpdateOperationsInput | string | null
    status?: StringFieldUpdateOperationsInput | string
    startedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    finishedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    errorMsg?: NullableStringFieldUpdateOperationsInput | string | null
    logBlob?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type DeployHistoryUncheckedUpdateWithoutProjectInput = {
    id?: StringFieldUpdateOperationsInput | string
    targetId?: NullableStringFieldUpdateOperationsInput | string | null
    imageTag?: StringFieldUpdateOperationsInput | string
    commitHash?: NullableStringFieldUpdateOperationsInput | string | null
    status?: StringFieldUpdateOperationsInput | string
    startedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    finishedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    errorMsg?: NullableStringFieldUpdateOperationsInput | string | null
    logBlob?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type DeployHistoryUncheckedUpdateManyWithoutProjectInput = {
    id?: StringFieldUpdateOperationsInput | string
    targetId?: NullableStringFieldUpdateOperationsInput | string | null
    imageTag?: StringFieldUpdateOperationsInput | string
    commitHash?: NullableStringFieldUpdateOperationsInput | string | null
    status?: StringFieldUpdateOperationsInput | string
    startedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    finishedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    errorMsg?: NullableStringFieldUpdateOperationsInput | string | null
    logBlob?: NullableStringFieldUpdateOperationsInput | string | null
  }

  export type CommitLogUpdateWithoutProjectInput = {
    id?: StringFieldUpdateOperationsInput | string
    hash?: StringFieldUpdateOperationsInput | string
    message?: StringFieldUpdateOperationsInput | string
    author?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    timestamp?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type CommitLogUncheckedUpdateWithoutProjectInput = {
    id?: StringFieldUpdateOperationsInput | string
    hash?: StringFieldUpdateOperationsInput | string
    message?: StringFieldUpdateOperationsInput | string
    author?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    timestamp?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type CommitLogUncheckedUpdateManyWithoutProjectInput = {
    id?: StringFieldUpdateOperationsInput | string
    hash?: StringFieldUpdateOperationsInput | string
    message?: StringFieldUpdateOperationsInput | string
    author?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    timestamp?: DateTimeFieldUpdateOperationsInput | Date | string
  }

  export type ProjectCreateManyDeployTargetInput = {
    id?: string
    name: string
    path: string
    source: string
    gitRemote?: string | null
    branch?: string | null
    version?: string | null
    lastCommitHash?: string | null
    lastCommitMessage?: string | null
    lastCommitTime?: Date | string | null
    notes?: string | null
    tags?: string | null
    priority?: number
    envVarsEncrypted?: string | null
    composeSource?: string
    composeInline?: string | null
    deployedVersion?: string | null
    deployedAt?: Date | string | null
    createdAt?: Date | string
    updatedAt?: Date | string
  }

  export type ProjectUpdateWithoutDeployTargetInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    path?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    gitRemote?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    version?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitHash?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitMessage?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitTime?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    tags?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: IntFieldUpdateOperationsInput | number
    envVarsEncrypted?: NullableStringFieldUpdateOperationsInput | string | null
    composeSource?: StringFieldUpdateOperationsInput | string
    composeInline?: NullableStringFieldUpdateOperationsInput | string | null
    deployedVersion?: NullableStringFieldUpdateOperationsInput | string | null
    deployedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deploys?: DeployHistoryUpdateManyWithoutProjectNestedInput
    commits?: CommitLogUpdateManyWithoutProjectNestedInput
  }

  export type ProjectUncheckedUpdateWithoutDeployTargetInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    path?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    gitRemote?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    version?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitHash?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitMessage?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitTime?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    tags?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: IntFieldUpdateOperationsInput | number
    envVarsEncrypted?: NullableStringFieldUpdateOperationsInput | string | null
    composeSource?: StringFieldUpdateOperationsInput | string
    composeInline?: NullableStringFieldUpdateOperationsInput | string | null
    deployedVersion?: NullableStringFieldUpdateOperationsInput | string | null
    deployedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
    deploys?: DeployHistoryUncheckedUpdateManyWithoutProjectNestedInput
    commits?: CommitLogUncheckedUpdateManyWithoutProjectNestedInput
  }

  export type ProjectUncheckedUpdateManyWithoutDeployTargetInput = {
    id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    path?: StringFieldUpdateOperationsInput | string
    source?: StringFieldUpdateOperationsInput | string
    gitRemote?: NullableStringFieldUpdateOperationsInput | string | null
    branch?: NullableStringFieldUpdateOperationsInput | string | null
    version?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitHash?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitMessage?: NullableStringFieldUpdateOperationsInput | string | null
    lastCommitTime?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    notes?: NullableStringFieldUpdateOperationsInput | string | null
    tags?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: IntFieldUpdateOperationsInput | number
    envVarsEncrypted?: NullableStringFieldUpdateOperationsInput | string | null
    composeSource?: StringFieldUpdateOperationsInput | string
    composeInline?: NullableStringFieldUpdateOperationsInput | string | null
    deployedVersion?: NullableStringFieldUpdateOperationsInput | string | null
    deployedAt?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
    updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
  }



  /**
   * Aliases for legacy arg types
   */
    /**
     * @deprecated Use ProjectCountOutputTypeDefaultArgs instead
     */
    export type ProjectCountOutputTypeArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = ProjectCountOutputTypeDefaultArgs<ExtArgs>
    /**
     * @deprecated Use DeployTargetCountOutputTypeDefaultArgs instead
     */
    export type DeployTargetCountOutputTypeArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = DeployTargetCountOutputTypeDefaultArgs<ExtArgs>
    /**
     * @deprecated Use ProjectDefaultArgs instead
     */
    export type ProjectArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = ProjectDefaultArgs<ExtArgs>
    /**
     * @deprecated Use SettingDefaultArgs instead
     */
    export type SettingArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = SettingDefaultArgs<ExtArgs>
    /**
     * @deprecated Use CommitLogDefaultArgs instead
     */
    export type CommitLogArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = CommitLogDefaultArgs<ExtArgs>
    /**
     * @deprecated Use DeployTargetDefaultArgs instead
     */
    export type DeployTargetArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = DeployTargetDefaultArgs<ExtArgs>
    /**
     * @deprecated Use DeployHistoryDefaultArgs instead
     */
    export type DeployHistoryArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = DeployHistoryDefaultArgs<ExtArgs>

  /**
   * Batch Payload for updateMany & deleteMany & createMany
   */

  export type BatchPayload = {
    count: number
  }

  /**
   * DMMF
   */
  export const dmmf: runtime.BaseDMMF
}